diff --git a/.dev_scripts/diff_images.py b/.dev_scripts/diff_images.py index e21cae214e..5208ed41ec 100644 --- a/.dev_scripts/diff_images.py +++ b/.dev_scripts/diff_images.py @@ -20,13 +20,13 @@ def calc_images_mean_L1(image1_path, image2_path): def parse_args(): parser = argparse.ArgumentParser() - parser.add_argument('image1_path') - parser.add_argument('image2_path') + parser.add_argument("image1_path") + parser.add_argument("image2_path") args = parser.parse_args() return args -if __name__ == '__main__': +if __name__ == "__main__": args = parse_args() mean_L1 = calc_images_mean_L1(args.image1_path, args.image2_path) print(mean_L1) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 5afd17b417..c6b833cf58 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -1 +1,2 @@ b3dccfaeb636599c02effc377cdd8a87d658256c +218b6d0546b990fc449c876fb99f44b50c4daa35 diff --git a/.github/workflows/style-checks.yml b/.github/workflows/style-checks.yml new file mode 100644 index 0000000000..8aceb6469e --- /dev/null +++ b/.github/workflows/style-checks.yml @@ -0,0 +1,27 @@ +name: Black # TODO: add isort and flake8 later + +on: + pull_request: {} + push: + branches: master + tags: "*" + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install dependencies with pip + run: | + pip install --upgrade pip wheel + pip install .[test] + + # - run: isort --check-only . + - run: black --check . + # - run: flake8 diff --git a/.gitignore b/.gitignore index b7b5c1ae75..cc000de20e 100644 --- a/.gitignore +++ b/.gitignore @@ -38,7 +38,6 @@ develop-eggs/ downloads/ eggs/ .eggs/ -lib/ lib64/ parts/ sdist/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..2b16b274d6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,10 @@ +# See https://pre-commit.com/ for usage and config +repos: +- repo: local + hooks: + - id: black + name: black + stages: [commit] + language: system + entry: black + types: [python] diff --git a/LICENSE-ModelWeights.txt b/LICENSE-SD1+SD2.txt similarity index 100% rename from LICENSE-ModelWeights.txt rename to LICENSE-SD1+SD2.txt diff --git a/LICENSE-SDXL.txt b/LICENSE-SDXL.txt new file mode 100644 index 0000000000..05fbe3abb6 --- /dev/null +++ b/LICENSE-SDXL.txt @@ -0,0 +1,290 @@ +Copyright (c) 2023 Stability AI +CreativeML Open RAIL++-M License dated July 26, 2023 + +Section I: PREAMBLE + +Multimodal generative models are being widely adopted and used, and +have the potential to transform the way artists, among other +individuals, conceive and benefit from AI or ML technologies as a tool +for content creation. + +Notwithstanding the current and potential benefits that these +artifacts can bring to society at large, there are also concerns about +potential misuses of them, either due to their technical limitations +or ethical considerations. + +In short, this license strives for both the open and responsible +downstream use of the accompanying model. When it comes to the open +character, we took inspiration from open source permissive licenses +regarding the grant of IP rights. Referring to the downstream +responsible use, we added use-based restrictions not permitting the +use of the model in very specific scenarios, in order for the licensor +to be able to enforce the license in case potential misuses of the +Model may occur. At the same time, we strive to promote open and +responsible research on generative models for art and content +generation. + +Even though downstream derivative versions of the model could be +released under different licensing terms, the latter will always have +to include - at minimum - the same use-based restrictions as the ones +in the original license (this license). We believe in the intersection +between open and responsible AI development; thus, this agreement aims +to strike a balance between both in order to enable responsible +open-science in the field of AI. + +This CreativeML Open RAIL++-M License governs the use of the model +(and its derivatives) and is informed by the model card associated +with the model. + +NOW THEREFORE, You and Licensor agree as follows: + +Definitions + +"License" means the terms and conditions for use, reproduction, and +Distribution as defined in this document. + +"Data" means a collection of information and/or content extracted from +the dataset used with the Model, including to train, pretrain, or +otherwise evaluate the Model. The Data is not licensed under this +License. + +"Output" means the results of operating a Model as embodied in +informational content resulting therefrom. + +"Model" means any accompanying machine-learning based assemblies +(including checkpoints), consisting of learnt weights, parameters +(including optimizer states), corresponding to the model architecture +as embodied in the Complementary Material, that have been trained or +tuned, in whole or in part on the Data, using the Complementary +Material. + +"Derivatives of the Model" means all modifications to the Model, works +based on the Model, or any other model which is created or initialized +by transfer of patterns of the weights, parameters, activations or +output of the Model, to the other model, in order to cause the other +model to perform similarly to the Model, including - but not limited +to - distillation methods entailing the use of intermediate data +representations or methods based on the generation of synthetic data +by the Model for training the other model. + +"Complementary Material" means the accompanying source code and +scripts used to define, run, load, benchmark or evaluate the Model, +and used to prepare data for training or evaluation, if any. This +includes any accompanying documentation, tutorials, examples, etc, if +any. + +"Distribution" means any transmission, reproduction, publication or +other sharing of the Model or Derivatives of the Model to a third +party, including providing the Model as a hosted service made +available by electronic or other remote means - e.g. API-based or web +access. + +"Licensor" means the copyright owner or entity authorized by the +copyright owner that is granting the License, including the persons or +entities that may have rights in the Model and/or distributing the +Model. + +"You" (or "Your") means an individual or Legal Entity exercising +permissions granted by this License and/or making use of the Model for +whichever purpose and in any field of use, including usage of the +Model in an end-use application - e.g. chatbot, translator, image +generator. + +"Third Parties" means individuals or legal entities that are not under +common control with Licensor or You. + +"Contribution" means any work of authorship, including the original +version of the Model and any modifications or additions to that Model +or Derivatives of the Model thereof, that is intentionally submitted +to Licensor for inclusion in the Model by the copyright owner or by an +individual or Legal Entity authorized to submit on behalf of the +copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent to +the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control +systems, and issue tracking systems that are managed by, or on behalf +of, the Licensor for the purpose of discussing and improving the +Model, but excluding communication that is conspicuously marked or +otherwise designated in writing by the copyright owner as "Not a +Contribution." + +"Contributor" means Licensor and any individual or Legal Entity on +behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Model. + +Section II: INTELLECTUAL PROPERTY RIGHTS + +Both copyright and patent grants apply to the Model, Derivatives of +the Model and Complementary Material. The Model and Derivatives of the +Model are subject to additional terms as described in + +Section III. + +Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare, publicly display, publicly +perform, sublicense, and distribute the Complementary Material, the +Model, and Derivatives of the Model. + +Grant of Patent License. Subject to the terms and conditions of this +License and where and as applicable, each Contributor hereby grants to +You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this paragraph) patent license to +make, have made, use, offer to sell, sell, import, and otherwise +transfer the Model and the Complementary Material, where such license +applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by +combination of their Contribution(s) with the Model to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim in a +lawsuit) alleging that the Model and/or Complementary Material or a +Contribution incorporated within the Model and/or Complementary +Material constitutes direct or contributory patent infringement, then +any patent licenses granted to You under this License for the Model +and/or Work shall terminate as of the date such litigation is asserted +or filed. + +Section III: CONDITIONS OF USAGE, DISTRIBUTION AND REDISTRIBUTION + +Distribution and Redistribution. You may host for Third Party remote +access purposes (e.g. software-as-a-service), reproduce and distribute +copies of the Model or Derivatives of the Model thereof in any medium, +with or without modifications, provided that You meet the following +conditions: Use-based restrictions as referenced in paragraph 5 MUST +be included as an enforceable provision by You in any type of legal +agreement (e.g. a license) governing the use and/or distribution of +the Model or Derivatives of the Model, and You shall give notice to +subsequent users You Distribute to, that the Model or Derivatives of +the Model are subject to paragraph 5. This provision does not apply to +the use of Complementary Material. You must give any Third Party +recipients of the Model or Derivatives of the Model a copy of this +License; You must cause any modified files to carry prominent notices +stating that You changed the files; You must retain all copyright, +patent, trademark, and attribution notices excluding those notices +that do not pertain to any part of the Model, Derivatives of the +Model. You may add Your own copyright statement to Your modifications +and may provide additional or different license terms and conditions - +respecting paragraph 4.a. - for use, reproduction, or Distribution of +Your modifications, or for any such Derivatives of the Model as a +whole, provided Your use, reproduction, and Distribution of the Model +otherwise complies with the conditions stated in this License. + +Use-based restrictions. The restrictions set forth in Attachment A are +considered Use-based restrictions. Therefore You cannot use the Model +and the Derivatives of the Model for the specified restricted +uses. You may use the Model subject to this License, including only +for lawful purposes and in accordance with the License. Use may +include creating any content with, finetuning, updating, running, +training, evaluating and/or reparametrizing the Model. You shall +require all of Your users who use the Model or a Derivative of the +Model to comply with the terms of this paragraph (paragraph 5). + +The Output You Generate. Except as set forth herein, Licensor claims +no rights in the Output You generate using the Model. You are +accountable for the Output you generate and its subsequent uses. No +use of the output can contravene any provision as stated in the +License. + +Section IV: OTHER PROVISIONS + +Updates and Runtime Restrictions. To the maximum extent permitted by +law, Licensor reserves the right to restrict (remotely or otherwise) +usage of the Model in violation of this License. + +Trademarks and related. Nothing in this License permits You to make +use of Licensors’ trademarks, trade names, logos or to otherwise +suggest endorsement or misrepresent the relationship between the +parties; and any rights not expressly granted herein are reserved by +the Licensors. + +Disclaimer of Warranty. Unless required by applicable law or agreed to +in writing, Licensor provides the Model and the Complementary Material +(and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Model, Derivatives of +the Model, and the Complementary Material and assume any risks +associated with Your exercise of permissions under this License. + +Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, unless +required by applicable law (such as deliberate and grossly negligent +acts) or agreed to in writing, shall any Contributor be liable to You +for damages, including any direct, indirect, special, incidental, or +consequential damages of any character arising as a result of this +License or out of the use or inability to use the Model and the +Complementary Material (including but not limited to damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any +and all other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +Accepting Warranty or Additional Liability. While redistributing the +Model, Derivatives of the Model and the Complementary Material +thereof, You may choose to offer, and charge a fee for, acceptance of +support, warranty, indemnity, or other liability obligations and/or +rights consistent with this License. However, in accepting such +obligations, You may act only on Your own behalf and on Your sole +responsibility, not on behalf of any other Contributor, and only if +You agree to indemnify, defend, and hold each Contributor harmless for +any liability incurred by, or claims asserted against, such +Contributor by reason of your accepting any such warranty or +additional liability. + +If any provision of this License is held to be invalid, illegal or +unenforceable, the remaining provisions shall be unaffected thereby +and remain valid as if such provision had not been set forth herein. + + +END OF TERMS AND CONDITIONS + +Attachment A + +Use Restrictions + +You agree not to use the Model or Derivatives of the Model: + +* In any way that violates any applicable national, federal, state, +local or international law or regulation; + +* For the purpose of exploiting, harming or attempting to exploit or +harm minors in any way; + +* To generate or disseminate verifiably false information and/or + content with the purpose of harming others; + +* To generate or disseminate personal identifiable information that + can be used to harm an individual; + +* To defame, disparage or otherwise harass others; + +* For fully automated decision making that adversely impacts an + individual’s legal rights or otherwise creates or modifies a + binding, enforceable obligation; + +* For any use intended to or which has the effect of discriminating + against or harming individuals or groups based on online or offline + social behavior or known or predicted personal or personality + characteristics; + +* To exploit any of the vulnerabilities of a specific group of persons + based on their age, social, physical or mental characteristics, in + order to materially distort the behavior of a person pertaining to + that group in a manner that causes or is likely to cause that person + or another person physical or psychological harm; + +* For any use intended to or which has the effect of discriminating + against individuals or groups based on legally protected + characteristics or categories; + +* To provide medical advice and medical results interpretation; + +* To generate or disseminate information for the purpose to be used + for administration of justice, law enforcement, immigration or + asylum processes, such as predicting an individual will commit + fraud/crime commitment (e.g. by text profiling, drawing causal + relationships between assertions made in documents, indiscriminate + and arbitrarily-targeted use). + diff --git a/README.md b/README.md index 6f6bd2a0b8..3ca1ca1f26 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ and go to http://localhost:9090. ### Command-Line Installation (for developers and users familiar with Terminals) -You must have Python 3.9 or 3.10 installed on your machine. Earlier or +You must have Python 3.9 through 3.11 installed on your machine. Earlier or later versions are not supported. Node.js also needs to be installed along with yarn (can be installed with the command `npm install -g yarn` if needed) diff --git a/docs/assets/troubleshooting/broken-dependency.png b/docs/assets/troubleshooting/broken-dependency.png new file mode 100644 index 0000000000..2841508920 Binary files /dev/null and b/docs/assets/troubleshooting/broken-dependency.png differ diff --git a/docs/features/CONFIGURATION.md b/docs/features/CONFIGURATION.md index 68c5ced59b..09e6143e95 100644 --- a/docs/features/CONFIGURATION.md +++ b/docs/features/CONFIGURATION.md @@ -65,7 +65,6 @@ InvokeAI: esrgan: true internet_available: true log_tokenization: false - nsfw_checker: false patchmatch: true restore: true ... @@ -136,19 +135,16 @@ command-line options by giving the `--help` argument: ``` (.venv) > invokeai-web --help -usage: InvokeAI [-h] [--host HOST] [--port PORT] [--allow_origins [ALLOW_ORIGINS ...]] [--allow_credentials | --no-allow_credentials] - [--allow_methods [ALLOW_METHODS ...]] [--allow_headers [ALLOW_HEADERS ...]] [--esrgan | --no-esrgan] - [--internet_available | --no-internet_available] [--log_tokenization | --no-log_tokenization] - [--nsfw_checker | --no-nsfw_checker] [--patchmatch | --no-patchmatch] [--restore | --no-restore] - [--always_use_cpu | --no-always_use_cpu] [--free_gpu_mem | --no-free_gpu_mem] [--max_cache_size MAX_CACHE_SIZE] - [--max_vram_cache_size MAX_VRAM_CACHE_SIZE] [--precision {auto,float16,float32,autocast}] - [--sequential_guidance | --no-sequential_guidance] [--xformers_enabled | --no-xformers_enabled] - [--tiled_decode | --no-tiled_decode] [--root ROOT] [--autoimport_dir AUTOIMPORT_DIR] [--lora_dir LORA_DIR] - [--embedding_dir EMBEDDING_DIR] [--controlnet_dir CONTROLNET_DIR] [--conf_path CONF_PATH] [--models_dir MODELS_DIR] - [--legacy_conf_dir LEGACY_CONF_DIR] [--db_dir DB_DIR] [--outdir OUTDIR] [--from_file FROM_FILE] - [--use_memory_db | --no-use_memory_db] [--model MODEL] [--log_handlers [LOG_HANDLERS ...]] - [--log_format {plain,color,syslog,legacy}] [--log_level {debug,info,warning,error,critical}] -... +usage: InvokeAI [-h] [--host HOST] [--port PORT] [--allow_origins [ALLOW_ORIGINS ...]] [--allow_credentials | --no-allow_credentials] [--allow_methods [ALLOW_METHODS ...]] + [--allow_headers [ALLOW_HEADERS ...]] [--esrgan | --no-esrgan] [--internet_available | --no-internet_available] [--log_tokenization | --no-log_tokenization] + [--patchmatch | --no-patchmatch] [--restore | --no-restore] + [--always_use_cpu | --no-always_use_cpu] [--free_gpu_mem | --no-free_gpu_mem] [--max_loaded_models MAX_LOADED_MODELS] [--max_cache_size MAX_CACHE_SIZE] + [--max_vram_cache_size MAX_VRAM_CACHE_SIZE] [--gpu_mem_reserved GPU_MEM_RESERVED] [--precision {auto,float16,float32,autocast}] + [--sequential_guidance | --no-sequential_guidance] [--xformers_enabled | --no-xformers_enabled] [--tiled_decode | --no-tiled_decode] [--root ROOT] + [--autoimport_dir AUTOIMPORT_DIR] [--lora_dir LORA_DIR] [--embedding_dir EMBEDDING_DIR] [--controlnet_dir CONTROLNET_DIR] [--conf_path CONF_PATH] + [--models_dir MODELS_DIR] [--legacy_conf_dir LEGACY_CONF_DIR] [--db_dir DB_DIR] [--outdir OUTDIR] [--from_file FROM_FILE] + [--use_memory_db | --no-use_memory_db] [--model MODEL] [--log_handlers [LOG_HANDLERS ...]] [--log_format {plain,color,syslog,legacy}] + [--log_level {debug,info,warning,error,critical}] [--version | --no-version] ``` ## The Configuration Settings @@ -178,7 +174,6 @@ These configuration settings allow you to enable and disable various InvokeAI fe | `esrgan` | `true` | Activate the ESRGAN upscaling options| | `internet_available` | `true` | When a resource is not available locally, try to fetch it via the internet | | `log_tokenization` | `false` | Before each text2image generation, print a color-coded representation of the prompt to the console; this can help understand why a prompt is not working as expected | -| `nsfw_checker` | `true` | Activate the NSFW checker to blur out risque images | | `patchmatch` | `true` | Activate the "patchmatch" algorithm for improved inpainting | | `restore` | `true` | Activate the facial restoration features (DEPRECATED; restoration features will be removed in 3.0.0) | diff --git a/docs/features/NODES.md b/docs/features/NODES.md index 94663d9f1d..eef71eb974 100644 --- a/docs/features/NODES.md +++ b/docs/features/NODES.md @@ -61,11 +61,13 @@ A noise scheduler (eg. DPM++ 2M Karras) schedules the subtraction of noise from | ImageInverseLerp | Inverse linear interpolation of all pixels of an image | | ImageLerp | Linear interpolation of all pixels of an image | | ImageMultiply | Multiplies two images together using `PIL.ImageChops.Multiply()` | +| ImageNSFWBlurInvocation | Detects and blurs images that may contain sexually explicit content | | ImagePaste | Pastes an image into another image | | ImageProcessor | Base class for invocations that reprocess images for ControlNet | | ImageResize | Resizes an image to specific dimensions | | ImageScale | Scales an image by a factor | | ImageToLatents | Scales latents by a given factor | +| ImageWatermarkInvocation | Adds an invisible watermark to images | | InfillColor | Infills transparent areas of an image with a solid color | | InfillPatchMatch | Infills transparent areas of an image using the PatchMatch algorithm | | InfillTile | Infills transparent areas of an image with tiles of the image | diff --git a/docs/features/OTHER.md b/docs/features/OTHER.md index 2401f644ba..00bfd05e14 100644 --- a/docs/features/OTHER.md +++ b/docs/features/OTHER.md @@ -16,21 +16,24 @@ Output Example: --- -## **Seamless Tiling** +## **Invisible Watermark** -The seamless tiling mode causes generated images to seamlessly tile -with itself creating repetitive wallpaper-like patterns. To use it, -activate the Seamless Tiling option in the Web GUI and then select -whether to tile on the X (horizontal) and/or Y (vertical) axes. Tiling -will then be active for the next set of generations. +In keeping with the principles for responsible AI generation, and to +help AI researchers avoid synthetic images contaminating their +training sets, InvokeAI adds an invisible watermark to each of the +final images it generates. The watermark consists of the text +"InvokeAI" and can be viewed using the +[invisible-watermarks](https://github.com/ShieldMnt/invisible-watermark) +tool. -A nice prompt to test seamless tiling with is: +Watermarking is controlled using the `invisible-watermark` setting in +`invokeai.yaml`. To turn it off, add the following line under the `Features` +category. ``` -pond garden with lotus by claude monet" +invisible_watermark: false ``` ---- ## **Weighted Prompts** @@ -39,34 +42,10 @@ priority to them, by adding `:` to the end of the section you wish to u example consider this prompt: ```bash -tabby cat:0.25 white duck:0.75 hybrid +(tabby cat):0.25 (white duck):0.75 hybrid ``` This will tell the sampler to invest 25% of its effort on the tabby cat aspect of the image and 75% on the white duck aspect (surprisingly, this example actually works). The prompt weights can use any combination of integers and floating point numbers, and they do not need to add up to 1. -## **Thresholding and Perlin Noise Initialization Options** - -Under the Noise section of the Web UI, you will find two options named -Perlin Noise and Noise Threshold. [Perlin -noise](https://en.wikipedia.org/wiki/Perlin_noise) is a type of -structured noise used to simulate terrain and other natural -textures. The slider controls the percentage of perlin noise that will -be mixed into the image at the beginning of generation. Adding a little -perlin noise to a generation will alter the image substantially. - -The noise threshold limits the range of the latent values during -sampling and helps combat the oversharpening seem with higher CFG -scale values. - -For better intuition into what these options do in practice: - -![here is a graphic demonstrating them both](../assets/truncation_comparison.jpg) - -In generating this graphic, perlin noise at initialization was -programmatically varied going across on the diagram by values 0.0, -0.1, 0.2, 0.4, 0.5, 0.6, 0.8, 0.9, 1.0; and the threshold was varied -going down from 0, 1, 2, 3, 4, 5, 10, 20, 100. The other options are -fixed using the prompt "a portrait of a beautiful young lady" a CFG of -20, 100 steps, and a seed of 1950357039. diff --git a/docs/features/NSFW.md b/docs/features/WATERMARK+NSFW.md similarity index 62% rename from docs/features/NSFW.md rename to docs/features/WATERMARK+NSFW.md index f0539cc6a9..c837d66b57 100644 --- a/docs/features/NSFW.md +++ b/docs/features/WATERMARK+NSFW.md @@ -1,12 +1,40 @@ --- -title: The NSFW Checker +title: Watermarking, NSFW Image Checking --- -# :material-image-off: NSFW Checker +# :material-image-off: Invisible Watermark and the NSFW Checker + +## Watermarking + +InvokeAI does not apply watermarking to images by default. However, +many computer scientists working in the field of generative AI worry +that a flood of computer-generated imagery will contaminate the image +data sets needed to train future generations of generative models. + +InvokeAI offers an optional watermarking mode that writes a small bit +of text, **InvokeAI**, into each image that it generates using an +"invisible" watermarking library that spreads the information +throughout the image in a way that is not perceptible to the human +eye. If you are planning to share your generated images on +internet-accessible services, we encourage you to activate the +invisible watermark mode in order to help preserve the digital image +environment. + +The downside of watermarking is that it increases the size of the +image moderately, and has been reported by some individuals to degrade +image quality. Your mileage may vary. + +To read the watermark in an image, activate the InvokeAI virtual +environment (called the "developer's console" in the launcher) and run +the command: + +``` +invisible-watermark -a decode -t bytes -m dwtDct -l 64 /path/to/image.png +``` ## The NSFW ("Safety") Checker -The Stable Diffusion image generation models will produce sexual +Stable Diffusion 1.5-based image generation models will produce sexual imagery if deliberately prompted, and will occasionally produce such images when this is not intended. Such images are colloquially known as "Not Safe for Work" (NSFW). This behavior is due to the nature of @@ -18,35 +46,17 @@ jurisdictions it may be illegal to publicly distribute such imagery, including mounting a publicly-available server that provides unfiltered images to the public. Furthermore, the [Stable Diffusion weights -License](https://github.com/invoke-ai/InvokeAI/blob/main/LICENSE-ModelWeights.txt) -forbids the model from being used to "exploit any of the +License](https://github.com/invoke-ai/InvokeAI/blob/main/LICENSE-SD1+SD2.txt), +and the [Stable Diffusion XL +License][https://github.com/invoke-ai/InvokeAI/blob/main/LICENSE-SDXL.txt] +both forbid the models from being used to "exploit any of the vulnerabilities of a specific group of persons." For these reasons Stable Diffusion offers a "safety checker," a machine learning model trained to recognize potentially disturbing imagery. When a potentially NSFW image is detected, the checker will blur the image and paste a warning icon on top. The checker can be -turned on and off on the command line using `--nsfw_checker` and -`--no-nsfw_checker`. - -At installation time, InvokeAI will ask whether the checker should be -activated by default (neither argument given on the command line). The -response is stored in the InvokeAI initialization file -(`invokeai.yaml` in the InvokeAI root directory). You can change the -default at any time by opening this file in a text editor and -changing the line `nsfw_checker:` from true to false or vice-versa: - - -``` -... - Features: - esrgan: true - internet_available: true - log_tokenization: false - nsfw_checker: true - patchmatch: true - restore: true -``` +turned on and off in the Web interface under Settings. ## Caveats @@ -84,10 +94,3 @@ are encouraged to turn **off** intermediate image rendering when you are using the checker. Future versions of InvokeAI will apply additional blurring to intermediate images when the checker is active. -### Watermarking - -InvokeAI does not apply any sort of watermark to images it -generates. However, it does write metadata into the PNG data area, -including the prompt used to generate the image and relevant parameter -settings. These fields can be examined using the `sd-metadata.py` -script that comes with the InvokeAI package. diff --git a/docs/index.md b/docs/index.md index ce26f1f1f3..5e62445f89 100644 --- a/docs/index.md +++ b/docs/index.md @@ -80,11 +80,11 @@ Q&A] !!! note - This fork is rapidly evolving. Please use the [Issues tab](https://github.com/invoke-ai/InvokeAI/issues) to report bugs and make feature requests. Be sure to use the provided templates. They will help aid diagnose issues faster. + This software is rapidly evolving. Please use the [Issues tab](https://github.com/invoke-ai/InvokeAI/issues) to report bugs and make feature requests. Be sure to use the provided templates. They will help aid diagnose issues faster. ## :octicons-package-dependencies-24: Installation -This fork is supported across Linux, Windows and Macintosh. Linux users can use +This software is supported across Linux, Windows and Macintosh. Linux users can use either an Nvidia-based card (with CUDA support) or an AMD card (using the ROCm driver). @@ -95,6 +95,8 @@ driver). This method is recommended for experienced users and developers #### [Docker Installation](installation/040_INSTALL_DOCKER.md) This method is recommended for those familiar with running Docker containers +#### [Installation Troubleshooting](installation/010_INSTALL_AUTOMATED.md#troubleshooting) +Installation troubleshooting guide. ### Other Installation Guides - [PyPatchMatch](installation/060_INSTALL_PATCHMATCH.md) - [XFormers](installation/070_INSTALL_XFORMERS.md) @@ -148,7 +150,7 @@ images in full-precision mode: - [Model Merging](features/MODEL_MERGING.md) - [ControlNet Models](features/CONTROLNET.md) - [Style/Subject Concepts and Embeddings](features/CONCEPTS.md) -- [Not Safe for Work (NSFW) Checker](features/NSFW.md) +- [Watermarking and the Not Safe for Work (NSFW) Checker](features/WATERMARK+NSFW.md) ### Prompt Engineering - [Prompt Syntax](features/PROMPTS.md) @@ -230,7 +232,7 @@ encouraged to do so. ## :octicons-person-24: Contributors -This fork is a combined effort of various people from across the world. +This software is a combined effort of various people from across the world. [Check out the list of all these amazing people](other/CONTRIBUTORS.md). We thank them for their time, hard work and effort. diff --git a/docs/installation/010_INSTALL_AUTOMATED.md b/docs/installation/010_INSTALL_AUTOMATED.md index 8072364b55..79203f066c 100644 --- a/docs/installation/010_INSTALL_AUTOMATED.md +++ b/docs/installation/010_INSTALL_AUTOMATED.md @@ -40,10 +40,8 @@ experimental versions later. this, open up a command-line window ("Terminal" on Linux and Macintosh, "Command" or "Powershell" on Windows) and type `python --version`. If Python is installed, it will print out the version - number. If it is version `3.9.*` or `3.10.*`, you meet - requirements. We do not recommend using Python 3.11 or higher, - as not all the libraries that InvokeAI depends on work properly - with this version. + number. If it is version `3.9.*`, `3.10.*` or `3.11.*` you meet + requirements. !!! warning "What to do if you have an unsupported version" @@ -215,17 +213,6 @@ experimental versions later. Generally the defaults are fine, and you can come back to this screen at any time to tweak your system. Here are the options you can adjust: - - ***Output directory for images*** - This is the path to a directory in which InvokeAI will store all its - generated images. - - - ***NSFW checker*** - If checked, InvokeAI will test images for potential sexual content - and blur them out if found. Note that the NSFW checker consumes - an additional 0.6 GB of VRAM on top of the 2-3 GB of VRAM used - by most image models. If you have a low VRAM GPU (4-6 GB), you - can reduce out of memory errors by disabling the checker. - - ***HuggingFace Access Token*** InvokeAI has the ability to download embedded styles and subjects from the HuggingFace Concept Library on-demand. However, some of @@ -257,20 +244,30 @@ experimental versions later. and graphics cards. The "autocast" option is deprecated and shouldn't be used unless you are asked to by a member of the team. - - ***Number of models to cache in CPU memory*** + - **Size of the RAM cache used for fast model switching*** This allows you to keep models in memory and switch rapidly among them rather than having them load from disk each time. This slider - controls how many models to keep loaded at once. Each - model will use 2-4 GB of RAM, so use this cautiously + controls how many models to keep loaded at once. A typical SD-1 or SD-2 model + uses 2-3 GB of memory. A typical SDXL model uses 6-7 GB. Providing more + RAM will allow more models to be co-resident. - - ***Directory containing embedding/textual inversion files*** - This is the directory in which you can place custom embedding - files (.pt or .bin). During startup, this directory will be - scanned and InvokeAI will print out the text terms that - are available to trigger the embeddings. + - ***Output directory for images*** + This is the path to a directory in which InvokeAI will store all its + generated images. + + - ***Autoimport Folder*** + This is the directory in which you can place models you have + downloaded and wish to load into InvokeAI. You can place a variety + of models in this directory, including diffusers folders, .ckpt files, + .safetensors files, as well as LoRAs, ControlNet and Textual Inversion + files (both folder and file versions). To help organize this folder, + you can create several levels of subfolders and drop your models into + whichever ones you want. + + - ***Autoimport FolderLICENSE*** At the bottom of the screen you will see a checkbox for accepting - the CreativeML Responsible AI License. You need to accept the license + the CreativeML Responsible AI Licenses. You need to accept the license in order to download Stable Diffusion models from the next screen. _You can come back to the startup options form_ as many times as you like. @@ -375,8 +372,71 @@ experimental versions later. Once InvokeAI is installed, do not move or remove this directory." + ## Troubleshooting +### _OSErrors on Windows while installing dependencies_ + +During a zip file installation or an online update, installation stops +with an error like this: + +![broken-dependency-screenshot](../assets/troubleshooting/broken-dependency.png){:width="800px"} + +This seems to happen particularly often with the `pydantic` and +`numpy` packages. The most reliable solution requires several manual +steps to complete installation. + +Open up a Powershell window and navigate to the `invokeai` directory +created by the installer. Then give the following series of commands: + +```cmd +rm .\.venv -r -force +python -mvenv .venv +.\.venv\Scripts\activate +pip install invokeai +invokeai-configure --root . +``` + +If you see anything marked as an error during this process please stop +and seek help on the Discord [installation support +channel](https://discord.com/channels/1020123559063990373/1041391462190956654). A +few warning messages are OK. + +If you are updating from a previous version, this should restore your +system to a working state. If you are installing from scratch, there +is one additional command to give: + +```cmd +wget -O invoke.bat https://raw.githubusercontent.com/invoke-ai/InvokeAI/main/installer/templates/invoke.bat.in +``` + +This will create the `invoke.bat` script needed to launch InvokeAI and +its related programs. + + +### _Stable Diffusion XL Generation Fails after Trying to Load unet_ + +InvokeAI is working in other respects, but when trying to generate +images with Stable Diffusion XL you get a "Server Error". The text log +in the launch window contains this log line above several more lines of +error messages: + +```INFO --> Loading model:D:\LONG\PATH\TO\MODEL, type sdxl:main:unet``` + +This failure mode occurs when there is a network glitch during +downloading the very large SDXL model. + +To address this, first go to the Web Model Manager and delete the +Stable-Diffusion-XL-base-1.X model. Then navigate to HuggingFace and +manually download the .safetensors version of the model. The 1.0 +version is located at +https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main +and the file is named `sd_xl_base_1.0.safetensors`. + +Save this file to disk and then reenter the Model Manager. Navigate to +Import Models->Add Model, then type (or drag-and-drop) the path to the +.safetensors file. Press "Add Model". + ### _Package dependency conflicts_ If you have previously installed InvokeAI or another Stable Diffusion diff --git a/docs/installation/020_INSTALL_MANUAL.md b/docs/installation/020_INSTALL_MANUAL.md index 75309c5fea..c0fb4c046f 100644 --- a/docs/installation/020_INSTALL_MANUAL.md +++ b/docs/installation/020_INSTALL_MANUAL.md @@ -32,7 +32,7 @@ gaming): * **Python** - version 3.9 or 3.10 (3.11 is not recommended). + version 3.9 through 3.11 * **CUDA Tools** @@ -65,7 +65,7 @@ gaming): To install InvokeAI with virtual environments and the PIP package manager, please follow these steps: -1. Please make sure you are using Python 3.9 or 3.10. The rest of the install +1. Please make sure you are using Python 3.9 through 3.11. The rest of the install procedure depends on this and will not work with other versions: ```bash diff --git a/installer/install.sh.in b/installer/install.sh.in index 0063c0ebbf..1b8ba92ea6 100755 --- a/installer/install.sh.in +++ b/installer/install.sh.in @@ -9,16 +9,20 @@ cd $scriptdir function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; } MINIMUM_PYTHON_VERSION=3.9.0 -MAXIMUM_PYTHON_VERSION=3.11.0 +MAXIMUM_PYTHON_VERSION=3.11.100 PYTHON="" -for candidate in python3.10 python3.9 python3 python ; do +for candidate in python3.11 python3.10 python3.9 python3 python ; do if ppath=`which $candidate`; then + # when using `pyenv`, the executable for an inactive Python version will exist but will not be operational + # we check that this found executable can actually run + if [ $($candidate --version &>/dev/null; echo ${PIPESTATUS}) -gt 0 ]; then continue; fi + python_version=$($ppath -V | awk '{ print $2 }') if [ $(version $python_version) -ge $(version "$MINIMUM_PYTHON_VERSION") ]; then - if [ $(version $python_version) -lt $(version "$MAXIMUM_PYTHON_VERSION") ]; then - PYTHON=$ppath - break - fi + if [ $(version $python_version) -le $(version "$MAXIMUM_PYTHON_VERSION") ]; then + PYTHON=$ppath + break + fi fi fi done diff --git a/installer/lib/installer.py b/installer/lib/installer.py index 5904a71968..e1ca8c2e8f 100644 --- a/installer/lib/installer.py +++ b/installer/lib/installer.py @@ -141,15 +141,16 @@ class Installer: # upgrade pip in Python 3.9 environments if int(platform.python_version_tuple()[1]) == 9: - from plumbum import FG, local pip = local[get_pip_from_venv(venv_dir)] - pip[ "install", "--upgrade", "pip"] & FG + pip["install", "--upgrade", "pip"] & FG return venv_dir - def install(self, root: str = "~/invokeai-3", version: str = "latest", yes_to_all=False, find_links: Path = None) -> None: + def install( + self, root: str = "~/invokeai-3", version: str = "latest", yes_to_all=False, find_links: Path = None + ) -> None: """ Install the InvokeAI application into the given runtime path @@ -175,7 +176,7 @@ class Installer: self.instance = InvokeAiInstance(runtime=self.dest, venv=self.venv, version=version) # install dependencies and the InvokeAI application - (extra_index_url,optional_modules) = get_torch_source() if not yes_to_all else (None,None) + (extra_index_url, optional_modules) = get_torch_source() if not yes_to_all else (None, None) self.instance.install( extra_index_url, optional_modules, @@ -188,6 +189,7 @@ class Installer: # run through the configuration flow self.instance.configure() + class InvokeAiInstance: """ Manages an installed instance of InvokeAI, comprising a virtual environment and a runtime directory. @@ -196,7 +198,6 @@ class InvokeAiInstance: """ def __init__(self, runtime: Path, venv: Path, version: str) -> None: - self.runtime = runtime self.venv = venv self.pip = get_pip_from_venv(venv) @@ -312,7 +313,7 @@ class InvokeAiInstance: "install", "--require-virtualenv", "--use-pep517", - str(src)+(optional_modules if optional_modules else ''), + str(src) + (optional_modules if optional_modules else ""), "--find-links" if find_links is not None else None, find_links, "--extra-index-url" if extra_index_url is not None else None, @@ -329,15 +330,15 @@ class InvokeAiInstance: # set sys.argv to a consistent state new_argv = [sys.argv[0]] - for i in range(1,len(sys.argv)): + for i in range(1, len(sys.argv)): el = sys.argv[i] - if el in ['-r','--root']: + if el in ["-r", "--root"]: new_argv.append(el) - new_argv.append(sys.argv[i+1]) - elif el in ['-y','--yes','--yes-to-all']: + new_argv.append(sys.argv[i + 1]) + elif el in ["-y", "--yes", "--yes-to-all"]: new_argv.append(el) sys.argv = new_argv - + import requests # to catch download exceptions from messages import introduction @@ -353,16 +354,16 @@ class InvokeAiInstance: invokeai_configure() succeeded = True except requests.exceptions.ConnectionError as e: - print(f'\nA network error was encountered during configuration and download: {str(e)}') + print(f"\nA network error was encountered during configuration and download: {str(e)}") except OSError as e: - print(f'\nAn OS error was encountered during configuration and download: {str(e)}') + print(f"\nAn OS error was encountered during configuration and download: {str(e)}") except Exception as e: - print(f'\nA problem was encountered during the configuration and download steps: {str(e)}') + print(f"\nA problem was encountered during the configuration and download steps: {str(e)}") finally: if not succeeded: print('To try again, find the "invokeai" directory, run the script "invoke.sh" or "invoke.bat"') - print('and choose option 7 to fix a broken install, optionally followed by option 5 to install models.') - print('Alternatively you can relaunch the installer.') + print("and choose option 7 to fix a broken install, optionally followed by option 5 to install models.") + print("Alternatively you can relaunch the installer.") def install_user_scripts(self): """ @@ -371,11 +372,11 @@ class InvokeAiInstance: ext = "bat" if OS == "Windows" else "sh" - #scripts = ['invoke', 'update'] - scripts = ['invoke'] - + # scripts = ['invoke', 'update'] + scripts = ["invoke"] + for script in scripts: - src = Path(__file__).parent / '..' / "templates" / f"{script}.{ext}.in" + src = Path(__file__).parent / ".." / "templates" / f"{script}.{ext}.in" dest = self.runtime / f"{script}.{ext}" shutil.copy(src, dest) os.chmod(dest, 0o0755) @@ -420,11 +421,7 @@ def set_sys_path(venv_path: Path) -> None: # filter out any paths in sys.path that may be system- or user-wide # but leave the temporary bootstrap virtualenv as it contains packages we # temporarily need at install time - sys.path = list(filter( - lambda p: not p.endswith("-packages") - or p.find(BOOTSTRAP_VENV_PREFIX) != -1, - sys.path - )) + sys.path = list(filter(lambda p: not p.endswith("-packages") or p.find(BOOTSTRAP_VENV_PREFIX) != -1, sys.path)) # determine site-packages/lib directory location for the venv lib = "Lib" if OS == "Windows" else f"lib/python{sys.version_info.major}.{sys.version_info.minor}" @@ -433,7 +430,7 @@ def set_sys_path(venv_path: Path) -> None: sys.path.append(str(Path(venv_path, lib, "site-packages").expanduser().resolve())) -def get_torch_source() -> (Union[str, None],str): +def get_torch_source() -> (Union[str, None], str): """ Determine the extra index URL for pip to use for torch installation. This depends on the OS and the graphics accelerator in use. @@ -461,9 +458,9 @@ def get_torch_source() -> (Union[str, None],str): elif device == "cpu": url = "https://download.pytorch.org/whl/cpu" - if device == 'cuda': - url = 'https://download.pytorch.org/whl/cu117' - optional_modules = '[xformers]' + if device == "cuda": + url = "https://download.pytorch.org/whl/cu117" + optional_modules = "[xformers]" # in all other cases, Torch wheels should be coming from PyPi as of Torch 1.13 diff --git a/installer/lib/main.py b/installer/lib/main.py index 42460bb0e8..b442f49255 100644 --- a/installer/lib/main.py +++ b/installer/lib/main.py @@ -41,7 +41,7 @@ if __name__ == "__main__": type=Path, default=None, ) - + args = parser.parse_args() inst = Installer() diff --git a/installer/lib/messages.py b/installer/lib/messages.py index 196c0e1eb0..3687b52d32 100644 --- a/installer/lib/messages.py +++ b/installer/lib/messages.py @@ -36,13 +36,15 @@ else: def welcome(): - @group() def text(): if (platform_specific := _platform_specific_help()) != "": yield platform_specific yield "" - yield Text.from_markup("Some of the installation steps take a long time to run. Please be patient. If the script appears to hang for more than 10 minutes, please interrupt with [i]Control-C[/] and retry.", justify="center") + yield Text.from_markup( + "Some of the installation steps take a long time to run. Please be patient. If the script appears to hang for more than 10 minutes, please interrupt with [i]Control-C[/] and retry.", + justify="center", + ) console.rule() print( @@ -58,6 +60,7 @@ def welcome(): ) console.line() + def confirm_install(dest: Path) -> bool: if dest.exists(): print(f":exclamation: Directory {dest} already exists :exclamation:") @@ -92,7 +95,6 @@ def dest_path(dest=None) -> Path: dest_confirmed = confirm_install(dest) while not dest_confirmed: - # if the given destination already exists, the starting point for browsing is its parent directory. # the user may have made a typo, or otherwise wants to place the root dir next to an existing one. # if the destination dir does NOT exist, then the user must have changed their mind about the selection. @@ -300,15 +302,20 @@ def introduction() -> None: ) console.line(2) -def _platform_specific_help()->str: + +def _platform_specific_help() -> str: if OS == "Darwin": - text = Text.from_markup("""[b wheat1]macOS Users![/]\n\nPlease be sure you have the [b wheat1]Xcode command-line tools[/] installed before continuing.\nIf not, cancel with [i]Control-C[/] and follow the Xcode install instructions at [deep_sky_blue1]https://www.freecodecamp.org/news/install-xcode-command-line-tools/[/].""") + text = Text.from_markup( + """[b wheat1]macOS Users![/]\n\nPlease be sure you have the [b wheat1]Xcode command-line tools[/] installed before continuing.\nIf not, cancel with [i]Control-C[/] and follow the Xcode install instructions at [deep_sky_blue1]https://www.freecodecamp.org/news/install-xcode-command-line-tools/[/].""" + ) elif OS == "Windows": - text = Text.from_markup("""[b wheat1]Windows Users![/]\n\nBefore you start, please do the following: + text = Text.from_markup( + """[b wheat1]Windows Users![/]\n\nBefore you start, please do the following: 1. Double-click on the file [b wheat1]WinLongPathsEnabled.reg[/] in order to enable long path support on your system. 2. Make sure you have the [b wheat1]Visual C++ core libraries[/] installed. If not, install from - [deep_sky_blue1]https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170[/]""") + [deep_sky_blue1]https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170[/]""" + ) else: text = "" return text diff --git a/invokeai/app/api/dependencies.py b/invokeai/app/api/dependencies.py index 050d1b091f..a186daedf5 100644 --- a/invokeai/app/api/dependencies.py +++ b/invokeai/app/api/dependencies.py @@ -78,9 +78,7 @@ class ApiDependencies: image_record_storage = SqliteImageRecordStorage(db_location) image_file_storage = DiskImageFileStorage(f"{output_folder}/images") names = SimpleNameService() - latents = ForwardCacheLatentsStorage( - DiskLatentsStorage(f"{output_folder}/latents") - ) + latents = ForwardCacheLatentsStorage(DiskLatentsStorage(f"{output_folder}/latents")) board_record_storage = SqliteBoardRecordStorage(db_location) board_image_record_storage = SqliteBoardImageRecordStorage(db_location) @@ -125,9 +123,7 @@ class ApiDependencies: boards=boards, board_images=board_images, queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph]( - filename=db_location, table_name="graphs" - ), + graph_library=SqliteItemStorage[LibraryGraph](filename=db_location, table_name="graphs"), graph_execution_manager=graph_execution_manager, processor=DefaultInvocationProcessor(), configuration=config, diff --git a/invokeai/app/api/routers/app_info.py b/invokeai/app/api/routers/app_info.py index e1bfeda4a1..9d9e47d2ef 100644 --- a/invokeai/app/api/routers/app_info.py +++ b/invokeai/app/api/routers/app_info.py @@ -1,14 +1,21 @@ +import typing from enum import Enum from fastapi import Body from fastapi.routing import APIRouter +from pathlib import Path from pydantic import BaseModel, Field from invokeai.backend.image_util.patchmatch import PatchMatch +from invokeai.backend.image_util.safety_checker import SafetyChecker +from invokeai.backend.image_util.invisible_watermark import InvisibleWatermark +from invokeai.app.invocations.upscale import ESRGAN_MODELS + from invokeai.version import __version__ from ..dependencies import ApiDependencies from invokeai.backend.util.logging import logging + class LogLevel(int, Enum): NotSet = logging.NOTSET Debug = logging.DEBUG @@ -16,7 +23,13 @@ class LogLevel(int, Enum): Warning = logging.WARNING Error = logging.ERROR Critical = logging.CRITICAL - + + +class Upscaler(BaseModel): + upscaling_method: str = Field(description="Name of upscaling method") + upscaling_models: list[str] = Field(description="List of upscaling models for this method") + + app_router = APIRouter(prefix="/v1/app", tags=["app"]) @@ -30,43 +43,62 @@ class AppConfig(BaseModel): """App Config Response""" infill_methods: list[str] = Field(description="List of available infill methods") + upscaling_methods: list[Upscaler] = Field(description="List of upscaling methods") + nsfw_methods: list[str] = Field(description="List of NSFW checking methods") + watermarking_methods: list[str] = Field(description="List of invisible watermark methods") -@app_router.get( - "/version", operation_id="app_version", status_code=200, response_model=AppVersion -) +@app_router.get("/version", operation_id="app_version", status_code=200, response_model=AppVersion) async def get_version() -> AppVersion: return AppVersion(version=__version__) -@app_router.get( - "/config", operation_id="get_config", status_code=200, response_model=AppConfig -) +@app_router.get("/config", operation_id="get_config", status_code=200, response_model=AppConfig) async def get_config() -> AppConfig: - infill_methods = ['tile'] + infill_methods = ["tile"] if PatchMatch.patchmatch_available(): - infill_methods.append('patchmatch') - return AppConfig(infill_methods=infill_methods) + infill_methods.append("patchmatch") + + upscaling_models = [] + for model in typing.get_args(ESRGAN_MODELS): + upscaling_models.append(str(Path(model).stem)) + upscaler = Upscaler(upscaling_method="esrgan", upscaling_models=upscaling_models) + + nsfw_methods = [] + if SafetyChecker.safety_checker_available(): + nsfw_methods.append("nsfw_checker") + + watermarking_methods = [] + if InvisibleWatermark.invisible_watermark_available(): + watermarking_methods.append("invisible_watermark") + + return AppConfig( + infill_methods=infill_methods, + upscaling_methods=[upscaler], + nsfw_methods=nsfw_methods, + watermarking_methods=watermarking_methods, + ) + @app_router.get( "/logging", operation_id="get_log_level", - responses={200: {"description" : "The operation was successful"}}, - response_model = LogLevel, + responses={200: {"description": "The operation was successful"}}, + response_model=LogLevel, ) -async def get_log_level( -) -> LogLevel: +async def get_log_level() -> LogLevel: """Returns the log level""" return LogLevel(ApiDependencies.invoker.services.logger.level) + @app_router.post( "/logging", operation_id="set_log_level", - responses={200: {"description" : "The operation was successful"}}, - response_model = LogLevel, + responses={200: {"description": "The operation was successful"}}, + response_model=LogLevel, ) async def set_log_level( - level: LogLevel = Body(description="New log verbosity level"), + level: LogLevel = Body(description="New log verbosity level"), ) -> LogLevel: """Sets the log verbosity level""" ApiDependencies.invoker.services.logger.setLevel(level) diff --git a/invokeai/app/api/routers/board_images.py b/invokeai/app/api/routers/board_images.py index 651310af24..6cb073ca7c 100644 --- a/invokeai/app/api/routers/board_images.py +++ b/invokeai/app/api/routers/board_images.py @@ -52,4 +52,3 @@ async def remove_board_image( return result except Exception as e: raise HTTPException(status_code=500, detail="Failed to update board") - diff --git a/invokeai/app/api/routers/boards.py b/invokeai/app/api/routers/boards.py index f3de7f4952..69f4a8b3a7 100644 --- a/invokeai/app/api/routers/boards.py +++ b/invokeai/app/api/routers/boards.py @@ -18,9 +18,7 @@ class DeleteBoardResult(BaseModel): deleted_board_images: list[str] = Field( description="The image names of the board-images relationships that were deleted." ) - deleted_images: list[str] = Field( - description="The names of the images that were deleted." - ) + deleted_images: list[str] = Field(description="The names of the images that were deleted.") @boards_router.post( @@ -73,22 +71,16 @@ async def update_board( ) -> BoardDTO: """Updates a board""" try: - result = ApiDependencies.invoker.services.boards.update( - board_id=board_id, changes=changes - ) + result = ApiDependencies.invoker.services.boards.update(board_id=board_id, changes=changes) return result except Exception as e: raise HTTPException(status_code=500, detail="Failed to update board") -@boards_router.delete( - "/{board_id}", operation_id="delete_board", response_model=DeleteBoardResult -) +@boards_router.delete("/{board_id}", operation_id="delete_board", response_model=DeleteBoardResult) async def delete_board( board_id: str = Path(description="The id of board to delete"), - include_images: Optional[bool] = Query( - description="Permanently delete all images on the board", default=False - ), + include_images: Optional[bool] = Query(description="Permanently delete all images on the board", default=False), ) -> DeleteBoardResult: """Deletes a board""" try: @@ -96,9 +88,7 @@ async def delete_board( deleted_images = ApiDependencies.invoker.services.board_images.get_all_board_image_names_for_board( board_id=board_id ) - ApiDependencies.invoker.services.images.delete_images_on_board( - board_id=board_id - ) + ApiDependencies.invoker.services.images.delete_images_on_board(board_id=board_id) ApiDependencies.invoker.services.boards.delete(board_id=board_id) return DeleteBoardResult( board_id=board_id, @@ -127,9 +117,7 @@ async def delete_board( async def list_boards( all: Optional[bool] = Query(default=None, description="Whether to list all boards"), offset: Optional[int] = Query(default=None, description="The page offset"), - limit: Optional[int] = Query( - default=None, description="The number of boards per page" - ), + limit: Optional[int] = Query(default=None, description="The number of boards per page"), ) -> Union[OffsetPaginatedResults[BoardDTO], list[BoardDTO]]: """Gets a list of boards""" if all: diff --git a/invokeai/app/api/routers/images.py b/invokeai/app/api/routers/images.py index 36e2e3d75d..498a1139e4 100644 --- a/invokeai/app/api/routers/images.py +++ b/invokeai/app/api/routers/images.py @@ -40,15 +40,9 @@ async def upload_image( response: Response, image_category: ImageCategory = Query(description="The category of the image"), is_intermediate: bool = Query(description="Whether this is an intermediate image"), - board_id: Optional[str] = Query( - default=None, description="The board to add this image to, if any" - ), - session_id: Optional[str] = Query( - default=None, description="The session ID associated with this upload, if any" - ), - crop_visible: Optional[bool] = Query( - default=False, description="Whether to crop the image" - ), + board_id: Optional[str] = Query(default=None, description="The board to add this image to, if any"), + session_id: Optional[str] = Query(default=None, description="The session ID associated with this upload, if any"), + crop_visible: Optional[bool] = Query(default=False, description="Whether to crop the image"), ) -> ImageDTO: """Uploads an image""" if not file.content_type.startswith("image"): @@ -115,9 +109,7 @@ async def clear_intermediates() -> int: ) async def update_image( image_name: str = Path(description="The name of the image to update"), - image_changes: ImageRecordChanges = Body( - description="The changes to apply to the image" - ), + image_changes: ImageRecordChanges = Body(description="The changes to apply to the image"), ) -> ImageDTO: """Updates an image""" @@ -212,15 +204,11 @@ async def get_image_thumbnail( """Gets a thumbnail image file""" try: - path = ApiDependencies.invoker.services.images.get_path( - image_name, thumbnail=True - ) + path = ApiDependencies.invoker.services.images.get_path(image_name, thumbnail=True) if not ApiDependencies.invoker.services.images.validate_path(path): raise HTTPException(status_code=404) - response = FileResponse( - path, media_type="image/webp", content_disposition_type="inline" - ) + response = FileResponse(path, media_type="image/webp", content_disposition_type="inline") response.headers["Cache-Control"] = f"max-age={IMAGE_MAX_AGE}" return response except Exception as e: @@ -239,9 +227,7 @@ async def get_image_urls( try: image_url = ApiDependencies.invoker.services.images.get_url(image_name) - thumbnail_url = ApiDependencies.invoker.services.images.get_url( - image_name, thumbnail=True - ) + thumbnail_url = ApiDependencies.invoker.services.images.get_url(image_name, thumbnail=True) return ImageUrlsDTO( image_name=image_name, image_url=image_url, @@ -257,15 +243,9 @@ async def get_image_urls( response_model=OffsetPaginatedResults[ImageDTO], ) async def list_image_dtos( - image_origin: Optional[ResourceOrigin] = Query( - default=None, description="The origin of images to list." - ), - categories: Optional[list[ImageCategory]] = Query( - default=None, description="The categories of image to include." - ), - is_intermediate: Optional[bool] = Query( - default=None, description="Whether to list intermediate images." - ), + image_origin: Optional[ResourceOrigin] = Query(default=None, description="The origin of images to list."), + categories: Optional[list[ImageCategory]] = Query(default=None, description="The categories of image to include."), + is_intermediate: Optional[bool] = Query(default=None, description="Whether to list intermediate images."), board_id: Optional[str] = Query( default=None, description="The board id to filter by. Use 'none' to find images without a board.", diff --git a/invokeai/app/api/routers/models.py b/invokeai/app/api/routers/models.py index 759f6c9f59..2f59f1dd0f 100644 --- a/invokeai/app/api/routers/models.py +++ b/invokeai/app/api/routers/models.py @@ -28,49 +28,52 @@ ConvertModelResponse = Union[tuple(OPENAPI_MODEL_CONFIGS)] MergeModelResponse = Union[tuple(OPENAPI_MODEL_CONFIGS)] ImportModelAttributes = Union[tuple(OPENAPI_MODEL_CONFIGS)] + class ModelsList(BaseModel): models: list[Union[tuple(OPENAPI_MODEL_CONFIGS)]] + @models_router.get( "/", operation_id="list_models", - responses={200: {"model": ModelsList }}, + responses={200: {"model": ModelsList}}, ) async def list_models( base_models: Optional[List[BaseModelType]] = Query(default=None, description="Base models to include"), model_type: Optional[ModelType] = Query(default=None, description="The type of model to get"), ) -> ModelsList: """Gets a list of models""" - if base_models and len(base_models)>0: + if base_models and len(base_models) > 0: models_raw = list() for base_model in base_models: models_raw.extend(ApiDependencies.invoker.services.model_manager.list_models(base_model, model_type)) else: models_raw = ApiDependencies.invoker.services.model_manager.list_models(None, model_type) - models = parse_obj_as(ModelsList, { "models": models_raw }) + models = parse_obj_as(ModelsList, {"models": models_raw}) return models + @models_router.patch( "/{base_model}/{model_type}/{model_name}", operation_id="update_model", - responses={200: {"description" : "The model was updated successfully"}, - 400: {"description" : "Bad request"}, - 404: {"description" : "The model could not be found"}, - 409: {"description" : "There is already a model corresponding to the new name"}, - }, - status_code = 200, - response_model = UpdateModelResponse, + responses={ + 200: {"description": "The model was updated successfully"}, + 400: {"description": "Bad request"}, + 404: {"description": "The model could not be found"}, + 409: {"description": "There is already a model corresponding to the new name"}, + }, + status_code=200, + response_model=UpdateModelResponse, ) async def update_model( - base_model: BaseModelType = Path(description="Base model"), - model_type: ModelType = Path(description="The type of model"), - model_name: str = Path(description="model name"), - info: Union[tuple(OPENAPI_MODEL_CONFIGS)] = Body(description="Model configuration"), + base_model: BaseModelType = Path(description="Base model"), + model_type: ModelType = Path(description="The type of model"), + model_name: str = Path(description="model name"), + info: Union[tuple(OPENAPI_MODEL_CONFIGS)] = Body(description="Model configuration"), ) -> UpdateModelResponse: - """ Update model contents with a new config. If the model name or base fields are changed, then the model is renamed. """ + """Update model contents with a new config. If the model name or base fields are changed, then the model is renamed.""" logger = ApiDependencies.invoker.services.logger - try: previous_info = ApiDependencies.invoker.services.model_manager.list_model( model_name=model_name, @@ -81,13 +84,13 @@ async def update_model( # rename operation requested if info.model_name != model_name or info.base_model != base_model: ApiDependencies.invoker.services.model_manager.rename_model( - base_model = base_model, - model_type = model_type, - model_name = model_name, - new_name = info.model_name, - new_base = info.base_model, + base_model=base_model, + model_type=model_type, + model_name=model_name, + new_name=info.model_name, + new_base=info.base_model, ) - logger.info(f'Successfully renamed {base_model}/{model_name}=>{info.base_model}/{info.model_name}') + logger.info(f"Successfully renamed {base_model.value}/{model_name}=>{info.base_model}/{info.model_name}") # update information to support an update of attributes model_name = info.model_name base_model = info.base_model @@ -96,16 +99,15 @@ async def update_model( base_model=base_model, model_type=model_type, ) - if new_info.get('path') != previous_info.get('path'): # model manager moved model path during rename - don't overwrite it - info.path = new_info.get('path') - + if new_info.get("path") != previous_info.get( + "path" + ): # model manager moved model path during rename - don't overwrite it + info.path = new_info.get("path") + ApiDependencies.invoker.services.model_manager.update_model( - model_name=model_name, - base_model=base_model, - model_type=model_type, - model_attributes=info.dict() + model_name=model_name, base_model=base_model, model_type=model_type, model_attributes=info.dict() ) - + model_raw = ApiDependencies.invoker.services.model_manager.list_model( model_name=model_name, base_model=base_model, @@ -123,49 +125,48 @@ async def update_model( return model_response + @models_router.post( "/import", operation_id="import_model", - responses= { - 201: {"description" : "The model imported successfully"}, - 404: {"description" : "The model could not be found"}, - 415: {"description" : "Unrecognized file/folder format"}, - 424: {"description" : "The model appeared to import successfully, but could not be found in the model manager"}, - 409: {"description" : "There is already a model corresponding to this path or repo_id"}, + responses={ + 201: {"description": "The model imported successfully"}, + 404: {"description": "The model could not be found"}, + 415: {"description": "Unrecognized file/folder format"}, + 424: {"description": "The model appeared to import successfully, but could not be found in the model manager"}, + 409: {"description": "There is already a model corresponding to this path or repo_id"}, }, status_code=201, - response_model=ImportModelResponse + response_model=ImportModelResponse, ) async def import_model( - location: str = Body(description="A model path, repo_id or URL to import"), - prediction_type: Optional[Literal['v_prediction','epsilon','sample']] = \ - Body(description='Prediction type for SDv2 checkpoint files', default="v_prediction"), + location: str = Body(description="A model path, repo_id or URL to import"), + prediction_type: Optional[Literal["v_prediction", "epsilon", "sample"]] = Body( + description="Prediction type for SDv2 checkpoint files", default="v_prediction" + ), ) -> ImportModelResponse: - """ Add a model using its local path, repo_id, or remote URL. Model characteristics will be probed and configured automatically """ - + """Add a model using its local path, repo_id, or remote URL. Model characteristics will be probed and configured automatically""" + items_to_import = {location} - prediction_types = { x.value: x for x in SchedulerPredictionType } + prediction_types = {x.value: x for x in SchedulerPredictionType} logger = ApiDependencies.invoker.services.logger try: installed_models = ApiDependencies.invoker.services.model_manager.heuristic_import( - items_to_import = items_to_import, - prediction_type_helper = lambda x: prediction_types.get(prediction_type) + items_to_import=items_to_import, prediction_type_helper=lambda x: prediction_types.get(prediction_type) ) info = installed_models.get(location) if not info: logger.error("Import failed") raise HTTPException(status_code=415) - - logger.info(f'Successfully imported {location}, got {info}') + + logger.info(f"Successfully imported {location}, got {info}") model_raw = ApiDependencies.invoker.services.model_manager.list_model( - model_name=info.name, - base_model=info.base_model, - model_type=info.model_type + model_name=info.name, base_model=info.base_model, model_type=info.model_type ) return parse_obj_as(ImportModelResponse, model_raw) - + except ModelNotFoundException as e: logger.error(str(e)) raise HTTPException(status_code=404, detail=str(e)) @@ -175,38 +176,34 @@ async def import_model( except ValueError as e: logger.error(str(e)) raise HTTPException(status_code=409, detail=str(e)) - + + @models_router.post( "/add", operation_id="add_model", - responses= { - 201: {"description" : "The model added successfully"}, - 404: {"description" : "The model could not be found"}, - 424: {"description" : "The model appeared to add successfully, but could not be found in the model manager"}, - 409: {"description" : "There is already a model corresponding to this path or repo_id"}, + responses={ + 201: {"description": "The model added successfully"}, + 404: {"description": "The model could not be found"}, + 424: {"description": "The model appeared to add successfully, but could not be found in the model manager"}, + 409: {"description": "There is already a model corresponding to this path or repo_id"}, }, status_code=201, - response_model=ImportModelResponse + response_model=ImportModelResponse, ) async def add_model( - info: Union[tuple(OPENAPI_MODEL_CONFIGS)] = Body(description="Model configuration"), + info: Union[tuple(OPENAPI_MODEL_CONFIGS)] = Body(description="Model configuration"), ) -> ImportModelResponse: - """ Add a model using the configuration information appropriate for its type. Only local models can be added by path""" - + """Add a model using the configuration information appropriate for its type. Only local models can be added by path""" + logger = ApiDependencies.invoker.services.logger try: ApiDependencies.invoker.services.model_manager.add_model( - info.model_name, - info.base_model, - info.model_type, - model_attributes = info.dict() + info.model_name, info.base_model, info.model_type, model_attributes=info.dict() ) - logger.info(f'Successfully added {info.model_name}') + logger.info(f"Successfully added {info.model_name}") model_raw = ApiDependencies.invoker.services.model_manager.list_model( - model_name=info.model_name, - base_model=info.base_model, - model_type=info.model_type + model_name=info.model_name, base_model=info.base_model, model_type=info.model_type ) return parse_obj_as(ImportModelResponse, model_raw) except ModelNotFoundException as e: @@ -216,66 +213,66 @@ async def add_model( logger.error(str(e)) raise HTTPException(status_code=409, detail=str(e)) - + @models_router.delete( "/{base_model}/{model_type}/{model_name}", operation_id="del_model", - responses={ - 204: { "description": "Model deleted successfully" }, - 404: { "description": "Model not found" } - }, - status_code = 204, - response_model = None, + responses={204: {"description": "Model deleted successfully"}, 404: {"description": "Model not found"}}, + status_code=204, + response_model=None, ) async def delete_model( - base_model: BaseModelType = Path(description="Base model"), - model_type: ModelType = Path(description="The type of model"), - model_name: str = Path(description="model name"), + base_model: BaseModelType = Path(description="Base model"), + model_type: ModelType = Path(description="The type of model"), + model_name: str = Path(description="model name"), ) -> Response: """Delete Model""" logger = ApiDependencies.invoker.services.logger - + try: - ApiDependencies.invoker.services.model_manager.del_model(model_name, - base_model = base_model, - model_type = model_type - ) + ApiDependencies.invoker.services.model_manager.del_model( + model_name, base_model=base_model, model_type=model_type + ) logger.info(f"Deleted model: {model_name}") return Response(status_code=204) except ModelNotFoundException as e: logger.error(str(e)) raise HTTPException(status_code=404, detail=str(e)) + @models_router.put( "/convert/{base_model}/{model_type}/{model_name}", operation_id="convert_model", responses={ - 200: { "description": "Model converted successfully" }, - 400: {"description" : "Bad request" }, - 404: { "description": "Model not found" }, + 200: {"description": "Model converted successfully"}, + 400: {"description": "Bad request"}, + 404: {"description": "Model not found"}, }, - status_code = 200, - response_model = ConvertModelResponse, + status_code=200, + response_model=ConvertModelResponse, ) async def convert_model( - base_model: BaseModelType = Path(description="Base model"), - model_type: ModelType = Path(description="The type of model"), - model_name: str = Path(description="model name"), - convert_dest_directory: Optional[str] = Query(default=None, description="Save the converted model to the designated directory"), + base_model: BaseModelType = Path(description="Base model"), + model_type: ModelType = Path(description="The type of model"), + model_name: str = Path(description="model name"), + convert_dest_directory: Optional[str] = Query( + default=None, description="Save the converted model to the designated directory" + ), ) -> ConvertModelResponse: """Convert a checkpoint model into a diffusers model, optionally saving to the indicated destination directory, or `models` if none.""" logger = ApiDependencies.invoker.services.logger try: logger.info(f"Converting model: {model_name}") dest = pathlib.Path(convert_dest_directory) if convert_dest_directory else None - ApiDependencies.invoker.services.model_manager.convert_model(model_name, - base_model = base_model, - model_type = model_type, - convert_dest_directory = dest, - ) - model_raw = ApiDependencies.invoker.services.model_manager.list_model(model_name, - base_model = base_model, - model_type = model_type) + ApiDependencies.invoker.services.model_manager.convert_model( + model_name, + base_model=base_model, + model_type=model_type, + convert_dest_directory=dest, + ) + model_raw = ApiDependencies.invoker.services.model_manager.list_model( + model_name, base_model=base_model, model_type=model_type + ) response = parse_obj_as(ConvertModelResponse, model_raw) except ModelNotFoundException as e: raise HTTPException(status_code=404, detail=f"Model '{model_name}' not found: {str(e)}") @@ -283,91 +280,101 @@ async def convert_model( raise HTTPException(status_code=400, detail=str(e)) return response + @models_router.get( "/search", operation_id="search_for_models", responses={ - 200: { "description": "Directory searched successfully" }, - 404: { "description": "Invalid directory path" }, + 200: {"description": "Directory searched successfully"}, + 404: {"description": "Invalid directory path"}, }, - status_code = 200, - response_model = List[pathlib.Path] + status_code=200, + response_model=List[pathlib.Path], ) async def search_for_models( - search_path: pathlib.Path = Query(description="Directory path to search for models") -)->List[pathlib.Path]: + search_path: pathlib.Path = Query(description="Directory path to search for models"), +) -> List[pathlib.Path]: if not search_path.is_dir(): - raise HTTPException(status_code=404, detail=f"The search path '{search_path}' does not exist or is not directory") + raise HTTPException( + status_code=404, detail=f"The search path '{search_path}' does not exist or is not directory" + ) return ApiDependencies.invoker.services.model_manager.search_for_models(search_path) + @models_router.get( "/ckpt_confs", operation_id="list_ckpt_configs", responses={ - 200: { "description" : "paths retrieved successfully" }, + 200: {"description": "paths retrieved successfully"}, }, - status_code = 200, - response_model = List[pathlib.Path] + status_code=200, + response_model=List[pathlib.Path], ) -async def list_ckpt_configs( -)->List[pathlib.Path]: +async def list_ckpt_configs() -> List[pathlib.Path]: """Return a list of the legacy checkpoint configuration files stored in `ROOT/configs/stable-diffusion`, relative to ROOT.""" return ApiDependencies.invoker.services.model_manager.list_checkpoint_configs() - - + + @models_router.post( "/sync", operation_id="sync_to_config", responses={ - 201: { "description": "synchronization successful" }, + 201: {"description": "synchronization successful"}, }, - status_code = 201, - response_model = bool + status_code=201, + response_model=bool, ) -async def sync_to_config( -)->bool: +async def sync_to_config() -> bool: """Call after making changes to models.yaml, autoimport directories or models directory to synchronize in-memory data structures with disk data structures.""" ApiDependencies.invoker.services.model_manager.sync_to_config() return True - + + @models_router.put( "/merge/{base_model}", operation_id="merge_models", responses={ - 200: { "description": "Model converted successfully" }, - 400: { "description": "Incompatible models" }, - 404: { "description": "One or more models not found" }, + 200: {"description": "Model converted successfully"}, + 400: {"description": "Incompatible models"}, + 404: {"description": "One or more models not found"}, }, - status_code = 200, - response_model = MergeModelResponse, + status_code=200, + response_model=MergeModelResponse, ) async def merge_models( - base_model: BaseModelType = Path(description="Base model"), - model_names: List[str] = Body(description="model name", min_items=2, max_items=3), - merged_model_name: Optional[str] = Body(description="Name of destination model"), - alpha: Optional[float] = Body(description="Alpha weighting strength to apply to 2d and 3d models", default=0.5), - interp: Optional[MergeInterpolationMethod] = Body(description="Interpolation method"), - force: Optional[bool] = Body(description="Force merging of models created with different versions of diffusers", default=False), - merge_dest_directory: Optional[str] = Body(description="Save the merged model to the designated directory (with 'merged_model_name' appended)", default=None) + base_model: BaseModelType = Path(description="Base model"), + model_names: List[str] = Body(description="model name", min_items=2, max_items=3), + merged_model_name: Optional[str] = Body(description="Name of destination model"), + alpha: Optional[float] = Body(description="Alpha weighting strength to apply to 2d and 3d models", default=0.5), + interp: Optional[MergeInterpolationMethod] = Body(description="Interpolation method"), + force: Optional[bool] = Body( + description="Force merging of models created with different versions of diffusers", default=False + ), + merge_dest_directory: Optional[str] = Body( + description="Save the merged model to the designated directory (with 'merged_model_name' appended)", + default=None, + ), ) -> MergeModelResponse: """Convert a checkpoint model into a diffusers model""" logger = ApiDependencies.invoker.services.logger try: logger.info(f"Merging models: {model_names} into {merge_dest_directory or ''}/{merged_model_name}") dest = pathlib.Path(merge_dest_directory) if merge_dest_directory else None - result = ApiDependencies.invoker.services.model_manager.merge_models(model_names, - base_model, - merged_model_name=merged_model_name or "+".join(model_names), - alpha=alpha, - interp=interp, - force=force, - merge_dest_directory = dest - ) - model_raw = ApiDependencies.invoker.services.model_manager.list_model(result.name, - base_model = base_model, - model_type = ModelType.Main, - ) + result = ApiDependencies.invoker.services.model_manager.merge_models( + model_names, + base_model, + merged_model_name=merged_model_name or "+".join(model_names), + alpha=alpha, + interp=interp, + force=force, + merge_dest_directory=dest, + ) + model_raw = ApiDependencies.invoker.services.model_manager.list_model( + result.name, + base_model=base_model, + model_type=ModelType.Main, + ) response = parse_obj_as(ConvertModelResponse, model_raw) except ModelNotFoundException: raise HTTPException(status_code=404, detail=f"One or more of the models '{model_names}' not found") diff --git a/invokeai/app/api/routers/sessions.py b/invokeai/app/api/routers/sessions.py index da842a3968..e4ba2a353e 100644 --- a/invokeai/app/api/routers/sessions.py +++ b/invokeai/app/api/routers/sessions.py @@ -30,9 +30,7 @@ session_router = APIRouter(prefix="/v1/sessions", tags=["sessions"]) }, ) async def create_session( - graph: Optional[Graph] = Body( - default=None, description="The graph to initialize the session with" - ) + graph: Optional[Graph] = Body(default=None, description="The graph to initialize the session with") ) -> GraphExecutionState: """Creates a new session, optionally initializing it with an invocation graph""" session = ApiDependencies.invoker.create_execution_state(graph) @@ -51,13 +49,9 @@ async def list_sessions( ) -> PaginatedResults[GraphExecutionState]: """Gets a list of sessions, optionally searching""" if query == "": - result = ApiDependencies.invoker.services.graph_execution_manager.list( - page, per_page - ) + result = ApiDependencies.invoker.services.graph_execution_manager.list(page, per_page) else: - result = ApiDependencies.invoker.services.graph_execution_manager.search( - query, page, per_page - ) + result = ApiDependencies.invoker.services.graph_execution_manager.search(query, page, per_page) return result @@ -91,9 +85,9 @@ async def get_session( ) async def add_node( session_id: str = Path(description="The id of the session"), - node: Annotated[ - Union[BaseInvocation.get_invocations()], Field(discriminator="type") # type: ignore - ] = Body(description="The node to add"), + node: Annotated[Union[BaseInvocation.get_invocations()], Field(discriminator="type")] = Body( # type: ignore + description="The node to add" + ), ) -> str: """Adds a node to the graph""" session = ApiDependencies.invoker.services.graph_execution_manager.get(session_id) @@ -124,9 +118,9 @@ async def add_node( async def update_node( session_id: str = Path(description="The id of the session"), node_path: str = Path(description="The path to the node in the graph"), - node: Annotated[ - Union[BaseInvocation.get_invocations()], Field(discriminator="type") # type: ignore - ] = Body(description="The new node"), + node: Annotated[Union[BaseInvocation.get_invocations()], Field(discriminator="type")] = Body( # type: ignore + description="The new node" + ), ) -> GraphExecutionState: """Updates a node in the graph and removes all linked edges""" session = ApiDependencies.invoker.services.graph_execution_manager.get(session_id) @@ -230,7 +224,7 @@ async def delete_edge( try: edge = Edge( source=EdgeConnection(node_id=from_node_id, field=from_field), - destination=EdgeConnection(node_id=to_node_id, field=to_field) + destination=EdgeConnection(node_id=to_node_id, field=to_field), ) session.delete_edge(edge) ApiDependencies.invoker.services.graph_execution_manager.set( @@ -255,9 +249,7 @@ async def delete_edge( ) async def invoke_session( session_id: str = Path(description="The id of the session to invoke"), - all: bool = Query( - default=False, description="Whether or not to invoke all remaining invocations" - ), + all: bool = Query(default=False, description="Whether or not to invoke all remaining invocations"), ) -> Response: """Invokes a session""" session = ApiDependencies.invoker.services.graph_execution_manager.get(session_id) @@ -274,9 +266,7 @@ async def invoke_session( @session_router.delete( "/{session_id}/invoke", operation_id="cancel_session_invoke", - responses={ - 202: {"description": "The invocation is canceled"} - }, + responses={202: {"description": "The invocation is canceled"}}, ) async def cancel_session_invoke( session_id: str = Path(description="The id of the session to cancel"), diff --git a/invokeai/app/api/sockets.py b/invokeai/app/api/sockets.py index f70d7a6609..4591bac540 100644 --- a/invokeai/app/api/sockets.py +++ b/invokeai/app/api/sockets.py @@ -16,9 +16,7 @@ class SocketIO: self.__sio.on("subscribe", handler=self._handle_sub) self.__sio.on("unsubscribe", handler=self._handle_unsub) - local_handler.register( - event_name=EventServiceBase.session_event, _func=self._handle_session_event - ) + local_handler.register(event_name=EventServiceBase.session_event, _func=self._handle_session_event) async def _handle_session_event(self, event: Event): await self.__sio.emit( diff --git a/invokeai/app/api_app.py b/invokeai/app/api_app.py index 824b697d54..6b875d37ce 100644 --- a/invokeai/app/api_app.py +++ b/invokeai/app/api_app.py @@ -3,6 +3,7 @@ import asyncio import sys from inspect import signature +import logging import uvicorn import socket @@ -16,9 +17,10 @@ from fastapi_events.middleware import EventHandlerASGIMiddleware from pathlib import Path from pydantic.schema import schema -#This should come early so that modules can log their initialization properly +# This should come early so that modules can log their initialization properly from .services.config import InvokeAIAppConfig from ..backend.util.logging import InvokeAILogger + app_config = InvokeAIAppConfig.get_config() app_config.parse_args() logger = InvokeAILogger.getLogger(config=app_config) @@ -27,7 +29,7 @@ from invokeai.version.invokeai_version import __version__ # we call this early so that the message appears before # other invokeai initialization messages if app_config.version: - print(f'InvokeAI version {__version__}') + print(f"InvokeAI version {__version__}") sys.exit(0) import invokeai.frontend.web as web_dir @@ -37,17 +39,18 @@ from .api.dependencies import ApiDependencies from .api.routers import sessions, models, images, boards, board_images, app_info from .api.sockets import SocketIO from .invocations.baseinvocation import BaseInvocation - + import torch import invokeai.backend.util.hotfixes + if torch.backends.mps.is_available(): import invokeai.backend.util.mps_fixes # fix for windows mimetypes registry entries being borked # see https://github.com/invoke-ai/InvokeAI/discussions/3684#discussioncomment-6391352 -mimetypes.add_type('application/javascript', '.js') -mimetypes.add_type('text/css', '.css') +mimetypes.add_type("application/javascript", ".js") +mimetypes.add_type("text/css", ".css") # Create the app # TODO: create this all in a method so configuration/etc. can be passed in? @@ -57,14 +60,13 @@ app = FastAPI(title="Invoke AI", docs_url=None, redoc_url=None) event_handler_id: int = id(app) app.add_middleware( EventHandlerASGIMiddleware, - handlers=[ - local_handler - ], # TODO: consider doing this in services to support different configurations + handlers=[local_handler], # TODO: consider doing this in services to support different configurations middleware_id=event_handler_id, ) socket_io = SocketIO(app) + # Add startup event to load dependencies @app.on_event("startup") async def startup_event(): @@ -76,9 +78,7 @@ async def startup_event(): allow_headers=app_config.allow_headers, ) - ApiDependencies.initialize( - config=app_config, event_handler_id=event_handler_id, logger=logger - ) + ApiDependencies.initialize(config=app_config, event_handler_id=event_handler_id, logger=logger) # Shut down threads @@ -103,7 +103,8 @@ app.include_router(boards.boards_router, prefix="/api") app.include_router(board_images.board_images_router, prefix="/api") -app.include_router(app_info.app_router, prefix='/api') +app.include_router(app_info.app_router, prefix="/api") + # Build a custom OpenAPI to include all outputs # TODO: can outputs be included on metadata of invocation schemas somehow? @@ -144,6 +145,7 @@ def custom_openapi(): invoker_schema["output"] = outputs_ref from invokeai.backend.model_management.models import get_model_config_enums + for model_config_format_enum in set(get_model_config_enums()): name = model_config_format_enum.__qualname__ @@ -166,7 +168,8 @@ def custom_openapi(): app.openapi = custom_openapi # Override API doc favicons -app.mount("/static", StaticFiles(directory=Path(web_dir.__path__[0], 'static/dream_web')), name="static") +app.mount("/static", StaticFiles(directory=Path(web_dir.__path__[0], "static/dream_web")), name="static") + @app.get("/docs", include_in_schema=False) def overridden_swagger(): @@ -187,11 +190,8 @@ def overridden_redoc(): # Must mount *after* the other routes else it borks em -app.mount("/", - StaticFiles(directory=Path(web_dir.__path__[0],"dist"), - html=True - ), name="ui" - ) +app.mount("/", StaticFiles(directory=Path(web_dir.__path__[0], "dist"), html=True), name="ui") + def invoke_api(): def find_port(port: int): @@ -204,15 +204,34 @@ def invoke_api(): else: return port + from invokeai.backend.install.check_root import check_invokeai_root + + check_invokeai_root(app_config) # note, may exit with an exception if root not set up + port = find_port(app_config.port) if port != app_config.port: logger.warn(f"Port {app_config.port} in use, using port {port}") + # Start our own event loop for eventing usage loop = asyncio.new_event_loop() - config = uvicorn.Config(app=app, host=app_config.host, port=port, loop=loop) - # Use access_log to turn off logging + config = uvicorn.Config( + app=app, + host=app_config.host, + port=port, + loop=loop, + log_level=app_config.log_level, + ) server = uvicorn.Server(config) + + # replace uvicorn's loggers with InvokeAI's for consistent appearance + for logname in ["uvicorn.access", "uvicorn"]: + l = logging.getLogger(logname) + l.handlers.clear() + for ch in logger.handlers: + l.addHandler(ch) + loop.run_until_complete(server.serve()) + if __name__ == "__main__": invoke_api() diff --git a/invokeai/assets/web/caution.png b/invokeai/app/assets/images/caution.png similarity index 100% rename from invokeai/assets/web/caution.png rename to invokeai/app/assets/images/caution.png diff --git a/invokeai/app/cli/commands.py b/invokeai/app/cli/commands.py index bffb2988dc..64ea6034fc 100644 --- a/invokeai/app/cli/commands.py +++ b/invokeai/app/cli/commands.py @@ -14,8 +14,14 @@ from ..services.graph import GraphExecutionState, LibraryGraph, Edge from ..services.invoker import Invoker -def add_field_argument(command_parser, name: str, field, default_override = None): - default = default_override if default_override is not None else field.default if field.default_factory is None else field.default_factory() +def add_field_argument(command_parser, name: str, field, default_override=None): + default = ( + default_override + if default_override is not None + else field.default + if field.default_factory is None + else field.default_factory() + ) if get_origin(field.type_) == Literal: allowed_values = get_args(field.type_) allowed_types = set() @@ -47,8 +53,8 @@ def add_parsers( commands: list[type], command_field: str = "type", exclude_fields: list[str] = ["id", "type"], - add_arguments: Union[Callable[[argparse.ArgumentParser], None],None] = None - ): + add_arguments: Union[Callable[[argparse.ArgumentParser], None], None] = None, +): """Adds parsers for each command to the subparsers""" # Create subparsers for each command @@ -61,7 +67,7 @@ def add_parsers( add_arguments(command_parser) # Convert all fields to arguments - fields = command.__fields__ # type: ignore + fields = command.__fields__ # type: ignore for name, field in fields.items(): if name in exclude_fields: continue @@ -70,13 +76,11 @@ def add_parsers( def add_graph_parsers( - subparsers, - graphs: list[LibraryGraph], - add_arguments: Union[Callable[[argparse.ArgumentParser], None], None] = None + subparsers, graphs: list[LibraryGraph], add_arguments: Union[Callable[[argparse.ArgumentParser], None], None] = None ): for graph in graphs: command_parser = subparsers.add_parser(graph.name, help=graph.description) - + if add_arguments is not None: add_arguments(command_parser) @@ -128,6 +132,7 @@ class CliContext: class ExitCli(Exception): """Exception to exit the CLI""" + pass @@ -155,7 +160,7 @@ class BaseCommand(ABC, BaseModel): @classmethod def get_commands_map(cls): # Get the type strings out of the literals and into a dictionary - return dict(map(lambda t: (get_args(get_type_hints(t)['type'])[0], t),BaseCommand.get_all_subclasses())) + return dict(map(lambda t: (get_args(get_type_hints(t)["type"])[0], t), BaseCommand.get_all_subclasses())) @abstractmethod def run(self, context: CliContext) -> None: @@ -165,7 +170,8 @@ class BaseCommand(ABC, BaseModel): class ExitCommand(BaseCommand): """Exits the CLI""" - type: Literal['exit'] = 'exit' + + type: Literal["exit"] = "exit" def run(self, context: CliContext) -> None: raise ExitCli() @@ -173,7 +179,8 @@ class ExitCommand(BaseCommand): class HelpCommand(BaseCommand): """Shows help""" - type: Literal['help'] = 'help' + + type: Literal["help"] = "help" def run(self, context: CliContext) -> None: context.parser.print_help() @@ -183,11 +190,7 @@ def get_graph_execution_history( graph_execution_state: GraphExecutionState, ) -> Iterable[str]: """Gets the history of fully-executed invocations for a graph execution""" - return ( - n - for n in reversed(graph_execution_state.executed_history) - if n in graph_execution_state.graph.nodes - ) + return (n for n in reversed(graph_execution_state.executed_history) if n in graph_execution_state.graph.nodes) def get_invocation_command(invocation) -> str: @@ -218,7 +221,8 @@ def get_invocation_command(invocation) -> str: class HistoryCommand(BaseCommand): """Shows the invocation history""" - type: Literal['history'] = 'history' + + type: Literal["history"] = "history" # Inputs # fmt: off @@ -235,7 +239,8 @@ class HistoryCommand(BaseCommand): class SetDefaultCommand(BaseCommand): """Sets a default value for a field""" - type: Literal['default'] = 'default' + + type: Literal["default"] = "default" # Inputs # fmt: off @@ -253,7 +258,8 @@ class SetDefaultCommand(BaseCommand): class DrawGraphCommand(BaseCommand): """Debugs a graph""" - type: Literal['draw_graph'] = 'draw_graph' + + type: Literal["draw_graph"] = "draw_graph" def run(self, context: CliContext) -> None: session: GraphExecutionState = context.invoker.services.graph_execution_manager.get(context.session.id) @@ -271,7 +277,8 @@ class DrawGraphCommand(BaseCommand): class DrawExecutionGraphCommand(BaseCommand): """Debugs an execution graph""" - type: Literal['draw_xgraph'] = 'draw_xgraph' + + type: Literal["draw_xgraph"] = "draw_xgraph" def run(self, context: CliContext) -> None: session: GraphExecutionState = context.invoker.services.graph_execution_manager.get(context.session.id) @@ -286,6 +293,7 @@ class DrawExecutionGraphCommand(BaseCommand): plt.axis("off") plt.show() + class SortedHelpFormatter(argparse.HelpFormatter): def _iter_indented_subactions(self, action): try: diff --git a/invokeai/app/cli/completer.py b/invokeai/app/cli/completer.py index 79274dab8c..fd10034dd7 100644 --- a/invokeai/app/cli/completer.py +++ b/invokeai/app/cli/completer.py @@ -19,8 +19,8 @@ from ..services.invocation_services import InvocationServices # singleton object, class variable completer = None + class Completer(object): - def __init__(self, model_manager: ModelManager): self.commands = self.get_commands() self.matches = None @@ -43,7 +43,7 @@ class Completer(object): except IndexError: pass options = options or list(self.parse_commands().keys()) - + if not text: # first time self.matches = options else: @@ -56,17 +56,17 @@ class Completer(object): return match @classmethod - def get_commands(self)->List[object]: + def get_commands(self) -> List[object]: """ Return a list of all the client commands and invocations. """ return BaseCommand.get_commands() + BaseInvocation.get_invocations() - def get_current_command(self, buffer: str)->tuple[str, str]: + def get_current_command(self, buffer: str) -> tuple[str, str]: """ Parse the readline buffer to find the most recent command and its switch. """ - if len(buffer)==0: + if len(buffer) == 0: return None, None tokens = shlex.split(buffer) command = None @@ -78,11 +78,11 @@ class Completer(object): else: switch = t # don't try to autocomplete switches that are already complete - if switch and buffer.endswith(' '): - switch=None - return command or '', switch or '' + if switch and buffer.endswith(" "): + switch = None + return command or "", switch or "" - def parse_commands(self)->Dict[str, List[str]]: + def parse_commands(self) -> Dict[str, List[str]]: """ Return a dict in which the keys are the command name and the values are the parameters the command takes. @@ -90,11 +90,11 @@ class Completer(object): result = dict() for command in self.commands: hints = get_type_hints(command) - name = get_args(hints['type'])[0] - result.update({name:hints}) + name = get_args(hints["type"])[0] + result.update({name: hints}) return result - def get_command_options(self, command: str, switch: str)->List[str]: + def get_command_options(self, command: str, switch: str) -> List[str]: """ Return all the parameters that can be passed to the command as command-line switches. Returns None if the command is unrecognized. @@ -102,42 +102,46 @@ class Completer(object): parsed_commands = self.parse_commands() if command not in parsed_commands: return None - + # handle switches in the format "-foo=bar" argument = None - if switch and '=' in switch: - switch, argument = switch.split('=') - - parameter = switch.strip('-') + if switch and "=" in switch: + switch, argument = switch.split("=") + + parameter = switch.strip("-") if parameter in parsed_commands[command]: if argument is None: return self.get_parameter_options(parameter, parsed_commands[command][parameter]) else: - return [f"--{parameter}={x}" for x in self.get_parameter_options(parameter, parsed_commands[command][parameter])] + return [ + f"--{parameter}={x}" + for x in self.get_parameter_options(parameter, parsed_commands[command][parameter]) + ] else: return [f"--{x}" for x in parsed_commands[command].keys()] - def get_parameter_options(self, parameter: str, typehint)->List[str]: + def get_parameter_options(self, parameter: str, typehint) -> List[str]: """ Given a parameter type (such as Literal), offers autocompletions. """ if get_origin(typehint) == Literal: return get_args(typehint) - if parameter == 'model': + if parameter == "model": return self.manager.model_names() - + def _pre_input_hook(self): if self.linebuffer: readline.insert_text(self.linebuffer) readline.redisplay() self.linebuffer = None - + + def set_autocompleter(services: InvocationServices) -> Completer: global completer - + if completer: return completer - + completer = Completer(services.model_manager) readline.set_completer(completer.complete) @@ -162,8 +166,6 @@ def set_autocompleter(services: InvocationServices) -> Completer: pass except OSError: # file likely corrupted newname = f"{histfile}.old" - logger.error( - f"Your history file {histfile} couldn't be loaded and may be corrupted. Renaming it to {newname}" - ) + logger.error(f"Your history file {histfile} couldn't be loaded and may be corrupted. Renaming it to {newname}") histfile.replace(Path(newname)) atexit.register(readline.write_history_file, histfile) diff --git a/invokeai/app/cli_app.py b/invokeai/app/cli_app.py index 341e9e5b7e..bad95bb559 100644 --- a/invokeai/app/cli_app.py +++ b/invokeai/app/cli_app.py @@ -13,6 +13,7 @@ from pydantic.fields import Field # This should come early so that the logger can pick up its configuration options from .services.config import InvokeAIAppConfig from invokeai.backend.util.logging import InvokeAILogger + config = InvokeAIAppConfig.get_config() config.parse_args() logger = InvokeAILogger().getLogger(config=config) @@ -20,7 +21,7 @@ from invokeai.version.invokeai_version import __version__ # we call this early so that the message appears before other invokeai initialization messages if config.version: - print(f'InvokeAI version {__version__}') + print(f"InvokeAI version {__version__}") sys.exit(0) from invokeai.app.services.board_image_record_storage import ( @@ -36,18 +37,21 @@ from invokeai.app.services.image_record_storage import SqliteImageRecordStorage from invokeai.app.services.images import ImageService, ImageServiceDependencies from invokeai.app.services.resource_name import SimpleNameService from invokeai.app.services.urls import LocalUrlService -from .services.default_graphs import (default_text_to_image_graph_id, - create_system_graphs) +from .services.default_graphs import default_text_to_image_graph_id, create_system_graphs from .services.latent_storage import DiskLatentsStorage, ForwardCacheLatentsStorage -from .cli.commands import (BaseCommand, CliContext, ExitCli, - SortedHelpFormatter, add_graph_parsers, add_parsers) +from .cli.commands import BaseCommand, CliContext, ExitCli, SortedHelpFormatter, add_graph_parsers, add_parsers from .cli.completer import set_autocompleter from .invocations.baseinvocation import BaseInvocation from .services.events import EventServiceBase -from .services.graph import (Edge, EdgeConnection, GraphExecutionState, - GraphInvocation, LibraryGraph, - are_connection_types_compatible) +from .services.graph import ( + Edge, + EdgeConnection, + GraphExecutionState, + GraphInvocation, + LibraryGraph, + are_connection_types_compatible, +) from .services.image_file_storage import DiskImageFileStorage from .services.invocation_queue import MemoryInvocationQueue from .services.invocation_services import InvocationServices @@ -58,6 +62,7 @@ from .services.sqlite import SqliteItemStorage import torch import invokeai.backend.util.hotfixes + if torch.backends.mps.is_available(): import invokeai.backend.util.mps_fixes @@ -69,6 +74,7 @@ class CliCommand(BaseModel): class InvalidArgs(Exception): pass + def add_invocation_args(command_parser): # Add linking capability command_parser.add_argument( @@ -113,7 +119,7 @@ def get_command_parser(services: InvocationServices) -> argparse.ArgumentParser: return parser -class NodeField(): +class NodeField: alias: str node_path: str field: str @@ -126,15 +132,20 @@ class NodeField(): self.field_type = field_type -def fields_from_type_hints(hints: dict[str, type], node_path: str) -> dict[str,NodeField]: - return {k:NodeField(alias=k, node_path=node_path, field=k, field_type=v) for k, v in hints.items()} +def fields_from_type_hints(hints: dict[str, type], node_path: str) -> dict[str, NodeField]: + return {k: NodeField(alias=k, node_path=node_path, field=k, field_type=v) for k, v in hints.items()} def get_node_input_field(graph: LibraryGraph, field_alias: str, node_id: str) -> NodeField: """Gets the node field for the specified field alias""" exposed_input = next(e for e in graph.exposed_inputs if e.alias == field_alias) node_type = type(graph.graph.get_node(exposed_input.node_path)) - return NodeField(alias=exposed_input.alias, node_path=f'{node_id}.{exposed_input.node_path}', field=exposed_input.field, field_type=get_type_hints(node_type)[exposed_input.field]) + return NodeField( + alias=exposed_input.alias, + node_path=f"{node_id}.{exposed_input.node_path}", + field=exposed_input.field, + field_type=get_type_hints(node_type)[exposed_input.field], + ) def get_node_output_field(graph: LibraryGraph, field_alias: str, node_id: str) -> NodeField: @@ -142,7 +153,12 @@ def get_node_output_field(graph: LibraryGraph, field_alias: str, node_id: str) - exposed_output = next(e for e in graph.exposed_outputs if e.alias == field_alias) node_type = type(graph.graph.get_node(exposed_output.node_path)) node_output_type = node_type.get_output_type() - return NodeField(alias=exposed_output.alias, node_path=f'{node_id}.{exposed_output.node_path}', field=exposed_output.field, field_type=get_type_hints(node_output_type)[exposed_output.field]) + return NodeField( + alias=exposed_output.alias, + node_path=f"{node_id}.{exposed_output.node_path}", + field=exposed_output.field, + field_type=get_type_hints(node_output_type)[exposed_output.field], + ) def get_node_inputs(invocation: BaseInvocation, context: CliContext) -> dict[str, NodeField]: @@ -165,9 +181,7 @@ def get_node_outputs(invocation: BaseInvocation, context: CliContext) -> dict[st return {e.alias: get_node_output_field(graph, e.alias, invocation.id) for e in graph.exposed_outputs} -def generate_matching_edges( - a: BaseInvocation, b: BaseInvocation, context: CliContext -) -> list[Edge]: +def generate_matching_edges(a: BaseInvocation, b: BaseInvocation, context: CliContext) -> list[Edge]: """Generates all possible edges between two invocations""" afields = get_node_outputs(a, context) bfields = get_node_inputs(b, context) @@ -179,12 +193,14 @@ def generate_matching_edges( matching_fields = matching_fields.difference(invalid_fields) # Validate types - matching_fields = [f for f in matching_fields if are_connection_types_compatible(afields[f].field_type, bfields[f].field_type)] + matching_fields = [ + f for f in matching_fields if are_connection_types_compatible(afields[f].field_type, bfields[f].field_type) + ] edges = [ Edge( source=EdgeConnection(node_id=afields[alias].node_path, field=afields[alias].field), - destination=EdgeConnection(node_id=bfields[alias].node_path, field=bfields[alias].field) + destination=EdgeConnection(node_id=bfields[alias].node_path, field=bfields[alias].field), ) for alias in matching_fields ] @@ -193,6 +209,7 @@ def generate_matching_edges( class SessionError(Exception): """Raised when a session error has occurred""" + pass @@ -209,22 +226,23 @@ def invoke_all(context: CliContext): context.invoker.services.logger.error( f"Error in node {n} (source node {context.session.prepared_source_mapping[n]}): {context.session.errors[n]}" ) - + raise SessionError() + def invoke_cli(): - logger.info(f'InvokeAI version {__version__}') + logger.info(f"InvokeAI version {__version__}") # get the optional list of invocations to execute on the command line parser = config.get_parser() - parser.add_argument('commands',nargs='*') + parser.add_argument("commands", nargs="*") invocation_commands = parser.parse_args().commands # get the optional file to read commands from. # Simplest is to use it for STDIN if infile := config.from_file: - sys.stdin = open(infile,"r") - - model_manager = ModelManagerService(config,logger) + sys.stdin = open(infile, "r") + + model_manager = ModelManagerService(config, logger) events = EventServiceBase() output_folder = config.output_path @@ -234,13 +252,13 @@ def invoke_cli(): db_location = ":memory:" else: db_location = config.db_path - db_location.parent.mkdir(parents=True,exist_ok=True) + db_location.parent.mkdir(parents=True, exist_ok=True) logger.info(f'InvokeAI database location is "{db_location}"') graph_execution_manager = SqliteItemStorage[GraphExecutionState]( - filename=db_location, table_name="graph_executions" - ) + filename=db_location, table_name="graph_executions" + ) urls = LocalUrlService() image_record_storage = SqliteImageRecordStorage(db_location) @@ -281,24 +299,21 @@ def invoke_cli(): graph_execution_manager=graph_execution_manager, ) ) - + services = InvocationServices( model_manager=model_manager, events=events, - latents = ForwardCacheLatentsStorage(DiskLatentsStorage(f'{output_folder}/latents')), + latents=ForwardCacheLatentsStorage(DiskLatentsStorage(f"{output_folder}/latents")), images=images, boards=boards, board_images=board_images, queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph]( - filename=db_location, table_name="graphs" - ), + graph_library=SqliteItemStorage[LibraryGraph](filename=db_location, table_name="graphs"), graph_execution_manager=graph_execution_manager, processor=DefaultInvocationProcessor(), logger=logger, configuration=config, ) - system_graphs = create_system_graphs(services.graph_library) system_graph_names = set([g.name for g in system_graphs]) @@ -308,7 +323,7 @@ def invoke_cli(): session: GraphExecutionState = invoker.create_execution_state() parser = get_command_parser(services) - re_negid = re.compile('^-[0-9]+$') + re_negid = re.compile("^-[0-9]+$") # Uncomment to print out previous sessions at startup # print(services.session_manager.list()) @@ -318,7 +333,7 @@ def invoke_cli(): command_line_args_exist = len(invocation_commands) > 0 done = False - + while not done: try: if command_line_args_exist: @@ -332,7 +347,7 @@ def invoke_cli(): try: # Refresh the state of the session - #history = list(get_graph_execution_history(context.session)) + # history = list(get_graph_execution_history(context.session)) history = list(reversed(context.nodes_added)) # Split the command for piping @@ -353,17 +368,17 @@ def invoke_cli(): args[field_name] = field_default # Parse invocation - command: CliCommand = None # type:ignore + command: CliCommand = None # type:ignore system_graph: Optional[LibraryGraph] = None - if args['type'] in system_graph_names: - system_graph = next(filter(lambda g: g.name == args['type'], system_graphs)) + if args["type"] in system_graph_names: + system_graph = next(filter(lambda g: g.name == args["type"], system_graphs)) invocation = GraphInvocation(graph=system_graph.graph, id=str(current_id)) for exposed_input in system_graph.exposed_inputs: if exposed_input.alias in args: node = invocation.graph.get_node(exposed_input.node_path) field = exposed_input.field setattr(node, field, args[exposed_input.alias]) - command = CliCommand(command = invocation) + command = CliCommand(command=invocation) context.graph_nodes[invocation.id] = system_graph.id else: args["id"] = current_id @@ -385,17 +400,13 @@ def invoke_cli(): # Pipe previous command output (if there was a previous command) edges: list[Edge] = list() if len(history) > 0 or current_id != start_id: - from_id = ( - history[0] if current_id == start_id else str(current_id - 1) - ) + from_id = history[0] if current_id == start_id else str(current_id - 1) from_node = ( next(filter(lambda n: n[0].id == from_id, new_invocations))[0] if current_id != start_id else context.session.graph.get_node(from_id) ) - matching_edges = generate_matching_edges( - from_node, command.command, context - ) + matching_edges = generate_matching_edges(from_node, command.command, context) edges.extend(matching_edges) # Parse provided links @@ -406,16 +417,18 @@ def invoke_cli(): node_id = str(current_id + int(node_id)) link_node = context.session.graph.get_node(node_id) - matching_edges = generate_matching_edges( - link_node, command.command, context - ) + matching_edges = generate_matching_edges(link_node, command.command, context) matching_destinations = [e.destination for e in matching_edges] edges = [e for e in edges if e.destination not in matching_destinations] edges.extend(matching_edges) if "link" in args and args["link"]: for link in args["link"]: - edges = [e for e in edges if e.destination.node_id != command.command.id or e.destination.field != link[2]] + edges = [ + e + for e in edges + if e.destination.node_id != command.command.id or e.destination.field != link[2] + ] node_id = link[0] if re_negid.match(node_id): @@ -428,7 +441,7 @@ def invoke_cli(): edges.append( Edge( source=EdgeConnection(node_id=node_output.node_path, field=node_output.field), - destination=EdgeConnection(node_id=node_input.node_path, field=node_input.field) + destination=EdgeConnection(node_id=node_input.node_path, field=node_input.field), ) ) diff --git a/invokeai/app/invocations/__init__.py b/invokeai/app/invocations/__init__.py index 0a451ff618..6407a1cdee 100644 --- a/invokeai/app/invocations/__init__.py +++ b/invokeai/app/invocations/__init__.py @@ -4,9 +4,5 @@ __all__ = [] dirname = os.path.dirname(os.path.abspath(__file__)) for f in os.listdir(dirname): - if ( - f != "__init__.py" - and os.path.isfile("%s/%s" % (dirname, f)) - and f[-3:] == ".py" - ): + if f != "__init__.py" and os.path.isfile("%s/%s" % (dirname, f)) and f[-3:] == ".py": __all__.append(f[:-3]) diff --git a/invokeai/app/invocations/baseinvocation.py b/invokeai/app/invocations/baseinvocation.py index 4c7314bd2b..758ab2e787 100644 --- a/invokeai/app/invocations/baseinvocation.py +++ b/invokeai/app/invocations/baseinvocation.py @@ -4,8 +4,7 @@ from __future__ import annotations from abc import ABC, abstractmethod from inspect import signature -from typing import (TYPE_CHECKING, Dict, List, Literal, TypedDict, get_args, - get_type_hints) +from typing import TYPE_CHECKING, Dict, List, Literal, TypedDict, get_args, get_type_hints from pydantic import BaseConfig, BaseModel, Field diff --git a/invokeai/app/invocations/collections.py b/invokeai/app/invocations/collections.py index 5446757eb0..01c003da96 100644 --- a/invokeai/app/invocations/collections.py +++ b/invokeai/app/invocations/collections.py @@ -8,8 +8,7 @@ from pydantic import Field, validator from invokeai.app.models.image import ImageField from invokeai.app.util.misc import SEED_MAX, get_random_seed -from .baseinvocation import (BaseInvocation, BaseInvocationOutput, - InvocationConfig, InvocationContext, UIConfig) +from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext, UIConfig class IntCollectionOutput(BaseInvocationOutput): @@ -27,8 +26,7 @@ class FloatCollectionOutput(BaseInvocationOutput): type: Literal["float_collection"] = "float_collection" # Outputs - collection: list[float] = Field( - default=[], description="The float collection") + collection: list[float] = Field(default=[], description="The float collection") class ImageCollectionOutput(BaseInvocationOutput): @@ -37,8 +35,7 @@ class ImageCollectionOutput(BaseInvocationOutput): type: Literal["image_collection"] = "image_collection" # Outputs - collection: list[ImageField] = Field( - default=[], description="The output images") + collection: list[ImageField] = Field(default=[], description="The output images") class Config: schema_extra = {"required": ["type", "collection"]} @@ -56,10 +53,7 @@ class RangeInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Range", - "tags": ["range", "integer", "collection"] - }, + "ui": {"title": "Range", "tags": ["range", "integer", "collection"]}, } @validator("stop") @@ -69,9 +63,7 @@ class RangeInvocation(BaseInvocation): return v def invoke(self, context: InvocationContext) -> IntCollectionOutput: - return IntCollectionOutput( - collection=list(range(self.start, self.stop, self.step)) - ) + return IntCollectionOutput(collection=list(range(self.start, self.stop, self.step))) class RangeOfSizeInvocation(BaseInvocation): @@ -86,18 +78,11 @@ class RangeOfSizeInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Sized Range", - "tags": ["range", "integer", "size", "collection"] - }, + "ui": {"title": "Sized Range", "tags": ["range", "integer", "size", "collection"]}, } def invoke(self, context: InvocationContext) -> IntCollectionOutput: - return IntCollectionOutput( - collection=list( - range( - self.start, self.start + self.size, - self.step))) + return IntCollectionOutput(collection=list(range(self.start, self.start + self.size, self.step))) class RandomRangeInvocation(BaseInvocation): @@ -107,9 +92,7 @@ class RandomRangeInvocation(BaseInvocation): # Inputs low: int = Field(default=0, description="The inclusive low value") - high: int = Field( - default=np.iinfo(np.int32).max, description="The exclusive high value" - ) + high: int = Field(default=np.iinfo(np.int32).max, description="The exclusive high value") size: int = Field(default=1, description="The number of values to generate") seed: int = Field( ge=0, @@ -120,19 +103,12 @@ class RandomRangeInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Random Range", - "tags": ["range", "integer", "random", "collection"] - }, + "ui": {"title": "Random Range", "tags": ["range", "integer", "random", "collection"]}, } def invoke(self, context: InvocationContext) -> IntCollectionOutput: rng = np.random.default_rng(self.seed) - return IntCollectionOutput( - collection=list( - rng.integers( - low=self.low, high=self.high, - size=self.size))) + return IntCollectionOutput(collection=list(rng.integers(low=self.low, high=self.high, size=self.size))) class ImageCollectionInvocation(BaseInvocation): diff --git a/invokeai/app/invocations/compel.py b/invokeai/app/invocations/compel.py index 6aadbf509d..fb29e01628 100644 --- a/invokeai/app/invocations/compel.py +++ b/invokeai/app/invocations/compel.py @@ -3,64 +3,63 @@ from pydantic import BaseModel, Field import re import torch from compel import Compel, ReturnedEmbeddingsType -from compel.prompt_parser import (Blend, Conjunction, - CrossAttentionControlSubstitute, - FlattenedPrompt, Fragment) +from compel.prompt_parser import Blend, Conjunction, CrossAttentionControlSubstitute, FlattenedPrompt, Fragment from ...backend.util.devices import torch_dtype from ...backend.model_management import ModelType from ...backend.model_management.models import ModelNotFoundException from ...backend.model_management.lora import ModelPatcher from ...backend.stable_diffusion.diffusion import InvokeAIDiffuserComponent -from .baseinvocation import (BaseInvocation, BaseInvocationOutput, - InvocationConfig, InvocationContext) +from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext from .model import ClipField from dataclasses import dataclass class ConditioningField(BaseModel): - conditioning_name: Optional[str] = Field( - default=None, description="The name of conditioning data") + conditioning_name: Optional[str] = Field(default=None, description="The name of conditioning data") class Config: schema_extra = {"required": ["conditioning_name"]} + @dataclass class BasicConditioningInfo: - #type: Literal["basic_conditioning"] = "basic_conditioning" + # type: Literal["basic_conditioning"] = "basic_conditioning" embeds: torch.Tensor extra_conditioning: Optional[InvokeAIDiffuserComponent.ExtraConditioningInfo] # weight: float # mode: ConditioningAlgo + @dataclass class SDXLConditioningInfo(BasicConditioningInfo): - #type: Literal["sdxl_conditioning"] = "sdxl_conditioning" + # type: Literal["sdxl_conditioning"] = "sdxl_conditioning" pooled_embeds: torch.Tensor add_time_ids: torch.Tensor -ConditioningInfoType = Annotated[ - Union[BasicConditioningInfo, SDXLConditioningInfo], - Field(discriminator="type") -] + +ConditioningInfoType = Annotated[Union[BasicConditioningInfo, SDXLConditioningInfo], Field(discriminator="type")] + @dataclass class ConditioningFieldData: conditionings: List[Union[BasicConditioningInfo, SDXLConditioningInfo]] - #unconditioned: Optional[torch.Tensor] + # unconditioned: Optional[torch.Tensor] -#class ConditioningAlgo(str, Enum): + +# class ConditioningAlgo(str, Enum): # Compose = "compose" # ComposeEx = "compose_ex" # PerpNeg = "perp_neg" + class CompelOutput(BaseInvocationOutput): """Compel parser output""" - #fmt: off + # fmt: off type: Literal["compel_output"] = "compel_output" conditioning: ConditioningField = Field(default=None, description="Conditioning") - #fmt: on + # fmt: on class CompelInvocation(BaseInvocation): @@ -74,33 +73,28 @@ class CompelInvocation(BaseInvocation): # Schema customisation class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Prompt (Compel)", - "tags": ["prompt", "compel"], - "type_hints": { - "model": "model" - } - }, + "ui": {"title": "Prompt (Compel)", "tags": ["prompt", "compel"], "type_hints": {"model": "model"}}, } @torch.no_grad() def invoke(self, context: InvocationContext) -> CompelOutput: tokenizer_info = context.services.model_manager.get_model( - **self.clip.tokenizer.dict(), context=context, + **self.clip.tokenizer.dict(), + context=context, ) text_encoder_info = context.services.model_manager.get_model( - **self.clip.text_encoder.dict(), context=context, + **self.clip.text_encoder.dict(), + context=context, ) def _lora_loader(): for lora in self.clip.loras: - lora_info = context.services.model_manager.get_model( - **lora.dict(exclude={"weight"}), context=context) + lora_info = context.services.model_manager.get_model(**lora.dict(exclude={"weight"}), context=context) yield (lora_info.context.model, lora.weight) del lora_info return - #loras = [(context.services.model_manager.get_model(**lora.dict(exclude={"weight"})).context.model, lora.weight) for lora in self.clip.loras] + # loras = [(context.services.model_manager.get_model(**lora.dict(exclude={"weight"})).context.model, lora.weight) for lora in self.clip.loras] ti_list = [] for trigger in re.findall(r"<[a-zA-Z0-9., _-]+>", self.prompt): @@ -116,15 +110,18 @@ class CompelInvocation(BaseInvocation): ) except ModelNotFoundException: # print(e) - #import traceback - #print(traceback.format_exc()) - print(f"Warn: trigger: \"{trigger}\" not found") - - with ModelPatcher.apply_lora_text_encoder(text_encoder_info.context.model, _lora_loader()),\ - ModelPatcher.apply_ti(tokenizer_info.context.model, text_encoder_info.context.model, ti_list) as (tokenizer, ti_manager),\ - ModelPatcher.apply_clip_skip(text_encoder_info.context.model, self.clip.skipped_layers),\ - text_encoder_info as text_encoder: + # import traceback + # print(traceback.format_exc()) + print(f'Warn: trigger: "{trigger}" not found') + with ModelPatcher.apply_lora_text_encoder( + text_encoder_info.context.model, _lora_loader() + ), ModelPatcher.apply_ti(tokenizer_info.context.model, text_encoder_info.context.model, ti_list) as ( + tokenizer, + ti_manager, + ), ModelPatcher.apply_clip_skip( + text_encoder_info.context.model, self.clip.skipped_layers + ), text_encoder_info as text_encoder: compel = Compel( tokenizer=tokenizer, text_encoder=text_encoder, @@ -139,14 +136,12 @@ class CompelInvocation(BaseInvocation): if context.services.configuration.log_tokenization: log_tokenization_for_prompt_object(prompt, tokenizer) - c, options = compel.build_conditioning_tensor_for_prompt_object( - prompt) + c, options = compel.build_conditioning_tensor_for_prompt_object(prompt) ec = InvokeAIDiffuserComponent.ExtraConditioningInfo( - tokens_count_including_eos_bos=get_max_token_count( - tokenizer, conjunction), - cross_attention_control_args=options.get( - "cross_attention_control", None),) + tokens_count_including_eos_bos=get_max_token_count(tokenizer, conjunction), + cross_attention_control_args=options.get("cross_attention_control", None), + ) c = c.detach().to("cpu") @@ -168,24 +163,26 @@ class CompelInvocation(BaseInvocation): ), ) + class SDXLPromptInvocationBase: def run_clip_raw(self, context, clip_field, prompt, get_pooled): tokenizer_info = context.services.model_manager.get_model( - **clip_field.tokenizer.dict(), context=context, + **clip_field.tokenizer.dict(), + context=context, ) text_encoder_info = context.services.model_manager.get_model( - **clip_field.text_encoder.dict(), context=context, + **clip_field.text_encoder.dict(), + context=context, ) def _lora_loader(): for lora in clip_field.loras: - lora_info = context.services.model_manager.get_model( - **lora.dict(exclude={"weight"}), context=context) + lora_info = context.services.model_manager.get_model(**lora.dict(exclude={"weight"}), context=context) yield (lora_info.context.model, lora.weight) del lora_info return - #loras = [(context.services.model_manager.get_model(**lora.dict(exclude={"weight"})).context.model, lora.weight) for lora in self.clip.loras] + # loras = [(context.services.model_manager.get_model(**lora.dict(exclude={"weight"})).context.model, lora.weight) for lora in self.clip.loras] ti_list = [] for trigger in re.findall(r"<[a-zA-Z0-9., _-]+>", prompt): @@ -201,15 +198,18 @@ class SDXLPromptInvocationBase: ) except ModelNotFoundException: # print(e) - #import traceback - #print(traceback.format_exc()) - print(f"Warn: trigger: \"{trigger}\" not found") - - with ModelPatcher.apply_lora_text_encoder(text_encoder_info.context.model, _lora_loader()),\ - ModelPatcher.apply_ti(tokenizer_info.context.model, text_encoder_info.context.model, ti_list) as (tokenizer, ti_manager),\ - ModelPatcher.apply_clip_skip(text_encoder_info.context.model, clip_field.skipped_layers),\ - text_encoder_info as text_encoder: + # import traceback + # print(traceback.format_exc()) + print(f'Warn: trigger: "{trigger}" not found') + with ModelPatcher.apply_lora_text_encoder( + text_encoder_info.context.model, _lora_loader() + ), ModelPatcher.apply_ti(tokenizer_info.context.model, text_encoder_info.context.model, ti_list) as ( + tokenizer, + ti_manager, + ), ModelPatcher.apply_clip_skip( + text_encoder_info.context.model, clip_field.skipped_layers + ), text_encoder_info as text_encoder: text_inputs = tokenizer( prompt, padding="max_length", @@ -241,21 +241,22 @@ class SDXLPromptInvocationBase: def run_clip_compel(self, context, clip_field, prompt, get_pooled): tokenizer_info = context.services.model_manager.get_model( - **clip_field.tokenizer.dict(), context=context, + **clip_field.tokenizer.dict(), + context=context, ) text_encoder_info = context.services.model_manager.get_model( - **clip_field.text_encoder.dict(), context=context, + **clip_field.text_encoder.dict(), + context=context, ) def _lora_loader(): for lora in clip_field.loras: - lora_info = context.services.model_manager.get_model( - **lora.dict(exclude={"weight"}), context=context) + lora_info = context.services.model_manager.get_model(**lora.dict(exclude={"weight"}), context=context) yield (lora_info.context.model, lora.weight) del lora_info return - #loras = [(context.services.model_manager.get_model(**lora.dict(exclude={"weight"})).context.model, lora.weight) for lora in self.clip.loras] + # loras = [(context.services.model_manager.get_model(**lora.dict(exclude={"weight"})).context.model, lora.weight) for lora in self.clip.loras] ti_list = [] for trigger in re.findall(r"<[a-zA-Z0-9., _-]+>", prompt): @@ -271,22 +272,25 @@ class SDXLPromptInvocationBase: ) except ModelNotFoundException: # print(e) - #import traceback - #print(traceback.format_exc()) - print(f"Warn: trigger: \"{trigger}\" not found") - - with ModelPatcher.apply_lora_text_encoder(text_encoder_info.context.model, _lora_loader()),\ - ModelPatcher.apply_ti(tokenizer_info.context.model, text_encoder_info.context.model, ti_list) as (tokenizer, ti_manager),\ - ModelPatcher.apply_clip_skip(text_encoder_info.context.model, clip_field.skipped_layers),\ - text_encoder_info as text_encoder: + # import traceback + # print(traceback.format_exc()) + print(f'Warn: trigger: "{trigger}" not found') + with ModelPatcher.apply_lora_text_encoder( + text_encoder_info.context.model, _lora_loader() + ), ModelPatcher.apply_ti(tokenizer_info.context.model, text_encoder_info.context.model, ti_list) as ( + tokenizer, + ti_manager, + ), ModelPatcher.apply_clip_skip( + text_encoder_info.context.model, clip_field.skipped_layers + ), text_encoder_info as text_encoder: compel = Compel( tokenizer=tokenizer, text_encoder=text_encoder, textual_inversion_manager=ti_manager, dtype_for_device_getter=torch_dtype, truncate_long_prompts=True, # TODO: - returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED, # TODO: clip skip + returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED, # TODO: clip skip requires_pooled=True, ) @@ -320,6 +324,7 @@ class SDXLPromptInvocationBase: return c, c_pooled, ec + class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): """Parse prompt using compel package to conditioning.""" @@ -339,13 +344,7 @@ class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): # Schema customisation class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "SDXL Prompt (Compel)", - "tags": ["prompt", "compel"], - "type_hints": { - "model": "model" - } - }, + "ui": {"title": "SDXL Prompt (Compel)", "tags": ["prompt", "compel"], "type_hints": {"model": "model"}}, } @torch.no_grad() @@ -360,9 +359,7 @@ class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): crop_coords = (self.crop_top, self.crop_left) target_size = (self.target_height, self.target_width) - add_time_ids = torch.tensor([ - original_size + crop_coords + target_size - ]) + add_time_ids = torch.tensor([original_size + crop_coords + target_size]) conditioning_data = ConditioningFieldData( conditionings=[ @@ -384,12 +381,13 @@ class SDXLCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): ), ) + class SDXLRefinerCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): """Parse prompt using compel package to conditioning.""" type: Literal["sdxl_refiner_compel_prompt"] = "sdxl_refiner_compel_prompt" - style: str = Field(default="", description="Style prompt") # TODO: ? + style: str = Field(default="", description="Style prompt") # TODO: ? original_width: int = Field(1024, description="") original_height: int = Field(1024, description="") crop_top: int = Field(0, description="") @@ -403,9 +401,7 @@ class SDXLRefinerCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase "ui": { "title": "SDXL Refiner Prompt (Compel)", "tags": ["prompt", "compel"], - "type_hints": { - "model": "model" - } + "type_hints": {"model": "model"}, }, } @@ -416,9 +412,7 @@ class SDXLRefinerCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase original_size = (self.original_height, self.original_width) crop_coords = (self.crop_top, self.crop_left) - add_time_ids = torch.tensor([ - original_size + crop_coords + (self.aesthetic_score,) - ]) + add_time_ids = torch.tensor([original_size + crop_coords + (self.aesthetic_score,)]) conditioning_data = ConditioningFieldData( conditionings=[ @@ -426,7 +420,7 @@ class SDXLRefinerCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase embeds=c2, pooled_embeds=c2_pooled, add_time_ids=add_time_ids, - extra_conditioning=ec2, # or None + extra_conditioning=ec2, # or None ) ] ) @@ -440,6 +434,7 @@ class SDXLRefinerCompelPromptInvocation(BaseInvocation, SDXLPromptInvocationBase ), ) + class SDXLRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): """Pass unmodified prompt to conditioning without compel processing.""" @@ -459,13 +454,7 @@ class SDXLRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): # Schema customisation class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "SDXL Prompt (Raw)", - "tags": ["prompt", "compel"], - "type_hints": { - "model": "model" - } - }, + "ui": {"title": "SDXL Prompt (Raw)", "tags": ["prompt", "compel"], "type_hints": {"model": "model"}}, } @torch.no_grad() @@ -480,9 +469,7 @@ class SDXLRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): crop_coords = (self.crop_top, self.crop_left) target_size = (self.target_height, self.target_width) - add_time_ids = torch.tensor([ - original_size + crop_coords + target_size - ]) + add_time_ids = torch.tensor([original_size + crop_coords + target_size]) conditioning_data = ConditioningFieldData( conditionings=[ @@ -504,12 +491,13 @@ class SDXLRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): ), ) + class SDXLRefinerRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): """Parse prompt using compel package to conditioning.""" type: Literal["sdxl_refiner_raw_prompt"] = "sdxl_refiner_raw_prompt" - style: str = Field(default="", description="Style prompt") # TODO: ? + style: str = Field(default="", description="Style prompt") # TODO: ? original_width: int = Field(1024, description="") original_height: int = Field(1024, description="") crop_top: int = Field(0, description="") @@ -523,9 +511,7 @@ class SDXLRefinerRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): "ui": { "title": "SDXL Refiner Prompt (Raw)", "tags": ["prompt", "compel"], - "type_hints": { - "model": "model" - } + "type_hints": {"model": "model"}, }, } @@ -536,9 +522,7 @@ class SDXLRefinerRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): original_size = (self.original_height, self.original_width) crop_coords = (self.crop_top, self.crop_left) - add_time_ids = torch.tensor([ - original_size + crop_coords + (self.aesthetic_score,) - ]) + add_time_ids = torch.tensor([original_size + crop_coords + (self.aesthetic_score,)]) conditioning_data = ConditioningFieldData( conditionings=[ @@ -546,7 +530,7 @@ class SDXLRefinerRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): embeds=c2, pooled_embeds=c2_pooled, add_time_ids=add_time_ids, - extra_conditioning=ec2, # or None + extra_conditioning=ec2, # or None ) ] ) @@ -563,11 +547,14 @@ class SDXLRefinerRawPromptInvocation(BaseInvocation, SDXLPromptInvocationBase): class ClipSkipInvocationOutput(BaseInvocationOutput): """Clip skip node output""" + type: Literal["clip_skip_output"] = "clip_skip_output" clip: ClipField = Field(None, description="Clip with skipped layers") + class ClipSkipInvocation(BaseInvocation): """Skip layers in clip text_encoder model.""" + type: Literal["clip_skip"] = "clip_skip" clip: ClipField = Field(None, description="Clip to use") @@ -575,10 +562,7 @@ class ClipSkipInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "CLIP Skip", - "tags": ["clip", "skip"] - }, + "ui": {"title": "CLIP Skip", "tags": ["clip", "skip"]}, } def invoke(self, context: InvocationContext) -> ClipSkipInvocationOutput: @@ -589,46 +573,26 @@ class ClipSkipInvocation(BaseInvocation): def get_max_token_count( - tokenizer, prompt: Union[FlattenedPrompt, Blend, Conjunction], - truncate_if_too_long=False) -> int: + tokenizer, prompt: Union[FlattenedPrompt, Blend, Conjunction], truncate_if_too_long=False +) -> int: if type(prompt) is Blend: blend: Blend = prompt - return max( - [ - get_max_token_count(tokenizer, p, truncate_if_too_long) - for p in blend.prompts - ] - ) + return max([get_max_token_count(tokenizer, p, truncate_if_too_long) for p in blend.prompts]) elif type(prompt) is Conjunction: conjunction: Conjunction = prompt - return sum( - [ - get_max_token_count(tokenizer, p, truncate_if_too_long) - for p in conjunction.prompts - ] - ) + return sum([get_max_token_count(tokenizer, p, truncate_if_too_long) for p in conjunction.prompts]) else: - return len( - get_tokens_for_prompt_object( - tokenizer, prompt, truncate_if_too_long)) + return len(get_tokens_for_prompt_object(tokenizer, prompt, truncate_if_too_long)) -def get_tokens_for_prompt_object( - tokenizer, parsed_prompt: FlattenedPrompt, truncate_if_too_long=True -) -> List[str]: +def get_tokens_for_prompt_object(tokenizer, parsed_prompt: FlattenedPrompt, truncate_if_too_long=True) -> List[str]: if type(parsed_prompt) is Blend: - raise ValueError( - "Blend is not supported here - you need to get tokens for each of its .children" - ) + raise ValueError("Blend is not supported here - you need to get tokens for each of its .children") text_fragments = [ x.text if type(x) is Fragment - else ( - " ".join([f.text for f in x.original]) - if type(x) is CrossAttentionControlSubstitute - else str(x) - ) + else (" ".join([f.text for f in x.original]) if type(x) is CrossAttentionControlSubstitute else str(x)) for x in parsed_prompt.children ] text = " ".join(text_fragments) @@ -639,25 +603,17 @@ def get_tokens_for_prompt_object( return tokens -def log_tokenization_for_conjunction( - c: Conjunction, tokenizer, display_label_prefix=None -): +def log_tokenization_for_conjunction(c: Conjunction, tokenizer, display_label_prefix=None): display_label_prefix = display_label_prefix or "" for i, p in enumerate(c.prompts): if len(c.prompts) > 1: this_display_label_prefix = f"{display_label_prefix}(conjunction part {i + 1}, weight={c.weights[i]})" else: this_display_label_prefix = display_label_prefix - log_tokenization_for_prompt_object( - p, - tokenizer, - display_label_prefix=this_display_label_prefix - ) + log_tokenization_for_prompt_object(p, tokenizer, display_label_prefix=this_display_label_prefix) -def log_tokenization_for_prompt_object( - p: Union[Blend, FlattenedPrompt], tokenizer, display_label_prefix=None -): +def log_tokenization_for_prompt_object(p: Union[Blend, FlattenedPrompt], tokenizer, display_label_prefix=None): display_label_prefix = display_label_prefix or "" if type(p) is Blend: blend: Blend = p @@ -694,13 +650,10 @@ def log_tokenization_for_prompt_object( ) else: text = " ".join([x.text for x in flattened_prompt.children]) - log_tokenization_for_text( - text, tokenizer, display_label=display_label_prefix - ) + log_tokenization_for_text(text, tokenizer, display_label=display_label_prefix) -def log_tokenization_for_text( - text, tokenizer, display_label=None, truncate_if_too_long=False): +def log_tokenization_for_text(text, tokenizer, display_label=None, truncate_if_too_long=False): """shows how the prompt is tokenized # usually tokens have '' to indicate end-of-word, # but for readability it has been replaced with ' ' diff --git a/invokeai/app/invocations/controlnet_image_processors.py b/invokeai/app/invocations/controlnet_image_processors.py index 911fede8fb..d2b2d44526 100644 --- a/invokeai/app/invocations/controlnet_image_processors.py +++ b/invokeai/app/invocations/controlnet_image_processors.py @@ -6,21 +6,30 @@ from typing import Dict, List, Literal, Optional, Union import cv2 import numpy as np -from controlnet_aux import (CannyDetector, ContentShuffleDetector, HEDdetector, - LeresDetector, LineartAnimeDetector, - LineartDetector, MediapipeFaceDetector, - MidasDetector, MLSDdetector, NormalBaeDetector, - OpenposeDetector, PidiNetDetector, SamDetector, - ZoeDetector) +from controlnet_aux import ( + CannyDetector, + ContentShuffleDetector, + HEDdetector, + LeresDetector, + LineartAnimeDetector, + LineartDetector, + MediapipeFaceDetector, + MidasDetector, + MLSDdetector, + NormalBaeDetector, + OpenposeDetector, + PidiNetDetector, + SamDetector, + ZoeDetector, +) from controlnet_aux.util import HWC3, ade_palette from PIL import Image from pydantic import BaseModel, Field, validator from ...backend.model_management import BaseModelType, ModelType from ..models.image import ImageCategory, ImageField, ResourceOrigin -from .baseinvocation import (BaseInvocation, BaseInvocationOutput, - InvocationConfig, InvocationContext) -from .image import ImageOutput, PILInvocationConfig +from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext +from ..models.image import ImageOutput, PILInvocationConfig CONTROLNET_DEFAULT_MODELS = [ ########################################### @@ -34,7 +43,6 @@ CONTROLNET_DEFAULT_MODELS = [ "lllyasviel/sd-controlnet-scribble", "lllyasviel/sd-controlnet-normal", "lllyasviel/sd-controlnet-mlsd", - ############################################# # lllyasviel sd v1.5, ControlNet v1.1 models ############################################# @@ -56,7 +64,6 @@ CONTROLNET_DEFAULT_MODELS = [ "lllyasviel/control_v11e_sd15_shuffle", "lllyasviel/control_v11e_sd15_ip2p", "lllyasviel/control_v11f1e_sd15_tile", - ################################################# # thibaud sd v2.1 models (ControlNet v1.0? or v1.1? ################################################## @@ -71,7 +78,6 @@ CONTROLNET_DEFAULT_MODELS = [ "thibaud/controlnet-sd21-lineart-diffusers", "thibaud/controlnet-sd21-normalbae-diffusers", "thibaud/controlnet-sd21-ade20k-diffusers", - ############################################## # ControlNetMediaPipeface, ControlNet v1.1 ############################################## @@ -83,10 +89,17 @@ CONTROLNET_DEFAULT_MODELS = [ ] CONTROLNET_NAME_VALUES = Literal[tuple(CONTROLNET_DEFAULT_MODELS)] -CONTROLNET_MODE_VALUES = Literal[tuple( - ["balanced", "more_prompt", "more_control", "unbalanced"])] -CONTROLNET_RESIZE_VALUES = Literal[tuple( - ["just_resize", "crop_resize", "fill_resize", "just_resize_simple",])] +CONTROLNET_MODE_VALUES = Literal[tuple(["balanced", "more_prompt", "more_control", "unbalanced"])] +CONTROLNET_RESIZE_VALUES = Literal[ + tuple( + [ + "just_resize", + "crop_resize", + "fill_resize", + "just_resize_simple", + ] + ) +] class ControlNetModelField(BaseModel): @@ -98,21 +111,17 @@ class ControlNetModelField(BaseModel): class ControlField(BaseModel): image: ImageField = Field(default=None, description="The control image") - control_model: Optional[ControlNetModelField] = Field( - default=None, description="The ControlNet model to use") + control_model: Optional[ControlNetModelField] = Field(default=None, description="The ControlNet model to use") # control_weight: Optional[float] = Field(default=1, description="weight given to controlnet") - control_weight: Union[float, List[float]] = Field( - default=1, description="The weight given to the ControlNet") + control_weight: Union[float, List[float]] = Field(default=1, description="The weight given to the ControlNet") begin_step_percent: float = Field( - default=0, ge=0, le=1, - description="When the ControlNet is first applied (% of total steps)") + default=0, ge=0, le=1, description="When the ControlNet is first applied (% of total steps)" + ) end_step_percent: float = Field( - default=1, ge=0, le=1, - description="When the ControlNet is last applied (% of total steps)") - control_mode: CONTROLNET_MODE_VALUES = Field( - default="balanced", description="The control mode to use") - resize_mode: CONTROLNET_RESIZE_VALUES = Field( - default="just_resize", description="The resize mode to use") + default=1, ge=0, le=1, description="When the ControlNet is last applied (% of total steps)" + ) + control_mode: CONTROLNET_MODE_VALUES = Field(default="balanced", description="The control mode to use") + resize_mode: CONTROLNET_RESIZE_VALUES = Field(default="just_resize", description="The resize mode to use") @validator("control_weight") def validate_control_weight(cls, v): @@ -120,11 +129,10 @@ class ControlField(BaseModel): if isinstance(v, list): for i in v: if i < -1 or i > 2: - raise ValueError( - 'Control weights must be within -1 to 2 range') + raise ValueError("Control weights must be within -1 to 2 range") else: if v < -1 or v > 2: - raise ValueError('Control weights must be within -1 to 2 range') + raise ValueError("Control weights must be within -1 to 2 range") return v class Config: @@ -136,12 +144,13 @@ class ControlField(BaseModel): "control_model": "controlnet_model", # "control_weight": "number", } - } + }, } class ControlOutput(BaseInvocationOutput): """node output for ControlNet info""" + # fmt: off type: Literal["control_output"] = "control_output" control: ControlField = Field(default=None, description="The control info") @@ -150,6 +159,7 @@ class ControlOutput(BaseInvocationOutput): class ControlNetInvocation(BaseInvocation): """Collects ControlNet info to pass to other nodes""" + # fmt: off type: Literal["controlnet"] = "controlnet" # Inputs @@ -176,7 +186,7 @@ class ControlNetInvocation(BaseInvocation): # "cfg_scale": "float", "cfg_scale": "number", "control_weight": "float", - } + }, }, } @@ -205,10 +215,7 @@ class ImageProcessorInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Image Processor", - "tags": ["image", "processor"] - }, + "ui": {"title": "Image Processor", "tags": ["image", "processor"]}, } def run_processor(self, image): @@ -233,7 +240,7 @@ class ImageProcessorInvocation(BaseInvocation, PILInvocationConfig): image_category=ImageCategory.CONTROL, session_id=context.graph_execution_state_id, node_id=self.id, - is_intermediate=self.is_intermediate + is_intermediate=self.is_intermediate, ) """Builds an ImageOutput and its ImageField""" @@ -248,9 +255,9 @@ class ImageProcessorInvocation(BaseInvocation, PILInvocationConfig): ) -class CannyImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class CannyImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Canny edge detection for ControlNet""" + # fmt: off type: Literal["canny_image_processor"] = "canny_image_processor" # Input @@ -260,22 +267,18 @@ class CannyImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Canny Processor", - "tags": ["controlnet", "canny", "image", "processor"] - }, + "ui": {"title": "Canny Processor", "tags": ["controlnet", "canny", "image", "processor"]}, } def run_processor(self, image): canny_processor = CannyDetector() - processed_image = canny_processor( - image, self.low_threshold, self.high_threshold) + processed_image = canny_processor(image, self.low_threshold, self.high_threshold) return processed_image -class HedImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class HedImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies HED edge detection to image""" + # fmt: off type: Literal["hed_image_processor"] = "hed_image_processor" # Inputs @@ -288,27 +291,25 @@ class HedImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Softedge(HED) Processor", - "tags": ["controlnet", "softedge", "hed", "image", "processor"] - }, + "ui": {"title": "Softedge(HED) Processor", "tags": ["controlnet", "softedge", "hed", "image", "processor"]}, } def run_processor(self, image): hed_processor = HEDdetector.from_pretrained("lllyasviel/Annotators") - processed_image = hed_processor(image, - detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution, - # safe not supported in controlnet_aux v0.0.3 - # safe=self.safe, - scribble=self.scribble, - ) + processed_image = hed_processor( + image, + detect_resolution=self.detect_resolution, + image_resolution=self.image_resolution, + # safe not supported in controlnet_aux v0.0.3 + # safe=self.safe, + scribble=self.scribble, + ) return processed_image -class LineartImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class LineartImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies line art processing to image""" + # fmt: off type: Literal["lineart_image_processor"] = "lineart_image_processor" # Inputs @@ -319,24 +320,20 @@ class LineartImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Lineart Processor", - "tags": ["controlnet", "lineart", "image", "processor"] - }, + "ui": {"title": "Lineart Processor", "tags": ["controlnet", "lineart", "image", "processor"]}, } def run_processor(self, image): - lineart_processor = LineartDetector.from_pretrained( - "lllyasviel/Annotators") + lineart_processor = LineartDetector.from_pretrained("lllyasviel/Annotators") processed_image = lineart_processor( - image, detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution, coarse=self.coarse) + image, detect_resolution=self.detect_resolution, image_resolution=self.image_resolution, coarse=self.coarse + ) return processed_image -class LineartAnimeImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class LineartAnimeImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies line art anime processing to image""" + # fmt: off type: Literal["lineart_anime_image_processor"] = "lineart_anime_image_processor" # Inputs @@ -348,23 +345,23 @@ class LineartAnimeImageProcessorInvocation( schema_extra = { "ui": { "title": "Lineart Anime Processor", - "tags": ["controlnet", "lineart", "anime", "image", "processor"] + "tags": ["controlnet", "lineart", "anime", "image", "processor"], }, } def run_processor(self, image): - processor = LineartAnimeDetector.from_pretrained( - "lllyasviel/Annotators") - processed_image = processor(image, - detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution, - ) + processor = LineartAnimeDetector.from_pretrained("lllyasviel/Annotators") + processed_image = processor( + image, + detect_resolution=self.detect_resolution, + image_resolution=self.image_resolution, + ) return processed_image -class OpenposeImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class OpenposeImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies Openpose processing to image""" + # fmt: off type: Literal["openpose_image_processor"] = "openpose_image_processor" # Inputs @@ -375,25 +372,23 @@ class OpenposeImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Openpose Processor", - "tags": ["controlnet", "openpose", "image", "processor"] - }, + "ui": {"title": "Openpose Processor", "tags": ["controlnet", "openpose", "image", "processor"]}, } def run_processor(self, image): - openpose_processor = OpenposeDetector.from_pretrained( - "lllyasviel/Annotators") + openpose_processor = OpenposeDetector.from_pretrained("lllyasviel/Annotators") processed_image = openpose_processor( - image, detect_resolution=self.detect_resolution, + image, + detect_resolution=self.detect_resolution, image_resolution=self.image_resolution, - hand_and_face=self.hand_and_face,) + hand_and_face=self.hand_and_face, + ) return processed_image -class MidasDepthImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class MidasDepthImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies Midas depth processing to image""" + # fmt: off type: Literal["midas_depth_image_processor"] = "midas_depth_image_processor" # Inputs @@ -405,26 +400,24 @@ class MidasDepthImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Midas (Depth) Processor", - "tags": ["controlnet", "midas", "depth", "image", "processor"] - }, + "ui": {"title": "Midas (Depth) Processor", "tags": ["controlnet", "midas", "depth", "image", "processor"]}, } def run_processor(self, image): midas_processor = MidasDetector.from_pretrained("lllyasviel/Annotators") - processed_image = midas_processor(image, - a=np.pi * self.a_mult, - bg_th=self.bg_th, - # dept_and_normal not supported in controlnet_aux v0.0.3 - # depth_and_normal=self.depth_and_normal, - ) + processed_image = midas_processor( + image, + a=np.pi * self.a_mult, + bg_th=self.bg_th, + # dept_and_normal not supported in controlnet_aux v0.0.3 + # depth_and_normal=self.depth_and_normal, + ) return processed_image -class NormalbaeImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class NormalbaeImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies NormalBae processing to image""" + # fmt: off type: Literal["normalbae_image_processor"] = "normalbae_image_processor" # Inputs @@ -434,24 +427,20 @@ class NormalbaeImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Normal BAE Processor", - "tags": ["controlnet", "normal", "bae", "image", "processor"] - }, + "ui": {"title": "Normal BAE Processor", "tags": ["controlnet", "normal", "bae", "image", "processor"]}, } def run_processor(self, image): - normalbae_processor = NormalBaeDetector.from_pretrained( - "lllyasviel/Annotators") + normalbae_processor = NormalBaeDetector.from_pretrained("lllyasviel/Annotators") processed_image = normalbae_processor( - image, detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution) + image, detect_resolution=self.detect_resolution, image_resolution=self.image_resolution + ) return processed_image -class MlsdImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class MlsdImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies MLSD processing to image""" + # fmt: off type: Literal["mlsd_image_processor"] = "mlsd_image_processor" # Inputs @@ -463,24 +452,24 @@ class MlsdImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "MLSD Processor", - "tags": ["controlnet", "mlsd", "image", "processor"] - }, + "ui": {"title": "MLSD Processor", "tags": ["controlnet", "mlsd", "image", "processor"]}, } def run_processor(self, image): mlsd_processor = MLSDdetector.from_pretrained("lllyasviel/Annotators") processed_image = mlsd_processor( - image, detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution, thr_v=self.thr_v, - thr_d=self.thr_d) + image, + detect_resolution=self.detect_resolution, + image_resolution=self.image_resolution, + thr_v=self.thr_v, + thr_d=self.thr_d, + ) return processed_image -class PidiImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class PidiImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies PIDI processing to image""" + # fmt: off type: Literal["pidi_image_processor"] = "pidi_image_processor" # Inputs @@ -492,25 +481,24 @@ class PidiImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "PIDI Processor", - "tags": ["controlnet", "pidi", "image", "processor"] - }, + "ui": {"title": "PIDI Processor", "tags": ["controlnet", "pidi", "image", "processor"]}, } def run_processor(self, image): - pidi_processor = PidiNetDetector.from_pretrained( - "lllyasviel/Annotators") + pidi_processor = PidiNetDetector.from_pretrained("lllyasviel/Annotators") processed_image = pidi_processor( - image, detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution, safe=self.safe, - scribble=self.scribble) + image, + detect_resolution=self.detect_resolution, + image_resolution=self.image_resolution, + safe=self.safe, + scribble=self.scribble, + ) return processed_image -class ContentShuffleImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class ContentShuffleImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies content shuffle processing to image""" + # fmt: off type: Literal["content_shuffle_image_processor"] = "content_shuffle_image_processor" # Inputs @@ -525,48 +513,45 @@ class ContentShuffleImageProcessorInvocation( schema_extra = { "ui": { "title": "Content Shuffle Processor", - "tags": ["controlnet", "contentshuffle", "image", "processor"] + "tags": ["controlnet", "contentshuffle", "image", "processor"], }, } def run_processor(self, image): content_shuffle_processor = ContentShuffleDetector() - processed_image = content_shuffle_processor(image, - detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution, - h=self.h, - w=self.w, - f=self.f - ) + processed_image = content_shuffle_processor( + image, + detect_resolution=self.detect_resolution, + image_resolution=self.image_resolution, + h=self.h, + w=self.w, + f=self.f, + ) return processed_image # should work with controlnet_aux >= 0.0.4 and timm <= 0.6.13 -class ZoeDepthImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class ZoeDepthImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies Zoe depth processing to image""" + # fmt: off type: Literal["zoe_depth_image_processor"] = "zoe_depth_image_processor" # fmt: on class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Zoe (Depth) Processor", - "tags": ["controlnet", "zoe", "depth", "image", "processor"] - }, + "ui": {"title": "Zoe (Depth) Processor", "tags": ["controlnet", "zoe", "depth", "image", "processor"]}, } def run_processor(self, image): - zoe_depth_processor = ZoeDetector.from_pretrained( - "lllyasviel/Annotators") + zoe_depth_processor = ZoeDetector.from_pretrained("lllyasviel/Annotators") processed_image = zoe_depth_processor(image) return processed_image -class MediapipeFaceProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class MediapipeFaceProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies mediapipe face processing to image""" + # fmt: off type: Literal["mediapipe_face_processor"] = "mediapipe_face_processor" # Inputs @@ -576,26 +561,22 @@ class MediapipeFaceProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Mediapipe Processor", - "tags": ["controlnet", "mediapipe", "image", "processor"] - }, + "ui": {"title": "Mediapipe Processor", "tags": ["controlnet", "mediapipe", "image", "processor"]}, } def run_processor(self, image): # MediaPipeFaceDetector throws an error if image has alpha channel # so convert to RGB if needed - if image.mode == 'RGBA': - image = image.convert('RGB') + if image.mode == "RGBA": + image = image.convert("RGB") mediapipe_face_processor = MediapipeFaceDetector() - processed_image = mediapipe_face_processor( - image, max_faces=self.max_faces, min_confidence=self.min_confidence) + processed_image = mediapipe_face_processor(image, max_faces=self.max_faces, min_confidence=self.min_confidence) return processed_image -class LeresImageProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class LeresImageProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies leres processing to image""" + # fmt: off type: Literal["leres_image_processor"] = "leres_image_processor" # Inputs @@ -608,24 +589,23 @@ class LeresImageProcessorInvocation( class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Leres (Depth) Processor", - "tags": ["controlnet", "leres", "depth", "image", "processor"] - }, + "ui": {"title": "Leres (Depth) Processor", "tags": ["controlnet", "leres", "depth", "image", "processor"]}, } def run_processor(self, image): leres_processor = LeresDetector.from_pretrained("lllyasviel/Annotators") processed_image = leres_processor( - image, thr_a=self.thr_a, thr_b=self.thr_b, boost=self.boost, + image, + thr_a=self.thr_a, + thr_b=self.thr_b, + boost=self.boost, detect_resolution=self.detect_resolution, - image_resolution=self.image_resolution) + image_resolution=self.image_resolution, + ) return processed_image -class TileResamplerProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): - +class TileResamplerProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): # fmt: off type: Literal["tile_image_processor"] = "tile_image_processor" # Inputs @@ -637,16 +617,17 @@ class TileResamplerProcessorInvocation( schema_extra = { "ui": { "title": "Tile Resample Processor", - "tags": ["controlnet", "tile", "resample", "image", "processor"] + "tags": ["controlnet", "tile", "resample", "image", "processor"], }, } # tile_resample copied from sd-webui-controlnet/scripts/processor.py - def tile_resample(self, - np_img: np.ndarray, - res=512, # never used? - down_sampling_rate=1.0, - ): + def tile_resample( + self, + np_img: np.ndarray, + res=512, # never used? + down_sampling_rate=1.0, + ): np_img = HWC3(np_img) if down_sampling_rate < 1.1: return np_img @@ -658,36 +639,41 @@ class TileResamplerProcessorInvocation( def run_processor(self, img): np_img = np.array(img, dtype=np.uint8) - processed_np_image = self.tile_resample(np_img, - # res=self.tile_size, - down_sampling_rate=self.down_sampling_rate - ) + processed_np_image = self.tile_resample( + np_img, + # res=self.tile_size, + down_sampling_rate=self.down_sampling_rate, + ) processed_image = Image.fromarray(processed_np_image) return processed_image -class SegmentAnythingProcessorInvocation( - ImageProcessorInvocation, PILInvocationConfig): +class SegmentAnythingProcessorInvocation(ImageProcessorInvocation, PILInvocationConfig): """Applies segment anything processing to image""" + # fmt: off type: Literal["segment_anything_processor"] = "segment_anything_processor" # fmt: on class Config(InvocationConfig): - schema_extra = {"ui": {"title": "Segment Anything Processor", "tags": [ - "controlnet", "segment", "anything", "sam", "image", "processor"]}, } + schema_extra = { + "ui": { + "title": "Segment Anything Processor", + "tags": ["controlnet", "segment", "anything", "sam", "image", "processor"], + }, + } def run_processor(self, image): # segment_anything_processor = SamDetector.from_pretrained("ybelkada/segment-anything", subfolder="checkpoints") segment_anything_processor = SamDetectorReproducibleColors.from_pretrained( - "ybelkada/segment-anything", subfolder="checkpoints") + "ybelkada/segment-anything", subfolder="checkpoints" + ) np_img = np.array(image, dtype=np.uint8) processed_image = segment_anything_processor(np_img) return processed_image class SamDetectorReproducibleColors(SamDetector): - # overriding SamDetector.show_anns() method to use reproducible colors for segmentation image # base class show_anns() method randomizes colors, # which seems to also lead to non-reproducible image generation @@ -695,19 +681,15 @@ class SamDetectorReproducibleColors(SamDetector): def show_anns(self, anns: List[Dict]): if len(anns) == 0: return - sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True) - h, w = anns[0]['segmentation'].shape - final_img = Image.fromarray( - np.zeros((h, w, 3), dtype=np.uint8), mode="RGB") + sorted_anns = sorted(anns, key=(lambda x: x["area"]), reverse=True) + h, w = anns[0]["segmentation"].shape + final_img = Image.fromarray(np.zeros((h, w, 3), dtype=np.uint8), mode="RGB") palette = ade_palette() for i, ann in enumerate(sorted_anns): - m = ann['segmentation'] + m = ann["segmentation"] img = np.empty((m.shape[0], m.shape[1], 3), dtype=np.uint8) # doing modulo just in case number of annotated regions exceeds number of colors in palette ann_color = palette[i % len(palette)] img[:, :] = ann_color - final_img.paste( - Image.fromarray(img, mode="RGB"), - (0, 0), - Image.fromarray(np.uint8(m * 255))) + final_img.paste(Image.fromarray(img, mode="RGB"), (0, 0), Image.fromarray(np.uint8(m * 255))) return np.array(final_img, dtype=np.uint8) diff --git a/invokeai/app/invocations/cv.py b/invokeai/app/invocations/cv.py index cd7eaebeec..bd3a4adbe4 100644 --- a/invokeai/app/invocations/cv.py +++ b/invokeai/app/invocations/cv.py @@ -37,10 +37,7 @@ class CvInpaintInvocation(BaseInvocation, CvInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "OpenCV Inpaint", - "tags": ["opencv", "inpaint"] - }, + "ui": {"title": "OpenCV Inpaint", "tags": ["opencv", "inpaint"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: diff --git a/invokeai/app/invocations/generate.py b/invokeai/app/invocations/generate.py index 910a7edf8b..d48c9f922e 100644 --- a/invokeai/app/invocations/generate.py +++ b/invokeai/app/invocations/generate.py @@ -6,8 +6,7 @@ from typing import Literal, Optional, get_args import torch from pydantic import Field -from invokeai.app.models.image import (ColorField, ImageCategory, ImageField, - ResourceOrigin) +from invokeai.app.models.image import ColorField, ImageCategory, ImageField, ResourceOrigin from invokeai.app.util.misc import SEED_MAX, get_random_seed from invokeai.backend.generator.inpaint import infill_methods @@ -25,13 +24,12 @@ from contextlib import contextmanager, ExitStack, ContextDecorator SAMPLER_NAME_VALUES = Literal[tuple(InvokeAIGenerator.schedulers())] INFILL_METHODS = Literal[tuple(infill_methods())] -DEFAULT_INFILL_METHOD = ( - "patchmatch" if "patchmatch" in get_args(INFILL_METHODS) else "tile" -) +DEFAULT_INFILL_METHOD = "patchmatch" if "patchmatch" in get_args(INFILL_METHODS) else "tile" from .latent import get_scheduler + class OldModelContext(ContextDecorator): model: StableDiffusionGeneratorPipeline @@ -44,6 +42,7 @@ class OldModelContext(ContextDecorator): def __exit__(self, *exc): return False + class OldModelInfo: name: str hash: str @@ -64,20 +63,34 @@ class InpaintInvocation(BaseInvocation): positive_conditioning: Optional[ConditioningField] = Field(description="Positive conditioning for generation") negative_conditioning: Optional[ConditioningField] = Field(description="Negative conditioning for generation") - seed: int = Field(ge=0, le=SEED_MAX, description="The seed to use (omit for random)", default_factory=get_random_seed) - steps: int = Field(default=30, gt=0, description="The number of steps to use to generate the image") - width: int = Field(default=512, multiple_of=8, gt=0, description="The width of the resulting image", ) - height: int = Field(default=512, multiple_of=8, gt=0, description="The height of the resulting image", ) - cfg_scale: float = Field(default=7.5, ge=1, description="The Classifier-Free Guidance, higher values may result in a result closer to the prompt", ) - scheduler: SAMPLER_NAME_VALUES = Field(default="euler", description="The scheduler to use" ) + seed: int = Field( + ge=0, le=SEED_MAX, description="The seed to use (omit for random)", default_factory=get_random_seed + ) + steps: int = Field(default=30, gt=0, description="The number of steps to use to generate the image") + width: int = Field( + default=512, + multiple_of=8, + gt=0, + description="The width of the resulting image", + ) + height: int = Field( + default=512, + multiple_of=8, + gt=0, + description="The height of the resulting image", + ) + cfg_scale: float = Field( + default=7.5, + ge=1, + description="The Classifier-Free Guidance, higher values may result in a result closer to the prompt", + ) + scheduler: SAMPLER_NAME_VALUES = Field(default="euler", description="The scheduler to use") unet: UNetField = Field(default=None, description="UNet model") vae: VaeField = Field(default=None, description="Vae model") # Inputs image: Optional[ImageField] = Field(description="The input image") - strength: float = Field( - default=0.75, gt=0, le=1, description="The strength of the original image" - ) + strength: float = Field(default=0.75, gt=0, le=1, description="The strength of the original image") fit: bool = Field( default=True, description="Whether or not the result should be fit to the aspect ratio of the input image", @@ -86,18 +99,10 @@ class InpaintInvocation(BaseInvocation): # Inputs mask: Optional[ImageField] = Field(description="The mask") seam_size: int = Field(default=96, ge=1, description="The seam inpaint size (px)") - seam_blur: int = Field( - default=16, ge=0, description="The seam inpaint blur radius (px)" - ) - seam_strength: float = Field( - default=0.75, gt=0, le=1, description="The seam inpaint strength" - ) - seam_steps: int = Field( - default=30, ge=1, description="The number of steps to use for seam inpaint" - ) - tile_size: int = Field( - default=32, ge=1, description="The tile infill method size (px)" - ) + seam_blur: int = Field(default=16, ge=0, description="The seam inpaint blur radius (px)") + seam_strength: float = Field(default=0.75, gt=0, le=1, description="The seam inpaint strength") + seam_steps: int = Field(default=30, ge=1, description="The number of steps to use for seam inpaint") + tile_size: int = Field(default=32, ge=1, description="The tile infill method size (px)") infill_method: INFILL_METHODS = Field( default=DEFAULT_INFILL_METHOD, description="The method used to infill empty regions (px)", @@ -128,10 +133,7 @@ class InpaintInvocation(BaseInvocation): # Schema customisation class Config(InvocationConfig): schema_extra = { - "ui": { - "tags": ["stable-diffusion", "image"], - "title": "Inpaint" - }, + "ui": {"tags": ["stable-diffusion", "image"], "title": "Inpaint"}, } def dispatch_progress( @@ -162,18 +164,23 @@ class InpaintInvocation(BaseInvocation): def _lora_loader(): for lora in self.unet.loras: lora_info = context.services.model_manager.get_model( - **lora.dict(exclude={"weight"}), context=context,) + **lora.dict(exclude={"weight"}), + context=context, + ) yield (lora_info.context.model, lora.weight) del lora_info return - - unet_info = context.services.model_manager.get_model(**self.unet.unet.dict(), context=context,) - vae_info = context.services.model_manager.get_model(**self.vae.vae.dict(), context=context,) - with vae_info as vae,\ - ModelPatcher.apply_lora_unet(unet_info.context.model, _lora_loader()),\ - unet_info as unet: + unet_info = context.services.model_manager.get_model( + **self.unet.unet.dict(), + context=context, + ) + vae_info = context.services.model_manager.get_model( + **self.vae.vae.dict(), + context=context, + ) + with vae_info as vae, ModelPatcher.apply_lora_unet(unet_info.context.model, _lora_loader()), unet_info as unet: device = context.services.model_manager.mgr.cache.execution_device dtype = context.services.model_manager.mgr.cache.precision @@ -197,21 +204,11 @@ class InpaintInvocation(BaseInvocation): ) def invoke(self, context: InvocationContext) -> ImageOutput: - image = ( - None - if self.image is None - else context.services.images.get_pil_image(self.image.image_name) - ) - mask = ( - None - if self.mask is None - else context.services.images.get_pil_image(self.mask.image_name) - ) + image = None if self.image is None else context.services.images.get_pil_image(self.image.image_name) + mask = None if self.mask is None else context.services.images.get_pil_image(self.mask.image_name) # Get the source node id (we are invoking the prepared node) - graph_execution_state = context.services.graph_execution_manager.get( - context.graph_execution_state_id - ) + graph_execution_state = context.services.graph_execution_manager.get(context.graph_execution_state_id) source_node_id = graph_execution_state.prepared_source_mapping[self.id] scheduler = get_scheduler( diff --git a/invokeai/app/invocations/image.py b/invokeai/app/invocations/image.py index 8405aa6daf..3f40ea3cbe 100644 --- a/invokeai/app/invocations/image.py +++ b/invokeai/app/invocations/image.py @@ -4,60 +4,25 @@ from typing import Literal, Optional import numpy from PIL import Image, ImageFilter, ImageOps, ImageChops -from pydantic import BaseModel, Field +from pydantic import Field +from pathlib import Path from typing import Union - -from ..models.image import ImageCategory, ImageField, ResourceOrigin +from invokeai.app.invocations.metadata import CoreMetadata +from ..models.image import ( + ImageCategory, + ImageField, + ResourceOrigin, + PILInvocationConfig, + ImageOutput, + MaskOutput, +) from .baseinvocation import ( BaseInvocation, - BaseInvocationOutput, InvocationContext, InvocationConfig, ) - - -class PILInvocationConfig(BaseModel): - """Helper class to provide all PIL invocations with additional config""" - - class Config(InvocationConfig): - schema_extra = { - "ui": { - "tags": ["PIL", "image"], - }, - } - - -class ImageOutput(BaseInvocationOutput): - """Base class for invocations that output an image""" - - # fmt: off - type: Literal["image_output"] = "image_output" - image: ImageField = Field(default=None, description="The output image") - width: int = Field(description="The width of the image in pixels") - height: int = Field(description="The height of the image in pixels") - # fmt: on - - class Config: - schema_extra = {"required": ["type", "image", "width", "height"]} - - -class MaskOutput(BaseInvocationOutput): - """Base class for invocations that output a mask""" - - # fmt: off - type: Literal["mask"] = "mask" - mask: ImageField = Field(default=None, description="The output mask") - width: int = Field(description="The width of the mask in pixels") - height: int = Field(description="The height of the mask in pixels") - # fmt: on - - class Config: - schema_extra = { - "required": [ - "type", - "mask", - ] - } +from invokeai.backend.image_util.safety_checker import SafetyChecker +from invokeai.backend.image_util.invisible_watermark import InvisibleWatermark class LoadImageInvocation(BaseInvocation): @@ -74,10 +39,7 @@ class LoadImageInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Load Image", - "tags": ["image", "load"] - }, + "ui": {"title": "Load Image", "tags": ["image", "load"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -96,16 +58,11 @@ class ShowImageInvocation(BaseInvocation): type: Literal["show_image"] = "show_image" # Inputs - image: Optional[ImageField] = Field( - default=None, description="The image to show" - ) + image: Optional[ImageField] = Field(default=None, description="The image to show") class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Show Image", - "tags": ["image", "show"] - }, + "ui": {"title": "Show Image", "tags": ["image", "show"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -138,18 +95,13 @@ class ImageCropInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Crop Image", - "tags": ["image", "crop"] - }, + "ui": {"title": "Crop Image", "tags": ["image", "crop"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: image = context.services.images.get_pil_image(self.image.image_name) - image_crop = Image.new( - mode="RGBA", size=(self.width, self.height), color=(0, 0, 0, 0) - ) + image_crop = Image.new(mode="RGBA", size=(self.width, self.height), color=(0, 0, 0, 0)) image_crop.paste(image, (-self.x, -self.y)) image_dto = context.services.images.create( @@ -184,21 +136,14 @@ class ImagePasteInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Paste Image", - "tags": ["image", "paste"] - }, + "ui": {"title": "Paste Image", "tags": ["image", "paste"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: base_image = context.services.images.get_pil_image(self.base_image.image_name) image = context.services.images.get_pil_image(self.image.image_name) mask = ( - None - if self.mask is None - else ImageOps.invert( - context.services.images.get_pil_image(self.mask.image_name) - ) + None if self.mask is None else ImageOps.invert(context.services.images.get_pil_image(self.mask.image_name)) ) # TODO: probably shouldn't invert mask here... should user be required to do it? @@ -207,9 +152,7 @@ class ImagePasteInvocation(BaseInvocation, PILInvocationConfig): max_x = max(base_image.width, image.width + self.x) max_y = max(base_image.height, image.height + self.y) - new_image = Image.new( - mode="RGBA", size=(max_x - min_x, max_y - min_y), color=(0, 0, 0, 0) - ) + new_image = Image.new(mode="RGBA", size=(max_x - min_x, max_y - min_y), color=(0, 0, 0, 0)) new_image.paste(base_image, (abs(min_x), abs(min_y))) new_image.paste(image, (max(0, self.x), max(0, self.y)), mask=mask) @@ -242,10 +185,7 @@ class MaskFromAlphaInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Mask From Alpha", - "tags": ["image", "mask", "alpha"] - }, + "ui": {"title": "Mask From Alpha", "tags": ["image", "mask", "alpha"]}, } def invoke(self, context: InvocationContext) -> MaskOutput: @@ -284,10 +224,7 @@ class ImageMultiplyInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Multiply Images", - "tags": ["image", "multiply"] - }, + "ui": {"title": "Multiply Images", "tags": ["image", "multiply"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -328,10 +265,7 @@ class ImageChannelInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Image Channel", - "tags": ["image", "channel"] - }, + "ui": {"title": "Image Channel", "tags": ["image", "channel"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -371,10 +305,7 @@ class ImageConvertInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Convert Image", - "tags": ["image", "convert"] - }, + "ui": {"title": "Convert Image", "tags": ["image", "convert"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -412,19 +343,14 @@ class ImageBlurInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Blur Image", - "tags": ["image", "blur"] - }, + "ui": {"title": "Blur Image", "tags": ["image", "blur"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: image = context.services.images.get_pil_image(self.image.image_name) blur = ( - ImageFilter.GaussianBlur(self.radius) - if self.blur_type == "gaussian" - else ImageFilter.BoxBlur(self.radius) + ImageFilter.GaussianBlur(self.radius) if self.blur_type == "gaussian" else ImageFilter.BoxBlur(self.radius) ) blur_image = image.filter(blur) @@ -479,10 +405,7 @@ class ImageResizeInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Resize Image", - "tags": ["image", "resize"] - }, + "ui": {"title": "Resize Image", "tags": ["image", "resize"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -525,10 +448,7 @@ class ImageScaleInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Scale Image", - "tags": ["image", "scale"] - }, + "ui": {"title": "Scale Image", "tags": ["image", "scale"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -573,10 +493,7 @@ class ImageLerpInvocation(BaseInvocation, PILInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Image Linear Interpolation", - "tags": ["image", "linear", "interpolation", "lerp"] - }, + "ui": {"title": "Image Linear Interpolation", "tags": ["image", "linear", "interpolation", "lerp"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -619,7 +536,7 @@ class ImageInverseLerpInvocation(BaseInvocation, PILInvocationConfig): schema_extra = { "ui": { "title": "Image Inverse Linear Interpolation", - "tags": ["image", "linear", "interpolation", "inverse"] + "tags": ["image", "linear", "interpolation", "inverse"], }, } @@ -627,12 +544,7 @@ class ImageInverseLerpInvocation(BaseInvocation, PILInvocationConfig): image = context.services.images.get_pil_image(self.image.image_name) image_arr = numpy.asarray(image, dtype=numpy.float32) - image_arr = ( - numpy.minimum( - numpy.maximum(image_arr - self.min, 0) / float(self.max - self.min), 1 - ) - * 255 - ) + image_arr = numpy.minimum(numpy.maximum(image_arr - self.min, 0) / float(self.max - self.min), 1) * 255 ilerp_image = Image.fromarray(numpy.uint8(image_arr)) @@ -650,3 +562,91 @@ class ImageInverseLerpInvocation(BaseInvocation, PILInvocationConfig): width=image_dto.width, height=image_dto.height, ) + + +class ImageNSFWBlurInvocation(BaseInvocation, PILInvocationConfig): + """Add blur to NSFW-flagged images""" + + # fmt: off + type: Literal["img_nsfw"] = "img_nsfw" + + # Inputs + image: Optional[ImageField] = Field(default=None, description="The image to check") + metadata: Optional[CoreMetadata] = Field(default=None, description="Optional core metadata to be written to the image") + # fmt: on + + class Config(InvocationConfig): + schema_extra = { + "ui": {"title": "Blur NSFW Images", "tags": ["image", "nsfw", "checker"]}, + } + + def invoke(self, context: InvocationContext) -> ImageOutput: + image = context.services.images.get_pil_image(self.image.image_name) + + logger = context.services.logger + logger.debug("Running NSFW checker") + if SafetyChecker.has_nsfw_concept(image): + logger.info("A potentially NSFW image has been detected. Image will be blurred.") + blurry_image = image.filter(filter=ImageFilter.GaussianBlur(radius=32)) + caution = self._get_caution_img() + blurry_image.paste(caution, (0, 0), caution) + image = blurry_image + + image_dto = context.services.images.create( + image=image, + image_origin=ResourceOrigin.INTERNAL, + image_category=ImageCategory.GENERAL, + node_id=self.id, + session_id=context.graph_execution_state_id, + is_intermediate=self.is_intermediate, + metadata=self.metadata.dict() if self.metadata else None, + ) + + return ImageOutput( + image=ImageField(image_name=image_dto.image_name), + width=image_dto.width, + height=image_dto.height, + ) + + def _get_caution_img(self) -> Image: + import invokeai.app.assets.images as image_assets + + caution = Image.open(Path(image_assets.__path__[0]) / "caution.png") + return caution.resize((caution.width // 2, caution.height // 2)) + + +class ImageWatermarkInvocation(BaseInvocation, PILInvocationConfig): + """Add an invisible watermark to an image""" + + # fmt: off + type: Literal["img_watermark"] = "img_watermark" + + # Inputs + image: Optional[ImageField] = Field(default=None, description="The image to check") + text: str = Field(default='InvokeAI', description="Watermark text") + metadata: Optional[CoreMetadata] = Field(default=None, description="Optional core metadata to be written to the image") + # fmt: on + + class Config(InvocationConfig): + schema_extra = { + "ui": {"title": "Add Invisible Watermark", "tags": ["image", "watermark", "invisible"]}, + } + + def invoke(self, context: InvocationContext) -> ImageOutput: + image = context.services.images.get_pil_image(self.image.image_name) + new_image = InvisibleWatermark.add_watermark(image, self.text) + image_dto = context.services.images.create( + image=new_image, + image_origin=ResourceOrigin.INTERNAL, + image_category=ImageCategory.GENERAL, + node_id=self.id, + session_id=context.graph_execution_state_id, + is_intermediate=self.is_intermediate, + metadata=self.metadata.dict() if self.metadata else None, + ) + + return ImageOutput( + image=ImageField(image_name=image_dto.image_name), + width=image_dto.width, + height=image_dto.height, + ) diff --git a/invokeai/app/invocations/infill.py b/invokeai/app/invocations/infill.py index ff8900fc50..cd5b2f9a11 100644 --- a/invokeai/app/invocations/infill.py +++ b/invokeai/app/invocations/infill.py @@ -30,9 +30,7 @@ def infill_methods() -> list[str]: INFILL_METHODS = Literal[tuple(infill_methods())] -DEFAULT_INFILL_METHOD = ( - "patchmatch" if "patchmatch" in get_args(INFILL_METHODS) else "tile" -) +DEFAULT_INFILL_METHOD = "patchmatch" if "patchmatch" in get_args(INFILL_METHODS) else "tile" def infill_patchmatch(im: Image.Image) -> Image.Image: @@ -44,9 +42,7 @@ def infill_patchmatch(im: Image.Image) -> Image.Image: return im # Patchmatch (note, we may want to expose patch_size? Increasing it significantly impacts performance though) - im_patched_np = PatchMatch.inpaint( - im.convert("RGB"), ImageOps.invert(im.split()[-1]), patch_size=3 - ) + im_patched_np = PatchMatch.inpaint(im.convert("RGB"), ImageOps.invert(im.split()[-1]), patch_size=3) im_patched = Image.fromarray(im_patched_np, mode="RGB") return im_patched @@ -68,9 +64,7 @@ def get_tile_images(image: np.ndarray, width=8, height=8): ) -def tile_fill_missing( - im: Image.Image, tile_size: int = 16, seed: Optional[int] = None -) -> Image.Image: +def tile_fill_missing(im: Image.Image, tile_size: int = 16, seed: Optional[int] = None) -> Image.Image: # Only fill if there's an alpha layer if im.mode != "RGBA": return im @@ -103,9 +97,7 @@ def tile_fill_missing( # Find all invalid tiles and replace with a random valid tile replace_count = (tiles_mask == False).sum() rng = np.random.default_rng(seed=seed) - tiles_all[np.logical_not(tiles_mask)] = filtered_tiles[ - rng.choice(filtered_tiles.shape[0], replace_count), :, :, : - ] + tiles_all[np.logical_not(tiles_mask)] = filtered_tiles[rng.choice(filtered_tiles.shape[0], replace_count), :, :, :] # Convert back to an image tiles_all = tiles_all.reshape(tshape) @@ -126,9 +118,7 @@ class InfillColorInvocation(BaseInvocation): """Infills transparent areas of an image with a solid color""" type: Literal["infill_rgba"] = "infill_rgba" - image: Optional[ImageField] = Field( - default=None, description="The image to infill" - ) + image: Optional[ImageField] = Field(default=None, description="The image to infill") color: ColorField = Field( default=ColorField(r=127, g=127, b=127, a=255), description="The color to use to infill", @@ -136,10 +126,7 @@ class InfillColorInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Color Infill", - "tags": ["image", "inpaint", "color", "infill"] - }, + "ui": {"title": "Color Infill", "tags": ["image", "inpaint", "color", "infill"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -171,9 +158,7 @@ class InfillTileInvocation(BaseInvocation): type: Literal["infill_tile"] = "infill_tile" - image: Optional[ImageField] = Field( - default=None, description="The image to infill" - ) + image: Optional[ImageField] = Field(default=None, description="The image to infill") tile_size: int = Field(default=32, ge=1, description="The tile size (px)") seed: int = Field( ge=0, @@ -184,18 +169,13 @@ class InfillTileInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Tile Infill", - "tags": ["image", "inpaint", "tile", "infill"] - }, + "ui": {"title": "Tile Infill", "tags": ["image", "inpaint", "tile", "infill"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: image = context.services.images.get_pil_image(self.image.image_name) - infilled = tile_fill_missing( - image.copy(), seed=self.seed, tile_size=self.tile_size - ) + infilled = tile_fill_missing(image.copy(), seed=self.seed, tile_size=self.tile_size) infilled.paste(image, (0, 0), image.split()[-1]) image_dto = context.services.images.create( @@ -219,16 +199,11 @@ class InfillPatchMatchInvocation(BaseInvocation): type: Literal["infill_patchmatch"] = "infill_patchmatch" - image: Optional[ImageField] = Field( - default=None, description="The image to infill" - ) + image: Optional[ImageField] = Field(default=None, description="The image to infill") class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Patch Match Infill", - "tags": ["image", "inpaint", "patchmatch", "infill"] - }, + "ui": {"title": "Patch Match Infill", "tags": ["image", "inpaint", "patchmatch", "infill"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index 6082057bd3..d6391e4f77 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -12,20 +12,21 @@ from pydantic import BaseModel, Field, validator from invokeai.app.invocations.metadata import CoreMetadata from invokeai.app.util.step_callback import stable_diffusion_step_callback -from invokeai.backend.model_management.models.base import ModelType +from invokeai.backend.model_management.models import ModelType, SilenceWarnings from ...backend.model_management.lora import ModelPatcher from ...backend.stable_diffusion import PipelineIntermediateState from ...backend.stable_diffusion.diffusers_pipeline import ( - ConditioningData, ControlNetData, StableDiffusionGeneratorPipeline, - image_resized_to_grid_as_tensor) -from ...backend.stable_diffusion.diffusion.shared_invokeai_diffusion import \ - PostprocessingSettings + ConditioningData, + ControlNetData, + StableDiffusionGeneratorPipeline, + image_resized_to_grid_as_tensor, +) +from ...backend.stable_diffusion.diffusion.shared_invokeai_diffusion import PostprocessingSettings from ...backend.stable_diffusion.schedulers import SCHEDULER_MAP from ...backend.util.devices import choose_torch_device, torch_dtype, choose_precision from ..models.image import ImageCategory, ImageField, ResourceOrigin -from .baseinvocation import (BaseInvocation, BaseInvocationOutput, - InvocationConfig, InvocationContext) +from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext from .compel import ConditioningField from .controlnet_image_processors import ControlField from .image import ImageOutput @@ -46,8 +47,7 @@ DEFAULT_PRECISION = choose_precision(choose_torch_device()) class LatentsField(BaseModel): """A latents field used for passing latents between invocations""" - latents_name: Optional[str] = Field( - default=None, description="The name of the latents") + latents_name: Optional[str] = Field(default=None, description="The name of the latents") class Config: schema_extra = {"required": ["latents_name"]} @@ -55,14 +55,15 @@ class LatentsField(BaseModel): class LatentsOutput(BaseInvocationOutput): """Base class for invocations that output latents""" - #fmt: off + + # fmt: off type: Literal["latents_output"] = "latents_output" # Inputs latents: LatentsField = Field(default=None, description="The output latents") width: int = Field(description="The width of the latents in pixels") height: int = Field(description="The height of the latents in pixels") - #fmt: on + # fmt: on def build_latents_output(latents_name: str, latents: torch.Tensor): @@ -73,9 +74,7 @@ def build_latents_output(latents_name: str, latents: torch.Tensor): ) -SAMPLER_NAME_VALUES = Literal[ - tuple(list(SCHEDULER_MAP.keys())) -] +SAMPLER_NAME_VALUES = Literal[tuple(list(SCHEDULER_MAP.keys()))] def get_scheduler( @@ -83,11 +82,10 @@ def get_scheduler( scheduler_info: ModelInfo, scheduler_name: str, ) -> Scheduler: - scheduler_class, scheduler_extra_config = SCHEDULER_MAP.get( - scheduler_name, SCHEDULER_MAP['ddim'] - ) + scheduler_class, scheduler_extra_config = SCHEDULER_MAP.get(scheduler_name, SCHEDULER_MAP["ddim"]) orig_scheduler_info = context.services.model_manager.get_model( - **scheduler_info.dict(), context=context, + **scheduler_info.dict(), + context=context, ) with orig_scheduler_info as orig_scheduler: scheduler_config = orig_scheduler.config @@ -102,7 +100,7 @@ def get_scheduler( scheduler = scheduler_class.from_config(scheduler_config) # hack copied over from generate.py - if not hasattr(scheduler, 'uses_inpainting_model'): + if not hasattr(scheduler, "uses_inpainting_model"): scheduler.uses_inpainting_model = lambda: False return scheduler @@ -123,8 +121,8 @@ class TextToLatentsInvocation(BaseInvocation): scheduler: SAMPLER_NAME_VALUES = Field(default="euler", description="The scheduler to use" ) unet: UNetField = Field(default=None, description="UNet submodel") control: Union[ControlField, list[ControlField]] = Field(default=None, description="The control to use") - #seamless: bool = Field(default=False, description="Whether or not to generate an image that can tile without seams", ) - #seamless_axes: str = Field(default="", description="The axes to tile the image on, 'x' and/or 'y'") + # seamless: bool = Field(default=False, description="Whether or not to generate an image that can tile without seams", ) + # seamless_axes: str = Field(default="", description="The axes to tile the image on, 'x' and/or 'y'") # fmt: on @validator("cfg_scale") @@ -133,10 +131,10 @@ class TextToLatentsInvocation(BaseInvocation): if isinstance(v, list): for i in v: if i < 1: - raise ValueError('cfg_scale must be greater than 1') + raise ValueError("cfg_scale must be greater than 1") else: if v < 1: - raise ValueError('cfg_scale must be greater than 1') + raise ValueError("cfg_scale must be greater than 1") return v # Schema customisation @@ -149,8 +147,8 @@ class TextToLatentsInvocation(BaseInvocation): "model": "model", "control": "control", # "cfg_scale": "float", - "cfg_scale": "number" - } + "cfg_scale": "number", + }, }, } @@ -190,16 +188,14 @@ class TextToLatentsInvocation(BaseInvocation): threshold=0.0, # threshold, warmup=0.2, # warmup, h_symmetry_time_pct=None, # h_symmetry_time_pct, - v_symmetry_time_pct=None # v_symmetry_time_pct, + v_symmetry_time_pct=None, # v_symmetry_time_pct, ), ) conditioning_data = conditioning_data.add_scheduler_args_if_applicable( scheduler, - # for ddim scheduler eta=0.0, # ddim_eta - # for ancestral and sde schedulers generator=torch.Generator(device=unet.device).manual_seed(0), ) @@ -247,7 +243,6 @@ class TextToLatentsInvocation(BaseInvocation): exit_stack: ExitStack, do_classifier_free_guidance: bool = True, ) -> List[ControlNetData]: - # assuming fixed dimensional scaling of 8:1 for image:latents control_height_resize = latents_shape[2] * 8 control_width_resize = latents_shape[3] * 8 @@ -261,7 +256,7 @@ class TextToLatentsInvocation(BaseInvocation): control_list = control_input else: control_list = None - if (control_list is None): + if control_list is None: control_data = None # from above handling, any control that is not None should now be of type list[ControlField] else: @@ -281,9 +276,7 @@ class TextToLatentsInvocation(BaseInvocation): control_models.append(control_model) control_image_field = control_info.image - input_image = context.services.images.get_pil_image( - control_image_field.image_name - ) + input_image = context.services.images.get_pil_image(control_image_field.image_name) # self.image.image_type, self.image.image_name # FIXME: still need to test with different widths, heights, devices, dtypes # and add in batch_size, num_images_per_prompt? @@ -318,69 +311,71 @@ class TextToLatentsInvocation(BaseInvocation): @torch.no_grad() def invoke(self, context: InvocationContext) -> LatentsOutput: - noise = context.services.latents.get(self.noise.latents_name) + with SilenceWarnings(): + noise = context.services.latents.get(self.noise.latents_name) - # Get the source node id (we are invoking the prepared node) - graph_execution_state = context.services.graph_execution_manager.get( - context.graph_execution_state_id - ) - source_node_id = graph_execution_state.prepared_source_mapping[self.id] + # Get the source node id (we are invoking the prepared node) + graph_execution_state = context.services.graph_execution_manager.get(context.graph_execution_state_id) + source_node_id = graph_execution_state.prepared_source_mapping[self.id] - def step_callback(state: PipelineIntermediateState): - self.dispatch_progress(context, source_node_id, state) + def step_callback(state: PipelineIntermediateState): + self.dispatch_progress(context, source_node_id, state) - def _lora_loader(): - for lora in self.unet.loras: - lora_info = context.services.model_manager.get_model( - **lora.dict(exclude={"weight"}), context=context, - ) - yield (lora_info.context.model, lora.weight) - del lora_info - return + def _lora_loader(): + for lora in self.unet.loras: + lora_info = context.services.model_manager.get_model( + **lora.dict(exclude={"weight"}), + context=context, + ) + yield (lora_info.context.model, lora.weight) + del lora_info + return - unet_info = context.services.model_manager.get_model( - **self.unet.unet.dict(), context=context, - ) - with ExitStack() as exit_stack,\ - ModelPatcher.apply_lora_unet(unet_info.context.model, _lora_loader()),\ - unet_info as unet: - - noise = noise.to(device=unet.device, dtype=unet.dtype) - - scheduler = get_scheduler( + unet_info = context.services.model_manager.get_model( + **self.unet.unet.dict(), context=context, - scheduler_info=self.unet.scheduler, - scheduler_name=self.scheduler, ) + with ExitStack() as exit_stack, ModelPatcher.apply_lora_unet( + unet_info.context.model, _lora_loader() + ), unet_info as unet: + noise = noise.to(device=unet.device, dtype=unet.dtype) - pipeline = self.create_pipeline(unet, scheduler) - conditioning_data = self.get_conditioning_data(context, scheduler, unet) + scheduler = get_scheduler( + context=context, + scheduler_info=self.unet.scheduler, + scheduler_name=self.scheduler, + ) - control_data = self.prep_control_data( - model=pipeline, context=context, control_input=self.control, - latents_shape=noise.shape, - # do_classifier_free_guidance=(self.cfg_scale >= 1.0)) - do_classifier_free_guidance=True, - exit_stack=exit_stack, - ) + pipeline = self.create_pipeline(unet, scheduler) + conditioning_data = self.get_conditioning_data(context, scheduler, unet) - # TODO: Verify the noise is the right size - result_latents, result_attention_map_saver = pipeline.latents_from_embeddings( - latents=torch.zeros_like(noise, dtype=torch_dtype(unet.device)), - noise=noise, - num_inference_steps=self.steps, - conditioning_data=conditioning_data, - control_data=control_data, # list[ControlNetData] - callback=step_callback, - ) + control_data = self.prep_control_data( + model=pipeline, + context=context, + control_input=self.control, + latents_shape=noise.shape, + # do_classifier_free_guidance=(self.cfg_scale >= 1.0)) + do_classifier_free_guidance=True, + exit_stack=exit_stack, + ) - # https://discuss.huggingface.co/t/memory-usage-by-later-pipeline-stages/23699 - result_latents = result_latents.to("cpu") - torch.cuda.empty_cache() + # TODO: Verify the noise is the right size + result_latents, result_attention_map_saver = pipeline.latents_from_embeddings( + latents=torch.zeros_like(noise, dtype=torch_dtype(unet.device)), + noise=noise, + num_inference_steps=self.steps, + conditioning_data=conditioning_data, + control_data=control_data, # list[ControlNetData] + callback=step_callback, + ) - name = f'{context.graph_execution_state_id}__{self.id}' - context.services.latents.save(name, result_latents) - return build_latents_output(latents_name=name, latents=result_latents) + # https://discuss.huggingface.co/t/memory-usage-by-later-pipeline-stages/23699 + result_latents = result_latents.to("cpu") + torch.cuda.empty_cache() + + name = f"{context.graph_execution_state_id}__{self.id}" + context.services.latents.save(name, result_latents) + return build_latents_output(latents_name=name, latents=result_latents) class LatentsToLatentsInvocation(TextToLatentsInvocation): @@ -389,11 +384,8 @@ class LatentsToLatentsInvocation(TextToLatentsInvocation): type: Literal["l2l"] = "l2l" # Inputs - latents: Optional[LatentsField] = Field( - description="The latents to use as a base image") - strength: float = Field( - default=0.7, ge=0, le=1, - description="The strength of the latents to use") + latents: Optional[LatentsField] = Field(description="The latents to use as a base image") + strength: float = Field(default=0.7, ge=0, le=1, description="The strength of the latents to use") # Schema customisation class Config(InvocationConfig): @@ -405,87 +397,89 @@ class LatentsToLatentsInvocation(TextToLatentsInvocation): "model": "model", "control": "control", "cfg_scale": "number", - } + }, }, } @torch.no_grad() def invoke(self, context: InvocationContext) -> LatentsOutput: - noise = context.services.latents.get(self.noise.latents_name) - latent = context.services.latents.get(self.latents.latents_name) + with SilenceWarnings(): # this quenches NSFW nag from diffusers + noise = context.services.latents.get(self.noise.latents_name) + latent = context.services.latents.get(self.latents.latents_name) - # Get the source node id (we are invoking the prepared node) - graph_execution_state = context.services.graph_execution_manager.get( - context.graph_execution_state_id - ) - source_node_id = graph_execution_state.prepared_source_mapping[self.id] + # Get the source node id (we are invoking the prepared node) + graph_execution_state = context.services.graph_execution_manager.get(context.graph_execution_state_id) + source_node_id = graph_execution_state.prepared_source_mapping[self.id] - def step_callback(state: PipelineIntermediateState): - self.dispatch_progress(context, source_node_id, state) + def step_callback(state: PipelineIntermediateState): + self.dispatch_progress(context, source_node_id, state) - def _lora_loader(): - for lora in self.unet.loras: - lora_info = context.services.model_manager.get_model( - **lora.dict(exclude={"weight"}), context=context, - ) - yield (lora_info.context.model, lora.weight) - del lora_info - return + def _lora_loader(): + for lora in self.unet.loras: + lora_info = context.services.model_manager.get_model( + **lora.dict(exclude={"weight"}), + context=context, + ) + yield (lora_info.context.model, lora.weight) + del lora_info + return - unet_info = context.services.model_manager.get_model( - **self.unet.unet.dict(), context=context, - ) - with ExitStack() as exit_stack,\ - ModelPatcher.apply_lora_unet(unet_info.context.model, _lora_loader()),\ - unet_info as unet: - - noise = noise.to(device=unet.device, dtype=unet.dtype) - latent = latent.to(device=unet.device, dtype=unet.dtype) - - scheduler = get_scheduler( + unet_info = context.services.model_manager.get_model( + **self.unet.unet.dict(), context=context, - scheduler_info=self.unet.scheduler, - scheduler_name=self.scheduler, ) + with ExitStack() as exit_stack, ModelPatcher.apply_lora_unet( + unet_info.context.model, _lora_loader() + ), unet_info as unet: + noise = noise.to(device=unet.device, dtype=unet.dtype) + latent = latent.to(device=unet.device, dtype=unet.dtype) - pipeline = self.create_pipeline(unet, scheduler) - conditioning_data = self.get_conditioning_data(context, scheduler, unet) + scheduler = get_scheduler( + context=context, + scheduler_info=self.unet.scheduler, + scheduler_name=self.scheduler, + ) - control_data = self.prep_control_data( - model=pipeline, context=context, control_input=self.control, - latents_shape=noise.shape, - # do_classifier_free_guidance=(self.cfg_scale >= 1.0)) - do_classifier_free_guidance=True, - exit_stack=exit_stack, - ) + pipeline = self.create_pipeline(unet, scheduler) + conditioning_data = self.get_conditioning_data(context, scheduler, unet) - # TODO: Verify the noise is the right size - initial_latents = latent if self.strength < 1.0 else torch.zeros_like( - latent, device=unet.device, dtype=latent.dtype - ) + control_data = self.prep_control_data( + model=pipeline, + context=context, + control_input=self.control, + latents_shape=noise.shape, + # do_classifier_free_guidance=(self.cfg_scale >= 1.0)) + do_classifier_free_guidance=True, + exit_stack=exit_stack, + ) - timesteps, _ = pipeline.get_img2img_timesteps( - self.steps, - self.strength, - device=unet.device, - ) + # TODO: Verify the noise is the right size + initial_latents = ( + latent if self.strength < 1.0 else torch.zeros_like(latent, device=unet.device, dtype=latent.dtype) + ) - result_latents, result_attention_map_saver = pipeline.latents_from_embeddings( - latents=initial_latents, - timesteps=timesteps, - noise=noise, - num_inference_steps=self.steps, - conditioning_data=conditioning_data, - control_data=control_data, # list[ControlNetData] - callback=step_callback - ) + timesteps, _ = pipeline.get_img2img_timesteps( + self.steps, + self.strength, + device=unet.device, + ) - # https://discuss.huggingface.co/t/memory-usage-by-later-pipeline-stages/23699 - result_latents = result_latents.to("cpu") - torch.cuda.empty_cache() + result_latents, result_attention_map_saver = pipeline.latents_from_embeddings( + latents=initial_latents, + timesteps=timesteps, + noise=noise, + num_inference_steps=self.steps, + conditioning_data=conditioning_data, + control_data=control_data, # list[ControlNetData] + callback=step_callback, + ) - name = f'{context.graph_execution_state_id}__{self.id}' - context.services.latents.save(name, result_latents) + # https://discuss.huggingface.co/t/memory-usage-by-later-pipeline-stages/23699 + result_latents = result_latents.to("cpu") + torch.cuda.empty_cache() + + name = f"{context.graph_execution_state_id}__{self.id}" + context.services.latents.save(name, result_latents) return build_latents_output(latents_name=name, latents=result_latents) @@ -496,14 +490,13 @@ class LatentsToImageInvocation(BaseInvocation): type: Literal["l2i"] = "l2i" # Inputs - latents: Optional[LatentsField] = Field( - description="The latents to generate an image from") + latents: Optional[LatentsField] = Field(description="The latents to generate an image from") vae: VaeField = Field(default=None, description="Vae submodel") - tiled: bool = Field( - default=False, - description="Decode latents by overlaping tiles(less memory consumption)") - fp32: bool = Field(DEFAULT_PRECISION=='float32', description="Decode in full precision") - metadata: Optional[CoreMetadata] = Field(default=None, description="Optional core metadata to be written to the image") + tiled: bool = Field(default=False, description="Decode latents by overlaping tiles (less memory consumption)") + fp32: bool = Field(DEFAULT_PRECISION == "float32", description="Decode in full precision") + metadata: Optional[CoreMetadata] = Field( + default=None, description="Optional core metadata to be written to the image" + ) # Schema customisation class Config(InvocationConfig): @@ -519,7 +512,8 @@ class LatentsToImageInvocation(BaseInvocation): latents = context.services.latents.get(self.latents.latents_name) vae_info = context.services.model_manager.get_model( - **self.vae.vae.dict(), context=context, + **self.vae.vae.dict(), + context=context, ) with vae_info as vae: @@ -586,8 +580,7 @@ class LatentsToImageInvocation(BaseInvocation): ) -LATENTS_INTERPOLATION_MODE = Literal["nearest", "linear", - "bilinear", "bicubic", "trilinear", "area", "nearest-exact"] +LATENTS_INTERPOLATION_MODE = Literal["nearest", "linear", "bilinear", "bicubic", "trilinear", "area", "nearest-exact"] class ResizeLatentsInvocation(BaseInvocation): @@ -596,36 +589,30 @@ class ResizeLatentsInvocation(BaseInvocation): type: Literal["lresize"] = "lresize" # Inputs - latents: Optional[LatentsField] = Field( - description="The latents to resize") - width: Union[int, None] = Field(default=512, - ge=64, multiple_of=8, description="The width to resize to (px)") - height: Union[int, None] = Field(default=512, - ge=64, multiple_of=8, description="The height to resize to (px)") - mode: LATENTS_INTERPOLATION_MODE = Field( - default="bilinear", description="The interpolation mode") + latents: Optional[LatentsField] = Field(description="The latents to resize") + width: Union[int, None] = Field(default=512, ge=64, multiple_of=8, description="The width to resize to (px)") + height: Union[int, None] = Field(default=512, ge=64, multiple_of=8, description="The height to resize to (px)") + mode: LATENTS_INTERPOLATION_MODE = Field(default="bilinear", description="The interpolation mode") antialias: bool = Field( - default=False, - description="Whether or not to antialias (applied in bilinear and bicubic modes only)") + default=False, description="Whether or not to antialias (applied in bilinear and bicubic modes only)" + ) class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Resize Latents", - "tags": ["latents", "resize"] - }, + "ui": {"title": "Resize Latents", "tags": ["latents", "resize"]}, } def invoke(self, context: InvocationContext) -> LatentsOutput: latents = context.services.latents.get(self.latents.latents_name) # TODO: - device=choose_torch_device() + device = choose_torch_device() resized_latents = torch.nn.functional.interpolate( - latents.to(device), size=(self.height // 8, self.width // 8), - mode=self.mode, antialias=self.antialias - if self.mode in ["bilinear", "bicubic"] else False, + latents.to(device), + size=(self.height // 8, self.width // 8), + mode=self.mode, + antialias=self.antialias if self.mode in ["bilinear", "bicubic"] else False, ) # https://discuss.huggingface.co/t/memory-usage-by-later-pipeline-stages/23699 @@ -644,35 +631,30 @@ class ScaleLatentsInvocation(BaseInvocation): type: Literal["lscale"] = "lscale" # Inputs - latents: Optional[LatentsField] = Field( - description="The latents to scale") - scale_factor: float = Field( - gt=0, description="The factor by which to scale the latents") - mode: LATENTS_INTERPOLATION_MODE = Field( - default="bilinear", description="The interpolation mode") + latents: Optional[LatentsField] = Field(description="The latents to scale") + scale_factor: float = Field(gt=0, description="The factor by which to scale the latents") + mode: LATENTS_INTERPOLATION_MODE = Field(default="bilinear", description="The interpolation mode") antialias: bool = Field( - default=False, - description="Whether or not to antialias (applied in bilinear and bicubic modes only)") + default=False, description="Whether or not to antialias (applied in bilinear and bicubic modes only)" + ) class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Scale Latents", - "tags": ["latents", "scale"] - }, + "ui": {"title": "Scale Latents", "tags": ["latents", "scale"]}, } def invoke(self, context: InvocationContext) -> LatentsOutput: latents = context.services.latents.get(self.latents.latents_name) # TODO: - device=choose_torch_device() + device = choose_torch_device() # resizing resized_latents = torch.nn.functional.interpolate( - latents.to(device), scale_factor=self.scale_factor, mode=self.mode, - antialias=self.antialias - if self.mode in ["bilinear", "bicubic"] else False, + latents.to(device), + scale_factor=self.scale_factor, + mode=self.mode, + antialias=self.antialias if self.mode in ["bilinear", "bicubic"] else False, ) # https://discuss.huggingface.co/t/memory-usage-by-later-pipeline-stages/23699 @@ -693,19 +675,13 @@ class ImageToLatentsInvocation(BaseInvocation): # Inputs image: Optional[ImageField] = Field(description="The image to encode") vae: VaeField = Field(default=None, description="Vae submodel") - tiled: bool = Field( - default=False, - description="Encode latents by overlaping tiles(less memory consumption)") - fp32: bool = Field(DEFAULT_PRECISION=='float32', description="Decode in full precision") - + tiled: bool = Field(default=False, description="Encode latents by overlaping tiles(less memory consumption)") + fp32: bool = Field(DEFAULT_PRECISION == "float32", description="Decode in full precision") # Schema customisation class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Image To Latents", - "tags": ["latents", "image"] - }, + "ui": {"title": "Image To Latents", "tags": ["latents", "image"]}, } @torch.no_grad() @@ -715,9 +691,10 @@ class ImageToLatentsInvocation(BaseInvocation): # ) image = context.services.images.get_pil_image(self.image.image_name) - #vae_info = context.services.model_manager.get_model(**self.vae.vae.dict()) + # vae_info = context.services.model_manager.get_model(**self.vae.vae.dict()) vae_info = context.services.model_manager.get_model( - **self.vae.vae.dict(), context=context, + **self.vae.vae.dict(), + context=context, ) image_tensor = image_resized_to_grid_as_tensor(image.convert("RGB")) @@ -744,12 +721,12 @@ class ImageToLatentsInvocation(BaseInvocation): vae.post_quant_conv.to(orig_dtype) vae.decoder.conv_in.to(orig_dtype) vae.decoder.mid_block.to(orig_dtype) - #else: + # else: # latents = latents.float() else: vae.to(dtype=torch.float16) - #latents = latents.half() + # latents = latents.half() if self.tiled: vae.enable_tiling() @@ -760,9 +737,7 @@ class ImageToLatentsInvocation(BaseInvocation): image_tensor = image_tensor.to(device=vae.device, dtype=vae.dtype) with torch.inference_mode(): image_tensor_dist = vae.encode(image_tensor).latent_dist - latents = image_tensor_dist.sample().to( - dtype=vae.dtype - ) # FIXME: uses torch.randn. make reproducible! + latents = image_tensor_dist.sample().to(dtype=vae.dtype) # FIXME: uses torch.randn. make reproducible! latents = vae.config.scaling_factor * latents latents = latents.to(dtype=orig_dtype) diff --git a/invokeai/app/invocations/math.py b/invokeai/app/invocations/math.py index 92cff04bf7..32b1ab2a39 100644 --- a/invokeai/app/invocations/math.py +++ b/invokeai/app/invocations/math.py @@ -54,10 +54,7 @@ class AddInvocation(BaseInvocation, MathInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Add", - "tags": ["math", "add"] - }, + "ui": {"title": "Add", "tags": ["math", "add"]}, } def invoke(self, context: InvocationContext) -> IntOutput: @@ -75,10 +72,7 @@ class SubtractInvocation(BaseInvocation, MathInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Subtract", - "tags": ["math", "subtract"] - }, + "ui": {"title": "Subtract", "tags": ["math", "subtract"]}, } def invoke(self, context: InvocationContext) -> IntOutput: @@ -96,10 +90,7 @@ class MultiplyInvocation(BaseInvocation, MathInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Multiply", - "tags": ["math", "multiply"] - }, + "ui": {"title": "Multiply", "tags": ["math", "multiply"]}, } def invoke(self, context: InvocationContext) -> IntOutput: @@ -117,10 +108,7 @@ class DivideInvocation(BaseInvocation, MathInvocationConfig): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Divide", - "tags": ["math", "divide"] - }, + "ui": {"title": "Divide", "tags": ["math", "divide"]}, } def invoke(self, context: InvocationContext) -> IntOutput: @@ -140,10 +128,7 @@ class RandomIntInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Random Integer", - "tags": ["math", "random", "integer"] - }, + "ui": {"title": "Random Integer", "tags": ["math", "random", "integer"]}, } def invoke(self, context: InvocationContext) -> IntOutput: diff --git a/invokeai/app/invocations/metadata.py b/invokeai/app/invocations/metadata.py index ab02487cdc..3588ef4ebe 100644 --- a/invokeai/app/invocations/metadata.py +++ b/invokeai/app/invocations/metadata.py @@ -38,9 +38,7 @@ class CoreMetadata(BaseModel): description="The number of skipped CLIP layers", ) model: MainModelField = Field(description="The main model used for inference") - controlnets: list[ControlField] = Field( - description="The ControlNets used for inference" - ) + controlnets: list[ControlField] = Field(description="The ControlNets used for inference") loras: list[LoRAMetadataField] = Field(description="The LoRAs used for inference") vae: Union[VAEModelField, None] = Field( default=None, @@ -52,38 +50,24 @@ class CoreMetadata(BaseModel): default=None, description="The strength used for latents-to-latents", ) - init_image: Union[str, None] = Field( - default=None, description="The name of the initial image" - ) + init_image: Union[str, None] = Field(default=None, description="The name of the initial image") # SDXL - positive_style_prompt: Union[str, None] = Field( - default=None, description="The positive style prompt parameter" - ) - negative_style_prompt: Union[str, None] = Field( - default=None, description="The negative style prompt parameter" - ) + positive_style_prompt: Union[str, None] = Field(default=None, description="The positive style prompt parameter") + negative_style_prompt: Union[str, None] = Field(default=None, description="The negative style prompt parameter") # SDXL Refiner - refiner_model: Union[MainModelField, None] = Field( - default=None, description="The SDXL Refiner model used" - ) + refiner_model: Union[MainModelField, None] = Field(default=None, description="The SDXL Refiner model used") refiner_cfg_scale: Union[float, None] = Field( default=None, description="The classifier-free guidance scale parameter used for the refiner", ) - refiner_steps: Union[int, None] = Field( - default=None, description="The number of steps used for the refiner" - ) - refiner_scheduler: Union[str, None] = Field( - default=None, description="The scheduler used for the refiner" - ) + refiner_steps: Union[int, None] = Field(default=None, description="The number of steps used for the refiner") + refiner_scheduler: Union[str, None] = Field(default=None, description="The scheduler used for the refiner") refiner_aesthetic_store: Union[float, None] = Field( default=None, description="The aesthetic score used for the refiner" ) - refiner_start: Union[float, None] = Field( - default=None, description="The start value used for refiner denoising" - ) + refiner_start: Union[float, None] = Field(default=None, description="The start value used for refiner denoising") class ImageMetadata(BaseModel): @@ -93,9 +77,7 @@ class ImageMetadata(BaseModel): default=None, description="The image's core metadata, if it was created in the Linear or Canvas UI", ) - graph: Optional[dict] = Field( - default=None, description="The graph that created the image" - ) + graph: Optional[dict] = Field(default=None, description="The graph that created the image") class MetadataAccumulatorOutput(BaseInvocationOutput): @@ -127,50 +109,34 @@ class MetadataAccumulatorInvocation(BaseInvocation): description="The number of skipped CLIP layers", ) model: MainModelField = Field(description="The main model used for inference") - controlnets: list[ControlField] = Field( - description="The ControlNets used for inference" - ) + controlnets: list[ControlField] = Field(description="The ControlNets used for inference") loras: list[LoRAMetadataField] = Field(description="The LoRAs used for inference") strength: Union[float, None] = Field( default=None, description="The strength used for latents-to-latents", ) - init_image: Union[str, None] = Field( - default=None, description="The name of the initial image" - ) + init_image: Union[str, None] = Field(default=None, description="The name of the initial image") vae: Union[VAEModelField, None] = Field( default=None, description="The VAE used for decoding, if the main model's default was not used", ) # SDXL - positive_style_prompt: Union[str, None] = Field( - default=None, description="The positive style prompt parameter" - ) - negative_style_prompt: Union[str, None] = Field( - default=None, description="The negative style prompt parameter" - ) + positive_style_prompt: Union[str, None] = Field(default=None, description="The positive style prompt parameter") + negative_style_prompt: Union[str, None] = Field(default=None, description="The negative style prompt parameter") # SDXL Refiner - refiner_model: Union[MainModelField, None] = Field( - default=None, description="The SDXL Refiner model used" - ) + refiner_model: Union[MainModelField, None] = Field(default=None, description="The SDXL Refiner model used") refiner_cfg_scale: Union[float, None] = Field( default=None, description="The classifier-free guidance scale parameter used for the refiner", ) - refiner_steps: Union[int, None] = Field( - default=None, description="The number of steps used for the refiner" - ) - refiner_scheduler: Union[str, None] = Field( - default=None, description="The scheduler used for the refiner" - ) + refiner_steps: Union[int, None] = Field(default=None, description="The number of steps used for the refiner") + refiner_scheduler: Union[str, None] = Field(default=None, description="The scheduler used for the refiner") refiner_aesthetic_store: Union[float, None] = Field( default=None, description="The aesthetic score used for the refiner" ) - refiner_start: Union[float, None] = Field( - default=None, description="The start value used for refiner denoising" - ) + refiner_start: Union[float, None] = Field(default=None, description="The start value used for refiner denoising") class Config(InvocationConfig): schema_extra = { diff --git a/invokeai/app/invocations/model.py b/invokeai/app/invocations/model.py index 5f1a91ae3b..2388d12e25 100644 --- a/invokeai/app/invocations/model.py +++ b/invokeai/app/invocations/model.py @@ -4,17 +4,14 @@ from typing import List, Literal, Optional, Union from pydantic import BaseModel, Field from ...backend.model_management import BaseModelType, ModelType, SubModelType -from .baseinvocation import (BaseInvocation, BaseInvocationOutput, - InvocationConfig, InvocationContext) +from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext class ModelInfo(BaseModel): model_name: str = Field(description="Info to load submodel") base_model: BaseModelType = Field(description="Base model") model_type: ModelType = Field(description="Info to load submodel") - submodel: Optional[SubModelType] = Field( - default=None, description="Info to load submodel" - ) + submodel: Optional[SubModelType] = Field(default=None, description="Info to load submodel") class LoraInfo(ModelInfo): @@ -33,6 +30,7 @@ class ClipField(BaseModel): skipped_layers: int = Field(description="Number of skipped layers in text_encoder") loras: List[LoraInfo] = Field(description="Loras to apply on model loading") + class VaeField(BaseModel): # TODO: better naming? vae: ModelInfo = Field(description="Info to load vae submodel") @@ -49,6 +47,7 @@ class ModelLoaderOutput(BaseInvocationOutput): vae: VaeField = Field(default=None, description="Vae submodel") # fmt: on + class MainModelField(BaseModel): """Main model field""" @@ -62,6 +61,7 @@ class LoRAModelField(BaseModel): model_name: str = Field(description="Name of the LoRA model") base_model: BaseModelType = Field(description="Base model") + class MainModelLoaderInvocation(BaseInvocation): """Loads a main model, outputting its submodels.""" @@ -180,7 +180,7 @@ class MainModelLoaderInvocation(BaseInvocation): ), ) - + class LoraLoaderOutput(BaseInvocationOutput): """Model loader output""" @@ -197,9 +197,7 @@ class LoraLoaderInvocation(BaseInvocation): type: Literal["lora_loader"] = "lora_loader" - lora: Union[LoRAModelField, None] = Field( - default=None, description="Lora model name" - ) + lora: Union[LoRAModelField, None] = Field(default=None, description="Lora model name") weight: float = Field(default=0.75, description="With what weight to apply lora") unet: Optional[UNetField] = Field(description="UNet model for applying lora") @@ -228,14 +226,10 @@ class LoraLoaderInvocation(BaseInvocation): ): raise Exception(f"Unkown lora name: {lora_name}!") - if self.unet is not None and any( - lora.model_name == lora_name for lora in self.unet.loras - ): + if self.unet is not None and any(lora.model_name == lora_name for lora in self.unet.loras): raise Exception(f'Lora "{lora_name}" already applied to unet') - if self.clip is not None and any( - lora.model_name == lora_name for lora in self.clip.loras - ): + if self.clip is not None and any(lora.model_name == lora_name for lora in self.clip.loras): raise Exception(f'Lora "{lora_name}" already applied to clip') output = LoraLoaderOutput() diff --git a/invokeai/app/invocations/param_easing.py b/invokeai/app/invocations/param_easing.py index 70d3ddc7d2..f910e5379c 100644 --- a/invokeai/app/invocations/param_easing.py +++ b/invokeai/app/invocations/param_easing.py @@ -12,16 +12,37 @@ import matplotlib.pyplot as plt from easing_functions import ( LinearInOut, - QuadEaseInOut, QuadEaseIn, QuadEaseOut, - CubicEaseInOut, CubicEaseIn, CubicEaseOut, - QuarticEaseInOut, QuarticEaseIn, QuarticEaseOut, - QuinticEaseInOut, QuinticEaseIn, QuinticEaseOut, - SineEaseInOut, SineEaseIn, SineEaseOut, - CircularEaseIn, CircularEaseInOut, CircularEaseOut, - ExponentialEaseInOut, ExponentialEaseIn, ExponentialEaseOut, - ElasticEaseIn, ElasticEaseInOut, ElasticEaseOut, - BackEaseIn, BackEaseInOut, BackEaseOut, - BounceEaseIn, BounceEaseInOut, BounceEaseOut) + QuadEaseInOut, + QuadEaseIn, + QuadEaseOut, + CubicEaseInOut, + CubicEaseIn, + CubicEaseOut, + QuarticEaseInOut, + QuarticEaseIn, + QuarticEaseOut, + QuinticEaseInOut, + QuinticEaseIn, + QuinticEaseOut, + SineEaseInOut, + SineEaseIn, + SineEaseOut, + CircularEaseIn, + CircularEaseInOut, + CircularEaseOut, + ExponentialEaseInOut, + ExponentialEaseIn, + ExponentialEaseOut, + ElasticEaseIn, + ElasticEaseInOut, + ElasticEaseOut, + BackEaseIn, + BackEaseInOut, + BackEaseOut, + BounceEaseIn, + BounceEaseInOut, + BounceEaseOut, +) from .baseinvocation import ( BaseInvocation, @@ -45,17 +66,12 @@ class FloatLinearRangeInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Linear Range (Float)", - "tags": ["math", "float", "linear", "range"] - }, + "ui": {"title": "Linear Range (Float)", "tags": ["math", "float", "linear", "range"]}, } def invoke(self, context: InvocationContext) -> FloatCollectionOutput: param_list = list(np.linspace(self.start, self.stop, self.steps)) - return FloatCollectionOutput( - collection=param_list - ) + return FloatCollectionOutput(collection=param_list) EASING_FUNCTIONS_MAP = { @@ -92,9 +108,7 @@ EASING_FUNCTIONS_MAP = { "BounceInOut": BounceEaseInOut, } -EASING_FUNCTION_KEYS: Any = Literal[ - tuple(list(EASING_FUNCTIONS_MAP.keys())) -] +EASING_FUNCTION_KEYS: Any = Literal[tuple(list(EASING_FUNCTIONS_MAP.keys()))] # actually I think for now could just use CollectionOutput (which is list[Any] @@ -123,13 +137,9 @@ class StepParamEasingInvocation(BaseInvocation): class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Param Easing By Step", - "tags": ["param", "step", "easing"] - }, + "ui": {"title": "Param Easing By Step", "tags": ["param", "step", "easing"]}, } - def invoke(self, context: InvocationContext) -> FloatCollectionOutput: log_diagnostics = False # convert from start_step_percent to nearest step <= (steps * start_step_percent) @@ -170,12 +180,13 @@ class StepParamEasingInvocation(BaseInvocation): # and create reverse copy of list[1:end-1] # but if even then number_of_steps/2 === ceil(number_of_steps/2), so can just use ceil always - base_easing_duration = int(np.ceil(num_easing_steps/2.0)) - if log_diagnostics: context.services.logger.debug("base easing duration: " + str(base_easing_duration)) - even_num_steps = (num_easing_steps % 2 == 0) # even number of steps - easing_function = easing_class(start=self.start_value, - end=self.end_value, - duration=base_easing_duration - 1) + base_easing_duration = int(np.ceil(num_easing_steps / 2.0)) + if log_diagnostics: + context.services.logger.debug("base easing duration: " + str(base_easing_duration)) + even_num_steps = num_easing_steps % 2 == 0 # even number of steps + easing_function = easing_class( + start=self.start_value, end=self.end_value, duration=base_easing_duration - 1 + ) base_easing_vals = list() for step_index in range(base_easing_duration): easing_val = easing_function.ease(step_index) @@ -214,9 +225,7 @@ class StepParamEasingInvocation(BaseInvocation): # else: # no mirroring (default) - easing_function = easing_class(start=self.start_value, - end=self.end_value, - duration=num_easing_steps - 1) + easing_function = easing_class(start=self.start_value, end=self.end_value, duration=num_easing_steps - 1) for step_index in range(num_easing_steps): step_val = easing_function.ease(step_index) easing_list.append(step_val) @@ -240,13 +249,11 @@ class StepParamEasingInvocation(BaseInvocation): ax = plt.gca() ax.xaxis.set_major_locator(MaxNLocator(integer=True)) buf = io.BytesIO() - plt.savefig(buf, format='png') + plt.savefig(buf, format="png") buf.seek(0) im = PIL.Image.open(buf) im.show() buf.close() # output array of size steps, each entry list[i] is param value for step i - return FloatCollectionOutput( - collection=param_list - ) + return FloatCollectionOutput(collection=param_list) diff --git a/invokeai/app/invocations/params.py b/invokeai/app/invocations/params.py index 0f01d65948..127eefa21d 100644 --- a/invokeai/app/invocations/params.py +++ b/invokeai/app/invocations/params.py @@ -4,67 +4,63 @@ from typing import Literal from pydantic import Field -from .baseinvocation import (BaseInvocation, BaseInvocationOutput, - InvocationConfig, InvocationContext) +from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext from .math import FloatOutput, IntOutput # Pass-through parameter nodes - used by subgraphs + class ParamIntInvocation(BaseInvocation): """An integer parameter""" - #fmt: off + + # fmt: off type: Literal["param_int"] = "param_int" a: int = Field(default=0, description="The integer value") - #fmt: on + # fmt: on class Config(InvocationConfig): - schema_extra = { - "ui": { - "tags": ["param", "integer"], - "title": "Integer Parameter" - }, - } + schema_extra = { + "ui": {"tags": ["param", "integer"], "title": "Integer Parameter"}, + } def invoke(self, context: InvocationContext) -> IntOutput: return IntOutput(a=self.a) + class ParamFloatInvocation(BaseInvocation): """A float parameter""" - #fmt: off + + # fmt: off type: Literal["param_float"] = "param_float" param: float = Field(default=0.0, description="The float value") - #fmt: on + # fmt: on class Config(InvocationConfig): - schema_extra = { - "ui": { - "tags": ["param", "float"], - "title": "Float Parameter" - }, - } + schema_extra = { + "ui": {"tags": ["param", "float"], "title": "Float Parameter"}, + } def invoke(self, context: InvocationContext) -> FloatOutput: return FloatOutput(param=self.param) + class StringOutput(BaseInvocationOutput): """A string output""" + type: Literal["string_output"] = "string_output" text: str = Field(default=None, description="The output string") class ParamStringInvocation(BaseInvocation): """A string parameter""" - type: Literal['param_string'] = 'param_string' - text: str = Field(default='', description='The string value') + + type: Literal["param_string"] = "param_string" + text: str = Field(default="", description="The string value") class Config(InvocationConfig): - schema_extra = { - "ui": { - "tags": ["param", "string"], - "title": "String Parameter" - }, - } + schema_extra = { + "ui": {"tags": ["param", "string"], "title": "String Parameter"}, + } def invoke(self, context: InvocationContext) -> StringOutput: return StringOutput(text=self.text) - \ No newline at end of file diff --git a/invokeai/app/invocations/prompt.py b/invokeai/app/invocations/prompt.py index 5d07a88759..83a397ddcf 100644 --- a/invokeai/app/invocations/prompt.py +++ b/invokeai/app/invocations/prompt.py @@ -7,19 +7,21 @@ from pydantic import Field, validator from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext from dynamicprompts.generators import RandomPromptGenerator, CombinatorialPromptGenerator + class PromptOutput(BaseInvocationOutput): """Base class for invocations that output a prompt""" - #fmt: off + + # fmt: off type: Literal["prompt"] = "prompt" prompt: str = Field(default=None, description="The output prompt") - #fmt: on + # fmt: on class Config: schema_extra = { - 'required': [ - 'type', - 'prompt', + "required": [ + "type", + "prompt", ] } @@ -44,16 +46,11 @@ class DynamicPromptInvocation(BaseInvocation): type: Literal["dynamic_prompt"] = "dynamic_prompt" prompt: str = Field(description="The prompt to parse with dynamicprompts") max_prompts: int = Field(default=1, description="The number of prompts to generate") - combinatorial: bool = Field( - default=False, description="Whether to use the combinatorial generator" - ) + combinatorial: bool = Field(default=False, description="Whether to use the combinatorial generator") class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Dynamic Prompt", - "tags": ["prompt", "dynamic"] - }, + "ui": {"title": "Dynamic Prompt", "tags": ["prompt", "dynamic"]}, } def invoke(self, context: InvocationContext) -> PromptCollectionOutput: @@ -65,10 +62,11 @@ class DynamicPromptInvocation(BaseInvocation): prompts = generator.generate(self.prompt, num_images=self.max_prompts) return PromptCollectionOutput(prompt_collection=prompts, count=len(prompts)) - + class PromptsFromFileInvocation(BaseInvocation): - '''Loads prompts from a text file''' + """Loads prompts from a text file""" + # fmt: off type: Literal['prompt_from_file'] = 'prompt_from_file' @@ -78,14 +76,11 @@ class PromptsFromFileInvocation(BaseInvocation): post_prompt: Optional[str] = Field(description="String to append to each prompt") start_line: int = Field(default=1, ge=1, description="Line in the file to start start from") max_prompts: int = Field(default=1, ge=0, description="Max lines to read from file (0=all)") - #fmt: on + # fmt: on class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Prompts From File", - "tags": ["prompt", "file"] - }, + "ui": {"title": "Prompts From File", "tags": ["prompt", "file"]}, } @validator("file_path") @@ -103,11 +98,13 @@ class PromptsFromFileInvocation(BaseInvocation): with open(file_path) as f: for i, line in enumerate(f): if i >= start_line and i < end_line: - prompts.append((pre_prompt or '') + line.strip() + (post_prompt or '')) + prompts.append((pre_prompt or "") + line.strip() + (post_prompt or "")) if i >= end_line: break return prompts def invoke(self, context: InvocationContext) -> PromptCollectionOutput: - prompts = self.promptsFromFile(self.file_path, self.pre_prompt, self.post_prompt, self.start_line, self.max_prompts) + prompts = self.promptsFromFile( + self.file_path, self.pre_prompt, self.post_prompt, self.start_line, self.max_prompts + ) return PromptCollectionOutput(prompt_collection=prompts, count=len(prompts)) diff --git a/invokeai/app/invocations/sdxl.py b/invokeai/app/invocations/sdxl.py index 3b4d3a9d86..7dfceba853 100644 --- a/invokeai/app/invocations/sdxl.py +++ b/invokeai/app/invocations/sdxl.py @@ -7,13 +7,13 @@ from pydantic import Field, validator from ...backend.model_management import ModelType, SubModelType from invokeai.app.util.step_callback import stable_diffusion_xl_step_callback -from .baseinvocation import (BaseInvocation, BaseInvocationOutput, - InvocationConfig, InvocationContext) +from .baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext from .model import UNetField, ClipField, VaeField, MainModelField, ModelInfo from .compel import ConditioningField from .latent import LatentsField, SAMPLER_NAME_VALUES, LatentsOutput, get_scheduler, build_latents_output + class SDXLModelLoaderOutput(BaseInvocationOutput): """SDXL base model loader output""" @@ -26,16 +26,19 @@ class SDXLModelLoaderOutput(BaseInvocationOutput): vae: VaeField = Field(default=None, description="Vae submodel") # fmt: on + class SDXLRefinerModelLoaderOutput(BaseInvocationOutput): """SDXL refiner model loader output""" + # fmt: off type: Literal["sdxl_refiner_model_loader_output"] = "sdxl_refiner_model_loader_output" unet: UNetField = Field(default=None, description="UNet submodel") clip2: ClipField = Field(default=None, description="Tokenizer and text_encoder submodels") vae: VaeField = Field(default=None, description="Vae submodel") # fmt: on - #fmt: on - + # fmt: on + + class SDXLModelLoaderInvocation(BaseInvocation): """Loads an sdxl base model, outputting its submodels.""" @@ -125,8 +128,10 @@ class SDXLModelLoaderInvocation(BaseInvocation): ), ) + class SDXLRefinerModelLoaderInvocation(BaseInvocation): """Loads an sdxl refiner model, outputting its submodels.""" + type: Literal["sdxl_refiner_model_loader"] = "sdxl_refiner_model_loader" model: MainModelField = Field(description="The model to load") @@ -196,7 +201,8 @@ class SDXLRefinerModelLoaderInvocation(BaseInvocation): ), ), ) - + + # Text to image class SDXLTextToLatentsInvocation(BaseInvocation): """Generates latents from conditionings.""" @@ -213,9 +219,9 @@ class SDXLTextToLatentsInvocation(BaseInvocation): scheduler: SAMPLER_NAME_VALUES = Field(default="euler", description="The scheduler to use" ) unet: UNetField = Field(default=None, description="UNet submodel") denoising_end: float = Field(default=1.0, gt=0, le=1, description="") - #control: Union[ControlField, list[ControlField]] = Field(default=None, description="The control to use") - #seamless: bool = Field(default=False, description="Whether or not to generate an image that can tile without seams", ) - #seamless_axes: str = Field(default="", description="The axes to tile the image on, 'x' and/or 'y'") + # control: Union[ControlField, list[ControlField]] = Field(default=None, description="The control to use") + # seamless: bool = Field(default=False, description="Whether or not to generate an image that can tile without seams", ) + # seamless_axes: str = Field(default="", description="The axes to tile the image on, 'x' and/or 'y'") # fmt: on @validator("cfg_scale") @@ -224,10 +230,10 @@ class SDXLTextToLatentsInvocation(BaseInvocation): if isinstance(v, list): for i in v: if i < 1: - raise ValueError('cfg_scale must be greater than 1') + raise ValueError("cfg_scale must be greater than 1") else: if v < 1: - raise ValueError('cfg_scale must be greater than 1') + raise ValueError("cfg_scale must be greater than 1") return v # Schema customisation @@ -237,10 +243,10 @@ class SDXLTextToLatentsInvocation(BaseInvocation): "title": "SDXL Text To Latents", "tags": ["latents"], "type_hints": { - "model": "model", - # "cfg_scale": "float", - "cfg_scale": "number" - } + "model": "model", + # "cfg_scale": "float", + "cfg_scale": "number", + }, }, } @@ -265,9 +271,7 @@ class SDXLTextToLatentsInvocation(BaseInvocation): # https://github.com/huggingface/diffusers/blob/3ebbaf7c96801271f9e6c21400033b6aa5ffcf29/src/diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion.py#L375 @torch.no_grad() def invoke(self, context: InvocationContext) -> LatentsOutput: - graph_execution_state = context.services.graph_execution_manager.get( - context.graph_execution_state_id - ) + graph_execution_state = context.services.graph_execution_manager.get(context.graph_execution_state_id) source_node_id = graph_execution_state.prepared_source_mapping[self.id] latents = context.services.latents.get(self.noise.latents_name) @@ -288,18 +292,15 @@ class SDXLTextToLatentsInvocation(BaseInvocation): ) num_inference_steps = self.steps - scheduler.set_timesteps(num_inference_steps) - timesteps = scheduler.timesteps - latents = latents * scheduler.init_noise_sigma - - - unet_info = context.services.model_manager.get_model( - **self.unet.unet.dict(), context=context - ) + unet_info = context.services.model_manager.get_model(**self.unet.unet.dict(), context=context) do_classifier_free_guidance = True cross_attention_kwargs = None with unet_info as unet: + scheduler.set_timesteps(num_inference_steps, device=unet.device) + timesteps = scheduler.timesteps + + latents = latents.to(device=unet.device, dtype=unet.dtype) * scheduler.init_noise_sigma extra_step_kwargs = dict() if "eta" in set(inspect.signature(scheduler.step).parameters.keys()): @@ -350,10 +351,10 @@ class SDXLTextToLatentsInvocation(BaseInvocation): if do_classifier_free_guidance: noise_pred_uncond, noise_pred_text = noise_pred.chunk(2) noise_pred = noise_pred_uncond + self.cfg_scale * (noise_pred_text - noise_pred_uncond) - #del noise_pred_uncond - #del noise_pred_text + # del noise_pred_uncond + # del noise_pred_text - #if do_classifier_free_guidance and guidance_rescale > 0.0: + # if do_classifier_free_guidance and guidance_rescale > 0.0: # # Based on 3.4. in https://arxiv.org/pdf/2305.08891.pdf # noise_pred = rescale_noise_cfg(noise_pred, noise_pred_text, guidance_rescale=guidance_rescale) @@ -364,7 +365,7 @@ class SDXLTextToLatentsInvocation(BaseInvocation): if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % scheduler.order == 0): progress_bar.update() self.dispatch_progress(context, source_node_id, latents, i, num_inference_steps) - #if callback is not None and i % callback_steps == 0: + # if callback is not None and i % callback_steps == 0: # callback(i, t, latents) else: negative_pooled_prompt_embeds = negative_pooled_prompt_embeds.to(device=unet.device, dtype=unet.dtype) @@ -378,13 +379,13 @@ class SDXLTextToLatentsInvocation(BaseInvocation): with tqdm(total=num_inference_steps) as progress_bar: for i, t in enumerate(timesteps): # expand the latents if we are doing classifier free guidance - #latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents + # latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents latent_model_input = scheduler.scale_model_input(latents, t) - #import gc - #gc.collect() - #torch.cuda.empty_cache() + # import gc + # gc.collect() + # torch.cuda.empty_cache() # predict the noise residual @@ -411,42 +412,41 @@ class SDXLTextToLatentsInvocation(BaseInvocation): # perform guidance noise_pred = noise_pred_uncond + self.cfg_scale * (noise_pred_text - noise_pred_uncond) - #del noise_pred_text - #del noise_pred_uncond - #import gc - #gc.collect() - #torch.cuda.empty_cache() + # del noise_pred_text + # del noise_pred_uncond + # import gc + # gc.collect() + # torch.cuda.empty_cache() - #if do_classifier_free_guidance and guidance_rescale > 0.0: + # if do_classifier_free_guidance and guidance_rescale > 0.0: # # Based on 3.4. in https://arxiv.org/pdf/2305.08891.pdf # noise_pred = rescale_noise_cfg(noise_pred, noise_pred_text, guidance_rescale=guidance_rescale) # compute the previous noisy sample x_t -> x_t-1 latents = scheduler.step(noise_pred, t, latents, **extra_step_kwargs, return_dict=False)[0] - #del noise_pred - #import gc - #gc.collect() - #torch.cuda.empty_cache() + # del noise_pred + # import gc + # gc.collect() + # torch.cuda.empty_cache() # call the callback, if provided if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % scheduler.order == 0): progress_bar.update() self.dispatch_progress(context, source_node_id, latents, i, num_inference_steps) - #if callback is not None and i % callback_steps == 0: + # if callback is not None and i % callback_steps == 0: # callback(i, t, latents) - - ################# latents = latents.to("cpu") torch.cuda.empty_cache() - name = f'{context.graph_execution_state_id}__{self.id}' + name = f"{context.graph_execution_state_id}__{self.id}" context.services.latents.save(name, latents) return build_latents_output(latents_name=name, latents=latents) + class SDXLLatentsToLatentsInvocation(BaseInvocation): """Generates latents from conditionings.""" @@ -466,9 +466,9 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): denoising_start: float = Field(default=0.0, ge=0, le=1, description="") denoising_end: float = Field(default=1.0, ge=0, le=1, description="") - #control: Union[ControlField, list[ControlField]] = Field(default=None, description="The control to use") - #seamless: bool = Field(default=False, description="Whether or not to generate an image that can tile without seams", ) - #seamless_axes: str = Field(default="", description="The axes to tile the image on, 'x' and/or 'y'") + # control: Union[ControlField, list[ControlField]] = Field(default=None, description="The control to use") + # seamless: bool = Field(default=False, description="Whether or not to generate an image that can tile without seams", ) + # seamless_axes: str = Field(default="", description="The axes to tile the image on, 'x' and/or 'y'") # fmt: on @validator("cfg_scale") @@ -477,10 +477,10 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): if isinstance(v, list): for i in v: if i < 1: - raise ValueError('cfg_scale must be greater than 1') + raise ValueError("cfg_scale must be greater than 1") else: if v < 1: - raise ValueError('cfg_scale must be greater than 1') + raise ValueError("cfg_scale must be greater than 1") return v # Schema customisation @@ -490,10 +490,10 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): "title": "SDXL Latents to Latents", "tags": ["latents"], "type_hints": { - "model": "model", - # "cfg_scale": "float", - "cfg_scale": "number" - } + "model": "model", + # "cfg_scale": "float", + "cfg_scale": "number", + }, }, } @@ -518,9 +518,7 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): # https://github.com/huggingface/diffusers/blob/3ebbaf7c96801271f9e6c21400033b6aa5ffcf29/src/diffusers/pipelines/stable_diffusion/pipeline_onnx_stable_diffusion.py#L375 @torch.no_grad() def invoke(self, context: InvocationContext) -> LatentsOutput: - graph_execution_state = context.services.graph_execution_manager.get( - context.graph_execution_state_id - ) + graph_execution_state = context.services.graph_execution_manager.get(context.graph_execution_state_id) source_node_id = graph_execution_state.prepared_source_mapping[self.id] latents = context.services.latents.get(self.latents.latents_name) @@ -540,26 +538,27 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): scheduler_name=self.scheduler, ) - # apply denoising_start - num_inference_steps = self.steps - scheduler.set_timesteps(num_inference_steps) - - t_start = int(round(self.denoising_start * num_inference_steps)) - timesteps = scheduler.timesteps[t_start * scheduler.order:] - num_inference_steps = num_inference_steps - t_start - - # apply noise(if provided) - if self.noise is not None and timesteps.shape[0] > 0: - noise = context.services.latents.get(self.noise.latents_name) - latents = scheduler.add_noise(latents, noise, timesteps[:1]) - del noise - unet_info = context.services.model_manager.get_model( - **self.unet.unet.dict(), context=context, + **self.unet.unet.dict(), + context=context, ) + do_classifier_free_guidance = True cross_attention_kwargs = None with unet_info as unet: + # apply denoising_start + num_inference_steps = self.steps + scheduler.set_timesteps(num_inference_steps, device=unet.device) + + t_start = int(round(self.denoising_start * num_inference_steps)) + timesteps = scheduler.timesteps[t_start * scheduler.order :] + num_inference_steps = num_inference_steps - t_start + + # apply noise(if provided) + if self.noise is not None and timesteps.shape[0] > 0: + noise = context.services.latents.get(self.noise.latents_name) + latents = scheduler.add_noise(latents, noise, timesteps[:1]) + del noise # apply scheduler extra args extra_step_kwargs = dict() @@ -611,10 +610,10 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): if do_classifier_free_guidance: noise_pred_uncond, noise_pred_text = noise_pred.chunk(2) noise_pred = noise_pred_uncond + self.cfg_scale * (noise_pred_text - noise_pred_uncond) - #del noise_pred_uncond - #del noise_pred_text + # del noise_pred_uncond + # del noise_pred_text - #if do_classifier_free_guidance and guidance_rescale > 0.0: + # if do_classifier_free_guidance and guidance_rescale > 0.0: # # Based on 3.4. in https://arxiv.org/pdf/2305.08891.pdf # noise_pred = rescale_noise_cfg(noise_pred, noise_pred_text, guidance_rescale=guidance_rescale) @@ -625,7 +624,7 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % scheduler.order == 0): progress_bar.update() self.dispatch_progress(context, source_node_id, latents, i, num_inference_steps) - #if callback is not None and i % callback_steps == 0: + # if callback is not None and i % callback_steps == 0: # callback(i, t, latents) else: negative_pooled_prompt_embeds = negative_pooled_prompt_embeds.to(device=unet.device, dtype=unet.dtype) @@ -639,13 +638,13 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): with tqdm(total=num_inference_steps) as progress_bar: for i, t in enumerate(timesteps): # expand the latents if we are doing classifier free guidance - #latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents + # latent_model_input = torch.cat([latents] * 2) if do_classifier_free_guidance else latents latent_model_input = scheduler.scale_model_input(latents, t) - #import gc - #gc.collect() - #torch.cuda.empty_cache() + # import gc + # gc.collect() + # torch.cuda.empty_cache() # predict the noise residual @@ -672,38 +671,36 @@ class SDXLLatentsToLatentsInvocation(BaseInvocation): # perform guidance noise_pred = noise_pred_uncond + self.cfg_scale * (noise_pred_text - noise_pred_uncond) - #del noise_pred_text - #del noise_pred_uncond - #import gc - #gc.collect() - #torch.cuda.empty_cache() + # del noise_pred_text + # del noise_pred_uncond + # import gc + # gc.collect() + # torch.cuda.empty_cache() - #if do_classifier_free_guidance and guidance_rescale > 0.0: + # if do_classifier_free_guidance and guidance_rescale > 0.0: # # Based on 3.4. in https://arxiv.org/pdf/2305.08891.pdf # noise_pred = rescale_noise_cfg(noise_pred, noise_pred_text, guidance_rescale=guidance_rescale) # compute the previous noisy sample x_t -> x_t-1 latents = scheduler.step(noise_pred, t, latents, **extra_step_kwargs, return_dict=False)[0] - #del noise_pred - #import gc - #gc.collect() - #torch.cuda.empty_cache() + # del noise_pred + # import gc + # gc.collect() + # torch.cuda.empty_cache() # call the callback, if provided if i == len(timesteps) - 1 or ((i + 1) > num_warmup_steps and (i + 1) % scheduler.order == 0): progress_bar.update() self.dispatch_progress(context, source_node_id, latents, i, num_inference_steps) - #if callback is not None and i % callback_steps == 0: + # if callback is not None and i % callback_steps == 0: # callback(i, t, latents) - - ################# latents = latents.to("cpu") torch.cuda.empty_cache() - name = f'{context.graph_execution_state_id}__{self.id}' + name = f"{context.graph_execution_state_id}__{self.id}" context.services.latents.save(name, latents) return build_latents_output(latents_name=name, latents=latents) diff --git a/invokeai/app/invocations/upscale.py b/invokeai/app/invocations/upscale.py index 1a45a631df..fd220223db 100644 --- a/invokeai/app/invocations/upscale.py +++ b/invokeai/app/invocations/upscale.py @@ -29,16 +29,11 @@ class ESRGANInvocation(BaseInvocation): type: Literal["esrgan"] = "esrgan" image: Union[ImageField, None] = Field(default=None, description="The input image") - model_name: ESRGAN_MODELS = Field( - default="RealESRGAN_x4plus.pth", description="The Real-ESRGAN model to use" - ) + model_name: ESRGAN_MODELS = Field(default="RealESRGAN_x4plus.pth", description="The Real-ESRGAN model to use") class Config(InvocationConfig): schema_extra = { - "ui": { - "title": "Upscale (RealESRGAN)", - "tags": ["image", "upscale", "realesrgan"] - }, + "ui": {"title": "Upscale (RealESRGAN)", "tags": ["image", "upscale", "realesrgan"]}, } def invoke(self, context: InvocationContext) -> ImageOutput: @@ -108,9 +103,7 @@ class ESRGANInvocation(BaseInvocation): upscaled_image, img_mode = upsampler.enhance(cv_image) # back to PIL - pil_image = Image.fromarray( - cv.cvtColor(upscaled_image, cv.COLOR_BGR2RGB) - ).convert("RGBA") + pil_image = Image.fromarray(cv.cvtColor(upscaled_image, cv.COLOR_BGR2RGB)).convert("RGBA") image_dto = context.services.images.create( image=pil_image, diff --git a/invokeai/app/models/exceptions.py b/invokeai/app/models/exceptions.py index 32ad3b8f03..662e1948ce 100644 --- a/invokeai/app/models/exceptions.py +++ b/invokeai/app/models/exceptions.py @@ -1,3 +1,4 @@ class CanceledException(Exception): """Execution canceled by user.""" + pass diff --git a/invokeai/app/models/image.py b/invokeai/app/models/image.py index 988a3e1447..2a5a0f9d3b 100644 --- a/invokeai/app/models/image.py +++ b/invokeai/app/models/image.py @@ -1,8 +1,83 @@ from enum import Enum -from typing import Optional, Tuple +from typing import Optional, Tuple, Literal from pydantic import BaseModel, Field from invokeai.app.util.metaenum import MetaEnum +from ..invocations.baseinvocation import ( + BaseInvocationOutput, + InvocationConfig, +) + + +class ImageField(BaseModel): + """An image field used for passing image objects between invocations""" + + image_name: Optional[str] = Field(default=None, description="The name of the image") + + class Config: + schema_extra = {"required": ["image_name"]} + + +class ColorField(BaseModel): + r: int = Field(ge=0, le=255, description="The red component") + g: int = Field(ge=0, le=255, description="The green component") + b: int = Field(ge=0, le=255, description="The blue component") + a: int = Field(ge=0, le=255, description="The alpha component") + + def tuple(self) -> Tuple[int, int, int, int]: + return (self.r, self.g, self.b, self.a) + + +class ProgressImage(BaseModel): + """The progress image sent intermittently during processing""" + + width: int = Field(description="The effective width of the image in pixels") + height: int = Field(description="The effective height of the image in pixels") + dataURL: str = Field(description="The image data as a b64 data URL") + + +class PILInvocationConfig(BaseModel): + """Helper class to provide all PIL invocations with additional config""" + + class Config(InvocationConfig): + schema_extra = { + "ui": { + "tags": ["PIL", "image"], + }, + } + + +class ImageOutput(BaseInvocationOutput): + """Base class for invocations that output an image""" + + # fmt: off + type: Literal["image_output"] = "image_output" + image: ImageField = Field(default=None, description="The output image") + width: int = Field(description="The width of the image in pixels") + height: int = Field(description="The height of the image in pixels") + # fmt: on + + class Config: + schema_extra = {"required": ["type", "image", "width", "height"]} + + +class MaskOutput(BaseInvocationOutput): + """Base class for invocations that output a mask""" + + # fmt: off + type: Literal["mask"] = "mask" + mask: ImageField = Field(default=None, description="The output mask") + width: int = Field(description="The width of the mask in pixels") + height: int = Field(description="The height of the mask in pixels") + # fmt: on + + class Config: + schema_extra = { + "required": [ + "type", + "mask", + ] + } class ResourceOrigin(str, Enum, metaclass=MetaEnum): @@ -61,30 +136,3 @@ class InvalidImageCategoryException(ValueError): def __init__(self, message="Invalid image category."): super().__init__(message) - - -class ImageField(BaseModel): - """An image field used for passing image objects between invocations""" - - image_name: Optional[str] = Field(default=None, description="The name of the image") - - class Config: - schema_extra = {"required": ["image_name"]} - - -class ColorField(BaseModel): - r: int = Field(ge=0, le=255, description="The red component") - g: int = Field(ge=0, le=255, description="The green component") - b: int = Field(ge=0, le=255, description="The blue component") - a: int = Field(ge=0, le=255, description="The alpha component") - - def tuple(self) -> Tuple[int, int, int, int]: - return (self.r, self.g, self.b, self.a) - - -class ProgressImage(BaseModel): - """The progress image sent intermittently during processing""" - - width: int = Field(description="The effective width of the image in pixels") - height: int = Field(description="The effective height of the image in pixels") - dataURL: str = Field(description="The image data as a b64 data URL") diff --git a/invokeai/app/services/board_image_record_storage.py b/invokeai/app/services/board_image_record_storage.py index 491972bd32..f0007c8cef 100644 --- a/invokeai/app/services/board_image_record_storage.py +++ b/invokeai/app/services/board_image_record_storage.py @@ -207,9 +207,7 @@ class SqliteBoardImageRecordStorage(BoardImageRecordStorageBase): raise e finally: self._lock.release() - return OffsetPaginatedResults( - items=images, offset=offset, limit=limit, total=count - ) + return OffsetPaginatedResults(items=images, offset=offset, limit=limit, total=count) def get_all_board_image_names_for_board(self, board_id: str) -> list[str]: try: diff --git a/invokeai/app/services/board_images.py b/invokeai/app/services/board_images.py index b9f9663603..22332d6c29 100644 --- a/invokeai/app/services/board_images.py +++ b/invokeai/app/services/board_images.py @@ -102,9 +102,7 @@ class BoardImagesService(BoardImagesServiceABC): self, board_id: str, ) -> list[str]: - return self._services.board_image_records.get_all_board_image_names_for_board( - board_id - ) + return self._services.board_image_records.get_all_board_image_names_for_board(board_id) def get_board_for_image( self, @@ -114,9 +112,7 @@ class BoardImagesService(BoardImagesServiceABC): return board_id -def board_record_to_dto( - board_record: BoardRecord, cover_image_name: Optional[str], image_count: int -) -> BoardDTO: +def board_record_to_dto(board_record: BoardRecord, cover_image_name: Optional[str], image_count: int) -> BoardDTO: """Converts a board record to a board DTO.""" return BoardDTO( **board_record.dict(exclude={"cover_image_name"}), diff --git a/invokeai/app/services/board_record_storage.py b/invokeai/app/services/board_record_storage.py index 15ea9cc5a7..2fad7b0ab3 100644 --- a/invokeai/app/services/board_record_storage.py +++ b/invokeai/app/services/board_record_storage.py @@ -15,9 +15,7 @@ from pydantic import BaseModel, Field, Extra class BoardChanges(BaseModel, extra=Extra.forbid): board_name: Optional[str] = Field(description="The board's new name.") - cover_image_name: Optional[str] = Field( - description="The name of the board's new cover image." - ) + cover_image_name: Optional[str] = Field(description="The name of the board's new cover image.") class BoardRecordNotFoundException(Exception): @@ -292,9 +290,7 @@ class SqliteBoardRecordStorage(BoardRecordStorageBase): count = cast(int, self._cursor.fetchone()[0]) - return OffsetPaginatedResults[BoardRecord]( - items=boards, offset=offset, limit=limit, total=count - ) + return OffsetPaginatedResults[BoardRecord](items=boards, offset=offset, limit=limit, total=count) except sqlite3.Error as e: self._conn.rollback() diff --git a/invokeai/app/services/boards.py b/invokeai/app/services/boards.py index 9361322e6c..53d30b2e85 100644 --- a/invokeai/app/services/boards.py +++ b/invokeai/app/services/boards.py @@ -108,16 +108,12 @@ class BoardService(BoardServiceABC): def get_dto(self, board_id: str) -> BoardDTO: board_record = self._services.board_records.get(board_id) - cover_image = self._services.image_records.get_most_recent_image_for_board( - board_record.board_id - ) + cover_image = self._services.image_records.get_most_recent_image_for_board(board_record.board_id) if cover_image: cover_image_name = cover_image.image_name else: cover_image_name = None - image_count = self._services.board_image_records.get_image_count_for_board( - board_id - ) + image_count = self._services.board_image_records.get_image_count_for_board(board_id) return board_record_to_dto(board_record, cover_image_name, image_count) def update( @@ -126,60 +122,44 @@ class BoardService(BoardServiceABC): changes: BoardChanges, ) -> BoardDTO: board_record = self._services.board_records.update(board_id, changes) - cover_image = self._services.image_records.get_most_recent_image_for_board( - board_record.board_id - ) + cover_image = self._services.image_records.get_most_recent_image_for_board(board_record.board_id) if cover_image: cover_image_name = cover_image.image_name else: cover_image_name = None - image_count = self._services.board_image_records.get_image_count_for_board( - board_id - ) + image_count = self._services.board_image_records.get_image_count_for_board(board_id) return board_record_to_dto(board_record, cover_image_name, image_count) def delete(self, board_id: str) -> None: self._services.board_records.delete(board_id) - def get_many( - self, offset: int = 0, limit: int = 10 - ) -> OffsetPaginatedResults[BoardDTO]: + def get_many(self, offset: int = 0, limit: int = 10) -> OffsetPaginatedResults[BoardDTO]: board_records = self._services.board_records.get_many(offset, limit) board_dtos = [] for r in board_records.items: - cover_image = self._services.image_records.get_most_recent_image_for_board( - r.board_id - ) + cover_image = self._services.image_records.get_most_recent_image_for_board(r.board_id) if cover_image: cover_image_name = cover_image.image_name else: cover_image_name = None - image_count = self._services.board_image_records.get_image_count_for_board( - r.board_id - ) + image_count = self._services.board_image_records.get_image_count_for_board(r.board_id) board_dtos.append(board_record_to_dto(r, cover_image_name, image_count)) - return OffsetPaginatedResults[BoardDTO]( - items=board_dtos, offset=offset, limit=limit, total=len(board_dtos) - ) + return OffsetPaginatedResults[BoardDTO](items=board_dtos, offset=offset, limit=limit, total=len(board_dtos)) def get_all(self) -> list[BoardDTO]: board_records = self._services.board_records.get_all() board_dtos = [] for r in board_records: - cover_image = self._services.image_records.get_most_recent_image_for_board( - r.board_id - ) + cover_image = self._services.image_records.get_most_recent_image_for_board(r.board_id) if cover_image: cover_image_name = cover_image.image_name else: cover_image_name = None - image_count = self._services.board_image_records.get_image_count_for_board( - r.board_id - ) + image_count = self._services.board_image_records.get_image_count_for_board(r.board_id) board_dtos.append(board_record_to_dto(r, cover_image_name, image_count)) - return board_dtos \ No newline at end of file + return board_dtos diff --git a/invokeai/app/services/config.py b/invokeai/app/services/config.py index b1e4e7ed5d..98855fe879 100644 --- a/invokeai/app/services/config.py +++ b/invokeai/app/services/config.py @@ -1,6 +1,6 @@ # Copyright (c) 2023 Lincoln Stein (https://github.com/lstein) and the InvokeAI Development Team -'''Invokeai configuration system. +"""Invokeai configuration system. Arguments and fields are taken from the pydantic definition of the model. Defaults can be set by creating a yaml configuration file that @@ -28,7 +28,6 @@ InvokeAI: always_use_cpu: false free_gpu_mem: false Features: - nsfw_checker: true restore: true esrgan: true patchmatch: true @@ -92,18 +91,18 @@ Typical usage at the top level file: from invokeai.app.services.config import InvokeAIAppConfig - # get global configuration and print its nsfw_checker value + # get global configuration and print its cache size conf = InvokeAIAppConfig.get_config() conf.parse_args() - print(conf.nsfw_checker) + print(conf.max_cache_size) Typical usage in a backend module: from invokeai.app.services.config import InvokeAIAppConfig - # get global configuration and print its nsfw_checker value + # get global configuration and print its cache size value conf = InvokeAIAppConfig.get_config() - print(conf.nsfw_checker) + print(conf.max_cache_size) Computed properties: @@ -159,7 +158,7 @@ two configs are kept in separate sections of the config file: outdir: outputs ... -''' +""" from __future__ import annotations import argparse import pydoc @@ -171,64 +170,68 @@ from pathlib import Path from pydantic import BaseSettings, Field, parse_obj_as from typing import ClassVar, Dict, List, Set, Literal, Union, get_origin, get_type_hints, get_args -INIT_FILE = Path('invokeai.yaml') -MODEL_CORE = Path('models/core') -DB_FILE = Path('invokeai.db') -LEGACY_INIT_FILE = Path('invokeai.init') +INIT_FILE = Path("invokeai.yaml") +MODEL_CORE = Path("models/core") +DB_FILE = Path("invokeai.db") +LEGACY_INIT_FILE = Path("invokeai.init") + class InvokeAISettings(BaseSettings): - ''' + """ Runtime configuration settings in which default values are read from an omegaconf .yaml file. - ''' - initconf : ClassVar[DictConfig] = None - argparse_groups : ClassVar[Dict] = {} + """ - def parse_args(self, argv: list=sys.argv[1:]): + initconf: ClassVar[DictConfig] = None + argparse_groups: ClassVar[Dict] = {} + + def parse_args(self, argv: list = sys.argv[1:]): parser = self.get_parser() opt = parser.parse_args(argv) for name in self.__fields__: if name not in self._excluded(): - setattr(self, name, getattr(opt,name)) + setattr(self, name, getattr(opt, name)) - def to_yaml(self)->str: + def to_yaml(self) -> str: """ Return a YAML string representing our settings. This can be used as the contents of `invokeai.yaml` to restore settings later. """ cls = self.__class__ - type = get_args(get_type_hints(cls)['type'])[0] - field_dict = dict({type:dict()}) - for name,field in self.__fields__.items(): + type = get_args(get_type_hints(cls)["type"])[0] + field_dict = dict({type: dict()}) + for name, field in self.__fields__.items(): if name in cls._excluded_from_yaml(): continue category = field.field_info.extra.get("category") or "Uncategorized" - value = getattr(self,name) + value = getattr(self, name) if category not in field_dict[type]: field_dict[type][category] = dict() # keep paths as strings to make it easier to read - field_dict[type][category][name] = str(value) if isinstance(value,Path) else value + field_dict[type][category][name] = str(value) if isinstance(value, Path) else value conf = OmegaConf.create(field_dict) return OmegaConf.to_yaml(conf) @classmethod def add_parser_arguments(cls, parser): - if 'type' in get_type_hints(cls): - settings_stanza = get_args(get_type_hints(cls)['type'])[0] + if "type" in get_type_hints(cls): + settings_stanza = get_args(get_type_hints(cls)["type"])[0] else: settings_stanza = "Uncategorized" - env_prefix = cls.Config.env_prefix if hasattr(cls.Config,'env_prefix') else settings_stanza.upper() + env_prefix = cls.Config.env_prefix if hasattr(cls.Config, "env_prefix") else settings_stanza.upper() - initconf = cls.initconf.get(settings_stanza) \ - if cls.initconf and settings_stanza in cls.initconf \ - else OmegaConf.create() + initconf = ( + cls.initconf.get(settings_stanza) + if cls.initconf and settings_stanza in cls.initconf + else OmegaConf.create() + ) # create an upcase version of the environment in # order to achieve case-insensitive environment # variables (the way Windows does) upcase_environ = dict() - for key,value in os.environ.items(): + for key, value in os.environ.items(): upcase_environ[key.upper()] = value fields = cls.__fields__ @@ -238,8 +241,8 @@ class InvokeAISettings(BaseSettings): if name not in cls._excluded(): current_default = field.default - category = field.field_info.extra.get("category","Uncategorized") - env_name = env_prefix + '_' + name + category = field.field_info.extra.get("category", "Uncategorized") + env_name = env_prefix + "_" + name if category in initconf and name in initconf.get(category): field.default = initconf.get(category).get(name) if env_name.upper() in upcase_environ: @@ -249,15 +252,15 @@ class InvokeAISettings(BaseSettings): field.default = current_default @classmethod - def cmd_name(self, command_field: str='type')->str: + def cmd_name(self, command_field: str = "type") -> str: hints = get_type_hints(self) if command_field in hints: return get_args(hints[command_field])[0] else: - return 'Uncategorized' + return "Uncategorized" @classmethod - def get_parser(cls)->ArgumentParser: + def get_parser(cls) -> ArgumentParser: parser = PagingArgumentParser( prog=cls.cmd_name(), description=cls.__doc__, @@ -270,24 +273,41 @@ class InvokeAISettings(BaseSettings): parser.add_parser(cls.cmd_name(), help=cls.__doc__) @classmethod - def _excluded(self)->List[str]: + def _excluded(self) -> List[str]: # internal fields that shouldn't be exposed as command line options - return ['type','initconf'] - + return ["type", "initconf"] + @classmethod - def _excluded_from_yaml(self)->List[str]: + def _excluded_from_yaml(self) -> List[str]: # combination of deprecated parameters and internal ones that shouldn't be exposed as invokeai.yaml options - return ['type','initconf', 'gpu_mem_reserved', 'max_loaded_models', 'version', 'from_file', 'model', 'restore', 'root'] + return [ + "type", + "initconf", + "gpu_mem_reserved", + "max_loaded_models", + "version", + "from_file", + "model", + "restore", + "root", + "nsfw_checker", + ] class Config: - env_file_encoding = 'utf-8' + env_file_encoding = "utf-8" arbitrary_types_allowed = True case_sensitive = True @classmethod - def add_field_argument(cls, command_parser, name: str, field, default_override = None): + def add_field_argument(cls, command_parser, name: str, field, default_override=None): field_type = get_type_hints(cls).get(name) - default = default_override if default_override is not None else field.default if field.default_factory is None else field.default_factory() + default = ( + default_override + if default_override is not None + else field.default + if field.default_factory is None + else field.default_factory() + ) if category := field.field_info.extra.get("category"): if category not in cls.argparse_groups: cls.argparse_groups[category] = command_parser.add_argument_group(category) @@ -316,10 +336,10 @@ class InvokeAISettings(BaseSettings): argparse_group.add_argument( f"--{name}", dest=name, - nargs='*', + nargs="*", type=field.type_, default=default, - action=argparse.BooleanOptionalAction if field.type_==bool else 'store', + action=argparse.BooleanOptionalAction if field.type_ == bool else "store", help=field.field_info.description, ) else: @@ -328,31 +348,35 @@ class InvokeAISettings(BaseSettings): dest=name, type=field.type_, default=default, - action=argparse.BooleanOptionalAction if field.type_==bool else 'store', + action=argparse.BooleanOptionalAction if field.type_ == bool else "store", help=field.field_info.description, ) -def _find_root()->Path: + + +def _find_root() -> Path: venv = Path(os.environ.get("VIRTUAL_ENV") or ".") if os.environ.get("INVOKEAI_ROOT"): root = Path(os.environ.get("INVOKEAI_ROOT")).resolve() - elif any([(venv.parent/x).exists() for x in [INIT_FILE, LEGACY_INIT_FILE, MODEL_CORE]]): + elif any([(venv.parent / x).exists() for x in [INIT_FILE, LEGACY_INIT_FILE, MODEL_CORE]]): root = (venv.parent).resolve() else: root = Path("~/invokeai").expanduser().resolve() return root + class InvokeAIAppConfig(InvokeAISettings): - ''' -Generate images using Stable Diffusion. Use "invokeai" to launch -the command-line client (recommended for experts only), or -"invokeai-web" to launch the web server. Global options -can be changed by editing the file "INVOKEAI_ROOT/invokeai.yaml" or by -setting environment variables INVOKEAI_. - ''' + """ + Generate images using Stable Diffusion. Use "invokeai" to launch + the command-line client (recommended for experts only), or + "invokeai-web" to launch the web server. Global options + can be changed by editing the file "INVOKEAI_ROOT/invokeai.yaml" or by + setting environment variables INVOKEAI_. + """ + singleton_config: ClassVar[InvokeAIAppConfig] = None singleton_init: ClassVar[Dict] = None - #fmt: off + # fmt: off type: Literal["InvokeAI"] = "InvokeAI" host : str = Field(default="127.0.0.1", description="IP address to bind to", category='Web Server') port : int = Field(default=9090, description="Port to bind to", category='Web Server') @@ -364,7 +388,6 @@ setting environment variables INVOKEAI_. esrgan : bool = Field(default=True, description="Enable/disable upscaling code", category='Features') internet_available : bool = Field(default=True, description="If true, attempt to download models on the fly; otherwise only use local models", category='Features') log_tokenization : bool = Field(default=False, description="Enable logging of parsed prompt tokens.", category='Features') - nsfw_checker : bool = Field(default=True, description="Enable/disable the NSFW checker", category='Features') patchmatch : bool = Field(default=True, description="Enable/disable patchmatch inpaint code", category='Features') restore : bool = Field(default=True, description="Enable/disable face restoration code (DEPRECATED)", category='DEPRECATED') @@ -374,6 +397,7 @@ setting environment variables INVOKEAI_. max_cache_size : float = Field(default=6.0, gt=0, description="Maximum memory amount used by model cache for rapid switching", category='Memory/Performance') max_vram_cache_size : float = Field(default=2.75, ge=0, description="Amount of VRAM reserved for model storage", category='Memory/Performance') gpu_mem_reserved : float = Field(default=2.75, ge=0, description="DEPRECATED: use max_vram_cache_size. Amount of VRAM reserved for model storage", category='DEPRECATED') + nsfw_checker : bool = Field(default=True, description="DEPRECATED: use Web settings to enable/disable", category='DEPRECATED') precision : Literal[tuple(['auto','float16','float32','autocast'])] = Field(default='auto',description='Floating point precision', category='Memory/Performance') sequential_guidance : bool = Field(default=False, description="Whether to calculate guidance in serial instead of in parallel, lowering memory requirements", category='Memory/Performance') xformers_enabled : bool = Field(default=True, description="Enable/disable memory-efficient attention", category='Memory/Performance') @@ -400,16 +424,16 @@ setting environment variables INVOKEAI_. log_level : Literal[tuple(["debug","info","warning","error","critical"])] = Field(default="info", description="Emit logging messages at this level or higher", category="Logging") version : bool = Field(default=False, description="Show InvokeAI version and exit", category="Other") - #fmt: on + # fmt: on - def parse_args(self, argv: List[str]=None, conf: DictConfig = None, clobber=False): - ''' + def parse_args(self, argv: List[str] = None, conf: DictConfig = None, clobber=False): + """ Update settings with contents of init file, environment, and command-line settings. :param conf: alternate Omegaconf dictionary object :param argv: aternate sys.argv list :param clobber: ovewrite any initialization parameters passed during initialization - ''' + """ # Set the runtime root directory. We parse command-line switches here # in order to pick up the --root_dir option. super().parse_args(argv) @@ -426,125 +450,139 @@ setting environment variables INVOKEAI_. if self.singleton_init and not clobber: hints = get_type_hints(self.__class__) for k in self.singleton_init: - setattr(self,k,parse_obj_as(hints[k],self.singleton_init[k])) + setattr(self, k, parse_obj_as(hints[k], self.singleton_init[k])) @classmethod - def get_config(cls,**kwargs)->InvokeAIAppConfig: - ''' + def get_config(cls, **kwargs) -> InvokeAIAppConfig: + """ This returns a singleton InvokeAIAppConfig configuration object. - ''' - if cls.singleton_config is None \ - or type(cls.singleton_config)!=cls \ - or (kwargs and cls.singleton_init != kwargs): + """ + if ( + cls.singleton_config is None + or type(cls.singleton_config) != cls + or (kwargs and cls.singleton_init != kwargs) + ): cls.singleton_config = cls(**kwargs) cls.singleton_init = kwargs return cls.singleton_config @property - def root_path(self)->Path: - ''' + def root_path(self) -> Path: + """ Path to the runtime root directory - ''' + """ if self.root: return Path(self.root).expanduser().absolute() else: return self.find_root() @property - def root_dir(self)->Path: - ''' + def root_dir(self) -> Path: + """ Alias for above. - ''' + """ return self.root_path - def _resolve(self,partial_path:Path)->Path: + def _resolve(self, partial_path: Path) -> Path: return (self.root_path / partial_path).resolve() @property - def init_file_path(self)->Path: - ''' + def init_file_path(self) -> Path: + """ Path to invokeai.yaml - ''' + """ return self._resolve(INIT_FILE) @property - def output_path(self)->Path: - ''' + def output_path(self) -> Path: + """ Path to defaults outputs directory. - ''' + """ return self._resolve(self.outdir) @property - def db_path(self)->Path: - ''' + def db_path(self) -> Path: + """ Path to the invokeai.db file. - ''' + """ return self._resolve(self.db_dir) / DB_FILE @property - def model_conf_path(self)->Path: - ''' + def model_conf_path(self) -> Path: + """ Path to models configuration file. - ''' + """ return self._resolve(self.conf_path) @property - def legacy_conf_path(self)->Path: - ''' + def legacy_conf_path(self) -> Path: + """ Path to directory of legacy configuration files (e.g. v1-inference.yaml) - ''' + """ return self._resolve(self.legacy_conf_dir) @property - def models_path(self)->Path: - ''' + def models_path(self) -> Path: + """ Path to the models directory - ''' + """ return self._resolve(self.models_dir) @property - def autoconvert_path(self)->Path: - ''' + def autoconvert_path(self) -> Path: + """ Path to the directory containing models to be imported automatically at startup. - ''' + """ return self._resolve(self.autoconvert_dir) if self.autoconvert_dir else None # the following methods support legacy calls leftover from the Globals era @property - def full_precision(self)->bool: + def full_precision(self) -> bool: """Return true if precision set to float32""" - return self.precision=='float32' + return self.precision == "float32" @property - def disable_xformers(self)->bool: + def disable_xformers(self) -> bool: """Return true if xformers_enabled is false""" return not self.xformers_enabled @property - def try_patchmatch(self)->bool: + def try_patchmatch(self) -> bool: """Return true if patchmatch true""" return self.patchmatch + @property + def nsfw_checker(self) -> bool: + """NSFW node is always active and disabled from Web UIe""" + return True + + @property + def invisible_watermark(self) -> bool: + """invisible watermark node is always active and disabled from Web UIe""" + return True + @staticmethod - def find_root()->Path: - ''' + def find_root() -> Path: + """ Choose the runtime root directory when not specified on command line or init file. - ''' + """ return _find_root() class PagingArgumentParser(argparse.ArgumentParser): - ''' + """ A custom ArgumentParser that uses pydoc to page its output. It also supports reading defaults from an init file. - ''' + """ + def print_help(self, file=None): text = self.format_help() pydoc.pager(text) -def get_invokeai_config(**kwargs)->InvokeAIAppConfig: - ''' + +def get_invokeai_config(**kwargs) -> InvokeAIAppConfig: + """ Legacy function which returns InvokeAIAppConfig.get_config() - ''' + """ return InvokeAIAppConfig.get_config(**kwargs) diff --git a/invokeai/app/services/default_graphs.py b/invokeai/app/services/default_graphs.py index 92263751b7..cafb6f0339 100644 --- a/invokeai/app/services/default_graphs.py +++ b/invokeai/app/services/default_graphs.py @@ -1,4 +1,5 @@ from ..invocations.latent import LatentsToImageInvocation, TextToLatentsInvocation +from ..invocations.image import ImageNSFWBlurInvocation from ..invocations.noise import NoiseInvocation from ..invocations.compel import CompelInvocation from ..invocations.params import ParamIntInvocation @@ -6,55 +7,80 @@ from .graph import Edge, EdgeConnection, ExposedNodeInput, ExposedNodeOutput, Gr from .item_storage import ItemStorageABC -default_text_to_image_graph_id = '539b2af5-2b4d-4d8c-8071-e54a3255fc74' +default_text_to_image_graph_id = "539b2af5-2b4d-4d8c-8071-e54a3255fc74" def create_text_to_image() -> LibraryGraph: return LibraryGraph( id=default_text_to_image_graph_id, - name='t2i', - description='Converts text to an image', + name="t2i", + description="Converts text to an image", graph=Graph( nodes={ - 'width': ParamIntInvocation(id='width', a=512), - 'height': ParamIntInvocation(id='height', a=512), - 'seed': ParamIntInvocation(id='seed', a=-1), - '3': NoiseInvocation(id='3'), - '4': CompelInvocation(id='4'), - '5': CompelInvocation(id='5'), - '6': TextToLatentsInvocation(id='6'), - '7': LatentsToImageInvocation(id='7'), + "width": ParamIntInvocation(id="width", a=512), + "height": ParamIntInvocation(id="height", a=512), + "seed": ParamIntInvocation(id="seed", a=-1), + "3": NoiseInvocation(id="3"), + "4": CompelInvocation(id="4"), + "5": CompelInvocation(id="5"), + "6": TextToLatentsInvocation(id="6"), + "7": LatentsToImageInvocation(id="7"), + "8": ImageNSFWBlurInvocation(id="8"), }, edges=[ - Edge(source=EdgeConnection(node_id='width', field='a'), destination=EdgeConnection(node_id='3', field='width')), - Edge(source=EdgeConnection(node_id='height', field='a'), destination=EdgeConnection(node_id='3', field='height')), - Edge(source=EdgeConnection(node_id='seed', field='a'), destination=EdgeConnection(node_id='3', field='seed')), - Edge(source=EdgeConnection(node_id='3', field='noise'), destination=EdgeConnection(node_id='6', field='noise')), - Edge(source=EdgeConnection(node_id='6', field='latents'), destination=EdgeConnection(node_id='7', field='latents')), - Edge(source=EdgeConnection(node_id='4', field='conditioning'), destination=EdgeConnection(node_id='6', field='positive_conditioning')), - Edge(source=EdgeConnection(node_id='5', field='conditioning'), destination=EdgeConnection(node_id='6', field='negative_conditioning')), - ] + Edge( + source=EdgeConnection(node_id="width", field="a"), + destination=EdgeConnection(node_id="3", field="width"), + ), + Edge( + source=EdgeConnection(node_id="height", field="a"), + destination=EdgeConnection(node_id="3", field="height"), + ), + Edge( + source=EdgeConnection(node_id="seed", field="a"), + destination=EdgeConnection(node_id="3", field="seed"), + ), + Edge( + source=EdgeConnection(node_id="3", field="noise"), + destination=EdgeConnection(node_id="6", field="noise"), + ), + Edge( + source=EdgeConnection(node_id="6", field="latents"), + destination=EdgeConnection(node_id="7", field="latents"), + ), + Edge( + source=EdgeConnection(node_id="4", field="conditioning"), + destination=EdgeConnection(node_id="6", field="positive_conditioning"), + ), + Edge( + source=EdgeConnection(node_id="5", field="conditioning"), + destination=EdgeConnection(node_id="6", field="negative_conditioning"), + ), + Edge( + source=EdgeConnection(node_id="7", field="image"), + destination=EdgeConnection(node_id="8", field="image"), + ), + ], ), exposed_inputs=[ - ExposedNodeInput(node_path='4', field='prompt', alias='positive_prompt'), - ExposedNodeInput(node_path='5', field='prompt', alias='negative_prompt'), - ExposedNodeInput(node_path='width', field='a', alias='width'), - ExposedNodeInput(node_path='height', field='a', alias='height'), - ExposedNodeInput(node_path='seed', field='a', alias='seed'), + ExposedNodeInput(node_path="4", field="prompt", alias="positive_prompt"), + ExposedNodeInput(node_path="5", field="prompt", alias="negative_prompt"), + ExposedNodeInput(node_path="width", field="a", alias="width"), + ExposedNodeInput(node_path="height", field="a", alias="height"), + ExposedNodeInput(node_path="seed", field="a", alias="seed"), ], - exposed_outputs=[ - ExposedNodeOutput(node_path='7', field='image', alias='image') - ]) + exposed_outputs=[ExposedNodeOutput(node_path="8", field="image", alias="image")], + ) def create_system_graphs(graph_library: ItemStorageABC[LibraryGraph]) -> list[LibraryGraph]: """Creates the default system graphs, or adds new versions if the old ones don't match""" - + # TODO: Uncomment this when we are ready to fix this up to prevent breaking changes graphs: list[LibraryGraph] = list() # text_to_image = graph_library.get(default_text_to_image_graph_id) - + # # TODO: Check if the graph is the same as the default one, and if not, update it # #if text_to_image is None: text_to_image = create_text_to_image() diff --git a/invokeai/app/services/events.py b/invokeai/app/services/events.py index 73d74de2d9..30fa89bd29 100644 --- a/invokeai/app/services/events.py +++ b/invokeai/app/services/events.py @@ -44,9 +44,7 @@ class EventServiceBase: graph_execution_state_id=graph_execution_state_id, node=node, source_node_id=source_node_id, - progress_image=progress_image.dict() - if progress_image is not None - else None, + progress_image=progress_image.dict() if progress_image is not None else None, step=step, total_steps=total_steps, ), @@ -90,9 +88,7 @@ class EventServiceBase: ), ) - def emit_invocation_started( - self, graph_execution_state_id: str, node: dict, source_node_id: str - ) -> None: + def emit_invocation_started(self, graph_execution_state_id: str, node: dict, source_node_id: str) -> None: """Emitted when an invocation has started""" self.__emit_session_event( event_name="invocation_started", diff --git a/invokeai/app/services/graph.py b/invokeai/app/services/graph.py index 24096da29b..d7f021df14 100644 --- a/invokeai/app/services/graph.py +++ b/invokeai/app/services/graph.py @@ -28,6 +28,7 @@ from ..invocations.baseinvocation import ( # in 3.10 this would be "from types import NoneType" NoneType = type(None) + class EdgeConnection(BaseModel): node_id: str = Field(description="The id of the node for this edge connection") field: str = Field(description="The field for this connection") @@ -61,6 +62,7 @@ def get_input_field(node: BaseInvocation, field: str) -> Any: node_input_field = node_inputs.get(field) or None return node_input_field + def is_union_subtype(t1, t2): t1_args = get_args(t1) t2_args = get_args(t2) @@ -71,6 +73,7 @@ def is_union_subtype(t1, t2): # t1 is a Union, check that all of its types are in t2_args return all(arg in t2_args for arg in t1_args) + def is_list_or_contains_list(t): t_args = get_args(t) @@ -154,15 +157,17 @@ class GraphInvocationOutput(BaseInvocationOutput): class Config: schema_extra = { - 'required': [ - 'type', - 'image', + "required": [ + "type", + "image", ] } + # TODO: Fill this out and move to invocations class GraphInvocation(BaseInvocation): """Execute a graph""" + type: Literal["graph"] = "graph" # TODO: figure out how to create a default here @@ -182,23 +187,21 @@ class IterateInvocationOutput(BaseInvocationOutput): class Config: schema_extra = { - 'required': [ - 'type', - 'item', + "required": [ + "type", + "item", ] } + # TODO: Fill this out and move to invocations class IterateInvocation(BaseInvocation): """Iterates over a list of items""" + type: Literal["iterate"] = "iterate" - collection: list[Any] = Field( - description="The list of items to iterate over", default_factory=list - ) - index: int = Field( - description="The index, will be provided on executed iterators", default=0 - ) + collection: list[Any] = Field(description="The list of items to iterate over", default_factory=list) + index: int = Field(description="The index, will be provided on executed iterators", default=0) def invoke(self, context: InvocationContext) -> IterateInvocationOutput: """Produces the outputs as values""" @@ -212,12 +215,13 @@ class CollectInvocationOutput(BaseInvocationOutput): class Config: schema_extra = { - 'required': [ - 'type', - 'collection', + "required": [ + "type", + "collection", ] } + class CollectInvocation(BaseInvocation): """Collects values into a collection""" @@ -269,9 +273,7 @@ class Graph(BaseModel): if node_path in self.nodes: return (self, node_path) - node_id = ( - node_path if "." not in node_path else node_path[: node_path.index(".")] - ) + node_id = node_path if "." not in node_path else node_path[: node_path.index(".")] if node_id not in self.nodes: raise NodeNotFoundError(f"Node {node_path} not found in graph") @@ -333,9 +335,7 @@ class Graph(BaseModel): return False # Validate all edges reference nodes in the graph - node_ids = set( - [e.source.node_id for e in self.edges] + [e.destination.node_id for e in self.edges] - ) + node_ids = set([e.source.node_id for e in self.edges] + [e.destination.node_id for e in self.edges]) if not all((self.has_node(node_id) for node_id in node_ids)): return False @@ -361,22 +361,14 @@ class Graph(BaseModel): # Validate all iterators # TODO: may need to validate all iterators in subgraphs so edge connections in parent graphs will be available if not all( - ( - self._is_iterator_connection_valid(n.id) - for n in self.nodes.values() - if isinstance(n, IterateInvocation) - ) + (self._is_iterator_connection_valid(n.id) for n in self.nodes.values() if isinstance(n, IterateInvocation)) ): return False # Validate all collectors # TODO: may need to validate all collectors in subgraphs so edge connections in parent graphs will be available if not all( - ( - self._is_collector_connection_valid(n.id) - for n in self.nodes.values() - if isinstance(n, CollectInvocation) - ) + (self._is_collector_connection_valid(n.id) for n in self.nodes.values() if isinstance(n, CollectInvocation)) ): return False @@ -395,48 +387,51 @@ class Graph(BaseModel): # Validate that an edge to this node+field doesn't already exist input_edges = self._get_input_edges(edge.destination.node_id, edge.destination.field) if len(input_edges) > 0 and not isinstance(to_node, CollectInvocation): - raise InvalidEdgeError(f'Edge to node {edge.destination.node_id} field {edge.destination.field} already exists') + raise InvalidEdgeError( + f"Edge to node {edge.destination.node_id} field {edge.destination.field} already exists" + ) # Validate that no cycles would be created g = self.nx_graph_flat() g.add_edge(edge.source.node_id, edge.destination.node_id) if not nx.is_directed_acyclic_graph(g): - raise InvalidEdgeError(f'Edge creates a cycle in the graph: {edge.source.node_id} -> {edge.destination.node_id}') + raise InvalidEdgeError( + f"Edge creates a cycle in the graph: {edge.source.node_id} -> {edge.destination.node_id}" + ) # Validate that the field types are compatible - if not are_connections_compatible( - from_node, edge.source.field, to_node, edge.destination.field - ): - raise InvalidEdgeError(f'Fields are incompatible: cannot connect {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}') + if not are_connections_compatible(from_node, edge.source.field, to_node, edge.destination.field): + raise InvalidEdgeError( + f"Fields are incompatible: cannot connect {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}" + ) # Validate if iterator output type matches iterator input type (if this edge results in both being set) if isinstance(to_node, IterateInvocation) and edge.destination.field == "collection": - if not self._is_iterator_connection_valid( - edge.destination.node_id, new_input=edge.source - ): - raise InvalidEdgeError(f'Iterator input type does not match iterator output type: {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}') + if not self._is_iterator_connection_valid(edge.destination.node_id, new_input=edge.source): + raise InvalidEdgeError( + f"Iterator input type does not match iterator output type: {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}" + ) # Validate if iterator input type matches output type (if this edge results in both being set) if isinstance(from_node, IterateInvocation) and edge.source.field == "item": - if not self._is_iterator_connection_valid( - edge.source.node_id, new_output=edge.destination - ): - raise InvalidEdgeError(f'Iterator output type does not match iterator input type:, {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}') + if not self._is_iterator_connection_valid(edge.source.node_id, new_output=edge.destination): + raise InvalidEdgeError( + f"Iterator output type does not match iterator input type:, {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}" + ) # Validate if collector input type matches output type (if this edge results in both being set) if isinstance(to_node, CollectInvocation) and edge.destination.field == "item": - if not self._is_collector_connection_valid( - edge.destination.node_id, new_input=edge.source - ): - raise InvalidEdgeError(f'Collector output type does not match collector input type: {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}') + if not self._is_collector_connection_valid(edge.destination.node_id, new_input=edge.source): + raise InvalidEdgeError( + f"Collector output type does not match collector input type: {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}" + ) # Validate if collector output type matches input type (if this edge results in both being set) if isinstance(from_node, CollectInvocation) and edge.source.field == "collection": - if not self._is_collector_connection_valid( - edge.source.node_id, new_output=edge.destination - ): - raise InvalidEdgeError(f'Collector input type does not match collector output type: {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}') - + if not self._is_collector_connection_valid(edge.source.node_id, new_output=edge.destination): + raise InvalidEdgeError( + f"Collector input type does not match collector output type: {edge.source.node_id}.{edge.source.field} to {edge.destination.node_id}.{edge.destination.field}" + ) def has_node(self, node_path: str) -> bool: """Determines whether or not a node exists in the graph.""" @@ -465,17 +460,13 @@ class Graph(BaseModel): # Ensure the node type matches the new node if type(node) != type(new_node): - raise TypeError( - f"Node {node_path} is type {type(node)} but new node is type {type(new_node)}" - ) + raise TypeError(f"Node {node_path} is type {type(node)} but new node is type {type(new_node)}") # Ensure the new id is either the same or is not in the graph prefix = None if "." not in node_path else node_path[: node_path.rindex(".")] new_path = self._get_node_path(new_node.id, prefix=prefix) if new_node.id != node.id and self.has_node(new_path): - raise NodeAlreadyInGraphError( - "Node with id {new_node.id} already exists in graph" - ) + raise NodeAlreadyInGraphError("Node with id {new_node.id} already exists in graph") # Set the new node in the graph graph.nodes[new_node.id] = new_node @@ -497,9 +488,7 @@ class Graph(BaseModel): graph.add_edge( Edge( source=edge.source, - destination=EdgeConnection( - node_id=new_graph_node_path, field=edge.destination.field - ) + destination=EdgeConnection(node_id=new_graph_node_path, field=edge.destination.field), ) ) @@ -512,16 +501,12 @@ class Graph(BaseModel): ) graph.add_edge( Edge( - source=EdgeConnection( - node_id=new_graph_node_path, field=edge.source.field - ), - destination=edge.destination + source=EdgeConnection(node_id=new_graph_node_path, field=edge.source.field), + destination=edge.destination, ) ) - def _get_input_edges( - self, node_path: str, field: Optional[str] = None - ) -> list[Edge]: + def _get_input_edges(self, node_path: str, field: Optional[str] = None) -> list[Edge]: """Gets all input edges for a node""" edges = self._get_input_edges_and_graphs(node_path) @@ -538,7 +523,7 @@ class Graph(BaseModel): destination=EdgeConnection( node_id=self._get_node_path(e.destination.node_id, prefix=prefix), field=e.destination.field, - ) + ), ) for _, prefix, e in filtered_edges ] @@ -550,32 +535,20 @@ class Graph(BaseModel): edges = list() # Return any input edges that appear in this graph - edges.extend( - [(self, prefix, e) for e in self.edges if e.destination.node_id == node_path] - ) + edges.extend([(self, prefix, e) for e in self.edges if e.destination.node_id == node_path]) - node_id = ( - node_path if "." not in node_path else node_path[: node_path.index(".")] - ) + node_id = node_path if "." not in node_path else node_path[: node_path.index(".")] node = self.nodes[node_id] if isinstance(node, GraphInvocation): graph = node.graph - graph_path = ( - node.id - if prefix is None or prefix == "" - else self._get_node_path(node.id, prefix=prefix) - ) - graph_edges = graph._get_input_edges_and_graphs( - node_path[(len(node_id) + 1) :], prefix=graph_path - ) + graph_path = node.id if prefix is None or prefix == "" else self._get_node_path(node.id, prefix=prefix) + graph_edges = graph._get_input_edges_and_graphs(node_path[(len(node_id) + 1) :], prefix=graph_path) edges.extend(graph_edges) return edges - def _get_output_edges( - self, node_path: str, field: str - ) -> list[Edge]: + def _get_output_edges(self, node_path: str, field: str) -> list[Edge]: """Gets all output edges for a node""" edges = self._get_output_edges_and_graphs(node_path) @@ -592,7 +565,7 @@ class Graph(BaseModel): destination=EdgeConnection( node_id=self._get_node_path(e.destination.node_id, prefix=prefix), field=e.destination.field, - ) + ), ) for _, prefix, e in filtered_edges ] @@ -604,25 +577,15 @@ class Graph(BaseModel): edges = list() # Return any input edges that appear in this graph - edges.extend( - [(self, prefix, e) for e in self.edges if e.source.node_id == node_path] - ) + edges.extend([(self, prefix, e) for e in self.edges if e.source.node_id == node_path]) - node_id = ( - node_path if "." not in node_path else node_path[: node_path.index(".")] - ) + node_id = node_path if "." not in node_path else node_path[: node_path.index(".")] node = self.nodes[node_id] if isinstance(node, GraphInvocation): graph = node.graph - graph_path = ( - node.id - if prefix is None or prefix == "" - else self._get_node_path(node.id, prefix=prefix) - ) - graph_edges = graph._get_output_edges_and_graphs( - node_path[(len(node_id) + 1) :], prefix=graph_path - ) + graph_path = node.id if prefix is None or prefix == "" else self._get_node_path(node.id, prefix=prefix) + graph_edges = graph._get_output_edges_and_graphs(node_path[(len(node_id) + 1) :], prefix=graph_path) edges.extend(graph_edges) return edges @@ -646,12 +609,8 @@ class Graph(BaseModel): return False # Get input and output fields (the fields linked to the iterator's input/output) - input_field = get_output_field( - self.get_node(inputs[0].node_id), inputs[0].field - ) - output_fields = list( - [get_input_field(self.get_node(e.node_id), e.field) for e in outputs] - ) + input_field = get_output_field(self.get_node(inputs[0].node_id), inputs[0].field) + output_fields = list([get_input_field(self.get_node(e.node_id), e.field) for e in outputs]) # Input type must be a list if get_origin(input_field) != list: @@ -659,12 +618,7 @@ class Graph(BaseModel): # Validate that all outputs match the input type input_field_item_type = get_args(input_field)[0] - if not all( - ( - are_connection_types_compatible(input_field_item_type, f) - for f in output_fields - ) - ): + if not all((are_connection_types_compatible(input_field_item_type, f) for f in output_fields)): return False return True @@ -684,35 +638,21 @@ class Graph(BaseModel): outputs.append(new_output) # Get input and output fields (the fields linked to the iterator's input/output) - input_fields = list( - [get_output_field(self.get_node(e.node_id), e.field) for e in inputs] - ) - output_fields = list( - [get_input_field(self.get_node(e.node_id), e.field) for e in outputs] - ) + input_fields = list([get_output_field(self.get_node(e.node_id), e.field) for e in inputs]) + output_fields = list([get_input_field(self.get_node(e.node_id), e.field) for e in outputs]) # Validate that all inputs are derived from or match a single type input_field_types = set( [ t for input_field in input_fields - for t in ( - [input_field] - if get_origin(input_field) == None - else get_args(input_field) - ) + for t in ([input_field] if get_origin(input_field) == None else get_args(input_field)) if t != NoneType ] ) # Get unique types type_tree = nx.DiGraph() type_tree.add_nodes_from(input_field_types) - type_tree.add_edges_from( - [ - e - for e in itertools.permutations(input_field_types, 2) - if issubclass(e[1], e[0]) - ] - ) + type_tree.add_edges_from([e for e in itertools.permutations(input_field_types, 2) if issubclass(e[1], e[0])]) type_degrees = type_tree.in_degree(type_tree.nodes) if sum((t[1] == 0 for t in type_degrees)) != 1: # type: ignore return False # There is more than one root type @@ -729,9 +669,7 @@ class Graph(BaseModel): return False # Verify that all outputs match the input type (are a base class or the same class) - if not all( - (issubclass(input_root_type, get_args(f)[0]) for f in output_fields) - ): + if not all((issubclass(input_root_type, get_args(f)[0]) for f in output_fields)): return False return True @@ -751,9 +689,7 @@ class Graph(BaseModel): g.add_edges_from(set([(e.source.node_id, e.destination.node_id) for e in self.edges])) return g - def nx_graph_flat( - self, nx_graph: Optional[nx.DiGraph] = None, prefix: Optional[str] = None - ) -> nx.DiGraph: + def nx_graph_flat(self, nx_graph: Optional[nx.DiGraph] = None, prefix: Optional[str] = None) -> nx.DiGraph: """Returns a flattened NetworkX DiGraph, including all subgraphs (but not with iterations expanded)""" g = nx_graph or nx.DiGraph() @@ -762,26 +698,18 @@ class Graph(BaseModel): [ self._get_node_path(n.id, prefix) for n in self.nodes.values() - if not isinstance(n, GraphInvocation) - and not isinstance(n, IterateInvocation) + if not isinstance(n, GraphInvocation) and not isinstance(n, IterateInvocation) ] ) # Expand graph nodes - for sgn in ( - gn for gn in self.nodes.values() if isinstance(gn, GraphInvocation) - ): + for sgn in (gn for gn in self.nodes.values() if isinstance(gn, GraphInvocation)): g = sgn.graph.nx_graph_flat(g, self._get_node_path(sgn.id, prefix)) # TODO: figure out if iteration nodes need to be expanded unique_edges = set([(e.source.node_id, e.destination.node_id) for e in self.edges]) - g.add_edges_from( - [ - (self._get_node_path(e[0], prefix), self._get_node_path(e[1], prefix)) - for e in unique_edges - ] - ) + g.add_edges_from([(self._get_node_path(e[0], prefix), self._get_node_path(e[1], prefix)) for e in unique_edges]) return g @@ -800,23 +728,19 @@ class GraphExecutionState(BaseModel): ) # Nodes that have been executed - executed: set[str] = Field( - description="The set of node ids that have been executed", default_factory=set - ) + executed: set[str] = Field(description="The set of node ids that have been executed", default_factory=set) executed_history: list[str] = Field( description="The list of node ids that have been executed, in order of execution", default_factory=list, ) # The results of executed nodes - results: dict[ - str, Annotated[InvocationOutputsUnion, Field(discriminator="type")] - ] = Field(description="The results of node executions", default_factory=dict) + results: dict[str, Annotated[InvocationOutputsUnion, Field(discriminator="type")]] = Field( + description="The results of node executions", default_factory=dict + ) # Errors raised when executing nodes - errors: dict[str, str] = Field( - description="Errors raised when executing nodes", default_factory=dict - ) + errors: dict[str, str] = Field(description="Errors raised when executing nodes", default_factory=dict) # Map of prepared/executed nodes to their original nodes prepared_source_mapping: dict[str, str] = Field( @@ -832,16 +756,16 @@ class GraphExecutionState(BaseModel): class Config: schema_extra = { - 'required': [ - 'id', - 'graph', - 'execution_graph', - 'executed', - 'executed_history', - 'results', - 'errors', - 'prepared_source_mapping', - 'source_prepared_mapping', + "required": [ + "id", + "graph", + "execution_graph", + "executed", + "executed_history", + "results", + "errors", + "prepared_source_mapping", + "source_prepared_mapping", ] } @@ -899,9 +823,7 @@ class GraphExecutionState(BaseModel): """Returns true if the graph has any errors""" return len(self.errors) > 0 - def _create_execution_node( - self, node_path: str, iteration_node_map: list[tuple[str, str]] - ) -> list[str]: + def _create_execution_node(self, node_path: str, iteration_node_map: list[tuple[str, str]]) -> list[str]: """Prepares an iteration node and connects all edges, returning the new node id""" node = self.graph.get_node(node_path) @@ -911,20 +833,12 @@ class GraphExecutionState(BaseModel): # If this is an iterator node, we must create a copy for each iteration if isinstance(node, IterateInvocation): # Get input collection edge (should error if there are no inputs) - input_collection_edge = next( - iter(self.graph._get_input_edges(node_path, "collection")) - ) + input_collection_edge = next(iter(self.graph._get_input_edges(node_path, "collection"))) input_collection_prepared_node_id = next( - n[1] - for n in iteration_node_map - if n[0] == input_collection_edge.source.node_id - ) - input_collection_prepared_node_output = self.results[ - input_collection_prepared_node_id - ] - input_collection = getattr( - input_collection_prepared_node_output, input_collection_edge.source.field + n[1] for n in iteration_node_map if n[0] == input_collection_edge.source.node_id ) + input_collection_prepared_node_output = self.results[input_collection_prepared_node_id] + input_collection = getattr(input_collection_prepared_node_output, input_collection_edge.source.field) self_iteration_count = len(input_collection) new_nodes = list() @@ -939,9 +853,7 @@ class GraphExecutionState(BaseModel): # For collect nodes, this may contain multiple inputs to the same field new_edges = list() for edge in input_edges: - for input_node_id in ( - n[1] for n in iteration_node_map if n[0] == edge.source.node_id - ): + for input_node_id in (n[1] for n in iteration_node_map if n[0] == edge.source.node_id): new_edge = Edge( source=EdgeConnection(node_id=input_node_id, field=edge.source.field), destination=EdgeConnection(node_id="", field=edge.destination.field), @@ -982,11 +894,7 @@ class GraphExecutionState(BaseModel): def _iterator_graph(self) -> nx.DiGraph: """Gets a DiGraph with edges to collectors removed so an ancestor search produces all active iterators for any node""" g = self.graph.nx_graph_flat() - collectors = ( - n - for n in self.graph.nodes - if isinstance(self.graph.get_node(n), CollectInvocation) - ) + collectors = (n for n in self.graph.nodes if isinstance(self.graph.get_node(n), CollectInvocation)) for c in collectors: g.remove_edges_from(list(g.in_edges(c))) return g @@ -994,11 +902,7 @@ class GraphExecutionState(BaseModel): def _get_node_iterators(self, node_id: str) -> list[str]: """Gets iterators for a node""" g = self._iterator_graph() - iterators = [ - n - for n in nx.ancestors(g, node_id) - if isinstance(self.graph.get_node(n), IterateInvocation) - ] + iterators = [n for n in nx.ancestors(g, node_id) if isinstance(self.graph.get_node(n), IterateInvocation)] return iterators def _prepare(self) -> Optional[str]: @@ -1045,29 +949,18 @@ class GraphExecutionState(BaseModel): if isinstance(next_node, CollectInvocation): # Collapse all iterator input mappings and create a single execution node for the collect invocation all_iteration_mappings = list( - itertools.chain( - *( - ((s, p) for p in self.source_prepared_mapping[s]) - for s in next_node_parents - ) - ) + itertools.chain(*(((s, p) for p in self.source_prepared_mapping[s]) for s in next_node_parents)) ) # all_iteration_mappings = list(set(itertools.chain(*prepared_parent_mappings))) - create_results = self._create_execution_node( - next_node_id, all_iteration_mappings - ) + create_results = self._create_execution_node(next_node_id, all_iteration_mappings) if create_results is not None: new_node_ids.extend(create_results) else: # Iterators or normal nodes # Get all iterator combinations for this node # Will produce a list of lists of prepared iterator nodes, from which results can be iterated iterator_nodes = self._get_node_iterators(next_node_id) - iterator_nodes_prepared = [ - list(self.source_prepared_mapping[n]) for n in iterator_nodes - ] - iterator_node_prepared_combinations = list( - itertools.product(*iterator_nodes_prepared) - ) + iterator_nodes_prepared = [list(self.source_prepared_mapping[n]) for n in iterator_nodes] + iterator_node_prepared_combinations = list(itertools.product(*iterator_nodes_prepared)) # Select the correct prepared parents for each iteration # For every iterator, the parent must either not be a child of that iterator, or must match the prepared iteration for that iterator @@ -1096,31 +989,16 @@ class GraphExecutionState(BaseModel): return next(iter(prepared_nodes)) # Check if the requested node is an iterator - prepared_iterator = next( - (n for n in prepared_nodes if n in prepared_iterator_nodes), None - ) + prepared_iterator = next((n for n in prepared_nodes if n in prepared_iterator_nodes), None) if prepared_iterator is not None: return prepared_iterator # Filter to only iterator nodes that are a parent of the specified node, in tuple format (prepared, source) - iterator_source_node_mapping = [ - (n, self.prepared_source_mapping[n]) for n in prepared_iterator_nodes - ] - parent_iterators = [ - itn - for itn in iterator_source_node_mapping - if nx.has_path(graph, itn[1], source_node_path) - ] + iterator_source_node_mapping = [(n, self.prepared_source_mapping[n]) for n in prepared_iterator_nodes] + parent_iterators = [itn for itn in iterator_source_node_mapping if nx.has_path(graph, itn[1], source_node_path)] return next( - ( - n - for n in prepared_nodes - if all( - nx.has_path(execution_graph, pit[0], n) - for pit in parent_iterators - ) - ), + (n for n in prepared_nodes if all(nx.has_path(execution_graph, pit[0], n) for pit in parent_iterators)), None, ) @@ -1130,13 +1008,13 @@ class GraphExecutionState(BaseModel): # Depth-first search with pre-order traversal is a depth-first topological sort sorted_nodes = nx.dfs_preorder_nodes(g) - + next_node = next( ( n for n in sorted_nodes - if n not in self.executed # the node must not already be executed... - and all((e[0] in self.executed for e in g.in_edges(n))) # ...and all its inputs must be executed + if n not in self.executed # the node must not already be executed... + and all((e[0] in self.executed for e in g.in_edges(n))) # ...and all its inputs must be executed ), None, ) @@ -1221,15 +1099,18 @@ class ExposedNodeOutput(BaseModel): field: str = Field(description="The field name of the output") alias: str = Field(description="The alias of the output") + class LibraryGraph(BaseModel): id: str = Field(description="The unique identifier for this library graph", default_factory=uuid.uuid4) graph: Graph = Field(description="The graph") name: str = Field(description="The name of the graph") description: str = Field(description="The description of the graph") exposed_inputs: list[ExposedNodeInput] = Field(description="The inputs exposed by this graph", default_factory=list) - exposed_outputs: list[ExposedNodeOutput] = Field(description="The outputs exposed by this graph", default_factory=list) + exposed_outputs: list[ExposedNodeOutput] = Field( + description="The outputs exposed by this graph", default_factory=list + ) - @validator('exposed_inputs', 'exposed_outputs') + @validator("exposed_inputs", "exposed_outputs") def validate_exposed_aliases(cls, v): if len(v) != len(set(i.alias for i in v)): raise ValueError("Duplicate exposed alias") @@ -1237,23 +1118,27 @@ class LibraryGraph(BaseModel): @root_validator def validate_exposed_nodes(cls, values): - graph = values['graph'] + graph = values["graph"] # Validate exposed inputs - for exposed_input in values['exposed_inputs']: + for exposed_input in values["exposed_inputs"]: if not graph.has_node(exposed_input.node_path): raise ValueError(f"Exposed input node {exposed_input.node_path} does not exist") node = graph.get_node(exposed_input.node_path) if get_input_field(node, exposed_input.field) is None: - raise ValueError(f"Exposed input field {exposed_input.field} does not exist on node {exposed_input.node_path}") + raise ValueError( + f"Exposed input field {exposed_input.field} does not exist on node {exposed_input.node_path}" + ) # Validate exposed outputs - for exposed_output in values['exposed_outputs']: + for exposed_output in values["exposed_outputs"]: if not graph.has_node(exposed_output.node_path): raise ValueError(f"Exposed output node {exposed_output.node_path} does not exist") node = graph.get_node(exposed_output.node_path) if get_output_field(node, exposed_output.field) is None: - raise ValueError(f"Exposed output field {exposed_output.field} does not exist on node {exposed_output.node_path}") + raise ValueError( + f"Exposed output field {exposed_output.field} does not exist on node {exposed_output.node_path}" + ) return values diff --git a/invokeai/app/services/image_file_storage.py b/invokeai/app/services/image_file_storage.py index 60ae613748..fb8563a3e4 100644 --- a/invokeai/app/services/image_file_storage.py +++ b/invokeai/app/services/image_file_storage.py @@ -85,9 +85,7 @@ class DiskImageFileStorage(ImageFileStorageBase): self.__cache_ids = Queue() self.__max_cache_size = 10 # TODO: get this from config - self.__output_folder: Path = ( - output_folder if isinstance(output_folder, Path) else Path(output_folder) - ) + self.__output_folder: Path = output_folder if isinstance(output_folder, Path) else Path(output_folder) self.__thumbnails_folder = self.__output_folder / "thumbnails" # Validate required output folders at launch @@ -120,7 +118,7 @@ class DiskImageFileStorage(ImageFileStorageBase): image_path = self.get_path(image_name) pnginfo = PngImagePlugin.PngInfo() - + if metadata is not None: pnginfo.add_text("invokeai_metadata", json.dumps(metadata)) if graph is not None: @@ -183,9 +181,7 @@ class DiskImageFileStorage(ImageFileStorageBase): def __set_cache(self, image_name: Path, image: PILImageType): if not image_name in self.__cache: self.__cache[image_name] = image - self.__cache_ids.put( - image_name - ) # TODO: this should refresh position for LRU cache + self.__cache_ids.put(image_name) # TODO: this should refresh position for LRU cache if len(self.__cache) > self.__max_cache_size: cache_id = self.__cache_ids.get() if cache_id in self.__cache: diff --git a/invokeai/app/services/image_record_storage.py b/invokeai/app/services/image_record_storage.py index eb69679a35..8c274ab8f9 100644 --- a/invokeai/app/services/image_record_storage.py +++ b/invokeai/app/services/image_record_storage.py @@ -426,9 +426,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): finally: self._lock.release() - return OffsetPaginatedResults( - items=images, offset=offset, limit=limit, total=count - ) + return OffsetPaginatedResults(items=images, offset=offset, limit=limit, total=count) def delete(self, image_name: str) -> None: try: @@ -466,7 +464,6 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): finally: self._lock.release() - def delete_intermediates(self) -> list[str]: try: self._lock.acquire() @@ -505,9 +502,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): is_intermediate: bool = False, ) -> datetime: try: - metadata_json = ( - None if metadata is None else json.dumps(metadata) - ) + metadata_json = None if metadata is None else json.dumps(metadata) self._lock.acquire() self._cursor.execute( """--sql diff --git a/invokeai/app/services/images.py b/invokeai/app/services/images.py index dc1b18babe..f8376eb626 100644 --- a/invokeai/app/services/images.py +++ b/invokeai/app/services/images.py @@ -216,16 +216,9 @@ class ImageService(ImageServiceABC): metadata=metadata, session_id=session_id, ) - if board_id is not None: - self._services.board_image_records.add_image_to_board( - board_id=board_id, image_name=image_name - ) - - self._services.image_files.save( - image_name=image_name, image=image, metadata=metadata, graph=graph - ) - + self._services.board_image_records.add_image_to_board(board_id=board_id, image_name=image_name) + self._services.image_files.save(image_name=image_name, image=image, metadata=metadata, graph=graph) image_dto = self.get_dto(image_name) return image_dto @@ -236,7 +229,7 @@ class ImageService(ImageServiceABC): self._services.logger.error("Failed to save image file") raise except Exception as e: - self._services.logger.error("Problem saving image record and file") + self._services.logger.error(f"Problem saving image record and file: {str(e)}") raise e def update( @@ -300,9 +293,7 @@ class ImageService(ImageServiceABC): if not image_record.session_id: return ImageMetadata() - session_raw = self._services.graph_execution_manager.get_raw( - image_record.session_id - ) + session_raw = self._services.graph_execution_manager.get_raw(image_record.session_id) graph = None if session_raw: @@ -367,9 +358,7 @@ class ImageService(ImageServiceABC): r, self._services.urls.get_image_url(r.image_name), self._services.urls.get_image_url(r.image_name, True), - self._services.board_image_records.get_board_for_image( - r.image_name - ), + self._services.board_image_records.get_board_for_image(r.image_name), ), results.items, ) @@ -401,11 +390,7 @@ class ImageService(ImageServiceABC): def delete_images_on_board(self, board_id: str): try: - image_names = ( - self._services.board_image_records.get_all_board_image_names_for_board( - board_id - ) - ) + image_names = self._services.board_image_records.get_all_board_image_names_for_board(board_id) for image_name in image_names: self._services.image_files.delete(image_name) self._services.image_records.delete_many(image_names) diff --git a/invokeai/app/services/invocation_queue.py b/invokeai/app/services/invocation_queue.py index eb78a542a6..963d500aa8 100644 --- a/invokeai/app/services/invocation_queue.py +++ b/invokeai/app/services/invocation_queue.py @@ -7,6 +7,7 @@ from queue import Queue from pydantic import BaseModel, Field from typing import Optional + class InvocationQueueItem(BaseModel): graph_execution_state_id: str = Field(description="The ID of the graph execution state") invocation_id: str = Field(description="The ID of the node being invoked") @@ -45,9 +46,11 @@ class MemoryInvocationQueue(InvocationQueueABC): def get(self) -> InvocationQueueItem: item = self.__queue.get() - while isinstance(item, InvocationQueueItem) \ - and item.graph_execution_state_id in self.__cancellations \ - and self.__cancellations[item.graph_execution_state_id] > item.timestamp: + while ( + isinstance(item, InvocationQueueItem) + and item.graph_execution_state_id in self.__cancellations + and self.__cancellations[item.graph_execution_state_id] > item.timestamp + ): item = self.__queue.get() # Clear old items diff --git a/invokeai/app/services/invoker.py b/invokeai/app/services/invoker.py index 951d3b17c4..1a7b0de27e 100644 --- a/invokeai/app/services/invoker.py +++ b/invokeai/app/services/invoker.py @@ -7,6 +7,7 @@ from .graph import Graph, GraphExecutionState from .invocation_queue import InvocationQueueItem from .invocation_services import InvocationServices + class Invoker: """The invoker, used to execute invocations""" @@ -16,9 +17,7 @@ class Invoker: self.services = services self._start() - def invoke( - self, graph_execution_state: GraphExecutionState, invoke_all: bool = False - ) -> Optional[str]: + def invoke(self, graph_execution_state: GraphExecutionState, invoke_all: bool = False) -> Optional[str]: """Determines the next node to invoke and enqueues it, preparing if needed. Returns the id of the queued node, or `None` if there are no nodes left to enqueue.""" diff --git a/invokeai/app/services/item_storage.py b/invokeai/app/services/item_storage.py index 709d88bf97..5fe4eb7456 100644 --- a/invokeai/app/services/item_storage.py +++ b/invokeai/app/services/item_storage.py @@ -9,13 +9,15 @@ T = TypeVar("T", bound=BaseModel) class PaginatedResults(GenericModel, Generic[T]): """Paginated results""" - #fmt: off + + # fmt: off items: list[T] = Field(description="Items") page: int = Field(description="Current Page") pages: int = Field(description="Total number of pages") per_page: int = Field(description="Number of items per page") total: int = Field(description="Total number of items in result") - #fmt: on + # fmt: on + class ItemStorageABC(ABC, Generic[T]): _on_changed_callbacks: list[Callable[[T], None]] @@ -48,9 +50,7 @@ class ItemStorageABC(ABC, Generic[T]): pass @abstractmethod - def search( - self, query: str, page: int = 0, per_page: int = 10 - ) -> PaginatedResults[T]: + def search(self, query: str, page: int = 0, per_page: int = 10) -> PaginatedResults[T]: pass def on_changed(self, on_changed: Callable[[T], None]) -> None: diff --git a/invokeai/app/services/latent_storage.py b/invokeai/app/services/latent_storage.py index 0e23d6d018..7e781c49ec 100644 --- a/invokeai/app/services/latent_storage.py +++ b/invokeai/app/services/latent_storage.py @@ -7,6 +7,7 @@ from typing import Dict, Union, Optional import torch + class LatentsStorageBase(ABC): """Responsible for storing and retrieving latents.""" @@ -25,7 +26,7 @@ class LatentsStorageBase(ABC): class ForwardCacheLatentsStorage(LatentsStorageBase): """Caches the latest N latents in memory, writing-thorugh to and reading from underlying storage""" - + __cache: Dict[str, torch.Tensor] __cache_ids: Queue __max_cache_size: int @@ -87,8 +88,6 @@ class DiskLatentsStorage(LatentsStorageBase): def delete(self, name: str) -> None: latent_path = self.get_path(name) latent_path.unlink() - def get_path(self, name: str) -> Path: return self.__output_folder / name - diff --git a/invokeai/app/services/model_manager_service.py b/invokeai/app/services/model_manager_service.py index f7d3b3a7a7..c84cc3d189 100644 --- a/invokeai/app/services/model_manager_service.py +++ b/invokeai/app/services/model_manager_service.py @@ -103,7 +103,7 @@ class ModelManagerServiceBase(ABC): } """ pass - + @abstractmethod def list_model(self, model_name: str, base_model: BaseModelType, model_type: ModelType) -> dict: """ @@ -125,7 +125,7 @@ class ModelManagerServiceBase(ABC): base_model: BaseModelType, model_type: ModelType, model_attributes: dict, - clobber: bool = False + clobber: bool = False, ) -> AddModelResult: """ Update the named model with a dictionary of attributes. Will fail with an @@ -148,12 +148,12 @@ class ModelManagerServiceBase(ABC): Update the named model with a dictionary of attributes. Will fail with a ModelNotFoundException if the name does not already exist. - On a successful update, the config will be changed in memory. Will fail - with an assertion error if provided attributes are incorrect or + On a successful update, the config will be changed in memory. Will fail + with an assertion error if provided attributes are incorrect or the model name is missing. Call commit() to write changes to disk. """ pass - + @abstractmethod def del_model( self, @@ -169,21 +169,20 @@ class ModelManagerServiceBase(ABC): pass @abstractmethod - def rename_model(self, - model_name: str, - base_model: BaseModelType, - model_type: ModelType, - new_name: str, - ): + def rename_model( + self, + model_name: str, + base_model: BaseModelType, + model_type: ModelType, + new_name: str, + ): """ Rename the indicated model. """ pass @abstractmethod - def list_checkpoint_configs( - self - )->List[Path]: + def list_checkpoint_configs(self) -> List[Path]: """ List the checkpoint config paths from ROOT/configs/stable-diffusion. """ @@ -194,7 +193,7 @@ class ModelManagerServiceBase(ABC): self, model_name: str, base_model: BaseModelType, - model_type: Union[ModelType.Main,ModelType.Vae], + model_type: Union[ModelType.Main, ModelType.Vae], ) -> AddModelResult: """ Convert a checkpoint file into a diffusers folder, deleting the cached @@ -211,11 +210,12 @@ class ModelManagerServiceBase(ABC): pass @abstractmethod - def heuristic_import(self, - items_to_import: set[str], - prediction_type_helper: Optional[Callable[[Path],SchedulerPredictionType]]=None, - )->dict[str, AddModelResult]: - '''Import a list of paths, repo_ids or URLs. Returns the set of + def heuristic_import( + self, + items_to_import: set[str], + prediction_type_helper: Optional[Callable[[Path], SchedulerPredictionType]] = None, + ) -> dict[str, AddModelResult]: + """Import a list of paths, repo_ids or URLs. Returns the set of successfully imported items. :param items_to_import: Set of strings corresponding to models to be imported. :param prediction_type_helper: A callback that receives the Path of a Stable Diffusion 2 checkpoint model and returns a SchedulerPredictionType. @@ -230,19 +230,23 @@ class ModelManagerServiceBase(ABC): The result is a set of successfully installed models. Each element of the set is a dict corresponding to the newly-created OmegaConf stanza for that model. - ''' + """ pass @abstractmethod def merge_models( - self, - model_names: List[str] = Field(default=None, min_items=2, max_items=3, description="List of model names to merge"), - base_model: Union[BaseModelType,str] = Field(default=None, description="Base model shared by all models to be merged"), - merged_model_name: str = Field(default=None, description="Name of destination model after merging"), - alpha: Optional[float] = 0.5, - interp: Optional[MergeInterpolationMethod] = None, - force: Optional[bool] = False, - merge_dest_directory: Optional[Path] = None + self, + model_names: List[str] = Field( + default=None, min_items=2, max_items=3, description="List of model names to merge" + ), + base_model: Union[BaseModelType, str] = Field( + default=None, description="Base model shared by all models to be merged" + ), + merged_model_name: str = Field(default=None, description="Name of destination model after merging"), + alpha: Optional[float] = 0.5, + interp: Optional[MergeInterpolationMethod] = None, + force: Optional[bool] = False, + merge_dest_directory: Optional[Path] = None, ) -> AddModelResult: """ Merge two to three diffusrs pipeline models and save as a new model. @@ -250,27 +254,27 @@ class ModelManagerServiceBase(ABC): :param base_model: Base model to use for all models :param merged_model_name: Name of destination merged model :param alpha: Alpha strength to apply to 2d and 3d model - :param interp: Interpolation method. None (default) + :param interp: Interpolation method. None (default) :param merge_dest_directory: Save the merged model to the designated directory (with 'merged_model_name' appended) """ pass @abstractmethod - def search_for_models(self, directory: Path)->List[Path]: + def search_for_models(self, directory: Path) -> List[Path]: """ Return list of all models found in the designated directory. """ pass - + @abstractmethod def sync_to_config(self): """ - Re-read models.yaml, rescan the models directory, and reimport models + Re-read models.yaml, rescan the models directory, and reimport models in the autoimport directories. Call after making changes outside the model manager API. """ pass - + @abstractmethod def commit(self, conf_file: Optional[Path] = None) -> None: """ @@ -280,9 +284,11 @@ class ModelManagerServiceBase(ABC): """ pass + # simple implementation class ModelManagerService(ModelManagerServiceBase): """Responsible for managing models on disk and in memory""" + def __init__( self, config: InvokeAIAppConfig, @@ -298,17 +304,17 @@ class ModelManagerService(ModelManagerServiceBase): config_file = config.model_conf_path else: config_file = config.root_dir / "configs/models.yaml" - - logger.debug(f'Config file={config_file}') + + logger.debug(f"Config file={config_file}") device = torch.device(choose_torch_device()) - device_name = torch.cuda.get_device_name() if device==torch.device('cuda') else '' - logger.info(f'GPU device = {device} {device_name}') + device_name = torch.cuda.get_device_name() if device == torch.device("cuda") else "" + logger.info(f"GPU device = {device} {device_name}") precision = config.precision if precision == "auto": precision = choose_precision(device) - dtype = torch.float32 if precision == 'float32' else torch.float16 + dtype = torch.float32 if precision == "float32" else torch.float16 # this is transitional backward compatibility # support for the deprecated `max_loaded_models` @@ -316,9 +322,7 @@ class ModelManagerService(ModelManagerServiceBase): # cache size is set to 2.5 GB times # the number of max_loaded_models. Otherwise # use new `max_cache_size` config setting - max_cache_size = config.max_cache_size \ - if hasattr(config,'max_cache_size') \ - else config.max_loaded_models * 2.5 + max_cache_size = config.max_cache_size if hasattr(config, "max_cache_size") else config.max_loaded_models * 2.5 logger.debug(f"Maximum RAM cache size: {max_cache_size} GiB") @@ -332,7 +336,7 @@ class ModelManagerService(ModelManagerServiceBase): sequential_offload=sequential_offload, logger=logger, ) - logger.info('Model manager service initialized') + logger.info("Model manager service initialized") def get_model( self, @@ -371,7 +375,7 @@ class ModelManagerService(ModelManagerServiceBase): base_model=base_model, model_type=model_type, submodel=submodel, - model_info=model_info + model_info=model_info, ) return model_info @@ -405,9 +409,7 @@ class ModelManagerService(ModelManagerServiceBase): return self.mgr.model_names() def list_models( - self, - base_model: Optional[BaseModelType] = None, - model_type: Optional[ModelType] = None + self, base_model: Optional[BaseModelType] = None, model_type: Optional[ModelType] = None ) -> list[dict]: """ Return a list of models. @@ -418,9 +420,7 @@ class ModelManagerService(ModelManagerServiceBase): """ Return information about the model using the same format as list_models() """ - return self.mgr.list_model(model_name=model_name, - base_model=base_model, - model_type=model_type) + return self.mgr.list_model(model_name=model_name, base_model=base_model, model_type=model_type) def add_model( self, @@ -429,7 +429,7 @@ class ModelManagerService(ModelManagerServiceBase): model_type: ModelType, model_attributes: dict, clobber: bool = False, - )->None: + ) -> None: """ Update the named model with a dictionary of attributes. Will fail with an assertion error if the name already exists. Pass clobber=True to overwrite. @@ -437,7 +437,7 @@ class ModelManagerService(ModelManagerServiceBase): with an assertion error if provided attributes are incorrect or the model name is missing. Call commit() to write changes to disk. """ - self.logger.debug(f'add/update model {model_name}') + self.logger.debug(f"add/update model {model_name}") return self.mgr.add_model(model_name, base_model, model_type, model_attributes, clobber) def update_model( @@ -450,15 +450,15 @@ class ModelManagerService(ModelManagerServiceBase): """ Update the named model with a dictionary of attributes. Will fail with a ModelNotFoundException exception if the name does not already exist. - On a successful update, the config will be changed in memory. Will fail - with an assertion error if provided attributes are incorrect or + On a successful update, the config will be changed in memory. Will fail + with an assertion error if provided attributes are incorrect or the model name is missing. Call commit() to write changes to disk. """ - self.logger.debug(f'update model {model_name}') + self.logger.debug(f"update model {model_name}") if not self.model_exists(model_name, base_model, model_type): raise ModelNotFoundException(f"Unknown model {model_name}") return self.add_model(model_name, base_model, model_type, model_attributes, clobber=True) - + def del_model( self, model_name: str, @@ -470,7 +470,7 @@ class ModelManagerService(ModelManagerServiceBase): then the underlying weight file or diffusers directory will be deleted as well. """ - self.logger.debug(f'delete model {model_name}') + self.logger.debug(f"delete model {model_name}") self.mgr.del_model(model_name, base_model, model_type) self.mgr.commit() @@ -478,8 +478,10 @@ class ModelManagerService(ModelManagerServiceBase): self, model_name: str, base_model: BaseModelType, - model_type: Union[ModelType.Main,ModelType.Vae], - convert_dest_directory: Optional[Path] = Field(default=None, description="Optional directory location for merged model"), + model_type: Union[ModelType.Main, ModelType.Vae], + convert_dest_directory: Optional[Path] = Field( + default=None, description="Optional directory location for merged model" + ), ) -> AddModelResult: """ Convert a checkpoint file into a diffusers folder, deleting the cached @@ -494,10 +496,10 @@ class ModelManagerService(ModelManagerServiceBase): also raise a ValueError in the event that there is a similarly-named diffusers directory already in place. """ - self.logger.debug(f'convert model {model_name}') + self.logger.debug(f"convert model {model_name}") return self.mgr.convert_model(model_name, base_model, model_type, convert_dest_directory) - def commit(self, conf_file: Optional[Path]=None): + def commit(self, conf_file: Optional[Path] = None): """ Write current configuration out to the indicated file. If no conf_file is provided, then replaces the @@ -524,7 +526,7 @@ class ModelManagerService(ModelManagerServiceBase): base_model=base_model, model_type=model_type, submodel=submodel, - model_info=model_info + model_info=model_info, ) else: context.services.events.emit_model_load_started( @@ -535,16 +537,16 @@ class ModelManagerService(ModelManagerServiceBase): submodel=submodel, ) - @property def logger(self): return self.mgr.logger - def heuristic_import(self, - items_to_import: set[str], - prediction_type_helper: Optional[Callable[[Path],SchedulerPredictionType]]=None, - )->dict[str, AddModelResult]: - '''Import a list of paths, repo_ids or URLs. Returns the set of + def heuristic_import( + self, + items_to_import: set[str], + prediction_type_helper: Optional[Callable[[Path], SchedulerPredictionType]] = None, + ) -> dict[str, AddModelResult]: + """Import a list of paths, repo_ids or URLs. Returns the set of successfully imported items. :param items_to_import: Set of strings corresponding to models to be imported. :param prediction_type_helper: A callback that receives the Path of a Stable Diffusion 2 checkpoint model and returns a SchedulerPredictionType. @@ -559,18 +561,24 @@ class ModelManagerService(ModelManagerServiceBase): The result is a set of successfully installed models. Each element of the set is a dict corresponding to the newly-created OmegaConf stanza for that model. - ''' - return self.mgr.heuristic_import(items_to_import, prediction_type_helper) + """ + return self.mgr.heuristic_import(items_to_import, prediction_type_helper) def merge_models( - self, - model_names: List[str] = Field(default=None, min_items=2, max_items=3, description="List of model names to merge"), - base_model: Union[BaseModelType,str] = Field(default=None, description="Base model shared by all models to be merged"), - merged_model_name: str = Field(default=None, description="Name of destination model after merging"), - alpha: Optional[float] = 0.5, - interp: Optional[MergeInterpolationMethod] = None, - force: Optional[bool] = False, - merge_dest_directory: Optional[Path] = Field(default=None, description="Optional directory location for merged model"), + self, + model_names: List[str] = Field( + default=None, min_items=2, max_items=3, description="List of model names to merge" + ), + base_model: Union[BaseModelType, str] = Field( + default=None, description="Base model shared by all models to be merged" + ), + merged_model_name: str = Field(default=None, description="Name of destination model after merging"), + alpha: Optional[float] = 0.5, + interp: Optional[MergeInterpolationMethod] = None, + force: Optional[bool] = False, + merge_dest_directory: Optional[Path] = Field( + default=None, description="Optional directory location for merged model" + ), ) -> AddModelResult: """ Merge two to three diffusrs pipeline models and save as a new model. @@ -578,25 +586,25 @@ class ModelManagerService(ModelManagerServiceBase): :param base_model: Base model to use for all models :param merged_model_name: Name of destination merged model :param alpha: Alpha strength to apply to 2d and 3d model - :param interp: Interpolation method. None (default) + :param interp: Interpolation method. None (default) :param merge_dest_directory: Save the merged model to the designated directory (with 'merged_model_name' appended) """ merger = ModelMerger(self.mgr) try: result = merger.merge_diffusion_models_and_save( - model_names = model_names, - base_model = base_model, - merged_model_name = merged_model_name, - alpha = alpha, - interp = interp, - force = force, + model_names=model_names, + base_model=base_model, + merged_model_name=merged_model_name, + alpha=alpha, + interp=interp, + force=force, merge_dest_directory=merge_dest_directory, ) except AssertionError as e: raise ValueError(e) return result - def search_for_models(self, directory: Path)->List[Path]: + def search_for_models(self, directory: Path) -> List[Path]: """ Return list of all models found in the designated directory. """ @@ -605,28 +613,29 @@ class ModelManagerService(ModelManagerServiceBase): def sync_to_config(self): """ - Re-read models.yaml, rescan the models directory, and reimport models + Re-read models.yaml, rescan the models directory, and reimport models in the autoimport directories. Call after making changes outside the model manager API. """ return self.mgr.sync_to_config() - def list_checkpoint_configs(self)->List[Path]: + def list_checkpoint_configs(self) -> List[Path]: """ List the checkpoint config paths from ROOT/configs/stable-diffusion. """ config = self.mgr.app_config conf_path = config.legacy_conf_path root_path = config.root_path - return [(conf_path / x).relative_to(root_path) for x in conf_path.glob('**/*.yaml')] + return [(conf_path / x).relative_to(root_path) for x in conf_path.glob("**/*.yaml")] - def rename_model(self, - model_name: str, - base_model: BaseModelType, - model_type: ModelType, - new_name: str = None, - new_base: BaseModelType = None, - ): + def rename_model( + self, + model_name: str, + base_model: BaseModelType, + model_type: ModelType, + new_name: str = None, + new_base: BaseModelType = None, + ): """ Rename the indicated model. Can provide a new name and/or a new base. :param model_name: Current name of the model @@ -635,10 +644,10 @@ class ModelManagerService(ModelManagerServiceBase): :param new_name: New name for the model :param new_base: New base for the model """ - self.mgr.rename_model(base_model = base_model, - model_type = model_type, - model_name = model_name, - new_name = new_name, - new_base = new_base, - ) - + self.mgr.rename_model( + base_model=base_model, + model_type=model_type, + model_name=model_name, + new_name=new_name, + new_base=new_base, + ) diff --git a/invokeai/app/services/models/board_record.py b/invokeai/app/services/models/board_record.py index bf5401b209..658698e794 100644 --- a/invokeai/app/services/models/board_record.py +++ b/invokeai/app/services/models/board_record.py @@ -11,30 +11,20 @@ class BoardRecord(BaseModel): """The unique ID of the board.""" board_name: str = Field(description="The name of the board.") """The name of the board.""" - created_at: Union[datetime, str] = Field( - description="The created timestamp of the board." - ) + created_at: Union[datetime, str] = Field(description="The created timestamp of the board.") """The created timestamp of the image.""" - updated_at: Union[datetime, str] = Field( - description="The updated timestamp of the board." - ) + updated_at: Union[datetime, str] = Field(description="The updated timestamp of the board.") """The updated timestamp of the image.""" - deleted_at: Union[datetime, str, None] = Field( - description="The deleted timestamp of the board." - ) + deleted_at: Union[datetime, str, None] = Field(description="The deleted timestamp of the board.") """The updated timestamp of the image.""" - cover_image_name: Optional[str] = Field( - description="The name of the cover image of the board." - ) + cover_image_name: Optional[str] = Field(description="The name of the cover image of the board.") """The name of the cover image of the board.""" class BoardDTO(BoardRecord): """Deserialized board record with cover image URL and image count.""" - cover_image_name: Optional[str] = Field( - description="The name of the board's cover image." - ) + cover_image_name: Optional[str] = Field(description="The name of the board's cover image.") """The URL of the thumbnail of the most recent image in the board.""" image_count: int = Field(description="The number of images in the board.") """The number of images in the board.""" diff --git a/invokeai/app/services/models/image_record.py b/invokeai/app/services/models/image_record.py index cf10f6e8b2..a105d03ba8 100644 --- a/invokeai/app/services/models/image_record.py +++ b/invokeai/app/services/models/image_record.py @@ -20,17 +20,11 @@ class ImageRecord(BaseModel): """The actual width of the image in px. This may be different from the width in metadata.""" height: int = Field(description="The height of the image in px.") """The actual height of the image in px. This may be different from the height in metadata.""" - created_at: Union[datetime.datetime, str] = Field( - description="The created timestamp of the image." - ) + created_at: Union[datetime.datetime, str] = Field(description="The created timestamp of the image.") """The created timestamp of the image.""" - updated_at: Union[datetime.datetime, str] = Field( - description="The updated timestamp of the image." - ) + updated_at: Union[datetime.datetime, str] = Field(description="The updated timestamp of the image.") """The updated timestamp of the image.""" - deleted_at: Union[datetime.datetime, str, None] = Field( - description="The deleted timestamp of the image." - ) + deleted_at: Union[datetime.datetime, str, None] = Field(description="The deleted timestamp of the image.") """The deleted timestamp of the image.""" is_intermediate: bool = Field(description="Whether this is an intermediate image.") """Whether this is an intermediate image.""" @@ -55,18 +49,14 @@ class ImageRecordChanges(BaseModel, extra=Extra.forbid): - `is_intermediate`: change the image's `is_intermediate` flag """ - image_category: Optional[ImageCategory] = Field( - description="The image's new category." - ) + image_category: Optional[ImageCategory] = Field(description="The image's new category.") """The image's new category.""" session_id: Optional[StrictStr] = Field( default=None, description="The image's new session ID.", ) """The image's new session ID.""" - is_intermediate: Optional[StrictBool] = Field( - default=None, description="The image's new `is_intermediate` flag." - ) + is_intermediate: Optional[StrictBool] = Field(default=None, description="The image's new `is_intermediate` flag.") """The image's new `is_intermediate` flag.""" @@ -84,9 +74,7 @@ class ImageUrlsDTO(BaseModel): class ImageDTO(ImageRecord, ImageUrlsDTO): """Deserialized image record, enriched for the frontend.""" - board_id: Optional[str] = Field( - description="The id of the board the image belongs to, if one exists." - ) + board_id: Optional[str] = Field(description="The id of the board the image belongs to, if one exists.") """The id of the board the image belongs to, if one exists.""" pass @@ -110,12 +98,8 @@ def deserialize_image_record(image_dict: dict) -> ImageRecord: # TODO: do we really need to handle default values here? ideally the data is the correct shape... image_name = image_dict.get("image_name", "unknown") - image_origin = ResourceOrigin( - image_dict.get("image_origin", ResourceOrigin.INTERNAL.value) - ) - image_category = ImageCategory( - image_dict.get("image_category", ImageCategory.GENERAL.value) - ) + image_origin = ResourceOrigin(image_dict.get("image_origin", ResourceOrigin.INTERNAL.value)) + image_category = ImageCategory(image_dict.get("image_category", ImageCategory.GENERAL.value)) width = image_dict.get("width", 0) height = image_dict.get("height", 0) session_id = image_dict.get("session_id", None) diff --git a/invokeai/app/services/processor.py b/invokeai/app/services/processor.py index 5995e4ffc3..50fe217e05 100644 --- a/invokeai/app/services/processor.py +++ b/invokeai/app/services/processor.py @@ -8,6 +8,8 @@ from .invoker import InvocationProcessorABC, Invoker from ..models.exceptions import CanceledException import invokeai.backend.util.logging as logger + + class DefaultInvocationProcessor(InvocationProcessorABC): __invoker_thread: Thread __stop_event: Event @@ -24,9 +26,7 @@ class DefaultInvocationProcessor(InvocationProcessorABC): target=self.__process, kwargs=dict(stop_event=self.__stop_event), ) - self.__invoker_thread.daemon = ( - True # TODO: make async and do not use threads - ) + self.__invoker_thread.daemon = True # TODO: make async and do not use threads self.__invoker_thread.start() def stop(self, *args, **kwargs) -> None: @@ -47,10 +47,8 @@ class DefaultInvocationProcessor(InvocationProcessorABC): continue try: - graph_execution_state = ( - self.__invoker.services.graph_execution_manager.get( - queue_item.graph_execution_state_id - ) + graph_execution_state = self.__invoker.services.graph_execution_manager.get( + queue_item.graph_execution_state_id ) except Exception as e: self.__invoker.services.logger.error("Exception while retrieving session:\n%s" % e) @@ -60,11 +58,9 @@ class DefaultInvocationProcessor(InvocationProcessorABC): error=traceback.format_exc(), ) continue - + try: - invocation = graph_execution_state.execution_graph.get_node( - queue_item.invocation_id - ) + invocation = graph_execution_state.execution_graph.get_node(queue_item.invocation_id) except Exception as e: self.__invoker.services.logger.error("Exception while retrieving invocation:\n%s" % e) self.__invoker.services.events.emit_invocation_retrieval_error( @@ -82,7 +78,7 @@ class DefaultInvocationProcessor(InvocationProcessorABC): self.__invoker.services.events.emit_invocation_started( graph_execution_state_id=graph_execution_state.id, node=invocation.dict(), - source_node_id=source_node_id + source_node_id=source_node_id, ) # Invoke @@ -95,18 +91,14 @@ class DefaultInvocationProcessor(InvocationProcessorABC): ) # Check queue to see if this is canceled, and skip if so - if self.__invoker.services.queue.is_canceled( - graph_execution_state.id - ): + if self.__invoker.services.queue.is_canceled(graph_execution_state.id): continue # Save outputs and history graph_execution_state.complete(invocation.id, outputs) # Save the state changes - self.__invoker.services.graph_execution_manager.set( - graph_execution_state - ) + self.__invoker.services.graph_execution_manager.set(graph_execution_state) # Send complete event self.__invoker.services.events.emit_invocation_complete( @@ -130,9 +122,7 @@ class DefaultInvocationProcessor(InvocationProcessorABC): graph_execution_state.set_node_error(invocation.id, error) # Save the state changes - self.__invoker.services.graph_execution_manager.set( - graph_execution_state - ) + self.__invoker.services.graph_execution_manager.set(graph_execution_state) self.__invoker.services.logger.error("Error while invoking:\n%s" % e) # Send error event @@ -147,9 +137,7 @@ class DefaultInvocationProcessor(InvocationProcessorABC): pass # Check queue to see if this is canceled, and skip if so - if self.__invoker.services.queue.is_canceled( - graph_execution_state.id - ): + if self.__invoker.services.queue.is_canceled(graph_execution_state.id): continue # Queue any further commands if invoking all @@ -164,12 +152,10 @@ class DefaultInvocationProcessor(InvocationProcessorABC): node=invocation.dict(), source_node_id=source_node_id, error_type=e.__class__.__name__, - error=traceback.format_exc() + error=traceback.format_exc(), ) elif is_complete: - self.__invoker.services.events.emit_graph_execution_complete( - graph_execution_state.id - ) + self.__invoker.services.events.emit_graph_execution_complete(graph_execution_state.id) except KeyboardInterrupt: pass # Log something? KeyboardInterrupt is probably not going to be seen by the processor diff --git a/invokeai/app/services/sqlite.py b/invokeai/app/services/sqlite.py index 8902415096..855f3f1939 100644 --- a/invokeai/app/services/sqlite.py +++ b/invokeai/app/services/sqlite.py @@ -66,9 +66,7 @@ class SqliteItemStorage(ItemStorageABC, Generic[T]): def get(self, id: str) -> Optional[T]: try: self._lock.acquire() - self._cursor.execute( - f"""SELECT item FROM {self._table_name} WHERE id = ?;""", (str(id),) - ) + self._cursor.execute(f"""SELECT item FROM {self._table_name} WHERE id = ?;""", (str(id),)) result = self._cursor.fetchone() finally: self._lock.release() @@ -81,9 +79,7 @@ class SqliteItemStorage(ItemStorageABC, Generic[T]): def get_raw(self, id: str) -> Optional[str]: try: self._lock.acquire() - self._cursor.execute( - f"""SELECT item FROM {self._table_name} WHERE id = ?;""", (str(id),) - ) + self._cursor.execute(f"""SELECT item FROM {self._table_name} WHERE id = ?;""", (str(id),)) result = self._cursor.fetchone() finally: self._lock.release() @@ -96,9 +92,7 @@ class SqliteItemStorage(ItemStorageABC, Generic[T]): def delete(self, id: str): try: self._lock.acquire() - self._cursor.execute( - f"""DELETE FROM {self._table_name} WHERE id = ?;""", (str(id),) - ) + self._cursor.execute(f"""DELETE FROM {self._table_name} WHERE id = ?;""", (str(id),)) self._conn.commit() finally: self._lock.release() @@ -122,13 +116,9 @@ class SqliteItemStorage(ItemStorageABC, Generic[T]): pageCount = int(count / per_page) + 1 - return PaginatedResults[T]( - items=items, page=page, pages=pageCount, per_page=per_page, total=count - ) + return PaginatedResults[T](items=items, page=page, pages=pageCount, per_page=per_page, total=count) - def search( - self, query: str, page: int = 0, per_page: int = 10 - ) -> PaginatedResults[T]: + def search(self, query: str, page: int = 0, per_page: int = 10) -> PaginatedResults[T]: try: self._lock.acquire() self._cursor.execute( @@ -149,6 +139,4 @@ class SqliteItemStorage(ItemStorageABC, Generic[T]): pageCount = int(count / per_page) + 1 - return PaginatedResults[T]( - items=items, page=page, pages=pageCount, per_page=per_page, total=count - ) + return PaginatedResults[T](items=items, page=page, pages=pageCount, per_page=per_page, total=count) diff --git a/invokeai/app/util/controlnet_utils.py b/invokeai/app/util/controlnet_utils.py index 342fa147c5..6f2c49fec2 100644 --- a/invokeai/app/util/controlnet_utils.py +++ b/invokeai/app/util/controlnet_utils.py @@ -17,16 +17,8 @@ from controlnet_aux.util import HWC3, resize_image # If you use this, please Cite "High Quality Edge Thinning using Pure Python", Lvmin Zhang, In Mikubill/sd-webui-controlnet. lvmin_kernels_raw = [ - np.array([ - [-1, -1, -1], - [0, 1, 0], - [1, 1, 1] - ], dtype=np.int32), - np.array([ - [0, -1, -1], - [1, 1, -1], - [0, 1, 0] - ], dtype=np.int32) + np.array([[-1, -1, -1], [0, 1, 0], [1, 1, 1]], dtype=np.int32), + np.array([[0, -1, -1], [1, 1, -1], [0, 1, 0]], dtype=np.int32), ] lvmin_kernels = [] @@ -36,16 +28,8 @@ lvmin_kernels += [np.rot90(x, k=2, axes=(0, 1)) for x in lvmin_kernels_raw] lvmin_kernels += [np.rot90(x, k=3, axes=(0, 1)) for x in lvmin_kernels_raw] lvmin_prunings_raw = [ - np.array([ - [-1, -1, -1], - [-1, 1, -1], - [0, 0, -1] - ], dtype=np.int32), - np.array([ - [-1, -1, -1], - [-1, 1, -1], - [-1, 0, 0] - ], dtype=np.int32) + np.array([[-1, -1, -1], [-1, 1, -1], [0, 0, -1]], dtype=np.int32), + np.array([[-1, -1, -1], [-1, 1, -1], [-1, 0, 0]], dtype=np.int32), ] lvmin_prunings = [] @@ -99,10 +83,10 @@ def nake_nms(x): ################################################################################ # FIXME: not using yet, if used in the future will most likely require modification of preprocessors def pixel_perfect_resolution( - image: np.ndarray, - target_H: int, - target_W: int, - resize_mode: str, + image: np.ndarray, + target_H: int, + target_W: int, + resize_mode: str, ) -> int: """ Calculate the estimated resolution for resizing an image while preserving aspect ratio. @@ -135,7 +119,7 @@ def pixel_perfect_resolution( if resize_mode == "fill_resize": estimation = min(k0, k1) * float(min(raw_H, raw_W)) - else: # "crop_resize" or "just_resize" (or possibly "just_resize_simple"?) + else: # "crop_resize" or "just_resize" (or possibly "just_resize_simple"?) estimation = max(k0, k1) * float(min(raw_H, raw_W)) # print(f"Pixel Perfect Computation:") @@ -154,13 +138,7 @@ def pixel_perfect_resolution( # modified for InvokeAI ########################################################################### # def detectmap_proc(detected_map, module, resize_mode, h, w): -def np_img_resize( - np_img: np.ndarray, - resize_mode: str, - h: int, - w: int, - device: torch.device = torch.device('cpu') -): +def np_img_resize(np_img: np.ndarray, resize_mode: str, h: int, w: int, device: torch.device = torch.device("cpu")): # if 'inpaint' in module: # np_img = np_img.astype(np.float32) # else: @@ -184,15 +162,14 @@ def np_img_resize( # below is very boring but do not change these. If you change these Apple or Mac may fail. y = torch.from_numpy(y) y = y.float() / 255.0 - y = rearrange(y, 'h w c -> 1 c h w') + y = rearrange(y, "h w c -> 1 c h w") y = y.clone() # y = y.to(devices.get_device_for("controlnet")) y = y.to(device) y = y.clone() return y - def high_quality_resize(x: np.ndarray, - size): + def high_quality_resize(x: np.ndarray, size): # Written by lvmin # Super high-quality control map up-scaling, considering binary, seg, and one-pixel edges inpaint_mask = None @@ -244,7 +221,7 @@ def np_img_resize( return y # if resize_mode == external_code.ResizeMode.RESIZE: - if resize_mode == "just_resize": # RESIZE + if resize_mode == "just_resize": # RESIZE np_img = high_quality_resize(np_img, (w, h)) np_img = safe_numpy(np_img) return get_pytorch_control(np_img), np_img @@ -270,20 +247,21 @@ def np_img_resize( new_h, new_w, _ = np_img.shape pad_h = max(0, (h - new_h) // 2) pad_w = max(0, (w - new_w) // 2) - high_quality_background[pad_h:pad_h + new_h, pad_w:pad_w + new_w] = np_img + high_quality_background[pad_h : pad_h + new_h, pad_w : pad_w + new_w] = np_img np_img = high_quality_background np_img = safe_numpy(np_img) return get_pytorch_control(np_img), np_img - else: # resize_mode == "crop_resize" (INNER_FIT) + else: # resize_mode == "crop_resize" (INNER_FIT) k = max(k0, k1) np_img = high_quality_resize(np_img, (safeint(old_w * k), safeint(old_h * k))) new_h, new_w, _ = np_img.shape pad_h = max(0, (new_h - h) // 2) pad_w = max(0, (new_w - w) // 2) - np_img = np_img[pad_h:pad_h + h, pad_w:pad_w + w] + np_img = np_img[pad_h : pad_h + h, pad_w : pad_w + w] np_img = safe_numpy(np_img) return get_pytorch_control(np_img), np_img + def prepare_control_image( # image used to be Union[PIL.Image.Image, List[PIL.Image.Image], torch.Tensor, List[torch.Tensor]] # but now should be able to assume that image is a single PIL.Image, which simplifies things @@ -301,15 +279,17 @@ def prepare_control_image( resize_mode="just_resize_simple", ): # FIXME: implement "crop_resize_simple" and "fill_resize_simple", or pull them out - if (resize_mode == "just_resize_simple" or - resize_mode == "crop_resize_simple" or - resize_mode == "fill_resize_simple"): + if ( + resize_mode == "just_resize_simple" + or resize_mode == "crop_resize_simple" + or resize_mode == "fill_resize_simple" + ): image = image.convert("RGB") - if (resize_mode == "just_resize_simple"): + if resize_mode == "just_resize_simple": image = image.resize((width, height), resample=PIL_INTERPOLATION["lanczos"]) - elif (resize_mode == "crop_resize_simple"): # not yet implemented + elif resize_mode == "crop_resize_simple": # not yet implemented pass - elif (resize_mode == "fill_resize_simple"): # not yet implemented + elif resize_mode == "fill_resize_simple": # not yet implemented pass nimage = np.array(image) nimage = nimage[None, :] @@ -320,7 +300,7 @@ def prepare_control_image( timage = torch.from_numpy(nimage) # use fancy lvmin controlnet resizing - elif (resize_mode == "just_resize" or resize_mode == "crop_resize" or resize_mode == "fill_resize"): + elif resize_mode == "just_resize" or resize_mode == "crop_resize" or resize_mode == "fill_resize": nimage = np.array(image) timage, nimage = np_img_resize( np_img=nimage, @@ -336,7 +316,7 @@ def prepare_control_image( exit(1) timage = timage.to(device=device, dtype=dtype) - cfg_injection = (control_mode == "more_control" or control_mode == "unbalanced") + cfg_injection = control_mode == "more_control" or control_mode == "unbalanced" if do_classifier_free_guidance and not cfg_injection: timage = torch.cat([timage] * 2) return timage diff --git a/invokeai/app/util/step_callback.py b/invokeai/app/util/step_callback.py index 1e8939b0bf..994d83e705 100644 --- a/invokeai/app/util/step_callback.py +++ b/invokeai/app/util/step_callback.py @@ -9,19 +9,16 @@ from ...backend.stable_diffusion import PipelineIntermediateState from invokeai.app.services.config import InvokeAIAppConfig -def sample_to_lowres_estimated_image(samples, latent_rgb_factors, smooth_matrix = None): +def sample_to_lowres_estimated_image(samples, latent_rgb_factors, smooth_matrix=None): latent_image = samples[0].permute(1, 2, 0) @ latent_rgb_factors if smooth_matrix is not None: latent_image = latent_image.unsqueeze(0).permute(3, 0, 1, 2) - latent_image = torch.nn.functional.conv2d(latent_image, smooth_matrix.reshape((1,1,3,3)), padding=1) + latent_image = torch.nn.functional.conv2d(latent_image, smooth_matrix.reshape((1, 1, 3, 3)), padding=1) latent_image = latent_image.permute(1, 2, 3, 0).squeeze(0) latents_ubyte = ( - ((latent_image + 1) / 2) - .clamp(0, 1) # change scale from -1..1 to 0..1 - .mul(0xFF) # to 0..255 - .byte() + ((latent_image + 1) / 2).clamp(0, 1).mul(0xFF).byte() # change scale from -1..1 to 0..1 # to 0..255 ).cpu() return Image.fromarray(latents_ubyte.numpy()) @@ -92,6 +89,7 @@ def stable_diffusion_step_callback( total_steps=node["steps"], ) + def stable_diffusion_xl_step_callback( context: InvocationContext, node: dict, @@ -106,9 +104,9 @@ def stable_diffusion_xl_step_callback( sdxl_latent_rgb_factors = torch.tensor( [ # R G B - [ 0.3816, 0.4930, 0.5320], - [-0.3753, 0.1631, 0.1739], - [ 0.1770, 0.3588, -0.2048], + [0.3816, 0.4930, 0.5320], + [-0.3753, 0.1631, 0.1739], + [0.1770, 0.3588, -0.2048], [-0.4350, -0.2644, -0.4289], ], dtype=sample.dtype, @@ -117,9 +115,9 @@ def stable_diffusion_xl_step_callback( sdxl_smooth_matrix = torch.tensor( [ - #[ 0.0478, 0.1285, 0.0478], - #[ 0.1285, 0.2948, 0.1285], - #[ 0.0478, 0.1285, 0.0478], + # [ 0.0478, 0.1285, 0.0478], + # [ 0.1285, 0.2948, 0.1285], + # [ 0.0478, 0.1285, 0.0478], [0.0358, 0.0964, 0.0358], [0.0964, 0.4711, 0.0964], [0.0358, 0.0964, 0.0358], @@ -143,4 +141,4 @@ def stable_diffusion_xl_step_callback( progress_image=ProgressImage(width=width, height=height, dataURL=dataURL), step=step, total_steps=total_steps, - ) \ No newline at end of file + ) diff --git a/invokeai/backend/__init__.py b/invokeai/backend/__init__.py index ff8b4bc8c5..aa2a1f1ca6 100644 --- a/invokeai/backend/__init__.py +++ b/invokeai/backend/__init__.py @@ -1,15 +1,6 @@ """ Initialization file for invokeai.backend """ -from .generator import ( - InvokeAIGeneratorBasicParams, - InvokeAIGenerator, - InvokeAIGeneratorOutput, - Img2Img, - Inpaint -) -from .model_management import ( - ModelManager, ModelCache, BaseModelType, - ModelType, SubModelType, ModelInfo - ) -from .safety_checker import SafetyChecker +from .generator import InvokeAIGeneratorBasicParams, InvokeAIGenerator, InvokeAIGeneratorOutput, Img2Img, Inpaint +from .model_management import ModelManager, ModelCache, BaseModelType, ModelType, SubModelType, ModelInfo +from .model_management.models import SilenceWarnings diff --git a/invokeai/backend/generator/base.py b/invokeai/backend/generator/base.py index 99a63d56a3..af3231a7d1 100644 --- a/invokeai/backend/generator/base.py +++ b/invokeai/backend/generator/base.py @@ -28,68 +28,71 @@ from diffusers.schedulers import SchedulerMixin as Scheduler import invokeai.backend.util.logging as logger from ..image_util import configure_model_padding from ..util.util import rand_perlin_2d -from ..safety_checker import SafetyChecker from ..stable_diffusion.diffusers_pipeline import StableDiffusionGeneratorPipeline from ..stable_diffusion.schedulers import SCHEDULER_MAP downsampling = 8 + @dataclass class InvokeAIGeneratorBasicParams: - seed: Optional[int]=None - width: int=512 - height: int=512 - cfg_scale: float=7.5 - steps: int=20 - ddim_eta: float=0.0 - scheduler: str='ddim' - precision: str='float16' - perlin: float=0.0 - threshold: float=0.0 - seamless: bool=False - seamless_axes: List[str]=field(default_factory=lambda: ['x', 'y']) - h_symmetry_time_pct: Optional[float]=None - v_symmetry_time_pct: Optional[float]=None + seed: Optional[int] = None + width: int = 512 + height: int = 512 + cfg_scale: float = 7.5 + steps: int = 20 + ddim_eta: float = 0.0 + scheduler: str = "ddim" + precision: str = "float16" + perlin: float = 0.0 + threshold: float = 0.0 + seamless: bool = False + seamless_axes: List[str] = field(default_factory=lambda: ["x", "y"]) + h_symmetry_time_pct: Optional[float] = None + v_symmetry_time_pct: Optional[float] = None variation_amount: float = 0.0 - with_variations: list=field(default_factory=list) - safety_checker: Optional[SafetyChecker]=None + with_variations: list = field(default_factory=list) + @dataclass class InvokeAIGeneratorOutput: - ''' + """ InvokeAIGeneratorOutput is a dataclass that contains the outputs of a generation operation, including the image, its seed, the model name used to generate the image and the model hash, as well as all the generate() parameters that went into generating the image (in .params, also available as attributes) - ''' + """ + image: Image.Image seed: int model_hash: str attention_maps_images: List[Image.Image] params: Namespace + # we are interposing a wrapper around the original Generator classes so that # old code that calls Generate will continue to work. class InvokeAIGenerator(metaclass=ABCMeta): - def __init__(self, - model_info: dict, - params: InvokeAIGeneratorBasicParams=InvokeAIGeneratorBasicParams(), - **kwargs, - ): - self.model_info=model_info - self.params=params + def __init__( + self, + model_info: dict, + params: InvokeAIGeneratorBasicParams = InvokeAIGeneratorBasicParams(), + **kwargs, + ): + self.model_info = model_info + self.params = params self.kwargs = kwargs def generate( self, conditioning: tuple, scheduler, - callback: Optional[Callable]=None, - step_callback: Optional[Callable]=None, - iterations: int=1, + callback: Optional[Callable] = None, + step_callback: Optional[Callable] = None, + iterations: int = 1, **keyword_args, - )->Iterator[InvokeAIGeneratorOutput]: - ''' + ) -> Iterator[InvokeAIGeneratorOutput]: + """ Return an iterator across the indicated number of generations. Each time the iterator is called it will return an InvokeAIGeneratorOutput object. Use like this: @@ -109,7 +112,7 @@ class InvokeAIGenerator(metaclass=ABCMeta): for o in outputs: print(o.image, o.seed) - ''' + """ generator_args = dataclasses.asdict(self.params) generator_args.update(keyword_args) @@ -120,22 +123,21 @@ class InvokeAIGenerator(metaclass=ABCMeta): gen_class = self._generator_class() generator = gen_class(model, self.params.precision, **self.kwargs) if self.params.variation_amount > 0: - generator.set_variation(generator_args.get('seed'), - generator_args.get('variation_amount'), - generator_args.get('with_variations') - ) + generator.set_variation( + generator_args.get("seed"), + generator_args.get("variation_amount"), + generator_args.get("with_variations"), + ) if isinstance(model, DiffusionPipeline): for component in [model.unet, model.vae]: - configure_model_padding(component, - generator_args.get('seamless',False), - generator_args.get('seamless_axes') - ) + configure_model_padding( + component, generator_args.get("seamless", False), generator_args.get("seamless_axes") + ) else: - configure_model_padding(model, - generator_args.get('seamless',False), - generator_args.get('seamless_axes') - ) + configure_model_padding( + model, generator_args.get("seamless", False), generator_args.get("seamless_axes") + ) iteration_count = range(iterations) if iterations else itertools.count(start=0, step=1) for i in iteration_count: @@ -149,66 +151,66 @@ class InvokeAIGenerator(metaclass=ABCMeta): image=results[0][0], seed=results[0][1], attention_maps_images=results[0][2], - model_hash = model_hash, - params=Namespace(model_name=model_name,**generator_args), + model_hash=model_hash, + params=Namespace(model_name=model_name, **generator_args), ) if callback: callback(output) yield output @classmethod - def schedulers(self)->List[str]: - ''' + def schedulers(self) -> List[str]: + """ Return list of all the schedulers that we currently handle. - ''' + """ return list(SCHEDULER_MAP.keys()) def load_generator(self, model: StableDiffusionGeneratorPipeline, generator_class: Type[Generator]): return generator_class(model, self.params.precision) @classmethod - def _generator_class(cls)->Type[Generator]: - ''' + def _generator_class(cls) -> Type[Generator]: + """ In derived classes return the name of the generator to apply. If you don't override will return the name of the derived class, which nicely parallels the generator class names. - ''' + """ return Generator + # ------------------------------------ class Img2Img(InvokeAIGenerator): - def generate(self, - init_image: Union[Image.Image, torch.FloatTensor], - strength: float=0.75, - **keyword_args - )->Iterator[InvokeAIGeneratorOutput]: - return super().generate(init_image=init_image, - strength=strength, - **keyword_args - ) + def generate( + self, init_image: Union[Image.Image, torch.FloatTensor], strength: float = 0.75, **keyword_args + ) -> Iterator[InvokeAIGeneratorOutput]: + return super().generate(init_image=init_image, strength=strength, **keyword_args) + @classmethod def _generator_class(cls): from .img2img import Img2Img + return Img2Img + # ------------------------------------ # Takes all the arguments of Img2Img and adds the mask image and the seam/infill stuff class Inpaint(Img2Img): - def generate(self, - mask_image: Union[Image.Image, torch.FloatTensor], - # Seam settings - when 0, doesn't fill seam - seam_size: int = 96, - seam_blur: int = 16, - seam_strength: float = 0.7, - seam_steps: int = 30, - tile_size: int = 32, - inpaint_replace=False, - infill_method=None, - inpaint_width=None, - inpaint_height=None, - inpaint_fill: tuple(int) = (0x7F, 0x7F, 0x7F, 0xFF), - **keyword_args - )->Iterator[InvokeAIGeneratorOutput]: + def generate( + self, + mask_image: Union[Image.Image, torch.FloatTensor], + # Seam settings - when 0, doesn't fill seam + seam_size: int = 96, + seam_blur: int = 16, + seam_strength: float = 0.7, + seam_steps: int = 30, + tile_size: int = 32, + inpaint_replace=False, + infill_method=None, + inpaint_width=None, + inpaint_height=None, + inpaint_fill: tuple(int) = (0x7F, 0x7F, 0x7F, 0xFF), + **keyword_args, + ) -> Iterator[InvokeAIGeneratorOutput]: return super().generate( mask_image=mask_image, seam_size=seam_size, @@ -221,13 +223,16 @@ class Inpaint(Img2Img): inpaint_width=inpaint_width, inpaint_height=inpaint_height, inpaint_fill=inpaint_fill, - **keyword_args + **keyword_args, ) + @classmethod def _generator_class(cls): from .inpaint import Inpaint + return Inpaint + class Generator: downsampling_factor: int latent_channels: int @@ -240,7 +245,6 @@ class Generator: self.seed = None self.latent_channels = model.unet.config.in_channels self.downsampling_factor = downsampling # BUG: should come from model or config - self.safety_checker = None self.perlin = 0.0 self.threshold = 0 self.variation_amount = 0 @@ -254,9 +258,7 @@ class Generator: Returns a function returning an image derived from the prompt and the initial image Return value depends on the seed at the time you call it """ - raise NotImplementedError( - "image_iterator() must be implemented in a descendent class" - ) + raise NotImplementedError("image_iterator() must be implemented in a descendent class") def set_variation(self, seed, variation_amount, with_variations): self.seed = seed @@ -277,17 +279,13 @@ class Generator: perlin=0.0, h_symmetry_time_pct=None, v_symmetry_time_pct=None, - safety_checker: SafetyChecker=None, free_gpu_mem: bool = False, **kwargs, ): scope = nullcontext - self.safety_checker = safety_checker self.free_gpu_mem = free_gpu_mem attention_maps_images = [] - attention_maps_callback = lambda saver: attention_maps_images.append( - saver.get_stacked_maps_image() - ) + attention_maps_callback = lambda saver: attention_maps_images.append(saver.get_stacked_maps_image()) make_image = self.get_make_image( sampler=sampler, init_image=init_image, @@ -329,17 +327,10 @@ class Generator: # Pass on the seed in case a layer beneath us needs to generate noise on its own. image = make_image(x_T, seed) - if self.safety_checker is not None: - image = self.safety_checker.check(image) - results.append([image, seed, attention_maps_images]) if image_callback is not None: - attention_maps_image = ( - None - if len(attention_maps_images) == 0 - else attention_maps_images[-1] - ) + attention_maps_image = None if len(attention_maps_images) == 0 else attention_maps_images[-1] image_callback( image, seed, @@ -350,9 +341,7 @@ class Generator: seed = self.new_seed() # Free up memory from the last generation. - clear_cuda_cache = ( - kwargs["clear_cuda_cache"] if "clear_cuda_cache" in kwargs else None - ) + clear_cuda_cache = kwargs["clear_cuda_cache"] if "clear_cuda_cache" in kwargs else None if clear_cuda_cache is not None: clear_cuda_cache() @@ -379,14 +368,8 @@ class Generator: # Get the original alpha channel of the mask if there is one. # Otherwise it is some other black/white image format ('1', 'L' or 'RGB') - pil_init_mask = ( - init_mask.getchannel("A") - if init_mask.mode == "RGBA" - else init_mask.convert("L") - ) - pil_init_image = init_image.convert( - "RGBA" - ) # Add an alpha channel if one doesn't exist + pil_init_mask = init_mask.getchannel("A") if init_mask.mode == "RGBA" else init_mask.convert("L") + pil_init_image = init_image.convert("RGBA") # Add an alpha channel if one doesn't exist # Build an image with only visible pixels from source to use as reference for color-matching. init_rgb_pixels = np.asarray(init_image.convert("RGB"), dtype=np.uint8) @@ -412,10 +395,7 @@ class Generator: np_matched_result[:, :, :] = ( ( ( - ( - np_matched_result[:, :, :].astype(np.float32) - - gen_means[None, None, :] - ) + (np_matched_result[:, :, :].astype(np.float32) - gen_means[None, None, :]) / gen_std[None, None, :] ) * init_std[None, None, :] @@ -441,9 +421,7 @@ class Generator: else: blurred_init_mask = pil_init_mask - multiplied_blurred_init_mask = ImageChops.multiply( - blurred_init_mask, self.pil_image.split()[-1] - ) + multiplied_blurred_init_mask = ImageChops.multiply(blurred_init_mask, self.pil_image.split()[-1]) # Paste original on color-corrected generation (using blurred mask) matched_result.paste(init_image, (0, 0), mask=multiplied_blurred_init_mask) @@ -469,10 +447,7 @@ class Generator: latent_image = samples[0].permute(1, 2, 0) @ v1_5_latent_rgb_factors latents_ubyte = ( - ((latent_image + 1) / 2) - .clamp(0, 1) # change scale from -1..1 to 0..1 - .mul(0xFF) # to 0..255 - .byte() + ((latent_image + 1) / 2).clamp(0, 1).mul(0xFF).byte() # change scale from -1..1 to 0..1 # to 0..255 ).cpu() return Image.fromarray(latents_ubyte.numpy()) @@ -502,9 +477,7 @@ class Generator: temp_height = int((height + 7) / 8) * 8 noise = torch.stack( [ - rand_perlin_2d( - (temp_height, temp_width), (8, 8), device=self.model.device - ).to(fixdevice) + rand_perlin_2d((temp_height, temp_width), (8, 8), device=self.model.device).to(fixdevice) for _ in range(input_channels) ], dim=0, @@ -581,8 +554,6 @@ class Generator: device=device, ) if self.perlin > 0.0: - perlin_noise = self.get_perlin_noise( - width // self.downsampling_factor, height // self.downsampling_factor - ) + perlin_noise = self.get_perlin_noise(width // self.downsampling_factor, height // self.downsampling_factor) x = (1 - self.perlin) * x + self.perlin * perlin_noise return x diff --git a/invokeai/backend/generator/img2img.py b/invokeai/backend/generator/img2img.py index b3b0e8f510..5490b2325c 100644 --- a/invokeai/backend/generator/img2img.py +++ b/invokeai/backend/generator/img2img.py @@ -77,10 +77,7 @@ class Img2Img(Generator): callback=step_callback, seed=seed, ) - if ( - pipeline_output.attention_map_saver is not None - and attention_maps_callback is not None - ): + if pipeline_output.attention_map_saver is not None and attention_maps_callback is not None: attention_maps_callback(pipeline_output.attention_map_saver) return pipeline.numpy_to_pil(pipeline_output.images)[0] @@ -91,7 +88,5 @@ class Img2Img(Generator): x = torch.randn_like(like, device=device) if self.perlin > 0.0: shape = like.shape - x = (1 - self.perlin) * x + self.perlin * self.get_perlin_noise( - shape[3], shape[2] - ) + x = (1 - self.perlin) * x + self.perlin * self.get_perlin_noise(shape[3], shape[2]) return x diff --git a/invokeai/backend/generator/inpaint.py b/invokeai/backend/generator/inpaint.py index c91fe0c6a7..7aeb3d4809 100644 --- a/invokeai/backend/generator/inpaint.py +++ b/invokeai/backend/generator/inpaint.py @@ -68,15 +68,11 @@ class Inpaint(Img2Img): return im # Patchmatch (note, we may want to expose patch_size? Increasing it significantly impacts performance though) - im_patched_np = PatchMatch.inpaint( - im.convert("RGB"), ImageOps.invert(im.split()[-1]), patch_size=3 - ) + im_patched_np = PatchMatch.inpaint(im.convert("RGB"), ImageOps.invert(im.split()[-1]), patch_size=3) im_patched = Image.fromarray(im_patched_np, mode="RGB") return im_patched - def tile_fill_missing( - self, im: Image.Image, tile_size: int = 16, seed: Optional[int] = None - ) -> Image.Image: + def tile_fill_missing(self, im: Image.Image, tile_size: int = 16, seed: Optional[int] = None) -> Image.Image: # Only fill if there's an alpha layer if im.mode != "RGBA": return im @@ -127,15 +123,11 @@ class Inpaint(Img2Img): return si - def mask_edge( - self, mask: Image.Image, edge_size: int, edge_blur: int - ) -> Image.Image: + def mask_edge(self, mask: Image.Image, edge_size: int, edge_blur: int) -> Image.Image: npimg = np.asarray(mask, dtype=np.uint8) # Detect any partially transparent regions - npgradient = np.uint8( - 255 * (1.0 - np.floor(np.abs(0.5 - np.float32(npimg) / 255.0) * 2.0)) - ) + npgradient = np.uint8(255 * (1.0 - np.floor(np.abs(0.5 - np.float32(npimg) / 255.0) * 2.0))) # Detect hard edges npedge = cv2.Canny(npimg, threshold1=100, threshold2=200) @@ -144,9 +136,7 @@ class Inpaint(Img2Img): npmask = npgradient + npedge # Expand - npmask = cv2.dilate( - npmask, np.ones((3, 3), np.uint8), iterations=int(edge_size / 2) - ) + npmask = cv2.dilate(npmask, np.ones((3, 3), np.uint8), iterations=int(edge_size / 2)) new_mask = Image.fromarray(npmask) @@ -242,25 +232,19 @@ class Inpaint(Img2Img): if infill_method == "patchmatch" and PatchMatch.patchmatch_available(): init_filled = self.infill_patchmatch(self.pil_image.copy()) elif infill_method == "tile": - init_filled = self.tile_fill_missing( - self.pil_image.copy(), seed=self.seed, tile_size=tile_size - ) + init_filled = self.tile_fill_missing(self.pil_image.copy(), seed=self.seed, tile_size=tile_size) elif infill_method == "solid": solid_bg = Image.new("RGBA", init_image.size, inpaint_fill) init_filled = Image.alpha_composite(solid_bg, init_image) else: - raise ValueError( - f"Non-supported infill type {infill_method}", infill_method - ) + raise ValueError(f"Non-supported infill type {infill_method}", infill_method) init_filled.paste(init_image, (0, 0), init_image.split()[-1]) # Resize if requested for inpainting if inpaint_width and inpaint_height: init_filled = init_filled.resize((inpaint_width, inpaint_height)) - debug_image( - init_filled, "init_filled", debug_status=self.enable_image_debugging - ) + debug_image(init_filled, "init_filled", debug_status=self.enable_image_debugging) # Create init tensor init_image = image_resized_to_grid_as_tensor(init_filled.convert("RGB")) @@ -289,9 +273,7 @@ class Inpaint(Img2Img): "mask_image AFTER multiply with pil_image", debug_status=self.enable_image_debugging, ) - mask: torch.FloatTensor = image_resized_to_grid_as_tensor( - mask_image, normalize=False - ) + mask: torch.FloatTensor = image_resized_to_grid_as_tensor(mask_image, normalize=False) else: mask: torch.FloatTensor = mask_image @@ -302,9 +284,9 @@ class Inpaint(Img2Img): # todo: support cross-attention control uc, c, _ = conditioning - conditioning_data = ConditioningData( - uc, c, cfg_scale - ).add_scheduler_args_if_applicable(pipeline.scheduler, eta=ddim_eta) + conditioning_data = ConditioningData(uc, c, cfg_scale).add_scheduler_args_if_applicable( + pipeline.scheduler, eta=ddim_eta + ) def make_image(x_T: torch.Tensor, seed: int): pipeline_output = pipeline.inpaint_from_embeddings( @@ -318,15 +300,10 @@ class Inpaint(Img2Img): seed=seed, ) - if ( - pipeline_output.attention_map_saver is not None - and attention_maps_callback is not None - ): + if pipeline_output.attention_map_saver is not None and attention_maps_callback is not None: attention_maps_callback(pipeline_output.attention_map_saver) - result = self.postprocess_size_and_mask( - pipeline.numpy_to_pil(pipeline_output.images)[0] - ) + result = self.postprocess_size_and_mask(pipeline.numpy_to_pil(pipeline_output.images)[0]) # Seam paint if this is our first pass (seam_size set to 0 during seam painting) if seam_size > 0: diff --git a/invokeai/backend/image_util/__init__.py b/invokeai/backend/image_util/__init__.py index 410f003f6a..9fa635b389 100644 --- a/invokeai/backend/image_util/__init__.py +++ b/invokeai/backend/image_util/__init__.py @@ -8,9 +8,7 @@ from .txt2mask import Txt2Mask from .util import InitImageResizer, make_grid -def debug_image( - debug_image, debug_text, debug_show=True, debug_result=False, debug_status=False -): +def debug_image(debug_image, debug_text, debug_show=True, debug_result=False, debug_status=False): if not debug_status: return diff --git a/invokeai/backend/image_util/invisible_watermark.py b/invokeai/backend/image_util/invisible_watermark.py new file mode 100644 index 0000000000..4605daea43 --- /dev/null +++ b/invokeai/backend/image_util/invisible_watermark.py @@ -0,0 +1,34 @@ +""" +This module defines a singleton object, "invisible_watermark" that +wraps the invisible watermark model. It respects the global "invisible_watermark" +configuration variable, that allows the watermarking to be supressed. +""" +import numpy as np +import cv2 +from PIL import Image +from imwatermark import WatermarkEncoder +from invokeai.app.services.config import InvokeAIAppConfig +import invokeai.backend.util.logging as logger + +config = InvokeAIAppConfig.get_config() + + +class InvisibleWatermark: + """ + Wrapper around InvisibleWatermark module. + """ + + @classmethod + def invisible_watermark_available(self) -> bool: + return config.invisible_watermark + + @classmethod + def add_watermark(self, image: Image, watermark_text: str) -> Image: + if not self.invisible_watermark_available(): + return image + logger.debug(f'Applying invisible watermark "{watermark_text}"') + bgr = cv2.cvtColor(np.array(image.convert("RGB")), cv2.COLOR_RGB2BGR) + encoder = WatermarkEncoder() + encoder.set_watermark("bytes", watermark_text.encode("utf-8")) + bgr_encoded = encoder.encode(bgr, "dwtDct") + return Image.fromarray(cv2.cvtColor(bgr_encoded, cv2.COLOR_BGR2RGB)).convert("RGBA") diff --git a/invokeai/backend/image_util/patchmatch.py b/invokeai/backend/image_util/patchmatch.py index 2e65f08d9f..98055f60c8 100644 --- a/invokeai/backend/image_util/patchmatch.py +++ b/invokeai/backend/image_util/patchmatch.py @@ -7,8 +7,10 @@ be suppressed or deferred import numpy as np import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig + config = InvokeAIAppConfig.get_config() + class PatchMatch: """ Thin class wrapper around the patchmatch function. diff --git a/invokeai/backend/image_util/pngwriter.py b/invokeai/backend/image_util/pngwriter.py index 452bbfc783..d3f53d7e72 100644 --- a/invokeai/backend/image_util/pngwriter.py +++ b/invokeai/backend/image_util/pngwriter.py @@ -34,9 +34,7 @@ class PngWriter: # saves image named _image_ to outdir/name, writing metadata from prompt # returns full path of output - def save_image_and_prompt_to_png( - self, image, dream_prompt, name, metadata=None, compress_level=6 - ): + def save_image_and_prompt_to_png(self, image, dream_prompt, name, metadata=None, compress_level=6): path = os.path.join(self.outdir, name) info = PngImagePlugin.PngInfo() info.add_text("Dream", dream_prompt) @@ -114,8 +112,6 @@ class PromptFormatter: if opt.variation_amount > 0: switches.append(f"-v{opt.variation_amount}") if opt.with_variations: - formatted_variations = ",".join( - f"{seed}:{weight}" for seed, weight in opt.with_variations - ) + formatted_variations = ",".join(f"{seed}:{weight}" for seed, weight in opt.with_variations) switches.append(f"-V{formatted_variations}") return " ".join(switches) diff --git a/invokeai/backend/image_util/safety_checker.py b/invokeai/backend/image_util/safety_checker.py new file mode 100644 index 0000000000..483e563b82 --- /dev/null +++ b/invokeai/backend/image_util/safety_checker.py @@ -0,0 +1,64 @@ +""" +This module defines a singleton object, "safety_checker" that +wraps the safety_checker model. It respects the global "nsfw_checker" +configuration variable, that allows the checker to be supressed. +""" +import numpy as np +from PIL import Image +from invokeai.backend import SilenceWarnings +from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.backend.util.devices import choose_torch_device +import invokeai.backend.util.logging as logger + +config = InvokeAIAppConfig.get_config() + +CHECKER_PATH = "core/convert/stable-diffusion-safety-checker" + + +class SafetyChecker: + """ + Wrapper around SafetyChecker model. + """ + + safety_checker = None + feature_extractor = None + tried_load: bool = False + + @classmethod + def _load_safety_checker(self): + if self.tried_load: + return + + if config.nsfw_checker: + try: + from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker + from transformers import AutoFeatureExtractor + + self.safety_checker = StableDiffusionSafetyChecker.from_pretrained(config.models_path / CHECKER_PATH) + self.feature_extractor = AutoFeatureExtractor.from_pretrained(config.models_path / CHECKER_PATH) + logger.info("NSFW checker initialized") + except Exception as e: + logger.warning(f"Could not load NSFW checker: {str(e)}") + else: + logger.info("NSFW checker loading disabled") + self.tried_load = True + + @classmethod + def safety_checker_available(self) -> bool: + self._load_safety_checker() + return self.safety_checker is not None + + @classmethod + def has_nsfw_concept(self, image: Image) -> bool: + if not self.safety_checker_available(): + return False + + device = choose_torch_device() + features = self.feature_extractor([image], return_tensors="pt") + features.to(device) + self.safety_checker.to(device) + x_image = np.array(image).astype(np.float32) / 255.0 + x_image = x_image[None].transpose(0, 3, 1, 2) + with SilenceWarnings(): + checked_image, has_nsfw_concept = self.safety_checker(images=x_image, clip_input=features.pixel_values) + return has_nsfw_concept[0] diff --git a/invokeai/backend/image_util/seamless.py b/invokeai/backend/image_util/seamless.py index 4fbc0cd78e..6fb2617901 100644 --- a/invokeai/backend/image_util/seamless.py +++ b/invokeai/backend/image_util/seamless.py @@ -5,12 +5,8 @@ def _conv_forward_asymmetric(self, input, weight, bias): """ Patch for Conv2d._conv_forward that supports asymmetric padding """ - working = nn.functional.pad( - input, self.asymmetric_padding["x"], mode=self.asymmetric_padding_mode["x"] - ) - working = nn.functional.pad( - working, self.asymmetric_padding["y"], mode=self.asymmetric_padding_mode["y"] - ) + working = nn.functional.pad(input, self.asymmetric_padding["x"], mode=self.asymmetric_padding_mode["x"]) + working = nn.functional.pad(working, self.asymmetric_padding["y"], mode=self.asymmetric_padding_mode["y"]) return nn.functional.conv2d( working, weight, @@ -32,18 +28,14 @@ def configure_model_padding(model, seamless, seamless_axes): if seamless: m.asymmetric_padding_mode = {} m.asymmetric_padding = {} - m.asymmetric_padding_mode["x"] = ( - "circular" if ("x" in seamless_axes) else "constant" - ) + m.asymmetric_padding_mode["x"] = "circular" if ("x" in seamless_axes) else "constant" m.asymmetric_padding["x"] = ( m._reversed_padding_repeated_twice[0], m._reversed_padding_repeated_twice[1], 0, 0, ) - m.asymmetric_padding_mode["y"] = ( - "circular" if ("y" in seamless_axes) else "constant" - ) + m.asymmetric_padding_mode["y"] = "circular" if ("y" in seamless_axes) else "constant" m.asymmetric_padding["y"] = ( 0, 0, diff --git a/invokeai/backend/image_util/txt2mask.py b/invokeai/backend/image_util/txt2mask.py index 429c9b63fb..12db54b0db 100644 --- a/invokeai/backend/image_util/txt2mask.py +++ b/invokeai/backend/image_util/txt2mask.py @@ -39,23 +39,18 @@ CLIPSEG_MODEL = "CIDAS/clipseg-rd64-refined" CLIPSEG_SIZE = 352 config = InvokeAIAppConfig.get_config() + class SegmentedGrayscale(object): def __init__(self, image: Image, heatmap: torch.Tensor): self.heatmap = heatmap self.image = image def to_grayscale(self, invert: bool = False) -> Image: - return self._rescale( - Image.fromarray( - np.uint8(255 - self.heatmap * 255 if invert else self.heatmap * 255) - ) - ) + return self._rescale(Image.fromarray(np.uint8(255 - self.heatmap * 255 if invert else self.heatmap * 255))) def to_mask(self, threshold: float = 0.5) -> Image: discrete_heatmap = self.heatmap.lt(threshold).int() - return self._rescale( - Image.fromarray(np.uint8(discrete_heatmap * 255), mode="L") - ) + return self._rescale(Image.fromarray(np.uint8(discrete_heatmap * 255), mode="L")) def to_transparent(self, invert: bool = False) -> Image: transparent_image = self.image.copy() @@ -67,11 +62,7 @@ class SegmentedGrayscale(object): # unscales and uncrops the 352x352 heatmap so that it matches the image again def _rescale(self, heatmap: Image) -> Image: - size = ( - self.image.width - if (self.image.width > self.image.height) - else self.image.height - ) + size = self.image.width if (self.image.width > self.image.height) else self.image.height resized_image = heatmap.resize((size, size), resample=Image.Resampling.LANCZOS) return resized_image.crop((0, 0, self.image.width, self.image.height)) @@ -87,12 +78,8 @@ class Txt2Mask(object): # BUG: we are not doing anything with the device option at this time self.device = device - self.processor = AutoProcessor.from_pretrained( - CLIPSEG_MODEL, cache_dir=config.cache_dir - ) - self.model = CLIPSegForImageSegmentation.from_pretrained( - CLIPSEG_MODEL, cache_dir=config.cache_dir - ) + self.processor = AutoProcessor.from_pretrained(CLIPSEG_MODEL, cache_dir=config.cache_dir) + self.model = CLIPSegForImageSegmentation.from_pretrained(CLIPSEG_MODEL, cache_dir=config.cache_dir) @torch.no_grad() def segment(self, image, prompt: str) -> SegmentedGrayscale: @@ -107,9 +94,7 @@ class Txt2Mask(object): image = ImageOps.exif_transpose(image) img = self._scale_and_crop(image) - inputs = self.processor( - text=[prompt], images=[img], padding=True, return_tensors="pt" - ) + inputs = self.processor(text=[prompt], images=[img], padding=True, return_tensors="pt") outputs = self.model(**inputs) heatmap = torch.sigmoid(outputs.logits) return SegmentedGrayscale(image, heatmap) diff --git a/invokeai/backend/install/check_root.py b/invokeai/backend/install/check_root.py new file mode 100644 index 0000000000..ded9e66635 --- /dev/null +++ b/invokeai/backend/install/check_root.py @@ -0,0 +1,36 @@ +""" +Check that the invokeai_root is correctly configured and exit if not. +""" +import sys +from invokeai.app.services.config import ( + InvokeAIAppConfig, +) + + +def check_invokeai_root(config: InvokeAIAppConfig): + try: + assert config.model_conf_path.exists(), f"{config.model_conf_path} not found" + assert config.db_path.parent.exists(), f"{config.db_path.parent} not found" + assert config.models_path.exists(), f"{config.models_path} not found" + for model in [ + "CLIP-ViT-bigG-14-laion2B-39B-b160k", + "bert-base-uncased", + "clip-vit-large-patch14", + "sd-vae-ft-mse", + "stable-diffusion-2-clip", + "stable-diffusion-safety-checker", + ]: + path = config.models_path / f"core/convert/{model}" + assert path.exists(), f"{path} is missing" + except Exception as e: + print() + print(f"An exception has occurred: {str(e)}") + print("== STARTUP ABORTED ==") + print("** One or more necessary files is missing from your InvokeAI root directory **") + print("** Please rerun the configuration script to fix this problem. **") + print("** From the launcher, selection option [7]. **") + print( + '** From the command line, activate the virtual environment and run "invokeai-configure --yes --skip-sd-weights" **' + ) + input("Press any key to continue...") + sys.exit(0) diff --git a/invokeai/backend/install/invokeai_configure.py b/invokeai/backend/install/invokeai_configure.py index 1f0e39961b..972e6668c4 100755 --- a/invokeai/backend/install/invokeai_configure.py +++ b/invokeai/backend/install/invokeai_configure.py @@ -13,8 +13,8 @@ import os import shutil import textwrap import traceback -import warnings import yaml +import warnings from argparse import Namespace from pathlib import Path from shutil import get_terminal_size @@ -32,6 +32,7 @@ from omegaconf import OmegaConf from tqdm import tqdm from transformers import ( CLIPTextModel, + CLIPTextConfig, CLIPTokenizer, AutoFeatureExtractor, BertTokenizerFast, @@ -44,6 +45,7 @@ from invokeai.app.services.config import ( from invokeai.backend.util.logging import InvokeAILogger from invokeai.frontend.install.model_install import addModelsForm, process_and_execute from invokeai.frontend.install.widgets import ( + SingleSelectColumns, CenteredButtonPress, FileBox, IntTitleSlider, @@ -58,9 +60,7 @@ from invokeai.backend.install.model_install_backend import ( InstallSelections, ModelInstall, ) -from invokeai.backend.model_management.model_probe import ( - ModelType, BaseModelType - ) +from invokeai.backend.model_management.model_probe import ModelType, BaseModelType warnings.filterwarnings("ignore") transformers.logging.set_verbosity_error() @@ -75,7 +75,7 @@ Model_dir = "models" Default_config_file = config.model_conf_path SD_Configs = config.legacy_conf_path -PRECISION_CHOICES = ['auto','float16','float32'] +PRECISION_CHOICES = ["auto", "float16", "float32"] INIT_FILE_PREAMBLE = """# InvokeAI initialization file # This is the InvokeAI initialization file, which contains command-line default values. @@ -83,7 +83,8 @@ INIT_FILE_PREAMBLE = """# InvokeAI initialization file # or renaming it and then running invokeai-configure again. """ -logger=InvokeAILogger.getLogger() +logger = InvokeAILogger.getLogger() + # -------------------------------------------- def postscript(errors: None): @@ -106,7 +107,9 @@ Add the '--help' argument to see all of the command-line switches available for """ else: - message = "\n** There were errors during installation. It is possible some of the models were not fully downloaded.\n" + message = ( + "\n** There were errors during installation. It is possible some of the models were not fully downloaded.\n" + ) for err in errors: message += f"\t - {err}\n" message += "Please check the logs above and correct any issues." @@ -167,9 +170,7 @@ def download_with_progress_bar(model_url: str, model_dest: str, label: str = "th logger.info(f"Installing {label} model file {model_url}...") if not os.path.exists(model_dest): os.makedirs(os.path.dirname(model_dest), exist_ok=True) - request.urlretrieve( - model_url, model_dest, ProgressBar(os.path.basename(model_dest)) - ) + request.urlretrieve(model_url, model_dest, ProgressBar(os.path.basename(model_dest))) logger.info("...downloaded successfully") else: logger.info("...exists") @@ -180,81 +181,93 @@ def download_with_progress_bar(model_url: str, model_dest: str, label: str = "th def download_conversion_models(): - target_dir = config.root_path / 'models/core/convert' + target_dir = config.root_path / "models/core/convert" kwargs = dict() # for future use try: - logger.info('Downloading core tokenizers and text encoders') + logger.info("Downloading core tokenizers and text encoders") # bert with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=DeprecationWarning) bert = BertTokenizerFast.from_pretrained("bert-base-uncased", **kwargs) - bert.save_pretrained(target_dir / 'bert-base-uncased', safe_serialization=True) - + bert.save_pretrained(target_dir / "bert-base-uncased", safe_serialization=True) + # sd-1 - repo_id = 'openai/clip-vit-large-patch14' - hf_download_from_pretrained(CLIPTokenizer, repo_id, target_dir / 'clip-vit-large-patch14') - hf_download_from_pretrained(CLIPTextModel, repo_id, target_dir / 'clip-vit-large-patch14') + repo_id = "openai/clip-vit-large-patch14" + hf_download_from_pretrained(CLIPTokenizer, repo_id, target_dir / "clip-vit-large-patch14") + hf_download_from_pretrained(CLIPTextModel, repo_id, target_dir / "clip-vit-large-patch14") # sd-2 repo_id = "stabilityai/stable-diffusion-2" pipeline = CLIPTokenizer.from_pretrained(repo_id, subfolder="tokenizer", **kwargs) - pipeline.save_pretrained(target_dir / 'stable-diffusion-2-clip' / 'tokenizer', safe_serialization=True) + pipeline.save_pretrained(target_dir / "stable-diffusion-2-clip" / "tokenizer", safe_serialization=True) pipeline = CLIPTextModel.from_pretrained(repo_id, subfolder="text_encoder", **kwargs) - pipeline.save_pretrained(target_dir / 'stable-diffusion-2-clip' / 'text_encoder', safe_serialization=True) + pipeline.save_pretrained(target_dir / "stable-diffusion-2-clip" / "text_encoder", safe_serialization=True) + + # sd-xl - tokenizer_2 + repo_id = "laion/CLIP-ViT-bigG-14-laion2B-39B-b160k" + _, model_name = repo_id.split("/") + pipeline = CLIPTokenizer.from_pretrained(repo_id, **kwargs) + pipeline.save_pretrained(target_dir / model_name, safe_serialization=True) + + pipeline = CLIPTextConfig.from_pretrained(repo_id, **kwargs) + pipeline.save_pretrained(target_dir / model_name, safe_serialization=True) # VAE - logger.info('Downloading stable diffusion VAE') - vae = AutoencoderKL.from_pretrained('stabilityai/sd-vae-ft-mse', **kwargs) - vae.save_pretrained(target_dir / 'sd-vae-ft-mse', safe_serialization=True) + logger.info("Downloading stable diffusion VAE") + vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse", **kwargs) + vae.save_pretrained(target_dir / "sd-vae-ft-mse", safe_serialization=True) # safety checking - logger.info('Downloading safety checker') + logger.info("Downloading safety checker") repo_id = "CompVis/stable-diffusion-safety-checker" - pipeline = AutoFeatureExtractor.from_pretrained(repo_id,**kwargs) - pipeline.save_pretrained(target_dir / 'stable-diffusion-safety-checker', safe_serialization=True) + pipeline = AutoFeatureExtractor.from_pretrained(repo_id, **kwargs) + pipeline.save_pretrained(target_dir / "stable-diffusion-safety-checker", safe_serialization=True) - pipeline = StableDiffusionSafetyChecker.from_pretrained(repo_id,**kwargs) - pipeline.save_pretrained(target_dir / 'stable-diffusion-safety-checker', safe_serialization=True) + pipeline = StableDiffusionSafetyChecker.from_pretrained(repo_id, **kwargs) + pipeline.save_pretrained(target_dir / "stable-diffusion-safety-checker", safe_serialization=True) except KeyboardInterrupt: raise except Exception as e: logger.error(str(e)) + # --------------------------------------------- def download_realesrgan(): logger.info("Installing ESRGAN Upscaling models...") URLs = [ dict( - url = "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth", - dest = "core/upscaling/realesrgan/RealESRGAN_x4plus.pth", - description = "RealESRGAN_x4plus.pth", + url="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth", + dest="core/upscaling/realesrgan/RealESRGAN_x4plus.pth", + description="RealESRGAN_x4plus.pth", ), dict( - url = "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth", - dest = "core/upscaling/realesrgan/RealESRGAN_x4plus_anime_6B.pth", - description = "RealESRGAN_x4plus_anime_6B.pth", + url="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth", + dest="core/upscaling/realesrgan/RealESRGAN_x4plus_anime_6B.pth", + description="RealESRGAN_x4plus_anime_6B.pth", ), dict( - url= "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth", - dest= "core/upscaling/realesrgan/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth", - description = "ESRGAN_SRx4_DF2KOST_official.pth", + url="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth", + dest="core/upscaling/realesrgan/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth", + description="ESRGAN_SRx4_DF2KOST_official.pth", ), dict( - url= "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth", - dest= "core/upscaling/realesrgan/RealESRGAN_x2plus.pth", - description = "RealESRGAN_x2plus.pth", + url="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth", + dest="core/upscaling/realesrgan/RealESRGAN_x2plus.pth", + description="RealESRGAN_x2plus.pth", ), ] for model in URLs: - download_with_progress_bar(model['url'], config.models_path / model['dest'], model['description']) + download_with_progress_bar(model["url"], config.models_path / model["dest"], model["description"]) + # --------------------------------------------- def download_support_models(): download_realesrgan() download_conversion_models() + # ------------------------------------- def get_root(root: str = None) -> str: if root: @@ -264,6 +277,7 @@ def get_root(root: str = None) -> str: else: return str(config.root_path) + # ------------------------------------- class editOptsForm(CyclingForm, npyscreen.FormMultiPage): # for responsive resizing - disabled @@ -272,14 +286,14 @@ class editOptsForm(CyclingForm, npyscreen.FormMultiPage): def create(self): program_opts = self.parentApp.program_opts old_opts = self.parentApp.invokeai_opts - first_time = not (config.root_path / 'invokeai.yaml').exists() + first_time = not (config.root_path / "invokeai.yaml").exists() access_token = HfFolder.get_token() window_width, window_height = get_terminal_size() label = """Configure startup settings. You can come back and change these later. Use ctrl-N and ctrl-P to move to the ext and

revious fields. Use cursor arrows to make a checkbox selection, and space to toggle. """ - for i in textwrap.wrap(label,width=window_width-6): + for i in textwrap.wrap(label, width=window_width - 6): self.add_widget_intelligent( npyscreen.FixedText, value=i, @@ -287,50 +301,9 @@ Use cursor arrows to make a checkbox selection, and space to toggle. color="CONTROL", ) - self.nextrely += 1 - self.add_widget_intelligent( - npyscreen.TitleFixedText, - name="== BASIC OPTIONS ==", - begin_entry_at=0, - editable=False, - color="CONTROL", - scroll_exit=True, - ) - self.nextrely -= 1 - self.add_widget_intelligent( - npyscreen.FixedText, - value="Select an output directory for images:", - editable=False, - color="CONTROL", - ) - self.outdir = self.add_widget_intelligent( - npyscreen.TitleFilename, - name="( autocompletes, ctrl-N advances):", - value=str(default_output_dir()), - select_dir=True, - must_exist=False, - use_two_lines=False, - labelColor="GOOD", - begin_entry_at=40, - scroll_exit=True, - ) - self.nextrely += 1 - self.add_widget_intelligent( - npyscreen.FixedText, - value="Activate the NSFW checker to blur images showing potential sexual imagery:", - editable=False, - color="CONTROL", - ) - self.nsfw_checker = self.add_widget_intelligent( - npyscreen.Checkbox, - name="NSFW checker", - value=old_opts.nsfw_checker, - relx=5, - scroll_exit=True, - ) self.nextrely += 1 label = """HuggingFace access token (OPTIONAL) for automatic model downloads. See https://huggingface.co/settings/tokens.""" - for line in textwrap.wrap(label,width=window_width-6): + for line in textwrap.wrap(label, width=window_width - 6): self.add_widget_intelligent( npyscreen.FixedText, value=line, @@ -347,15 +320,6 @@ Use cursor arrows to make a checkbox selection, and space to toggle. scroll_exit=True, ) self.nextrely += 1 - self.add_widget_intelligent( - npyscreen.TitleFixedText, - name="== ADVANCED OPTIONS ==", - begin_entry_at=0, - editable=False, - color="CONTROL", - scroll_exit=True, - ) - self.nextrely -= 1 self.add_widget_intelligent( npyscreen.TitleFixedText, name="GPU Management", @@ -369,34 +333,47 @@ Use cursor arrows to make a checkbox selection, and space to toggle. npyscreen.Checkbox, name="Free GPU memory after each generation", value=old_opts.free_gpu_mem, + max_width=45, relx=5, scroll_exit=True, ) + self.nextrely -= 1 self.xformers_enabled = self.add_widget_intelligent( npyscreen.Checkbox, - name="Enable xformers support if available", + name="Enable xformers support", value=old_opts.xformers_enabled, - relx=5, + max_width=30, + relx=50, scroll_exit=True, ) + self.nextrely -= 1 self.always_use_cpu = self.add_widget_intelligent( npyscreen.Checkbox, name="Force CPU to be used on GPU systems", value=old_opts.always_use_cpu, - relx=5, + relx=80, scroll_exit=True, ) - precision = old_opts.precision or ( - "float32" if program_opts.full_precision else "auto" + precision = old_opts.precision or ("float32" if program_opts.full_precision else "auto") + self.nextrely += 1 + self.add_widget_intelligent( + npyscreen.TitleFixedText, + name="Floating Point Precision", + begin_entry_at=0, + editable=False, + color="CONTROL", + scroll_exit=True, ) + self.nextrely -= 1 self.precision = self.add_widget_intelligent( - npyscreen.TitleSelectOne, - columns = 2, + SingleSelectColumns, + columns=3, name="Precision", values=PRECISION_CHOICES, value=PRECISION_CHOICES.index(precision), begin_entry_at=3, - max_height=len(PRECISION_CHOICES) + 1, + max_height=2, + max_width=80, scroll_exit=True, ) self.max_cache_size = self.add_widget_intelligent( @@ -409,40 +386,38 @@ Use cursor arrows to make a checkbox selection, and space to toggle. scroll_exit=True, ) self.nextrely += 1 - self.add_widget_intelligent( - npyscreen.FixedText, - value="Folder to recursively scan for new checkpoints, ControlNets, LoRAs and TI models ( autocompletes, ctrl-N advances):", - editable=False, - color="CONTROL", - ) - self.autoimport_dirs = {} - self.autoimport_dirs['autoimport_dir'] = self.add_widget_intelligent( - FileBox, - name=f'Autoimport Folder', - value=str(config.root_path / config.autoimport_dir), - select_dir=True, - must_exist=False, - use_two_lines=False, - labelColor="GOOD", - begin_entry_at=32, - max_height = 3, - scroll_exit=True - ) - self.nextrely += 1 - self.add_widget_intelligent( - npyscreen.TitleFixedText, - name="== LICENSE ==", - begin_entry_at=0, - editable=False, - color="CONTROL", + self.outdir = self.add_widget_intelligent( + FileBox, + name="Output directory for images ( autocompletes, ctrl-N advances):", + value=str(default_output_dir()), + select_dir=True, + must_exist=False, + use_two_lines=False, + labelColor="GOOD", + begin_entry_at=40, + max_height=3, scroll_exit=True, ) - self.nextrely -= 1 + self.autoimport_dirs = {} + self.autoimport_dirs["autoimport_dir"] = self.add_widget_intelligent( + FileBox, + name=f"Folder to recursively scan for new checkpoints, ControlNets, LoRAs and TI models", + value=str(config.root_path / config.autoimport_dir), + select_dir=True, + must_exist=False, + use_two_lines=False, + labelColor="GOOD", + begin_entry_at=32, + max_height=3, + scroll_exit=True, + ) + self.nextrely += 1 label = """BY DOWNLOADING THE STABLE DIFFUSION WEIGHT FILES, YOU AGREE TO HAVE READ -AND ACCEPTED THE CREATIVEML RESPONSIBLE AI LICENSE LOCATED AT -https://huggingface.co/spaces/CompVis/stable-diffusion-license +AND ACCEPTED THE CREATIVEML RESPONSIBLE AI LICENSES LOCATED AT +https://huggingface.co/spaces/CompVis/stable-diffusion-license and +https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/LICENSE.md """ - for i in textwrap.wrap(label,width=window_width-6): + for i in textwrap.wrap(label, width=window_width - 6): self.add_widget_intelligent( npyscreen.FixedText, value=i, @@ -451,22 +426,17 @@ https://huggingface.co/spaces/CompVis/stable-diffusion-license ) self.license_acceptance = self.add_widget_intelligent( npyscreen.Checkbox, - name="I accept the CreativeML Responsible AI License", + name="I accept the CreativeML Responsible AI Licenses", value=not first_time, relx=2, scroll_exit=True, ) self.nextrely += 1 - label = ( - "DONE" - if program_opts.skip_sd_weights or program_opts.default_only - else "NEXT" - ) + label = "DONE" if program_opts.skip_sd_weights or program_opts.default_only else "NEXT" self.ok_button = self.add_widget_intelligent( CenteredButtonPress, name=label, relx=(window_width - len(label)) // 2, - rely=-3, when_pressed_function=self.on_ok, ) @@ -481,13 +451,11 @@ https://huggingface.co/spaces/CompVis/stable-diffusion-license self.editing = False else: self.editing = True - + def validate_field_values(self, opt: Namespace) -> bool: bad_fields = [] if not opt.license_acceptance: - bad_fields.append( - "Please accept the license terms before proceeding to model downloads" - ) + bad_fields.append("Please accept the license terms before proceeding to model downloads") if not Path(opt.outdir).parent.exists(): bad_fields.append( f"The output directory does not seem to be valid. Please check that {str(Path(opt.outdir).parent)} is an existing directory." @@ -505,12 +473,11 @@ https://huggingface.co/spaces/CompVis/stable-diffusion-license new_opts = Namespace() for attr in [ - "outdir", - "nsfw_checker", - "free_gpu_mem", - "max_cache_size", - "xformers_enabled", - "always_use_cpu", + "outdir", + "free_gpu_mem", + "max_cache_size", + "xformers_enabled", + "always_use_cpu", ]: setattr(new_opts, attr, getattr(self, attr).value) @@ -523,7 +490,7 @@ https://huggingface.co/spaces/CompVis/stable-diffusion-license new_opts.hf_token = self.hf_token.value new_opts.license_acceptance = self.license_acceptance.value new_opts.precision = PRECISION_CHOICES[self.precision.value[0]] - + return new_opts @@ -542,7 +509,7 @@ class EditOptApplication(npyscreen.NPSAppManaged): "MAIN", editOptsForm, name="InvokeAI Startup Options", - cycle_widgets=True, + cycle_widgets=False, ) if not (self.program_opts.skip_sd_weights or self.program_opts.default_only): self.model_select = self.addForm( @@ -550,7 +517,7 @@ class EditOptApplication(npyscreen.NPSAppManaged): addModelsForm, name="Install Stable Diffusion Models", multipage=True, - cycle_widgets=True, + cycle_widgets=False, ) def new_opts(self): @@ -562,21 +529,20 @@ def edit_opts(program_opts: Namespace, invokeai_opts: Namespace) -> argparse.Nam editApp.run() return editApp.new_opts() + def default_startup_options(init_file: Path) -> Namespace: opts = InvokeAIAppConfig.get_config() - if not init_file.exists(): - opts.nsfw_checker = True return opts + def default_user_selections(program_opts: Namespace) -> InstallSelections: - try: installer = ModelInstall(config) except omegaconf.errors.ConfigKeyError: - logger.warning('Your models.yaml file is corrupt or out of date. Reinitializing') + logger.warning("Your models.yaml file is corrupt or out of date. Reinitializing") initialize_rootdir(config.root_path, True) installer = ModelInstall(config) - + models = installer.all_models() return InstallSelections( install_models=[models[installer.default_model()].path or models[installer.default_model()].repo_id] @@ -586,44 +552,46 @@ def default_user_selections(program_opts: Namespace) -> InstallSelections: else list(), ) + # ------------------------------------- def initialize_rootdir(root: Path, yes_to_all: bool = False): - logger.info("** INITIALIZING INVOKEAI RUNTIME DIRECTORY **") - for name in ( - "models", - "databases", - "text-inversion-output", - "text-inversion-training-data", - "configs" - ): + logger.info("Initializing InvokeAI runtime directory") + for name in ("models", "databases", "text-inversion-output", "text-inversion-training-data", "configs"): os.makedirs(os.path.join(root, name), exist_ok=True) for model_type in ModelType: - Path(root, 'autoimport', model_type.value).mkdir(parents=True, exist_ok=True) + Path(root, "autoimport", model_type.value).mkdir(parents=True, exist_ok=True) configs_src = Path(configs.__path__[0]) configs_dest = root / "configs" if not os.path.samefile(configs_src, configs_dest): shutil.copytree(configs_src, configs_dest, dirs_exist_ok=True) - dest = root / 'models' + dest = root / "models" for model_base in BaseModelType: for model_type in ModelType: path = dest / model_base.value / model_type.value path.mkdir(parents=True, exist_ok=True) - path = dest / 'core' + path = dest / "core" path.mkdir(parents=True, exist_ok=True) - with open(root / 'configs' / 'models.yaml','w') as yaml_file: - yaml_file.write(yaml.dump({'__metadata__': - {'version':'3.0.0'} - } - ) - ) - + maybe_create_models_yaml(root) + + +def maybe_create_models_yaml(root: Path): + models_yaml = root / "configs" / "models.yaml" + if models_yaml.exists(): + if OmegaConf.load(models_yaml).get("__metadata__"): # up to date + return + else: + logger.info("Creating new models.yaml, original saved as models.yaml.orig") + models_yaml.rename(models_yaml.parent / "models.yaml.orig") + + with open(models_yaml, "w") as yaml_file: + yaml_file.write(yaml.dump({"__metadata__": {"version": "3.0.0"}})) + + # ------------------------------------- -def run_console_ui( - program_opts: Namespace, initfile: Path = None -) -> (Namespace, Namespace): +def run_console_ui(program_opts: Namespace, initfile: Path = None) -> (Namespace, Namespace): # parse_args() will read from init file if present invokeai_opts = default_startup_options(initfile) invokeai_opts.root = program_opts.root @@ -635,8 +603,9 @@ def run_console_ui( # the install-models application spawns a subprocess to install # models, and will crash unless this is set before running. import torch + torch.multiprocessing.set_start_method("spawn") - + editApp = EditOptApplication(program_opts, invokeai_opts) editApp.run() if editApp.user_cancelled: @@ -653,81 +622,86 @@ def write_opts(opts: Namespace, init_file: Path): # this will load current settings new_config = InvokeAIAppConfig.get_config() new_config.root = config.root - - for key,value in opts.__dict__.items(): - if hasattr(new_config,key): - setattr(new_config,key,value) - with open(init_file,'w', encoding='utf-8') as file: + for key, value in opts.__dict__.items(): + if hasattr(new_config, key): + setattr(new_config, key, value) + + with open(init_file, "w", encoding="utf-8") as file: file.write(new_config.to_yaml()) - if hasattr(opts,'hf_token') and opts.hf_token: + if hasattr(opts, "hf_token") and opts.hf_token: HfLogin(opts.hf_token) + # ------------------------------------- def default_output_dir() -> Path: return config.root_path / "outputs" + # ------------------------------------- def write_default_options(program_opts: Namespace, initfile: Path): opt = default_startup_options(initfile) write_opts(opt, initfile) + # ------------------------------------- # Here we bring in # the legacy Args object in order to parse # the old init file and write out the new # yaml format. -def migrate_init_file(legacy_format:Path): - old = legacy_parser.parse_args([f'@{str(legacy_format)}']) +def migrate_init_file(legacy_format: Path): + old = legacy_parser.parse_args([f"@{str(legacy_format)}"]) new = InvokeAIAppConfig.get_config() fields = list(get_type_hints(InvokeAIAppConfig).keys()) for attr in fields: - if hasattr(old,attr): - setattr(new,attr,getattr(old,attr)) + if hasattr(old, attr): + setattr(new, attr, getattr(old, attr)) # a few places where the field names have changed and we have to # manually add in the new names/values - new.nsfw_checker = old.safety_checker new.xformers_enabled = old.xformers new.conf_path = old.conf new.root = legacy_format.parent.resolve() - invokeai_yaml = legacy_format.parent / 'invokeai.yaml' - with open(invokeai_yaml,"w", encoding="utf-8") as outfile: + invokeai_yaml = legacy_format.parent / "invokeai.yaml" + with open(invokeai_yaml, "w", encoding="utf-8") as outfile: outfile.write(new.to_yaml()) - legacy_format.replace(legacy_format.parent / 'invokeai.init.orig') + legacy_format.replace(legacy_format.parent / "invokeai.init.orig") + # ------------------------------------- def migrate_models(root: Path): from invokeai.backend.install.migrate_to_3 import do_migrate + do_migrate(root, root) -def migrate_if_needed(opt: Namespace, root: Path)->bool: - # We check for to see if the runtime directory is correctly initialized. - old_init_file = root / 'invokeai.init' - new_init_file = root / 'invokeai.yaml' - old_hub = root / 'models/hub' - migration_needed = (old_init_file.exists() and not new_init_file.exists()) and old_hub.exists() - - if migration_needed: - if opt.yes_to_all or \ - yes_or_no(f'{str(config.root_path)} appears to be a 2.3 format root directory. Convert to version 3.0?'): - logger.info('** Migrating invokeai.init to invokeai.yaml') +def migrate_if_needed(opt: Namespace, root: Path) -> bool: + # We check for to see if the runtime directory is correctly initialized. + old_init_file = root / "invokeai.init" + new_init_file = root / "invokeai.yaml" + old_hub = root / "models/hub" + migration_needed = (old_init_file.exists() and not new_init_file.exists()) and old_hub.exists() + + if migration_needed: + if opt.yes_to_all or yes_or_no( + f"{str(config.root_path)} appears to be a 2.3 format root directory. Convert to version 3.0?" + ): + logger.info("** Migrating invokeai.init to invokeai.yaml") migrate_init_file(old_init_file) - config.parse_args(argv=[],conf=OmegaConf.load(new_init_file)) + config.parse_args(argv=[], conf=OmegaConf.load(new_init_file)) if old_hub.exists(): migrate_models(config.root_path) else: - print('Cannot continue without conversion. Aborting.') - + print("Cannot continue without conversion. Aborting.") + return migration_needed - + # ------------------------------------- def main(): parser = argparse.ArgumentParser(description="InvokeAI model downloader") @@ -784,9 +758,9 @@ def main(): invoke_args = [] if opt.root: - invoke_args.extend(['--root',opt.root]) + invoke_args.extend(["--root", opt.root]) if opt.full_precision: - invoke_args.extend(['--precision','float32']) + invoke_args.extend(["--precision", "float32"]) config.parse_args(invoke_args) logger = InvokeAILogger().getLogger(config=config) @@ -798,41 +772,36 @@ def main(): if migrate_if_needed(opt, config.root_path): sys.exit(0) - if not config.model_conf_path.exists(): - initialize_rootdir(config.root_path, opt.yes_to_all) + # run this unconditionally in case new directories need to be added + initialize_rootdir(config.root_path, opt.yes_to_all) models_to_download = default_user_selections(opt) - new_init_file = config.root_path / 'invokeai.yaml' + new_init_file = config.root_path / "invokeai.yaml" if opt.yes_to_all: write_default_options(opt, new_init_file) - init_options = Namespace( - precision="float32" if opt.full_precision else "float16" - ) + init_options = Namespace(precision="float32" if opt.full_precision else "float16") else: init_options, models_to_download = run_console_ui(opt, new_init_file) if init_options: write_opts(init_options, new_init_file) else: - logger.info( - '\n** CANCELLED AT USER\'S REQUEST. USE THE "invoke.sh" LAUNCHER TO RUN LATER **\n' - ) + logger.info('\n** CANCELLED AT USER\'S REQUEST. USE THE "invoke.sh" LAUNCHER TO RUN LATER **\n') sys.exit(0) - + if opt.skip_support_models: - logger.info("SKIPPING SUPPORT MODEL DOWNLOADS PER USER REQUEST") + logger.info("Skipping support models at user's request") else: - logger.info("CHECKING/UPDATING SUPPORT MODELS") + logger.info("Installing support models") download_support_models() if opt.skip_sd_weights: - logger.warning("SKIPPING DIFFUSION WEIGHTS DOWNLOAD PER USER REQUEST") + logger.warning("Skipping diffusion weights download per user request") elif models_to_download: - logger.info("DOWNLOADING DIFFUSION WEIGHTS") process_and_execute(opt, models_to_download) postscript(errors=errors) if not opt.yes_to_all: - input('Press any key to continue...') + input("Press any key to continue...") except KeyboardInterrupt: print("\nGoodbye! Come back soon.") diff --git a/invokeai/backend/install/legacy_arg_parsing.py b/invokeai/backend/install/legacy_arg_parsing.py index 684c50c77d..f6a0682f2a 100644 --- a/invokeai/backend/install/legacy_arg_parsing.py +++ b/invokeai/backend/install/legacy_arg_parsing.py @@ -47,17 +47,18 @@ PRECISION_CHOICES = [ "float16", ] + class FileArgumentParser(ArgumentParser): """ Supports reading defaults from an init file. """ + def convert_arg_line_to_args(self, arg_line): return shlex.split(arg_line, comments=True) legacy_parser = FileArgumentParser( - description= - """ + description=""" Generate images using Stable Diffusion. Use --web to launch the web interface. Use --from_file to load prompts from a file path or standard input ("-"). @@ -65,304 +66,279 @@ Generate images using Stable Diffusion. Other command-line arguments are defaults that can usually be overridden prompt the command prompt. """, - fromfile_prefix_chars='@', + fromfile_prefix_chars="@", ) -general_group = legacy_parser.add_argument_group('General') -model_group = legacy_parser.add_argument_group('Model selection') -file_group = legacy_parser.add_argument_group('Input/output') -web_server_group = legacy_parser.add_argument_group('Web server') -render_group = legacy_parser.add_argument_group('Rendering') -postprocessing_group = legacy_parser.add_argument_group('Postprocessing') -deprecated_group = legacy_parser.add_argument_group('Deprecated options') +general_group = legacy_parser.add_argument_group("General") +model_group = legacy_parser.add_argument_group("Model selection") +file_group = legacy_parser.add_argument_group("Input/output") +web_server_group = legacy_parser.add_argument_group("Web server") +render_group = legacy_parser.add_argument_group("Rendering") +postprocessing_group = legacy_parser.add_argument_group("Postprocessing") +deprecated_group = legacy_parser.add_argument_group("Deprecated options") -deprecated_group.add_argument('--laion400m') -deprecated_group.add_argument('--weights') # deprecated -general_group.add_argument( - '--version','-V', - action='store_true', - help='Print InvokeAI version number' -) +deprecated_group.add_argument("--laion400m") +deprecated_group.add_argument("--weights") # deprecated +general_group.add_argument("--version", "-V", action="store_true", help="Print InvokeAI version number") model_group.add_argument( - '--root_dir', + "--root_dir", default=None, help='Path to directory containing "models", "outputs" and "configs". If not present will read from environment variable INVOKEAI_ROOT. Defaults to ~/invokeai.', ) model_group.add_argument( - '--config', - '-c', - '-config', - dest='conf', - default='./configs/models.yaml', - help='Path to configuration file for alternate models.', + "--config", + "-c", + "-config", + dest="conf", + default="./configs/models.yaml", + help="Path to configuration file for alternate models.", ) model_group.add_argument( - '--model', + "--model", help='Indicates which diffusion model to load (defaults to "default" stanza in configs/models.yaml)', ) model_group.add_argument( - '--weight_dirs', - nargs='+', + "--weight_dirs", + nargs="+", type=str, - help='List of one or more directories that will be auto-scanned for new model weights to import', + help="List of one or more directories that will be auto-scanned for new model weights to import", ) model_group.add_argument( - '--png_compression','-z', + "--png_compression", + "-z", type=int, default=6, - choices=range(0,9), - dest='png_compression', - help='level of PNG compression, from 0 (none) to 9 (maximum). Default is 6.' + choices=range(0, 9), + dest="png_compression", + help="level of PNG compression, from 0 (none) to 9 (maximum). Default is 6.", ) model_group.add_argument( - '-F', - '--full_precision', - dest='full_precision', - action='store_true', - help='Deprecated way to set --precision=float32', + "-F", + "--full_precision", + dest="full_precision", + action="store_true", + help="Deprecated way to set --precision=float32", ) model_group.add_argument( - '--max_loaded_models', - dest='max_loaded_models', + "--max_loaded_models", + dest="max_loaded_models", type=int, default=2, - help='Maximum number of models to keep in memory for fast switching, including the one in GPU', + help="Maximum number of models to keep in memory for fast switching, including the one in GPU", ) model_group.add_argument( - '--free_gpu_mem', - dest='free_gpu_mem', - action='store_true', - help='Force free gpu memory before final decoding', + "--free_gpu_mem", + dest="free_gpu_mem", + action="store_true", + help="Force free gpu memory before final decoding", ) model_group.add_argument( - '--sequential_guidance', - dest='sequential_guidance', - action='store_true', - help="Calculate guidance in serial instead of in parallel, lowering memory requirement " - "at the expense of speed", + "--sequential_guidance", + dest="sequential_guidance", + action="store_true", + help="Calculate guidance in serial instead of in parallel, lowering memory requirement " "at the expense of speed", ) model_group.add_argument( - '--xformers', + "--xformers", action=argparse.BooleanOptionalAction, default=True, - help='Enable/disable xformers support (default enabled if installed)', + help="Enable/disable xformers support (default enabled if installed)", ) model_group.add_argument( - "--always_use_cpu", - dest="always_use_cpu", - action="store_true", - help="Force use of CPU even if GPU is available" + "--always_use_cpu", dest="always_use_cpu", action="store_true", help="Force use of CPU even if GPU is available" ) model_group.add_argument( - '--precision', - dest='precision', + "--precision", + dest="precision", type=str, choices=PRECISION_CHOICES, - metavar='PRECISION', + metavar="PRECISION", help=f'Set model precision. Defaults to auto selected based on device. Options: {", ".join(PRECISION_CHOICES)}', - default='auto', + default="auto", ) model_group.add_argument( - '--ckpt_convert', + "--ckpt_convert", action=argparse.BooleanOptionalAction, - dest='ckpt_convert', + dest="ckpt_convert", default=True, - help='Deprecated option. Legacy ckpt files are now always converted to diffusers when loaded.' + help="Deprecated option. Legacy ckpt files are now always converted to diffusers when loaded.", ) model_group.add_argument( - '--internet', + "--internet", action=argparse.BooleanOptionalAction, - dest='internet_available', + dest="internet_available", default=True, - help='Indicate whether internet is available for just-in-time model downloading (default: probe automatically).', + help="Indicate whether internet is available for just-in-time model downloading (default: probe automatically).", ) model_group.add_argument( - '--nsfw_checker', - '--safety_checker', + "--nsfw_checker", + "--safety_checker", action=argparse.BooleanOptionalAction, - dest='safety_checker', + dest="safety_checker", default=False, - help='Check for and blur potentially NSFW images. Use --no-nsfw_checker to disable.', + help="Check for and blur potentially NSFW images. Use --no-nsfw_checker to disable.", ) model_group.add_argument( - '--autoimport', + "--autoimport", default=None, type=str, - help='Check the indicated directory for .ckpt/.safetensors weights files at startup and import directly', + help="Check the indicated directory for .ckpt/.safetensors weights files at startup and import directly", ) model_group.add_argument( - '--autoconvert', + "--autoconvert", default=None, type=str, - help='Check the indicated directory for .ckpt/.safetensors weights files at startup and import as optimized diffuser models', + help="Check the indicated directory for .ckpt/.safetensors weights files at startup and import as optimized diffuser models", ) model_group.add_argument( - '--patchmatch', + "--patchmatch", action=argparse.BooleanOptionalAction, default=True, - help='Load the patchmatch extension for outpainting. Use --no-patchmatch to disable.', + help="Load the patchmatch extension for outpainting. Use --no-patchmatch to disable.", ) file_group.add_argument( - '--from_file', - dest='infile', + "--from_file", + dest="infile", type=str, - help='If specified, load prompts from this file', + help="If specified, load prompts from this file", ) file_group.add_argument( - '--outdir', - '-o', + "--outdir", + "-o", type=str, - help='Directory to save generated images and a log of prompts and seeds. Default: ROOTDIR/outputs', - default='outputs', + help="Directory to save generated images and a log of prompts and seeds. Default: ROOTDIR/outputs", + default="outputs", ) file_group.add_argument( - '--prompt_as_dir', - '-p', - action='store_true', - help='Place images in subdirectories named after the prompt.', + "--prompt_as_dir", + "-p", + action="store_true", + help="Place images in subdirectories named after the prompt.", ) render_group.add_argument( - '--fnformat', - default='{prefix}.{seed}.png', + "--fnformat", + default="{prefix}.{seed}.png", type=str, - help='Overwrite the filename format. You can use any argument as wildcard enclosed in curly braces. Default is {prefix}.{seed}.png', + help="Overwrite the filename format. You can use any argument as wildcard enclosed in curly braces. Default is {prefix}.{seed}.png", ) +render_group.add_argument("-s", "--steps", type=int, default=50, help="Number of steps") render_group.add_argument( - '-s', - '--steps', + "-W", + "--width", type=int, - default=50, - help='Number of steps' + help="Image width, multiple of 64", ) render_group.add_argument( - '-W', - '--width', + "-H", + "--height", type=int, - help='Image width, multiple of 64', + help="Image height, multiple of 64", ) render_group.add_argument( - '-H', - '--height', - type=int, - help='Image height, multiple of 64', -) -render_group.add_argument( - '-C', - '--cfg_scale', + "-C", + "--cfg_scale", default=7.5, type=float, help='Classifier free guidance (CFG) scale - higher numbers cause generator to "try" harder.', ) render_group.add_argument( - '--sampler', - '-A', - '-m', - dest='sampler_name', + "--sampler", + "-A", + "-m", + dest="sampler_name", type=str, choices=SAMPLER_CHOICES, - metavar='SAMPLER_NAME', + metavar="SAMPLER_NAME", help=f'Set the default sampler. Supported samplers: {", ".join(SAMPLER_CHOICES)}', - default='k_lms', + default="k_lms", ) render_group.add_argument( - '--log_tokenization', - '-t', - action='store_true', - help='shows how the prompt is split into tokens' + "--log_tokenization", "-t", action="store_true", help="shows how the prompt is split into tokens" ) render_group.add_argument( - '-f', - '--strength', + "-f", + "--strength", type=float, - help='img2img strength for noising/unnoising. 0.0 preserves image exactly, 1.0 replaces it completely', + help="img2img strength for noising/unnoising. 0.0 preserves image exactly, 1.0 replaces it completely", ) render_group.add_argument( - '-T', - '-fit', - '--fit', + "-T", + "-fit", + "--fit", action=argparse.BooleanOptionalAction, - help='If specified, will resize the input image to fit within the dimensions of width x height (512x512 default)', + help="If specified, will resize the input image to fit within the dimensions of width x height (512x512 default)", ) +render_group.add_argument("--grid", "-g", action=argparse.BooleanOptionalAction, help="generate a grid") render_group.add_argument( - '--grid', - '-g', - action=argparse.BooleanOptionalAction, - help='generate a grid' -) -render_group.add_argument( - '--embedding_directory', - '--embedding_path', - dest='embedding_path', - default='embeddings', + "--embedding_directory", + "--embedding_path", + dest="embedding_path", + default="embeddings", type=str, - help='Path to a directory containing .bin and/or .pt files, or a single .bin/.pt file. You may use subdirectories. (default is ROOTDIR/embeddings)' + help="Path to a directory containing .bin and/or .pt files, or a single .bin/.pt file. You may use subdirectories. (default is ROOTDIR/embeddings)", ) render_group.add_argument( - '--lora_directory', - dest='lora_path', - default='loras', + "--lora_directory", + dest="lora_path", + default="loras", type=str, - help='Path to a directory containing LoRA files; subdirectories are not supported. (default is ROOTDIR/loras)' + help="Path to a directory containing LoRA files; subdirectories are not supported. (default is ROOTDIR/loras)", ) render_group.add_argument( - '--embeddings', + "--embeddings", action=argparse.BooleanOptionalAction, default=True, - help='Enable embedding directory (default). Use --no-embeddings to disable.', + help="Enable embedding directory (default). Use --no-embeddings to disable.", ) +render_group.add_argument("--enable_image_debugging", action="store_true", help="Generates debugging image to display") render_group.add_argument( - '--enable_image_debugging', - action='store_true', - help='Generates debugging image to display' -) -render_group.add_argument( - '--karras_max', + "--karras_max", type=int, default=None, - help="control the point at which the K* samplers will shift from using the Karras noise schedule (good for low step counts) to the LatentDiffusion noise schedule (good for high step counts). Set to 0 to use LatentDiffusion for all step values, and to a high value (e.g. 1000) to use Karras for all step values. [29]." + help="control the point at which the K* samplers will shift from using the Karras noise schedule (good for low step counts) to the LatentDiffusion noise schedule (good for high step counts). Set to 0 to use LatentDiffusion for all step values, and to a high value (e.g. 1000) to use Karras for all step values. [29].", ) # Restoration related args postprocessing_group.add_argument( - '--no_restore', - dest='restore', - action='store_false', - help='Disable face restoration with GFPGAN or codeformer', + "--no_restore", + dest="restore", + action="store_false", + help="Disable face restoration with GFPGAN or codeformer", ) postprocessing_group.add_argument( - '--no_upscale', - dest='esrgan', - action='store_false', - help='Disable upscaling with ESRGAN', + "--no_upscale", + dest="esrgan", + action="store_false", + help="Disable upscaling with ESRGAN", ) postprocessing_group.add_argument( - '--esrgan_bg_tile', + "--esrgan_bg_tile", type=int, default=400, - help='Tile size for background sampler, 0 for no tile during testing. Default: 400.', + help="Tile size for background sampler, 0 for no tile during testing. Default: 400.", ) postprocessing_group.add_argument( - '--esrgan_denoise_str', + "--esrgan_denoise_str", type=float, default=0.75, - help='esrgan denoise str. 0 is no denoise, 1 is max denoise. Default: 0.75', + help="esrgan denoise str. 0 is no denoise, 1 is max denoise. Default: 0.75", ) postprocessing_group.add_argument( - '--gfpgan_model_path', + "--gfpgan_model_path", type=str, - default='./models/gfpgan/GFPGANv1.4.pth', - help='Indicates the path to the GFPGAN model', + default="./models/gfpgan/GFPGANv1.4.pth", + help="Indicates the path to the GFPGAN model", ) web_server_group.add_argument( - '--web', - dest='web', - action='store_true', - help='Start in web server mode.', + "--web", + dest="web", + action="store_true", + help="Start in web server mode.", ) web_server_group.add_argument( - '--web_develop', - dest='web_develop', - action='store_true', - help='Start in web server development mode.', + "--web_develop", + dest="web_develop", + action="store_true", + help="Start in web server development mode.", ) web_server_group.add_argument( "--web_verbose", @@ -376,32 +352,27 @@ web_server_group.add_argument( help="Additional allowed origins, comma-separated", ) web_server_group.add_argument( - '--host', + "--host", type=str, - default='127.0.0.1', - help='Web server: Host or IP to listen on. Set to 0.0.0.0 to accept traffic from other devices on your network.' + default="127.0.0.1", + help="Web server: Host or IP to listen on. Set to 0.0.0.0 to accept traffic from other devices on your network.", ) +web_server_group.add_argument("--port", type=int, default="9090", help="Web server: Port to listen on") web_server_group.add_argument( - '--port', - type=int, - default='9090', - help='Web server: Port to listen on' -) -web_server_group.add_argument( - '--certfile', + "--certfile", type=str, default=None, - help='Web server: Path to certificate file to use for SSL. Use together with --keyfile' + help="Web server: Path to certificate file to use for SSL. Use together with --keyfile", ) web_server_group.add_argument( - '--keyfile', + "--keyfile", type=str, default=None, - help='Web server: Path to private key file to use for SSL. Use together with --certfile' + help="Web server: Path to private key file to use for SSL. Use together with --certfile", ) web_server_group.add_argument( - '--gui', - dest='gui', - action='store_true', - help='Start InvokeAI GUI', + "--gui", + dest="gui", + action="store_true", + help="Start InvokeAI GUI", ) diff --git a/invokeai/backend/install/migrate_to_3.py b/invokeai/backend/install/migrate_to_3.py index 85de3f5e69..9152e46951 100644 --- a/invokeai/backend/install/migrate_to_3.py +++ b/invokeai/backend/install/migrate_to_3.py @@ -1,7 +1,7 @@ -''' +""" Migrate the models directory and models.yaml file from an existing InvokeAI 2.3 installation to 3.0.0. -''' +""" import os import argparse @@ -29,14 +29,13 @@ from transformers import ( import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig from invokeai.backend.model_management import ModelManager -from invokeai.backend.model_management.model_probe import ( - ModelProbe, ModelType, BaseModelType, ModelProbeInfo - ) +from invokeai.backend.model_management.model_probe import ModelProbe, ModelType, BaseModelType, ModelProbeInfo warnings.filterwarnings("ignore") transformers.logging.set_verbosity_error() diffusers.logging.set_verbosity_error() + # holder for paths that we will migrate @dataclass class ModelPaths: @@ -45,81 +44,82 @@ class ModelPaths: loras: Path controlnets: Path + class MigrateTo3(object): - def __init__(self, - from_root: Path, - to_models: Path, - model_manager: ModelManager, - src_paths: ModelPaths, - ): + def __init__( + self, + from_root: Path, + to_models: Path, + model_manager: ModelManager, + src_paths: ModelPaths, + ): self.root_directory = from_root self.dest_models = to_models self.mgr = model_manager self.src_paths = src_paths - + @classmethod def initialize_yaml(cls, yaml_file: Path): - with open(yaml_file, 'w') as file: - file.write( - yaml.dump( - { - '__metadata__': {'version':'3.0.0'} - } - ) - ) - + with open(yaml_file, "w") as file: + file.write(yaml.dump({"__metadata__": {"version": "3.0.0"}})) + def create_directory_structure(self): - ''' + """ Create the basic directory structure for the models folder. - ''' - for model_base in [BaseModelType.StableDiffusion1,BaseModelType.StableDiffusion2]: - for model_type in [ModelType.Main, ModelType.Vae, ModelType.Lora, - ModelType.ControlNet,ModelType.TextualInversion]: + """ + for model_base in [BaseModelType.StableDiffusion1, BaseModelType.StableDiffusion2]: + for model_type in [ + ModelType.Main, + ModelType.Vae, + ModelType.Lora, + ModelType.ControlNet, + ModelType.TextualInversion, + ]: path = self.dest_models / model_base.value / model_type.value path.mkdir(parents=True, exist_ok=True) - path = self.dest_models / 'core' + path = self.dest_models / "core" path.mkdir(parents=True, exist_ok=True) @staticmethod - def copy_file(src:Path,dest:Path): - ''' + def copy_file(src: Path, dest: Path): + """ copy a single file with logging - ''' + """ if dest.exists(): - logger.info(f'Skipping existing {str(dest)}') + logger.info(f"Skipping existing {str(dest)}") return - logger.info(f'Copying {str(src)} to {str(dest)}') + logger.info(f"Copying {str(src)} to {str(dest)}") try: shutil.copy(src, dest) except Exception as e: - logger.error(f'COPY FAILED: {str(e)}') + logger.error(f"COPY FAILED: {str(e)}") @staticmethod - def copy_dir(src:Path,dest:Path): - ''' + def copy_dir(src: Path, dest: Path): + """ Recursively copy a directory with logging - ''' + """ if dest.exists(): - logger.info(f'Skipping existing {str(dest)}') + logger.info(f"Skipping existing {str(dest)}") return - - logger.info(f'Copying {str(src)} to {str(dest)}') + + logger.info(f"Copying {str(src)} to {str(dest)}") try: shutil.copytree(src, dest) except Exception as e: - logger.error(f'COPY FAILED: {str(e)}') + logger.error(f"COPY FAILED: {str(e)}") def migrate_models(self, src_dir: Path): - ''' + """ Recursively walk through src directory, probe anything that looks like a model, and copy the model into the appropriate location within the destination models directory. - ''' + """ directories_scanned = set() for root, dirs, files in os.walk(src_dir): for d in dirs: try: - model = Path(root,d) + model = Path(root, d) info = ModelProbe().heuristic_probe(model) if not info: continue @@ -136,9 +136,9 @@ class MigrateTo3(object): # don't copy raw learned_embeds.bin or pytorch_lora_weights.bin # let them be copied as part of a tree copy operation try: - if f in {'learned_embeds.bin','pytorch_lora_weights.bin'}: + if f in {"learned_embeds.bin", "pytorch_lora_weights.bin"}: continue - model = Path(root,f) + model = Path(root, f) if model.parent in directories_scanned: continue info = ModelProbe().heuristic_probe(model) @@ -154,148 +154,146 @@ class MigrateTo3(object): logger.error(str(e)) def migrate_support_models(self): - ''' + """ Copy the clipseg, upscaler, and restoration models to their new locations. - ''' + """ dest_directory = self.dest_models - if (self.root_directory / 'models/clipseg').exists(): - self.copy_dir(self.root_directory / 'models/clipseg', dest_directory / 'core/misc/clipseg') - if (self.root_directory / 'models/realesrgan').exists(): - self.copy_dir(self.root_directory / 'models/realesrgan', dest_directory / 'core/upscaling/realesrgan') - for d in ['codeformer','gfpgan']: - path = self.root_directory / 'models' / d + if (self.root_directory / "models/clipseg").exists(): + self.copy_dir(self.root_directory / "models/clipseg", dest_directory / "core/misc/clipseg") + if (self.root_directory / "models/realesrgan").exists(): + self.copy_dir(self.root_directory / "models/realesrgan", dest_directory / "core/upscaling/realesrgan") + for d in ["codeformer", "gfpgan"]: + path = self.root_directory / "models" / d if path.exists(): - self.copy_dir(path,dest_directory / f'core/face_restoration/{d}') + self.copy_dir(path, dest_directory / f"core/face_restoration/{d}") def migrate_tuning_models(self): - ''' + """ Migrate the embeddings, loras and controlnets directories to their new homes. - ''' + """ for src in [self.src_paths.embeddings, self.src_paths.loras, self.src_paths.controlnets]: if not src: continue if src.is_dir(): - logger.info(f'Scanning {src}') + logger.info(f"Scanning {src}") self.migrate_models(src) else: - logger.info(f'{src} directory not found; skipping') + logger.info(f"{src} directory not found; skipping") continue def migrate_conversion_models(self): - ''' + """ Migrate all the models that are needed by the ckpt_to_diffusers conversion script. - ''' + """ dest_directory = self.dest_models kwargs = dict( - cache_dir = self.root_directory / 'models/hub', - #local_files_only = True + cache_dir=self.root_directory / "models/hub", + # local_files_only = True ) try: - logger.info('Migrating core tokenizers and text encoders') - target_dir = dest_directory / 'core' / 'convert' + logger.info("Migrating core tokenizers and text encoders") + target_dir = dest_directory / "core" / "convert" - self._migrate_pretrained(BertTokenizerFast, - repo_id='bert-base-uncased', - dest = target_dir / 'bert-base-uncased', - **kwargs) + self._migrate_pretrained( + BertTokenizerFast, repo_id="bert-base-uncased", dest=target_dir / "bert-base-uncased", **kwargs + ) # sd-1 - repo_id = 'openai/clip-vit-large-patch14' - self._migrate_pretrained(CLIPTokenizer, - repo_id= repo_id, - dest= target_dir / 'clip-vit-large-patch14', - **kwargs) - self._migrate_pretrained(CLIPTextModel, - repo_id = repo_id, - dest = target_dir / 'clip-vit-large-patch14', - force = True, - **kwargs) + repo_id = "openai/clip-vit-large-patch14" + self._migrate_pretrained( + CLIPTokenizer, repo_id=repo_id, dest=target_dir / "clip-vit-large-patch14", **kwargs + ) + self._migrate_pretrained( + CLIPTextModel, repo_id=repo_id, dest=target_dir / "clip-vit-large-patch14", force=True, **kwargs + ) # sd-2 repo_id = "stabilityai/stable-diffusion-2" - self._migrate_pretrained(CLIPTokenizer, - repo_id = repo_id, - dest = target_dir / 'stable-diffusion-2-clip' / 'tokenizer', - **{'subfolder':'tokenizer',**kwargs} - ) - self._migrate_pretrained(CLIPTextModel, - repo_id = repo_id, - dest = target_dir / 'stable-diffusion-2-clip' / 'text_encoder', - **{'subfolder':'text_encoder',**kwargs} - ) + self._migrate_pretrained( + CLIPTokenizer, + repo_id=repo_id, + dest=target_dir / "stable-diffusion-2-clip" / "tokenizer", + **{"subfolder": "tokenizer", **kwargs}, + ) + self._migrate_pretrained( + CLIPTextModel, + repo_id=repo_id, + dest=target_dir / "stable-diffusion-2-clip" / "text_encoder", + **{"subfolder": "text_encoder", **kwargs}, + ) # VAE - logger.info('Migrating stable diffusion VAE') - self._migrate_pretrained(AutoencoderKL, - repo_id = 'stabilityai/sd-vae-ft-mse', - dest = target_dir / 'sd-vae-ft-mse', - **kwargs) - + logger.info("Migrating stable diffusion VAE") + self._migrate_pretrained( + AutoencoderKL, repo_id="stabilityai/sd-vae-ft-mse", dest=target_dir / "sd-vae-ft-mse", **kwargs + ) + # safety checking - logger.info('Migrating safety checker') + logger.info("Migrating safety checker") repo_id = "CompVis/stable-diffusion-safety-checker" - self._migrate_pretrained(AutoFeatureExtractor, - repo_id = repo_id, - dest = target_dir / 'stable-diffusion-safety-checker', - **kwargs) - self._migrate_pretrained(StableDiffusionSafetyChecker, - repo_id = repo_id, - dest = target_dir / 'stable-diffusion-safety-checker', - **kwargs) + self._migrate_pretrained( + AutoFeatureExtractor, repo_id=repo_id, dest=target_dir / "stable-diffusion-safety-checker", **kwargs + ) + self._migrate_pretrained( + StableDiffusionSafetyChecker, + repo_id=repo_id, + dest=target_dir / "stable-diffusion-safety-checker", + **kwargs, + ) except KeyboardInterrupt: raise except Exception as e: logger.error(str(e)) - def _model_probe_to_path(self, info: ModelProbeInfo)->Path: + def _model_probe_to_path(self, info: ModelProbeInfo) -> Path: return Path(self.dest_models, info.base_type.value, info.model_type.value) - def _migrate_pretrained(self, model_class, repo_id: str, dest: Path, force:bool=False, **kwargs): + def _migrate_pretrained(self, model_class, repo_id: str, dest: Path, force: bool = False, **kwargs): if dest.exists() and not force: - logger.info(f'Skipping existing {dest}') + logger.info(f"Skipping existing {dest}") return model = model_class.from_pretrained(repo_id, **kwargs) self._save_pretrained(model, dest, overwrite=force) - def _save_pretrained(self, model, dest: Path, overwrite: bool=False): + def _save_pretrained(self, model, dest: Path, overwrite: bool = False): model_name = dest.name if overwrite: model.save_pretrained(dest, safe_serialization=True) else: - download_path = dest.with_name(f'{model_name}.downloading') + download_path = dest.with_name(f"{model_name}.downloading") model.save_pretrained(download_path, safe_serialization=True) download_path.replace(dest) - def _download_vae(self, repo_id: str, subfolder:str=None)->Path: - vae = AutoencoderKL.from_pretrained(repo_id, cache_dir=self.root_directory / 'models/hub', subfolder=subfolder) + def _download_vae(self, repo_id: str, subfolder: str = None) -> Path: + vae = AutoencoderKL.from_pretrained(repo_id, cache_dir=self.root_directory / "models/hub", subfolder=subfolder) info = ModelProbe().heuristic_probe(vae) - _, model_name = repo_id.split('/') + _, model_name = repo_id.split("/") dest = self._model_probe_to_path(info) / self.unique_name(model_name, info) vae.save_pretrained(dest, safe_serialization=True) return dest - def _vae_path(self, vae: Union[str,dict])->Path: - ''' + def _vae_path(self, vae: Union[str, dict]) -> Path: + """ Convert 2.3 VAE stanza to a straight path. - ''' + """ vae_path = None - + # First get a path - if isinstance(vae,str): + if isinstance(vae, str): vae_path = vae - elif isinstance(vae,DictConfig): - if p := vae.get('path'): + elif isinstance(vae, DictConfig): + if p := vae.get("path"): vae_path = p - elif repo_id := vae.get('repo_id'): - if repo_id=='stabilityai/sd-vae-ft-mse': # this guy is already downloaded - vae_path = 'models/core/convert/sd-vae-ft-mse' + elif repo_id := vae.get("repo_id"): + if repo_id == "stabilityai/sd-vae-ft-mse": # this guy is already downloaded + vae_path = "models/core/convert/sd-vae-ft-mse" return vae_path else: - vae_path = self._download_vae(repo_id, vae.get('subfolder')) + vae_path = self._download_vae(repo_id, vae.get("subfolder")) assert vae_path is not None, "Couldn't find VAE for this model" @@ -307,152 +305,144 @@ class MigrateTo3(object): dest = self._model_probe_to_path(info) / vae_path.name if not dest.exists(): if vae_path.is_dir(): - self.copy_dir(vae_path,dest) + self.copy_dir(vae_path, dest) else: - self.copy_file(vae_path,dest) + self.copy_file(vae_path, dest) vae_path = dest if vae_path.is_relative_to(self.dest_models): rel_path = vae_path.relative_to(self.dest_models) - return Path('models',rel_path) + return Path("models", rel_path) else: return vae_path - def migrate_repo_id(self, repo_id: str, model_name: str=None, **extra_config): - ''' + def migrate_repo_id(self, repo_id: str, model_name: str = None, **extra_config): + """ Migrate a locally-cached diffusers pipeline identified with a repo_id - ''' + """ dest_dir = self.dest_models - - cache = self.root_directory / 'models/hub' + + cache = self.root_directory / "models/hub" kwargs = dict( - cache_dir = cache, - safety_checker = None, + cache_dir=cache, + safety_checker=None, # local_files_only = True, ) - owner,repo_name = repo_id.split('/') + owner, repo_name = repo_id.split("/") model_name = model_name or repo_name - model = cache / '--'.join(['models',owner,repo_name]) - - if len(list(model.glob('snapshots/**/model_index.json')))==0: + model = cache / "--".join(["models", owner, repo_name]) + + if len(list(model.glob("snapshots/**/model_index.json"))) == 0: return - revisions = [x.name for x in model.glob('refs/*')] + revisions = [x.name for x in model.glob("refs/*")] # if an fp16 is available we use that - revision = 'fp16' if len(revisions) > 1 and 'fp16' in revisions else revisions[0] - pipeline = StableDiffusionPipeline.from_pretrained( - repo_id, - revision=revision, - **kwargs) + revision = "fp16" if len(revisions) > 1 and "fp16" in revisions else revisions[0] + pipeline = StableDiffusionPipeline.from_pretrained(repo_id, revision=revision, **kwargs) info = ModelProbe().heuristic_probe(pipeline) if not info: return if self.mgr.model_exists(model_name, info.base_type, info.model_type): - logger.warning(f'A model named {model_name} already exists at the destination. Skipping migration.') + logger.warning(f"A model named {model_name} already exists at the destination. Skipping migration.") return dest = self._model_probe_to_path(info) / model_name self._save_pretrained(pipeline, dest) - - rel_path = Path('models',dest.relative_to(dest_dir)) + + rel_path = Path("models", dest.relative_to(dest_dir)) self._add_model(model_name, info, rel_path, **extra_config) - def migrate_path(self, location: Path, model_name: str=None, **extra_config): - ''' + def migrate_path(self, location: Path, model_name: str = None, **extra_config): + """ Migrate a model referred to using 'weights' or 'path' - ''' + """ # handle relative paths dest_dir = self.dest_models location = self.root_directory / location model_name = model_name or location.stem - + info = ModelProbe().heuristic_probe(location) if not info: return - + if self.mgr.model_exists(model_name, info.base_type, info.model_type): - logger.warning(f'A model named {model_name} already exists at the destination. Skipping migration.') + logger.warning(f"A model named {model_name} already exists at the destination. Skipping migration.") return # uh oh, weights is in the old models directory - move it into the new one if Path(location).is_relative_to(self.src_paths.models): dest = Path(dest_dir, info.base_type.value, info.model_type.value, location.name) if location.is_dir(): - self.copy_dir(location,dest) + self.copy_dir(location, dest) else: - self.copy_file(location,dest) - location = Path('models', info.base_type.value, info.model_type.value, location.name) + self.copy_file(location, dest) + location = Path("models", info.base_type.value, info.model_type.value, location.name) self._add_model(model_name, info, location, **extra_config) - def _add_model(self, - model_name: str, - info: ModelProbeInfo, - location: Path, - **extra_config): + def _add_model(self, model_name: str, info: ModelProbeInfo, location: Path, **extra_config): if info.model_type != ModelType.Main: return - - self.mgr.add_model( - model_name = model_name, - base_model = info.base_type, - model_type = info.model_type, - clobber = True, - model_attributes = { - 'path': str(location), - 'description': f'A {info.base_type.value} {info.model_type.value} model', - 'model_format': info.format, - 'variant': info.variant_type.value, - **extra_config, - } - ) - - def migrate_defined_models(self): - ''' - Migrate models defined in models.yaml - ''' - # find any models referred to in old models.yaml - conf = OmegaConf.load(self.root_directory / 'configs/models.yaml') - - for model_name, stanza in conf.items(): + self.mgr.add_model( + model_name=model_name, + base_model=info.base_type, + model_type=info.model_type, + clobber=True, + model_attributes={ + "path": str(location), + "description": f"A {info.base_type.value} {info.model_type.value} model", + "model_format": info.format, + "variant": info.variant_type.value, + **extra_config, + }, + ) + + def migrate_defined_models(self): + """ + Migrate models defined in models.yaml + """ + # find any models referred to in old models.yaml + conf = OmegaConf.load(self.root_directory / "configs/models.yaml") + + for model_name, stanza in conf.items(): try: passthru_args = {} - - if vae := stanza.get('vae'): + + if vae := stanza.get("vae"): try: - passthru_args['vae'] = str(self._vae_path(vae)) + passthru_args["vae"] = str(self._vae_path(vae)) except Exception as e: logger.warning(f'Could not find a VAE matching "{vae}" for model "{model_name}"') logger.warning(str(e)) - if config := stanza.get('config'): - passthru_args['config'] = config + if config := stanza.get("config"): + passthru_args["config"] = config - if description:= stanza.get('description'): - passthru_args['description'] = description - - if repo_id := stanza.get('repo_id'): - logger.info(f'Migrating diffusers model {model_name}') + if description := stanza.get("description"): + passthru_args["description"] = description + + if repo_id := stanza.get("repo_id"): + logger.info(f"Migrating diffusers model {model_name}") self.migrate_repo_id(repo_id, model_name, **passthru_args) - elif location := stanza.get('weights'): - logger.info(f'Migrating checkpoint model {model_name}') + elif location := stanza.get("weights"): + logger.info(f"Migrating checkpoint model {model_name}") self.migrate_path(Path(location), model_name, **passthru_args) - - elif location := stanza.get('path'): - logger.info(f'Migrating diffusers model {model_name}') + + elif location := stanza.get("path"): + logger.info(f"Migrating diffusers model {model_name}") self.migrate_path(Path(location), model_name, **passthru_args) - + except KeyboardInterrupt: raise except Exception as e: logger.error(str(e)) - + def migrate(self): self.create_directory_structure() # the configure script is doing this @@ -461,67 +451,71 @@ class MigrateTo3(object): self.migrate_tuning_models() self.migrate_defined_models() -def _parse_legacy_initfile(root: Path, initfile: Path)->ModelPaths: - ''' + +def _parse_legacy_initfile(root: Path, initfile: Path) -> ModelPaths: + """ Returns tuple of (embedding_path, lora_path, controlnet_path) - ''' - parser = argparse.ArgumentParser(fromfile_prefix_chars='@') + """ + parser = argparse.ArgumentParser(fromfile_prefix_chars="@") parser.add_argument( - '--embedding_directory', - '--embedding_path', + "--embedding_directory", + "--embedding_path", type=Path, - dest='embedding_path', - default=Path('embeddings'), + dest="embedding_path", + default=Path("embeddings"), ) parser.add_argument( - '--lora_directory', - dest='lora_path', + "--lora_directory", + dest="lora_path", type=Path, - default=Path('loras'), + default=Path("loras"), ) - opt,_ = parser.parse_known_args([f'@{str(initfile)}']) + opt, _ = parser.parse_known_args([f"@{str(initfile)}"]) return ModelPaths( - models = root / 'models', - embeddings = root / str(opt.embedding_path).strip('"'), - loras = root / str(opt.lora_path).strip('"'), - controlnets = root / 'controlnets', + models=root / "models", + embeddings=root / str(opt.embedding_path).strip('"'), + loras=root / str(opt.lora_path).strip('"'), + controlnets=root / "controlnets", ) -def _parse_legacy_yamlfile(root: Path, initfile: Path)->ModelPaths: - ''' + +def _parse_legacy_yamlfile(root: Path, initfile: Path) -> ModelPaths: + """ Returns tuple of (embedding_path, lora_path, controlnet_path) - ''' + """ # Don't use the config object because it is unforgiving of version updates # Just use omegaconf directly opt = OmegaConf.load(initfile) paths = opt.InvokeAI.Paths - models = paths.get('models_dir','models') - embeddings = paths.get('embedding_dir','embeddings') - loras = paths.get('lora_dir','loras') - controlnets = paths.get('controlnet_dir','controlnets') + models = paths.get("models_dir", "models") + embeddings = paths.get("embedding_dir", "embeddings") + loras = paths.get("lora_dir", "loras") + controlnets = paths.get("controlnet_dir", "controlnets") return ModelPaths( - models = root / models, - embeddings = root / embeddings, - loras = root /loras, - controlnets = root / controlnets, + models=root / models, + embeddings=root / embeddings, + loras=root / loras, + controlnets=root / controlnets, ) - + + def get_legacy_embeddings(root: Path) -> ModelPaths: - path = root / 'invokeai.init' + path = root / "invokeai.init" if path.exists(): return _parse_legacy_initfile(root, path) - path = root / 'invokeai.yaml' + path = root / "invokeai.yaml" if path.exists(): return _parse_legacy_yamlfile(root, path) + def do_migrate(src_directory: Path, dest_directory: Path): """ Migrate models from src to dest InvokeAI root directories """ - config_file = dest_directory / 'configs' / 'models.yaml.3' - dest_models = dest_directory / 'models.3' - - version_3 = (dest_directory / 'models' / 'core').exists() + config_file = dest_directory / "configs" / "models.yaml.3" + dest_models = dest_directory / "models.3" + + version_3 = (dest_directory / "models" / "core").exists() # Here we create the destination models.yaml file. # If we are writing into a version 3 directory and the @@ -530,80 +524,80 @@ def do_migrate(src_directory: Path, dest_directory: Path): # create a new empty one. if version_3: # write into the dest directory try: - shutil.copy(dest_directory / 'configs' / 'models.yaml', config_file) + shutil.copy(dest_directory / "configs" / "models.yaml", config_file) except: MigrateTo3.initialize_yaml(config_file) - mgr = ModelManager(config_file) # important to initialize BEFORE moving the models directory - (dest_directory / 'models').replace(dest_models) + mgr = ModelManager(config_file) # important to initialize BEFORE moving the models directory + (dest_directory / "models").replace(dest_models) else: MigrateTo3.initialize_yaml(config_file) mgr = ModelManager(config_file) - + paths = get_legacy_embeddings(src_directory) - migrator = MigrateTo3( - from_root = src_directory, - to_models = dest_models, - model_manager = mgr, - src_paths = paths - ) + migrator = MigrateTo3(from_root=src_directory, to_models=dest_models, model_manager=mgr, src_paths=paths) migrator.migrate() print("Migration successful.") if not version_3: - (dest_directory / 'models').replace(src_directory / 'models.orig') - print(f'Original models directory moved to {dest_directory}/models.orig') - - (dest_directory / 'configs' / 'models.yaml').replace(src_directory / 'configs' / 'models.yaml.orig') - print(f'Original models.yaml file moved to {dest_directory}/configs/models.yaml.orig') - - config_file.replace(config_file.with_suffix('')) - dest_models.replace(dest_models.with_suffix('')) - + (dest_directory / "models").replace(src_directory / "models.orig") + print(f"Original models directory moved to {dest_directory}/models.orig") + + (dest_directory / "configs" / "models.yaml").replace(src_directory / "configs" / "models.yaml.orig") + print(f"Original models.yaml file moved to {dest_directory}/configs/models.yaml.orig") + + config_file.replace(config_file.with_suffix("")) + dest_models.replace(dest_models.with_suffix("")) + + def main(): - parser = argparse.ArgumentParser(prog="invokeai-migrate3", - description=""" + parser = argparse.ArgumentParser( + prog="invokeai-migrate3", + description=""" This will copy and convert the models directory and the configs/models.yaml from the InvokeAI 2.3 format '--from-directory' root to the InvokeAI 3.0 '--to-directory' root. These may be abbreviated '--from' and '--to'.a The old models directory and config file will be renamed 'models.orig' and 'models.yaml.orig' respectively. It is safe to provide the same directory for both arguments, but it is better to use the invokeai_configure -script, which will perform a full upgrade in place.""" - ) - parser.add_argument('--from-directory', - dest='src_root', - type=Path, - required=True, - help='Source InvokeAI 2.3 root directory (containing "invokeai.init" or "invokeai.yaml")' - ) - parser.add_argument('--to-directory', - dest='dest_root', - type=Path, - required=True, - help='Destination InvokeAI 3.0 directory (containing "invokeai.yaml")' - ) +script, which will perform a full upgrade in place.""", + ) + parser.add_argument( + "--from-directory", + dest="src_root", + type=Path, + required=True, + help='Source InvokeAI 2.3 root directory (containing "invokeai.init" or "invokeai.yaml")', + ) + parser.add_argument( + "--to-directory", + dest="dest_root", + type=Path, + required=True, + help='Destination InvokeAI 3.0 directory (containing "invokeai.yaml")', + ) args = parser.parse_args() src_root = args.src_root assert src_root.is_dir(), f"{src_root} is not a valid directory" - assert (src_root / 'models').is_dir(), f"{src_root} does not contain a 'models' subdirectory" - assert (src_root / 'models' / 'hub').exists(), f"{src_root} does not contain a version 2.3 models directory" - assert (src_root / 'invokeai.init').exists() or (src_root / 'invokeai.yaml').exists(), f"{src_root} does not contain an InvokeAI init file." + assert (src_root / "models").is_dir(), f"{src_root} does not contain a 'models' subdirectory" + assert (src_root / "models" / "hub").exists(), f"{src_root} does not contain a version 2.3 models directory" + assert (src_root / "invokeai.init").exists() or ( + src_root / "invokeai.yaml" + ).exists(), f"{src_root} does not contain an InvokeAI init file." dest_root = args.dest_root assert dest_root.is_dir(), f"{dest_root} is not a valid directory" config = InvokeAIAppConfig.get_config() - config.parse_args(['--root',str(dest_root)]) + config.parse_args(["--root", str(dest_root)]) # TODO: revisit - don't rely on invokeai.yaml to exist yet! - dest_is_setup = (dest_root / 'models/core').exists() and (dest_root / 'databases').exists() + dest_is_setup = (dest_root / "models/core").exists() and (dest_root / "databases").exists() if not dest_is_setup: import invokeai.frontend.install.invokeai_configure from invokeai.backend.install.invokeai_configure import initialize_rootdir + initialize_rootdir(dest_root, True) - do_migrate(src_root,dest_root) + do_migrate(src_root, dest_root) -if __name__ == '__main__': + +if __name__ == "__main__": main() - - - diff --git a/invokeai/backend/install/model_install_backend.py b/invokeai/backend/install/model_install_backend.py index 0537d6069a..b3ab88b5dd 100644 --- a/invokeai/backend/install/model_install_backend.py +++ b/invokeai/backend/install/model_install_backend.py @@ -4,7 +4,7 @@ Utility (backend) functions used by model_install.py import os import shutil import warnings -from dataclasses import dataclass,field +from dataclasses import dataclass, field from pathlib import Path from tempfile import TemporaryDirectory from typing import List, Dict, Callable, Union, Set @@ -28,7 +28,7 @@ warnings.filterwarnings("ignore") # --------------------------globals----------------------- config = InvokeAIAppConfig.get_config() -logger = InvokeAILogger.getLogger(name='InvokeAI') +logger = InvokeAILogger.getLogger(name="InvokeAI") # the initial "configs" dir is now bundled in the `invokeai.configs` package Dataset_path = Path(configs.__path__[0]) / "INITIAL_MODELS.yaml" @@ -45,51 +45,63 @@ Config_preamble = """ LEGACY_CONFIGS = { BaseModelType.StableDiffusion1: { - ModelVariantType.Normal: 'v1-inference.yaml', - ModelVariantType.Inpaint: 'v1-inpainting-inference.yaml', + ModelVariantType.Normal: "v1-inference.yaml", + ModelVariantType.Inpaint: "v1-inpainting-inference.yaml", }, - BaseModelType.StableDiffusion2: { ModelVariantType.Normal: { - SchedulerPredictionType.Epsilon: 'v2-inference.yaml', - SchedulerPredictionType.VPrediction: 'v2-inference-v.yaml', + SchedulerPredictionType.Epsilon: "v2-inference.yaml", + SchedulerPredictionType.VPrediction: "v2-inference-v.yaml", }, ModelVariantType.Inpaint: { - SchedulerPredictionType.Epsilon: 'v2-inpainting-inference.yaml', - SchedulerPredictionType.VPrediction: 'v2-inpainting-inference-v.yaml', - } - } + SchedulerPredictionType.Epsilon: "v2-inpainting-inference.yaml", + SchedulerPredictionType.VPrediction: "v2-inpainting-inference-v.yaml", + }, + }, + BaseModelType.StableDiffusionXL: { + ModelVariantType.Normal: "sd_xl_base.yaml", + }, + BaseModelType.StableDiffusionXLRefiner: { + ModelVariantType.Normal: "sd_xl_refiner.yaml", + }, } + @dataclass class ModelInstallList: - '''Class for listing models to be installed/removed''' + """Class for listing models to be installed/removed""" + install_models: List[str] = field(default_factory=list) remove_models: List[str] = field(default_factory=list) -@dataclass -class InstallSelections(): - install_models: List[str]= field(default_factory=list) - remove_models: List[str]=field(default_factory=list) @dataclass -class ModelLoadInfo(): +class InstallSelections: + install_models: List[str] = field(default_factory=list) + remove_models: List[str] = field(default_factory=list) + + +@dataclass +class ModelLoadInfo: name: str model_type: ModelType base_type: BaseModelType path: Path = None repo_id: str = None - description: str = '' + description: str = "" installed: bool = False recommended: bool = False default: bool = False + class ModelInstall(object): - def __init__(self, - config:InvokeAIAppConfig, - prediction_type_helper: Callable[[Path],SchedulerPredictionType]=None, - model_manager: ModelManager = None, - access_token:str = None): + def __init__( + self, + config: InvokeAIAppConfig, + prediction_type_helper: Callable[[Path], SchedulerPredictionType] = None, + model_manager: ModelManager = None, + access_token: str = None, + ): self.config = config self.mgr = model_manager or ModelManager(config.model_conf_path) self.datasets = OmegaConf.load(Dataset_path) @@ -97,65 +109,66 @@ class ModelInstall(object): self.access_token = access_token or HfFolder.get_token() self.reverse_paths = self._reverse_paths(self.datasets) - def all_models(self)->Dict[str,ModelLoadInfo]: - ''' + def all_models(self) -> Dict[str, ModelLoadInfo]: + """ Return dict of model_key=>ModelLoadInfo objects. This method consolidates and simplifies the entries in both models.yaml and INITIAL_MODELS.yaml so that they can be treated uniformly. It also sorts the models alphabetically by their name, to improve the display somewhat. - ''' + """ model_dict = dict() - + # first populate with the entries in INITIAL_MODELS.yaml for key, value in self.datasets.items(): - name,base,model_type = ModelManager.parse_key(key) - value['name'] = name - value['base_type'] = base - value['model_type'] = model_type + name, base, model_type = ModelManager.parse_key(key) + value["name"] = name + value["base_type"] = base + value["model_type"] = model_type model_dict[key] = ModelLoadInfo(**value) # supplement with entries in models.yaml installed_models = self.mgr.list_models() - + for md in installed_models: - base = md['base_model'] - model_type = md['model_type'] - name = md['model_name'] + base = md["base_model"] + model_type = md["model_type"] + name = md["model_name"] key = ModelManager.create_key(name, base, model_type) if key in model_dict: model_dict[key].installed = True else: model_dict[key] = ModelLoadInfo( - name = name, - base_type = base, - model_type = model_type, - path = value.get('path'), - installed = True, + name=name, + base_type=base, + model_type=model_type, + path=value.get("path"), + installed=True, ) - return {x : model_dict[x] for x in sorted(model_dict.keys(),key=lambda y: model_dict[y].name.lower())} + return {x: model_dict[x] for x in sorted(model_dict.keys(), key=lambda y: model_dict[y].name.lower())} def list_models(self, model_type): installed = self.mgr.list_models(model_type=model_type) - print(f'Installed models of type `{model_type}`:') + print(f"Installed models of type `{model_type}`:") for i in installed: print(f"{i['model_name']}\t{i['base_model']}\t{i['path']}") - def starter_models(self)->Set[str]: + # logic here a little reversed to maintain backward compatibility + def starter_models(self, all_models: bool = False) -> Set[str]: models = set() for key, value in self.datasets.items(): - name,base,model_type = ModelManager.parse_key(key) - if model_type==ModelType.Main: + name, base, model_type = ModelManager.parse_key(key) + if all_models or model_type in [ModelType.Main, ModelType.Vae]: models.add(key) return models - def recommended_models(self)->Set[str]: + def recommended_models(self) -> Set[str]: + starters = self.starter_models(all_models=True) + return set([x for x in starters if self.datasets[x].get("recommended", False)]) + + def default_model(self) -> str: starters = self.starter_models() - return set([x for x in starters if self.datasets[x].get('recommended',False)]) - - def default_model(self)->str: - starters = self.starter_models() - defaults = [x for x in starters if self.datasets[x].get('default',False)] + defaults = [x for x in starters if self.datasets[x].get("default", False)] return defaults[0] def install(self, selections: InstallSelections): @@ -164,54 +177,57 @@ class ModelInstall(object): job = 1 jobs = len(selections.remove_models) + len(selections.install_models) - + # remove requested models for key in selections.remove_models: - name,base,mtype = self.mgr.parse_key(key) - logger.info(f'Deleting {mtype} model {name} [{job}/{jobs}]') + name, base, mtype = self.mgr.parse_key(key) + logger.info(f"Deleting {mtype} model {name} [{job}/{jobs}]") try: - self.mgr.del_model(name,base,mtype) + self.mgr.del_model(name, base, mtype) except FileNotFoundError as e: logger.warning(e) job += 1 - + # add requested models for path in selections.install_models: - logger.info(f'Installing {path} [{job}/{jobs}]') + logger.info(f"Installing {path} [{job}/{jobs}]") try: self.heuristic_import(path) except (ValueError, KeyError) as e: logger.error(str(e)) job += 1 - + dlogging.set_verbosity(verbosity) self.mgr.commit() - def heuristic_import(self, - model_path_id_or_url: Union[str,Path], - models_installed: Set[Path]=None, - )->Dict[str, AddModelResult]: - ''' + def heuristic_import( + self, + model_path_id_or_url: Union[str, Path], + models_installed: Set[Path] = None, + ) -> Dict[str, AddModelResult]: + """ :param model_path_id_or_url: A Path to a local model to import, or a string representing its repo_id or URL :param models_installed: Set of installed models, used for recursive invocation Returns a set of dict objects corresponding to newly-created stanzas in models.yaml. - ''' + """ if not models_installed: models_installed = dict() - + # A little hack to allow nested routines to retrieve info on the requested ID self.current_id = model_path_id_or_url path = Path(model_path_id_or_url) # checkpoint file, or similar if path.is_file(): - models_installed.update({str(path):self._install_path(path)}) + models_installed.update({str(path): self._install_path(path)}) # folders style or similar - elif path.is_dir() and any([(path/x).exists() for x in \ - {'config.json','model_index.json','learned_embeds.bin','pytorch_lora_weights.bin'} - ] - ): + elif path.is_dir() and any( + [ + (path / x).exists() + for x in {"config.json", "model_index.json", "learned_embeds.bin", "pytorch_lora_weights.bin"} + ] + ): models_installed.update({str(model_path_id_or_url): self._install_path(path)}) # recursive scan @@ -220,7 +236,7 @@ class ModelInstall(object): self.heuristic_import(child, models_installed=models_installed) # huggingface repo - elif len(str(model_path_id_or_url).split('/')) == 2: + elif len(str(model_path_id_or_url).split("/")) == 2: models_installed.update({str(model_path_id_or_url): self._install_repo(str(model_path_id_or_url))}) # a URL @@ -228,42 +244,43 @@ class ModelInstall(object): models_installed.update({str(model_path_id_or_url): self._install_url(model_path_id_or_url)}) else: - raise KeyError(f'{str(model_path_id_or_url)} is not recognized as a local path, repo ID or URL. Skipping') + raise KeyError(f"{str(model_path_id_or_url)} is not recognized as a local path, repo ID or URL. Skipping") return models_installed # install a model from a local path. The optional info parameter is there to prevent # the model from being probed twice in the event that it has already been probed. - def _install_path(self, path: Path, info: ModelProbeInfo=None)->AddModelResult: - info = info or ModelProbe().heuristic_probe(path,self.prediction_helper) + def _install_path(self, path: Path, info: ModelProbeInfo = None) -> AddModelResult: + info = info or ModelProbe().heuristic_probe(path, self.prediction_helper) if not info: - logger.warning(f'Unable to parse format of {path}') + logger.warning(f"Unable to parse format of {path}") return None model_name = path.stem if path.is_file() else path.name if self.mgr.model_exists(model_name, info.base_type, info.model_type): raise ValueError(f'A model named "{model_name}" is already installed.') - attributes = self._make_attributes(path,info) - return self.mgr.add_model(model_name = model_name, - base_model = info.base_type, - model_type = info.model_type, - model_attributes = attributes, - ) + attributes = self._make_attributes(path, info) + return self.mgr.add_model( + model_name=model_name, + base_model=info.base_type, + model_type=info.model_type, + model_attributes=attributes, + ) - def _install_url(self, url: str)->AddModelResult: + def _install_url(self, url: str) -> AddModelResult: with TemporaryDirectory(dir=self.config.models_path) as staging: - location = download_with_resume(url,Path(staging)) + location = download_with_resume(url, Path(staging)) if not location: - logger.error(f'Unable to download {url}. Skipping.') + logger.error(f"Unable to download {url}. Skipping.") info = ModelProbe().heuristic_probe(location) dest = self.config.models_path / info.base_type.value / info.model_type.value / location.name - models_path = shutil.move(location,dest) + models_path = shutil.move(location, dest) # staged version will be garbage-collected at this time return self._install_path(Path(models_path), info) - def _install_repo(self, repo_id: str)->AddModelResult: + def _install_repo(self, repo_id: str) -> AddModelResult: hinfo = HfApi().model_info(repo_id) - + # we try to figure out how to download this most economically # list all the files in the repo files = [x.rfilename for x in hinfo.siblings] @@ -271,42 +288,49 @@ class ModelInstall(object): with TemporaryDirectory(dir=self.config.models_path) as staging: staging = Path(staging) - if 'model_index.json' in files: - location = self._download_hf_pipeline(repo_id, staging) # pipeline + if "model_index.json" in files: + location = self._download_hf_pipeline(repo_id, staging) # pipeline else: - for suffix in ['safetensors','bin']: - if f'pytorch_lora_weights.{suffix}' in files: - location = self._download_hf_model(repo_id, ['pytorch_lora_weights.bin'], staging) # LoRA + for suffix in ["safetensors", "bin"]: + if f"pytorch_lora_weights.{suffix}" in files: + location = self._download_hf_model(repo_id, ["pytorch_lora_weights.bin"], staging) # LoRA break - elif self.config.precision=='float16' and f'diffusion_pytorch_model.fp16.{suffix}' in files: # vae, controlnet or some other standalone - files = ['config.json', f'diffusion_pytorch_model.fp16.{suffix}'] + elif ( + self.config.precision == "float16" and f"diffusion_pytorch_model.fp16.{suffix}" in files + ): # vae, controlnet or some other standalone + files = ["config.json", f"diffusion_pytorch_model.fp16.{suffix}"] location = self._download_hf_model(repo_id, files, staging) break - elif f'diffusion_pytorch_model.{suffix}' in files: - files = ['config.json', f'diffusion_pytorch_model.{suffix}'] + elif f"diffusion_pytorch_model.{suffix}" in files: + files = ["config.json", f"diffusion_pytorch_model.{suffix}"] location = self._download_hf_model(repo_id, files, staging) break - elif f'learned_embeds.{suffix}' in files: - location = self._download_hf_model(repo_id, [f'learned_embeds.{suffix}'], staging) + elif f"learned_embeds.{suffix}" in files: + location = self._download_hf_model(repo_id, [f"learned_embeds.{suffix}"], staging) break if not location: - logger.warning(f'Could not determine type of repo {repo_id}. Skipping install.') + logger.warning(f"Could not determine type of repo {repo_id}. Skipping install.") return {} info = ModelProbe().heuristic_probe(location, self.prediction_helper) if not info: - logger.warning(f'Could not probe {location}. Skipping install.') + logger.warning(f"Could not probe {location}. Skipping install.") return {} - dest = self.config.models_path / info.base_type.value / info.model_type.value / self._get_model_name(repo_id,location) + dest = ( + self.config.models_path + / info.base_type.value + / info.model_type.value + / self._get_model_name(repo_id, location) + ) if dest.exists(): shutil.rmtree(dest) - shutil.copytree(location,dest) + shutil.copytree(location, dest) return self._install_path(dest, info) - def _get_model_name(self,path_name: str, location: Path)->str: - ''' + def _get_model_name(self, path_name: str, location: Path) -> str: + """ Calculate a name for the model - primitive implementation. - ''' + """ if key := self.reverse_paths.get(path_name): (name, base, mtype) = ModelManager.parse_key(key) return name @@ -315,92 +339,103 @@ class ModelInstall(object): else: return location.stem - def _make_attributes(self, path: Path, info: ModelProbeInfo)->dict: + def _make_attributes(self, path: Path, info: ModelProbeInfo) -> dict: model_name = path.name if path.is_dir() else path.stem - description = f'{info.base_type.value} {info.model_type.value} model {model_name}' + description = f"{info.base_type.value} {info.model_type.value} model {model_name}" if key := self.reverse_paths.get(self.current_id): if key in self.datasets: - description = self.datasets[key].get('description') or description + description = self.datasets[key].get("description") or description rel_path = self.relative_to_root(path) attributes = dict( - path = str(rel_path), - description = str(description), - model_format = info.format, - ) + path=str(rel_path), + description=str(description), + model_format=info.format, + ) + legacy_conf = None if info.model_type == ModelType.Main: - attributes.update(dict(variant = info.variant_type,)) - if info.format=="checkpoint": + attributes.update( + dict( + variant=info.variant_type, + ) + ) + if info.format == "checkpoint": try: - possible_conf = path.with_suffix('.yaml') + possible_conf = path.with_suffix(".yaml") if possible_conf.exists(): legacy_conf = str(self.relative_to_root(possible_conf)) elif info.base_type == BaseModelType.StableDiffusion2: - legacy_conf = Path(self.config.legacy_conf_dir, LEGACY_CONFIGS[info.base_type][info.variant_type][info.prediction_type]) + legacy_conf = Path( + self.config.legacy_conf_dir, + LEGACY_CONFIGS[info.base_type][info.variant_type][info.prediction_type], + ) else: - legacy_conf = Path(self.config.legacy_conf_dir, LEGACY_CONFIGS[info.base_type][info.variant_type]) + legacy_conf = Path( + self.config.legacy_conf_dir, LEGACY_CONFIGS[info.base_type][info.variant_type] + ) except KeyError: - legacy_conf = Path(self.config.legacy_conf_dir, 'v1-inference.yaml') # best guess - - attributes.update( - dict( - config = str(legacy_conf) - ) - ) + legacy_conf = Path(self.config.legacy_conf_dir, "v1-inference.yaml") # best guess + + if info.model_type == ModelType.ControlNet and info.format == "checkpoint": + possible_conf = path.with_suffix(".yaml") + if possible_conf.exists(): + legacy_conf = str(self.relative_to_root(possible_conf)) + + if legacy_conf: + attributes.update(dict(config=str(legacy_conf))) return attributes - def relative_to_root(self, path: Path)->Path: + def relative_to_root(self, path: Path) -> Path: root = self.config.root_path if path.is_relative_to(root): return path.relative_to(root) else: return path - def _download_hf_pipeline(self, repo_id: str, staging: Path)->Path: - ''' + def _download_hf_pipeline(self, repo_id: str, staging: Path) -> Path: + """ This retrieves a StableDiffusion model from cache or remote and then does a save_pretrained() to the indicated staging area. - ''' - _,name = repo_id.split("/") - revisions = ['fp16','main'] if self.config.precision=='float16' else ['main'] + """ + _, name = repo_id.split("/") + revisions = ["fp16", "main"] if self.config.precision == "float16" else ["main"] model = None for revision in revisions: try: - model = DiffusionPipeline.from_pretrained(repo_id,revision=revision,safety_checker=None) + model = DiffusionPipeline.from_pretrained(repo_id, revision=revision, safety_checker=None) except: # most errors are due to fp16 not being present. Fix this to catch other errors pass if model: break if not model: - logger.error(f'Diffusers model {repo_id} could not be downloaded. Skipping.') + logger.error(f"Diffusers model {repo_id} could not be downloaded. Skipping.") return None model.save_pretrained(staging / name, safe_serialization=True) return staging / name - def _download_hf_model(self, repo_id: str, files: List[str], staging: Path)->Path: - _,name = repo_id.split("/") + def _download_hf_model(self, repo_id: str, files: List[str], staging: Path) -> Path: + _, name = repo_id.split("/") location = staging / name paths = list() for filename in files: - p = hf_download_with_resume(repo_id, - model_dir=location, - model_name=filename, - access_token = self.access_token - ) + p = hf_download_with_resume( + repo_id, model_dir=location, model_name=filename, access_token=self.access_token + ) if p: paths.append(p) else: - logger.warning(f'Could not download {filename} from {repo_id}.') - - return location if len(paths)>0 else None + logger.warning(f"Could not download {filename} from {repo_id}.") + + return location if len(paths) > 0 else None @classmethod - def _reverse_paths(cls,datasets)->dict: - ''' + def _reverse_paths(cls, datasets) -> dict: + """ Reverse mapping from repo_id/path to destination name. - ''' - return {v.get('path') or v.get('repo_id') : k for k, v in datasets.items()} + """ + return {v.get("path") or v.get("repo_id"): k for k, v in datasets.items()} + # ------------------------------------- def yes_or_no(prompt: str, default_yes=True): @@ -411,13 +446,12 @@ def yes_or_no(prompt: str, default_yes=True): else: return response[0] in ("y", "Y") + # --------------------------------------------- -def hf_download_from_pretrained( - model_class: object, model_name: str, destination: Path, **kwargs -): - logger = InvokeAILogger.getLogger('InvokeAI') - logger.addFilter(lambda x: 'fp16 is not a valid' not in x.getMessage()) - +def hf_download_from_pretrained(model_class: object, model_name: str, destination: Path, **kwargs): + logger = InvokeAILogger.getLogger("InvokeAI") + logger.addFilter(lambda x: "fp16 is not a valid" not in x.getMessage()) + model = model_class.from_pretrained( model_name, resume_download=True, @@ -426,13 +460,14 @@ def hf_download_from_pretrained( model.save_pretrained(destination, safe_serialization=True) return destination + # --------------------------------------------- def hf_download_with_resume( - repo_id: str, - model_dir: str, - model_name: str, - model_dest: Path = None, - access_token: str = None, + repo_id: str, + model_dir: str, + model_name: str, + model_dest: Path = None, + access_token: str = None, ) -> Path: model_dest = model_dest or Path(os.path.join(model_dir, model_name)) os.makedirs(model_dir, exist_ok=True) @@ -451,9 +486,7 @@ def hf_download_with_resume( resp = requests.get(url, headers=header, stream=True) total = int(resp.headers.get("content-length", 0)) - if ( - resp.status_code == 416 - ): # "range not satisfiable", which means nothing to return + if resp.status_code == 416: # "range not satisfiable", which means nothing to return logger.info(f"{model_name}: complete file found. Skipping.") return model_dest elif resp.status_code == 404: @@ -482,5 +515,3 @@ def hf_download_with_resume( logger.error(f"An error occurred while downloading {model_name}: {str(e)}") return None return model_dest - - diff --git a/invokeai/backend/model_management/__init__.py b/invokeai/backend/model_management/__init__.py index 91180d4474..a277ecb29c 100644 --- a/invokeai/backend/model_management/__init__.py +++ b/invokeai/backend/model_management/__init__.py @@ -3,6 +3,12 @@ Initialization file for invokeai.backend.model_management """ from .model_manager import ModelManager, ModelInfo, AddModelResult, SchedulerPredictionType from .model_cache import ModelCache -from .models import BaseModelType, ModelType, SubModelType, ModelVariantType, ModelNotFoundException, DuplicateModelException +from .models import ( + BaseModelType, + ModelType, + SubModelType, + ModelVariantType, + ModelNotFoundException, + DuplicateModelException, +) from .model_merge import ModelMerger, MergeInterpolationMethod - diff --git a/invokeai/backend/model_management/convert_ckpt_to_diffusers.py b/invokeai/backend/model_management/convert_ckpt_to_diffusers.py index d9d4262e47..2c62b8b192 100644 --- a/invokeai/backend/model_management/convert_ckpt_to_diffusers.py +++ b/invokeai/backend/model_management/convert_ckpt_to_diffusers.py @@ -1,5 +1,5 @@ # coding=utf-8 -# Copyright 2022 The HuggingFace Inc. team. +# Copyright 2023 The HuggingFace Inc. team. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,23 +13,58 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Adapted for use as a module by Lincoln Stein -# Original file at: https://github.com/huggingface/diffusers/blob/main/scripts/convert_ldm_original_checkpoint_to_diffusers.py -""" Conversion script for the LDM checkpoints. """ +# Adapted for use in InvokeAI by Lincoln Stein, July 2023 +# +""" Conversion script for the Stable Diffusion checkpoints.""" import re -import warnings +from contextlib import nullcontext +from io import BytesIO +from typing import Optional, Union from pathlib import Path -from typing import Union -from packaging import version +import requests import torch -from safetensors.torch import load_file +from transformers import ( + AutoFeatureExtractor, + BertTokenizerFast, + CLIPImageProcessor, + CLIPTextConfig, + CLIPTextModel, + CLIPTextModelWithProjection, + CLIPTokenizer, + CLIPVisionConfig, + CLIPVisionModelWithProjection, +) -import invokeai.backend.util.logging as logger -from invokeai.app.services.config import InvokeAIAppConfig +from diffusers.models import ( + AutoencoderKL, + ControlNetModel, + PriorTransformer, + UNet2DConditionModel, +) +from diffusers.schedulers import ( + DDIMScheduler, + DDPMScheduler, + DPMSolverMultistepScheduler, + EulerAncestralDiscreteScheduler, + EulerDiscreteScheduler, + HeunDiscreteScheduler, + LMSDiscreteScheduler, + PNDMScheduler, + UnCLIPScheduler, +) +from diffusers.utils import is_accelerate_available, is_omegaconf_available, is_safetensors_available +from diffusers.utils.import_utils import BACKENDS_MAPPING +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 +from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker +from diffusers.pipelines.stable_diffusion.stable_unclip_image_normalizer import StableUnCLIPImageNormalizer + +from invokeai.backend.util.logging import InvokeAILogger +from invokeai.app.services.config import InvokeAIAppConfig, MODEL_CORE -from .model_manager import ModelManager from picklescan.scanner import scan_file_path from .models import BaseModelType, ModelVariantType @@ -41,43 +76,13 @@ except ImportError: "OmegaConf is required to convert the LDM checkpoints. Please install it with `pip install OmegaConf`." ) -from diffusers import ( - AutoencoderKL, - DDIMScheduler, - DPMSolverMultistepScheduler, - EulerAncestralDiscreteScheduler, - EulerDiscreteScheduler, - HeunDiscreteScheduler, - LDMTextToImagePipeline, - LMSDiscreteScheduler, - PNDMScheduler, - UniPCMultistepScheduler, - StableDiffusionPipeline, - UNet2DConditionModel, -) -from diffusers import logging as dlogging -from diffusers.pipelines.latent_diffusion.pipeline_latent_diffusion import ( - LDMBertConfig, - LDMBertModel, -) -from diffusers.pipelines.stable_diffusion.safety_checker import ( - StableDiffusionSafetyChecker, -) -from diffusers.utils import is_safetensors_available -import transformers -from transformers import ( - AutoFeatureExtractor, - BertTokenizerFast, - CLIPTextModel, - CLIPTokenizer, - CLIPVisionConfig, -) +if is_accelerate_available(): + from accelerate import init_empty_weights + from accelerate.utils import set_module_tensor_to_device -from ..stable_diffusion import StableDiffusionGeneratorPipeline +logger = InvokeAILogger.getLogger(__name__) +CONVERT_MODEL_ROOT = InvokeAIAppConfig.get_config().root_path / MODEL_CORE / "convert" -# TODO: redo in future -#CONVERT_MODEL_ROOT = InvokeAIAppConfig.get_config().models_path / "core" / "convert" -CONVERT_MODEL_ROOT = InvokeAIAppConfig.get_config().root_path / "models" / "core" / "convert" def shave_segments(path, n_shave_prefix_segments=1): """ @@ -104,9 +109,7 @@ def renew_resnet_paths(old_list, n_shave_prefix_segments=0): new_item = new_item.replace("emb_layers.1", "time_emb_proj") new_item = new_item.replace("skip_connection", "conv_shortcut") - new_item = shave_segments( - new_item, n_shave_prefix_segments=n_shave_prefix_segments - ) + new_item = shave_segments(new_item, n_shave_prefix_segments=n_shave_prefix_segments) mapping.append({"old": old_item, "new": new_item}) @@ -122,9 +125,7 @@ def renew_vae_resnet_paths(old_list, n_shave_prefix_segments=0): new_item = old_item new_item = new_item.replace("nin_shortcut", "conv_shortcut") - new_item = shave_segments( - new_item, n_shave_prefix_segments=n_shave_prefix_segments - ) + new_item = shave_segments(new_item, n_shave_prefix_segments=n_shave_prefix_segments) mapping.append({"old": old_item, "new": new_item}) @@ -175,9 +176,7 @@ def renew_vae_attention_paths(old_list, n_shave_prefix_segments=0): new_item = new_item.replace("proj_out.weight", "to_out.0.weight") new_item = new_item.replace("proj_out.bias", "to_out.0.bias") - new_item = shave_segments( - new_item, n_shave_prefix_segments=n_shave_prefix_segments - ) + new_item = shave_segments(new_item, n_shave_prefix_segments=n_shave_prefix_segments) mapping.append({"old": old_item, "new": new_item}) @@ -185,26 +184,40 @@ def renew_vae_attention_paths(old_list, n_shave_prefix_segments=0): def assign_to_checkpoint( - paths, - checkpoint, - old_checkpoint, - additional_replacements=None, - config=None, + paths, checkpoint, old_checkpoint, attention_paths_to_split=None, additional_replacements=None, config=None ): """ - This does the final conversion step: take locally converted weights and apply a global renaming - to them. It splits attention layers, and takes into account additional replacements - that may arise. + This does the final conversion step: take locally converted weights and apply a global renaming to them. It splits + attention layers, and takes into account additional replacements that may arise. Assigns the weights to the new checkpoint. """ - assert isinstance( - paths, list - ), "Paths should be a list of dicts containing 'old' and 'new' keys." + assert isinstance(paths, list), "Paths should be a list of dicts containing 'old' and 'new' keys." + + # Splits the attention layers into three variables. + if attention_paths_to_split is not None: + for path, path_map in attention_paths_to_split.items(): + old_tensor = old_checkpoint[path] + channels = old_tensor.shape[0] // 3 + + target_shape = (-1, channels) if len(old_tensor.shape) == 3 else (-1) + + num_heads = old_tensor.shape[0] // config["num_head_channels"] // 3 + + old_tensor = old_tensor.reshape((num_heads, 3 * channels // num_heads) + old_tensor.shape[1:]) + query, key, value = old_tensor.split(channels // num_heads, dim=1) + + checkpoint[path_map["query"]] = query.reshape(target_shape) + checkpoint[path_map["key"]] = key.reshape(target_shape) + checkpoint[path_map["value"]] = value.reshape(target_shape) for path in paths: new_path = path["new"] + # These have already been assigned + if attention_paths_to_split is not None and new_path in attention_paths_to_split: + continue + # Global renaming happens here new_path = new_path.replace("middle_block.0", "mid_block.resnets.0") new_path = new_path.replace("middle_block.1", "mid_block.attentions.0") @@ -215,82 +228,124 @@ def assign_to_checkpoint( new_path = new_path.replace(replacement["old"], replacement["new"]) # proj_attn.weight has to be converted from conv 1D to linear - if "proj_attn.weight" in new_path: + is_attn_weight = "proj_attn.weight" in new_path or ("attentions" in new_path and "to_" in new_path) + shape = old_checkpoint[path["old"]].shape + if is_attn_weight and len(shape) == 3: checkpoint[new_path] = old_checkpoint[path["old"]][:, :, 0] + elif is_attn_weight and len(shape) == 4: + checkpoint[new_path] = old_checkpoint[path["old"]][:, :, 0, 0] else: checkpoint[new_path] = old_checkpoint[path["old"]] def conv_attn_to_linear(checkpoint): keys = list(checkpoint.keys()) - attn_keys = ["to_q.weight", "to_k.weight", "to_v.weight"] + attn_keys = ["query.weight", "key.weight", "value.weight"] for key in keys: if ".".join(key.split(".")[-2:]) in attn_keys: if checkpoint[key].ndim > 2: checkpoint[key] = checkpoint[key][:, :, 0, 0] - elif "to_out.0.weight" in key: + elif "proj_attn.weight" in key: if checkpoint[key].ndim > 2: - checkpoint[key] = checkpoint[key][:, :, 0, 0] + checkpoint[key] = checkpoint[key][:, :, 0] -def create_unet_diffusers_config(original_config, image_size: int): +def create_unet_diffusers_config(original_config, image_size: int, controlnet=False): """ Creates a config for the diffusers based on the config of the LDM model. """ - unet_params = original_config.model.params.unet_config.params + if controlnet: + unet_params = original_config.model.params.control_stage_config.params + else: + if "unet_config" in original_config.model.params and original_config.model.params.unet_config is not None: + unet_params = original_config.model.params.unet_config.params + else: + unet_params = original_config.model.params.network_config.params + vae_params = original_config.model.params.first_stage_config.params.ddconfig - block_out_channels = [ - unet_params.model_channels * mult for mult in unet_params.channel_mult - ] + block_out_channels = [unet_params.model_channels * mult for mult in unet_params.channel_mult] down_block_types = [] resolution = 1 for i in range(len(block_out_channels)): - block_type = ( - "CrossAttnDownBlock2D" - if resolution in unet_params.attention_resolutions - else "DownBlock2D" - ) + block_type = "CrossAttnDownBlock2D" if resolution in unet_params.attention_resolutions else "DownBlock2D" down_block_types.append(block_type) if i != len(block_out_channels) - 1: resolution *= 2 up_block_types = [] for i in range(len(block_out_channels)): - block_type = ( - "CrossAttnUpBlock2D" - if resolution in unet_params.attention_resolutions - else "UpBlock2D" - ) + block_type = "CrossAttnUpBlock2D" if resolution in unet_params.attention_resolutions else "UpBlock2D" up_block_types.append(block_type) resolution //= 2 + if unet_params.transformer_depth is not None: + transformer_layers_per_block = ( + unet_params.transformer_depth + if isinstance(unet_params.transformer_depth, int) + else list(unet_params.transformer_depth) + ) + else: + transformer_layers_per_block = 1 + vae_scale_factor = 2 ** (len(vae_params.ch_mult) - 1) head_dim = unet_params.num_heads if "num_heads" in unet_params else None use_linear_projection = ( - unet_params.use_linear_in_transformer - if "use_linear_in_transformer" in unet_params - else False + unet_params.use_linear_in_transformer if "use_linear_in_transformer" in unet_params else False ) if use_linear_projection: # stable diffusion 2-base-512 and 2-768 if head_dim is None: - head_dim = [5, 10, 20, 20] + head_dim_mult = unet_params.model_channels // unet_params.num_head_channels + head_dim = [head_dim_mult * c for c in list(unet_params.channel_mult)] - config = dict( - sample_size=image_size // vae_scale_factor, - in_channels=unet_params.in_channels, - out_channels=unet_params.out_channels, - down_block_types=tuple(down_block_types), - up_block_types=tuple(up_block_types), - block_out_channels=tuple(block_out_channels), - layers_per_block=unet_params.num_res_blocks, - cross_attention_dim=unet_params.context_dim, - attention_head_dim=head_dim, - use_linear_projection=use_linear_projection, - ) + class_embed_type = None + addition_embed_type = None + addition_time_embed_dim = None + projection_class_embeddings_input_dim = None + context_dim = None + + if unet_params.context_dim is not None: + context_dim = ( + unet_params.context_dim if isinstance(unet_params.context_dim, int) else unet_params.context_dim[0] + ) + + if "num_classes" in unet_params: + if unet_params.num_classes == "sequential": + if context_dim in [2048, 1280]: + # SDXL + addition_embed_type = "text_time" + addition_time_embed_dim = 256 + else: + class_embed_type = "projection" + assert "adm_in_channels" in unet_params + projection_class_embeddings_input_dim = unet_params.adm_in_channels + else: + raise NotImplementedError(f"Unknown conditional unet num_classes config: {unet_params.num_classes}") + + config = { + "sample_size": image_size // vae_scale_factor, + "in_channels": unet_params.in_channels, + "down_block_types": tuple(down_block_types), + "block_out_channels": tuple(block_out_channels), + "layers_per_block": unet_params.num_res_blocks, + "cross_attention_dim": context_dim, + "attention_head_dim": head_dim, + "use_linear_projection": use_linear_projection, + "class_embed_type": class_embed_type, + "addition_embed_type": addition_embed_type, + "addition_time_embed_dim": addition_time_embed_dim, + "projection_class_embeddings_input_dim": projection_class_embeddings_input_dim, + "transformer_layers_per_block": transformer_layers_per_block, + } + + if controlnet: + config["conditioning_channels"] = unet_params.hint_channels + else: + config["out_channels"] = unet_params.out_channels + config["up_block_types"] = tuple(up_block_types) return config @@ -306,16 +361,16 @@ def create_vae_diffusers_config(original_config, image_size: int): down_block_types = ["DownEncoderBlock2D"] * len(block_out_channels) up_block_types = ["UpDecoderBlock2D"] * len(block_out_channels) - config = dict( - sample_size=image_size, - in_channels=vae_params.in_channels, - out_channels=vae_params.out_ch, - down_block_types=tuple(down_block_types), - up_block_types=tuple(up_block_types), - block_out_channels=tuple(block_out_channels), - latent_channels=vae_params.z_channels, - layers_per_block=vae_params.num_res_blocks, - ) + config = { + "sample_size": image_size, + "in_channels": vae_params.in_channels, + "out_channels": vae_params.out_ch, + "down_block_types": tuple(down_block_types), + "up_block_types": tuple(up_block_types), + "block_out_channels": tuple(block_out_channels), + "latent_channels": vae_params.z_channels, + "layers_per_block": vae_params.num_res_blocks, + } return config @@ -330,7 +385,7 @@ def create_diffusers_schedular(original_config): def create_ldm_bert_config(original_config): - bert_params = original_config.model.params.cond_stage_config.params + bert_params = original_config.model.parms.cond_stage_config.params config = LDMBertConfig( d_model=bert_params.n_embed, encoder_layers=bert_params.n_layer, @@ -339,103 +394,96 @@ def create_ldm_bert_config(original_config): return config -def convert_ldm_unet_checkpoint(checkpoint, config, path=None, extract_ema=False): +def convert_ldm_unet_checkpoint( + checkpoint, config, path=None, extract_ema=False, controlnet=False, skip_extract_state_dict=False +): """ Takes a state dict and a config, and returns a converted checkpoint. """ - # extract state_dict for UNet - unet_state_dict = {} - keys = list(checkpoint.keys()) + if skip_extract_state_dict: + unet_state_dict = checkpoint + else: + # extract state_dict for UNet + unet_state_dict = {} + keys = list(checkpoint.keys()) - unet_key = "model.diffusion_model." - # at least a 100 parameters have to start with `model_ema` in order for the checkpoint to be EMA - if sum(k.startswith("model_ema") for k in keys) > 100: - logger.debug(f"Checkpoint {path} has both EMA and non-EMA weights.") - if extract_ema: - logger.debug("Extracting EMA weights (usually better for inference)") + if controlnet: + unet_key = "control_model." + else: + unet_key = "model.diffusion_model." + + # at least a 100 parameters have to start with `model_ema` in order for the checkpoint to be EMA + if sum(k.startswith("model_ema") for k in keys) > 100 and extract_ema: + logger.warning(f"Checkpoint {path} has both EMA and non-EMA weights.") + logger.warning( + "In this conversion only the EMA weights are extracted. If you want to instead extract the non-EMA" + " weights (useful to continue fine-tuning), please make sure to remove the `--extract_ema` flag." + ) for key in keys: if key.startswith("model.diffusion_model"): flat_ema_key = "model_ema." + "".join(key.split(".")[1:]) - flat_ema_key_alt = "model_ema." + "".join(key.split(".")[2:]) - if flat_ema_key in checkpoint: - unet_state_dict[key.replace(unet_key, "")] = checkpoint.pop( - flat_ema_key - ) - elif flat_ema_key_alt in checkpoint: - unet_state_dict[key.replace(unet_key, "")] = checkpoint.pop( - flat_ema_key_alt - ) - else: - unet_state_dict[key.replace(unet_key, "")] = checkpoint.pop( - key - ) + unet_state_dict[key.replace(unet_key, "")] = checkpoint.pop(flat_ema_key) else: - logger.debug( - "Extracting only the non-EMA weights (usually better for fine-tuning)" - ) + if sum(k.startswith("model_ema") for k in keys) > 100: + logger.warning( + "In this conversion only the non-EMA weights are extracted. If you want to instead extract the EMA" + " weights (usually better for inference), please make sure to add the `--extract_ema` flag." + ) - for key in keys: - if key.startswith("model.diffusion_model") and key in checkpoint: - unet_state_dict[key.replace(unet_key, "")] = checkpoint.pop(key) + for key in keys: + if key.startswith(unet_key): + unet_state_dict[key.replace(unet_key, "")] = checkpoint.pop(key) new_checkpoint = {} - new_checkpoint["time_embedding.linear_1.weight"] = unet_state_dict[ - "time_embed.0.weight" - ] - new_checkpoint["time_embedding.linear_1.bias"] = unet_state_dict[ - "time_embed.0.bias" - ] - new_checkpoint["time_embedding.linear_2.weight"] = unet_state_dict[ - "time_embed.2.weight" - ] - new_checkpoint["time_embedding.linear_2.bias"] = unet_state_dict[ - "time_embed.2.bias" - ] + new_checkpoint["time_embedding.linear_1.weight"] = unet_state_dict["time_embed.0.weight"] + new_checkpoint["time_embedding.linear_1.bias"] = unet_state_dict["time_embed.0.bias"] + new_checkpoint["time_embedding.linear_2.weight"] = unet_state_dict["time_embed.2.weight"] + new_checkpoint["time_embedding.linear_2.bias"] = unet_state_dict["time_embed.2.bias"] + + if config["class_embed_type"] is None: + # No parameters to port + ... + elif config["class_embed_type"] == "timestep" or config["class_embed_type"] == "projection": + new_checkpoint["class_embedding.linear_1.weight"] = unet_state_dict["label_emb.0.0.weight"] + new_checkpoint["class_embedding.linear_1.bias"] = unet_state_dict["label_emb.0.0.bias"] + new_checkpoint["class_embedding.linear_2.weight"] = unet_state_dict["label_emb.0.2.weight"] + new_checkpoint["class_embedding.linear_2.bias"] = unet_state_dict["label_emb.0.2.bias"] + else: + raise NotImplementedError(f"Not implemented `class_embed_type`: {config['class_embed_type']}") + + if config["addition_embed_type"] == "text_time": + new_checkpoint["add_embedding.linear_1.weight"] = unet_state_dict["label_emb.0.0.weight"] + new_checkpoint["add_embedding.linear_1.bias"] = unet_state_dict["label_emb.0.0.bias"] + new_checkpoint["add_embedding.linear_2.weight"] = unet_state_dict["label_emb.0.2.weight"] + new_checkpoint["add_embedding.linear_2.bias"] = unet_state_dict["label_emb.0.2.bias"] new_checkpoint["conv_in.weight"] = unet_state_dict["input_blocks.0.0.weight"] new_checkpoint["conv_in.bias"] = unet_state_dict["input_blocks.0.0.bias"] - new_checkpoint["conv_norm_out.weight"] = unet_state_dict["out.0.weight"] - new_checkpoint["conv_norm_out.bias"] = unet_state_dict["out.0.bias"] - new_checkpoint["conv_out.weight"] = unet_state_dict["out.2.weight"] - new_checkpoint["conv_out.bias"] = unet_state_dict["out.2.bias"] + if not controlnet: + new_checkpoint["conv_norm_out.weight"] = unet_state_dict["out.0.weight"] + new_checkpoint["conv_norm_out.bias"] = unet_state_dict["out.0.bias"] + new_checkpoint["conv_out.weight"] = unet_state_dict["out.2.weight"] + new_checkpoint["conv_out.bias"] = unet_state_dict["out.2.bias"] # Retrieves the keys for the input blocks only - num_input_blocks = len( - { - ".".join(layer.split(".")[:2]) - for layer in unet_state_dict - if "input_blocks" in layer - } - ) + num_input_blocks = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict if "input_blocks" in layer}) input_blocks = { layer_id: [key for key in unet_state_dict if f"input_blocks.{layer_id}" in key] for layer_id in range(num_input_blocks) } # Retrieves the keys for the middle blocks only - num_middle_blocks = len( - { - ".".join(layer.split(".")[:2]) - for layer in unet_state_dict - if "middle_block" in layer - } - ) + num_middle_blocks = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict if "middle_block" in layer}) middle_blocks = { layer_id: [key for key in unet_state_dict if f"middle_block.{layer_id}" in key] for layer_id in range(num_middle_blocks) } # Retrieves the keys for the output blocks only - num_output_blocks = len( - { - ".".join(layer.split(".")[:2]) - for layer in unet_state_dict - if "output_blocks" in layer - } - ) + num_output_blocks = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict if "output_blocks" in layer}) output_blocks = { layer_id: [key for key in unet_state_dict if f"output_blocks.{layer_id}" in key] for layer_id in range(num_output_blocks) @@ -446,45 +494,27 @@ def convert_ldm_unet_checkpoint(checkpoint, config, path=None, extract_ema=False layer_in_block_id = (i - 1) % (config["layers_per_block"] + 1) resnets = [ - key - for key in input_blocks[i] - if f"input_blocks.{i}.0" in key and f"input_blocks.{i}.0.op" not in key + key for key in input_blocks[i] if f"input_blocks.{i}.0" in key and f"input_blocks.{i}.0.op" not in key ] attentions = [key for key in input_blocks[i] if f"input_blocks.{i}.1" in key] if f"input_blocks.{i}.0.op.weight" in unet_state_dict: - new_checkpoint[ - f"down_blocks.{block_id}.downsamplers.0.conv.weight" - ] = unet_state_dict.pop(f"input_blocks.{i}.0.op.weight") - new_checkpoint[ - f"down_blocks.{block_id}.downsamplers.0.conv.bias" - ] = unet_state_dict.pop(f"input_blocks.{i}.0.op.bias") + new_checkpoint[f"down_blocks.{block_id}.downsamplers.0.conv.weight"] = unet_state_dict.pop( + f"input_blocks.{i}.0.op.weight" + ) + new_checkpoint[f"down_blocks.{block_id}.downsamplers.0.conv.bias"] = unet_state_dict.pop( + f"input_blocks.{i}.0.op.bias" + ) paths = renew_resnet_paths(resnets) - meta_path = { - "old": f"input_blocks.{i}.0", - "new": f"down_blocks.{block_id}.resnets.{layer_in_block_id}", - } - assign_to_checkpoint( - paths, - new_checkpoint, - unet_state_dict, - additional_replacements=[meta_path], - config=config, - ) + meta_path = {"old": f"input_blocks.{i}.0", "new": f"down_blocks.{block_id}.resnets.{layer_in_block_id}"} + assign_to_checkpoint(paths, new_checkpoint, unet_state_dict, additional_replacements=[meta_path], config=config) if len(attentions): paths = renew_attention_paths(attentions) - meta_path = { - "old": f"input_blocks.{i}.1", - "new": f"down_blocks.{block_id}.attentions.{layer_in_block_id}", - } + meta_path = {"old": f"input_blocks.{i}.1", "new": f"down_blocks.{block_id}.attentions.{layer_in_block_id}"} assign_to_checkpoint( - paths, - new_checkpoint, - unet_state_dict, - additional_replacements=[meta_path], - config=config, + paths, new_checkpoint, unet_state_dict, additional_replacements=[meta_path], config=config ) resnet_0 = middle_blocks[0] @@ -500,11 +530,7 @@ def convert_ldm_unet_checkpoint(checkpoint, config, path=None, extract_ema=False attentions_paths = renew_attention_paths(attentions) meta_path = {"old": "middle_block.1", "new": "mid_block.attentions.0"} assign_to_checkpoint( - attentions_paths, - new_checkpoint, - unet_state_dict, - additional_replacements=[meta_path], - config=config, + attentions_paths, new_checkpoint, unet_state_dict, additional_replacements=[meta_path], config=config ) for i in range(num_output_blocks): @@ -522,36 +548,25 @@ def convert_ldm_unet_checkpoint(checkpoint, config, path=None, extract_ema=False if len(output_block_list) > 1: resnets = [key for key in output_blocks[i] if f"output_blocks.{i}.0" in key] - attentions = [ - key for key in output_blocks[i] if f"output_blocks.{i}.1" in key - ] + attentions = [key for key in output_blocks[i] if f"output_blocks.{i}.1" in key] resnet_0_paths = renew_resnet_paths(resnets) paths = renew_resnet_paths(resnets) - meta_path = { - "old": f"output_blocks.{i}.0", - "new": f"up_blocks.{block_id}.resnets.{layer_in_block_id}", - } + meta_path = {"old": f"output_blocks.{i}.0", "new": f"up_blocks.{block_id}.resnets.{layer_in_block_id}"} assign_to_checkpoint( - paths, - new_checkpoint, - unet_state_dict, - additional_replacements=[meta_path], - config=config, + paths, new_checkpoint, unet_state_dict, additional_replacements=[meta_path], config=config ) output_block_list = {k: sorted(v) for k, v in output_block_list.items()} if ["conv.bias", "conv.weight"] in output_block_list.values(): - index = list(output_block_list.values()).index( - ["conv.bias", "conv.weight"] - ) - new_checkpoint[ - f"up_blocks.{block_id}.upsamplers.0.conv.weight" - ] = unet_state_dict[f"output_blocks.{i}.{index}.conv.weight"] - new_checkpoint[ - f"up_blocks.{block_id}.upsamplers.0.conv.bias" - ] = unet_state_dict[f"output_blocks.{i}.{index}.conv.bias"] + index = list(output_block_list.values()).index(["conv.bias", "conv.weight"]) + new_checkpoint[f"up_blocks.{block_id}.upsamplers.0.conv.weight"] = unet_state_dict[ + f"output_blocks.{i}.{index}.conv.weight" + ] + new_checkpoint[f"up_blocks.{block_id}.upsamplers.0.conv.bias"] = unet_state_dict[ + f"output_blocks.{i}.{index}.conv.bias" + ] # Clear attentions as they have been attributed above. if len(attentions) == 2: @@ -564,82 +579,85 @@ def convert_ldm_unet_checkpoint(checkpoint, config, path=None, extract_ema=False "new": f"up_blocks.{block_id}.attentions.{layer_in_block_id}", } assign_to_checkpoint( - paths, - new_checkpoint, - unet_state_dict, - additional_replacements=[meta_path], - config=config, + paths, new_checkpoint, unet_state_dict, additional_replacements=[meta_path], config=config ) else: - resnet_0_paths = renew_resnet_paths( - output_block_layers, n_shave_prefix_segments=1 - ) + resnet_0_paths = renew_resnet_paths(output_block_layers, n_shave_prefix_segments=1) for path in resnet_0_paths: old_path = ".".join(["output_blocks", str(i), path["old"]]) - new_path = ".".join( - [ - "up_blocks", - str(block_id), - "resnets", - str(layer_in_block_id), - path["new"], - ] - ) + new_path = ".".join(["up_blocks", str(block_id), "resnets", str(layer_in_block_id), path["new"]]) new_checkpoint[new_path] = unet_state_dict[old_path] + if controlnet: + # conditioning embedding + + orig_index = 0 + + new_checkpoint["controlnet_cond_embedding.conv_in.weight"] = unet_state_dict.pop( + f"input_hint_block.{orig_index}.weight" + ) + new_checkpoint["controlnet_cond_embedding.conv_in.bias"] = unet_state_dict.pop( + f"input_hint_block.{orig_index}.bias" + ) + + orig_index += 2 + + diffusers_index = 0 + + while diffusers_index < 6: + new_checkpoint[f"controlnet_cond_embedding.blocks.{diffusers_index}.weight"] = unet_state_dict.pop( + f"input_hint_block.{orig_index}.weight" + ) + new_checkpoint[f"controlnet_cond_embedding.blocks.{diffusers_index}.bias"] = unet_state_dict.pop( + f"input_hint_block.{orig_index}.bias" + ) + diffusers_index += 1 + orig_index += 2 + + new_checkpoint["controlnet_cond_embedding.conv_out.weight"] = unet_state_dict.pop( + f"input_hint_block.{orig_index}.weight" + ) + new_checkpoint["controlnet_cond_embedding.conv_out.bias"] = unet_state_dict.pop( + f"input_hint_block.{orig_index}.bias" + ) + + # down blocks + for i in range(num_input_blocks): + new_checkpoint[f"controlnet_down_blocks.{i}.weight"] = unet_state_dict.pop(f"zero_convs.{i}.0.weight") + new_checkpoint[f"controlnet_down_blocks.{i}.bias"] = unet_state_dict.pop(f"zero_convs.{i}.0.bias") + + # mid block + new_checkpoint["controlnet_mid_block.weight"] = unet_state_dict.pop("middle_block_out.0.weight") + new_checkpoint["controlnet_mid_block.bias"] = unet_state_dict.pop("middle_block_out.0.bias") + return new_checkpoint + def convert_ldm_vae_checkpoint(checkpoint, config): - # Extract state dict for VAE. Works both with burnt-in - # VAEs, and with standalone VAEs. + # extract state dict for VAE + vae_state_dict = {} + keys = list(checkpoint.keys()) + vae_key = "first_stage_model." if any(k.startswith("first_stage_model.") for k in keys) else "" + for key in keys: + if key.startswith(vae_key): + vae_state_dict[key.replace(vae_key, "")] = checkpoint.get(key) - # checkpoint can either be a all-in-one stable diffusion - # model, or an isolated vae .ckpt. This tests for - # a key that will be present in the all-in-one model - # that isn't present in the isolated ckpt. - probe_key = "first_stage_model.encoder.conv_in.weight" - if probe_key in checkpoint: - vae_state_dict = {} - vae_key = "first_stage_model." - keys = list(checkpoint.keys()) - for key in keys: - if key.startswith(vae_key): - vae_state_dict[key.replace(vae_key, "")] = checkpoint.get(key) - else: - vae_state_dict = checkpoint - - new_checkpoint = convert_ldm_vae_state_dict(vae_state_dict, config) - return new_checkpoint - -def convert_ldm_vae_state_dict(vae_state_dict, config): new_checkpoint = {} new_checkpoint["encoder.conv_in.weight"] = vae_state_dict["encoder.conv_in.weight"] new_checkpoint["encoder.conv_in.bias"] = vae_state_dict["encoder.conv_in.bias"] - new_checkpoint["encoder.conv_out.weight"] = vae_state_dict[ - "encoder.conv_out.weight" - ] + new_checkpoint["encoder.conv_out.weight"] = vae_state_dict["encoder.conv_out.weight"] new_checkpoint["encoder.conv_out.bias"] = vae_state_dict["encoder.conv_out.bias"] - new_checkpoint["encoder.conv_norm_out.weight"] = vae_state_dict[ - "encoder.norm_out.weight" - ] - new_checkpoint["encoder.conv_norm_out.bias"] = vae_state_dict[ - "encoder.norm_out.bias" - ] + new_checkpoint["encoder.conv_norm_out.weight"] = vae_state_dict["encoder.norm_out.weight"] + new_checkpoint["encoder.conv_norm_out.bias"] = vae_state_dict["encoder.norm_out.bias"] new_checkpoint["decoder.conv_in.weight"] = vae_state_dict["decoder.conv_in.weight"] new_checkpoint["decoder.conv_in.bias"] = vae_state_dict["decoder.conv_in.bias"] - new_checkpoint["decoder.conv_out.weight"] = vae_state_dict[ - "decoder.conv_out.weight" - ] + new_checkpoint["decoder.conv_out.weight"] = vae_state_dict["decoder.conv_out.weight"] new_checkpoint["decoder.conv_out.bias"] = vae_state_dict["decoder.conv_out.bias"] - new_checkpoint["decoder.conv_norm_out.weight"] = vae_state_dict[ - "decoder.norm_out.weight" - ] - new_checkpoint["decoder.conv_norm_out.bias"] = vae_state_dict[ - "decoder.norm_out.bias" - ] + new_checkpoint["decoder.conv_norm_out.weight"] = vae_state_dict["decoder.norm_out.weight"] + new_checkpoint["decoder.conv_norm_out.bias"] = vae_state_dict["decoder.norm_out.bias"] new_checkpoint["quant_conv.weight"] = vae_state_dict["quant_conv.weight"] new_checkpoint["quant_conv.bias"] = vae_state_dict["quant_conv.bias"] @@ -647,55 +665,31 @@ def convert_ldm_vae_state_dict(vae_state_dict, config): new_checkpoint["post_quant_conv.bias"] = vae_state_dict["post_quant_conv.bias"] # Retrieves the keys for the encoder down blocks only - num_down_blocks = len( - { - ".".join(layer.split(".")[:3]) - for layer in vae_state_dict - if "encoder.down" in layer - } - ) + num_down_blocks = len({".".join(layer.split(".")[:3]) for layer in vae_state_dict if "encoder.down" in layer}) down_blocks = { - layer_id: [key for key in vae_state_dict if f"down.{layer_id}" in key] - for layer_id in range(num_down_blocks) + layer_id: [key for key in vae_state_dict if f"down.{layer_id}" in key] for layer_id in range(num_down_blocks) } # Retrieves the keys for the decoder up blocks only - num_up_blocks = len( - { - ".".join(layer.split(".")[:3]) - for layer in vae_state_dict - if "decoder.up" in layer - } - ) + num_up_blocks = len({".".join(layer.split(".")[:3]) for layer in vae_state_dict if "decoder.up" in layer}) up_blocks = { - layer_id: [key for key in vae_state_dict if f"up.{layer_id}" in key] - for layer_id in range(num_up_blocks) + layer_id: [key for key in vae_state_dict if f"up.{layer_id}" in key] for layer_id in range(num_up_blocks) } for i in range(num_down_blocks): - resnets = [ - key - for key in down_blocks[i] - if f"down.{i}" in key and f"down.{i}.downsample" not in key - ] + resnets = [key for key in down_blocks[i] if f"down.{i}" in key and f"down.{i}.downsample" not in key] if f"encoder.down.{i}.downsample.conv.weight" in vae_state_dict: - new_checkpoint[ - f"encoder.down_blocks.{i}.downsamplers.0.conv.weight" - ] = vae_state_dict.pop(f"encoder.down.{i}.downsample.conv.weight") - new_checkpoint[ - f"encoder.down_blocks.{i}.downsamplers.0.conv.bias" - ] = vae_state_dict.pop(f"encoder.down.{i}.downsample.conv.bias") + new_checkpoint[f"encoder.down_blocks.{i}.downsamplers.0.conv.weight"] = vae_state_dict.pop( + f"encoder.down.{i}.downsample.conv.weight" + ) + new_checkpoint[f"encoder.down_blocks.{i}.downsamplers.0.conv.bias"] = vae_state_dict.pop( + f"encoder.down.{i}.downsample.conv.bias" + ) paths = renew_vae_resnet_paths(resnets) meta_path = {"old": f"down.{i}.block", "new": f"down_blocks.{i}.resnets"} - assign_to_checkpoint( - paths, - new_checkpoint, - vae_state_dict, - additional_replacements=[meta_path], - config=config, - ) + assign_to_checkpoint(paths, new_checkpoint, vae_state_dict, additional_replacements=[meta_path], config=config) mid_resnets = [key for key in vae_state_dict if "encoder.mid.block" in key] num_mid_res_blocks = 2 @@ -704,51 +698,31 @@ def convert_ldm_vae_state_dict(vae_state_dict, config): paths = renew_vae_resnet_paths(resnets) meta_path = {"old": f"mid.block_{i}", "new": f"mid_block.resnets.{i - 1}"} - assign_to_checkpoint( - paths, - new_checkpoint, - vae_state_dict, - additional_replacements=[meta_path], - config=config, - ) + assign_to_checkpoint(paths, new_checkpoint, vae_state_dict, additional_replacements=[meta_path], config=config) mid_attentions = [key for key in vae_state_dict if "encoder.mid.attn" in key] paths = renew_vae_attention_paths(mid_attentions) meta_path = {"old": "mid.attn_1", "new": "mid_block.attentions.0"} - assign_to_checkpoint( - paths, - new_checkpoint, - vae_state_dict, - additional_replacements=[meta_path], - config=config, - ) + assign_to_checkpoint(paths, new_checkpoint, vae_state_dict, additional_replacements=[meta_path], config=config) conv_attn_to_linear(new_checkpoint) for i in range(num_up_blocks): block_id = num_up_blocks - 1 - i resnets = [ - key - for key in up_blocks[block_id] - if f"up.{block_id}" in key and f"up.{block_id}.upsample" not in key + key for key in up_blocks[block_id] if f"up.{block_id}" in key and f"up.{block_id}.upsample" not in key ] if f"decoder.up.{block_id}.upsample.conv.weight" in vae_state_dict: - new_checkpoint[ - f"decoder.up_blocks.{i}.upsamplers.0.conv.weight" - ] = vae_state_dict[f"decoder.up.{block_id}.upsample.conv.weight"] - new_checkpoint[ - f"decoder.up_blocks.{i}.upsamplers.0.conv.bias" - ] = vae_state_dict[f"decoder.up.{block_id}.upsample.conv.bias"] + new_checkpoint[f"decoder.up_blocks.{i}.upsamplers.0.conv.weight"] = vae_state_dict[ + f"decoder.up.{block_id}.upsample.conv.weight" + ] + new_checkpoint[f"decoder.up_blocks.{i}.upsamplers.0.conv.bias"] = vae_state_dict[ + f"decoder.up.{block_id}.upsample.conv.bias" + ] paths = renew_vae_resnet_paths(resnets) meta_path = {"old": f"up.{block_id}.block", "new": f"up_blocks.{i}.resnets"} - assign_to_checkpoint( - paths, - new_checkpoint, - vae_state_dict, - additional_replacements=[meta_path], - config=config, - ) + assign_to_checkpoint(paths, new_checkpoint, vae_state_dict, additional_replacements=[meta_path], config=config) mid_resnets = [key for key in vae_state_dict if "decoder.mid.block" in key] num_mid_res_blocks = 2 @@ -757,24 +731,12 @@ def convert_ldm_vae_state_dict(vae_state_dict, config): paths = renew_vae_resnet_paths(resnets) meta_path = {"old": f"mid.block_{i}", "new": f"mid_block.resnets.{i - 1}"} - assign_to_checkpoint( - paths, - new_checkpoint, - vae_state_dict, - additional_replacements=[meta_path], - config=config, - ) + assign_to_checkpoint(paths, new_checkpoint, vae_state_dict, additional_replacements=[meta_path], config=config) mid_attentions = [key for key in vae_state_dict if "decoder.mid.attn" in key] paths = renew_vae_attention_paths(mid_attentions) meta_path = {"old": "mid.attn_1", "new": "mid_block.attentions.0"} - assign_to_checkpoint( - paths, - new_checkpoint, - vae_state_dict, - additional_replacements=[meta_path], - config=config, - ) + assign_to_checkpoint(paths, new_checkpoint, vae_state_dict, additional_replacements=[meta_path], config=config) conv_attn_to_linear(new_checkpoint) return new_checkpoint @@ -816,9 +778,7 @@ def convert_ldm_bert_checkpoint(checkpoint, config): # copy embeds hf_model.model.embed_tokens.weight = checkpoint.transformer.token_emb.weight - hf_model.model.embed_positions.weight.data = ( - checkpoint.transformer.pos_emb.emb.weight - ) + hf_model.model.embed_positions.weight.data = checkpoint.transformer.pos_emb.emb.weight # copy layer norm _copy_linear(hf_model.model.layer_norm, checkpoint.transformer.norm) @@ -831,43 +791,40 @@ def convert_ldm_bert_checkpoint(checkpoint, config): return hf_model -def convert_ldm_clip_checkpoint(checkpoint): - text_model = CLIPTextModel.from_pretrained(CONVERT_MODEL_ROOT / 'clip-vit-large-patch14') +def convert_ldm_clip_checkpoint(checkpoint, local_files_only=False, text_encoder=None): + if text_encoder is None: + config = CLIPTextConfig.from_pretrained(CONVERT_MODEL_ROOT / "clip-vit-large-patch14") + + ctx = init_empty_weights if is_accelerate_available() else nullcontext + with ctx(): + text_model = CLIPTextModel(config) + keys = list(checkpoint.keys()) text_model_dict = {} + remove_prefixes = ["cond_stage_model.transformer", "conditioner.embedders.0.transformer"] + for key in keys: - if key.startswith("cond_stage_model.transformer"): - text_model_dict[key[len("cond_stage_model.transformer.") :]] = checkpoint[ - key - ] + for prefix in remove_prefixes: + if key.startswith(prefix): + text_model_dict[key[len(prefix + ".") :]] = checkpoint[key] - # transformers 4.31.0 and higher - this key no longer in state dict - if version.parse(transformers.__version__) >= version.parse("4.31.0"): - position_ids = text_model_dict.pop("text_model.embeddings.position_ids", None) - text_model.load_state_dict(text_model_dict) - if position_ids is not None: - text_model.text_model.embeddings.position_ids.copy_(position_ids) - - # transformers 4.30.2 and lower - position_ids is part of state_dict + if is_accelerate_available(): + for param_name, param in text_model_dict.items(): + set_module_tensor_to_device(text_model, param_name, "cpu", value=param) else: - text_model.load_state_dict(text_model_dict) + text_model.load_state_dict(text_model_dict) return text_model textenc_conversion_lst = [ - ( - "cond_stage_model.model.positional_embedding", - "text_model.embeddings.position_embedding.weight", - ), - ( - "cond_stage_model.model.token_embedding.weight", - "text_model.embeddings.token_embedding.weight", - ), - ("cond_stage_model.model.ln_final.weight", "text_model.final_layer_norm.weight"), - ("cond_stage_model.model.ln_final.bias", "text_model.final_layer_norm.bias"), + ("positional_embedding", "text_model.embeddings.position_embedding.weight"), + ("token_embedding.weight", "text_model.embeddings.token_embedding.weight"), + ("ln_final.weight", "text_model.final_layer_norm.weight"), + ("ln_final.bias", "text_model.final_layer_norm.bias"), + ("text_projection", "text_projection.weight"), ] textenc_conversion_map = {x[0]: x[1] for x in textenc_conversion_lst} @@ -880,129 +837,308 @@ textenc_transformer_conversion_lst = [ (".c_proj.", ".fc2."), (".attn", ".self_attn"), ("ln_final.", "transformer.text_model.final_layer_norm."), - ( - "token_embedding.weight", - "transformer.text_model.embeddings.token_embedding.weight", - ), - ( - "positional_embedding", - "transformer.text_model.embeddings.position_embedding.weight", - ), + ("token_embedding.weight", "transformer.text_model.embeddings.token_embedding.weight"), + ("positional_embedding", "transformer.text_model.embeddings.position_embedding.weight"), ] protected = {re.escape(x[0]): x[1] for x in textenc_transformer_conversion_lst} textenc_pattern = re.compile("|".join(protected.keys())) -def convert_open_clip_checkpoint(checkpoint): - text_model = CLIPTextModel.from_pretrained( - CONVERT_MODEL_ROOT / 'stable-diffusion-2-clip', - subfolder='text_encoder', - ) +def convert_paint_by_example_checkpoint(checkpoint): + config = CLIPVisionConfig.from_pretrained(CONVERT_MODEL_ROOT / "clip-vit-large-patch14") + model = PaintByExampleImageEncoder(config) keys = list(checkpoint.keys()) text_model_dict = {} - if "cond_stage_model.model.text_projection" in keys: - d_model = int(checkpoint["cond_stage_model.model.text_projection"].shape[0]) - elif "cond_stage_model.model.ln_final.bias" in keys: - d_model = int(checkpoint["cond_stage_model.model.ln_final.bias"].shape[0]) - else: - raise KeyError( - 'Expected key "cond_stage_model.model.text_projection" not found in model' - ) + for key in keys: + if key.startswith("cond_stage_model.transformer"): + text_model_dict[key[len("cond_stage_model.transformer.") :]] = checkpoint[key] - text_model_dict[ - "text_model.embeddings.position_ids" - ] = text_model.text_model.embeddings.get_buffer("position_ids") + # load clip vision + model.model.load_state_dict(text_model_dict) + + # load mapper + keys_mapper = { + k[len("cond_stage_model.mapper.res") :]: v + for k, v in checkpoint.items() + if k.startswith("cond_stage_model.mapper") + } + + MAPPING = { + "attn.c_qkv": ["attn1.to_q", "attn1.to_k", "attn1.to_v"], + "attn.c_proj": ["attn1.to_out.0"], + "ln_1": ["norm1"], + "ln_2": ["norm3"], + "mlp.c_fc": ["ff.net.0.proj"], + "mlp.c_proj": ["ff.net.2"], + } + + mapped_weights = {} + for key, value in keys_mapper.items(): + prefix = key[: len("blocks.i")] + suffix = key.split(prefix)[-1].split(".")[-1] + name = key.split(prefix)[-1].split(suffix)[0][1:-1] + mapped_names = MAPPING[name] + + num_splits = len(mapped_names) + for i, mapped_name in enumerate(mapped_names): + new_name = ".".join([prefix, mapped_name, suffix]) + shape = value.shape[0] // num_splits + mapped_weights[new_name] = value[i * shape : (i + 1) * shape] + + model.mapper.load_state_dict(mapped_weights) + + # load final layer norm + model.final_layer_norm.load_state_dict( + { + "bias": checkpoint["cond_stage_model.final_ln.bias"], + "weight": checkpoint["cond_stage_model.final_ln.weight"], + } + ) + + # load final proj + model.proj_out.load_state_dict( + { + "bias": checkpoint["proj_out.bias"], + "weight": checkpoint["proj_out.weight"], + } + ) + + # load uncond vector + model.uncond_vector.data = torch.nn.Parameter(checkpoint["learnable_vector"]) + return model + + +def convert_open_clip_checkpoint( + checkpoint, config_name, prefix="cond_stage_model.model.", has_projection=False, **config_kwargs +): + # text_model = CLIPTextModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="text_encoder") + # text_model = CLIPTextModelWithProjection.from_pretrained( + # "laion/CLIP-ViT-bigG-14-laion2B-39B-b160k", projection_dim=1280 + # ) + config = CLIPTextConfig.from_pretrained(config_name, **config_kwargs) + + ctx = init_empty_weights if is_accelerate_available() else nullcontext + with ctx(): + text_model = CLIPTextModelWithProjection(config) if has_projection else CLIPTextModel(config) + + keys = list(checkpoint.keys()) + + keys_to_ignore = [] + if config_name == "stabilityai/stable-diffusion-2" and config.num_hidden_layers == 23: + # make sure to remove all keys > 22 + keys_to_ignore += [k for k in keys if k.startswith("cond_stage_model.model.transformer.resblocks.23")] + keys_to_ignore += ["cond_stage_model.model.text_projection"] + + text_model_dict = {} + + if prefix + "text_projection" in checkpoint: + d_model = int(checkpoint[prefix + "text_projection"].shape[0]) + else: + d_model = 1024 + + text_model_dict["text_model.embeddings.position_ids"] = text_model.text_model.embeddings.get_buffer("position_ids") for key in keys: - if ( - "resblocks.23" in key - ): # Diffusers drops the final layer and only uses the penultimate layer + if key in keys_to_ignore: continue - if key in textenc_conversion_map: - text_model_dict[textenc_conversion_map[key]] = checkpoint[key] - if key.startswith("cond_stage_model.model.transformer."): - new_key = key[len("cond_stage_model.model.transformer.") :] + if key[len(prefix) :] in textenc_conversion_map: + if key.endswith("text_projection"): + value = checkpoint[key].T.contiguous() + else: + value = checkpoint[key] + + text_model_dict[textenc_conversion_map[key[len(prefix) :]]] = value + + if key.startswith(prefix + "transformer."): + new_key = key[len(prefix + "transformer.") :] if new_key.endswith(".in_proj_weight"): new_key = new_key[: -len(".in_proj_weight")] - new_key = textenc_pattern.sub( - lambda m: protected[re.escape(m.group(0))], new_key - ) - text_model_dict[new_key + ".q_proj.weight"] = checkpoint[key][ - :d_model, : - ] - text_model_dict[new_key + ".k_proj.weight"] = checkpoint[key][ - d_model : d_model * 2, : - ] - text_model_dict[new_key + ".v_proj.weight"] = checkpoint[key][ - d_model * 2 :, : - ] + new_key = textenc_pattern.sub(lambda m: protected[re.escape(m.group(0))], new_key) + text_model_dict[new_key + ".q_proj.weight"] = checkpoint[key][:d_model, :] + text_model_dict[new_key + ".k_proj.weight"] = checkpoint[key][d_model : d_model * 2, :] + text_model_dict[new_key + ".v_proj.weight"] = checkpoint[key][d_model * 2 :, :] elif new_key.endswith(".in_proj_bias"): new_key = new_key[: -len(".in_proj_bias")] - new_key = textenc_pattern.sub( - lambda m: protected[re.escape(m.group(0))], new_key - ) + new_key = textenc_pattern.sub(lambda m: protected[re.escape(m.group(0))], new_key) text_model_dict[new_key + ".q_proj.bias"] = checkpoint[key][:d_model] - text_model_dict[new_key + ".k_proj.bias"] = checkpoint[key][ - d_model : d_model * 2 - ] - text_model_dict[new_key + ".v_proj.bias"] = checkpoint[key][ - d_model * 2 : - ] + text_model_dict[new_key + ".k_proj.bias"] = checkpoint[key][d_model : d_model * 2] + text_model_dict[new_key + ".v_proj.bias"] = checkpoint[key][d_model * 2 :] else: - new_key = textenc_pattern.sub( - lambda m: protected[re.escape(m.group(0))], new_key - ) + new_key = textenc_pattern.sub(lambda m: protected[re.escape(m.group(0))], new_key) text_model_dict[new_key] = checkpoint[key] - # transformers 4.31.0 and higher - this key no longer in state dict - if version.parse(transformers.__version__) >= version.parse("4.31.0"): - position_ids = text_model_dict.pop("text_model.embeddings.position_ids", None) - text_model.load_state_dict(text_model_dict) - if position_ids is not None: - text_model.text_model.embeddings.position_ids.copy_(position_ids) - - # transformers 4.30.2 and lower - position_ids is part of state_dict + if is_accelerate_available(): + for param_name, param in text_model_dict.items(): + set_module_tensor_to_device(text_model, param_name, "cpu", value=param) else: - text_model.load_state_dict(text_model_dict) + text_model.load_state_dict(text_model_dict) return text_model -def replace_checkpoint_vae(checkpoint, vae_path: str): - if vae_path.endswith(".safetensors"): - vae_ckpt = load_file(vae_path) + +def stable_unclip_image_encoder(original_config): + """ + Returns the image processor and clip image encoder for the img2img unclip pipeline. + + We currently know of two types of stable unclip models which separately use the clip and the openclip image + encoders. + """ + + image_embedder_config = original_config.model.params.embedder_config + + sd_clip_image_embedder_class = image_embedder_config.target + sd_clip_image_embedder_class = sd_clip_image_embedder_class.split(".")[-1] + + if sd_clip_image_embedder_class == "ClipImageEmbedder": + clip_model_name = image_embedder_config.params.model + + if clip_model_name == "ViT-L/14": + feature_extractor = CLIPImageProcessor() + image_encoder = CLIPVisionModelWithProjection.from_pretrained(CONVERT_MODEL_ROOT / "clip-vit-large-patch14") + else: + raise NotImplementedError(f"Unknown CLIP checkpoint name in stable diffusion checkpoint {clip_model_name}") + + elif sd_clip_image_embedder_class == "FrozenOpenCLIPImageEmbedder": + feature_extractor = CLIPImageProcessor() + # InvokeAI doesn't use CLIPVisionModelWithProjection so it isn't in the core - if this code is hit a download will occur + image_encoder = CLIPVisionModelWithProjection.from_pretrained( + CONVERT_MODEL_ROOT / "CLIP-ViT-H-14-laion2B-s32B-b79K" + ) else: - vae_ckpt = torch.load(vae_path, map_location="cpu") - state_dict = vae_ckpt['state_dict'] if "state_dict" in vae_ckpt else vae_ckpt - for vae_key in state_dict: - new_key = f'first_stage_model.{vae_key}' - checkpoint[new_key] = state_dict[vae_key] + raise NotImplementedError( + f"Unknown CLIP image embedder class in stable diffusion checkpoint {sd_clip_image_embedder_class}" + ) -def convert_ldm_vae_to_diffusers(checkpoint, vae_config: DictConfig, image_size: int) -> AutoencoderKL: - vae_config = create_vae_diffusers_config( - vae_config, image_size=image_size + return feature_extractor, image_encoder + + +def stable_unclip_image_noising_components( + original_config, clip_stats_path: Optional[str] = None, device: Optional[str] = None +): + """ + Returns the noising components for the img2img and txt2img unclip pipelines. + + Converts the stability noise augmentor into + 1. a `StableUnCLIPImageNormalizer` for holding the CLIP stats + 2. a `DDPMScheduler` for holding the noise schedule + + If the noise augmentor config specifies a clip stats path, the `clip_stats_path` must be provided. + """ + noise_aug_config = original_config.model.params.noise_aug_config + noise_aug_class = noise_aug_config.target + noise_aug_class = noise_aug_class.split(".")[-1] + + if noise_aug_class == "CLIPEmbeddingNoiseAugmentation": + noise_aug_config = noise_aug_config.params + embedding_dim = noise_aug_config.timestep_dim + max_noise_level = noise_aug_config.noise_schedule_config.timesteps + beta_schedule = noise_aug_config.noise_schedule_config.beta_schedule + + image_normalizer = StableUnCLIPImageNormalizer(embedding_dim=embedding_dim) + image_noising_scheduler = DDPMScheduler(num_train_timesteps=max_noise_level, beta_schedule=beta_schedule) + + if "clip_stats_path" in noise_aug_config: + if clip_stats_path is None: + raise ValueError("This stable unclip config requires a `clip_stats_path`") + + clip_mean, clip_std = torch.load(clip_stats_path, map_location=device) + clip_mean = clip_mean[None, :] + clip_std = clip_std[None, :] + + clip_stats_state_dict = { + "mean": clip_mean, + "std": clip_std, + } + + image_normalizer.load_state_dict(clip_stats_state_dict) + else: + raise NotImplementedError(f"Unknown noise augmentor class: {noise_aug_class}") + + return image_normalizer, image_noising_scheduler + + +def convert_controlnet_checkpoint( + checkpoint, + original_config, + checkpoint_path, + image_size, + upcast_attention, + extract_ema, + use_linear_projection=None, + cross_attention_dim=None, + precision: torch.dtype = torch.float32, +): + ctrlnet_config = create_unet_diffusers_config(original_config, image_size=image_size, controlnet=True) + ctrlnet_config["upcast_attention"] = upcast_attention + + ctrlnet_config.pop("sample_size") + original_config = ctrlnet_config.copy() + + ctrlnet_config.pop("addition_embed_type") + ctrlnet_config.pop("addition_time_embed_dim") + ctrlnet_config.pop("transformer_layers_per_block") + + if use_linear_projection is not None: + ctrlnet_config["use_linear_projection"] = use_linear_projection + + if cross_attention_dim is not None: + ctrlnet_config["cross_attention_dim"] = cross_attention_dim + + controlnet = ControlNetModel(**ctrlnet_config) + + # Some controlnet ckpt files are distributed independently from the rest of the + # model components i.e. https://huggingface.co/thibaud/controlnet-sd21/ + if "time_embed.0.weight" in checkpoint: + skip_extract_state_dict = True + else: + skip_extract_state_dict = False + + converted_ctrl_checkpoint = convert_ldm_unet_checkpoint( + checkpoint, + original_config, + path=checkpoint_path, + extract_ema=extract_ema, + controlnet=True, + skip_extract_state_dict=skip_extract_state_dict, ) - converted_vae_checkpoint = convert_ldm_vae_checkpoint( - checkpoint, vae_config - ) + controlnet.load_state_dict(converted_ctrl_checkpoint) - vae = AutoencoderKL(**vae_config) - vae.load_state_dict(converted_vae_checkpoint) - return vae + return controlnet.to(precision) -def load_pipeline_from_original_stable_diffusion_ckpt( + +# TO DO - PASS PRECISION +def download_from_original_stable_diffusion_ckpt( checkpoint_path: str, model_version: BaseModelType, model_variant: ModelVariantType, - original_config_file: str, - extract_ema: bool = True, + original_config_file: str = None, + image_size: Optional[int] = None, + prediction_type: str = None, + model_type: str = None, + extract_ema: bool = False, precision: torch.dtype = torch.float32, + scheduler_type: str = "pndm", + num_in_channels: Optional[int] = None, + upcast_attention: Optional[bool] = None, + device: str = None, + from_safetensors: bool = False, + stable_unclip: Optional[str] = None, + stable_unclip_prior: Optional[str] = None, + clip_stats_path: Optional[str] = None, + controlnet: Optional[bool] = None, + load_safety_checker: bool = True, + pipeline_class: DiffusionPipeline = None, + local_files_only=False, + vae_path=None, + text_encoder=None, + tokenizer=None, scan_needed: bool = True, -) -> StableDiffusionPipeline: +) -> DiffusionPipeline: """ Load a Stable Diffusion pipeline object from a CompVis-style `.ckpt`/`.safetensors` file and (ideally) a `.yaml` config file. @@ -1011,158 +1147,601 @@ def load_pipeline_from_original_stable_diffusion_ckpt( global step count, which will likely fail for models that have undergone further fine-tuning. Therefore, it is recommended that you override the default values and/or supply an `original_config_file` wherever possible. - :param checkpoint_path: Path to `.ckpt` file. - :param original_config_file: Path to `.yaml` config file corresponding to the original architecture. - If `None`, will be automatically inferred by looking for a key that only exists in SD2.0 models. - :param scheduler_type: Type of scheduler to use. Should be one of `["pndm", "lms", "heun", "euler", - "euler-ancestral", "dpm", "ddim"]`. :param model_type: The pipeline type. `None` to automatically infer, or one of - `["FrozenOpenCLIPEmbedder", "FrozenCLIPEmbedder"]`. :param extract_ema: Only relevant for - checkpoints that have both EMA and non-EMA weights. Whether to extract the EMA weights - or not. Defaults to `False`. Pass `True` to extract the EMA weights. EMA weights usually yield higher - quality images for inference. Non-EMA weights are usually better to continue fine-tuning. - :param precision: precision to use - torch.float16, torch.float32 or torch.autocast + Args: + checkpoint_path (`str`): Path to `.ckpt` file. + original_config_file (`str`): + Path to `.yaml` config file corresponding to the original architecture. If `None`, will be automatically + inferred by looking for a key that only exists in SD2.0 models. + image_size (`int`, *optional*, defaults to 512): + The image size that the model was trained on. Use 512 for Stable Diffusion v1.X and Stable Diffusion v2 + Base. Use 768 for Stable Diffusion v2. + prediction_type (`str`, *optional*): + The prediction type that the model was trained on. Use `'epsilon'` for Stable Diffusion v1.X and Stable + Diffusion v2 Base. Use `'v_prediction'` for Stable Diffusion v2. + num_in_channels (`int`, *optional*, defaults to None): + The number of input channels. If `None`, it will be automatically inferred. + scheduler_type (`str`, *optional*, defaults to 'pndm'): + Type of scheduler to use. Should be one of `["pndm", "lms", "heun", "euler", "euler-ancestral", "dpm", + "ddim"]`. + model_type (`str`, *optional*, defaults to `None`): + The pipeline type. `None` to automatically infer, or one of `["FrozenOpenCLIPEmbedder", + "FrozenCLIPEmbedder", "PaintByExample"]`. + is_img2img (`bool`, *optional*, defaults to `False`): + Whether the model should be loaded as an img2img pipeline. + extract_ema (`bool`, *optional*, defaults to `False`): Only relevant for + checkpoints that have both EMA and non-EMA weights. Whether to extract the EMA weights or not. Defaults to + `False`. Pass `True` to extract the EMA weights. EMA weights usually yield higher quality images for + inference. Non-EMA weights are usually better to continue fine-tuning. + upcast_attention (`bool`, *optional*, defaults to `None`): + Whether the attention computation should always be upcasted. This is necessary when running stable + diffusion 2.1. + device (`str`, *optional*, defaults to `None`): + The device to use. Pass `None` to determine automatically. + from_safetensors (`str`, *optional*, defaults to `False`): + If `checkpoint_path` is in `safetensors` format, load checkpoint with safetensors instead of PyTorch. + load_safety_checker (`bool`, *optional*, defaults to `True`): + Whether to load the safety checker or not. Defaults to `True`. + pipeline_class (`str`, *optional*, defaults to `None`): + The pipeline class to use. Pass `None` to determine automatically. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether or not to only look at local files (i.e., do not try to download the model). + text_encoder (`CLIPTextModel`, *optional*, defaults to `None`): + An instance of [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel) + to use, specifically the [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14) + variant. If this parameter is `None`, the function will load a new instance of [CLIP] by itself, if needed. + tokenizer (`CLIPTokenizer`, *optional*, defaults to `None`): + An instance of + [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer) + to use. If this parameter is `None`, the function will load a new instance of [CLIPTokenizer] by itself, if + needed. + return: A StableDiffusionPipeline object representing the passed-in `.ckpt`/`.safetensors` file. """ - if not isinstance(checkpoint_path, Path): - checkpoint_path = Path(checkpoint_path) - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - verbosity = dlogging.get_verbosity() - dlogging.set_verbosity_error() + # import pipelines here to avoid circular import error when using from_single_file method + from diffusers import ( + LDMTextToImagePipeline, + PaintByExamplePipeline, + StableDiffusionControlNetPipeline, + StableDiffusionInpaintPipeline, + StableDiffusionPipeline, + StableDiffusionXLPipeline, + StableDiffusionXLImg2ImgPipeline, + StableUnCLIPImg2ImgPipeline, + StableUnCLIPPipeline, + ) - if checkpoint_path.suffix == ".safetensors": - checkpoint = load_file(checkpoint_path) + if pipeline_class is None: + pipeline_class = StableDiffusionPipeline if not controlnet else StableDiffusionControlNetPipeline + + if prediction_type == "v-prediction": + prediction_type = "v_prediction" + + if not is_omegaconf_available(): + raise ValueError(BACKENDS_MAPPING["omegaconf"][1]) + + if from_safetensors: + if not is_safetensors_available(): + raise ValueError(BACKENDS_MAPPING["safetensors"][1]) + + from safetensors.torch import load_file as safe_load + + checkpoint = safe_load(checkpoint_path, device="cpu") + else: + if scan_needed: + # scan model + scan_result = scan_file_path(checkpoint_path) + if scan_result.infected_files != 0: + raise "The model {checkpoint_path} is potentially infected by malware. Aborting import." + if device is None: + device = "cuda" if torch.cuda.is_available() else "cpu" + checkpoint = torch.load(checkpoint_path, map_location=device) else: - if scan_needed: - # scan model - scan_result = scan_file_path(checkpoint_path) - if scan_result.infected_files != 0: - raise "The model {checkpoint_path} is potentially infected by malware. Aborting import." - checkpoint = torch.load(checkpoint_path) + checkpoint = torch.load(checkpoint_path, map_location=device) - # sometimes there is a state_dict key and sometimes not - if "state_dict" in checkpoint: - checkpoint = checkpoint["state_dict"] + # Sometimes models don't have the global_step item + if "global_step" in checkpoint: + global_step = checkpoint["global_step"] + else: + logger.debug("global_step key not found in model") + global_step = None - original_config = OmegaConf.load(original_config_file) + # NOTE: this while loop isn't great but this controlnet checkpoint has one additional + # "state_dict" key https://huggingface.co/thibaud/controlnet-canny-sd21 + while "state_dict" in checkpoint: + checkpoint = checkpoint["state_dict"] - if model_version == BaseModelType.StableDiffusion2 and original_config["model"]["params"]["parameterization"] == "v": - prediction_type = "v_prediction" - upcast_attention = True - image_size = 768 + logger.debug(f"model_type = {model_type}; original_config_file = {original_config_file}") + + if original_config_file is None: + key_name_v2_1 = "model.diffusion_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight" + key_name_sd_xl_base = "conditioner.embedders.1.model.transformer.resblocks.9.mlp.c_proj.bias" + key_name_sd_xl_refiner = "conditioner.embedders.0.model.transformer.resblocks.9.mlp.c_proj.bias" + + # model_type = "v1" + config_url = ( + "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/configs/stable-diffusion/v1-inference.yaml" + ) + + if key_name_v2_1 in checkpoint and checkpoint[key_name_v2_1].shape[-1] == 1024: + # model_type = "v2" + config_url = "https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yaml" + + if global_step == 110000: + # v2.1 needs to upcast attention + upcast_attention = True + elif key_name_sd_xl_base in checkpoint: + # only base xl has two text embedders + config_url = "https://raw.githubusercontent.com/Stability-AI/generative-models/main/configs/inference/sd_xl_base.yaml" + elif key_name_sd_xl_refiner in checkpoint: + # only refiner xl has embedder and one text embedders + config_url = "https://raw.githubusercontent.com/Stability-AI/generative-models/main/configs/inference/sd_xl_refiner.yaml" + + original_config_file = BytesIO(requests.get(config_url).content) + + original_config = OmegaConf.load(original_config_file) + if ( + model_version == BaseModelType.StableDiffusion2 + and original_config["model"]["params"]["parameterization"] == "v" + ): + prediction_type = "v_prediction" + upcast_attention = True + image_size = 768 + else: + prediction_type = "epsilon" + upcast_attention = False + image_size = 512 + + # Convert the text model. + if ( + model_type is None + and "cond_stage_config" in original_config.model.params + and original_config.model.params.cond_stage_config is not None + ): + model_type = original_config.model.params.cond_stage_config.target.split(".")[-1] + logger.debug(f"no `model_type` given, `model_type` inferred as: {model_type}") + elif model_type is None and original_config.model.params.network_config is not None: + if original_config.model.params.network_config.params.context_dim == 2048: + model_type = "SDXL" else: + model_type = "SDXL-Refiner" + if image_size is None: + image_size = 1024 + + if num_in_channels is None and pipeline_class == StableDiffusionInpaintPipeline: + num_in_channels = 9 + elif num_in_channels is None: + num_in_channels = 4 + + if "unet_config" in original_config.model.params: + original_config["model"]["params"]["unet_config"]["params"]["in_channels"] = num_in_channels + + if ( + "parameterization" in original_config["model"]["params"] + and original_config["model"]["params"]["parameterization"] == "v" + ): + if prediction_type is None: + # NOTE: For stable diffusion 2 base it is recommended to pass `prediction_type=="epsilon"` + # as it relies on a brittle global step parameter here + prediction_type = "epsilon" if global_step == 875000 else "v_prediction" + if image_size is None: + # NOTE: For stable diffusion 2 base one has to pass `image_size==512` + # as it relies on a brittle global step parameter here + image_size = 512 if global_step == 875000 else 768 + else: + if prediction_type is None: prediction_type = "epsilon" - upcast_attention = False + if image_size is None: image_size = 512 - # - # convert scheduler - # + if controlnet is None and "control_stage_config" in original_config.model.params: + controlnet = convert_controlnet_checkpoint( + checkpoint, original_config, checkpoint_path, image_size, upcast_attention, extract_ema + ) - num_train_timesteps = original_config.model.params.timesteps - beta_start = original_config.model.params.linear_start - beta_end = original_config.model.params.linear_end + num_train_timesteps = getattr(original_config.model.params, "timesteps", None) or 1000 - scheduler = PNDMScheduler( + if model_type in ["SDXL", "SDXL-Refiner"]: + scheduler_dict = { + "beta_schedule": "scaled_linear", + "beta_start": 0.00085, + "beta_end": 0.012, + "interpolation_type": "linear", + "num_train_timesteps": num_train_timesteps, + "prediction_type": "epsilon", + "sample_max_value": 1.0, + "set_alpha_to_one": False, + "skip_prk_steps": True, + "steps_offset": 1, + "timestep_spacing": "leading", + } + scheduler = EulerDiscreteScheduler.from_config(scheduler_dict) + scheduler_type = "euler" + else: + beta_start = getattr(original_config.model.params, "linear_start", None) or 0.02 + beta_end = getattr(original_config.model.params, "linear_end", None) or 0.085 + scheduler = DDIMScheduler( beta_end=beta_end, beta_schedule="scaled_linear", beta_start=beta_start, num_train_timesteps=num_train_timesteps, steps_offset=1, + clip_sample=False, set_alpha_to_one=False, prediction_type=prediction_type, - skip_prk_steps=True ) - # make sure scheduler works correctly with DDIM - scheduler.register_to_config(clip_sample=False) + # make sure scheduler works correctly with DDIM + scheduler.register_to_config(clip_sample=False) - # - # convert unet - # + if scheduler_type == "pndm": + config = dict(scheduler.config) + config["skip_prk_steps"] = True + scheduler = PNDMScheduler.from_config(config) + elif scheduler_type == "lms": + scheduler = LMSDiscreteScheduler.from_config(scheduler.config) + elif scheduler_type == "heun": + scheduler = HeunDiscreteScheduler.from_config(scheduler.config) + elif scheduler_type == "euler": + scheduler = EulerDiscreteScheduler.from_config(scheduler.config) + elif scheduler_type == "euler-ancestral": + scheduler = EulerAncestralDiscreteScheduler.from_config(scheduler.config) + elif scheduler_type == "dpm": + scheduler = DPMSolverMultistepScheduler.from_config(scheduler.config) + elif scheduler_type == "ddim": + scheduler = scheduler + else: + raise ValueError(f"Scheduler of type {scheduler_type} doesn't exist!") - unet_config = create_unet_diffusers_config( - original_config, image_size=image_size - ) - unet_config["upcast_attention"] = upcast_attention + # Convert the UNet2DConditionModel model. + unet_config = create_unet_diffusers_config(original_config, image_size=image_size) + unet_config["upcast_attention"] = upcast_attention + converted_unet_checkpoint = convert_ldm_unet_checkpoint( + checkpoint, unet_config, path=checkpoint_path, extract_ema=extract_ema + ) + + ctx = init_empty_weights if is_accelerate_available() else nullcontext + with ctx(): unet = UNet2DConditionModel(**unet_config) - converted_unet_checkpoint = convert_ldm_unet_checkpoint( - checkpoint, unet_config, path=checkpoint_path, extract_ema=extract_ema - ) - + if is_accelerate_available(): + for param_name, param in converted_unet_checkpoint.items(): + set_module_tensor_to_device(unet, param_name, "cpu", value=param) + else: unet.load_state_dict(converted_unet_checkpoint) - # - # convert vae - # + # Convert the VAE model. + if vae_path is None: + vae_config = create_vae_diffusers_config(original_config, image_size=image_size) + converted_vae_checkpoint = convert_ldm_vae_checkpoint(checkpoint, vae_config) - vae = convert_ldm_vae_to_diffusers( - checkpoint, - original_config, - image_size, + if ( + "model" in original_config + and "params" in original_config.model + and "scale_factor" in original_config.model.params + ): + vae_scaling_factor = original_config.model.params.scale_factor + else: + vae_scaling_factor = 0.18215 # default SD scaling factor + + vae_config["scaling_factor"] = vae_scaling_factor + + ctx = init_empty_weights if is_accelerate_available() else nullcontext + with ctx(): + vae = AutoencoderKL(**vae_config) + + if is_accelerate_available(): + for param_name, param in converted_vae_checkpoint.items(): + set_module_tensor_to_device(vae, param_name, "cpu", value=param) + else: + vae.load_state_dict(converted_vae_checkpoint) + else: + vae = AutoencoderKL.from_pretrained(vae_path) + + if model_type == "FrozenOpenCLIPEmbedder": + config_name = "stabilityai/stable-diffusion-2" + config_kwargs = {"subfolder": "text_encoder"} + + text_model = convert_open_clip_checkpoint(checkpoint, config_name, **config_kwargs) + tokenizer = CLIPTokenizer.from_pretrained(CONVERT_MODEL_ROOT / "stable-diffusion-2-clip", subfolder="tokenizer") + + if stable_unclip is None: + if controlnet: + pipe = pipeline_class( + vae=vae.to(precision), + text_encoder=text_model, + tokenizer=tokenizer, + unet=unet.to(precision), + scheduler=scheduler, + controlnet=controlnet, + safety_checker=None, + feature_extractor=None, + requires_safety_checker=False, + ) + else: + pipe = pipeline_class( + vae=vae.to(precision), + text_encoder=text_model, + tokenizer=tokenizer, + unet=unet.to(precision), + scheduler=scheduler, + safety_checker=None, + feature_extractor=None, + requires_safety_checker=False, + ) + else: + image_normalizer, image_noising_scheduler = stable_unclip_image_noising_components( + original_config, clip_stats_path=clip_stats_path, device=device + ) + + if stable_unclip == "img2img": + feature_extractor, image_encoder = stable_unclip_image_encoder(original_config) + + pipe = StableUnCLIPImg2ImgPipeline( + # image encoding components + feature_extractor=feature_extractor, + image_encoder=image_encoder, + # image noising components + image_normalizer=image_normalizer, + image_noising_scheduler=image_noising_scheduler, + # regular denoising components + tokenizer=tokenizer, + text_encoder=text_model, + unet=unet, + scheduler=scheduler, + # vae + vae=vae, + ) + elif stable_unclip == "txt2img": + if stable_unclip_prior is None or stable_unclip_prior == "karlo": + karlo_model = "kakaobrain/karlo-v1-alpha" + prior = PriorTransformer.from_pretrained(karlo_model, subfolder="prior") + + prior_tokenizer = CLIPTokenizer.from_pretrained(CONVERT_MODEL_ROOT / "clip-vit-large-patch14") + prior_text_model = CLIPTextModelWithProjection.from_pretrained( + CONVERT_MODEL_ROOT / "clip-vit-large-patch14" + ) + + prior_scheduler = UnCLIPScheduler.from_pretrained(karlo_model, subfolder="prior_scheduler") + prior_scheduler = DDPMScheduler.from_config(prior_scheduler.config) + else: + raise NotImplementedError(f"unknown prior for stable unclip model: {stable_unclip_prior}") + + pipe = StableUnCLIPPipeline( + # prior components + prior_tokenizer=prior_tokenizer, + prior_text_encoder=prior_text_model, + prior=prior, + prior_scheduler=prior_scheduler, + # image noising components + image_normalizer=image_normalizer, + image_noising_scheduler=image_noising_scheduler, + # regular denoising components + tokenizer=tokenizer, + text_encoder=text_model, + unet=unet, + scheduler=scheduler, + # vae + vae=vae, + ) + else: + raise NotImplementedError(f"unknown `stable_unclip` type: {stable_unclip}") + elif model_type == "PaintByExample": + vision_model = convert_paint_by_example_checkpoint(checkpoint) + tokenizer = CLIPTokenizer.from_pretrained(CONVERT_MODEL_ROOT / "clip-vit-large-patch14") + feature_extractor = AutoFeatureExtractor.from_pretrained(CONVERT_MODEL_ROOT / "stable-diffusion-safety-checker") + pipe = PaintByExamplePipeline( + vae=vae, + image_encoder=vision_model, + unet=unet, + scheduler=scheduler, + safety_checker=None, + feature_extractor=feature_extractor, + ) + elif model_type == "FrozenCLIPEmbedder": + text_model = convert_ldm_clip_checkpoint( + checkpoint, local_files_only=local_files_only, text_encoder=text_encoder + ) + tokenizer = ( + CLIPTokenizer.from_pretrained(CONVERT_MODEL_ROOT / "clip-vit-large-patch14") + if tokenizer is None + else tokenizer ) - # Convert the text model. - model_type = original_config.model.params.cond_stage_config.target.split(".")[-1] - if model_type == "FrozenOpenCLIPEmbedder": - text_model = convert_open_clip_checkpoint(checkpoint) - tokenizer = CLIPTokenizer.from_pretrained( - CONVERT_MODEL_ROOT / 'stable-diffusion-2-clip', - subfolder='tokenizer', + if load_safety_checker: + safety_checker = StableDiffusionSafetyChecker.from_pretrained( + CONVERT_MODEL_ROOT / "stable-diffusion-safety-checker" ) - pipe = StableDiffusionPipeline( - vae=vae.to(precision), - text_encoder=text_model.to(precision), - tokenizer=tokenizer, - unet=unet.to(precision), - scheduler=scheduler, - safety_checker=None, - feature_extractor=None, - requires_safety_checker=False, + feature_extractor = AutoFeatureExtractor.from_pretrained( + CONVERT_MODEL_ROOT / "stable-diffusion-safety-checker" ) + else: + safety_checker = None + feature_extractor = None - elif model_type in ["FrozenCLIPEmbedder", "WeightedFrozenCLIPEmbedder"]: - text_model = convert_ldm_clip_checkpoint(checkpoint) - tokenizer = CLIPTokenizer.from_pretrained(CONVERT_MODEL_ROOT / 'clip-vit-large-patch14') - safety_checker = StableDiffusionSafetyChecker.from_pretrained(CONVERT_MODEL_ROOT / 'stable-diffusion-safety-checker') - feature_extractor = AutoFeatureExtractor.from_pretrained(CONVERT_MODEL_ROOT / 'stable-diffusion-safety-checker') - pipe = StableDiffusionPipeline( + if controlnet: + pipe = pipeline_class( vae=vae.to(precision), - text_encoder=text_model.to(precision), + text_encoder=text_model, tokenizer=tokenizer, unet=unet.to(precision), + controlnet=controlnet, scheduler=scheduler, - safety_checker=safety_checker.to(precision), + safety_checker=safety_checker, feature_extractor=feature_extractor, ) - else: - text_config = create_ldm_bert_config(original_config) - text_model = convert_ldm_bert_checkpoint(checkpoint, text_config) - tokenizer = BertTokenizerFast.from_pretrained(CONVERT_MODEL_ROOT / "bert-base-uncased") - pipe = LDMTextToImagePipeline( - vqvae=vae, - bert=text_model, + pipe = pipeline_class( + vae=vae.to(precision), + text_encoder=text_model, tokenizer=tokenizer, - unet=unet, + unet=unet.to(precision), scheduler=scheduler, + safety_checker=safety_checker, + feature_extractor=feature_extractor, ) - dlogging.set_verbosity(verbosity) + elif model_type in ["SDXL", "SDXL-Refiner"]: + if model_type == "SDXL": + tokenizer = CLIPTokenizer.from_pretrained(CONVERT_MODEL_ROOT / "clip-vit-large-patch14") + text_encoder = convert_ldm_clip_checkpoint(checkpoint, local_files_only=local_files_only) + + tokenizer_name = CONVERT_MODEL_ROOT / "CLIP-ViT-bigG-14-laion2B-39B-b160k" + tokenizer_2 = CLIPTokenizer.from_pretrained(tokenizer_name, pad_token="!") + + config_name = tokenizer_name + config_kwargs = {"projection_dim": 1280} + text_encoder_2 = convert_open_clip_checkpoint( + checkpoint, config_name, prefix="conditioner.embedders.1.model.", has_projection=True, **config_kwargs + ) + + pipe = StableDiffusionXLPipeline( + vae=vae.to(precision), + text_encoder=text_encoder, + tokenizer=tokenizer, + text_encoder_2=text_encoder_2, + tokenizer_2=tokenizer_2, + unet=unet.to(precision), + scheduler=scheduler, + force_zeros_for_empty_prompt=True, + ) + else: + tokenizer = None + text_encoder = None + tokenizer_name = CONVERT_MODEL_ROOT / "CLIP-ViT-bigG-14-laion2B-39B-b160k" + tokenizer_2 = CLIPTokenizer.from_pretrained(tokenizer_name, pad_token="!") + + config_name = tokenizer_name + config_kwargs = {"projection_dim": 1280} + text_encoder_2 = convert_open_clip_checkpoint( + checkpoint, config_name, prefix="conditioner.embedders.0.model.", has_projection=True, **config_kwargs + ) + + pipe = StableDiffusionXLImg2ImgPipeline( + vae=vae.to(precision), + text_encoder=text_encoder, + tokenizer=tokenizer, + text_encoder_2=text_encoder_2, + tokenizer_2=tokenizer_2, + unet=unet.to(precision), + scheduler=scheduler, + requires_aesthetics_score=True, + force_zeros_for_empty_prompt=False, + ) + else: + text_config = create_ldm_bert_config(original_config) + text_model = convert_ldm_bert_checkpoint(checkpoint, text_config) + tokenizer = BertTokenizerFast.from_pretrained(CONVERT_MODEL_ROOT / "bert-base-uncased") + pipe = LDMTextToImagePipeline(vqvae=vae, bert=text_model, tokenizer=tokenizer, unet=unet, scheduler=scheduler) return pipe +def download_controlnet_from_original_ckpt( + checkpoint_path: str, + original_config_file: str, + image_size: int = 512, + extract_ema: bool = False, + precision: torch.dtype = torch.float32, + num_in_channels: Optional[int] = None, + upcast_attention: Optional[bool] = None, + device: str = None, + from_safetensors: bool = False, + use_linear_projection: Optional[bool] = None, + cross_attention_dim: Optional[bool] = None, + scan_needed: bool = False, +) -> DiffusionPipeline: + if not is_omegaconf_available(): + raise ValueError(BACKENDS_MAPPING["omegaconf"][1]) + + from omegaconf import OmegaConf + + if from_safetensors: + if not is_safetensors_available(): + raise ValueError(BACKENDS_MAPPING["safetensors"][1]) + + from safetensors import safe_open + + checkpoint = {} + with safe_open(checkpoint_path, framework="pt", device="cpu") as f: + for key in f.keys(): + checkpoint[key] = f.get_tensor(key) + else: + if scan_needed: + # scan model + scan_result = scan_file_path(checkpoint_path) + if scan_result.infected_files != 0: + raise "The model {checkpoint_path} is potentially infected by malware. Aborting import." + if device is None: + device = "cuda" if torch.cuda.is_available() else "cpu" + checkpoint = torch.load(checkpoint_path, map_location=device) + else: + checkpoint = torch.load(checkpoint_path, map_location=device) + + # NOTE: this while loop isn't great but this controlnet checkpoint has one additional + # "state_dict" key https://huggingface.co/thibaud/controlnet-canny-sd21 + while "state_dict" in checkpoint: + checkpoint = checkpoint["state_dict"] + + original_config = OmegaConf.load(original_config_file) + + if num_in_channels is not None: + original_config["model"]["params"]["unet_config"]["params"]["in_channels"] = num_in_channels + + if "control_stage_config" not in original_config.model.params: + raise ValueError("`control_stage_config` not present in original config") + + controlnet = convert_controlnet_checkpoint( + checkpoint, + original_config, + checkpoint_path, + image_size, + upcast_attention, + extract_ema, + use_linear_projection=use_linear_projection, + cross_attention_dim=cross_attention_dim, + ) + + return controlnet + + +def convert_ldm_vae_to_diffusers(checkpoint, vae_config: DictConfig, image_size: int) -> AutoencoderKL: + vae_config = create_vae_diffusers_config(vae_config, image_size=image_size) + + converted_vae_checkpoint = convert_ldm_vae_checkpoint(checkpoint, vae_config) + + vae = AutoencoderKL(**vae_config) + vae.load_state_dict(converted_vae_checkpoint) + return vae + + def convert_ckpt_to_diffusers( - checkpoint_path: Union[str, Path], - dump_path: Union[str, Path], - **kwargs, + checkpoint_path: Union[str, Path], + dump_path: Union[str, Path], + use_safetensors: bool = True, + **kwargs, ): """ - Takes all the arguments of load_pipeline_from_original_stable_diffusion_ckpt(), + Takes all the arguments of download_from_original_stable_diffusion_ckpt(), and in addition a path-like object indicating the location of the desired diffusers model to be written. """ - pipe = load_pipeline_from_original_stable_diffusion_ckpt(checkpoint_path, **kwargs) + pipe = download_from_original_stable_diffusion_ckpt(checkpoint_path, **kwargs) + + pipe.save_pretrained( + dump_path, + safe_serialization=use_safetensors and is_safetensors_available(), + ) + + +def convert_controlnet_to_diffusers( + checkpoint_path: Union[str, Path], + dump_path: Union[str, Path], + **kwargs, +): + """ + Takes all the arguments of download_controlnet_from_original_ckpt(), + and in addition a path-like object indicating the location of the desired diffusers + model to be written. + """ + pipe = download_controlnet_from_original_ckpt(checkpoint_path, **kwargs) pipe.save_pretrained( dump_path, diff --git a/invokeai/backend/model_management/lora.py b/invokeai/backend/model_management/lora.py index 222169afbb..06770843ec 100644 --- a/invokeai/backend/model_management/lora.py +++ b/invokeai/backend/model_management/lora.py @@ -11,14 +11,15 @@ from diffusers.models import UNet2DConditionModel from safetensors.torch import load_file from transformers import CLIPTextModel, CLIPTokenizer -class LoRALayerBase: - #rank: Optional[int] - #alpha: Optional[float] - #bias: Optional[torch.Tensor] - #layer_key: str - #@property - #def scale(self): +class LoRALayerBase: + # rank: Optional[int] + # alpha: Optional[float] + # bias: Optional[torch.Tensor] + # layer_key: str + + # @property + # def scale(self): # return self.alpha / self.rank if (self.alpha and self.rank) else 1.0 def __init__( @@ -31,11 +32,7 @@ class LoRALayerBase: else: self.alpha = None - if ( - "bias_indices" in values - and "bias_values" in values - and "bias_size" in values - ): + if "bias_indices" in values and "bias_values" in values and "bias_size" in values: self.bias = torch.sparse_coo_tensor( values["bias_indices"], values["bias_values"], @@ -45,13 +42,13 @@ class LoRALayerBase: else: self.bias = None - self.rank = None # set in layer implementation + self.rank = None # set in layer implementation self.layer_key = layer_key def forward( self, module: torch.nn.Module, - input_h: Any, # for real looks like Tuple[torch.nn.Tensor] but not sure + input_h: Any, # for real looks like Tuple[torch.nn.Tensor] but not sure multiplier: float, ): if type(module) == torch.nn.Conv2d: @@ -71,12 +68,16 @@ class LoRALayerBase: bias = self.bias if self.bias is not None else 0 scale = self.alpha / self.rank if (self.alpha and self.rank) else 1.0 - return op( - *input_h, - (weight + bias).view(module.weight.shape), - None, - **extra_args, - ) * multiplier * scale + return ( + op( + *input_h, + (weight + bias).view(module.weight.shape), + None, + **extra_args, + ) + * multiplier + * scale + ) def get_weight(self): raise NotImplementedError() @@ -99,9 +100,9 @@ class LoRALayerBase: # TODO: find and debug lora/locon with bias class LoRALayer(LoRALayerBase): - #up: torch.Tensor - #mid: Optional[torch.Tensor] - #down: torch.Tensor + # up: torch.Tensor + # mid: Optional[torch.Tensor] + # down: torch.Tensor def __init__( self, @@ -151,12 +152,12 @@ class LoRALayer(LoRALayerBase): class LoHALayer(LoRALayerBase): - #w1_a: torch.Tensor - #w1_b: torch.Tensor - #w2_a: torch.Tensor - #w2_b: torch.Tensor - #t1: Optional[torch.Tensor] = None - #t2: Optional[torch.Tensor] = None + # w1_a: torch.Tensor + # w1_b: torch.Tensor + # w2_a: torch.Tensor + # w2_b: torch.Tensor + # t1: Optional[torch.Tensor] = None + # t2: Optional[torch.Tensor] = None def __init__( self, @@ -187,12 +188,8 @@ class LoHALayer(LoRALayerBase): weight = (self.w1_a @ self.w1_b) * (self.w2_a @ self.w2_b) else: - rebuild1 = torch.einsum( - "i j k l, j r, i p -> p r k l", self.t1, self.w1_b, self.w1_a - ) - rebuild2 = torch.einsum( - "i j k l, j r, i p -> p r k l", self.t2, self.w2_b, self.w2_a - ) + rebuild1 = torch.einsum("i j k l, j r, i p -> p r k l", self.t1, self.w1_b, self.w1_a) + rebuild2 = torch.einsum("i j k l, j r, i p -> p r k l", self.t2, self.w2_b, self.w2_a) weight = rebuild1 * rebuild2 return weight @@ -223,20 +220,20 @@ class LoHALayer(LoRALayerBase): class LoKRLayer(LoRALayerBase): - #w1: Optional[torch.Tensor] = None - #w1_a: Optional[torch.Tensor] = None - #w1_b: Optional[torch.Tensor] = None - #w2: Optional[torch.Tensor] = None - #w2_a: Optional[torch.Tensor] = None - #w2_b: Optional[torch.Tensor] = None - #t2: Optional[torch.Tensor] = None + # w1: Optional[torch.Tensor] = None + # w1_a: Optional[torch.Tensor] = None + # w1_b: Optional[torch.Tensor] = None + # w2: Optional[torch.Tensor] = None + # w2_a: Optional[torch.Tensor] = None + # w2_b: Optional[torch.Tensor] = None + # t2: Optional[torch.Tensor] = None def __init__( self, layer_key: str, values: dict, ): - super().__init__(layer_key, values) + super().__init__(layer_key, values) if "lokr_w1" in values: self.w1 = values["lokr_w1"] @@ -266,7 +263,7 @@ class LoKRLayer(LoRALayerBase): elif "lokr_w2_b" in values: self.rank = values["lokr_w2_b"].shape[0] else: - self.rank = None # unscaled + self.rank = None # unscaled def get_weight(self): w1 = self.w1 @@ -278,7 +275,7 @@ class LoKRLayer(LoRALayerBase): if self.t2 is None: w2 = self.w2_a @ self.w2_b else: - w2 = torch.einsum('i j k l, i p, j r -> p r k l', self.t2, self.w2_a, self.w2_b) + w2 = torch.einsum("i j k l, i p, j r -> p r k l", self.t2, self.w2_a, self.w2_b) if len(w2.shape) == 4: w1 = w1.unsqueeze(2).unsqueeze(2) @@ -317,7 +314,7 @@ class LoKRLayer(LoRALayerBase): self.t2 = self.t2.to(device=device, dtype=dtype) -class LoRAModel: #(torch.nn.Module): +class LoRAModel: # (torch.nn.Module): _name: str layers: Dict[str, LoRALayer] _device: torch.device @@ -345,7 +342,7 @@ class LoRAModel: #(torch.nn.Module): @property def dtype(self): - return self._dtype + return self._dtype def to( self, @@ -380,7 +377,7 @@ class LoRAModel: #(torch.nn.Module): model = cls( device=device, dtype=dtype, - name=file_path.stem, # TODO: + name=file_path.stem, # TODO: layers=dict(), ) @@ -392,7 +389,6 @@ class LoRAModel: #(torch.nn.Module): state_dict = cls._group_state(state_dict) for layer_key, values in state_dict.items(): - # lora and locon if "lora_down.weight" in values: layer = LoRALayer(layer_key, values) @@ -407,9 +403,7 @@ class LoRAModel: #(torch.nn.Module): else: # TODO: diff/ia3/... format - print( - f">> Encountered unknown lora layer module in {model.name}: {layer_key}" - ) + print(f">> Encountered unknown lora layer module in {model.name}: {layer_key}") return # lower memory consumption by removing already parsed layer values @@ -443,9 +437,10 @@ with LoRAHelper.apply_lora_unet(unet, loras): # unmodified unet """ + + # TODO: rename smth like ModelPatcher and add TI method? class ModelPatcher: - @staticmethod def _resolve_lora_key(model: torch.nn.Module, lora_key: str, prefix: str) -> Tuple[str, torch.nn.Module]: assert "." not in lora_key @@ -455,10 +450,10 @@ class ModelPatcher: module = model module_key = "" - key_parts = lora_key[len(prefix):].split('_') + key_parts = lora_key[len(prefix) :].split("_") submodule_name = key_parts.pop(0) - + while len(key_parts) > 0: try: module = module.get_submodule(submodule_name) @@ -477,7 +472,6 @@ class ModelPatcher: applied_loras: List[Tuple[LoRAModel, float]], layer_name: str, ): - def lora_forward(module, input_h, output): if len(applied_loras) == 0: return output @@ -491,7 +485,6 @@ class ModelPatcher: return lora_forward - @classmethod @contextmanager def apply_lora_unet( @@ -502,7 +495,6 @@ class ModelPatcher: with cls.apply_lora(unet, loras, "lora_unet_"): yield - @classmethod @contextmanager def apply_lora_text_encoder( @@ -513,7 +505,6 @@ class ModelPatcher: with cls.apply_lora(text_encoder, loras, "lora_te_"): yield - @classmethod @contextmanager def apply_lora( @@ -526,7 +517,7 @@ class ModelPatcher: try: with torch.no_grad(): for lora, lora_weight in loras: - #assert lora.device.type == "cpu" + # assert lora.device.type == "cpu" for layer_key, layer in lora.layers.items(): if not layer_key.startswith(prefix): continue @@ -536,7 +527,7 @@ class ModelPatcher: original_weights[module_key] = module.weight.detach().to(device="cpu", copy=True) # enable autocast to calc fp16 loras on cpu - #with torch.autocast(device_type="cpu"): + # with torch.autocast(device_type="cpu"): layer.to(dtype=torch.float32) layer_scale = layer.alpha / layer.rank if (layer.alpha and layer.rank) else 1.0 layer_weight = layer.get_weight() * lora_weight * layer_scale @@ -547,14 +538,13 @@ class ModelPatcher: module.weight += layer_weight.to(device=module.weight.device, dtype=module.weight.dtype) - yield # wait for context manager exit + yield # wait for context manager exit finally: with torch.no_grad(): for module_key, weight in original_weights.items(): model.get_submodule(module_key).weight.copy_(weight) - @classmethod @contextmanager def apply_ti( @@ -602,7 +592,9 @@ class ModelPatcher: f"Cannot load embedding for {trigger}. It was trained on a model with token dimension {embedding.shape[0]}, but the current model has token dimension {model_embeddings.weight.data[token_id].shape[0]}." ) - model_embeddings.weight.data[token_id] = embedding.to(device=text_encoder.device, dtype=text_encoder.dtype) + model_embeddings.weight.data[token_id] = embedding.to( + device=text_encoder.device, dtype=text_encoder.dtype + ) ti_tokens.append(token_id) if len(ti_tokens) > 1: @@ -614,7 +606,6 @@ class ModelPatcher: if init_tokens_count and new_tokens_added: text_encoder.resize_token_embeddings(init_tokens_count) - @classmethod @contextmanager def apply_clip_skip( @@ -633,9 +624,10 @@ class ModelPatcher: while len(skipped_layers) > 0: text_encoder.text_model.encoder.layers.append(skipped_layers.pop()) + class TextualInversionModel: name: str - embedding: torch.Tensor # [n, 768]|[n, 1280] + embedding: torch.Tensor # [n, 768]|[n, 1280] @classmethod def from_checkpoint( @@ -647,8 +639,8 @@ class TextualInversionModel: if not isinstance(file_path, Path): file_path = Path(file_path) - result = cls() # TODO: - result.name = file_path.stem # TODO: + result = cls() # TODO: + result.name = file_path.stem # TODO: if file_path.suffix == ".safetensors": state_dict = load_file(file_path.absolute().as_posix(), device="cpu") @@ -659,7 +651,9 @@ class TextualInversionModel: # difference mostly in metadata if "string_to_param" in state_dict: if len(state_dict["string_to_param"]) > 1: - print(f"Warn: Embedding \"{file_path.name}\" contains multiple tokens, which is not supported. The first token will be used.") + print( + f'Warn: Embedding "{file_path.name}" contains multiple tokens, which is not supported. The first token will be used.' + ) result.embedding = next(iter(state_dict["string_to_param"].values())) @@ -688,10 +682,7 @@ class TextualInversionManager(BaseTextualInversionManager): self.pad_tokens = dict() self.tokenizer = tokenizer - def expand_textual_inversion_token_ids_if_necessary( - self, token_ids: list[int] - ) -> list[int]: - + def expand_textual_inversion_token_ids_if_necessary(self, token_ids: list[int]) -> list[int]: if len(self.pad_tokens) == 0: return token_ids @@ -707,4 +698,3 @@ class TextualInversionManager(BaseTextualInversionManager): new_token_ids.extend(self.pad_tokens[token_id]) return new_token_ids - diff --git a/invokeai/backend/model_management/model_cache.py b/invokeai/backend/model_management/model_cache.py index 5ca17f00fc..a171c81e3c 100644 --- a/invokeai/backend/model_management/model_cache.py +++ b/invokeai/backend/model_management/model_cache.py @@ -37,19 +37,22 @@ from .models import BaseModelType, ModelType, SubModelType, ModelBase DEFAULT_MAX_CACHE_SIZE = 6.0 # amount of GPU memory to hold in reserve for use by generations (GB) -DEFAULT_MAX_VRAM_CACHE_SIZE= 2.75 +DEFAULT_MAX_VRAM_CACHE_SIZE = 2.75 # actual size of a gig GIG = 1073741824 + class ModelLocker(object): "Forward declaration" pass + class ModelCache(object): "Forward declaration" pass + class _CacheRecord: size: int model: Any @@ -79,22 +82,22 @@ class _CacheRecord: return self.model.device != self.cache.storage_device else: return False - + class ModelCache(object): def __init__( self, - max_cache_size: float=DEFAULT_MAX_CACHE_SIZE, - max_vram_cache_size: float=DEFAULT_MAX_VRAM_CACHE_SIZE, - execution_device: torch.device=torch.device('cuda'), - storage_device: torch.device=torch.device('cpu'), - precision: torch.dtype=torch.float16, - sequential_offload: bool=False, - lazy_offloading: bool=True, + max_cache_size: float = DEFAULT_MAX_CACHE_SIZE, + max_vram_cache_size: float = DEFAULT_MAX_VRAM_CACHE_SIZE, + execution_device: torch.device = torch.device("cuda"), + storage_device: torch.device = torch.device("cpu"), + precision: torch.dtype = torch.float16, + sequential_offload: bool = False, + lazy_offloading: bool = True, sha_chunksize: int = 16777216, - logger: types.ModuleType = logger + logger: types.ModuleType = logger, ): - ''' + """ :param max_cache_size: Maximum size of the RAM cache [6.0 GB] :param execution_device: Torch device to load active model into [torch.device('cuda')] :param storage_device: Torch device to save inactive model in [torch.device('cpu')] @@ -102,16 +105,16 @@ class ModelCache(object): :param lazy_offloading: Keep model in VRAM until another model needs to be loaded :param sequential_offload: Conserve VRAM by loading and unloading each stage of the pipeline sequentially :param sha_chunksize: Chunksize to use when calculating sha256 model hash - ''' + """ self.model_infos: Dict[str, ModelBase] = dict() # allow lazy offloading only when vram cache enabled self.lazy_offloading = lazy_offloading and max_vram_cache_size > 0 - self.precision: torch.dtype=precision - self.max_cache_size: float=max_cache_size - self.max_vram_cache_size: float=max_vram_cache_size - self.execution_device: torch.device=execution_device - self.storage_device: torch.device=storage_device - self.sha_chunksize=sha_chunksize + self.precision: torch.dtype = precision + self.max_cache_size: float = max_cache_size + self.max_vram_cache_size: float = max_vram_cache_size + self.execution_device: torch.device = execution_device + self.storage_device: torch.device = storage_device + self.sha_chunksize = sha_chunksize self.logger = logger self._cached_models = dict() @@ -124,7 +127,6 @@ class ModelCache(object): model_type: ModelType, submodel_type: Optional[SubModelType] = None, ): - key = f"{model_path}:{base_model}:{model_type}" if submodel_type: key += f":{submodel_type}" @@ -163,7 +165,6 @@ class ModelCache(object): submodel: Optional[SubModelType] = None, gpu_load: bool = True, ) -> Any: - if not isinstance(model_path, Path): model_path = Path(model_path) @@ -186,7 +187,7 @@ class ModelCache(object): # TODO: lock for no copies on simultaneous calls? cache_entry = self._cached_models.get(key, None) if cache_entry is None: - self.logger.info(f'Loading model {model_path}, type {base_model}:{model_type}:{submodel}') + self.logger.info(f"Loading model {model_path}, type {base_model}:{model_type}:{submodel}") # this will remove older cached models until # there is sufficient room to load the requested model @@ -196,7 +197,7 @@ class ModelCache(object): gc.collect() model = model_info.get_model(child_type=submodel, torch_dtype=self.precision) if mem_used := model_info.get_size(submodel): - self.logger.debug(f'CPU RAM used for load: {(mem_used/GIG):.2f} GB') + self.logger.debug(f"CPU RAM used for load: {(mem_used/GIG):.2f} GB") cache_entry = _CacheRecord(self, model, mem_used) self._cached_models[key] = cache_entry @@ -209,13 +210,13 @@ class ModelCache(object): class ModelLocker(object): def __init__(self, cache, key, model, gpu_load, size_needed): - ''' + """ :param cache: The model_cache object :param key: The key of the model to lock in GPU :param model: The model to lock :param gpu_load: True if load into gpu :param size_needed: Size of the model to load - ''' + """ self.gpu_load = gpu_load self.cache = cache self.key = key @@ -224,7 +225,7 @@ class ModelCache(object): self.cache_entry = self.cache._cached_models[self.key] def __enter__(self) -> Any: - if not hasattr(self.model, 'to'): + if not hasattr(self.model, "to"): return self.model # NOTE that the model has to have the to() method in order for this @@ -234,22 +235,21 @@ class ModelCache(object): try: if self.cache.lazy_offloading: - self.cache._offload_unlocked_models(self.size_needed) - + self.cache._offload_unlocked_models(self.size_needed) + if self.model.device != self.cache.execution_device: - self.cache.logger.debug(f'Moving {self.key} into {self.cache.execution_device}') + self.cache.logger.debug(f"Moving {self.key} into {self.cache.execution_device}") with VRAMUsage() as mem: self.model.to(self.cache.execution_device) # move into GPU - self.cache.logger.debug(f'GPU VRAM used for load: {(mem.vram_used/GIG):.2f} GB') - - self.cache.logger.debug(f'Locking {self.key} in {self.cache.execution_device}') + self.cache.logger.debug(f"GPU VRAM used for load: {(mem.vram_used/GIG):.2f} GB") + + self.cache.logger.debug(f"Locking {self.key} in {self.cache.execution_device}") self.cache._print_cuda_stats() except: self.cache_entry.unlock() raise - # TODO: not fully understand # in the event that the caller wants the model in RAM, we # move it into CPU if it is in GPU and not locked @@ -259,7 +259,7 @@ class ModelCache(object): return self.model def __exit__(self, type, value, traceback): - if not hasattr(self.model, 'to'): + if not hasattr(self.model, "to"): return self.cache_entry.unlock() @@ -277,11 +277,11 @@ class ModelCache(object): self, model_path: Union[str, Path], ) -> str: - ''' + """ Given the HF repo id or path to a model on disk, returns a unique hash. Works for legacy checkpoint files, HF models on disk, and HF repo IDs :param model_path: Path to model file/directory on disk. - ''' + """ return self._local_model_hash(model_path) def cache_size(self) -> float: @@ -290,7 +290,7 @@ class ModelCache(object): return current_cache_size / GIG def _has_cuda(self) -> bool: - return self.execution_device.type == 'cuda' + return self.execution_device.type == "cuda" def _print_cuda_stats(self): vram = "%4.2fG" % (torch.cuda.memory_allocated() / GIG) @@ -306,18 +306,21 @@ class ModelCache(object): if model_info.locked: locked_models += 1 - self.logger.debug(f"Current VRAM/RAM usage: {vram}/{ram}; cached_models/loaded_models/locked_models/ = {cached_models}/{loaded_models}/{locked_models}") - + self.logger.debug( + f"Current VRAM/RAM usage: {vram}/{ram}; cached_models/loaded_models/locked_models/ = {cached_models}/{loaded_models}/{locked_models}" + ) def _make_cache_room(self, model_size): # calculate how much memory this model will require - #multiplier = 2 if self.precision==torch.float32 else 1 + # multiplier = 2 if self.precision==torch.float32 else 1 bytes_needed = model_size maximum_size = self.max_cache_size * GIG # stored in GB, convert to bytes current_size = sum([m.size for m in self._cached_models.values()]) if current_size + bytes_needed > maximum_size: - self.logger.debug(f'Max cache size exceeded: {(current_size/GIG):.2f}/{self.max_cache_size:.2f} GB, need an additional {(bytes_needed/GIG):.2f} GB') + self.logger.debug( + f"Max cache size exceeded: {(current_size/GIG):.2f}/{self.max_cache_size:.2f} GB, need an additional {(bytes_needed/GIG):.2f} GB" + ) self.logger.debug(f"Before unloading: cached_models={len(self._cached_models)}") @@ -339,7 +342,7 @@ class ModelCache(object): with suppress(RuntimeError): referrer.clear() cleared = True - #break + # break # repeat if referrers changes(due to frame clear), else exit loop if cleared: @@ -348,13 +351,17 @@ class ModelCache(object): break device = cache_entry.model.device if hasattr(cache_entry.model, "device") else None - self.logger.debug(f"Model: {model_key}, locks: {cache_entry._locks}, device: {device}, loaded: {cache_entry.loaded}, refs: {refs}") + self.logger.debug( + f"Model: {model_key}, locks: {cache_entry._locks}, device: {device}, loaded: {cache_entry.loaded}, refs: {refs}" + ) # 2 refs: # 1 from cache_entry # 1 from getrefcount function if not cache_entry.locked and refs <= 2: - self.logger.debug(f'Unloading model {model_key} to free {(model_size/GIG):.2f} GB (-{(cache_entry.size/GIG):.2f} GB)') + self.logger.debug( + f"Unloading model {model_key} to free {(model_size/GIG):.2f} GB (-{(cache_entry.size/GIG):.2f} GB)" + ) current_size -= cache_entry.size del self._cache_stack[pos] del self._cached_models[model_key] @@ -368,38 +375,36 @@ class ModelCache(object): self.logger.debug(f"After unloading: cached_models={len(self._cached_models)}") - def _offload_unlocked_models(self, size_needed: int=0): + def _offload_unlocked_models(self, size_needed: int = 0): reserved = self.max_vram_cache_size * GIG vram_in_use = torch.cuda.memory_allocated() - self.logger.debug(f'{(vram_in_use/GIG):.2f}GB VRAM used for models; max allowed={(reserved/GIG):.2f}GB') - for model_key, cache_entry in sorted(self._cached_models.items(), key=lambda x:x[1].size): + self.logger.debug(f"{(vram_in_use/GIG):.2f}GB VRAM used for models; max allowed={(reserved/GIG):.2f}GB") + for model_key, cache_entry in sorted(self._cached_models.items(), key=lambda x: x[1].size): if vram_in_use <= reserved: break if not cache_entry.locked and cache_entry.loaded: - self.logger.debug(f'Offloading {model_key} from {self.execution_device} into {self.storage_device}') + self.logger.debug(f"Offloading {model_key} from {self.execution_device} into {self.storage_device}") with VRAMUsage() as mem: cache_entry.model.to(self.storage_device) - self.logger.debug(f'GPU VRAM freed: {(mem.vram_used/GIG):.2f} GB') + self.logger.debug(f"GPU VRAM freed: {(mem.vram_used/GIG):.2f} GB") vram_in_use += mem.vram_used # note vram_used is negative - self.logger.debug(f'{(vram_in_use/GIG):.2f}GB VRAM used for models; max allowed={(reserved/GIG):.2f}GB') + self.logger.debug(f"{(vram_in_use/GIG):.2f}GB VRAM used for models; max allowed={(reserved/GIG):.2f}GB") gc.collect() torch.cuda.empty_cache() - + def _local_model_hash(self, model_path: Union[str, Path]) -> str: sha = hashlib.sha256() path = Path(model_path) - + hashpath = path / "checksum.sha256" if hashpath.exists() and path.stat().st_mtime <= hashpath.stat().st_mtime: with open(hashpath) as f: hash = f.read() return hash - - self.logger.debug(f'computing hash of model {path.name}') - for file in list(path.rglob("*.ckpt")) \ - + list(path.rglob("*.safetensors")) \ - + list(path.rglob("*.pth")): + + self.logger.debug(f"computing hash of model {path.name}") + for file in list(path.rglob("*.ckpt")) + list(path.rglob("*.safetensors")) + list(path.rglob("*.pth")): with open(file, "rb") as f: while chunk := f.read(self.sha_chunksize): sha.update(chunk) @@ -408,11 +413,12 @@ class ModelCache(object): f.write(hash) return hash + class VRAMUsage(object): def __init__(self): self.vram = None self.vram_used = 0 - + def __enter__(self): self.vram = torch.cuda.memory_allocated() return self diff --git a/invokeai/backend/model_management/model_manager.py b/invokeai/backend/model_management/model_manager.py index a0b3e6d625..2a82061a97 100644 --- a/invokeai/backend/model_management/model_manager.py +++ b/invokeai/backend/model_management/model_manager.py @@ -249,20 +249,26 @@ 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, + BaseModelType, + ModelType, + SubModelType, + ModelError, + SchedulerPredictionType, + MODEL_CLASSES, ModelConfigBase, - ModelNotFoundException, InvalidModelException, + ModelNotFoundException, + InvalidModelException, DuplicateModelException, ) # We are only starting to number the config file with release 3. # The config file version doesn't have to start at release version, but it will help # reduce confusion. -CONFIG_FILE_VERSION='3.0.0' +CONFIG_FILE_VERSION = "3.0.0" + @dataclass -class ModelInfo(): +class ModelInfo: context: ModelLocker name: str base_model: BaseModelType @@ -275,20 +281,24 @@ class ModelInfo(): def __enter__(self): return self.context.__enter__() - def __exit__(self,*args, **kwargs): + def __exit__(self, *args, **kwargs): self.context.__exit__(*args, **kwargs) + class AddModelResult(BaseModel): name: str = Field(description="The name of the model after installation") model_type: ModelType = Field(description="The type of model") base_model: BaseModelType = Field(description="The base model") config: ModelConfigBase = Field(description="The configuration of the model") + MAX_CACHE_SIZE = 6.0 # GB + class ConfigMeta(BaseModel): version: str + class ModelManager(object): """ High-level interface to model management. @@ -315,12 +325,12 @@ class ModelManager(object): if isinstance(config, (str, Path)): self.config_path = Path(config) if not self.config_path.exists(): - logger.warning(f'The file {self.config_path} was not found. Initializing a new file') + logger.warning(f"The file {self.config_path} was not found. Initializing a new file") self.initialize_model_config(self.config_path) config = OmegaConf.load(self.config_path) elif not isinstance(config, DictConfig): - raise ValueError('config argument must be an OmegaConf object, a Path or a string') + raise ValueError("config argument must be an OmegaConf object, a Path or a string") self.config_meta = ConfigMeta(**config.pop("__metadata__")) # TODO: metadata not found @@ -330,11 +340,11 @@ class ModelManager(object): self.logger = logger self.cache = ModelCache( max_cache_size=max_cache_size, - max_vram_cache_size = self.app_config.max_vram_cache_size, - execution_device = device_type, - precision = precision, - sequential_offload = sequential_offload, - logger = logger, + max_vram_cache_size=self.app_config.max_vram_cache_size, + execution_device=device_type, + precision=precision, + sequential_offload=sequential_offload, + logger=logger, ) self._read_models(config) @@ -348,7 +358,7 @@ class ModelManager(object): self.models = dict() for model_key, model_config in config.items(): - if model_key.startswith('_'): + if model_key.startswith("_"): continue model_name, base_model, model_type = self.parse_key(model_key) model_class = MODEL_CLASSES[base_model][model_type] @@ -391,11 +401,15 @@ class ModelManager(object): base_model: BaseModelType, model_type: ModelType, ) -> str: - return f"{base_model}/{model_type}/{model_name}" + # In 3.11, the behavior of (str,enum) when interpolated into a + # string has changed. The next two lines are defensive. + base_model = BaseModelType(base_model) + model_type = ModelType(model_type) + return f"{base_model.value}/{model_type.value}/{model_name}" @classmethod def parse_key(cls, model_key: str) -> Tuple[str, BaseModelType, ModelType]: - base_model_str, model_type_str, model_name = model_key.split('/', 2) + base_model_str, model_type_str, model_name = model_key.split("/", 2) try: model_type = ModelType(model_type_str) except: @@ -414,20 +428,16 @@ class ModelManager(object): @classmethod def initialize_model_config(cls, config_path: Path): """Create empty config file""" - with open(config_path,'w') as yaml_file: - yaml_file.write(yaml.dump({'__metadata__': - {'version':'3.0.0'} - } - ) - ) + with open(config_path, "w") as yaml_file: + yaml_file.write(yaml.dump({"__metadata__": {"version": "3.0.0"}})) def get_model( self, model_name: str, base_model: BaseModelType, model_type: ModelType, - submodel_type: Optional[SubModelType] = None - )->ModelInfo: + submodel_type: Optional[SubModelType] = None, + ) -> ModelInfo: """Given a model named identified in models.yaml, return an ModelInfo object describing it. :param model_name: symbolic name of the model in models.yaml @@ -451,7 +461,7 @@ class ModelManager(object): if not model_path.exists(): if model_class.save_to_config: self.models[model_key].error = ModelError.NotFound - raise Exception(f"Files for model \"{model_key}\" not found") + raise Exception(f'Files for model "{model_key}" not found') else: self.models.pop(model_key, None) @@ -473,7 +483,7 @@ class ModelManager(object): model_path = model_class.convert_if_required( base_model=base_model, - model_path=str(model_path), # TODO: refactor str/Path types logic + model_path=str(model_path), # TODO: refactor str/Path types logic output_path=dst_convert_path, config=model_config, ) @@ -490,17 +500,17 @@ class ModelManager(object): self.cache_keys[model_key] = set() self.cache_keys[model_key].add(model_context.key) - model_hash = "" # TODO: + model_hash = "" # TODO: return ModelInfo( - context = model_context, - name = model_name, - base_model = base_model, - type = submodel_type or model_type, - hash = model_hash, - location = model_path, # TODO: - precision = self.cache.precision, - _cache = self.cache, + context=model_context, + name=model_name, + base_model=base_model, + type=submodel_type or model_type, + hash=model_hash, + location=model_path, # TODO: + precision=self.cache.precision, + _cache=self.cache, ) def model_info( @@ -516,7 +526,7 @@ class ModelManager(object): if model_key in self.models: return self.models[model_key].dict(exclude_defaults=True) else: - return None # TODO: None or empty dict on not found + return None # TODO: None or empty dict on not found def model_names(self) -> List[Tuple[str, BaseModelType, ModelType]]: """ @@ -526,16 +536,16 @@ class ModelManager(object): return [(self.parse_key(x)) for x in self.models.keys()] def list_model( - self, - model_name: str, - base_model: BaseModelType, - model_type: ModelType, + self, + model_name: str, + base_model: BaseModelType, + model_type: ModelType, ) -> dict: """ Returns a dict describing one installed model, using the combined format of the list_models() method. """ - models = self.list_models(base_model,model_type,model_name) + models = self.list_models(base_model, model_type, model_name) return models[0] if models else None def list_models( @@ -548,13 +558,17 @@ class ModelManager(object): Return a list of models. """ - model_keys = [self.create_key(model_name, base_model, model_type)] if model_name else sorted(self.models, key=str.casefold) + model_keys = ( + [self.create_key(model_name, base_model, model_type)] + if model_name + else sorted(self.models, key=str.casefold) + ) models = [] for model_key in model_keys: model_config = self.models.get(model_key) if not model_config: - self.logger.error(f'Unknown model {model_name}') - raise ModelNotFoundException(f'Unknown model {model_name}') + self.logger.error(f"Unknown model {model_name}") + raise ModelNotFoundException(f"Unknown model {model_name}") cur_model_name, cur_base_model, cur_model_type = self.parse_key(model_key) if base_model is not None and cur_base_model != base_model: @@ -571,8 +585,8 @@ class ModelManager(object): ) # expose paths as absolute to help web UI - if path := model_dict.get('path'): - model_dict['path'] = str(self.app_config.root_path / path) + if path := model_dict.get("path"): + model_dict["path"] = str(self.app_config.root_path / path) models.append(model_dict) return models @@ -641,15 +655,15 @@ class ModelManager(object): model_info(). """ # relativize paths as they go in - this makes it easier to move the root directory around - if path := model_attributes.get('path'): + if path := model_attributes.get("path"): if Path(path).is_relative_to(self.app_config.root_path): - model_attributes['path'] = str(Path(path).relative_to(self.app_config.root_path)) + model_attributes["path"] = str(Path(path).relative_to(self.app_config.root_path)) model_class = MODEL_CLASSES[base_model][model_type] model_config = model_class.create_config(**model_attributes) model_key = self.create_key(model_name, base_model, model_type) - if model_key in self.models and not clobber: + if model_key in self.models and not clobber: raise Exception(f'Attempt to overwrite existing model definition "{model_key}"') old_model = self.models.pop(model_key, None) @@ -673,24 +687,25 @@ class ModelManager(object): self.models[model_key] = model_config self.commit() + return AddModelResult( - name = model_name, - model_type = model_type, - base_model = base_model, - config = model_config, + name=model_name, + model_type=model_type, + base_model=base_model, + config=model_config, ) def rename_model( - self, - model_name: str, - base_model: BaseModelType, - model_type: ModelType, - new_name: str = None, - new_base: BaseModelType = None, + self, + model_name: str, + base_model: BaseModelType, + model_type: ModelType, + new_name: str = None, + new_base: BaseModelType = None, ): - ''' + """ Rename or rebase a model. - ''' + """ if new_name is None and new_base is None: self.logger.error("rename_model() called with neither a new_name nor a new_base. {model_name} unchanged.") return @@ -709,7 +724,13 @@ class ModelManager(object): # if this is a model file/directory that we manage ourselves, we need to move it if old_path.is_relative_to(self.app_config.models_path): - new_path = self.app_config.root_path / 'models' / BaseModelType(new_base).value / ModelType(model_type).value / new_name + new_path = ( + self.app_config.root_path + / "models" + / BaseModelType(new_base).value + / ModelType(model_type).value + / new_name + ) move(old_path, new_path) model_cfg.path = str(new_path.relative_to(self.app_config.root_path)) @@ -725,18 +746,18 @@ class ModelManager(object): for cache_id in cache_ids: self.cache.uncache_model(cache_id) - self.models.pop(model_key, None) # delete + self.models.pop(model_key, None) # delete self.models[new_key] = model_cfg self.commit() - def convert_model ( - self, - model_name: str, - base_model: BaseModelType, - model_type: Union[ModelType.Main,ModelType.Vae], - dest_directory: Optional[Path]=None, + def convert_model( + self, + model_name: str, + base_model: BaseModelType, + model_type: Union[ModelType.Main, ModelType.Vae], + dest_directory: Optional[Path] = None, ) -> AddModelResult: - ''' + """ Convert a checkpoint file into a diffusers folder, deleting the cached version and deleting the original checkpoint file if it is in the models directory. @@ -745,7 +766,7 @@ class ModelManager(object): :param model_type: Type of model ['vae' or 'main'] This will raise a ValueError unless the model is a checkpoint. - ''' + """ info = self.model_info(model_name, base_model, model_type) if info["model_format"] != "checkpoint": raise ValueError(f"not a checkpoint format model: {model_name}") @@ -753,27 +774,32 @@ class ModelManager(object): # We are taking advantage of a side effect of get_model() that converts check points # into cached diffusers directories stored at `location`. It doesn't matter # what submodeltype we request here, so we get the smallest. - submodel = {"submodel_type": SubModelType.Tokenizer} if model_type==ModelType.Main else {} - model = self.get_model(model_name, - base_model, - model_type, - **submodel, - ) + submodel = {"submodel_type": SubModelType.Scheduler} if model_type == ModelType.Main else {} + model = self.get_model( + model_name, + base_model, + model_type, + **submodel, + ) checkpoint_path = self.app_config.root_path / info["path"] old_diffusers_path = self.app_config.models_path / model.location - new_diffusers_path = (dest_directory or self.app_config.models_path / base_model.value / model_type.value) / model_name + new_diffusers_path = ( + dest_directory or self.app_config.models_path / base_model.value / model_type.value + ) / model_name if new_diffusers_path.exists(): raise ValueError(f"A diffusers model already exists at {new_diffusers_path}") try: - move(old_diffusers_path,new_diffusers_path) + move(old_diffusers_path, new_diffusers_path) info["model_format"] = "diffusers" - info["path"] = str(new_diffusers_path) if dest_directory else str(new_diffusers_path.relative_to(self.app_config.root_path)) - info.pop('config') + info["path"] = ( + str(new_diffusers_path) + if dest_directory + else str(new_diffusers_path.relative_to(self.app_config.root_path)) + ) + info.pop("config") - result = self.add_model(model_name, base_model, model_type, - model_attributes = info, - clobber=True) + result = self.add_model(model_name, base_model, model_type, model_attributes=info, clobber=True) except: # something went wrong, so don't leave dangling diffusers model in directory or it will cause a duplicate model error! rmtree(new_diffusers_path) @@ -797,15 +823,12 @@ class ModelManager(object): found_models = [] for file in files: location = str(file.resolve()).replace("\\", "/") - if ( - "model.safetensors" not in location - and "diffusion_pytorch_model.safetensors" not in location - ): + if "model.safetensors" not in location and "diffusion_pytorch_model.safetensors" not in location: found_models.append({"name": file.stem, "location": location}) return search_folder, found_models - def commit(self, conf_file: Path=None) -> None: + def commit(self, conf_file: Path = None) -> None: """ Write current configuration out to the indicated file. """ @@ -823,7 +846,7 @@ class ModelManager(object): yaml_str = OmegaConf.to_yaml(data_to_save) config_file_path = conf_file or self.config_path - assert config_file_path is not None,'no config file path to write to' + assert config_file_path is not None, "no config file path to write to" config_file_path = self.app_config.root_path / config_file_path tmpfile = os.path.join(os.path.dirname(config_file_path), "new_config.tmp") try: @@ -840,7 +863,7 @@ class ModelManager(object): Returns the preamble for the config file. """ return textwrap.dedent( - """\ + """ # This file describes the alternative machine learning models # available to InvokeAI script. # @@ -856,11 +879,10 @@ class ModelManager(object): base_model: Optional[BaseModelType] = None, model_type: Optional[ModelType] = None, ): - loaded_files = set() new_models_found = False - self.logger.info(f'Scanning {self.app_config.models_path} for new models') + self.logger.info(f"Scanning {self.app_config.models_path} for new models") with Chdir(self.app_config.root_path): for model_key, model_config in list(self.models.items()): model_name, cur_base_model, cur_model_type = self.parse_key(model_key) @@ -886,10 +908,10 @@ class ModelManager(object): models_dir = self.app_config.models_path / cur_base_model.value / cur_model_type.value if not models_dir.exists(): - continue # TODO: or create all folders? + continue # TODO: or create all folders? for model_path in models_dir.iterdir(): - if model_path not in loaded_files: # TODO: check + if model_path not in loaded_files: # TODO: check model_name = model_path.name if model_path.is_dir() else model_path.stem model_key = self.create_key(model_name, cur_base_model, cur_model_type) @@ -899,7 +921,7 @@ class ModelManager(object): if model_path.is_relative_to(self.app_config.root_path): model_path = model_path.relative_to(self.app_config.root_path) - + model_config: ModelConfigBase = model_class.probe_config(str(model_path)) self.models[model_key] = model_config new_models_found = True @@ -915,11 +937,10 @@ class ModelManager(object): if (new_models_found or imported_models) and self.config_path: self.commit() - - def autoimport(self)->Dict[str, AddModelResult]: - ''' + def autoimport(self) -> Dict[str, AddModelResult]: + """ Scan the autoimport directory (if defined) and import new models, delete defunct models. - ''' + """ # avoid circular import from invokeai.backend.install.model_install_backend import ModelInstall from invokeai.frontend.install.model_install import ask_user_for_prediction_type @@ -938,7 +959,9 @@ class ModelManager(object): self.new_models_found.update(self.installer.heuristic_import(model)) def on_search_completed(self): - self.logger.info(f'Scanned {self._items_scanned} files and directories, imported {len(self.new_models_found)} models') + self.logger.info( + f"Scanned {self._items_scanned} files and directories, imported {len(self.new_models_found)} models" + ) def models_found(self): return self.new_models_found @@ -948,31 +971,37 @@ class ModelManager(object): # LS: hacky # Patch in the SD VAE from core so that it is available for use by the UI try: - self.heuristic_import({config.root_path / 'models/core/convert/sd-vae-ft-mse'}) + self.heuristic_import({config.root_path / "models/core/convert/sd-vae-ft-mse"}) except: pass - installer = ModelInstall(config = self.app_config, - model_manager = self, - prediction_type_helper = ask_user_for_prediction_type, - ) - known_paths = {config.root_path / x['path'] for x in self.list_models()} - directories = {config.root_path / x for x in [config.autoimport_dir, - config.lora_dir, - config.embedding_dir, - config.controlnet_dir, - ] if x - } + installer = ModelInstall( + config=self.app_config, + model_manager=self, + prediction_type_helper=ask_user_for_prediction_type, + ) + known_paths = {config.root_path / x["path"] for x in self.list_models()} + directories = { + config.root_path / x + for x in [ + config.autoimport_dir, + config.lora_dir, + config.embedding_dir, + config.controlnet_dir, + ] + if x + } scanner = ScanAndImport(directories, self.logger, ignore=known_paths, installer=installer) scanner.search() - + return scanner.models_found() - def heuristic_import(self, - items_to_import: Set[str], - prediction_type_helper: Callable[[Path],SchedulerPredictionType]=None, - )->Dict[str, AddModelResult]: - '''Import a list of paths, repo_ids or URLs. Returns the set of + def heuristic_import( + self, + items_to_import: Set[str], + prediction_type_helper: Callable[[Path], SchedulerPredictionType] = None, + ) -> Dict[str, AddModelResult]: + """Import a list of paths, repo_ids or URLs. Returns the set of successfully imported items. :param items_to_import: Set of strings corresponding to models to be imported. :param prediction_type_helper: A callback that receives the Path of a Stable Diffusion 2 checkpoint model and returns a SchedulerPredictionType. @@ -991,14 +1020,15 @@ class ModelManager(object): May return the following exceptions: - ModelNotFoundException - one or more of the items to import is not a valid path, repo_id or URL - ValueError - a corresponding model already exists - ''' + """ # avoid circular import here from invokeai.backend.install.model_install_backend import ModelInstall + successfully_installed = dict() - installer = ModelInstall(config = self.app_config, - prediction_type_helper = prediction_type_helper, - model_manager = self) + installer = ModelInstall( + config=self.app_config, prediction_type_helper=prediction_type_helper, model_manager=self + ) for thing in items_to_import: installed = installer.heuristic_import(thing) successfully_installed.update(installed) diff --git a/invokeai/backend/model_management/model_merge.py b/invokeai/backend/model_management/model_merge.py index 6427b9e430..8cf3ce4ad0 100644 --- a/invokeai/backend/model_management/model_merge.py +++ b/invokeai/backend/model_management/model_merge.py @@ -17,23 +17,25 @@ import invokeai.backend.util.logging as logger from ...backend.model_management import ModelManager, ModelType, BaseModelType, ModelVariantType, AddModelResult + class MergeInterpolationMethod(str, Enum): WeightedSum = "weighted_sum" Sigmoid = "sigmoid" InvSigmoid = "inv_sigmoid" AddDifference = "add_difference" + class ModelMerger(object): def __init__(self, manager: ModelManager): self.manager = manager def merge_diffusion_models( - self, - model_paths: List[Path], - alpha: float = 0.5, - interp: MergeInterpolationMethod = None, - force: bool = False, - **kwargs, + self, + model_paths: List[Path], + alpha: float = 0.5, + interp: MergeInterpolationMethod = None, + force: bool = False, + **kwargs, ) -> DiffusionPipeline: """ :param model_paths: up to three models, designated by their local paths or HuggingFace repo_ids @@ -58,24 +60,23 @@ class ModelMerger(object): merged_pipe = pipe.merge( pretrained_model_name_or_path_list=model_paths, alpha=alpha, - interp=interp.value if interp else None, #diffusers API treats None as "weighted sum" + interp=interp.value if interp else None, # diffusers API treats None as "weighted sum" force=force, **kwargs, ) dlogging.set_verbosity(verbosity) return merged_pipe - - def merge_diffusion_models_and_save ( - self, - model_names: List[str], - base_model: Union[BaseModelType,str], - merged_model_name: str, - alpha: float = 0.5, - interp: MergeInterpolationMethod = None, - force: bool = False, - merge_dest_directory: Optional[Path] = None, - **kwargs, + def merge_diffusion_models_and_save( + self, + model_names: List[str], + base_model: Union[BaseModelType, str], + merged_model_name: str, + alpha: float = 0.5, + interp: MergeInterpolationMethod = None, + force: bool = False, + merge_dest_directory: Optional[Path] = None, + **kwargs, ) -> AddModelResult: """ :param models: up to three models, designated by their InvokeAI models.yaml model name @@ -94,39 +95,45 @@ class ModelMerger(object): config = self.manager.app_config base_model = BaseModelType(base_model) vae = None - + for mod in model_names: info = self.manager.list_model(mod, base_model=base_model, model_type=ModelType.Main) - assert info, f"model {mod}, base_model {base_model}, is unknown" - assert info["model_format"] == "diffusers", f"{mod} is not a diffusers model. It must be optimized before merging" - assert info["variant"] == "normal", f"{mod} is a {info['variant']} model, which cannot currently be merged" - assert len(model_names) <= 2 or \ - interp==MergeInterpolationMethod.AddDifference, "When merging three models, only the 'add_difference' merge method is supported" + assert info, f"model {mod}, base_model {base_model}, is unknown" + assert ( + info["model_format"] == "diffusers" + ), f"{mod} is not a diffusers model. It must be optimized before merging" + assert info["variant"] == "normal", f"{mod} is a {info['variant']} model, which cannot currently be merged" + assert ( + len(model_names) <= 2 or interp == MergeInterpolationMethod.AddDifference + ), "When merging three models, only the 'add_difference' merge method is supported" # pick up the first model's vae if mod == model_names[0]: vae = info.get("vae") model_paths.extend([config.root_path / info["path"]]) - merge_method = None if interp == 'weighted_sum' else MergeInterpolationMethod(interp) - logger.debug(f'interp = {interp}, merge_method={merge_method}') - merged_pipe = self.merge_diffusion_models( - model_paths, alpha, merge_method, force, **kwargs + merge_method = None if interp == "weighted_sum" else MergeInterpolationMethod(interp) + logger.debug(f"interp = {interp}, merge_method={merge_method}") + merged_pipe = self.merge_diffusion_models(model_paths, alpha, merge_method, force, **kwargs) + dump_path = ( + Path(merge_dest_directory) + if merge_dest_directory + else config.models_path / base_model.value / ModelType.Main.value ) - dump_path = Path(merge_dest_directory) if merge_dest_directory else config.models_path / base_model.value / ModelType.Main.value dump_path.mkdir(parents=True, exist_ok=True) dump_path = dump_path / merged_model_name merged_pipe.save_pretrained(dump_path, safe_serialization=1) attributes = dict( - path = str(dump_path), - description = f"Merge of models {', '.join(model_names)}", - model_format = "diffusers", - variant = ModelVariantType.Normal.value, - vae = vae, + path=str(dump_path), + description=f"Merge of models {', '.join(model_names)}", + model_format="diffusers", + variant=ModelVariantType.Normal.value, + vae=vae, + ) + return self.manager.add_model( + merged_model_name, + base_model=base_model, + model_type=ModelType.Main, + model_attributes=attributes, + clobber=True, ) - return self.manager.add_model(merged_model_name, - base_model = base_model, - model_type = ModelType.Main, - model_attributes = attributes, - clobber = True - ) diff --git a/invokeai/backend/model_management/model_probe.py b/invokeai/backend/model_management/model_probe.py index 6a65401675..0e06f9b32d 100644 --- a/invokeai/backend/model_management/model_probe.py +++ b/invokeai/backend/model_management/model_probe.py @@ -10,12 +10,16 @@ from typing import Callable, Literal, Union, Dict, Optional from picklescan.scanner import scan_file_path from .models import ( - BaseModelType, ModelType, ModelVariantType, - SchedulerPredictionType, SilenceWarnings, - InvalidModelException + BaseModelType, + ModelType, + ModelVariantType, + SchedulerPredictionType, + SilenceWarnings, + InvalidModelException, ) from .models.base import read_checkpoint_meta + @dataclass class ModelProbeInfo(object): model_type: ModelType @@ -23,70 +27,74 @@ class ModelProbeInfo(object): variant_type: ModelVariantType prediction_type: SchedulerPredictionType upcast_attention: bool - format: Literal['diffusers','checkpoint', 'lycoris'] + format: Literal["diffusers", "checkpoint", "lycoris"] image_size: int + class ProbeBase(object): - '''forward declaration''' + """forward declaration""" + pass + class ModelProbe(object): - PROBES = { - 'diffusers': { }, - 'checkpoint': { }, + "diffusers": {}, + "checkpoint": {}, } CLASS2TYPE = { - 'StableDiffusionPipeline' : ModelType.Main, - 'StableDiffusionInpaintPipeline' : ModelType.Main, - 'StableDiffusionXLPipeline' : ModelType.Main, - 'StableDiffusionXLImg2ImgPipeline' : ModelType.Main, - 'AutoencoderKL' : ModelType.Vae, - 'ControlNetModel' : ModelType.ControlNet, + "StableDiffusionPipeline": ModelType.Main, + "StableDiffusionInpaintPipeline": ModelType.Main, + "StableDiffusionXLPipeline": ModelType.Main, + "StableDiffusionXLImg2ImgPipeline": ModelType.Main, + "AutoencoderKL": ModelType.Vae, + "ControlNetModel": ModelType.ControlNet, } - + @classmethod - def register_probe(cls, - format: Literal['diffusers','checkpoint'], - model_type: ModelType, - probe_class: ProbeBase): + def register_probe(cls, format: Literal["diffusers", "checkpoint"], model_type: ModelType, probe_class: ProbeBase): cls.PROBES[format][model_type] = probe_class @classmethod - def heuristic_probe(cls, - model: Union[Dict, ModelMixin, Path], - prediction_type_helper: Callable[[Path],SchedulerPredictionType]=None, - )->ModelProbeInfo: - if isinstance(model,Path): - return cls.probe(model_path=model,prediction_type_helper=prediction_type_helper) - elif isinstance(model,(dict,ModelMixin,ConfigMixin)): + def heuristic_probe( + cls, + model: Union[Dict, ModelMixin, Path], + prediction_type_helper: Callable[[Path], SchedulerPredictionType] = None, + ) -> ModelProbeInfo: + if isinstance(model, Path): + return cls.probe(model_path=model, prediction_type_helper=prediction_type_helper) + elif isinstance(model, (dict, ModelMixin, ConfigMixin)): return cls.probe(model_path=None, model=model, prediction_type_helper=prediction_type_helper) else: raise InvalidModelException("model parameter {model} is neither a Path, nor a model") @classmethod - def probe(cls, - model_path: Path, - model: Optional[Union[Dict, ModelMixin]] = None, - prediction_type_helper: Optional[Callable[[Path],SchedulerPredictionType]] = None)->ModelProbeInfo: - ''' + def probe( + cls, + model_path: Path, + model: Optional[Union[Dict, ModelMixin]] = None, + prediction_type_helper: Optional[Callable[[Path], SchedulerPredictionType]] = None, + ) -> ModelProbeInfo: + """ Probe the model at model_path and return sufficient information about it to place it somewhere in the models directory hierarchy. If the model is already loaded into memory, you may provide it as model in order to avoid opening it a second time. The prediction_type_helper callable is a function that receives the path to the model and returns the BaseModelType. It is called to distinguish between V2-Base and V2-768 SD models. - ''' + """ if model_path: - format_type = 'diffusers' if model_path.is_dir() else 'checkpoint' + format_type = "diffusers" if model_path.is_dir() else "checkpoint" else: - format_type = 'diffusers' if isinstance(model,(ConfigMixin,ModelMixin)) else 'checkpoint' + format_type = "diffusers" if isinstance(model, (ConfigMixin, ModelMixin)) else "checkpoint" model_info = None try: - model_type = cls.get_model_type_from_folder(model_path, model) \ - if format_type == 'diffusers' \ - else cls.get_model_type_from_checkpoint(model_path, model) + model_type = ( + cls.get_model_type_from_folder(model_path, model) + if format_type == "diffusers" + else cls.get_model_type_from_checkpoint(model_path, model) + ) probe_class = cls.PROBES[format_type].get(model_type) if not probe_class: return None @@ -96,17 +104,23 @@ class ModelProbe(object): prediction_type = probe.get_scheduler_prediction_type() format = probe.get_format() model_info = ModelProbeInfo( - model_type = model_type, - base_type = base_type, - variant_type = variant_type, - prediction_type = prediction_type, - upcast_attention = (base_type==BaseModelType.StableDiffusion2 \ - 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 + model_type=model_type, + base_type=base_type, + variant_type=variant_type, + prediction_type=prediction_type, + upcast_attention=( + base_type == BaseModelType.StableDiffusion2 + 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, ) except Exception: raise @@ -115,7 +129,7 @@ class ModelProbe(object): @classmethod def get_model_type_from_checkpoint(cls, model_path: Path, checkpoint: dict) -> ModelType: - if model_path.suffix not in ('.bin','.pt','.ckpt','.safetensors','.pth'): + if model_path.suffix not in (".bin", ".pt", ".ckpt", ".safetensors", ".pth"): return None if model_path.name == "learned_embeds.bin": @@ -142,32 +156,32 @@ class ModelProbe(object): # diffusers-ti if len(ckpt) < 10 and all(isinstance(v, torch.Tensor) for v in ckpt.values()): return ModelType.TextualInversion - + raise InvalidModelException(f"Unable to determine model type for {model_path}") @classmethod - def get_model_type_from_folder(cls, folder_path: Path, model: ModelMixin)->ModelType: - ''' + def get_model_type_from_folder(cls, folder_path: Path, model: ModelMixin) -> ModelType: + """ Get the model type of a hugging-face style folder. - ''' + """ class_name = None if model: class_name = model.__class__.__name__ else: - if (folder_path / 'learned_embeds.bin').exists(): + if (folder_path / "learned_embeds.bin").exists(): return ModelType.TextualInversion - if (folder_path / 'pytorch_lora_weights.bin').exists(): + if (folder_path / "pytorch_lora_weights.bin").exists(): return ModelType.Lora - i = folder_path / 'model_index.json' - c = folder_path / 'config.json' + i = folder_path / "model_index.json" + c = folder_path / "config.json" config_path = i if i.exists() else c if c.exists() else None if config_path: - with open(config_path,'r') as file: + with open(config_path, "r") as file: conf = json.load(file) - class_name = conf['_class_name'] + class_name = conf["_class_name"] if class_name and (type := cls.CLASS2TYPE.get(class_name)): return type @@ -176,7 +190,7 @@ class ModelProbe(object): raise InvalidModelException(f"Unable to determine model type for {folder_path}") @classmethod - def _scan_and_load_checkpoint(cls,model_path: Path)->dict: + def _scan_and_load_checkpoint(cls, model_path: Path) -> dict: with SilenceWarnings(): if model_path.suffix.endswith((".ckpt", ".pt", ".bin")): cls._scan_model(model_path, model_path) @@ -186,55 +200,53 @@ class ModelProbe(object): @classmethod def _scan_model(cls, model_name, checkpoint): - """ - Apply picklescanner to the indicated checkpoint and issue a warning - and option to exit if an infected file is identified. - """ - # scan model - scan_result = scan_file_path(checkpoint) - if scan_result.infected_files != 0: - raise "The model {model_name} is potentially infected by malware. Aborting import." + """ + Apply picklescanner to the indicated checkpoint and issue a warning + and option to exit if an infected file is identified. + """ + # scan model + scan_result = scan_file_path(checkpoint) + if scan_result.infected_files != 0: + raise "The model {model_name} is potentially infected by malware. Aborting import." + ###################################################3 # Checkpoint probing ###################################################3 class ProbeBase(object): - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: pass - def get_variant_type(self)->ModelVariantType: - pass - - def get_scheduler_prediction_type(self)->SchedulerPredictionType: + def get_variant_type(self) -> ModelVariantType: pass - def get_format(self)->str: + def get_scheduler_prediction_type(self) -> SchedulerPredictionType: pass + def get_format(self) -> str: + pass + + class CheckpointProbeBase(ProbeBase): - def __init__(self, - checkpoint_path: Path, - checkpoint: dict, - helper: Callable[[Path],SchedulerPredictionType] = None - )->BaseModelType: + def __init__( + self, checkpoint_path: Path, checkpoint: dict, helper: Callable[[Path], SchedulerPredictionType] = None + ) -> BaseModelType: self.checkpoint = checkpoint or ModelProbe._scan_and_load_checkpoint(checkpoint_path) self.checkpoint_path = checkpoint_path self.helper = helper - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: pass - def get_format(self)->str: - return 'checkpoint' + def get_format(self) -> str: + return "checkpoint" - def get_variant_type(self)-> ModelVariantType: - model_type = ModelProbe.get_model_type_from_checkpoint(self.checkpoint_path,self.checkpoint) + def get_variant_type(self) -> ModelVariantType: + model_type = ModelProbe.get_model_type_from_checkpoint(self.checkpoint_path, self.checkpoint) if model_type != ModelType.Main: return ModelVariantType.Normal - state_dict = self.checkpoint.get('state_dict') or self.checkpoint - in_channels = state_dict[ - "model.diffusion_model.input_blocks.0.0.weight" - ].shape[1] + state_dict = self.checkpoint.get("state_dict") or self.checkpoint + in_channels = state_dict["model.diffusion_model.input_blocks.0.0.weight"].shape[1] if in_channels == 9: return ModelVariantType.Inpaint elif in_channels == 5: @@ -242,51 +254,60 @@ class CheckpointProbeBase(ProbeBase): elif in_channels == 4: return ModelVariantType.Normal else: - raise InvalidModelException(f"Cannot determine variant type (in_channels={in_channels}) at {self.checkpoint_path}") + raise InvalidModelException( + f"Cannot determine variant type (in_channels={in_channels}) at {self.checkpoint_path}" + ) + class PipelineCheckpointProbe(CheckpointProbeBase): - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: checkpoint = self.checkpoint - state_dict = self.checkpoint.get('state_dict') or checkpoint + state_dict = self.checkpoint.get("state_dict") or checkpoint key_name = "model.diffusion_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight" if key_name in state_dict and state_dict[key_name].shape[-1] == 768: return BaseModelType.StableDiffusion1 if key_name in state_dict and state_dict[key_name].shape[-1] == 1024: return BaseModelType.StableDiffusion2 - # TODO: Verify that this is correct! Need an XL checkpoint file for this. + key_name = "model.diffusion_model.input_blocks.4.1.transformer_blocks.0.attn2.to_k.weight" if key_name in state_dict and state_dict[key_name].shape[-1] == 2048: return BaseModelType.StableDiffusionXL - raise InvalidModelException("Cannot determine base type") + elif key_name in state_dict and state_dict[key_name].shape[-1] == 1280: + return BaseModelType.StableDiffusionXLRefiner + else: + raise InvalidModelException("Cannot determine base type") - def get_scheduler_prediction_type(self)->SchedulerPredictionType: + def get_scheduler_prediction_type(self) -> SchedulerPredictionType: type = self.get_base_type() if type == BaseModelType.StableDiffusion1: return SchedulerPredictionType.Epsilon checkpoint = self.checkpoint - state_dict = self.checkpoint.get('state_dict') or checkpoint + state_dict = self.checkpoint.get("state_dict") or checkpoint key_name = "model.diffusion_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight" if key_name in state_dict and state_dict[key_name].shape[-1] == 1024: - if 'global_step' in checkpoint: - if checkpoint['global_step'] == 220000: + if "global_step" in checkpoint: + if checkpoint["global_step"] == 220000: return SchedulerPredictionType.Epsilon elif checkpoint["global_step"] == 110000: return SchedulerPredictionType.VPrediction - if self.checkpoint_path and self.helper \ - and not self.checkpoint_path.with_suffix('.yaml').exists(): # if a .yaml config file exists, then this step not needed + if ( + self.checkpoint_path and self.helper and not self.checkpoint_path.with_suffix(".yaml").exists() + ): # if a .yaml config file exists, then this step not needed return self.helper(self.checkpoint_path) else: return None + class VaeCheckpointProbe(CheckpointProbeBase): - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: # I can't find any standalone 2.X VAEs to test with! return BaseModelType.StableDiffusion1 -class LoRACheckpointProbe(CheckpointProbeBase): - def get_format(self)->str: - return 'lycoris' - def get_base_type(self)->BaseModelType: +class LoRACheckpointProbe(CheckpointProbeBase): + def get_format(self) -> str: + return "lycoris" + + def get_base_type(self) -> BaseModelType: checkpoint = self.checkpoint key1 = "lora_te_text_model_encoder_layers_0_mlp_fc1.lora_down.weight" key2 = "lora_te_text_model_encoder_layers_0_self_attn_k_proj.hada_w1_a" @@ -304,16 +325,17 @@ class LoRACheckpointProbe(CheckpointProbeBase): else: return None + class TextualInversionCheckpointProbe(CheckpointProbeBase): - def get_format(self)->str: + def get_format(self) -> str: return None - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: checkpoint = self.checkpoint - if 'string_to_token' in checkpoint: - token_dim = list(checkpoint['string_to_param'].values())[0].shape[-1] - elif 'emb_params' in checkpoint: - token_dim = checkpoint['emb_params'].shape[-1] + if "string_to_token" in checkpoint: + token_dim = list(checkpoint["string_to_param"].values())[0].shape[-1] + elif "emb_params" in checkpoint: + token_dim = checkpoint["emb_params"].shape[-1] else: token_dim = list(checkpoint.values())[0].shape[0] if token_dim == 768: @@ -323,12 +345,14 @@ class TextualInversionCheckpointProbe(CheckpointProbeBase): else: return None + class ControlNetCheckpointProbe(CheckpointProbeBase): - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: checkpoint = self.checkpoint - for key_name in ('control_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight', - 'input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight' - ): + for key_name in ( + "control_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight", + "input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight", + ): if key_name not in checkpoint: continue if checkpoint[key_name].shape[-1] == 768: @@ -339,56 +363,54 @@ class ControlNetCheckpointProbe(CheckpointProbeBase): return self.helper(self.checkpoint_path) raise InvalidModelException("Unable to determine base type for {self.checkpoint_path}") + ######################################################## # classes for probing folders ####################################################### class FolderProbeBase(ProbeBase): - def __init__(self, - folder_path: Path, - model: ModelMixin = None, - helper: Callable=None # not used - ): + def __init__(self, folder_path: Path, model: ModelMixin = None, helper: Callable = None): # not used self.model = model self.folder_path = folder_path - def get_variant_type(self)->ModelVariantType: + def get_variant_type(self) -> ModelVariantType: return ModelVariantType.Normal - def get_format(self)->str: - return 'diffusers' - + def get_format(self) -> str: + return "diffusers" + + class PipelineFolderProbe(FolderProbeBase): - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: if self.model: unet_conf = self.model.unet.config else: - with open(self.folder_path / 'unet' / 'config.json','r') as file: + with open(self.folder_path / "unet" / "config.json", "r") as file: unet_conf = json.load(file) - if unet_conf['cross_attention_dim'] == 768: - return BaseModelType.StableDiffusion1 - elif unet_conf['cross_attention_dim'] == 1024: + if unet_conf["cross_attention_dim"] == 768: + return BaseModelType.StableDiffusion1 + elif unet_conf["cross_attention_dim"] == 1024: return BaseModelType.StableDiffusion2 - elif unet_conf['cross_attention_dim'] == 1280: + elif unet_conf["cross_attention_dim"] == 1280: return BaseModelType.StableDiffusionXLRefiner - elif unet_conf['cross_attention_dim'] == 2048: + elif unet_conf["cross_attention_dim"] == 2048: return BaseModelType.StableDiffusionXL else: - raise InvalidModelException(f'Unknown base model for {self.folder_path}') + raise InvalidModelException(f"Unknown base model for {self.folder_path}") - def get_scheduler_prediction_type(self)->SchedulerPredictionType: + def get_scheduler_prediction_type(self) -> SchedulerPredictionType: if self.model: scheduler_conf = self.model.scheduler.config else: - with open(self.folder_path / 'scheduler' / 'scheduler_config.json','r') as file: + with open(self.folder_path / "scheduler" / "scheduler_config.json", "r") as file: scheduler_conf = json.load(file) - if scheduler_conf['prediction_type'] == "v_prediction": + if scheduler_conf["prediction_type"] == "v_prediction": return SchedulerPredictionType.VPrediction - elif scheduler_conf['prediction_type'] == 'epsilon': + elif scheduler_conf["prediction_type"] == "epsilon": return SchedulerPredictionType.Epsilon else: return None - - def get_variant_type(self)->ModelVariantType: + + def get_variant_type(self) -> ModelVariantType: # This only works for pipelines! Any kind of # exception results in our returning the # "normal" variant type @@ -396,11 +418,11 @@ class PipelineFolderProbe(FolderProbeBase): if self.model: conf = self.model.unet.config else: - config_file = self.folder_path / 'unet' / 'config.json' - with open(config_file,'r') as file: + config_file = self.folder_path / "unet" / "config.json" + with open(config_file, "r") as file: conf = json.load(file) - - in_channels = conf['in_channels'] + + in_channels = conf["in_channels"] if in_channels == 9: return ModelVariantType.Inpaint elif in_channels == 5: @@ -411,53 +433,67 @@ class PipelineFolderProbe(FolderProbeBase): pass return ModelVariantType.Normal + class VaeFolderProbe(FolderProbeBase): - def get_base_type(self)->BaseModelType: - return BaseModelType.StableDiffusion1 + def get_base_type(self) -> BaseModelType: + 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 + ) + class TextualInversionFolderProbe(FolderProbeBase): - def get_format(self)->str: + def get_format(self) -> str: return None - - def get_base_type(self)->BaseModelType: - path = self.folder_path / 'learned_embeds.bin' + + def get_base_type(self) -> BaseModelType: + path = self.folder_path / "learned_embeds.bin" if not path.exists(): return None checkpoint = ModelProbe._scan_and_load_checkpoint(path) - return TextualInversionCheckpointProbe(None,checkpoint=checkpoint).get_base_type() + return TextualInversionCheckpointProbe(None, checkpoint=checkpoint).get_base_type() + class ControlNetFolderProbe(FolderProbeBase): - def get_base_type(self)->BaseModelType: - config_file = self.folder_path / 'config.json' + def get_base_type(self) -> BaseModelType: + 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: + with open(config_file, "r") as file: config = json.load(file) # no obvious way to distinguish between sd2-base and sd2-768 - return BaseModelType.StableDiffusion1 \ - if config['cross_attention_dim']==768 \ - else BaseModelType.StableDiffusion2 + return ( + BaseModelType.StableDiffusion1 if config["cross_attention_dim"] == 768 else BaseModelType.StableDiffusion2 + ) + class LoRAFolderProbe(FolderProbeBase): - def get_base_type(self)->BaseModelType: + def get_base_type(self) -> BaseModelType: model_file = None - for suffix in ['safetensors','bin']: - base_file = self.folder_path / f'pytorch_lora_weights.{suffix}' + for suffix in ["safetensors", "bin"]: + base_file = self.folder_path / f"pytorch_lora_weights.{suffix}" if base_file.exists(): model_file = base_file break if not model_file: - raise InvalidModelException('Unknown LoRA format encountered') - return LoRACheckpointProbe(model_file,None).get_base_type() + raise InvalidModelException("Unknown LoRA format encountered") + return LoRACheckpointProbe(model_file, None).get_base_type() + ############## 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('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("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("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) diff --git a/invokeai/backend/model_management/model_search.py b/invokeai/backend/model_management/model_search.py index 5657bd9549..9c87d6c408 100644 --- a/invokeai/backend/model_management/model_search.py +++ b/invokeai/backend/model_management/model_search.py @@ -10,8 +10,9 @@ from pathlib import Path import invokeai.backend.util.logging as logger + class ModelSearch(ABC): - def __init__(self, directories: List[Path], logger: types.ModuleType=logger): + def __init__(self, directories: List[Path], logger: types.ModuleType = logger): """ Initialize a recursive model directory search. :param directories: List of directory Paths to recurse through @@ -56,18 +57,23 @@ class ModelSearch(ABC): def walk_directory(self, path: Path): for root, dirs, files in os.walk(path): - if str(Path(root).name).startswith('.'): + if str(Path(root).name).startswith("."): self._pruned_paths.add(root) if any([Path(root).is_relative_to(x) for x in self._pruned_paths]): continue - + self._items_scanned += len(dirs) + len(files) for d in dirs: path = Path(root) / d if path in self._scanned_paths or path.parent in self._scanned_dirs: self._scanned_dirs.add(path) continue - if any([(path/x).exists() for x in {'config.json','model_index.json','learned_embeds.bin','pytorch_lora_weights.bin'}]): + if any( + [ + (path / x).exists() + for x in {"config.json", "model_index.json", "learned_embeds.bin", "pytorch_lora_weights.bin"} + ] + ): try: self.on_model_found(path) self._models_found += 1 @@ -79,18 +85,19 @@ class ModelSearch(ABC): path = Path(root) / f if path.parent in self._scanned_dirs: continue - if path.suffix in {'.ckpt','.bin','.pth','.safetensors','.pt'}: + if path.suffix in {".ckpt", ".bin", ".pth", ".safetensors", ".pt"}: try: self.on_model_found(path) self._models_found += 1 except Exception as e: self.logger.warning(str(e)) + class FindModels(ModelSearch): def on_search_started(self): self.models_found: Set[Path] = set() - def on_model_found(self,model: Path): + def on_model_found(self, model: Path): self.models_found.add(model) def on_search_completed(self): @@ -99,5 +106,3 @@ class FindModels(ModelSearch): def list_models(self) -> List[Path]: self.search() return list(self.models_found) - - diff --git a/invokeai/backend/model_management/models/__init__.py b/invokeai/backend/model_management/models/__init__.py index 2eb9028d6e..b15e1d309a 100644 --- a/invokeai/backend/model_management/models/__init__.py +++ b/invokeai/backend/model_management/models/__init__.py @@ -3,15 +3,24 @@ from enum import Enum from pydantic import BaseModel from typing import Literal, get_origin from .base import ( - BaseModelType, ModelType, SubModelType, ModelBase, ModelConfigBase, - ModelVariantType, SchedulerPredictionType, ModelError, SilenceWarnings, - ModelNotFoundException, InvalidModelException, DuplicateModelException - ) + BaseModelType, + ModelType, + SubModelType, + ModelBase, + ModelConfigBase, + ModelVariantType, + SchedulerPredictionType, + ModelError, + SilenceWarnings, + ModelNotFoundException, + InvalidModelException, + DuplicateModelException, +) from .stable_diffusion import StableDiffusion1Model, StableDiffusion2Model from .sdxl import StableDiffusionXLModel from .vae import VaeModel from .lora import LoRAModel -from .controlnet import ControlNetModel # TODO: +from .controlnet import ControlNetModel # TODO: from .textual_inversion import TextualInversionModel MODEL_CLASSES = { @@ -45,18 +54,19 @@ MODEL_CLASSES = { ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, }, - #BaseModelType.Kandinsky2_1: { + # BaseModelType.Kandinsky2_1: { # ModelType.Main: Kandinsky2_1Model, # ModelType.MoVQ: MoVQModel, # ModelType.Lora: LoRAModel, # ModelType.ControlNet: ControlNetModel, # ModelType.TextualInversion: TextualInversionModel, - #}, + # }, } MODEL_CONFIGS = list() OPENAPI_MODEL_CONFIGS = list() + class OpenAPIModelInfoBase(BaseModel): model_name: str base_model: BaseModelType @@ -72,27 +82,31 @@ for base_model, models in MODEL_CLASSES.items(): # LS: sort to get the checkpoint configs first, which makes # for a better template in the Swagger docs for cfg in sorted(model_configs, key=lambda x: str(x)): - model_name, cfg_name = cfg.__qualname__.split('.')[-2:] + model_name, cfg_name = cfg.__qualname__.split(".")[-2:] openapi_cfg_name = model_name + cfg_name if openapi_cfg_name in vars(): continue - api_wrapper = type(openapi_cfg_name, (cfg, OpenAPIModelInfoBase), dict( - __annotations__ = dict( - model_type=Literal[model_type.value], + api_wrapper = type( + openapi_cfg_name, + (cfg, OpenAPIModelInfoBase), + dict( + __annotations__=dict( + model_type=Literal[model_type.value], + ), ), - )) + ) - #globals()[openapi_cfg_name] = api_wrapper + # globals()[openapi_cfg_name] = api_wrapper vars()[openapi_cfg_name] = api_wrapper OPENAPI_MODEL_CONFIGS.append(api_wrapper) + def get_model_config_enums(): enums = list() for model_config in MODEL_CONFIGS: - - if hasattr(inspect,'get_annotations'): + if hasattr(inspect, "get_annotations"): fields = inspect.get_annotations(model_config) else: fields = model_config.__annotations__ @@ -109,7 +123,9 @@ def get_model_config_enums(): if isinstance(field, type) and issubclass(field, str) and issubclass(field, Enum): enums.append(field) - elif get_origin(field) is Literal and all(isinstance(arg, str) and isinstance(arg, Enum) for arg in field.__args__): + elif get_origin(field) is Literal and all( + isinstance(arg, str) and isinstance(arg, Enum) for arg in field.__args__ + ): enums.append(type(field.__args__[0])) elif field is None: @@ -119,4 +135,3 @@ def get_model_config_enums(): raise Exception(f"Unsupported format definition in {model_configs.__qualname__}") return enums - diff --git a/invokeai/backend/model_management/models/base.py b/invokeai/backend/model_management/models/base.py index 912c3270cd..f2142f772f 100644 --- a/invokeai/backend/model_management/models/base.py +++ b/invokeai/backend/model_management/models/base.py @@ -15,29 +15,35 @@ from contextlib import suppress from pydantic import BaseModel, Field from typing import List, Dict, Optional, Type, Literal, TypeVar, Generic, Callable, Any, Union + class DuplicateModelException(Exception): pass + class InvalidModelException(Exception): pass + class ModelNotFoundException(Exception): pass + class BaseModelType(str, Enum): StableDiffusion1 = "sd-1" StableDiffusion2 = "sd-2" StableDiffusionXL = "sdxl" StableDiffusionXLRefiner = "sdxl-refiner" - #Kandinsky2_1 = "kandinsky-2.1" + # Kandinsky2_1 = "kandinsky-2.1" + class ModelType(str, Enum): Main = "main" Vae = "vae" Lora = "lora" - ControlNet = "controlnet" # used by model_probe + ControlNet = "controlnet" # used by model_probe TextualInversion = "embedding" + class SubModelType(str, Enum): UNet = "unet" TextEncoder = "text_encoder" @@ -47,23 +53,27 @@ class SubModelType(str, Enum): Vae = "vae" Scheduler = "scheduler" SafetyChecker = "safety_checker" - #MoVQ = "movq" + # MoVQ = "movq" + class ModelVariantType(str, Enum): Normal = "normal" Inpaint = "inpaint" Depth = "depth" + class SchedulerPredictionType(str, Enum): Epsilon = "epsilon" VPrediction = "v_prediction" Sample = "sample" - + + class ModelError(str, Enum): NotFound = "not_found" + class ModelConfigBase(BaseModel): - path: str # or Path + path: str # or Path description: Optional[str] = Field(None) model_format: Optional[str] = Field(None) error: Optional[ModelError] = Field(None) @@ -71,13 +81,17 @@ class ModelConfigBase(BaseModel): class Config: use_enum_values = True + class EmptyConfigLoader(ConfigMixin): @classmethod def load_config(cls, *args, **kwargs): cls.config_name = kwargs.pop("config_name") return super().load_config(*args, **kwargs) -T_co = TypeVar('T_co', covariant=True) + +T_co = TypeVar("T_co", covariant=True) + + class classproperty(Generic[T_co]): def __init__(self, fget: Callable[[Any], T_co]) -> None: self.fget = fget @@ -86,12 +100,13 @@ class classproperty(Generic[T_co]): return self.fget(owner) def __set__(self, instance: Optional[Any], value: Any) -> None: - raise AttributeError('cannot set attribute') + raise AttributeError("cannot set attribute") + class ModelBase(metaclass=ABCMeta): - #model_path: str - #base_model: BaseModelType - #model_type: ModelType + # model_path: str + # base_model: BaseModelType + # model_type: ModelType def __init__( self, @@ -110,7 +125,7 @@ class ModelBase(metaclass=ABCMeta): return None elif any(t is None for t in subtypes): raise Exception(f"Unsupported definition: {subtypes}") - + if subtypes[0] in ["diffusers", "transformers"]: res_type = sys.modules[subtypes[0]] subtypes = subtypes[1:] @@ -119,7 +134,6 @@ class ModelBase(metaclass=ABCMeta): res_type = sys.modules["diffusers"] res_type = getattr(res_type, "pipelines") - for subtype in subtypes: res_type = getattr(res_type, subtype) return res_type @@ -128,7 +142,7 @@ class ModelBase(metaclass=ABCMeta): def _get_configs(cls): with suppress(Exception): return cls.__configs - + configs = dict() for name in dir(cls): if name.startswith("__"): @@ -138,7 +152,7 @@ class ModelBase(metaclass=ABCMeta): if not isinstance(value, type) or not issubclass(value, ModelConfigBase): continue - if hasattr(inspect,'get_annotations'): + if hasattr(inspect, "get_annotations"): fields = inspect.get_annotations(value) else: fields = value.__annotations__ @@ -151,7 +165,9 @@ class ModelBase(metaclass=ABCMeta): for model_format in field: configs[model_format.value] = value - elif typing.get_origin(field) is Literal and all(isinstance(arg, str) and isinstance(arg, Enum) for arg in field.__args__): + elif typing.get_origin(field) is Literal and all( + isinstance(arg, str) and isinstance(arg, Enum) for arg in field.__args__ + ): for model_format in field.__args__: configs[model_format.value] = value @@ -203,8 +219,8 @@ class ModelBase(metaclass=ABCMeta): class DiffusersModel(ModelBase): - #child_types: Dict[str, Type] - #child_sizes: Dict[str, int] + # child_types: Dict[str, Type] + # child_sizes: Dict[str, int] def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): super().__init__(model_path, base_model, model_type) @@ -214,7 +230,7 @@ class DiffusersModel(ModelBase): try: config_data = DiffusionPipeline.load_config(self.model_path) - #config_data = json.loads(os.path.join(self.model_path, "model_index.json")) + # config_data = json.loads(os.path.join(self.model_path, "model_index.json")) except: raise Exception("Invalid diffusers model! (model_index.json not found or invalid)") @@ -228,14 +244,12 @@ class DiffusersModel(ModelBase): self.child_types[child_name] = child_type self.child_sizes[child_name] = calc_model_size_by_fs(self.model_path, subfolder=child_name) - def get_size(self, child_type: Optional[SubModelType] = None): if child_type is None: return sum(self.child_sizes.values()) else: return self.child_sizes[child_type] - def get_model( self, torch_dtype: Optional[torch.dtype], @@ -245,7 +259,7 @@ class DiffusersModel(ModelBase): if child_type is None: raise Exception("Child model type can't be null on diffusers model") if child_type not in self.child_types: - return None # TODO: or raise + return None # TODO: or raise if torch_dtype == torch.float16: variants = ["fp16", None] @@ -265,8 +279,8 @@ class DiffusersModel(ModelBase): ) break except Exception as e: - #print("====ERR LOAD====") - #print(f"{variant}: {e}") + # print("====ERR LOAD====") + # print(f"{variant}: {e}") pass else: raise Exception(f"Failed to load {self.base_model}:{self.model_type}:{child_type} model") @@ -275,15 +289,10 @@ class DiffusersModel(ModelBase): self.child_sizes[child_type] = calc_model_size_by_data(model) return model - #def convert_if_required(model_path: str, cache_path: str, config: Optional[dict]) -> str: + # def convert_if_required(model_path: str, cache_path: str, config: Optional[dict]) -> str: - -def calc_model_size_by_fs( - model_path: str, - subfolder: Optional[str] = None, - variant: Optional[str] = None -): +def calc_model_size_by_fs(model_path: str, subfolder: Optional[str] = None, variant: Optional[str] = None): if subfolder is not None: model_path = os.path.join(model_path, subfolder) @@ -325,12 +334,12 @@ def calc_model_size_by_fs( # calculate files size if there is no index file formats = [ - (".safetensors",), # safetensors - (".bin",), # torch - (".onnx", ".pb"), # onnx - (".msgpack",), # flax - (".ckpt",), # tf - (".h5",), # tf2 + (".safetensors",), # safetensors + (".bin",), # torch + (".onnx", ".pb"), # onnx + (".msgpack",), # flax + (".ckpt",), # tf + (".h5",), # tf2 ] for file_format in formats: @@ -343,9 +352,9 @@ def calc_model_size_by_fs( file_stats = os.stat(os.path.join(model_path, model_file)) model_size += file_stats.st_size return model_size - - #raise NotImplementedError(f"Unknown model structure! Files: {all_files}") - return 0 # scheduler/feature_extractor/tokenizer - models without loading to gpu + + # raise NotImplementedError(f"Unknown model structure! Files: {all_files}") + return 0 # scheduler/feature_extractor/tokenizer - models without loading to gpu def calc_model_size_by_data(model) -> int: @@ -364,12 +373,12 @@ def _calc_pipeline_by_data(pipeline) -> int: if submodel is not None and isinstance(submodel, torch.nn.Module): res += _calc_model_by_data(submodel) return res - + def _calc_model_by_data(model) -> int: - mem_params = sum([param.nelement()*param.element_size() for param in model.parameters()]) - mem_bufs = sum([buf.nelement()*buf.element_size() for buf in model.buffers()]) - mem = mem_params + mem_bufs # in bytes + mem_params = sum([param.nelement() * param.element_size() for param in model.parameters()]) + mem_bufs = sum([buf.nelement() * buf.element_size() for buf in model.buffers()]) + mem = mem_params + mem_bufs # in bytes return mem @@ -377,11 +386,15 @@ def _fast_safetensors_reader(path: str): checkpoint = dict() device = torch.device("meta") with open(path, "rb") as f: - definition_len = int.from_bytes(f.read(8), 'little') + definition_len = int.from_bytes(f.read(8), "little") definition_json = f.read(definition_len) definition = json.loads(definition_json) - if "__metadata__" in definition and definition["__metadata__"].get("format", "pt") not in {"pt", "torch", "pytorch"}: + if "__metadata__" in definition and definition["__metadata__"].get("format", "pt") not in { + "pt", + "torch", + "pytorch", + }: raise Exception("Supported only pytorch safetensors files") definition.pop("__metadata__", None) @@ -400,6 +413,7 @@ def _fast_safetensors_reader(path: str): return checkpoint + def read_checkpoint_meta(path: Union[str, Path], scan: bool = False): if str(path).endswith(".safetensors"): try: @@ -411,25 +425,27 @@ def read_checkpoint_meta(path: Union[str, Path], scan: bool = False): if scan: scan_result = scan_file_path(path) if scan_result.infected_files != 0: - raise Exception(f"The model file \"{path}\" is potentially infected by malware. Aborting import.") + raise Exception(f'The model file "{path}" is potentially infected by malware. Aborting import.') checkpoint = torch.load(path, map_location=torch.device("meta")) return checkpoint + import warnings from diffusers import logging as diffusers_logging from transformers import logging as transformers_logging + class SilenceWarnings(object): def __init__(self): self.transformers_verbosity = transformers_logging.get_verbosity() self.diffusers_verbosity = diffusers_logging.get_verbosity() - + def __enter__(self): transformers_logging.set_verbosity_error() diffusers_logging.set_verbosity_error() - warnings.simplefilter('ignore') + warnings.simplefilter("ignore") def __exit__(self, type, value, traceback): transformers_logging.set_verbosity(self.transformers_verbosity) diffusers_logging.set_verbosity(self.diffusers_verbosity) - warnings.simplefilter('default') + warnings.simplefilter("default") diff --git a/invokeai/backend/model_management/models/controlnet.py b/invokeai/backend/model_management/models/controlnet.py index 178fea4d13..e075843a56 100644 --- a/invokeai/backend/model_management/models/controlnet.py +++ b/invokeai/backend/model_management/models/controlnet.py @@ -1,7 +1,8 @@ import os import torch from enum import Enum -from typing import Optional +from pathlib import Path +from typing import Optional, Literal from .base import ( ModelBase, ModelConfigBase, @@ -15,17 +16,24 @@ from .base import ( InvalidModelException, ModelNotFoundException, ) +from invokeai.app.services.config import InvokeAIAppConfig + class ControlNetModelFormat(str, Enum): Checkpoint = "checkpoint" Diffusers = "diffusers" -class ControlNetModel(ModelBase): - #model_class: Type - #model_size: int - class Config(ModelConfigBase): - model_format: ControlNetModelFormat +class ControlNetModel(ModelBase): + # model_class: Type + # model_size: int + + class DiffusersConfig(ModelConfigBase): + model_format: Literal[ControlNetModelFormat.Diffusers] + + class CheckpointConfig(ModelConfigBase): + model_format: Literal[ControlNetModelFormat.Checkpoint] + config: str def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): assert model_type == ModelType.ControlNet @@ -33,7 +41,7 @@ class ControlNetModel(ModelBase): try: config = EmptyConfigLoader.load_config(self.model_path, config_name="config.json") - #config = json.loads(os.path.join(self.model_path, "config.json")) + # config = json.loads(os.path.join(self.model_path, "config.json")) except: raise Exception("Invalid controlnet model! (config.json not found or invalid)") @@ -61,7 +69,7 @@ class ControlNetModel(ModelBase): raise Exception("There is no child models in controlnet model") model = None - for variant in ['fp16',None]: + for variant in ["fp16", None]: try: model = self.model_class.from_pretrained( self.model_path, @@ -73,7 +81,7 @@ class ControlNetModel(ModelBase): pass if not model: raise ModelNotFoundException() - + # calc more accurate size self.model_size = calc_model_size_by_data(model) return model @@ -102,10 +110,50 @@ class ControlNetModel(ModelBase): cls, model_path: str, output_path: str, - config: ModelConfigBase, # empty config or config of parent model + config: ModelConfigBase, base_model: BaseModelType, ) -> str: - if cls.detect_format(model_path) != ControlNetModelFormat.Diffusers: - raise NotImplementedError("Checkpoint controlnet models currently unsupported") + if cls.detect_format(model_path) == ControlNetModelFormat.Checkpoint: + return _convert_controlnet_ckpt_and_cache( + model_path=model_path, + model_config=config.config, + output_path=output_path, + base_model=base_model, + ) else: return model_path + + +@classmethod +def _convert_controlnet_ckpt_and_cache( + cls, + model_path: str, + output_path: str, + base_model: BaseModelType, + model_config: ControlNetModel.CheckpointConfig, +) -> str: + """ + Convert the controlnet from checkpoint format to diffusers format, + cache it to disk, and return Path to converted + file. If already on disk then just returns Path. + """ + app_config = InvokeAIAppConfig.get_config() + weights = app_config.root_path / model_path + output_path = Path(output_path) + + # return cached version if it exists + if output_path.exists(): + return output_path + + # to avoid circular import errors + from ..convert_ckpt_to_diffusers import convert_controlnet_to_diffusers + + convert_controlnet_to_diffusers( + weights, + output_path, + original_config_file=app_config.root_path / model_config, + image_size=512, + scan_needed=True, + from_safetensors=weights.suffix == ".safetensors", + ) + return output_path diff --git a/invokeai/backend/model_management/models/lora.py b/invokeai/backend/model_management/models/lora.py index eb771841ec..642f8bbeec 100644 --- a/invokeai/backend/model_management/models/lora.py +++ b/invokeai/backend/model_management/models/lora.py @@ -12,18 +12,21 @@ from .base import ( InvalidModelException, ModelNotFoundException, ) + # TODO: naming from ..lora import LoRAModel as LoRAModelRaw + class LoRAModelFormat(str, Enum): LyCORIS = "lycoris" Diffusers = "diffusers" + class LoRAModel(ModelBase): - #model_size: int + # model_size: int class Config(ModelConfigBase): - model_format: LoRAModelFormat # TODO: + model_format: LoRAModelFormat # TODO: def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): assert model_type == ModelType.Lora @@ -54,7 +57,7 @@ class LoRAModel(ModelBase): @classproperty def save_to_config(cls) -> bool: - return False + return True @classmethod def detect_format(cls, path: str): diff --git a/invokeai/backend/model_management/models/sdxl.py b/invokeai/backend/model_management/models/sdxl.py index 76cabcdc62..7fc3efb77c 100644 --- a/invokeai/backend/model_management/models/sdxl.py +++ b/invokeai/backend/model_management/models/sdxl.py @@ -1,5 +1,6 @@ import os import json +import invokeai.backend.util.logging as logger from enum import Enum from pydantic import Field from typing import Literal, Optional @@ -14,12 +15,13 @@ from .base import ( ) from omegaconf import OmegaConf + class StableDiffusionXLModelFormat(str, Enum): Checkpoint = "checkpoint" Diffusers = "diffusers" - -class StableDiffusionXLModel(DiffusersModel): + +class StableDiffusionXLModel(DiffusersModel): # TODO: check that configs overwriten properly class DiffusersConfig(ModelConfigBase): model_format: Literal[StableDiffusionXLModelFormat.Diffusers] @@ -48,11 +50,11 @@ class StableDiffusionXLModel(DiffusersModel): if model_format == StableDiffusionXLModelFormat.Checkpoint: if ckpt_config_path: ckpt_config = OmegaConf.load(ckpt_config_path) - ckpt_config["model"]["params"]["unet_config"]["params"]["in_channels"] + in_channels = ckpt_config["model"]["params"]["unet_config"]["params"]["in_channels"] else: checkpoint = read_checkpoint_meta(path) - checkpoint = checkpoint.get('state_dict', checkpoint) + checkpoint = checkpoint.get("state_dict", checkpoint) in_channels = checkpoint["model.diffusion_model.input_blocks.0.0.weight"].shape[1] elif model_format == StableDiffusionXLModelFormat.Diffusers: @@ -60,7 +62,7 @@ class StableDiffusionXLModel(DiffusersModel): if os.path.exists(unet_config_path): with open(unet_config_path, "r") as f: unet_config = json.loads(f.read()) - in_channels = unet_config['in_channels'] + in_channels = unet_config["in_channels"] else: raise Exception("Not supported stable diffusion diffusers format(possibly onnx?)") @@ -80,11 +82,10 @@ class StableDiffusionXLModel(DiffusersModel): if ckpt_config_path is None: # TO DO: implement picking pass - + return cls.create_config( path=path, model_format=model_format, - config=ckpt_config_path, variant=variant, ) @@ -108,7 +109,17 @@ class StableDiffusionXLModel(DiffusersModel): config: ModelConfigBase, base_model: BaseModelType, ) -> str: + # The convert script adapted from the diffusers package uses + # strings for the base model type. To avoid making too many + # source code changes, we simply translate here if isinstance(config, cls.CheckpointConfig): - raise NotImplementedError('conversion of SDXL checkpoint models to diffusers format is not yet supported') + from invokeai.backend.model_management.models.stable_diffusion import _convert_ckpt_and_cache + + return _convert_ckpt_and_cache( + version=base_model, + model_config=config, + output_path=output_path, + use_safetensors=False, # corrupts sdxl models for some reason + ) else: return model_path diff --git a/invokeai/backend/model_management/models/stable_diffusion.py b/invokeai/backend/model_management/models/stable_diffusion.py index a90a72ba30..76b4833f9c 100644 --- a/invokeai/backend/model_management/models/stable_diffusion.py +++ b/invokeai/backend/model_management/models/stable_diffusion.py @@ -14,16 +14,20 @@ from .base import ( read_checkpoint_meta, classproperty, InvalidModelException, + ModelNotFoundException, ) +from .sdxl import StableDiffusionXLModel +import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig from omegaconf import OmegaConf + class StableDiffusion1ModelFormat(str, Enum): Checkpoint = "checkpoint" Diffusers = "diffusers" -class StableDiffusion1Model(DiffusersModel): +class StableDiffusion1Model(DiffusersModel): class DiffusersConfig(ModelConfigBase): model_format: Literal[StableDiffusion1ModelFormat.Diffusers] vae: Optional[str] = Field(None) @@ -34,7 +38,7 @@ class StableDiffusion1Model(DiffusersModel): vae: Optional[str] = Field(None) config: str variant: ModelVariantType - + def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): assert base_model == BaseModelType.StableDiffusion1 assert model_type == ModelType.Main @@ -55,7 +59,7 @@ class StableDiffusion1Model(DiffusersModel): else: checkpoint = read_checkpoint_meta(path) - checkpoint = checkpoint.get('state_dict', checkpoint) + checkpoint = checkpoint.get("state_dict", checkpoint) in_channels = checkpoint["model.diffusion_model.input_blocks.0.0.weight"].shape[1] elif model_format == StableDiffusion1ModelFormat.Diffusers: @@ -63,7 +67,7 @@ class StableDiffusion1Model(DiffusersModel): if os.path.exists(unet_config_path): with open(unet_config_path, "r") as f: unet_config = json.loads(f.read()) - in_channels = unet_config['in_channels'] + in_channels = unet_config["in_channels"] else: raise NotImplementedError(f"{path} is not a supported stable diffusion diffusers format") @@ -84,7 +88,6 @@ class StableDiffusion1Model(DiffusersModel): return cls.create_config( path=path, model_format=model_format, - config=ckpt_config_path, variant=variant, ) @@ -121,16 +124,17 @@ class StableDiffusion1Model(DiffusersModel): version=BaseModelType.StableDiffusion1, model_config=config, output_path=output_path, - ) + ) else: return model_path + class StableDiffusion2ModelFormat(str, Enum): Checkpoint = "checkpoint" Diffusers = "diffusers" -class StableDiffusion2Model(DiffusersModel): +class StableDiffusion2Model(DiffusersModel): # TODO: check that configs overwriten properly class DiffusersConfig(ModelConfigBase): model_format: Literal[StableDiffusion2ModelFormat.Diffusers] @@ -163,7 +167,7 @@ class StableDiffusion2Model(DiffusersModel): else: checkpoint = read_checkpoint_meta(path) - checkpoint = checkpoint.get('state_dict', checkpoint) + checkpoint = checkpoint.get("state_dict", checkpoint) in_channels = checkpoint["model.diffusion_model.input_blocks.0.0.weight"].shape[1] elif model_format == StableDiffusion2ModelFormat.Diffusers: @@ -171,7 +175,7 @@ class StableDiffusion2Model(DiffusersModel): if os.path.exists(unet_config_path): with open(unet_config_path, "r") as f: unet_config = json.loads(f.read()) - in_channels = unet_config['in_channels'] + in_channels = unet_config["in_channels"] else: raise Exception("Not supported stable diffusion diffusers format(possibly onnx?)") @@ -194,7 +198,6 @@ class StableDiffusion2Model(DiffusersModel): return cls.create_config( path=path, model_format=model_format, - config=ckpt_config_path, variant=variant, ) @@ -235,42 +238,19 @@ class StableDiffusion2Model(DiffusersModel): else: return model_path -def _select_ckpt_config(version: BaseModelType, variant: ModelVariantType): - ckpt_configs = { - BaseModelType.StableDiffusion1: { - ModelVariantType.Normal: "v1-inference.yaml", - ModelVariantType.Inpaint: "v1-inpainting-inference.yaml", - }, - BaseModelType.StableDiffusion2: { - ModelVariantType.Normal: "v2-inference-v.yaml", # best guess, as we can't differentiate with base(512) - ModelVariantType.Inpaint: "v2-inpainting-inference.yaml", - ModelVariantType.Depth: "v2-midas-inference.yaml", - }, - # note that these .yaml files don't yet exist! - BaseModelType.StableDiffusionXL: { - ModelVariantType.Normal: "xl-inference-v.yaml", - ModelVariantType.Inpaint: "xl-inpainting-inference.yaml", - ModelVariantType.Depth: "xl-midas-inference.yaml", - } - } - - app_config = InvokeAIAppConfig.get_config() - try: - config_path = app_config.legacy_conf_path / ckpt_configs[version][variant] - if config_path.is_relative_to(app_config.root_path): - config_path = config_path.relative_to(app_config.root_path) - return str(config_path) - - except: - return None - # TODO: rework -# Note that convert_ckpt_to_diffuses does not currently support conversion of SDXL models +# pass precision - currently defaulting to fp16 def _convert_ckpt_and_cache( version: BaseModelType, - model_config: Union[StableDiffusion1Model.CheckpointConfig, StableDiffusion2Model.CheckpointConfig], + model_config: Union[ + StableDiffusion1Model.CheckpointConfig, + StableDiffusion2Model.CheckpointConfig, + StableDiffusionXLModel.CheckpointConfig, + ], output_path: str, + use_save_model: bool = False, + **kwargs, ) -> str: """ Convert the checkpoint model indicated in mconfig into a @@ -289,14 +269,61 @@ def _convert_ckpt_and_cache( # to avoid circular import errors from ..convert_ckpt_to_diffusers import convert_ckpt_to_diffusers - with SilenceWarnings(): + from ...util.devices import choose_torch_device, torch_dtype + + model_base_to_model_type = { + BaseModelType.StableDiffusion1: "FrozenCLIPEmbedder", + BaseModelType.StableDiffusion2: "FrozenOpenCLIPEmbedder", + BaseModelType.StableDiffusionXL: "SDXL", + BaseModelType.StableDiffusionXLRefiner: "SDXL-Refiner", + } + logger.info(f"Converting {weights} to diffusers format") + with SilenceWarnings(): convert_ckpt_to_diffusers( weights, output_path, + model_type=model_base_to_model_type[version], model_version=version, model_variant=model_config.variant, original_config_file=config_file, extract_ema=True, scan_needed=True, + from_safetensors=weights.suffix == ".safetensors", + precision=torch_dtype(choose_torch_device()), + **kwargs, ) return output_path + + +def _select_ckpt_config(version: BaseModelType, variant: ModelVariantType): + ckpt_configs = { + BaseModelType.StableDiffusion1: { + ModelVariantType.Normal: "v1-inference.yaml", + ModelVariantType.Inpaint: "v1-inpainting-inference.yaml", + }, + BaseModelType.StableDiffusion2: { + ModelVariantType.Normal: "v2-inference-v.yaml", # best guess, as we can't differentiate with base(512) + ModelVariantType.Inpaint: "v2-inpainting-inference.yaml", + ModelVariantType.Depth: "v2-midas-inference.yaml", + }, + BaseModelType.StableDiffusionXL: { + ModelVariantType.Normal: "sd_xl_base.yaml", + ModelVariantType.Inpaint: None, + ModelVariantType.Depth: None, + }, + BaseModelType.StableDiffusionXLRefiner: { + ModelVariantType.Normal: "sd_xl_refiner.yaml", + ModelVariantType.Inpaint: None, + ModelVariantType.Depth: None, + }, + } + + app_config = InvokeAIAppConfig.get_config() + try: + config_path = app_config.legacy_conf_path / ckpt_configs[version][variant] + if config_path.is_relative_to(app_config.root_path): + config_path = config_path.relative_to(app_config.root_path) + return str(config_path) + + except: + return None diff --git a/invokeai/backend/model_management/models/textual_inversion.py b/invokeai/backend/model_management/models/textual_inversion.py index eea0e85245..a949a15be1 100644 --- a/invokeai/backend/model_management/models/textual_inversion.py +++ b/invokeai/backend/model_management/models/textual_inversion.py @@ -11,11 +11,13 @@ from .base import ( ModelNotFoundException, InvalidModelException, ) + # TODO: naming from ..lora import TextualInversionModel as TextualInversionModelRaw + class TextualInversionModel(ModelBase): - #model_size: int + # model_size: int class Config(ModelConfigBase): model_format: None @@ -65,7 +67,7 @@ class TextualInversionModel(ModelBase): if os.path.isdir(path): if os.path.exists(os.path.join(path, "learned_embeds.bin")): - return None # diffusers-ti + return None # diffusers-ti if os.path.isfile(path): if any([path.endswith(f".{ext}") for ext in ["safetensors", "ckpt", "pt", "bin"]]): diff --git a/invokeai/backend/model_management/models/vae.py b/invokeai/backend/model_management/models/vae.py index f740615509..b15844bcf8 100644 --- a/invokeai/backend/model_management/models/vae.py +++ b/invokeai/backend/model_management/models/vae.py @@ -22,13 +22,15 @@ from invokeai.app.services.config import InvokeAIAppConfig from diffusers.utils import is_safetensors_available from omegaconf import OmegaConf + class VaeModelFormat(str, Enum): Checkpoint = "checkpoint" Diffusers = "diffusers" + class VaeModel(ModelBase): - #vae_class: Type - #model_size: int + # vae_class: Type + # model_size: int class Config(ModelConfigBase): model_format: VaeModelFormat @@ -39,7 +41,7 @@ class VaeModel(ModelBase): try: config = EmptyConfigLoader.load_config(self.model_path, config_name="config.json") - #config = json.loads(os.path.join(self.model_path, "config.json")) + # config = json.loads(os.path.join(self.model_path, "config.json")) except: raise Exception("Invalid vae model! (config.json not found or invalid)") @@ -95,7 +97,7 @@ class VaeModel(ModelBase): cls, model_path: str, output_path: str, - config: ModelConfigBase, # empty config or config of parent model + config: ModelConfigBase, # empty config or config of parent model base_model: BaseModelType, ) -> str: if cls.detect_format(model_path) == VaeModelFormat.Checkpoint: @@ -108,6 +110,7 @@ class VaeModel(ModelBase): else: return model_path + # TODO: rework def _convert_vae_ckpt_and_cache( weights_path: str, @@ -138,13 +141,14 @@ def _convert_vae_ckpt_and_cache( 2.1 - 768 """ image_size = 512 - + # return cached version if it exists if output_path.exists(): return output_path if base_model in {BaseModelType.StableDiffusion1, BaseModelType.StableDiffusion2}: from .stable_diffusion import _select_ckpt_config + # all sd models use same vae settings config_file = _select_ckpt_config(base_model, ModelVariantType.Normal) else: @@ -152,7 +156,8 @@ def _convert_vae_ckpt_and_cache( # this avoids circular import error from ..convert_ckpt_to_diffusers import convert_ldm_vae_to_diffusers - if weights_path.suffix == '.safetensors': + + if weights_path.suffix == ".safetensors": checkpoint = safetensors.torch.load_file(weights_path, device="cpu") else: checkpoint = torch.load(weights_path, map_location="cpu") @@ -161,15 +166,12 @@ def _convert_vae_ckpt_and_cache( if "state_dict" in checkpoint: checkpoint = checkpoint["state_dict"] - config = OmegaConf.load(app_config.root_path/config_file) + config = OmegaConf.load(app_config.root_path / config_file) vae_model = convert_ldm_vae_to_diffusers( - checkpoint = checkpoint, - vae_config = config, - image_size = image_size, - ) - vae_model.save_pretrained( - output_path, - safe_serialization=is_safetensors_available() + checkpoint=checkpoint, + vae_config=config, + image_size=image_size, ) + vae_model.save_pretrained(output_path, safe_serialization=is_safetensors_available()) return output_path diff --git a/invokeai/backend/safety_checker.py b/invokeai/backend/safety_checker.py deleted file mode 100644 index 0a943ad7b6..0000000000 --- a/invokeai/backend/safety_checker.py +++ /dev/null @@ -1,77 +0,0 @@ -''' -SafetyChecker class - checks images against the StabilityAI NSFW filter -and blurs images that contain potential NSFW content. -''' -import diffusers -import numpy as np -import torch -import traceback -from diffusers.pipelines.stable_diffusion.safety_checker import ( - StableDiffusionSafetyChecker, -) -from pathlib import Path -from PIL import Image, ImageFilter -from transformers import AutoFeatureExtractor - -import invokeai.assets.web as web_assets -import invokeai.backend.util.logging as logger -from invokeai.app.services.config import InvokeAIAppConfig -from .util import CPU_DEVICE - -config = InvokeAIAppConfig.get_config() - -class SafetyChecker(object): - CAUTION_IMG = "caution.png" - - def __init__(self, device: torch.device): - path = Path(web_assets.__path__[0]) / self.CAUTION_IMG - caution = Image.open(path) - self.caution_img = caution.resize((caution.width // 2, caution.height // 2)) - self.device = device - - try: - safety_model_id = config.models_path / 'core/convert/stable-diffusion-safety-checker' - feature_extractor_id = config.models_path / 'core/convert/stable-diffusion-safety-checker-extractor' - self.safety_checker = StableDiffusionSafetyChecker.from_pretrained(safety_model_id) - self.safety_feature_extractor = AutoFeatureExtractor.from_pretrained(feature_extractor_id) - except Exception: - logger.error( - "An error was encountered while installing the safety checker:" - ) - print(traceback.format_exc()) - - def check(self, image: Image.Image): - """ - Check provided image against the StabilityAI safety checker and return - - """ - - self.safety_checker.to(self.device) - features = self.safety_feature_extractor([image], return_tensors="pt") - features.to(self.device) - - # unfortunately checker requires the numpy version, so we have to convert back - x_image = np.array(image).astype(np.float32) / 255.0 - x_image = x_image[None].transpose(0, 3, 1, 2) - - diffusers.logging.set_verbosity_error() - checked_image, has_nsfw_concept = self.safety_checker( - images=x_image, clip_input=features.pixel_values - ) - self.safety_checker.to(CPU_DEVICE) # offload - if has_nsfw_concept[0]: - logger.warning( - "An image with potential non-safe content has been detected. A blurred image will be returned." - ) - return self.blur(image) - else: - return image - - def blur(self, input): - blurry = input.filter(filter=ImageFilter.GaussianBlur(radius=32)) - try: - if caution := self.caution_img: - blurry.paste(caution, (0, 0), caution) - except FileNotFoundError: - pass - return blurry diff --git a/invokeai/backend/stable_diffusion/diffusers_pipeline.py b/invokeai/backend/stable_diffusion/diffusers_pipeline.py index 8acfb100a6..624d47ff64 100644 --- a/invokeai/backend/stable_diffusion/diffusers_pipeline.py +++ b/invokeai/backend/stable_diffusion/diffusers_pipeline.py @@ -47,6 +47,7 @@ from .diffusion import ( ) from .offloading import FullyLoadedModelGroup, ModelGroup + @dataclass class PipelineIntermediateState: run_id: str @@ -72,7 +73,11 @@ class AddsMaskLatents: initial_image_latents: torch.Tensor def __call__( - self, latents: torch.Tensor, t: torch.Tensor, text_embeddings: torch.Tensor, **kwargs, + self, + latents: torch.Tensor, + t: torch.Tensor, + text_embeddings: torch.Tensor, + **kwargs, ) -> torch.Tensor: model_input = self.add_mask_channels(latents) return self.forward(model_input, t, text_embeddings, **kwargs) @@ -80,12 +85,8 @@ class AddsMaskLatents: def add_mask_channels(self, latents): batch_size = latents.size(0) # duplicate mask and latents for each batch - mask = einops.repeat( - self.mask, "b c h w -> (repeat b) c h w", repeat=batch_size - ) - image_latents = einops.repeat( - self.initial_image_latents, "b c h w -> (repeat b) c h w", repeat=batch_size - ) + mask = einops.repeat(self.mask, "b c h w -> (repeat b) c h w", repeat=batch_size) + image_latents = einops.repeat(self.initial_image_latents, "b c h w -> (repeat b) c h w", repeat=batch_size) # add mask and image as additional channels model_input, _ = einops.pack([latents, mask, image_latents], "b * h w") return model_input @@ -103,9 +104,7 @@ class AddsMaskGuidance: noise: torch.Tensor _debug: Optional[Callable] = None - def __call__( - self, step_output: Union[BaseOutput, SchedulerOutput], t: torch.Tensor, conditioning - ) -> BaseOutput: + def __call__(self, step_output: Union[BaseOutput, SchedulerOutput], t: torch.Tensor, conditioning) -> BaseOutput: output_class = step_output.__class__ # We'll create a new one with masked data. # The problem with taking SchedulerOutput instead of the model output is that we're less certain what's in it. @@ -116,11 +115,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() } ) @@ -132,9 +127,7 @@ class AddsMaskGuidance: def apply_mask(self, latents: torch.Tensor, t) -> torch.Tensor: batch_size = latents.size(0) - mask = einops.repeat( - self.mask, "b c h w -> (repeat b) c h w", repeat=batch_size - ) + mask = einops.repeat(self.mask, "b c h w -> (repeat b) c h w", repeat=batch_size) if t.dim() == 0: # some schedulers expect t to be one-dimensional. # TODO: file diffusers bug about inconsistency? @@ -144,12 +137,8 @@ class AddsMaskGuidance: mask_latents = self.scheduler.add_noise(self.mask_latents, self.noise, t) # TODO: Do we need to also apply scheduler.scale_model_input? Or is add_noise appropriately scaled already? # mask_latents = self.scheduler.scale_model_input(mask_latents, t) - mask_latents = einops.repeat( - mask_latents, "b c h w -> (repeat b) c h w", repeat=batch_size - ) - masked_input = torch.lerp( - mask_latents.to(dtype=latents.dtype), latents, mask.to(dtype=latents.dtype) - ) + mask_latents = einops.repeat(mask_latents, "b c h w -> (repeat b) c h w", repeat=batch_size) + masked_input = torch.lerp(mask_latents.to(dtype=latents.dtype), latents, mask.to(dtype=latents.dtype)) if self._debug: self._debug(masked_input, f"t={t} lerped") return masked_input @@ -159,9 +148,7 @@ def trim_to_multiple_of(*args, multiple_of=8): return tuple((x - x % multiple_of) for x in args) -def image_resized_to_grid_as_tensor( - image: PIL.Image.Image, normalize: bool = True, multiple_of=8 -) -> torch.FloatTensor: +def image_resized_to_grid_as_tensor(image: PIL.Image.Image, normalize: bool = True, multiple_of=8) -> torch.FloatTensor: """ :param image: input image @@ -211,6 +198,7 @@ class GeneratorToCallbackinator(Generic[ParamType, ReturnType, CallbackType]): raise AssertionError("why was that an empty generator?") return result + @dataclass class ControlNetData: model: ControlNetModel = Field(default=None) @@ -341,9 +329,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): # FIXME: can't currently register control module # control_model=control_model, ) - self.invokeai_diffuser = InvokeAIDiffuserComponent( - self.unet, self._unet_forward - ) + self.invokeai_diffuser = InvokeAIDiffuserComponent(self.unet, self._unet_forward) self._model_group = FullyLoadedModelGroup(execution_device or self.unet.device) self._model_group.install(*self._submodels) @@ -354,11 +340,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): if xformers is available, use it, otherwise use sliced attention. """ config = InvokeAIAppConfig.get_config() - if ( - torch.cuda.is_available() - and is_xformers_available() - and not config.disable_xformers - ): + if torch.cuda.is_available() and is_xformers_available() and not config.disable_xformers: self.enable_xformers_memory_efficient_attention() else: if self.device.type == "cpu" or self.device.type == "mps": @@ -369,9 +351,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): raise ValueError(f"unrecognized device {self.device}") # input tensor of [1, 4, h/8, w/8] # output tensor of [16, (h/8 * w/8), (h/8 * w/8)] - bytes_per_element_needed_for_baddbmm_duplication = ( - latents.element_size() + 4 - ) + bytes_per_element_needed_for_baddbmm_duplication = latents.element_size() + 4 max_size_required_for_baddbmm = ( 16 * latents.size(dim=2) @@ -380,9 +360,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): * latents.size(dim=3) * bytes_per_element_needed_for_baddbmm_duplication ) - if max_size_required_for_baddbmm > ( - mem_free * 3.0 / 4.0 - ): # 3.3 / 4.0 is from old Invoke code + if max_size_required_for_baddbmm > (mem_free * 3.0 / 4.0): # 3.3 / 4.0 is from old Invoke code self.enable_attention_slicing(slice_size="max") elif torch.backends.mps.is_available(): # diffusers recommends always enabling for mps @@ -470,7 +448,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): control_data: List[ControlNetData] = None, ) -> tuple[torch.Tensor, Optional[AttentionMapSaver]]: if self.scheduler.config.get("cpu_only", False): - scheduler_device = torch.device('cpu') + scheduler_device = torch.device("cpu") else: scheduler_device = self._model_group.device_for(self.unet) @@ -488,7 +466,6 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): run_id=run_id, additional_guidance=additional_guidance, control_data=control_data, - callback=callback, ) return result.latents, result.attention_map_saver @@ -511,9 +488,9 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): additional_guidance = [] 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), + self.invokeai_diffuser.model, + extra_conditioning_info=extra_conditioning_info, + step_count=len(self.scheduler.timesteps), ): yield PipelineIntermediateState( run_id=run_id, @@ -607,16 +584,15 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): # that are combined at higher level to make control_mode enum # soft_injection determines whether to do per-layer re-weighting adjustment (if True) # or default weighting (if False) - soft_injection = (control_mode == "more_prompt" or control_mode == "more_control") + soft_injection = control_mode == "more_prompt" or control_mode == "more_control" # cfg_injection = determines whether to apply ControlNet to only the conditional (if True) # or the default both conditional and unconditional (if False) - cfg_injection = (control_mode == "more_control" or control_mode == "unbalanced") + cfg_injection = control_mode == "more_control" or control_mode == "unbalanced" first_control_step = math.floor(control_datum.begin_step_percent * total_step_count) last_control_step = math.ceil(control_datum.end_step_percent * total_step_count) # only apply controlnet if current step is within the controlnet's begin/end step range if step_index >= first_control_step and step_index <= last_control_step: - if cfg_injection: control_latent_input = unet_latent_input else: @@ -629,7 +605,10 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): encoder_hidden_states = conditioning_data.text_embeddings encoder_attention_mask = None else: - encoder_hidden_states, encoder_attention_mask = self.invokeai_diffuser._concat_conditionings_for_batch( + ( + encoder_hidden_states, + encoder_attention_mask, + ) = self.invokeai_diffuser._concat_conditionings_for_batch( conditioning_data.unconditioned_embeddings, conditioning_data.text_embeddings, ) @@ -646,9 +625,9 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): timestep=timestep, encoder_hidden_states=encoder_hidden_states, controlnet_cond=control_datum.image_tensor, - conditioning_scale=controlnet_weight, # controlnet specific, NOT the guidance scale + conditioning_scale=controlnet_weight, # controlnet specific, NOT the guidance scale encoder_attention_mask=encoder_attention_mask, - guess_mode=soft_injection, # this is still called guess_mode in diffusers ControlNetModel + guess_mode=soft_injection, # this is still called guess_mode in diffusers ControlNetModel return_dict=False, ) if cfg_injection: @@ -678,13 +657,11 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): step_index=step_index, total_step_count=total_step_count, down_block_additional_residuals=down_block_res_samples, # from controlnet(s) - mid_block_additional_residual=mid_block_res_sample, # from controlnet(s) + mid_block_additional_residual=mid_block_res_sample, # from controlnet(s) ) # compute the previous noisy sample x_t -> x_t-1 - step_output = self.scheduler.step( - noise_pred, timestep, latents, **conditioning_data.scheduler_args - ) + step_output = self.scheduler.step(noise_pred, timestep, latents, **conditioning_data.scheduler_args) # TODO: this additional_guidance extension point feels redundant with InvokeAIDiffusionComponent. # But the way things are now, scheduler runs _after_ that, so there was @@ -710,17 +687,16 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): # use of AddsMaskLatents. latents = AddsMaskLatents( self._unet_forward, - mask=torch.ones_like( - latents[:1, :1], device=latents.device, dtype=latents.dtype - ), - initial_image_latents=torch.zeros_like( - latents[:1], device=latents.device, dtype=latents.dtype - ), + mask=torch.ones_like(latents[:1, :1], device=latents.device, dtype=latents.dtype), + initial_image_latents=torch.zeros_like(latents[:1], device=latents.device, dtype=latents.dtype), ).add_mask_channels(latents) # First three args should be positional, not keywords, so torch hooks can see them. return self.unet( - latents, t, text_embeddings, cross_attention_kwargs=cross_attention_kwargs, + latents, + t, + text_embeddings, + cross_attention_kwargs=cross_attention_kwargs, **kwargs, ).sample @@ -774,9 +750,9 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): ) -> InvokeAIStableDiffusionPipelineOutput: timesteps, _ = self.get_img2img_timesteps(num_inference_steps, strength) result_latents, result_attention_maps = self.latents_from_embeddings( - latents=initial_latents if strength < 1.0 else torch.zeros_like( - initial_latents, device=initial_latents.device, dtype=initial_latents.dtype - ), + latents=initial_latents + if strength < 1.0 + else torch.zeros_like(initial_latents, device=initial_latents.device, dtype=initial_latents.dtype), num_inference_steps=num_inference_steps, conditioning_data=conditioning_data, timesteps=timesteps, @@ -797,14 +773,12 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): ) return self.check_for_safety(output, dtype=conditioning_data.dtype) - def get_img2img_timesteps( - self, num_inference_steps: int, strength: float, device=None - ) -> (torch.Tensor, int): + def get_img2img_timesteps(self, num_inference_steps: int, strength: float, device=None) -> (torch.Tensor, int): img2img_pipeline = StableDiffusionImg2ImgPipeline(**self.components) assert img2img_pipeline.scheduler is self.scheduler if self.scheduler.config.get("cpu_only", False): - scheduler_device = torch.device('cpu') + scheduler_device = torch.device("cpu") else: scheduler_device = self._model_group.device_for(self.unet) @@ -849,18 +823,16 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): # 6. Prepare latent variables # can't quite use upstream StableDiffusionImg2ImgPipeline.prepare_latents # because we have our own noise function - init_image_latents = self.non_noised_latents_from_image( - init_image, device=device, dtype=latents_dtype - ) + init_image_latents = self.non_noised_latents_from_image(init_image, device=device, dtype=latents_dtype) if seed is not None: set_seed(seed) noise = noise_func(init_image_latents) if mask.dim() == 3: mask = mask.unsqueeze(0) - latent_mask = tv_resize( - mask, init_image_latents.shape[-2:], T.InterpolationMode.BILINEAR - ).to(device=device, dtype=latents_dtype) + latent_mask = tv_resize(mask, init_image_latents.shape[-2:], T.InterpolationMode.BILINEAR).to( + device=device, dtype=latents_dtype + ) guidance: List[Callable] = [] @@ -868,22 +840,20 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): # You'd think the inpainting model wouldn't be paying attention to the area it is going to repaint # (that's why there's a mask!) but it seems to really want that blanked out. masked_init_image = init_image * torch.where(mask < 0.5, 1, 0) - masked_latents = self.non_noised_latents_from_image( - masked_init_image, device=device, dtype=latents_dtype - ) + masked_latents = self.non_noised_latents_from_image(masked_init_image, device=device, dtype=latents_dtype) # TODO: we should probably pass this in so we don't have to try/finally around setting it. self.invokeai_diffuser.model_forward_callback = AddsMaskLatents( self._unet_forward, latent_mask, masked_latents ) else: - guidance.append( - AddsMaskGuidance(latent_mask, init_image_latents, self.scheduler, noise) - ) + guidance.append(AddsMaskGuidance(latent_mask, init_image_latents, self.scheduler, noise)) try: result_latents, result_attention_maps = self.latents_from_embeddings( - latents=init_image_latents if strength < 1.0 else torch.zeros_like( + latents=init_image_latents + if strength < 1.0 + else torch.zeros_like( init_image_latents, device=init_image_latents.device, dtype=init_image_latents.dtype ), num_inference_steps=num_inference_steps, @@ -914,18 +884,14 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): with torch.inference_mode(): self._model_group.load(self.vae) init_latent_dist = self.vae.encode(init_image).latent_dist - init_latents = init_latent_dist.sample().to( - dtype=dtype - ) # FIXME: uses torch.randn. make reproducible! + init_latents = init_latent_dist.sample().to(dtype=dtype) # FIXME: uses torch.randn. make reproducible! init_latents = 0.18215 * init_latents return init_latents def check_for_safety(self, output, dtype): with torch.inference_mode(): - screened_images, has_nsfw_concept = self.run_safety_checker( - output.images, dtype=dtype - ) + screened_images, has_nsfw_concept = self.run_safety_checker(output.images, dtype=dtype) screened_attention_map_saver = None if has_nsfw_concept is None or not has_nsfw_concept: screened_attention_map_saver = output.attention_map_saver @@ -949,9 +915,8 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): def debug_latents(self, latents, msg): from invokeai.backend.image_util import debug_image + with torch.inference_mode(): decoded = self.numpy_to_pil(self.decode_latents(latents)) for i, img in enumerate(decoded): - debug_image( - img, f"latents {msg} {i+1}/{len(decoded)}", debug_status=True - ) + debug_image(img, f"latents {msg} {i+1}/{len(decoded)}", debug_status=True) diff --git a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py index 79a0982cfe..38763ebbee 100644 --- a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py +++ b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py @@ -17,6 +17,7 @@ from torch import nn import invokeai.backend.util.logging as logger from ...util import torch_dtype + class CrossAttentionType(enum.Enum): SELF = 1 TOKENS = 2 @@ -55,9 +56,7 @@ class Context: if name in self.self_cross_attention_module_identifiers: assert False, f"name {name} cannot appear more than once" self.self_cross_attention_module_identifiers.append(name) - for name, module in get_cross_attention_modules( - model, CrossAttentionType.TOKENS - ): + for name, module in get_cross_attention_modules(model, CrossAttentionType.TOKENS): if name in self.tokens_cross_attention_module_identifiers: assert False, f"name {name} cannot appear more than once" self.tokens_cross_attention_module_identifiers.append(name) @@ -68,9 +67,7 @@ class Context: else: self.tokens_cross_attention_action = Context.Action.SAVE - def request_apply_saved_attention_maps( - self, cross_attention_type: CrossAttentionType - ): + def request_apply_saved_attention_maps(self, cross_attention_type: CrossAttentionType): if cross_attention_type == CrossAttentionType.SELF: self.self_cross_attention_action = Context.Action.APPLY else: @@ -139,9 +136,7 @@ class Context: saved_attention_dict = self.saved_cross_attention_maps[identifier] if requested_dim is None: if saved_attention_dict["dim"] is not None: - raise RuntimeError( - f"dim mismatch: expected dim=None, have {saved_attention_dict['dim']}" - ) + raise RuntimeError(f"dim mismatch: expected dim=None, have {saved_attention_dict['dim']}") return saved_attention_dict["slices"][0] if saved_attention_dict["dim"] == requested_dim: @@ -154,21 +149,13 @@ class Context: if saved_attention_dict["dim"] is None: whole_saved_attention = saved_attention_dict["slices"][0] if requested_dim == 0: - return whole_saved_attention[ - requested_offset : requested_offset + slice_size - ] + return whole_saved_attention[requested_offset : requested_offset + slice_size] elif requested_dim == 1: - return whole_saved_attention[ - :, requested_offset : requested_offset + slice_size - ] + return whole_saved_attention[:, requested_offset : requested_offset + slice_size] - raise RuntimeError( - f"Cannot convert dim {saved_attention_dict['dim']} to requested dim {requested_dim}" - ) + raise RuntimeError(f"Cannot convert dim {saved_attention_dict['dim']} to requested dim {requested_dim}") - def get_slicing_strategy( - self, identifier: str - ) -> tuple[Optional[int], Optional[int]]: + def get_slicing_strategy(self, identifier: str) -> tuple[Optional[int], Optional[int]]: saved_attention = self.saved_cross_attention_maps.get(identifier, None) if saved_attention is None: return None, None @@ -201,9 +188,7 @@ class InvokeAICrossAttentionMixin: def set_attention_slice_wrangler( self, - wrangler: Optional[ - Callable[[nn.Module, torch.Tensor, int, int, int], torch.Tensor] - ], + wrangler: Optional[Callable[[nn.Module, torch.Tensor, int, int, int], torch.Tensor]], ): """ Set custom attention calculator to be called when attention is calculated @@ -219,14 +204,10 @@ class InvokeAICrossAttentionMixin: """ self.attention_slice_wrangler = wrangler - def set_slicing_strategy_getter( - self, getter: Optional[Callable[[nn.Module], tuple[int, int]]] - ): + def set_slicing_strategy_getter(self, getter: Optional[Callable[[nn.Module], tuple[int, int]]]): self.slicing_strategy_getter = getter - def set_attention_slice_calculated_callback( - self, callback: Optional[Callable[[torch.Tensor], None]] - ): + def set_attention_slice_calculated_callback(self, callback: Optional[Callable[[torch.Tensor], None]]): self.attention_slice_calculated_callback = callback def einsum_lowest_level(self, query, key, value, dim, offset, slice_size): @@ -247,45 +228,31 @@ class InvokeAICrossAttentionMixin: ) # calculate attention slice by taking the best scores for each latent pixel - default_attention_slice = attention_scores.softmax( - dim=-1, dtype=attention_scores.dtype - ) + default_attention_slice = attention_scores.softmax(dim=-1, dtype=attention_scores.dtype) attention_slice_wrangler = self.attention_slice_wrangler if attention_slice_wrangler is not None: - attention_slice = attention_slice_wrangler( - self, default_attention_slice, dim, offset, slice_size - ) + attention_slice = attention_slice_wrangler(self, default_attention_slice, dim, offset, slice_size) else: attention_slice = default_attention_slice if self.attention_slice_calculated_callback is not None: - self.attention_slice_calculated_callback( - attention_slice, dim, offset, slice_size - ) + self.attention_slice_calculated_callback(attention_slice, dim, offset, slice_size) hidden_states = torch.bmm(attention_slice, value) return hidden_states def einsum_op_slice_dim0(self, q, k, v, slice_size): - r = torch.zeros( - q.shape[0], q.shape[1], v.shape[2], device=q.device, dtype=q.dtype - ) + r = torch.zeros(q.shape[0], q.shape[1], v.shape[2], device=q.device, dtype=q.dtype) for i in range(0, q.shape[0], slice_size): end = i + slice_size - r[i:end] = self.einsum_lowest_level( - q[i:end], k[i:end], v[i:end], dim=0, offset=i, slice_size=slice_size - ) + r[i:end] = self.einsum_lowest_level(q[i:end], k[i:end], v[i:end], dim=0, offset=i, slice_size=slice_size) return r def einsum_op_slice_dim1(self, q, k, v, slice_size): - r = torch.zeros( - q.shape[0], q.shape[1], v.shape[2], device=q.device, dtype=q.dtype - ) + r = torch.zeros(q.shape[0], q.shape[1], v.shape[2], device=q.device, dtype=q.dtype) for i in range(0, q.shape[1], slice_size): end = i + slice_size - r[:, i:end] = self.einsum_lowest_level( - q[:, i:end], k, v, dim=1, offset=i, slice_size=slice_size - ) + r[:, i:end] = self.einsum_lowest_level(q[:, i:end], k, v, dim=1, offset=i, slice_size=slice_size) return r def einsum_op_mps_v1(self, q, k, v): @@ -353,6 +320,7 @@ def restore_default_cross_attention( else: remove_attention_function(model) + def setup_cross_attention_control_attention_processors(unet: UNet2DConditionModel, context: Context): """ Inject attention parameters and functions into the passed in model to enable cross attention editing. @@ -372,7 +340,7 @@ def setup_cross_attention_control_attention_processors(unet: UNet2DConditionMode indices = torch.arange(max_length, dtype=torch.long) for name, a0, a1, b0, b1 in context.arguments.edit_opcodes: if b0 < max_length: - if name == "equal":# or (name == "replace" and a1 - a0 == b1 - b0): + if name == "equal": # or (name == "replace" and a1 - a0 == b1 - b0): # these tokens have not been edited indices[b0:b1] = indices_target[a0:a1] mask[b0:b1] = 1 @@ -386,16 +354,14 @@ def setup_cross_attention_control_attention_processors(unet: UNet2DConditionMode else: # try to re-use an existing slice size default_slice_size = 4 - slice_size = next((p.slice_size for p in old_attn_processors.values() if type(p) is SlicedAttnProcessor), default_slice_size) + slice_size = next( + (p.slice_size for p in old_attn_processors.values() if type(p) is SlicedAttnProcessor), default_slice_size + ) unet.set_attn_processor(SlicedSwapCrossAttnProcesser(slice_size=slice_size)) -def get_cross_attention_modules( - model, which: CrossAttentionType -) -> list[tuple[str, InvokeAICrossAttentionMixin]]: - cross_attention_class: type = ( - InvokeAIDiffusersCrossAttention - ) +def get_cross_attention_modules(model, which: CrossAttentionType) -> list[tuple[str, InvokeAICrossAttentionMixin]]: + cross_attention_class: type = InvokeAIDiffusersCrossAttention which_attn = "attn1" if which is CrossAttentionType.SELF else "attn2" attention_module_tuples = [ (name, module) @@ -420,9 +386,7 @@ def get_cross_attention_modules( def inject_attention_function(unet, context: Context): # ORIGINAL SOURCE CODE: https://github.com/huggingface/diffusers/blob/91ddd2a25b848df0fa1262d4f1cd98c7ccb87750/src/diffusers/models/attention.py#L276 - def attention_slice_wrangler( - module, suggested_attention_slice: torch.Tensor, dim, offset, slice_size - ): + def attention_slice_wrangler(module, suggested_attention_slice: torch.Tensor, dim, offset, slice_size): # memory_usage = suggested_attention_slice.element_size() * suggested_attention_slice.nelement() attention_slice = suggested_attention_slice @@ -430,9 +394,7 @@ def inject_attention_function(unet, context: Context): if context.get_should_save_maps(module.identifier): # print(module.identifier, "saving suggested_attention_slice of shape", # suggested_attention_slice.shape, "dim", dim, "offset", offset) - slice_to_save = ( - attention_slice.to("cpu") if dim is not None else attention_slice - ) + slice_to_save = attention_slice.to("cpu") if dim is not None else attention_slice context.save_slice( module.identifier, slice_to_save, @@ -442,31 +404,20 @@ def inject_attention_function(unet, context: Context): ) elif context.get_should_apply_saved_maps(module.identifier): # print(module.identifier, "applying saved attention slice for dim", dim, "offset", offset) - saved_attention_slice = context.get_slice( - module.identifier, dim, offset, slice_size - ) + saved_attention_slice = context.get_slice(module.identifier, dim, offset, slice_size) # slice may have been offloaded to CPU - saved_attention_slice = saved_attention_slice.to( - suggested_attention_slice.device - ) + saved_attention_slice = saved_attention_slice.to(suggested_attention_slice.device) if context.is_tokens_cross_attention(module.identifier): index_map = context.cross_attention_index_map - remapped_saved_attention_slice = torch.index_select( - saved_attention_slice, -1, index_map - ) + remapped_saved_attention_slice = torch.index_select(saved_attention_slice, -1, index_map) this_attention_slice = suggested_attention_slice - mask = context.cross_attention_mask.to( - torch_dtype(suggested_attention_slice.device) - ) + mask = context.cross_attention_mask.to(torch_dtype(suggested_attention_slice.device)) saved_mask = mask this_mask = 1 - mask - attention_slice = ( - remapped_saved_attention_slice * saved_mask - + this_attention_slice * this_mask - ) + attention_slice = remapped_saved_attention_slice * saved_mask + this_attention_slice * this_mask else: # just use everything attention_slice = saved_attention_slice @@ -480,14 +431,10 @@ def inject_attention_function(unet, context: Context): module.identifier = identifier try: module.set_attention_slice_wrangler(attention_slice_wrangler) - module.set_slicing_strategy_getter( - lambda module: context.get_slicing_strategy(identifier) - ) + module.set_slicing_strategy_getter(lambda module: context.get_slicing_strategy(identifier)) except AttributeError as e: if is_attribute_error_about(e, "set_attention_slice_wrangler"): - print( - f"TODO: implement set_attention_slice_wrangler for {type(module)}" - ) # TODO + print(f"TODO: implement set_attention_slice_wrangler for {type(module)}") # TODO else: raise @@ -503,9 +450,7 @@ def remove_attention_function(unet): module.set_slicing_strategy_getter(None) except AttributeError as e: if is_attribute_error_about(e, "set_attention_slice_wrangler"): - print( - f"TODO: implement set_attention_slice_wrangler for {type(module)}" - ) + print(f"TODO: implement set_attention_slice_wrangler for {type(module)}") else: raise @@ -530,9 +475,7 @@ def get_mem_free_total(device): return mem_free_total -class InvokeAIDiffusersCrossAttention( - diffusers.models.attention.Attention, InvokeAICrossAttentionMixin -): +class InvokeAIDiffusersCrossAttention(diffusers.models.attention.Attention, InvokeAICrossAttentionMixin): def __init__(self, **kwargs): super().__init__(**kwargs) InvokeAICrossAttentionMixin.__init__(self) @@ -641,11 +584,7 @@ class SlicedSwapCrossAttnProcesser(SlicedAttnProcessor): # kwargs swap_cross_attn_context: SwapCrossAttnContext = None, ): - attention_type = ( - CrossAttentionType.SELF - if encoder_hidden_states is None - else CrossAttentionType.TOKENS - ) + attention_type = CrossAttentionType.SELF if encoder_hidden_states is None else CrossAttentionType.TOKENS # if cross-attention control is not in play, just call through to the base implementation. if ( @@ -654,9 +593,7 @@ class SlicedSwapCrossAttnProcesser(SlicedAttnProcessor): or not swap_cross_attn_context.wants_cross_attention_control(attention_type) ): # print(f"SwapCrossAttnContext for {attention_type} not active - passing request to superclass") - return super().__call__( - attn, hidden_states, encoder_hidden_states, attention_mask - ) + return super().__call__(attn, hidden_states, encoder_hidden_states, attention_mask) # else: # print(f"SwapCrossAttnContext for {attention_type} active") @@ -699,18 +636,10 @@ class SlicedSwapCrossAttnProcesser(SlicedAttnProcessor): query_slice = query[start_idx:end_idx] original_key_slice = original_text_key[start_idx:end_idx] modified_key_slice = modified_text_key[start_idx:end_idx] - attn_mask_slice = ( - attention_mask[start_idx:end_idx] - if attention_mask is not None - else None - ) + attn_mask_slice = attention_mask[start_idx:end_idx] if attention_mask is not None else None - original_attn_slice = attn.get_attention_scores( - query_slice, original_key_slice, attn_mask_slice - ) - modified_attn_slice = attn.get_attention_scores( - query_slice, modified_key_slice, attn_mask_slice - ) + original_attn_slice = attn.get_attention_scores(query_slice, original_key_slice, attn_mask_slice) + modified_attn_slice = attn.get_attention_scores(query_slice, modified_key_slice, attn_mask_slice) # because the prompt modifications may result in token sequences shifted forwards or backwards, # the original attention probabilities must be remapped to account for token index changes in the @@ -722,9 +651,7 @@ class SlicedSwapCrossAttnProcesser(SlicedAttnProcessor): # only some tokens taken from the original attention probabilities. this is controlled by the mask. mask = swap_cross_attn_context.mask inverse_mask = 1 - mask - attn_slice = ( - remapped_original_attn_slice * mask + modified_attn_slice * inverse_mask - ) + attn_slice = remapped_original_attn_slice * mask + modified_attn_slice * inverse_mask del remapped_original_attn_slice, modified_attn_slice @@ -744,6 +671,4 @@ class SlicedSwapCrossAttnProcesser(SlicedAttnProcessor): class SwapCrossAttnProcessor(SlicedSwapCrossAttnProcesser): def __init__(self): - super(SwapCrossAttnProcessor, self).__init__( - slice_size=int(1e9) - ) # massive slice size = don't slice + super(SwapCrossAttnProcessor, self).__init__(slice_size=int(1e9)) # massive slice size = don't slice diff --git a/invokeai/backend/stable_diffusion/diffusion/cross_attention_map_saving.py b/invokeai/backend/stable_diffusion/diffusion/cross_attention_map_saving.py index c489c2f0a9..b0174a455e 100644 --- a/invokeai/backend/stable_diffusion/diffusion/cross_attention_map_saving.py +++ b/invokeai/backend/stable_diffusion/diffusion/cross_attention_map_saving.py @@ -59,9 +59,7 @@ class AttentionMapSaver: for key, maps in self.collated_maps.items(): # maps has shape [(H*W), N] for N tokens # but we want [N, H, W] - this_scale_factor = math.sqrt( - maps.shape[0] / (latents_width * latents_height) - ) + this_scale_factor = math.sqrt(maps.shape[0] / (latents_width * latents_height)) this_maps_height = int(float(latents_height) * this_scale_factor) this_maps_width = int(float(latents_width) * this_scale_factor) # and we need to do some dimension juggling @@ -72,9 +70,7 @@ class AttentionMapSaver: # scale to output size if necessary if this_scale_factor != 1: - maps = tv_resize( - maps, [latents_height, latents_width], InterpolationMode.BICUBIC - ) + maps = tv_resize(maps, [latents_height, latents_width], InterpolationMode.BICUBIC) # normalize maps_min = torch.min(maps) @@ -83,9 +79,7 @@ class AttentionMapSaver: maps_normalized = (maps - maps_min) / maps_range # expand to (-0.1, 1.1) and clamp maps_normalized_expanded = maps_normalized * 1.1 - 0.05 - maps_normalized_expanded_clamped = torch.clamp( - maps_normalized_expanded, 0, 1 - ) + maps_normalized_expanded_clamped = torch.clamp(maps_normalized_expanded, 0, 1) # merge together, producing a vertical stack maps_stacked = torch.reshape( diff --git a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py index f44578cd47..272518e928 100644 --- a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +++ b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py @@ -31,6 +31,7 @@ ModelForwardCallback: TypeAlias = Union[ Callable[[torch.Tensor, torch.Tensor, torch.Tensor], torch.Tensor], ] + @dataclass(frozen=True) class PostprocessingSettings: threshold: float @@ -81,14 +82,12 @@ class InvokeAIDiffuserComponent: @contextmanager def custom_attention_context( cls, - unet: UNet2DConditionModel, # note: also may futz with the text encoder depending on requested LoRAs + unet: UNet2DConditionModel, # note: also may futz with the text encoder depending on requested LoRAs extra_conditioning_info: Optional[ExtraConditioningInfo], - step_count: int + step_count: int, ): old_attn_processors = None - if extra_conditioning_info and ( - extra_conditioning_info.wants_cross_attention_control - ): + 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: @@ -116,27 +115,15 @@ class InvokeAIDiffuserComponent: return saver.add_attention_maps(slice, key) - tokens_cross_attention_modules = get_cross_attention_modules( - self.model, CrossAttentionType.TOKENS - ) + tokens_cross_attention_modules = get_cross_attention_modules(self.model, CrossAttentionType.TOKENS) for identifier, module in tokens_cross_attention_modules: - key = ( - "down" - if identifier.startswith("down") - else "up" - if identifier.startswith("up") - else "mid" - ) + key = "down" if identifier.startswith("down") else "up" if identifier.startswith("up") else "mid" module.set_attention_slice_calculated_callback( - lambda slice, dim, offset, slice_size, key=key: callback( - slice, dim, offset, slice_size, key - ) + lambda slice, dim, offset, slice_size, key=key: callback(slice, dim, offset, slice_size, key) ) def remove_attention_map_saving(self): - tokens_cross_attention_modules = get_cross_attention_modules( - self.model, CrossAttentionType.TOKENS - ) + tokens_cross_attention_modules = get_cross_attention_modules(self.model, CrossAttentionType.TOKENS) for _, module in tokens_cross_attention_modules: module.set_attention_slice_calculated_callback(None) @@ -171,10 +158,8 @@ class InvokeAIDiffuserComponent: context: Context = self.cross_attention_control_context if self.cross_attention_control_context is not None: percent_through = step_index / total_step_count - cross_attention_control_types_to_do = ( - context.get_active_cross_attention_control_types_for_step( - percent_through - ) + cross_attention_control_types_to_do = context.get_active_cross_attention_control_types_for_step( + percent_through ) wants_cross_attention_control = len(cross_attention_control_types_to_do) > 0 @@ -182,7 +167,11 @@ class InvokeAIDiffuserComponent: if wants_hybrid_conditioning: unconditioned_next_x, conditioned_next_x = self._apply_hybrid_conditioning( - x, sigma, unconditioning, conditioning, **kwargs, + x, + sigma, + unconditioning, + conditioning, + **kwargs, ) elif wants_cross_attention_control: ( @@ -201,7 +190,11 @@ class InvokeAIDiffuserComponent: unconditioned_next_x, conditioned_next_x, ) = self._apply_standard_conditioning_sequentially( - x, sigma, unconditioning, conditioning, **kwargs, + x, + sigma, + unconditioning, + conditioning, + **kwargs, ) else: @@ -209,12 +202,18 @@ class InvokeAIDiffuserComponent: unconditioned_next_x, conditioned_next_x, ) = self._apply_standard_conditioning( - x, sigma, unconditioning, conditioning, **kwargs, + x, + sigma, + unconditioning, + conditioning, + **kwargs, ) combined_next_x = self._combine( # unconditioned_next_x, conditioned_next_x, unconditional_guidance_scale - unconditioned_next_x, conditioned_next_x, guidance_scale + unconditioned_next_x, + conditioned_next_x, + guidance_scale, ) return combined_next_x @@ -229,37 +228,47 @@ class InvokeAIDiffuserComponent: ) -> torch.Tensor: if postprocessing_settings is not None: percent_through = step_index / total_step_count - latents = self.apply_threshold( - postprocessing_settings, latents, percent_through - ) - latents = self.apply_symmetry( - postprocessing_settings, latents, percent_through - ) + latents = self.apply_threshold(postprocessing_settings, latents, percent_through) + latents = self.apply_symmetry(postprocessing_settings, latents, percent_through) return latents def _concat_conditionings_for_batch(self, unconditioning, conditioning): def _pad_conditioning(cond, target_len, encoder_attention_mask): - conditioning_attention_mask = torch.ones((cond.shape[0], cond.shape[1]), device=cond.device, dtype=cond.dtype) + conditioning_attention_mask = torch.ones( + (cond.shape[0], cond.shape[1]), device=cond.device, dtype=cond.dtype + ) if cond.shape[1] < max_len: - conditioning_attention_mask = torch.cat([ - conditioning_attention_mask, - torch.zeros((cond.shape[0], max_len - cond.shape[1]), device=cond.device, dtype=cond.dtype), - ], dim=1) + conditioning_attention_mask = torch.cat( + [ + conditioning_attention_mask, + torch.zeros((cond.shape[0], max_len - cond.shape[1]), device=cond.device, dtype=cond.dtype), + ], + dim=1, + ) - cond = torch.cat([ - cond, - torch.zeros((cond.shape[0], max_len - cond.shape[1], cond.shape[2]), device=cond.device, dtype=cond.dtype), - ], dim=1) + cond = torch.cat( + [ + cond, + torch.zeros( + (cond.shape[0], max_len - cond.shape[1], cond.shape[2]), + device=cond.device, + dtype=cond.dtype, + ), + ], + dim=1, + ) if encoder_attention_mask is None: encoder_attention_mask = conditioning_attention_mask else: - encoder_attention_mask = torch.cat([ - encoder_attention_mask, - conditioning_attention_mask, - ]) - + encoder_attention_mask = torch.cat( + [ + encoder_attention_mask, + conditioning_attention_mask, + ] + ) + return cond, encoder_attention_mask encoder_attention_mask = None @@ -277,11 +286,11 @@ class InvokeAIDiffuserComponent: x_twice = torch.cat([x] * 2) sigma_twice = torch.cat([sigma] * 2) - both_conditionings, encoder_attention_mask = self._concat_conditionings_for_batch( - unconditioning, conditioning - ) + both_conditionings, encoder_attention_mask = self._concat_conditionings_for_batch(unconditioning, conditioning) both_results = self.model_forward_callback( - x_twice, sigma_twice, both_conditionings, + x_twice, + sigma_twice, + both_conditionings, encoder_attention_mask=encoder_attention_mask, **kwargs, ) @@ -312,13 +321,17 @@ class InvokeAIDiffuserComponent: uncond_mid_block, cond_mid_block = mid_block_additional_residual.chunk(2) unconditioned_next_x = self.model_forward_callback( - x, sigma, unconditioning, + x, + sigma, + unconditioning, down_block_additional_residuals=uncond_down_block, mid_block_additional_residual=uncond_mid_block, **kwargs, ) conditioned_next_x = self.model_forward_callback( - x, sigma, conditioning, + x, + sigma, + conditioning, down_block_additional_residuals=cond_down_block, mid_block_additional_residual=cond_mid_block, **kwargs, @@ -335,13 +348,15 @@ class InvokeAIDiffuserComponent: for k in conditioning: if isinstance(conditioning[k], list): both_conditionings[k] = [ - torch.cat([unconditioning[k][i], conditioning[k][i]]) - for i in range(len(conditioning[k])) + torch.cat([unconditioning[k][i], conditioning[k][i]]) for i in range(len(conditioning[k])) ] else: both_conditionings[k] = torch.cat([unconditioning[k], conditioning[k]]) unconditioned_next_x, conditioned_next_x = self.model_forward_callback( - x_twice, sigma_twice, both_conditionings, **kwargs, + x_twice, + sigma_twice, + both_conditionings, + **kwargs, ).chunk(2) return unconditioned_next_x, conditioned_next_x @@ -388,9 +403,7 @@ class InvokeAIDiffuserComponent: ) # do requested cross attention types for conditioning (positive prompt) - cross_attn_processor_context.cross_attention_types_to_do = ( - cross_attention_control_types_to_do - ) + cross_attn_processor_context.cross_attention_types_to_do = cross_attention_control_types_to_do conditioned_next_x = self.model_forward_callback( x, sigma, @@ -414,19 +427,14 @@ class InvokeAIDiffuserComponent: latents: torch.Tensor, percent_through: float, ) -> torch.Tensor: - if ( - postprocessing_settings.threshold is None - or postprocessing_settings.threshold == 0.0 - ): + if postprocessing_settings.threshold is None or postprocessing_settings.threshold == 0.0: return latents threshold = postprocessing_settings.threshold warmup = postprocessing_settings.warmup if percent_through < warmup: - current_threshold = threshold + threshold * 5 * ( - 1 - (percent_through / warmup) - ) + current_threshold = threshold + threshold * 5 * (1 - (percent_through / warmup)) else: current_threshold = threshold @@ -440,18 +448,10 @@ class InvokeAIDiffuserComponent: if self.debug_thresholding: std, mean = [i.item() for i in torch.std_mean(latents)] - outside = torch.count_nonzero( - (latents < -current_threshold) | (latents > current_threshold) - ) - logger.info( - f"Threshold: %={percent_through} threshold={current_threshold:.3f} (of {threshold:.3f})" - ) - logger.debug( - f"min, mean, max = {minval:.3f}, {mean:.3f}, {maxval:.3f}\tstd={std}" - ) - logger.debug( - f"{outside / latents.numel() * 100:.2f}% values outside threshold" - ) + outside = torch.count_nonzero((latents < -current_threshold) | (latents > current_threshold)) + logger.info(f"Threshold: %={percent_through} threshold={current_threshold:.3f} (of {threshold:.3f})") + logger.debug(f"min, mean, max = {minval:.3f}, {mean:.3f}, {maxval:.3f}\tstd={std}") + logger.debug(f"{outside / latents.numel() * 100:.2f}% values outside threshold") if maxval < current_threshold and minval > -current_threshold: return latents @@ -464,25 +464,17 @@ class InvokeAIDiffuserComponent: latents = torch.clone(latents) maxval = np.clip(maxval * scale, 1, current_threshold) num_altered += torch.count_nonzero(latents > maxval) - latents[latents > maxval] = ( - torch.rand_like(latents[latents > maxval]) * maxval - ) + latents[latents > maxval] = torch.rand_like(latents[latents > maxval]) * maxval if minval < -current_threshold: latents = torch.clone(latents) minval = np.clip(minval * scale, -current_threshold, -1) num_altered += torch.count_nonzero(latents < minval) - latents[latents < minval] = ( - torch.rand_like(latents[latents < minval]) * minval - ) + latents[latents < minval] = torch.rand_like(latents[latents < minval]) * minval if self.debug_thresholding: - logger.debug( - f"min, , max = {minval:.3f}, , {maxval:.3f}\t(scaled by {scale})" - ) - logger.debug( - f"{num_altered / latents.numel() * 100:.2f}% values altered" - ) + logger.debug(f"min, , max = {minval:.3f}, , {maxval:.3f}\t(scaled by {scale})") + logger.debug(f"{num_altered / latents.numel() * 100:.2f}% values altered") return latents @@ -501,15 +493,11 @@ class InvokeAIDiffuserComponent: # Check for out of bounds h_symmetry_time_pct = postprocessing_settings.h_symmetry_time_pct - if h_symmetry_time_pct is not None and ( - h_symmetry_time_pct <= 0.0 or h_symmetry_time_pct > 1.0 - ): + if h_symmetry_time_pct is not None and (h_symmetry_time_pct <= 0.0 or h_symmetry_time_pct > 1.0): h_symmetry_time_pct = None v_symmetry_time_pct = postprocessing_settings.v_symmetry_time_pct - if v_symmetry_time_pct is not None and ( - v_symmetry_time_pct <= 0.0 or v_symmetry_time_pct > 1.0 - ): + if v_symmetry_time_pct is not None and (v_symmetry_time_pct <= 0.0 or v_symmetry_time_pct > 1.0): v_symmetry_time_pct = None dev = latents.device.type @@ -554,9 +542,7 @@ class InvokeAIDiffuserComponent: def estimate_percent_through(self, step_index, sigma): if step_index is not None and self.cross_attention_control_context is not None: # percent_through will never reach 1.0 (but this is intended) - return float(step_index) / float( - self.cross_attention_control_context.step_count - ) + return float(step_index) / float(self.cross_attention_control_context.step_count) # find the best possible index of the current sigma in the sigma sequence smaller_sigmas = torch.nonzero(self.model.sigmas <= sigma) sigma_index = smaller_sigmas[-1].item() if smaller_sigmas.shape[0] > 0 else 0 @@ -567,19 +553,13 @@ class InvokeAIDiffuserComponent: # todo: make this work @classmethod - def apply_conjunction( - cls, x, t, forward_func, uc, c_or_weighted_c_list, global_guidance_scale - ): + def apply_conjunction(cls, x, t, forward_func, uc, c_or_weighted_c_list, global_guidance_scale): x_in = torch.cat([x] * 2) t_in = torch.cat([t] * 2) # aka sigmas deltas = None uncond_latents = None - weighted_cond_list = ( - c_or_weighted_c_list - if type(c_or_weighted_c_list) is list - else [(c_or_weighted_c_list, 1)] - ) + weighted_cond_list = c_or_weighted_c_list if type(c_or_weighted_c_list) is list else [(c_or_weighted_c_list, 1)] # below is fugly omg conditionings = [uc] + [c for c, weight in weighted_cond_list] @@ -608,15 +588,11 @@ class InvokeAIDiffuserComponent: deltas = torch.cat((deltas, latents_b - uncond_latents)) # merge the weighted deltas together into a single merged delta - per_delta_weights = torch.tensor( - weights[1:], dtype=deltas.dtype, device=deltas.device - ) + per_delta_weights = torch.tensor(weights[1:], dtype=deltas.dtype, device=deltas.device) normalize = False if normalize: per_delta_weights /= torch.sum(per_delta_weights) - reshaped_weights = per_delta_weights.reshape( - per_delta_weights.shape + (1, 1, 1) - ) + reshaped_weights = per_delta_weights.reshape(per_delta_weights.shape + (1, 1, 1)) deltas_merged = torch.sum(deltas * reshaped_weights, dim=0, keepdim=True) # old_return_value = super().forward(x, sigma, uncond, cond, cond_scale) diff --git a/invokeai/backend/stable_diffusion/image_degradation/bsrgan.py b/invokeai/backend/stable_diffusion/image_degradation/bsrgan.py index 1760206073..493c8be781 100644 --- a/invokeai/backend/stable_diffusion/image_degradation/bsrgan.py +++ b/invokeai/backend/stable_diffusion/image_degradation/bsrgan.py @@ -261,9 +261,7 @@ def srmd_degradation(x, k, sf=3): year={2018} } """ - x = ndimage.filters.convolve( - x, np.expand_dims(k, axis=2), mode="wrap" - ) # 'nearest' | 'mirror' + x = ndimage.filters.convolve(x, np.expand_dims(k, axis=2), mode="wrap") # 'nearest' | 'mirror' x = bicubic_degradation(x, sf=sf) return x @@ -389,21 +387,15 @@ def add_Gaussian_noise(img, noise_level1=2, noise_level2=25): noise_level = random.randint(noise_level1, noise_level2) rnum = np.random.rand() if rnum > 0.6: # add color Gaussian noise - img = img + np.random.normal(0, noise_level / 255.0, img.shape).astype( - np.float32 - ) + img = img + np.random.normal(0, noise_level / 255.0, img.shape).astype(np.float32) elif rnum < 0.4: # add grayscale Gaussian noise - img = img + np.random.normal( - 0, noise_level / 255.0, (*img.shape[:2], 1) - ).astype(np.float32) + img = img + np.random.normal(0, noise_level / 255.0, (*img.shape[:2], 1)).astype(np.float32) else: # add noise L = noise_level2 / 255.0 D = np.diag(np.random.rand(3)) U = orth(np.random.rand(3, 3)) conv = np.dot(np.dot(np.transpose(U), D), U) - img = img + np.random.multivariate_normal( - [0, 0, 0], np.abs(L**2 * conv), img.shape[:2] - ).astype(np.float32) + img = img + np.random.multivariate_normal([0, 0, 0], np.abs(L**2 * conv), img.shape[:2]).astype(np.float32) img = np.clip(img, 0.0, 1.0) return img @@ -413,21 +405,15 @@ def add_speckle_noise(img, noise_level1=2, noise_level2=25): img = np.clip(img, 0.0, 1.0) rnum = random.random() if rnum > 0.6: - img += img * np.random.normal(0, noise_level / 255.0, img.shape).astype( - np.float32 - ) + img += img * np.random.normal(0, noise_level / 255.0, img.shape).astype(np.float32) elif rnum < 0.4: - img += img * np.random.normal( - 0, noise_level / 255.0, (*img.shape[:2], 1) - ).astype(np.float32) + img += img * np.random.normal(0, noise_level / 255.0, (*img.shape[:2], 1)).astype(np.float32) else: L = noise_level2 / 255.0 D = np.diag(np.random.rand(3)) U = orth(np.random.rand(3, 3)) conv = np.dot(np.dot(np.transpose(U), D), U) - img += img * np.random.multivariate_normal( - [0, 0, 0], np.abs(L**2 * conv), img.shape[:2] - ).astype(np.float32) + img += img * np.random.multivariate_normal([0, 0, 0], np.abs(L**2 * conv), img.shape[:2]).astype(np.float32) img = np.clip(img, 0.0, 1.0) return img @@ -440,9 +426,7 @@ def add_Poisson_noise(img): else: img_gray = np.dot(img[..., :3], [0.299, 0.587, 0.114]) img_gray = np.clip((img_gray * 255.0).round(), 0, 255) / 255.0 - noise_gray = ( - np.random.poisson(img_gray * vals).astype(np.float32) / vals - img_gray - ) + noise_gray = np.random.poisson(img_gray * vals).astype(np.float32) / vals - img_gray img += noise_gray[:, :, np.newaxis] img = np.clip(img, 0.0, 1.0) return img @@ -451,9 +435,7 @@ def add_Poisson_noise(img): def add_JPEG_noise(img): quality_factor = random.randint(30, 95) img = cv2.cvtColor(util.single2uint(img), cv2.COLOR_RGB2BGR) - result, encimg = cv2.imencode( - ".jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), quality_factor] - ) + result, encimg = cv2.imencode(".jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), quality_factor]) img = cv2.imdecode(encimg, 1) img = cv2.cvtColor(util.uint2single(img), cv2.COLOR_BGR2RGB) return img @@ -540,9 +522,7 @@ def degradation_bsrgan(img, sf=4, lq_patchsize=72, isp_model=None): k = fspecial("gaussian", 25, random.uniform(0.1, 0.6 * sf)) k_shifted = shift_pixel(k, sf) k_shifted = k_shifted / k_shifted.sum() # blur with shifted kernel - img = ndimage.filters.convolve( - img, np.expand_dims(k_shifted, axis=2), mode="mirror" - ) + img = ndimage.filters.convolve(img, np.expand_dims(k_shifted, axis=2), mode="mirror") img = img[0::sf, 0::sf, ...] # nearest downsampling img = np.clip(img, 0.0, 1.0) @@ -646,9 +626,7 @@ def degradation_bsrgan_variant(image, sf=4, isp_model=None): k = fspecial("gaussian", 25, random.uniform(0.1, 0.6 * sf)) k_shifted = shift_pixel(k, sf) k_shifted = k_shifted / k_shifted.sum() # blur with shifted kernel - image = ndimage.filters.convolve( - image, np.expand_dims(k_shifted, axis=2), mode="mirror" - ) + image = ndimage.filters.convolve(image, np.expand_dims(k_shifted, axis=2), mode="mirror") image = image[0::sf, 0::sf, ...] # nearest downsampling image = np.clip(image, 0.0, 1.0) @@ -796,9 +774,7 @@ if __name__ == "__main__": print(i) img_lq = deg_fn(img) print(img_lq) - img_lq_bicubic = albumentations.SmallestMaxSize( - max_size=h, interpolation=cv2.INTER_CUBIC - )(image=img)["image"] + img_lq_bicubic = albumentations.SmallestMaxSize(max_size=h, interpolation=cv2.INTER_CUBIC)(image=img)["image"] print(img_lq.shape) print("bicubic", img_lq_bicubic.shape) print(img_hq.shape) @@ -812,7 +788,5 @@ if __name__ == "__main__": (int(sf * img_lq.shape[1]), int(sf * img_lq.shape[0])), interpolation=0, ) - img_concat = np.concatenate( - [lq_bicubic_nearest, lq_nearest, util.single2uint(img_hq)], axis=1 - ) + img_concat = np.concatenate([lq_bicubic_nearest, lq_nearest, util.single2uint(img_hq)], axis=1) util.imsave(img_concat, str(i) + ".png") diff --git a/invokeai/backend/stable_diffusion/image_degradation/bsrgan_light.py b/invokeai/backend/stable_diffusion/image_degradation/bsrgan_light.py index 1e8eee82b5..d0e0abadbc 100644 --- a/invokeai/backend/stable_diffusion/image_degradation/bsrgan_light.py +++ b/invokeai/backend/stable_diffusion/image_degradation/bsrgan_light.py @@ -261,9 +261,7 @@ def srmd_degradation(x, k, sf=3): year={2018} } """ - x = ndimage.filters.convolve( - x, np.expand_dims(k, axis=2), mode="wrap" - ) # 'nearest' | 'mirror' + x = ndimage.filters.convolve(x, np.expand_dims(k, axis=2), mode="wrap") # 'nearest' | 'mirror' x = bicubic_degradation(x, sf=sf) return x @@ -393,21 +391,15 @@ def add_Gaussian_noise(img, noise_level1=2, noise_level2=25): noise_level = random.randint(noise_level1, noise_level2) rnum = np.random.rand() if rnum > 0.6: # add color Gaussian noise - img = img + np.random.normal(0, noise_level / 255.0, img.shape).astype( - np.float32 - ) + img = img + np.random.normal(0, noise_level / 255.0, img.shape).astype(np.float32) elif rnum < 0.4: # add grayscale Gaussian noise - img = img + np.random.normal( - 0, noise_level / 255.0, (*img.shape[:2], 1) - ).astype(np.float32) + img = img + np.random.normal(0, noise_level / 255.0, (*img.shape[:2], 1)).astype(np.float32) else: # add noise L = noise_level2 / 255.0 D = np.diag(np.random.rand(3)) U = orth(np.random.rand(3, 3)) conv = np.dot(np.dot(np.transpose(U), D), U) - img = img + np.random.multivariate_normal( - [0, 0, 0], np.abs(L**2 * conv), img.shape[:2] - ).astype(np.float32) + img = img + np.random.multivariate_normal([0, 0, 0], np.abs(L**2 * conv), img.shape[:2]).astype(np.float32) img = np.clip(img, 0.0, 1.0) return img @@ -417,21 +409,15 @@ def add_speckle_noise(img, noise_level1=2, noise_level2=25): img = np.clip(img, 0.0, 1.0) rnum = random.random() if rnum > 0.6: - img += img * np.random.normal(0, noise_level / 255.0, img.shape).astype( - np.float32 - ) + img += img * np.random.normal(0, noise_level / 255.0, img.shape).astype(np.float32) elif rnum < 0.4: - img += img * np.random.normal( - 0, noise_level / 255.0, (*img.shape[:2], 1) - ).astype(np.float32) + img += img * np.random.normal(0, noise_level / 255.0, (*img.shape[:2], 1)).astype(np.float32) else: L = noise_level2 / 255.0 D = np.diag(np.random.rand(3)) U = orth(np.random.rand(3, 3)) conv = np.dot(np.dot(np.transpose(U), D), U) - img += img * np.random.multivariate_normal( - [0, 0, 0], np.abs(L**2 * conv), img.shape[:2] - ).astype(np.float32) + img += img * np.random.multivariate_normal([0, 0, 0], np.abs(L**2 * conv), img.shape[:2]).astype(np.float32) img = np.clip(img, 0.0, 1.0) return img @@ -444,9 +430,7 @@ def add_Poisson_noise(img): else: img_gray = np.dot(img[..., :3], [0.299, 0.587, 0.114]) img_gray = np.clip((img_gray * 255.0).round(), 0, 255) / 255.0 - noise_gray = ( - np.random.poisson(img_gray * vals).astype(np.float32) / vals - img_gray - ) + noise_gray = np.random.poisson(img_gray * vals).astype(np.float32) / vals - img_gray img += noise_gray[:, :, np.newaxis] img = np.clip(img, 0.0, 1.0) return img @@ -455,9 +439,7 @@ def add_Poisson_noise(img): def add_JPEG_noise(img): quality_factor = random.randint(80, 95) img = cv2.cvtColor(util.single2uint(img), cv2.COLOR_RGB2BGR) - result, encimg = cv2.imencode( - ".jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), quality_factor] - ) + result, encimg = cv2.imencode(".jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), quality_factor]) img = cv2.imdecode(encimg, 1) img = cv2.cvtColor(util.uint2single(img), cv2.COLOR_BGR2RGB) return img @@ -544,9 +526,7 @@ def degradation_bsrgan(img, sf=4, lq_patchsize=72, isp_model=None): k = fspecial("gaussian", 25, random.uniform(0.1, 0.6 * sf)) k_shifted = shift_pixel(k, sf) k_shifted = k_shifted / k_shifted.sum() # blur with shifted kernel - img = ndimage.filters.convolve( - img, np.expand_dims(k_shifted, axis=2), mode="mirror" - ) + img = ndimage.filters.convolve(img, np.expand_dims(k_shifted, axis=2), mode="mirror") img = img[0::sf, 0::sf, ...] # nearest downsampling img = np.clip(img, 0.0, 1.0) @@ -653,9 +633,7 @@ def degradation_bsrgan_variant(image, sf=4, isp_model=None): k = fspecial("gaussian", 25, random.uniform(0.1, 0.6 * sf)) k_shifted = shift_pixel(k, sf) k_shifted = k_shifted / k_shifted.sum() # blur with shifted kernel - image = ndimage.filters.convolve( - image, np.expand_dims(k_shifted, axis=2), mode="mirror" - ) + image = ndimage.filters.convolve(image, np.expand_dims(k_shifted, axis=2), mode="mirror") image = image[0::sf, 0::sf, ...] # nearest downsampling image = np.clip(image, 0.0, 1.0) @@ -705,9 +683,9 @@ if __name__ == "__main__": img_lq = deg_fn(img)["image"] img_hq, img_lq = util.uint2single(img_hq), util.uint2single(img_lq) print(img_lq) - img_lq_bicubic = albumentations.SmallestMaxSize( - max_size=h, interpolation=cv2.INTER_CUBIC - )(image=img_hq)["image"] + img_lq_bicubic = albumentations.SmallestMaxSize(max_size=h, interpolation=cv2.INTER_CUBIC)(image=img_hq)[ + "image" + ] print(img_lq.shape) print("bicubic", img_lq_bicubic.shape) print(img_hq.shape) @@ -721,7 +699,5 @@ if __name__ == "__main__": (int(sf * img_lq.shape[1]), int(sf * img_lq.shape[0])), interpolation=0, ) - img_concat = np.concatenate( - [lq_bicubic_nearest, lq_nearest, util.single2uint(img_hq)], axis=1 - ) + img_concat = np.concatenate([lq_bicubic_nearest, lq_nearest, util.single2uint(img_hq)], axis=1) util.imsave(img_concat, str(i) + ".png") diff --git a/invokeai/backend/stable_diffusion/image_degradation/utils_image.py b/invokeai/backend/stable_diffusion/image_degradation/utils_image.py index c4d37a24bf..d45ca602e6 100644 --- a/invokeai/backend/stable_diffusion/image_degradation/utils_image.py +++ b/invokeai/backend/stable_diffusion/image_degradation/utils_image.py @@ -11,6 +11,7 @@ from torchvision.utils import make_grid # import matplotlib.pyplot as plt # TODO: check with Dominik, also bsrgan.py vs bsrgan_light.py import invokeai.backend.util.logging as logger + os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" @@ -296,22 +297,14 @@ def single2uint16(img): def uint2tensor4(img): if img.ndim == 2: img = np.expand_dims(img, axis=2) - return ( - torch.from_numpy(np.ascontiguousarray(img)) - .permute(2, 0, 1) - .float() - .div(255.0) - .unsqueeze(0) - ) + return torch.from_numpy(np.ascontiguousarray(img)).permute(2, 0, 1).float().div(255.0).unsqueeze(0) # convert uint to 3-dimensional torch tensor def uint2tensor3(img): if img.ndim == 2: img = np.expand_dims(img, axis=2) - return ( - torch.from_numpy(np.ascontiguousarray(img)).permute(2, 0, 1).float().div(255.0) - ) + return torch.from_numpy(np.ascontiguousarray(img)).permute(2, 0, 1).float().div(255.0) # convert 2/3/4-dimensional torch tensor to uint @@ -334,12 +327,7 @@ def single2tensor3(img): # convert single (HxWxC) to 4-dimensional torch tensor def single2tensor4(img): - return ( - torch.from_numpy(np.ascontiguousarray(img)) - .permute(2, 0, 1) - .float() - .unsqueeze(0) - ) + return torch.from_numpy(np.ascontiguousarray(img)).permute(2, 0, 1).float().unsqueeze(0) # convert torch tensor to single @@ -362,12 +350,7 @@ def tensor2single3(img): def single2tensor5(img): - return ( - torch.from_numpy(np.ascontiguousarray(img)) - .permute(2, 0, 1, 3) - .float() - .unsqueeze(0) - ) + return torch.from_numpy(np.ascontiguousarray(img)).permute(2, 0, 1, 3).float().unsqueeze(0) def single32tensor5(img): @@ -385,9 +368,7 @@ def tensor2img(tensor, out_type=np.uint8, min_max=(0, 1)): Input: 4D(B,(3/1),H,W), 3D(C,H,W), or 2D(H,W), any range, RGB channel order Output: 3D(H,W,C) or 2D(H,W), [0,255], np.uint8 (default) """ - tensor = ( - tensor.squeeze().float().cpu().clamp_(*min_max) - ) # squeeze first, then clamp + tensor = tensor.squeeze().float().cpu().clamp_(*min_max) # squeeze first, then clamp tensor = (tensor - min_max[0]) / (min_max[1] - min_max[0]) # to range [0,1] n_dim = tensor.dim() if n_dim == 4: @@ -400,11 +381,7 @@ def tensor2img(tensor, out_type=np.uint8, min_max=(0, 1)): elif n_dim == 2: img_np = tensor.numpy() else: - raise TypeError( - "Only support 4D, 3D and 2D tensor. But received with dimension: {:d}".format( - n_dim - ) - ) + raise TypeError("Only support 4D, 3D and 2D tensor. But received with dimension: {:d}".format(n_dim)) if out_type == np.uint8: img_np = (img_np * 255.0).round() # Important. Unlike matlab, numpy.unit8() WILL NOT round by default. @@ -744,9 +721,7 @@ def ssim(img1, img2): sigma2_sq = cv2.filter2D(img2**2, -1, window)[5:-5, 5:-5] - mu2_sq sigma12 = cv2.filter2D(img1 * img2, -1, window)[5:-5, 5:-5] - mu1_mu2 - ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ( - (mu1_sq + mu2_sq + C1) * (sigma1_sq + sigma2_sq + C2) - ) + ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ((mu1_sq + mu2_sq + C1) * (sigma1_sq + sigma2_sq + C2)) return ssim_map.mean() @@ -767,9 +742,7 @@ def cubic(x): ) * (((absx > 1) * (absx <= 2)).type_as(absx)) -def calculate_weights_indices( - in_length, out_length, scale, kernel, kernel_width, antialiasing -): +def calculate_weights_indices(in_length, out_length, scale, kernel, kernel_width, antialiasing): if (scale < 1) and (antialiasing): # Use a modified kernel to simultaneously interpolate and antialias- larger kernel width kernel_width = kernel_width / scale @@ -793,9 +766,9 @@ def calculate_weights_indices( # The indices of the input pixels involved in computing the k-th output # pixel are in row k of the indices matrix. - indices = left.view(out_length, 1).expand(out_length, P) + torch.linspace( - 0, P - 1, P - ).view(1, P).expand(out_length, P) + indices = left.view(out_length, 1).expand(out_length, P) + torch.linspace(0, P - 1, P).view(1, P).expand( + out_length, P + ) # The weights used to compute the k-th output pixel are in row k of the # weights matrix. @@ -876,9 +849,7 @@ def imresize(img, scale, antialiasing=True): for i in range(out_H): idx = int(indices_H[i][0]) for j in range(out_C): - out_1[j, i, :] = ( - img_aug[j, idx : idx + kernel_width, :].transpose(0, 1).mv(weights_H[i]) - ) + out_1[j, i, :] = img_aug[j, idx : idx + kernel_width, :].transpose(0, 1).mv(weights_H[i]) # process W dimension # symmetric copying @@ -959,9 +930,7 @@ def imresize_np(img, scale, antialiasing=True): for i in range(out_H): idx = int(indices_H[i][0]) for j in range(out_C): - out_1[i, :, j] = ( - img_aug[idx : idx + kernel_width, :, j].transpose(0, 1).mv(weights_H[i]) - ) + out_1[i, :, j] = img_aug[idx : idx + kernel_width, :, j].transpose(0, 1).mv(weights_H[i]) # process W dimension # symmetric copying diff --git a/invokeai/backend/stable_diffusion/offloading.py b/invokeai/backend/stable_diffusion/offloading.py index d36b65872a..aa2426d514 100644 --- a/invokeai/backend/stable_diffusion/offloading.py +++ b/invokeai/backend/stable_diffusion/offloading.py @@ -95,10 +95,7 @@ class ModelGroup(metaclass=ABCMeta): pass def __repr__(self) -> str: - return ( - f"<{self.__class__.__name__} object at {id(self):x}: " - f"device={self.execution_device} >" - ) + return f"<{self.__class__.__name__} object at {id(self):x}: " f"device={self.execution_device} >" class LazilyLoadedModelGroup(ModelGroup): @@ -143,8 +140,7 @@ class LazilyLoadedModelGroup(ModelGroup): self.load(module) if len(forward_input) == 0: warnings.warn( - f"Hook for {module.__class__.__name__} got no input. " - f"Inputs must be positional, not keywords.", + f"Hook for {module.__class__.__name__} got no input. " f"Inputs must be positional, not keywords.", stacklevel=3, ) return send_to_device(forward_input, self.execution_device) @@ -161,9 +157,7 @@ class LazilyLoadedModelGroup(ModelGroup): self.clear_current_model() def _load(self, module: torch.nn.Module) -> torch.nn.Module: - assert ( - self.is_empty() - ), f"A model is already loaded: {self._current_model_ref()}" + assert self.is_empty(), f"A model is already loaded: {self._current_model_ref()}" module = module.to(self.execution_device) self.set_current_model(module) return module @@ -192,12 +186,8 @@ class LazilyLoadedModelGroup(ModelGroup): def device_for(self, model): if model not in self: - raise KeyError( - f"This does not manage this model {type(model).__name__}", model - ) - return ( - self.execution_device - ) # this implementation only dispatches to one device + raise KeyError(f"This does not manage this model {type(model).__name__}", model) + return self.execution_device # this implementation only dispatches to one device def ready(self): pass # always ready to load on-demand @@ -256,12 +246,8 @@ class FullyLoadedModelGroup(ModelGroup): def device_for(self, model): if model not in self: - raise KeyError( - "This does not manage this model f{type(model).__name__}", model - ) - return ( - self.execution_device - ) # this implementation only dispatches to one device + raise KeyError("This does not manage this model f{type(model).__name__}", model) + return self.execution_device # this implementation only dispatches to one device def __contains__(self, model): return model in self._models diff --git a/invokeai/backend/stable_diffusion/schedulers/__init__.py b/invokeai/backend/stable_diffusion/schedulers/__init__.py index b2df0df231..29a96eb3a5 100644 --- a/invokeai/backend/stable_diffusion/schedulers/__init__.py +++ b/invokeai/backend/stable_diffusion/schedulers/__init__.py @@ -1 +1 @@ -from .schedulers import SCHEDULER_MAP \ No newline at end of file +from .schedulers import SCHEDULER_MAP diff --git a/invokeai/backend/stable_diffusion/schedulers/schedulers.py b/invokeai/backend/stable_diffusion/schedulers/schedulers.py index 77c45d5eb8..2f62f8c477 100644 --- a/invokeai/backend/stable_diffusion/schedulers/schedulers.py +++ b/invokeai/backend/stable_diffusion/schedulers/schedulers.py @@ -1,7 +1,19 @@ -from diffusers import DDIMScheduler, DPMSolverMultistepScheduler, KDPM2DiscreteScheduler, \ - KDPM2AncestralDiscreteScheduler, EulerDiscreteScheduler, EulerAncestralDiscreteScheduler, \ - HeunDiscreteScheduler, LMSDiscreteScheduler, PNDMScheduler, UniPCMultistepScheduler, \ - DPMSolverSinglestepScheduler, DEISMultistepScheduler, DDPMScheduler, DPMSolverSDEScheduler +from diffusers import ( + DDIMScheduler, + DPMSolverMultistepScheduler, + KDPM2DiscreteScheduler, + KDPM2AncestralDiscreteScheduler, + EulerDiscreteScheduler, + EulerAncestralDiscreteScheduler, + HeunDiscreteScheduler, + LMSDiscreteScheduler, + PNDMScheduler, + UniPCMultistepScheduler, + DPMSolverSinglestepScheduler, + DEISMultistepScheduler, + DDPMScheduler, + DPMSolverSDEScheduler, +) SCHEDULER_MAP = dict( ddim=(DDIMScheduler, dict()), @@ -21,9 +33,9 @@ SCHEDULER_MAP = dict( dpmpp_2s_k=(DPMSolverSinglestepScheduler, dict(use_karras_sigmas=True)), dpmpp_2m=(DPMSolverMultistepScheduler, dict(use_karras_sigmas=False)), dpmpp_2m_k=(DPMSolverMultistepScheduler, dict(use_karras_sigmas=True)), - dpmpp_2m_sde=(DPMSolverMultistepScheduler, dict(use_karras_sigmas=False, algorithm_type='sde-dpmsolver++')), - dpmpp_2m_sde_k=(DPMSolverMultistepScheduler, dict(use_karras_sigmas=True, algorithm_type='sde-dpmsolver++')), + dpmpp_2m_sde=(DPMSolverMultistepScheduler, dict(use_karras_sigmas=False, algorithm_type="sde-dpmsolver++")), + dpmpp_2m_sde_k=(DPMSolverMultistepScheduler, dict(use_karras_sigmas=True, algorithm_type="sde-dpmsolver++")), dpmpp_sde=(DPMSolverSDEScheduler, dict(use_karras_sigmas=False, noise_sampler_seed=0)), dpmpp_sde_k=(DPMSolverSDEScheduler, dict(use_karras_sigmas=True, noise_sampler_seed=0)), - unipc=(UniPCMultistepScheduler, dict(cpu_only=True)) + unipc=(UniPCMultistepScheduler, dict(cpu_only=True)), ) diff --git a/invokeai/backend/training/textual_inversion_training.py b/invokeai/backend/training/textual_inversion_training.py index aadf8c76a3..d92aa80b38 100644 --- a/invokeai/backend/training/textual_inversion_training.py +++ b/invokeai/backend/training/textual_inversion_training.py @@ -45,7 +45,7 @@ from tqdm.auto import tqdm from transformers import CLIPTextModel, CLIPTokenizer # invokeai stuff -from invokeai.app.services.config import InvokeAIAppConfig,PagingArgumentParser +from invokeai.app.services.config import InvokeAIAppConfig, PagingArgumentParser from invokeai.app.services.model_manager_service import ModelManagerService from invokeai.backend.model_management.models import SubModelType @@ -75,24 +75,16 @@ check_min_version("0.10.0.dev0") logger = get_logger(__name__) -def save_progress( - text_encoder, placeholder_token_id, accelerator, placeholder_token, save_path -): +def save_progress(text_encoder, placeholder_token_id, accelerator, placeholder_token, save_path): logger.info("Saving embeddings") - learned_embeds = ( - accelerator.unwrap_model(text_encoder) - .get_input_embeddings() - .weight[placeholder_token_id] - ) + learned_embeds = accelerator.unwrap_model(text_encoder).get_input_embeddings().weight[placeholder_token_id] learned_embeds_dict = {placeholder_token: learned_embeds.detach().cpu()} torch.save(learned_embeds_dict, save_path) def parse_args(): config = InvokeAIAppConfig.get_config() - parser = PagingArgumentParser( - description="Textual inversion training" - ) + parser = PagingArgumentParser(description="Textual inversion training") general_group = parser.add_argument_group("General") model_group = parser.add_argument_group("Models and Paths") image_group = parser.add_argument_group("Training Image Location and Options") @@ -221,9 +213,7 @@ def parse_args(): default=100, help="How many times to repeat the training data.", ) - training_group.add_argument( - "--seed", type=int, default=None, help="A seed for reproducible training." - ) + training_group.add_argument("--seed", type=int, default=None, help="A seed for reproducible training.") training_group.add_argument( "--train_batch_size", type=int, @@ -287,9 +277,7 @@ def parse_args(): default=0.999, help="The beta2 parameter for the Adam optimizer.", ) - training_group.add_argument( - "--adam_weight_decay", type=float, default=1e-2, help="Weight decay to use." - ) + training_group.add_argument("--adam_weight_decay", type=float, default=1e-2, help="Weight decay to use.") training_group.add_argument( "--adam_epsilon", type=float, @@ -442,9 +430,7 @@ class TextualInversionDataset(Dataset): self.data_root / file_path for file_path in self.data_root.iterdir() if file_path.is_file() - and file_path.name.endswith( - (".png", ".PNG", ".jpg", ".JPG", ".jpeg", ".JPEG", ".gif", ".GIF") - ) + and file_path.name.endswith((".png", ".PNG", ".jpg", ".JPG", ".jpeg", ".JPEG", ".gif", ".GIF")) ] self.num_images = len(self.image_paths) @@ -460,11 +446,7 @@ class TextualInversionDataset(Dataset): "lanczos": PIL_INTERPOLATION["lanczos"], }[interpolation] - self.templates = ( - imagenet_style_templates_small - if learnable_property == "style" - else imagenet_templates_small - ) + self.templates = imagenet_style_templates_small if learnable_property == "style" else imagenet_templates_small self.flip_transform = transforms.RandomHorizontalFlip(p=self.flip_p) def __len__(self): @@ -500,9 +482,7 @@ class TextualInversionDataset(Dataset): img.shape[0], img.shape[1], ) - img = img[ - (h - crop) // 2 : (h + crop) // 2, (w - crop) // 2 : (w + crop) // 2 - ] + img = img[(h - crop) // 2 : (h + crop) // 2, (w - crop) // 2 : (w + crop) // 2] image = Image.fromarray(img) image = image.resize((self.size, self.size), resample=self.interpolation) @@ -515,9 +495,7 @@ class TextualInversionDataset(Dataset): return example -def get_full_repo_name( - model_id: str, organization: Optional[str] = None, token: Optional[str] = None -): +def get_full_repo_name(model_id: str, organization: Optional[str] = None, token: Optional[str] = None): if token is None: token = HfFolder.get_token() if organization is None: @@ -570,9 +548,7 @@ def do_textual_inversion_training( **kwargs, ): assert model, "Please specify a base model with --model" - assert ( - train_data_dir - ), "Please specify a directory containing the training images using --train_data_dir" + assert train_data_dir, "Please specify a directory containing the training images using --train_data_dir" assert placeholder_token, "Please specify a trigger term using --placeholder_token" env_local_rank = int(os.environ.get("LOCAL_RANK", -1)) if env_local_rank != -1 and env_local_rank != local_rank: @@ -593,7 +569,7 @@ def do_textual_inversion_training( project_config=accelerator_config, ) - model_manager = ModelManagerService(config,logger) + model_manager = ModelManagerService(config, logger) # Make one log on every process with the configuration for debugging. logging.basicConfig( @@ -633,13 +609,11 @@ def do_textual_inversion_training( os.makedirs(output_dir, exist_ok=True) known_models = model_manager.model_names() - model_name = model.split('/')[-1] + model_name = model.split("/")[-1] model_meta = next((mm for mm in known_models if mm[0].endswith(model_name)), None) assert model_meta is not None, f"Unknown model: {model}" model_info = model_manager.model_info(*model_meta) - assert ( - model_info['model_format'] == "diffusers" - ), "This script only works with models of type 'diffusers'" + assert model_info["model_format"] == "diffusers", "This script only works with models of type 'diffusers'" tokenizer_info = model_manager.get_model(*model_meta, submodel=SubModelType.Tokenizer) noise_scheduler_info = model_manager.get_model(*model_meta, submodel=SubModelType.Scheduler) text_encoder_info = model_manager.get_model(*model_meta, submodel=SubModelType.TextEncoder) @@ -650,9 +624,7 @@ def do_textual_inversion_training( if tokenizer_name: tokenizer = CLIPTokenizer.from_pretrained(tokenizer_name, **pipeline_args) else: - tokenizer = CLIPTokenizer.from_pretrained( - tokenizer_info.location, subfolder='tokenizer', **pipeline_args - ) + tokenizer = CLIPTokenizer.from_pretrained(tokenizer_info.location, subfolder="tokenizer", **pipeline_args) # Load scheduler and models noise_scheduler = DDPMScheduler.from_pretrained( @@ -722,9 +694,7 @@ def do_textual_inversion_training( if is_xformers_available(): unet.enable_xformers_memory_efficient_attention() else: - raise ValueError( - "xformers is not available. Make sure it is installed correctly" - ) + raise ValueError("xformers is not available. Make sure it is installed correctly") # Enable TF32 for faster training on Ampere GPUs, # cf https://pytorch.org/docs/stable/notes/cuda.html#tensorfloat-32-tf32-on-ampere-devices @@ -732,12 +702,7 @@ def do_textual_inversion_training( torch.backends.cuda.matmul.allow_tf32 = True if scale_lr: - learning_rate = ( - learning_rate - * gradient_accumulation_steps - * train_batch_size - * accelerator.num_processes - ) + learning_rate = learning_rate * gradient_accumulation_steps * train_batch_size * accelerator.num_processes # Initialize the optimizer optimizer = torch.optim.AdamW( @@ -759,15 +724,11 @@ def do_textual_inversion_training( center_crop=center_crop, set="train", ) - train_dataloader = torch.utils.data.DataLoader( - train_dataset, batch_size=train_batch_size, shuffle=True - ) + train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=train_batch_size, shuffle=True) # Scheduler and math around the number of training steps. overrode_max_train_steps = False - num_update_steps_per_epoch = math.ceil( - len(train_dataloader) / gradient_accumulation_steps - ) + num_update_steps_per_epoch = math.ceil(len(train_dataloader) / gradient_accumulation_steps) if max_train_steps is None: max_train_steps = num_train_epochs * num_update_steps_per_epoch overrode_max_train_steps = True @@ -797,9 +758,7 @@ def do_textual_inversion_training( vae.to(accelerator.device, dtype=weight_dtype) # We need to recalculate our total training steps as the size of the training dataloader may have changed. - num_update_steps_per_epoch = math.ceil( - len(train_dataloader) / gradient_accumulation_steps - ) + num_update_steps_per_epoch = math.ceil(len(train_dataloader) / gradient_accumulation_steps) if overrode_max_train_steps: max_train_steps = num_train_epochs * num_update_steps_per_epoch # Afterwards we recalculate our number of training epochs @@ -814,17 +773,13 @@ def do_textual_inversion_training( accelerator.init_trackers("textual_inversion", config=params) # Train! - total_batch_size = ( - train_batch_size * accelerator.num_processes * gradient_accumulation_steps - ) + total_batch_size = train_batch_size * accelerator.num_processes * gradient_accumulation_steps logger.info("***** Running training *****") logger.info(f" Num examples = {len(train_dataset)}") logger.info(f" Num Epochs = {num_train_epochs}") logger.info(f" Instantaneous batch size per device = {train_batch_size}") - logger.info( - f" Total train batch size (w. parallel, distributed & accumulation) = {total_batch_size}" - ) + logger.info(f" Total train batch size (w. parallel, distributed & accumulation) = {total_batch_size}") logger.info(f" Gradient Accumulation steps = {gradient_accumulation_steps}") logger.info(f" Total optimization steps = {max_train_steps}") global_step = 0 @@ -843,9 +798,7 @@ def do_textual_inversion_training( path = dirs[-1] if len(dirs) > 0 else None if path is None: - accelerator.print( - f"Checkpoint '{resume_from_checkpoint}' does not exist. Starting a new training run." - ) + accelerator.print(f"Checkpoint '{resume_from_checkpoint}' does not exist. Starting a new training run.") resume_from_checkpoint = None else: accelerator.print(f"Resuming from checkpoint {path}") @@ -854,9 +807,7 @@ def do_textual_inversion_training( resume_global_step = global_step * gradient_accumulation_steps first_epoch = global_step // num_update_steps_per_epoch - resume_step = resume_global_step % ( - num_update_steps_per_epoch * gradient_accumulation_steps - ) + resume_step = resume_global_step % (num_update_steps_per_epoch * gradient_accumulation_steps) # Only show the progress bar once on each machine. progress_bar = tqdm( @@ -866,33 +817,20 @@ def do_textual_inversion_training( progress_bar.set_description("Steps") # keep original embeddings as reference - orig_embeds_params = ( - accelerator.unwrap_model(text_encoder) - .get_input_embeddings() - .weight.data.clone() - ) + orig_embeds_params = accelerator.unwrap_model(text_encoder).get_input_embeddings().weight.data.clone() for epoch in range(first_epoch, num_train_epochs): text_encoder.train() for step, batch in enumerate(train_dataloader): # Skip steps until we reach the resumed step - if ( - resume_step - and resume_from_checkpoint - and epoch == first_epoch - and step < resume_step - ): + if resume_step and resume_from_checkpoint and epoch == first_epoch and step < resume_step: if step % gradient_accumulation_steps == 0: progress_bar.update(1) continue with accelerator.accumulate(text_encoder): # Convert images to latent space - latents = ( - vae.encode(batch["pixel_values"].to(dtype=weight_dtype)) - .latent_dist.sample() - .detach() - ) + latents = vae.encode(batch["pixel_values"].to(dtype=weight_dtype)).latent_dist.sample().detach() latents = latents * 0.18215 # Sample noise that we'll add to the latents @@ -912,14 +850,10 @@ def do_textual_inversion_training( noisy_latents = noise_scheduler.add_noise(latents, noise, timesteps) # Get the text embedding for conditioning - encoder_hidden_states = text_encoder(batch["input_ids"])[0].to( - dtype=weight_dtype - ) + encoder_hidden_states = text_encoder(batch["input_ids"])[0].to(dtype=weight_dtype) # Predict the noise residual - model_pred = unet( - noisy_latents, timesteps, encoder_hidden_states - ).sample + model_pred = unet(noisy_latents, timesteps, encoder_hidden_states).sample # Get the target for loss depending on the prediction type if noise_scheduler.config.prediction_type == "epsilon": @@ -927,9 +861,7 @@ def do_textual_inversion_training( elif noise_scheduler.config.prediction_type == "v_prediction": target = noise_scheduler.get_velocity(latents, noise, timesteps) else: - raise ValueError( - f"Unknown prediction type {noise_scheduler.config.prediction_type}" - ) + raise ValueError(f"Unknown prediction type {noise_scheduler.config.prediction_type}") loss = F.mse_loss(model_pred.float(), target.float(), reduction="mean") @@ -942,22 +874,16 @@ def do_textual_inversion_training( # Let's make sure we don't update any embedding weights besides the newly added token index_no_updates = torch.arange(len(tokenizer)) != placeholder_token_id with torch.no_grad(): - accelerator.unwrap_model( - text_encoder - ).get_input_embeddings().weight[ + accelerator.unwrap_model(text_encoder).get_input_embeddings().weight[ index_no_updates - ] = orig_embeds_params[ - index_no_updates - ] + ] = orig_embeds_params[index_no_updates] # Checks if the accelerator has performed an optimization step behind the scenes if accelerator.sync_gradients: progress_bar.update(1) global_step += 1 if global_step % save_steps == 0: - save_path = os.path.join( - output_dir, f"learned_embeds-steps-{global_step}.bin" - ) + save_path = os.path.join(output_dir, f"learned_embeds-steps-{global_step}.bin") save_progress( text_encoder, placeholder_token_id, @@ -968,9 +894,7 @@ def do_textual_inversion_training( if global_step % checkpointing_steps == 0: if accelerator.is_main_process: - save_path = os.path.join( - output_dir, f"checkpoint-{global_step}" - ) + save_path = os.path.join(output_dir, f"checkpoint-{global_step}") accelerator.save_state(save_path) logger.info(f"Saved state to {save_path}") @@ -985,9 +909,7 @@ def do_textual_inversion_training( accelerator.wait_for_everyone() if accelerator.is_main_process: if push_to_hub and only_save_embeds: - logger.warn( - "Enabling full model saving because --push_to_hub=True was specified." - ) + logger.warn("Enabling full model saving because --push_to_hub=True was specified.") save_full_model = True else: save_full_model = not only_save_embeds @@ -1012,8 +934,6 @@ def do_textual_inversion_training( ) if push_to_hub: - repo.push_to_hub( - commit_message="End of training", blocking=False, auto_lfs_prune=True - ) + repo.push_to_hub(commit_message="End of training", blocking=False, auto_lfs_prune=True) accelerator.end_training() diff --git a/invokeai/backend/util/__init__.py b/invokeai/backend/util/__init__.py index fadeff4d75..2e69af5382 100644 --- a/invokeai/backend/util/__init__.py +++ b/invokeai/backend/util/__init__.py @@ -11,12 +11,4 @@ from .devices import ( torch_dtype, ) from .log import write_log -from .util import ( - ask_user, - download_with_resume, - instantiate_from_config, - url_attachment_name, - Chdir -) - - +from .util import ask_user, download_with_resume, instantiate_from_config, url_attachment_name, Chdir diff --git a/invokeai/backend/util/devices.py b/invokeai/backend/util/devices.py index 3fbdaba41a..eeabcc35db 100644 --- a/invokeai/backend/util/devices.py +++ b/invokeai/backend/util/devices.py @@ -12,6 +12,7 @@ CUDA_DEVICE = torch.device("cuda") MPS_DEVICE = torch.device("mps") config = InvokeAIAppConfig.get_config() + def choose_torch_device() -> torch.device: """Convenience routine for guessing which GPU device to run model on""" if config.always_use_cpu: diff --git a/invokeai/backend/util/hotfixes.py b/invokeai/backend/util/hotfixes.py index 67e46a426f..4710682ac1 100644 --- a/invokeai/backend/util/hotfixes.py +++ b/invokeai/backend/util/hotfixes.py @@ -20,6 +20,7 @@ from diffusers.models.controlnet import ControlNetConditioningEmbedding, Control # Modified ControlNetModel with encoder_attention_mask argument added + class ControlNetModel(ModelMixin, ConfigMixin): """ A ControlNet model. @@ -618,9 +619,7 @@ class ControlNetModel(ModelMixin, ConfigMixin): mid_block_res_sample = mid_block_res_sample * conditioning_scale if self.config.global_pool_conditions: - down_block_res_samples = [ - torch.mean(sample, dim=(2, 3), keepdim=True) for sample in down_block_res_samples - ] + down_block_res_samples = [torch.mean(sample, dim=(2, 3), keepdim=True) for sample in down_block_res_samples] mid_block_res_sample = torch.mean(mid_block_res_sample, dim=(2, 3), keepdim=True) if not return_dict: @@ -630,5 +629,6 @@ class ControlNetModel(ModelMixin, ConfigMixin): down_block_res_samples=down_block_res_samples, mid_block_res_sample=mid_block_res_sample ) + diffusers.ControlNetModel = ControlNetModel -diffusers.models.controlnet.ControlNetModel = ControlNetModel \ No newline at end of file +diffusers.models.controlnet.ControlNetModel = ControlNetModel diff --git a/invokeai/backend/util/logging.py b/invokeai/backend/util/logging.py index 09ae600633..3a8d721aa5 100644 --- a/invokeai/backend/util/logging.py +++ b/invokeai/backend/util/logging.py @@ -1,7 +1,7 @@ # Copyright (c) 2023 Lincoln D. Stein and The InvokeAI Development Team """ -invokeai.util.logging +invokeai.backend.util.logging Logging class for InvokeAI that produces console messages @@ -186,89 +186,109 @@ from invokeai.app.services.config import InvokeAIAppConfig, get_invokeai_config try: import syslog + SYSLOG_AVAILABLE = True except: SYSLOG_AVAILABLE = False + # module level functions def debug(msg, *args, **kwargs): InvokeAILogger.getLogger().debug(msg, *args, **kwargs) + def info(msg, *args, **kwargs): InvokeAILogger.getLogger().info(msg, *args, **kwargs) + def warning(msg, *args, **kwargs): InvokeAILogger.getLogger().warning(msg, *args, **kwargs) + def error(msg, *args, **kwargs): InvokeAILogger.getLogger().error(msg, *args, **kwargs) + def critical(msg, *args, **kwargs): InvokeAILogger.getLogger().critical(msg, *args, **kwargs) + def log(level, msg, *args, **kwargs): InvokeAILogger.getLogger().log(level, msg, *args, **kwargs) + def disable(level=logging.CRITICAL): InvokeAILogger.getLogger().disable(level) + def basicConfig(**kwargs): InvokeAILogger.getLogger().basicConfig(**kwargs) + def getLogger(name: str = None) -> logging.Logger: return InvokeAILogger.getLogger(name) -_FACILITY_MAP = dict( - LOG_KERN = syslog.LOG_KERN, - LOG_USER = syslog.LOG_USER, - LOG_MAIL = syslog.LOG_MAIL, - LOG_DAEMON = syslog.LOG_DAEMON, - LOG_AUTH = syslog.LOG_AUTH, - LOG_LPR = syslog.LOG_LPR, - LOG_NEWS = syslog.LOG_NEWS, - LOG_UUCP = syslog.LOG_UUCP, - LOG_CRON = syslog.LOG_CRON, - LOG_SYSLOG = syslog.LOG_SYSLOG, - LOG_LOCAL0 = syslog.LOG_LOCAL0, - LOG_LOCAL1 = syslog.LOG_LOCAL1, - LOG_LOCAL2 = syslog.LOG_LOCAL2, - LOG_LOCAL3 = syslog.LOG_LOCAL3, - LOG_LOCAL4 = syslog.LOG_LOCAL4, - LOG_LOCAL5 = syslog.LOG_LOCAL5, - LOG_LOCAL6 = syslog.LOG_LOCAL6, - LOG_LOCAL7 = syslog.LOG_LOCAL7, -) if SYSLOG_AVAILABLE else dict() - -_SOCK_MAP = dict( - SOCK_STREAM = socket.SOCK_STREAM, - SOCK_DGRAM = socket.SOCK_DGRAM, +_FACILITY_MAP = ( + dict( + LOG_KERN=syslog.LOG_KERN, + LOG_USER=syslog.LOG_USER, + LOG_MAIL=syslog.LOG_MAIL, + LOG_DAEMON=syslog.LOG_DAEMON, + LOG_AUTH=syslog.LOG_AUTH, + LOG_LPR=syslog.LOG_LPR, + LOG_NEWS=syslog.LOG_NEWS, + LOG_UUCP=syslog.LOG_UUCP, + LOG_CRON=syslog.LOG_CRON, + LOG_SYSLOG=syslog.LOG_SYSLOG, + LOG_LOCAL0=syslog.LOG_LOCAL0, + LOG_LOCAL1=syslog.LOG_LOCAL1, + LOG_LOCAL2=syslog.LOG_LOCAL2, + LOG_LOCAL3=syslog.LOG_LOCAL3, + LOG_LOCAL4=syslog.LOG_LOCAL4, + LOG_LOCAL5=syslog.LOG_LOCAL5, + LOG_LOCAL6=syslog.LOG_LOCAL6, + LOG_LOCAL7=syslog.LOG_LOCAL7, + ) + if SYSLOG_AVAILABLE + else dict() ) +_SOCK_MAP = dict( + SOCK_STREAM=socket.SOCK_STREAM, + SOCK_DGRAM=socket.SOCK_DGRAM, +) + + class InvokeAIFormatter(logging.Formatter): - ''' + """ Base class for logging formatter - ''' + """ + def format(self, record): formatter = logging.Formatter(self.log_fmt(record.levelno)) return formatter.format(record) @abstractmethod - def log_fmt(self, levelno: int)->str: + def log_fmt(self, levelno: int) -> str: pass - + + class InvokeAISyslogFormatter(InvokeAIFormatter): - ''' + """ Formatting for syslog - ''' - def log_fmt(self, levelno: int)->str: - return '%(name)s [%(process)d] <%(levelname)s> %(message)s' + """ + + def log_fmt(self, levelno: int) -> str: + return "%(name)s [%(process)d] <%(levelname)s> %(message)s" + class InvokeAILegacyLogFormatter(InvokeAIFormatter): - ''' + """ Formatting for the InvokeAI Logger (legacy version) - ''' + """ + FORMATS = { logging.DEBUG: " | %(message)s", logging.INFO: ">> %(message)s", @@ -276,20 +296,25 @@ class InvokeAILegacyLogFormatter(InvokeAIFormatter): logging.ERROR: "*** %(message)s", logging.CRITICAL: "### %(message)s", } - def log_fmt(self,levelno:int)->str: + + def log_fmt(self, levelno: int) -> str: return self.FORMATS.get(levelno) + class InvokeAIPlainLogFormatter(InvokeAIFormatter): - ''' + """ Custom Formatting for the InvokeAI Logger (plain version) - ''' - def log_fmt(self, levelno: int)->str: + """ + + def log_fmt(self, levelno: int) -> str: return "[%(asctime)s]::[%(name)s]::%(levelname)s --> %(message)s" + class InvokeAIColorLogFormatter(InvokeAIFormatter): - ''' + """ Custom Formatting for the InvokeAI Logger - ''' + """ + # Color Codes grey = "\x1b[38;20m" yellow = "\x1b[33;20m" @@ -308,32 +333,34 @@ class InvokeAIColorLogFormatter(InvokeAIFormatter): logging.INFO: grey + log_format + reset, logging.WARNING: yellow + log_format + reset, logging.ERROR: red + log_format + reset, - logging.CRITICAL: bold_red + log_format + reset + logging.CRITICAL: bold_red + log_format + reset, } - def log_fmt(self, levelno: int)->str: + def log_fmt(self, levelno: int) -> str: return self.FORMATS.get(levelno) + LOG_FORMATTERS = { - 'plain': InvokeAIPlainLogFormatter, - 'color': InvokeAIColorLogFormatter, - 'syslog': InvokeAISyslogFormatter, - 'legacy': InvokeAILegacyLogFormatter, + "plain": InvokeAIPlainLogFormatter, + "color": InvokeAIColorLogFormatter, + "syslog": InvokeAISyslogFormatter, + "legacy": InvokeAILegacyLogFormatter, } + class InvokeAILogger(object): loggers = dict() @classmethod - def getLogger(cls, - name: str = 'InvokeAI', - config: InvokeAIAppConfig=InvokeAIAppConfig.get_config())->logging.Logger: + def getLogger( + cls, name: str = "InvokeAI", config: InvokeAIAppConfig = InvokeAIAppConfig.get_config() + ) -> logging.Logger: if name in cls.loggers: logger = cls.loggers[name] logger.handlers.clear() else: logger = logging.getLogger(name) - logger.setLevel(config.log_level.upper()) # yes, strings work here + logger.setLevel(config.log_level.upper()) # yes, strings work here for ch in cls.getLoggers(config): logger.addHandler(ch) cls.loggers[name] = logger @@ -344,82 +371,80 @@ class InvokeAILogger(object): handler_strs = config.log_handlers handlers = list() for handler in handler_strs: - handler_name,*args = handler.split('=',2) + handler_name, *args = handler.split("=", 2) args = args[0] if len(args) > 0 else None # console and file get the fancy formatter. # syslog gets a simple one # http gets no custom formatter formatter = LOG_FORMATTERS[config.log_format] - if handler_name=='console': + if handler_name == "console": ch = logging.StreamHandler() ch.setFormatter(formatter()) handlers.append(ch) - - elif handler_name=='syslog': + + elif handler_name == "syslog": ch = cls._parse_syslog_args(args) handlers.append(ch) - - elif handler_name=='file': + + elif handler_name == "file": ch = cls._parse_file_args(args) ch.setFormatter(formatter()) handlers.append(ch) - - elif handler_name=='http': + + elif handler_name == "http": ch = cls._parse_http_args(args) handlers.append(ch) return handlers @staticmethod - def _parse_syslog_args( - args: str=None - )-> logging.Handler: + def _parse_syslog_args(args: str = None) -> logging.Handler: if not SYSLOG_AVAILABLE: raise ValueError("syslog is not available on this system") if not args: - args='/dev/log' if Path('/dev/log').exists() else 'address:localhost:514' + args = "/dev/log" if Path("/dev/log").exists() else "address:localhost:514" syslog_args = dict() try: - for a in args.split(','): - arg_name,*arg_value = a.split(':',2) - if arg_name=='address': - host,*port = arg_value - port = 514 if len(port)==0 else int(port[0]) - syslog_args['address'] = (host,port) - elif arg_name=='facility': - syslog_args['facility'] = _FACILITY_MAP[arg_value[0]] - elif arg_name=='socktype': - syslog_args['socktype'] = _SOCK_MAP[arg_value[0]] + for a in args.split(","): + arg_name, *arg_value = a.split(":", 2) + if arg_name == "address": + host, *port = arg_value + port = 514 if len(port) == 0 else int(port[0]) + syslog_args["address"] = (host, port) + elif arg_name == "facility": + syslog_args["facility"] = _FACILITY_MAP[arg_value[0]] + elif arg_name == "socktype": + syslog_args["socktype"] = _SOCK_MAP[arg_value[0]] else: - syslog_args['address'] = arg_name + syslog_args["address"] = arg_name except: raise ValueError(f"{args} is not a value argument list for syslog logging") return logging.handlers.SysLogHandler(**syslog_args) - + @staticmethod - def _parse_file_args(args: str=None)-> logging.Handler: + def _parse_file_args(args: str = None) -> logging.Handler: if not args: raise ValueError("please provide filename for file logging using format 'file=/path/to/logfile.txt'") return logging.FileHandler(args) @staticmethod - def _parse_http_args(args: str=None)-> logging.Handler: + def _parse_http_args(args: str = None) -> logging.Handler: if not args: raise ValueError("please provide destination for http logging using format 'http=url'") - arg_list = args.split(',') + arg_list = args.split(",") url = urllib.parse.urlparse(arg_list.pop(0)) - if url.scheme != 'http': + if url.scheme != "http": raise ValueError(f"the http logging module can only log to HTTP URLs, but {url.scheme} was specified") host = url.hostname path = url.path port = url.port or 80 - + syslog_args = dict() for a in arg_list: - arg_name, *arg_value = a.split(':',2) - if arg_name=='method': - arg_value = arg_value[0] if len(arg_value)>0 else 'GET' + arg_name, *arg_value = a.split(":", 2) + if arg_name == "method": + arg_value = arg_value[0] if len(arg_value) > 0 else "GET" syslog_args[arg_name] = arg_value else: # TODO: Provide support for SSL context and credentials pass - return logging.handlers.HTTPHandler(f'{host}:{port}',path,**syslog_args) + return logging.handlers.HTTPHandler(f"{host}:{port}", path, **syslog_args) diff --git a/invokeai/backend/util/mps_fixes.py b/invokeai/backend/util/mps_fixes.py index e4d8da20a9..409eff1c8b 100644 --- a/invokeai/backend/util/mps_fixes.py +++ b/invokeai/backend/util/mps_fixes.py @@ -8,6 +8,8 @@ if torch.backends.mps.is_available(): _torch_layer_norm = torch.nn.functional.layer_norm + + def new_layer_norm(input, normalized_shape, weight=None, bias=None, eps=1e-05): if input.device.type == "mps" and input.dtype == torch.float16: input = input.float() @@ -19,20 +21,26 @@ def new_layer_norm(input, normalized_shape, weight=None, bias=None, eps=1e-05): else: return _torch_layer_norm(input, normalized_shape, weight, bias, eps) + torch.nn.functional.layer_norm = new_layer_norm _torch_tensor_permute = torch.Tensor.permute + + def new_torch_tensor_permute(input, *dims): result = _torch_tensor_permute(input, *dims) if input.device == "mps" and input.dtype == torch.float16: result = result.contiguous() return result + torch.Tensor.permute = new_torch_tensor_permute _torch_lerp = torch.lerp + + def new_torch_lerp(input, end, weight, *, out=None): if input.device.type == "mps" and input.dtype == torch.float16: input = input.float() @@ -52,20 +60,36 @@ def new_torch_lerp(input, end, weight, *, out=None): else: return _torch_lerp(input, end, weight, out=out) + torch.lerp = new_torch_lerp _torch_interpolate = torch.nn.functional.interpolate -def new_torch_interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None, antialias=False): + + +def new_torch_interpolate( + input, + size=None, + scale_factor=None, + mode="nearest", + align_corners=None, + recompute_scale_factor=None, + antialias=False, +): if input.device.type == "mps" and input.dtype == torch.float16: - return _torch_interpolate(input.float(), size, scale_factor, mode, align_corners, recompute_scale_factor, antialias).half() + return _torch_interpolate( + input.float(), size, scale_factor, mode, align_corners, recompute_scale_factor, antialias + ).half() else: return _torch_interpolate(input, size, scale_factor, mode, align_corners, recompute_scale_factor, antialias) + torch.nn.functional.interpolate = new_torch_interpolate # TODO: refactor it _SlicedAttnProcessor = diffusers.models.attention_processor.SlicedAttnProcessor + + class ChunkedSlicedAttnProcessor: r""" Processor for implementing sliced attention. @@ -78,7 +102,7 @@ class ChunkedSlicedAttnProcessor: def __init__(self, slice_size): assert isinstance(slice_size, int) - slice_size = 1 # TODO: maybe implement chunking in batches too when enough memory + slice_size = 1 # TODO: maybe implement chunking in batches too when enough memory self.slice_size = slice_size self._sliced_attn_processor = _SlicedAttnProcessor(slice_size) @@ -121,7 +145,9 @@ class ChunkedSlicedAttnProcessor: (batch_size_attention, query_tokens, dim // attn.heads), device=query.device, dtype=query.dtype ) - chunk_tmp_tensor = torch.empty(self.slice_size, query.shape[1], key.shape[1], dtype=query.dtype, device=query.device) + chunk_tmp_tensor = torch.empty( + self.slice_size, query.shape[1], key.shape[1], dtype=query.dtype, device=query.device + ) for i in range(batch_size_attention // self.slice_size): start_idx = i * self.slice_size @@ -131,7 +157,15 @@ class ChunkedSlicedAttnProcessor: key_slice = key[start_idx:end_idx] attn_mask_slice = attention_mask[start_idx:end_idx] if attention_mask is not None else None - self.get_attention_scores_chunked(attn, query_slice, key_slice, attn_mask_slice, hidden_states[start_idx:end_idx], value[start_idx:end_idx], chunk_tmp_tensor) + self.get_attention_scores_chunked( + attn, + query_slice, + key_slice, + attn_mask_slice, + hidden_states[start_idx:end_idx], + value[start_idx:end_idx], + chunk_tmp_tensor, + ) hidden_states = attn.batch_to_head_dim(hidden_states) @@ -150,7 +184,6 @@ class ChunkedSlicedAttnProcessor: return hidden_states - def get_attention_scores_chunked(self, attn, query, key, attention_mask, hidden_states, value, chunk): # batch size = 1 assert query.shape[0] == 1 @@ -163,14 +196,14 @@ class ChunkedSlicedAttnProcessor: query = query.float() key = key.float() - #out_item_size = query.dtype.itemsize - #if attn.upcast_attention: + # out_item_size = query.dtype.itemsize + # if attn.upcast_attention: # out_item_size = torch.float32.itemsize out_item_size = query.element_size() if attn.upcast_attention: out_item_size = 4 - chunk_size = 2 ** 29 + chunk_size = 2**29 out_size = query.shape[1] * key.shape[1] * out_item_size chunks_count = min(query.shape[1], math.ceil((out_size - 1) / chunk_size)) @@ -181,8 +214,8 @@ class ChunkedSlicedAttnProcessor: def _get_chunk_view(tensor, start, length): if start + length > tensor.shape[1]: length = tensor.shape[1] - start - #print(f"view: [{tensor.shape[0]},{tensor.shape[1]},{tensor.shape[2]}] - start: {start}, length: {length}") - return tensor[:,start:start+length] + # print(f"view: [{tensor.shape[0]},{tensor.shape[1]},{tensor.shape[2]}] - start: {start}, length: {length}") + return tensor[:, start : start + length] for chunk_pos in range(0, query.shape[1], chunk_step): if attention_mask is not None: @@ -196,7 +229,7 @@ class ChunkedSlicedAttnProcessor: ) else: torch.baddbmm( - torch.zeros((1,1,1), device=query.device, dtype=query.dtype), + torch.zeros((1, 1, 1), device=query.device, dtype=query.dtype), _get_chunk_view(query, chunk_pos, chunk_step), key, beta=0, @@ -206,7 +239,7 @@ class ChunkedSlicedAttnProcessor: chunk = chunk.softmax(dim=-1) torch.bmm(chunk, value, out=_get_chunk_view(hidden_states, chunk_pos, chunk_step)) - #del chunk + # del chunk diffusers.models.attention_processor.SlicedAttnProcessor = ChunkedSlicedAttnProcessor diff --git a/invokeai/backend/util/util.py b/invokeai/backend/util/util.py index 1cc632e483..f3c182c063 100644 --- a/invokeai/backend/util/util.py +++ b/invokeai/backend/util/util.py @@ -32,9 +32,7 @@ def log_txt_as_img(wh, xc, size=10): draw = ImageDraw.Draw(txt) font = ImageFont.load_default() nc = int(40 * (wh[0] / 256)) - lines = "\n".join( - xc[bi][start : start + nc] for start in range(0, len(xc[bi]), nc) - ) + lines = "\n".join(xc[bi][start : start + nc] for start in range(0, len(xc[bi]), nc)) try: draw.text((0, 0), lines, fill="black", font=font) @@ -81,9 +79,7 @@ def mean_flat(tensor): def count_params(model, verbose=False): total_params = sum(p.numel() for p in model.parameters()) if verbose: - logger.debug( - f"{model.__class__.__name__} has {total_params * 1.e-6:.2f} M params." - ) + logger.debug(f"{model.__class__.__name__} has {total_params * 1.e-6:.2f} M params.") return total_params @@ -154,21 +150,12 @@ def parallel_data_prefetch( proc = Thread # spawn processes if target_data_type == "ndarray": - arguments = [ - [func, Q, part, i, use_worker_id] - for i, part in enumerate(np.array_split(data, n_proc)) - ] + arguments = [[func, Q, part, i, use_worker_id] for i, part in enumerate(np.array_split(data, n_proc))] else: - step = ( - int(len(data) / n_proc + 1) - if len(data) % n_proc != 0 - else int(len(data) / n_proc) - ) + step = int(len(data) / n_proc + 1) if len(data) % n_proc != 0 else int(len(data) / n_proc) arguments = [ [func, Q, part, i, use_worker_id] - for i, part in enumerate( - [data[i : i + step] for i in range(0, len(data), step)] - ) + for i, part in enumerate([data[i : i + step] for i in range(0, len(data), step)]) ] processes = [] for i in range(n_proc): @@ -220,9 +207,7 @@ def parallel_data_prefetch( return gather_res -def rand_perlin_2d( - shape, res, device, fade=lambda t: 6 * t**5 - 15 * t**4 + 10 * t**3 -): +def rand_perlin_2d(shape, res, device, fade=lambda t: 6 * t**5 - 15 * t**4 + 10 * t**3): delta = (res[0] / shape[0], res[1] / shape[1]) d = (shape[0] // res[0], shape[1] // res[1]) @@ -265,9 +250,9 @@ def rand_perlin_2d( n01 = dot(tile_grads([0, -1], [1, None]), [0, -1]).to(device) n11 = dot(tile_grads([1, None], [1, None]), [-1, -1]).to(device) t = fade(grid[: shape[0], : shape[1]]) - noise = math.sqrt(2) * torch.lerp( - torch.lerp(n00, n10, t[..., 0]), torch.lerp(n01, n11, t[..., 0]), t[..., 1] - ).to(device) + noise = math.sqrt(2) * torch.lerp(torch.lerp(n00, n10, t[..., 0]), torch.lerp(n01, n11, t[..., 0]), t[..., 1]).to( + device + ) return noise.to(dtype=torch_dtype(device)) @@ -276,9 +261,7 @@ def ask_user(question: str, answers: list): user_prompt = f"\n>> {question} {answers}: " invalid_answer_msg = "Invalid answer. Please try again." - pose_question = chain( - [user_prompt], repeat("\n".join([invalid_answer_msg, user_prompt])) - ) + pose_question = chain([user_prompt], repeat("\n".join([invalid_answer_msg, user_prompt]))) user_answers = map(input, pose_question) valid_response = next(filter(answers.__contains__, user_answers)) return valid_response @@ -303,9 +286,7 @@ def download_with_resume(url: str, dest: Path, access_token: str = None) -> Path if dest.is_dir(): try: - file_name = re.search( - 'filename="(.+)"', resp.headers.get("Content-Disposition") - ).group(1) + file_name = re.search('filename="(.+)"', resp.headers.get("Content-Disposition")).group(1) except: file_name = os.path.basename(url) dest = dest / file_name @@ -322,7 +303,7 @@ def download_with_resume(url: str, dest: Path, access_token: str = None) -> Path logger.warning("corrupt existing file found. re-downloading") os.remove(dest) exist_size = 0 - + if resp.status_code == 416 or (content_length > 0 and exist_size == content_length): logger.warning(f"{dest}: complete file found. Skipping.") return dest @@ -377,16 +358,16 @@ def image_to_dataURL(image: Image.Image, image_format: str = "PNG") -> str: buffered = io.BytesIO() image.save(buffered, format=image_format) mime_type = Image.MIME.get(image_format.upper(), "image/" + image_format.lower()) - image_base64 = f"data:{mime_type};base64," + base64.b64encode( - buffered.getvalue() - ).decode("UTF-8") + image_base64 = f"data:{mime_type};base64," + base64.b64encode(buffered.getvalue()).decode("UTF-8") return image_base64 + class Chdir(object): - '''Context manager to chdir to desired directory and change back after context exits: + """Context manager to chdir to desired directory and change back after context exits: Args: path (Path): The path to the cwd - ''' + """ + def __init__(self, path: Path): self.path = path self.original = Path().absolute() @@ -394,5 +375,5 @@ class Chdir(object): def __enter__(self): os.chdir(self.path) - def __exit__(self,*args): + def __exit__(self, *args): os.chdir(self.original) diff --git a/invokeai/backend/web/invoke_ai_web_server.py b/invokeai/backend/web/invoke_ai_web_server.py index eec02cd9dc..88eb77551f 100644 --- a/invokeai/backend/web/invoke_ai_web_server.py +++ b/invokeai/backend/web/invoke_ai_web_server.py @@ -64,10 +64,7 @@ class InvokeAIWebServer: self.ALLOWED_EXTENSIONS = {"png", "jpg", "jpeg"} def allowed_file(self, filename: str) -> bool: - return ( - "." in filename - and filename.rsplit(".", 1)[1].lower() in self.ALLOWED_EXTENSIONS - ) + return "." in filename and filename.rsplit(".", 1)[1].lower() in self.ALLOWED_EXTENSIONS def run(self): self.setup_app() @@ -99,9 +96,7 @@ class InvokeAIWebServer: _cors = _cors.split(",") socketio_args["cors_allowed_origins"] = _cors - self.app = Flask( - __name__, static_url_path="", static_folder=frontend.__path__[0] - ) + self.app = Flask(__name__, static_url_path="", static_folder=frontend.__path__[0]) self.socketio = SocketIO(self.app, **socketio_args) @@ -192,9 +187,7 @@ class InvokeAIWebServer: (width, height) = pil_image.size - thumbnail_path = save_thumbnail( - pil_image, os.path.basename(file_path), self.thumbnail_image_path - ) + thumbnail_path = save_thumbnail(pil_image, os.path.basename(file_path), self.thumbnail_image_path) response = { "url": self.get_url_from_image_path(file_path), @@ -237,12 +230,8 @@ class InvokeAIWebServer: f"Point your browser at http{'s' if useSSL else ''}://localhost:{self.port} or use the host's DNS name or IP address." ) else: - logger.info( - "Default host address now 127.0.0.1 (localhost). Use --host 0.0.0.0 to bind any address." - ) - logger.info( - f"Point your browser at http{'s' if useSSL else ''}://{self.host}:{self.port}" - ) + logger.info("Default host address now 127.0.0.1 (localhost). Use --host 0.0.0.0 to bind any address.") + logger.info(f"Point your browser at http{'s' if useSSL else ''}://{self.host}:{self.port}") if not useSSL: self.socketio.run(app=self.app, host=self.host, port=self.port) else: @@ -392,22 +381,16 @@ class InvokeAIWebServer: @socketio.on("convertToDiffusers") def convert_to_diffusers(model_to_convert: dict): try: - if model_info := self.generate.model_manager.model_info( - model_name=model_to_convert["model_name"] - ): + if model_info := self.generate.model_manager.model_info(model_name=model_to_convert["model_name"]): if "weights" in model_info: ckpt_path = Path(model_info["weights"]) original_config_file = Path(model_info["config"]) model_name = model_to_convert["model_name"] model_description = model_info["description"] else: - self.socketio.emit( - "error", {"message": "Model is not a valid checkpoint file"} - ) + self.socketio.emit("error", {"message": "Model is not a valid checkpoint file"}) else: - self.socketio.emit( - "error", {"message": "Could not retrieve model info."} - ) + self.socketio.emit("error", {"message": "Could not retrieve model info."}) if not ckpt_path.is_absolute(): ckpt_path = Path(Globals.root, ckpt_path) @@ -415,22 +398,13 @@ class InvokeAIWebServer: if original_config_file and not original_config_file.is_absolute(): original_config_file = Path(Globals.root, original_config_file) - diffusers_path = Path( - ckpt_path.parent.absolute(), f"{model_name}_diffusers" - ) + diffusers_path = Path(ckpt_path.parent.absolute(), f"{model_name}_diffusers") if model_to_convert["save_location"] == "root": - diffusers_path = Path( - global_converted_ckpts_dir(), f"{model_name}_diffusers" - ) + diffusers_path = Path(global_converted_ckpts_dir(), f"{model_name}_diffusers") - if ( - model_to_convert["save_location"] == "custom" - and model_to_convert["custom_location"] is not None - ): - diffusers_path = Path( - model_to_convert["custom_location"], f"{model_name}_diffusers" - ) + if model_to_convert["save_location"] == "custom" and model_to_convert["custom_location"] is not None: + diffusers_path = Path(model_to_convert["custom_location"], f"{model_name}_diffusers") if diffusers_path.exists(): shutil.rmtree(diffusers_path) @@ -462,10 +436,7 @@ class InvokeAIWebServer: def merge_diffusers_models(model_merge_info: dict): try: models_to_merge = model_merge_info["models_to_merge"] - model_ids_or_paths = [ - self.generate.model_manager.model_name_or_path(x) - for x in models_to_merge - ] + model_ids_or_paths = [self.generate.model_manager.model_name_or_path(x) for x in models_to_merge] merged_pipe = merge_diffusion_models( model_ids_or_paths, model_merge_info["alpha"], @@ -487,15 +458,11 @@ class InvokeAIWebServer: commit_to_conf=opt.conf, ) - if vae := self.generate.model_manager.config[models_to_merge[0]].get( - "vae", None - ): + if vae := self.generate.model_manager.config[models_to_merge[0]].get("vae", None): logger.info(f"Using configured VAE assigned to {models_to_merge[0]}") merged_model_config.update(vae=vae) - self.generate.model_manager.import_diffuser_model( - dump_path, **merged_model_config - ) + self.generate.model_manager.import_diffuser_model(dump_path, **merged_model_config) new_model_list = self.generate.model_manager.list_models() socketio.emit( @@ -525,9 +492,7 @@ class InvokeAIWebServer: ) os.remove(thumbnail_path) except Exception as e: - socketio.emit( - "error", {"message": f"Unable to delete {f}: {str(e)}"} - ) + socketio.emit("error", {"message": f"Unable to delete {f}: {str(e)}"}) pass socketio.emit("tempFolderEmptied") @@ -550,9 +515,7 @@ class InvokeAIWebServer: (width, height) = pil_image.size - thumbnail_path = save_thumbnail( - pil_image, os.path.basename(new_path), self.thumbnail_image_path - ) + thumbnail_path = save_thumbnail(pil_image, os.path.basename(new_path), self.thumbnail_image_path) image_array = [ { @@ -577,18 +540,14 @@ class InvokeAIWebServer: @socketio.on("requestLatestImages") def handle_request_latest_images(category, latest_mtime): try: - base_path = ( - self.result_path if category == "result" else self.init_image_path - ) + base_path = self.result_path if category == "result" else self.init_image_path paths = [] for ext in ("*.png", "*.jpg", "*.jpeg"): paths.extend(glob.glob(os.path.join(base_path, ext))) - image_paths = sorted( - paths, key=lambda x: os.path.getmtime(x), reverse=True - ) + image_paths = sorted(paths, key=lambda x: os.path.getmtime(x), reverse=True) image_paths = list( filter( @@ -609,16 +568,12 @@ class InvokeAIWebServer: pil_image = Image.open(path) (width, height) = pil_image.size - thumbnail_path = save_thumbnail( - pil_image, os.path.basename(path), self.thumbnail_image_path - ) + thumbnail_path = save_thumbnail(pil_image, os.path.basename(path), self.thumbnail_image_path) image_array.append( { "url": self.get_url_from_image_path(path), - "thumbnail": self.get_url_from_image_path( - thumbnail_path - ), + "thumbnail": self.get_url_from_image_path(thumbnail_path), "mtime": os.path.getmtime(path), "metadata": metadata.get("sd-metadata"), "dreamPrompt": metadata.get("Dream"), @@ -628,9 +583,7 @@ class InvokeAIWebServer: } ) except Exception as e: - socketio.emit( - "error", {"message": f"Unable to load {path}: {str(e)}"} - ) + socketio.emit("error", {"message": f"Unable to load {path}: {str(e)}"}) pass socketio.emit( @@ -645,17 +598,13 @@ class InvokeAIWebServer: try: page_size = 50 - base_path = ( - self.result_path if category == "result" else self.init_image_path - ) + base_path = self.result_path if category == "result" else self.init_image_path paths = [] for ext in ("*.png", "*.jpg", "*.jpeg"): paths.extend(glob.glob(os.path.join(base_path, ext))) - image_paths = sorted( - paths, key=lambda x: os.path.getmtime(x), reverse=True - ) + image_paths = sorted(paths, key=lambda x: os.path.getmtime(x), reverse=True) if earliest_mtime: image_paths = list( @@ -679,16 +628,12 @@ class InvokeAIWebServer: pil_image = Image.open(path) (width, height) = pil_image.size - thumbnail_path = save_thumbnail( - pil_image, os.path.basename(path), self.thumbnail_image_path - ) + thumbnail_path = save_thumbnail(pil_image, os.path.basename(path), self.thumbnail_image_path) image_array.append( { "url": self.get_url_from_image_path(path), - "thumbnail": self.get_url_from_image_path( - thumbnail_path - ), + "thumbnail": self.get_url_from_image_path(thumbnail_path), "mtime": os.path.getmtime(path), "metadata": metadata.get("sd-metadata"), "dreamPrompt": metadata.get("Dream"), @@ -699,9 +644,7 @@ class InvokeAIWebServer: ) except Exception as e: logger.info(f"Unable to load {path}") - socketio.emit( - "error", {"message": f"Unable to load {path}: {str(e)}"} - ) + socketio.emit("error", {"message": f"Unable to load {path}: {str(e)}"}) pass socketio.emit( @@ -716,9 +659,7 @@ class InvokeAIWebServer: self.handle_exceptions(e) @socketio.on("generateImage") - def handle_generate_image_event( - generation_parameters, esrgan_parameters, facetool_parameters - ): + def handle_generate_image_event(generation_parameters, esrgan_parameters, facetool_parameters): try: # truncate long init_mask/init_img base64 if needed printable_parameters = { @@ -726,14 +667,10 @@ class InvokeAIWebServer: } if "init_img" in generation_parameters: - printable_parameters["init_img"] = ( - printable_parameters["init_img"][:64] + "..." - ) + printable_parameters["init_img"] = printable_parameters["init_img"][:64] + "..." if "init_mask" in generation_parameters: - printable_parameters["init_mask"] = ( - printable_parameters["init_mask"][:64] + "..." - ) + printable_parameters["init_mask"] = printable_parameters["init_mask"][:64] + "..." logger.info(f"Image Generation Parameters:\n\n{printable_parameters}\n") logger.info(f"ESRGAN Parameters: {esrgan_parameters}") @@ -750,18 +687,14 @@ class InvokeAIWebServer: @socketio.on("runPostprocessing") def handle_run_postprocessing(original_image, postprocessing_parameters): try: - logger.info( - f'Postprocessing requested for "{original_image["url"]}": {postprocessing_parameters}' - ) + logger.info(f'Postprocessing requested for "{original_image["url"]}": {postprocessing_parameters}') progress = Progress() socketio.emit("progressUpdate", progress.to_formatted_dict()) eventlet.sleep(0) - original_image_path = self.get_image_path_from_url( - original_image["url"] - ) + original_image_path = self.get_image_path_from_url(original_image["url"]) image = Image.open(original_image_path) @@ -801,14 +734,10 @@ class InvokeAIWebServer: strength=postprocessing_parameters["facetool_strength"], fidelity=postprocessing_parameters["codeformer_fidelity"], seed=seed, - device="cpu" - if str(self.generate.device) == "mps" - else self.generate.device, + device="cpu" if str(self.generate.device) == "mps" else self.generate.device, ) else: - raise TypeError( - f'{postprocessing_parameters["type"]} is not a valid postprocessing type' - ) + raise TypeError(f'{postprocessing_parameters["type"]} is not a valid postprocessing type') progress.set_current_status("common.statusSavingImage") socketio.emit("progressUpdate", progress.to_formatted_dict()) @@ -832,9 +761,7 @@ class InvokeAIWebServer: postprocessing=postprocessing_parameters["type"], ) - thumbnail_path = save_thumbnail( - image, os.path.basename(path), self.thumbnail_image_path - ) + thumbnail_path = save_thumbnail(image, os.path.basename(path), self.thumbnail_image_path) self.write_log_message( f'[Postprocessed] "{original_image_path}" > "{path}": {postprocessing_parameters}' @@ -901,17 +828,13 @@ class InvokeAIWebServer: "app_version": APP_VERSION, } - def generate_images( - self, generation_parameters, esrgan_parameters, facetool_parameters - ): + def generate_images(self, generation_parameters, esrgan_parameters, facetool_parameters): try: self.canceled.clear() step_index = 1 prior_variations = ( - generation_parameters["with_variations"] - if "with_variations" in generation_parameters - else [] + generation_parameters["with_variations"] if "with_variations" in generation_parameters else [] ) actual_generation_mode = generation_parameters["generation_mode"] @@ -943,9 +866,7 @@ class InvokeAIWebServer: original_bounding_box = generation_parameters["bounding_box"].copy() - initial_image = dataURL_to_image( - generation_parameters["init_img"] - ).convert("RGBA") + initial_image = dataURL_to_image(generation_parameters["init_img"]).convert("RGBA") """ The outpaint image and mask are pre-cropped by the UI, so the bounding box we pass @@ -962,13 +883,9 @@ class InvokeAIWebServer: generation_parameters["bounding_box"]["y"] = 0 # Convert mask dataURL to an image and convert to greyscale - mask_image = dataURL_to_image( - generation_parameters["init_mask"] - ).convert("L") + mask_image = dataURL_to_image(generation_parameters["init_mask"]).convert("L") - actual_generation_mode = get_canvas_generation_mode( - initial_image, mask_image - ) + actual_generation_mode = get_canvas_generation_mode(initial_image, mask_image) """ Apply the mask to the init image, creating a "mask" image with @@ -1018,9 +935,7 @@ class InvokeAIWebServer: elif generation_parameters["generation_mode"] == "img2img": init_img_url = generation_parameters["init_img"] init_img_path = self.get_image_path_from_url(init_img_url) - generation_parameters["init_img"] = Image.open(init_img_path).convert( - "RGB" - ) + generation_parameters["init_img"] = Image.open(init_img_path).convert("RGB") def image_progress(intermediate_state: PipelineIntermediateState): if self.canceled.is_set(): @@ -1046,9 +961,7 @@ class InvokeAIWebServer: } progress.set_current_step(step + 1) - progress.set_current_status( - f"{generation_messages[actual_generation_mode]}" - ) + progress.set_current_status(f"{generation_messages[actual_generation_mode]}") progress.set_current_status_has_steps(True) if ( @@ -1057,9 +970,7 @@ class InvokeAIWebServer: and step < generation_parameters["steps"] - 1 ): image = self.generate.sample_to_image(sample) - metadata = self.parameters_to_generated_image_metadata( - generation_parameters - ) + metadata = self.parameters_to_generated_image_metadata(generation_parameters) command = parameters_to_command(generation_parameters) (width, height) = image.size @@ -1140,15 +1051,10 @@ class InvokeAIWebServer: all_parameters = generation_parameters postprocessing = False - if ( - "variation_amount" in all_parameters - and all_parameters["variation_amount"] > 0 - ): + if "variation_amount" in all_parameters and all_parameters["variation_amount"] > 0: first_seed = first_seed or seed this_variation = [[seed, all_parameters["variation_amount"]]] - all_parameters["with_variations"] = ( - prior_variations + this_variation - ) + all_parameters["with_variations"] = prior_variations + this_variation all_parameters["seed"] = first_seed elif "with_variations" in all_parameters: all_parameters["seed"] = first_seed @@ -1186,9 +1092,7 @@ class InvokeAIWebServer: if facetool_parameters["type"] == "gfpgan": progress.set_current_status("common.statusRestoringFacesGFPGAN") elif facetool_parameters["type"] == "codeformer": - progress.set_current_status( - "common.statusRestoringFacesCodeFormer" - ) + progress.set_current_status("common.statusRestoringFacesCodeFormer") progress.set_current_status_has_steps(False) self.socketio.emit("progressUpdate", progress.to_formatted_dict()) @@ -1206,18 +1110,12 @@ class InvokeAIWebServer: strength=facetool_parameters["strength"], fidelity=facetool_parameters["codeformer_fidelity"], seed=seed, - device="cpu" - if str(self.generate.device) == "mps" - else self.generate.device, + device="cpu" if str(self.generate.device) == "mps" else self.generate.device, ) - all_parameters["codeformer_fidelity"] = facetool_parameters[ - "codeformer_fidelity" - ] + all_parameters["codeformer_fidelity"] = facetool_parameters["codeformer_fidelity"] postprocessing = True - all_parameters["facetool_strength"] = facetool_parameters[ - "strength" - ] + all_parameters["facetool_strength"] = facetool_parameters["strength"] all_parameters["facetool_type"] = facetool_parameters["type"] progress.set_current_status("common.statusSavingImage") @@ -1226,9 +1124,7 @@ class InvokeAIWebServer: # restore the stashed URLS and discard the paths, we are about to send the result to client all_parameters["init_img"] = ( - init_img_url - if generation_parameters["generation_mode"] == "img2img" - else "" + init_img_url if generation_parameters["generation_mode"] == "img2img" else "" ) if "init_mask" in all_parameters: @@ -1246,8 +1142,7 @@ class InvokeAIWebServer: generated_image_outdir = ( self.result_path - if generation_parameters["generation_mode"] - in ["txt2img", "img2img"] + if generation_parameters["generation_mode"] in ["txt2img", "img2img"] else self.temp_image_path ) @@ -1259,9 +1154,7 @@ class InvokeAIWebServer: postprocessing=postprocessing, ) - thumbnail_path = save_thumbnail( - image, os.path.basename(path), self.thumbnail_image_path - ) + thumbnail_path = save_thumbnail(image, os.path.basename(path), self.thumbnail_image_path) logger.info(f'Image generated: "{path}"\n') self.write_log_message(f'[Generated] "{path}": {command}') @@ -1281,14 +1174,10 @@ class InvokeAIWebServer: tokens = ( None if type(parsed_prompt) is Blend - else get_tokens_for_prompt_object( - model.tokenizer, parsed_prompt - ) + else get_tokens_for_prompt_object(model.tokenizer, parsed_prompt) ) attention_maps_image_base64_url = ( - None - if attention_maps_image is None - else image_to_dataURL(attention_maps_image) + None if attention_maps_image is None else image_to_dataURL(attention_maps_image) ) self.socketio.emit( @@ -1382,9 +1271,7 @@ class InvokeAIWebServer: } if parameters["facetool_type"] == "codeformer": - facetool_parameters["fidelity"] = float( - parameters["codeformer_fidelity"] - ) + facetool_parameters["fidelity"] = float(parameters["codeformer_fidelity"]) postprocessing.append(facetool_parameters) @@ -1398,9 +1285,7 @@ class InvokeAIWebServer: } ) - rfc_dict["postprocessing"] = ( - postprocessing if len(postprocessing) > 0 else None - ) + rfc_dict["postprocessing"] = postprocessing if len(postprocessing) > 0 else None # semantic drift rfc_dict["sampler"] = parameters["sampler_name"] @@ -1409,22 +1294,15 @@ class InvokeAIWebServer: variations = [] if "with_variations" in parameters: - variations = [ - {"seed": x[0], "weight": x[1]} - for x in parameters["with_variations"] - ] + variations = [{"seed": x[0], "weight": x[1]} for x in parameters["with_variations"]] rfc_dict["variations"] = variations if rfc_dict["type"] == "img2img": rfc_dict["strength"] = parameters["strength"] rfc_dict["fit"] = parameters["fit"] # TODO: Noncompliant - rfc_dict["orig_hash"] = calculate_init_img_hash( - self.get_image_path_from_url(parameters["init_img"]) - ) - rfc_dict["init_image_path"] = parameters[ - "init_img" - ] # TODO: Noncompliant + rfc_dict["orig_hash"] = calculate_init_img_hash(self.get_image_path_from_url(parameters["init_img"])) + rfc_dict["init_image_path"] = parameters["init_img"] # TODO: Noncompliant metadata["image"] = rfc_dict @@ -1433,9 +1311,7 @@ class InvokeAIWebServer: except Exception as e: self.handle_exceptions(e) - def parameters_to_post_processed_image_metadata( - self, parameters, original_image_path - ): + def parameters_to_post_processed_image_metadata(self, parameters, original_image_path): try: current_metadata = retrieve_metadata(original_image_path)["sd-metadata"] postprocessing_metadata = {} @@ -1447,9 +1323,7 @@ class InvokeAIWebServer: if "image" not in current_metadata: current_metadata["image"] = {} - orig_hash = calculate_init_img_hash( - self.get_image_path_from_url(original_image_path) - ) + orig_hash = calculate_init_img_hash(self.get_image_path_from_url(original_image_path)) postprocessing_metadata["orig_path"] = (original_image_path,) postprocessing_metadata["orig_hash"] = orig_hash @@ -1473,9 +1347,7 @@ class InvokeAIWebServer: if "postprocessing" in current_metadata["image"] and isinstance( current_metadata["image"]["postprocessing"], list ): - current_metadata["image"]["postprocessing"].append( - postprocessing_metadata - ) + current_metadata["image"]["postprocessing"].append(postprocessing_metadata) else: current_metadata["image"]["postprocessing"] = [postprocessing_metadata] @@ -1556,29 +1428,17 @@ class InvokeAIWebServer: """Given a url to an image used by the client, returns the absolute file path to that image""" try: if "init-images" in url: - return os.path.abspath( - os.path.join(self.init_image_path, os.path.basename(url)) - ) + return os.path.abspath(os.path.join(self.init_image_path, os.path.basename(url))) elif "mask-images" in url: - return os.path.abspath( - os.path.join(self.mask_image_path, os.path.basename(url)) - ) + return os.path.abspath(os.path.join(self.mask_image_path, os.path.basename(url))) elif "intermediates" in url: - return os.path.abspath( - os.path.join(self.intermediate_path, os.path.basename(url)) - ) + return os.path.abspath(os.path.join(self.intermediate_path, os.path.basename(url))) elif "temp-images" in url: - return os.path.abspath( - os.path.join(self.temp_image_path, os.path.basename(url)) - ) + return os.path.abspath(os.path.join(self.temp_image_path, os.path.basename(url))) elif "thumbnails" in url: - return os.path.abspath( - os.path.join(self.thumbnail_image_path, os.path.basename(url)) - ) + return os.path.abspath(os.path.join(self.thumbnail_image_path, os.path.basename(url))) else: - return os.path.abspath( - os.path.join(self.result_path, os.path.basename(url)) - ) + return os.path.abspath(os.path.join(self.result_path, os.path.basename(url))) except Exception as e: self.handle_exceptions(e) @@ -1632,18 +1492,14 @@ class Progress: self.total_steps = ( self._calculate_real_steps( steps=generation_parameters["steps"], - strength=generation_parameters["strength"] - if "strength" in generation_parameters - else None, + strength=generation_parameters["strength"] if "strength" in generation_parameters else None, has_init_image="init_img" in generation_parameters, ) if generation_parameters else 1 ) self.current_iteration = 1 - self.total_iterations = ( - generation_parameters["iterations"] if generation_parameters else 1 - ) + self.total_iterations = generation_parameters["iterations"] if generation_parameters else 1 self.current_status = "common.statusPreparing" self.is_processing = True self.current_status_has_steps = False @@ -1703,9 +1559,7 @@ class CanceledException(Exception): pass -def copy_image_from_bounding_box( - image: ImageType, x: int, y: int, width: int, height: int -) -> ImageType: +def copy_image_from_bounding_box(image: ImageType, x: int, y: int, width: int, height: int) -> ImageType: """ Returns a copy an image, cropped to a bounding box. """ @@ -1740,9 +1594,7 @@ def image_to_dataURL(image: ImageType, image_format: str = "PNG") -> str: buffered = io.BytesIO() image.save(buffered, format=image_format) mime_type = Image.MIME.get(image_format.upper(), "image/" + image_format.lower()) - image_base64 = f"data:{mime_type};base64," + base64.b64encode( - buffered.getvalue() - ).decode("UTF-8") + image_base64 = f"data:{mime_type};base64," + base64.b64encode(buffered.getvalue()).decode("UTF-8") return image_base64 diff --git a/invokeai/backend/web/modules/get_canvas_generation_mode.py b/invokeai/backend/web/modules/get_canvas_generation_mode.py index 55955cc33c..6d680016e7 100644 --- a/invokeai/backend/web/modules/get_canvas_generation_mode.py +++ b/invokeai/backend/web/modules/get_canvas_generation_mode.py @@ -40,9 +40,7 @@ def get_canvas_generation_mode( init_img_has_transparency = check_for_any_transparency(init_img) if init_img_has_transparency: - init_img_is_fully_transparent = ( - True if init_img_alpha_mask.getbbox() is None else False - ) + init_img_is_fully_transparent = True if init_img_alpha_mask.getbbox() is None else False """ Mask images are white in areas where no change should be made, black where changes diff --git a/invokeai/backend/web/modules/parameters.py b/invokeai/backend/web/modules/parameters.py index 440f21a947..8ab74adb92 100644 --- a/invokeai/backend/web/modules/parameters.py +++ b/invokeai/backend/web/modules/parameters.py @@ -10,7 +10,7 @@ SAMPLER_CHOICES = [ "lms_k", "pndm", "heun", - 'heun_k', + "heun_k", "euler", "euler_k", "euler_a", @@ -76,9 +76,7 @@ def parameters_to_command(params): if "variation_amount" in params and params["variation_amount"] > 0: switches.append(f'-v {params["variation_amount"]}') if "with_variations" in params: - seed_weight_pairs = ",".join( - f"{seed}:{weight}" for seed, weight in params["with_variations"] - ) + seed_weight_pairs = ",".join(f"{seed}:{weight}" for seed, weight in params["with_variations"]) switches.append(f"-V {seed_weight_pairs}") return " ".join(switches) diff --git a/invokeai/configs/INITIAL_MODELS.yaml b/invokeai/configs/INITIAL_MODELS.yaml index e148ee9b55..86357e7b56 100644 --- a/invokeai/configs/INITIAL_MODELS.yaml +++ b/invokeai/configs/INITIAL_MODELS.yaml @@ -16,14 +16,18 @@ sd-2/main/stable-diffusion-2-inpainting: description: Stable Diffusion version 2.0 inpainting model (5.21 GB) repo_id: stabilityai/stable-diffusion-2-inpainting recommended: False -sdxl/main/stable-diffusion-xl-base-0-9: - description: Stable Diffusion XL base model (12 GB; access token required) - repo_id: stabilityai/stable-diffusion-xl-base-0.9 - recommended: False -sdxl-refiner/main/stable-diffusion-xl-refiner-0-9: - description: Stable Diffusion XL refiner model (12 GB; access token required) - repo_id: stabilityai/stable-diffusion-xl-refiner-0.9 +sdxl/main/stable-diffusion-xl-base-1-0: + description: Stable Diffusion XL base model (12 GB) + repo_id: stabilityai/stable-diffusion-xl-base-1.0 recommended: False +sdxl-refiner/main/stable-diffusion-xl-refiner-1-0: + description: Stable Diffusion XL refiner model (12 GB) + repo_id: stabilityai/stable-diffusion-xl-refiner-1.0 + recommended: false +sdxl/vae/sdxl-1-0-vae-fix: + description: Fine tuned version of the SDXL-1.0 VAE + repo_id: madebyollin/sdxl-vae-fp16-fix + recommended: true sd-1/main/Analog-Diffusion: description: An SD-1.5 model trained on diverse analog photographs (2.13 GB) repo_id: wavymulder/Analog-Diffusion @@ -48,10 +52,6 @@ sd-1/main/openjourney: description: An SD 1.5 model fine tuned on Midjourney; prompt with "mdjrny-v4 style" (2.13 GB) repo_id: prompthero/openjourney recommended: False -sd-1/main/portraitplus: - description: An SD-1.5 model trained on close range portraits of people; prompt with "portrait+" (2.13 GB) - repo_id: wavymulder/portraitplus - recommended: False sd-1/main/seek.art_MEGA: repo_id: coreco/seek.art_MEGA description: A general use SD-1.5 "anything" model that supports multiple styles (2.1 GB) @@ -60,10 +60,6 @@ sd-1/main/trinart_stable_diffusion_v2: description: An SD-1.5 model finetuned with ~40K assorted high resolution manga/anime-style images (2.13 GB) repo_id: naclbit/trinart_stable_diffusion_v2 recommended: False -sd-1/main/waifu-diffusion: - description: An SD-1.5 model trained on 680k anime/manga-style images (2.13 GB) - repo_id: hakurei/waifu-diffusion - recommended: False sd-1/controlnet/canny: repo_id: lllyasviel/control_v11p_sd15_canny recommended: True diff --git a/invokeai/configs/stable-diffusion/sd_xl_base.yaml b/invokeai/configs/stable-diffusion/sd_xl_base.yaml new file mode 100644 index 0000000000..2022dac950 --- /dev/null +++ b/invokeai/configs/stable-diffusion/sd_xl_base.yaml @@ -0,0 +1,98 @@ +model: + target: sgm.models.diffusion.DiffusionEngine + params: + scale_factor: 0.13025 + disable_first_stage_autocast: True + + denoiser_config: + target: sgm.modules.diffusionmodules.denoiser.DiscreteDenoiser + params: + num_idx: 1000 + + weighting_config: + target: sgm.modules.diffusionmodules.denoiser_weighting.EpsWeighting + scaling_config: + target: sgm.modules.diffusionmodules.denoiser_scaling.EpsScaling + discretization_config: + target: sgm.modules.diffusionmodules.discretizer.LegacyDDPMDiscretization + + network_config: + target: sgm.modules.diffusionmodules.openaimodel.UNetModel + params: + adm_in_channels: 2816 + num_classes: sequential + use_checkpoint: True + in_channels: 4 + out_channels: 4 + model_channels: 320 + attention_resolutions: [4, 2] + num_res_blocks: 2 + channel_mult: [1, 2, 4] + num_head_channels: 64 + use_spatial_transformer: True + use_linear_in_transformer: True + transformer_depth: [1, 2, 10] # note: the first is unused (due to attn_res starting at 2) 32, 16, 8 --> 64, 32, 16 + context_dim: 2048 + spatial_transformer_attn_type: softmax-xformers + legacy: False + + conditioner_config: + target: sgm.modules.GeneralConditioner + params: + emb_models: + # crossattn cond + - is_trainable: False + input_key: txt + target: sgm.modules.encoders.modules.FrozenCLIPEmbedder + params: + layer: hidden + layer_idx: 11 + # crossattn and vector cond + - is_trainable: False + input_key: txt + target: sgm.modules.encoders.modules.FrozenOpenCLIPEmbedder2 + params: + arch: ViT-bigG-14 + version: laion2b_s39b_b160k + freeze: True + layer: penultimate + always_return_pooled: True + legacy: False + # vector cond + - is_trainable: False + input_key: original_size_as_tuple + target: sgm.modules.encoders.modules.ConcatTimestepEmbedderND + params: + outdim: 256 # multiplied by two + # vector cond + - is_trainable: False + input_key: crop_coords_top_left + target: sgm.modules.encoders.modules.ConcatTimestepEmbedderND + params: + outdim: 256 # multiplied by two + # vector cond + - is_trainable: False + input_key: target_size_as_tuple + target: sgm.modules.encoders.modules.ConcatTimestepEmbedderND + params: + outdim: 256 # multiplied by two + + first_stage_config: + target: sgm.models.autoencoder.AutoencoderKLInferenceWrapper + params: + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + attn_type: vanilla-xformers + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: [1, 2, 4, 4] + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity \ No newline at end of file diff --git a/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml b/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml new file mode 100644 index 0000000000..cab5fe283d --- /dev/null +++ b/invokeai/configs/stable-diffusion/sd_xl_refiner.yaml @@ -0,0 +1,91 @@ +model: + target: sgm.models.diffusion.DiffusionEngine + params: + scale_factor: 0.13025 + disable_first_stage_autocast: True + + denoiser_config: + target: sgm.modules.diffusionmodules.denoiser.DiscreteDenoiser + params: + num_idx: 1000 + + weighting_config: + target: sgm.modules.diffusionmodules.denoiser_weighting.EpsWeighting + scaling_config: + target: sgm.modules.diffusionmodules.denoiser_scaling.EpsScaling + discretization_config: + target: sgm.modules.diffusionmodules.discretizer.LegacyDDPMDiscretization + + network_config: + target: sgm.modules.diffusionmodules.openaimodel.UNetModel + params: + adm_in_channels: 2560 + num_classes: sequential + use_checkpoint: True + in_channels: 4 + out_channels: 4 + model_channels: 384 + attention_resolutions: [4, 2] + num_res_blocks: 2 + channel_mult: [1, 2, 4, 4] + num_head_channels: 64 + use_spatial_transformer: True + use_linear_in_transformer: True + transformer_depth: 4 + context_dim: [1280, 1280, 1280, 1280] # 1280 + spatial_transformer_attn_type: softmax-xformers + legacy: False + + conditioner_config: + target: sgm.modules.GeneralConditioner + params: + emb_models: + # crossattn and vector cond + - is_trainable: False + input_key: txt + target: sgm.modules.encoders.modules.FrozenOpenCLIPEmbedder2 + params: + arch: ViT-bigG-14 + version: laion2b_s39b_b160k + legacy: False + freeze: True + layer: penultimate + always_return_pooled: True + # vector cond + - is_trainable: False + input_key: original_size_as_tuple + target: sgm.modules.encoders.modules.ConcatTimestepEmbedderND + params: + outdim: 256 # multiplied by two + # vector cond + - is_trainable: False + input_key: crop_coords_top_left + target: sgm.modules.encoders.modules.ConcatTimestepEmbedderND + params: + outdim: 256 # multiplied by two + # vector cond + - is_trainable: False + input_key: aesthetic_score + target: sgm.modules.encoders.modules.ConcatTimestepEmbedderND + params: + outdim: 256 # multiplied by one + + first_stage_config: + target: sgm.models.autoencoder.AutoencoderKLInferenceWrapper + params: + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + attn_type: vanilla-xformers + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: [1, 2, 4, 4] + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity diff --git a/invokeai/frontend/__init__.py b/invokeai/frontend/__init__.py index 98fdf870e9..19eafe46c4 100644 --- a/invokeai/frontend/__init__.py +++ b/invokeai/frontend/__init__.py @@ -1,3 +1,3 @@ -''' +""" Initialization file for invokeai.frontend -''' +""" diff --git a/invokeai/frontend/install/invokeai_update.py b/invokeai/frontend/install/invokeai_update.py index f73f670496..56d1a313c7 100644 --- a/invokeai/frontend/install/invokeai_update.py +++ b/invokeai/frontend/install/invokeai_update.py @@ -1,7 +1,7 @@ -''' +""" Minimalist updater script. Prompts user for the tag or branch to update to and runs pip install . -''' +""" import os import platform import pkg_resources @@ -15,10 +15,10 @@ from rich.style import Style from invokeai.version import __version__ -INVOKE_AI_SRC="https://github.com/invoke-ai/InvokeAI/archive" -INVOKE_AI_TAG="https://github.com/invoke-ai/InvokeAI/archive/refs/tags" -INVOKE_AI_BRANCH="https://github.com/invoke-ai/InvokeAI/archive/refs/heads" -INVOKE_AI_REL="https://api.github.com/repos/invoke-ai/InvokeAI/releases" +INVOKE_AI_SRC = "https://github.com/invoke-ai/InvokeAI/archive" +INVOKE_AI_TAG = "https://github.com/invoke-ai/InvokeAI/archive/refs/tags" +INVOKE_AI_BRANCH = "https://github.com/invoke-ai/InvokeAI/archive/refs/heads" +INVOKE_AI_REL = "https://api.github.com/repos/invoke-ai/InvokeAI/releases" OS = platform.uname().system ARCH = platform.uname().machine @@ -29,34 +29,38 @@ if OS == "Windows": else: console = Console(style=Style(color="grey74", bgcolor="grey19")) -def get_versions()->dict: + +def get_versions() -> dict: return requests.get(url=INVOKE_AI_REL).json() -def invokeai_is_running()->bool: + +def invokeai_is_running() -> bool: for p in psutil.process_iter(): try: cmdline = p.cmdline() - matches = [x for x in cmdline if x.endswith(('invokeai','invokeai.exe'))] + matches = [x for x in cmdline if x.endswith(("invokeai", "invokeai.exe"))] if matches: - print(f':exclamation: [bold red]An InvokeAI instance appears to be running as process {p.pid}[/red bold]') + print( + f":exclamation: [bold red]An InvokeAI instance appears to be running as process {p.pid}[/red bold]" + ) return True - except (psutil.AccessDenied,psutil.NoSuchProcess): + except (psutil.AccessDenied, psutil.NoSuchProcess): continue return False + def welcome(versions: dict): - @group() def text(): - yield f'InvokeAI Version: [bold yellow]{__version__}' - yield '' - yield 'This script will update InvokeAI to the latest release, or to a development version of your choice.' - yield '' - yield '[bold yellow]Options:' - yield f'''[1] Update to the latest official release ([italic]{versions[0]['tag_name']}[/italic]) + yield f"InvokeAI Version: [bold yellow]{__version__}" + yield "" + yield "This script will update InvokeAI to the latest release, or to a development version of your choice." + yield "" + yield "[bold yellow]Options:" + yield f"""[1] Update to the latest official release ([italic]{versions[0]['tag_name']}[/italic]) [2] Update to the bleeding-edge development version ([italic]main[/italic]) [3] Manually enter the [bold]tag name[/bold] for the version you wish to update to -[4] Manually enter the [bold]branch name[/bold] for the version you wish to update to''' +[4] Manually enter the [bold]branch name[/bold] for the version you wish to update to""" console.rule() print( @@ -72,20 +76,22 @@ def welcome(versions: dict): ) console.line() + def get_extras(): - extras = '' + extras = "" try: - dist = pkg_resources.get_distribution('xformers') - extras = '[xformers]' + dist = pkg_resources.get_distribution("xformers") + extras = "[xformers]" except pkg_resources.DistributionNotFound: pass return extras + def main(): versions = get_versions() if invokeai_is_running(): - print(f':exclamation: [bold red]Please terminate all running instances of InvokeAI before updating.[/red bold]') - input('Press any key to continue...') + print(f":exclamation: [bold red]Please terminate all running instances of InvokeAI before updating.[/red bold]") + input("Press any key to continue...") return welcome(versions) @@ -93,36 +99,36 @@ def main(): tag = None branch = None release = None - choice = Prompt.ask('Choice:',choices=['1','2','3','4'],default='1') - - if choice=='1': - release = versions[0]['tag_name'] - elif choice=='2': - release = 'main' - elif choice=='3': - tag = Prompt.ask('Enter an InvokeAI tag name') - elif choice=='4': - branch = Prompt.ask('Enter an InvokeAI branch name') + choice = Prompt.ask("Choice:", choices=["1", "2", "3", "4"], default="1") + + if choice == "1": + release = versions[0]["tag_name"] + elif choice == "2": + release = "main" + elif choice == "3": + tag = Prompt.ask("Enter an InvokeAI tag name") + elif choice == "4": + branch = Prompt.ask("Enter an InvokeAI branch name") extras = get_extras() - print(f':crossed_fingers: Upgrading to [yellow]{tag if tag else release}[/yellow]') + print(f":crossed_fingers: Upgrading to [yellow]{tag if tag else release}[/yellow]") if release: cmd = f'pip install "invokeai{extras} @ {INVOKE_AI_SRC}/{release}.zip" --use-pep517 --upgrade' elif tag: cmd = f'pip install "invokeai{extras} @ {INVOKE_AI_TAG}/{tag}.zip" --use-pep517 --upgrade' else: cmd = f'pip install "invokeai{extras} @ {INVOKE_AI_BRANCH}/{branch}.zip" --use-pep517 --upgrade' - print('') - print('') - if os.system(cmd)==0: - print(f':heavy_check_mark: Upgrade successful') + print("") + print("") + if os.system(cmd) == 0: + print(f":heavy_check_mark: Upgrade successful") else: - print(f':exclamation: [bold red]Upgrade failed[/red bold]') - + print(f":exclamation: [bold red]Upgrade failed[/red bold]") + + if __name__ == "__main__": try: main() except KeyboardInterrupt: pass - diff --git a/invokeai/frontend/install/model_install.py b/invokeai/frontend/install/model_install.py index c4b19157a4..ea9efe1908 100644 --- a/invokeai/frontend/install/model_install.py +++ b/invokeai/frontend/install/model_install.py @@ -56,18 +56,18 @@ logger = InvokeAILogger.getLogger() # build a table mapping all non-printable characters to None # for stripping control characters # from https://stackoverflow.com/questions/92438/stripping-non-printable-characters-from-a-string-in-python -NOPRINT_TRANS_TABLE = { - i: None for i in range(0, sys.maxunicode + 1) if not chr(i).isprintable() -} +NOPRINT_TRANS_TABLE = {i: None for i in range(0, sys.maxunicode + 1) if not chr(i).isprintable()} -def make_printable(s:str)->str: - '''Replace non-printable characters in a string''' + +def make_printable(s: str) -> str: + """Replace non-printable characters in a string""" return s.translate(NOPRINT_TRANS_TABLE) + class addModelsForm(CyclingForm, npyscreen.FormMultiPage): # for responsive resizing set to False, but this seems to cause a crash! FIX_MINIMUM_SIZE_WHEN_CREATED = True - + # for persistence current_tab = 0 @@ -82,24 +82,18 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): self.subprocess_connection = None if not config.model_conf_path.exists(): - with open(config.model_conf_path,'w') as file: - print('# InvokeAI model configuration file',file=file) + with open(config.model_conf_path, "w") as file: + print("# InvokeAI model configuration file", file=file) self.installer = ModelInstall(config) self.all_models = self.installer.all_models() self.starter_models = self.installer.starter_models() - self.model_labels = self._get_model_labels() + self.model_labels = self._get_model_labels() window_width, window_height = get_terminal_size() self.nextrely -= 1 self.add_widget_intelligent( npyscreen.FixedText, - value="Use ctrl-N and ctrl-P to move to the ext and

revious fields,", - editable=False, - color="CAUTION", - ) - self.add_widget_intelligent( - npyscreen.FixedText, - value="Use cursor arrows to make a selection, and space to toggle checkboxes.", + value="Use ctrl-N and ctrl-P to move to the ext and

revious fields. Cursor keys navigate, and selects.", editable=False, color="CAUTION", ) @@ -107,17 +101,17 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): self.tabs = self.add_widget_intelligent( SingleSelectColumns, values=[ - 'STARTER MODELS', - 'MORE MODELS', - 'CONTROLNETS', - 'LORA/LYCORIS', - 'TEXTUAL INVERSION', + "STARTER MODELS", + "MORE MODELS", + "CONTROLNETS", + "LORA/LYCORIS", + "TEXTUAL INVERSION", ], value=[self.current_tab], - columns = 5, - max_height = 2, + columns=5, + max_height=2, relx=8, - scroll_exit = True, + scroll_exit=True, ) self.tabs.on_changed = self._toggle_tables @@ -127,104 +121,105 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): self.nextrely = top_of_table self.pipeline_models = self.add_pipeline_widgets( - model_type=ModelType.Main, - window_width=window_width, - exclude = self.starter_models + model_type=ModelType.Main, window_width=window_width, exclude=self.starter_models ) # self.pipeline_models['autoload_pending'] = True - bottom_of_table = max(bottom_of_table,self.nextrely) + bottom_of_table = max(bottom_of_table, self.nextrely) self.nextrely = top_of_table self.controlnet_models = self.add_model_widgets( model_type=ModelType.ControlNet, window_width=window_width, ) - bottom_of_table = max(bottom_of_table,self.nextrely) + bottom_of_table = max(bottom_of_table, self.nextrely) self.nextrely = top_of_table self.lora_models = self.add_model_widgets( model_type=ModelType.Lora, window_width=window_width, ) - bottom_of_table = max(bottom_of_table,self.nextrely) + bottom_of_table = max(bottom_of_table, self.nextrely) self.nextrely = top_of_table self.ti_models = self.add_model_widgets( model_type=ModelType.TextualInversion, window_width=window_width, ) - bottom_of_table = max(bottom_of_table,self.nextrely) - - self.nextrely = bottom_of_table+1 + bottom_of_table = max(bottom_of_table, self.nextrely) + + self.nextrely = bottom_of_table + 1 self.monitor = self.add_widget_intelligent( BufferBox, - name='Log Messages', + name="Log Messages", editable=False, - max_height = 10, + max_height=8, ) - + self.nextrely += 1 done_label = "APPLY CHANGES" back_label = "BACK" + cancel_label = "CANCEL" + current_position = self.nextrely if self.multipage: self.back_button = self.add_widget_intelligent( npyscreen.ButtonPress, name=back_label, - rely=-3, when_pressed_function=self.on_back, ) else: + self.nextrely = current_position + self.cancel_button = self.add_widget_intelligent( + npyscreen.ButtonPress, name=cancel_label, when_pressed_function=self.on_cancel + ) + self.nextrely = current_position self.ok_button = self.add_widget_intelligent( npyscreen.ButtonPress, name=done_label, relx=(window_width - len(done_label)) // 2, - rely=-3, - when_pressed_function=self.on_execute + when_pressed_function=self.on_execute, ) label = "APPLY CHANGES & EXIT" + self.nextrely = current_position self.done = self.add_widget_intelligent( npyscreen.ButtonPress, name=label, - rely=-3, - relx=window_width-len(label)-15, + relx=window_width - len(label) - 15, when_pressed_function=self.on_done, ) # This restores the selected page on return from an installation - for i in range(1,self.current_tab+1): + for i in range(1, self.current_tab + 1): self.tabs.h_cursor_line_down(1) self._toggle_tables([self.current_tab]) - ############# diffusers tab ########## - def add_starter_pipelines(self)->dict[str, npyscreen.widget]: - '''Add widgets responsible for selecting diffusers models''' + ############# diffusers tab ########## + def add_starter_pipelines(self) -> dict[str, npyscreen.widget]: + """Add widgets responsible for selecting diffusers models""" widgets = dict() models = self.all_models starters = self.starter_models starter_model_labels = self.model_labels - - self.installed_models = sorted( - [x for x in starters if models[x].installed] - ) + + self.installed_models = sorted([x for x in starters if models[x].installed]) widgets.update( - label1 = self.add_widget_intelligent( + label1=self.add_widget_intelligent( CenteredTitleText, name="Select from a starter set of Stable Diffusion models from HuggingFace.", editable=False, labelColor="CAUTION", ) ) - + self.nextrely -= 1 # if user has already installed some initial models, then don't patronize them # by showing more recommendations - show_recommended = len(self.installed_models)==0 + show_recommended = len(self.installed_models) == 0 keys = [x for x in models.keys() if x in starters] widgets.update( - models_selected = self.add_widget_intelligent( + models_selected=self.add_widget_intelligent( MultiSelectColumns, columns=1, name="Install Starter Models", @@ -232,40 +227,43 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): value=[ keys.index(x) for x in keys - if (show_recommended and models[x].recommended) \ - or (x in self.installed_models) + if (show_recommended and models[x].recommended) or (x in self.installed_models) ], max_height=len(starters) + 1, relx=4, scroll_exit=True, ), - models = keys, + models=keys, ) self.nextrely += 1 return widgets ############# Add a set of model install widgets ######## - def add_model_widgets(self, - model_type: ModelType, - window_width: int=120, - install_prompt: str=None, - exclude: set=set(), - )->dict[str,npyscreen.widget]: - '''Generic code to create model selection widgets''' + def add_model_widgets( + self, + model_type: ModelType, + window_width: int = 120, + install_prompt: str = None, + exclude: set = set(), + ) -> dict[str, npyscreen.widget]: + """Generic code to create model selection widgets""" widgets = dict() - model_list = [x for x in self.all_models if self.all_models[x].model_type==model_type and not x in exclude] + model_list = [x for x in self.all_models if self.all_models[x].model_type == model_type and not x in exclude] model_labels = [self.model_labels[x] for x in model_list] - show_recommended = len(self.installed_models)==0 + show_recommended = len(self.installed_models) == 0 if len(model_list) > 0: max_width = max([len(x) for x in model_labels]) - columns = window_width // (max_width+8) # 8 characters for "[x] " and padding - columns = min(len(model_list),columns) or 1 - prompt = install_prompt or f"Select the desired {model_type.value.title()} models to install. Unchecked models will be purged from disk." + columns = window_width // (max_width + 8) # 8 characters for "[x] " and padding + columns = min(len(model_list), columns) or 1 + prompt = ( + install_prompt + or f"Select the desired {model_type.value.title()} models to install. Unchecked models will be purged from disk." + ) widgets.update( - label1 = self.add_widget_intelligent( + label1=self.add_widget_intelligent( CenteredTitleText, name=prompt, editable=False, @@ -274,7 +272,7 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): ) widgets.update( - models_selected = self.add_widget_intelligent( + models_selected=self.add_widget_intelligent( MultiSelectColumns, columns=columns, name=f"Install {model_type} Models", @@ -282,21 +280,20 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): value=[ model_list.index(x) for x in model_list - if (show_recommended and self.all_models[x].recommended) \ - or self.all_models[x].installed + if (show_recommended and self.all_models[x].recommended) or self.all_models[x].installed ], - max_height=len(model_list)//columns + 1, + max_height=len(model_list) // columns + 1, relx=4, scroll_exit=True, ), - models = model_list, + models=model_list, ) self.nextrely += 1 widgets.update( - download_ids = self.add_widget_intelligent( + download_ids=self.add_widget_intelligent( TextBox, - name = "Additional URLs, or HuggingFace repo_ids to install (Space separated. Use shift-control-V to paste):", + name="Additional URLs, or HuggingFace repo_ids to install (Space separated. Use shift-control-V to paste):", max_height=4, scroll_exit=True, editable=True, @@ -305,16 +302,17 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): return widgets ### Tab for arbitrary diffusers widgets ### - def add_pipeline_widgets(self, - model_type: ModelType=ModelType.Main, - window_width: int=120, - **kwargs, - )->dict[str,npyscreen.widget]: - '''Similar to add_model_widgets() but adds some additional widgets at the bottom - to support the autoload directory''' + def add_pipeline_widgets( + self, + model_type: ModelType = ModelType.Main, + window_width: int = 120, + **kwargs, + ) -> dict[str, npyscreen.widget]: + """Similar to add_model_widgets() but adds some additional widgets at the bottom + to support the autoload directory""" widgets = self.add_model_widgets( - model_type = model_type, - window_width = window_width, + model_type=model_type, + window_width=window_width, install_prompt=f"Additional {model_type.value.title()} models already installed.", **kwargs, ) @@ -323,7 +321,7 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): def resize(self): super().resize() - if (s := self.starter_pipelines.get("models_selected")): + if s := self.starter_pipelines.get("models_selected"): keys = [x for x in self.all_models.keys() if x in self.starter_models] s.values = [self.model_labels[x] for x in keys] @@ -338,27 +336,27 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): ] for group in widgets: - for k,v in group.items(): + for k, v in group.items(): try: v.hidden = True v.editable = False except: pass - for k,v in widgets[selected_tab].items(): + for k, v in widgets[selected_tab].items(): try: v.hidden = False - if not isinstance(v,(npyscreen.FixedText, npyscreen.TitleFixedText, CenteredTitleText)): + if not isinstance(v, (npyscreen.FixedText, npyscreen.TitleFixedText, CenteredTitleText)): v.editable = True except: pass self.__class__.current_tab = selected_tab # for persistence self.display() - def _get_model_labels(self) -> dict[str,str]: + def _get_model_labels(self) -> dict[str, str]: window_width, window_height = get_terminal_size() checkbox_width = 4 spacing_width = 2 - + models = self.all_models label_width = max([len(models[x].name) for x in models]) description_width = window_width - label_width - checkbox_width - spacing_width @@ -366,30 +364,28 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): result = dict() for x in models.keys(): description = models[x].description - description = description[0 : description_width - 3] + "..." \ - if description and len(description) > description_width \ - else description if description else '' - result[x] = f"%-{label_width}s %s" % (models[x].name, description) + description = ( + description[0 : description_width - 3] + "..." + if description and len(description) > description_width + else description + if description + else "" + ) + result[x] = f"%-{label_width}s %s" % (models[x].name, description) return result - + def _get_columns(self) -> int: window_width, window_height = get_terminal_size() - cols = ( - 4 - if window_width > 240 - else 3 - if window_width > 160 - else 2 - if window_width > 80 - else 1 - ) + cols = 4 if window_width > 240 else 3 if window_width > 160 else 2 if window_width > 80 else 1 return min(cols, len(self.installed_models)) - def confirm_deletions(self, selections: InstallSelections)->bool: + def confirm_deletions(self, selections: InstallSelections) -> bool: remove_models = selections.remove_models if len(remove_models) > 0: mods = "\n".join([ModelManager.parse_key(x)[0] for x in remove_models]) - return npyscreen.notify_ok_cancel(f"These unchecked models will be deleted from disk. Continue?\n---------\n{mods}") + return npyscreen.notify_ok_cancel( + f"These unchecked models will be deleted from disk. Continue?\n---------\n{mods}" + ) else: return True @@ -398,20 +394,20 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): app = self.parentApp if not self.confirm_deletions(app.install_selections): return - - self.monitor.entry_widget.buffer(['Processing...'],scroll_end=True) + + self.monitor.entry_widget.buffer(["Processing..."], scroll_end=True) self.ok_button.hidden = True self.display() - + # for communication with the subprocess parent_conn, child_conn = Pipe() p = Process( - target = process_and_execute, + target=process_and_execute, kwargs=dict( - opt = app.program_opts, - selections = app.install_selections, - conn_out = child_conn, - ) + opt=app.program_opts, + selections=app.install_selections, + conn_out=child_conn, + ), ) p.start() child_conn.close() @@ -428,7 +424,7 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): self.parentApp.setNextForm(None) self.parentApp.user_cancelled = True self.editing = False - + def on_done(self): self.marshall_arguments() if not self.confirm_deletions(self.parentApp.install_selections): @@ -436,75 +432,79 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): self.parentApp.setNextForm(None) self.parentApp.user_cancelled = False self.editing = False - + ########## This routine monitors the child process that is performing model installation and removal ##### def while_waiting(self): - '''Called during idle periods. Main task is to update the Log Messages box with messages - from the child process that does the actual installation/removal''' + """Called during idle periods. Main task is to update the Log Messages box with messages + from the child process that does the actual installation/removal""" c = self.subprocess_connection if not c: return - + monitor_widget = self.monitor.entry_widget while c.poll(): try: - data = c.recv_bytes().decode('utf-8') - data.strip('\n') + data = c.recv_bytes().decode("utf-8") + data.strip("\n") # processing child is requesting user input to select the # right configuration file - if data.startswith('*need v2 config'): - _,model_path,*_ = data.split(":",2) + if data.startswith("*need v2 config"): + _, model_path, *_ = data.split(":", 2) self._return_v2_config(model_path) # processing child is done - elif data=='*done*': + elif data == "*done*": self._close_subprocess_and_regenerate_form() break # update the log message box else: - data=make_printable(data) - data=data.replace('[A','') + data = make_printable(data) + data = data.replace("[A", "") monitor_widget.buffer( - textwrap.wrap(data, - width=monitor_widget.width, - subsequent_indent=' ', - ), - scroll_end=True + textwrap.wrap( + data, + width=monitor_widget.width, + subsequent_indent=" ", + ), + scroll_end=True, ) self.display() - except (EOFError,OSError): + except (EOFError, OSError): self.subprocess_connection = None - def _return_v2_config(self,model_path: str): + def _return_v2_config(self, model_path: str): c = self.subprocess_connection model_name = Path(model_path).name message = select_stable_diffusion_config_file(model_name=model_name) - c.send_bytes(message.encode('utf-8')) + c.send_bytes(message.encode("utf-8")) def _close_subprocess_and_regenerate_form(self): app = self.parentApp self.subprocess_connection.close() self.subprocess_connection = None - self.monitor.entry_widget.buffer(['** Action Complete **']) + self.monitor.entry_widget.buffer(["** Action Complete **"]) self.display() - + # rebuild the form, saving and restoring some of the fields that need to be preserved. saved_messages = self.monitor.entry_widget.values # autoload_dir = str(config.root_path / self.pipeline_models['autoload_directory'].value) # autoscan = self.pipeline_models['autoscan_on_startup'].value - + app.main_form = app.addForm( - "MAIN", addModelsForm, name="Install Stable Diffusion Models", multipage=self.multipage, + "MAIN", + addModelsForm, + name="Install Stable Diffusion Models", + multipage=self.multipage, ) app.switchForm("MAIN") - + app.main_form.monitor.entry_widget.values = saved_messages - app.main_form.monitor.entry_widget.buffer([''],scroll_end=True) + app.main_form.monitor.entry_widget.buffer([""], scroll_end=True) # app.main_form.pipeline_models['autoload_directory'].value = autoload_dir # app.main_form.pipeline_models['autoscan_on_startup'].value = autoscan - + def marshall_arguments(self): """ Assemble arguments and store as attributes of the application: @@ -519,21 +519,29 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): all_models = self.all_models # Defined models (in INITIAL_CONFIG.yaml or models.yaml) to add/remove - ui_sections = [self.starter_pipelines, self.pipeline_models, - self.controlnet_models, self.lora_models, self.ti_models] + ui_sections = [ + self.starter_pipelines, + self.pipeline_models, + self.controlnet_models, + self.lora_models, + self.ti_models, + ] for section in ui_sections: - if not 'models_selected' in section: + if not "models_selected" in section: continue - selected = set([section['models'][x] for x in section['models_selected'].value]) + selected = set([section["models"][x] for x in section["models_selected"].value]) models_to_install = [x for x in selected if not self.all_models[x].installed] - models_to_remove = [x for x in section['models'] if x not in selected and self.all_models[x].installed] + models_to_remove = [x for x in section["models"] if x not in selected and self.all_models[x].installed] selections.remove_models.extend(models_to_remove) - selections.install_models.extend(all_models[x].path or all_models[x].repo_id \ - for x in models_to_install if all_models[x].path or all_models[x].repo_id) + selections.install_models.extend( + all_models[x].path or all_models[x].repo_id + for x in models_to_install + if all_models[x].path or all_models[x].repo_id + ) # models located in the 'download_ids" section for section in ui_sections: - if downloads := section.get('download_ids'): + if downloads := section.get("download_ids"): selections.install_models.extend(downloads.value.split()) # load directory and whether to scan on startup @@ -542,8 +550,9 @@ class addModelsForm(CyclingForm, npyscreen.FormMultiPage): # self.parentApp.autoload_pending = False # selections.autoscan_on_startup = self.pipeline_models['autoscan_on_startup'].value + class AddModelApplication(npyscreen.NPSAppManaged): - def __init__(self,opt): + def __init__(self, opt): super().__init__() self.program_opts = opt self.user_cancelled = False @@ -553,76 +562,83 @@ class AddModelApplication(npyscreen.NPSAppManaged): def onStart(self): npyscreen.setTheme(npyscreen.Themes.DefaultTheme) self.main_form = self.addForm( - "MAIN", addModelsForm, name="Install Stable Diffusion Models", cycle_widgets=True, + "MAIN", + addModelsForm, + name="Install Stable Diffusion Models", + cycle_widgets=False, ) -class StderrToMessage(): + +class StderrToMessage: def __init__(self, connection: Connection): self.connection = connection - def write(self, data:str): - self.connection.send_bytes(data.encode('utf-8')) + def write(self, data: str): + self.connection.send_bytes(data.encode("utf-8")) def flush(self): pass + # -------------------------------------------------------- -def ask_user_for_prediction_type(model_path: Path, - tui_conn: Connection=None - )->SchedulerPredictionType: +def ask_user_for_prediction_type(model_path: Path, tui_conn: Connection = None) -> SchedulerPredictionType: if tui_conn: - logger.debug('Waiting for user response...') - return _ask_user_for_pt_tui(model_path, tui_conn) + logger.debug("Waiting for user response...") + return _ask_user_for_pt_tui(model_path, tui_conn) else: return _ask_user_for_pt_cmdline(model_path) -def _ask_user_for_pt_cmdline(model_path: Path)->SchedulerPredictionType: + +def _ask_user_for_pt_cmdline(model_path: Path) -> SchedulerPredictionType: choices = [SchedulerPredictionType.Epsilon, SchedulerPredictionType.VPrediction, None] print( -f""" + f""" Please select the type of the V2 checkpoint named {model_path.name}: [1] A model based on Stable Diffusion v2 trained on 512 pixel images (SD-2-base) [2] A model based on Stable Diffusion v2 trained on 768 pixel images (SD-2-768) [3] Skip this model and come back later. """ - ) + ) choice = None ok = False while not ok: try: - choice = input('select> ').strip() - choice = choices[int(choice)-1] + choice = input("select> ").strip() + choice = choices[int(choice) - 1] ok = True except (ValueError, IndexError): - print(f'{choice} is not a valid choice') + print(f"{choice} is not a valid choice") except EOFError: return return choice - -def _ask_user_for_pt_tui(model_path: Path, tui_conn: Connection)->SchedulerPredictionType: + + +def _ask_user_for_pt_tui(model_path: Path, tui_conn: Connection) -> SchedulerPredictionType: try: - tui_conn.send_bytes(f'*need v2 config for:{model_path}'.encode('utf-8')) + tui_conn.send_bytes(f"*need v2 config for:{model_path}".encode("utf-8")) # note that we don't do any status checking here - response = tui_conn.recv_bytes().decode('utf-8') + response = tui_conn.recv_bytes().decode("utf-8") if response is None: return None - elif response == 'epsilon': + elif response == "epsilon": return SchedulerPredictionType.epsilon - elif response == 'v': + elif response == "v": return SchedulerPredictionType.VPrediction - elif response == 'abort': - logger.info('Conversion aborted') + elif response == "abort": + logger.info("Conversion aborted") return None else: return response except: return None - + + # -------------------------------------------------------- -def process_and_execute(opt: Namespace, - selections: InstallSelections, - conn_out: Connection=None, - ): +def process_and_execute( + opt: Namespace, + selections: InstallSelections, + conn_out: Connection = None, +): # set up so that stderr is sent to conn_out if conn_out: translator = StderrToMessage(conn_out) @@ -632,66 +648,57 @@ def process_and_execute(opt: Namespace, logger.handlers.clear() logger.addHandler(logging.StreamHandler(translator)) - installer = ModelInstall(config, prediction_type_helper=lambda x: ask_user_for_prediction_type(x,conn_out)) + installer = ModelInstall(config, prediction_type_helper=lambda x: ask_user_for_prediction_type(x, conn_out)) installer.install(selections) if conn_out: - conn_out.send_bytes('*done*'.encode('utf-8')) + conn_out.send_bytes("*done*".encode("utf-8")) conn_out.close() -def do_listings(opt)->bool: + +def do_listings(opt) -> bool: """List installed models of various sorts, and return True if any were requested.""" model_manager = ModelManager(config.model_conf_path) - if opt.list_models == 'diffusers': + if opt.list_models == "diffusers": print("Diffuser models:") model_manager.print_models() - elif opt.list_models == 'controlnets': + elif opt.list_models == "controlnets": print("Installed Controlnet Models:") cnm = model_manager.list_controlnet_models() - print(textwrap.indent("\n".join([x for x in cnm if cnm[x]]),prefix=' ')) - elif opt.list_models == 'loras': + print(textwrap.indent("\n".join([x for x in cnm if cnm[x]]), prefix=" ")) + elif opt.list_models == "loras": print("Installed LoRA/LyCORIS Models:") cnm = model_manager.list_lora_models() - print(textwrap.indent("\n".join([x for x in cnm if cnm[x]]),prefix=' ')) - elif opt.list_models == 'tis': + print(textwrap.indent("\n".join([x for x in cnm if cnm[x]]), prefix=" ")) + elif opt.list_models == "tis": print("Installed Textual Inversion Embeddings:") cnm = model_manager.list_ti_models() - print(textwrap.indent("\n".join([x for x in cnm if cnm[x]]),prefix=' ')) + print(textwrap.indent("\n".join([x for x in cnm if cnm[x]]), prefix=" ")) else: return False return True + # -------------------------------------------------------- def select_and_download_models(opt: Namespace): - precision = ( - "float32" - if opt.full_precision - else choose_precision(torch.device(choose_torch_device())) - ) + precision = "float32" if opt.full_precision else choose_precision(torch.device(choose_torch_device())) config.precision = precision helper = lambda x: ask_user_for_prediction_type(x) # if do_listings(opt): # pass - + installer = ModelInstall(config, prediction_type_helper=helper) if opt.list_models: installer.list_models(opt.list_models) elif opt.add or opt.delete: - selections = InstallSelections( - install_models = opt.add or [], - remove_models = opt.delete or [] - ) + selections = InstallSelections(install_models=opt.add or [], remove_models=opt.delete or []) installer.install(selections) elif opt.default_only: - selections = InstallSelections( - install_models = installer.default_model() - ) + selections = InstallSelections(install_models=installer.default_model()) installer.install(selections) elif opt.yes_to_all: - selections = InstallSelections( - install_models = installer.recommended_models() - ) + selections = InstallSelections(install_models=installer.recommended_models()) installer.install(selections) # this is where the TUI is called @@ -706,15 +713,15 @@ def select_and_download_models(opt: Namespace): try: installApp.run() except KeyboardInterrupt as e: - if hasattr(installApp,'main_form'): - if installApp.main_form.subprocess \ - and installApp.main_form.subprocess.is_alive(): - logger.info('Terminating subprocesses') + if hasattr(installApp, "main_form"): + if installApp.main_form.subprocess and installApp.main_form.subprocess.is_alive(): + logger.info("Terminating subprocesses") installApp.main_form.subprocess.terminate() installApp.main_form.subprocess = None raise e process_and_execute(opt, installApp.install_selections) + # ------------------------------------- def main(): parser = argparse.ArgumentParser(description="InvokeAI model downloader") @@ -769,19 +776,17 @@ def main(): help="path to root of install directory", ) opt = parser.parse_args() - + invoke_args = [] if opt.root: - invoke_args.extend(['--root',opt.root]) + invoke_args.extend(["--root", opt.root]) if opt.full_precision: - invoke_args.extend(['--precision','float32']) + invoke_args.extend(["--precision", "float32"]) config.parse_args(invoke_args) logger = InvokeAILogger().getLogger(config=config) if not config.model_conf_path.exists(): - logger.info( - "Your InvokeAI root directory is not set up. Calling invokeai-configure." - ) + logger.info("Your InvokeAI root directory is not set up. Calling invokeai-configure.") from invokeai.frontend.install import invokeai_configure invokeai_configure() @@ -799,20 +804,18 @@ def main(): logger.info("Goodbye! Come back soon.") except widget.NotEnoughSpaceForWidget as e: if str(e).startswith("Height of 1 allocated"): - logger.error( - "Insufficient vertical space for the interface. Please make your window taller and try again" - ) - input('Press any key to continue...') + logger.error("Insufficient vertical space for the interface. Please make your window taller and try again") + input("Press any key to continue...") except Exception as e: if str(e).startswith("addwstr"): logger.error( "Insufficient horizontal space for the interface. Please make your window wider and try again." ) else: - print(f'An exception has occurred: {str(e)} Details:') + print(f"An exception has occurred: {str(e)} Details:") print(traceback.format_exc(), file=sys.stderr) - input('Press any key to continue...') - + input("Press any key to continue...") + # ------------------------------------- if __name__ == "__main__": diff --git a/invokeai/frontend/install/widgets.py b/invokeai/frontend/install/widgets.py index 82d3753eb4..10da15bf13 100644 --- a/invokeai/frontend/install/widgets.py +++ b/invokeai/frontend/install/widgets.py @@ -14,40 +14,42 @@ 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 curses import BUTTON2_CLICKED, BUTTON3_CLICKED # minimum size for UIs -MIN_COLS = 136 -MIN_LINES = 45 +MIN_COLS = 130 +MIN_LINES = 38 + # ------------------------------------- def set_terminal_size(columns: int, lines: int): ts = get_terminal_size() - width = max(columns,ts.columns) - height = max(lines,ts.lines) + width = max(columns, ts.columns) + height = max(lines, ts.lines) OS = platform.uname().system if OS == "Windows": pass # not working reliably - ask user to adjust the window - #_set_terminal_size_powershell(width,height) + # _set_terminal_size_powershell(width,height) elif OS in ["Darwin", "Linux"]: - _set_terminal_size_unix(width,height) + _set_terminal_size_unix(width, height) # check whether it worked.... ts = get_terminal_size() pause = False if ts.columns < columns: - print('\033[1mThis window is too narrow for the user interface. Please make it wider.\033[0m') + print("\033[1mThis window is too narrow for the user interface.\033[0m") pause = True if ts.lines < lines: - print('\033[1mThis window is too short for the user interface. Please make it taller.\033[0m') + print("\033[1mThis window is too short for the user interface.\033[0m") pause = True if pause: - input('Press any key to continue..') + input("Maximize the window then press any key to continue..") + def _set_terminal_size_powershell(width: int, height: int): - script=f''' + script = f""" $pshost = get-host $pswindow = $pshost.ui.rawui $newsize = $pswindow.buffersize @@ -58,8 +60,9 @@ $newsize = $pswindow.windowsize $newsize.height = {height} $newsize.width = {width} $pswindow.windowsize = $newsize -''' - subprocess.run(["powershell","-Command","-"],input=script,text=True) +""" + subprocess.run(["powershell", "-Command", "-"], input=script, text=True) + def _set_terminal_size_unix(width: int, height: int): import fcntl @@ -67,15 +70,16 @@ def _set_terminal_size_unix(width: int, height: int): # These terminals accept the size command and report that the # size changed, but they lie!!! - for bad_terminal in ['TERMINATOR_UUID', 'ALACRITTY_WINDOW_ID']: + for bad_terminal in ["TERMINATOR_UUID", "ALACRITTY_WINDOW_ID"]: if os.environ.get(bad_terminal): return - + winsize = struct.pack("HHHH", height, width, 0, 0) fcntl.ioctl(sys.stdout.fileno(), termios.TIOCSWINSZ, winsize) sys.stdout.write("\x1b[8;{height};{width}t".format(height=height, width=width)) sys.stdout.flush() + def set_min_terminal_size(min_cols: int, min_lines: int): # make sure there's enough room for the ui term_cols, term_lines = get_terminal_size() @@ -85,6 +89,7 @@ def set_min_terminal_size(min_cols: int, min_lines: int): lines = max(term_lines, min_lines) set_terminal_size(cols, lines) + class IntSlider(npyscreen.Slider): def translate_value(self): stri = "%2d / %2d" % (self.value, self.out_of) @@ -92,23 +97,25 @@ class IntSlider(npyscreen.Slider): stri = stri.rjust(l) return stri + # ------------------------------------- # fix npyscreen form so that cursor wraps both forward and backward class CyclingForm(object): def find_previous_editable(self, *args): done = False - n = self.editw-1 + n = self.editw - 1 while not done: if self._widgets__[n].editable and not self._widgets__[n].hidden: self.editw = n done = True n -= 1 - if n<0: + if n < 0: if self.cycle_widgets: - n = len(self._widgets__)-1 + n = len(self._widgets__) - 1 else: done = True - + + # ------------------------------------- class CenteredTitleText(npyscreen.TitleText): def __init__(self, *args, **keywords): @@ -159,7 +166,8 @@ class FloatSlider(npyscreen.Slider): class FloatTitleSlider(npyscreen.TitleText): _entry_type = FloatSlider -class SelectColumnBase(): + +class SelectColumnBase: def make_contained_widgets(self): self._my_widgets = [] column_width = self.width // self.columns @@ -217,11 +225,12 @@ class SelectColumnBase(): row_no = rel_y // self._contained_widget_height self.cursor_line = column_no * column_height + row_no if bstate & curses.BUTTON1_DOUBLE_CLICKED: - if hasattr(self,'on_mouse_double_click'): + if hasattr(self, "on_mouse_double_click"): self.on_mouse_double_click(self.cursor_line) self.display() -class MultiSelectColumns( SelectColumnBase, npyscreen.MultiSelect): + +class MultiSelectColumns(SelectColumnBase, npyscreen.MultiSelect): def __init__(self, screen, columns: int = 1, values: list = [], **keywords): self.columns = columns self.value_cnt = len(values) @@ -231,15 +240,17 @@ class MultiSelectColumns( SelectColumnBase, npyscreen.MultiSelect): def on_mouse_double_click(self, cursor_line): self.h_select_toggle(cursor_line) -class SingleSelectWithChanged(npyscreen.SelectOne): - def __init__(self,*args,**kwargs): - super().__init__(*args,**kwargs) - def h_select(self,ch): +class SingleSelectWithChanged(npyscreen.SelectOne): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def h_select(self, ch): super().h_select(ch) if self.on_changed: self.on_changed(self.value) + class SingleSelectColumns(SelectColumnBase, SingleSelectWithChanged): def __init__(self, screen, columns: int = 1, values: list = [], **keywords): self.columns = columns @@ -254,23 +265,25 @@ class SingleSelectColumns(SelectColumnBase, SingleSelectWithChanged): def when_cursor_moved(self): self.h_select(self.cursor_line) - def h_cursor_line_right(self,ch): - self.h_exit_down('bye bye') + def h_cursor_line_right(self, ch): + self.h_exit_down("bye bye") + class TextBoxInner(npyscreen.MultiLineEdit): - - def __init__(self,*args,**kwargs): - super().__init__(*args,**kwargs) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) self.yank = None - self.handlers.update({ - "^A": self.h_cursor_to_start, - "^E": self.h_cursor_to_end, - "^K": self.h_kill, - "^F": self.h_cursor_right, - "^B": self.h_cursor_left, - "^Y": self.h_yank, - "^V": self.h_paste, - }) + self.handlers.update( + { + "^A": self.h_cursor_to_start, + "^E": self.h_cursor_to_end, + "^K": self.h_kill, + "^F": self.h_cursor_right, + "^B": self.h_cursor_left, + "^Y": self.h_yank, + "^V": self.h_paste, + } + ) def h_cursor_to_start(self, input): self.cursor_position = 0 @@ -279,27 +292,27 @@ class TextBoxInner(npyscreen.MultiLineEdit): self.cursor_position = len(self.value) def h_kill(self, input): - self.yank = self.value[self.cursor_position:] - self.value = self.value[:self.cursor_position] + self.yank = self.value[self.cursor_position :] + self.value = self.value[: self.cursor_position] def h_yank(self, input): if self.yank: self.paste(self.yank) def paste(self, text: str): - self.value = self.value[:self.cursor_position] + text + self.value[self.cursor_position:] + self.value = self.value[: self.cursor_position] + text + self.value[self.cursor_position :] self.cursor_position += len(text) - def h_paste(self, input: int=0): + def h_paste(self, input: int = 0): try: text = pyperclip.paste() except ModuleNotFoundError: text = "To paste with the mouse on Linux, please install the 'xclip' program." self.paste(text) - + def handle_mouse_event(self, mouse_event): mouse_id, rel_x, rel_y, z, bstate = self.interpret_mouse_event(mouse_event) - if bstate & (BUTTON2_CLICKED|BUTTON3_CLICKED): + if bstate & (BUTTON2_CLICKED | BUTTON3_CLICKED): self.h_paste() # def update(self, clear=True): @@ -320,77 +333,87 @@ class TextBoxInner(npyscreen.MultiLineEdit): # self.rely, self.relx + WIDTH, curses.ACS_VLINE, HEIGHT # ) - # # draw corners - # self.parent.curses_pad.addch( - # self.rely, - # self.relx, - # curses.ACS_ULCORNER, - # ) - # self.parent.curses_pad.addch( - # self.rely, - # self.relx + WIDTH, - # curses.ACS_URCORNER, - # ) - # self.parent.curses_pad.addch( - # self.rely + HEIGHT, - # self.relx, - # curses.ACS_LLCORNER, - # ) - # self.parent.curses_pad.addch( - # self.rely + HEIGHT, - # self.relx + WIDTH, - # curses.ACS_LRCORNER, - # ) + # # draw corners + # self.parent.curses_pad.addch( + # self.rely, + # self.relx, + # curses.ACS_ULCORNER, + # ) + # self.parent.curses_pad.addch( + # self.rely, + # self.relx + WIDTH, + # curses.ACS_URCORNER, + # ) + # self.parent.curses_pad.addch( + # self.rely + HEIGHT, + # self.relx, + # curses.ACS_LLCORNER, + # ) + # self.parent.curses_pad.addch( + # self.rely + HEIGHT, + # self.relx + WIDTH, + # curses.ACS_LRCORNER, + # ) + + # # fool our superclass into thinking drawing area is smaller - this is really hacky but it seems to work + # (relx, rely, height, width) = (self.relx, self.rely, self.height, self.width) + # self.relx += 1 + # self.rely += 1 + # self.height -= 1 + # self.width -= 1 + # super().update(clear=False) + # (self.relx, self.rely, self.height, self.width) = (relx, rely, height, width) - # # fool our superclass into thinking drawing area is smaller - this is really hacky but it seems to work - # (relx, rely, height, width) = (self.relx, self.rely, self.height, self.width) - # self.relx += 1 - # self.rely += 1 - # self.height -= 1 - # self.width -= 1 - # super().update(clear=False) - # (self.relx, self.rely, self.height, self.width) = (relx, rely, height, width) class TextBox(npyscreen.BoxTitle): _contained_widget = TextBoxInner + class BufferBox(npyscreen.BoxTitle): _contained_widget = npyscreen.BufferPager + class ConfirmCancelPopup(fmPopup.ActionPopup): DEFAULT_COLUMNS = 100 + def on_ok(self): self.value = True + def on_cancel(self): self.value = False - + + class FileBox(npyscreen.BoxTitle): _contained_widget = npyscreen.Filename - + + class PrettyTextBox(npyscreen.BoxTitle): _contained_widget = TextBox - + + def _wrap_message_lines(message, line_length): lines = [] - for line in message.split('\n'): + for line in message.split("\n"): lines.extend(textwrap.wrap(line.rstrip(), line_length)) return lines - + + def _prepare_message(message): if isinstance(message, list) or isinstance(message, tuple): - return "\n".join([ s.rstrip() for s in message]) - #return "\n".join(message) + return "\n".join([s.rstrip() for s in message]) + # return "\n".join(message) else: return message - + + def select_stable_diffusion_config_file( - form_color: str='DANGER', - wrap:bool =True, - model_name:str='Unknown', + form_color: str = "DANGER", + wrap: bool = True, + model_name: str = "Unknown", ): message = f"Please select the correct base model for the V2 checkpoint named '{model_name}'. Press to skip installation." title = "CONFIG FILE SELECTION" - options=[ + options = [ "An SD v2.x base model (512 pixels; no 'parameterization:' line in its yaml file)", "An SD v2.x v-predictive model (768 pixels; 'parameterization: \"v\"' line in its yaml file)", "Skip installation for now and come back later", @@ -403,22 +426,22 @@ def select_stable_diffusion_config_file( lines=16, ) F.preserve_selected_widget = True - + mlw = F.add( wgmultiline.Pager, max_height=4, editable=False, ) - mlw_width = mlw.width-1 + mlw_width = mlw.width - 1 if wrap: message = _wrap_message_lines(message, mlw_width) mlw.values = message choice = F.add( npyscreen.SelectOne, - values = options, - value = [0], - max_height = len(options)+1, + values=options, + value=[0], + max_height=len(options) + 1, scroll_exit=True, ) @@ -426,6 +449,6 @@ def select_stable_diffusion_config_file( F.edit() if not F.value: return None - assert choice.value[0] in range(0,3),'invalid choice' - choices = ['epsilon','v','abort'] + assert choice.value[0] in range(0, 3), "invalid choice" + choices = ["epsilon", "v", "abort"] return choices[choice.value[0]] diff --git a/invokeai/frontend/legacy_launch_invokeai.py b/invokeai/frontend/legacy_launch_invokeai.py index 349fa5b945..e4509db6e5 100644 --- a/invokeai/frontend/legacy_launch_invokeai.py +++ b/invokeai/frontend/legacy_launch_invokeai.py @@ -2,18 +2,22 @@ import os import sys import argparse + def main(): parser = argparse.ArgumentParser() - parser.add_argument('--web', action='store_true') - opts,_ = parser.parse_known_args() + parser.add_argument("--web", action="store_true") + opts, _ = parser.parse_known_args() if opts.web: - sys.argv.pop(sys.argv.index('--web')) + sys.argv.pop(sys.argv.index("--web")) from invokeai.app.api_app import invoke_api + invoke_api() else: from invokeai.app.cli_app import invoke_cli + invoke_cli() -if __name__ == '__main__': + +if __name__ == "__main__": main() diff --git a/invokeai/frontend/merge/__init__.py b/invokeai/frontend/merge/__init__.py index f1fc66c39e..3a2e4474a5 100644 --- a/invokeai/frontend/merge/__init__.py +++ b/invokeai/frontend/merge/__init__.py @@ -2,4 +2,3 @@ Initialization file for invokeai.frontend.merge """ from .merge_diffusers import main as invokeai_merge_diffusers - diff --git a/invokeai/frontend/merge/merge_diffusers.py b/invokeai/frontend/merge/merge_diffusers.py index c20d913883..81a7b3f6c8 100644 --- a/invokeai/frontend/merge/merge_diffusers.py +++ b/invokeai/frontend/merge/merge_diffusers.py @@ -20,13 +20,17 @@ from omegaconf import OmegaConf import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig from invokeai.backend.model_management import ( - ModelMerger, MergeInterpolationMethod, - ModelManager, ModelType, BaseModelType, + ModelMerger, + MergeInterpolationMethod, + ModelManager, + ModelType, + BaseModelType, ) from invokeai.frontend.install.widgets import FloatTitleSlider, TextBox, SingleSelectColumns config = InvokeAIAppConfig.get_config() + def _parse_args() -> Namespace: parser = argparse.ArgumentParser(description="InvokeAI model merging") parser.add_argument( @@ -134,14 +138,14 @@ class mergeModelsForm(npyscreen.FormMultiPageAction): self.base_select = self.add_widget_intelligent( SingleSelectColumns, values=[ - 'Models Built on SD-1.x', - 'Models Built on SD-2.x', + "Models Built on SD-1.x", + "Models Built on SD-2.x", ], value=[self.current_base], - columns = 4, - max_height = 2, + columns=4, + max_height=2, relx=8, - scroll_exit = True, + scroll_exit=True, ) self.base_select.on_changed = self._populate_models self.add_widget_intelligent( @@ -300,15 +304,11 @@ class mergeModelsForm(npyscreen.FormMultiPageAction): def validate_field_values(self) -> bool: bad_fields = [] model_names = self.model_names - selected_models = set( - (model_names[self.model1.value[0]], model_names[self.model2.value[0]]) - ) + selected_models = set((model_names[self.model1.value[0]], model_names[self.model2.value[0]])) if self.model3.value[0] > 0: selected_models.add(model_names[self.model3.value[0] - 1]) if len(selected_models) < 2: - bad_fields.append( - f"Please select two or three DIFFERENT models to compare. You selected {selected_models}" - ) + bad_fields.append(f"Please select two or three DIFFERENT models to compare. You selected {selected_models}") if len(bad_fields) > 0: message = "The following problems were detected and must be corrected:" for problem in bad_fields: @@ -318,7 +318,7 @@ class mergeModelsForm(npyscreen.FormMultiPageAction): else: return True - def get_model_names(self, base_model: BaseModelType=None) -> List[str]: + def get_model_names(self, base_model: BaseModelType = None) -> List[str]: model_names = [ info["name"] for info in self.model_manager.list_models(model_type=ModelType.Main, base_model=base_model) @@ -326,20 +326,21 @@ class mergeModelsForm(npyscreen.FormMultiPageAction): ] return sorted(model_names) - def _populate_models(self,value=None): + def _populate_models(self, value=None): base_model = tuple(BaseModelType)[value[0]] self.model_names = self.get_model_names(base_model) - + models_plus_none = self.model_names.copy() models_plus_none.insert(0, "None") self.model1.values = self.model_names self.model2.values = self.model_names self.model3.values = models_plus_none - + self.display() + class Mergeapp(npyscreen.NPSAppManaged): - def __init__(self, model_manager:ModelManager): + def __init__(self, model_manager: ModelManager): super().__init__() self.model_manager = model_manager @@ -367,9 +368,7 @@ def run_cli(args: Namespace): if not args.merged_model_name: args.merged_model_name = "+".join(args.model_names) - logger.info( - f'No --merged_model_name provided. Defaulting to "{args.merged_model_name}"' - ) + logger.info(f'No --merged_model_name provided. Defaulting to "{args.merged_model_name}"') model_manager = ModelManager(config.model_conf_path) assert ( @@ -383,7 +382,7 @@ def run_cli(args: Namespace): def main(): args = _parse_args() - config.parse_args(['--root',str(args.root_dir)]) + config.parse_args(["--root", str(args.root_dir)]) try: if args.front_end: @@ -392,13 +391,9 @@ def main(): run_cli(args) except widget.NotEnoughSpaceForWidget as e: if str(e).startswith("Height of 1 allocated"): - logger.error( - "You need to have at least two diffusers models defined in models.yaml in order to merge" - ) + logger.error("You need to have at least two diffusers models defined in models.yaml in order to merge") else: - logger.error( - "Not enough room for the user interface. Try making this window larger." - ) + logger.error("Not enough room for the user interface. Try making this window larger.") sys.exit(-1) except Exception as e: logger.error(e) diff --git a/invokeai/frontend/training/textual_inversion.py b/invokeai/frontend/training/textual_inversion.py index e1c7b3749f..25debf4bdc 100755 --- a/invokeai/frontend/training/textual_inversion.py +++ b/invokeai/frontend/training/textual_inversion.py @@ -23,16 +23,14 @@ 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 -) +from ...backend.training import do_textual_inversion_training, parse_args TRAINING_DATA = "text-inversion-training-data" TRAINING_DIR = "text-inversion-output" CONF_FILE = "preferences.conf" config = None + class textualInversionForm(npyscreen.FormMultiPageAction): resolutions = [512, 768, 1024] lr_schedulers = [ @@ -111,9 +109,7 @@ class textualInversionForm(npyscreen.FormMultiPageAction): npyscreen.TitleSelectOne, name="Learnable property:", values=self.learnable_properties, - value=self.learnable_properties.index( - saved_args.get("learnable_property", "object") - ), + value=self.learnable_properties.index(saved_args.get("learnable_property", "object")), max_height=4, scroll_exit=True, ) @@ -243,9 +239,7 @@ class textualInversionForm(npyscreen.FormMultiPageAction): def initializer_changed(self): placeholder = self.placeholder_token.value self.prompt_token.value = f"(Trigger by using <{placeholder}> in your prompts)" - self.train_data_dir.value = str( - config.root_dir / TRAINING_DATA / placeholder - ) + self.train_data_dir.value = str(config.root_dir / TRAINING_DATA / placeholder) self.output_dir.value = str(config.root_dir / TRAINING_DIR / placeholder) self.resume_from_checkpoint.value = Path(self.output_dir.value).exists() @@ -254,9 +248,7 @@ class textualInversionForm(npyscreen.FormMultiPageAction): self.parentApp.setNextForm(None) self.editing = False self.parentApp.ti_arguments = self.marshall_arguments() - npyscreen.notify( - "Launching textual inversion training. This will take a while..." - ) + npyscreen.notify("Launching textual inversion training. This will take a while...") else: self.editing = True @@ -266,13 +258,9 @@ class textualInversionForm(npyscreen.FormMultiPageAction): def validate_field_values(self) -> bool: bad_fields = [] if self.model.value is None: - bad_fields.append( - "Model Name must correspond to a known model in models.yaml" - ) + bad_fields.append("Model Name must correspond to a known model in models.yaml") if not re.match("^[a-zA-Z0-9.-]+$", self.placeholder_token.value): - bad_fields.append( - "Trigger term must only contain alphanumeric characters, the dot and hyphen" - ) + bad_fields.append("Trigger term must only contain alphanumeric characters, the dot and hyphen") if self.train_data_dir.value is None: bad_fields.append("Data Training Directory cannot be empty") if self.output_dir.value is None: @@ -288,16 +276,8 @@ class textualInversionForm(npyscreen.FormMultiPageAction): def get_model_names(self) -> Tuple[List[str], int]: conf = OmegaConf.load(config.root_dir / "configs/models.yaml") - model_names = [ - idx - for idx in sorted(list(conf.keys())) - if conf[idx].get("format", None) == "diffusers" - ] - defaults = [ - idx - for idx in range(len(model_names)) - if "default" in conf[model_names[idx]] - ] + model_names = [idx for idx in sorted(list(conf.keys())) if conf[idx].get("format", None) == "diffusers"] + defaults = [idx for idx in range(len(model_names)) if "default" in conf[model_names[idx]]] default = defaults[0] if len(defaults) > 0 else 0 return (model_names, default) @@ -310,9 +290,7 @@ class textualInversionForm(npyscreen.FormMultiPageAction): resolution=self.resolutions[self.resolution.value[0]], lr_scheduler=self.lr_schedulers[self.lr_scheduler.value[0]], mixed_precision=self.precisions[self.mixed_precision.value[0]], - learnable_property=self.learnable_properties[ - self.learnable_property.value[0] - ], + learnable_property=self.learnable_properties[self.learnable_property.value[0]], ) # all the strings and booleans @@ -374,9 +352,7 @@ def copy_to_embeddings_folder(args: dict): os.makedirs(destination, exist_ok=True) logger.info(f"Training completed. Copying learned_embeds.bin into {str(destination)}") shutil.copy(source, destination) - if ( - input("Delete training logs and intermediate checkpoints? [y] ") or "y" - ).startswith(("y", "Y")): + if (input("Delete training logs and intermediate checkpoints? [y] ") or "y").startswith(("y", "Y")): shutil.rmtree(Path(args["output_dir"])) else: logger.info(f'Keeping {args["output_dir"]}') @@ -423,7 +399,7 @@ def do_front_end(args: Namespace): save_args(args) try: - do_textual_inversion_training(InvokeAIAppConfig.get_config(),**args) + do_textual_inversion_training(InvokeAIAppConfig.get_config(), **args) copy_to_embeddings_folder(args) except Exception as e: logger.error("An exception occurred during training. The exception was:") @@ -434,19 +410,19 @@ def do_front_end(args: Namespace): def main(): global config - + args = parse_args() config = InvokeAIAppConfig.get_config() # change root if needed if args.root_dir: config.root = args.root_dir - + try: if args.front_end: do_front_end(args) else: - do_textual_inversion_training(config,**vars(args)) + do_textual_inversion_training(config, **vars(args)) except AssertionError as e: logger.error(e) sys.exit(-1) @@ -454,13 +430,9 @@ def main(): pass except (widget.NotEnoughSpaceForWidget, Exception) as e: if str(e).startswith("Height of 1 allocated"): - logger.error( - "You need to have at least one diffusers models defined in models.yaml in order to train" - ) + logger.error("You need to have at least one diffusers models defined in models.yaml in order to train") elif str(e).startswith("addwstr"): - logger.error( - "Not enough window space for the interface. Please make your window larger and try again." - ) + logger.error("Not enough window space for the interface. Please make your window larger and try again.") else: logger.error(e) sys.exit(-1) diff --git a/invokeai/frontend/web/__init__.py b/invokeai/frontend/web/__init__.py index 010129ece2..e9758b27b6 100644 --- a/invokeai/frontend/web/__init__.py +++ b/invokeai/frontend/web/__init__.py @@ -1,3 +1,3 @@ -''' +""" Initialization file for invokeai.frontend.web -''' +""" diff --git a/invokeai/frontend/web/dist/assets/App-06ea4e5e.js b/invokeai/frontend/web/dist/assets/App-06ea4e5e.js deleted file mode 100644 index a7597f8d24..0000000000 --- a/invokeai/frontend/web/dist/assets/App-06ea4e5e.js +++ /dev/null @@ -1,169 +0,0 @@ -import{t as Gg,r as mE,i as gE,a as yu,b as m4,S as g4,c as v4,d as y4,e as qg,f as b4,g as Kg,h as vE,j as yE,k as bE,l as xE,m as wE,n as SE,o as CE,p as _E,q as kE,s as f,u as rt,v as a,I as io,w as cr,x as Wn,y as He,z as Mt,A as bu,B as gt,C as xu,D as Ko,E as Jr,F as uo,G as wr,H as jE,J as PE,K as Ga,L as Kc,M as Li,N as sn,O as Ca,P as Gp,Q as ov,R as jl,T as sv,U as wu,_ as Xn,V as IE,W as z,X as x4,Y as w4,Z as Yb,$ as S4,a0 as qp,a1 as av,a2 as Zl,a3 as EE,a4 as OE,a5 as ME,a6 as RE,a7 as C4,a8 as _4,a9 as Kp,aa as Cf,ab as DE,ac as AE,ad as Vm,ae as Xb,af as TE,ag as k4,ah as j4,ai as ec,aj as Jb,ak as Zb,al as NE,am as $E,an as zE,ao as LE,ap as BE,aq as Um,ar as sl,as as Gm,at as FE,au as HE,av as WE,aw as iv,ax as Qp,ay as _f,az as VE,aA as P4,aB as I4,aC as UE,aD as Su,aE as lv,aF as GE,aG as qE,aH as KE,aI as QE,aJ as YE,aK as XE,aL as JE,aM as ex,aN as he,aO as ZE,aP as Gt,aQ as $e,aR as L,aS as zs,aT as mt,aU as Ke,aV as $,aW as Sr,aX as tc,aY as ue,aZ as E4,a_ as xo,a$ as O4,b0 as M4,b1 as nc,b2 as xs,b3 as cv,b4 as e8,b5 as t8,b6 as n8,b7 as al,b8 as Cn,b9 as kf,ba as Lc,bb as r8,bc as o8,bd as s8,be as a8,bf as Ve,bg as i8,bh as je,bi as Z,bj as tx,bk as qa,bl as Ka,bm as uv,bn as jf,bo as l8,bp as c8,bq as Yp,br as Xp,bs as dv,bt as Uo,bu as u8,bv as rc,bw as R4,bx as D4,by as d8,bz as f8,bA as p8,bB as h8,bC as fv,bD as Go,bE as ws,bF as gs,bG as Ct,bH as Pf,bI as m8,bJ as oc,bK as g8,bL as v8,bM as Id,bN as Ed,bO as Qc,bP as Yc,bQ as nx,bR as If,bS as rx,bT as Ef,bU as ox,bV as Qg,bW as sx,bX as Yg,bY as ax,bZ as Of,b_ as ix,b$ as zl,c0 as lx,c1 as Ll,c2 as cx,c3 as Mf,c4 as pv,c5 as hv,c6 as A4,c7 as mv,c8 as gv,c9 as y8,ca as b8,cb as Jp,cc as xl,cd as x8,ce as w8,cf as gf,cg as S8,ch as C8,ci as _8,cj as Rf,ck as T4,cl as k8,cm as N4,cn as $4,co as Ws,cp as ux,cq as j8,cr as Xg,cs as Vs,ct as P8,cu as z4,cv as dx,cw as I8,cx as E8,cy as O8,cz as pr,cA as L4,cB as M8,cC as R8,cD as D8,cE as A8,cF as vv,cG as Bn,cH as B4,cI as F4,cJ as T8,cK as fx,cL as N8,cM as $8,cN as z8,cO as L8,cP as B8,cQ as F8,cR as H4,cS as H8,cT as W8,cU as V8,cV as U8,cW as G8,cX as q8,cY as K8,cZ as W4,c_ as Q8,c$ as Y8,d0 as X8,d1 as J8,d2 as Z8,d3 as e7,d4 as t7,d5 as n7,d6 as r7,d7 as o7,d8 as s7,d9 as V4,da as Qo,db as a7,dc as i7,dd as l7,de as Zp,df as c7,dg as yv,dh as U4,di as u7,dj as d7,dk as f7,dl as Yo,dm as p7,dn as px,dp as hx,dq as Pl,dr as h7,ds as m7,dt as g7,du as v7,dv as y7,dw as b7,dx as x7,dy as w7,dz as S7,dA as C7,dB as _7,dC as k7,dD as bv,dE as xv,dF as j7,dG as mx,dH as P7,dI as gx,dJ as I7,dK as E7,dL as vx,dM as yx,dN as O7,dO as bx,dP as M7,dQ as R7,dR as D7,dS as A7,dT as T7,dU as N7,dV as G4,dW as q4,dX as K4,dY as Q4,dZ as Y4,d_ as Cu,d$ as xx,e0 as $7,e1 as z7,e2 as Vn,e3 as Ei,e4 as L7,e5 as X4,e6 as wx,e7 as B7,e8 as cs,e9 as F7,ea as H7,eb as J4,ec as Z4,ed as W7,ee as e3,ef as t3,eg as _u,eh as n3,ei as r3,ej as Sx,ek as V7,el as Cx,em as U7,en as o3,eo as G7,ep as eh,eq as _x,er as s3,es as q7,et as kx,eu as a3,ev as qo,ew as K7,ex as Q7,ey as i3,ez as jx,eA as Y7,eB as X7,eC as J7,eD as Z7,eE as eO,eF as tO,eG as nO,eH as rO,eI as oO,eJ as sO,eK as aO,eL as iO,eM as lO,eN as cO,eO as uO,eP as dO,eQ as fO,eR as pO,eS as hO,eT as mO,eU as gO,eV as Px,eW as vf,eX as vO,eY as Df,eZ as l3,e_ as ou,e$ as yO,f0 as bO,f1 as Hs,f2 as c3,f3 as wv,f4 as ku,f5 as xO,f6 as wO,f7 as SO,f8 as ma,f9 as u3,fa as CO,fb as _O,fc as d3,fd as kO,fe as jO,ff as PO,fg as IO,fh as EO,fi as OO,fj as MO,fk as RO,fl as DO,fm as AO,fn as Ix,fo as TO,fp as NO,fq as $O,fr as zO,fs as LO,ft as BO,fu as qm,fv as Bs,fw as Od,fx as Km,fy as Qm,fz as Md,fA as Ex,fB as Jg,fC as FO,fD as HO,fE as WO,fF as VO,fG as Af,fH as f3,fI as p3,fJ as UO,fK as GO,fL as h3,fM as m3,fN as g3,fO as v3,fP as y3,fQ as b3,fR as x3,fS as w3,fT as Il,fU as El,fV as S3,fW as C3,fX as qO,fY as _3,fZ as k3,f_ as j3,f$ as P3,g0 as I3,g1 as E3,g2 as Sv,g3 as KO,g4 as QO,g5 as Ox,g6 as YO,g7 as XO,g8 as Tf,g9 as Mx,ga as Rx,gb as Dx,gc as Ax,gd as JO,ge as ZO,gf as eM,gg as tM,gh as nM,gi as rM,gj as oM,gk as sM,gl as aM}from"./index-e2437518.js";import{m as Cv,u as O3,a as _a,b as iM,r as ze,f as lM,g as Tx,c as Tt,d as mr}from"./MantineProvider-b5842fc1.js";function cM(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 Nx=1/0,uM=17976931348623157e292;function Ym(e){if(!e)return e===0?e:0;if(e=Gg(e),e===Nx||e===-Nx){var t=e<0?-1:1;return t*uM}return e===e?e:0}var dM=function(){return mE.Date.now()};const Xm=dM;var fM="Expected a function",pM=Math.max,hM=Math.min;function mM(e,t,n){var r,o,s,i,u,d,p=0,h=!1,g=!1,v=!0;if(typeof e!="function")throw new TypeError(fM);t=Gg(t)||0,gE(n)&&(h=!!n.leading,g="maxWait"in n,s=g?pM(Gg(n.maxWait)||0,t):s,v="trailing"in n?!!n.trailing:v);function b(O){var R=r,D=o;return r=o=void 0,p=O,i=e.apply(D,R),i}function S(O){return p=O,u=setTimeout(_,t),h?b(O):i}function x(O){var R=O-d,D=O-p,T=t-R;return g?hM(T,s-D):T}function C(O){var R=O-d,D=O-p;return d===void 0||R>=t||R<0||g&&D>=s}function _(){var O=Xm();if(C(O))return k(O);u=setTimeout(_,x(O))}function k(O){return u=void 0,v&&r?b(O):(r=o=void 0,i)}function P(){u!==void 0&&clearTimeout(u),p=0,r=d=o=u=void 0}function I(){return u===void 0?i:k(Xm())}function E(){var O=Xm(),R=C(O);if(r=arguments,o=this,d=O,R){if(u===void 0)return S(d);if(g)return clearTimeout(u),u=setTimeout(_,t),b(d)}return u===void 0&&(u=setTimeout(_,t)),i}return E.cancel=P,E.flush=I,E}var gM=200;function vM(e,t,n,r){var o=-1,s=v4,i=!0,u=e.length,d=[],p=t.length;if(!u)return d;n&&(t=yu(t,m4(n))),r?(s=y4,i=!1):t.length>=gM&&(s=qg,i=!1,t=new g4(t));e:for(;++o=120&&h.length>=120)?new g4(i&&h):void 0}h=e[0];var g=-1,v=u[0];e:for(;++ga.jsx(io,{ref:d,viewBox:t,...o,...u,children:s.length?s:a.jsx("path",{fill:"currentColor",d:n})}));return i.displayName=r,i}var AM=Object.defineProperty,TM=(e,t,n)=>t in e?AM(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lr=(e,t,n)=>(TM(e,typeof t!="symbol"?t+"":t,n),n);function zx(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 NM=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function Lx(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function Bx(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var Zg=typeof window<"u"?f.useLayoutEffect:f.useEffect,Nf=e=>e,$M=class{constructor(){lr(this,"descendants",new Map),lr(this,"register",e=>{if(e!=null)return NM(e)?this.registerNode(e):t=>{this.registerNode(t,e)}}),lr(this,"unregister",e=>{this.descendants.delete(e);const t=zx(Array.from(this.descendants.keys()));this.assignIndex(t)}),lr(this,"destroy",()=>{this.descendants.clear()}),lr(this,"assignIndex",e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})}),lr(this,"count",()=>this.descendants.size),lr(this,"enabledCount",()=>this.enabledValues().length),lr(this,"values",()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index)),lr(this,"enabledValues",()=>this.values().filter(e=>!e.disabled)),lr(this,"item",e=>{if(this.count()!==0)return this.values()[e]}),lr(this,"enabledItem",e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]}),lr(this,"first",()=>this.item(0)),lr(this,"firstEnabled",()=>this.enabledItem(0)),lr(this,"last",()=>this.item(this.descendants.size-1)),lr(this,"lastEnabled",()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)}),lr(this,"indexOf",e=>{var t,n;return e&&(n=(t=this.descendants.get(e))==null?void 0:t.index)!=null?n:-1}),lr(this,"enabledIndexOf",e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e))),lr(this,"next",(e,t=!0)=>{const n=Lx(e,this.count(),t);return this.item(n)}),lr(this,"nextEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Lx(r,this.enabledCount(),t);return this.enabledItem(o)}),lr(this,"prev",(e,t=!0)=>{const n=Bx(e,this.count()-1,t);return this.item(n)}),lr(this,"prevEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Bx(r,this.enabledCount()-1,t);return this.enabledItem(o)}),lr(this,"registerNode",(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=zx(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 zM(){const e=f.useRef(new $M);return Zg(()=>()=>e.current.destroy()),e.current}var[LM,M3]=cr({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function BM(e){const t=M3(),[n,r]=f.useState(-1),o=f.useRef(null);Zg(()=>()=>{o.current&&t.unregister(o.current)},[]),Zg(()=>{if(!o.current)return;const i=Number(o.current.dataset.index);n!=i&&!Number.isNaN(i)&&r(i)});const s=Nf(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(o.current),register:Wn(s,o)}}function kv(){return[Nf(LM),()=>Nf(M3()),()=>zM(),o=>BM(o)]}var[FM,th]=cr({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[HM,jv]=cr({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[WM,_se,VM,UM]=kv(),Bc=rt(function(t,n){const{getButtonProps:r}=jv(),o=r(t,n),i={display:"flex",alignItems:"center",width:"100%",outline:0,...th().button};return a.jsx(He.button,{...o,className:Mt("chakra-accordion__button",t.className),__css:i})});Bc.displayName="AccordionButton";function GM(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:o,allowToggle:s,...i}=e;QM(e),YM(e);const u=VM(),[d,p]=f.useState(-1);f.useEffect(()=>()=>{p(-1)},[]);const[h,g]=bu({value:r,defaultValue(){return o?n??[]:n??-1},onChange:t});return{index:h,setIndex:g,htmlProps:i,getAccordionItemProps:b=>{let S=!1;return b!==null&&(S=Array.isArray(h)?h.includes(b):h===b),{isOpen:S,onChange:C=>{if(b!==null)if(o&&Array.isArray(h)){const _=C?h.concat(b):h.filter(k=>k!==b);g(_)}else C?g(b):s&&g(-1)}}},focusedIndex:d,setFocusedIndex:p,descendants:u}}var[qM,Pv]=cr({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function KM(e){const{isDisabled:t,isFocusable:n,id:r,...o}=e,{getAccordionItemProps:s,setFocusedIndex:i}=Pv(),u=f.useRef(null),d=f.useId(),p=r??d,h=`accordion-button-${p}`,g=`accordion-panel-${p}`;XM(e);const{register:v,index:b,descendants:S}=UM({disabled:t&&!n}),{isOpen:x,onChange:C}=s(b===-1?null:b);JM({isOpen:x,isDisabled:t});const _=()=>{C==null||C(!0)},k=()=>{C==null||C(!1)},P=f.useCallback(()=>{C==null||C(!x),i(b)},[b,i,x,C]),I=f.useCallback(D=>{const B={ArrowDown:()=>{const W=S.nextEnabled(b);W==null||W.node.focus()},ArrowUp:()=>{const W=S.prevEnabled(b);W==null||W.node.focus()},Home:()=>{const W=S.firstEnabled();W==null||W.node.focus()},End:()=>{const W=S.lastEnabled();W==null||W.node.focus()}}[D.key];B&&(D.preventDefault(),B(D))},[S,b]),E=f.useCallback(()=>{i(b)},[i,b]),O=f.useCallback(function(T={},B=null){return{...T,type:"button",ref:Wn(v,u,B),id:h,disabled:!!t,"aria-expanded":!!x,"aria-controls":g,onClick:gt(T.onClick,P),onFocus:gt(T.onFocus,E),onKeyDown:gt(T.onKeyDown,I)}},[h,t,x,P,E,I,g,v]),R=f.useCallback(function(T={},B=null){return{...T,ref:B,role:"region",id:g,"aria-labelledby":h,hidden:!x}},[h,x,g]);return{isOpen:x,isDisabled:t,isFocusable:n,onOpen:_,onClose:k,getButtonProps:O,getPanelProps:R,htmlProps:o}}function QM(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;xu({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function YM(e){xu({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 XM(e){xu({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 JM(e){xu({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function Fc(e){const{isOpen:t,isDisabled:n}=jv(),{reduceMotion:r}=Pv(),o=Mt("chakra-accordion__icon",e.className),s=th(),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(io,{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"})})}Fc.displayName="AccordionIcon";var Hc=rt(function(t,n){const{children:r,className:o}=t,{htmlProps:s,...i}=KM(t),d={...th().container,overflowAnchor:"none"},p=f.useMemo(()=>i,[i]);return a.jsx(HM,{value:p,children:a.jsx(He.div,{ref:n,...s,className:Mt("chakra-accordion__item",o),__css:d,children:typeof r=="function"?r({isExpanded:!!i.isOpen,isDisabled:!!i.isDisabled}):r})})});Hc.displayName="AccordionItem";var wi={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},Oc={scale:{enter:{scale:1},exit:{scale:.95}},fade:{enter:{opacity:1},exit:{opacity:0}},pushLeft:{enter:{x:"100%"},exit:{x:"-30%"}},pushRight:{enter:{x:"-100%"},exit:{x:"30%"}},pushUp:{enter:{y:"100%"},exit:{y:"-30%"}},pushDown:{enter:{y:"-100%"},exit:{y:"30%"}},slideLeft:{position:{left:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"-100%",y:0}},slideRight:{position:{right:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"100%",y:0}},slideUp:{position:{top:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"-100%"}},slideDown:{position:{bottom:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"100%"}}};function e0(e){var t;switch((t=e==null?void 0:e.direction)!=null?t:"right"){case"right":return Oc.slideRight;case"left":return Oc.slideLeft;case"bottom":return Oc.slideDown;case"top":return Oc.slideUp;default:return Oc.slideRight}}var Ci={enter:{duration:.2,ease:wi.easeOut},exit:{duration:.1,ease:wi.easeIn}},us={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})},ZM=e=>e!=null&&parseInt(e.toString(),10)>0,Fx={exit:{height:{duration:.2,ease:wi.ease},opacity:{duration:.3,ease:wi.ease}},enter:{height:{duration:.3,ease:wi.ease},opacity:{duration:.4,ease:wi.ease}}},eR={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:ZM(t)?1:0},height:t,transitionEnd:r==null?void 0:r.exit,transition:(s=n==null?void 0:n.exit)!=null?s:us.exit(Fx.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:us.enter(Fx.enter,o)}}},nh=f.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:o=!0,startingHeight:s=0,endingHeight:i="auto",style:u,className:d,transition:p,transitionEnd:h,...g}=e,[v,b]=f.useState(!1);f.useEffect(()=>{const k=setTimeout(()=>{b(!0)});return()=>clearTimeout(k)},[]),xu({condition:Number(s)>0&&!!r,message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const S=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:S?"block":"none"}}},C=r?n:!0,_=n||r?"enter":"exit";return a.jsx(Ko,{initial:!1,custom:x,children:C&&a.jsx(Jr.div,{ref:t,...g,className:Mt("chakra-collapse",d),style:{overflow:"hidden",display:"block",...u},custom:x,variants:eR,initial:r?"exit":!1,animate:_,exit:"exit"})})});nh.displayName="Collapse";var tR={enter:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:1,transition:(r=e==null?void 0:e.enter)!=null?r:us.enter(Ci.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:us.exit(Ci.exit,n),transitionEnd:t==null?void 0:t.exit}}},R3={initial:"exit",animate:"enter",exit:"exit",variants:tR},nR=f.forwardRef(function(t,n){const{unmountOnExit:r,in:o,className:s,transition:i,transitionEnd:u,delay:d,...p}=t,h=o||r?"enter":"exit",g=r?o&&r:!0,v={transition:i,transitionEnd:u,delay:d};return a.jsx(Ko,{custom:v,children:g&&a.jsx(Jr.div,{ref:n,className:Mt("chakra-fade",s),custom:v,...R3,animate:h,...p})})});nR.displayName="Fade";var rR={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:us.exit(Ci.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:us.enter(Ci.enter,n),transitionEnd:e==null?void 0:e.enter}}},D3={initial:"exit",animate:"enter",exit:"exit",variants:rR},oR=f.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,initialScale:i=.95,className:u,transition:d,transitionEnd:p,delay:h,...g}=t,v=r?o&&r:!0,b=o||r?"enter":"exit",S={initialScale:i,reverse:s,transition:d,transitionEnd:p,delay:h};return a.jsx(Ko,{custom:S,children:v&&a.jsx(Jr.div,{ref:n,className:Mt("chakra-offset-slide",u),...D3,animate:b,custom:S,...g})})});oR.displayName="ScaleFade";var sR={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:us.exit(Ci.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:us.enter(Ci.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 u={x:t,y:e};return{opacity:0,transition:(i=n==null?void 0:n.exit)!=null?i:us.exit(Ci.exit,s),...o?{...u,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{...u,...r==null?void 0:r.exit}}}}},t0={initial:"initial",animate:"enter",exit:"exit",variants:sR},aR=f.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,className:i,offsetX:u=0,offsetY:d=8,transition:p,transitionEnd:h,delay:g,...v}=t,b=r?o&&r:!0,S=o||r?"enter":"exit",x={offsetX:u,offsetY:d,reverse:s,transition:p,transitionEnd:h,delay:g};return a.jsx(Ko,{custom:x,children:b&&a.jsx(Jr.div,{ref:n,className:Mt("chakra-offset-slide",i),custom:x,...t0,animate:S,...v})})});aR.displayName="SlideFade";var Hx={exit:{duration:.15,ease:wi.easeInOut},enter:{type:"spring",damping:25,stiffness:180}},iR={exit:({direction:e,transition:t,transitionEnd:n,delay:r})=>{var o;const{exit:s}=e0({direction:e});return{...s,transition:(o=t==null?void 0:t.exit)!=null?o:us.exit(Hx.exit,r),transitionEnd:n==null?void 0:n.exit}},enter:({direction:e,transitionEnd:t,transition:n,delay:r})=>{var o;const{enter:s}=e0({direction:e});return{...s,transition:(o=n==null?void 0:n.enter)!=null?o:us.enter(Hx.enter,r),transitionEnd:t==null?void 0:t.enter}}},A3=f.forwardRef(function(t,n){const{direction:r="right",style:o,unmountOnExit:s,in:i,className:u,transition:d,transitionEnd:p,delay:h,motionProps:g,...v}=t,b=e0({direction:r}),S=Object.assign({position:"fixed"},b.position,o),x=s?i&&s:!0,C=i||s?"enter":"exit",_={transitionEnd:p,transition:d,direction:r,delay:h};return a.jsx(Ko,{custom:_,children:x&&a.jsx(Jr.div,{...v,ref:n,initial:"exit",className:Mt("chakra-slide",u),animate:C,exit:"exit",custom:_,variants:iR,style:S,...g})})});A3.displayName="Slide";var Wc=rt(function(t,n){const{className:r,motionProps:o,...s}=t,{reduceMotion:i}=Pv(),{getPanelProps:u,isOpen:d}=jv(),p=u(s,n),h=Mt("chakra-accordion__panel",r),g=th();i||delete p.hidden;const v=a.jsx(He.div,{...p,__css:g.panel,className:h});return i?v:a.jsx(nh,{in:d,...o,children:v})});Wc.displayName="AccordionPanel";var T3=rt(function({children:t,reduceMotion:n,...r},o){const s=uo("Accordion",r),i=wr(r),{htmlProps:u,descendants:d,...p}=GM(i),h=f.useMemo(()=>({...p,reduceMotion:!!n}),[p,n]);return a.jsx(WM,{value:d,children:a.jsx(qM,{value:h,children:a.jsx(FM,{value:s,children:a.jsx(He.div,{ref:o,...u,className:Mt("chakra-accordion",r.className),__css:s.root,children:t})})})})});T3.displayName="Accordion";var lR={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}}},cR={horizontal:e=>({"& > *:not(style) ~ *:not(style)":{marginStart:e}}),vertical:e=>({"& > *:not(style) ~ *:not(style)":{marginTop:e}})},Yn=rt(function(t,n){const{size:r,colorScheme:o,variant:s,className:i,spacing:u="0.5rem",isAttached:d,isDisabled:p,orientation:h="horizontal",...g}=t,v=Mt("chakra-button__group",i),b=f.useMemo(()=>({size:r,colorScheme:o,variant:s,isDisabled:p}),[r,o,s,p]);let S={display:"inline-flex",...d?lR[h]:cR[h](u)};const x=h==="vertical";return a.jsx(jE,{value:b,children:a.jsx(He.div,{ref:n,role:"group",__css:S,className:v,"data-attached":d?"":void 0,"data-orientation":h,flexDir:x?"column":void 0,...g})})});Yn.displayName="ButtonGroup";var[kse,uR]=cr({name:"CheckboxGroupContext",strict:!1});function dR(e){const[t,n]=f.useState(e),[r,o]=f.useState(!1);return e!==t&&(o(!0),n(e)),r}function fR(e){return a.jsx(He.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 pR(e){return a.jsx(He.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 hR(e){const{isIndeterminate:t,isChecked:n,...r}=e,o=t?pR:fR;return n||t?a.jsx(He.div,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:a.jsx(o,{...r})}):null}var Iv={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},N3=He("span",{baseStyle:Iv});N3.displayName="VisuallyHidden";var mR=He("input",{baseStyle:Iv});mR.displayName="VisuallyHiddenInput";var Wx=!1,Pu=null,Oi=!1,n0=!1,r0=new Set;function Ev(e,t){r0.forEach(n=>n(e,t))}var gR=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function vR(e){return!(e.metaKey||!gR&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function Vx(e){Oi=!0,vR(e)&&(Pu="keyboard",Ev("keyboard",e))}function ll(e){if(Pu="pointer",e.type==="mousedown"||e.type==="pointerdown"){Oi=!0;const t=e.composedPath?e.composedPath()[0]:e.target;let n=!1;try{n=t.matches(":focus-visible")}catch{}if(n)return;Ev("pointer",e)}}function yR(e){return e.mozInputSource===0&&e.isTrusted?!0:e.detail===0&&!e.pointerType}function bR(e){yR(e)&&(Oi=!0,Pu="virtual")}function xR(e){e.target===window||e.target===document||(!Oi&&!n0&&(Pu="virtual",Ev("virtual",e)),Oi=!1,n0=!1)}function wR(){Oi=!1,n0=!0}function Ux(){return Pu!=="pointer"}function SR(){if(typeof window>"u"||Wx)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){Oi=!0,e.apply(this,n)},document.addEventListener("keydown",Vx,!0),document.addEventListener("keyup",Vx,!0),document.addEventListener("click",bR,!0),window.addEventListener("focus",xR,!0),window.addEventListener("blur",wR,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",ll,!0),document.addEventListener("pointermove",ll,!0),document.addEventListener("pointerup",ll,!0)):(document.addEventListener("mousedown",ll,!0),document.addEventListener("mousemove",ll,!0),document.addEventListener("mouseup",ll,!0)),Wx=!0}function $3(e){SR(),e(Ux());const t=()=>e(Ux());return r0.add(t),()=>{r0.delete(t)}}function CR(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function z3(e={}){const t=PE(e),{isDisabled:n,isReadOnly:r,isRequired:o,isInvalid:s,id:i,onBlur:u,onFocus:d,"aria-describedby":p}=t,{defaultChecked:h,isChecked:g,isFocusable:v,onChange:b,isIndeterminate:S,name:x,value:C,tabIndex:_=void 0,"aria-label":k,"aria-labelledby":P,"aria-invalid":I,...E}=e,O=CR(E,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),R=Ga(b),D=Ga(u),T=Ga(d),[B,W]=f.useState(!1),[J,F]=f.useState(!1),[N,G]=f.useState(!1),[K,M]=f.useState(!1);f.useEffect(()=>$3(W),[]);const U=f.useRef(null),[V,ee]=f.useState(!0),[ie,xe]=f.useState(!!h),me=g!==void 0,ae=me?g:ie,te=f.useCallback(ge=>{if(r||n){ge.preventDefault();return}me||xe(ae?ge.target.checked:S?!0:ge.target.checked),R==null||R(ge)},[r,n,ae,me,S,R]);Kc(()=>{U.current&&(U.current.indeterminate=!!S)},[S]),Li(()=>{n&&F(!1)},[n,F]),Kc(()=>{const ge=U.current;ge!=null&&ge.form&&(ge.form.onreset=()=>{xe(!!h)})},[]);const H=n&&!v,re=f.useCallback(ge=>{ge.key===" "&&M(!0)},[M]),pe=f.useCallback(ge=>{ge.key===" "&&M(!1)},[M]);Kc(()=>{if(!U.current)return;U.current.checked!==ae&&xe(U.current.checked)},[U.current]);const ne=f.useCallback((ge={},_e=null)=>{const We=Le=>{J&&Le.preventDefault(),M(!0)};return{...ge,ref:_e,"data-active":sn(K),"data-hover":sn(N),"data-checked":sn(ae),"data-focus":sn(J),"data-focus-visible":sn(J&&B),"data-indeterminate":sn(S),"data-disabled":sn(n),"data-invalid":sn(s),"data-readonly":sn(r),"aria-hidden":!0,onMouseDown:gt(ge.onMouseDown,We),onMouseUp:gt(ge.onMouseUp,()=>M(!1)),onMouseEnter:gt(ge.onMouseEnter,()=>G(!0)),onMouseLeave:gt(ge.onMouseLeave,()=>G(!1))}},[K,ae,n,J,B,N,S,s,r]),ve=f.useCallback((ge={},_e=null)=>({...O,...ge,ref:Wn(_e,We=>{We&&ee(We.tagName==="LABEL")}),onClick:gt(ge.onClick,()=>{var We;V||((We=U.current)==null||We.click(),requestAnimationFrame(()=>{var Le;(Le=U.current)==null||Le.focus({preventScroll:!0})}))}),"data-disabled":sn(n),"data-checked":sn(ae),"data-invalid":sn(s)}),[O,n,ae,s,V]),de=f.useCallback((ge={},_e=null)=>({...ge,ref:Wn(U,_e),type:"checkbox",name:x,value:C,id:i,tabIndex:_,onChange:gt(ge.onChange,te),onBlur:gt(ge.onBlur,D,()=>F(!1)),onFocus:gt(ge.onFocus,T,()=>F(!0)),onKeyDown:gt(ge.onKeyDown,re),onKeyUp:gt(ge.onKeyUp,pe),required:o,checked:ae,disabled:H,readOnly:r,"aria-label":k,"aria-labelledby":P,"aria-invalid":I?!!I:s,"aria-describedby":p,"aria-disabled":n,style:Iv}),[x,C,i,te,D,T,re,pe,o,ae,H,r,k,P,I,s,p,n,_]),Ce=f.useCallback((ge={},_e=null)=>({...ge,ref:_e,onMouseDown:gt(ge.onMouseDown,_R),"data-disabled":sn(n),"data-checked":sn(ae),"data-invalid":sn(s)}),[ae,n,s]);return{state:{isInvalid:s,isFocused:J,isChecked:ae,isActive:K,isHovered:N,isIndeterminate:S,isDisabled:n,isReadOnly:r,isRequired:o},getRootProps:ve,getCheckboxProps:ne,getInputProps:de,getLabelProps:Ce,htmlProps:O}}function _R(e){e.preventDefault(),e.stopPropagation()}var kR={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},jR={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},PR=Ca({from:{opacity:0,strokeDashoffset:16,transform:"scale(0.95)"},to:{opacity:1,strokeDashoffset:0,transform:"scale(1)"}}),IR=Ca({from:{opacity:0},to:{opacity:1}}),ER=Ca({from:{transform:"scaleX(0.65)"},to:{transform:"scaleX(1)"}}),L3=rt(function(t,n){const r=uR(),o={...r,...t},s=uo("Checkbox",o),i=wr(t),{spacing:u="0.5rem",className:d,children:p,iconColor:h,iconSize:g,icon:v=a.jsx(hR,{}),isChecked:b,isDisabled:S=r==null?void 0:r.isDisabled,onChange:x,inputProps:C,..._}=i;let k=b;r!=null&&r.value&&i.value&&(k=r.value.includes(i.value));let P=x;r!=null&&r.onChange&&i.value&&(P=Gp(r.onChange,x));const{state:I,getInputProps:E,getCheckboxProps:O,getLabelProps:R,getRootProps:D}=z3({..._,isDisabled:S,isChecked:k,onChange:P}),T=dR(I.isChecked),B=f.useMemo(()=>({animation:T?I.isIndeterminate?`${IR} 20ms linear, ${ER} 200ms linear`:`${PR} 200ms linear`:void 0,fontSize:g,color:h,...s.icon}),[h,g,T,I.isIndeterminate,s.icon]),W=f.cloneElement(v,{__css:B,isIndeterminate:I.isIndeterminate,isChecked:I.isChecked});return a.jsxs(He.label,{__css:{...jR,...s.container},className:Mt("chakra-checkbox",d),...D(),children:[a.jsx("input",{className:"chakra-checkbox__input",...E(C,n)}),a.jsx(He.span,{__css:{...kR,...s.control},className:"chakra-checkbox__control",...O(),children:W}),p&&a.jsx(He.span,{className:"chakra-checkbox__label",...R(),__css:{marginStart:u,...s.label},children:p})]})});L3.displayName="Checkbox";var[OR,B3]=cr({name:"EditableStylesContext",errorMessage:`useEditableStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[MR,F3]=cr({name:"EditableContext",errorMessage:"useEditableContext: context is undefined. Seems you forgot to wrap the editable components in ``"}),H3={fontSize:"inherit",fontWeight:"inherit",textAlign:"inherit",bg:"transparent"},W3=rt(function(t,n){const{getInputProps:r}=F3(),o=B3(),s=r(t,n),i=Mt("chakra-editable__input",t.className);return a.jsx(He.input,{...s,__css:{outline:0,...H3,...o.input},className:i})});W3.displayName="EditableInput";var V3=rt(function(t,n){const{getPreviewProps:r}=F3(),o=B3(),s=r(t,n),i=Mt("chakra-editable__preview",t.className);return a.jsx(He.span,{...s,__css:{cursor:"text",display:"inline-block",...H3,...o.preview},className:i})});V3.displayName="EditablePreview";function RR(e){return"current"in e}var U3=()=>typeof window<"u";function DR(){var e;const t=navigator.userAgentData;return(e=t==null?void 0:t.platform)!=null?e:navigator.platform}var AR=e=>U3()&&e.test(navigator.vendor),TR=e=>U3()&&e.test(DR()),NR=()=>TR(/mac|iphone|ipad|ipod/i),$R=()=>NR()&&AR(/apple/i);function G3(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};ov(o,"pointerdown",s=>{if(!$R()||!r)return;const i=s.target,d=(n??[t]).some(p=>{const h=RR(p)?p.current:p;return(h==null?void 0:h.contains(i))||h===i});o().activeElement!==i&&d&&(s.preventDefault(),i.focus())})}function Gx(e,t){return e?e===t||e.contains(t):!1}function zR(e={}){const{onChange:t,onCancel:n,onSubmit:r,onBlur:o,value:s,isDisabled:i,defaultValue:u,startWithEditView:d,isPreviewFocusable:p=!0,submitOnBlur:h=!0,selectAllOnFocus:g=!0,placeholder:v,onEdit:b,finalFocusRef:S,...x}=e,C=Ga(b),_=!!(d&&!i),[k,P]=f.useState(_),[I,E]=bu({defaultValue:u||"",value:s,onChange:t}),[O,R]=f.useState(I),D=f.useRef(null),T=f.useRef(null),B=f.useRef(null),W=f.useRef(null),J=f.useRef(null);G3({ref:D,enabled:k,elements:[W,J]});const F=!k&&!i;Kc(()=>{var ne,ve;k&&((ne=D.current)==null||ne.focus(),g&&((ve=D.current)==null||ve.select()))},[]),Li(()=>{var ne,ve,de,Ce;if(!k){S?(ne=S.current)==null||ne.focus():(ve=B.current)==null||ve.focus();return}(de=D.current)==null||de.focus(),g&&((Ce=D.current)==null||Ce.select()),C==null||C()},[k,C,g]);const N=f.useCallback(()=>{F&&P(!0)},[F]),G=f.useCallback(()=>{R(I)},[I]),K=f.useCallback(()=>{P(!1),E(O),n==null||n(O),o==null||o(O)},[n,o,E,O]),M=f.useCallback(()=>{P(!1),R(I),r==null||r(I),o==null||o(O)},[I,r,o,O]);f.useEffect(()=>{if(k)return;const ne=D.current;(ne==null?void 0:ne.ownerDocument.activeElement)===ne&&(ne==null||ne.blur())},[k]);const U=f.useCallback(ne=>{E(ne.currentTarget.value)},[E]),V=f.useCallback(ne=>{const ve=ne.key,Ce={Escape:K,Enter:Re=>{!Re.shiftKey&&!Re.metaKey&&M()}}[ve];Ce&&(ne.preventDefault(),Ce(ne))},[K,M]),ee=f.useCallback(ne=>{const ve=ne.key,Ce={Escape:K}[ve];Ce&&(ne.preventDefault(),Ce(ne))},[K]),ie=I.length===0,xe=f.useCallback(ne=>{var ve;if(!k)return;const de=ne.currentTarget.ownerDocument,Ce=(ve=ne.relatedTarget)!=null?ve:de.activeElement,Re=Gx(W.current,Ce),ge=Gx(J.current,Ce);!Re&&!ge&&(h?M():K())},[h,M,K,k]),me=f.useCallback((ne={},ve=null)=>{const de=F&&p?0:void 0;return{...ne,ref:Wn(ve,T),children:ie?v:I,hidden:k,"aria-disabled":jl(i),tabIndex:de,onFocus:gt(ne.onFocus,N,G)}},[i,k,F,p,ie,N,G,v,I]),ae=f.useCallback((ne={},ve=null)=>({...ne,hidden:!k,placeholder:v,ref:Wn(ve,D),disabled:i,"aria-disabled":jl(i),value:I,onBlur:gt(ne.onBlur,xe),onChange:gt(ne.onChange,U),onKeyDown:gt(ne.onKeyDown,V),onFocus:gt(ne.onFocus,G)}),[i,k,xe,U,V,G,v,I]),te=f.useCallback((ne={},ve=null)=>({...ne,hidden:!k,placeholder:v,ref:Wn(ve,D),disabled:i,"aria-disabled":jl(i),value:I,onBlur:gt(ne.onBlur,xe),onChange:gt(ne.onChange,U),onKeyDown:gt(ne.onKeyDown,ee),onFocus:gt(ne.onFocus,G)}),[i,k,xe,U,ee,G,v,I]),H=f.useCallback((ne={},ve=null)=>({"aria-label":"Edit",...ne,type:"button",onClick:gt(ne.onClick,N),ref:Wn(ve,B),disabled:i}),[N,i]),re=f.useCallback((ne={},ve=null)=>({...ne,"aria-label":"Submit",ref:Wn(J,ve),type:"button",onClick:gt(ne.onClick,M),disabled:i}),[M,i]),pe=f.useCallback((ne={},ve=null)=>({"aria-label":"Cancel",id:"cancel",...ne,ref:Wn(W,ve),type:"button",onClick:gt(ne.onClick,K),disabled:i}),[K,i]);return{isEditing:k,isDisabled:i,isValueEmpty:ie,value:I,onEdit:N,onCancel:K,onSubmit:M,getPreviewProps:me,getInputProps:ae,getTextareaProps:te,getEditButtonProps:H,getSubmitButtonProps:re,getCancelButtonProps:pe,htmlProps:x}}var q3=rt(function(t,n){const r=uo("Editable",t),o=wr(t),{htmlProps:s,...i}=zR(o),{isEditing:u,onSubmit:d,onCancel:p,onEdit:h}=i,g=Mt("chakra-editable",t.className),v=sv(t.children,{isEditing:u,onSubmit:d,onCancel:p,onEdit:h});return a.jsx(MR,{value:i,children:a.jsx(OR,{value:r,children:a.jsx(He.div,{ref:n,...s,className:g,children:v})})})});q3.displayName="Editable";var K3={exports:{}},LR="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",BR=LR,FR=BR;function Q3(){}function Y3(){}Y3.resetWarningCache=Q3;var HR=function(){function e(r,o,s,i,u,d){if(d!==FR){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:Y3,resetWarningCache:Q3};return n.PropTypes=n,n};K3.exports=HR();var WR=K3.exports;const Dn=wu(WR);var o0="data-focus-lock",X3="data-focus-lock-disabled",VR="data-no-focus-lock",UR="data-autofocus-inside",GR="data-no-autofocus";function qR(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function KR(e,t){var n=f.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 J3(e,t){return KR(t||null,function(n){return e.forEach(function(r){return qR(r,n)})})}var Jm={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"},Ls=function(){return Ls=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(u){i={error:u}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(i)throw i.error}}return s}function s0(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,s;r=0}).sort(l9)},c9=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],Dv=c9.join(","),u9="".concat(Dv,", [data-focus-guard]"),g6=function(e,t){return Ks((e.shadowRoot||e).children).reduce(function(n,r){return n.concat(r.matches(t?u9:Dv)?[r]:[],g6(r))},[])},d9=function(e,t){var n;return e instanceof HTMLIFrameElement&&(!((n=e.contentDocument)===null||n===void 0)&&n.body)?rh([e.contentDocument.body],t):[e]},rh=function(e,t){return e.reduce(function(n,r){var o,s=g6(r,t),i=(o=[]).concat.apply(o,s.map(function(u){return d9(u,t)}));return n.concat(i,r.parentNode?Ks(r.parentNode.querySelectorAll(Dv)).filter(function(u){return u===r}):[])},[])},f9=function(e){var t=e.querySelectorAll("[".concat(UR,"]"));return Ks(t).map(function(n){return rh([n])}).reduce(function(n,r){return n.concat(r)},[])},Av=function(e,t){return Ks(e).filter(function(n){return u6(t,n)}).filter(function(n){return s9(n)})},Kx=function(e,t){return t===void 0&&(t=new Map),Ks(e).filter(function(n){return d6(t,n)})},i0=function(e,t,n){return m6(Av(rh(e,n),t),!0,n)},Qx=function(e,t){return m6(Av(rh(e),t),!1)},p9=function(e,t){return Av(f9(e),t)},Ol=function(e,t){return e.shadowRoot?Ol(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:Ks(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?Ol(o,t):!1}return Ol(n,t)})},h9=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,u){return!t.has(u)})},v6=function(e){return e.parentNode?v6(e.parentNode):e},Tv=function(e){var t=$f(e);return t.filter(Boolean).reduce(function(n,r){var o=r.getAttribute(o0);return n.push.apply(n,o?h9(Ks(v6(r).querySelectorAll("[".concat(o0,'="').concat(o,'"]:not([').concat(X3,'="disabled"])')))):[r]),n},[])},m9=function(e){try{return e()}catch{return}},su=function(e){if(e===void 0&&(e=document),!(!e||!e.activeElement)){var t=e.activeElement;return t.shadowRoot?su(t.shadowRoot):t instanceof HTMLIFrameElement&&m9(function(){return t.contentWindow.document})?su(t.contentWindow.document):t}},g9=function(e,t){return e===t},v9=function(e,t){return!!Ks(e.querySelectorAll("iframe")).some(function(n){return g9(n,t)})},y6=function(e,t){return t===void 0&&(t=su(i6(e).ownerDocument)),!t||t.dataset&&t.dataset.focusGuard?!1:Tv(e).some(function(n){return Ol(n,t)||v9(n,t)})},y9=function(e){e===void 0&&(e=document);var t=su(e);return t?Ks(e.querySelectorAll("[".concat(VR,"]"))).some(function(n){return Ol(n,t)}):!1},b9=function(e,t){return t.filter(h6).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},Nv=function(e,t){return h6(e)&&e.name?b9(e,t):e},x9=function(e){var t=new Set;return e.forEach(function(n){return t.add(Nv(n,e))}),e.filter(function(n){return t.has(n)})},Yx=function(e){return e[0]&&e.length>1?Nv(e[0],e):e[0]},Xx=function(e,t){return e.length>1?e.indexOf(Nv(e[t],e)):t},b6="NEW_FOCUS",w9=function(e,t,n,r){var o=e.length,s=e[0],i=e[o-1],u=Rv(n);if(!(n&&e.indexOf(n)>=0)){var d=n!==void 0?t.indexOf(n):-1,p=r?t.indexOf(r):d,h=r?e.indexOf(r):-1,g=d-p,v=t.indexOf(s),b=t.indexOf(i),S=x9(t),x=n!==void 0?S.indexOf(n):-1,C=x-(r?S.indexOf(r):d),_=Xx(e,0),k=Xx(e,o-1);if(d===-1||h===-1)return b6;if(!g&&h>=0)return h;if(d<=v&&u&&Math.abs(g)>1)return k;if(d>=b&&u&&Math.abs(g)>1)return _;if(g&&Math.abs(C)>1)return h;if(d<=v)return k;if(d>b)return _;if(g)return Math.abs(g)>1?h:(o+h+g)%o}},S9=function(e){return function(t){var n,r=(n=f6(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},C9=function(e,t,n){var r=e.map(function(s){var i=s.node;return i}),o=Kx(r.filter(S9(n)));return o&&o.length?Yx(o):Yx(Kx(t))},l0=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&l0(e.parentNode.host||e.parentNode,t),t},Zm=function(e,t){for(var n=l0(e),r=l0(t),o=0;o=0)return s}return!1},x6=function(e,t,n){var r=$f(e),o=$f(t),s=r[0],i=!1;return o.filter(Boolean).forEach(function(u){i=Zm(i||u,u)||i,n.filter(Boolean).forEach(function(d){var p=Zm(s,d);p&&(!i||Ol(p,i)?i=p:i=Zm(p,i))})}),i},_9=function(e,t){return e.reduce(function(n,r){return n.concat(p9(r,t))},[])},k9=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(i9)},j9=function(e,t){var n=su($f(e).length>0?document:i6(e).ownerDocument),r=Tv(e).filter(zf),o=x6(n||e,e,r),s=new Map,i=Qx(r,s),u=i0(r,s).filter(function(b){var S=b.node;return zf(S)});if(!(!u[0]&&(u=i,!u[0]))){var d=Qx([o],s).map(function(b){var S=b.node;return S}),p=k9(d,u),h=p.map(function(b){var S=b.node;return S}),g=w9(h,d,n,t);if(g===b6){var v=C9(i,h,_9(r,s));if(v)return{node:v};console.warn("focus-lock: cannot find any node to move focus into");return}return g===void 0?g:p[g]}},P9=function(e){var t=Tv(e).filter(zf),n=x6(e,e,t),r=new Map,o=i0([n],r,!0),s=i0(t,r).filter(function(i){var u=i.node;return zf(u)}).map(function(i){var u=i.node;return u});return o.map(function(i){var u=i.node,d=i.index;return{node:u,index:d,lockItem:s.indexOf(u)>=0,guard:Rv(u)}})},I9=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},eg=0,tg=!1,w6=function(e,t,n){n===void 0&&(n={});var r=j9(e,t);if(!tg&&r){if(eg>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),tg=!0,setTimeout(function(){tg=!1},1);return}eg++,I9(r.node,n.focusOptions),eg--}};function $v(e){setTimeout(e,1)}var E9=function(){return document&&document.activeElement===document.body},O9=function(){return E9()||y9()},Ml=null,wl=null,Rl=null,au=!1,M9=function(){return!0},R9=function(t){return(Ml.whiteList||M9)(t)},D9=function(t,n){Rl={observerNode:t,portaledElement:n}},A9=function(t){return Rl&&Rl.portaledElement===t};function Jx(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 T9=function(t){return t&&"current"in t?t.current:t},N9=function(t){return t?!!au:au==="meanwhile"},$9=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},z9=function(t,n){return n.some(function(r){return $9(t,r,r)})},Lf=function(){var t=!1;if(Ml){var n=Ml,r=n.observed,o=n.persistentFocus,s=n.autoFocus,i=n.shards,u=n.crossFrame,d=n.focusOptions,p=r||Rl&&Rl.portaledElement,h=document&&document.activeElement;if(p){var g=[p].concat(i.map(T9).filter(Boolean));if((!h||R9(h))&&(o||N9(u)||!O9()||!wl&&s)&&(p&&!(y6(g)||h&&z9(h,g)||A9(h))&&(document&&!wl&&h&&!s?(h.blur&&h.blur(),document.body.focus()):(t=w6(g,wl,{focusOptions:d}),Rl={})),au=!1,wl=document&&document.activeElement),document){var v=document&&document.activeElement,b=P9(g),S=b.map(function(x){var C=x.node;return C}).indexOf(v);S>-1&&(b.filter(function(x){var C=x.guard,_=x.node;return C&&_.dataset.focusAutoGuard}).forEach(function(x){var C=x.node;return C.removeAttribute("tabIndex")}),Jx(S,b.length,1,b),Jx(S,-1,-1,b))}}}return t},S6=function(t){Lf()&&t&&(t.stopPropagation(),t.preventDefault())},zv=function(){return $v(Lf)},L9=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||D9(r,n)},B9=function(){return null},C6=function(){au="just",$v(function(){au="meanwhile"})},F9=function(){document.addEventListener("focusin",S6),document.addEventListener("focusout",zv),window.addEventListener("blur",C6)},H9=function(){document.removeEventListener("focusin",S6),document.removeEventListener("focusout",zv),window.removeEventListener("blur",C6)};function W9(e){return e.filter(function(t){var n=t.disabled;return!n})}function V9(e){var t=e.slice(-1)[0];t&&!Ml&&F9();var n=Ml,r=n&&t&&t.id===n.id;Ml=t,n&&!r&&(n.onDeactivation(),e.filter(function(o){var s=o.id;return s===n.id}).length||n.returnFocus(!t)),t?(wl=null,(!r||n.observed!==t.observed)&&t.onActivation(),Lf(),$v(Lf)):(H9(),wl=null)}o6.assignSyncMedium(L9);s6.assignMedium(zv);YR.assignMedium(function(e){return e({moveFocusInside:w6,focusInside:y6})});const U9=e9(W9,V9)(B9);var _6=f.forwardRef(function(t,n){return f.createElement(a6,Xn({sideCar:U9,ref:n},t))}),k6=a6.propTypes||{};k6.sideCar;cM(k6,["sideCar"]);_6.propTypes={};const Zx=_6;var j6=e=>e.hasAttribute("tabindex"),G9=e=>j6(e)&&e.tabIndex===-1;function q9(e){return!!e.getAttribute("disabled")||!!e.getAttribute("aria-disabled")}function P6(e){return e.parentElement&&P6(e.parentElement)?!0:e.hidden}function K9(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function I6(e){if(!x4(e)||P6(e)||q9(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]():K9(e)?!0:j6(e)}function Q9(e){return e?x4(e)&&I6(e)&&!G9(e):!1}var Y9=["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]"],X9=Y9.join(),J9=e=>e.offsetWidth>0&&e.offsetHeight>0;function E6(e){const t=Array.from(e.querySelectorAll(X9));return t.unshift(e),t.filter(n=>I6(n)&&J9(n))}var e2,Z9=(e2=Zx.default)!=null?e2:Zx,O6=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:o,children:s,isDisabled:i,autoFocus:u,persistentFocus:d,lockFocusAcrossFrames:p}=e,h=f.useCallback(()=>{t!=null&&t.current?t.current.focus():r!=null&&r.current&&E6(r.current).length===0&&requestAnimationFrame(()=>{var S;(S=r.current)==null||S.focus()})},[t,r]),g=f.useCallback(()=>{var b;(b=n==null?void 0:n.current)==null||b.focus()},[n]),v=o&&!n;return a.jsx(Z9,{crossFrame:p,persistentFocus:d,autoFocus:u,disabled:i,onActivation:h,onDeactivation:g,returnFocus:v,children:s})};O6.displayName="FocusLock";function eD(e,t,n,r){const o=w4(t);return f.useEffect(()=>{var s;const i=(s=Yb(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=Yb(n))!=null?s:document).removeEventListener(e,o,r)}}function tD(e){const{ref:t,handler:n,enabled:r=!0}=e,o=w4(n),i=f.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;f.useEffect(()=>{if(!r)return;const u=g=>{ng(g,t)&&(i.isPointerDown=!0)},d=g=>{if(i.ignoreEmulatedMouseEvents){i.ignoreEmulatedMouseEvents=!1;return}i.isPointerDown&&n&&ng(g,t)&&(i.isPointerDown=!1,o(g))},p=g=>{i.ignoreEmulatedMouseEvents=!0,n&&i.isPointerDown&&ng(g,t)&&(i.isPointerDown=!1,o(g))},h=S4(t.current);return h.addEventListener("mousedown",u,!0),h.addEventListener("mouseup",d,!0),h.addEventListener("touchstart",u,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",u,!0),h.removeEventListener("mouseup",d,!0),h.removeEventListener("touchstart",u,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,i,r])}function ng(e,t){var n;const r=e.target;return r&&!S4(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}var[nD,rD]=cr({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),M6=rt(function(t,n){const r=uo("Input",t),{children:o,className:s,...i}=wr(t),u=Mt("chakra-input__group",s),d={},p=qp(o),h=r.field;p.forEach(v=>{var b,S;r&&(h&&v.type.id==="InputLeftElement"&&(d.paddingStart=(b=h.height)!=null?b:h.h),h&&v.type.id==="InputRightElement"&&(d.paddingEnd=(S=h.height)!=null?S:h.h),v.type.id==="InputRightAddon"&&(d.borderEndRadius=0),v.type.id==="InputLeftAddon"&&(d.borderStartRadius=0))});const g=p.map(v=>{var b,S;const x=_v({size:((b=v.props)==null?void 0:b.size)||t.size,variant:((S=v.props)==null?void 0:S.variant)||t.variant});return v.type.id!=="Input"?f.cloneElement(v,x):f.cloneElement(v,Object.assign(x,d,v.props))});return a.jsx(He.div,{className:u,ref:n,__css:{width:"100%",display:"flex",position:"relative",isolation:"isolate"},"data-group":!0,...i,children:a.jsx(nD,{value:r,children:g})})});M6.displayName="InputGroup";var oD=He("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),oh=rt(function(t,n){var r,o;const{placement:s="left",...i}=t,u=rD(),d=u.field,h={[s==="left"?"insetStart":"insetEnd"]:"0",width:(r=d==null?void 0:d.height)!=null?r:d==null?void 0:d.h,height:(o=d==null?void 0:d.height)!=null?o:d==null?void 0:d.h,fontSize:d==null?void 0:d.fontSize,...u.element};return a.jsx(oD,{ref:n,__css:h,...i})});oh.id="InputElement";oh.displayName="InputElement";var R6=rt(function(t,n){const{className:r,...o}=t,s=Mt("chakra-input__left-element",r);return a.jsx(oh,{ref:n,placement:"left",className:s,...o})});R6.id="InputLeftElement";R6.displayName="InputLeftElement";var Lv=rt(function(t,n){const{className:r,...o}=t,s=Mt("chakra-input__right-element",r);return a.jsx(oh,{ref:n,placement:"right",className:s,...o})});Lv.id="InputRightElement";Lv.displayName="InputRightElement";var Iu=rt(function(t,n){const{htmlSize:r,...o}=t,s=uo("Input",o),i=wr(o),u=av(i),d=Mt("chakra-input",t.className);return a.jsx(He.input,{size:r,...u,__css:s.field,ref:n,className:d})});Iu.displayName="Input";Iu.id="Input";var Qa=rt(function(t,n){const r=Zl("Link",t),{className:o,isExternal:s,...i}=wr(t);return a.jsx(He.a,{target:s?"_blank":void 0,rel:s?"noopener":void 0,ref:n,className:Mt("chakra-link",o),...i,__css:r})});Qa.displayName="Link";var[sD,D6]=cr({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Bv=rt(function(t,n){const r=uo("List",t),{children:o,styleType:s="none",stylePosition:i,spacing:u,...d}=wr(t),p=qp(o),g=u?{["& > *:not(style) ~ *:not(style)"]:{mt:u}}:{};return a.jsx(sD,{value:r,children:a.jsx(He.ul,{ref:n,listStyleType:s,listStylePosition:i,role:"list",__css:{...r.container,...g},...d,children:p})})});Bv.displayName="List";var aD=rt((e,t)=>{const{as:n,...r}=e;return a.jsx(Bv,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});aD.displayName="OrderedList";var Fv=rt(function(t,n){const{as:r,...o}=t;return a.jsx(Bv,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...o})});Fv.displayName="UnorderedList";var la=rt(function(t,n){const r=D6();return a.jsx(He.li,{ref:n,...t,__css:r.item})});la.displayName="ListItem";var iD=rt(function(t,n){const r=D6();return a.jsx(io,{ref:n,role:"presentation",...t,__css:r.icon})});iD.displayName="ListIcon";var Mi=rt(function(t,n){const{templateAreas:r,gap:o,rowGap:s,columnGap:i,column:u,row:d,autoFlow:p,autoRows:h,templateRows:g,autoColumns:v,templateColumns:b,...S}=t,x={display:"grid",gridTemplateAreas:r,gridGap:o,gridRowGap:s,gridColumnGap:i,gridAutoColumns:v,gridColumn:u,gridRow:d,gridAutoFlow:p,gridAutoRows:h,gridTemplateRows:g,gridTemplateColumns:b};return a.jsx(He.div,{ref:n,__css:x,...S})});Mi.displayName="Grid";var Bi=He("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});Bi.displayName="Spacer";var qe=rt(function(t,n){const r=Zl("Text",t),{className:o,align:s,decoration:i,casing:u,...d}=wr(t),p=_v({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return a.jsx(He.p,{ref:n,className:Mt("chakra-text",t.className),...p,...d,__css:r})});qe.displayName="Text";var A6=rt((e,t)=>a.jsx(EE,{align:"center",...e,direction:"column",ref:t}));A6.displayName="VStack";function t2(e){return OE(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var c0=rt(function(t,n){const{area:r,colSpan:o,colStart:s,colEnd:i,rowEnd:u,rowSpan:d,rowStart:p,...h}=t,g=_v({gridArea:r,gridColumn:t2(o),gridRow:t2(d),gridColumnStart:s,gridColumnEnd:i,gridRowStart:p,gridRowEnd:u});return a.jsx(He.div,{ref:n,__css:g,...h})});c0.displayName="GridItem";var Za=rt(function(t,n){const r=Zl("Badge",t),{className:o,...s}=wr(t);return a.jsx(He.span,{ref:n,className:Mt("chakra-badge",t.className),...s,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});Za.displayName="Badge";var Fi=rt(function(t,n){const{borderLeftWidth:r,borderBottomWidth:o,borderTopWidth:s,borderRightWidth:i,borderWidth:u,borderStyle:d,borderColor:p,...h}=Zl("Divider",t),{className:g,orientation:v="horizontal",__css:b,...S}=wr(t),x={vertical:{borderLeftWidth:r||i||u||"1px",height:"100%"},horizontal:{borderBottomWidth:o||s||u||"1px",width:"100%"}};return a.jsx(He.hr,{ref:n,"aria-orientation":v,...S,__css:{...h,border:"0",borderColor:p,borderStyle:d,...x[v],...b},className:Mt("chakra-divider",g)})});Fi.displayName="Divider";function lD(e){const{key:t}=e;return t.length===1||t.length>1&&/[^a-zA-Z0-9]/.test(t)}function cD(e={}){const{timeout:t=300,preventDefault:n=()=>!0}=e,[r,o]=f.useState([]),s=f.useRef(),i=()=>{s.current&&(clearTimeout(s.current),s.current=null)},u=()=>{i(),s.current=setTimeout(()=>{o([]),s.current=null},t)};f.useEffect(()=>i,[]);function d(p){return h=>{if(h.key==="Backspace"){const g=[...r];g.pop(),o(g);return}if(lD(h)){const g=r.concat(h.key);n(h)&&(h.preventDefault(),h.stopPropagation()),o(g),p(g.join("")),u()}}}return d}function uD(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 dD(){const e=f.useRef(new Map),t=e.current,n=f.useCallback((o,s,i,u)=>{e.current.set(i,{type:s,el:o,options:u}),o.addEventListener(s,i,u)},[]),r=f.useCallback((o,s,i,u)=>{o.removeEventListener(s,i,u),e.current.delete(i)},[]);return f.useEffect(()=>()=>{t.forEach((o,s)=>{r(o.el,o.type,s,o.options)})},[r,t]),{add:n,remove:r}}function rg(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function T6(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:o=!0,clickOnSpace:s=!0,onMouseDown:i,onMouseUp:u,onClick:d,onKeyDown:p,onKeyUp:h,tabIndex:g,onMouseOver:v,onMouseLeave:b,...S}=e,[x,C]=f.useState(!0),[_,k]=f.useState(!1),P=dD(),I=M=>{M&&M.tagName!=="BUTTON"&&C(!1)},E=x?g:g||0,O=n&&!r,R=f.useCallback(M=>{if(n){M.stopPropagation(),M.preventDefault();return}M.currentTarget.focus(),d==null||d(M)},[n,d]),D=f.useCallback(M=>{_&&rg(M)&&(M.preventDefault(),M.stopPropagation(),k(!1),P.remove(document,"keyup",D,!1))},[_,P]),T=f.useCallback(M=>{if(p==null||p(M),n||M.defaultPrevented||M.metaKey||!rg(M.nativeEvent)||x)return;const U=o&&M.key==="Enter";s&&M.key===" "&&(M.preventDefault(),k(!0)),U&&(M.preventDefault(),M.currentTarget.click()),P.add(document,"keyup",D,!1)},[n,x,p,o,s,P,D]),B=f.useCallback(M=>{if(h==null||h(M),n||M.defaultPrevented||M.metaKey||!rg(M.nativeEvent)||x)return;s&&M.key===" "&&(M.preventDefault(),k(!1),M.currentTarget.click())},[s,x,n,h]),W=f.useCallback(M=>{M.button===0&&(k(!1),P.remove(document,"mouseup",W,!1))},[P]),J=f.useCallback(M=>{if(M.button!==0)return;if(n){M.stopPropagation(),M.preventDefault();return}x||k(!0),M.currentTarget.focus({preventScroll:!0}),P.add(document,"mouseup",W,!1),i==null||i(M)},[n,x,i,P,W]),F=f.useCallback(M=>{M.button===0&&(x||k(!1),u==null||u(M))},[u,x]),N=f.useCallback(M=>{if(n){M.preventDefault();return}v==null||v(M)},[n,v]),G=f.useCallback(M=>{_&&(M.preventDefault(),k(!1)),b==null||b(M)},[_,b]),K=Wn(t,I);return x?{...S,ref:K,type:"button","aria-disabled":O?void 0:n,disabled:O,onClick:R,onMouseDown:i,onMouseUp:u,onKeyUp:h,onKeyDown:p,onMouseOver:v,onMouseLeave:b}:{...S,ref:K,role:"button","data-active":sn(_),"aria-disabled":n?"true":void 0,tabIndex:O?void 0:E,onClick:R,onMouseDown:J,onMouseUp:F,onKeyUp:B,onKeyDown:T,onMouseOver:N,onMouseLeave:G}}function fD(e){const t=e.current;if(!t)return!1;const n=ME(t);return!n||t.contains(n)?!1:!!Q9(n)}function N6(e,t){const{shouldFocus:n,visible:r,focusRef:o}=t,s=n&&!r;Li(()=>{if(!s||fD(e))return;const i=(o==null?void 0:o.current)||e.current;let u;if(i)return u=requestAnimationFrame(()=>{i.focus({preventScroll:!0})}),()=>{cancelAnimationFrame(u)}},[s,e,o])}var pD={preventScroll:!0,shouldFocus:!1};function hD(e,t=pD){const{focusRef:n,preventScroll:r,shouldFocus:o,visible:s}=t,i=mD(e)?e.current:e,u=o&&s,d=f.useRef(u),p=f.useRef(s);Kc(()=>{!p.current&&s&&(d.current=u),p.current=s},[s,u]);const h=f.useCallback(()=>{if(!(!s||!i||!d.current)&&(d.current=!1,!i.contains(document.activeElement)))if(n!=null&&n.current)requestAnimationFrame(()=>{var g;(g=n.current)==null||g.focus({preventScroll:r})});else{const g=E6(i);g.length>0&&requestAnimationFrame(()=>{g[0].focus({preventScroll:r})})}},[s,r,i,n]);Li(()=>{h()},[h]),ov(i,"transitionend",h)}function mD(e){return"current"in e}function gD(e){const{ref:t,handler:n,enabled:r=!0}=e,o=Ga(n),i=f.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;f.useEffect(()=>{if(!r)return;const u=g=>{og(g,t)&&(i.isPointerDown=!0)},d=g=>{if(i.ignoreEmulatedMouseEvents){i.ignoreEmulatedMouseEvents=!1;return}i.isPointerDown&&n&&og(g,t)&&(i.isPointerDown=!1,o(g))},p=g=>{i.ignoreEmulatedMouseEvents=!0,n&&i.isPointerDown&&og(g,t)&&(i.isPointerDown=!1,o(g))},h=$6(t.current);return h.addEventListener("mousedown",u,!0),h.addEventListener("mouseup",d,!0),h.addEventListener("touchstart",u,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",u,!0),h.removeEventListener("mouseup",d,!0),h.removeEventListener("touchstart",u,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,i,r])}function og(e,t){var n;const r=e.target;return r&&!$6(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}function $6(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function z6(e){const{isOpen:t,ref:n}=e,[r,o]=f.useState(t),[s,i]=f.useState(!1);return f.useEffect(()=>{s||(o(t),i(!0))},[t,s,r]),ov(()=>n.current,"animationend",()=>{o(t)}),{present:!(t?!1:!r),onComplete(){var d;const p=RE(n.current),h=new p.CustomEvent("animationend",{bubbles:!0});(d=n.current)==null||d.dispatchEvent(h)}}}function Hv(e){const{wasSelected:t,enabled:n,isSelected:r,mode:o="unmount"}=e;return!!(!n||r||o==="keepMounted"&&t)}var[vD,yD,bD,xD]=kv(),[wD,Eu]=cr({strict:!1,name:"MenuContext"});function SD(e,...t){const n=f.useId(),r=e||n;return f.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}function L6(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function n2(e){return L6(e).activeElement===e}function CD(e={}){const{id:t,closeOnSelect:n=!0,closeOnBlur:r=!0,initialFocusRef:o,autoSelect:s=!0,isLazy:i,isOpen:u,defaultIsOpen:d,onClose:p,onOpen:h,placement:g="bottom-start",lazyBehavior:v="unmount",direction:b,computePositionOnMount:S=!1,...x}=e,C=f.useRef(null),_=f.useRef(null),k=bD(),P=f.useCallback(()=>{requestAnimationFrame(()=>{var me;(me=C.current)==null||me.focus({preventScroll:!1})})},[]),I=f.useCallback(()=>{const me=setTimeout(()=>{var ae;if(o)(ae=o.current)==null||ae.focus();else{const te=k.firstEnabled();te&&F(te.index)}});U.current.add(me)},[k,o]),E=f.useCallback(()=>{const me=setTimeout(()=>{const ae=k.lastEnabled();ae&&F(ae.index)});U.current.add(me)},[k]),O=f.useCallback(()=>{h==null||h(),s?I():P()},[s,I,P,h]),{isOpen:R,onOpen:D,onClose:T,onToggle:B}=C4({isOpen:u,defaultIsOpen:d,onClose:p,onOpen:O});gD({enabled:R&&r,ref:C,handler:me=>{var ae;(ae=_.current)!=null&&ae.contains(me.target)||T()}});const W=_4({...x,enabled:R||S,placement:g,direction:b}),[J,F]=f.useState(-1);Li(()=>{R||F(-1)},[R]),N6(C,{focusRef:_,visible:R,shouldFocus:!0});const N=z6({isOpen:R,ref:C}),[G,K]=SD(t,"menu-button","menu-list"),M=f.useCallback(()=>{D(),P()},[D,P]),U=f.useRef(new Set([]));MD(()=>{U.current.forEach(me=>clearTimeout(me)),U.current.clear()});const V=f.useCallback(()=>{D(),I()},[I,D]),ee=f.useCallback(()=>{D(),E()},[D,E]),ie=f.useCallback(()=>{var me,ae;const te=L6(C.current),H=(me=C.current)==null?void 0:me.contains(te.activeElement);if(!(R&&!H))return;const pe=(ae=k.item(J))==null?void 0:ae.node;pe==null||pe.focus()},[R,J,k]),xe=f.useRef(null);return{openAndFocusMenu:M,openAndFocusFirstItem:V,openAndFocusLastItem:ee,onTransitionEnd:ie,unstable__animationState:N,descendants:k,popper:W,buttonId:G,menuId:K,forceUpdate:W.forceUpdate,orientation:"vertical",isOpen:R,onToggle:B,onOpen:D,onClose:T,menuRef:C,buttonRef:_,focusedIndex:J,closeOnSelect:n,closeOnBlur:r,autoSelect:s,setFocusedIndex:F,isLazy:i,lazyBehavior:v,initialFocusRef:o,rafId:xe}}function _D(e={},t=null){const n=Eu(),{onToggle:r,popper:o,openAndFocusFirstItem:s,openAndFocusLastItem:i}=n,u=f.useCallback(d=>{const p=d.key,g={Enter:s,ArrowDown:s,ArrowUp:i}[p];g&&(d.preventDefault(),d.stopPropagation(),g(d))},[s,i]);return{...e,ref:Wn(n.buttonRef,t,o.referenceRef),id:n.buttonId,"data-active":sn(n.isOpen),"aria-expanded":n.isOpen,"aria-haspopup":"menu","aria-controls":n.menuId,onClick:gt(e.onClick,r),onKeyDown:gt(e.onKeyDown,u)}}function u0(e){var t;return ED(e)&&!!((t=e==null?void 0:e.getAttribute("role"))!=null&&t.startsWith("menuitem"))}function kD(e={},t=null){const n=Eu();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:u,menuId:d,isLazy:p,lazyBehavior:h,unstable__animationState:g}=n,v=yD(),b=cD({preventDefault:_=>_.key!==" "&&u0(_.target)}),S=f.useCallback(_=>{if(!_.currentTarget.contains(_.target))return;const k=_.key,I={Tab:O=>O.preventDefault(),Escape:u,ArrowDown:()=>{const O=v.nextEnabled(r);O&&o(O.index)},ArrowUp:()=>{const O=v.prevEnabled(r);O&&o(O.index)}}[k];if(I){_.preventDefault(),I(_);return}const E=b(O=>{const R=uD(v.values(),O,D=>{var T,B;return(B=(T=D==null?void 0:D.node)==null?void 0:T.textContent)!=null?B:""},v.item(r));if(R){const D=v.indexOf(R.node);o(D)}});u0(_.target)&&E(_)},[v,r,b,u,o]),x=f.useRef(!1);i&&(x.current=!0);const C=Hv({wasSelected:x.current,enabled:p,mode:h,isSelected:g.present});return{...e,ref:Wn(s,t),children:C?e.children:null,tabIndex:-1,role:"menu",id:d,style:{...e.style,transformOrigin:"var(--popper-transform-origin)"},"aria-orientation":"vertical",onKeyDown:gt(e.onKeyDown,S)}}function jD(e={}){const{popper:t,isOpen:n}=Eu();return t.getPopperProps({...e,style:{visibility:n?"visible":"hidden",...e.style}})}function B6(e={},t=null){const{onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onClick:s,onFocus:i,isDisabled:u,isFocusable:d,closeOnSelect:p,type:h,...g}=e,v=Eu(),{setFocusedIndex:b,focusedIndex:S,closeOnSelect:x,onClose:C,menuRef:_,isOpen:k,menuId:P,rafId:I}=v,E=f.useRef(null),O=`${P}-menuitem-${f.useId()}`,{index:R,register:D}=xD({disabled:u&&!d}),T=f.useCallback(M=>{n==null||n(M),!u&&b(R)},[b,R,u,n]),B=f.useCallback(M=>{r==null||r(M),E.current&&!n2(E.current)&&T(M)},[T,r]),W=f.useCallback(M=>{o==null||o(M),!u&&b(-1)},[b,u,o]),J=f.useCallback(M=>{s==null||s(M),u0(M.currentTarget)&&(p??x)&&C()},[C,s,x,p]),F=f.useCallback(M=>{i==null||i(M),b(R)},[b,i,R]),N=R===S,G=u&&!d;Li(()=>{k&&(N&&!G&&E.current?(I.current&&cancelAnimationFrame(I.current),I.current=requestAnimationFrame(()=>{var M;(M=E.current)==null||M.focus(),I.current=null})):_.current&&!n2(_.current)&&_.current.focus({preventScroll:!0}))},[N,G,_,k]);const K=T6({onClick:J,onFocus:F,onMouseEnter:T,onMouseMove:B,onMouseLeave:W,ref:Wn(D,E,t),isDisabled:u,isFocusable:d});return{...g,...K,type:h??K.type,id:O,role:"menuitem",tabIndex:N?0:-1}}function PD(e={},t=null){const{type:n="radio",isChecked:r,...o}=e;return{...B6(o,t),role:`menuitem${n}`,"aria-checked":r}}function ID(e={}){const{children:t,type:n="radio",value:r,defaultValue:o,onChange:s,...i}=e,d=n==="radio"?"":[],[p,h]=bu({defaultValue:o??d,value:r,onChange:s}),g=f.useCallback(S=>{if(n==="radio"&&typeof p=="string"&&h(S),n==="checkbox"&&Array.isArray(p)){const x=p.includes(S)?p.filter(C=>C!==S):p.concat(S);h(x)}},[p,h,n]),b=qp(t).map(S=>{if(S.type.id!=="MenuItemOption")return S;const x=_=>{var k,P;g(S.props.value),(P=(k=S.props).onClick)==null||P.call(k,_)},C=n==="radio"?S.props.value===p:p.includes(S.props.value);return f.cloneElement(S,{type:n,onClick:x,isChecked:C})});return{...i,children:b}}function ED(e){var t;if(!OD(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function OD(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function MD(e,t=[]){return f.useEffect(()=>()=>e(),t)}var[RD,Ou]=cr({name:"MenuStylesContext",errorMessage:`useMenuStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Mu=e=>{const{children:t}=e,n=uo("Menu",e),r=wr(e),{direction:o}=Kp(),{descendants:s,...i}=CD({...r,direction:o}),u=f.useMemo(()=>i,[i]),{isOpen:d,onClose:p,forceUpdate:h}=u;return a.jsx(vD,{value:s,children:a.jsx(wD,{value:u,children:a.jsx(RD,{value:n,children:sv(t,{isOpen:d,onClose:p,forceUpdate:h})})})})};Mu.displayName="Menu";var F6=rt((e,t)=>{const n=Ou();return a.jsx(He.span,{ref:t,...e,__css:n.command,className:"chakra-menu__command"})});F6.displayName="MenuCommand";var H6=rt((e,t)=>{const{type:n,...r}=e,o=Ou(),s=r.as||n?n??void 0:"button",i=f.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(He.button,{ref:t,type:s,...r,__css:i})}),Wv=e=>{const{className:t,children:n,...r}=e,o=f.Children.only(n),s=f.isValidElement(o)?f.cloneElement(o,{focusable:"false","aria-hidden":!0,className:Mt("chakra-menu__icon",o.props.className)}):null,i=Mt("chakra-menu__icon-wrapper",t);return a.jsx(He.span,{className:i,...r,__css:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:s})};Wv.displayName="MenuIcon";var ao=rt((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",command:o,commandSpacing:s="0.75rem",children:i,...u}=e,d=B6(u,t),h=n||o?a.jsx("span",{style:{pointerEvents:"none",flex:1},children:i}):i;return a.jsxs(H6,{...d,className:Mt("chakra-menu__menuitem",d.className),children:[n&&a.jsx(Wv,{fontSize:"0.8em",marginEnd:r,children:n}),h,o&&a.jsx(F6,{marginStart:s,children:o})]})});ao.displayName="MenuItem";var DD={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"}}},AD=He(Jr.div),ic=rt(function(t,n){var r,o;const{rootProps:s,motionProps:i,...u}=t,{isOpen:d,onTransitionEnd:p,unstable__animationState:h}=Eu(),g=kD(u,n),v=jD(s),b=Ou();return a.jsx(He.div,{...v,__css:{zIndex:(o=t.zIndex)!=null?o:(r=b.list)==null?void 0:r.zIndex},children:a.jsx(AD,{variants:DD,initial:!1,animate:d?"enter":"exit",__css:{outline:0,...b.list},...i,className:Mt("chakra-menu__menu-list",g.className),...g,onUpdate:p,onAnimationComplete:Gp(h.onComplete,g.onAnimationComplete)})})});ic.displayName="MenuList";var Vv=rt((e,t)=>{const{title:n,children:r,className:o,...s}=e,i=Mt("chakra-menu__group__title",o),u=Ou();return a.jsxs("div",{ref:t,className:"chakra-menu__group",role:"group",children:[n&&a.jsx(He.p,{className:i,...s,__css:u.groupTitle,children:n}),r]})});Vv.displayName="MenuGroup";var Uv=e=>{const{className:t,title:n,...r}=e,o=ID(r);return a.jsx(Vv,{title:n,className:Mt("chakra-menu__option-group",t),...o})};Uv.displayName="MenuOptionGroup";var TD=rt((e,t)=>{const n=Ou();return a.jsx(He.button,{ref:t,...e,__css:{display:"inline-flex",appearance:"none",alignItems:"center",outline:0,...n.button}})}),Ru=rt((e,t)=>{const{children:n,as:r,...o}=e,s=_D(o,t),i=r||TD;return a.jsx(i,{...s,className:Mt("chakra-menu__menu-button",e.className),children:a.jsx(He.span,{__css:{pointerEvents:"none",flex:"1 1 auto",minW:0},children:e.children})})});Ru.displayName="MenuButton";var ND=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"})}),iu=rt((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",...o}=e,s=PD(o,t);return a.jsxs(H6,{...s,className:Mt("chakra-menu__menuitem-option",o.className),children:[n!==null&&a.jsx(Wv,{fontSize:"0.8em",marginEnd:r,opacity:e.isChecked?1:0,children:n||a.jsx(ND,{})}),a.jsx("span",{style:{flex:1},children:s.children})]})});iu.id="MenuItemOption";iu.displayName="MenuItemOption";var $D={slideInBottom:{...t0,custom:{offsetY:16,reverse:!0}},slideInRight:{...t0,custom:{offsetX:16,reverse:!0}},scale:{...D3,custom:{initialScale:.95,reverse:!0}},none:{}},zD=He(Jr.section),LD=e=>$D[e||"none"],W6=f.forwardRef((e,t)=>{const{preset:n,motionProps:r=LD(n),...o}=e;return a.jsx(zD,{ref:t,...r,...o})});W6.displayName="ModalTransition";var BD=Object.defineProperty,FD=(e,t,n)=>t in e?BD(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,HD=(e,t,n)=>(FD(e,typeof t!="symbol"?t+"":t,n),n),WD=class{constructor(){HD(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}},d0=new WD;function V6(e,t){const[n,r]=f.useState(0);return f.useEffect(()=>{const o=e.current;if(o){if(t){const s=d0.add(o);r(s)}return()=>{d0.remove(o),r(0)}}},[t,e]),n}var VD=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},cl=new WeakMap,Rd=new WeakMap,Dd={},sg=0,U6=function(e){return e&&(e.host||U6(e.parentNode))},UD=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=U6(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})},GD=function(e,t,n,r){var o=UD(t,Array.isArray(e)?e:[e]);Dd[n]||(Dd[n]=new WeakMap);var s=Dd[n],i=[],u=new Set,d=new Set(o),p=function(g){!g||u.has(g)||(u.add(g),p(g.parentNode))};o.forEach(p);var h=function(g){!g||d.has(g)||Array.prototype.forEach.call(g.children,function(v){if(u.has(v))h(v);else{var b=v.getAttribute(r),S=b!==null&&b!=="false",x=(cl.get(v)||0)+1,C=(s.get(v)||0)+1;cl.set(v,x),s.set(v,C),i.push(v),x===1&&S&&Rd.set(v,!0),C===1&&v.setAttribute(n,"true"),S||v.setAttribute(r,"true")}})};return h(t),u.clear(),sg++,function(){i.forEach(function(g){var v=cl.get(g)-1,b=s.get(g)-1;cl.set(g,v),s.set(g,b),v||(Rd.has(g)||g.removeAttribute(r),Rd.delete(g)),b||g.removeAttribute(n)}),sg--,sg||(cl=new WeakMap,cl=new WeakMap,Rd=new WeakMap,Dd={})}},qD=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||VD(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),GD(r,o,n,"aria-hidden")):function(){return null}};function KD(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:o=!0,closeOnEsc:s=!0,useInert:i=!0,onOverlayClick:u,onEsc:d}=e,p=f.useRef(null),h=f.useRef(null),[g,v,b]=YD(r,"chakra-modal","chakra-modal--header","chakra-modal--body");QD(p,t&&i);const S=V6(p,t),x=f.useRef(null),C=f.useCallback(T=>{x.current=T.target},[]),_=f.useCallback(T=>{T.key==="Escape"&&(T.stopPropagation(),s&&(n==null||n()),d==null||d())},[s,n,d]),[k,P]=f.useState(!1),[I,E]=f.useState(!1),O=f.useCallback((T={},B=null)=>({role:"dialog",...T,ref:Wn(B,p),id:g,tabIndex:-1,"aria-modal":!0,"aria-labelledby":k?v:void 0,"aria-describedby":I?b:void 0,onClick:gt(T.onClick,W=>W.stopPropagation())}),[b,I,g,v,k]),R=f.useCallback(T=>{T.stopPropagation(),x.current===T.target&&d0.isTopModal(p.current)&&(o&&(n==null||n()),u==null||u())},[n,o,u]),D=f.useCallback((T={},B=null)=>({...T,ref:Wn(B,h),onClick:gt(T.onClick,R),onKeyDown:gt(T.onKeyDown,_),onMouseDown:gt(T.onMouseDown,C)}),[_,C,R]);return{isOpen:t,onClose:n,headerId:v,bodyId:b,setBodyMounted:E,setHeaderMounted:P,dialogRef:p,overlayRef:h,getDialogProps:O,getDialogContainerProps:D,index:S}}function QD(e,t){const n=e.current;f.useEffect(()=>{if(!(!e.current||!t))return qD(e.current)},[t,e,n])}function YD(e,...t){const n=f.useId(),r=e||n;return f.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}var[XD,lc]=cr({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[JD,Ri]=cr({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),lu=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:u,returnFocusOnClose:d,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:g,motionPreset:v,lockFocusAcrossFrames:b,onCloseComplete:S}=t,x=uo("Modal",t),_={...KD(t),autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:u,returnFocusOnClose:d,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:g,motionPreset:v,lockFocusAcrossFrames:b};return a.jsx(JD,{value:_,children:a.jsx(XD,{value:x,children:a.jsx(Ko,{onExitComplete:S,children:_.isOpen&&a.jsx(Cf,{...n,children:r})})})})};lu.displayName="Modal";var yf="right-scroll-bar-position",bf="width-before-scroll-bar",ZD="with-scroll-bars-hidden",eA="--removed-body-scroll-bar-size",G6=n6(),ag=function(){},sh=f.forwardRef(function(e,t){var n=f.useRef(null),r=f.useState({onScrollCapture:ag,onWheelCapture:ag,onTouchMoveCapture:ag}),o=r[0],s=r[1],i=e.forwardProps,u=e.children,d=e.className,p=e.removeScrollBar,h=e.enabled,g=e.shards,v=e.sideCar,b=e.noIsolation,S=e.inert,x=e.allowPinchZoom,C=e.as,_=C===void 0?"div":C,k=e.gapMode,P=Z3(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),I=v,E=J3([n,t]),O=Ls(Ls({},P),o);return f.createElement(f.Fragment,null,h&&f.createElement(I,{sideCar:G6,removeScrollBar:p,shards:g,noIsolation:b,inert:S,setCallbacks:s,allowPinchZoom:!!x,lockRef:n,gapMode:k}),i?f.cloneElement(f.Children.only(u),Ls(Ls({},O),{ref:E})):f.createElement(_,Ls({},O,{className:d,ref:E}),u))});sh.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};sh.classNames={fullWidth:bf,zeroRight:yf};var r2,tA=function(){if(r2)return r2;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function nA(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=tA();return t&&e.setAttribute("nonce",t),e}function rA(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function oA(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var sA=function(){var e=0,t=null;return{add:function(n){e==0&&(t=nA())&&(rA(t,n),oA(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},aA=function(){var e=sA();return function(t,n){f.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},q6=function(){var e=aA(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},iA={left:0,top:0,right:0,gap:0},ig=function(e){return parseInt(e||"",10)||0},lA=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[ig(n),ig(r),ig(o)]},cA=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return iA;var t=lA(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])}},uA=q6(),dA=function(e,t,n,r){var o=e.left,s=e.top,i=e.right,u=e.gap;return n===void 0&&(n="margin"),` - .`.concat(ZD,` { - overflow: hidden `).concat(r,`; - padding-right: `).concat(u,"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(u,"px ").concat(r,`; - `),n==="padding"&&"padding-right: ".concat(u,"px ").concat(r,";")].filter(Boolean).join(""),` - } - - .`).concat(yf,` { - right: `).concat(u,"px ").concat(r,`; - } - - .`).concat(bf,` { - margin-right: `).concat(u,"px ").concat(r,`; - } - - .`).concat(yf," .").concat(yf,` { - right: 0 `).concat(r,`; - } - - .`).concat(bf," .").concat(bf,` { - margin-right: 0 `).concat(r,`; - } - - body { - `).concat(eA,": ").concat(u,`px; - } -`)},fA=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,s=f.useMemo(function(){return cA(o)},[o]);return f.createElement(uA,{styles:dA(s,!t,o,n?"":"!important")})},f0=!1;if(typeof window<"u")try{var Ad=Object.defineProperty({},"passive",{get:function(){return f0=!0,!0}});window.addEventListener("test",Ad,Ad),window.removeEventListener("test",Ad,Ad)}catch{f0=!1}var ul=f0?{passive:!1}:!1,pA=function(e){return e.tagName==="TEXTAREA"},K6=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!pA(e)&&n[t]==="visible")},hA=function(e){return K6(e,"overflowY")},mA=function(e){return K6(e,"overflowX")},o2=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=Q6(e,r);if(o){var s=Y6(e,r),i=s[1],u=s[2];if(i>u)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},gA=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},vA=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},Q6=function(e,t){return e==="v"?hA(t):mA(t)},Y6=function(e,t){return e==="v"?gA(t):vA(t)},yA=function(e,t){return e==="h"&&t==="rtl"?-1:1},bA=function(e,t,n,r,o){var s=yA(e,window.getComputedStyle(t).direction),i=s*r,u=n.target,d=t.contains(u),p=!1,h=i>0,g=0,v=0;do{var b=Y6(e,u),S=b[0],x=b[1],C=b[2],_=x-C-s*S;(S||_)&&Q6(e,u)&&(g+=_,v+=S),u=u.parentNode}while(!d&&u!==document.body||d&&(t.contains(u)||t===u));return(h&&(o&&g===0||!o&&i>g)||!h&&(o&&v===0||!o&&-i>v))&&(p=!0),p},Td=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},s2=function(e){return[e.deltaX,e.deltaY]},a2=function(e){return e&&"current"in e?e.current:e},xA=function(e,t){return e[0]===t[0]&&e[1]===t[1]},wA=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},SA=0,dl=[];function CA(e){var t=f.useRef([]),n=f.useRef([0,0]),r=f.useRef(),o=f.useState(SA++)[0],s=f.useState(q6)[0],i=f.useRef(e);f.useEffect(function(){i.current=e},[e]),f.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var x=s0([e.lockRef.current],(e.shards||[]).map(a2),!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 u=f.useCallback(function(x,C){if("touches"in x&&x.touches.length===2)return!i.current.allowPinchZoom;var _=Td(x),k=n.current,P="deltaX"in x?x.deltaX:k[0]-_[0],I="deltaY"in x?x.deltaY:k[1]-_[1],E,O=x.target,R=Math.abs(P)>Math.abs(I)?"h":"v";if("touches"in x&&R==="h"&&O.type==="range")return!1;var D=o2(R,O);if(!D)return!0;if(D?E=R:(E=R==="v"?"h":"v",D=o2(R,O)),!D)return!1;if(!r.current&&"changedTouches"in x&&(P||I)&&(r.current=E),!E)return!0;var T=r.current||E;return bA(T,C,x,T==="h"?P:I,!0)},[]),d=f.useCallback(function(x){var C=x;if(!(!dl.length||dl[dl.length-1]!==s)){var _="deltaY"in C?s2(C):Td(C),k=t.current.filter(function(E){return E.name===C.type&&E.target===C.target&&xA(E.delta,_)})[0];if(k&&k.should){C.cancelable&&C.preventDefault();return}if(!k){var P=(i.current.shards||[]).map(a2).filter(Boolean).filter(function(E){return E.contains(C.target)}),I=P.length>0?u(C,P[0]):!i.current.noIsolation;I&&C.cancelable&&C.preventDefault()}}},[]),p=f.useCallback(function(x,C,_,k){var P={name:x,delta:C,target:_,should:k};t.current.push(P),setTimeout(function(){t.current=t.current.filter(function(I){return I!==P})},1)},[]),h=f.useCallback(function(x){n.current=Td(x),r.current=void 0},[]),g=f.useCallback(function(x){p(x.type,s2(x),x.target,u(x,e.lockRef.current))},[]),v=f.useCallback(function(x){p(x.type,Td(x),x.target,u(x,e.lockRef.current))},[]);f.useEffect(function(){return dl.push(s),e.setCallbacks({onScrollCapture:g,onWheelCapture:g,onTouchMoveCapture:v}),document.addEventListener("wheel",d,ul),document.addEventListener("touchmove",d,ul),document.addEventListener("touchstart",h,ul),function(){dl=dl.filter(function(x){return x!==s}),document.removeEventListener("wheel",d,ul),document.removeEventListener("touchmove",d,ul),document.removeEventListener("touchstart",h,ul)}},[]);var b=e.removeScrollBar,S=e.inert;return f.createElement(f.Fragment,null,S?f.createElement(s,{styles:wA(o)}):null,b?f.createElement(fA,{gapMode:e.gapMode}):null)}const _A=QR(G6,CA);var X6=f.forwardRef(function(e,t){return f.createElement(sh,Ls({},e,{ref:t,sideCar:_A}))});X6.classNames=sh.classNames;const kA=X6;function jA(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:o,blockScrollOnMount:s,allowPinchZoom:i,finalFocusRef:u,returnFocusOnClose:d,preserveScrollBarGap:p,lockFocusAcrossFrames:h,isOpen:g}=Ri(),[v,b]=DE();f.useEffect(()=>{!v&&b&&setTimeout(b)},[v,b]);const S=V6(r,g);return a.jsx(O6,{autoFocus:t,isDisabled:!n,initialFocusRef:o,finalFocusRef:u,restoreFocus:d,contentRef:r,lockFocusAcrossFrames:h,children:a.jsx(kA,{removeScrollBar:!p,allowPinchZoom:i,enabled:S===1&&s,forwardProps:!0,children:e.children})})}var cu=rt((e,t)=>{const{className:n,children:r,containerProps:o,motionProps:s,...i}=e,{getDialogProps:u,getDialogContainerProps:d}=Ri(),p=u(i,t),h=d(o),g=Mt("chakra-modal__content",n),v=lc(),b={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...v.dialog},S={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...v.dialogContainer},{motionPreset:x}=Ri();return a.jsx(jA,{children:a.jsx(He.div,{...h,className:"chakra-modal__content-container",tabIndex:-1,__css:S,children:a.jsx(W6,{preset:x,motionProps:s,className:g,...p,__css:b,children:r})})})});cu.displayName="ModalContent";function Du(e){const{leastDestructiveRef:t,...n}=e;return a.jsx(lu,{...n,initialFocusRef:t})}var Au=rt((e,t)=>a.jsx(cu,{ref:t,role:"alertdialog",...e})),ga=rt((e,t)=>{const{className:n,...r}=e,o=Mt("chakra-modal__footer",n),i={display:"flex",alignItems:"center",justifyContent:"flex-end",...lc().footer};return a.jsx(He.footer,{ref:t,...r,__css:i,className:o})});ga.displayName="ModalFooter";var va=rt((e,t)=>{const{className:n,...r}=e,{headerId:o,setHeaderMounted:s}=Ri();f.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=Mt("chakra-modal__header",n),d={flex:0,...lc().header};return a.jsx(He.header,{ref:t,className:i,id:o,...r,__css:d})});va.displayName="ModalHeader";var PA=He(Jr.div),ya=rt((e,t)=>{const{className:n,transition:r,motionProps:o,...s}=e,i=Mt("chakra-modal__overlay",n),d={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",...lc().overlay},{motionPreset:p}=Ri(),g=o||(p==="none"?{}:R3);return a.jsx(PA,{...g,__css:d,ref:t,className:i,...s})});ya.displayName="ModalOverlay";var ba=rt((e,t)=>{const{className:n,...r}=e,{bodyId:o,setBodyMounted:s}=Ri();f.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=Mt("chakra-modal__body",n),u=lc();return a.jsx(He.div,{ref:t,className:i,id:o,...r,__css:u.body})});ba.displayName="ModalBody";var Gv=rt((e,t)=>{const{onClick:n,className:r,...o}=e,{onClose:s}=Ri(),i=Mt("chakra-modal__close-btn",r),u=lc();return a.jsx(AE,{ref:t,__css:u.closeButton,className:i,onClick:gt(n,d=>{d.stopPropagation(),s()}),...o})});Gv.displayName="ModalCloseButton";var[IA,Tu]=cr({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[EA,qv]=cr({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `});function Kv(e){const t=f.Children.only(e.children),{getTriggerProps:n}=Tu();return f.cloneElement(t,n(t.props,t.ref))}Kv.displayName="PopoverTrigger";var fl={click:"click",hover:"hover"};function OA(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:o,returnFocusOnClose:s=!0,autoFocus:i=!0,arrowSize:u,arrowShadowColor:d,trigger:p=fl.click,openDelay:h=200,closeDelay:g=200,isLazy:v,lazyBehavior:b="unmount",computePositionOnMount:S,...x}=e,{isOpen:C,onClose:_,onOpen:k,onToggle:P}=C4(e),I=f.useRef(null),E=f.useRef(null),O=f.useRef(null),R=f.useRef(!1),D=f.useRef(!1);C&&(D.current=!0);const[T,B]=f.useState(!1),[W,J]=f.useState(!1),F=f.useId(),N=o??F,[G,K,M,U]=["popover-trigger","popover-content","popover-header","popover-body"].map(_e=>`${_e}-${N}`),{referenceRef:V,getArrowProps:ee,getPopperProps:ie,getArrowInnerProps:xe,forceUpdate:me}=_4({...x,enabled:C||!!S}),ae=z6({isOpen:C,ref:O});G3({enabled:C,ref:E}),N6(O,{focusRef:E,visible:C,shouldFocus:s&&p===fl.click}),hD(O,{focusRef:r,visible:C,shouldFocus:i&&p===fl.click});const te=Hv({wasSelected:D.current,enabled:v,mode:b,isSelected:ae.present}),H=f.useCallback((_e={},We=null)=>{const Le={..._e,style:{..._e.style,transformOrigin:Vm.transformOrigin.varRef,[Vm.arrowSize.var]:u?`${u}px`:void 0,[Vm.arrowShadowColor.var]:d},ref:Wn(O,We),children:te?_e.children:null,id:K,tabIndex:-1,role:"dialog",onKeyDown:gt(_e.onKeyDown,Ue=>{n&&Ue.key==="Escape"&&_()}),onBlur:gt(_e.onBlur,Ue=>{const jt=i2(Ue),vt=lg(O.current,jt),jn=lg(E.current,jt);C&&t&&(!vt&&!jn)&&_()}),"aria-labelledby":T?M:void 0,"aria-describedby":W?U:void 0};return p===fl.hover&&(Le.role="tooltip",Le.onMouseEnter=gt(_e.onMouseEnter,()=>{R.current=!0}),Le.onMouseLeave=gt(_e.onMouseLeave,Ue=>{Ue.nativeEvent.relatedTarget!==null&&(R.current=!1,setTimeout(()=>_(),g))})),Le},[te,K,T,M,W,U,p,n,_,C,t,g,d,u]),re=f.useCallback((_e={},We=null)=>ie({..._e,style:{visibility:C?"visible":"hidden",..._e.style}},We),[C,ie]),pe=f.useCallback((_e,We=null)=>({..._e,ref:Wn(We,I,V)}),[I,V]),ne=f.useRef(),ve=f.useRef(),de=f.useCallback(_e=>{I.current==null&&V(_e)},[V]),Ce=f.useCallback((_e={},We=null)=>{const Le={..._e,ref:Wn(E,We,de),id:G,"aria-haspopup":"dialog","aria-expanded":C,"aria-controls":K};return p===fl.click&&(Le.onClick=gt(_e.onClick,P)),p===fl.hover&&(Le.onFocus=gt(_e.onFocus,()=>{ne.current===void 0&&k()}),Le.onBlur=gt(_e.onBlur,Ue=>{const jt=i2(Ue),vt=!lg(O.current,jt);C&&t&&vt&&_()}),Le.onKeyDown=gt(_e.onKeyDown,Ue=>{Ue.key==="Escape"&&_()}),Le.onMouseEnter=gt(_e.onMouseEnter,()=>{R.current=!0,ne.current=window.setTimeout(()=>k(),h)}),Le.onMouseLeave=gt(_e.onMouseLeave,()=>{R.current=!1,ne.current&&(clearTimeout(ne.current),ne.current=void 0),ve.current=window.setTimeout(()=>{R.current===!1&&_()},g)})),Le},[G,C,K,p,de,P,k,t,_,h,g]);f.useEffect(()=>()=>{ne.current&&clearTimeout(ne.current),ve.current&&clearTimeout(ve.current)},[]);const Re=f.useCallback((_e={},We=null)=>({..._e,id:M,ref:Wn(We,Le=>{B(!!Le)})}),[M]),ge=f.useCallback((_e={},We=null)=>({..._e,id:U,ref:Wn(We,Le=>{J(!!Le)})}),[U]);return{forceUpdate:me,isOpen:C,onAnimationComplete:ae.onComplete,onClose:_,getAnchorProps:pe,getArrowProps:ee,getArrowInnerProps:xe,getPopoverPositionerProps:re,getPopoverProps:H,getTriggerProps:Ce,getHeaderProps:Re,getBodyProps:ge}}function lg(e,t){return e===t||(e==null?void 0:e.contains(t))}function i2(e){var t;const n=e.currentTarget.ownerDocument.activeElement;return(t=e.relatedTarget)!=null?t:n}function Qv(e){const t=uo("Popover",e),{children:n,...r}=wr(e),o=Kp(),s=OA({...r,direction:o.direction});return a.jsx(IA,{value:s,children:a.jsx(EA,{value:t,children:sv(n,{isOpen:s.isOpen,onClose:s.onClose,forceUpdate:s.forceUpdate})})})}Qv.displayName="Popover";var cg=(e,t)=>t?`${e}.${t}, ${t}`:void 0;function J6(e){var t;const{bg:n,bgColor:r,backgroundColor:o,shadow:s,boxShadow:i,shadowColor:u}=e,{getArrowProps:d,getArrowInnerProps:p}=Tu(),h=qv(),g=(t=n??r)!=null?t:o,v=s??i;return a.jsx(He.div,{...d(),className:"chakra-popover__arrow-positioner",children:a.jsx(He.div,{className:Mt("chakra-popover__arrow",e.className),...p(e),__css:{"--popper-arrow-shadow-color":cg("colors",u),"--popper-arrow-bg":cg("colors",g),"--popper-arrow-shadow":cg("shadows",v),...h.arrow}})})}J6.displayName="PopoverArrow";var Z6=rt(function(t,n){const{getBodyProps:r}=Tu(),o=qv();return a.jsx(He.div,{...r(t,n),className:Mt("chakra-popover__body",t.className),__css:o.body})});Z6.displayName="PopoverBody";function MA(e){if(e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var RA={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]}}},DA=He(Jr.section),e5=rt(function(t,n){const{variants:r=RA,...o}=t,{isOpen:s}=Tu();return a.jsx(DA,{ref:n,variants:MA(r),initial:!1,animate:s?"enter":"exit",...o})});e5.displayName="PopoverTransition";var Yv=rt(function(t,n){const{rootProps:r,motionProps:o,...s}=t,{getPopoverProps:i,getPopoverPositionerProps:u,onAnimationComplete:d}=Tu(),p=qv(),h={position:"relative",display:"flex",flexDirection:"column",...p.content};return a.jsx(He.div,{...u(r),__css:p.popper,className:"chakra-popover__popper",children:a.jsx(e5,{...o,...i(s,n),onAnimationComplete:Gp(d,s.onAnimationComplete),className:Mt("chakra-popover__content",t.className),__css:h})})});Yv.displayName="PopoverContent";function AA(e,t,n){return(e-t)*100/(n-t)}Ca({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}});Ca({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}});var TA=Ca({"0%":{left:"-40%"},"100%":{left:"100%"}}),NA=Ca({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function $A(e){const{value:t=0,min:n,max:r,valueText:o,getValueText:s,isIndeterminate:i,role:u="progressbar"}=e,d=AA(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,d):o})(),role:u},percent:d,value:t}}var[zA,LA]=cr({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),BA=rt((e,t)=>{const{min:n,max:r,value:o,isIndeterminate:s,role:i,...u}=e,d=$A({value:o,min:n,max:r,isIndeterminate:s,role:i}),h={height:"100%",...LA().filledTrack};return a.jsx(He.div,{ref:t,style:{width:`${d.percent}%`,...u.style},...d.bind,...u,__css:h})}),t5=rt((e,t)=>{var n;const{value:r,min:o=0,max:s=100,hasStripe:i,isAnimated:u,children:d,borderRadius:p,isIndeterminate:h,"aria-label":g,"aria-labelledby":v,"aria-valuetext":b,title:S,role:x,...C}=wr(e),_=uo("Progress",e),k=p??((n=_.track)==null?void 0:n.borderRadius),P={animation:`${NA} 1s linear infinite`},O={...!h&&i&&u&&P,...h&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${TA} 1s ease infinite normal none running`}},R={overflow:"hidden",position:"relative",..._.track};return a.jsx(He.div,{ref:t,borderRadius:k,__css:R,...C,children:a.jsxs(zA,{value:_,children:[a.jsx(BA,{"aria-label":g,"aria-labelledby":v,"aria-valuetext":b,min:o,max:s,value:r,isIndeterminate:h,css:O,borderRadius:k,title:S,role:x}),d]})})});t5.displayName="Progress";function FA(e){return e&&Xb(e)&&Xb(e.target)}function HA(e={}){const{onChange:t,value:n,defaultValue:r,name:o,isDisabled:s,isFocusable:i,isNative:u,...d}=e,[p,h]=f.useState(r||""),g=typeof n<"u",v=g?n:p,b=f.useRef(null),S=f.useCallback(()=>{const E=b.current;if(!E)return;let O="input:not(:disabled):checked";const R=E.querySelector(O);if(R){R.focus();return}O="input:not(:disabled)";const D=E.querySelector(O);D==null||D.focus()},[]),C=`radio-${f.useId()}`,_=o||C,k=f.useCallback(E=>{const O=FA(E)?E.target.value:E;g||h(O),t==null||t(String(O))},[t,g]),P=f.useCallback((E={},O=null)=>({...E,ref:Wn(O,b),role:"radiogroup"}),[]),I=f.useCallback((E={},O=null)=>({...E,ref:O,name:_,[u?"checked":"isChecked"]:v!=null?E.value===v:void 0,onChange(D){k(D)},"data-radiogroup":!0}),[u,_,k,v]);return{getRootProps:P,getRadioProps:I,name:_,ref:b,focus:S,setValue:h,value:v,onChange:k,isDisabled:s,isFocusable:i,htmlProps:d}}var[WA,n5]=cr({name:"RadioGroupContext",strict:!1}),Bf=rt((e,t)=>{const{colorScheme:n,size:r,variant:o,children:s,className:i,isDisabled:u,isFocusable:d,...p}=e,{value:h,onChange:g,getRootProps:v,name:b,htmlProps:S}=HA(p),x=f.useMemo(()=>({name:b,size:r,onChange:g,colorScheme:n,value:h,variant:o,isDisabled:u,isFocusable:d}),[b,r,g,n,h,o,u,d]);return a.jsx(WA,{value:x,children:a.jsx(He.div,{...v(S,t),className:Mt("chakra-radio-group",i),children:s})})});Bf.displayName="RadioGroup";var VA={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"};function UA(e={}){const{defaultChecked:t,isChecked:n,isFocusable:r,isDisabled:o,isReadOnly:s,isRequired:i,onChange:u,isInvalid:d,name:p,value:h,id:g,"data-radiogroup":v,"aria-describedby":b,...S}=e,x=`radio-${f.useId()}`,C=TE(),k=!!n5()||!!v;let I=!!C&&!k?C.id:x;I=g??I;const E=o??(C==null?void 0:C.isDisabled),O=s??(C==null?void 0:C.isReadOnly),R=i??(C==null?void 0:C.isRequired),D=d??(C==null?void 0:C.isInvalid),[T,B]=f.useState(!1),[W,J]=f.useState(!1),[F,N]=f.useState(!1),[G,K]=f.useState(!1),[M,U]=f.useState(!!t),V=typeof n<"u",ee=V?n:M;f.useEffect(()=>$3(B),[]);const ie=f.useCallback(de=>{if(O||E){de.preventDefault();return}V||U(de.target.checked),u==null||u(de)},[V,E,O,u]),xe=f.useCallback(de=>{de.key===" "&&K(!0)},[K]),me=f.useCallback(de=>{de.key===" "&&K(!1)},[K]),ae=f.useCallback((de={},Ce=null)=>({...de,ref:Ce,"data-active":sn(G),"data-hover":sn(F),"data-disabled":sn(E),"data-invalid":sn(D),"data-checked":sn(ee),"data-focus":sn(W),"data-focus-visible":sn(W&&T),"data-readonly":sn(O),"aria-hidden":!0,onMouseDown:gt(de.onMouseDown,()=>K(!0)),onMouseUp:gt(de.onMouseUp,()=>K(!1)),onMouseEnter:gt(de.onMouseEnter,()=>N(!0)),onMouseLeave:gt(de.onMouseLeave,()=>N(!1))}),[G,F,E,D,ee,W,O,T]),{onFocus:te,onBlur:H}=C??{},re=f.useCallback((de={},Ce=null)=>{const Re=E&&!r;return{...de,id:I,ref:Ce,type:"radio",name:p,value:h,onChange:gt(de.onChange,ie),onBlur:gt(H,de.onBlur,()=>J(!1)),onFocus:gt(te,de.onFocus,()=>J(!0)),onKeyDown:gt(de.onKeyDown,xe),onKeyUp:gt(de.onKeyUp,me),checked:ee,disabled:Re,readOnly:O,required:R,"aria-invalid":jl(D),"aria-disabled":jl(Re),"aria-required":jl(R),"data-readonly":sn(O),"aria-describedby":b,style:VA}},[E,r,I,p,h,ie,H,te,xe,me,ee,O,R,D,b]);return{state:{isInvalid:D,isFocused:W,isChecked:ee,isActive:G,isHovered:F,isDisabled:E,isReadOnly:O,isRequired:R},getCheckboxProps:ae,getRadioProps:ae,getInputProps:re,getLabelProps:(de={},Ce=null)=>({...de,ref:Ce,onMouseDown:gt(de.onMouseDown,GA),"data-disabled":sn(E),"data-checked":sn(ee),"data-invalid":sn(D)}),getRootProps:(de,Ce=null)=>({...de,ref:Ce,"data-disabled":sn(E),"data-checked":sn(ee),"data-invalid":sn(D)}),htmlProps:S}}function GA(e){e.preventDefault(),e.stopPropagation()}function qA(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 aa=rt((e,t)=>{var n;const r=n5(),{onChange:o,value:s}=e,i=uo("Radio",{...r,...e}),u=wr(e),{spacing:d="0.5rem",children:p,isDisabled:h=r==null?void 0:r.isDisabled,isFocusable:g=r==null?void 0:r.isFocusable,inputProps:v,...b}=u;let S=e.isChecked;(r==null?void 0:r.value)!=null&&s!=null&&(S=r.value===s);let x=o;r!=null&&r.onChange&&s!=null&&(x=Gp(r.onChange,o));const C=(n=e==null?void 0:e.name)!=null?n:r==null?void 0:r.name,{getInputProps:_,getCheckboxProps:k,getLabelProps:P,getRootProps:I,htmlProps:E}=UA({...b,isChecked:S,isFocusable:g,isDisabled:h,onChange:x,name:C}),[O,R]=qA(E,k4),D=k(R),T=_(v,t),B=P(),W=Object.assign({},O,I()),J={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},N={userSelect:"none",marginStart:d,...i.label};return a.jsxs(He.label,{className:"chakra-radio",...W,__css:J,children:[a.jsx("input",{className:"chakra-radio__input",...T}),a.jsx(He.span,{className:"chakra-radio__control",...D,__css:F}),p&&a.jsx(He.span,{className:"chakra-radio__label",...B,__css:N,children:p})]})});aa.displayName="Radio";var r5=rt(function(t,n){const{children:r,placeholder:o,className:s,...i}=t;return a.jsxs(He.select,{...i,ref:n,className:Mt("chakra-select",s),children:[o&&a.jsx("option",{value:"",children:o}),r]})});r5.displayName="SelectField";function KA(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 o5=rt((e,t)=>{var n;const r=uo("Select",e),{rootProps:o,placeholder:s,icon:i,color:u,height:d,h:p,minH:h,minHeight:g,iconColor:v,iconSize:b,...S}=wr(e),[x,C]=KA(S,k4),_=av(C),k={width:"100%",height:"fit-content",position:"relative",color:u},P={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return a.jsxs(He.div,{className:"chakra-select__wrapper",__css:k,...x,...o,children:[a.jsx(r5,{ref:t,height:p??d,minH:h??g,placeholder:s,..._,__css:P,children:e.children}),a.jsx(s5,{"data-disabled":sn(_.disabled),...(v||u)&&{color:v||u},__css:r.icon,...b&&{fontSize:b},children:i})]})});o5.displayName="Select";var QA=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"})}),YA=He("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),s5=e=>{const{children:t=a.jsx(QA,{}),...n}=e,r=f.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return a.jsx(YA,{...n,className:"chakra-select__icon-wrapper",children:f.isValidElement(t)?r:null})};s5.displayName="SelectIcon";function XA(){const e=f.useRef(!0);return f.useEffect(()=>{e.current=!1},[]),e.current}function JA(e){const t=f.useRef();return f.useEffect(()=>{t.current=e},[e]),t.current}var ZA=He("div",{baseStyle:{boxShadow:"none",backgroundClip:"padding-box",cursor:"default",color:"transparent",pointerEvents:"none",userSelect:"none","&::before, &::after, *":{visibility:"hidden"}}}),p0=j4("skeleton-start-color"),h0=j4("skeleton-end-color"),eT=Ca({from:{opacity:0},to:{opacity:1}}),tT=Ca({from:{borderColor:p0.reference,background:p0.reference},to:{borderColor:h0.reference,background:h0.reference}}),ah=rt((e,t)=>{const n={...e,fadeDuration:typeof e.fadeDuration=="number"?e.fadeDuration:.4,speed:typeof e.speed=="number"?e.speed:.8},r=Zl("Skeleton",n),o=XA(),{startColor:s="",endColor:i="",isLoaded:u,fadeDuration:d,speed:p,className:h,fitContent:g,...v}=wr(n),[b,S]=ec("colors",[s,i]),x=JA(u),C=Mt("chakra-skeleton",h),_={...b&&{[p0.variable]:b},...S&&{[h0.variable]:S}};if(u){const k=o||x?"none":`${eT} ${d}s`;return a.jsx(He.div,{ref:t,className:C,__css:{animation:k},...v})}return a.jsx(ZA,{ref:t,className:C,...v,__css:{width:g?"fit-content":void 0,...r,..._,_dark:{...r._dark,..._},animation:`${p}s linear infinite alternate ${tT}`}})});ah.displayName="Skeleton";function nT(e){const{min:t=0,max:n=100,onChange:r,value:o,defaultValue:s,isReversed:i,direction:u="ltr",orientation:d="horizontal",id:p,isDisabled:h,isReadOnly:g,onChangeStart:v,onChangeEnd:b,step:S=1,getAriaValueText:x,"aria-valuetext":C,"aria-label":_,"aria-labelledby":k,name:P,focusThumbOnChange:I=!0,minStepsBetweenThumbs:E=0,...O}=e,R=Ga(v),D=Ga(b),T=Ga(x),B=HE({isReversed:i,direction:u,orientation:d}),[W,J]=bu({value:o,defaultValue:s??[25,75],onChange:r});if(!Array.isArray(W))throw new TypeError(`[range-slider] You passed an invalid value for \`value\` or \`defaultValue\`, expected \`Array\` but got \`${typeof W}\``);const[F,N]=f.useState(!1),[G,K]=f.useState(!1),[M,U]=f.useState(-1),V=!(h||g),ee=f.useRef(W),ie=W.map(Ie=>Jb(Ie,t,n)),xe=E*S,me=rT(ie,t,n,xe),ae=f.useRef({eventSource:null,value:[],valueBounds:[]});ae.current.value=ie,ae.current.valueBounds=me;const te=ie.map(Ie=>n-Ie+t),re=(B?te:ie).map(Ie=>Zb(Ie,t,n)),pe=d==="vertical",ne=f.useRef(null),ve=f.useRef(null),de=NE({getNodes(){const Ie=ve.current,it=Ie==null?void 0:Ie.querySelectorAll("[role=slider]");return it?Array.from(it):[]}}),Ce=f.useId(),ge=WE(p??Ce),_e=f.useCallback(Ie=>{var it,Xe;if(!ne.current)return;ae.current.eventSource="pointer";const ot=ne.current.getBoundingClientRect(),{clientX:Nt,clientY:ur}=(Xe=(it=Ie.touches)==null?void 0:it[0])!=null?Xe:Ie,yn=pe?ot.bottom-ur:Nt-ot.left,bn=pe?ot.height:ot.width;let $r=yn/bn;return B&&($r=1-$r),$E($r,t,n)},[pe,B,n,t]),We=(n-t)/10,Le=S||(n-t)/100,Ue=f.useMemo(()=>({setValueAtIndex(Ie,it){if(!V)return;const Xe=ae.current.valueBounds[Ie];it=parseFloat(zE(it,Xe.min,Le)),it=Jb(it,Xe.min,Xe.max);const ot=[...ae.current.value];ot[Ie]=it,J(ot)},setActiveIndex:U,stepUp(Ie,it=Le){const Xe=ae.current.value[Ie],ot=B?Xe-it:Xe+it;Ue.setValueAtIndex(Ie,ot)},stepDown(Ie,it=Le){const Xe=ae.current.value[Ie],ot=B?Xe+it:Xe-it;Ue.setValueAtIndex(Ie,ot)},reset(){J(ee.current)}}),[Le,B,J,V]),jt=f.useCallback(Ie=>{const it=Ie.key,ot={ArrowRight:()=>Ue.stepUp(M),ArrowUp:()=>Ue.stepUp(M),ArrowLeft:()=>Ue.stepDown(M),ArrowDown:()=>Ue.stepDown(M),PageUp:()=>Ue.stepUp(M,We),PageDown:()=>Ue.stepDown(M,We),Home:()=>{const{min:Nt}=me[M];Ue.setValueAtIndex(M,Nt)},End:()=>{const{max:Nt}=me[M];Ue.setValueAtIndex(M,Nt)}}[it];ot&&(Ie.preventDefault(),Ie.stopPropagation(),ot(Ie),ae.current.eventSource="keyboard")},[Ue,M,We,me]),{getThumbStyle:vt,rootStyle:jn,trackStyle:Pt,innerTrackStyle:bt}=f.useMemo(()=>LE({isReversed:B,orientation:d,thumbRects:de,thumbPercents:re}),[B,d,re,de]),be=f.useCallback(Ie=>{var it;const Xe=Ie??M;if(Xe!==-1&&I){const ot=ge.getThumb(Xe),Nt=(it=ve.current)==null?void 0:it.ownerDocument.getElementById(ot);Nt&&setTimeout(()=>Nt.focus())}},[I,M,ge]);Li(()=>{ae.current.eventSource==="keyboard"&&(D==null||D(ae.current.value))},[ie,D]);const Ae=Ie=>{const it=_e(Ie)||0,Xe=ae.current.value.map(bn=>Math.abs(bn-it)),ot=Math.min(...Xe);let Nt=Xe.indexOf(ot);const ur=Xe.filter(bn=>bn===ot);ur.length>1&&it>ae.current.value[Nt]&&(Nt=Nt+ur.length-1),U(Nt),Ue.setValueAtIndex(Nt,it),be(Nt)},Et=Ie=>{if(M==-1)return;const it=_e(Ie)||0;U(M),Ue.setValueAtIndex(M,it),be(M)};BE(ve,{onPanSessionStart(Ie){V&&(N(!0),Ae(Ie),R==null||R(ae.current.value))},onPanSessionEnd(){V&&(N(!1),D==null||D(ae.current.value))},onPan(Ie){V&&Et(Ie)}});const Ft=f.useCallback((Ie={},it=null)=>({...Ie,...O,id:ge.root,ref:Wn(it,ve),tabIndex:-1,"aria-disabled":Um(h),"data-focused":sl(G),style:{...Ie.style,...jn}}),[O,h,G,jn,ge]),Wt=f.useCallback((Ie={},it=null)=>({...Ie,ref:Wn(it,ne),id:ge.track,"data-disabled":sl(h),style:{...Ie.style,...Pt}}),[h,Pt,ge]),_n=f.useCallback((Ie={},it=null)=>({...Ie,ref:it,id:ge.innerTrack,style:{...Ie.style,...bt}}),[bt,ge]),In=f.useCallback((Ie,it=null)=>{var Xe;const{index:ot,...Nt}=Ie,ur=ie[ot];if(ur==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${ot}\`. The \`value\` or \`defaultValue\` length is : ${ie.length}`);const yn=me[ot];return{...Nt,ref:it,role:"slider",tabIndex:V?0:void 0,id:ge.getThumb(ot),"data-active":sl(F&&M===ot),"aria-valuetext":(Xe=T==null?void 0:T(ur))!=null?Xe:C==null?void 0:C[ot],"aria-valuemin":yn.min,"aria-valuemax":yn.max,"aria-valuenow":ur,"aria-orientation":d,"aria-disabled":Um(h),"aria-readonly":Um(g),"aria-label":_==null?void 0:_[ot],"aria-labelledby":_!=null&&_[ot]||k==null?void 0:k[ot],style:{...Ie.style,...vt(ot)},onKeyDown:Gm(Ie.onKeyDown,jt),onFocus:Gm(Ie.onFocus,()=>{K(!0),U(ot)}),onBlur:Gm(Ie.onBlur,()=>{K(!1),U(-1)})}},[ge,ie,me,V,F,M,T,C,d,h,g,_,k,vt,jt,K]),ln=f.useCallback((Ie={},it=null)=>({...Ie,ref:it,id:ge.output,htmlFor:ie.map((Xe,ot)=>ge.getThumb(ot)).join(" "),"aria-live":"off"}),[ge,ie]),Cr=f.useCallback((Ie,it=null)=>{const{value:Xe,...ot}=Ie,Nt=!(Xen),ur=Xe>=ie[0]&&Xe<=ie[ie.length-1];let yn=Zb(Xe,t,n);yn=B?100-yn:yn;const bn={position:"absolute",pointerEvents:"none",...FE({orientation:d,vertical:{bottom:`${yn}%`},horizontal:{left:`${yn}%`}})};return{...ot,ref:it,id:ge.getMarker(Ie.value),role:"presentation","aria-hidden":!0,"data-disabled":sl(h),"data-invalid":sl(!Nt),"data-highlighted":sl(ur),style:{...Ie.style,...bn}}},[h,B,n,t,d,ie,ge]),vn=f.useCallback((Ie,it=null)=>{const{index:Xe,...ot}=Ie;return{...ot,ref:it,id:ge.getInput(Xe),type:"hidden",value:ie[Xe],name:Array.isArray(P)?P[Xe]:`${P}-${Xe}`}},[P,ie,ge]);return{state:{value:ie,isFocused:G,isDragging:F,getThumbPercent:Ie=>re[Ie],getThumbMinValue:Ie=>me[Ie].min,getThumbMaxValue:Ie=>me[Ie].max},actions:Ue,getRootProps:Ft,getTrackProps:Wt,getInnerTrackProps:_n,getThumbProps:In,getMarkerProps:Cr,getInputProps:vn,getOutputProps:ln}}function rT(e,t,n,r){return e.map((o,s)=>{const i=s===0?t:e[s-1]+r,u=s===e.length-1?n:e[s+1]-r;return{min:i,max:u}})}var[oT,ih]=cr({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[sT,lh]=cr({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),a5=rt(function(t,n){const r={orientation:"horizontal",...t},o=uo("Slider",r),s=wr(r),{direction:i}=Kp();s.direction=i;const{getRootProps:u,...d}=nT(s),p=f.useMemo(()=>({...d,name:r.name}),[d,r.name]);return a.jsx(oT,{value:p,children:a.jsx(sT,{value:o,children:a.jsx(He.div,{...u({},n),className:"chakra-slider",__css:o.container,children:r.children})})})});a5.displayName="RangeSlider";var m0=rt(function(t,n){const{getThumbProps:r,getInputProps:o,name:s}=ih(),i=lh(),u=r(t,n);return a.jsxs(He.div,{...u,className:iv("chakra-slider__thumb",t.className),__css:i.thumb,children:[u.children,s&&a.jsx("input",{...o({index:t.index})})]})});m0.displayName="RangeSliderThumb";var i5=rt(function(t,n){const{getTrackProps:r}=ih(),o=lh(),s=r(t,n);return a.jsx(He.div,{...s,className:iv("chakra-slider__track",t.className),__css:o.track,"data-testid":"chakra-range-slider-track"})});i5.displayName="RangeSliderTrack";var l5=rt(function(t,n){const{getInnerTrackProps:r}=ih(),o=lh(),s=r(t,n);return a.jsx(He.div,{...s,className:"chakra-slider__filled-track",__css:o.filledTrack})});l5.displayName="RangeSliderFilledTrack";var xf=rt(function(t,n){const{getMarkerProps:r}=ih(),o=lh(),s=r(t,n);return a.jsx(He.div,{...s,className:iv("chakra-slider__marker",t.className),__css:o.mark})});xf.displayName="RangeSliderMark";var Xv=rt(function(t,n){const r=uo("Switch",t),{spacing:o="0.5rem",children:s,...i}=wr(t),{state:u,getInputProps:d,getCheckboxProps:p,getRootProps:h,getLabelProps:g}=z3(i),v=f.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),b=f.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),S=f.useMemo(()=>({userSelect:"none",marginStart:o,...r.label}),[o,r.label]);return a.jsxs(He.label,{...h(),className:Mt("chakra-switch",t.className),__css:v,children:[a.jsx("input",{className:"chakra-switch__input",...d({},n)}),a.jsx(He.span,{...p(),className:"chakra-switch__track",__css:b,children:a.jsx(He.span,{__css:r.thumb,className:"chakra-switch__thumb","data-checked":sn(u.isChecked),"data-hover":sn(u.isHovered)})}),s&&a.jsx(He.span,{className:"chakra-switch__label",...g(),__css:S,children:s})]})});Xv.displayName="Switch";var[aT,iT,lT,cT]=kv();function uT(e){var t;const{defaultIndex:n,onChange:r,index:o,isManual:s,isLazy:i,lazyBehavior:u="unmount",orientation:d="horizontal",direction:p="ltr",...h}=e,[g,v]=f.useState(n??0),[b,S]=bu({defaultValue:n??0,value:o,onChange:r});f.useEffect(()=>{o!=null&&v(o)},[o]);const x=lT(),C=f.useId();return{id:`tabs-${(t=e.id)!=null?t:C}`,selectedIndex:b,focusedIndex:g,setSelectedIndex:S,setFocusedIndex:v,isManual:s,isLazy:i,lazyBehavior:u,orientation:d,descendants:x,direction:p,htmlProps:h}}var[dT,ch]=cr({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function fT(e){const{focusedIndex:t,orientation:n,direction:r}=ch(),o=iT(),s=f.useCallback(i=>{const u=()=>{var k;const P=o.nextEnabled(t);P&&((k=P.node)==null||k.focus())},d=()=>{var k;const P=o.prevEnabled(t);P&&((k=P.node)==null||k.focus())},p=()=>{var k;const P=o.firstEnabled();P&&((k=P.node)==null||k.focus())},h=()=>{var k;const P=o.lastEnabled();P&&((k=P.node)==null||k.focus())},g=n==="horizontal",v=n==="vertical",b=i.key,S=r==="ltr"?"ArrowLeft":"ArrowRight",x=r==="ltr"?"ArrowRight":"ArrowLeft",_={[S]:()=>g&&d(),[x]:()=>g&&u(),ArrowDown:()=>v&&u(),ArrowUp:()=>v&&d(),Home:p,End:h}[b];_&&(i.preventDefault(),_(i))},[o,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:gt(e.onKeyDown,s)}}function pT(e){const{isDisabled:t,isFocusable:n,...r}=e,{setSelectedIndex:o,isManual:s,id:i,setFocusedIndex:u,selectedIndex:d}=ch(),{index:p,register:h}=cT({disabled:t&&!n}),g=p===d,v=()=>{o(p)},b=()=>{u(p),!s&&!(t&&n)&&o(p)},S=T6({...r,ref:Wn(h,e.ref),isDisabled:t,isFocusable:n,onClick:gt(e.onClick,v)}),x="button";return{...S,id:c5(i,p),role:"tab",tabIndex:g?0:-1,type:x,"aria-selected":g,"aria-controls":u5(i,p),onFocus:t?void 0:gt(e.onFocus,b)}}var[hT,mT]=cr({});function gT(e){const t=ch(),{id:n,selectedIndex:r}=t,s=qp(e.children).map((i,u)=>f.createElement(hT,{key:u,value:{isSelected:u===r,id:u5(n,u),tabId:c5(n,u),selectedIndex:r}},i));return{...e,children:s}}function vT(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:o}=ch(),{isSelected:s,id:i,tabId:u}=mT(),d=f.useRef(!1);s&&(d.current=!0);const p=Hv({wasSelected:d.current,isSelected:s,enabled:r,mode:o});return{tabIndex:0,...n,children:p?t:null,role:"tabpanel","aria-labelledby":u,hidden:!s,id:i}}function c5(e,t){return`${e}--tab-${t}`}function u5(e,t){return`${e}--tabpanel-${t}`}var[yT,uh]=cr({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Nu=rt(function(t,n){const r=uo("Tabs",t),{children:o,className:s,...i}=wr(t),{htmlProps:u,descendants:d,...p}=uT(i),h=f.useMemo(()=>p,[p]),{isFitted:g,...v}=u;return a.jsx(aT,{value:d,children:a.jsx(dT,{value:h,children:a.jsx(yT,{value:r,children:a.jsx(He.div,{className:Mt("chakra-tabs",s),ref:n,...v,__css:r.root,children:o})})})})});Nu.displayName="Tabs";var $u=rt(function(t,n){const r=fT({...t,ref:n}),s={display:"flex",...uh().tablist};return a.jsx(He.div,{...r,className:Mt("chakra-tabs__tablist",t.className),__css:s})});$u.displayName="TabList";var dh=rt(function(t,n){const r=vT({...t,ref:n}),o=uh();return a.jsx(He.div,{outline:"0",...r,className:Mt("chakra-tabs__tab-panel",t.className),__css:o.tabpanel})});dh.displayName="TabPanel";var fh=rt(function(t,n){const r=gT(t),o=uh();return a.jsx(He.div,{...r,width:"100%",ref:n,className:Mt("chakra-tabs__tab-panels",t.className),__css:o.tabpanels})});fh.displayName="TabPanels";var Bl=rt(function(t,n){const r=uh(),o=pT({...t,ref:n}),s={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return a.jsx(He.button,{...o,className:Mt("chakra-tabs__tab",t.className),__css:s})});Bl.displayName="Tab";function bT(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var xT=["h","minH","height","minHeight"],d5=rt((e,t)=>{const n=Zl("Textarea",e),{className:r,rows:o,...s}=wr(e),i=av(s),u=o?bT(n,xT):n;return a.jsx(He.textarea,{ref:t,rows:o,...i,className:Mt("chakra-textarea",r),__css:u})});d5.displayName="Textarea";const f5=({id:e,x:t,y:n,width:r,height:o,style:s,color:i,strokeColor:u,strokeWidth:d,className:p,borderRadius:h,shapeRendering:g,onClick:v})=>{const{background:b,backgroundColor:S}=s||{},x=i||b||S;return a.jsx("rect",{className:Qp(["react-flow__minimap-node",p]),x:t,y:n,rx:h,ry:h,width:r,height:o,fill:x,stroke:u,strokeWidth:d,shapeRendering:g,onClick:v?C=>v(C,e):void 0})};f5.displayName="MiniMapNode";var wT=f.memo(f5);const ST=e=>e.nodeOrigin,CT=e=>e.getNodes().filter(t=>!t.hidden&&t.width&&t.height),ug=e=>e instanceof Function?e:()=>e;function _T({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o=2,nodeComponent:s=wT,onClick:i}){const u=_f(CT,lv),d=_f(ST),p=ug(t),h=ug(e),g=ug(n),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return a.jsx(a.Fragment,{children:u.map(b=>{const{x:S,y:x}=VE(b,d).positionAbsolute;return a.jsx(s,{x:S,y:x,width:b.width,height:b.height,style:b.style,className:g(b),color:p(b),borderRadius:r,strokeColor:h(b),strokeWidth:o,shapeRendering:v,onClick:i,id:b.id},b.id)})})}var kT=f.memo(_T);const jT=200,PT=150,IT=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?KE(QE(t,e.nodeOrigin),n):n,rfId:e.rfId}},ET="react-flow__minimap-desc";function p5({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:i=2,nodeComponent:u,maskColor:d="rgb(240, 240, 240, 0.6)",maskStrokeColor:p="none",maskStrokeWidth:h=1,position:g="bottom-right",onClick:v,onNodeClick:b,pannable:S=!1,zoomable:x=!1,ariaLabel:C="React Flow mini map",inversePan:_=!1,zoomStep:k=10}){const P=P4(),I=f.useRef(null),{boundingRect:E,viewBB:O,rfId:R}=_f(IT,lv),D=(e==null?void 0:e.width)??jT,T=(e==null?void 0:e.height)??PT,B=E.width/D,W=E.height/T,J=Math.max(B,W),F=J*D,N=J*T,G=5*J,K=E.x-(F-E.width)/2-G,M=E.y-(N-E.height)/2-G,U=F+G*2,V=N+G*2,ee=`${ET}-${R}`,ie=f.useRef(0);ie.current=J,f.useEffect(()=>{if(I.current){const ae=I4(I.current),te=pe=>{const{transform:ne,d3Selection:ve,d3Zoom:de}=P.getState();if(pe.sourceEvent.type!=="wheel"||!ve||!de)return;const Ce=-pe.sourceEvent.deltaY*(pe.sourceEvent.deltaMode===1?.05:pe.sourceEvent.deltaMode?1:.002)*k,Re=ne[2]*Math.pow(2,Ce);de.scaleTo(ve,Re)},H=pe=>{const{transform:ne,d3Selection:ve,d3Zoom:de,translateExtent:Ce,width:Re,height:ge}=P.getState();if(pe.sourceEvent.type!=="mousemove"||!ve||!de)return;const _e=ie.current*Math.max(1,ne[2])*(_?-1:1),We={x:ne[0]-pe.sourceEvent.movementX*_e,y:ne[1]-pe.sourceEvent.movementY*_e},Le=[[0,0],[Re,ge]],Ue=GE.translate(We.x,We.y).scale(ne[2]),jt=de.constrain()(Ue,Le,Ce);de.transform(ve,jt)},re=UE().on("zoom",S?H:null).on("zoom.wheel",x?te:null);return ae.call(re),()=>{ae.on("zoom",null)}}},[S,x,_,k]);const xe=v?ae=>{const te=qE(ae);v(ae,{x:te[0],y:te[1]})}:void 0,me=b?(ae,te)=>{const H=P.getState().nodeInternals.get(te);b(ae,H)}:void 0;return a.jsx(Su,{position:g,style:e,className:Qp(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:a.jsxs("svg",{width:D,height:T,viewBox:`${K} ${M} ${U} ${V}`,role:"img","aria-labelledby":ee,ref:I,onClick:xe,children:[C&&a.jsx("title",{id:ee,children:C}),a.jsx(kT,{onClick:me,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:i,nodeComponent:u}),a.jsx("path",{className:"react-flow__minimap-mask",d:`M${K-G},${M-G}h${U+G*2}v${V+G*2}h${-U-G*2}z - M${O.x},${O.y}h${O.width}v${O.height}h${-O.width}z`,fill:d,fillRule:"evenodd",stroke:p,strokeWidth:h,pointerEvents:"none"})]})})}p5.displayName="MiniMap";var OT=f.memo(p5),ds;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(ds||(ds={}));function MT({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 RT({color:e,radius:t}){return a.jsx("circle",{cx:t,cy:t,r:t,fill:e})}const DT={[ds.Dots]:"#91919a",[ds.Lines]:"#eee",[ds.Cross]:"#e2e2e2"},AT={[ds.Dots]:1,[ds.Lines]:1,[ds.Cross]:6},TT=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function h5({id:e,variant:t=ds.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=2,color:i,style:u,className:d}){const p=f.useRef(null),{transform:h,patternId:g}=_f(TT,lv),v=i||DT[t],b=r||AT[t],S=t===ds.Dots,x=t===ds.Cross,C=Array.isArray(n)?n:[n,n],_=[C[0]*h[2]||1,C[1]*h[2]||1],k=b*h[2],P=x?[k,k]:_,I=S?[k/s,k/s]:[P[0]/s,P[1]/s];return a.jsxs("svg",{className:Qp(["react-flow__background",d]),style:{...u,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:p,"data-testid":"rf__background",children:[a.jsx("pattern",{id:g+e,x:h[0]%_[0],y:h[1]%_[1],width:_[0],height:_[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${I[0]},-${I[1]})`,children:S?a.jsx(RT,{color:v,radius:k/s}):a.jsx(MT,{dimensions:P,color:v,lineWidth:o})}),a.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${g+e})`})]})}h5.displayName="Background";var NT=f.memo(h5),Xc;(function(e){e.Line="line",e.Handle="handle"})(Xc||(Xc={}));function $T({width:e,prevWidth:t,height:n,prevHeight:r,invertX:o,invertY:s}){const i=e-t,u=n-r,d=[i>0?1:i<0?-1:0,u>0?1:u<0?-1:0];return i&&o&&(d[0]=d[0]*-1),u&&s&&(d[1]=d[1]*-1),d}const m5={width:0,height:0,x:0,y:0},zT={...m5,pointerX:0,pointerY:0,aspectRatio:1};function LT({nodeId:e,position:t,variant:n=Xc.Handle,className:r,style:o={},children:s,color:i,minWidth:u=10,minHeight:d=10,maxWidth:p=Number.MAX_VALUE,maxHeight:h=Number.MAX_VALUE,keepAspectRatio:g=!1,shouldResize:v,onResizeStart:b,onResize:S,onResizeEnd:x}){const C=YE(),_=typeof e=="string"?e:C,k=P4(),P=f.useRef(null),I=f.useRef(zT),E=f.useRef(m5),O=XE(),R=n===Xc.Line?"right":"bottom-right",D=t??R;f.useEffect(()=>{if(!P.current||!_)return;const J=I4(P.current),F=D.includes("right")||D.includes("left"),N=D.includes("bottom")||D.includes("top"),G=D.includes("left"),K=D.includes("top"),M=JE().on("start",U=>{const V=k.getState().nodeInternals.get(_),{xSnapped:ee,ySnapped:ie}=O(U);E.current={width:(V==null?void 0:V.width)??0,height:(V==null?void 0:V.height)??0,x:(V==null?void 0:V.position.x)??0,y:(V==null?void 0:V.position.y)??0},I.current={...E.current,pointerX:ee,pointerY:ie,aspectRatio:E.current.width/E.current.height},b==null||b(U,{...E.current})}).on("drag",U=>{const{nodeInternals:V,triggerNodeChanges:ee}=k.getState(),{xSnapped:ie,ySnapped:xe}=O(U),me=V.get(_);if(me){const ae=[],{pointerX:te,pointerY:H,width:re,height:pe,x:ne,y:ve,aspectRatio:de}=I.current,{x:Ce,y:Re,width:ge,height:_e}=E.current,We=Math.floor(F?ie-te:0),Le=Math.floor(N?xe-H:0);let Ue=ex(re+(G?-We:We),u,p),jt=ex(pe+(K?-Le:Le),d,h);if(g){const Ae=Ue/jt,Et=F&&N,Ft=F&&!N,Wt=N&&!F;Ue=Ae<=de&&Et||Wt?jt*de:Ue,jt=Ae>de&&Et||Ft?Ue/de:jt,Ue>=p?(Ue=p,jt=p/de):Ue<=u&&(Ue=u,jt=u/de),jt>=h?(jt=h,Ue=h*de):jt<=d&&(jt=d,Ue=d*de)}const vt=Ue!==ge,jn=jt!==_e;if(G||K){const Ae=G?ne-(Ue-re):ne,Et=K?ve-(jt-pe):ve,Ft=Ae!==Ce&&vt,Wt=Et!==Re&&jn;if(Ft||Wt){const _n={id:me.id,type:"position",position:{x:Ft?Ae:Ce,y:Wt?Et:Re}};ae.push(_n),E.current.x=_n.position.x,E.current.y=_n.position.y}}if(vt||jn){const Ae={id:_,type:"dimensions",updateStyle:!0,resizing:!0,dimensions:{width:Ue,height:jt}};ae.push(Ae),E.current.width=Ue,E.current.height=jt}if(ae.length===0)return;const Pt=$T({width:E.current.width,prevWidth:ge,height:E.current.height,prevHeight:_e,invertX:G,invertY:K}),bt={...E.current,direction:Pt};if((v==null?void 0:v(U,bt))===!1)return;S==null||S(U,bt),ee(ae)}}).on("end",U=>{const V={id:_,type:"dimensions",resizing:!1};x==null||x(U,{...E.current}),k.getState().triggerNodeChanges([V])});return J.call(M),()=>{J.on(".drag",null)}},[_,D,u,d,p,h,g,O,b,S,x]);const T=D.split("-"),B=n===Xc.Line?"borderColor":"backgroundColor",W=i?{...o,[B]:i}:o;return a.jsx("div",{className:Qp(["react-flow__resize-control","nodrag",...T,n,r]),ref:P,style:W,children:s})}var BT=f.memo(LT);const or=he(e=>e.ui,e=>ZE[e.activeTab],{memoizeOptions:{equalityCheck:Gt}}),FT=he(e=>e.ui,e=>e.activeTab,{memoizeOptions:{equalityCheck:Gt}}),Zr=he(e=>e.ui,e=>e,{memoizeOptions:{equalityCheck:Gt}});var HT=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 zu(e,t){var n=WT(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 WT(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),o=HT.get(r);o&&Object.defineProperty(e,"type",{value:o,writable:!1,configurable:!1,enumerable:!0})}return e}var VT=[".DS_Store","Thumbs.db"];function UT(e){return sc(this,void 0,void 0,function(){return ac(this,function(t){return Ff(e)&>(e.dataTransfer)?[2,YT(e.dataTransfer,e.type)]:qT(e)?[2,KT(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,QT(e)]:[2,[]]})})}function GT(e){return Ff(e)}function qT(e){return Ff(e)&&Ff(e.target)}function Ff(e){return typeof e=="object"&&e!==null}function KT(e){return g0(e.target.files).map(function(t){return zu(t)})}function QT(e){return sc(this,void 0,void 0,function(){var t;return ac(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 zu(r)})]}})})}function YT(e,t){return sc(this,void 0,void 0,function(){var n,r;return ac(this,function(o){switch(o.label){case 0:return e.items?(n=g0(e.items).filter(function(s){return s.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(XT))]):[3,2];case 1:return r=o.sent(),[2,l2(g5(r))];case 2:return[2,l2(g0(e.files).map(function(s){return zu(s)}))]}})})}function l2(e){return e.filter(function(t){return VT.indexOf(t.name)===-1})}function g0(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,p2(n)];if(e.sizen)return[!1,p2(n)]}return[!0,null]}function bi(e){return e!=null}function pN(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,s=e.multiple,i=e.maxFiles,u=e.validator;return!s&&t.length>1||s&&i>=1&&t.length>i?!1:t.every(function(d){var p=x5(d,n),h=uu(p,1),g=h[0],v=w5(d,r,o),b=uu(v,1),S=b[0],x=u?u(d):null;return g&&S&&!x})}function Hf(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function Nd(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 m2(e){e.preventDefault()}function hN(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function mN(e){return e.indexOf("Edge/")!==-1}function gN(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return hN(e)||mN(e)}function As(){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 DN(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 Jv=f.forwardRef(function(e,t){var n=e.children,r=Wf(e,SN),o=Zv(r),s=o.open,i=Wf(o,CN);return f.useImperativeHandle(t,function(){return{open:s}},[s]),z.createElement(f.Fragment,null,n(tr(tr({},i),{},{open:s})))});Jv.displayName="Dropzone";var k5={disabled:!1,getFilesFromEvent:UT,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};Jv.defaultProps=k5;Jv.propTypes={children:Dn.func,accept:Dn.objectOf(Dn.arrayOf(Dn.string)),multiple:Dn.bool,preventDropOnDocument:Dn.bool,noClick:Dn.bool,noKeyboard:Dn.bool,noDrag:Dn.bool,noDragEventsBubbling:Dn.bool,minSize:Dn.number,maxSize:Dn.number,maxFiles:Dn.number,disabled:Dn.bool,getFilesFromEvent:Dn.func,onFileDialogCancel:Dn.func,onFileDialogOpen:Dn.func,useFsAccessApi:Dn.bool,autoFocus:Dn.bool,onDragEnter:Dn.func,onDragLeave:Dn.func,onDragOver:Dn.func,onDrop:Dn.func,onDropAccepted:Dn.func,onDropRejected:Dn.func,onError:Dn.func,validator:Dn.func};var x0={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Zv(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=tr(tr({},k5),e),n=t.accept,r=t.disabled,o=t.getFilesFromEvent,s=t.maxSize,i=t.minSize,u=t.multiple,d=t.maxFiles,p=t.onDragEnter,h=t.onDragLeave,g=t.onDragOver,v=t.onDrop,b=t.onDropAccepted,S=t.onDropRejected,x=t.onFileDialogCancel,C=t.onFileDialogOpen,_=t.useFsAccessApi,k=t.autoFocus,P=t.preventDropOnDocument,I=t.noClick,E=t.noKeyboard,O=t.noDrag,R=t.noDragEventsBubbling,D=t.onError,T=t.validator,B=f.useMemo(function(){return bN(n)},[n]),W=f.useMemo(function(){return yN(n)},[n]),J=f.useMemo(function(){return typeof C=="function"?C:v2},[C]),F=f.useMemo(function(){return typeof x=="function"?x:v2},[x]),N=f.useRef(null),G=f.useRef(null),K=f.useReducer(AN,x0),M=dg(K,2),U=M[0],V=M[1],ee=U.isFocused,ie=U.isFileDialogActive,xe=f.useRef(typeof window<"u"&&window.isSecureContext&&_&&vN()),me=function(){!xe.current&&ie&&setTimeout(function(){if(G.current){var Ae=G.current.files;Ae.length||(V({type:"closeDialog"}),F())}},300)};f.useEffect(function(){return window.addEventListener("focus",me,!1),function(){window.removeEventListener("focus",me,!1)}},[G,ie,F,xe]);var ae=f.useRef([]),te=function(Ae){N.current&&N.current.contains(Ae.target)||(Ae.preventDefault(),ae.current=[])};f.useEffect(function(){return P&&(document.addEventListener("dragover",m2,!1),document.addEventListener("drop",te,!1)),function(){P&&(document.removeEventListener("dragover",m2),document.removeEventListener("drop",te))}},[N,P]),f.useEffect(function(){return!r&&k&&N.current&&N.current.focus(),function(){}},[N,k,r]);var H=f.useCallback(function(be){D?D(be):console.error(be)},[D]),re=f.useCallback(function(be){be.preventDefault(),be.persist(),vt(be),ae.current=[].concat(jN(ae.current),[be.target]),Nd(be)&&Promise.resolve(o(be)).then(function(Ae){if(!(Hf(be)&&!R)){var Et=Ae.length,Ft=Et>0&&pN({files:Ae,accept:B,minSize:i,maxSize:s,multiple:u,maxFiles:d,validator:T}),Wt=Et>0&&!Ft;V({isDragAccept:Ft,isDragReject:Wt,isDragActive:!0,type:"setDraggedFiles"}),p&&p(be)}}).catch(function(Ae){return H(Ae)})},[o,p,H,R,B,i,s,u,d,T]),pe=f.useCallback(function(be){be.preventDefault(),be.persist(),vt(be);var Ae=Nd(be);if(Ae&&be.dataTransfer)try{be.dataTransfer.dropEffect="copy"}catch{}return Ae&&g&&g(be),!1},[g,R]),ne=f.useCallback(function(be){be.preventDefault(),be.persist(),vt(be);var Ae=ae.current.filter(function(Ft){return N.current&&N.current.contains(Ft)}),Et=Ae.indexOf(be.target);Et!==-1&&Ae.splice(Et,1),ae.current=Ae,!(Ae.length>0)&&(V({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Nd(be)&&h&&h(be))},[N,h,R]),ve=f.useCallback(function(be,Ae){var Et=[],Ft=[];be.forEach(function(Wt){var _n=x5(Wt,B),In=dg(_n,2),ln=In[0],Cr=In[1],vn=w5(Wt,i,s),sr=dg(vn,2),Ie=sr[0],it=sr[1],Xe=T?T(Wt):null;if(ln&&Ie&&!Xe)Et.push(Wt);else{var ot=[Cr,it];Xe&&(ot=ot.concat(Xe)),Ft.push({file:Wt,errors:ot.filter(function(Nt){return Nt})})}}),(!u&&Et.length>1||u&&d>=1&&Et.length>d)&&(Et.forEach(function(Wt){Ft.push({file:Wt,errors:[fN]})}),Et.splice(0)),V({acceptedFiles:Et,fileRejections:Ft,type:"setFiles"}),v&&v(Et,Ft,Ae),Ft.length>0&&S&&S(Ft,Ae),Et.length>0&&b&&b(Et,Ae)},[V,u,B,i,s,d,v,b,S,T]),de=f.useCallback(function(be){be.preventDefault(),be.persist(),vt(be),ae.current=[],Nd(be)&&Promise.resolve(o(be)).then(function(Ae){Hf(be)&&!R||ve(Ae,be)}).catch(function(Ae){return H(Ae)}),V({type:"reset"})},[o,ve,H,R]),Ce=f.useCallback(function(){if(xe.current){V({type:"openDialog"}),J();var be={multiple:u,types:W};window.showOpenFilePicker(be).then(function(Ae){return o(Ae)}).then(function(Ae){ve(Ae,null),V({type:"closeDialog"})}).catch(function(Ae){xN(Ae)?(F(Ae),V({type:"closeDialog"})):wN(Ae)?(xe.current=!1,G.current?(G.current.value=null,G.current.click()):H(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."))):H(Ae)});return}G.current&&(V({type:"openDialog"}),J(),G.current.value=null,G.current.click())},[V,J,F,_,ve,H,W,u]),Re=f.useCallback(function(be){!N.current||!N.current.isEqualNode(be.target)||(be.key===" "||be.key==="Enter"||be.keyCode===32||be.keyCode===13)&&(be.preventDefault(),Ce())},[N,Ce]),ge=f.useCallback(function(){V({type:"focus"})},[]),_e=f.useCallback(function(){V({type:"blur"})},[]),We=f.useCallback(function(){I||(gN()?setTimeout(Ce,0):Ce())},[I,Ce]),Le=function(Ae){return r?null:Ae},Ue=function(Ae){return E?null:Le(Ae)},jt=function(Ae){return O?null:Le(Ae)},vt=function(Ae){R&&Ae.stopPropagation()},jn=f.useMemo(function(){return function(){var be=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ae=be.refKey,Et=Ae===void 0?"ref":Ae,Ft=be.role,Wt=be.onKeyDown,_n=be.onFocus,In=be.onBlur,ln=be.onClick,Cr=be.onDragEnter,vn=be.onDragOver,sr=be.onDragLeave,Ie=be.onDrop,it=Wf(be,_N);return tr(tr(b0({onKeyDown:Ue(As(Wt,Re)),onFocus:Ue(As(_n,ge)),onBlur:Ue(As(In,_e)),onClick:Le(As(ln,We)),onDragEnter:jt(As(Cr,re)),onDragOver:jt(As(vn,pe)),onDragLeave:jt(As(sr,ne)),onDrop:jt(As(Ie,de)),role:typeof Ft=="string"&&Ft!==""?Ft:"presentation"},Et,N),!r&&!E?{tabIndex:0}:{}),it)}},[N,Re,ge,_e,We,re,pe,ne,de,E,O,r]),Pt=f.useCallback(function(be){be.stopPropagation()},[]),bt=f.useMemo(function(){return function(){var be=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ae=be.refKey,Et=Ae===void 0?"ref":Ae,Ft=be.onChange,Wt=be.onClick,_n=Wf(be,kN),In=b0({accept:B,multiple:u,type:"file",style:{display:"none"},onChange:Le(As(Ft,de)),onClick:Le(As(Wt,Pt)),tabIndex:-1},Et,G);return tr(tr({},In),_n)}},[G,n,u,de,r]);return tr(tr({},U),{},{isFocused:ee&&!r,getRootProps:jn,getInputProps:bt,rootRef:N,inputRef:G,open:Le(Ce)})}function AN(e,t){switch(t.type){case"focus":return tr(tr({},e),{},{isFocused:!0});case"blur":return tr(tr({},e),{},{isFocused:!1});case"openDialog":return tr(tr({},x0),{},{isFileDialogActive:!0});case"closeDialog":return tr(tr({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return tr(tr({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return tr(tr({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return tr({},x0);default:return e}}function v2(){}function w0(){return w0=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 FN=function(t,n,r){r===void 0&&(r=!1);var o=n.alt,s=n.meta,i=n.mod,u=n.shift,d=n.ctrl,p=n.keys,h=t.key,g=t.code,v=t.ctrlKey,b=t.metaKey,S=t.shiftKey,x=t.altKey,C=Wa(g),_=h.toLowerCase();if(!r){if(o===!x&&_!=="alt"||u===!S&&_!=="shift")return!1;if(i){if(!b&&!v)return!1}else if(s===!b&&_!=="meta"&&_!=="os"||d===!v&&_!=="ctrl"&&_!=="control")return!1}return p&&p.length===1&&(p.includes(_)||p.includes(C))?!0:p?P5(p):!p},HN=f.createContext(void 0),WN=function(){return f.useContext(HN)};function M5(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&&M5(e[r],t[r])},!0):e===t}var VN=f.createContext({hotkeys:[],enabledScopes:[],toggleScope:function(){},enableScope:function(){},disableScope:function(){}}),UN=function(){return f.useContext(VN)};function GN(e){var t=f.useRef(void 0);return M5(t.current,e)||(t.current=e),t.current}var y2=function(t){t.stopPropagation(),t.preventDefault(),t.stopImmediatePropagation()},qN=typeof window<"u"?f.useLayoutEffect:f.useEffect;function Ye(e,t,n,r){var o=f.useRef(null),s=f.useRef(!1),i=n instanceof Array?r instanceof Array?void 0:r:n,u=e instanceof Array?e.join(i==null?void 0:i.splitKey):e,d=n instanceof Array?n:r instanceof Array?r:void 0,p=f.useCallback(t,d??[]),h=f.useRef(p);d?h.current=p:h.current=t;var g=GN(i),v=UN(),b=v.enabledScopes,S=WN();return qN(function(){if(!((g==null?void 0:g.enabled)===!1||!BN(b,g==null?void 0:g.scopes))){var x=function(I,E){var O;if(E===void 0&&(E=!1),!(LN(I)&&!O5(I,g==null?void 0:g.enableOnFormTags))&&!(g!=null&&g.ignoreEventWhen!=null&&g.ignoreEventWhen(I))){if(o.current!==null&&document.activeElement!==o.current&&!o.current.contains(document.activeElement)){y2(I);return}(O=I.target)!=null&&O.isContentEditable&&!(g!=null&&g.enableOnContentEditable)||fg(u,g==null?void 0:g.splitKey).forEach(function(R){var D,T=pg(R,g==null?void 0:g.combinationKey);if(FN(I,T,g==null?void 0:g.ignoreModifiers)||(D=T.keys)!=null&&D.includes("*")){if(E&&s.current)return;if($N(I,T,g==null?void 0:g.preventDefault),!zN(I,T,g==null?void 0:g.enabled)){y2(I);return}h.current(I,T),E||(s.current=!0)}})}},C=function(I){I.key!==void 0&&(I5(Wa(I.code)),((g==null?void 0:g.keydown)===void 0&&(g==null?void 0:g.keyup)!==!0||g!=null&&g.keydown)&&x(I))},_=function(I){I.key!==void 0&&(E5(Wa(I.code)),s.current=!1,g!=null&&g.keyup&&x(I,!0))},k=o.current||(i==null?void 0:i.document)||document;return k.addEventListener("keyup",_),k.addEventListener("keydown",C),S&&fg(u,g==null?void 0:g.splitKey).forEach(function(P){return S.addHotkey(pg(P,g==null?void 0:g.combinationKey,g==null?void 0:g.description))}),function(){k.removeEventListener("keyup",_),k.removeEventListener("keydown",C),S&&fg(u,g==null?void 0:g.splitKey).forEach(function(P){return S.removeHotkey(pg(P,g==null?void 0:g.combinationKey,g==null?void 0:g.description))})}}},[u,g,b]),o}const KN=e=>{const{isDragAccept:t,isDragReject:n,setIsHandlingUpload:r}=e;return Ye("esc",()=>{r(!1)}),a.jsxs($e,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"100vw",height:"100vh",zIndex:999,backdropFilter:"blur(20px)"},children:[a.jsx(L,{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(L,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"full",height:"full",alignItems:"center",justifyContent:"center",p:4},children:a.jsx(L,{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(zs,{size:"lg",children:"Drop to Upload"}):a.jsxs(a.Fragment,{children:[a.jsx(zs,{size:"lg",children:"Invalid Upload"}),a.jsx(zs,{size:"md",children:"Must be single JPEG or PNG image"})]})})})]})},QN=he([mt,or],({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}},Ke),YN=e=>{const{children:t}=e,{autoAddBoardId:n,postUploadAction:r}=$(QN),o=$(Sr),s=tc(),{t:i}=ue(),[u,d]=f.useState(!1),[p]=E4(),h=f.useCallback(P=>{d(!0),s({title:i("toast.uploadFailed"),description:P.errors.map(I=>I.message).join(` -`),status:"error"})},[i,s]),g=f.useCallback(async P=>{p({file:P,image_category:"user",is_intermediate:!1,postUploadAction:r,board_id:n})},[n,r,p]),v=f.useCallback((P,I)=>{if(I.length>1){s({title:i("toast.uploadFailed"),description:i("toast.uploadFailedInvalidUploadDesc"),status:"error"});return}I.forEach(E=>{h(E)}),P.forEach(E=>{g(E)})},[i,s,g,h]),{getRootProps:b,getInputProps:S,isDragAccept:x,isDragReject:C,isDragActive:_,inputRef:k}=Zv({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:v,onDragOver:()=>d(!0),disabled:o,multiple:!1});return f.useEffect(()=>{const P=async I=>{var E,O;k.current&&(E=I.clipboardData)!=null&&E.files&&(k.current.files=I.clipboardData.files,(O=k.current)==null||O.dispatchEvent(new Event("change",{bubbles:!0})))};return document.addEventListener("paste",P),()=>{document.removeEventListener("paste",P)}},[k]),a.jsxs($e,{...b({style:{}}),onKeyDown:P=>{P.key},children:[a.jsx("input",{...S()}),t,a.jsx(Ko,{children:_&&u&&a.jsx(Jr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(KN,{isDragAccept:x,isDragReject:C,setIsHandlingUpload:d})},"image-upload-overlay")})]})},XN=f.memo(YN),en=e=>e.canvas,Jn=he([en,or,xo],(e,t,n)=>e.layerState.stagingArea.images.length>0||t==="unifiedCanvas"&&n.isProcessing),JN=e=>e.canvas.layerState.objects.find(O4),ZN=mM(e=>{e(M4(!0))},300),yo=()=>(e,t)=>{or(t())==="unifiedCanvas"&&ZN(e)};var e$=globalThis&&globalThis.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(r[s]=o[s])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),vr=globalThis&&globalThis.__assign||function(){return vr=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"u"?void 0:Number(r),maxHeight:typeof o>"u"?void 0:Number(o),minWidth:typeof s>"u"?void 0:Number(s),minHeight:typeof i>"u"?void 0:Number(i)}},i$=["as","style","className","grid","snap","bounds","boundsByDirection","size","defaultSize","minWidth","minHeight","maxWidth","maxHeight","lockAspectRatio","lockAspectRatioExtraWidth","lockAspectRatioExtraHeight","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","children","onResizeStart","onResize","onResizeStop","handleComponent","scale","resizeRatio","snapGap"],C2="__resizable_base__",l$=function(e){r$(t,e);function t(n){var r=e.call(this,n)||this;return r.ratio=1,r.resizable=null,r.parentLeft=0,r.parentTop=0,r.resizableLeft=0,r.resizableRight=0,r.resizableTop=0,r.resizableBottom=0,r.targetLeft=0,r.targetTop=0,r.appendBase=function(){if(!r.resizable||!r.window)return null;var o=r.parentNode;if(!o)return null;var s=r.window.document.createElement("div");return s.style.width="100%",s.style.height="100%",s.style.position="absolute",s.style.transform="scale(0, 0)",s.style.left="0",s.style.flex="0 0 100%",s.classList?s.classList.add(C2):s.className+=C2,o.appendChild(s),s},r.removeBase=function(o){var s=r.parentNode;s&&s.removeChild(o)},r.ref=function(o){o&&(r.resizable=o)},r.state={isResizing:!1,width:typeof(r.propsSize&&r.propsSize.width)>"u"?"auto":r.propsSize&&r.propsSize.width,height:typeof(r.propsSize&&r.propsSize.height)>"u"?"auto":r.propsSize&&r.propsSize.height,direction:"right",original:{x:0,y:0,width:0,height:0},backgroundStyle:{height:"100%",width:"100%",backgroundColor:"rgba(0,0,0,0)",cursor:"auto",opacity:0,position:"fixed",zIndex:9999,top:"0",left:"0",bottom:"0",right:"0"},flexBasis:void 0},r.onResizeStart=r.onResizeStart.bind(r),r.onMouseMove=r.onMouseMove.bind(r),r.onMouseUp=r.onMouseUp.bind(r),r}return Object.defineProperty(t.prototype,"parentNode",{get:function(){return this.resizable?this.resizable.parentNode:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"window",{get:function(){return!this.resizable||!this.resizable.ownerDocument?null:this.resizable.ownerDocument.defaultView},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"propsSize",{get:function(){return this.props.size||this.props.defaultSize||o$},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){var n=0,r=0;if(this.resizable&&this.window){var o=this.resizable.offsetWidth,s=this.resizable.offsetHeight,i=this.resizable.style.position;i!=="relative"&&(this.resizable.style.position="relative"),n=this.resizable.style.width!=="auto"?this.resizable.offsetWidth:o,r=this.resizable.style.height!=="auto"?this.resizable.offsetHeight:s,this.resizable.style.position=i}return{width:n,height:r}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sizeStyle",{get:function(){var n=this,r=this.props.size,o=function(u){if(typeof n.state[u]>"u"||n.state[u]==="auto")return"auto";if(n.propsSize&&n.propsSize[u]&&n.propsSize[u].toString().endsWith("%")){if(n.state[u].toString().endsWith("%"))return n.state[u].toString();var d=n.getParentSize(),p=Number(n.state[u].toString().replace("px","")),h=p/d[u]*100;return h+"%"}return hg(n.state[u])},s=r&&typeof r.width<"u"&&!this.state.isResizing?hg(r.width):o("width"),i=r&&typeof r.height<"u"&&!this.state.isResizing?hg(r.height):o("height");return{width:s,height:i}},enumerable:!1,configurable:!0}),t.prototype.getParentSize=function(){if(!this.parentNode)return this.window?{width:this.window.innerWidth,height:this.window.innerHeight}:{width:0,height:0};var n=this.appendBase();if(!n)return{width:0,height:0};var r=!1,o=this.parentNode.style.flexWrap;o!=="wrap"&&(r=!0,this.parentNode.style.flexWrap="wrap"),n.style.position="relative",n.style.minWidth="100%",n.style.minHeight="100%";var s={width:n.offsetWidth,height:n.offsetHeight};return r&&(this.parentNode.style.flexWrap=o),this.removeBase(n),s},t.prototype.bindEvents=function(){this.window&&(this.window.addEventListener("mouseup",this.onMouseUp),this.window.addEventListener("mousemove",this.onMouseMove),this.window.addEventListener("mouseleave",this.onMouseUp),this.window.addEventListener("touchmove",this.onMouseMove,{capture:!0,passive:!1}),this.window.addEventListener("touchend",this.onMouseUp))},t.prototype.unbindEvents=function(){this.window&&(this.window.removeEventListener("mouseup",this.onMouseUp),this.window.removeEventListener("mousemove",this.onMouseMove),this.window.removeEventListener("mouseleave",this.onMouseUp),this.window.removeEventListener("touchmove",this.onMouseMove,!0),this.window.removeEventListener("touchend",this.onMouseUp))},t.prototype.componentDidMount=function(){if(!(!this.resizable||!this.window)){var n=this.window.getComputedStyle(this.resizable);this.setState({width:this.state.width||this.size.width,height:this.state.height||this.size.height,flexBasis:n.flexBasis!=="auto"?n.flexBasis:void 0})}},t.prototype.componentWillUnmount=function(){this.window&&this.unbindEvents()},t.prototype.createSizeForCssProperty=function(n,r){var o=this.propsSize&&this.propsSize[r];return this.state[r]==="auto"&&this.state.original[r]===n&&(typeof o>"u"||o==="auto")?"auto":n},t.prototype.calculateNewMaxFromBoundary=function(n,r){var o=this.props.boundsByDirection,s=this.state.direction,i=o&&pl("left",s),u=o&&pl("top",s),d,p;if(this.props.bounds==="parent"){var h=this.parentNode;h&&(d=i?this.resizableRight-this.parentLeft:h.offsetWidth+(this.parentLeft-this.resizableLeft),p=u?this.resizableBottom-this.parentTop:h.offsetHeight+(this.parentTop-this.resizableTop))}else this.props.bounds==="window"?this.window&&(d=i?this.resizableRight:this.window.innerWidth-this.resizableLeft,p=u?this.resizableBottom:this.window.innerHeight-this.resizableTop):this.props.bounds&&(d=i?this.resizableRight-this.targetLeft:this.props.bounds.offsetWidth+(this.targetLeft-this.resizableLeft),p=u?this.resizableBottom-this.targetTop:this.props.bounds.offsetHeight+(this.targetTop-this.resizableTop));return d&&Number.isFinite(d)&&(n=n&&n"u"?10:s.width,g=typeof o.width>"u"||o.width<0?n:o.width,v=typeof s.height>"u"?10:s.height,b=typeof o.height>"u"||o.height<0?r:o.height,S=d||0,x=p||0;if(u){var C=(v-S)*this.ratio+x,_=(b-S)*this.ratio+x,k=(h-x)/this.ratio+S,P=(g-x)/this.ratio+S,I=Math.max(h,C),E=Math.min(g,_),O=Math.max(v,k),R=Math.min(b,P);n=zd(n,I,E),r=zd(r,O,R)}else n=zd(n,h,g),r=zd(r,v,b);return{newWidth:n,newHeight:r}},t.prototype.setBoundingClientRect=function(){if(this.props.bounds==="parent"){var n=this.parentNode;if(n){var r=n.getBoundingClientRect();this.parentLeft=r.left,this.parentTop=r.top}}if(this.props.bounds&&typeof this.props.bounds!="string"){var o=this.props.bounds.getBoundingClientRect();this.targetLeft=o.left,this.targetTop=o.top}if(this.resizable){var s=this.resizable.getBoundingClientRect(),i=s.left,u=s.top,d=s.right,p=s.bottom;this.resizableLeft=i,this.resizableRight=d,this.resizableTop=u,this.resizableBottom=p}},t.prototype.onResizeStart=function(n,r){if(!(!this.resizable||!this.window)){var o=0,s=0;if(n.nativeEvent&&s$(n.nativeEvent)?(o=n.nativeEvent.clientX,s=n.nativeEvent.clientY):n.nativeEvent&&Ld(n.nativeEvent)&&(o=n.nativeEvent.touches[0].clientX,s=n.nativeEvent.touches[0].clientY),this.props.onResizeStart&&this.resizable){var i=this.props.onResizeStart(n,r,this.resizable);if(i===!1)return}this.props.size&&(typeof this.props.size.height<"u"&&this.props.size.height!==this.state.height&&this.setState({height:this.props.size.height}),typeof this.props.size.width<"u"&&this.props.size.width!==this.state.width&&this.setState({width:this.props.size.width})),this.ratio=typeof this.props.lockAspectRatio=="number"?this.props.lockAspectRatio:this.size.width/this.size.height;var u,d=this.window.getComputedStyle(this.resizable);if(d.flexBasis!=="auto"){var p=this.parentNode;if(p){var h=this.window.getComputedStyle(p).flexDirection;this.flexDir=h.startsWith("row")?"row":"column",u=d.flexBasis}}this.setBoundingClientRect(),this.bindEvents();var g={original:{x:o,y:s,width:this.size.width,height:this.size.height},isResizing:!0,backgroundStyle:Ts(Ts({},this.state.backgroundStyle),{cursor:this.window.getComputedStyle(n.target).cursor||"auto"}),direction:r,flexBasis:u};this.setState(g)}},t.prototype.onMouseMove=function(n){var r=this;if(!(!this.state.isResizing||!this.resizable||!this.window)){if(this.window.TouchEvent&&Ld(n))try{n.preventDefault(),n.stopPropagation()}catch{}var o=this.props,s=o.maxWidth,i=o.maxHeight,u=o.minWidth,d=o.minHeight,p=Ld(n)?n.touches[0].clientX:n.clientX,h=Ld(n)?n.touches[0].clientY:n.clientY,g=this.state,v=g.direction,b=g.original,S=g.width,x=g.height,C=this.getParentSize(),_=a$(C,this.window.innerWidth,this.window.innerHeight,s,i,u,d);s=_.maxWidth,i=_.maxHeight,u=_.minWidth,d=_.minHeight;var k=this.calculateNewSizeFromDirection(p,h),P=k.newHeight,I=k.newWidth,E=this.calculateNewMaxFromBoundary(s,i);this.props.snap&&this.props.snap.x&&(I=S2(I,this.props.snap.x,this.props.snapGap)),this.props.snap&&this.props.snap.y&&(P=S2(P,this.props.snap.y,this.props.snapGap));var O=this.calculateNewSizeFromAspectRatio(I,P,{width:E.maxWidth,height:E.maxHeight},{width:u,height:d});if(I=O.newWidth,P=O.newHeight,this.props.grid){var R=w2(I,this.props.grid[0]),D=w2(P,this.props.grid[1]),T=this.props.snapGap||0;I=T===0||Math.abs(R-I)<=T?R:I,P=T===0||Math.abs(D-P)<=T?D:P}var B={width:I-b.width,height:P-b.height};if(S&&typeof S=="string"){if(S.endsWith("%")){var W=I/C.width*100;I=W+"%"}else if(S.endsWith("vw")){var J=I/this.window.innerWidth*100;I=J+"vw"}else if(S.endsWith("vh")){var F=I/this.window.innerHeight*100;I=F+"vh"}}if(x&&typeof x=="string"){if(x.endsWith("%")){var W=P/C.height*100;P=W+"%"}else if(x.endsWith("vw")){var J=P/this.window.innerWidth*100;P=J+"vw"}else if(x.endsWith("vh")){var F=P/this.window.innerHeight*100;P=F+"vh"}}var N={width:this.createSizeForCssProperty(I,"width"),height:this.createSizeForCssProperty(P,"height")};this.flexDir==="row"?N.flexBasis=N.width:this.flexDir==="column"&&(N.flexBasis=N.height),nc.flushSync(function(){r.setState(N)}),this.props.onResize&&this.props.onResize(n,v,this.resizable,B)}},t.prototype.onMouseUp=function(n){var r=this.state,o=r.isResizing,s=r.direction,i=r.original;if(!(!o||!this.resizable)){var u={width:this.size.width-i.width,height:this.size.height-i.height};this.props.onResizeStop&&this.props.onResizeStop(n,s,this.resizable,u),this.props.size&&this.setState(this.props.size),this.unbindEvents(),this.setState({isResizing:!1,backgroundStyle:Ts(Ts({},this.state.backgroundStyle),{cursor:"auto"})})}},t.prototype.updateSize=function(n){this.setState({width:n.width,height:n.height})},t.prototype.renderResizer=function(){var n=this,r=this.props,o=r.enable,s=r.handleStyles,i=r.handleClasses,u=r.handleWrapperStyle,d=r.handleWrapperClass,p=r.handleComponent;if(!o)return null;var h=Object.keys(o).map(function(g){return o[g]!==!1?f.createElement(n$,{key:g,direction:g,onResizeStart:n.onResizeStart,replaceStyles:s&&s[g],className:i&&i[g]},p&&p[g]?p[g]:null):null});return f.createElement("div",{className:d,style:u},h)},t.prototype.render=function(){var n=this,r=Object.keys(this.props).reduce(function(i,u){return i$.indexOf(u)!==-1||(i[u]=n.props[u]),i},{}),o=Ts(Ts(Ts({position:"relative",userSelect:this.state.isResizing?"none":"auto"},this.props.style),this.sizeStyle),{maxWidth:this.props.maxWidth,maxHeight:this.props.maxHeight,minWidth:this.props.minWidth,minHeight:this.props.minHeight,boxSizing:"border-box",flexShrink:0});this.state.flexBasis&&(o.flexBasis=this.state.flexBasis);var s=this.props.as||"div";return f.createElement(s,Ts({ref:this.ref,style:o,className:this.props.className},r),this.state.isResizing&&f.createElement("div",{style:this.state.backgroundStyle}),this.props.children,this.renderResizer())},t.defaultProps={as:"div",onResizeStart:function(){},onResize:function(){},onResizeStop:function(){},enable:{top:!0,right:!0,bottom:!0,left:!0,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},style:{},grid:[1,1],lockAspectRatio:!1,lockAspectRatioExtraWidth:0,lockAspectRatioExtraHeight:0,scale:1,resizeRatio:1,snapGap:0},t}(f.PureComponent);const c$=({direction:e,langDirection:t})=>({top:e==="bottom",right:t!=="rtl"&&e==="left"||t==="rtl"&&e==="right",bottom:e==="top",left:t!=="rtl"&&e==="right"||t==="rtl"&&e==="left"}),u$=({direction:e,minWidth:t,maxWidth:n,minHeight:r,maxHeight:o})=>{const s=t??(["left","right"].includes(e)?10:void 0),i=n??(["left","right"].includes(e)?"95vw":void 0),u=r??(["top","bottom"].includes(e)?10:void 0),d=o??(["top","bottom"].includes(e)?"95vh":void 0);return{...s?{minWidth:s}:{},...i?{maxWidth:i}:{},...u?{minHeight:u}:{},...d?{maxHeight:d}:{}}},oa="0.75rem",Fd="1rem",Mc="5px",d$=({isResizable:e,direction:t})=>{const n=`calc((2 * ${oa} + ${Mc}) / -2)`;return t==="top"?{containerStyles:{borderBottomWidth:Mc,paddingBottom:Fd},handleStyles:e?{top:{paddingTop:oa,paddingBottom:oa,bottom:n}}:{}}:t==="left"?{containerStyles:{borderInlineEndWidth:Mc,paddingInlineEnd:Fd},handleStyles:e?{right:{paddingInlineStart:oa,paddingInlineEnd:oa,insetInlineEnd:n}}:{}}:t==="bottom"?{containerStyles:{borderTopWidth:Mc,paddingTop:Fd},handleStyles:e?{bottom:{paddingTop:oa,paddingBottom:oa,top:n}}:{}}:t==="right"?{containerStyles:{borderInlineStartWidth:Mc,paddingInlineStart:Fd},handleStyles:e?{left:{paddingInlineStart:oa,paddingInlineEnd:oa,insetInlineStart:n}}:{}}:{containerStyles:{},handleStyles:{}}},f$=(e,t)=>["top","bottom"].includes(e)?e:e==="left"?t==="rtl"?"right":"left":e==="right"?t==="rtl"?"left":"right":"left",Me=(e,t)=>n=>n==="light"?e:t,p$=He(l$,{shouldForwardProp:e=>!["sx"].includes(e)}),R5=({direction:e="left",isResizable:t,isOpen:n,onClose:r,children:o,initialWidth:s,minWidth:i,maxWidth:u,initialHeight:d,minHeight:p,maxHeight:h,onResizeStart:g,onResizeStop:v,onResize:b,sx:S={}})=>{const x=Kp().direction,{colorMode:C}=xs(),_=f.useRef(null),k=f.useMemo(()=>s??i??(["left","right"].includes(e)?"auto":"100%"),[s,i,e]),P=f.useMemo(()=>d??p??(["top","bottom"].includes(e)?"auto":"100%"),[d,p,e]),[I,E]=f.useState(k),[O,R]=f.useState(P);tD({ref:_,handler:()=>{r()},enabled:n});const D=f.useMemo(()=>t?c$({direction:e,langDirection:x}):{},[t,x,e]),T=f.useMemo(()=>u$({direction:e,minWidth:i,maxWidth:u,minHeight:p,maxHeight:h}),[i,u,p,h,e]),{containerStyles:B,handleStyles:W}=f.useMemo(()=>d$({isResizable:t,direction:e}),[t,e]),J=f.useMemo(()=>f$(e,x),[e,x]);return f.useEffect(()=>{["left","right"].includes(e)&&R("100vh"),["top","bottom"].includes(e)&&E("100vw")},[e]),a.jsx(A3,{direction:J,in:n,motionProps:{initial:!1},style:{width:"full"},children:a.jsx($e,{ref:_,sx:{width:"full",height:"full"},children:a.jsx(p$,{size:{width:t?I:k,height:t?O:P},enable:D,handleStyles:W,...T,sx:{borderColor:Me("base.200","base.800")(C),p:4,bg:Me("base.50","base.900")(C),height:"full",shadow:n?"dark-lg":void 0,...B,...S},onResizeStart:(F,N,G)=>{g&&g(F,N,G)},onResize:(F,N,G,K)=>{b&&b(F,N,G,K)},onResizeStop:(F,N,G,K)=>{["left","right"].includes(N)&&E(Number(I)+K.width),["top","bottom"].includes(N)&&R(Number(O)+K.height),v&&v(F,N,G,K)},children:o})})})};/*! - * OverlayScrollbars - * Version: 2.2.1 - * - * Copyright (c) Rene Haas | KingSora. - * https://github.com/KingSora - * - * Released under the MIT license. - */function gn(e,t){if(hh(e))for(let n=0;nt(e[n],n,e));return e}function Yr(e,t){const n=oi(t);if(ys(t)||n){let o=n?"":{};if(e){const s=window.getComputedStyle(e,null);o=n?P2(e,s,t):t.reduce((i,u)=>(i[u]=P2(e,s,u),i),o)}return o}e&&gn(Mo(t),o=>E$(e,o,t[o]))}const is=(e,t)=>{const{o:n,u:r,_:o}=e;let s=n,i;const u=(h,g)=>{const v=s,b=h,S=g||(r?!r(v,b):v!==b);return(S||o)&&(s=b,i=v),[s,S,i]};return[t?h=>u(t(s,i),h):u,h=>[s,!!h,i]]},Lu=()=>typeof window<"u",D5=Lu()&&Node.ELEMENT_NODE,{toString:h$,hasOwnProperty:mg}=Object.prototype,ka=e=>e===void 0,ph=e=>e===null,m$=e=>ka(e)||ph(e)?`${e}`:h$.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase(),Ya=e=>typeof e=="number",oi=e=>typeof e=="string",e1=e=>typeof e=="boolean",vs=e=>typeof e=="function",ys=e=>Array.isArray(e),du=e=>typeof e=="object"&&!ys(e)&&!ph(e),hh=e=>{const t=!!e&&e.length,n=Ya(t)&&t>-1&&t%1==0;return ys(e)||!vs(e)&&n?t>0&&du(e)?t-1 in e:!0:!1},S0=e=>{if(!e||!du(e)||m$(e)!=="object")return!1;let t;const n="constructor",r=e[n],o=r&&r.prototype,s=mg.call(e,n),i=o&&mg.call(o,"isPrototypeOf");if(r&&!s&&!i)return!1;for(t in e);return ka(t)||mg.call(e,t)},Vf=e=>{const t=HTMLElement;return e?t?e instanceof t:e.nodeType===D5:!1},mh=e=>{const t=Element;return e?t?e instanceof t:e.nodeType===D5:!1},t1=(e,t,n)=>e.indexOf(t,n),Pn=(e,t,n)=>(!n&&!oi(t)&&hh(t)?Array.prototype.push.apply(e,t):e.push(t),e),Di=e=>{const t=Array.from,n=[];return t&&e?t(e):(e instanceof Set?e.forEach(r=>{Pn(n,r)}):gn(e,r=>{Pn(n,r)}),n)},n1=e=>!!e&&e.length===0,Qs=(e,t,n)=>{gn(e,o=>o&&o.apply(void 0,t||[])),!n&&(e.length=0)},gh=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Mo=e=>e?Object.keys(e):[],rr=(e,t,n,r,o,s,i)=>{const u=[t,n,r,o,s,i];return(typeof e!="object"||ph(e))&&!vs(e)&&(e={}),gn(u,d=>{gn(Mo(d),p=>{const h=d[p];if(e===h)return!0;const g=ys(h);if(h&&(S0(h)||g)){const v=e[p];let b=v;g&&!ys(v)?b=[]:!g&&!S0(v)&&(b={}),e[p]=rr(b,h)}else e[p]=h})}),e},r1=e=>{for(const t in e)return!1;return!0},A5=(e,t,n,r)=>{if(ka(r))return n?n[e]:t;n&&(oi(r)||Ya(r))&&(n[e]=r)},Qr=(e,t,n)=>{if(ka(n))return e?e.getAttribute(t):null;e&&e.setAttribute(t,n)},go=(e,t)=>{e&&e.removeAttribute(t)},_i=(e,t,n,r)=>{if(n){const o=Qr(e,t)||"",s=new Set(o.split(" "));s[r?"add":"delete"](n);const i=Di(s).join(" ").trim();Qr(e,t,i)}},g$=(e,t,n)=>{const r=Qr(e,t)||"";return new Set(r.split(" ")).has(n)},fs=(e,t)=>A5("scrollLeft",0,e,t),ua=(e,t)=>A5("scrollTop",0,e,t),C0=Lu()&&Element.prototype,T5=(e,t)=>{const n=[],r=t?mh(t)?t:null:document;return r?Pn(n,r.querySelectorAll(e)):n},v$=(e,t)=>{const n=t?mh(t)?t:null:document;return n?n.querySelector(e):null},Uf=(e,t)=>mh(e)?(C0.matches||C0.msMatchesSelector).call(e,t):!1,o1=e=>e?Di(e.childNodes):[],xa=e=>e?e.parentElement:null,Sl=(e,t)=>{if(mh(e)){const n=C0.closest;if(n)return n.call(e,t);do{if(Uf(e,t))return e;e=xa(e)}while(e)}return null},y$=(e,t,n)=>{const r=e&&Sl(e,t),o=e&&v$(n,r),s=Sl(o,t)===r;return r&&o?r===e||o===e||s&&Sl(Sl(e,n),t)!==r:!1},s1=(e,t,n)=>{if(n&&e){let r=t,o;hh(n)?(o=document.createDocumentFragment(),gn(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)}},Vo=(e,t)=>{s1(e,null,t)},b$=(e,t)=>{s1(xa(e),e,t)},_2=(e,t)=>{s1(xa(e),e&&e.nextSibling,t)},Us=e=>{if(hh(e))gn(Di(e),t=>Us(t));else if(e){const t=xa(e);t&&t.removeChild(e)}},ki=e=>{const t=document.createElement("div");return e&&Qr(t,"class",e),t},N5=e=>{const t=ki();return t.innerHTML=e.trim(),gn(o1(t),n=>Us(n))},_0=e=>e.charAt(0).toUpperCase()+e.slice(1),x$=()=>ki().style,w$=["-webkit-","-moz-","-o-","-ms-"],S$=["WebKit","Moz","O","MS","webkit","moz","o","ms"],gg={},vg={},C$=e=>{let t=vg[e];if(gh(vg,e))return t;const n=_0(e),r=x$();return gn(w$,o=>{const s=o.replace(/-/g,"");return!(t=[e,o+e,s+n,_0(s)+n].find(u=>r[u]!==void 0))}),vg[e]=t||""},Bu=e=>{if(Lu()){let t=gg[e]||window[e];return gh(gg,e)||(gn(S$,n=>(t=t||window[n+_0(e)],!t)),gg[e]=t),t}},_$=Bu("MutationObserver"),k2=Bu("IntersectionObserver"),Cl=Bu("ResizeObserver"),$5=Bu("cancelAnimationFrame"),z5=Bu("requestAnimationFrame"),Gf=Lu()&&window.setTimeout,k0=Lu()&&window.clearTimeout,k$=/[^\x20\t\r\n\f]+/g,L5=(e,t,n)=>{const r=e&&e.classList;let o,s=0,i=!1;if(r&&t&&oi(t)){const u=t.match(k$)||[];for(i=u.length>0;o=u[s++];)i=!!n(r,o)&&i}return i},a1=(e,t)=>{L5(e,t,(n,r)=>n.remove(r))},da=(e,t)=>(L5(e,t,(n,r)=>n.add(r)),a1.bind(0,e,t)),vh=(e,t,n,r)=>{if(e&&t){let o=!0;return gn(n,s=>{const i=r?r(e[s]):e[s],u=r?r(t[s]):t[s];i!==u&&(o=!1)}),o}return!1},B5=(e,t)=>vh(e,t,["w","h"]),F5=(e,t)=>vh(e,t,["x","y"]),j$=(e,t)=>vh(e,t,["t","r","b","l"]),j2=(e,t,n)=>vh(e,t,["width","height"],n&&(r=>Math.round(r))),Wo=()=>{},yl=e=>{let t;const n=e?Gf:z5,r=e?k0:$5;return[o=>{r(t),t=n(o,vs(e)?e():e)},()=>r(t)]},i1=(e,t)=>{let n,r,o,s=Wo;const{v:i,g:u,p:d}=t||{},p=function(S){s(),k0(n),n=r=void 0,s=Wo,e.apply(this,S)},h=b=>d&&r?d(r,b):b,g=()=>{s!==Wo&&p(h(o)||o)},v=function(){const S=Di(arguments),x=vs(i)?i():i;if(Ya(x)&&x>=0){const _=vs(u)?u():u,k=Ya(_)&&_>=0,P=x>0?Gf:z5,I=x>0?k0:$5,O=h(S)||S,R=p.bind(0,O);s();const D=P(R,x);s=()=>I(D),k&&!n&&(n=Gf(g,_)),r=o=O}else p(S)};return v.m=g,v},P$={opacity:1,zindex:1},Hd=(e,t)=>{const n=t?parseFloat(e):parseInt(e,10);return n===n?n:0},I$=(e,t)=>!P$[e.toLowerCase()]&&Ya(t)?`${t}px`:t,P2=(e,t,n)=>t!=null?t[n]||t.getPropertyValue(n):e.style[n],E$=(e,t,n)=>{try{const{style:r}=e;ka(r[t])?r.setProperty(t,n):r[t]=I$(t,n)}catch{}},fu=e=>Yr(e,"direction")==="rtl",I2=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",s=`${r}top${o}`,i=`${r}right${o}`,u=`${r}bottom${o}`,d=`${r}left${o}`,p=Yr(e,[s,i,u,d]);return{t:Hd(p[s],!0),r:Hd(p[i],!0),b:Hd(p[u],!0),l:Hd(p[d],!0)}},{round:E2}=Math,l1={w:0,h:0},pu=e=>e?{w:e.offsetWidth,h:e.offsetHeight}:l1,wf=e=>e?{w:e.clientWidth,h:e.clientHeight}:l1,qf=e=>e?{w:e.scrollWidth,h:e.scrollHeight}:l1,Kf=e=>{const t=parseFloat(Yr(e,"height"))||0,n=parseFloat(Yr(e,"width"))||0;return{w:n-E2(n),h:t-E2(t)}},Fs=e=>e.getBoundingClientRect();let Wd;const O$=()=>{if(ka(Wd)){Wd=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get(){Wd=!0}}))}catch{}}return Wd},H5=e=>e.split(" "),M$=(e,t,n,r)=>{gn(H5(t),o=>{e.removeEventListener(o,n,r)})},Er=(e,t,n,r)=>{var o;const s=O$(),i=(o=s&&r&&r.S)!=null?o:s,u=r&&r.$||!1,d=r&&r.C||!1,p=[],h=s?{passive:i,capture:u}:u;return gn(H5(t),g=>{const v=d?b=>{e.removeEventListener(g,v,u),n&&n(b)}:n;Pn(p,M$.bind(null,e,g,v,u)),e.addEventListener(g,v,h)}),Qs.bind(0,p)},W5=e=>e.stopPropagation(),V5=e=>e.preventDefault(),R$={x:0,y:0},yg=e=>{const t=e?Fs(e):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:R$},O2=(e,t)=>{gn(ys(t)?t:[t],e)},c1=e=>{const t=new Map,n=(s,i)=>{if(s){const u=t.get(s);O2(d=>{u&&u[d?"delete":"clear"](d)},i)}else t.forEach(u=>{u.clear()}),t.clear()},r=(s,i)=>{if(oi(s)){const p=t.get(s)||new Set;return t.set(s,p),O2(h=>{vs(h)&&p.add(h)},i),n.bind(0,s,i)}e1(i)&&i&&n();const u=Mo(s),d=[];return gn(u,p=>{const h=s[p];h&&Pn(d,r(p,h))}),Qs.bind(0,d)},o=(s,i)=>{const u=t.get(s);gn(Di(u),d=>{i&&!n1(i)?d.apply(0,i):d()})};return r(e||{}),[r,n,o]},M2=e=>JSON.stringify(e,(t,n)=>{if(vs(n))throw new Error;return n}),D$={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"]}},U5=(e,t)=>{const n={},r=Mo(t).concat(Mo(e));return gn(r,o=>{const s=e[o],i=t[o];if(du(s)&&du(i))rr(n[o]={},U5(s,i)),r1(n[o])&&delete n[o];else if(gh(t,o)&&i!==s){let u=!0;if(ys(s)||ys(i))try{M2(s)===M2(i)&&(u=!1)}catch{}u&&(n[o]=i)}}),n},G5="os-environment",q5=`${G5}-flexbox-glue`,A$=`${q5}-max`,K5="os-scrollbar-hidden",bg="data-overlayscrollbars-initialize",ls="data-overlayscrollbars",Q5=`${ls}-overflow-x`,Y5=`${ls}-overflow-y`,Dl="overflowVisible",T$="scrollbarHidden",R2="scrollbarPressed",Qf="updating",Ba="data-overlayscrollbars-viewport",xg="arrange",X5="scrollbarHidden",Al=Dl,j0="data-overlayscrollbars-padding",N$=Al,D2="data-overlayscrollbars-content",u1="os-size-observer",$$=`${u1}-appear`,z$=`${u1}-listener`,L$="os-trinsic-observer",B$="os-no-css-vars",F$="os-theme-none",wo="os-scrollbar",H$=`${wo}-rtl`,W$=`${wo}-horizontal`,V$=`${wo}-vertical`,J5=`${wo}-track`,d1=`${wo}-handle`,U$=`${wo}-visible`,G$=`${wo}-cornerless`,A2=`${wo}-transitionless`,T2=`${wo}-interaction`,N2=`${wo}-unusable`,$2=`${wo}-auto-hidden`,z2=`${wo}-wheel`,q$=`${J5}-interactive`,K$=`${d1}-interactive`,Z5={},Ai=()=>Z5,Q$=e=>{const t=[];return gn(ys(e)?e:[e],n=>{const r=Mo(n);gn(r,o=>{Pn(t,Z5[o]=n[o])})}),t},Y$="__osOptionsValidationPlugin",X$="__osSizeObserverPlugin",f1="__osScrollbarsHidingPlugin",J$="__osClickScrollPlugin";let wg;const L2=(e,t,n,r)=>{Vo(e,t);const o=wf(t),s=pu(t),i=Kf(n);return r&&Us(t),{x:s.h-o.h+i.h,y:s.w-o.w+i.w}},Z$=e=>{let t=!1;const n=da(e,K5);try{t=Yr(e,C$("scrollbar-width"))==="none"||window.getComputedStyle(e,"::-webkit-scrollbar").getPropertyValue("display")==="none"}catch{}return n(),t},ez=(e,t)=>{const n="hidden";Yr(e,{overflowX:n,overflowY:n,direction:"rtl"}),fs(e,0);const r=yg(e),o=yg(t);fs(e,-999);const s=yg(t);return{i:r.x===o.x,n:o.x!==s.x}},tz=(e,t)=>{const n=da(e,q5),r=Fs(e),o=Fs(t),s=j2(o,r,!0),i=da(e,A$),u=Fs(e),d=Fs(t),p=j2(d,u,!0);return n(),i(),s&&p},nz=()=>{const{body:e}=document,n=N5(`
`)[0],r=n.firstChild,[o,,s]=c1(),[i,u]=is({o:L2(e,n,r),u:F5},L2.bind(0,e,n,r,!0)),[d]=u(),p=Z$(n),h={x:d.x===0,y:d.y===0},g={elements:{host:null,padding:!p,viewport:k=>p&&k===k.ownerDocument.body&&k,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},v=rr({},D$),b=rr.bind(0,{},v),S=rr.bind(0,{},g),x={k:d,A:h,I:p,L:Yr(n,"zIndex")==="-1",B:ez(n,r),V:tz(n,r),Y:o.bind(0,"z"),j:o.bind(0,"r"),N:S,q:k=>rr(g,k)&&S(),F:b,G:k=>rr(v,k)&&b(),X:rr({},g),U:rr({},v)},C=window.addEventListener,_=i1(k=>s(k?"z":"r"),{v:33,g:99});if(go(n,"style"),Us(n),C("resize",_.bind(0,!1)),!p&&(!h.x||!h.y)){let k;C("resize",()=>{const P=Ai()[f1];k=k||P&&P.R(),k&&k(x,i,_.bind(0,!0))})}return x},So=()=>(wg||(wg=nz()),wg),p1=(e,t)=>vs(t)?t.apply(0,e):t,rz=(e,t,n,r)=>{const o=ka(r)?n:r;return p1(e,o)||t.apply(0,e)},e_=(e,t,n,r)=>{const o=ka(r)?n:r,s=p1(e,o);return!!s&&(Vf(s)?s:t.apply(0,e))},oz=(e,t,n)=>{const{nativeScrollbarsOverlaid:r,body:o}=n||{},{A:s,I:i}=So(),{nativeScrollbarsOverlaid:u,body:d}=t,p=r??u,h=ka(o)?d:o,g=(s.x||s.y)&&p,v=e&&(ph(h)?!i:h);return!!g||!!v},h1=new WeakMap,sz=(e,t)=>{h1.set(e,t)},az=e=>{h1.delete(e)},t_=e=>h1.get(e),B2=(e,t)=>e?t.split(".").reduce((n,r)=>n&&gh(n,r)?n[r]:void 0,e):void 0,P0=(e,t,n)=>r=>[B2(e,r),n||B2(t,r)!==void 0],n_=e=>{let t=e;return[()=>t,n=>{t=rr({},t,n)}]},Vd="tabindex",Ud=ki.bind(0,""),Sg=e=>{Vo(xa(e),o1(e)),Us(e)},iz=e=>{const t=So(),{N:n,I:r}=t,o=Ai()[f1],s=o&&o.T,{elements:i}=n(),{host:u,padding:d,viewport:p,content:h}=i,g=Vf(e),v=g?{}:e,{elements:b}=v,{host:S,padding:x,viewport:C,content:_}=b||{},k=g?e:v.target,P=Uf(k,"textarea"),I=k.ownerDocument,E=I.documentElement,O=k===I.body,R=I.defaultView,D=rz.bind(0,[k]),T=e_.bind(0,[k]),B=p1.bind(0,[k]),W=D.bind(0,Ud,p),J=T.bind(0,Ud,h),F=W(C),N=F===k,G=N&&O,K=!N&&J(_),M=!N&&Vf(F)&&F===K,U=M&&!!B(h),V=U?W():F,ee=U?K:J(),xe=G?E:M?V:F,me=P?D(Ud,u,S):k,ae=G?xe:me,te=M?ee:K,H=I.activeElement,re=!N&&R.top===R&&H===k,pe={W:k,Z:ae,J:xe,K:!N&&T(Ud,d,x),tt:te,nt:!N&&!r&&s&&s(t),ot:G?E:xe,st:G?I:xe,et:R,ct:I,rt:P,it:O,lt:g,ut:N,dt:M,ft:(Pt,bt)=>g$(xe,N?ls:Ba,N?bt:Pt),_t:(Pt,bt,be)=>_i(xe,N?ls:Ba,N?bt:Pt,be)},ne=Mo(pe).reduce((Pt,bt)=>{const be=pe[bt];return Pn(Pt,be&&!xa(be)?be:!1)},[]),ve=Pt=>Pt?t1(ne,Pt)>-1:null,{W:de,Z:Ce,K:Re,J:ge,tt:_e,nt:We}=pe,Le=[()=>{go(Ce,ls),go(Ce,bg),go(de,bg),O&&(go(E,ls),go(E,bg))}],Ue=P&&ve(Ce);let jt=P?de:o1([_e,ge,Re,Ce,de].find(Pt=>ve(Pt)===!1));const vt=G?de:_e||ge;return[pe,()=>{Qr(Ce,ls,N?"viewport":"host"),Qr(Re,j0,""),Qr(_e,D2,""),N||Qr(ge,Ba,"");const Pt=O&&!N?da(xa(k),K5):Wo;if(Ue&&(_2(de,Ce),Pn(Le,()=>{_2(Ce,de),Us(Ce)})),Vo(vt,jt),Vo(Ce,Re),Vo(Re||Ce,!N&&ge),Vo(ge,_e),Pn(Le,()=>{Pt(),go(Re,j0),go(_e,D2),go(ge,Q5),go(ge,Y5),go(ge,Ba),ve(_e)&&Sg(_e),ve(ge)&&Sg(ge),ve(Re)&&Sg(Re)}),r&&!N&&(_i(ge,Ba,X5,!0),Pn(Le,go.bind(0,ge,Ba))),We&&(b$(ge,We),Pn(Le,Us.bind(0,We))),re){const bt=Qr(ge,Vd);Qr(ge,Vd,"-1"),ge.focus();const be=()=>bt?Qr(ge,Vd,bt):go(ge,Vd),Ae=Er(I,"pointerdown keydown",()=>{be(),Ae()});Pn(Le,[be,Ae])}else H&&H.focus&&H.focus();jt=0},Qs.bind(0,Le)]},lz=(e,t)=>{const{tt:n}=e,[r]=t;return o=>{const{V:s}=So(),{ht:i}=r(),{vt:u}=o,d=(n||!s)&&u;return d&&Yr(n,{height:i?"":"100%"}),{gt:d,wt:d}}},cz=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,ut:u}=e,[d,p]=is({u:j$,o:I2()},I2.bind(0,o,"padding",""));return(h,g,v)=>{let[b,S]=p(v);const{I:x,V:C}=So(),{bt:_}=n(),{gt:k,wt:P,yt:I}=h,[E,O]=g("paddingAbsolute");(k||S||!C&&P)&&([b,S]=d(v));const D=!u&&(O||I||S);if(D){const T=!E||!s&&!x,B=b.r+b.l,W=b.t+b.b,J={marginRight:T&&!_?-B:0,marginBottom:T?-W:0,marginLeft:T&&_?-B:0,top:T?-b.t:0,right:T?_?-b.r:"auto":0,left:T?_?"auto":-b.l:0,width:T?`calc(100% + ${B}px)`:""},F={paddingTop:T?b.t:0,paddingRight:T?b.r:0,paddingBottom:T?b.b:0,paddingLeft:T?b.l:0};Yr(s||i,J),Yr(i,F),r({K:b,St:!T,P:s?F:rr({},J,F)})}return{xt:D}}},{max:I0}=Math,Fa=I0.bind(0,0),r_="visible",F2="hidden",uz=42,Gd={u:B5,o:{w:0,h:0}},dz={u:F5,o:{x:F2,y:F2}},fz=(e,t)=>{const n=window.devicePixelRatio%1!==0?1:0,r={w:Fa(e.w-t.w),h:Fa(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},qd=e=>e.indexOf(r_)===0,pz=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,nt:u,ut:d,_t:p,it:h,et:g}=e,{k:v,V:b,I:S,A:x}=So(),C=Ai()[f1],_=!d&&!S&&(x.x||x.y),k=h&&d,[P,I]=is(Gd,Kf.bind(0,i)),[E,O]=is(Gd,qf.bind(0,i)),[R,D]=is(Gd),[T,B]=is(Gd),[W]=is(dz),J=(U,V)=>{if(Yr(i,{height:""}),V){const{St:ee,K:ie}=n(),{$t:xe,D:me}=U,ae=Kf(o),te=wf(o),H=Yr(i,"boxSizing")==="content-box",re=ee||H?ie.b+ie.t:0,pe=!(x.x&&H);Yr(i,{height:te.h+ae.h+(xe.x&&pe?me.x:0)-re})}},F=(U,V)=>{const ee=!S&&!U?uz:0,ie=(ve,de,Ce)=>{const Re=Yr(i,ve),_e=(V?V[ve]:Re)==="scroll";return[Re,_e,_e&&!S?de?ee:Ce:0,de&&!!ee]},[xe,me,ae,te]=ie("overflowX",x.x,v.x),[H,re,pe,ne]=ie("overflowY",x.y,v.y);return{Ct:{x:xe,y:H},$t:{x:me,y:re},D:{x:ae,y:pe},M:{x:te,y:ne}}},N=(U,V,ee,ie)=>{const xe=(re,pe)=>{const ne=qd(re),ve=pe&&ne&&re.replace(`${r_}-`,"")||"";return[pe&&!ne?re:"",qd(ve)?"hidden":ve]},[me,ae]=xe(ee.x,V.x),[te,H]=xe(ee.y,V.y);return ie.overflowX=ae&&te?ae:me,ie.overflowY=H&&me?H:te,F(U,ie)},G=(U,V,ee,ie)=>{const{D:xe,M:me}=U,{x:ae,y:te}=me,{x:H,y:re}=xe,{P:pe}=n(),ne=V?"marginLeft":"marginRight",ve=V?"paddingLeft":"paddingRight",de=pe[ne],Ce=pe.marginBottom,Re=pe[ve],ge=pe.paddingBottom;ie.width=`calc(100% + ${re+-1*de}px)`,ie[ne]=-re+de,ie.marginBottom=-H+Ce,ee&&(ie[ve]=Re+(te?re:0),ie.paddingBottom=ge+(ae?H:0))},[K,M]=C?C.H(_,b,i,u,n,F,G):[()=>_,()=>[Wo]];return(U,V,ee)=>{const{gt:ie,Ot:xe,wt:me,xt:ae,vt:te,yt:H}=U,{ht:re,bt:pe}=n(),[ne,ve]=V("showNativeOverlaidScrollbars"),[de,Ce]=V("overflow"),Re=ne&&x.x&&x.y,ge=!d&&!b&&(ie||me||xe||ve||te),_e=qd(de.x),We=qd(de.y),Le=_e||We;let Ue=I(ee),jt=O(ee),vt=D(ee),jn=B(ee),Pt;if(ve&&S&&p(X5,T$,!Re),ge&&(Pt=F(Re),J(Pt,re)),ie||ae||me||H||ve){Le&&p(Al,Dl,!1);const[Ie,it]=M(Re,pe,Pt),[Xe,ot]=Ue=P(ee),[Nt,ur]=jt=E(ee),yn=wf(i);let bn=Nt,$r=yn;Ie(),(ur||ot||ve)&&it&&!Re&&K(it,Nt,Xe,pe)&&($r=wf(i),bn=qf(i));const dr={w:Fa(I0(Nt.w,bn.w)+Xe.w),h:Fa(I0(Nt.h,bn.h)+Xe.h)},An={w:Fa((k?g.innerWidth:$r.w+Fa(yn.w-Nt.w))+Xe.w),h:Fa((k?g.innerHeight+Xe.h:$r.h+Fa(yn.h-Nt.h))+Xe.h)};jn=T(An),vt=R(fz(dr,An),ee)}const[bt,be]=jn,[Ae,Et]=vt,[Ft,Wt]=jt,[_n,In]=Ue,ln={x:Ae.w>0,y:Ae.h>0},Cr=_e&&We&&(ln.x||ln.y)||_e&&ln.x&&!ln.y||We&&ln.y&&!ln.x;if(ae||H||In||Wt||be||Et||Ce||ve||ge){const Ie={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},it=N(Re,ln,de,Ie),Xe=K(it,Ft,_n,pe);d||G(it,pe,Xe,Ie),ge&&J(it,re),d?(Qr(o,Q5,Ie.overflowX),Qr(o,Y5,Ie.overflowY)):Yr(i,Ie)}_i(o,ls,Dl,Cr),_i(s,j0,N$,Cr),d||_i(i,Ba,Al,Le);const[vn,sr]=W(F(Re).Ct);return r({Ct:vn,zt:{x:bt.w,y:bt.h},Tt:{x:Ae.w,y:Ae.h},Et:ln}),{It:sr,At:be,Lt:Et}}},H2=(e,t,n)=>{const r={},o=t||{},s=Mo(e).concat(Mo(o));return gn(s,i=>{const u=e[i],d=o[i];r[i]=!!(n||u||d)}),r},hz=(e,t)=>{const{W:n,J:r,_t:o,ut:s}=e,{I:i,A:u,V:d}=So(),p=!i&&(u.x||u.y),h=[lz(e,t),cz(e,t),pz(e,t)];return(g,v,b)=>{const S=H2(rr({gt:!1,xt:!1,yt:!1,vt:!1,At:!1,Lt:!1,It:!1,Ot:!1,wt:!1},v),{},b),x=p||!d,C=x&&fs(r),_=x&&ua(r);o("",Qf,!0);let k=S;return gn(h,P=>{k=H2(k,P(k,g,!!b)||{},b)}),fs(r,C),ua(r,_),o("",Qf),s||(fs(n,0),ua(n,0)),k}},mz=(e,t,n)=>{let r,o=!1;const s=()=>{o=!0},i=u=>{if(n){const d=n.reduce((p,h)=>{if(h){const[g,v]=h,b=v&&g&&(u?u(g):T5(g,e));b&&b.length&&v&&oi(v)&&Pn(p,[b,v.trim()],!0)}return p},[]);gn(d,p=>gn(p[0],h=>{const g=p[1],v=r.get(h)||[];if(e.contains(h)){const S=Er(h,g,x=>{o?(S(),r.delete(h)):t(x)});r.set(h,Pn(v,S))}else Qs(v),r.delete(h)}))}};return n&&(r=new WeakMap,i()),[s,i]},W2=(e,t,n,r)=>{let o=!1;const{Ht:s,Pt:i,Dt:u,Mt:d,Rt:p,kt:h}=r||{},g=i1(()=>{o&&n(!0)},{v:33,g:99}),[v,b]=mz(e,g,u),S=s||[],x=i||[],C=S.concat(x),_=(P,I)=>{const E=p||Wo,O=h||Wo,R=new Set,D=new Set;let T=!1,B=!1;if(gn(P,W=>{const{attributeName:J,target:F,type:N,oldValue:G,addedNodes:K,removedNodes:M}=W,U=N==="attributes",V=N==="childList",ee=e===F,ie=U&&oi(J)?Qr(F,J):0,xe=ie!==0&&G!==ie,me=t1(x,J)>-1&&xe;if(t&&(V||!ee)){const ae=!U,te=U&&xe,H=te&&d&&Uf(F,d),pe=(H?!E(F,J,G,ie):ae||te)&&!O(W,!!H,e,r);gn(K,ne=>R.add(ne)),gn(M,ne=>R.add(ne)),B=B||pe}!t&&ee&&xe&&!E(F,J,G,ie)&&(D.add(J),T=T||me)}),R.size>0&&b(W=>Di(R).reduce((J,F)=>(Pn(J,T5(W,F)),Uf(F,W)?Pn(J,F):J),[])),t)return!I&&B&&n(!1),[!1];if(D.size>0||T){const W=[Di(D),T];return!I&&n.apply(0,W),W}},k=new _$(P=>_(P));return k.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:C,subtree:t,childList:t,characterData:t}),o=!0,[()=>{o&&(v(),k.disconnect(),o=!1)},()=>{if(o){g.m();const P=k.takeRecords();return!n1(P)&&_(P,!0)}}]},Kd=3333333,Qd=e=>e&&(e.height||e.width),o_=(e,t,n)=>{const{Bt:r=!1,Vt:o=!1}=n||{},s=Ai()[X$],{B:i}=So(),d=N5(`
`)[0],p=d.firstChild,h=fu.bind(0,e),[g]=is({o:void 0,_:!0,u:(x,C)=>!(!x||!Qd(x)&&Qd(C))}),v=x=>{const C=ys(x)&&x.length>0&&du(x[0]),_=!C&&e1(x[0]);let k=!1,P=!1,I=!0;if(C){const[E,,O]=g(x.pop().contentRect),R=Qd(E),D=Qd(O);k=!O||!R,P=!D&&R,I=!k}else _?[,I]=x:P=x===!0;if(r&&I){const E=_?x[0]:fu(d);fs(d,E?i.n?-Kd:i.i?0:Kd:Kd),ua(d,Kd)}k||t({gt:!_,Yt:_?x:void 0,Vt:!!P})},b=[];let S=o?v:!1;return[()=>{Qs(b),Us(d)},()=>{if(Cl){const x=new Cl(v);x.observe(p),Pn(b,()=>{x.disconnect()})}else if(s){const[x,C]=s.O(p,v,o);S=x,Pn(b,C)}if(r){const[x]=is({o:void 0},h);Pn(b,Er(d,"scroll",C=>{const _=x(),[k,P,I]=_;P&&(a1(p,"ltr rtl"),k?da(p,"rtl"):da(p,"ltr"),v([!!k,P,I])),W5(C)}))}S&&(da(d,$$),Pn(b,Er(d,"animationstart",S,{C:!!Cl}))),(Cl||s)&&Vo(e,d)}]},gz=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,vz=(e,t)=>{let n;const r=ki(L$),o=[],[s]=is({o:!1}),i=(d,p)=>{if(d){const h=s(gz(d)),[,g]=h;if(g)return!p&&t(h),[h]}},u=(d,p)=>{if(d&&d.length>0)return i(d.pop(),p)};return[()=>{Qs(o),Us(r)},()=>{if(k2)n=new k2(d=>u(d),{root:e}),n.observe(r),Pn(o,()=>{n.disconnect()});else{const d=()=>{const g=pu(r);i(g)},[p,h]=o_(r,d);Pn(o,p),h(),d()}Vo(e,r)},()=>{if(n)return u(n.takeRecords(),!0)}]},V2=`[${ls}]`,yz=`[${Ba}]`,Cg=["tabindex"],U2=["wrap","cols","rows"],_g=["id","class","style","open"],bz=(e,t,n)=>{let r,o,s;const{Z:i,J:u,tt:d,rt:p,ut:h,ft:g,_t:v}=e,{V:b}=So(),[S]=is({u:B5,o:{w:0,h:0}},()=>{const N=g(Al,Dl),G=g(xg,""),K=G&&fs(u),M=G&&ua(u);v(Al,Dl),v(xg,""),v("",Qf,!0);const U=qf(d),V=qf(u),ee=Kf(u);return v(Al,Dl,N),v(xg,"",G),v("",Qf),fs(u,K),ua(u,M),{w:V.w+U.w+ee.w,h:V.h+U.h+ee.h}}),x=p?U2:_g.concat(U2),C=i1(n,{v:()=>r,g:()=>o,p(N,G){const[K]=N,[M]=G;return[Mo(K).concat(Mo(M)).reduce((U,V)=>(U[V]=K[V]||M[V],U),{})]}}),_=N=>{gn(N||Cg,G=>{if(t1(Cg,G)>-1){const K=Qr(i,G);oi(K)?Qr(u,G,K):go(u,G)}})},k=(N,G)=>{const[K,M]=N,U={vt:M};return t({ht:K}),!G&&n(U),U},P=({gt:N,Yt:G,Vt:K})=>{const M=!N||K?n:C;let U=!1;if(G){const[V,ee]=G;U=ee,t({bt:V})}M({gt:N,yt:U})},I=(N,G)=>{const[,K]=S(),M={wt:K};return K&&!G&&(N?n:C)(M),M},E=(N,G,K)=>{const M={Ot:G};return G?!K&&C(M):h||_(N),M},[O,R,D]=d||!b?vz(i,k):[Wo,Wo,Wo],[T,B]=h?[Wo,Wo]:o_(i,P,{Vt:!0,Bt:!0}),[W,J]=W2(i,!1,E,{Pt:_g,Ht:_g.concat(Cg)}),F=h&&Cl&&new Cl(P.bind(0,{gt:!0}));return F&&F.observe(i),_(),[()=>{O(),T(),s&&s[0](),F&&F.disconnect(),W()},()=>{B(),R()},()=>{const N={},G=J(),K=D(),M=s&&s[1]();return G&&rr(N,E.apply(0,Pn(G,!0))),K&&rr(N,k.apply(0,Pn(K,!0))),M&&rr(N,I.apply(0,Pn(M,!0))),N},N=>{const[G]=N("update.ignoreMutation"),[K,M]=N("update.attributes"),[U,V]=N("update.elementEvents"),[ee,ie]=N("update.debounce"),xe=V||M,me=ae=>vs(G)&&G(ae);if(xe&&(s&&(s[1](),s[0]()),s=W2(d||u,!0,I,{Ht:x.concat(K||[]),Dt:U,Mt:V2,kt:(ae,te)=>{const{target:H,attributeName:re}=ae;return(!te&&re&&!h?y$(H,V2,yz):!1)||!!Sl(H,`.${wo}`)||!!me(ae)}})),ie)if(C.m(),ys(ee)){const ae=ee[0],te=ee[1];r=Ya(ae)&&ae,o=Ya(te)&&te}else Ya(ee)?(r=ee,o=!1):(r=!1,o=!1)}]},G2={x:0,y:0},xz=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:G2,Tt:G2,Ct:{x:"hidden",y:"hidden"},Et:{x:!1,y:!1},ht:!1,bt:fu(e.Z)}),wz=(e,t)=>{const n=P0(t,{}),[r,o,s]=c1(),[i,u,d]=iz(e),p=n_(xz(i)),[h,g]=p,v=hz(i,p),b=(P,I,E)=>{const R=Mo(P).some(D=>P[D])||!r1(I)||E;return R&&s("u",[P,I,E]),R},[S,x,C,_]=bz(i,g,P=>b(v(n,P),{},!1)),k=h.bind(0);return k.jt=P=>r("u",P),k.Nt=()=>{const{W:P,J:I}=i,E=fs(P),O=ua(P);x(),u(),fs(I,E),ua(I,O)},k.qt=i,[(P,I)=>{const E=P0(t,P,I);return _(E),b(v(E,C(),I),P,!!I)},k,()=>{o(),S(),d()}]},{round:q2}=Math,Sz=e=>{const{width:t,height:n}=Fs(e),{w:r,h:o}=pu(e);return{x:q2(t)/r||1,y:q2(n)/o||1}},Cz=(e,t,n)=>{const r=t.scrollbars,{button:o,isPrimary:s,pointerType:i}=e,{pointers:u}=r;return o===0&&s&&r[n?"dragScroll":"clickScroll"]&&(u||[]).includes(i)},_z=(e,t)=>Er(e,"mousedown",Er.bind(0,t,"click",W5,{C:!0,$:!0}),{$:!0}),K2="pointerup pointerleave pointercancel lostpointercapture",kz=(e,t,n,r,o,s,i)=>{const{B:u}=So(),{Ft:d,Gt:p,Xt:h}=r,g=`scroll${i?"Left":"Top"}`,v=`client${i?"X":"Y"}`,b=i?"width":"height",S=i?"left":"top",x=i?"w":"h",C=i?"x":"y",_=(k,P)=>I=>{const{Tt:E}=s(),O=pu(p)[x]-pu(d)[x],D=P*I/O*E[C],B=fu(h)&&i?u.n||u.i?1:-1:1;o[g]=k+D*B};return Er(p,"pointerdown",k=>{const P=Sl(k.target,`.${d1}`)===d,I=P?d:p;if(_i(t,ls,R2,!0),Cz(k,e,P)){const E=!P&&k.shiftKey,O=()=>Fs(d),R=()=>Fs(p),D=(V,ee)=>(V||O())[S]-(ee||R())[S],T=_(o[g]||0,1/Sz(o)[C]),B=k[v],W=O(),J=R(),F=W[b],N=D(W,J)+F/2,G=B-J[S],K=P?0:G-N,M=V=>{Qs(U),I.releasePointerCapture(V.pointerId)},U=[_i.bind(0,t,ls,R2),Er(n,K2,M),Er(n,"selectstart",V=>V5(V),{S:!1}),Er(p,K2,M),Er(p,"pointermove",V=>{const ee=V[v]-B;(P||E)&&T(K+ee)})];if(E)T(K);else if(!P){const V=Ai()[J$];V&&Pn(U,V.O(T,D,K,F,G))}I.setPointerCapture(k.pointerId)}})},jz=(e,t)=>(n,r,o,s,i,u)=>{const{Xt:d}=n,[p,h]=yl(333),g=!!i.scrollBy;let v=!0;return Qs.bind(0,[Er(d,"pointerenter",()=>{r(T2,!0)}),Er(d,"pointerleave pointercancel",()=>{r(T2)}),Er(d,"wheel",b=>{const{deltaX:S,deltaY:x,deltaMode:C}=b;g&&v&&C===0&&xa(d)===s&&i.scrollBy({left:S,top:x,behavior:"smooth"}),v=!1,r(z2,!0),p(()=>{v=!0,r(z2)}),V5(b)},{S:!1,$:!0}),_z(d,o),kz(e,s,o,n,i,t,u),h])},{min:E0,max:Q2,abs:Pz,round:Iz}=Math,s_=(e,t,n,r)=>{if(r){const u=n?"x":"y",{Tt:d,zt:p}=r,h=p[u],g=d[u];return Q2(0,E0(1,h/(h+g)))}const o=n?"width":"height",s=Fs(e)[o],i=Fs(t)[o];return Q2(0,E0(1,s/i))},Ez=(e,t,n,r,o,s)=>{const{B:i}=So(),u=s?"x":"y",d=s?"Left":"Top",{Tt:p}=r,h=Iz(p[u]),g=Pz(n[`scroll${d}`]),v=s&&o,b=i.i?g:h-g,x=E0(1,(v?b:g)/h),C=s_(e,t,s);return 1/C*(1-C)*x},Oz=(e,t,n)=>{const{N:r,L:o}=So(),{scrollbars:s}=r(),{slot:i}=s,{ct:u,W:d,Z:p,J:h,lt:g,ot:v,it:b,ut:S}=t,{scrollbars:x}=g?{}:e,{slot:C}=x||{},_=e_([d,p,h],()=>S&&b?d:p,i,C),k=(K,M,U)=>{const V=U?da:a1;gn(K,ee=>{V(ee.Xt,M)})},P=(K,M)=>{gn(K,U=>{const[V,ee]=M(U);Yr(V,ee)})},I=(K,M,U)=>{P(K,V=>{const{Ft:ee,Gt:ie}=V;return[ee,{[U?"width":"height"]:`${(100*s_(ee,ie,U,M)).toFixed(3)}%`}]})},E=(K,M,U)=>{const V=U?"X":"Y";P(K,ee=>{const{Ft:ie,Gt:xe,Xt:me}=ee,ae=Ez(ie,xe,v,M,fu(me),U);return[ie,{transform:ae===ae?`translate${V}(${(100*ae).toFixed(3)}%)`:""}]})},O=[],R=[],D=[],T=(K,M,U)=>{const V=e1(U),ee=V?U:!0,ie=V?!U:!0;ee&&k(R,K,M),ie&&k(D,K,M)},B=K=>{I(R,K,!0),I(D,K)},W=K=>{E(R,K,!0),E(D,K)},J=K=>{const M=K?W$:V$,U=K?R:D,V=n1(U)?A2:"",ee=ki(`${wo} ${M} ${V}`),ie=ki(J5),xe=ki(d1),me={Xt:ee,Gt:ie,Ft:xe};return o||da(ee,B$),Vo(ee,ie),Vo(ie,xe),Pn(U,me),Pn(O,[Us.bind(0,ee),n(me,T,u,p,v,K)]),me},F=J.bind(0,!0),N=J.bind(0,!1),G=()=>{Vo(_,R[0].Xt),Vo(_,D[0].Xt),Gf(()=>{T(A2)},300)};return F(),N(),[{Ut:B,Wt:W,Zt:T,Jt:{Kt:R,Qt:F,tn:P.bind(0,R)},nn:{Kt:D,Qt:N,tn:P.bind(0,D)}},G,Qs.bind(0,O)]},Mz=(e,t,n,r)=>{let o,s,i,u,d,p=0;const h=n_({}),[g]=h,[v,b]=yl(),[S,x]=yl(),[C,_]=yl(100),[k,P]=yl(100),[I,E]=yl(()=>p),[O,R,D]=Oz(e,n.qt,jz(t,n)),{Z:T,J:B,ot:W,st:J,ut:F,it:N}=n.qt,{Jt:G,nn:K,Zt:M,Ut:U,Wt:V}=O,{tn:ee}=G,{tn:ie}=K,xe=re=>{const{Xt:pe}=re,ne=F&&!N&&xa(pe)===B&&pe;return[ne,{transform:ne?`translate(${fs(W)}px, ${ua(W)}px)`:""}]},me=(re,pe)=>{if(E(),re)M($2);else{const ne=()=>M($2,!0);p>0&&!pe?I(ne):ne()}},ae=()=>{u=s,u&&me(!0)},te=[_,E,P,x,b,D,Er(T,"pointerover",ae,{C:!0}),Er(T,"pointerenter",ae),Er(T,"pointerleave",()=>{u=!1,s&&me(!1)}),Er(T,"pointermove",()=>{o&&v(()=>{_(),me(!0),k(()=>{o&&me(!1)})})}),Er(J,"scroll",re=>{S(()=>{V(n()),i&&me(!0),C(()=>{i&&!u&&me(!1)})}),r(re),F&&ee(xe),F&&ie(xe)})],H=g.bind(0);return H.qt=O,H.Nt=R,[(re,pe,ne)=>{const{At:ve,Lt:de,It:Ce,yt:Re}=ne,{A:ge}=So(),_e=P0(t,re,pe),We=n(),{Tt:Le,Ct:Ue,bt:jt}=We,[vt,jn]=_e("showNativeOverlaidScrollbars"),[Pt,bt]=_e("scrollbars.theme"),[be,Ae]=_e("scrollbars.visibility"),[Et,Ft]=_e("scrollbars.autoHide"),[Wt]=_e("scrollbars.autoHideDelay"),[_n,In]=_e("scrollbars.dragScroll"),[ln,Cr]=_e("scrollbars.clickScroll"),vn=ve||de||Re,sr=Ce||Ae,Ie=vt&&ge.x&&ge.y,it=(Xe,ot)=>{const Nt=be==="visible"||be==="auto"&&Xe==="scroll";return M(U$,Nt,ot),Nt};if(p=Wt,jn&&M(F$,Ie),bt&&(M(d),M(Pt,!0),d=Pt),Ft&&(o=Et==="move",s=Et==="leave",i=Et!=="never",me(!i,!0)),In&&M(K$,_n),Cr&&M(q$,ln),sr){const Xe=it(Ue.x,!0),ot=it(Ue.y,!1);M(G$,!(Xe&&ot))}vn&&(U(We),V(We),M(N2,!Le.x,!0),M(N2,!Le.y,!1),M(H$,jt&&!N))},H,Qs.bind(0,te)]},a_=(e,t,n)=>{vs(e)&&e(t||void 0,n||void 0)},Ua=(e,t,n)=>{const{F:r,N:o,Y:s,j:i}=So(),u=Ai(),d=Vf(e),p=d?e:e.target,h=t_(p);if(t&&!h){let g=!1;const v=F=>{const N=Ai()[Y$],G=N&&N.O;return G?G(F,!0):F},b=rr({},r(),v(t)),[S,x,C]=c1(n),[_,k,P]=wz(e,b),[I,E,O]=Mz(e,b,k,F=>C("scroll",[J,F])),R=(F,N)=>_(F,!!N),D=R.bind(0,{},!0),T=s(D),B=i(D),W=F=>{az(p),T(),B(),O(),P(),g=!0,C("destroyed",[J,!!F]),x()},J={options(F,N){if(F){const G=N?r():{},K=U5(b,rr(G,v(F)));r1(K)||(rr(b,K),R(K))}return rr({},b)},on:S,off:(F,N)=>{F&&N&&x(F,N)},state(){const{zt:F,Tt:N,Ct:G,Et:K,K:M,St:U,bt:V}=k();return rr({},{overflowEdge:F,overflowAmount:N,overflowStyle:G,hasOverflow:K,padding:M,paddingAbsolute:U,directionRTL:V,destroyed:g})},elements(){const{W:F,Z:N,K:G,J:K,tt:M,ot:U,st:V}=k.qt,{Jt:ee,nn:ie}=E.qt,xe=ae=>{const{Ft:te,Gt:H,Xt:re}=ae;return{scrollbar:re,track:H,handle:te}},me=ae=>{const{Kt:te,Qt:H}=ae,re=xe(te[0]);return rr({},re,{clone:()=>{const pe=xe(H());return I({},!0,{}),pe}})};return rr({},{target:F,host:N,padding:G||K,viewport:K,content:M||K,scrollOffsetElement:U,scrollEventElement:V,scrollbarHorizontal:me(ee),scrollbarVertical:me(ie)})},update:F=>R({},F),destroy:W.bind(0)};return k.jt((F,N,G)=>{I(N,G,F)}),sz(p,J),gn(Mo(u),F=>a_(u[F],0,J)),oz(k.qt.it,o().cancel,!d&&e.cancel)?(W(!0),J):(k.Nt(),E.Nt(),C("initialized",[J]),k.jt((F,N,G)=>{const{gt:K,yt:M,vt:U,At:V,Lt:ee,It:ie,wt:xe,Ot:me}=F;C("updated",[J,{updateHints:{sizeChanged:K,directionChanged:M,heightIntrinsicChanged:U,overflowEdgeChanged:V,overflowAmountChanged:ee,overflowStyleChanged:ie,contentMutation:xe,hostMutation:me},changedOptions:N,force:G}])}),J.update(!0),J)}return h};Ua.plugin=e=>{gn(Q$(e),t=>a_(t,Ua))};Ua.valid=e=>{const t=e&&e.elements,n=vs(t)&&t();return S0(n)&&!!t_(n.target)};Ua.env=()=>{const{k:e,A:t,I:n,B:r,V:o,L:s,X:i,U:u,N:d,q:p,F:h,G:g}=So();return rr({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,rtlScrollBehavior:r,flexboxGlue:o,cssCustomProperties:s,staticDefaultInitialization:i,staticDefaultOptions:u,getDefaultInitialization:d,setDefaultInitialization:p,getDefaultOptions:h,setDefaultOptions:g})};const Rz=()=>{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,u=r?n.cancelIdleCallback:s,d=()=>{u(e),s(t)};return[(p,h)=>{d(),e=i(r?()=>{d(),t=o(p)}:p,typeof h=="object"?h:{timeout:2233})},d]},m1=e=>{const{options:t,events:n,defer:r}=e||{},[o,s]=f.useMemo(Rz,[]),i=f.useRef(null),u=f.useRef(r),d=f.useRef(t),p=f.useRef(n);return f.useEffect(()=>{u.current=r},[r]),f.useEffect(()=>{const{current:h}=i;d.current=t,Ua.valid(h)&&h.options(t||{},!0)},[t]),f.useEffect(()=>{const{current:h}=i;p.current=n,Ua.valid(h)&&h.on(n||{},!0)},[n]),f.useEffect(()=>()=>{var h;s(),(h=i.current)==null||h.destroy()},[]),f.useMemo(()=>[h=>{const g=i.current;if(Ua.valid(g))return;const v=u.current,b=d.current||{},S=p.current||{},x=()=>i.current=Ua(h,b,S);v?o(x,v):x()},()=>i.current],[])},Dz=(e,t)=>{const{element:n="div",options:r,events:o,defer:s,children:i,...u}=e,d=n,p=f.useRef(null),h=f.useRef(null),[g,v]=m1({options:r,events:o,defer:s});return f.useEffect(()=>{const{current:b}=p,{current:S}=h;return b&&S&&g({target:b,elements:{viewport:S,content:S}}),()=>{var x;return(x=v())==null?void 0:x.destroy()}},[g,n]),f.useImperativeHandle(t,()=>({osInstance:v,getElement:()=>p.current}),[]),z.createElement(d,{"data-overlayscrollbars-initialize":"",ref:p,...u},z.createElement("div",{ref:h},i))},i_=f.forwardRef(Dz),yr=e=>{const t=$(i=>i.config.disabledTabs),n=$(i=>i.config.disabledFeatures),r=$(i=>i.config.disabledSDFeatures),o=f.useMemo(()=>n.includes(e)||r.includes(e)||t.includes(e),[n,r,t,e]),s=f.useMemo(()=>!(n.includes(e)||r.includes(e)||t.includes(e)),[n,r,t,e]);return{isFeatureDisabled:o,isFeatureEnabled:s}};var l_={exports:{}},c_={};const Eo=cv(e8),Rc=cv(t8),Az=cv(n8);(function(e){var t,n,r=al&&al.__generator||function(q,Y){var le,we,ce,nt,Je={label:0,sent:function(){if(1&ce[0])throw ce[1];return ce[1]},trys:[],ops:[]};return nt={next:Dt(0),throw:Dt(1),return:Dt(2)},typeof Symbol=="function"&&(nt[Symbol.iterator]=function(){return this}),nt;function Dt(st){return function(dt){return function(De){if(le)throw new TypeError("Generator is already executing.");for(;Je;)try{if(le=1,we&&(ce=2&De[0]?we.return:De[0]?we.throw||((ce=we.return)&&ce.call(we),0):we.next)&&!(ce=ce.call(we,De[1])).done)return ce;switch(we=0,ce&&(De=[2&De[0],ce.value]),De[0]){case 0:case 1:ce=De;break;case 4:return Je.label++,{value:De[1],done:!1};case 5:Je.label++,we=De[1],De=[0];continue;case 7:De=Je.ops.pop(),Je.trys.pop();continue;default:if(!((ce=(ce=Je.trys).length>0&&ce[ce.length-1])||De[0]!==6&&De[0]!==2)){Je=0;continue}if(De[0]===3&&(!ce||De[1]>ce[0]&&De[1]=200&&q.status<=299},J=function(q){return/ion\/(vnd\.api\+)?json/.test(q.get("content-type")||"")};function F(q){if(!(0,T.isPlainObject)(q))return q;for(var Y=C({},q),le=0,we=Object.entries(Y);le"u"&&Je===B&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(qt,$t){return E(Y,null,function(){var Oe,ut,_t,At,xn,zt,tn,Jt,_r,Un,yt,wn,kn,Gn,ar,En,On,nn,pn,Sn,cn,un,Be,wt,pt,Ze,ft,Rt,lt,Qe,ke,Se,Pe,Te,Ge,kt;return r(this,function(St){switch(St.label){case 0:return Oe=$t.signal,ut=$t.getState,_t=$t.extra,At=$t.endpoint,xn=$t.forced,zt=$t.type,_r=(Jt=typeof qt=="string"?{url:qt}:qt).url,yt=(Un=Jt.headers)===void 0?new Headers(Lt.headers):Un,kn=(wn=Jt.params)===void 0?void 0:wn,ar=(Gn=Jt.responseHandler)===void 0?xt??"json":Gn,On=(En=Jt.validateStatus)===void 0?Ot??W:En,pn=(nn=Jt.timeout)===void 0?ht:nn,Sn=P(Jt,["url","headers","params","responseHandler","validateStatus","timeout"]),cn=C(_(C({},Lt),{signal:Oe}),Sn),yt=new Headers(F(yt)),un=cn,[4,ce(yt,{getState:ut,extra:_t,endpoint:At,forced:xn,type:zt})];case 1:un.headers=St.sent()||yt,Be=function(Ne){return typeof Ne=="object"&&((0,T.isPlainObject)(Ne)||Array.isArray(Ne)||typeof Ne.toJSON=="function")},!cn.headers.has("content-type")&&Be(cn.body)&&cn.headers.set("content-type",ye),Be(cn.body)&&dt(cn.headers)&&(cn.body=JSON.stringify(cn.body,Fe)),kn&&(wt=~_r.indexOf("?")?"&":"?",pt=Dt?Dt(kn):new URLSearchParams(F(kn)),_r+=wt+pt),_r=function(Ne,Qt){if(!Ne)return Qt;if(!Qt)return Ne;if(function(on){return new RegExp("(^|:)//").test(on)}(Qt))return Qt;var dn=Ne.endsWith("/")||!Qt.startsWith("?")?"/":"";return Ne=function(on){return on.replace(/\/$/,"")}(Ne),""+Ne+dn+function(on){return on.replace(/^\//,"")}(Qt)}(le,_r),Ze=new Request(_r,cn),ft=Ze.clone(),tn={request:ft},lt=!1,Qe=pn&&setTimeout(function(){lt=!0,$t.abort()},pn),St.label=2;case 2:return St.trys.push([2,4,5,6]),[4,Je(Ze)];case 3:return Rt=St.sent(),[3,6];case 4:return ke=St.sent(),[2,{error:{status:lt?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(ke)},meta:tn}];case 5:return Qe&&clearTimeout(Qe),[7];case 6:Se=Rt.clone(),tn.response=Se,Te="",St.label=7;case 7:return St.trys.push([7,9,,10]),[4,Promise.all([Kt(Rt,ar).then(function(Ne){return Pe=Ne},function(Ne){return Ge=Ne}),Se.text().then(function(Ne){return Te=Ne},function(){})])];case 8:if(St.sent(),Ge)throw Ge;return[3,10];case 9:return kt=St.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:Rt.status,data:Te,error:String(kt)},meta:tn}];case 10:return[2,On(Rt,Pe)?{data:Pe,meta:tn}:{error:{status:Rt.status,data:Pe},meta:tn}]}})})};function Kt(qt,$t){return E(this,null,function(){var Oe;return r(this,function(ut){switch(ut.label){case 0:return typeof $t=="function"?[2,$t(qt)]:($t==="content-type"&&($t=dt(qt.headers)?"json":"text"),$t!=="json"?[3,2]:[4,qt.text()]);case 1:return[2,(Oe=ut.sent()).length?JSON.parse(Oe):null];case 2:return[2,qt.text()]}})})}}var G=function(q,Y){Y===void 0&&(Y=void 0),this.value=q,this.meta=Y};function K(q,Y){return q===void 0&&(q=0),Y===void 0&&(Y=5),E(this,null,function(){var le,we;return r(this,function(ce){switch(ce.label){case 0:return le=Math.min(q,Y),we=~~((Math.random()+.4)*(300<=Se)}var Sn=(0,Ue.createAsyncThunk)(kn+"/executeQuery",nn,{getPendingMeta:function(){var Be;return(Be={startedTimeStamp:Date.now()})[Ue.SHOULD_AUTOBATCH]=!0,Be},condition:function(Be,wt){var pt,Ze,ft,Rt=(0,wt.getState)(),lt=(Ze=(pt=Rt[kn])==null?void 0:pt.queries)==null?void 0:Ze[Be.queryCacheKey],Qe=lt==null?void 0:lt.fulfilledTimeStamp,ke=Be.originalArgs,Se=lt==null?void 0:lt.originalArgs,Pe=ar[Be.endpointName];return!(!_e(Be)&&((lt==null?void 0:lt.status)==="pending"||!pn(Be,Rt)&&(!ne(Pe)||!((ft=Pe==null?void 0:Pe.forceRefetch)!=null&&ft.call(Pe,{currentArg:ke,previousArg:Se,endpointState:lt,state:Rt})))&&Qe))},dispatchConditionRejection:!0}),cn=(0,Ue.createAsyncThunk)(kn+"/executeMutation",nn,{getPendingMeta:function(){var Be;return(Be={startedTimeStamp:Date.now()})[Ue.SHOULD_AUTOBATCH]=!0,Be}});function un(Be){return function(wt){var pt,Ze;return((Ze=(pt=wt==null?void 0:wt.meta)==null?void 0:pt.arg)==null?void 0:Ze.endpointName)===Be}}return{queryThunk:Sn,mutationThunk:cn,prefetch:function(Be,wt,pt){return function(Ze,ft){var Rt=function(Pe){return"force"in Pe}(pt)&&pt.force,lt=function(Pe){return"ifOlderThan"in Pe}(pt)&&pt.ifOlderThan,Qe=function(Pe){return Pe===void 0&&(Pe=!0),On.endpoints[Be].initiate(wt,{forceRefetch:Pe})},ke=On.endpoints[Be].select(wt)(ft());if(Rt)Ze(Qe());else if(lt){var Se=ke==null?void 0:ke.fulfilledTimeStamp;if(!Se)return void Ze(Qe());(Number(new Date)-Number(new Date(Se)))/1e3>=lt&&Ze(Qe())}else Ze(Qe(!1))}},updateQueryData:function(Be,wt,pt){return function(Ze,ft){var Rt,lt,Qe=On.endpoints[Be].select(wt)(ft()),ke={patches:[],inversePatches:[],undo:function(){return Ze(On.util.patchQueryData(Be,wt,ke.inversePatches))}};if(Qe.status===t.uninitialized)return ke;if("data"in Qe)if((0,Le.isDraftable)(Qe.data)){var Se=(0,Le.produceWithPatches)(Qe.data,pt),Pe=Se[2];(Rt=ke.patches).push.apply(Rt,Se[1]),(lt=ke.inversePatches).push.apply(lt,Pe)}else{var Te=pt(Qe.data);ke.patches.push({op:"replace",path:[],value:Te}),ke.inversePatches.push({op:"replace",path:[],value:Qe.data})}return Ze(On.util.patchQueryData(Be,wt,ke.patches)),ke}},upsertQueryData:function(Be,wt,pt){return function(Ze){var ft;return Ze(On.endpoints[Be].initiate(wt,((ft={subscribe:!1,forceRefetch:!0})[ge]=function(){return{data:pt}},ft)))}},patchQueryData:function(Be,wt,pt){return function(Ze){Ze(On.internalActions.queryResultPatched({queryCacheKey:En({queryArgs:wt,endpointDefinition:ar[Be],endpointName:Be}),patches:pt}))}},buildMatchThunkActions:function(Be,wt){return{matchPending:(0,We.isAllOf)((0,We.isPending)(Be),un(wt)),matchFulfilled:(0,We.isAllOf)((0,We.isFulfilled)(Be),un(wt)),matchRejected:(0,We.isAllOf)((0,We.isRejected)(Be),un(wt))}}}}({baseQuery:we,reducerPath:ce,context:le,api:q,serializeQueryArgs:nt}),Fe=ye.queryThunk,ht=ye.mutationThunk,xt=ye.patchQueryData,Ot=ye.updateQueryData,Lt=ye.upsertQueryData,Kt=ye.prefetch,qt=ye.buildMatchThunkActions,$t=function(yt){var wn=yt.reducerPath,kn=yt.queryThunk,Gn=yt.mutationThunk,ar=yt.context,En=ar.endpointDefinitions,On=ar.apiUid,nn=ar.extractRehydrationInfo,pn=ar.hasRehydrationInfo,Sn=yt.assertTagType,cn=yt.config,un=(0,Ce.createAction)(wn+"/resetApiState"),Be=(0,Ce.createSlice)({name:wn+"/queries",initialState:Et,reducers:{removeQueryResult:{reducer:function(Qe,ke){delete Qe[ke.payload.queryCacheKey]},prepare:(0,Ce.prepareAutoBatched)()},queryResultPatched:function(Qe,ke){var Se=ke.payload,Pe=Se.patches;bt(Qe,Se.queryCacheKey,function(Te){Te.data=(0,Pt.applyPatches)(Te.data,Pe.concat())})}},extraReducers:function(Qe){Qe.addCase(kn.pending,function(ke,Se){var Pe,Te=Se.meta,Ge=Se.meta.arg,kt=_e(Ge);(Ge.subscribe||kt)&&(ke[Pe=Ge.queryCacheKey]!=null||(ke[Pe]={status:t.uninitialized,endpointName:Ge.endpointName})),bt(ke,Ge.queryCacheKey,function(St){St.status=t.pending,St.requestId=kt&&St.requestId?St.requestId:Te.requestId,Ge.originalArgs!==void 0&&(St.originalArgs=Ge.originalArgs),St.startedTimeStamp=Te.startedTimeStamp})}).addCase(kn.fulfilled,function(ke,Se){var Pe=Se.meta,Te=Se.payload;bt(ke,Pe.arg.queryCacheKey,function(Ge){var kt;if(Ge.requestId===Pe.requestId||_e(Pe.arg)){var St=En[Pe.arg.endpointName].merge;if(Ge.status=t.fulfilled,St)if(Ge.data!==void 0){var Ne=Pe.fulfilledTimeStamp,Qt=Pe.arg,dn=Pe.baseQueryMeta,on=Pe.requestId,ir=(0,Ce.createNextState)(Ge.data,function(Fn){return St(Fn,Te,{arg:Qt.originalArgs,baseQueryMeta:dn,fulfilledTimeStamp:Ne,requestId:on})});Ge.data=ir}else Ge.data=Te;else Ge.data=(kt=En[Pe.arg.endpointName].structuralSharing)==null||kt?D((0,jn.isDraft)(Ge.data)?(0,Pt.original)(Ge.data):Ge.data,Te):Te;delete Ge.error,Ge.fulfilledTimeStamp=Pe.fulfilledTimeStamp}})}).addCase(kn.rejected,function(ke,Se){var Pe=Se.meta,Te=Pe.condition,Ge=Pe.requestId,kt=Se.error,St=Se.payload;bt(ke,Pe.arg.queryCacheKey,function(Ne){if(!Te){if(Ne.requestId!==Ge)return;Ne.status=t.rejected,Ne.error=St??kt}})}).addMatcher(pn,function(ke,Se){for(var Pe=nn(Se).queries,Te=0,Ge=Object.entries(Pe);Te"u"||navigator.onLine===void 0||navigator.onLine,focused:typeof document>"u"||document.visibilityState!=="hidden",middlewareRegistered:!1},cn),reducers:{middlewareRegistered:function(Qe,ke){Qe.middlewareRegistered=Qe.middlewareRegistered!=="conflict"&&On===ke.payload||"conflict"}},extraReducers:function(Qe){Qe.addCase(xe,function(ke){ke.online=!0}).addCase(me,function(ke){ke.online=!1}).addCase(ee,function(ke){ke.focused=!0}).addCase(ie,function(ke){ke.focused=!1}).addMatcher(pn,function(ke){return C({},ke)})}}),lt=(0,Ce.combineReducers)({queries:Be.reducer,mutations:wt.reducer,provided:pt.reducer,subscriptions:ft.reducer,config:Rt.reducer});return{reducer:function(Qe,ke){return lt(un.match(ke)?void 0:Qe,ke)},actions:_(C(C(C(C(C({},Rt.actions),Be.actions),Ze.actions),ft.actions),wt.actions),{unsubscribeMutationResult:wt.actions.removeMutationResult,resetApiState:un})}}({context:le,queryThunk:Fe,mutationThunk:ht,reducerPath:ce,assertTagType:De,config:{refetchOnFocus:st,refetchOnReconnect:dt,refetchOnMountOrArgChange:Dt,keepUnusedDataFor:Je,reducerPath:ce}}),Oe=$t.reducer,ut=$t.actions;Dr(q.util,{patchQueryData:xt,updateQueryData:Ot,upsertQueryData:Lt,prefetch:Kt,resetApiState:ut.resetApiState}),Dr(q.internalActions,ut);var _t=function(yt){var wn=yt.reducerPath,kn=yt.queryThunk,Gn=yt.api,ar=yt.context,En=ar.apiUid,On={invalidateTags:(0,ur.createAction)(wn+"/invalidateTags")},nn=[zr,yn,$r,dr,Nn,_o];return{middleware:function(Sn){var cn=!1,un=_(C({},yt),{internalState:{currentSubscriptions:{}},refetchQuery:pn}),Be=nn.map(function(Ze){return Ze(un)}),wt=function(Ze){var ft=Ze.api,Rt=Ze.queryThunk,lt=Ze.internalState,Qe=ft.reducerPath+"/subscriptions",ke=null,Se=!1,Pe=ft.internalActions,Te=Pe.updateSubscriptionOptions,Ge=Pe.unsubscribeQueryResult;return function(kt,St){var Ne,Qt;if(ke||(ke=JSON.parse(JSON.stringify(lt.currentSubscriptions))),ft.util.resetApiState.match(kt))return ke=lt.currentSubscriptions={},[!0,!1];if(ft.internalActions.internal_probeSubscription.match(kt)){var dn=kt.payload;return[!1,!!((Ne=lt.currentSubscriptions[dn.queryCacheKey])!=null&&Ne[dn.requestId])]}var on=function(an,$n){var to,rn,Mn,Br,kr,Pa,Uu,ko,Js;if(Te.match($n)){var Ps=$n.payload,Zs=Ps.queryCacheKey,no=Ps.requestId;return(to=an==null?void 0:an[Zs])!=null&&to[no]&&(an[Zs][no]=Ps.options),!0}if(Ge.match($n)){var ro=$n.payload;return no=ro.requestId,an[Zs=ro.queryCacheKey]&&delete an[Zs][no],!0}if(ft.internalActions.removeQueryResult.match($n))return delete an[$n.payload.queryCacheKey],!0;if(Rt.pending.match($n)){var oo=$n.meta;if(no=oo.requestId,(Vr=oo.arg).subscribe)return(Do=(Mn=an[rn=Vr.queryCacheKey])!=null?Mn:an[rn]={})[no]=(kr=(Br=Vr.subscriptionOptions)!=null?Br:Do[no])!=null?kr:{},!0}if(Rt.rejected.match($n)){var Do,jo=$n.meta,Vr=jo.arg;if(no=jo.requestId,jo.condition&&Vr.subscribe)return(Do=(Uu=an[Pa=Vr.queryCacheKey])!=null?Uu:an[Pa]={})[no]=(Js=(ko=Vr.subscriptionOptions)!=null?ko:Do[no])!=null?Js:{},!0}return!1}(lt.currentSubscriptions,kt);if(on){Se||(es(function(){var an=JSON.parse(JSON.stringify(lt.currentSubscriptions)),$n=(0,Lr.produceWithPatches)(ke,function(){return an});St.next(ft.internalActions.subscriptionsUpdated($n[1])),ke=an,Se=!1}),Se=!0);var ir=!!((Qt=kt.type)!=null&&Qt.startsWith(Qe)),Fn=Rt.rejected.match(kt)&&kt.meta.condition&&!!kt.meta.arg.subscribe;return[!ir&&!Fn,!1]}return[!0,!1]}}(un),pt=function(Ze){var ft=Ze.reducerPath,Rt=Ze.context,lt=Ze.refetchQuery,Qe=Ze.internalState,ke=Ze.api.internalActions.removeQueryResult;function Se(Pe,Te){var Ge=Pe.getState()[ft],kt=Ge.queries,St=Qe.currentSubscriptions;Rt.batch(function(){for(var Ne=0,Qt=Object.keys(St);Ne{const{children:n,tooltip:r="",tooltipProps:{placement:o="top",hasArrow:s=!0,...i}={},isChecked:u,...d}=e;return a.jsx(Cn,{label:r,placement:o,hasArrow:s,...i,children:a.jsx(kf,{ref:t,colorScheme:u?"accent":"base",...d,children:n})})}),Xt=f.memo(Tz),Nz=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||!Lc(t)?null:a.jsxs(a.Fragment,{children:[a.jsx(qe,{children:n}),a.jsxs(Fv,{sx:{paddingInlineStart:6},children:[t.isInitialImage&&a.jsx(la,{children:"Image to Image"}),t.isCanvasImage&&a.jsx(la,{children:"Unified Canvas"}),t.isControlNetImage&&a.jsx(la,{children:"ControlNet"}),t.isNodesImage&&a.jsx(la,{children:"Node Editor"})]}),a.jsx(qe,{children:r})]})},u_=f.memo(Nz),$z=e=>{const{boardToDelete:t,setBoardToDelete:n}=e,{t:r}=ue(),o=$(k=>k.config.canRestoreDeletedImagesFromBin),{currentData:s,isFetching:i}=r8((t==null?void 0:t.board_id)??Xr.skipToken),u=f.useMemo(()=>he([mt],k=>{const P=(s??[]).map(E=>o8(k,E));return{imageUsageSummary:{isInitialImage:Lc(P,E=>E.isInitialImage),isCanvasImage:Lc(P,E=>E.isCanvasImage),isNodesImage:Lc(P,E=>E.isNodesImage),isControlNetImage:Lc(P,E=>E.isControlNetImage)}}}),[s]),[d,{isLoading:p}]=s8(),[h,{isLoading:g}]=a8(),{imageUsageSummary:v}=$(u),b=f.useCallback(()=>{t&&(d(t.board_id),n(void 0))},[t,d,n]),S=f.useCallback(()=>{t&&(h(t.board_id),n(void 0))},[t,h,n]),x=f.useCallback(()=>{n(void 0)},[n]),C=f.useRef(null),_=f.useMemo(()=>g||p||i,[g,p,i]);return t?a.jsx(Du,{isOpen:!!t,onClose:x,leastDestructiveRef:C,isCentered:!0,children:a.jsx(ya,{children:a.jsxs(Au,{children:[a.jsxs(va,{fontSize:"lg",fontWeight:"bold",children:["Delete ",t.board_name]}),a.jsx(ba,{children:a.jsxs(L,{direction:"column",gap:3,children:[i?a.jsx(ah,{children:a.jsx(L,{sx:{w:"full",h:32}})}):a.jsx(u_,{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(qe,{children:"Deleted boards cannot be restored."}),a.jsx(qe,{children:r(o?"gallery.deleteImageBin":"gallery.deleteImagePermanent")})]})}),a.jsx(ga,{children:a.jsxs(L,{sx:{justifyContent:"space-between",width:"full",gap:2},children:[a.jsx(Xt,{ref:C,onClick:x,children:"Cancel"}),a.jsx(Xt,{colorScheme:"warning",isLoading:_,onClick:b,children:"Delete Board Only"}),a.jsx(Xt,{colorScheme:"error",isLoading:_,onClick:S,children:"Delete Board and Images"})]})})]})})}):null},zz=f.memo($z);function Lz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"}}]})(e)}function Bz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"}}]})(e)}function Fz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"}}]})(e)}function Hz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"}}]})(e)}function Wz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 256 512"},child:[{tag:"path",attr:{d:"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"}}]})(e)}function Vz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 256 512"},child:[{tag:"path",attr:{d:"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"}}]})(e)}function Uz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"}}]})(e)}function Gz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"}}]})(e)}function d_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"}}]})(e)}function f_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"}}]})(e)}function qz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"}}]})(e)}function Kz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"}}]})(e)}function Qz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"}}]})(e)}function g1(e){return Ve({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"}}]})(e)}function cc(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"}}]})(e)}function p_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"}}]})(e)}function Yz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"}}]})(e)}function v1(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"}}]})(e)}function h_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"}}]})(e)}function m_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"}}]})(e)}function Xz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 192 512"},child:[{tag:"path",attr:{d:"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z"}}]})(e)}function Jz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"}}]})(e)}function Zz(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"}}]})(e)}function eL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"}}]})(e)}function g_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"}}]})(e)}function tL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"}}]})(e)}function nL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"}}]})(e)}function v_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"}}]})(e)}function kg(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"}}]})(e)}function rL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"}}]})(e)}function oL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"}}]})(e)}function Ti(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"}}]})(e)}function sL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z"}}]})(e)}function aL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"}}]})(e)}function iL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 192 512"},child:[{tag:"path",attr:{d:"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"}}]})(e)}function lL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"}}]})(e)}function y_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"}}]})(e)}function cL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"}}]})(e)}function uL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"}}]})(e)}function dL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"}}]})(e)}function fL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"}}]})(e)}function pL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"}}]})(e)}function b_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"}}]})(e)}function x_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"}}]})(e)}function Hi(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"}}]})(e)}function w_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"}}]})(e)}function hL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"}}]})(e)}function mL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"}}]})(e)}function yh(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"}}]})(e)}function gL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"}}]})(e)}function S_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"}}]})(e)}function vL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"}}]})(e)}function yL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"}}]})(e)}function Y2(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"}}]})(e)}function y1(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"}}]})(e)}function bL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"}}]})(e)}function xL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"}}]})(e)}function C_(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"}}]})(e)}function wL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 352 512"},child:[{tag:"path",attr:{d:"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"}}]})(e)}function Xo(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"}}]})(e)}function b1(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"}}]})(e)}function Fu(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"}}]})(e)}function SL(e){return Ve({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"}}]})(e)}function x1(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"}}]})(e)}const CL="My Board",_L=()=>{const[e,{isLoading:t}]=i8(),n=f.useCallback(()=>{e(CL)},[e]);return a.jsx(je,{icon:a.jsx(Hi,{}),isLoading:t,tooltip:"Add Board","aria-label":"Add Board",onClick:n,size:"sm"})};var __=ju({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"})]})}),w1=ju({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"}),kL=ju({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"}),jL=ju({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"})})}),PL=ju({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});const IL=he([mt],({boards:e})=>{const{searchText:t}=e;return{searchText:t}},Ke),EL=()=>{const e=Z(),{searchText:t}=$(IL),n=f.useRef(null),r=f.useCallback(u=>{e(tx(u))},[e]),o=f.useCallback(()=>{e(tx(""))},[e]),s=f.useCallback(u=>{u.key==="Escape"&&o()},[o]),i=f.useCallback(u=>{r(u.target.value)},[r]);return f.useEffect(()=>{n.current&&n.current.focus()},[]),a.jsxs(M6,{children:[a.jsx(Iu,{ref:n,placeholder:"Search Boards...",value:t,onKeyDown:s,onChange:i}),t&&t.length&&a.jsx(Lv,{children:a.jsx(qa,{onClick:o,size:"xs",variant:"ghost","aria-label":"Clear Search",opacity:.5,icon:a.jsx(kL,{boxSize:2})})})]})},OL=f.memo(EL),ML=e=>{const{isOver:t,label:n="Drop"}=e,r=f.useRef(Ka()),{colorMode:o}=xs();return a.jsx(Jr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsxs(L,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full"},children:[a.jsx(L,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:Me("base.700","base.900")(o),opacity:.7,borderRadius:"base",alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx(L,{sx:{position:"absolute",top:.5,insetInlineStart:.5,insetInlineEnd:.5,bottom:.5,opacity:1,borderWidth:2,borderColor:t?Me("base.50","base.50")(o):Me("base.200","base.300")(o),borderRadius:"lg",borderStyle:"dashed",transitionProperty:"common",transitionDuration:"0.1s",alignItems:"center",justifyContent:"center"},children:a.jsx(qe,{sx:{fontSize:"2xl",fontWeight:600,transform:t?"scale(1.1)":"scale(1)",color:t?Me("base.50","base.50")(o):Me("base.200","base.300")(o),transitionProperty:"common",transitionDuration:"0.1s"},children:n})})]})},r.current)},Yf=f.memo(ML),RL=e=>{const{dropLabel:t,data:n,disabled:r,hoverRef:o}=e,s=f.useRef(Ka()),{isOver:i,setNodeRef:u,active:d}=uv({id:s.current,disabled:r,data:n});return a.jsx($e,{ref:u,position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",pointerEvents:"none",children:a.jsx(Ko,{children:jf(n,d)&&a.jsx(Yf,{isOver:i,label:t})})})},S1=f.memo(RL),C1=e=>{const t=$(s=>s.gallery.galleryView),{data:n}=l8(e),{data:r}=c8(e),o=f.useMemo(()=>t==="images"?n:r,[t,r,n]);return{totalImages:n,totalAssets:r,currentViewTotal:o}},k_=()=>a.jsx(L,{sx:{position:"absolute",insetInlineEnd:0,top:0,p:1},children:a.jsx(Za,{variant:"solid",sx:{bg:"accent.400",_dark:{bg:"accent.500"}},children:"auto"})});var Jc=globalThis&&globalThis.__assign||function(){return Jc=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const n=Z(),r=f.useMemo(()=>he(mt,({gallery:i})=>({isSelectedForAutoAdd:e.board_id===i.autoAddBoardId}),Ke),[e.board_id]),{isSelectedForAutoAdd:o}=$(r),s=f.useCallback(()=>{t&&t(e)},[e,t]);return f.useCallback(()=>{n(Yp(o?void 0:e.board_id))},[e.board_id,n,o]),a.jsxs(a.Fragment,{children:[e.image_count>0&&a.jsx(a.Fragment,{}),a.jsx(ao,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Xo,{}),onClick:s,children:"Delete Board"})]})},AL=f.memo(DL),TL=()=>{const e=Z();return $(t=>t.gallery.autoAddBoardId),f.useCallback(()=>{e(Yp(void 0))},[e]),a.jsx(a.Fragment,{})},NL=f.memo(TL),bh=e=>{const{boardName:t}=Xp(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},_1=f.memo(({board:e,board_id:t,setBoardToDelete:n,children:r})=>{const o=Z(),s=f.useMemo(()=>he(mt,({gallery:g})=>{const v=g.selectedBoardId===t,b=g.autoAddBoardId===t;return{isSelected:v,isAutoAdd:b}}),[t]),{isSelected:i,isAutoAdd:u}=$(s),d=bh(t);f.useCallback(()=>{o(dv(t))},[t,o]);const p=f.useCallback(()=>{o(Yp(t))},[t,o]),h=f.useCallback(g=>{g.preventDefault()},[]);return a.jsx(j_,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>a.jsx(ic,{sx:{visibility:"visible !important"},motionProps:Cv,onContextMenu:h,children:a.jsxs(Vv,{title:d,children:[a.jsx(ao,{icon:a.jsx(Hi,{}),isDisabled:u,onClick:p,children:"Auto-add to this Board"}),!e&&a.jsx(NL,{}),e&&a.jsx(AL,{board:e,setBoardToDelete:n})]})}),children:r})});_1.displayName="HoverableBoard";const k1=({isSelected:e,isHovered:t})=>a.jsx($e,{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",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}}}),P_=f.memo(({board:e,isSelected:t,setBoardToDelete:n})=>{const r=Z(),o=f.useMemo(()=>he(mt,({gallery:E})=>({isSelectedForAutoAdd:e.board_id===E.autoAddBoardId}),Ke),[e.board_id]),{isSelectedForAutoAdd:s}=$(o),[i,u]=f.useState(!1),d=f.useCallback(()=>{u(!0)},[]),p=f.useCallback(()=>{u(!1)},[]),{currentData:h}=Uo(e.cover_image_name??Xr.skipToken);C1(e.board_id);const{board_name:g,board_id:v}=e,[b,S]=f.useState(g),x=f.useCallback(()=>{r(dv(v))},[v,r]),[C,{isLoading:_}]=u8(),k=f.useMemo(()=>({id:v,actionType:"MOVE_BOARD",context:{boardId:v}}),[v]),P=f.useCallback(async E=>{if(!E.trim()){S(g);return}if(E!==g)try{const{board_name:O}=await C({board_id:v,changes:{board_name:E}}).unwrap();S(O)}catch{S(g)}},[v,g,C]),I=f.useCallback(E=>{S(E)},[]);return a.jsx($e,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx(L,{onMouseOver:d,onMouseOut:p,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",w:"full",h:"full"},children:a.jsx(_1,{board:e,board_id:v,setBoardToDelete:n,children:E=>a.jsxs(L,{ref:E,onClick:x,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[h!=null&&h.thumbnail_url?a.jsx(rc,{src:h==null?void 0:h.thumbnail_url,draggable:!1,sx:{objectFit:"cover",w:"full",h:"full",maxH:"full",borderRadius:"base",borderBottomRadius:"lg"}}):a.jsx(L,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(io,{boxSize:12,as:SL,sx:{mt:-6,opacity:.7,color:"base.500",_dark:{color:"base.500"}}})}),s&&a.jsx(k_,{}),a.jsx(k1,{isSelected:t,isHovered:i}),a.jsx(L,{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(q3,{value:b,isDisabled:_,submitOnBlur:!0,onChange:I,onSubmit:P,sx:{w:"full"},children:[a.jsx(V3,{sx:{p:0,fontWeight:t?700:500,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis"},noOfLines:1}),a.jsx(W3,{sx:{p:0,_focusVisible:{p:0,textAlign:"center",boxShadow:"none"}}})]})}),a.jsx(S1,{data:k,dropLabel:a.jsx(qe,{fontSize:"md",children:"Move"})})]})})})})});P_.displayName="HoverableBoard";const $L=he(mt,({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},Ke),I_=f.memo(({isSelected:e})=>{const t=Z();C1(void 0);const{autoAddBoardId:n}=$($L),r=bh(void 0),o=f.useCallback(()=>{t(dv(void 0))},[t]),[s,i]=f.useState(!1),u=f.useCallback(()=>{i(!0)},[]),d=f.useCallback(()=>{i(!1)},[]),p=f.useMemo(()=>({id:"no_board",actionType:"MOVE_BOARD",context:{boardId:void 0}}),[]);return a.jsx($e,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx(L,{onMouseOver:u,onMouseOut:d,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",borderRadius:"base",w:"full",h:"full"},children:a.jsx(_1,{children:h=>a.jsxs(L,{ref:h,onClick:o,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(L,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(rc,{src:R4,alt:"invoke-ai-logo",sx:{opacity:.4,filter:"grayscale(1)",mt:-6,w:16,h:16,minW:16,minH:16,userSelect:"none"}})}),!n&&a.jsx(k_,{}),a.jsx(L,{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:r}),a.jsx(k1,{isSelected:e,isHovered:s}),a.jsx(S1,{data:p,dropLabel:a.jsx(qe,{fontSize:"md",children:"Move"})})]})})})})});I_.displayName="HoverableBoard";const zL=he([mt],({boards:e,gallery:t})=>{const{searchText:n}=e,{selectedBoardId:r}=t;return{selectedBoardId:r,searchText:n}},Ke),LL=e=>{const{isOpen:t}=e,{selectedBoardId:n,searchText:r}=$(zL),{data:o}=Xp();yr("batches").isFeatureEnabled;const s=r?o==null?void 0:o.filter(d=>d.board_name.toLowerCase().includes(r.toLowerCase())):o,[i,u]=f.useState();return a.jsxs(a.Fragment,{children:[a.jsx(nh,{in:t,animateOpacity:!0,children:a.jsxs(L,{layerStyle:"first",sx:{flexDir:"column",gap:2,p:2,mt:2,borderRadius:"base"},children:[a.jsxs(L,{sx:{gap:2,alignItems:"center"},children:[a.jsx(OL,{}),a.jsx(_L,{})]}),a.jsx(i_,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsxs(Mi,{className:"list-container",sx:{gridTemplateColumns:"repeat(auto-fill, minmax(108px, 1fr));",maxH:346},children:[a.jsx(c0,{sx:{p:1.5},children:a.jsx(I_,{isSelected:n===void 0})}),s&&s.map(d=>a.jsx(c0,{sx:{p:1.5},children:a.jsx(P_,{board:d,isSelected:n===d.board_id,setBoardToDelete:u})},d.board_id))]})})]})}),a.jsx(zz,{boardToDelete:i,setBoardToDelete:u})]})},BL=f.memo(LL),FL=he([mt],e=>{const{selectedBoardId:t}=e.gallery;return{selectedBoardId:t}},Ke),HL=e=>{const{isOpen:t,onToggle:n}=e,{selectedBoardId:r}=$(FL),o=bh(r),s=f.useMemo(()=>o.length>20?`${o.substring(0,20)}...`:o,[o]);return a.jsxs(L,{as:kf,onClick:n,size:"sm",sx:{position:"relative",gap:2,w:"full",justifyContent:"space-between",alignItems:"center",px:2},children:[a.jsx(qe,{noOfLines:1,sx:{fontWeight:600,w:"100%",textAlign:"center",color:"base.800",_dark:{color:"base.200"}},children:s}),a.jsx(w1,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]})},WL=f.memo(HL);function E_(e){return Ve({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146z"}}]})(e)}function O_(e){return Ve({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146zm.122 2.112v-.002.002zm0-.002v.002a.5.5 0 0 1-.122.51L6.293 6.878a.5.5 0 0 1-.511.12H5.78l-.014-.004a4.507 4.507 0 0 0-.288-.076 4.922 4.922 0 0 0-.765-.116c-.422-.028-.836.008-1.175.15l5.51 5.509c.141-.34.177-.753.149-1.175a4.924 4.924 0 0 0-.192-1.054l-.004-.013v-.001a.5.5 0 0 1 .12-.512l3.536-3.535a.5.5 0 0 1 .532-.115l.096.022c.087.017.208.034.344.034.114 0 .23-.011.343-.04L9.927 2.028c-.029.113-.04.23-.04.343a1.779 1.779 0 0 0 .062.46z"}}]})(e)}const VL=he([mt],e=>{const{shouldPinGallery:t}=e.ui;return{shouldPinGallery:t}},Ke),UL=()=>{const e=Z(),{t}=ue(),{shouldPinGallery:n}=$(VL),r=()=>{e(D4()),e(yo())};return a.jsx(je,{size:"sm","aria-label":t("gallery.pinGallery"),tooltip:`${t("gallery.pinGallery")} (Shift+G)`,onClick:r,icon:n?a.jsx(E_,{}):a.jsx(O_,{})})},GL=e=>{const{triggerComponent:t,children:n,hasArrow:r=!0,isLazy:o=!0,...s}=e;return a.jsxs(Qv,{isLazy:o,...s,children:[a.jsx(Kv,{children:t}),a.jsxs(Yv,{shadow:"dark-lg",children:[r&&a.jsx(J6,{}),n]})]})},Wi=f.memo(GL),qL=e=>{const{label:t,...n}=e,{colorMode:r}=xs();return a.jsx(L3,{colorScheme:"accent",...n,children:a.jsx(qe,{sx:{fontSize:"sm",color:Me("base.800","base.200")(r)},children:t})})},Ln=f.memo(qL);function KL(e){const t=f.createContext(null);return[({children:o,value:s})=>z.createElement(t.Provider,{value:s},o),()=>{const o=f.useContext(t);if(o===null)throw new Error(e);return o}]}function M_(e){return Array.isArray(e)?e:[e]}const QL=()=>{};function YL(e,t={active:!0}){return typeof e!="function"||!t.active?t.onKeyDown||QL:n=>{var r;n.key==="Escape"&&(e(n),(r=t.onTrigger)==null||r.call(t))}}function R_({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 D_(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==z.Fragment:!1}function A_(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 ZL=d8({key:"mantine",prepend:!0});function eB(){return O3()||ZL}var tB=Object.defineProperty,X2=Object.getOwnPropertySymbols,nB=Object.prototype.hasOwnProperty,rB=Object.prototype.propertyIsEnumerable,J2=(e,t,n)=>t in e?tB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,oB=(e,t)=>{for(var n in t||(t={}))nB.call(t,n)&&J2(e,n,t[n]);if(X2)for(var n of X2(t))rB.call(t,n)&&J2(e,n,t[n]);return e};const jg="ref";function sB(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(!(jg in n))return{args:e,ref:t};t=n[jg];const r=oB({},n);return delete r[jg],{args:[r],ref:t}}const{cssFactory:aB}=(()=>{function e(n,r,o){const s=[],i=h8(n,s,o);return s.length<2?o:i+r(s)}function t(n){const{cache:r}=n,o=(...i)=>{const{ref:u,args:d}=sB(i),p=f8(d,r.registered);return p8(r,p,!1),`${r.key}-${p.name}${u===void 0?"":` ${u}`}`};return{css:o,cx:(...i)=>e(r.registered,o,T_(i))}}return{cssFactory:t}})();function N_(){const e=eB();return JL(()=>aB({cache:e}),[e])}function iB({cx:e,classes:t,context:n,classNames:r,name:o,cache:s}){const i=n.reduce((u,d)=>(Object.keys(d.classNames).forEach(p=>{typeof u[p]!="string"?u[p]=`${d.classNames[p]}`:u[p]=`${u[p]} ${d.classNames[p]}`}),u),{});return Object.keys(t).reduce((u,d)=>(u[d]=e(t[d],i[d],r!=null&&r[d],Array.isArray(o)?o.filter(Boolean).map(p=>`${(s==null?void 0:s.key)||"mantine"}-${p}-${d}`).join(" "):o?`${(s==null?void 0:s.key)||"mantine"}-${o}-${d}`:null),u),{})}var lB=Object.defineProperty,Z2=Object.getOwnPropertySymbols,cB=Object.prototype.hasOwnProperty,uB=Object.prototype.propertyIsEnumerable,ew=(e,t,n)=>t in e?lB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pg=(e,t)=>{for(var n in t||(t={}))cB.call(t,n)&&ew(e,n,t[n]);if(Z2)for(var n of Z2(t))uB.call(t,n)&&ew(e,n,t[n]);return e};function O0(e,t){return t&&Object.keys(t).forEach(n=>{e[n]?e[n]=Pg(Pg({},e[n]),t[n]):e[n]=Pg({},t[n])}),e}function tw(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)=>O0(s,i),{}):o(e)}function dB({ctx:e,theme:t,params:n,variant:r,size:o}){return e.reduce((s,i)=>(i.variants&&r in i.variants&&O0(s,i.variants[r](t,n,{variant:r,size:o})),i.sizes&&o in i.sizes&&O0(s,i.sizes[o](t,n,{variant:r,size:o})),s),{})}function eo(e){const t=typeof e=="function"?e:()=>e;function n(r,o){const s=_a(),i=iM(o==null?void 0:o.name),u=O3(),d={variant:o==null?void 0:o.variant,size:o==null?void 0:o.size},{css:p,cx:h}=N_(),g=t(s,r,d),v=tw(o==null?void 0:o.styles,s,r,d),b=tw(i,s,r,d),S=dB({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(g).map(C=>{const _=h({[p(g[C])]:!(o!=null&&o.unstyled)},p(S[C]),p(b[C]),p(v[C]));return[C,_]}));return{classes:iB({cx:h,classes:x,context:i,classNames:o==null?void 0:o.classNames,name:o==null?void 0:o.name,cache:u}),cx:h,theme:s}}return n}function nw(e){return`___ref-${e||""}`}var fB=Object.defineProperty,pB=Object.defineProperties,hB=Object.getOwnPropertyDescriptors,rw=Object.getOwnPropertySymbols,mB=Object.prototype.hasOwnProperty,gB=Object.prototype.propertyIsEnumerable,ow=(e,t,n)=>t in e?fB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Dc=(e,t)=>{for(var n in t||(t={}))mB.call(t,n)&&ow(e,n,t[n]);if(rw)for(var n of rw(t))gB.call(t,n)&&ow(e,n,t[n]);return e},Ac=(e,t)=>pB(e,hB(t));const Tc={in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${ze(10)})`},transitionProperty:"transform, opacity"},Yd={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(-${ze(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(${ze(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(${ze(20)}) rotate(-5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${ze(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:Ac(Dc({},Tc),{common:{transformOrigin:"center center"}}),"pop-bottom-left":Ac(Dc({},Tc),{common:{transformOrigin:"bottom left"}}),"pop-bottom-right":Ac(Dc({},Tc),{common:{transformOrigin:"bottom right"}}),"pop-top-left":Ac(Dc({},Tc),{common:{transformOrigin:"top left"}}),"pop-top-right":Ac(Dc({},Tc),{common:{transformOrigin:"top right"}})},sw=["mousedown","touchstart"];function vB(e,t,n){const r=f.useRef();return f.useEffect(()=>{const o=s=>{const{target:i}=s??{};if(Array.isArray(n)){const u=(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))&&!u&&e()}else r.current&&!r.current.contains(i)&&e()};return(t||sw).forEach(s=>document.addEventListener(s,o)),()=>{(t||sw).forEach(s=>document.removeEventListener(s,o))}},[r,e,n]),r}function yB(e,t){try{return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}catch{return e.addListener(t),()=>e.removeListener(t)}}function bB(e,t){return typeof t=="boolean"?t:typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function xB(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[r,o]=f.useState(n?t:bB(e,t)),s=f.useRef();return f.useEffect(()=>{if("matchMedia"in window)return s.current=window.matchMedia(e),o(s.current.matches),yB(s.current,i=>o(i.matches))},[e]),r}const $_=typeof document<"u"?f.useLayoutEffect:f.useEffect;function ps(e,t){const n=f.useRef(!1);f.useEffect(()=>()=>{n.current=!1},[]),f.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function wB({opened:e,shouldReturnFocus:t=!0}){const n=f.useRef(),r=()=>{var o;n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&((o=n.current)==null||o.focus({preventScroll:!0}))};return ps(()=>{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 SB=/input|select|textarea|button|object/,z_="a, input, select, textarea, button, object, [tabindex]";function CB(e){return e.style.display==="none"}function _B(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(CB(n))return!1;n=n.parentNode}return!0}function L_(e){let t=e.getAttribute("tabindex");return t===null&&(t=void 0),parseInt(t,10)}function M0(e){const t=e.nodeName.toLowerCase(),n=!Number.isNaN(L_(e));return(SB.test(t)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&_B(e)}function B_(e){const t=L_(e);return(Number.isNaN(t)||t>=0)&&M0(e)}function kB(e){return Array.from(e.querySelectorAll(z_)).filter(B_)}function jB(e,t){const n=kB(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 P1(){return`mantine-${Math.random().toString(36).slice(2,11)}`}function PB(e,t="body > :not(script)"){const n=P1(),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"),u=o.getAttribute("data-hidden"),d=o.getAttribute("data-focus-id");return o.setAttribute("data-focus-id",n),i===null||i==="false"?o.setAttribute("aria-hidden","true"):!u&&!d&&o.setAttribute("data-hidden",i),{node:o,ariaHidden:u||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 IB(e=!0){const t=f.useRef(),n=f.useRef(null),r=s=>{let i=s.querySelector("[data-autofocus]");if(!i){const u=Array.from(s.querySelectorAll(z_));i=u.find(B_)||u.find(M0)||null,!i&&M0(s)&&(i=s)}i&&i.focus({preventScroll:!0})},o=f.useCallback(s=>{if(e){if(s===null){n.current&&(n.current(),n.current=null);return}n.current=PB(s),t.current!==s&&(s?(setTimeout(()=>{s.getRootNode()&&r(s)}),t.current=s):t.current=null)}},[e]);return f.useEffect(()=>{if(!e)return;t.current&&setTimeout(()=>r(t.current));const s=i=>{i.key==="Tab"&&t.current&&jB(t.current,i)};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s),n.current&&n.current()}},[e]),o}const EB=z["useId".toString()]||(()=>{});function OB(){const e=EB();return e?`mantine-${e.replace(/:/g,"")}`:""}function I1(e){const t=OB(),[n,r]=f.useState(t);return $_(()=>{r(P1())},[]),typeof e=="string"?e:typeof window>"u"?t:n}function aw(e,t,n){f.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t])}function F_(e,t){typeof e=="function"?e(t):typeof e=="object"&&e!==null&&"current"in e&&(e.current=t)}function MB(...e){return t=>{e.forEach(n=>F_(n,t))}}function Hu(...e){return f.useCallback(MB(...e),e)}function hu({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){const[o,s]=f.useState(t!==void 0?t:n),i=u=>{s(u),r==null||r(u)};return e!==void 0?[e,r,!0]:[o,i,!1]}function H_(e,t){return xB("(prefers-reduced-motion: reduce)",e,t)}const RB=e=>e<.5?2*e*e:-1+(4-2*e)*e,DB=({axis:e,target:t,parent:n,alignment:r,offset:o,isList:s})=>{if(!t||!n&&typeof document>"u")return 0;const i=!!n,d=(n||document.body).getBoundingClientRect(),p=t.getBoundingClientRect(),h=g=>p[g]-d[g];if(e==="y"){const g=h("top");if(g===0)return 0;if(r==="start"){const b=g-o;return b<=p.height*(s?0:1)||!s?b:0}const v=i?d.height:window.innerHeight;if(r==="end"){const b=g+o-v+p.height;return b>=-p.height*(s?0:1)||!s?b:0}return r==="center"?g-v/2+p.height/2:0}if(e==="x"){const g=h("left");if(g===0)return 0;if(r==="start"){const b=g-o;return b<=p.width||!s?b:0}const v=i?d.width:window.innerWidth;if(r==="end"){const b=g+o-v+p.width;return b>=-p.width||!s?b:0}return r==="center"?g-v/2+p.width/2:0}return 0},AB=({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]},TB=({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 W_({duration:e=1250,axis:t="y",onScrollFinish:n,easing:r=RB,offset:o=0,cancelable:s=!0,isList:i=!1}={}){const u=f.useRef(0),d=f.useRef(0),p=f.useRef(!1),h=f.useRef(null),g=f.useRef(null),v=H_(),b=()=>{u.current&&cancelAnimationFrame(u.current)},S=f.useCallback(({alignment:C="start"}={})=>{var _;p.current=!1,u.current&&b();const k=(_=AB({parent:h.current,axis:t}))!=null?_:0,P=DB({parent:h.current,target:g.current,axis:t,alignment:C,offset:o,isList:i})-(h.current?0:k);function I(){d.current===0&&(d.current=performance.now());const O=performance.now()-d.current,R=v||e===0?1:O/e,D=k+P*r(R);TB({parent:h.current,axis:t,distance:D}),!p.current&&R<1?u.current=requestAnimationFrame(I):(typeof n=="function"&&n(),d.current=0,u.current=0,b())}I()},[t,e,r,i,o,n,v]),x=()=>{s&&(p.current=!0)};return aw("wheel",x,{passive:!0}),aw("touchmove",x,{passive:!0}),f.useEffect(()=>b,[]),{scrollableRef:h,targetRef:g,scrollIntoView:S,cancel:b}}var iw=Object.getOwnPropertySymbols,NB=Object.prototype.hasOwnProperty,$B=Object.prototype.propertyIsEnumerable,zB=(e,t)=>{var n={};for(var r in e)NB.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&iw)for(var r of iw(e))t.indexOf(r)<0&&$B.call(e,r)&&(n[r]=e[r]);return n};function xh(e){const t=e,{m:n,mx:r,my:o,mt:s,mb:i,ml:u,mr:d,p,px:h,py:g,pt:v,pb:b,pl:S,pr:x,bg:C,c:_,opacity:k,ff:P,fz:I,fw:E,lts:O,ta:R,lh:D,fs:T,tt:B,td:W,w:J,miw:F,maw:N,h:G,mih:K,mah:M,bgsz:U,bgp:V,bgr:ee,bga:ie,pos:xe,top:me,left:ae,bottom:te,right:H,inset:re,display:pe}=t,ne=zB(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:lM({m:n,mx:r,my:o,mt:s,mb:i,ml:u,mr:d,p,px:h,py:g,pt:v,pb:b,pl:S,pr:x,bg:C,c:_,opacity:k,ff:P,fz:I,fw:E,lts:O,ta:R,lh:D,fs:T,tt:B,td:W,w:J,miw:F,maw:N,h:G,mih:K,mah:M,bgsz:U,bgp:V,bgr:ee,bga:ie,pos:xe,top:me,left:ae,bottom:te,right:H,inset:re,display:pe}),rest:ne}}function LB(e,t){const n=Object.keys(e).filter(r=>r!=="base").sort((r,o)=>Tx(Tt({size:r,sizes:t.breakpoints}))-Tx(Tt({size:o,sizes:t.breakpoints})));return"base"in e?["base",...n]:n}function BB({value:e,theme:t,getValue:n,property:r}){if(e==null)return;if(typeof e=="object")return LB(e,t).reduce((i,u)=>{if(u==="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 d=n(e[u],t);return Array.isArray(r)?(i[t.fn.largerThan(u)]={},r.forEach(p=>{i[t.fn.largerThan(u)][p]=d}),i):(i[t.fn.largerThan(u)]={[r]:d},i)},{});const o=n(e,t);return Array.isArray(r)?r.reduce((s,i)=>(s[i]=o,s),{}):{[r]:o}}function FB(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 HB(e){return ze(e)}function WB(e){return e}function VB(e,t){return Tt({size:e,sizes:t.fontSizes})}const UB=["-xs","-sm","-md","-lg","-xl"];function GB(e,t){return UB.includes(e)?`calc(${Tt({size:e.replace("-",""),sizes:t.spacing})} * -1)`:Tt({size:e,sizes:t.spacing})}const qB={identity:WB,color:FB,size:HB,fontSize:VB,spacing:GB},KB={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 QB=Object.defineProperty,lw=Object.getOwnPropertySymbols,YB=Object.prototype.hasOwnProperty,XB=Object.prototype.propertyIsEnumerable,cw=(e,t,n)=>t in e?QB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uw=(e,t)=>{for(var n in t||(t={}))YB.call(t,n)&&cw(e,n,t[n]);if(lw)for(var n of lw(t))XB.call(t,n)&&cw(e,n,t[n]);return e};function dw(e,t,n=KB){return Object.keys(n).reduce((o,s)=>(s in e&&e[s]!==void 0&&o.push(BB({value:e[s],getValue:qB[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]=uw(uw({},o[i]),s[i]):o[i]=s[i]}),o),{})}function fw(e,t){return typeof e=="function"?e(t):e}function JB(e,t,n){const r=_a(),{css:o,cx:s}=N_();return Array.isArray(e)?s(n,o(dw(t,r)),e.map(i=>o(fw(i,r)))):s(n,o(fw(e,r)),o(dw(t,r)))}var ZB=Object.defineProperty,Xf=Object.getOwnPropertySymbols,V_=Object.prototype.hasOwnProperty,U_=Object.prototype.propertyIsEnumerable,pw=(e,t,n)=>t in e?ZB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,eF=(e,t)=>{for(var n in t||(t={}))V_.call(t,n)&&pw(e,n,t[n]);if(Xf)for(var n of Xf(t))U_.call(t,n)&&pw(e,n,t[n]);return e},tF=(e,t)=>{var n={};for(var r in e)V_.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Xf)for(var r of Xf(e))t.indexOf(r)<0&&U_.call(e,r)&&(n[r]=e[r]);return n};const G_=f.forwardRef((e,t)=>{var n=e,{className:r,component:o,style:s,sx:i}=n,u=tF(n,["className","component","style","sx"]);const{systemStyles:d,rest:p}=xh(u),h=o||"div";return z.createElement(h,eF({ref:t,className:JB(i,d,r),style:s},p))});G_.displayName="@mantine/core/Box";const bo=G_;var nF=Object.defineProperty,rF=Object.defineProperties,oF=Object.getOwnPropertyDescriptors,hw=Object.getOwnPropertySymbols,sF=Object.prototype.hasOwnProperty,aF=Object.prototype.propertyIsEnumerable,mw=(e,t,n)=>t in e?nF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gw=(e,t)=>{for(var n in t||(t={}))sF.call(t,n)&&mw(e,n,t[n]);if(hw)for(var n of hw(t))aF.call(t,n)&&mw(e,n,t[n]);return e},iF=(e,t)=>rF(e,oF(t)),lF=eo(e=>({root:iF(gw(gw({},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 cF=lF;var uF=Object.defineProperty,Jf=Object.getOwnPropertySymbols,q_=Object.prototype.hasOwnProperty,K_=Object.prototype.propertyIsEnumerable,vw=(e,t,n)=>t in e?uF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,dF=(e,t)=>{for(var n in t||(t={}))q_.call(t,n)&&vw(e,n,t[n]);if(Jf)for(var n of Jf(t))K_.call(t,n)&&vw(e,n,t[n]);return e},fF=(e,t)=>{var n={};for(var r in e)q_.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Jf)for(var r of Jf(e))t.indexOf(r)<0&&K_.call(e,r)&&(n[r]=e[r]);return n};const Q_=f.forwardRef((e,t)=>{const n=mr("UnstyledButton",{},e),{className:r,component:o="button",unstyled:s,variant:i}=n,u=fF(n,["className","component","unstyled","variant"]),{classes:d,cx:p}=cF(null,{name:"UnstyledButton",unstyled:s,variant:i});return z.createElement(bo,dF({component:o,ref:t,className:p(d.root,r),type:o==="button"?"button":void 0},u))});Q_.displayName="@mantine/core/UnstyledButton";const pF=Q_;var hF=Object.defineProperty,mF=Object.defineProperties,gF=Object.getOwnPropertyDescriptors,yw=Object.getOwnPropertySymbols,vF=Object.prototype.hasOwnProperty,yF=Object.prototype.propertyIsEnumerable,bw=(e,t,n)=>t in e?hF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,R0=(e,t)=>{for(var n in t||(t={}))vF.call(t,n)&&bw(e,n,t[n]);if(yw)for(var n of yw(t))yF.call(t,n)&&bw(e,n,t[n]);return e},xw=(e,t)=>mF(e,gF(t));const bF=["subtle","filled","outline","light","default","transparent","gradient"],Xd={xs:ze(18),sm:ze(22),md:ze(28),lg:ze(34),xl:ze(44)};function xF({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%"})}:bF.includes(e)?R0({border:`${ze(1)} solid ${o.border}`,backgroundColor:o.background,color:o.color},t.fn.hover({backgroundColor:o.hover})):null}var wF=eo((e,{radius:t,color:n,gradient:r},{variant:o,size:s})=>({root:xw(R0({position:"relative",borderRadius:e.fn.radius(t),padding:0,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",height:Tt({size:s,sizes:Xd}),minHeight:Tt({size:s,sizes:Xd}),width:Tt({size:s,sizes:Xd}),minWidth:Tt({size:s,sizes:Xd})},xF({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":xw(R0({content:'""'},e.fn.cover(ze(-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 SF=wF;var CF=Object.defineProperty,Zf=Object.getOwnPropertySymbols,Y_=Object.prototype.hasOwnProperty,X_=Object.prototype.propertyIsEnumerable,ww=(e,t,n)=>t in e?CF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Sw=(e,t)=>{for(var n in t||(t={}))Y_.call(t,n)&&ww(e,n,t[n]);if(Zf)for(var n of Zf(t))X_.call(t,n)&&ww(e,n,t[n]);return e},Cw=(e,t)=>{var n={};for(var r in e)Y_.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Zf)for(var r of Zf(e))t.indexOf(r)<0&&X_.call(e,r)&&(n[r]=e[r]);return n};function _F(e){var t=e,{size:n,color:r}=t,o=Cw(t,["size","color"]);const s=o,{style:i}=s,u=Cw(s,["style"]);return z.createElement("svg",Sw({viewBox:"0 0 135 140",xmlns:"http://www.w3.org/2000/svg",fill:r,style:Sw({width:n},i)},u),z.createElement("rect",{y:"10",width:"15",height:"120",rx:"6"},z.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"}),z.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"})),z.createElement("rect",{x:"30",y:"10",width:"15",height:"120",rx:"6"},z.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"}),z.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"})),z.createElement("rect",{x:"60",width:"15",height:"140",rx:"6"},z.createElement("animate",{attributeName:"height",begin:"0s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),z.createElement("animate",{attributeName:"y",begin:"0s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),z.createElement("rect",{x:"90",y:"10",width:"15",height:"120",rx:"6"},z.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"}),z.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"})),z.createElement("rect",{x:"120",y:"10",width:"15",height:"120",rx:"6"},z.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"}),z.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 kF=Object.defineProperty,ep=Object.getOwnPropertySymbols,J_=Object.prototype.hasOwnProperty,Z_=Object.prototype.propertyIsEnumerable,_w=(e,t,n)=>t in e?kF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,kw=(e,t)=>{for(var n in t||(t={}))J_.call(t,n)&&_w(e,n,t[n]);if(ep)for(var n of ep(t))Z_.call(t,n)&&_w(e,n,t[n]);return e},jw=(e,t)=>{var n={};for(var r in e)J_.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ep)for(var r of ep(e))t.indexOf(r)<0&&Z_.call(e,r)&&(n[r]=e[r]);return n};function jF(e){var t=e,{size:n,color:r}=t,o=jw(t,["size","color"]);const s=o,{style:i}=s,u=jw(s,["style"]);return z.createElement("svg",kw({viewBox:"0 0 38 38",xmlns:"http://www.w3.org/2000/svg",stroke:r,style:kw({width:n,height:n},i)},u),z.createElement("g",{fill:"none",fillRule:"evenodd"},z.createElement("g",{transform:"translate(2.5 2.5)",strokeWidth:"5"},z.createElement("circle",{strokeOpacity:".5",cx:"16",cy:"16",r:"16"}),z.createElement("path",{d:"M32 16c0-9.94-8.06-16-16-16"},z.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"1s",repeatCount:"indefinite"})))))}var PF=Object.defineProperty,tp=Object.getOwnPropertySymbols,ek=Object.prototype.hasOwnProperty,tk=Object.prototype.propertyIsEnumerable,Pw=(e,t,n)=>t in e?PF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Iw=(e,t)=>{for(var n in t||(t={}))ek.call(t,n)&&Pw(e,n,t[n]);if(tp)for(var n of tp(t))tk.call(t,n)&&Pw(e,n,t[n]);return e},Ew=(e,t)=>{var n={};for(var r in e)ek.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&tp)for(var r of tp(e))t.indexOf(r)<0&&tk.call(e,r)&&(n[r]=e[r]);return n};function IF(e){var t=e,{size:n,color:r}=t,o=Ew(t,["size","color"]);const s=o,{style:i}=s,u=Ew(s,["style"]);return z.createElement("svg",Iw({viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",fill:r,style:Iw({width:n},i)},u),z.createElement("circle",{cx:"15",cy:"15",r:"15"},z.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),z.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})),z.createElement("circle",{cx:"60",cy:"15",r:"9",fillOpacity:"0.3"},z.createElement("animate",{attributeName:"r",from:"9",to:"9",begin:"0s",dur:"0.8s",values:"9;15;9",calcMode:"linear",repeatCount:"indefinite"}),z.createElement("animate",{attributeName:"fill-opacity",from:"0.5",to:"0.5",begin:"0s",dur:"0.8s",values:".5;1;.5",calcMode:"linear",repeatCount:"indefinite"})),z.createElement("circle",{cx:"105",cy:"15",r:"15"},z.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),z.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})))}var EF=Object.defineProperty,np=Object.getOwnPropertySymbols,nk=Object.prototype.hasOwnProperty,rk=Object.prototype.propertyIsEnumerable,Ow=(e,t,n)=>t in e?EF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,OF=(e,t)=>{for(var n in t||(t={}))nk.call(t,n)&&Ow(e,n,t[n]);if(np)for(var n of np(t))rk.call(t,n)&&Ow(e,n,t[n]);return e},MF=(e,t)=>{var n={};for(var r in e)nk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&np)for(var r of np(e))t.indexOf(r)<0&&rk.call(e,r)&&(n[r]=e[r]);return n};const Ig={bars:_F,oval:jF,dots:IF},RF={xs:ze(18),sm:ze(22),md:ze(36),lg:ze(44),xl:ze(58)},DF={size:"md"};function ok(e){const t=mr("Loader",DF,e),{size:n,color:r,variant:o}=t,s=MF(t,["size","color","variant"]),i=_a(),u=o in Ig?o:i.loader;return z.createElement(bo,OF({role:"presentation",component:Ig[u]||Ig.bars,size:Tt({size:n,sizes:RF}),color:i.fn.variant({variant:"filled",primaryFallback:!1,color:r||i.primaryColor}).background},s))}ok.displayName="@mantine/core/Loader";var AF=Object.defineProperty,rp=Object.getOwnPropertySymbols,sk=Object.prototype.hasOwnProperty,ak=Object.prototype.propertyIsEnumerable,Mw=(e,t,n)=>t in e?AF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rw=(e,t)=>{for(var n in t||(t={}))sk.call(t,n)&&Mw(e,n,t[n]);if(rp)for(var n of rp(t))ak.call(t,n)&&Mw(e,n,t[n]);return e},TF=(e,t)=>{var n={};for(var r in e)sk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&rp)for(var r of rp(e))t.indexOf(r)<0&&ak.call(e,r)&&(n[r]=e[r]);return n};const NF={color:"gray",size:"md",variant:"subtle"},ik=f.forwardRef((e,t)=>{const n=mr("ActionIcon",NF,e),{className:r,color:o,children:s,radius:i,size:u,variant:d,gradient:p,disabled:h,loaderProps:g,loading:v,unstyled:b,__staticSelector:S}=n,x=TF(n,["className","color","children","radius","size","variant","gradient","disabled","loaderProps","loading","unstyled","__staticSelector"]),{classes:C,cx:_,theme:k}=SF({radius:i,color:o,gradient:p},{name:["ActionIcon",S],unstyled:b,size:u,variant:d}),P=z.createElement(ok,Rw({color:k.fn.variant({color:o,variant:d}).color,size:"100%","data-action-icon-loader":!0},g));return z.createElement(pF,Rw({className:_(C.root,r),ref:t,disabled:h,"data-disabled":h||void 0,"data-loading":v||void 0,unstyled:b},x),v?P:s)});ik.displayName="@mantine/core/ActionIcon";const $F=ik;var zF=Object.defineProperty,LF=Object.defineProperties,BF=Object.getOwnPropertyDescriptors,op=Object.getOwnPropertySymbols,lk=Object.prototype.hasOwnProperty,ck=Object.prototype.propertyIsEnumerable,Dw=(e,t,n)=>t in e?zF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,FF=(e,t)=>{for(var n in t||(t={}))lk.call(t,n)&&Dw(e,n,t[n]);if(op)for(var n of op(t))ck.call(t,n)&&Dw(e,n,t[n]);return e},HF=(e,t)=>LF(e,BF(t)),WF=(e,t)=>{var n={};for(var r in e)lk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&op)for(var r of op(e))t.indexOf(r)<0&&ck.call(e,r)&&(n[r]=e[r]);return n};function uk(e){const t=mr("Portal",{},e),{children:n,target:r,className:o,innerRef:s}=t,i=WF(t,["children","target","className","innerRef"]),u=_a(),[d,p]=f.useState(!1),h=f.useRef();return $_(()=>(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]),d?nc.createPortal(z.createElement("div",HF(FF({className:o,dir:u.dir},i),{ref:s}),n),h.current):null}uk.displayName="@mantine/core/Portal";var VF=Object.defineProperty,sp=Object.getOwnPropertySymbols,dk=Object.prototype.hasOwnProperty,fk=Object.prototype.propertyIsEnumerable,Aw=(e,t,n)=>t in e?VF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,UF=(e,t)=>{for(var n in t||(t={}))dk.call(t,n)&&Aw(e,n,t[n]);if(sp)for(var n of sp(t))fk.call(t,n)&&Aw(e,n,t[n]);return e},GF=(e,t)=>{var n={};for(var r in e)dk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&sp)for(var r of sp(e))t.indexOf(r)<0&&fk.call(e,r)&&(n[r]=e[r]);return n};function pk(e){var t=e,{withinPortal:n=!0,children:r}=t,o=GF(t,["withinPortal","children"]);return n?z.createElement(uk,UF({},o),r):z.createElement(z.Fragment,null,r)}pk.displayName="@mantine/core/OptionalPortal";var qF=Object.defineProperty,ap=Object.getOwnPropertySymbols,hk=Object.prototype.hasOwnProperty,mk=Object.prototype.propertyIsEnumerable,Tw=(e,t,n)=>t in e?qF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Nw=(e,t)=>{for(var n in t||(t={}))hk.call(t,n)&&Tw(e,n,t[n]);if(ap)for(var n of ap(t))mk.call(t,n)&&Tw(e,n,t[n]);return e},KF=(e,t)=>{var n={};for(var r in e)hk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ap)for(var r of ap(e))t.indexOf(r)<0&&mk.call(e,r)&&(n[r]=e[r]);return n};function gk(e){const t=e,{width:n,height:r,style:o}=t,s=KF(t,["width","height","style"]);return z.createElement("svg",Nw({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:Nw({width:n,height:r},o)},s),z.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"}))}gk.displayName="@mantine/core/CloseIcon";var QF=Object.defineProperty,ip=Object.getOwnPropertySymbols,vk=Object.prototype.hasOwnProperty,yk=Object.prototype.propertyIsEnumerable,$w=(e,t,n)=>t in e?QF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,YF=(e,t)=>{for(var n in t||(t={}))vk.call(t,n)&&$w(e,n,t[n]);if(ip)for(var n of ip(t))yk.call(t,n)&&$w(e,n,t[n]);return e},XF=(e,t)=>{var n={};for(var r in e)vk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ip)for(var r of ip(e))t.indexOf(r)<0&&yk.call(e,r)&&(n[r]=e[r]);return n};const JF={xs:ze(12),sm:ze(16),md:ze(20),lg:ze(28),xl:ze(34)},ZF={size:"sm"},bk=f.forwardRef((e,t)=>{const n=mr("CloseButton",ZF,e),{iconSize:r,size:o,children:s}=n,i=XF(n,["iconSize","size","children"]),u=ze(r||JF[o]);return z.createElement($F,YF({ref:t,__staticSelector:"CloseButton",size:o},i),s||z.createElement(gk,{width:u,height:u}))});bk.displayName="@mantine/core/CloseButton";const xk=bk;var eH=Object.defineProperty,tH=Object.defineProperties,nH=Object.getOwnPropertyDescriptors,zw=Object.getOwnPropertySymbols,rH=Object.prototype.hasOwnProperty,oH=Object.prototype.propertyIsEnumerable,Lw=(e,t,n)=>t in e?eH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Jd=(e,t)=>{for(var n in t||(t={}))rH.call(t,n)&&Lw(e,n,t[n]);if(zw)for(var n of zw(t))oH.call(t,n)&&Lw(e,n,t[n]);return e},sH=(e,t)=>tH(e,nH(t));function aH({underline:e,strikethrough:t}){const n=[];return e&&n.push("underline"),t&&n.push("line-through"),n.length>0?n.join(" "):"none"}function iH({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 lH(e){return typeof e=="number"?{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:e,WebkitBoxOrient:"vertical"}:null}function cH({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 uH=eo((e,{color:t,lineClamp:n,truncate:r,inline:o,inherit:s,underline:i,gradient:u,weight:d,transform:p,align:h,strikethrough:g,italic:v},{size:b})=>{const S=e.fn.variant({variant:"gradient",gradient:u});return{root:sH(Jd(Jd(Jd(Jd({},e.fn.fontStyles()),e.fn.focusStyles()),lH(n)),cH({theme:e,truncate:r})),{color:iH({color:t,theme:e}),fontFamily:s?"inherit":e.fontFamily,fontSize:s||b===void 0?"inherit":Tt({size:b,sizes:e.fontSizes}),lineHeight:s?"inherit":o?1:e.lineHeight,textDecoration:aH({underline:i,strikethrough:g}),WebkitTapHighlightColor:"transparent",fontWeight:s?"inherit":d,textTransform:p,textAlign:h,fontStyle:v?"italic":void 0}),gradient:{backgroundImage:S.background,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"}}});const dH=uH;var fH=Object.defineProperty,lp=Object.getOwnPropertySymbols,wk=Object.prototype.hasOwnProperty,Sk=Object.prototype.propertyIsEnumerable,Bw=(e,t,n)=>t in e?fH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,pH=(e,t)=>{for(var n in t||(t={}))wk.call(t,n)&&Bw(e,n,t[n]);if(lp)for(var n of lp(t))Sk.call(t,n)&&Bw(e,n,t[n]);return e},hH=(e,t)=>{var n={};for(var r in e)wk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&lp)for(var r of lp(e))t.indexOf(r)<0&&Sk.call(e,r)&&(n[r]=e[r]);return n};const mH={variant:"text"},Ck=f.forwardRef((e,t)=>{const n=mr("Text",mH,e),{className:r,size:o,weight:s,transform:i,color:u,align:d,variant:p,lineClamp:h,truncate:g,gradient:v,inline:b,inherit:S,underline:x,strikethrough:C,italic:_,classNames:k,styles:P,unstyled:I,span:E,__staticSelector:O}=n,R=hH(n,["className","size","weight","transform","color","align","variant","lineClamp","truncate","gradient","inline","inherit","underline","strikethrough","italic","classNames","styles","unstyled","span","__staticSelector"]),{classes:D,cx:T}=dH({color:u,lineClamp:h,truncate:g,inline:b,inherit:S,underline:x,strikethrough:C,italic:_,weight:s,transform:i,align:d,gradient:v},{unstyled:I,name:O||"Text",variant:p,size:o});return z.createElement(bo,pH({ref:t,className:T(D.root,{[D.gradient]:p==="gradient"},r),component:E?"span":"div"},R))});Ck.displayName="@mantine/core/Text";const Fl=Ck,Zd={xs:ze(1),sm:ze(2),md:ze(3),lg:ze(4),xl:ze(5)};function ef(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 gH=eo((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:ze(1),borderTop:`${Tt({size:n,sizes:Zd})} ${r} ${ef(e,t)}`,marginRight:e.spacing.xs},"&::after":{content:'""',flex:1,borderTop:`${Tt({size:n,sizes:Zd})} ${r} ${ef(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:ze(Tt({size:n,sizes:Zd})),borderTopColor:ef(e,t),borderTopStyle:r,margin:0},vertical:{border:0,alignSelf:"stretch",height:"auto",borderLeftWidth:ze(Tt({size:n,sizes:Zd})),borderLeftColor:ef(e,t),borderLeftStyle:r}}));const vH=gH;var yH=Object.defineProperty,bH=Object.defineProperties,xH=Object.getOwnPropertyDescriptors,cp=Object.getOwnPropertySymbols,_k=Object.prototype.hasOwnProperty,kk=Object.prototype.propertyIsEnumerable,Fw=(e,t,n)=>t in e?yH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hw=(e,t)=>{for(var n in t||(t={}))_k.call(t,n)&&Fw(e,n,t[n]);if(cp)for(var n of cp(t))kk.call(t,n)&&Fw(e,n,t[n]);return e},wH=(e,t)=>bH(e,xH(t)),SH=(e,t)=>{var n={};for(var r in e)_k.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&cp)for(var r of cp(e))t.indexOf(r)<0&&kk.call(e,r)&&(n[r]=e[r]);return n};const CH={orientation:"horizontal",size:"xs",labelPosition:"left",variant:"solid"},D0=f.forwardRef((e,t)=>{const n=mr("Divider",CH,e),{className:r,color:o,orientation:s,size:i,label:u,labelPosition:d,labelProps:p,variant:h,styles:g,classNames:v,unstyled:b}=n,S=SH(n,["className","color","orientation","size","label","labelPosition","labelProps","variant","styles","classNames","unstyled"]),{classes:x,cx:C}=vH({color:o},{classNames:v,styles:g,unstyled:b,name:"Divider",variant:h,size:i}),_=s==="vertical",k=s==="horizontal",P=!!u&&k,I=!(p!=null&&p.color);return z.createElement(bo,Hw({ref:t,className:C(x.root,{[x.vertical]:_,[x.horizontal]:k,[x.withLabel]:P},r),role:"separator"},S),P&&z.createElement(Fl,wH(Hw({},p),{size:(p==null?void 0:p.size)||"xs",mt:ze(2),className:C(x.label,x[d],{[x.labelDefaultStyles]:I})}),u))});D0.displayName="@mantine/core/Divider";var _H=Object.defineProperty,kH=Object.defineProperties,jH=Object.getOwnPropertyDescriptors,Ww=Object.getOwnPropertySymbols,PH=Object.prototype.hasOwnProperty,IH=Object.prototype.propertyIsEnumerable,Vw=(e,t,n)=>t in e?_H(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Uw=(e,t)=>{for(var n in t||(t={}))PH.call(t,n)&&Vw(e,n,t[n]);if(Ww)for(var n of Ww(t))IH.call(t,n)&&Vw(e,n,t[n]);return e},EH=(e,t)=>kH(e,jH(t)),OH=eo((e,t,{size:n})=>({item:EH(Uw({},e.fn.fontStyles()),{boxSizing:"border-box",wordBreak:"break-all",textAlign:"left",width:"100%",padding:`calc(${Tt({size:n,sizes:e.spacing})} / 1.5) ${Tt({size:n,sizes:e.spacing})}`,cursor:"pointer",fontSize:Tt({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]":Uw({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(${Tt({size:n,sizes:e.spacing})} / 2)`,paddingBottom:`calc(${Tt({size:n,sizes:e.spacing})} / 2)`,textAlign:"center"},separator:{boxSizing:"border-box",textAlign:"left",width:"100%",padding:`calc(${Tt({size:n,sizes:e.spacing})} / 1.5) ${Tt({size:n,sizes:e.spacing})}`},separatorLabel:{color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]}}));const MH=OH;var RH=Object.defineProperty,Gw=Object.getOwnPropertySymbols,DH=Object.prototype.hasOwnProperty,AH=Object.prototype.propertyIsEnumerable,qw=(e,t,n)=>t in e?RH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,TH=(e,t)=>{for(var n in t||(t={}))DH.call(t,n)&&qw(e,n,t[n]);if(Gw)for(var n of Gw(t))AH.call(t,n)&&qw(e,n,t[n]);return e};function E1({data:e,hovered:t,classNames:n,styles:r,isItemSelected:o,uuid:s,__staticSelector:i,onItemHover:u,onItemSelect:d,itemsRefs:p,itemComponent:h,size:g,nothingFound:v,creatable:b,createLabel:S,unstyled:x,variant:C}){const{classes:_}=MH(null,{classNames:n,styles:r,unstyled:x,name:i,variant:C,size:g}),k=[],P=[];let I=null;const E=(R,D)=>{const T=typeof o=="function"?o(R.value):!1;return z.createElement(h,TH({key:R.value,className:_.item,"data-disabled":R.disabled||void 0,"data-hovered":!R.disabled&&t===D||void 0,"data-selected":!R.disabled&&T||void 0,selected:T,onMouseEnter:()=>u(D),id:`${s}-${D}`,role:"option",tabIndex:-1,"aria-selected":t===D,ref:B=>{p&&p.current&&(p.current[R.value]=B)},onMouseDown:R.disabled?null:B=>{B.preventDefault(),d(R)},disabled:R.disabled,variant:C},R))};let O=null;if(e.forEach((R,D)=>{R.creatable?I=D:R.group?(O!==R.group&&(O=R.group,P.push(z.createElement("div",{className:_.separator,key:`__mantine-divider-${D}`},z.createElement(D0,{classNames:{label:_.separatorLabel},label:R.group})))),P.push(E(R,D))):k.push(E(R,D))}),b){const R=e[I];k.push(z.createElement("div",{key:P1(),className:_.item,"data-hovered":t===I||void 0,onMouseEnter:()=>u(I),onMouseDown:D=>{D.preventDefault(),d(R)},tabIndex:-1,ref:D=>{p&&p.current&&(p.current[R.value]=D)}},S))}return P.length>0&&k.length>0&&k.unshift(z.createElement("div",{className:_.separator,key:"empty-group-separator"},z.createElement(D0,null))),P.length>0||k.length>0?z.createElement(z.Fragment,null,P,k):z.createElement(Fl,{size:g,unstyled:x,className:_.nothingFound},v)}E1.displayName="@mantine/core/SelectItems";var NH=Object.defineProperty,up=Object.getOwnPropertySymbols,jk=Object.prototype.hasOwnProperty,Pk=Object.prototype.propertyIsEnumerable,Kw=(e,t,n)=>t in e?NH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$H=(e,t)=>{for(var n in t||(t={}))jk.call(t,n)&&Kw(e,n,t[n]);if(up)for(var n of up(t))Pk.call(t,n)&&Kw(e,n,t[n]);return e},zH=(e,t)=>{var n={};for(var r in e)jk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&up)for(var r of up(e))t.indexOf(r)<0&&Pk.call(e,r)&&(n[r]=e[r]);return n};const O1=f.forwardRef((e,t)=>{var n=e,{label:r,value:o}=n,s=zH(n,["label","value"]);return z.createElement("div",$H({ref:t},s),r||o)});O1.displayName="@mantine/core/DefaultItem";function LH(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Ik(...e){return t=>e.forEach(n=>LH(n,t))}function Vi(...e){return f.useCallback(Ik(...e),e)}const Ek=f.forwardRef((e,t)=>{const{children:n,...r}=e,o=f.Children.toArray(n),s=o.find(FH);if(s){const i=s.props.children,u=o.map(d=>d===s?f.Children.count(i)>1?f.Children.only(null):f.isValidElement(i)?i.props.children:null:d);return f.createElement(A0,Xn({},r,{ref:t}),f.isValidElement(i)?f.cloneElement(i,void 0,u):null)}return f.createElement(A0,Xn({},r,{ref:t}),n)});Ek.displayName="Slot";const A0=f.forwardRef((e,t)=>{const{children:n,...r}=e;return f.isValidElement(n)?f.cloneElement(n,{...HH(r,n.props),ref:Ik(t,n.ref)}):f.Children.count(n)>1?f.Children.only(null):null});A0.displayName="SlotClone";const BH=({children:e})=>f.createElement(f.Fragment,null,e);function FH(e){return f.isValidElement(e)&&e.type===BH}function HH(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]=(...u)=>{s(...u),o(...u)}:o&&(n[r]=o):r==="style"?n[r]={...o,...s}:r==="className"&&(n[r]=[o,s].filter(Boolean).join(" "))}return{...e,...n}}const WH=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],Wu=WH.reduce((e,t)=>{const n=f.forwardRef((r,o)=>{const{asChild:s,...i}=r,u=s?Ek:t;return f.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),f.createElement(u,Xn({},i,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),T0=globalThis!=null&&globalThis.document?f.useLayoutEffect:()=>{};function VH(e,t){return f.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const Vu=e=>{const{present:t,children:n}=e,r=UH(t),o=typeof n=="function"?n({present:r.isPresent}):f.Children.only(n),s=Vi(r.ref,o.ref);return typeof n=="function"||r.isPresent?f.cloneElement(o,{ref:s}):null};Vu.displayName="Presence";function UH(e){const[t,n]=f.useState(),r=f.useRef({}),o=f.useRef(e),s=f.useRef("none"),i=e?"mounted":"unmounted",[u,d]=VH(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return f.useEffect(()=>{const p=tf(r.current);s.current=u==="mounted"?p:"none"},[u]),T0(()=>{const p=r.current,h=o.current;if(h!==e){const v=s.current,b=tf(p);e?d("MOUNT"):b==="none"||(p==null?void 0:p.display)==="none"?d("UNMOUNT"):d(h&&v!==b?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,d]),T0(()=>{if(t){const p=g=>{const b=tf(r.current).includes(g.animationName);g.target===t&&b&&nc.flushSync(()=>d("ANIMATION_END"))},h=g=>{g.target===t&&(s.current=tf(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 d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:f.useCallback(p=>{p&&(r.current=getComputedStyle(p)),n(p)},[])}}function tf(e){return(e==null?void 0:e.animationName)||"none"}function GH(e,t=[]){let n=[];function r(s,i){const u=f.createContext(i),d=n.length;n=[...n,i];function p(g){const{scope:v,children:b,...S}=g,x=(v==null?void 0:v[e][d])||u,C=f.useMemo(()=>S,Object.values(S));return f.createElement(x.Provider,{value:C},b)}function h(g,v){const b=(v==null?void 0:v[e][d])||u,S=f.useContext(b);if(S)return S;if(i!==void 0)return i;throw new Error(`\`${g}\` must be used within \`${s}\``)}return p.displayName=s+"Provider",[p,h]}const o=()=>{const s=n.map(i=>f.createContext(i));return function(u){const d=(u==null?void 0:u[e])||s;return f.useMemo(()=>({[`__scope${e}`]:{...u,[e]:d}}),[u,d])}};return o.scopeName=e,[r,qH(o,...t)]}function qH(...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((u,{useScope:d,scopeName:p})=>{const g=d(s)[`__scope${p}`];return{...u,...g}},{});return f.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}function xi(e){const t=f.useRef(e);return f.useEffect(()=>{t.current=e}),f.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}const KH=f.createContext(void 0);function QH(e){const t=f.useContext(KH);return e||t||"ltr"}function YH(e,[t,n]){return Math.min(n,Math.max(t,e))}function ji(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 XH(e,t){return f.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const Ok="ScrollArea",[Mk,jse]=GH(Ok),[JH,Jo]=Mk(Ok),ZH=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...i}=e,[u,d]=f.useState(null),[p,h]=f.useState(null),[g,v]=f.useState(null),[b,S]=f.useState(null),[x,C]=f.useState(null),[_,k]=f.useState(0),[P,I]=f.useState(0),[E,O]=f.useState(!1),[R,D]=f.useState(!1),T=Vi(t,W=>d(W)),B=QH(o);return f.createElement(JH,{scope:n,type:r,dir:B,scrollHideDelay:s,scrollArea:u,viewport:p,onViewportChange:h,content:g,onContentChange:v,scrollbarX:b,onScrollbarXChange:S,scrollbarXEnabled:E,onScrollbarXEnabledChange:O,scrollbarY:x,onScrollbarYChange:C,scrollbarYEnabled:R,onScrollbarYEnabledChange:D,onCornerWidthChange:k,onCornerHeightChange:I},f.createElement(Wu.div,Xn({dir:B},i,{ref:T,style:{position:"relative","--radix-scroll-area-corner-width":_+"px","--radix-scroll-area-corner-height":P+"px",...e.style}})))}),eW="ScrollAreaViewport",tW=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,...o}=e,s=Jo(eW,n),i=f.useRef(null),u=Vi(t,i,s.onViewportChange);return f.createElement(f.Fragment,null,f.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}"}}),f.createElement(Wu.div,Xn({"data-radix-scroll-area-viewport":""},o,{ref:u,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style}}),f.createElement("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"}},r)))}),ja="ScrollAreaScrollbar",nW=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Jo(ja,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=o,u=e.orientation==="horizontal";return f.useEffect(()=>(u?s(!0):i(!0),()=>{u?s(!1):i(!1)}),[u,s,i]),o.type==="hover"?f.createElement(rW,Xn({},r,{ref:t,forceMount:n})):o.type==="scroll"?f.createElement(oW,Xn({},r,{ref:t,forceMount:n})):o.type==="auto"?f.createElement(Rk,Xn({},r,{ref:t,forceMount:n})):o.type==="always"?f.createElement(M1,Xn({},r,{ref:t})):null}),rW=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Jo(ja,e.__scopeScrollArea),[s,i]=f.useState(!1);return f.useEffect(()=>{const u=o.scrollArea;let d=0;if(u){const p=()=>{window.clearTimeout(d),i(!0)},h=()=>{d=window.setTimeout(()=>i(!1),o.scrollHideDelay)};return u.addEventListener("pointerenter",p),u.addEventListener("pointerleave",h),()=>{window.clearTimeout(d),u.removeEventListener("pointerenter",p),u.removeEventListener("pointerleave",h)}}},[o.scrollArea,o.scrollHideDelay]),f.createElement(Vu,{present:n||s},f.createElement(Rk,Xn({"data-state":s?"visible":"hidden"},r,{ref:t})))}),oW=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Jo(ja,e.__scopeScrollArea),s=e.orientation==="horizontal",i=Sh(()=>d("SCROLL_END"),100),[u,d]=XH("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 f.useEffect(()=>{if(u==="idle"){const p=window.setTimeout(()=>d("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(p)}},[u,o.scrollHideDelay,d]),f.useEffect(()=>{const p=o.viewport,h=s?"scrollLeft":"scrollTop";if(p){let g=p[h];const v=()=>{const b=p[h];g!==b&&(d("SCROLL"),i()),g=b};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[o.viewport,s,d,i]),f.createElement(Vu,{present:n||u!=="hidden"},f.createElement(M1,Xn({"data-state":u==="hidden"?"hidden":"visible"},r,{ref:t,onPointerEnter:ji(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:ji(e.onPointerLeave,()=>d("POINTER_LEAVE"))})))}),Rk=f.forwardRef((e,t)=>{const n=Jo(ja,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,i]=f.useState(!1),u=e.orientation==="horizontal",d=Sh(()=>{if(n.viewport){const p=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=e,o=Jo(ja,e.__scopeScrollArea),s=f.useRef(null),i=f.useRef(0),[u,d]=f.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=Nk(u.viewport,u.content),h={...r,sizes:u,onSizesChange:d,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:v=>i.current=v};function g(v,b){return fW(v,i.current,u,b)}return n==="horizontal"?f.createElement(sW,Xn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollLeft,b=Qw(v,u,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=g(v,o.dir))}})):n==="vertical"?f.createElement(aW,Xn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollTop,b=Qw(v,u);s.current.style.transform=`translate3d(0, ${b}px, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollTop=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollTop=g(v))}})):null}),sW=f.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Jo(ja,e.__scopeScrollArea),[i,u]=f.useState(),d=f.useRef(null),p=Vi(t,d,s.onScrollbarXChange);return f.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),f.createElement(Ak,Xn({"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":wh(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.x),onDragScroll:h=>e.onDragScroll(h.x),onWheelScroll:(h,g)=>{if(s.viewport){const v=s.viewport.scrollLeft+h.deltaX;e.onWheelScroll(v),zk(v,g)&&h.preventDefault()}},onResize:()=>{d.current&&s.viewport&&i&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:dp(i.paddingLeft),paddingEnd:dp(i.paddingRight)}})}}))}),aW=f.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Jo(ja,e.__scopeScrollArea),[i,u]=f.useState(),d=f.useRef(null),p=Vi(t,d,s.onScrollbarYChange);return f.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),f.createElement(Ak,Xn({"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":wh(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.y),onDragScroll:h=>e.onDragScroll(h.y),onWheelScroll:(h,g)=>{if(s.viewport){const v=s.viewport.scrollTop+h.deltaY;e.onWheelScroll(v),zk(v,g)&&h.preventDefault()}},onResize:()=>{d.current&&s.viewport&&i&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:dp(i.paddingTop),paddingEnd:dp(i.paddingBottom)}})}}))}),[iW,Dk]=Mk(ja),Ak=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:i,onThumbPointerDown:u,onThumbPositionChange:d,onDragScroll:p,onWheelScroll:h,onResize:g,...v}=e,b=Jo(ja,n),[S,x]=f.useState(null),C=Vi(t,T=>x(T)),_=f.useRef(null),k=f.useRef(""),P=b.viewport,I=r.content-r.viewport,E=xi(h),O=xi(d),R=Sh(g,10);function D(T){if(_.current){const B=T.clientX-_.current.left,W=T.clientY-_.current.top;p({x:B,y:W})}}return f.useEffect(()=>{const T=B=>{const W=B.target;(S==null?void 0:S.contains(W))&&E(B,I)};return document.addEventListener("wheel",T,{passive:!1}),()=>document.removeEventListener("wheel",T,{passive:!1})},[P,S,I,E]),f.useEffect(O,[r,O]),Hl(S,R),Hl(b.content,R),f.createElement(iW,{scope:n,scrollbar:S,hasThumb:o,onThumbChange:xi(s),onThumbPointerUp:xi(i),onThumbPositionChange:O,onThumbPointerDown:xi(u)},f.createElement(Wu.div,Xn({},v,{ref:C,style:{position:"absolute",...v.style},onPointerDown:ji(e.onPointerDown,T=>{T.button===0&&(T.target.setPointerCapture(T.pointerId),_.current=S.getBoundingClientRect(),k.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",D(T))}),onPointerMove:ji(e.onPointerMove,D),onPointerUp:ji(e.onPointerUp,T=>{const B=T.target;B.hasPointerCapture(T.pointerId)&&B.releasePointerCapture(T.pointerId),document.body.style.webkitUserSelect=k.current,_.current=null})})))}),N0="ScrollAreaThumb",lW=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Dk(N0,e.__scopeScrollArea);return f.createElement(Vu,{present:n||o.hasThumb},f.createElement(cW,Xn({ref:t},r)))}),cW=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=Jo(N0,n),i=Dk(N0,n),{onThumbPositionChange:u}=i,d=Vi(t,g=>i.onThumbChange(g)),p=f.useRef(),h=Sh(()=>{p.current&&(p.current(),p.current=void 0)},100);return f.useEffect(()=>{const g=s.viewport;if(g){const v=()=>{if(h(),!p.current){const b=pW(g,u);p.current=b,u()}};return u(),g.addEventListener("scroll",v),()=>g.removeEventListener("scroll",v)}},[s.viewport,h,u]),f.createElement(Wu.div,Xn({"data-state":i.hasThumb?"visible":"hidden"},o,{ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:ji(e.onPointerDownCapture,g=>{const b=g.target.getBoundingClientRect(),S=g.clientX-b.left,x=g.clientY-b.top;i.onThumbPointerDown({x:S,y:x})}),onPointerUp:ji(e.onPointerUp,i.onThumbPointerUp)}))}),Tk="ScrollAreaCorner",uW=f.forwardRef((e,t)=>{const n=Jo(Tk,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?f.createElement(dW,Xn({},e,{ref:t})):null}),dW=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=Jo(Tk,n),[s,i]=f.useState(0),[u,d]=f.useState(0),p=!!(s&&u);return Hl(o.scrollbarX,()=>{var h;const g=((h=o.scrollbarX)===null||h===void 0?void 0:h.offsetHeight)||0;o.onCornerHeightChange(g),d(g)}),Hl(o.scrollbarY,()=>{var h;const g=((h=o.scrollbarY)===null||h===void 0?void 0:h.offsetWidth)||0;o.onCornerWidthChange(g),i(g)}),p?f.createElement(Wu.div,Xn({},r,{ref:t,style:{width:s,height:u,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}})):null});function dp(e){return e?parseInt(e,10):0}function Nk(e,t){const n=e/t;return isNaN(n)?0:n}function wh(e){const t=Nk(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function fW(e,t,n,r="ltr"){const o=wh(n),s=o/2,i=t||s,u=o-i,d=n.scrollbar.paddingStart+i,p=n.scrollbar.size-n.scrollbar.paddingEnd-u,h=n.content-n.viewport,g=r==="ltr"?[0,h]:[h*-1,0];return $k([d,p],g)(e)}function Qw(e,t,n="ltr"){const r=wh(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,i=t.content-t.viewport,u=s-r,d=n==="ltr"?[0,i]:[i*-1,0],p=YH(e,d);return $k([0,i],[0,u])(p)}function $k(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 zk(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,u=n.top!==s.top;(i||u)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function Sh(e,t){const n=xi(e),r=f.useRef(0);return f.useEffect(()=>()=>window.clearTimeout(r.current),[]),f.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Hl(e,t){const n=xi(t);T0(()=>{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 hW=ZH,mW=tW,Yw=nW,Xw=lW,gW=uW;var vW=eo((e,{scrollbarSize:t,offsetScrollbars:n,scrollbarHovered:r,hidden:o})=>({root:{overflow:"hidden"},viewport:{width:"100%",height:"100%",paddingRight:n?ze(t):void 0,paddingBottom:n?ze(t):void 0},scrollbar:{display:o?"none":"flex",userSelect:"none",touchAction:"none",boxSizing:"border-box",padding:`calc(${ze(t)} / 5)`,transition:"background-color 150ms ease, opacity 150ms ease","&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[8]:e.colors.gray[0],[`& .${nw("thumb")}`]:{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.5):e.fn.rgba(e.black,.5)}},'&[data-orientation="vertical"]':{width:ze(t)},'&[data-orientation="horizontal"]':{flexDirection:"column",height:ze(t)},'&[data-state="hidden"]':{display:"none",opacity:0}},thumb:{ref:nw("thumb"),flex:1,backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.4):e.fn.rgba(e.black,.4),borderRadius:ze(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:ze(44),minHeight:ze(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 yW=vW;var bW=Object.defineProperty,xW=Object.defineProperties,wW=Object.getOwnPropertyDescriptors,fp=Object.getOwnPropertySymbols,Lk=Object.prototype.hasOwnProperty,Bk=Object.prototype.propertyIsEnumerable,Jw=(e,t,n)=>t in e?bW(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$0=(e,t)=>{for(var n in t||(t={}))Lk.call(t,n)&&Jw(e,n,t[n]);if(fp)for(var n of fp(t))Bk.call(t,n)&&Jw(e,n,t[n]);return e},Fk=(e,t)=>xW(e,wW(t)),Hk=(e,t)=>{var n={};for(var r in e)Lk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&fp)for(var r of fp(e))t.indexOf(r)<0&&Bk.call(e,r)&&(n[r]=e[r]);return n};const Wk={scrollbarSize:12,scrollHideDelay:1e3,type:"hover",offsetScrollbars:!1},Ch=f.forwardRef((e,t)=>{const n=mr("ScrollArea",Wk,e),{children:r,className:o,classNames:s,styles:i,scrollbarSize:u,scrollHideDelay:d,type:p,dir:h,offsetScrollbars:g,viewportRef:v,onScrollPositionChange:b,unstyled:S,variant:x,viewportProps:C}=n,_=Hk(n,["children","className","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","variant","viewportProps"]),[k,P]=f.useState(!1),I=_a(),{classes:E,cx:O}=yW({scrollbarSize:u,offsetScrollbars:g,scrollbarHovered:k,hidden:p==="never"},{name:"ScrollArea",classNames:s,styles:i,unstyled:S,variant:x});return z.createElement(hW,{type:p==="never"?"always":p,scrollHideDelay:d,dir:h||I.dir,ref:t,asChild:!0},z.createElement(bo,$0({className:O(E.root,o)},_),z.createElement(mW,Fk($0({},C),{className:E.viewport,ref:v,onScroll:typeof b=="function"?({currentTarget:R})=>b({x:R.scrollLeft,y:R.scrollTop}):void 0}),r),z.createElement(Yw,{orientation:"horizontal",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>P(!0),onMouseLeave:()=>P(!1)},z.createElement(Xw,{className:E.thumb})),z.createElement(Yw,{orientation:"vertical",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>P(!0),onMouseLeave:()=>P(!1)},z.createElement(Xw,{className:E.thumb})),z.createElement(gW,{className:E.corner})))}),Vk=f.forwardRef((e,t)=>{const n=mr("ScrollAreaAutosize",Wk,e),{children:r,classNames:o,styles:s,scrollbarSize:i,scrollHideDelay:u,type:d,dir:p,offsetScrollbars:h,viewportRef:g,onScrollPositionChange:v,unstyled:b,sx:S,variant:x,viewportProps:C}=n,_=Hk(n,["children","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","sx","variant","viewportProps"]);return z.createElement(bo,Fk($0({},_),{ref:t,sx:[{display:"flex"},...M_(S)]}),z.createElement(bo,{sx:{display:"flex",flexDirection:"column",flex:1}},z.createElement(Ch,{classNames:o,styles:s,scrollHideDelay:u,scrollbarSize:i,type:d,dir:p,offsetScrollbars:h,viewportRef:g,onScrollPositionChange:v,unstyled:b,variant:x,viewportProps:C},r)))});Vk.displayName="@mantine/core/ScrollAreaAutosize";Ch.displayName="@mantine/core/ScrollArea";Ch.Autosize=Vk;const Uk=Ch;var SW=Object.defineProperty,CW=Object.defineProperties,_W=Object.getOwnPropertyDescriptors,pp=Object.getOwnPropertySymbols,Gk=Object.prototype.hasOwnProperty,qk=Object.prototype.propertyIsEnumerable,Zw=(e,t,n)=>t in e?SW(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,eS=(e,t)=>{for(var n in t||(t={}))Gk.call(t,n)&&Zw(e,n,t[n]);if(pp)for(var n of pp(t))qk.call(t,n)&&Zw(e,n,t[n]);return e},kW=(e,t)=>CW(e,_W(t)),jW=(e,t)=>{var n={};for(var r in e)Gk.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&pp)for(var r of pp(e))t.indexOf(r)<0&&qk.call(e,r)&&(n[r]=e[r]);return n};const _h=f.forwardRef((e,t)=>{var n=e,{style:r}=n,o=jW(n,["style"]);return z.createElement(Uk,kW(eS({},o),{style:eS({width:"100%"},r),viewportProps:{tabIndex:-1},viewportRef:t}),o.children)});_h.displayName="@mantine/core/SelectScrollArea";var PW=eo(()=>({dropdown:{},itemsWrapper:{padding:ze(4),display:"flex",width:"100%",boxSizing:"border-box"}}));const IW=PW;function uc(e){return e.split("-")[1]}function R1(e){return e==="y"?"height":"width"}function hs(e){return e.split("-")[0]}function si(e){return["top","bottom"].includes(hs(e))?"x":"y"}function tS(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,u=si(t),d=R1(u),p=r[d]/2-o[d]/2,h=u==="x";let g;switch(hs(t)){case"top":g={x:s,y:r.y-o.height};break;case"bottom":g={x:s,y:r.y+r.height};break;case"right":g={x:r.x+r.width,y:i};break;case"left":g={x:r.x-o.width,y:i};break;default:g={x:r.x,y:r.y}}switch(uc(t)){case"start":g[u]-=p*(n&&h?-1:1);break;case"end":g[u]+=p*(n&&h?-1:1)}return g}const EW=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=n,u=s.filter(Boolean),d=await(i.isRTL==null?void 0:i.isRTL(t));let p=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:h,y:g}=tS(p,r,d),v=r,b={},S=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:u}=t,{element:d,padding:p=0}=wa(e,t)||{};if(d==null)return{};const h=D1(p),g={x:n,y:r},v=si(o),b=R1(v),S=await i.getDimensions(d),x=v==="y",C=x?"top":"left",_=x?"bottom":"right",k=x?"clientHeight":"clientWidth",P=s.reference[b]+s.reference[v]-g[v]-s.floating[b],I=g[v]-s.reference[v],E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(d));let O=E?E[k]:0;O&&await(i.isElement==null?void 0:i.isElement(E))||(O=u.floating[k]||s.floating[b]);const R=P/2-I/2,D=O/2-S[b]/2-1,T=ei(h[C],D),B=ei(h[_],D),W=T,J=O-S[b]-B,F=O/2-S[b]/2+R,N=z0(W,F,J),G=uc(o)!=null&&F!=N&&s.reference[b]/2-(Fe.concat(t,t+"-start",t+"-end"),[]);const MW={left:"right",right:"left",bottom:"top",top:"bottom"};function hp(e){return e.replace(/left|right|bottom|top/g,t=>MW[t])}function RW(e,t,n){n===void 0&&(n=!1);const r=uc(e),o=si(e),s=R1(o);let i=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=hp(i)),{main:i,cross:hp(i)}}const DW={start:"end",end:"start"};function Eg(e){return e.replace(/start|end/g,t=>DW[t])}const AW=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:u,elements:d}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:g,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:b="none",flipAlignment:S=!0,...x}=wa(e,t),C=hs(r),_=hs(i)===i,k=await(u.isRTL==null?void 0:u.isRTL(d.floating)),P=g||(_||!S?[hp(i)]:function(W){const J=hp(W);return[Eg(W),J,Eg(J)]}(i));g||b==="none"||P.push(...function(W,J,F,N){const G=uc(W);let K=function(M,U,V){const ee=["left","right"],ie=["right","left"],xe=["top","bottom"],me=["bottom","top"];switch(M){case"top":case"bottom":return V?U?ie:ee:U?ee:ie;case"left":case"right":return U?xe:me;default:return[]}}(hs(W),F==="start",N);return G&&(K=K.map(M=>M+"-"+G),J&&(K=K.concat(K.map(Eg)))),K}(i,S,b,k));const I=[i,...P],E=await A1(t,x),O=[];let R=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&O.push(E[C]),h){const{main:W,cross:J}=RW(r,s,k);O.push(E[W],E[J])}if(R=[...R,{placement:r,overflows:O}],!O.every(W=>W<=0)){var D,T;const W=(((D=o.flip)==null?void 0:D.index)||0)+1,J=I[W];if(J)return{data:{index:W,overflows:R},reset:{placement:J}};let F=(T=R.filter(N=>N.overflows[0]<=0).sort((N,G)=>N.overflows[1]-G.overflows[1])[0])==null?void 0:T.placement;if(!F)switch(v){case"bestFit":{var B;const N=(B=R.map(G=>[G.placement,G.overflows.filter(K=>K>0).reduce((K,M)=>K+M,0)]).sort((G,K)=>G[1]-K[1])[0])==null?void 0:B[0];N&&(F=N);break}case"initialPlacement":F=i}if(r!==F)return{reset:{placement:F}}}return{}}}};function rS(e){const t=ei(...e.map(r=>r.left)),n=ei(...e.map(r=>r.top));return{x:t,y:n,width:Ns(...e.map(r=>r.right))-t,height:Ns(...e.map(r=>r.bottom))-n}}const TW=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:u=2,x:d,y:p}=wa(e,t),h=Array.from(await(s.getClientRects==null?void 0:s.getClientRects(r.reference))||[]),g=function(x){const C=x.slice().sort((P,I)=>P.y-I.y),_=[];let k=null;for(let P=0;Pk.height/2?_.push([I]):_[_.length-1].push(I),k=I}return _.map(P=>Wl(rS(P)))}(h),v=Wl(rS(h)),b=D1(u),S=await s.getElementRects({reference:{getBoundingClientRect:function(){if(g.length===2&&g[0].left>g[1].right&&d!=null&&p!=null)return g.find(x=>d>x.left-b.left&&dx.top-b.top&&p=2){if(si(n)==="x"){const E=g[0],O=g[g.length-1],R=hs(n)==="top",D=E.top,T=O.bottom,B=R?E.left:O.left,W=R?E.right:O.right;return{top:D,bottom:T,left:B,right:W,width:W-B,height:T-D,x:B,y:D}}const x=hs(n)==="left",C=Ns(...g.map(E=>E.right)),_=ei(...g.map(E=>E.left)),k=g.filter(E=>x?E.left===_:E.right===C),P=k[0].top,I=k[k.length-1].bottom;return{top:P,bottom:I,left:_,right:C,width:C-_,height:I-P,x:_,y:P}}return v}},floating:r.floating,strategy:i});return o.reference.x!==S.reference.x||o.reference.y!==S.reference.y||o.reference.width!==S.reference.width||o.reference.height!==S.reference.height?{reset:{rects:S}}:{}}}},NW=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:u,platform:d,elements:p}=s,h=await(d.isRTL==null?void 0:d.isRTL(p.floating)),g=hs(u),v=uc(u),b=si(u)==="x",S=["left","top"].includes(g)?-1:1,x=h&&b?-1:1,C=wa(i,s);let{mainAxis:_,crossAxis:k,alignmentAxis:P}=typeof C=="number"?{mainAxis:C,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...C};return v&&typeof P=="number"&&(k=v==="end"?-1*P:P),b?{x:k*x,y:_*S}:{x:_*S,y:k*x}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function Kk(e){return e==="x"?"y":"x"}const $W=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:u={fn:C=>{let{x:_,y:k}=C;return{x:_,y:k}}},...d}=wa(e,t),p={x:n,y:r},h=await A1(t,d),g=si(hs(o)),v=Kk(g);let b=p[g],S=p[v];if(s){const C=g==="y"?"bottom":"right";b=z0(b+h[g==="y"?"top":"left"],b,b-h[C])}if(i){const C=v==="y"?"bottom":"right";S=z0(S+h[v==="y"?"top":"left"],S,S-h[C])}const x=u.fn({...t,[g]:b,[v]:S});return{...x,data:{x:x.x-n,y:x.y-r}}}}},zW=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:i}=t,{offset:u=0,mainAxis:d=!0,crossAxis:p=!0}=wa(e,t),h={x:n,y:r},g=si(o),v=Kk(g);let b=h[g],S=h[v];const x=wa(u,t),C=typeof x=="number"?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(d){const P=g==="y"?"height":"width",I=s.reference[g]-s.floating[P]+C.mainAxis,E=s.reference[g]+s.reference[P]-C.mainAxis;bE&&(b=E)}if(p){var _,k;const P=g==="y"?"width":"height",I=["top","left"].includes(hs(o)),E=s.reference[v]-s.floating[P]+(I&&((_=i.offset)==null?void 0:_[v])||0)+(I?0:C.crossAxis),O=s.reference[v]+s.reference[P]+(I?0:((k=i.offset)==null?void 0:k[v])||0)-(I?C.crossAxis:0);SO&&(S=O)}return{[g]:b,[v]:S}}}},LW=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=()=>{},...u}=wa(e,t),d=await A1(t,u),p=hs(n),h=uc(n),g=si(n)==="x",{width:v,height:b}=r.floating;let S,x;p==="top"||p==="bottom"?(S=p,x=h===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(x=p,S=h==="end"?"top":"bottom");const C=b-d[S],_=v-d[x],k=!t.middlewareData.shift;let P=C,I=_;if(g){const O=v-d.left-d.right;I=h||k?ei(_,O):O}else{const O=b-d.top-d.bottom;P=h||k?ei(C,O):O}if(k&&!h){const O=Ns(d.left,0),R=Ns(d.right,0),D=Ns(d.top,0),T=Ns(d.bottom,0);g?I=v-2*(O!==0||R!==0?O+R:Ns(d.left,d.right)):P=b-2*(D!==0||T!==0?D+T:Ns(d.top,d.bottom))}await i({...t,availableWidth:I,availableHeight:P});const E=await o.getDimensions(s.floating);return v!==E.width||b!==E.height?{reset:{rects:!0}}:{}}}};function Oo(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Gs(e){return Oo(e).getComputedStyle(e)}function Qk(e){return e instanceof Oo(e).Node}function ti(e){return Qk(e)?(e.nodeName||"").toLowerCase():"#document"}function bs(e){return e instanceof HTMLElement||e instanceof Oo(e).HTMLElement}function oS(e){return typeof ShadowRoot<"u"&&(e instanceof Oo(e).ShadowRoot||e instanceof ShadowRoot)}function mu(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Gs(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function BW(e){return["table","td","th"].includes(ti(e))}function L0(e){const t=T1(),n=Gs(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 T1(){return!(typeof CSS>"u"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function kh(e){return["html","body","#document"].includes(ti(e))}const B0=Math.min,Tl=Math.max,mp=Math.round,nf=Math.floor,ni=e=>({x:e,y:e});function Yk(e){const t=Gs(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=bs(e),s=o?e.offsetWidth:n,i=o?e.offsetHeight:r,u=mp(n)!==s||mp(r)!==i;return u&&(n=s,r=i),{width:n,height:r,$:u}}function fa(e){return e instanceof Element||e instanceof Oo(e).Element}function N1(e){return fa(e)?e:e.contextElement}function Nl(e){const t=N1(e);if(!bs(t))return ni(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=Yk(t);let i=(s?mp(n.width):n.width)/r,u=(s?mp(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),u&&Number.isFinite(u)||(u=1),{x:i,y:u}}const FW=ni(0);function Xk(e){const t=Oo(e);return T1()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:FW}function Ni(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=N1(e);let i=ni(1);t&&(r?fa(r)&&(i=Nl(r)):i=Nl(e));const u=function(v,b,S){return b===void 0&&(b=!1),!(!S||b&&S!==Oo(v))&&b}(s,n,r)?Xk(s):ni(0);let d=(o.left+u.x)/i.x,p=(o.top+u.y)/i.y,h=o.width/i.x,g=o.height/i.y;if(s){const v=Oo(s),b=r&&fa(r)?Oo(r):r;let S=v.frameElement;for(;S&&r&&b!==v;){const x=Nl(S),C=S.getBoundingClientRect(),_=getComputedStyle(S),k=C.left+(S.clientLeft+parseFloat(_.paddingLeft))*x.x,P=C.top+(S.clientTop+parseFloat(_.paddingTop))*x.y;d*=x.x,p*=x.y,h*=x.x,g*=x.y,d+=k,p+=P,S=Oo(S).frameElement}}return Wl({width:h,height:g,x:d,y:p})}function jh(e){return fa(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function pa(e){var t;return(t=(Qk(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Jk(e){return Ni(pa(e)).left+jh(e).scrollLeft}function Vl(e){if(ti(e)==="html")return e;const t=e.assignedSlot||e.parentNode||oS(e)&&e.host||pa(e);return oS(t)?t.host:t}function Zk(e){const t=Vl(e);return kh(t)?e.ownerDocument?e.ownerDocument.body:e.body:bs(t)&&mu(t)?t:Zk(t)}function gp(e,t){var n;t===void 0&&(t=[]);const r=Zk(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Oo(r);return o?t.concat(s,s.visualViewport||[],mu(r)?r:[]):t.concat(r,gp(r))}function sS(e,t,n){let r;if(t==="viewport")r=function(o,s){const i=Oo(o),u=pa(o),d=i.visualViewport;let p=u.clientWidth,h=u.clientHeight,g=0,v=0;if(d){p=d.width,h=d.height;const b=T1();(!b||b&&s==="fixed")&&(g=d.offsetLeft,v=d.offsetTop)}return{width:p,height:h,x:g,y:v}}(e,n);else if(t==="document")r=function(o){const s=pa(o),i=jh(o),u=o.ownerDocument.body,d=Tl(s.scrollWidth,s.clientWidth,u.scrollWidth,u.clientWidth),p=Tl(s.scrollHeight,s.clientHeight,u.scrollHeight,u.clientHeight);let h=-i.scrollLeft+Jk(o);const g=-i.scrollTop;return Gs(u).direction==="rtl"&&(h+=Tl(s.clientWidth,u.clientWidth)-d),{width:d,height:p,x:h,y:g}}(pa(e));else if(fa(t))r=function(o,s){const i=Ni(o,!0,s==="fixed"),u=i.top+o.clientTop,d=i.left+o.clientLeft,p=bs(o)?Nl(o):ni(1);return{width:o.clientWidth*p.x,height:o.clientHeight*p.y,x:d*p.x,y:u*p.y}}(t,n);else{const o=Xk(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return Wl(r)}function ej(e,t){const n=Vl(e);return!(n===t||!fa(n)||kh(n))&&(Gs(n).position==="fixed"||ej(n,t))}function HW(e,t,n){const r=bs(t),o=pa(t),s=n==="fixed",i=Ni(e,!0,s,t);let u={scrollLeft:0,scrollTop:0};const d=ni(0);if(r||!r&&!s)if((ti(t)!=="body"||mu(o))&&(u=jh(t)),bs(t)){const p=Ni(t,!0,s,t);d.x=p.x+t.clientLeft,d.y=p.y+t.clientTop}else o&&(d.x=Jk(o));return{x:i.left+u.scrollLeft-d.x,y:i.top+u.scrollTop-d.y,width:i.width,height:i.height}}function aS(e,t){return bs(e)&&Gs(e).position!=="fixed"?t?t(e):e.offsetParent:null}function iS(e,t){const n=Oo(e);if(!bs(e))return n;let r=aS(e,t);for(;r&&BW(r)&&Gs(r).position==="static";)r=aS(r,t);return r&&(ti(r)==="html"||ti(r)==="body"&&Gs(r).position==="static"&&!L0(r))?n:r||function(o){let s=Vl(o);for(;bs(s)&&!kh(s);){if(L0(s))return s;s=Vl(s)}return null}(e)||n}const WW={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=bs(n),s=pa(n);if(n===s)return t;let i={scrollLeft:0,scrollTop:0},u=ni(1);const d=ni(0);if((o||!o&&r!=="fixed")&&((ti(n)!=="body"||mu(s))&&(i=jh(n)),bs(n))){const p=Ni(n);u=Nl(n),d.x=p.x+n.clientLeft,d.y=p.y+n.clientTop}return{width:t.width*u.x,height:t.height*u.y,x:t.x*u.x-i.scrollLeft*u.x+d.x,y:t.y*u.y-i.scrollTop*u.y+d.y}},getDocumentElement:pa,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?function(d,p){const h=p.get(d);if(h)return h;let g=gp(d).filter(x=>fa(x)&&ti(x)!=="body"),v=null;const b=Gs(d).position==="fixed";let S=b?Vl(d):d;for(;fa(S)&&!kh(S);){const x=Gs(S),C=L0(S);C||x.position!=="fixed"||(v=null),(b?!C&&!v:!C&&x.position==="static"&&v&&["absolute","fixed"].includes(v.position)||mu(S)&&!C&&ej(d,S))?g=g.filter(_=>_!==S):v=x,S=Vl(S)}return p.set(d,g),g}(t,this._c):[].concat(n),r],i=s[0],u=s.reduce((d,p)=>{const h=sS(t,p,o);return d.top=Tl(h.top,d.top),d.right=B0(h.right,d.right),d.bottom=B0(h.bottom,d.bottom),d.left=Tl(h.left,d.left),d},sS(t,i,o));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}},getOffsetParent:iS,getElementRects:async function(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||iS,s=this.getDimensions;return{reference:HW(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 Yk(e)},getScale:Nl,isElement:fa,isRTL:function(e){return getComputedStyle(e).direction==="rtl"}};function VW(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=r,p=N1(e),h=o||s?[...p?gp(p):[],...gp(t)]:[];h.forEach(C=>{o&&C.addEventListener("scroll",n,{passive:!0}),s&&C.addEventListener("resize",n)});const g=p&&u?function(C,_){let k,P=null;const I=pa(C);function E(){clearTimeout(k),P&&P.disconnect(),P=null}return function O(R,D){R===void 0&&(R=!1),D===void 0&&(D=1),E();const{left:T,top:B,width:W,height:J}=C.getBoundingClientRect();if(R||_(),!W||!J)return;const F={rootMargin:-nf(B)+"px "+-nf(I.clientWidth-(T+W))+"px "+-nf(I.clientHeight-(B+J))+"px "+-nf(T)+"px",threshold:Tl(0,B0(1,D))||1};let N=!0;function G(K){const M=K[0].intersectionRatio;if(M!==D){if(!N)return O();M?O(!1,M):k=setTimeout(()=>{O(!1,1e-7)},100)}N=!1}try{P=new IntersectionObserver(G,{...F,root:I.ownerDocument})}catch{P=new IntersectionObserver(G,F)}P.observe(C)}(!0),E}(p,n):null;let v,b=-1,S=null;i&&(S=new ResizeObserver(C=>{let[_]=C;_&&_.target===p&&S&&(S.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{S&&S.observe(t)})),n()}),p&&!d&&S.observe(p),S.observe(t));let x=d?Ni(e):null;return d&&function C(){const _=Ni(e);!x||_.x===x.x&&_.y===x.y&&_.width===x.width&&_.height===x.height||n(),x=_,v=requestAnimationFrame(C)}(),n(),()=>{h.forEach(C=>{o&&C.removeEventListener("scroll",n),s&&C.removeEventListener("resize",n)}),g&&g(),S&&S.disconnect(),S=null,d&&cancelAnimationFrame(v)}}const UW=(e,t,n)=>{const r=new Map,o={platform:WW,...n},s={...o.platform,_c:r};return EW(e,t,{...o,platform:s})},GW=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?nS({element:t.current,padding:n}).fn(o):{}:t?nS({element:t,padding:n}).fn(o):{}}}};var Sf=typeof document<"u"?f.useLayoutEffect:f.useEffect;function vp(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(!vp(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)&&!vp(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function lS(e){const t=f.useRef(e);return Sf(()=>{t.current=e}),t}function qW(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,whileElementsMounted:s,open:i}=e,[u,d]=f.useState({x:null,y:null,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=f.useState(r);vp(p,r)||h(r);const g=f.useRef(null),v=f.useRef(null),b=f.useRef(u),S=lS(s),x=lS(o),[C,_]=f.useState(null),[k,P]=f.useState(null),I=f.useCallback(B=>{g.current!==B&&(g.current=B,_(B))},[]),E=f.useCallback(B=>{v.current!==B&&(v.current=B,P(B))},[]),O=f.useCallback(()=>{if(!g.current||!v.current)return;const B={placement:t,strategy:n,middleware:p};x.current&&(B.platform=x.current),UW(g.current,v.current,B).then(W=>{const J={...W,isPositioned:!0};R.current&&!vp(b.current,J)&&(b.current=J,nc.flushSync(()=>{d(J)}))})},[p,t,n,x]);Sf(()=>{i===!1&&b.current.isPositioned&&(b.current.isPositioned=!1,d(B=>({...B,isPositioned:!1})))},[i]);const R=f.useRef(!1);Sf(()=>(R.current=!0,()=>{R.current=!1}),[]),Sf(()=>{if(C&&k){if(S.current)return S.current(C,k,O);O()}},[C,k,O,S]);const D=f.useMemo(()=>({reference:g,floating:v,setReference:I,setFloating:E}),[I,E]),T=f.useMemo(()=>({reference:C,floating:k}),[C,k]);return f.useMemo(()=>({...u,update:O,refs:D,elements:T,reference:I,floating:E}),[u,O,D,T,I,E])}var KW=typeof document<"u"?f.useLayoutEffect:f.useEffect;function QW(){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 YW=f.createContext(null),XW=()=>f.useContext(YW);function JW(e){return(e==null?void 0:e.ownerDocument)||document}function ZW(e){return JW(e).defaultView||window}function rf(e){return e?e instanceof ZW(e).Element:!1}const eV=fv["useInsertionEffect".toString()],tV=eV||(e=>e());function nV(e){const t=f.useRef(()=>{});return tV(()=>{t.current=e}),f.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;oQW())[0],[p,h]=f.useState(null),g=f.useCallback(_=>{const k=rf(_)?{getBoundingClientRect:()=>_.getBoundingClientRect(),contextElement:_}:_;o.refs.setReference(k)},[o.refs]),v=f.useCallback(_=>{(rf(_)||_===null)&&(i.current=_,h(_)),(rf(o.refs.reference.current)||o.refs.reference.current===null||_!==null&&!rf(_))&&o.refs.setReference(_)},[o.refs]),b=f.useMemo(()=>({...o.refs,setReference:v,setPositionReference:g,domReference:i}),[o.refs,v,g]),S=f.useMemo(()=>({...o.elements,domReference:p}),[o.elements,p]),x=nV(n),C=f.useMemo(()=>({...o,refs:b,elements:S,dataRef:u,nodeId:r,events:d,open:t,onOpenChange:x}),[o,r,d,t,x,b,S]);return KW(()=>{const _=s==null?void 0:s.nodesRef.current.find(k=>k.id===r);_&&(_.context=C)}),f.useMemo(()=>({...o,context:C,refs:b,reference:v,positionReference:g}),[o,b,C,v,g])}function oV({opened:e,floating:t,position:n,positionDependencies:r}){const[o,s]=f.useState(0);f.useEffect(()=>{if(t.refs.reference.current&&t.refs.floating.current)return VW(t.refs.reference.current,t.refs.floating.current,t.update)},[t.refs.reference.current,t.refs.floating.current,e,o,n]),ps(()=>{t.update()},r),ps(()=>{s(i=>i+1)},[e])}function sV(e){const t=[NW(e.offset)];return e.middlewares.shift&&t.push($W({limiter:zW()})),e.middlewares.flip&&t.push(AW()),e.middlewares.inline&&t.push(TW()),t.push(GW({element:e.arrowRef,padding:e.arrowOffset})),t}function aV(e){const[t,n]=hu({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,u;t?((i=e.onClose)==null||i.call(e),n(!1)):((u=e.onOpen)==null||u.call(e),n(!0))},s=rV({placement:e.position,middleware:[...sV(e),...e.width==="target"?[LW({apply({rects:i}){var u,d;Object.assign((d=(u=s.refs.floating.current)==null?void 0:u.style)!=null?d:{},{width:`${i.reference.width}px`})}})]:[]]});return oV({opened:e.opened,position:e.position,positionDependencies:e.positionDependencies,floating:s}),ps(()=>{var i;(i=e.onPositionChange)==null||i.call(e,s.placement)},[s.placement]),ps(()=>{var i,u;e.opened?(u=e.onOpen)==null||u.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 tj={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"},[iV,nj]=KL(tj.context);var lV=Object.defineProperty,cV=Object.defineProperties,uV=Object.getOwnPropertyDescriptors,yp=Object.getOwnPropertySymbols,rj=Object.prototype.hasOwnProperty,oj=Object.prototype.propertyIsEnumerable,cS=(e,t,n)=>t in e?lV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,of=(e,t)=>{for(var n in t||(t={}))rj.call(t,n)&&cS(e,n,t[n]);if(yp)for(var n of yp(t))oj.call(t,n)&&cS(e,n,t[n]);return e},dV=(e,t)=>cV(e,uV(t)),fV=(e,t)=>{var n={};for(var r in e)rj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&yp)for(var r of yp(e))t.indexOf(r)<0&&oj.call(e,r)&&(n[r]=e[r]);return n};const pV={refProp:"ref",popupType:"dialog"},sj=f.forwardRef((e,t)=>{const n=mr("PopoverTarget",pV,e),{children:r,refProp:o,popupType:s}=n,i=fV(n,["children","refProp","popupType"]);if(!D_(r))throw new Error(tj.children);const u=i,d=nj(),p=Hu(d.reference,r.ref,t),h=d.withRoles?{"aria-haspopup":s,"aria-expanded":d.opened,"aria-controls":d.getDropdownId(),id:d.getTargetId()}:{};return f.cloneElement(r,of(dV(of(of(of({},u),h),d.targetProps),{className:T_(d.targetProps.className,u.className,r.props.className),[o]:p}),d.controlled?null:{onClick:d.onToggle}))});sj.displayName="@mantine/core/PopoverTarget";var hV=eo((e,{radius:t,shadow:n})=>({dropdown:{position:"absolute",backgroundColor:e.white,background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,border:`${ze(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:`${ze(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,zIndex:1}}));const mV=hV;var gV=Object.defineProperty,uS=Object.getOwnPropertySymbols,vV=Object.prototype.hasOwnProperty,yV=Object.prototype.propertyIsEnumerable,dS=(e,t,n)=>t in e?gV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hl=(e,t)=>{for(var n in t||(t={}))vV.call(t,n)&&dS(e,n,t[n]);if(uS)for(var n of uS(t))yV.call(t,n)&&dS(e,n,t[n]);return e};const fS={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function bV({transition:e,state:t,duration:n,timingFunction:r}){const o={transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e=="string"?e in Yd?hl(hl(hl({transitionProperty:Yd[e].transitionProperty},o),Yd[e].common),Yd[e][fS[t]]):null:hl(hl(hl({transitionProperty:e.transitionProperty},o),e.common),e[fS[t]])}function xV({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:o,onExit:s,onEntered:i,onExited:u}){const d=_a(),p=H_(),h=d.respectReducedMotion?p:!1,[g,v]=f.useState(h?0:e),[b,S]=f.useState(r?"entered":"exited"),x=f.useRef(-1),C=_=>{const k=_?o:s,P=_?i:u;S(_?"pre-entering":"pre-exiting"),window.clearTimeout(x.current);const I=h?0:_?e:t;if(v(I),I===0)typeof k=="function"&&k(),typeof P=="function"&&P(),S(_?"entered":"exited");else{const E=window.setTimeout(()=>{typeof k=="function"&&k(),S(_?"entering":"exiting")},10);x.current=window.setTimeout(()=>{window.clearTimeout(E),typeof P=="function"&&P(),S(_?"entered":"exited")},I)}};return ps(()=>{C(r)},[r]),f.useEffect(()=>()=>window.clearTimeout(x.current),[]),{transitionDuration:g,transitionStatus:b,transitionTimingFunction:n||d.transitionTimingFunction}}function aj({keepMounted:e,transition:t,duration:n=250,exitDuration:r=n,mounted:o,children:s,timingFunction:i,onExit:u,onEntered:d,onEnter:p,onExited:h}){const{transitionDuration:g,transitionStatus:v,transitionTimingFunction:b}=xV({mounted:o,exitDuration:r,duration:n,timingFunction:i,onExit:u,onEntered:d,onEnter:p,onExited:h});return g===0?o?z.createElement(z.Fragment,null,s({})):e?s({display:"none"}):null:v==="exited"?e?s({display:"none"}):null:z.createElement(z.Fragment,null,s(bV({transition:t,duration:g,state:v,timingFunction:b})))}aj.displayName="@mantine/core/Transition";function ij({children:e,active:t=!0,refProp:n="ref"}){const r=IB(t),o=Hu(r,e==null?void 0:e.ref);return D_(e)?f.cloneElement(e,{[n]:o}):e}ij.displayName="@mantine/core/FocusTrap";var wV=Object.defineProperty,SV=Object.defineProperties,CV=Object.getOwnPropertyDescriptors,pS=Object.getOwnPropertySymbols,_V=Object.prototype.hasOwnProperty,kV=Object.prototype.propertyIsEnumerable,hS=(e,t,n)=>t in e?wV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Na=(e,t)=>{for(var n in t||(t={}))_V.call(t,n)&&hS(e,n,t[n]);if(pS)for(var n of pS(t))kV.call(t,n)&&hS(e,n,t[n]);return e},sf=(e,t)=>SV(e,CV(t));function mS(e,t,n,r){return e==="center"||r==="center"?{top:t}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function gS(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 jV={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function PV({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:o,arrowX:s,arrowY:i,dir:u}){const[d,p="center"]=e.split("-"),h={width:ze(t),height:ze(t),transform:"rotate(45deg)",position:"absolute",[jV[d]]:ze(r)},g=ze(-t/2);return d==="left"?sf(Na(Na({},h),mS(p,i,n,o)),{right:g,borderLeftColor:"transparent",borderBottomColor:"transparent"}):d==="right"?sf(Na(Na({},h),mS(p,i,n,o)),{left:g,borderRightColor:"transparent",borderTopColor:"transparent"}):d==="top"?sf(Na(Na({},h),gS(p,s,n,o,u)),{bottom:g,borderTopColor:"transparent",borderLeftColor:"transparent"}):d==="bottom"?sf(Na(Na({},h),gS(p,s,n,o,u)),{top:g,borderBottomColor:"transparent",borderRightColor:"transparent"}):{}}var IV=Object.defineProperty,EV=Object.defineProperties,OV=Object.getOwnPropertyDescriptors,bp=Object.getOwnPropertySymbols,lj=Object.prototype.hasOwnProperty,cj=Object.prototype.propertyIsEnumerable,vS=(e,t,n)=>t in e?IV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,MV=(e,t)=>{for(var n in t||(t={}))lj.call(t,n)&&vS(e,n,t[n]);if(bp)for(var n of bp(t))cj.call(t,n)&&vS(e,n,t[n]);return e},RV=(e,t)=>EV(e,OV(t)),DV=(e,t)=>{var n={};for(var r in e)lj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&bp)for(var r of bp(e))t.indexOf(r)<0&&cj.call(e,r)&&(n[r]=e[r]);return n};const uj=f.forwardRef((e,t)=>{var n=e,{position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:u,visible:d,arrowX:p,arrowY:h}=n,g=DV(n,["position","arrowSize","arrowOffset","arrowRadius","arrowPosition","visible","arrowX","arrowY"]);const v=_a();return d?z.createElement("div",RV(MV({},g),{ref:t,style:PV({position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:u,dir:v.dir,arrowX:p,arrowY:h})})):null});uj.displayName="@mantine/core/FloatingArrow";var AV=Object.defineProperty,TV=Object.defineProperties,NV=Object.getOwnPropertyDescriptors,xp=Object.getOwnPropertySymbols,dj=Object.prototype.hasOwnProperty,fj=Object.prototype.propertyIsEnumerable,yS=(e,t,n)=>t in e?AV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ml=(e,t)=>{for(var n in t||(t={}))dj.call(t,n)&&yS(e,n,t[n]);if(xp)for(var n of xp(t))fj.call(t,n)&&yS(e,n,t[n]);return e},af=(e,t)=>TV(e,NV(t)),$V=(e,t)=>{var n={};for(var r in e)dj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&xp)for(var r of xp(e))t.indexOf(r)<0&&fj.call(e,r)&&(n[r]=e[r]);return n};const zV={};function pj(e){var t;const n=mr("PopoverDropdown",zV,e),{style:r,className:o,children:s,onKeyDownCapture:i}=n,u=$V(n,["style","className","children","onKeyDownCapture"]),d=nj(),{classes:p,cx:h}=mV({radius:d.radius,shadow:d.shadow},{name:d.__staticSelector,classNames:d.classNames,styles:d.styles,unstyled:d.unstyled,variant:d.variant}),g=wB({opened:d.opened,shouldReturnFocus:d.returnFocus}),v=d.withRoles?{"aria-labelledby":d.getTargetId(),id:d.getDropdownId(),role:"dialog"}:{};return d.disabled?null:z.createElement(pk,af(ml({},d.portalProps),{withinPortal:d.withinPortal}),z.createElement(aj,af(ml({mounted:d.opened},d.transitionProps),{transition:d.transitionProps.transition||"fade",duration:(t=d.transitionProps.duration)!=null?t:150,keepMounted:d.keepMounted,exitDuration:typeof d.transitionProps.exitDuration=="number"?d.transitionProps.exitDuration:d.transitionProps.duration}),b=>{var S,x;return z.createElement(ij,{active:d.trapFocus},z.createElement(bo,ml(af(ml({},v),{tabIndex:-1,ref:d.floating,style:af(ml(ml({},r),b),{zIndex:d.zIndex,top:(S=d.y)!=null?S:0,left:(x=d.x)!=null?x:0,width:d.width==="target"?void 0:ze(d.width)}),className:h(p.dropdown,o),onKeyDownCapture:YL(d.onClose,{active:d.closeOnEscape,onTrigger:g,onKeyDown:i}),"data-position":d.placement}),u),s,z.createElement(uj,{ref:d.arrowRef,arrowX:d.arrowX,arrowY:d.arrowY,visible:d.withArrow,position:d.placement,arrowSize:d.arrowSize,arrowRadius:d.arrowRadius,arrowOffset:d.arrowOffset,arrowPosition:d.arrowPosition,className:p.arrow})))}))}pj.displayName="@mantine/core/PopoverDropdown";function LV(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 bS=Object.getOwnPropertySymbols,BV=Object.prototype.hasOwnProperty,FV=Object.prototype.propertyIsEnumerable,HV=(e,t)=>{var n={};for(var r in e)BV.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&bS)for(var r of bS(e))t.indexOf(r)<0&&FV.call(e,r)&&(n[r]=e[r]);return n};const WV={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:j1("popover"),__staticSelector:"Popover",width:"max-content"};function dc(e){var t,n,r,o,s,i;const u=f.useRef(null),d=mr("Popover",WV,e),{children:p,position:h,offset:g,onPositionChange:v,positionDependencies:b,opened:S,transitionProps:x,width:C,middlewares:_,withArrow:k,arrowSize:P,arrowOffset:I,arrowRadius:E,arrowPosition:O,unstyled:R,classNames:D,styles:T,closeOnClickOutside:B,withinPortal:W,portalProps:J,closeOnEscape:F,clickOutsideEvents:N,trapFocus:G,onClose:K,onOpen:M,onChange:U,zIndex:V,radius:ee,shadow:ie,id:xe,defaultOpened:me,__staticSelector:ae,withRoles:te,disabled:H,returnFocus:re,variant:pe,keepMounted:ne}=d,ve=HV(d,["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"]),[de,Ce]=f.useState(null),[Re,ge]=f.useState(null),_e=I1(xe),We=_a(),Le=aV({middlewares:_,width:C,position:LV(We.dir,h),offset:typeof g=="number"?g+(k?P/2:0):g,arrowRef:u,arrowOffset:I,onPositionChange:v,positionDependencies:b,opened:S,defaultOpened:me,onChange:U,onOpen:M,onClose:K});vB(()=>Le.opened&&B&&Le.onClose(),N,[de,Re]);const Ue=f.useCallback(vt=>{Ce(vt),Le.floating.reference(vt)},[Le.floating.reference]),jt=f.useCallback(vt=>{ge(vt),Le.floating.floating(vt)},[Le.floating.floating]);return z.createElement(iV,{value:{returnFocus:re,disabled:H,controlled:Le.controlled,reference:Ue,floating:jt,x:Le.floating.x,y:Le.floating.y,arrowX:(r=(n=(t=Le.floating)==null?void 0:t.middlewareData)==null?void 0:n.arrow)==null?void 0:r.x,arrowY:(i=(s=(o=Le.floating)==null?void 0:o.middlewareData)==null?void 0:s.arrow)==null?void 0:i.y,opened:Le.opened,arrowRef:u,transitionProps:x,width:C,withArrow:k,arrowSize:P,arrowOffset:I,arrowRadius:E,arrowPosition:O,placement:Le.floating.placement,trapFocus:G,withinPortal:W,portalProps:J,zIndex:V,radius:ee,shadow:ie,closeOnEscape:F,onClose:Le.onClose,onToggle:Le.onToggle,getTargetId:()=>`${_e}-target`,getDropdownId:()=>`${_e}-dropdown`,withRoles:te,targetProps:ve,__staticSelector:ae,classNames:D,styles:T,unstyled:R,variant:pe,keepMounted:ne}},p)}dc.Target=sj;dc.Dropdown=pj;dc.displayName="@mantine/core/Popover";var VV=Object.defineProperty,wp=Object.getOwnPropertySymbols,hj=Object.prototype.hasOwnProperty,mj=Object.prototype.propertyIsEnumerable,xS=(e,t,n)=>t in e?VV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,UV=(e,t)=>{for(var n in t||(t={}))hj.call(t,n)&&xS(e,n,t[n]);if(wp)for(var n of wp(t))mj.call(t,n)&&xS(e,n,t[n]);return e},GV=(e,t)=>{var n={};for(var r in e)hj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&wp)for(var r of wp(e))t.indexOf(r)<0&&mj.call(e,r)&&(n[r]=e[r]);return n};function qV(e){var t=e,{children:n,component:r="div",maxHeight:o=220,direction:s="column",id:i,innerRef:u,__staticSelector:d,styles:p,classNames:h,unstyled:g}=t,v=GV(t,["children","component","maxHeight","direction","id","innerRef","__staticSelector","styles","classNames","unstyled"]);const{classes:b}=IW(null,{name:d,styles:p,classNames:h,unstyled:g});return z.createElement(dc.Dropdown,UV({p:0,onMouseDown:S=>S.preventDefault()},v),z.createElement("div",{style:{maxHeight:ze(o),display:"flex"}},z.createElement(bo,{component:r||"div",id:`${i}-items`,"aria-labelledby":`${i}-label`,role:"listbox",onMouseDown:S=>S.preventDefault(),style:{flex:1,overflowY:r!==_h?"auto":void 0},"data-combobox-popover":!0,tabIndex:-1,ref:u},z.createElement("div",{className:b.itemsWrapper,style:{flexDirection:s}},n))))}function Xa({opened:e,transitionProps:t={transition:"fade",duration:0},shadow:n,withinPortal:r,portalProps:o,children:s,__staticSelector:i,onDirectionChange:u,switchDirectionOnFlip:d,zIndex:p,dropdownPosition:h,positionDependencies:g=[],classNames:v,styles:b,unstyled:S,readOnly:x,variant:C}){return z.createElement(dc,{unstyled:S,classNames:v,styles:b,width:"target",withRoles:!1,opened:e,middlewares:{flip:h==="flip",shift:!1},position:h==="flip"?"bottom":h,positionDependencies:g,zIndex:p,__staticSelector:i,withinPortal:r,portalProps:o,transitionProps:t,shadow:n,disabled:x,onPositionChange:_=>d&&(u==null?void 0:u(_==="top"?"column-reverse":"column")),variant:C},s)}Xa.Target=dc.Target;Xa.Dropdown=qV;var KV=Object.defineProperty,QV=Object.defineProperties,YV=Object.getOwnPropertyDescriptors,Sp=Object.getOwnPropertySymbols,gj=Object.prototype.hasOwnProperty,vj=Object.prototype.propertyIsEnumerable,wS=(e,t,n)=>t in e?KV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lf=(e,t)=>{for(var n in t||(t={}))gj.call(t,n)&&wS(e,n,t[n]);if(Sp)for(var n of Sp(t))vj.call(t,n)&&wS(e,n,t[n]);return e},XV=(e,t)=>QV(e,YV(t)),JV=(e,t)=>{var n={};for(var r in e)gj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Sp)for(var r of Sp(e))t.indexOf(r)<0&&vj.call(e,r)&&(n[r]=e[r]);return n};function yj(e,t,n){const r=mr(e,t,n),{label:o,description:s,error:i,required:u,classNames:d,styles:p,className:h,unstyled:g,__staticSelector:v,sx:b,errorProps:S,labelProps:x,descriptionProps:C,wrapperProps:_,id:k,size:P,style:I,inputContainer:E,inputWrapperOrder:O,withAsterisk:R,variant:D}=r,T=JV(r,["label","description","error","required","classNames","styles","className","unstyled","__staticSelector","sx","errorProps","labelProps","descriptionProps","wrapperProps","id","size","style","inputContainer","inputWrapperOrder","withAsterisk","variant"]),B=I1(k),{systemStyles:W,rest:J}=xh(T),F=lf({label:o,description:s,error:i,required:u,classNames:d,className:h,__staticSelector:v,sx:b,errorProps:S,labelProps:x,descriptionProps:C,unstyled:g,styles:p,id:B,size:P,style:I,inputContainer:E,inputWrapperOrder:O,withAsterisk:R,variant:D},_);return XV(lf({},J),{classNames:d,styles:p,unstyled:g,wrapperProps:lf(lf({},F),W),inputProps:{required:u,classNames:d,styles:p,unstyled:g,id:B,size:P,__staticSelector:v,error:i,variant:D}})}var ZV=eo((e,t,{size:n})=>({label:{display:"inline-block",fontSize:Tt({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 eU=ZV;var tU=Object.defineProperty,Cp=Object.getOwnPropertySymbols,bj=Object.prototype.hasOwnProperty,xj=Object.prototype.propertyIsEnumerable,SS=(e,t,n)=>t in e?tU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nU=(e,t)=>{for(var n in t||(t={}))bj.call(t,n)&&SS(e,n,t[n]);if(Cp)for(var n of Cp(t))xj.call(t,n)&&SS(e,n,t[n]);return e},rU=(e,t)=>{var n={};for(var r in e)bj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Cp)for(var r of Cp(e))t.indexOf(r)<0&&xj.call(e,r)&&(n[r]=e[r]);return n};const oU={labelElement:"label",size:"sm"},$1=f.forwardRef((e,t)=>{const n=mr("InputLabel",oU,e),{labelElement:r,children:o,required:s,size:i,classNames:u,styles:d,unstyled:p,className:h,htmlFor:g,__staticSelector:v,variant:b,onMouseDown:S}=n,x=rU(n,["labelElement","children","required","size","classNames","styles","unstyled","className","htmlFor","__staticSelector","variant","onMouseDown"]),{classes:C,cx:_}=eU(null,{name:["InputWrapper",v],classNames:u,styles:d,unstyled:p,variant:b,size:i});return z.createElement(bo,nU({component:r,ref:t,className:_(C.label,h),htmlFor:r==="label"?g:void 0,onMouseDown:k=>{S==null||S(k),!k.defaultPrevented&&k.detail>1&&k.preventDefault()}},x),o,s&&z.createElement("span",{className:C.required,"aria-hidden":!0}," *"))});$1.displayName="@mantine/core/InputLabel";var sU=eo((e,t,{size:n})=>({error:{wordBreak:"break-word",color:e.fn.variant({variant:"filled",color:"red"}).background,fontSize:`calc(${Tt({size:n,sizes:e.fontSizes})} - ${ze(2)})`,lineHeight:1.2,display:"block"}}));const aU=sU;var iU=Object.defineProperty,_p=Object.getOwnPropertySymbols,wj=Object.prototype.hasOwnProperty,Sj=Object.prototype.propertyIsEnumerable,CS=(e,t,n)=>t in e?iU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lU=(e,t)=>{for(var n in t||(t={}))wj.call(t,n)&&CS(e,n,t[n]);if(_p)for(var n of _p(t))Sj.call(t,n)&&CS(e,n,t[n]);return e},cU=(e,t)=>{var n={};for(var r in e)wj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&_p)for(var r of _p(e))t.indexOf(r)<0&&Sj.call(e,r)&&(n[r]=e[r]);return n};const uU={size:"sm"},z1=f.forwardRef((e,t)=>{const n=mr("InputError",uU,e),{children:r,className:o,classNames:s,styles:i,unstyled:u,size:d,__staticSelector:p,variant:h}=n,g=cU(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=aU(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:u,variant:h,size:d});return z.createElement(Fl,lU({className:b(v.error,o),ref:t},g),r)});z1.displayName="@mantine/core/InputError";var dU=eo((e,t,{size:n})=>({description:{wordBreak:"break-word",color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],fontSize:`calc(${Tt({size:n,sizes:e.fontSizes})} - ${ze(2)})`,lineHeight:1.2,display:"block"}}));const fU=dU;var pU=Object.defineProperty,kp=Object.getOwnPropertySymbols,Cj=Object.prototype.hasOwnProperty,_j=Object.prototype.propertyIsEnumerable,_S=(e,t,n)=>t in e?pU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hU=(e,t)=>{for(var n in t||(t={}))Cj.call(t,n)&&_S(e,n,t[n]);if(kp)for(var n of kp(t))_j.call(t,n)&&_S(e,n,t[n]);return e},mU=(e,t)=>{var n={};for(var r in e)Cj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&kp)for(var r of kp(e))t.indexOf(r)<0&&_j.call(e,r)&&(n[r]=e[r]);return n};const gU={size:"sm"},L1=f.forwardRef((e,t)=>{const n=mr("InputDescription",gU,e),{children:r,className:o,classNames:s,styles:i,unstyled:u,size:d,__staticSelector:p,variant:h}=n,g=mU(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=fU(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:u,variant:h,size:d});return z.createElement(Fl,hU({color:"dimmed",className:b(v.description,o),ref:t,unstyled:u},g),r)});L1.displayName="@mantine/core/InputDescription";const kj=f.createContext({offsetBottom:!1,offsetTop:!1,describedBy:void 0}),vU=kj.Provider,yU=()=>f.useContext(kj);function bU(e,{hasDescription:t,hasError:n}){const r=e.findIndex(d=>d==="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 xU=Object.defineProperty,wU=Object.defineProperties,SU=Object.getOwnPropertyDescriptors,kS=Object.getOwnPropertySymbols,CU=Object.prototype.hasOwnProperty,_U=Object.prototype.propertyIsEnumerable,jS=(e,t,n)=>t in e?xU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,kU=(e,t)=>{for(var n in t||(t={}))CU.call(t,n)&&jS(e,n,t[n]);if(kS)for(var n of kS(t))_U.call(t,n)&&jS(e,n,t[n]);return e},jU=(e,t)=>wU(e,SU(t)),PU=eo(e=>({root:jU(kU({},e.fn.fontStyles()),{lineHeight:e.lineHeight})}));const IU=PU;var EU=Object.defineProperty,OU=Object.defineProperties,MU=Object.getOwnPropertyDescriptors,jp=Object.getOwnPropertySymbols,jj=Object.prototype.hasOwnProperty,Pj=Object.prototype.propertyIsEnumerable,PS=(e,t,n)=>t in e?EU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$a=(e,t)=>{for(var n in t||(t={}))jj.call(t,n)&&PS(e,n,t[n]);if(jp)for(var n of jp(t))Pj.call(t,n)&&PS(e,n,t[n]);return e},IS=(e,t)=>OU(e,MU(t)),RU=(e,t)=>{var n={};for(var r in e)jj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&jp)for(var r of jp(e))t.indexOf(r)<0&&Pj.call(e,r)&&(n[r]=e[r]);return n};const DU={labelElement:"label",size:"sm",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},Ij=f.forwardRef((e,t)=>{const n=mr("InputWrapper",DU,e),{className:r,label:o,children:s,required:i,id:u,error:d,description:p,labelElement:h,labelProps:g,descriptionProps:v,errorProps:b,classNames:S,styles:x,size:C,inputContainer:_,__staticSelector:k,unstyled:P,inputWrapperOrder:I,withAsterisk:E,variant:O}=n,R=RU(n,["className","label","children","required","id","error","description","labelElement","labelProps","descriptionProps","errorProps","classNames","styles","size","inputContainer","__staticSelector","unstyled","inputWrapperOrder","withAsterisk","variant"]),{classes:D,cx:T}=IU(null,{classNames:S,styles:x,name:["InputWrapper",k],unstyled:P,variant:O,size:C}),B={classNames:S,styles:x,unstyled:P,size:C,variant:O,__staticSelector:k},W=typeof E=="boolean"?E:i,J=u?`${u}-error`:b==null?void 0:b.id,F=u?`${u}-description`:v==null?void 0:v.id,G=`${!!d&&typeof d!="boolean"?J:""} ${p?F:""}`,K=G.trim().length>0?G.trim():void 0,M=o&&z.createElement($1,$a($a({key:"label",labelElement:h,id:u?`${u}-label`:void 0,htmlFor:u,required:W},B),g),o),U=p&&z.createElement(L1,IS($a($a({key:"description"},v),B),{size:(v==null?void 0:v.size)||B.size,id:(v==null?void 0:v.id)||F}),p),V=z.createElement(f.Fragment,{key:"input"},_(s)),ee=typeof d!="boolean"&&d&&z.createElement(z1,IS($a($a({},b),B),{size:(b==null?void 0:b.size)||B.size,key:"error",id:(b==null?void 0:b.id)||J}),d),ie=I.map(xe=>{switch(xe){case"label":return M;case"input":return V;case"description":return U;case"error":return ee;default:return null}});return z.createElement(vU,{value:$a({describedBy:K},bU(I,{hasDescription:!!U,hasError:!!ee}))},z.createElement(bo,$a({className:T(D.root,r),ref:t},R),ie))});Ij.displayName="@mantine/core/InputWrapper";var AU=Object.defineProperty,Pp=Object.getOwnPropertySymbols,Ej=Object.prototype.hasOwnProperty,Oj=Object.prototype.propertyIsEnumerable,ES=(e,t,n)=>t in e?AU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,TU=(e,t)=>{for(var n in t||(t={}))Ej.call(t,n)&&ES(e,n,t[n]);if(Pp)for(var n of Pp(t))Oj.call(t,n)&&ES(e,n,t[n]);return e},NU=(e,t)=>{var n={};for(var r in e)Ej.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Pp)for(var r of Pp(e))t.indexOf(r)<0&&Oj.call(e,r)&&(n[r]=e[r]);return n};const $U={},Mj=f.forwardRef((e,t)=>{const n=mr("InputPlaceholder",$U,e),{sx:r}=n,o=NU(n,["sx"]);return z.createElement(bo,TU({component:"span",sx:[s=>s.fn.placeholderStyles(),...M_(r)],ref:t},o))});Mj.displayName="@mantine/core/InputPlaceholder";var zU=Object.defineProperty,LU=Object.defineProperties,BU=Object.getOwnPropertyDescriptors,OS=Object.getOwnPropertySymbols,FU=Object.prototype.hasOwnProperty,HU=Object.prototype.propertyIsEnumerable,MS=(e,t,n)=>t in e?zU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,cf=(e,t)=>{for(var n in t||(t={}))FU.call(t,n)&&MS(e,n,t[n]);if(OS)for(var n of OS(t))HU.call(t,n)&&MS(e,n,t[n]);return e},Og=(e,t)=>LU(e,BU(t));const Bo={xs:ze(30),sm:ze(36),md:ze(42),lg:ze(50),xl:ze(60)},WU=["default","filled","unstyled"];function VU({theme:e,variant:t}){return WU.includes(t)?t==="default"?{border:`${ze(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:`${ze(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:ze(28),outline:0,"&:focus, &:focus-within":{outline:"none",borderColor:"transparent"},"&:disabled":{backgroundColor:"transparent","&:focus, &:focus-within":{outline:"none",borderColor:"transparent"}}}:null}var UU=eo((e,{multiline:t,radius:n,invalid:r,rightSectionWidth:o,withRightSection:s,iconWidth:i,offsetBottom:u,offsetTop:d,pointer:p},{variant:h,size:g})=>{const v=e.fn.variant({variant:"filled",color:"red"}).background,b=h==="default"||h==="filled"?{minHeight:Tt({size:g,sizes:Bo}),paddingLeft:`calc(${Tt({size:g,sizes:Bo})} / 3)`,paddingRight:s?o||Tt({size:g,sizes:Bo}):`calc(${Tt({size:g,sizes:Bo})} / 3)`,borderRadius:e.fn.radius(n)}:h==="unstyled"&&s?{paddingRight:o||Tt({size:g,sizes:Bo})}:null;return{wrapper:{position:"relative",marginTop:d?`calc(${e.spacing.xs} / 2)`:void 0,marginBottom:u?`calc(${e.spacing.xs} / 2)`:void 0,"&:has(input:disabled)":{"& .mantine-Input-rightSection":{display:"none"}}},input:Og(cf(cf(Og(cf({},e.fn.fontStyles()),{height:t?h==="unstyled"?void 0:"auto":Tt({size:g,sizes:Bo}),WebkitTapHighlightColor:"transparent",lineHeight:t?e.lineHeight:`calc(${Tt({size:g,sizes:Bo})} - ${ze(2)})`,appearance:"none",resize:"none",boxSizing:"border-box",fontSize:Tt({size:g,sizes:e.fontSizes}),width:"100%",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,display:"block",textAlign:"left",cursor:p?"pointer":void 0}),VU({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"?ze(i):Tt({size:g,sizes:Bo})},"&::placeholder":Og(cf({},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?ze(i):Tt({size:g,sizes:Bo}),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||Tt({size:g,sizes:Bo})}}});const GU=UU;var qU=Object.defineProperty,KU=Object.defineProperties,QU=Object.getOwnPropertyDescriptors,Ip=Object.getOwnPropertySymbols,Rj=Object.prototype.hasOwnProperty,Dj=Object.prototype.propertyIsEnumerable,RS=(e,t,n)=>t in e?qU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uf=(e,t)=>{for(var n in t||(t={}))Rj.call(t,n)&&RS(e,n,t[n]);if(Ip)for(var n of Ip(t))Dj.call(t,n)&&RS(e,n,t[n]);return e},DS=(e,t)=>KU(e,QU(t)),YU=(e,t)=>{var n={};for(var r in e)Rj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ip)for(var r of Ip(e))t.indexOf(r)<0&&Dj.call(e,r)&&(n[r]=e[r]);return n};const XU={size:"sm",variant:"default"},Ui=f.forwardRef((e,t)=>{const n=mr("Input",XU,e),{className:r,error:o,required:s,disabled:i,variant:u,icon:d,style:p,rightSectionWidth:h,iconWidth:g,rightSection:v,rightSectionProps:b,radius:S,size:x,wrapperProps:C,classNames:_,styles:k,__staticSelector:P,multiline:I,sx:E,unstyled:O,pointer:R}=n,D=YU(n,["className","error","required","disabled","variant","icon","style","rightSectionWidth","iconWidth","rightSection","rightSectionProps","radius","size","wrapperProps","classNames","styles","__staticSelector","multiline","sx","unstyled","pointer"]),{offsetBottom:T,offsetTop:B,describedBy:W}=yU(),{classes:J,cx:F}=GU({radius:S,multiline:I,invalid:!!o,rightSectionWidth:h?ze(h):void 0,iconWidth:g,withRightSection:!!v,offsetBottom:T,offsetTop:B,pointer:R},{classNames:_,styles:k,name:["Input",P],unstyled:O,variant:u,size:x}),{systemStyles:N,rest:G}=xh(D);return z.createElement(bo,uf(uf({className:F(J.wrapper,r),sx:E,style:p},N),C),d&&z.createElement("div",{className:J.icon},d),z.createElement(bo,DS(uf({component:"input"},G),{ref:t,required:s,"aria-invalid":!!o,"aria-describedby":W,disabled:i,"data-disabled":i||void 0,"data-with-icon":!!d||void 0,"data-invalid":!!o||void 0,className:J.input})),v&&z.createElement("div",DS(uf({},b),{className:J.rightSection}),v))});Ui.displayName="@mantine/core/Input";Ui.Wrapper=Ij;Ui.Label=$1;Ui.Description=L1;Ui.Error=z1;Ui.Placeholder=Mj;const Ul=Ui;var JU=Object.defineProperty,Ep=Object.getOwnPropertySymbols,Aj=Object.prototype.hasOwnProperty,Tj=Object.prototype.propertyIsEnumerable,AS=(e,t,n)=>t in e?JU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,TS=(e,t)=>{for(var n in t||(t={}))Aj.call(t,n)&&AS(e,n,t[n]);if(Ep)for(var n of Ep(t))Tj.call(t,n)&&AS(e,n,t[n]);return e},ZU=(e,t)=>{var n={};for(var r in e)Aj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ep)for(var r of Ep(e))t.indexOf(r)<0&&Tj.call(e,r)&&(n[r]=e[r]);return n};const eG={multiple:!1},Nj=f.forwardRef((e,t)=>{const n=mr("FileButton",eG,e),{onChange:r,children:o,multiple:s,accept:i,name:u,form:d,resetRef:p,disabled:h,capture:g,inputProps:v}=n,b=ZU(n,["onChange","children","multiple","accept","name","form","resetRef","disabled","capture","inputProps"]),S=f.useRef(),x=()=>{!h&&S.current.click()},C=k=>{r(s?Array.from(k.currentTarget.files):k.currentTarget.files[0]||null)};return F_(p,()=>{S.current.value=""}),z.createElement(z.Fragment,null,o(TS({onClick:x},b)),z.createElement("input",TS({style:{display:"none"},type:"file",accept:i,multiple:s,onChange:C,ref:Hu(t,S),name:u,form:d,capture:g},v)))});Nj.displayName="@mantine/core/FileButton";const $j={xs:ze(16),sm:ze(22),md:ze(26),lg:ze(30),xl:ze(36)},tG={xs:ze(10),sm:ze(12),md:ze(14),lg:ze(16),xl:ze(18)};var nG=eo((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:Tt({size:o,sizes:$j}),paddingLeft:`calc(${Tt({size:o,sizes:e.spacing})} / 1.5)`,paddingRight:t||r?Tt({size:o,sizes:e.spacing}):0,fontWeight:500,fontSize:Tt({size:o,sizes:tG}),borderRadius:Tt({size:n,sizes:e.radius}),cursor:t?"not-allowed":"default",userSelect:"none",maxWidth:`calc(100% - ${ze(10)})`},defaultValueRemove:{color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],marginLeft:`calc(${Tt({size:o,sizes:e.spacing})} / 6)`},defaultValueLabel:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}));const rG=nG;var oG=Object.defineProperty,Op=Object.getOwnPropertySymbols,zj=Object.prototype.hasOwnProperty,Lj=Object.prototype.propertyIsEnumerable,NS=(e,t,n)=>t in e?oG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,sG=(e,t)=>{for(var n in t||(t={}))zj.call(t,n)&&NS(e,n,t[n]);if(Op)for(var n of Op(t))Lj.call(t,n)&&NS(e,n,t[n]);return e},aG=(e,t)=>{var n={};for(var r in e)zj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Op)for(var r of Op(e))t.indexOf(r)<0&&Lj.call(e,r)&&(n[r]=e[r]);return n};const iG={xs:16,sm:22,md:24,lg:26,xl:30};function Bj(e){var t=e,{label:n,classNames:r,styles:o,className:s,onRemove:i,disabled:u,readOnly:d,size:p,radius:h="sm",variant:g,unstyled:v}=t,b=aG(t,["label","classNames","styles","className","onRemove","disabled","readOnly","size","radius","variant","unstyled"]);const{classes:S,cx:x}=rG({disabled:u,readOnly:d,radius:h},{name:"MultiSelect",classNames:r,styles:o,unstyled:v,size:p,variant:g});return z.createElement("div",sG({className:x(S.defaultValue,s)},b),z.createElement("span",{className:S.defaultValueLabel},n),!u&&!d&&z.createElement(xk,{"aria-hidden":!0,onMouseDown:i,size:iG[p],radius:2,color:"blue",variant:"transparent",iconSize:"70%",className:S.defaultValueRemove,tabIndex:-1,unstyled:v}))}Bj.displayName="@mantine/core/MultiSelect/DefaultValue";function lG({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,disableSelectedItemFiltering:i}){if(!t&&s.length===0)return e;if(!t){const d=[];for(let p=0;ph===e[p].value&&!e[p].disabled))&&d.push(e[p]);return d}const u=[];for(let d=0;dp===e[d].value&&!e[d].disabled),e[d])&&u.push(e[d]),!(u.length>=n));d+=1);return u}var cG=Object.defineProperty,Mp=Object.getOwnPropertySymbols,Fj=Object.prototype.hasOwnProperty,Hj=Object.prototype.propertyIsEnumerable,$S=(e,t,n)=>t in e?cG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zS=(e,t)=>{for(var n in t||(t={}))Fj.call(t,n)&&$S(e,n,t[n]);if(Mp)for(var n of Mp(t))Hj.call(t,n)&&$S(e,n,t[n]);return e},uG=(e,t)=>{var n={};for(var r in e)Fj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Mp)for(var r of Mp(e))t.indexOf(r)<0&&Hj.call(e,r)&&(n[r]=e[r]);return n};const dG={xs:ze(14),sm:ze(18),md:ze(20),lg:ze(24),xl:ze(28)};function fG(e){var t=e,{size:n,error:r,style:o}=t,s=uG(t,["size","error","style"]);const i=_a(),u=Tt({size:n,sizes:dG});return z.createElement("svg",zS({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:zS({color:r?i.colors.red[6]:i.colors.gray[6],width:u,height:u},o),"data-chevron":!0},s),z.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 pG=Object.defineProperty,hG=Object.defineProperties,mG=Object.getOwnPropertyDescriptors,LS=Object.getOwnPropertySymbols,gG=Object.prototype.hasOwnProperty,vG=Object.prototype.propertyIsEnumerable,BS=(e,t,n)=>t in e?pG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yG=(e,t)=>{for(var n in t||(t={}))gG.call(t,n)&&BS(e,n,t[n]);if(LS)for(var n of LS(t))vG.call(t,n)&&BS(e,n,t[n]);return e},bG=(e,t)=>hG(e,mG(t));function Wj({shouldClear:e,clearButtonProps:t,onClear:n,size:r,error:o}){return e?z.createElement(xk,bG(yG({},t),{variant:"transparent",onClick:n,size:r,onMouseDown:s=>s.preventDefault()})):z.createElement(fG,{error:o,size:r})}Wj.displayName="@mantine/core/SelectRightSection";var xG=Object.defineProperty,wG=Object.defineProperties,SG=Object.getOwnPropertyDescriptors,Rp=Object.getOwnPropertySymbols,Vj=Object.prototype.hasOwnProperty,Uj=Object.prototype.propertyIsEnumerable,FS=(e,t,n)=>t in e?xG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mg=(e,t)=>{for(var n in t||(t={}))Vj.call(t,n)&&FS(e,n,t[n]);if(Rp)for(var n of Rp(t))Uj.call(t,n)&&FS(e,n,t[n]);return e},HS=(e,t)=>wG(e,SG(t)),CG=(e,t)=>{var n={};for(var r in e)Vj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Rp)for(var r of Rp(e))t.indexOf(r)<0&&Uj.call(e,r)&&(n[r]=e[r]);return n};function Gj(e){var t=e,{styles:n,rightSection:r,rightSectionWidth:o,theme:s}=t,i=CG(t,["styles","rightSection","rightSectionWidth","theme"]);if(r)return{rightSection:r,rightSectionWidth:o,styles:n};const u=typeof n=="function"?n(s):n;return{rightSection:!i.readOnly&&!(i.disabled&&i.shouldClear)&&z.createElement(Wj,Mg({},i)),styles:HS(Mg({},u),{rightSection:HS(Mg({},u==null?void 0:u.rightSection),{pointerEvents:i.shouldClear?void 0:"none"})})}}var _G=Object.defineProperty,kG=Object.defineProperties,jG=Object.getOwnPropertyDescriptors,WS=Object.getOwnPropertySymbols,PG=Object.prototype.hasOwnProperty,IG=Object.prototype.propertyIsEnumerable,VS=(e,t,n)=>t in e?_G(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,EG=(e,t)=>{for(var n in t||(t={}))PG.call(t,n)&&VS(e,n,t[n]);if(WS)for(var n of WS(t))IG.call(t,n)&&VS(e,n,t[n]);return e},OG=(e,t)=>kG(e,jG(t)),MG=eo((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(${Tt({size:n,sizes:Bo})} - ${ze(2)})`,display:"flex",alignItems:"center",flexWrap:"wrap",marginLeft:`calc(-${e.spacing.xs} / 2)`,boxSizing:"border-box","&[data-clearable]":{marginRight:Tt({size:n,sizes:Bo})}},value:{margin:`calc(${e.spacing.xs} / 2 - ${ze(2)}) calc(${e.spacing.xs} / 2)`},searchInput:OG(EG({},e.fn.fontStyles()),{flex:1,minWidth:ze(60),backgroundColor:"transparent",border:0,outline:0,fontSize:Tt({size:n,sizes:e.fontSizes}),padding:0,marginLeft:`calc(${e.spacing.xs} / 2)`,appearance:"none",color:"inherit",maxHeight:Tt({size:n,sizes:$j}),"&::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 RG=MG;var DG=Object.defineProperty,AG=Object.defineProperties,TG=Object.getOwnPropertyDescriptors,Dp=Object.getOwnPropertySymbols,qj=Object.prototype.hasOwnProperty,Kj=Object.prototype.propertyIsEnumerable,US=(e,t,n)=>t in e?DG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gl=(e,t)=>{for(var n in t||(t={}))qj.call(t,n)&&US(e,n,t[n]);if(Dp)for(var n of Dp(t))Kj.call(t,n)&&US(e,n,t[n]);return e},GS=(e,t)=>AG(e,TG(t)),NG=(e,t)=>{var n={};for(var r in e)qj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Dp)for(var r of Dp(e))t.indexOf(r)<0&&Kj.call(e,r)&&(n[r]=e[r]);return n};function $G(e,t,n){return t?!1:n.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function zG(e,t){return!!e&&!t.some(n=>n.value.toLowerCase()===e.toLowerCase())}function qS(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 LG={size:"sm",valueComponent:Bj,itemComponent:O1,transitionProps:{transition:"fade",duration:0},maxDropdownHeight:220,shadow:"sm",searchable:!1,filter:$G,limit:1/0,clearSearchOnChange:!0,clearable:!1,clearSearchOnBlur:!1,disabled:!1,initiallyOpened:!1,creatable:!1,shouldCreate:zG,switchDirectionOnFlip:!1,zIndex:j1("popover"),selectOnBlur:!1,positionDependencies:[],dropdownPosition:"flip"},Qj=f.forwardRef((e,t)=>{const n=mr("MultiSelect",LG,e),{className:r,style:o,required:s,label:i,description:u,size:d,error:p,classNames:h,styles:g,wrapperProps:v,value:b,defaultValue:S,data:x,onChange:C,valueComponent:_,itemComponent:k,id:P,transitionProps:I,maxDropdownHeight:E,shadow:O,nothingFound:R,onFocus:D,onBlur:T,searchable:B,placeholder:W,filter:J,limit:F,clearSearchOnChange:N,clearable:G,clearSearchOnBlur:K,variant:M,onSearchChange:U,searchValue:V,disabled:ee,initiallyOpened:ie,radius:xe,icon:me,rightSection:ae,rightSectionWidth:te,creatable:H,getCreateLabel:re,shouldCreate:pe,onCreate:ne,sx:ve,dropdownComponent:de,onDropdownClose:Ce,onDropdownOpen:Re,maxSelectedValues:ge,withinPortal:_e,portalProps:We,switchDirectionOnFlip:Le,zIndex:Ue,selectOnBlur:jt,name:vt,dropdownPosition:jn,errorProps:Pt,labelProps:bt,descriptionProps:be,form:Ae,positionDependencies:Et,onKeyDown:Ft,unstyled:Wt,inputContainer:_n,inputWrapperOrder:In,readOnly:ln,withAsterisk:Cr,clearButtonProps:vn,hoverOnSearchChange:sr,disableSelectedItemFiltering:Ie}=n,it=NG(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:Xe,cx:ot,theme:Nt}=RG({invalid:!!p},{name:"MultiSelect",classNames:h,styles:g,unstyled:Wt,size:d,variant:M}),{systemStyles:ur,rest:yn}=xh(it),bn=f.useRef(),$r=f.useRef({}),dr=I1(P),[An,Tn]=f.useState(ie),[Nn,Rr]=f.useState(-1),[_o,zr]=f.useState("column"),[Lr,es]=hu({value:V,defaultValue:"",finalValue:void 0,onChange:U}),[Dr,ks]=f.useState(!1),{scrollIntoView:ts,targetRef:Xs,scrollableRef:js}=W_({duration:0,offset:5,cancelable:!1,isList:!0}),q=H&&typeof re=="function";let Y=null;const le=x.map(Oe=>typeof Oe=="string"?{label:Oe,value:Oe}:Oe),we=R_({data:le}),[ce,nt]=hu({value:qS(b,x),defaultValue:qS(S,x),finalValue:[],onChange:C}),Je=f.useRef(!!ge&&ge{if(!ln){const ut=ce.filter(_t=>_t!==Oe);nt(ut),ge&&ut.length{es(Oe.currentTarget.value),!ee&&!Je.current&&B&&Tn(!0)},dt=Oe=>{typeof D=="function"&&D(Oe),!ee&&!Je.current&&B&&Tn(!0)},De=lG({data:we,searchable:B,searchValue:Lr,limit:F,filter:J,value:ce,disableSelectedItemFiltering:Ie});q&&pe(Lr,we)&&(Y=re(Lr),De.push({label:Lr,value:Lr,creatable:!0}));const ye=Math.min(Nn,De.length-1),Fe=(Oe,ut,_t)=>{let At=Oe;for(;_t(At);)if(At=ut(At),!De[At].disabled)return At;return Oe};ps(()=>{Rr(sr&&Lr?0:-1)},[Lr,sr]),ps(()=>{!ee&&ce.length>x.length&&Tn(!1),ge&&ce.length=ge&&(Je.current=!0,Tn(!1))},[ce]);const ht=Oe=>{if(!ln)if(N&&es(""),ce.includes(Oe.value))Dt(Oe.value);else{if(Oe.creatable&&typeof ne=="function"){const ut=ne(Oe.value);typeof ut<"u"&&ut!==null&&nt(typeof ut=="string"?[...ce,ut]:[...ce,ut.value])}else nt([...ce,Oe.value]);ce.length===ge-1&&(Je.current=!0,Tn(!1)),De.length===1&&Tn(!1)}},xt=Oe=>{typeof T=="function"&&T(Oe),jt&&De[ye]&&An&&ht(De[ye]),K&&es(""),Tn(!1)},Ot=Oe=>{if(Dr||(Ft==null||Ft(Oe),ln)||Oe.key!=="Backspace"&&ge&&Je.current)return;const ut=_o==="column",_t=()=>{Rr(xn=>{var zt;const tn=Fe(xn,Jt=>Jt+1,Jt=>Jt{Rr(xn=>{var zt;const tn=Fe(xn,Jt=>Jt-1,Jt=>Jt>0);return An&&(Xs.current=$r.current[(zt=De[tn])==null?void 0:zt.value],ts({alignment:ut?"start":"end"})),tn})};switch(Oe.key){case"ArrowUp":{Oe.preventDefault(),Tn(!0),ut?At():_t();break}case"ArrowDown":{Oe.preventDefault(),Tn(!0),ut?_t():At();break}case"Enter":{Oe.preventDefault(),De[ye]&&An?ht(De[ye]):Tn(!0);break}case" ":{B||(Oe.preventDefault(),De[ye]&&An?ht(De[ye]):Tn(!0));break}case"Backspace":{ce.length>0&&Lr.length===0&&(nt(ce.slice(0,-1)),Tn(!0),ge&&(Je.current=!1));break}case"Home":{if(!B){Oe.preventDefault(),An||Tn(!0);const xn=De.findIndex(zt=>!zt.disabled);Rr(xn),ts({alignment:ut?"end":"start"})}break}case"End":{if(!B){Oe.preventDefault(),An||Tn(!0);const xn=De.map(zt=>!!zt.disabled).lastIndexOf(!1);Rr(xn),ts({alignment:ut?"end":"start"})}break}case"Escape":Tn(!1)}},Lt=ce.map(Oe=>{let ut=we.find(_t=>_t.value===Oe&&!_t.disabled);return!ut&&q&&(ut={value:Oe,label:Oe}),ut}).filter(Oe=>!!Oe).map((Oe,ut)=>z.createElement(_,GS(gl({},Oe),{variant:M,disabled:ee,className:Xe.value,readOnly:ln,onRemove:_t=>{_t.preventDefault(),_t.stopPropagation(),Dt(Oe.value)},key:Oe.value,size:d,styles:g,classNames:h,radius:xe,index:ut}))),Kt=Oe=>ce.includes(Oe),qt=()=>{var Oe;es(""),nt([]),(Oe=bn.current)==null||Oe.focus(),ge&&(Je.current=!1)},$t=!ln&&(De.length>0?An:An&&!!R);return ps(()=>{const Oe=$t?Re:Ce;typeof Oe=="function"&&Oe()},[$t]),z.createElement(Ul.Wrapper,gl(gl({required:s,id:dr,label:i,error:p,description:u,size:d,className:r,style:o,classNames:h,styles:g,__staticSelector:"MultiSelect",sx:ve,errorProps:Pt,descriptionProps:be,labelProps:bt,inputContainer:_n,inputWrapperOrder:In,unstyled:Wt,withAsterisk:Cr,variant:M},ur),v),z.createElement(Xa,{opened:$t,transitionProps:I,shadow:"sm",withinPortal:_e,portalProps:We,__staticSelector:"MultiSelect",onDirectionChange:zr,switchDirectionOnFlip:Le,zIndex:Ue,dropdownPosition:jn,positionDependencies:[...Et,Lr],classNames:h,styles:g,unstyled:Wt,variant:M},z.createElement(Xa.Target,null,z.createElement("div",{className:Xe.wrapper,role:"combobox","aria-haspopup":"listbox","aria-owns":An&&$t?`${dr}-items`:null,"aria-controls":dr,"aria-expanded":An,onMouseLeave:()=>Rr(-1),tabIndex:-1},z.createElement("input",{type:"hidden",name:vt,value:ce.join(","),form:Ae,disabled:ee}),z.createElement(Ul,gl({__staticSelector:"MultiSelect",style:{overflow:"hidden"},component:"div",multiline:!0,size:d,variant:M,disabled:ee,error:p,required:s,radius:xe,icon:me,unstyled:Wt,onMouseDown:Oe=>{var ut;Oe.preventDefault(),!ee&&!Je.current&&Tn(!An),(ut=bn.current)==null||ut.focus()},classNames:GS(gl({},h),{input:ot({[Xe.input]:!B},h==null?void 0:h.input)})},Gj({theme:Nt,rightSection:ae,rightSectionWidth:te,styles:g,size:d,shouldClear:G&&ce.length>0,onClear:qt,error:p,disabled:ee,clearButtonProps:vn,readOnly:ln})),z.createElement("div",{className:Xe.values,"data-clearable":G||void 0},Lt,z.createElement("input",gl({ref:Hu(t,bn),type:"search",id:dr,className:ot(Xe.searchInput,{[Xe.searchInputPointer]:!B,[Xe.searchInputInputHidden]:!An&&ce.length>0||!B&&ce.length>0,[Xe.searchInputEmpty]:ce.length===0}),onKeyDown:Ot,value:Lr,onChange:st,onFocus:dt,onBlur:xt,readOnly:!B||Je.current||ln,placeholder:ce.length===0?W:void 0,disabled:ee,"data-mantine-stop-propagation":An,autoComplete:"off",onCompositionStart:()=>ks(!0),onCompositionEnd:()=>ks(!1)},yn)))))),z.createElement(Xa.Dropdown,{component:de||_h,maxHeight:E,direction:_o,id:dr,innerRef:js,__staticSelector:"MultiSelect",classNames:h,styles:g},z.createElement(E1,{data:De,hovered:ye,classNames:h,styles:g,uuid:dr,__staticSelector:"MultiSelect",onItemHover:Rr,onItemSelect:ht,itemsRefs:$r,itemComponent:k,size:d,nothingFound:R,isItemSelected:Kt,creatable:H&&!!Y,createLabel:Y,unstyled:Wt,variant:M}))))});Qj.displayName="@mantine/core/MultiSelect";var BG=Object.defineProperty,FG=Object.defineProperties,HG=Object.getOwnPropertyDescriptors,Ap=Object.getOwnPropertySymbols,Yj=Object.prototype.hasOwnProperty,Xj=Object.prototype.propertyIsEnumerable,KS=(e,t,n)=>t in e?BG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rg=(e,t)=>{for(var n in t||(t={}))Yj.call(t,n)&&KS(e,n,t[n]);if(Ap)for(var n of Ap(t))Xj.call(t,n)&&KS(e,n,t[n]);return e},WG=(e,t)=>FG(e,HG(t)),VG=(e,t)=>{var n={};for(var r in e)Yj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ap)for(var r of Ap(e))t.indexOf(r)<0&&Xj.call(e,r)&&(n[r]=e[r]);return n};const UG={type:"text",size:"sm",__staticSelector:"TextInput"},Jj=f.forwardRef((e,t)=>{const n=yj("TextInput",UG,e),{inputProps:r,wrapperProps:o}=n,s=VG(n,["inputProps","wrapperProps"]);return z.createElement(Ul.Wrapper,Rg({},o),z.createElement(Ul,WG(Rg(Rg({},r),s),{ref:t})))});Jj.displayName="@mantine/core/TextInput";function GG({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,filterDataOnExactSearchMatch:i}){if(!t)return e;const u=s!=null&&e.find(p=>p.value===s)||null;if(u&&!i&&(u==null?void 0:u.label)===r){if(n){if(n>=e.length)return e;const p=e.indexOf(u),h=p+n,g=h-e.length;return g>0?e.slice(p-g):e.slice(p,h)}return e}const d=[];for(let p=0;p=n));p+=1);return d}var qG=eo(()=>({input:{"&:not(:disabled)":{cursor:"pointer","&::selection":{backgroundColor:"transparent"}}}}));const KG=qG;var QG=Object.defineProperty,YG=Object.defineProperties,XG=Object.getOwnPropertyDescriptors,Tp=Object.getOwnPropertySymbols,Zj=Object.prototype.hasOwnProperty,eP=Object.prototype.propertyIsEnumerable,QS=(e,t,n)=>t in e?QG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Nc=(e,t)=>{for(var n in t||(t={}))Zj.call(t,n)&&QS(e,n,t[n]);if(Tp)for(var n of Tp(t))eP.call(t,n)&&QS(e,n,t[n]);return e},Dg=(e,t)=>YG(e,XG(t)),JG=(e,t)=>{var n={};for(var r in e)Zj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Tp)for(var r of Tp(e))t.indexOf(r)<0&&eP.call(e,r)&&(n[r]=e[r]);return n};function ZG(e,t){return t.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function eq(e,t){return!!e&&!t.some(n=>n.label.toLowerCase()===e.toLowerCase())}const tq={required:!1,size:"sm",shadow:"sm",itemComponent:O1,transitionProps:{transition:"fade",duration:0},initiallyOpened:!1,filter:ZG,maxDropdownHeight:220,searchable:!1,clearable:!1,limit:1/0,disabled:!1,creatable:!1,shouldCreate:eq,selectOnBlur:!1,switchDirectionOnFlip:!1,filterDataOnExactSearchMatch:!1,zIndex:j1("popover"),positionDependencies:[],dropdownPosition:"flip"},B1=f.forwardRef((e,t)=>{const n=yj("Select",tq,e),{inputProps:r,wrapperProps:o,shadow:s,data:i,value:u,defaultValue:d,onChange:p,itemComponent:h,onKeyDown:g,onBlur:v,onFocus:b,transitionProps:S,initiallyOpened:x,unstyled:C,classNames:_,styles:k,filter:P,maxDropdownHeight:I,searchable:E,clearable:O,nothingFound:R,limit:D,disabled:T,onSearchChange:B,searchValue:W,rightSection:J,rightSectionWidth:F,creatable:N,getCreateLabel:G,shouldCreate:K,selectOnBlur:M,onCreate:U,dropdownComponent:V,onDropdownClose:ee,onDropdownOpen:ie,withinPortal:xe,portalProps:me,switchDirectionOnFlip:ae,zIndex:te,name:H,dropdownPosition:re,allowDeselect:pe,placeholder:ne,filterDataOnExactSearchMatch:ve,form:de,positionDependencies:Ce,readOnly:Re,clearButtonProps:ge,hoverOnSearchChange:_e}=n,We=JG(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:Le,cx:Ue,theme:jt}=KG(),[vt,jn]=f.useState(x),[Pt,bt]=f.useState(-1),be=f.useRef(),Ae=f.useRef({}),[Et,Ft]=f.useState("column"),Wt=Et==="column",{scrollIntoView:_n,targetRef:In,scrollableRef:ln}=W_({duration:0,offset:5,cancelable:!1,isList:!0}),Cr=pe===void 0?O:pe,vn=Y=>{if(vt!==Y){jn(Y);const le=Y?ie:ee;typeof le=="function"&&le()}},sr=N&&typeof G=="function";let Ie=null;const it=i.map(Y=>typeof Y=="string"?{label:Y,value:Y}:Y),Xe=R_({data:it}),[ot,Nt,ur]=hu({value:u,defaultValue:d,finalValue:null,onChange:p}),yn=Xe.find(Y=>Y.value===ot),[bn,$r]=hu({value:W,defaultValue:(yn==null?void 0:yn.label)||"",finalValue:void 0,onChange:B}),dr=Y=>{$r(Y),E&&typeof B=="function"&&B(Y)},An=()=>{var Y;Re||(Nt(null),ur||dr(""),(Y=be.current)==null||Y.focus())};f.useEffect(()=>{const Y=Xe.find(le=>le.value===ot);Y?dr(Y.label):(!sr||!ot)&&dr("")},[ot]),f.useEffect(()=>{yn&&(!E||!vt)&&dr(yn.label)},[yn==null?void 0:yn.label]);const Tn=Y=>{if(!Re)if(Cr&&(yn==null?void 0:yn.value)===Y.value)Nt(null),vn(!1);else{if(Y.creatable&&typeof U=="function"){const le=U(Y.value);typeof le<"u"&&le!==null&&Nt(typeof le=="string"?le:le.value)}else Nt(Y.value);ur||dr(Y.label),bt(-1),vn(!1),be.current.focus()}},Nn=GG({data:Xe,searchable:E,limit:D,searchValue:bn,filter:P,filterDataOnExactSearchMatch:ve,value:ot});sr&&K(bn,Nn)&&(Ie=G(bn),Nn.push({label:bn,value:bn,creatable:!0}));const Rr=(Y,le,we)=>{let ce=Y;for(;we(ce);)if(ce=le(ce),!Nn[ce].disabled)return ce;return Y};ps(()=>{bt(_e&&bn?0:-1)},[bn,_e]);const _o=ot?Nn.findIndex(Y=>Y.value===ot):0,zr=!Re&&(Nn.length>0?vt:vt&&!!R),Lr=()=>{bt(Y=>{var le;const we=Rr(Y,ce=>ce-1,ce=>ce>0);return In.current=Ae.current[(le=Nn[we])==null?void 0:le.value],zr&&_n({alignment:Wt?"start":"end"}),we})},es=()=>{bt(Y=>{var le;const we=Rr(Y,ce=>ce+1,ce=>cewindow.setTimeout(()=>{var Y;In.current=Ae.current[(Y=Nn[_o])==null?void 0:Y.value],_n({alignment:Wt?"end":"start"})},50);ps(()=>{zr&&Dr()},[zr]);const ks=Y=>{switch(typeof g=="function"&&g(Y),Y.key){case"ArrowUp":{Y.preventDefault(),vt?Wt?Lr():es():(bt(_o),vn(!0),Dr());break}case"ArrowDown":{Y.preventDefault(),vt?Wt?es():Lr():(bt(_o),vn(!0),Dr());break}case"Home":{if(!E){Y.preventDefault(),vt||vn(!0);const le=Nn.findIndex(we=>!we.disabled);bt(le),zr&&_n({alignment:Wt?"end":"start"})}break}case"End":{if(!E){Y.preventDefault(),vt||vn(!0);const le=Nn.map(we=>!!we.disabled).lastIndexOf(!1);bt(le),zr&&_n({alignment:Wt?"end":"start"})}break}case"Escape":{Y.preventDefault(),vn(!1),bt(-1);break}case" ":{E||(Y.preventDefault(),Nn[Pt]&&vt?Tn(Nn[Pt]):(vn(!0),bt(_o),Dr()));break}case"Enter":E||Y.preventDefault(),Nn[Pt]&&vt&&(Y.preventDefault(),Tn(Nn[Pt]))}},ts=Y=>{typeof v=="function"&&v(Y);const le=Xe.find(we=>we.value===ot);M&&Nn[Pt]&&vt&&Tn(Nn[Pt]),dr((le==null?void 0:le.label)||""),vn(!1)},Xs=Y=>{typeof b=="function"&&b(Y),E&&vn(!0)},js=Y=>{Re||(dr(Y.currentTarget.value),O&&Y.currentTarget.value===""&&Nt(null),bt(-1),vn(!0))},q=()=>{Re||(vn(!vt),ot&&!vt&&bt(_o))};return z.createElement(Ul.Wrapper,Dg(Nc({},o),{__staticSelector:"Select"}),z.createElement(Xa,{opened:zr,transitionProps:S,shadow:s,withinPortal:xe,portalProps:me,__staticSelector:"Select",onDirectionChange:Ft,switchDirectionOnFlip:ae,zIndex:te,dropdownPosition:re,positionDependencies:[...Ce,bn],classNames:_,styles:k,unstyled:C,variant:r.variant},z.createElement(Xa.Target,null,z.createElement("div",{role:"combobox","aria-haspopup":"listbox","aria-owns":zr?`${r.id}-items`:null,"aria-controls":r.id,"aria-expanded":zr,onMouseLeave:()=>bt(-1),tabIndex:-1},z.createElement("input",{type:"hidden",name:H,value:ot||"",form:de,disabled:T}),z.createElement(Ul,Nc(Dg(Nc(Nc({autoComplete:"off",type:"search"},r),We),{ref:Hu(t,be),onKeyDown:ks,__staticSelector:"Select",value:bn,placeholder:ne,onChange:js,"aria-autocomplete":"list","aria-controls":zr?`${r.id}-items`:null,"aria-activedescendant":Pt>=0?`${r.id}-${Pt}`:null,onMouseDown:q,onBlur:ts,onFocus:Xs,readOnly:!E||Re,disabled:T,"data-mantine-stop-propagation":zr,name:null,classNames:Dg(Nc({},_),{input:Ue({[Le.input]:!E},_==null?void 0:_.input)})}),Gj({theme:jt,rightSection:J,rightSectionWidth:F,styles:k,size:r.size,shouldClear:O&&!!yn,onClear:An,error:o.error,clearButtonProps:ge,disabled:T,readOnly:Re}))))),z.createElement(Xa.Dropdown,{component:V||_h,maxHeight:I,direction:Et,id:r.id,innerRef:ln,__staticSelector:"Select",classNames:_,styles:k},z.createElement(E1,{data:Nn,hovered:Pt,classNames:_,styles:k,isItemSelected:Y=>Y===ot,uuid:r.id,__staticSelector:"Select",onItemHover:bt,onItemSelect:Tn,itemsRefs:Ae,itemComponent:h,size:r.size,nothingFound:R,creatable:sr&&!!Ie,createLabel:Ie,"aria-label":o.label,unstyled:C,variant:r.variant}))))});B1.displayName="@mantine/core/Select";const F1=()=>{const[e,t,n,r,o,s,i,u,d,p,h,g,v,b,S,x,C,_,k,P,I,E,O,R,D,T,B,W,J,F,N,G,K,M,U,V,ee,ie]=ec("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"]);return{base50:e,base100:t,base150:n,base200:r,base250:o,base300:s,base350:i,base400:u,base450:d,base500:p,base550:h,base600:g,base650:v,base700:b,base750:S,base800:x,base850:C,base900:_,base950:k,accent50:P,accent100:I,accent150:E,accent200:O,accent250:R,accent300:D,accent350:T,accent400:B,accent450:W,accent500:J,accent550:F,accent600:N,accent650:G,accent700:K,accent750:M,accent800:U,accent850:V,accent900:ee,accent950:ie}},tP=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:u,base800:d,base900:p,accent200:h,accent300:g,accent400:v,accent500:b,accent600:S}=F1(),{colorMode:x}=xs(),[C]=ec("shadows",["dark-lg"]);return f.useCallback(()=>({label:{color:Me(u,r)(x)},separatorLabel:{color:Me(s,s)(x),"::after":{borderTopColor:Me(r,u)(x)}},input:{backgroundColor:Me(e,p)(x),borderWidth:"2px",borderColor:Me(n,d)(x),color:Me(p,t)(x),paddingRight:24,fontWeight:600,"&:hover":{borderColor:Me(r,i)(x)},"&:focus":{borderColor:Me(g,S)(x)},"&:is(:focus, :hover)":{borderColor:Me(o,s)(x)},"&:focus-within":{borderColor:Me(h,S)(x)},"&[data-disabled]":{backgroundColor:Me(r,u)(x),color:Me(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:Me(t,p)(x),color:Me(p,t)(x),button:{color:Me(p,t)(x)},"&:hover":{backgroundColor:Me(r,u)(x),cursor:"pointer"}},dropdown:{backgroundColor:Me(n,d)(x),borderColor:Me(n,d)(x),boxShadow:C},item:{backgroundColor:Me(n,d)(x),color:Me(d,n)(x),padding:6,"&[data-hovered]":{color:Me(p,t)(x),backgroundColor:Me(r,u)(x)},"&[data-active]":{backgroundColor:Me(r,u)(x),"&:hover":{color:Me(p,t)(x),backgroundColor:Me(r,u)(x)}},"&[data-selected]":{backgroundColor:Me(v,S)(x),color:Me(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:Me(b,b)(x),color:Me("white",e)(x)}},"&[data-disabled]":{color:Me(s,i)(x),cursor:"not-allowed"}},rightSection:{width:32,button:{color:Me(p,t)(x)}}}),[h,g,v,b,S,t,n,r,o,e,s,i,u,d,p,C,x])},nq=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,onChange:o,label:s,disabled:i,...u}=e,d=Z(),[p,h]=f.useState(""),g=f.useCallback(x=>{x.shiftKey&&d(Go(!0))},[d]),v=f.useCallback(x=>{x.shiftKey||d(Go(!1))},[d]),b=f.useCallback(x=>{h(""),o&&o(x)},[o]),S=tP();return a.jsx(Cn,{label:n,placement:"top",hasArrow:!0,children:a.jsx(B1,{ref:r,label:s?a.jsx(ws,{isDisabled:i,children:a.jsx(gs,{children:s})}):void 0,disabled:i,searchValue:p,onSearchChange:h,onChange:b,onKeyDown:g,onKeyUp:v,searchable:t,maxDropdownHeight:300,styles:S,...u})})},br=f.memo(nq),nP=f.forwardRef(({label:e,tooltip:t,description:n,disabled:r,...o},s)=>a.jsx(Cn,{label:t,placement:"top",hasArrow:!0,openDelay:500,children:a.jsx($e,{ref:s,...o,children:a.jsxs($e,{children:[a.jsx(Fl,{children:e}),n&&a.jsx(Fl,{size:"xs",color:"base.600",children:n})]})})}));nP.displayName="IAIMantineSelectItemWithTooltip";const ai=f.memo(nP),rq=he([mt],({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},Ke),oq=()=>{const e=Z(),{autoAddBoardId:t}=$(rq),n=f.useRef(null),{boards:r,hasBoards:o}=Xp(void 0,{selectFromResult:({data:i})=>{const u=[{label:"None",value:"none"}];return i==null||i.forEach(({board_id:d,board_name:p})=>{u.push({label:p,value:d})}),{boards:u,hasBoards:u.length>1}}}),s=f.useCallback(i=>{i&&e(Yp(i==="none"?void 0:i))},[e]);return a.jsx(br,{label:"Auto-Add Board",inputRef:n,autoFocus:!0,placeholder:"Select a Board",value:t,data:r,nothingFound:"No matching Boards",itemComponent:ai,disabled:!o,filter:(i,u)=>{var d;return((d=u.label)==null?void 0:d.toLowerCase().includes(i.toLowerCase().trim()))||u.value.toLowerCase().includes(i.toLowerCase().trim())},onChange:s})},sq=he([mt],e=>{const{galleryImageMinimumWidth:t,shouldAutoSwitch:n}=e.gallery;return{galleryImageMinimumWidth:t,shouldAutoSwitch:n}},Ke),aq=()=>{const e=Z(),{t}=ue(),{galleryImageMinimumWidth:n,shouldAutoSwitch:r}=$(sq),o=s=>{e(Pf(s))};return a.jsx(Wi,{triggerComponent:a.jsx(je,{tooltip:t("gallery.gallerySettings"),"aria-label":t("gallery.gallerySettings"),size:"sm",icon:a.jsx(x1,{})}),children:a.jsxs(L,{direction:"column",gap:4,children:[a.jsx(Ct,{value:n,onChange:o,min:32,max:256,hideTooltip:!0,label:t("gallery.galleryImageSize"),withReset:!0,handleReset:()=>e(Pf(64))}),a.jsx(Ln,{label:t("gallery.autoSwitchNewImages"),isChecked:r,onChange:s=>e(m8(s.target.checked))}),a.jsx(oq,{})]})})},iq=e=>e.image?a.jsx(ah,{sx:{w:`${e.image.width}px`,h:"auto",objectFit:"contain",aspectRatio:`${e.image.width}/${e.image.height}`}}):a.jsx(L,{sx:{opacity:.7,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(oc,{size:"xl"})}),Ja=e=>{const{icon:t=Ti,boxSize:n=16}=e;return a.jsxs(L,{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:[a.jsx(io,{as:t,boxSize:n,opacity:.7}),e.label&&a.jsx(qe,{textAlign:"center",children:e.label})]})},Ph=0,ii=1,fc=2,rP=4;function lq(e,t){return n=>e(t(n))}function cq(e,t){return t(e)}function oP(e,t){return n=>e(t,n)}function YS(e,t){return()=>e(t)}function H1(e,t){return t(e),e}function Gi(...e){return e}function uq(e){e()}function XS(e){return()=>e}function dq(...e){return()=>{e.map(uq)}}function Ih(){}function co(e,t){return e(ii,t)}function Ir(e,t){e(Ph,t)}function W1(e){e(fc)}function Eh(e){return e(rP)}function zn(e,t){return co(e,oP(t,Ph))}function JS(e,t){const n=e(ii,r=>{n(),t(r)});return n}function hr(){const e=[];return(t,n)=>{switch(t){case fc:e.splice(0,e.length);return;case ii:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)};case Ph:e.slice().forEach(r=>{r(n)});return;default:throw new Error(`unrecognized action ${t}`)}}}function Bt(e){let t=e;const n=hr();return(r,o)=>{switch(r){case ii:o(t);break;case Ph:t=o;break;case rP:return t}return n(r,o)}}function fq(e){let t,n;const r=()=>t&&t();return function(o,s){switch(o){case ii:return s?n===s?void 0:(r(),n=s,t=co(e,s),t):(r(),Ih);case fc:r(),n=null;return;default:throw new Error(`unrecognized action ${o}`)}}}function Zc(e){return H1(hr(),t=>zn(e,t))}function $l(e,t){return H1(Bt(t),n=>zn(e,n))}function pq(...e){return t=>e.reduceRight(cq,t)}function Ht(e,...t){const n=pq(...t);return(r,o)=>{switch(r){case ii:return co(e,n(o));case fc:W1(e);return}}}function sP(e,t){return e===t}function vo(e=sP){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function Wr(e){return t=>n=>{e(n)&&t(n)}}function Qn(e){return t=>lq(t,e)}function Ha(e){return t=>()=>t(e)}function df(e,t){return n=>r=>n(t=e(t,r))}function F0(e){return t=>n=>{e>0?e--:t(n)}}function Vc(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function ZS(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function $s(...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 u=Math.pow(2,i);co(s,d=>{const p=n;n=n|u,t[i]=d,p!==o&&n===o&&r&&(r(),r=null)})}),s=>i=>{const u=()=>s([i].concat(t));n===o?u():r=u}}function eC(...e){return function(t,n){switch(t){case ii:return dq(...e.map(r=>co(r,n)));case fc:return;default:throw new Error(`unrecognized action ${t}`)}}}function fn(e,t=sP){return Ht(e,vo(t))}function ca(...e){const t=hr(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const u=Math.pow(2,i);co(s,d=>{n[i]=d,r=r|u,r===o&&Ir(t,n)})}),function(s,i){switch(s){case ii:return r===o&&i(n),co(t,i);case fc:return W1(t);default:throw new Error(`unrecognized action ${s}`)}}}function Ys(e,t=[],{singleton:n}={singleton:!0}){return{id:hq(),constructor:e,dependencies:t,singleton:n}}const hq=()=>Symbol();function mq(e){const t=new Map,n=({id:r,constructor:o,dependencies:s,singleton:i})=>{if(i&&t.has(r))return t.get(r);const u=o(s.map(d=>n(d)));return i&&t.set(r,u),u};return n(e)}function gq(e,t){const n={},r={};let o=0;const s=e.length;for(;o(C[_]=k=>{const P=x[t.methods[_]];Ir(P,k)},C),{})}function h(x){return i.reduce((C,_)=>(C[_]=fq(x[t.events[_]]),C),{})}return{Component:z.forwardRef((x,C)=>{const{children:_,...k}=x,[P]=z.useState(()=>H1(mq(e),E=>d(E,k))),[I]=z.useState(YS(h,P));return ff(()=>{for(const E of i)E in k&&co(I[E],k[E]);return()=>{Object.values(I).map(W1)}},[k,I,P]),ff(()=>{d(P,k)}),z.useImperativeHandle(C,XS(p(P))),z.createElement(u.Provider,{value:P},n?z.createElement(n,gq([...r,...o,...i],k),_):_)}),usePublisher:x=>z.useCallback(oP(Ir,z.useContext(u)[x]),[x]),useEmitterValue:x=>{const _=z.useContext(u)[x],[k,P]=z.useState(YS(Eh,_));return ff(()=>co(_,I=>{I!==k&&P(XS(I))}),[_,k]),k},useEmitter:(x,C)=>{const k=z.useContext(u)[x];ff(()=>co(k,C),[C,k])}}}const yq=typeof document<"u"?z.useLayoutEffect:z.useEffect,bq=yq;var V1=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(V1||{});const xq={0:"debug",1:"log",2:"warn",3:"error"},wq=()=>typeof globalThis>"u"?window:globalThis,aP=Ys(()=>{const e=Bt(3);return{log:Bt((n,r,o=1)=>{var s;const i=(s=wq().VIRTUOSO_LOG_LEVEL)!=null?s:Eh(e);o>=i&&console[xq[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,r)}),logLevel:e}},[],{singleton:!0});function iP(e,t=!0){const n=z.useRef(null);let r=o=>{};if(typeof ResizeObserver<"u"){const o=z.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 Oh(e,t=!0){return iP(e,t).callbackRef}function Np(e,t){return Math.round(e.getBoundingClientRect()[t])}function lP(e,t){return Math.abs(e-t)<1.01}function cP(e,t,n,r=Ih,o){const s=z.useRef(null),i=z.useRef(null),u=z.useRef(null),d=z.useCallback(g=>{const v=g.target,b=v===window||v===document,S=b?window.pageYOffset||document.documentElement.scrollTop:v.scrollTop,x=b?document.documentElement.scrollHeight:v.scrollHeight,C=b?window.innerHeight:v.offsetHeight,_=()=>{e({scrollTop:Math.max(S,0),scrollHeight:x,viewportHeight:C})};g.suppressFlushSync?_():g8.flushSync(_),i.current!==null&&(S===i.current||S<=0||S===x-C)&&(i.current=null,t(!0),u.current&&(clearTimeout(u.current),u.current=null))},[e,t]);z.useEffect(()=>{const g=o||s.current;return r(o||s.current),d({target:g,suppressFlushSync:!0}),g.addEventListener("scroll",d,{passive:!0}),()=>{r(null),g.removeEventListener("scroll",d)}},[s,d,n,r,o]);function p(g){const v=s.current;if(!v||"offsetHeight"in v&&v.offsetHeight===0)return;const b=g.behavior==="smooth";let S,x,C;v===window?(x=Math.max(Np(document.documentElement,"height"),document.documentElement.scrollHeight),S=window.innerHeight,C=document.documentElement.scrollTop):(x=v.scrollHeight,S=Np(v,"height"),C=v.scrollTop);const _=x-S;if(g.top=Math.ceil(Math.max(Math.min(_,g.top),0)),lP(S,x)||g.top===C){e({scrollTop:C,scrollHeight:x,viewportHeight:S}),b&&t(!0);return}b?(i.current=g.top,u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{u.current=null,i.current=null,t(!0)},1e3)):i.current=null,v.scrollTo(g)}function h(g){s.current.scrollBy(g)}return{scrollerRef:s,scrollByCallback:h,scrollToCallback:p}}const Mh=Ys(()=>{const e=hr(),t=hr(),n=Bt(0),r=hr(),o=Bt(0),s=hr(),i=hr(),u=Bt(0),d=Bt(0),p=Bt(0),h=Bt(0),g=hr(),v=hr(),b=Bt(!1);return zn(Ht(e,Qn(({scrollTop:S})=>S)),t),zn(Ht(e,Qn(({scrollHeight:S})=>S)),i),zn(t,o),{scrollContainerState:e,scrollTop:t,viewportHeight:s,headerHeight:u,fixedHeaderHeight:d,fixedFooterHeight:p,footerHeight:h,scrollHeight:i,smoothScrollTargetReached:r,scrollTo:g,scrollBy:v,statefulScrollTop:o,deviation:n,scrollingInProgress:b}},[],{singleton:!0}),Sq=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function Cq(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!Sq)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const $p="up",eu="down",_q="none",kq={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},jq=0,uP=Ys(([{scrollContainerState:e,scrollTop:t,viewportHeight:n,headerHeight:r,footerHeight:o,scrollBy:s}])=>{const i=Bt(!1),u=Bt(!0),d=hr(),p=hr(),h=Bt(4),g=Bt(jq),v=$l(Ht(eC(Ht(fn(t),F0(1),Ha(!0)),Ht(fn(t),F0(1),Ha(!1),ZS(100))),vo()),!1),b=$l(Ht(eC(Ht(s,Ha(!0)),Ht(s,Ha(!1),ZS(200))),vo()),!1);zn(Ht(ca(fn(t),fn(g)),Qn(([k,P])=>k<=P),vo()),u),zn(Ht(u,Vc(50)),p);const S=Zc(Ht(ca(e,fn(n),fn(r),fn(o),fn(h)),df((k,[{scrollTop:P,scrollHeight:I},E,O,R,D])=>{const T=P+E-I>-D,B={viewportHeight:E,scrollTop:P,scrollHeight:I};if(T){let J,F;return P>k.state.scrollTop?(J="SCROLLED_DOWN",F=k.state.scrollTop-P):(J="SIZE_DECREASED",F=k.state.scrollTop-P||k.scrollTopDelta),{atBottom:!0,state:B,atBottomBecause:J,scrollTopDelta:F}}let W;return B.scrollHeight>k.state.scrollHeight?W="SIZE_INCREASED":Ek&&k.atBottom===P.atBottom))),x=$l(Ht(e,df((k,{scrollTop:P,scrollHeight:I,viewportHeight:E})=>{if(lP(k.scrollHeight,I))return{scrollTop:P,scrollHeight:I,jump:0,changed:!1};{const O=I-(P+E)<1;return k.scrollTop!==P&&O?{scrollHeight:I,scrollTop:P,jump:k.scrollTop-P,changed:!0}:{scrollHeight:I,scrollTop:P,jump:0,changed:!0}}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),Wr(k=>k.changed),Qn(k=>k.jump)),0);zn(Ht(S,Qn(k=>k.atBottom)),i),zn(Ht(i,Vc(50)),d);const C=Bt(eu);zn(Ht(e,Qn(({scrollTop:k})=>k),vo(),df((k,P)=>Eh(b)?{direction:k.direction,prevScrollTop:P}:{direction:Pk.direction)),C),zn(Ht(e,Vc(50),Ha(_q)),C);const _=Bt(0);return zn(Ht(v,Wr(k=>!k),Ha(0)),_),zn(Ht(t,Vc(100),$s(v),Wr(([k,P])=>!!P),df(([k,P],[I])=>[P,I],[0,0]),Qn(([k,P])=>P-k)),_),{isScrolling:v,isAtTop:u,isAtBottom:i,atBottomState:S,atTopStateChange:p,atBottomStateChange:d,scrollDirection:C,atBottomThreshold:h,atTopThreshold:g,scrollVelocity:_,lastJumpDueToItemResize:x}},Gi(Mh)),Pq=Ys(([{log:e}])=>{const t=Bt(!1),n=Zc(Ht(t,Wr(r=>r),vo()));return co(t,r=>{r&&Eh(e)("props updated",{},V1.DEBUG)}),{propsReady:t,didMount:n}},Gi(aP),{singleton:!0});function dP(e,t){e==0?t():requestAnimationFrame(()=>dP(e-1,t))}function Iq(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}function H0(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}function Eq(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}const zp="top",Lp="bottom",tC="none";function nC(e,t,n){return typeof e=="number"?n===$p&&t===zp||n===eu&&t===Lp?e:0:n===$p?t===zp?e.main:e.reverse:t===Lp?e.main:e.reverse}function rC(e,t){return typeof e=="number"?e:e[t]||0}const Oq=Ys(([{scrollTop:e,viewportHeight:t,deviation:n,headerHeight:r,fixedHeaderHeight:o}])=>{const s=hr(),i=Bt(0),u=Bt(0),d=Bt(0),p=$l(Ht(ca(fn(e),fn(t),fn(r),fn(s,H0),fn(d),fn(i),fn(o),fn(n),fn(u)),Qn(([h,g,v,[b,S],x,C,_,k,P])=>{const I=h-k,E=C+_,O=Math.max(v-I,0);let R=tC;const D=rC(P,zp),T=rC(P,Lp);return b-=k,b+=v+_,S+=v+_,S-=k,b>h+E-D&&(R=$p),Sh!=null),vo(H0)),[0,0]);return{listBoundary:s,overscan:d,topListHeight:i,increaseViewportBy:u,visibleRange:p}},Gi(Mh),{singleton:!0}),Mq=Ys(([{scrollVelocity:e}])=>{const t=Bt(!1),n=hr(),r=Bt(!1);return zn(Ht(e,$s(r,t,n),Wr(([o,s])=>!!s),Qn(([o,s,i,u])=>{const{exit:d,enter:p}=s;if(i){if(d(o,u))return!1}else if(p(o,u))return!0;return i}),vo()),t),co(Ht(ca(t,e,n),$s(r)),([[o,s,i],u])=>o&&u&&u.change&&u.change(s,i)),{isSeeking:t,scrollSeekConfiguration:r,scrollVelocity:e,scrollSeekRangeChanged:n}},Gi(uP),{singleton:!0});function Rq(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const Dq=Ys(([{scrollTo:e,scrollContainerState:t}])=>{const n=hr(),r=hr(),o=hr(),s=Bt(!1),i=Bt(void 0);return zn(Ht(ca(n,r),Qn(([{viewportHeight:u,scrollTop:d,scrollHeight:p},{offsetTop:h}])=>({scrollTop:Math.max(0,d-h),scrollHeight:p,viewportHeight:u}))),t),zn(Ht(e,$s(r),Qn(([u,{offsetTop:d}])=>({...u,top:u.top+d}))),o),{useWindowScroll:s,customScrollParent:i,windowScrollContainerState:n,windowViewportRect:r,windowScrollTo:o}},Gi(Mh)),Ag="-webkit-sticky",oC="sticky",fP=Rq(()=>{if(typeof document>"u")return oC;const e=document.createElement("div");return e.style.position=Ag,e.style.position===Ag?Ag:oC});function Aq(e,t){const n=z.useRef(null),r=z.useCallback(u=>{if(u===null||!u.offsetParent)return;const d=u.getBoundingClientRect(),p=d.width;let h,g;if(t){const v=t.getBoundingClientRect(),b=d.top-v.top;h=v.height-Math.max(0,b),g=b+t.scrollTop}else h=window.innerHeight-Math.max(0,d.top),g=d.top+window.pageYOffset;n.current={offsetTop:g,visibleHeight:h,visibleWidth:p},e(n.current)},[e,t]),{callbackRef:o,ref:s}=iP(r),i=z.useCallback(()=>{r(s.current)},[r,s]);return z.useEffect(()=>{if(t){t.addEventListener("scroll",i);const u=new ResizeObserver(i);return u.observe(t),()=>{t.removeEventListener("scroll",i),u.unobserve(t)}}else return window.addEventListener("scroll",i),window.addEventListener("resize",i),()=>{window.removeEventListener("scroll",i),window.removeEventListener("resize",i)}},[i,t]),o}z.createContext(void 0);const pP=z.createContext(void 0);function Tq(e){return e}fP();const Nq={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},hP={width:"100%",height:"100%",position:"absolute",top:0};fP();function Pi(e,t){if(typeof e!="string")return{context:t}}function $q({usePublisher:e,useEmitter:t,useEmitterValue:n}){return z.memo(function({style:s,children:i,...u}){const d=e("scrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),g=n("scrollerRef"),v=n("context"),{scrollerRef:b,scrollByCallback:S,scrollToCallback:x}=cP(d,h,p,g);return t("scrollTo",x),t("scrollBy",S),z.createElement(p,{ref:b,style:{...Nq,...s},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...u,...Pi(p,v)},i)})}function zq({usePublisher:e,useEmitter:t,useEmitterValue:n}){return z.memo(function({style:s,children:i,...u}){const d=e("windowScrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),g=n("totalListHeight"),v=n("deviation"),b=n("customScrollParent"),S=n("context"),{scrollerRef:x,scrollByCallback:C,scrollToCallback:_}=cP(d,h,p,Ih,b);return bq(()=>(x.current=b||window,()=>{x.current=null}),[x,b]),t("windowScrollTo",_),t("scrollBy",C),z.createElement(p,{style:{position:"relative",...s,...g!==0?{height:g+v}:{}},"data-virtuoso-scroller":!0,...u,...Pi(p,S)},i)})}const sC={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Lq={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:aC,ceil:iC,floor:Bp,min:Tg,max:tu}=Math;function Bq(e){return{...Lq,items:e}}function lC(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 Fq(e,t){return e&&e.column===t.column&&e.row===t.row}function pf(e,t){return e&&e.width===t.width&&e.height===t.height}const Hq=Ys(([{overscan:e,visibleRange:t,listBoundary:n},{scrollTop:r,viewportHeight:o,scrollBy:s,scrollTo:i,smoothScrollTargetReached:u,scrollContainerState:d,footerHeight:p,headerHeight:h},g,v,{propsReady:b,didMount:S},{windowViewportRect:x,useWindowScroll:C,customScrollParent:_,windowScrollContainerState:k,windowScrollTo:P},I])=>{const E=Bt(0),O=Bt(0),R=Bt(sC),D=Bt({height:0,width:0}),T=Bt({height:0,width:0}),B=hr(),W=hr(),J=Bt(0),F=Bt(null),N=Bt({row:0,column:0}),G=hr(),K=hr(),M=Bt(!1),U=Bt(0),V=Bt(!0),ee=Bt(!1);co(Ht(S,$s(U),Wr(([H,re])=>!!re)),()=>{Ir(V,!1),Ir(O,0)}),co(Ht(ca(S,V,T,D,U,ee),Wr(([H,re,pe,ne,,ve])=>H&&!re&&pe.height!==0&&ne.height!==0&&!ve)),([,,,,H])=>{Ir(ee,!0),dP(1,()=>{Ir(B,H)}),JS(Ht(r),()=>{Ir(n,[0,0]),Ir(V,!0)})}),zn(Ht(K,Wr(H=>H!=null&&H.scrollTop>0),Ha(0)),O),co(Ht(S,$s(K),Wr(([,H])=>H!=null)),([,H])=>{H&&(Ir(D,H.viewport),Ir(T,H==null?void 0:H.item),Ir(N,H.gap),H.scrollTop>0&&(Ir(M,!0),JS(Ht(r,F0(1)),re=>{Ir(M,!1)}),Ir(i,{top:H.scrollTop})))}),zn(Ht(D,Qn(({height:H})=>H)),o),zn(Ht(ca(fn(D,pf),fn(T,pf),fn(N,(H,re)=>H&&H.column===re.column&&H.row===re.row),fn(r)),Qn(([H,re,pe,ne])=>({viewport:H,item:re,gap:pe,scrollTop:ne}))),G),zn(Ht(ca(fn(E),t,fn(N,Fq),fn(T,pf),fn(D,pf),fn(F),fn(O),fn(M),fn(V),fn(U)),Wr(([,,,,,,,H])=>!H),Qn(([H,[re,pe],ne,ve,de,Ce,Re,,ge,_e])=>{const{row:We,column:Le}=ne,{height:Ue,width:jt}=ve,{width:vt}=de;if(Re===0&&(H===0||vt===0))return sC;if(jt===0){const In=Iq(_e,H),ln=In===0?Math.max(Re-1,0):In;return Bq(lC(In,ln,Ce))}const jn=mP(vt,jt,Le);let Pt,bt;ge?re===0&&pe===0&&Re>0?(Pt=0,bt=Re-1):(Pt=jn*Bp((re+We)/(Ue+We)),bt=jn*iC((pe+We)/(Ue+We))-1,bt=Tg(H-1,tu(bt,jn-1)),Pt=Tg(bt,tu(0,Pt))):(Pt=0,bt=-1);const be=lC(Pt,bt,Ce),{top:Ae,bottom:Et}=cC(de,ne,ve,be),Ft=iC(H/jn),_n=Ft*Ue+(Ft-1)*We-Et;return{items:be,offsetTop:Ae,offsetBottom:_n,top:Ae,bottom:Et,itemHeight:Ue,itemWidth:jt}})),R),zn(Ht(F,Wr(H=>H!==null),Qn(H=>H.length)),E),zn(Ht(ca(D,T,R,N),Wr(([H,re,{items:pe}])=>pe.length>0&&re.height!==0&&H.height!==0),Qn(([H,re,{items:pe},ne])=>{const{top:ve,bottom:de}=cC(H,ne,re,pe);return[ve,de]}),vo(H0)),n);const ie=Bt(!1);zn(Ht(r,$s(ie),Qn(([H,re])=>re||H!==0)),ie);const xe=Zc(Ht(fn(R),Wr(({items:H})=>H.length>0),$s(E,ie),Wr(([{items:H},re,pe])=>pe&&H[H.length-1].index===re-1),Qn(([,H])=>H-1),vo())),me=Zc(Ht(fn(R),Wr(({items:H})=>H.length>0&&H[0].index===0),Ha(0),vo())),ae=Zc(Ht(fn(R),$s(M),Wr(([{items:H},re])=>H.length>0&&!re),Qn(([{items:H}])=>({startIndex:H[0].index,endIndex:H[H.length-1].index})),vo(Eq),Vc(0)));zn(ae,v.scrollSeekRangeChanged),zn(Ht(B,$s(D,T,E,N),Qn(([H,re,pe,ne,ve])=>{const de=Cq(H),{align:Ce,behavior:Re,offset:ge}=de;let _e=de.index;_e==="LAST"&&(_e=ne-1),_e=tu(0,_e,Tg(ne-1,_e));let We=W0(re,ve,pe,_e);return Ce==="end"?We=aC(We-re.height+pe.height):Ce==="center"&&(We=aC(We-re.height/2+pe.height/2)),ge&&(We+=ge),{top:We,behavior:Re}})),i);const te=$l(Ht(R,Qn(H=>H.offsetBottom+H.bottom)),0);return zn(Ht(x,Qn(H=>({width:H.visibleWidth,height:H.visibleHeight}))),D),{data:F,totalCount:E,viewportDimensions:D,itemDimensions:T,scrollTop:r,scrollHeight:W,overscan:e,scrollBy:s,scrollTo:i,scrollToIndex:B,smoothScrollTargetReached:u,windowViewportRect:x,windowScrollTo:P,useWindowScroll:C,customScrollParent:_,windowScrollContainerState:k,deviation:J,scrollContainerState:d,footerHeight:p,headerHeight:h,initialItemCount:O,gap:N,restoreStateFrom:K,...v,initialTopMostItemIndex:U,gridState:R,totalListHeight:te,...g,startReached:me,endReached:xe,rangeChanged:ae,stateChanged:G,propsReady:b,stateRestoreInProgress:M,...I}},Gi(Oq,Mh,uP,Mq,Pq,Dq,aP));function cC(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{top:0,bottom:0};const s=W0(e,t,n,r[0].index),i=W0(e,t,n,r[r.length-1].index)+o;return{top:s,bottom:i}}function W0(e,t,n,r){const o=mP(e.width,n.width,t.column),s=Bp(r/o),i=s*n.height+tu(0,s-1)*t.row;return i>0?i+t.row:i}function mP(e,t,n){return tu(1,Bp((e+n)/(Bp(t)+n)))}const Wq=Ys(()=>{const e=Bt(p=>`Item ${p}`),t=Bt({}),n=Bt(null),r=Bt("virtuoso-grid-item"),o=Bt("virtuoso-grid-list"),s=Bt(Tq),i=Bt("div"),u=Bt(Ih),d=(p,h=null)=>$l(Ht(t,Qn(g=>g[p]),vo()),h);return{context:n,itemContent:e,components:t,computeItemKey:s,itemClassName:r,listClassName:o,headerFooterTag:i,scrollerRef:u,FooterComponent:d("Footer"),HeaderComponent:d("Header"),ListComponent:d("List","div"),ItemComponent:d("Item","div"),ScrollerComponent:d("Scroller","div"),ScrollSeekPlaceholder:d("ScrollSeekPlaceholder","div")}}),Vq=Ys(([e,t])=>({...e,...t}),Gi(Hq,Wq)),Uq=z.memo(function(){const t=nr("gridState"),n=nr("listClassName"),r=nr("itemClassName"),o=nr("itemContent"),s=nr("computeItemKey"),i=nr("isSeeking"),u=ms("scrollHeight"),d=nr("ItemComponent"),p=nr("ListComponent"),h=nr("ScrollSeekPlaceholder"),g=nr("context"),v=ms("itemDimensions"),b=ms("gap"),S=nr("log"),x=nr("stateRestoreInProgress"),C=Oh(_=>{const k=_.parentElement.parentElement.scrollHeight;u(k);const P=_.firstChild;if(P){const{width:I,height:E}=P.getBoundingClientRect();v({width:I,height:E})}b({row:uC("row-gap",getComputedStyle(_).rowGap,S),column:uC("column-gap",getComputedStyle(_).columnGap,S)})});return x?null:z.createElement(p,{ref:C,className:n,...Pi(p,g),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-test-id":"virtuoso-item-list"},t.items.map(_=>{const k=s(_.index,_.data,g);return i?z.createElement(h,{key:k,...Pi(h,g),index:_.index,height:t.itemHeight,width:t.itemWidth}):z.createElement(d,{...Pi(d,g),className:r,"data-index":_.index,key:k},o(_.index,_.data,g))}))}),Gq=z.memo(function(){const t=nr("HeaderComponent"),n=ms("headerHeight"),r=nr("headerFooterTag"),o=Oh(i=>n(Np(i,"height"))),s=nr("context");return t?z.createElement(r,{ref:o},z.createElement(t,Pi(t,s))):null}),qq=z.memo(function(){const t=nr("FooterComponent"),n=ms("footerHeight"),r=nr("headerFooterTag"),o=Oh(i=>n(Np(i,"height"))),s=nr("context");return t?z.createElement(r,{ref:o},z.createElement(t,Pi(t,s))):null}),Kq=({children:e})=>{const t=z.useContext(pP),n=ms("itemDimensions"),r=ms("viewportDimensions"),o=Oh(s=>{r(s.getBoundingClientRect())});return z.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),z.createElement("div",{style:hP,ref:o},e)},Qq=({children:e})=>{const t=z.useContext(pP),n=ms("windowViewportRect"),r=ms("itemDimensions"),o=nr("customScrollParent"),s=Aq(n,o);return z.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),z.createElement("div",{ref:s,style:hP},e)},Yq=z.memo(function({...t}){const n=nr("useWindowScroll"),r=nr("customScrollParent"),o=r||n?Zq:Jq,s=r||n?Qq:Kq;return z.createElement(o,{...t},z.createElement(s,null,z.createElement(Gq,null),z.createElement(Uq,null),z.createElement(qq,null)))}),{Component:Xq,usePublisher:ms,useEmitterValue:nr,useEmitter:gP}=vq(Vq,{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"}},Yq),Jq=$q({usePublisher:ms,useEmitterValue:nr,useEmitter:gP}),Zq=zq({usePublisher:ms,useEmitterValue:nr,useEmitter:gP});function uC(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,V1.WARN),t==="normal"?0:parseInt(t??"0",10)}const vP=Xq,eK=({image:e})=>{const t=f.useMemo(()=>{var n,r;if(v8((n=e.metadata)==null?void 0:n.model))return(r=e.metadata)==null?void 0:r.model},[e.metadata]);return a.jsxs(L,{sx:{pointerEvents:"none",flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,p:2,alignItems:"flex-start",gap:2},children:[a.jsxs(Za,{variant:"solid",colorScheme:"base",children:[e.width," × ",e.height]}),t&&a.jsx(Za,{variant:"solid",colorScheme:"base",children:t})]})},Rh=({postUploadAction:e,isDisabled:t})=>{const n=$(d=>d.gallery.autoAddBoardId),[r]=E4(),o=f.useCallback(d=>{const p=d[0];p&&r({file:p,image_category:"user",is_intermediate:!1,postUploadAction:e??{type:"TOAST"},board_id:n})},[n,e,r]),{getRootProps:s,getInputProps:i,open:u}=Zv({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},onDropAccepted:o,disabled:t,noDrag:!0,multiple:!1});return{getUploadButtonProps:s,getUploadInputProps:i,openUploader:u}},U1=()=>{const e=Z(),t=tc(),{t:n}=ue(),r=f.useCallback(()=>{t({title:n("toast.parameterSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),o=f.useCallback(()=>{t({title:n("toast.parameterNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),s=f.useCallback(()=>{t({title:n("toast.parametersSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),i=f.useCallback(()=>{t({title:n("toast.parametersNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),u=f.useCallback((I,E)=>{if(Id(I)||Ed(E)){Id(I)&&e(Qc(I)),Ed(E)&&e(Yc(E)),r();return}o()},[e,r,o]),d=f.useCallback(I=>{if(!Id(I)){o();return}e(Qc(I)),r()},[e,r,o]),p=f.useCallback(I=>{if(!Ed(I)){o();return}e(Yc(I)),r()},[e,r,o]),h=f.useCallback(I=>{if(!nx(I)){o();return}e(If(I)),r()},[e,r,o]),g=f.useCallback(I=>{if(!rx(I)){o();return}e(Ef(I)),r()},[e,r,o]),v=f.useCallback(I=>{if(!ox(I)){o();return}e(Qg(I)),r()},[e,r,o]),b=f.useCallback(I=>{if(!sx(I)){o();return}e(Yg(I)),r()},[e,r,o]),S=f.useCallback(I=>{if(!ax(I)){o();return}e(Of(I)),r()},[e,r,o]),x=f.useCallback(I=>{if(!ix(I)){o();return}e(zl(I)),r()},[e,r,o]),C=f.useCallback(I=>{if(!lx(I)){o();return}e(Ll(I)),r()},[e,r,o]),_=f.useCallback(I=>{if(!cx(I)){o();return}e(Mf(I)),r()},[e,r,o]),k=f.useCallback(I=>{e(pv(I))},[e]),P=f.useCallback(I=>{if(!I){i();return}const{cfg_scale:E,height:O,model:R,positive_prompt:D,negative_prompt:T,scheduler:B,seed:W,steps:J,width:F,strength:N}=I;rx(E)&&e(Ef(E)),ox(R)&&e(Qg(R)),Id(D)&&e(Qc(D)),Ed(T)&&e(Yc(T)),sx(B)&&e(Yg(B)),nx(W)&&e(If(W)),ax(J)&&e(Of(J)),ix(F)&&e(zl(F)),lx(O)&&e(Ll(O)),cx(N)&&e(Mf(N)),s()},[i,s,e]);return{recallBothPrompts:u,recallPositivePrompt:d,recallNegativePrompt:p,recallSeed:h,recallCfgScale:g,recallModel:v,recallScheduler:b,recallSteps:S,recallWidth:x,recallHeight:C,recallStrength:_,recallAllParameters:P,sendToImageToImage:k}},G1=()=>{const e=tc(),{t}=ue(),n=f.useMemo(()=>!!navigator.clipboard&&!!window.ClipboardItem,[]),r=f.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}};hv("gallery/requestedBoardImagesDeletion");const tK=hv("gallery/sentImageToCanvas"),yP=hv("gallery/sentImageToImg2Img");function nK(e,t,n){var r=this,o=f.useRef(null),s=f.useRef(0),i=f.useRef(null),u=f.useRef([]),d=f.useRef(),p=f.useRef(),h=f.useRef(e),g=f.useRef(!0);f.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,S=!("trailing"in n)||!!n.trailing,x="maxWait"in n,C=x?Math.max(+n.maxWait||0,t):null;f.useEffect(function(){return g.current=!0,function(){g.current=!1}},[]);var _=f.useMemo(function(){var k=function(D){var T=u.current,B=d.current;return u.current=d.current=null,s.current=D,p.current=h.current.apply(B,T)},P=function(D,T){v&&cancelAnimationFrame(i.current),i.current=v?requestAnimationFrame(D):setTimeout(D,T)},I=function(D){if(!g.current)return!1;var T=D-o.current;return!o.current||T>=t||T<0||x&&D-s.current>=C},E=function(D){return i.current=null,S&&u.current?k(D):(u.current=d.current=null,p.current)},O=function D(){var T=Date.now();if(I(T))return E(T);if(g.current){var B=t-(T-o.current),W=x?Math.min(B,C-(T-s.current)):B;P(D,W)}},R=function(){var D=Date.now(),T=I(D);if(u.current=[].slice.call(arguments),d.current=r,o.current=D,T){if(!i.current&&g.current)return s.current=o.current,P(O,t),b?k(o.current):p.current;if(x)return P(O,t),k(o.current)}return i.current||P(O,t),p.current};return R.cancel=function(){i.current&&(v?cancelAnimationFrame(i.current):clearTimeout(i.current)),s.current=0,u.current=o.current=d.current=i.current=null},R.isPending=function(){return!!i.current},R.flush=function(){return i.current?E(Date.now()):p.current},R},[b,x,t,C,S,v]);return _}function rK(e,t){return e===t}function dC(e){return typeof e=="function"?function(){return e}:e}function q1(e,t,n){var r,o,s=n&&n.equalityFn||rK,i=(r=f.useState(dC(e)),o=r[1],[r[0],f.useCallback(function(g){return o(dC(g))},[])]),u=i[0],d=i[1],p=nK(f.useCallback(function(g){return d(g)},[d]),t,n),h=f.useRef(e);return s(h.current,e)||(p(e),h.current=e),[u,p]}const oK=e=>{const{imageDTO:t}=e,n=f.useMemo(()=>he([mt],({gallery:N})=>({isInBatch:N.batchImageNames.includes(t.image_name)}),Ke),[t.image_name]),{isInBatch:r}=$(n),o=Z(),{t:s}=ue(),i=tc(),u=yr("unifiedCanvas").isFeatureEnabled,d=yr("batches").isFeatureEnabled,{onClickAddToBoard:p}=f.useContext(A4),[h,g]=q1(t.image_name,500),{currentData:v}=mv(g.isPending()?Xr.skipToken:h??Xr.skipToken),{isClipboardAPIAvailable:b,copyImageToClipboard:S}=G1(),x=v==null?void 0:v.metadata,C=f.useCallback(()=>{t&&o(gv(t))},[o,t]),{recallBothPrompts:_,recallSeed:k,recallAllParameters:P}=U1(),[I]=y8(),E=f.useCallback(()=>{_(x==null?void 0:x.positive_prompt,x==null?void 0:x.negative_prompt)},[x==null?void 0:x.negative_prompt,x==null?void 0:x.positive_prompt,_]),O=f.useCallback(()=>{k(x==null?void 0:x.seed)},[x==null?void 0:x.seed,k]),R=f.useCallback(()=>{o(yP()),o(pv(t))},[o,t]),D=f.useCallback(()=>{o(tK()),o(b8(t)),o(Jp()),o(xl("unifiedCanvas")),i({title:s("toast.sentToUnifiedCanvas"),status:"success",duration:2500,isClosable:!0})},[o,t,s,i]),T=f.useCallback(()=>{console.log(x),P(x)},[x,P]),B=f.useCallback(()=>{p(t)},[t,p]),W=f.useCallback(()=>{t.board_id&&I({imageDTO:t})},[t,I]),J=f.useCallback(()=>{o(x8([t.image_name]))},[o,t.image_name]),F=f.useCallback(()=>{S(t.image_url)},[S,t.image_url]);return a.jsxs(a.Fragment,{children:[a.jsx(Qa,{href:t.image_url,target:"_blank",children:a.jsx(ao,{icon:a.jsx(eL,{}),children:s("common.openInNewTab")})}),b&&a.jsx(ao,{icon:a.jsx(cc,{}),onClickCapture:F,children:s("parameters.copyImage")}),a.jsx(Qa,{download:!0,href:t.image_url,target:"_blank",children:a.jsx(ao,{icon:a.jsx(v1,{}),w:"100%",children:s("parameters.downloadImage")})}),a.jsx(ao,{icon:a.jsx(w_,{}),onClickCapture:E,isDisabled:(x==null?void 0:x.positive_prompt)===void 0&&(x==null?void 0:x.negative_prompt)===void 0,children:s("parameters.usePrompt")}),a.jsx(ao,{icon:a.jsx(S_,{}),onClickCapture:O,isDisabled:(x==null?void 0:x.seed)===void 0,children:s("parameters.useSeed")}),a.jsx(ao,{icon:a.jsx(f_,{}),onClickCapture:T,isDisabled:!x,children:s("parameters.useAll")}),a.jsx(ao,{icon:a.jsx(Y2,{}),onClickCapture:R,id:"send-to-img2img",children:s("parameters.sendToImg2Img")}),u&&a.jsx(ao,{icon:a.jsx(Y2,{}),onClickCapture:D,id:"send-to-canvas",children:s("parameters.sendToUnifiedCanvas")}),d&&a.jsx(ao,{icon:a.jsx(kg,{}),isDisabled:r,onClickCapture:J,children:"Add to Batch"}),a.jsx(ao,{icon:a.jsx(kg,{}),onClickCapture:B,children:t.board_id?"Change Board":"Add to Board"}),t.board_id&&a.jsx(ao,{icon:a.jsx(kg,{}),onClickCapture:W,children:"Remove from Board"}),a.jsx(ao,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Xo,{}),onClickCapture:C,children:s("gallery.deleteImage")})]})},bP=f.memo(oK),sK=({imageDTO:e,children:t})=>{const n=f.useCallback(r=>{r.preventDefault()},[]);return a.jsx(j_,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>e?a.jsx(ic,{sx:{visibility:"visible !important"},motionProps:Cv,onContextMenu:n,children:a.jsx(bP,{imageDTO:e})}):null,children:t})},xP=f.memo(sK),aK=e=>{const{data:t,disabled:n,onClick:r}=e,o=f.useRef(Ka()),{attributes:s,listeners:i,setNodeRef:u}=w8({id:o.current,disabled:n,data:t});return a.jsx($e,{onClick:r,ref:u,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,...s,...i})},iK=f.memo(aK),lK=e=>{const{imageDTO:t,onClickReset:n,onError:r,onClick:o,withResetIcon:s=!1,withMetadataOverlay:i=!1,isDropDisabled:u=!1,isDragDisabled:d=!1,isUploadDisabled:p=!1,minSize:h=24,postUploadAction:g,imageSx:v,fitContainer:b=!1,droppableData:S,draggableData:x,dropLabel:C,isSelected:_=!1,thumbnail:k=!1,resetTooltip:P="Reset",resetIcon:I=a.jsx(b1,{}),noContentFallback:E=a.jsx(Ja,{icon:Ti}),useThumbailFallback:O,withHoverOverlay:R=!1}=e,{colorMode:D}=xs(),[T,B]=f.useState(!1),W=f.useCallback(()=>{B(!0)},[]),J=f.useCallback(()=>{B(!1)},[]),{getUploadButtonProps:F,getUploadInputProps:N}=Rh({postUploadAction:g,isDisabled:p}),G=gf("drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-600))","drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-800))"),K=p?{}:{cursor:"pointer",bg:Me("base.200","base.800")(D),_hover:{bg:Me("base.300","base.650")(D),color:Me("base.500","base.300")(D)}};return a.jsx(xP,{imageDTO:t,children:M=>a.jsxs(L,{ref:M,onMouseOver:W,onMouseOut:J,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative",minW:h||void 0,minH:h||void 0,userSelect:"none",cursor:d||!t?"default":"pointer"},children:[t&&a.jsxs(L,{sx:{w:"full",h:"full",position:b?"absolute":"relative",alignItems:"center",justifyContent:"center"},children:[a.jsx(rc,{src:k?t.thumbnail_url:t.image_url,fallbackStrategy:"beforeLoadOrError",fallbackSrc:O?t.thumbnail_url:void 0,fallback:O?void 0:a.jsx(iq,{image:t}),width:t.width,height:t.height,onError:r,draggable:!1,sx:{objectFit:"contain",maxW:"full",maxH:"full",borderRadius:"base",...v}}),i&&a.jsx(eK,{image:t}),a.jsx(k1,{isSelected:_,isHovered:R?T:!1})]}),!t&&!p&&a.jsx(a.Fragment,{children:a.jsxs(L,{sx:{minH:h,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",transitionProperty:"common",transitionDuration:"0.1s",color:Me("base.500","base.500")(D),...K},...F(),children:[a.jsx("input",{...N()}),a.jsx(io,{as:Fu,sx:{boxSize:16}})]})}),!t&&p&&E,t&&!d&&a.jsx(iK,{data:x,disabled:d||!t,onClick:o}),!u&&a.jsx(S1,{data:S,disabled:u,dropLabel:C}),n&&s&&t&&a.jsx(je,{onClick:n,"aria-label":P,tooltip:P,icon:I,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:G}}})]})})},ri=f.memo(lK),cK=()=>a.jsx($e,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:a.jsx(L,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.100",color:"base.500",_dark:{color:"base.700",bg:"base.850"}},children:a.jsx(io,{as:Xz,boxSize:16,opacity:.7})})}),wP=()=>a.jsx(ah,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:a.jsx($e,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full"}})}),uK=e=>he([mt],t=>({selectionCount:t.gallery.selection.length,selection:t.gallery.selection,isSelected:t.gallery.selection.includes(e)}),Ke),dK=e=>{const t=Z(),{imageName:n}=e,{currentData:r,isLoading:o,isError:s,isSuccess:i}=Uo(n),u=f.useMemo(()=>uK(n),[n]),{isSelected:d,selectionCount:p,selection:h}=$(u),g=f.useCallback(()=>{t(S8([n]))},[t,n]),v=f.useCallback(S=>{S.shiftKey?t(C8(n)):S.ctrlKey||S.metaKey?t(_8(n)):t(Rf(n))},[t,n]),b=f.useMemo(()=>{if(p>1)return{id:"batch",payloadType:"IMAGE_NAMES",payload:{image_names:h}};if(r)return{id:"batch",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,h,p]);return o?a.jsx(wP,{}):s||!r?a.jsx(cK,{}):a.jsx($e,{sx:{w:"full",h:"full",touchAction:"none"},children:a.jsx(xP,{imageDTO:r,children:S=>a.jsx($e,{position:"relative",userSelect:"none",ref:S,sx:{display:"flex",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:a.jsx(ri,{onClick:v,imageDTO:r,draggableData:b,isSelected:d,minSize:0,onClickReset:g,isDropDisabled:!0,imageSx:{w:"full",h:"full"},isUploadDisabled:!0,resetTooltip:"Remove from batch",withResetIcon:!0,thumbnail:!0})},n)})})},fK=f.memo(dK),SP=rt((e,t)=>a.jsx($e,{className:"item-container",ref:t,p:1.5,children:e.children})),CP=rt((e,t)=>{const n=$(r=>r.gallery.galleryImageMinimumWidth);return a.jsx(Mi,{...e,className:"list-container",ref:t,sx:{gridTemplateColumns:`repeat(auto-fill, minmax(${n}px, 1fr));`},children:e.children})}),pK=he([mt],e=>({imageNames:e.gallery.batchImageNames}),Ke),hK=()=>{const{t:e}=ue(),t=f.useRef(null),[n,r]=f.useState(null),[o,s]=m1({defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"leave",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}}),{imageNames:i}=$(pK);return f.useEffect(()=>{const{current:u}=t;return n&&u&&o({target:u,elements:{viewport:n}}),()=>{var d;return(d=s())==null?void 0:d.destroy()}},[n,o,s]),i.length?a.jsx($e,{ref:t,"data-overlayscrollbars":"",h:"100%",children:a.jsx(vP,{style:{height:"100%"},data:i,components:{Item:SP,List:CP},scrollerRef:r,itemContent:(u,d)=>a.jsx(fK,{imageName:d},d)})}):a.jsx(Ja,{label:e("gallery.noImagesInGallery"),icon:Ti})},mK=f.memo(hK),gK=e=>he([mt],({gallery:t})=>({isSelected:t.selection.includes(e),selectionCount:t.selection.length,selection:t.selection}),Ke),vK=e=>{const t=Z(),{imageName:n}=e,{currentData:r}=Uo(n),o=f.useMemo(()=>gK(n),[n]),{isSelected:s,selectionCount:i,selection:u}=$(o),d=f.useCallback(g=>{t(Rf(n))},[t,n]),p=f.useCallback(g=>{g.stopPropagation(),r&&t(gv(r))},[t,r]),h=f.useMemo(()=>{if(i>1)return{id:"gallery-image",payloadType:"IMAGE_NAMES",payload:{image_names:u}};if(r)return{id:"gallery-image",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,u,i]);return r?a.jsx($e,{sx:{w:"full",h:"full",touchAction:"none"},children:a.jsx(L,{userSelect:"none",sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:a.jsx(ri,{onClick:d,imageDTO:r,draggableData:h,isSelected:s,minSize:0,onClickReset:p,imageSx:{w:"full",h:"full"},isDropDisabled:!0,isUploadDisabled:!0,thumbnail:!0,withHoverOverlay:!0})})}):a.jsx(wP,{})},yK=f.memo(vK),bK={defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"leave",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}},xK=()=>{const{t:e}=ue(),t=f.useRef(null),[n,r]=f.useState(null),[o,s]=m1(bK),i=$(C=>C.gallery.selectedBoardId),{currentViewTotal:u}=C1(i),d=$(T4),{currentData:p,isFetching:h,isSuccess:g,isError:v}=k8(d),[b]=N4(),S=f.useMemo(()=>!p||!u?!1:p.ids.length{S&&b({...d,offset:(p==null?void 0:p.ids.length)??0,limit:$4})},[S,b,d,p==null?void 0:p.ids.length]);if(f.useEffect(()=>{const{current:C}=t;return n&&C&&o({target:C,elements:{viewport:n}}),()=>{var _;return(_=s())==null?void 0:_.destroy()}},[n,o,s]),!p)return a.jsx(L,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(Ja,{label:"Loading...",icon:Ti})});if(g&&(p==null?void 0:p.ids.length)===0)return a.jsx(L,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(Ja,{label:e("gallery.noImagesInGallery"),icon:Ti})});if(g&&p)return a.jsxs(a.Fragment,{children:[a.jsx($e,{ref:t,"data-overlayscrollbars":"",h:"100%",children:a.jsx(vP,{style:{height:"100%"},data:p.ids,endReached:x,components:{Item:SP,List:CP},scrollerRef:r,itemContent:(C,_)=>a.jsx(yK,{imageName:_},_)})}),a.jsx(Xt,{onClick:x,isDisabled:!S,isLoading:h,loadingText:"Loading",flexShrink:0,children:`Load More (${p.ids.length} of ${u})`})]});if(v)return a.jsx($e,{sx:{w:"full",h:"full"},children:a.jsx(Ja,{label:"Unable to load Gallery",icon:m_})})},wK=f.memo(xK),SK=he([mt],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{selectedBoardId:t,galleryView:n}},Ke),CK=()=>{const e=f.useRef(null),t=f.useRef(null),{selectedBoardId:n,galleryView:r}=$(SK),o=Z(),{isOpen:s,onToggle:i}=Ws(),u=f.useCallback(()=>{o(ux("images"))},[o]),d=f.useCallback(()=>{o(ux("assets"))},[o]);return a.jsxs(A6,{sx:{flexDirection:"column",h:"full",w:"full",borderRadius:"base"},children:[a.jsxs($e,{sx:{w:"full"},children:[a.jsxs(L,{ref:e,sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:[a.jsx(WL,{isOpen:s,onToggle:i}),a.jsx(aq,{}),a.jsx(UL,{})]}),a.jsx($e,{children:a.jsx(BL,{isOpen:s})})]}),a.jsxs(L,{ref:t,direction:"column",gap:2,h:"full",w:"full",children:[a.jsx(L,{sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:a.jsx(Nu,{index:r==="images"?0:1,variant:"unstyled",size:"sm",sx:{w:"full"},children:a.jsx($u,{children:a.jsxs(Yn,{isAttached:!0,sx:{w:"full"},children:[a.jsx(Bl,{as:Xt,size:"sm",isChecked:r==="images",onClick:u,sx:{w:"full"},leftIcon:a.jsx(sL,{}),children:"Images"}),a.jsx(Bl,{as:Xt,size:"sm",isChecked:r==="assets",onClick:d,sx:{w:"full"},leftIcon:a.jsx(vL,{}),children:"Assets"})]})})})}),n==="batch"?a.jsx(mK,{}):a.jsx(wK,{})]})]})},_P=f.memo(CK),_K=he([or,Zr,j8,Jn],(e,t,n,r)=>{const{shouldPinGallery:o,shouldShowGallery:s}=t,{galleryImageMinimumWidth:i}=n;return{activeTabName:e,isStaging:r,shouldPinGallery:o,shouldShowGallery:s,galleryImageMinimumWidth:i,isResizable:e!=="unifiedCanvas"}},{memoizeOptions:{resultEqualityCheck:Gt}}),kK=()=>{const e=Z(),{shouldPinGallery:t,shouldShowGallery:n,galleryImageMinimumWidth:r}=$(_K),o=()=>{e(Xg(!1)),t&&e(yo())};Ye("esc",()=>{e(Xg(!1))},{enabled:()=>!t,preventDefault:!0},[t]);const s=32;return Ye("shift+up",()=>{if(r<256){const i=Vs(r+s,32,256);e(Pf(i))}},[r]),Ye("shift+down",()=>{if(r>32){const i=Vs(r-s,32,256);e(Pf(i))}},[r]),t?null:a.jsx(R5,{direction:"right",isResizable:!0,isOpen:n,onClose:o,minWidth:400,children:a.jsx(_P,{})})},jK=f.memo(kK),PK=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:o,formLabelProps:s,tooltip:i,...u}=e;return a.jsx(Cn,{label:i,hasArrow:!0,placement:"top",isDisabled:!i,children:a.jsxs(ws,{isDisabled:n,width:r,display:"flex",alignItems:"center",...o,children:[t&&a.jsx(gs,{my:1,flexGrow:1,sx:{cursor:n?"not-allowed":"pointer",...s==null?void 0:s.sx,pe:4},...s,children:t}),a.jsx(Xv,{...u})]})})},xr=f.memo(PK),IK=he([mt,P8],({system:e,config:t,imageDeletion:n},r)=>{const{shouldConfirmOnDelete:o}=e,{canRestoreDeletedImagesFromBin:s}=t,{imageToDelete:i,isModalOpen:u}=n;return{shouldConfirmOnDelete:o,canRestoreDeletedImagesFromBin:s,imageToDelete:i,imageUsage:r,isModalOpen:u}},Ke),EK=()=>{const e=Z(),{t}=ue(),{shouldConfirmOnDelete:n,canRestoreDeletedImagesFromBin:r,imageToDelete:o,imageUsage:s,isModalOpen:i}=$(IK),u=f.useCallback(g=>e(z4(!g.target.checked)),[e]),d=f.useCallback(()=>{e(dx()),e(I8(!1))},[e]),p=f.useCallback(()=>{!o||!s||(e(dx()),e(E8({imageDTO:o,imageUsage:s})))},[e,o,s]),h=f.useRef(null);return a.jsx(Du,{isOpen:i,onClose:d,leastDestructiveRef:h,isCentered:!0,children:a.jsx(ya,{children:a.jsxs(Au,{children:[a.jsx(va,{fontSize:"lg",fontWeight:"bold",children:t("gallery.deleteImage")}),a.jsx(ba,{children:a.jsxs(L,{direction:"column",gap:3,children:[a.jsx(u_,{imageUsage:s}),a.jsx(Fi,{}),a.jsx(qe,{children:t(r?"gallery.deleteImageBin":"gallery.deleteImagePermanent")}),a.jsx(qe,{children:t("common.areYouSure")}),a.jsx(xr,{label:t("common.dontAskMeAgain"),isChecked:!n,onChange:u})]})}),a.jsxs(ga,{children:[a.jsx(Xt,{ref:h,onClick:d,children:"Cancel"}),a.jsx(Xt,{colorScheme:"error",onClick:p,ml:3,children:"Delete"})]})]})})})},OK=f.memo(EK);function fC(e){for(var t=[],n=1;n{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}},Ke),hC={ok:"green.400",working:"yellow.400",error:"red.400"},mC={ok:"green.600",working:"yellow.500",error:"red.500"},NK=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,statusTranslationKey:o}=$(TK),{t:s}=ue(),i=f.useRef(null),u=f.useMemo(()=>t?"working":e?"ok":"error",[t,e]),d=f.useMemo(()=>{if(n&&r)return` (${n}/${r})`},[n,r]),p=kP(i);return a.jsxs(L,{ref:i,h:"full",px:2,alignItems:"center",gap:5,children:[a.jsx(Ko,{children:p&&a.jsx(Jr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsxs(qe,{sx:{fontSize:"sm",fontWeight:"600",pb:"1px",userSelect:"none",color:mC[u],_dark:{color:hC[u]}},children:[s(o),d]})},"statusText")}),a.jsx(io,{as:Qz,sx:{boxSize:"0.5rem",color:mC[u],_dark:{color:hC[u]}}})]})};function $K(e){return Ve({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 zK(e){return Ve({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58a.49.49 0 00.12-.61l-1.92-3.32a.488.488 0 00-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54a.484.484 0 00-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 00-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"}}]})(e)}function LK(e){return Ve({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 BK(e){return Ve({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 FK(e){return Ve({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 HK(e){return Ve({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 jP(e){return Ve({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 WK=()=>{const{colorMode:e,toggleColorMode:t}=xs(),{t:n}=ue();return a.jsx(je,{"aria-label":n(e==="dark"?"common.lightMode":"common.darkMode"),tooltip:n(e==="dark"?"common.lightMode":"common.darkMode"),size:"sm",icon:e==="dark"?a.jsx(bL,{fontSize:19}):a.jsx(pL,{fontSize:18}),onClick:t,variant:"link"})};function VK(e){const{title:t,hotkey:n,description:r}=e;return a.jsxs(Mi,{sx:{gridTemplateColumns:"auto max-content",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs(Mi,{children:[a.jsx(qe,{fontWeight:600,children:t}),r&&a.jsx(qe,{sx:{fontSize:"sm"},variant:"subtext",children:r})]}),a.jsx($e,{sx:{fontSize:"sm",fontWeight:600,px:2,py:1},children:n})]})}function UK({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Ws(),{t:o}=ue(),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.pinOptions.title"),desc:o("hotkeys.pinOptions.desc"),hotkey:"Shift+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"}],u=[{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.toggleGalleryPin.title"),desc:o("hotkeys.toggleGalleryPin.desc"),hotkey:"Shift+G"},{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"}],d=[{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=h=>a.jsx(L,{flexDir:"column",gap:4,children:h.map((g,v)=>a.jsxs(L,{flexDir:"column",px:2,gap:4,children:[a.jsx(VK,{title:g.title,description:g.desc,hotkey:g.hotkey}),v{const{data:t}=O8(),n=f.useRef(null),r=kP(n);return a.jsxs(L,{alignItems:"center",gap:3,ps:1,ref:n,children:[a.jsx(rc,{src:R4,alt:"invoke-ai-logo",sx:{w:"32px",h:"32px",minW:"32px",minH:"32px",userSelect:"none"}}),a.jsxs(L,{sx:{gap:3,alignItems:"center"},children:[a.jsxs(qe,{sx:{fontSize:"xl",userSelect:"none"},children:["invoke ",a.jsx("strong",{children:"ai"})]}),a.jsx(Ko,{children:e&&r&&t&&a.jsx(Jr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsx(qe,{sx:{fontWeight:600,marginTop:1,color:"base.300",fontSize:14},variant:"subtext",children:t.version})},"statusText")})]})]})};function GK(e){return Ve({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)}function qK(e){return Ve({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M478.33 433.6l-90-218a22 22 0 00-40.67 0l-90 218a22 22 0 1040.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 00458 464a22 22 0 0020.32-30.4zM334.83 362L368 281.65 401.17 362zm-66.99-19.08a22 22 0 00-4.89-30.7c-.2-.15-15-11.13-36.49-34.73 39.65-53.68 62.11-114.75 71.27-143.49H330a22 22 0 000-44H214V70a22 22 0 00-44 0v20H54a22 22 0 000 44h197.25c-9.52 26.95-27.05 69.5-53.79 108.36-31.41-41.68-43.08-68.65-43.17-68.87a22 22 0 00-40.58 17c.58 1.38 14.55 34.23 52.86 83.93.92 1.19 1.83 2.35 2.74 3.51-39.24 44.35-77.74 71.86-93.85 80.74a22 22 0 1021.07 38.63c2.16-1.18 48.6-26.89 101.63-85.59 22.52 24.08 38 35.44 38.93 36.1a22 22 0 0030.75-4.9z"}}]})(e)}const KK={ar:pr.t("common.langArabic",{lng:"ar"}),nl:pr.t("common.langDutch",{lng:"nl"}),en:pr.t("common.langEnglish",{lng:"en"}),fr:pr.t("common.langFrench",{lng:"fr"}),de:pr.t("common.langGerman",{lng:"de"}),he:pr.t("common.langHebrew",{lng:"he"}),it:pr.t("common.langItalian",{lng:"it"}),ja:pr.t("common.langJapanese",{lng:"ja"}),ko:pr.t("common.langKorean",{lng:"ko"}),pl:pr.t("common.langPolish",{lng:"pl"}),pt_BR:pr.t("common.langBrPortuguese",{lng:"pt_BR"}),pt:pr.t("common.langPortuguese",{lng:"pt"}),ru:pr.t("common.langRussian",{lng:"ru"}),zh_CN:pr.t("common.langSimplifiedChinese",{lng:"zh_CN"}),es:pr.t("common.langSpanish",{lng:"es"}),uk:pr.t("common.langUkranian",{lng:"ua"})};function QK(){const{t:e}=ue(),t=Z(),n=$(L4);return a.jsxs(Mu,{closeOnSelect:!1,children:[a.jsx(Cn,{label:e("common.languagePickerLabel"),hasArrow:!0,children:a.jsx(Ru,{as:qa,icon:a.jsx(qK,{}),variant:"link","aria-label":e("common.languagePickerLabel"),fontSize:22,minWidth:8})}),a.jsx(ic,{children:a.jsx(Uv,{value:n,children:Ss(KK,(r,o)=>a.jsx(iu,{value:o,onClick:()=>t(M8(o)),children:r},o))})})]})}const YK=e=>{const{tooltip:t,inputRef:n,label:r,disabled:o,required:s,...i}=e,u=tP();return a.jsx(Cn,{label:t,placement:"top",hasArrow:!0,children:a.jsx(B1,{label:r?a.jsx(ws,{isRequired:s,isDisabled:o,children:a.jsx(gs,{children:r})}):void 0,disabled:o,ref:n,styles:u,...i})})},Co=f.memo(YK);function sa(e){const{t}=ue(),{label:n,textProps:r,useBadge:o=!1,badgeLabel:s=t("settings.experimental"),badgeProps:i,...u}=e;return a.jsxs(L,{justifyContent:"space-between",py:1,children:[a.jsxs(L,{gap:2,alignItems:"center",children:[a.jsx(qe,{sx:{fontSize:14,_dark:{color:"base.300"}},...r,children:n}),o&&a.jsx(Za,{size:"xs",sx:{px:2,color:"base.700",bg:"accent.200",_dark:{bg:"accent.500",color:"base.200"}},...i,children:s})]}),a.jsx(xr,{...u})]})}function XK(){const e=Z(),{data:t,refetch:n}=R8(),[r,{isLoading:o}]=D8(),s=f.useCallback(()=>{r().unwrap().then(u=>{e(A8()),e(vv()),e(Bn({title:`Cleared ${u} intermediates`,status:"info"}))})},[r,e]);f.useEffect(()=>{n()},[n]);const i=t?`Clear ${t} Intermediate${t>1?"s":""}`:"No Intermediates to Clear";return a.jsxs(bl,{children:[a.jsx(zs,{size:"sm",children:"Clear Intermediates"}),a.jsx(Xt,{colorScheme:"warning",onClick:s,isLoading:o,isDisabled:!t,children:i}),a.jsx(qe,{fontWeight:"bold",children:"Clearing intermediates will reset your Canvas and ControlNet state."}),a.jsx(qe,{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(qe,{variant:"subtext",children:"Your gallery images will not be deleted."})]})}const JK=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:u,base800:d,base900:p,accent200:h,accent300:g,accent400:v,accent500:b,accent600:S}=F1(),{colorMode:x}=xs(),[C]=ec("shadows",["dark-lg"]);return f.useCallback(()=>({label:{color:Me(u,r)(x)},separatorLabel:{color:Me(s,s)(x),"::after":{borderTopColor:Me(r,u)(x)}},searchInput:{":placeholder":{color:Me(r,u)(x)}},input:{backgroundColor:Me(e,p)(x),borderWidth:"2px",borderColor:Me(n,d)(x),color:Me(p,t)(x),paddingRight:24,fontWeight:600,"&:hover":{borderColor:Me(r,i)(x)},"&:focus":{borderColor:Me(g,S)(x)},"&:is(:focus, :hover)":{borderColor:Me(o,s)(x)},"&:focus-within":{borderColor:Me(h,S)(x)},"&[data-disabled]":{backgroundColor:Me(r,u)(x),color:Me(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:Me(n,d)(x),color:Me(p,t)(x),button:{color:Me(p,t)(x)},"&:hover":{backgroundColor:Me(r,u)(x),cursor:"pointer"}},dropdown:{backgroundColor:Me(n,d)(x),borderColor:Me(n,d)(x),boxShadow:C},item:{backgroundColor:Me(n,d)(x),color:Me(d,n)(x),padding:6,"&[data-hovered]":{color:Me(p,t)(x),backgroundColor:Me(r,u)(x)},"&[data-active]":{backgroundColor:Me(r,u)(x),"&:hover":{color:Me(p,t)(x),backgroundColor:Me(r,u)(x)}},"&[data-selected]":{backgroundColor:Me(v,S)(x),color:Me(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:Me(b,b)(x),color:Me("white",e)(x)}},"&[data-disabled]":{color:Me(s,i)(x),cursor:"not-allowed"}},rightSection:{width:24,padding:20,button:{color:Me(p,t)(x)}}}),[h,g,v,b,S,t,n,r,o,e,s,i,u,d,p,C,x])},ZK=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,label:o,disabled:s,...i}=e,u=Z(),d=f.useCallback(g=>{g.shiftKey&&u(Go(!0))},[u]),p=f.useCallback(g=>{g.shiftKey||u(Go(!1))},[u]),h=JK();return a.jsx(Cn,{label:n,placement:"top",hasArrow:!0,isOpen:!0,children:a.jsx(Qj,{label:o?a.jsx(ws,{isDisabled:s,children:a.jsx(gs,{children:o})}):void 0,ref:r,disabled:s,onKeyDown:d,onKeyUp:p,searchable:t,maxDropdownHeight:300,styles:h,...i})})},eQ=f.memo(ZK),tQ=Ss(B4,e=>({value:e,label:F4[e]})).sort((e,t)=>e.label.localeCompare(t.label));function nQ(){const e=Z(),{t}=ue(),n=$(o=>o.ui.favoriteSchedulers),r=f.useCallback(o=>{e(T8(o))},[e]);return a.jsx(eQ,{label:t("settings.favoriteSchedulers"),value:n,data:tQ,onChange:r,clearable:!0,searchable:!0,maxSelectedValues:99,placeholder:t("settings.favoriteSchedulersPlaceholder")})}const rQ=he([xo,Zr],(e,t)=>{const{shouldConfirmOnDelete:n,enableImageDebugging:r,consoleLogLevel:o,shouldLogToConsole:s,shouldAntialiasProgressImage:i,isNodesEnabled:u}=e,{shouldUseCanvasBetaLayout:d,shouldUseSliders:p,shouldShowProgressInViewer:h,shouldShowAdvancedOptions:g}=t;return{shouldConfirmOnDelete:n,enableImageDebugging:r,shouldUseCanvasBetaLayout:d,shouldUseSliders:p,shouldShowProgressInViewer:h,consoleLogLevel:o,shouldLogToConsole:s,shouldAntialiasProgressImage:i,shouldShowAdvancedOptions:g,isNodesEnabled:u}},{memoizeOptions:{resultEqualityCheck:Gt}}),oQ=({children:e,config:t})=>{const n=Z(),{t:r}=ue(),o=(t==null?void 0:t.shouldShowBetaLayout)??!0,s=(t==null?void 0:t.shouldShowDeveloperSettings)??!0,i=(t==null?void 0:t.shouldShowResetWebUiText)??!0,u=(t==null?void 0:t.shouldShowAdvancedOptionsSettings)??!0,d=(t==null?void 0:t.shouldShowClearIntermediates)??!0,p=(t==null?void 0:t.shouldShowNodesToggle)??!0;f.useEffect(()=>{s||n(fx(!1))},[s,n]);const{isOpen:h,onOpen:g,onClose:v}=Ws(),{isOpen:b,onOpen:S,onClose:x}=Ws(),{shouldConfirmOnDelete:C,enableImageDebugging:_,shouldUseCanvasBetaLayout:k,shouldUseSliders:P,shouldShowProgressInViewer:I,consoleLogLevel:E,shouldLogToConsole:O,shouldAntialiasProgressImage:R,shouldShowAdvancedOptions:D,isNodesEnabled:T}=$(rQ),B=f.useCallback(()=>{Object.keys(window.localStorage).forEach(N=>{(N8.includes(N)||N.startsWith($8))&&localStorage.removeItem(N)}),v(),S()},[v,S]),W=f.useCallback(N=>{n(z8(N))},[n]),J=f.useCallback(N=>{n(fx(N.target.checked))},[n]),F=f.useCallback(N=>{n(L8(N.target.checked))},[n]);return a.jsxs(a.Fragment,{children:[f.cloneElement(e,{onClick:g}),a.jsxs(lu,{isOpen:h,onClose:v,size:"2xl",isCentered:!0,children:[a.jsx(ya,{}),a.jsxs(cu,{children:[a.jsx(va,{bg:"none",children:r("common.settingsLabel")}),a.jsx(Gv,{}),a.jsx(ba,{children:a.jsxs(L,{sx:{gap:4,flexDirection:"column"},children:[a.jsxs(bl,{children:[a.jsx(zs,{size:"sm",children:r("settings.general")}),a.jsx(sa,{label:r("settings.confirmOnDelete"),isChecked:C,onChange:N=>n(z4(N.target.checked))}),u&&a.jsx(sa,{label:r("settings.showAdvancedOptions"),isChecked:D,onChange:N=>n(B8(N.target.checked))})]}),a.jsxs(bl,{children:[a.jsx(zs,{size:"sm",children:r("settings.generation")}),a.jsx(nQ,{})]}),a.jsxs(bl,{children:[a.jsx(zs,{size:"sm",children:r("settings.ui")}),a.jsx(sa,{label:r("settings.useSlidersForAll"),isChecked:P,onChange:N=>n(F8(N.target.checked))}),a.jsx(sa,{label:r("settings.showProgressInViewer"),isChecked:I,onChange:N=>n(H4(N.target.checked))}),a.jsx(sa,{label:r("settings.antialiasProgressImages"),isChecked:R,onChange:N=>n(H8(N.target.checked))}),o&&a.jsx(sa,{label:r("settings.alternateCanvasLayout"),useBadge:!0,badgeLabel:r("settings.beta"),isChecked:k,onChange:N=>n(W8(N.target.checked))}),p&&a.jsx(sa,{label:r("settings.enableNodesEditor"),useBadge:!0,isChecked:T,onChange:F})]}),s&&a.jsxs(bl,{children:[a.jsx(zs,{size:"sm",children:r("settings.developer")}),a.jsx(sa,{label:r("settings.shouldLogToConsole"),isChecked:O,onChange:J}),a.jsx(Co,{disabled:!O,label:r("settings.consoleLogLevel"),onChange:W,value:E,data:V8.concat()}),a.jsx(sa,{label:r("settings.enableImageDebugging"),isChecked:_,onChange:N=>n(U8(N.target.checked))})]}),d&&a.jsx(XK,{}),a.jsxs(bl,{children:[a.jsx(zs,{size:"sm",children:r("settings.resetWebUI")}),a.jsx(Xt,{colorScheme:"error",onClick:B,children:r("settings.resetWebUI")}),i&&a.jsxs(a.Fragment,{children:[a.jsx(qe,{variant:"subtext",children:r("settings.resetWebUIDesc1")}),a.jsx(qe,{variant:"subtext",children:r("settings.resetWebUIDesc2")})]})]})]})}),a.jsx(ga,{children:a.jsx(Xt,{onClick:v,children:r("common.close")})})]})]}),a.jsxs(lu,{closeOnOverlayClick:!1,isOpen:b,onClose:x,isCentered:!0,children:[a.jsx(ya,{backdropFilter:"blur(40px)"}),a.jsxs(cu,{children:[a.jsx(va,{}),a.jsx(ba,{children:a.jsx(L,{justifyContent:"center",children:a.jsx(qe,{fontSize:"lg",children:a.jsx(qe,{children:r("settings.resetComplete")})})})}),a.jsx(ga,{})]})]})]})},bl=e=>a.jsx(L,{sx:{flexDirection:"column",gap:2,p:4,borderRadius:"base",bg:"base.100",_dark:{bg:"base.900"}},children:e.children}),sQ=()=>{const{t:e}=ue(),t=yr("localization").isFeatureEnabled,n=yr("bugLink").isFeatureEnabled,r=yr("discordLink").isFeatureEnabled,o=yr("githubLink").isFeatureEnabled;return a.jsxs(L,{sx:{gap:2,alignItems:"center"},children:[a.jsx(PP,{}),a.jsx(Bi,{}),a.jsx(NK,{}),a.jsx(UK,{children:a.jsx(je,{"aria-label":e("common.hotkeysLabel"),tooltip:e("common.hotkeysLabel"),size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:a.jsx(lL,{})})}),t&&a.jsx(QK,{}),n&&a.jsx(Qa,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI/issues",marginBottom:"-0.25rem",children:a.jsx(je,{"aria-label":e("common.reportBugLabel"),tooltip:e("common.reportBugLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:a.jsx(qz,{})})}),o&&a.jsx(Qa,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI",marginBottom:"-0.25rem",children:a.jsx(je,{"aria-label":e("common.githubLabel"),tooltip:e("common.githubLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:a.jsx(Bz,{})})}),r&&a.jsx(Qa,{isExternal:!0,href:"https://discord.gg/ZmtBAhwWhy",marginBottom:"-0.25rem",children:a.jsx(je,{"aria-label":e("common.discordLabel"),tooltip:e("common.discordLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:a.jsx(Lz,{})})}),a.jsx(WK,{}),a.jsx(oQ,{children:a.jsx(je,{"aria-label":e("common.settingsLabel"),tooltip:e("common.settingsLabel"),variant:"link","data-variant":"link",fontSize:22,size:"sm",icon:a.jsx(zK,{})})})]})},aQ=f.memo(sQ),iQ=he(xo,e=>{const{isUploading:t}=e;let n="";return t&&(n="Uploading..."),{tooltip:n,shouldShow:t}}),lQ=()=>{const{shouldShow:e,tooltip:t}=$(iQ);return e?a.jsx(L,{sx:{alignItems:"center",justifyContent:"center",color:"base.600"},children:a.jsx(Cn,{label:t,placement:"right",hasArrow:!0,children:a.jsx(oc,{})})}):null},cQ=f.memo(lQ),qi=e=>e.config,{createElement:Gl,createContext:uQ,forwardRef:IP,useCallback:La,useContext:EP,useEffect:ha,useImperativeHandle:OP,useLayoutEffect:dQ,useMemo:fQ,useRef:Ho,useState:nu}=fv,gC=fv["useId".toString()],pQ=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Fp=pQ?dQ:()=>{},hQ=typeof gC=="function"?gC:()=>null;let mQ=0;function K1(e=null){const t=hQ(),n=Ho(e||t||null);return n.current===null&&(n.current=""+mQ++),n.current}const Dh=uQ(null);Dh.displayName="PanelGroupContext";function MP({children:e=null,className:t="",collapsedSize:n=0,collapsible:r=!1,defaultSize:o=null,forwardedRef:s,id:i=null,maxSize:u=100,minSize:d=10,onCollapse:p=null,onResize:h=null,order:g=null,style:v={},tagName:b="div"}){const S=EP(Dh);if(S===null)throw Error("Panel components must be rendered within a PanelGroup container");const x=K1(i),{collapsePanel:C,expandPanel:_,getPanelStyle:k,registerPanel:P,resizePanel:I,unregisterPanel:E}=S,O=Ho({onCollapse:p,onResize:h});if(ha(()=>{O.current.onCollapse=p,O.current.onResize=h}),d<0||d>100)throw Error(`Panel minSize must be between 0 and 100, but was ${d}`);if(u<0||u>100)throw Error(`Panel maxSize must be between 0 and 100, but was ${u}`);if(o!==null){if(o<0||o>100)throw Error(`Panel defaultSize must be between 0 and 100, but was ${o}`);d>o&&!r&&(console.error(`Panel minSize ${d} cannot be greater than defaultSize ${o}`),o=d)}const R=k(x,o),D=Ho({size:vC(R)}),T=Ho({callbacksRef:O,collapsedSize:n,collapsible:r,defaultSize:o,id:x,maxSize:u,minSize:d,order:g});return Fp(()=>{D.current.size=vC(R),T.current.callbacksRef=O,T.current.collapsedSize=n,T.current.collapsible=r,T.current.defaultSize=o,T.current.id=x,T.current.maxSize=u,T.current.minSize=d,T.current.order=g}),Fp(()=>(P(x,T),()=>{E(x)}),[g,x,P,E]),OP(s,()=>({collapse:()=>C(x),expand:()=>_(x),getCollapsed(){return D.current.size===0},getSize(){return D.current.size},resize:B=>I(x,B)}),[C,_,x,I]),Gl(b,{children:e,className:t,"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-id":x,"data-panel-size":parseFloat(""+R.flexGrow).toFixed(1),id:`data-panel-id-${x}`,style:{...R,...v}})}const gu=IP((e,t)=>Gl(MP,{...e,forwardedRef:t}));MP.displayName="Panel";gu.displayName="forwardRef(Panel)";function vC(e){const{flexGrow:t}=e;return typeof t=="string"?parseFloat(t):t}const $i=10;function Uc(e,t,n,r,o,s,i,u){const{sizes:d}=u||{},p=d||s;if(o===0)return p;const h=Fo(t),g=p.concat();let v=0;{const x=o<0?r:n,C=h.findIndex(I=>I.current.id===x),_=h[C],k=p[C],P=yC(_,Math.abs(o),k,e);if(k===P)return p;P===0&&k>0&&i.set(x,k),o=o<0?k-P:P-k}let b=o<0?n:r,S=h.findIndex(x=>x.current.id===b);for(;;){const x=h[S],C=p[S],_=Math.abs(o)-Math.abs(v),k=yC(x,0-_,C,e);if(C!==k&&(k===0&&C>0&&i.set(x.current.id,C),v+=C-k,g[S]=k,v.toPrecision($i).localeCompare(Math.abs(o).toPrecision($i),void 0,{numeric:!0})>=0))break;if(o<0){if(--S<0)break}else if(++S>=h.length)break}return v===0?p:(b=o<0?r:n,S=h.findIndex(x=>x.current.id===b),g[S]=p[S]+v,g)}function vl(e,t,n){t.forEach((r,o)=>{const{callbacksRef:s,collapsedSize:i,collapsible:u,id:d}=e[o].current,p=n[d];if(p!==r){n[d]=r;const{onCollapse:h,onResize:g}=s.current;g&&g(r,p),u&&h&&((p==null||p===i)&&r!==i?h(!1):p!==i&&r===i&&h(!0))}})}function Ng(e,t){if(t.length<2)return[null,null];const n=t.findIndex(i=>i.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 RP(e,t,n){if(e.size===1)return"100";const o=Fo(e).findIndex(i=>i.current.id===t),s=n[o];return s==null?"0":s.toPrecision($i)}function gQ(e){const t=document.querySelector(`[data-panel-id="${e}"]`);return t||null}function Q1(e){const t=document.querySelector(`[data-panel-group-id="${e}"]`);return t||null}function Ah(e){const t=document.querySelector(`[data-panel-resize-handle-id="${e}"]`);return t||null}function vQ(e){return DP().findIndex(r=>r.getAttribute("data-panel-resize-handle-id")===e)??null}function DP(){return Array.from(document.querySelectorAll("[data-panel-resize-handle-id]"))}function AP(e){return Array.from(document.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function Y1(e,t,n){var d,p,h,g;const r=Ah(t),o=AP(e),s=r?o.indexOf(r):-1,i=((p=(d=n[s])==null?void 0:d.current)==null?void 0:p.id)??null,u=((g=(h=n[s+1])==null?void 0:h.current)==null?void 0:g.id)??null;return[i,u]}function Fo(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 yC(e,t,n,r){var h;const o=n+t,{collapsedSize:s,collapsible:i,maxSize:u,minSize:d}=e.current;if(i){if(n>s){if(o<=d/2+s)return s}else if(!((h=r==null?void 0:r.type)==null?void 0:h.startsWith("key"))&&o{const{direction:i,panels:u}=e.current,d=Q1(t),{height:p,width:h}=d.getBoundingClientRect(),v=AP(t).map(b=>{const S=b.getAttribute("data-panel-resize-handle-id"),x=Fo(u),[C,_]=Y1(t,S,x);if(C==null||_==null)return()=>{};let k=0,P=100,I=0,E=0;x.forEach(W=>{W.current.id===C?(P=W.current.maxSize,k=W.current.minSize):(I+=W.current.minSize,E+=W.current.maxSize)});const O=Math.min(P,100-I),R=Math.max(k,(x.length-1)*100-E),D=RP(u,C,o);b.setAttribute("aria-valuemax",""+Math.round(O)),b.setAttribute("aria-valuemin",""+Math.round(R)),b.setAttribute("aria-valuenow",""+Math.round(parseInt(D)));const T=W=>{if(!W.defaultPrevented)switch(W.key){case"Enter":{W.preventDefault();const J=x.findIndex(F=>F.current.id===C);if(J>=0){const F=x[J],N=o[J];if(N!=null){let G=0;N.toPrecision($i)<=F.current.minSize.toPrecision($i)?G=i==="horizontal"?h:p:G=-(i==="horizontal"?h:p);const K=Uc(W,u,C,_,G,o,s.current,null);o!==K&&r(K)}}break}}};b.addEventListener("keydown",T);const B=gQ(C);return B!=null&&b.setAttribute("aria-controls",B.id),()=>{b.removeAttribute("aria-valuemax"),b.removeAttribute("aria-valuemin"),b.removeAttribute("aria-valuenow"),b.removeEventListener("keydown",T),B!=null&&b.removeAttribute("aria-controls")}});return()=>{v.forEach(b=>b())}},[e,t,n,s,r,o])}function bQ({disabled:e,handleId:t,resizeHandler:n}){ha(()=>{if(e||n==null)return;const r=Ah(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=DP(),u=vQ(t);TP(u!==null);const d=s.shiftKey?u>0?u-1:i.length-1:u+1{r.removeEventListener("keydown",o)}},[e,t,n])}function xQ(e,t){if(e.length!==t.length)return!1;for(let n=0;nR.current.id===I),O=r[E];if(O.current.collapsible){const R=h[E];(R===0||R.toPrecision($i)===O.current.minSize.toPrecision($i))&&(_=_<0?-O.current.minSize*S:O.current.minSize*S)}return _}else return NP(e,n,o,u,d)}function SQ(e){return e.type==="keydown"}function V0(e){return e.type.startsWith("mouse")}function U0(e){return e.type.startsWith("touch")}let G0=null,Si=null;function $P(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 CQ(){Si!==null&&(document.head.removeChild(Si),G0=null,Si=null)}function $g(e){if(G0===e)return;G0=e;const t=$P(e);Si===null&&(Si=document.createElement("style"),document.head.appendChild(Si)),Si.innerHTML=`*{cursor: ${t}!important;}`}function _Q(e,t=10){let n=null;return(...o)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...o)},t)}}function zP(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 LP(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 kQ(e,t,n){const r=LP(e,n);if(r){const o=zP(t);return r[o]??null}return null}function jQ(e,t,n,r){const o=zP(t),s=LP(e,r)||{};s[o]=n;try{r.setItem(`PanelGroup:sizes:${e}`,JSON.stringify(s))}catch(i){console.error(i)}}const zg={};function bC(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 Gc={getItem:e=>(bC(Gc),Gc.getItem(e)),setItem:(e,t)=>{bC(Gc),Gc.setItem(e,t)}};function BP({autoSaveId:e,children:t=null,className:n="",direction:r,disablePointerEventsDuringResize:o=!1,forwardedRef:s,id:i=null,onLayout:u,storage:d=Gc,style:p={},tagName:h="div"}){const g=K1(i),[v,b]=nu(null),[S,x]=nu(new Map),C=Ho(null),_=Ho({onLayout:u});ha(()=>{_.current.onLayout=u});const k=Ho({}),[P,I]=nu([]),E=Ho(new Map),O=Ho(0),R=Ho({direction:r,panels:S,sizes:P});OP(s,()=>({getLayout:()=>{const{sizes:M}=R.current;return M},setLayout:M=>{const U=M.reduce((xe,me)=>xe+me,0);TP(U===100,"Panel sizes must add up to 100%");const{panels:V}=R.current,ee=k.current,ie=Fo(V);I(M),vl(ie,M,ee)}}),[]),Fp(()=>{R.current.direction=r,R.current.panels=S,R.current.sizes=P}),yQ({committedValuesRef:R,groupId:g,panels:S,setSizes:I,sizes:P,panelSizeBeforeCollapse:E}),ha(()=>{const{onLayout:M}=_.current,{panels:U,sizes:V}=R.current;if(V.length>0){M&&M(V);const ee=k.current,ie=Fo(U);vl(ie,V,ee)}},[P]),Fp(()=>{if(R.current.sizes.length===S.size)return;let U=null;if(e){const V=Fo(S);U=kQ(e,V,d)}if(U!=null)I(U);else{const V=Fo(S);let ee=0,ie=0,xe=0;if(V.forEach(me=>{xe+=me.current.minSize,me.current.defaultSize===null?ee++:ie+=me.current.defaultSize}),ie>100)throw new Error("Default panel sizes cannot exceed 100%");if(V.length>1&&ee===0&&ie!==100)throw new Error("Invalid default sizes specified for panels");if(xe>100)throw new Error("Minimum panel sizes cannot exceed 100%");I(V.map(me=>me.current.defaultSize===null?(100-ie)/ee:me.current.defaultSize))}},[e,S,d]),ha(()=>{if(e){if(P.length===0||P.length!==S.size)return;const M=Fo(S);zg[e]||(zg[e]=_Q(jQ,100)),zg[e](e,M,P,d)}},[e,S,P,d]);const D=La((M,U)=>{const{panels:V}=R.current;return V.size===0?{flexBasis:0,flexGrow:U??void 0,flexShrink:1,overflow:"hidden"}:{flexBasis:0,flexGrow:RP(V,M,P),flexShrink:1,overflow:"hidden",pointerEvents:o&&v!==null?"none":void 0}},[v,o,P]),T=La((M,U)=>{x(V=>{if(V.has(M))return V;const ee=new Map(V);return ee.set(M,U),ee})},[]),B=La(M=>V=>{V.preventDefault();const{direction:ee,panels:ie,sizes:xe}=R.current,me=Fo(ie),[ae,te]=Y1(g,M,me);if(ae==null||te==null)return;let H=wQ(V,g,M,me,ee,xe,C.current);if(H===0)return;const pe=Q1(g).getBoundingClientRect(),ne=ee==="horizontal";document.dir==="rtl"&&ne&&(H=-H);const ve=ne?pe.width:pe.height,de=H/ve*100,Ce=Uc(V,ie,ae,te,de,xe,E.current,C.current),Re=!xQ(xe,Ce);if((V0(V)||U0(V))&&O.current!=de&&$g(Re?ne?"horizontal":"vertical":ne?H<0?"horizontal-min":"horizontal-max":H<0?"vertical-min":"vertical-max"),Re){const ge=k.current;I(Ce),vl(me,Ce,ge)}O.current=de},[g]),W=La(M=>{x(U=>{if(!U.has(M))return U;const V=new Map(U);return V.delete(M),V})},[]),J=La(M=>{const{panels:U,sizes:V}=R.current,ee=U.get(M);if(ee==null)return;const{collapsedSize:ie,collapsible:xe}=ee.current;if(!xe)return;const me=Fo(U),ae=me.indexOf(ee);if(ae<0)return;const te=V[ae];if(te===ie)return;E.current.set(M,te);const[H,re]=Ng(M,me);if(H==null||re==null)return;const ne=ae===me.length-1?te:ie-te,ve=Uc(null,U,H,re,ne,V,E.current,null);if(V!==ve){const de=k.current;I(ve),vl(me,ve,de)}},[]),F=La(M=>{const{panels:U,sizes:V}=R.current,ee=U.get(M);if(ee==null)return;const{collapsedSize:ie,minSize:xe}=ee.current,me=E.current.get(M)||xe;if(!me)return;const ae=Fo(U),te=ae.indexOf(ee);if(te<0||V[te]!==ie)return;const[re,pe]=Ng(M,ae);if(re==null||pe==null)return;const ve=te===ae.length-1?ie-me:me,de=Uc(null,U,re,pe,ve,V,E.current,null);if(V!==de){const Ce=k.current;I(de),vl(ae,de,Ce)}},[]),N=La((M,U)=>{const{panels:V,sizes:ee}=R.current,ie=V.get(M);if(ie==null)return;const{collapsedSize:xe,collapsible:me,maxSize:ae,minSize:te}=ie.current,H=Fo(V),re=H.indexOf(ie);if(re<0)return;const pe=ee[re];if(pe===U)return;me&&U===xe||(U=Math.min(ae,Math.max(te,U)));const[ne,ve]=Ng(M,H);if(ne==null||ve==null)return;const Ce=re===H.length-1?pe-U:U-pe,Re=Uc(null,V,ne,ve,Ce,ee,E.current,null);if(ee!==Re){const ge=k.current;I(Re),vl(H,Re,ge)}},[]),G=fQ(()=>({activeHandleId:v,collapsePanel:J,direction:r,expandPanel:F,getPanelStyle:D,groupId:g,registerPanel:T,registerResizeHandle:B,resizePanel:N,startDragging:(M,U)=>{if(b(M),V0(U)||U0(U)){const V=Ah(M);C.current={dragHandleRect:V.getBoundingClientRect(),dragOffset:NP(U,M,r),sizes:R.current.sizes}}},stopDragging:()=>{CQ(),b(null),C.current=null},unregisterPanel:W}),[v,J,r,F,D,g,T,B,N,W]),K={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return Gl(Dh.Provider,{children:Gl(h,{children:t,className:n,"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":g,style:{...K,...p}}),value:G})}const X1=IP((e,t)=>Gl(BP,{...e,forwardedRef:t}));BP.displayName="PanelGroup";X1.displayName="forwardRef(PanelGroup)";function q0({children:e=null,className:t="",disabled:n=!1,id:r=null,onDragging:o,style:s={},tagName:i="div"}){const u=Ho(null),d=Ho({onDragging:o});ha(()=>{d.current.onDragging=o});const p=EP(Dh);if(p===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{activeHandleId:h,direction:g,groupId:v,registerResizeHandle:b,startDragging:S,stopDragging:x}=p,C=K1(r),_=h===C,[k,P]=nu(!1),[I,E]=nu(null),O=La(()=>{u.current.blur(),x();const{onDragging:T}=d.current;T&&T(!1)},[x]);ha(()=>{if(n)E(null);else{const D=b(C);E(()=>D)}},[n,C,b]),ha(()=>{if(n||I==null||!_)return;const D=J=>{I(J)},T=J=>{I(J)},W=u.current.ownerDocument;return W.body.addEventListener("contextmenu",O),W.body.addEventListener("mousemove",D),W.body.addEventListener("touchmove",D),W.body.addEventListener("mouseleave",T),window.addEventListener("mouseup",O),window.addEventListener("touchend",O),()=>{W.body.removeEventListener("contextmenu",O),W.body.removeEventListener("mousemove",D),W.body.removeEventListener("touchmove",D),W.body.removeEventListener("mouseleave",T),window.removeEventListener("mouseup",O),window.removeEventListener("touchend",O)}},[g,n,_,I,O]),bQ({disabled:n,handleId:C,resizeHandler:I});const R={cursor:$P(g),touchAction:"none",userSelect:"none"};return Gl(i,{children:e,className:t,"data-resize-handle-active":_?"pointer":k?"keyboard":void 0,"data-panel-group-direction":g,"data-panel-group-id":v,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":C,onBlur:()=>P(!1),onFocus:()=>P(!0),onMouseDown:D=>{S(C,D.nativeEvent);const{onDragging:T}=d.current;T&&T(!0)},onMouseUp:O,onTouchCancel:O,onTouchEnd:O,onTouchStart:D=>{S(C,D.nativeEvent);const{onDragging:T}=d.current;T&&T(!0)},ref:u,role:"separator",style:{...R,...s},tabIndex:0})}q0.displayName="PanelResizeHandle";const PQ=(e,t,n,r="horizontal")=>{const o=f.useRef(null),[s,i]=f.useState(t),u=f.useCallback(()=>{var p,h;const d=(p=o.current)==null?void 0:p.getSize();d!==void 0&&d{const d=document.querySelector(`[data-panel-group-id="${n}"]`),p=document.querySelectorAll("[data-panel-resize-handle-id]");if(!d)return;const h=new ResizeObserver(()=>{let g=r==="horizontal"?d.getBoundingClientRect().width:d.getBoundingClientRect().height;p.forEach(v=>{g-=r==="horizontal"?v.getBoundingClientRect().width:v.getBoundingClientRect().height}),i(e/g*100)});return h.observe(d),p.forEach(g=>{h.observe(g)}),window.addEventListener("resize",u),()=>{h.disconnect(),window.removeEventListener("resize",u)}},[n,u,s,e,r]),{ref:o,minSizePct:s}},IQ=he([mt],e=>{const{initialImage:t}=e.generation;return{initialImage:t,isResetButtonDisabled:!t}},Ke),EQ=()=>{const{initialImage:e}=$(IQ),{currentData:t,isLoading:n,isError:r,isSuccess:o}=Uo((e==null?void 0:e.imageName)??Xr.skipToken),s=f.useMemo(()=>{if(t)return{id:"initial-image",payloadType:"IMAGE_DTO",payload:{imageDTO:t}}},[t]),i=f.useMemo(()=>({id:"initial-image",actionType:"SET_INITIAL_IMAGE"}),[]);return a.jsx(ri,{imageDTO:t,droppableData:i,draggableData:s,isUploadDisabled:!0,fitContainer:!0,dropLabel:"Set as Initial Image",noContentFallback:a.jsx(Ja,{label:"No initial image selected"})})},OQ=he([mt],e=>{const{initialImage:t}=e.generation;return{isResetButtonDisabled:!t}},Ke),MQ={type:"SET_INITIAL_IMAGE"},RQ=()=>{const{isResetButtonDisabled:e}=$(OQ),t=Z(),{getUploadButtonProps:n,getUploadInputProps:r}=Rh({postUploadAction:MQ}),o=f.useCallback(()=>{t(G8())},[t]);return a.jsxs(L,{layerStyle:"first",sx:{position:"relative",flexDirection:"column",height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",p:4,gap:4},children:[a.jsxs(L,{sx:{w:"full",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},children:[a.jsx(qe,{sx:{fontWeight:600,userSelect:"none",color:"base.700",_dark:{color:"base.200"}},children:"Initial Image"}),a.jsx(Bi,{}),a.jsx(je,{tooltip:"Upload Initial Image","aria-label":"Upload Initial Image",icon:a.jsx(Fu,{}),...n()}),a.jsx(je,{tooltip:"Reset Initial Image","aria-label":"Reset Initial Image",icon:a.jsx(b1,{}),onClick:o,isDisabled:e})]}),a.jsx(EQ,{}),a.jsx("input",{...r()})]})},J1="28rem",FP=e=>{const{sx:t}=e,n=Z(),r=$(i=>i.ui.shouldPinParametersPanel),{t:o}=ue(),s=()=>{n(q8(!r)),n(yo())};return a.jsx(je,{...e,tooltip:o("common.pinOptionsPanel"),"aria-label":o("common.pinOptionsPanel"),onClick:s,icon:r?a.jsx(E_,{}):a.jsx(O_,{}),variant:"ghost",size:"sm",sx:{color:"base.500",_hover:{color:"base.600"},_active:{color:"base.700"},_dark:{color:"base.500",_hover:{color:"base.400"},_active:{color:"base.300"}},...t}})},DQ=he(Zr,e=>{const{shouldPinParametersPanel:t,shouldShowParametersPanel:n}=e;return{shouldPinParametersPanel:t,shouldShowParametersPanel:n}}),AQ=e=>{const{shouldPinParametersPanel:t,shouldShowParametersPanel:n}=$(DQ);return t&&n?a.jsxs($e,{sx:{position:"relative",h:"full",w:J1,flexShrink:0},children:[a.jsx(L,{sx:{gap:2,flexDirection:"column",h:"full",w:"full",position:"absolute",overflowY:"auto"},children:e.children}),a.jsx(FP,{sx:{position:"absolute",top:0,insetInlineEnd:0}})]}):null},Z1=f.memo(AQ),TQ=e=>{const{direction:t="horizontal",...n}=e,{colorMode:r}=xs();return t==="horizontal"?a.jsx(q0,{children:a.jsx(L,{sx:{w:6,h:"full",justifyContent:"center",alignItems:"center"},...n,children:a.jsx($e,{sx:{w:.5,h:"calc(100% - 4px)",bg:Me("base.100","base.850")(r)}})})}):a.jsx(q0,{children:a.jsx(L,{sx:{w:"full",h:6,justifyContent:"center",alignItems:"center"},...n,children:a.jsx($e,{sx:{w:"calc(100% - 4px)",h:.5,bg:Me("base.100","base.850")(r)}})})})},HP=f.memo(TQ),NQ=he([mt],({system:e})=>{const{isProcessing:t,isConnected:n}=e;return n&&!t}),$Q=e=>{const{onClick:t,isDisabled:n}=e,{t:r}=ue(),o=$(NQ);return a.jsx(je,{onClick:t,icon:a.jsx(Xo,{}),tooltip:`${r("gallery.deleteImage")} (Del)`,"aria-label":`${r("gallery.deleteImage")} (Del)`,isDisabled:n||!o,colorScheme:"error"})},zQ=[{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 LQ(){const e=$(r=>r.postprocessing.esrganModelName),t=Z(),n=r=>t(K8(r));return a.jsx(Co,{label:"ESRGAN Model",value:e,itemComponent:ai,onChange:n,data:zQ})}const BQ=e=>{const{imageDTO:t}=e,n=Z(),r=$(Sr),{t:o}=ue(),{isOpen:s,onOpen:i,onClose:u}=Ws(),d=f.useCallback(()=>{u(),t&&n(W4({image_name:t.image_name}))},[n,t,u]);return a.jsx(Wi,{isOpen:s,onClose:u,triggerComponent:a.jsx(je,{onClick:i,icon:a.jsx(Jz,{}),"aria-label":o("parameters.upscale")}),children:a.jsxs(L,{sx:{flexDirection:"column",gap:4},children:[a.jsx(LQ,{}),a.jsx(Xt,{size:"sm",isDisabled:!t||r,onClick:d,children:o("parameters.upscaleImage")})]})})},FQ=he([mt,or],({gallery:e,system:t,ui:n},r)=>{const{isProcessing:o,isConnected:s,shouldConfirmOnDelete:i,progressImage:u}=t,{shouldShowImageDetails:d,shouldHidePreview:p,shouldShowProgressInViewer:h}=n,g=e.selection[e.selection.length-1];return{canDeleteImage:s&&!o,shouldConfirmOnDelete:i,isProcessing:o,isConnected:s,shouldDisableToolbarButtons:!!u||!g,shouldShowImageDetails:d,activeTabName:r,shouldHidePreview:p,shouldShowProgressInViewer:h,lastSelectedImage:g}},{memoizeOptions:{resultEqualityCheck:Gt}}),HQ=e=>{const t=Z(),{isProcessing:n,isConnected:r,shouldDisableToolbarButtons:o,shouldShowImageDetails:s,lastSelectedImage:i,shouldShowProgressInViewer:u}=$(FQ),d=yr("upscaling").isFeatureEnabled,p=tc(),{t:h}=ue(),{recallBothPrompts:g,recallSeed:v,recallAllParameters:b}=U1(),[S,x]=q1(i,500),{currentData:C,isFetching:_}=Uo(i??Xr.skipToken),{currentData:k}=mv(x.isPending()?Xr.skipToken:S??Xr.skipToken),P=k==null?void 0:k.metadata,I=f.useCallback(()=>{b(P)},[P,b]);Ye("a",()=>{},[P,b]);const E=f.useCallback(()=>{v(P==null?void 0:P.seed)},[P==null?void 0:P.seed,v]);Ye("s",E,[C]);const O=f.useCallback(()=>{g(P==null?void 0:P.positive_prompt,P==null?void 0:P.negative_prompt)},[P==null?void 0:P.negative_prompt,P==null?void 0:P.positive_prompt,g]);Ye("p",O,[C]);const R=f.useCallback(()=>{t(yP()),t(pv(C))},[t,C]);Ye("shift+i",R,[C]);const D=f.useCallback(()=>{C&&t(W4({image_name:C.image_name}))},[t,C]),T=f.useCallback(()=>{C&&t(gv(C))},[t,C]);Ye("Shift+U",()=>{D()},{enabled:()=>!!(d&&!o&&r&&!n)},[d,C,o,r,n]);const B=f.useCallback(()=>t(Q8(!s)),[t,s]);Ye("i",()=>{C?B():p({title:h("toast.metadataLoadFailed"),status:"error",duration:2500,isClosable:!0})},[C,s,p]);const W=f.useCallback(()=>{t(H4(!u))},[t,u]);return a.jsx(a.Fragment,{children:a.jsxs(L,{sx:{flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},...e,children:[a.jsx(Yn,{isAttached:!0,isDisabled:o,children:a.jsxs(Mu,{children:[a.jsx(Ru,{as:je,"aria-label":`${h("parameters.sendTo")}...`,tooltip:`${h("parameters.sendTo")}...`,isDisabled:!C,icon:a.jsx(yL,{})}),a.jsx(ic,{motionProps:Cv,children:C&&a.jsx(bP,{imageDTO:C})})]})}),a.jsxs(Yn,{isAttached:!0,isDisabled:o,children:[a.jsx(je,{icon:a.jsx(w_,{}),tooltip:`${h("parameters.usePrompt")} (P)`,"aria-label":`${h("parameters.usePrompt")} (P)`,isDisabled:!(P!=null&&P.positive_prompt),onClick:O}),a.jsx(je,{icon:a.jsx(S_,{}),tooltip:`${h("parameters.useSeed")} (S)`,"aria-label":`${h("parameters.useSeed")} (S)`,isDisabled:!(P!=null&&P.seed),onClick:E}),a.jsx(je,{icon:a.jsx(f_,{}),tooltip:`${h("parameters.useAll")} (A)`,"aria-label":`${h("parameters.useAll")} (A)`,isDisabled:!P,onClick:I})]}),d&&a.jsx(Yn,{isAttached:!0,isDisabled:o,children:d&&a.jsx(BQ,{imageDTO:C})}),a.jsx(Yn,{isAttached:!0,isDisabled:o,children:a.jsx(je,{icon:a.jsx(g1,{}),tooltip:`${h("parameters.info")} (I)`,"aria-label":`${h("parameters.info")} (I)`,isChecked:s,onClick:B})}),a.jsx(Yn,{isAttached:!0,children:a.jsx(je,{"aria-label":h("settings.displayInProgress"),tooltip:h("settings.displayInProgress"),icon:a.jsx(oL,{}),isChecked:u,onClick:W})}),a.jsx(Yn,{isAttached:!0,children:a.jsx($Q,{onClick:T,isDisabled:o})})]})})},WQ=he([mt,T4],(e,t)=>{var _,k;const{data:n,status:r}=Y8.endpoints.listImages.select(t)(e),o=e.gallery.selection[e.gallery.selection.length-1],s=r==="pending";if(!n||!o||n.total===0)return{isFetching:s,queryArgs:t,isOnFirstImage:!0,isOnLastImage:!0};const i={...t,offset:n.ids.length,limit:$4},u=X8.getSelectors(),d=u.selectAll(n),p=d.findIndex(P=>P.image_name===o),h=Vs(p+1,0,d.length-1),g=Vs(p-1,0,d.length-1),v=(_=d[h])==null?void 0:_.image_name,b=(k=d[g])==null?void 0:k.image_name,S=u.selectById(n,v),x=u.selectById(n,b),C=d.length;return{isOnFirstImage:p===0,isOnLastImage:!isNaN(p)&&p===C-1,areMoreImagesAvailable:((n==null?void 0:n.total)??0)>C,isFetching:r==="pending",nextImage:S,prevImage:x,nextImageId:v,prevImageId:b,queryArgs:i}},{memoizeOptions:{resultEqualityCheck:Gt}}),WP=()=>{const e=Z(),{isOnFirstImage:t,isOnLastImage:n,nextImageId:r,prevImageId:o,areMoreImagesAvailable:s,isFetching:i,queryArgs:u}=$(WQ),d=f.useCallback(()=>{o&&e(Rf(o))},[e,o]),p=f.useCallback(()=>{r&&e(Rf(r))},[e,r]),[h]=N4(),g=f.useCallback(()=>{h(u)},[h,u]);return{handlePrevImage:d,handleNextImage:p,isOnFirstImage:t,isOnLastImage:n,nextImageId:r,prevImageId:o,areMoreImagesAvailable:s,handleLoadMoreImages:g,isFetching:i}},as=({label:e,value:t,onClick:n,isLink:r,labelPosition:o,withCopy:s=!1})=>{const{t:i}=ue();return t?a.jsxs(L,{gap:2,children:[n&&a.jsx(Cn,{label:`Recall ${e}`,children:a.jsx(qa,{"aria-label":i("accessibility.useThisParameter"),icon:a.jsx(GK,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),s&&a.jsx(Cn,{label:`Copy ${e}`,children:a.jsx(qa,{"aria-label":`Copy ${e}`,icon:a.jsx(cc,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(t.toString())})}),a.jsxs(L,{direction:o?"column":"row",children:[a.jsxs(qe,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?a.jsxs(Qa,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",a.jsx(__,{mx:"2px"})]}):a.jsx(qe,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}):null},VQ=e=>{const{metadata:t}=e,{recallPositivePrompt:n,recallNegativePrompt:r,recallSeed:o,recallCfgScale:s,recallModel:i,recallScheduler:u,recallSteps:d,recallWidth:p,recallHeight:h,recallStrength:g}=U1(),v=f.useCallback(()=>{n(t==null?void 0:t.positive_prompt)},[t==null?void 0:t.positive_prompt,n]),b=f.useCallback(()=>{r(t==null?void 0:t.negative_prompt)},[t==null?void 0:t.negative_prompt,r]),S=f.useCallback(()=>{o(t==null?void 0:t.seed)},[t==null?void 0:t.seed,o]),x=f.useCallback(()=>{i(t==null?void 0:t.model)},[t==null?void 0:t.model,i]),C=f.useCallback(()=>{p(t==null?void 0:t.width)},[t==null?void 0:t.width,p]),_=f.useCallback(()=>{h(t==null?void 0:t.height)},[t==null?void 0:t.height,h]),k=f.useCallback(()=>{u(t==null?void 0:t.scheduler)},[t==null?void 0:t.scheduler,u]),P=f.useCallback(()=>{d(t==null?void 0:t.steps)},[t==null?void 0:t.steps,d]),I=f.useCallback(()=>{s(t==null?void 0:t.cfg_scale)},[t==null?void 0:t.cfg_scale,s]),E=f.useCallback(()=>{g(t==null?void 0:t.strength)},[t==null?void 0:t.strength,g]);return!t||Object.keys(t).length===0?null:a.jsxs(a.Fragment,{children:[t.generation_mode&&a.jsx(as,{label:"Generation Mode",value:t.generation_mode}),t.positive_prompt&&a.jsx(as,{label:"Positive Prompt",labelPosition:"top",value:t.positive_prompt,onClick:v}),t.negative_prompt&&a.jsx(as,{label:"Negative Prompt",labelPosition:"top",value:t.negative_prompt,onClick:b}),t.seed!==void 0&&a.jsx(as,{label:"Seed",value:t.seed,onClick:S}),t.model!==void 0&&a.jsx(as,{label:"Model",value:t.model.model_name,onClick:x}),t.width&&a.jsx(as,{label:"Width",value:t.width,onClick:C}),t.height&&a.jsx(as,{label:"Height",value:t.height,onClick:_}),t.scheduler&&a.jsx(as,{label:"Scheduler",value:t.scheduler,onClick:k}),t.steps&&a.jsx(as,{label:"Steps",value:t.steps,onClick:P}),t.cfg_scale!==void 0&&a.jsx(as,{label:"CFG scale",value:t.cfg_scale,onClick:I}),t.strength&&a.jsx(as,{label:"Image to image strength",value:t.strength,onClick:E})]})},UQ=e=>{const{copyTooltip:t,jsonObject:n}=e,r=f.useMemo(()=>JSON.stringify(n,null,2),[n]);return a.jsxs(L,{sx:{borderRadius:"base",bg:"whiteAlpha.500",_dark:{bg:"blackAlpha.500"},flexGrow:1,w:"full",h:"full",position:"relative"},children:[a.jsx($e,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"auto",p:4},children:a.jsx(i_,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsx("pre",{children:r})})}),a.jsx(L,{sx:{position:"absolute",top:0,insetInlineEnd:0,p:2},children:a.jsx(Cn,{label:t,children:a.jsx(qa,{"aria-label":t,icon:a.jsx(cc,{}),variant:"ghost",onClick:()=>navigator.clipboard.writeText(r)})})})]})},GQ=({image:e})=>{const[t,n]=q1(e.image_name,500),{currentData:r}=mv(n.isPending()?Xr.skipToken:t??Xr.skipToken),o=r==null?void 0:r.metadata,s=r==null?void 0:r.graph,i=f.useMemo(()=>{const u=[];return o&&u.push({label:"Core Metadata",data:o,copyTooltip:"Copy Core Metadata JSON"}),e&&u.push({label:"Image Details",data:e,copyTooltip:"Copy Image Details JSON"}),s&&u.push({label:"Graph",data:s,copyTooltip:"Copy Graph JSON"}),u},[o,s,e]);return a.jsxs(L,{sx:{padding:4,gap:1,flexDirection:"column",width:"full",height:"full",backdropFilter:"blur(20px)",bg:"baseAlpha.200",_dark:{bg:"blackAlpha.600"},borderRadius:"base",position:"absolute",overflow:"hidden"},children:[a.jsxs(L,{gap:2,children:[a.jsx(qe,{fontWeight:"semibold",children:"File:"}),a.jsxs(Qa,{href:e.image_url,isExternal:!0,maxW:"calc(100% - 3rem)",children:[e.image_name,a.jsx(__,{mx:"2px"})]})]}),a.jsx(VQ,{metadata:o}),a.jsxs(Nu,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsx($u,{children:i.map(u=>a.jsx(Bl,{sx:{borderTopRadius:"base"},children:a.jsx(qe,{sx:{color:"base.700",_dark:{color:"base.300"}},children:u.label})},u.label))}),a.jsx(fh,{sx:{w:"full",h:"full"},children:i.map(u=>a.jsx(dh,{sx:{w:"full",h:"full",p:0,pt:4},children:a.jsx(UQ,{jsonObject:u.data,copyTooltip:u.copyTooltip})},u.label))})]})]})},qQ=f.memo(GQ),Lg={color:"base.100",pointerEvents:"auto"},KQ=()=>{const{t:e}=ue(),{handlePrevImage:t,handleNextImage:n,isOnFirstImage:r,isOnLastImage:o,handleLoadMoreImages:s,areMoreImagesAvailable:i,isFetching:u}=WP();return a.jsxs($e,{sx:{position:"relative",height:"100%",width:"100%"},children:[a.jsx($e,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineStart:0},children:!r&&a.jsx(qa,{"aria-label":e("accessibility.previousImage"),icon:a.jsx(Wz,{size:64}),variant:"unstyled",onClick:t,boxSize:16,sx:Lg})}),a.jsxs($e,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineEnd:0},children:[!o&&a.jsx(qa,{"aria-label":e("accessibility.nextImage"),icon:a.jsx(Vz,{size:64}),variant:"unstyled",onClick:n,boxSize:16,sx:Lg}),o&&i&&!u&&a.jsx(qa,{"aria-label":e("accessibility.loadMore"),icon:a.jsx(Hz,{size:64}),variant:"unstyled",onClick:s,boxSize:16,sx:Lg}),o&&i&&u&&a.jsx(L,{sx:{w:16,h:16,alignItems:"center",justifyContent:"center"},children:a.jsx(oc,{opacity:.5,size:"xl"})})]})]})},QQ=f.memo(KQ),YQ=he([mt,J8],({ui:e,system:t},n)=>{const{shouldShowImageDetails:r,shouldHidePreview:o,shouldShowProgressInViewer:s}=e,{progressImage:i,shouldAntialiasProgressImage:u}=t;return{shouldShowImageDetails:r,shouldHidePreview:o,imageName:n,progressImage:i,shouldShowProgressInViewer:s,shouldAntialiasProgressImage:u}},{memoizeOptions:{resultEqualityCheck:Gt}}),XQ=()=>{const{shouldShowImageDetails:e,imageName:t,progressImage:n,shouldShowProgressInViewer:r,shouldAntialiasProgressImage:o}=$(YQ),{handlePrevImage:s,handleNextImage:i,prevImageId:u,nextImageId:d,isOnLastImage:p,handleLoadMoreImages:h,areMoreImagesAvailable:g,isFetching:v}=WP();Ye("left",()=>{s()},[u]),Ye("right",()=>{if(p&&g&&!v){h();return}p||i()},[d,p,g,h,v]);const{currentData:b,isLoading:S,isError:x,isSuccess:C}=Uo(t??Xr.skipToken),_=f.useMemo(()=>{if(b)return{id:"current-image",payloadType:"IMAGE_DTO",payload:{imageDTO:b}}},[b]),k=f.useMemo(()=>({id:"current-image",actionType:"SET_CURRENT_IMAGE"}),[]),[P,I]=f.useState(!1),E=f.useRef(0),O=f.useCallback(()=>{I(!0),window.clearTimeout(E.current)},[]),R=f.useCallback(()=>{E.current=window.setTimeout(()=>{I(!1)},500)},[]);return a.jsxs(L,{onMouseOver:O,onMouseOut:R,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative"},children:[n&&r?a.jsx(rc,{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(ri,{imageDTO:b,droppableData:k,draggableData:_,isUploadDisabled:!0,fitContainer:!0,useThumbailFallback:!0,dropLabel:"Set as Current Image",noContentFallback:a.jsx(Ja,{icon:Ti,label:"No image selected"})}),e&&b&&a.jsx($e,{sx:{position:"absolute",top:"0",width:"full",height:"full",borderRadius:"base"},children:a.jsx(qQ,{image:b})}),a.jsx(Ko,{children:!e&&b&&P&&a.jsx(Jr.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(QQ,{})},"nextPrevButtons")})]})},JQ=f.memo(XQ),ZQ=()=>a.jsxs(L,{sx:{position:"relative",flexDirection:"column",height:"100%",width:"100%",rowGap:4,alignItems:"center",justifyContent:"center"},children:[a.jsx(HQ,{}),a.jsx(JQ,{})]}),VP=()=>a.jsx($e,{layerStyle:"first",sx:{position:"relative",width:"100%",height:"100%",p:4,borderRadius:"base"},children:a.jsx(L,{sx:{width:"100%",height:"100%"},children:a.jsx(ZQ,{})})}),eY=e=>{const{label:t,activeLabel:n,children:r,defaultIsOpen:o=!1}=e,{isOpen:s,onToggle:i}=Ws({defaultIsOpen:o}),{colorMode:u}=xs();return a.jsxs($e,{children:[a.jsxs(L,{onClick:i,sx:{alignItems:"center",p:2,px:4,gap:2,borderTopRadius:"base",borderBottomRadius:s?0:"base",bg:s?Me("base.200","base.750")(u):Me("base.150","base.800")(u),color:Me("base.900","base.100")(u),_hover:{bg:s?Me("base.250","base.700")(u):Me("base.200","base.750")(u)},fontSize:"sm",fontWeight:600,cursor:"pointer",transitionProperty:"common",transitionDuration:"normal",userSelect:"none"},children:[t,a.jsx(Ko,{children:n&&a.jsx(Jr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(qe,{sx:{color:"accent.500",_dark:{color:"accent.300"}},children:n})},"statusText")}),a.jsx(Bi,{}),a.jsx(w1,{sx:{w:"1rem",h:"1rem",transform:s?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]}),a.jsx(nh,{in:s,animateOpacity:!0,style:{overflow:"unset"},children:a.jsx($e,{sx:{p:4,borderBottomRadius:"base",bg:"base.100",_dark:{bg:"base.800"}},children:r})})]})},Ro=f.memo(eY),tY=he(mt,e=>{const{combinatorial:t,isEnabled:n}=e.dynamicPrompts;return{combinatorial:t,isDisabled:!n}},Ke),nY=()=>{const{combinatorial:e,isDisabled:t}=$(tY),n=Z(),r=f.useCallback(()=>{n(Z8())},[n]);return a.jsx(xr,{isDisabled:t,label:"Combinatorial Generation",isChecked:e,onChange:r})},rY=he(mt,e=>{const{isEnabled:t}=e.dynamicPrompts;return{isEnabled:t}},Ke),oY=()=>{const e=Z(),{isEnabled:t}=$(rY),n=f.useCallback(()=>{e(e7())},[e]);return a.jsx(xr,{label:"Enable Dynamic Prompts",isChecked:t,onChange:n})},sY=he(mt,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}},Ke),aY=()=>{const{maxPrompts:e,min:t,sliderMax:n,inputMax:r,isDisabled:o}=$(sY),s=Z(),i=f.useCallback(d=>{s(t7(d))},[s]),u=f.useCallback(()=>{s(n7())},[s]);return a.jsx(Ct,{label:"Max Prompts",isDisabled:o,min:t,max:n,value:e,onChange:i,sliderNumberInputProps:{max:r},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},iY=he(mt,e=>{const{isEnabled:t}=e.dynamicPrompts;return{activeLabel:t?"Enabled":void 0}},Ke),ey=()=>{const{activeLabel:e}=$(iY);return yr("dynamicPrompting").isFeatureEnabled?a.jsx(Ro,{label:"Dynamic Prompts",activeLabel:e,children:a.jsxs(L,{sx:{gap:2,flexDir:"column"},children:[a.jsx(oY,{}),a.jsx(nY,{}),a.jsx(aY,{})]})}):null},lY=e=>{const t=Z(),{lora:n}=e,r=f.useCallback(i=>{t(r7({id:n.id,weight:i}))},[t,n.id]),o=f.useCallback(()=>{t(o7(n.id))},[t,n.id]),s=f.useCallback(()=>{t(s7(n.id))},[t,n.id]);return a.jsxs(L,{sx:{gap:2.5,alignItems:"flex-end"},children:[a.jsx(Ct,{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]}),a.jsx(je,{size:"sm",onClick:s,tooltip:"Remove LoRA","aria-label":"Remove LoRA",icon:a.jsx(Xo,{}),colorScheme:"error"})]})},cY=f.memo(lY),uY=he(mt,({lora:e})=>{const{loras:t}=e;return{loras:t}},Ke),dY=()=>{const{loras:e}=$(uY);return Ss(e,t=>a.jsx(cY,{lora:t},t.model_name))},Mr={"sd-1":"Stable Diffusion 1.x","sd-2":"Stable Diffusion 2.x",sdxl:"Stable Diffusion XL","sdxl-refiner":"Stable Diffusion XL Refiner"},fY=he(mt,({lora:e})=>({loras:e.loras}),Ke),pY=()=>{const e=Z(),{loras:t}=$(fY),{data:n}=V4(),r=$(i=>i.generation.model),o=f.useMemo(()=>{if(!n)return[];const i=[];return Qo(n.entities,(u,d)=>{if(!u||d in t)return;const p=(r==null?void 0:r.base_model)!==u.base_model;i.push({value:d,label:u.model_name,disabled:p,group:Mr[u.base_model],tooltip:p?`Incompatible base model: ${u.base_model}`:void 0})}),i.sort((u,d)=>u.disabled&&!d.disabled?1:-1)},[t,n,r==null?void 0:r.base_model]),s=f.useCallback(i=>{if(!i)return;const u=n==null?void 0:n.entities[i];u&&e(a7(u))},[e,n==null?void 0:n.entities]);return(n==null?void 0:n.ids.length)===0?a.jsx(L,{sx:{justifyContent:"center",p:2},children:a.jsx(qe,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(br,{placeholder:o.length===0?"All LoRAs added":"Add LoRA",value:null,data:o,nothingFound:"No matching LoRAs",itemComponent:ai,disabled:o.length===0,filter:(i,u)=>{var d;return((d=u.label)==null?void 0:d.toLowerCase().includes(i.toLowerCase().trim()))||u.value.toLowerCase().includes(i.toLowerCase().trim())},onChange:s})},hY=he(mt,e=>{const t=i7(e.lora.loras);return{activeLabel:t>0?`${t} Active`:void 0}},Ke),mY=()=>{const{activeLabel:e}=$(hY);return yr("lora").isFeatureEnabled?a.jsx(Ro,{label:"LoRA",activeLabel:e,children:a.jsxs(L,{sx:{flexDir:"column",gap:2},children:[a.jsx(pY,{}),a.jsx(dY,{})]})}):null},ty=f.memo(mY),gY=he(mt,e=>({activeLabel:e.generation.clipSkip>0?"Clip Skip":void 0}),Ke);function ny(){const{activeLabel:e}=$(gY);return $(n=>n.ui.shouldShowAdvancedOptions)&&a.jsx(Ro,{label:"Advanced",activeLabel:e,children:a.jsx(L,{sx:{flexDir:"column",gap:2},children:a.jsx(l7,{})})})}const vY=Zp.child({module:"models"}),UP=e=>{const[t,n,r]=e.split("/"),o=c7.safeParse({base_model:t,model_name:r});if(!o.success){vY.error({controlNetModelId:e,errors:o.error.format()},"Failed to parse ControlNet model id");return}return o.data},yY=e=>{const{controlNetId:t}=e,n=Z(),r=$(Sr),o=f.useMemo(()=>he(mt,({generation:v,controlNet:b})=>{var _,k;const{model:S}=v,x=(_=b.controlNets[t])==null?void 0:_.model,C=(k=b.controlNets[t])==null?void 0:k.isEnabled;return{mainModel:S,controlNetModel:x,isEnabled:C}},Ke),[t]),{mainModel:s,controlNetModel:i,isEnabled:u}=$(o),{data:d}=yv(),p=f.useMemo(()=>{if(!d)return[];const v=[];return Qo(d.entities,(b,S)=>{if(!b)return;const x=(b==null?void 0:b.base_model)!==(s==null?void 0:s.base_model);v.push({value:S,label:b.model_name,group:Mr[b.base_model],disabled:x,tooltip:x?`Incompatible base model: ${b.base_model}`:void 0})}),v},[d,s==null?void 0:s.base_model]),h=f.useMemo(()=>(d==null?void 0:d.entities[`${i==null?void 0:i.base_model}/controlnet/${i==null?void 0:i.model_name}`])??null,[i==null?void 0:i.base_model,i==null?void 0:i.model_name,d==null?void 0:d.entities]),g=f.useCallback(v=>{if(!v)return;const b=UP(v);b&&n(U4({controlNetId:t,model:b}))},[t,n]);return a.jsx(br,{itemComponent:ai,data:p,error:!h||(s==null?void 0:s.base_model)!==h.base_model,placeholder:"Select a model",value:(h==null?void 0:h.id)??null,onChange:g,disabled:r||!u,tooltip:h==null?void 0:h.description})},bY=f.memo(yY),xY=e=>{const{controlNetId:t}=e,n=Z(),r=f.useMemo(()=>he(mt,({controlNet:u})=>{const{weight:d,isEnabled:p}=u.controlNets[t];return{weight:d,isEnabled:p}},Ke),[t]),{weight:o,isEnabled:s}=$(r),i=f.useCallback(u=>{n(u7({controlNetId:t,weight:u}))},[t,n]);return a.jsx(Ct,{isDisabled:!s,label:"Weight",value:o,onChange:i,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2]})},wY=f.memo(xY),SY=e=>{const{height:t,controlNetId:n}=e,r=Z(),o=f.useMemo(()=>he(mt,({controlNet:W})=>{const{pendingControlImages:J}=W,{controlImage:F,processedControlImage:N,processorType:G,isEnabled:K}=W.controlNets[n];return{controlImageName:F,processedControlImageName:N,processorType:G,isEnabled:K,pendingControlImages:J}},Ke),[n]),{controlImageName:s,processedControlImageName:i,processorType:u,pendingControlImages:d,isEnabled:p}=$(o),[h,g]=f.useState(!1),{currentData:v,isLoading:b,isError:S,isSuccess:x}=Uo(s??Xr.skipToken),{currentData:C,isLoading:_,isError:k,isSuccess:P}=Uo(i??Xr.skipToken),I=f.useCallback(()=>{r(d7({controlNetId:n,controlImage:null}))},[n,r]),E=f.useCallback(()=>{g(!0)},[]),O=f.useCallback(()=>{g(!1)},[]),R=f.useMemo(()=>{if(v)return{id:n,payloadType:"IMAGE_DTO",payload:{imageDTO:v}}},[v,n]),D=f.useMemo(()=>({id:n,actionType:"SET_CONTROLNET_IMAGE",context:{controlNetId:n}}),[n]),T=f.useMemo(()=>({type:"SET_CONTROLNET_IMAGE",controlNetId:n}),[n]),B=v&&C&&!h&&!d.includes(n)&&u!=="none";return a.jsxs(L,{onMouseEnter:E,onMouseLeave:O,sx:{position:"relative",w:"full",h:t,alignItems:"center",justifyContent:"center",pointerEvents:p?"auto":"none",opacity:p?1:.5},children:[a.jsx(ri,{draggableData:R,droppableData:D,imageDTO:v,isDropDisabled:B||!p,onClickReset:I,postUploadAction:T,resetTooltip:"Reset Control Image",withResetIcon:!!v}),a.jsx($e,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",opacity:B?1:0,transitionProperty:"common",transitionDuration:"normal",pointerEvents:"none"},children:a.jsx(ri,{draggableData:R,droppableData:D,imageDTO:C,isUploadDisabled:!0,isDropDisabled:!p,onClickReset:I,resetTooltip:"Reset Control Image",withResetIcon:!!v})}),d.includes(n)&&a.jsx(L,{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(oc,{size:"xl",sx:{color:"base.100",_dark:{color:"base.400"}}})})]})},xC=f.memo(SY),Cs=()=>{const e=Z();return f.useCallback((n,r)=>{e(f7({controlNetId:n,changes:r}))},[e])};function _s(e){return a.jsx(L,{sx:{flexDirection:"column",gap:2},children:e.children})}const wC=Yo.canny_image_processor.default,CY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{low_threshold:o,high_threshold:s}=n,i=$(Sr),u=Cs(),d=f.useCallback(v=>{u(t,{low_threshold:v})},[t,u]),p=f.useCallback(()=>{u(t,{low_threshold:wC.low_threshold})},[t,u]),h=f.useCallback(v=>{u(t,{high_threshold:v})},[t,u]),g=f.useCallback(()=>{u(t,{high_threshold:wC.high_threshold})},[t,u]);return a.jsxs(_s,{children:[a.jsx(Ct,{isDisabled:i||!r,label:"Low Threshold",value:o,onChange:d,handleReset:p,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0}),a.jsx(Ct,{isDisabled:i||!r,label:"High Threshold",value:s,onChange:h,handleReset:g,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0})]})},_Y=f.memo(CY),$c=Yo.content_shuffle_image_processor.default,kY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,w:i,h:u,f:d}=n,p=Cs(),h=$(Sr),g=f.useCallback(E=>{p(t,{detect_resolution:E})},[t,p]),v=f.useCallback(()=>{p(t,{detect_resolution:$c.detect_resolution})},[t,p]),b=f.useCallback(E=>{p(t,{image_resolution:E})},[t,p]),S=f.useCallback(()=>{p(t,{image_resolution:$c.image_resolution})},[t,p]),x=f.useCallback(E=>{p(t,{w:E})},[t,p]),C=f.useCallback(()=>{p(t,{w:$c.w})},[t,p]),_=f.useCallback(E=>{p(t,{h:E})},[t,p]),k=f.useCallback(()=>{p(t,{h:$c.h})},[t,p]),P=f.useCallback(E=>{p(t,{f:E})},[t,p]),I=f.useCallback(()=>{p(t,{f:$c.f})},[t,p]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:s,onChange:g,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ct,{label:"Image Resolution",value:o,onChange:b,handleReset:S,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ct,{label:"W",value:i,onChange:x,handleReset:C,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ct,{label:"H",value:u,onChange:_,handleReset:k,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ct,{label:"F",value:d,onChange:P,handleReset:I,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r})]})},jY=f.memo(kY),SC=Yo.hed_image_processor.default,PY=e=>{const{controlNetId:t,processorNode:{detect_resolution:n,image_resolution:r,scribble:o},isEnabled:s}=e,i=$(Sr),u=Cs(),d=f.useCallback(b=>{u(t,{detect_resolution:b})},[t,u]),p=f.useCallback(b=>{u(t,{image_resolution:b})},[t,u]),h=f.useCallback(b=>{u(t,{scribble:b.target.checked})},[t,u]),g=f.useCallback(()=>{u(t,{detect_resolution:SC.detect_resolution})},[t,u]),v=f.useCallback(()=>{u(t,{image_resolution:SC.image_resolution})},[t,u]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:n,onChange:d,handleReset:g,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(Ct,{label:"Image Resolution",value:r,onChange:p,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(xr,{label:"Scribble",isChecked:o,onChange:h,isDisabled:i||!s})]})},IY=f.memo(PY),CC=Yo.lineart_anime_image_processor.default,EY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=Cs(),u=$(Sr),d=f.useCallback(v=>{i(t,{detect_resolution:v})},[t,i]),p=f.useCallback(v=>{i(t,{image_resolution:v})},[t,i]),h=f.useCallback(()=>{i(t,{detect_resolution:CC.detect_resolution})},[t,i]),g=f.useCallback(()=>{i(t,{image_resolution:CC.image_resolution})},[t,i]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:s,onChange:d,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Ct,{label:"Image Resolution",value:o,onChange:p,handleReset:g,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r})]})},OY=f.memo(EY),_C=Yo.lineart_image_processor.default,MY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,coarse:i}=n,u=Cs(),d=$(Sr),p=f.useCallback(S=>{u(t,{detect_resolution:S})},[t,u]),h=f.useCallback(S=>{u(t,{image_resolution:S})},[t,u]),g=f.useCallback(()=>{u(t,{detect_resolution:_C.detect_resolution})},[t,u]),v=f.useCallback(()=>{u(t,{image_resolution:_C.image_resolution})},[t,u]),b=f.useCallback(S=>{u(t,{coarse:S.target.checked})},[t,u]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:s,onChange:p,handleReset:g,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),a.jsx(Ct,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),a.jsx(xr,{label:"Coarse",isChecked:i,onChange:b,isDisabled:d||!r})]})},RY=f.memo(MY),kC=Yo.mediapipe_face_processor.default,DY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{max_faces:o,min_confidence:s}=n,i=Cs(),u=$(Sr),d=f.useCallback(v=>{i(t,{max_faces:v})},[t,i]),p=f.useCallback(v=>{i(t,{min_confidence:v})},[t,i]),h=f.useCallback(()=>{i(t,{max_faces:kC.max_faces})},[t,i]),g=f.useCallback(()=>{i(t,{min_confidence:kC.min_confidence})},[t,i]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Max Faces",value:o,onChange:d,handleReset:h,withReset:!0,min:1,max:20,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Ct,{label:"Min Confidence",value:s,onChange:p,handleReset:g,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:u||!r})]})},AY=f.memo(DY),jC=Yo.midas_depth_image_processor.default,TY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{a_mult:o,bg_th:s}=n,i=Cs(),u=$(Sr),d=f.useCallback(v=>{i(t,{a_mult:v})},[t,i]),p=f.useCallback(v=>{i(t,{bg_th:v})},[t,i]),h=f.useCallback(()=>{i(t,{a_mult:jC.a_mult})},[t,i]),g=f.useCallback(()=>{i(t,{bg_th:jC.bg_th})},[t,i]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"a_mult",value:o,onChange:d,handleReset:h,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Ct,{label:"bg_th",value:s,onChange:p,handleReset:g,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:u||!r})]})},NY=f.memo(TY),hf=Yo.mlsd_image_processor.default,$Y=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,thr_d:i,thr_v:u}=n,d=Cs(),p=$(Sr),h=f.useCallback(k=>{d(t,{detect_resolution:k})},[t,d]),g=f.useCallback(k=>{d(t,{image_resolution:k})},[t,d]),v=f.useCallback(k=>{d(t,{thr_d:k})},[t,d]),b=f.useCallback(k=>{d(t,{thr_v:k})},[t,d]),S=f.useCallback(()=>{d(t,{detect_resolution:hf.detect_resolution})},[t,d]),x=f.useCallback(()=>{d(t,{image_resolution:hf.image_resolution})},[t,d]),C=f.useCallback(()=>{d(t,{thr_d:hf.thr_d})},[t,d]),_=f.useCallback(()=>{d(t,{thr_v:hf.thr_v})},[t,d]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:s,onChange:h,handleReset:S,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ct,{label:"Image Resolution",value:o,onChange:g,handleReset:x,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ct,{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(Ct,{label:"H",value:u,onChange:b,handleReset:_,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r})]})},zY=f.memo($Y),PC=Yo.normalbae_image_processor.default,LY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=Cs(),u=$(Sr),d=f.useCallback(v=>{i(t,{detect_resolution:v})},[t,i]),p=f.useCallback(v=>{i(t,{image_resolution:v})},[t,i]),h=f.useCallback(()=>{i(t,{detect_resolution:PC.detect_resolution})},[t,i]),g=f.useCallback(()=>{i(t,{image_resolution:PC.image_resolution})},[t,i]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:s,onChange:d,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Ct,{label:"Image Resolution",value:o,onChange:p,handleReset:g,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r})]})},BY=f.memo(LY),IC=Yo.openpose_image_processor.default,FY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,hand_and_face:i}=n,u=Cs(),d=$(Sr),p=f.useCallback(S=>{u(t,{detect_resolution:S})},[t,u]),h=f.useCallback(S=>{u(t,{image_resolution:S})},[t,u]),g=f.useCallback(()=>{u(t,{detect_resolution:IC.detect_resolution})},[t,u]),v=f.useCallback(()=>{u(t,{image_resolution:IC.image_resolution})},[t,u]),b=f.useCallback(S=>{u(t,{hand_and_face:S.target.checked})},[t,u]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:s,onChange:p,handleReset:g,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),a.jsx(Ct,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),a.jsx(xr,{label:"Hand and Face",isChecked:i,onChange:b,isDisabled:d||!r})]})},HY=f.memo(FY),EC=Yo.pidi_image_processor.default,WY=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,scribble:i,safe:u}=n,d=Cs(),p=$(Sr),h=f.useCallback(C=>{d(t,{detect_resolution:C})},[t,d]),g=f.useCallback(C=>{d(t,{image_resolution:C})},[t,d]),v=f.useCallback(()=>{d(t,{detect_resolution:EC.detect_resolution})},[t,d]),b=f.useCallback(()=>{d(t,{image_resolution:EC.image_resolution})},[t,d]),S=f.useCallback(C=>{d(t,{scribble:C.target.checked})},[t,d]),x=f.useCallback(C=>{d(t,{safe:C.target.checked})},[t,d]);return a.jsxs(_s,{children:[a.jsx(Ct,{label:"Detect Resolution",value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ct,{label:"Image Resolution",value:o,onChange:g,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(xr,{label:"Scribble",isChecked:i,onChange:S}),a.jsx(xr,{label:"Safe",isChecked:u,onChange:x,isDisabled:p||!r})]})},VY=f.memo(WY),UY=e=>null,GY=f.memo(UY),qY=e=>{const{controlNetId:t}=e,n=f.useMemo(()=>he(mt,({controlNet:s})=>{const{isEnabled:i,processorNode:u}=s.controlNets[t];return{isEnabled:i,processorNode:u}},Ke),[t]),{isEnabled:r,processorNode:o}=$(n);return o.type==="canny_image_processor"?a.jsx(_Y,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="hed_image_processor"?a.jsx(IY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="lineart_image_processor"?a.jsx(RY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="content_shuffle_image_processor"?a.jsx(jY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="lineart_anime_image_processor"?a.jsx(OY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="mediapipe_face_processor"?a.jsx(AY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="midas_depth_image_processor"?a.jsx(NY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="mlsd_image_processor"?a.jsx(zY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="normalbae_image_processor"?a.jsx(BY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="openpose_image_processor"?a.jsx(HY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="pidi_image_processor"?a.jsx(VY,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="zoe_depth_image_processor"?a.jsx(GY,{controlNetId:t,processorNode:o,isEnabled:r}):null},KY=f.memo(qY),QY=e=>{const{controlNetId:t}=e,n=Z(),r=f.useMemo(()=>he(mt,({controlNet:d})=>{const{isEnabled:p,shouldAutoConfig:h}=d.controlNets[t];return{isEnabled:p,shouldAutoConfig:h}},Ke),[t]),{isEnabled:o,shouldAutoConfig:s}=$(r),i=$(Sr),u=f.useCallback(()=>{n(p7({controlNetId:t}))},[t,n]);return a.jsx(xr,{label:"Auto configure processor","aria-label":"Auto configure processor",isChecked:s,onChange:u,isDisabled:i||!o})},YY=f.memo(QY),OC=e=>`${Math.round(e*100)}%`,XY=e=>{const{controlNetId:t}=e,n=Z(),r=f.useMemo(()=>he(mt,({controlNet:d})=>{const{beginStepPct:p,endStepPct:h,isEnabled:g}=d.controlNets[t];return{beginStepPct:p,endStepPct:h,isEnabled:g}},Ke),[t]),{beginStepPct:o,endStepPct:s,isEnabled:i}=$(r),u=f.useCallback(d=>{n(px({controlNetId:t,beginStepPct:d[0]})),n(hx({controlNetId:t,endStepPct:d[1]}))},[t,n]);return f.useCallback(()=>{n(px({controlNetId:t,beginStepPct:0})),n(hx({controlNetId:t,endStepPct:1}))},[t,n]),a.jsxs(ws,{isDisabled:!i,children:[a.jsx(gs,{children:"Begin / End Step Percentage"}),a.jsx(Pl,{w:"100%",gap:2,alignItems:"center",children:a.jsxs(a5,{"aria-label":["Begin Step %","End Step %"],value:[o,s],onChange:u,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!i,children:[a.jsx(i5,{children:a.jsx(l5,{})}),a.jsx(Cn,{label:OC(o),placement:"top",hasArrow:!0,children:a.jsx(m0,{index:0})}),a.jsx(Cn,{label:OC(s),placement:"top",hasArrow:!0,children:a.jsx(m0,{index:1})}),a.jsx(xf,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),a.jsx(xf,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),a.jsx(xf,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},JY=f.memo(XY),ZY=[{label:"Balanced",value:"balanced"},{label:"Prompt",value:"more_prompt"},{label:"Control",value:"more_control"},{label:"Mega Control",value:"unbalanced"}];function eX(e){const{controlNetId:t}=e,n=Z(),r=f.useMemo(()=>he(mt,({controlNet:u})=>{const{controlMode:d,isEnabled:p}=u.controlNets[t];return{controlMode:d,isEnabled:p}},Ke),[t]),{controlMode:o,isEnabled:s}=$(r);ue();const i=f.useCallback(u=>{n(h7({controlNetId:t,controlMode:u}))},[t,n]);return a.jsx(Co,{disabled:!s,label:"Control Mode",data:ZY,value:String(o),onChange:i})}const tX=he(qi,e=>Ss(Yo,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)),Ke),nX=e=>{const t=Z(),{controlNetId:n}=e,r=f.useMemo(()=>he(mt,({controlNet:p})=>{const{isEnabled:h,processorNode:g}=p.controlNets[n];return{isEnabled:h,processorNode:g}},Ke),[n]),o=$(Sr),s=$(tX),{isEnabled:i,processorNode:u}=$(r),d=f.useCallback(p=>{t(m7({controlNetId:n,processorType:p}))},[n,t]);return a.jsx(br,{label:"Processor",value:u.type??"canny_image_processor",data:s,onChange:d,disabled:o||!i})},rX=f.memo(nX),oX=[{label:"Resize",value:"just_resize"},{label:"Crop",value:"crop_resize"},{label:"Fill",value:"fill_resize"}];function sX(e){const{controlNetId:t}=e,n=Z(),r=f.useMemo(()=>he(mt,({controlNet:u})=>{const{resizeMode:d,isEnabled:p}=u.controlNets[t];return{resizeMode:d,isEnabled:p}},Ke),[t]),{resizeMode:o,isEnabled:s}=$(r);ue();const i=f.useCallback(u=>{n(g7({controlNetId:t,resizeMode:u}))},[t,n]);return a.jsx(Co,{disabled:!s,label:"Resize Mode",data:oX,value:String(o),onChange:i})}const aX=e=>{const{controlNetId:t}=e,n=Z(),r=he(mt,({controlNet:g})=>{const{isEnabled:v,shouldAutoConfig:b}=g.controlNets[t];return{isEnabled:v,shouldAutoConfig:b}},Ke),{isEnabled:o,shouldAutoConfig:s}=$(r),[i,u]=DK(!1),d=f.useCallback(()=>{n(v7({controlNetId:t}))},[t,n]),p=f.useCallback(()=>{n(y7({sourceControlNetId:t,newControlNetId:Ka()}))},[t,n]),h=f.useCallback(()=>{n(b7({controlNetId:t}))},[t,n]);return a.jsxs(L,{sx:{flexDir:"column",gap:3,p:3,borderRadius:"base",position:"relative",bg:"base.200",_dark:{bg:"base.850"}},children:[a.jsxs(L,{sx:{gap:2,alignItems:"center"},children:[a.jsx(xr,{tooltip:"Toggle this ControlNet","aria-label":"Toggle this ControlNet",isChecked:o,onChange:h}),a.jsx($e,{sx:{w:"full",minW:0,opacity:o?1:.5,pointerEvents:o?"auto":"none",transitionProperty:"common",transitionDuration:"0.1s"},children:a.jsx(bY,{controlNetId:t})}),a.jsx(je,{size:"sm",tooltip:"Duplicate","aria-label":"Duplicate",onClick:p,icon:a.jsx(cc,{})}),a.jsx(je,{size:"sm",tooltip:"Delete","aria-label":"Delete",colorScheme:"error",onClick:d,icon:a.jsx(Xo,{})}),a.jsx(je,{size:"sm",tooltip:i?"Hide Advanced":"Show Advanced","aria-label":i?"Hide Advanced":"Show Advanced",onClick:u,variant:"ghost",sx:{_hover:{bg:"none"}},icon:a.jsx(w1,{sx:{boxSize:4,color:"base.700",transform:i?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal",_dark:{color:"base.300"}}})}),!s&&a.jsx($e,{sx:{position:"absolute",w:1.5,h:1.5,borderRadius:"full",top:4,insetInlineEnd:4,bg:"accent.700",_dark:{bg:"accent.400"}}})]}),a.jsxs(L,{sx:{w:"full",flexDirection:"column",gap:3},children:[a.jsxs(L,{sx:{gap:4,w:"full",alignItems:"center"},children:[a.jsxs(L,{sx:{flexDir:"column",gap:3,h:28,w:"full",paddingInlineStart:1,paddingInlineEnd:i?1:0,pb:2,justifyContent:"space-between"},children:[a.jsx(wY,{controlNetId:t}),a.jsx(JY,{controlNetId:t})]}),!i&&a.jsx(L,{sx:{alignItems:"center",justifyContent:"center",h:28,w:28,aspectRatio:"1/1"},children:a.jsx(xC,{controlNetId:t,height:28})})]}),a.jsxs(L,{sx:{gap:2},children:[a.jsx(eX,{controlNetId:t}),a.jsx(sX,{controlNetId:t})]}),a.jsx(rX,{controlNetId:t})]}),i&&a.jsxs(a.Fragment,{children:[a.jsx(xC,{controlNetId:t,height:"392px"}),a.jsx(YY,{controlNetId:t}),a.jsx(KY,{controlNetId:t})]})]})},iX=f.memo(aX),lX=he(mt,e=>{const{isEnabled:t}=e.controlNet;return{isEnabled:t}},Ke),cX=()=>{const{isEnabled:e}=$(lX),t=Z(),n=f.useCallback(()=>{t(x7())},[t]);return a.jsx(xr,{label:"Enable ControlNet",isChecked:e,onChange:n,formControlProps:{width:"100%"}})},uX=he(w7,e=>{const{controlNets:t,isEnabled:n}=e,r=S7(t),o=n&&r.length>0?`${r.length} Active`:void 0;return{controlNetsArray:Ss(t),activeLabel:o}},Ke),dX=()=>{ue();const{controlNetsArray:e,activeLabel:t}=$(uX),n=yr("controlNet").isFeatureDisabled,r=Z(),{firstModel:o}=yv(void 0,{selectFromResult:i=>{var d,p;return{firstModel:(p=i.data)==null?void 0:p.entities[(d=i.data)==null?void 0:d.ids[0]]}}}),s=f.useCallback(()=>{if(!o)return;const i=Ka();r(C7({controlNetId:i})),r(U4({controlNetId:i,model:o}))},[r,o]);return n?null:a.jsx(Ro,{label:"ControlNet",activeLabel:t,children:a.jsxs(L,{sx:{flexDir:"column",gap:3},children:[a.jsxs(L,{gap:2,alignItems:"center",children:[a.jsx(L,{sx:{flexDirection:"column",w:"100%",gap:2,px:4,py:2,borderRadius:4,bg:"base.200",_dark:{bg:"base.850"}},children:a.jsx(cX,{})}),a.jsx(je,{tooltip:"Add ControlNet","aria-label":"Add ControlNet",icon:a.jsx(Hi,{}),isDisabled:!o,flexGrow:1,size:"md",onClick:s})]}),e.map((i,u)=>a.jsxs(f.Fragment,{children:[u>0&&a.jsx(Fi,{}),a.jsx(iX,{controlNetId:i.controlNetId})]},i.controlNetId))]})})},ry=f.memo(dX),oy=e=>{e.stopPropagation()},fX=rt((e,t)=>{const n=Z(),r=f.useCallback(s=>{s.shiftKey&&n(Go(!0))},[n]),o=f.useCallback(s=>{s.shiftKey||n(Go(!1))},[n]);return a.jsx(d5,{ref:t,onPaste:oy,onKeyDown:r,onKeyUp:o,...e})}),GP=f.memo(fX),pX=e=>{const{onClick:t}=e;return a.jsx(je,{size:"sm","aria-label":"Add Embedding",tooltip:"Add Embedding",icon:a.jsx(g1,{}),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})},qP=f.memo(pX),KP=e=>{const{onSelect:t,isOpen:n,onClose:r,children:o}=e,{data:s}=_7(),i=f.useRef(null),u=$(h=>h.generation.model),d=f.useMemo(()=>{if(!s)return[];const h=[];return Qo(s.entities,(g,v)=>{if(!g)return;const b=(u==null?void 0:u.base_model)!==g.base_model;h.push({value:g.model_name,label:g.model_name,group:Mr[g.base_model],disabled:b,tooltip:b?`Incompatible base model: ${g.base_model}`:void 0})}),h.sort((g,v)=>g.disabled&&!v.disabled?1:-1)},[s,u==null?void 0:u.base_model]),p=f.useCallback(h=>{h&&t(h)},[t]);return a.jsxs(Qv,{initialFocusRef:i,isOpen:n,onClose:r,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(Kv,{children:o}),a.jsx(Yv,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(Z6,{sx:{p:0,w:`calc(${J1} - 2rem )`},children:d.length===0?a.jsx(L,{sx:{justifyContent:"center",p:2,fontSize:"sm",color:"base.500",_dark:{color:"base.700"}},children:a.jsx(qe,{children:"No Embeddings Loaded"})}):a.jsx(br,{inputRef:i,autoFocus:!0,placeholder:"Add Embedding",value:null,data:d,nothingFound:"No matching Embeddings",itemComponent:ai,disabled:d.length===0,onDropdownClose:r,filter:(h,g)=>{var v;return((v=g.label)==null?void 0:v.toLowerCase().includes(h.toLowerCase().trim()))||g.value.toLowerCase().includes(h.toLowerCase().trim())},onChange:p})})})]})},sy=()=>{const e=$(g=>g.generation.negativePrompt),t=f.useRef(null),{isOpen:n,onClose:r,onOpen:o}=Ws(),s=Z(),{t:i}=ue(),u=f.useCallback(g=>{s(Yc(g.target.value))},[s]),d=f.useCallback(g=>{g.key==="<"&&o()},[o]),p=f.useCallback(g=>{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+=`${g}>`;const S=b.length;b+=e.slice(v),nc.flushSync(()=>{s(Yc(b))}),t.current.selectionEnd=S,r()},[s,r,e]),h=yr("embedding").isFeatureEnabled;return a.jsxs(ws,{children:[a.jsx(KP,{isOpen:n,onClose:r,onSelect:p,children:a.jsx(GP,{id:"negativePrompt",name:"negativePrompt",ref:t,value:e,placeholder:i("parameters.negativePromptPlaceholder"),onChange:u,resize:"vertical",fontSize:"sm",minH:16,...h&&{onKeyDown:d}})}),!n&&h&&a.jsx($e,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(qP,{onClick:o})})]})},hX=e=>{const r=e.split(",").map(o=>o.split(":")).map(o=>({seed:Number(o[0]),weight:Number(o[1])}));return ay(r)?r:!1},ay=e=>typeof e=="string"?!!hX(e):!!(e.length&&!e.some(t=>{const{seed:n,weight:r}=t,o=!isNaN(parseInt(n.toString(),10)),s=!isNaN(parseInt(r.toString(),10))&&r>=0&&r<=1;return!(o&&s)})),mX=he([mt,or],(e,t)=>{const{generation:n,system:r}=e,{shouldGenerateVariations:o,seedWeights:s,initialImage:i,seed:u}=n,{isProcessing:d,isConnected:p}=r;let h=!0;const g=[];t==="img2img"&&!i&&(h=!1,g.push("No initial image selected"));const{isSuccess:v}=k7.endpoints.getMainModels.select()(e);return v||(h=!1,g.push("Models are not loaded")),d&&(h=!1,g.push("System Busy")),p||(h=!1,g.push("System Disconnected")),o&&(!(ay(s)||s==="")||u===-1)&&(h=!1,g.push("Seed-Weights badly formatted.")),Qo(e.controlNet.controlNets,(b,S)=>{b.model||(h=!1,g.push("ControlNet ${id} has no model selected."))}),{isReady:h,reasonsWhyNotReady:g}},Ke),iy=()=>{const{isReady:e}=$(mX);return e},gX=he([mt,or],({generation:e,ui:t},n)=>({shouldPinParametersPanel:t.shouldPinParametersPanel,prompt:e.positivePrompt,activeTabName:n}),{memoizeOptions:{resultEqualityCheck:Gt}}),ly=()=>{const e=Z(),{prompt:t,shouldPinParametersPanel:n,activeTabName:r}=$(gX),o=iy(),s=f.useRef(null),{isOpen:i,onClose:u,onOpen:d}=Ws(),{t:p}=ue(),h=f.useCallback(S=>{e(Qc(S.target.value))},[e]);Ye("alt+a",()=>{var S;(S=s.current)==null||S.focus()},[]);const g=f.useCallback(S=>{if(!s.current)return;const x=s.current.selectionStart;if(x===void 0)return;let C=t.slice(0,x);C[C.length-1]!=="<"&&(C+="<"),C+=`${S}>`;const _=C.length;C+=t.slice(x),nc.flushSync(()=>{e(Qc(C))}),s.current.selectionStart=_,s.current.selectionEnd=_,u()},[e,u,t]),v=yr("embedding").isFeatureEnabled,b=f.useCallback(S=>{S.key==="Enter"&&S.shiftKey===!1&&o&&(S.preventDefault(),e(bv()),e(xv(r))),v&&S.key==="<"&&d()},[o,e,r,d,v]);return a.jsxs($e,{position:"relative",children:[a.jsx(ws,{children:a.jsx(KP,{isOpen:i,onClose:u,onSelect:g,children:a.jsx(GP,{id:"prompt",name:"prompt",ref:s,value:t,placeholder:p("parameters.positivePromptPlaceholder"),onChange:h,onKeyDown:b,resize:"vertical",minH:32})})}),!i&&v&&a.jsx($e,{sx:{position:"absolute",top:n?6:0,insetInlineEnd:0},children:a.jsx(qP,{onClick:d})})]})},vX=he(mt,e=>{const{shouldUseNoiseSettings:t,shouldUseCpuNoise:n}=e.generation;return{isDisabled:!t,shouldUseCpuNoise:n}},Ke),yX=()=>{const e=Z(),{isDisabled:t,shouldUseCpuNoise:n}=$(vX);ue();const r=o=>e(j7(o.target.checked));return a.jsx(xr,{isDisabled:t,label:"Use CPU Noise",isChecked:n,onChange:r})},bX=he(mt,e=>{const{shouldUseNoiseSettings:t,threshold:n}=e.generation;return{isDisabled:!t,threshold:n}},Ke);function xX(){const e=Z(),{threshold:t,isDisabled:n}=$(bX),{t:r}=ue();return a.jsx(Ct,{isDisabled:n,label:r("parameters.noiseThreshold"),min:0,max:20,step:.1,onChange:o=>e(mx(o)),handleReset:()=>e(mx(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const wX=()=>{const e=Z(),t=$(r=>r.generation.shouldUseNoiseSettings);ue();const n=r=>e(P7(r.target.checked));return a.jsx(xr,{label:"Enable Noise Settings",isChecked:t,onChange:n})},SX=he(mt,e=>{const{shouldUseNoiseSettings:t,perlin:n}=e.generation;return{isDisabled:!t,perlin:n}},Ke);function CX(){const e=Z(),{perlin:t,isDisabled:n}=$(SX),{t:r}=ue();return a.jsx(Ct,{isDisabled:n,label:r("parameters.perlinNoise"),min:0,max:1,step:.05,onChange:o=>e(gx(o)),handleReset:()=>e(gx(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const _X=he(mt,e=>{const{shouldUseNoiseSettings:t}=e.generation;return{activeLabel:t?"Enabled":void 0}},Ke),kX=()=>{const{t:e}=ue(),t=yr("noise").isFeatureEnabled,n=yr("perlinNoise").isFeatureEnabled,r=yr("noiseThreshold").isFeatureEnabled,{activeLabel:o}=$(_X);return t?a.jsx(Ro,{label:e("parameters.noiseSettings"),activeLabel:o,children:a.jsxs(L,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(wX,{}),a.jsx(yX,{}),n&&a.jsx(CX,{}),r&&a.jsx(xX,{})]})}):null},QP=f.memo(kX),Zo=e=>e.generation,jX=he(Zo,e=>{const{seamlessXAxis:t}=e;return{seamlessXAxis:t}},Ke),PX=()=>{const{t:e}=ue(),{seamlessXAxis:t}=$(jX),n=Z(),r=f.useCallback(o=>{n(I7(o.target.checked))},[n]);return a.jsx(xr,{label:e("parameters.seamlessXAxis"),"aria-label":e("parameters.seamlessXAxis"),isChecked:t,onChange:r})},IX=f.memo(PX),EX=he(Zo,e=>{const{seamlessYAxis:t}=e;return{seamlessYAxis:t}},Ke),OX=()=>{const{t:e}=ue(),{seamlessYAxis:t}=$(EX),n=Z(),r=f.useCallback(o=>{n(E7(o.target.checked))},[n]);return a.jsx(xr,{label:e("parameters.seamlessYAxis"),"aria-label":e("parameters.seamlessYAxis"),isChecked:t,onChange:r})},MX=f.memo(OX),RX=(e,t)=>{if(e&&t)return"X & Y";if(e)return"X";if(t)return"Y"},DX=he(Zo,e=>{const{seamlessXAxis:t,seamlessYAxis:n}=e;return{activeLabel:RX(t,n)}},Ke),AX=()=>{const{t:e}=ue(),{activeLabel:t}=$(DX);return yr("seamless").isFeatureEnabled?a.jsx(Ro,{label:e("parameters.seamlessTiling"),activeLabel:t,children:a.jsxs(L,{sx:{gap:5},children:[a.jsx($e,{flexGrow:1,children:a.jsx(IX,{})}),a.jsx($e,{flexGrow:1,children:a.jsx(MX,{})})]})}):null},YP=f.memo(AX);function TX(){const e=$(o=>o.generation.horizontalSymmetrySteps),t=$(o=>o.generation.steps),n=Z(),{t:r}=ue();return a.jsx(Ct,{label:r("parameters.hSymmetryStep"),value:e,onChange:o=>n(vx(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(vx(0))})}function NX(){const e=$(o=>o.generation.verticalSymmetrySteps),t=$(o=>o.generation.steps),n=Z(),{t:r}=ue();return a.jsx(Ct,{label:r("parameters.vSymmetryStep"),value:e,onChange:o=>n(yx(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(yx(0))})}function $X(){const e=$(n=>n.generation.shouldUseSymmetry),t=Z();return a.jsx(xr,{label:"Enable Symmetry",isChecked:e,onChange:n=>t(O7(n.target.checked))})}const zX=he(mt,e=>({activeLabel:e.generation.shouldUseSymmetry?"Enabled":void 0}),Ke),LX=()=>{const{t:e}=ue(),{activeLabel:t}=$(zX);return yr("symmetry").isFeatureEnabled?a.jsx(Ro,{label:e("parameters.symmetry"),activeLabel:t,children:a.jsxs(L,{sx:{gap:2,flexDirection:"column"},children:[a.jsx($X,{}),a.jsx(TX,{}),a.jsx(NX,{})]})}):null},cy=f.memo(LX);function BX(){const e=$(o=>o.generation.variationAmount),t=$(o=>o.generation.shouldGenerateVariations),{t:n}=ue(),r=Z();return a.jsx(Ct,{label:n("parameters.variationAmount"),value:e,step:.01,min:0,max:1,isDisabled:!t,onChange:o=>r(bx(o)),handleReset:()=>r(bx(.1)),withInput:!0,withReset:!0,withSliderMarks:!0})}const FX=()=>{const e=Z(),t=$(r=>r.generation.shouldGenerateVariations);ue();const n=r=>e(M7(r.target.checked));return a.jsx(xr,{label:"Enable Variations",isChecked:t,onChange:n})},HX={display:"flex",flexDirection:"row",alignItems:"center",gap:10},WX=e=>{const{label:t="",labelPos:n="top",isDisabled:r=!1,isInvalid:o,formControlProps:s,...i}=e,u=Z(),d=f.useCallback(h=>{h.shiftKey&&u(Go(!0))},[u]),p=f.useCallback(h=>{h.shiftKey||u(Go(!1))},[u]);return a.jsxs(ws,{isInvalid:o,isDisabled:r,...s,style:n==="side"?HX:void 0,children:[t!==""&&a.jsx(gs,{children:t}),a.jsx(Iu,{...i,onPaste:oy,onKeyDown:d,onKeyUp:p})]})},zi=f.memo(WX);function VX(){const e=$(s=>s.generation.seedWeights),t=$(s=>s.generation.shouldGenerateVariations),{t:n}=ue(),r=Z(),o=s=>r(R7(s.target.value));return a.jsx(zi,{label:n("parameters.seedWeights"),value:e,isInvalid:t&&!(ay(e)||e===""),isDisabled:!t,onChange:o})}const UX=he(mt,e=>({activeLabel:e.generation.shouldGenerateVariations?"Enabled":void 0}),Ke),GX=()=>{const{t:e}=ue(),{activeLabel:t}=$(UX);return yr("variation").isFeatureEnabled?a.jsx(Ro,{label:e("parameters.variations"),activeLabel:t,children:a.jsxs(L,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(FX,{}),a.jsx(BX,{}),a.jsx(VX,{})]})}):null},uy=f.memo(GX),qX=he(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:Gt}}),KX=e=>{const t=Z(),{btnGroupWidth:n="auto",...r}=e,{isProcessing:o,isConnected:s,isCancelable:i,cancelType:u,isCancelScheduled:d,sessionId:p}=$(qX),h=f.useCallback(()=>{if(p){if(u==="scheduled"){t(D7());return}t(A7({session_id:p}))}},[t,p,u]),{t:g}=ue(),v=f.useCallback(x=>{const C=Array.isArray(x)?x[0]:x;t(T7(C))},[t]);Ye("shift+x",()=>{(s||o)&&i&&h()},[s,o,i]);const b=f.useMemo(()=>g(d?"parameters.cancel.isScheduled":u==="immediate"?"parameters.cancel.immediate":"parameters.cancel.schedule"),[g,u,d]),S=f.useMemo(()=>d?a.jsx(N7,{}):u==="immediate"?a.jsx(HK,{}):a.jsx($K,{}),[u,d]);return a.jsxs(Yn,{isAttached:!0,width:n,children:[a.jsx(je,{icon:S,tooltip:b,"aria-label":b,isDisabled:!s||!o||!i,onClick:h,colorScheme:"error",id:"cancel-button",...r}),a.jsxs(Mu,{closeOnSelect:!1,children:[a.jsx(Ru,{as:je,tooltip:g("parameters.cancel.setType"),"aria-label":g("parameters.cancel.setType"),icon:a.jsx(PL,{w:"1em",h:"1em"}),paddingX:0,paddingY:0,colorScheme:"error",minWidth:5,...r}),a.jsx(ic,{minWidth:"240px",children:a.jsxs(Uv,{value:u,title:"Cancel Type",type:"radio",onChange:v,children:[a.jsx(iu,{value:"immediate",children:g("parameters.cancel.immediate")}),a.jsx(iu,{value:"scheduled",children:g("parameters.cancel.schedule")})]})})]})]})},Th=f.memo(KX),QX=he(xo,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:Gt}}),YX=()=>{const{t:e}=ue(),{isProcessing:t,currentStep:n,totalSteps:r,currentStatusHasSteps:o}=$(QX),s=n?Math.round(n*100/r):0;return a.jsx(t5,{value:s,"aria-label":e("accessibility.invokeProgressBar"),isIndeterminate:t&&!o,height:"full",colorScheme:"accent"})},XP=f.memo(YX),MC={_disabled:{bg:"none",color:"base.600",cursor:"not-allowed",_hover:{color:"base.600",bg:"none"}}},XX=he([mt,or,Sr],({gallery:e},t,n)=>{const{autoAddBoardId:r}=e;return{isBusy:n,autoAddBoardId:r,activeTabName:t}},Ke);function dy(e){const{iconButton:t=!1,...n}=e,r=Z(),o=iy(),{isBusy:s,autoAddBoardId:i,activeTabName:u}=$(XX),d=bh(i),p=f.useCallback(()=>{r(bv()),r(xv(u))},[r,u]),{t:h}=ue();return Ye(["ctrl+enter","meta+enter"],p,{enabled:()=>o,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[o,u]),a.jsx($e,{style:{flexGrow:4},position:"relative",children:a.jsxs($e,{style:{position:"relative"},children:[!o&&a.jsx($e,{borderRadius:"base",style:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip"},...n,children:a.jsx(XP,{})}),a.jsx(Cn,{placement:"top",hasArrow:!0,openDelay:500,label:i?`Auto-Adding to ${d}`:void 0,children:t?a.jsx(je,{"aria-label":h("parameters.invoke"),type:"submit",icon:a.jsx(x_,{}),isDisabled:!o||s,onClick:p,tooltip:h("parameters.invoke"),tooltipProps:{placement:"top"},colorScheme:"accent",id:"invoke-button",...n,sx:{w:"full",flexGrow:1,...s?MC:{}}}):a.jsx(Xt,{"aria-label":h("parameters.invoke"),type:"submit",isDisabled:!o||s,onClick:p,colorScheme:"accent",id:"invoke-button",...n,sx:{w:"full",flexGrow:1,fontWeight:700,...s?MC:{}},children:"Invoke"})})]})})}const fy=()=>a.jsxs(L,{gap:2,children:[a.jsx(dy,{}),a.jsx(Th,{})]}),Hp=/^-?(0\.)?\.?$/,JX=e=>{const{label:t,isDisabled:n=!1,showStepper:r=!0,isInvalid:o,value:s,onChange:i,min:u,max:d,isInteger:p=!0,formControlProps:h,formLabelProps:g,numberInputFieldProps:v,numberInputStepperProps:b,tooltipProps:S,...x}=e,C=Z(),[_,k]=f.useState(String(s));f.useEffect(()=>{!_.match(Hp)&&s!==Number(_)&&k(String(s))},[s,_]);const P=R=>{k(R),R.match(Hp)||i(p?Math.floor(Number(R)):Number(R))},I=R=>{const D=Vs(p?Math.floor(Number(R.target.value)):Number(R.target.value),u,d);k(String(D)),i(D)},E=f.useCallback(R=>{R.shiftKey&&C(Go(!0))},[C]),O=f.useCallback(R=>{R.shiftKey||C(Go(!1))},[C]);return a.jsx(Cn,{...S,children:a.jsxs(ws,{isDisabled:n,isInvalid:o,...h,children:[t&&a.jsx(gs,{...g,children:t}),a.jsxs(G4,{value:_,min:u,max:d,keepWithinRange:!0,clampValueOnBlur:!1,onChange:P,onBlur:I,...x,onPaste:oy,children:[a.jsx(q4,{...v,onKeyDown:E,onKeyUp:O}),r&&a.jsxs(K4,{children:[a.jsx(Q4,{...b}),a.jsx(Y4,{...b})]})]})]})})},Nh=f.memo(JX),ZX=he([Zo,qi,Zr,Cu],(e,t,n,r)=>{const{initial:o,min:s,sliderMax:i,inputMax:u}=t.sd.guidance,{cfgScale:d}=e,{shouldUseSliders:p}=n,{shift:h}=r;return{cfgScale:d,initial:o,min:s,sliderMax:i,inputMax:u,shouldUseSliders:p,shift:h}},Ke),eJ=()=>{const{cfgScale:e,initial:t,min:n,sliderMax:r,inputMax:o,shouldUseSliders:s,shift:i}=$(ZX),u=Z(),{t:d}=ue(),p=f.useCallback(g=>u(Ef(g)),[u]),h=f.useCallback(()=>u(Ef(t)),[u,t]);return s?a.jsx(Ct,{label:d("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(Nh,{label:d("parameters.cfgScale"),step:.5,min:n,max:o,onChange:p,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"}})},ql=f.memo(eJ),tJ=he([mt],e=>{const{initial:t,min:n,sliderMax:r,inputMax:o,fineStep:s,coarseStep:i}=e.config.sd.iterations,{iterations:u}=e.generation,{shouldUseSliders:d}=e.ui,p=e.dynamicPrompts.isEnabled&&e.dynamicPrompts.combinatorial,h=e.hotkeys.shift?s:i;return{iterations:u,initial:t,min:n,sliderMax:r,inputMax:o,step:h,shouldUseSliders:d,isDisabled:p}},Ke),nJ=()=>{const{iterations:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i,isDisabled:u}=$(tJ),d=Z(),{t:p}=ue(),h=f.useCallback(v=>{d(xx(v))},[d]),g=f.useCallback(()=>{d(xx(t))},[d,t]);return i?a.jsx(Ct,{isDisabled:u,label:p("parameters.images"),step:s,min:n,max:r,onChange:h,handleReset:g,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Nh,{isDisabled:u,label:p("parameters.images"),step:s,min:n,max:o,onChange:h,value:e,numberInputFieldProps:{textAlign:"center"}})},Kl=f.memo(nJ),rJ=Zp.child({module:"models"}),JP=e=>{const[t,n,r]=e.split("/"),o=$7.safeParse({base_model:t,model_name:r});if(!o.success){rJ.error({mainModelId:e,errors:o.error.format()},"Failed to parse main model id");return}return o.data};function py(e){const{iconMode:t=!1}=e,n=Z(),{t:r}=ue(),[o,{isLoading:s}]=z7(),i=()=>{o().unwrap().then(u=>{n(Bn(Vn({title:`${r("modelManager.modelsSynced")}`,status:"success"})))}).catch(u=>{u&&n(Bn(Vn({title:`${r("modelManager.modelSyncFailed")}`,status:"error"})))})};return t?a.jsx(je,{icon:a.jsx(C_,{}),tooltip:r("modelManager.syncModels"),"aria-label":r("modelManager.syncModels"),isLoading:s,onClick:i,size:"sm"}):a.jsx(Xt,{isLoading:s,onClick:i,minW:"max-content",children:"Sync Models"})}const oJ=he(mt,e=>({model:e.generation.model}),Ke),sJ=()=>{const e=Z(),{t}=ue(),{model:n}=$(oJ),{data:r,isLoading:o}=Ei(),s=f.useMemo(()=>{if(!r)return[];const d=[];return Qo(r.entities,(p,h)=>{!p||["sdxl","sdxl-refiner"].includes(p.base_model)||d.push({value:h,label:p.model_name,group:Mr[p.base_model]})}),d},[r]),i=f.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]),u=f.useCallback(d=>{if(!d)return;const p=JP(d);p&&e(Qg(p))},[e]);return o?a.jsx(br,{label:t("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs(L,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(br,{tooltip:i==null?void 0:i.description,label:t("modelManager.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:u,w:"100%"}),a.jsx($e,{mt:7,children:a.jsx(py,{iconMode:!0})})]})},aJ=f.memo(sJ),iJ=Zp.child({module:"models"}),ZP=e=>{const[t,n,r]=e.split("/"),o=L7.safeParse({base_model:t,model_name:r});if(!o.success){iJ.error({vaeModelId:e,errors:o.error.format()},"Failed to parse VAE model id");return}return o.data},lJ=he(mt,({generation:e})=>{const{model:t,vae:n}=e;return{model:t,vae:n}},Ke),cJ=()=>{const e=Z(),{t}=ue(),{model:n,vae:r}=$(lJ),{data:o}=X4(),s=f.useMemo(()=>{if(!o)return[];const d=[{value:"default",label:"Default",group:"Default"}];return Qo(o.entities,(p,h)=>{if(!p)return;const g=(n==null?void 0:n.base_model)!==p.base_model;d.push({value:h,label:p.model_name,group:Mr[p.base_model],disabled:g,tooltip:g?`Incompatible base model: ${p.base_model}`:void 0})}),d.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,n==null?void 0:n.base_model]),i=f.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]),u=f.useCallback(d=>{if(!d||d==="default"){e(wx(null));return}const p=ZP(d);p&&e(wx(p))},[e]);return a.jsx(br,{itemComponent:ai,tooltip:i==null?void 0:i.description,label:t("modelManager.vae"),value:(i==null?void 0:i.id)??"default",placeholder:"Default",data:s,onChange:u,disabled:s.length===0,clearable:!0})},uJ=f.memo(cJ),dJ=he([Zr,Zo],(e,t)=>{const{scheduler:n}=t,{favoriteSchedulers:r}=e,o=B4.map(s=>({value:s,label:F4[s],group:r.includes(s)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{scheduler:n,data:o}},Ke),fJ=()=>{const e=Z(),{t}=ue(),{scheduler:n,data:r}=$(dJ),o=f.useCallback(s=>{s&&e(Yg(s))},[e]);return a.jsx(br,{label:t("parameters.scheduler"),value:n,data:r,onChange:o})},pJ=f.memo(fJ),hJ=()=>{const e=yr("vae").isFeatureEnabled;return a.jsxs(L,{gap:3,w:"full",flexWrap:e?"wrap":"nowrap",children:[a.jsx($e,{w:"full",children:a.jsx(aJ,{})}),a.jsxs(L,{gap:3,w:"full",children:[e&&a.jsx($e,{w:"full",children:a.jsx(uJ,{})}),a.jsx($e,{w:"full",children:a.jsx(pJ,{})})]})]})},Ql=f.memo(hJ),mJ=[{name:"Free",value:null},{name:"Portrait",value:.67/1},{name:"Wide",value:16/9},{name:"Square",value:1/1}];function eI(){const e=$(o=>o.ui.aspectRatio),t=Z(),n=$(o=>o.generation.shouldFitToWidthHeight),r=$(or);return a.jsx(L,{gap:2,flexGrow:1,children:a.jsx(Yn,{isAttached:!0,children:mJ.map(o=>a.jsx(Xt,{size:"sm",isChecked:e===o.value,isDisabled:r==="img2img"?!n:!1,onClick:()=>t(B7(o.value)),children:o.name},o.name))})})}const gJ=he([Zo,Cu,qi,Zr],(e,t,n,r)=>{const{initial:o,min:s,sliderMax:i,inputMax:u,fineStep:d,coarseStep:p}=n.sd.height,{height:h}=e,{aspectRatio:g}=r,v=t.shift?d:p;return{height:h,initial:o,min:s,sliderMax:i,inputMax:u,step:v,aspectRatio:g}},Ke),vJ=e=>{const{height:t,initial:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:u}=$(gJ),d=Z(),{t:p}=ue(),h=f.useCallback(v=>{if(d(Ll(v)),u){const b=cs(v*u,8);d(zl(b))}},[d,u]),g=f.useCallback(()=>{if(d(Ll(n)),u){const v=cs(n*u,8);d(zl(v))}},[d,n,u]);return a.jsx(Ct,{label:p("parameters.height"),value:t,min:r,step:i,max:o,onChange:h,handleReset:g,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},yJ=f.memo(vJ),bJ=he([Zo,Cu,qi,Zr],(e,t,n,r)=>{const{initial:o,min:s,sliderMax:i,inputMax:u,fineStep:d,coarseStep:p}=n.sd.width,{width:h}=e,{aspectRatio:g}=r,v=t.shift?d:p;return{width:h,initial:o,min:s,sliderMax:i,inputMax:u,step:v,aspectRatio:g}},Ke),xJ=e=>{const{width:t,initial:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:u}=$(bJ),d=Z(),{t:p}=ue(),h=f.useCallback(v=>{if(d(zl(v)),u){const b=cs(v/u,8);d(Ll(b))}},[d,u]),g=f.useCallback(()=>{if(d(zl(n)),u){const v=cs(n/u,8);d(Ll(v))}},[d,n,u]);return a.jsx(Ct,{label:p("parameters.width"),value:t,min:r,step:i,max:o,onChange:h,handleReset:g,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},wJ=f.memo(xJ);function Wp(){const{t:e}=ue(),t=Z(),n=$(o=>o.generation.shouldFitToWidthHeight),r=$(or);return a.jsxs(L,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[a.jsxs(L,{alignItems:"center",gap:2,children:[a.jsx(qe,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:e("parameters.aspectRatio")}),a.jsx(Bi,{}),a.jsx(eI,{}),a.jsx(je,{tooltip:e("ui.swapSizes"),"aria-label":e("ui.swapSizes"),size:"sm",icon:a.jsx(jP,{}),fontSize:20,isDisabled:r==="img2img"?!n:!1,onClick:()=>t(F7())})]}),a.jsx(L,{gap:2,alignItems:"center",children:a.jsxs(L,{gap:2,flexDirection:"column",width:"full",children:[a.jsx(wJ,{isDisabled:r==="img2img"?!n:!1}),a.jsx(yJ,{isDisabled:r==="img2img"?!n:!1})]})})]})}const SJ=he([Zo,qi,Zr,Cu],(e,t,n,r)=>{const{initial:o,min:s,sliderMax:i,inputMax:u,fineStep:d,coarseStep:p}=t.sd.steps,{steps:h}=e,{shouldUseSliders:g}=n,v=r.shift?d:p;return{steps:h,initial:o,min:s,sliderMax:i,inputMax:u,step:v,shouldUseSliders:g}},Ke),CJ=()=>{const{steps:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i}=$(SJ),u=Z(),{t:d}=ue(),p=f.useCallback(v=>{u(Of(v))},[u]),h=f.useCallback(()=>{u(Of(t))},[u,t]),g=f.useCallback(()=>{u(bv())},[u]);return i?a.jsx(Ct,{label:d("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(Nh,{label:d("parameters.steps"),min:n,max:o,step:s,onChange:p,value:e,numberInputFieldProps:{textAlign:"center"},onBlur:g})},Yl=f.memo(CJ);function _J(){const e=Z(),t=$(o=>o.generation.shouldFitToWidthHeight),n=o=>e(H7(o.target.checked)),{t:r}=ue();return a.jsx(xr,{label:r("parameters.imageFit"),isChecked:t,onChange:n})}const kJ=he([Zo,Cu,qi],(e,t,n)=>{const{initial:r,min:o,sliderMax:s,inputMax:i,fineStep:u,coarseStep:d}=n.sd.img2imgStrength,{img2imgStrength:p}=e,h=t.shift?u:d;return{img2imgStrength:p,initial:r,min:o,sliderMax:s,inputMax:i,step:h}},Ke),jJ=()=>{const{img2imgStrength:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s}=$(kJ),i=Z(),{t:u}=ue(),d=f.useCallback(h=>i(Mf(h)),[i]),p=f.useCallback(()=>{i(Mf(t))},[i,t]);return a.jsx(Ct,{label:`${u("parameters.denoisingStrength")}`,step:s,min:n,max:r,onChange:d,handleReset:p,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0,sliderNumberInputProps:{max:o}})},tI=f.memo(jJ);function PJ(){const e=$(i=>i.generation.seed),t=$(i=>i.generation.shouldRandomizeSeed),n=$(i=>i.generation.shouldGenerateVariations),{t:r}=ue(),o=Z(),s=i=>o(If(i));return a.jsx(Nh,{label:r("parameters.seed"),step:1,precision:0,flexGrow:1,min:J4,max:Z4,isDisabled:t,isInvalid:e<0&&n,onChange:s,value:e,formControlProps:{display:"flex",alignItems:"center",gap:3}})}const IJ=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function EJ(){const e=Z(),t=$(o=>o.generation.shouldRandomizeSeed),{t:n}=ue(),r=()=>e(If(IJ(J4,Z4)));return a.jsx(je,{size:"sm",isDisabled:t,"aria-label":n("parameters.shuffle"),tooltip:n("parameters.shuffle"),onClick:r,icon:a.jsx(hL,{})})}const OJ=()=>{const e=Z(),{t}=ue(),n=$(o=>o.generation.shouldRandomizeSeed),r=o=>e(W7(o.target.checked));return a.jsx(xr,{label:t("common.random"),isChecked:n,onChange:r})},MJ=f.memo(OJ),RJ=()=>a.jsxs(L,{sx:{gap:4,alignItems:"center"},children:[a.jsx(PJ,{}),a.jsx(EJ,{}),a.jsx(MJ,{})]}),Xl=f.memo(RJ),DJ=he([Zr,Zo],(e,t)=>{const{shouldUseSliders:n}=e,{shouldFitToWidthHeight:r,shouldRandomizeSeed:o}=t;return{shouldUseSliders:n,shouldFitToWidthHeight:r,activeLabel:o?void 0:"Manual Seed"}},Ke),AJ=()=>{const{shouldUseSliders:e,shouldFitToWidthHeight:t,activeLabel:n}=$(DJ);return a.jsx(Ro,{label:"General",activeLabel:n,defaultIsOpen:!0,children:a.jsxs(L,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(Kl,{}),a.jsx(Yl,{}),a.jsx(ql,{}),a.jsx(Ql,{}),a.jsx($e,{pt:2,children:a.jsx(Xl,{})}),a.jsx(Wp,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(L,{gap:3,children:[a.jsx(Kl,{}),a.jsx(Yl,{}),a.jsx(ql,{})]}),a.jsx(Ql,{}),a.jsx($e,{pt:2,children:a.jsx(Xl,{})}),a.jsx(Wp,{})]}),a.jsx(tI,{}),a.jsx(_J,{})]})})},TJ=f.memo(AJ),NJ=()=>a.jsxs(a.Fragment,{children:[a.jsx(ly,{}),a.jsx(sy,{}),a.jsx(fy,{}),a.jsx(TJ,{}),a.jsx(ry,{}),a.jsx(ty,{}),a.jsx(ey,{}),a.jsx(uy,{}),a.jsx(QP,{}),a.jsx(cy,{}),a.jsx(YP,{}),a.jsx(ny,{})]}),nI=f.memo(NJ),$J=()=>{const e=Z(),t=f.useRef(null),n=f.useCallback(()=>{t.current&&t.current.setLayout([50,50])},[]);return a.jsxs(L,{sx:{gap:4,w:"full",h:"full"},children:[a.jsx(Z1,{children:a.jsx(nI,{})}),a.jsx($e,{sx:{w:"full",h:"full"},children:a.jsxs(X1,{ref:t,autoSaveId:"imageTab.content",direction:"horizontal",style:{height:"100%",width:"100%"},children:[a.jsx(gu,{id:"imageTab.content.initImage",order:0,defaultSize:50,minSize:25,style:{position:"relative"},children:a.jsx(RQ,{})}),a.jsx(HP,{onDoubleClick:n}),a.jsx(gu,{id:"imageTab.content.selectedImage",order:1,defaultSize:50,minSize:25,onResize:()=>{e(yo())},children:a.jsx(VP,{})})]})})]})},zJ=f.memo($J);var LJ=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 RC=wu(LJ);function K0(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 BJ=Object.defineProperty,DC=Object.getOwnPropertySymbols,FJ=Object.prototype.hasOwnProperty,HJ=Object.prototype.propertyIsEnumerable,AC=(e,t,n)=>t in e?BJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WJ=(e,t)=>{for(var n in t||(t={}))FJ.call(t,n)&&AC(e,n,t[n]);if(DC)for(var n of DC(t))HJ.call(t,n)&&AC(e,n,t[n]);return e};function rI(e,t){if(t===null||typeof t!="object")return{};const n=WJ({},t);return Object.keys(t).forEach(r=>{r.includes(`${String(e)}.`)&&delete n[r]}),n}const VJ="__MANTINE_FORM_INDEX__";function TC(e,t){return t?typeof t=="boolean"?t:Array.isArray(t)?t.includes(e.replace(/[.][0-9]/g,`.${VJ}`)):!1:!1}function NC(e,t,n){typeof n.value=="object"&&(n.value=_l(n.value)),!n.enumerable||n.get||n.set||!n.configurable||!n.writable||t==="__proto__"?Object.defineProperty(e,t,n):e[t]=n.value}function _l(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(_l(i))})):s==="[object Map]"?(o=new Map,e.forEach(function(i,u){o.set(_l(u),_l(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(_l(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 Q0(e,t,n="",r={}){return typeof e!="object"||e===null?r:Object.keys(e).reduce((o,s)=>{const i=e[s],u=`${n===""?"":`${n}.`}${s}`,d=ia(u,t);let p=!1;return typeof i=="function"&&(o[u]=i(d,t,u)),typeof i=="object"&&Array.isArray(d)&&(p=!0,d.forEach((h,g)=>Q0(i,t,`${u}.${g}`,o))),typeof i=="object"&&typeof d=="object"&&d!==null&&(p||Q0(i,t,u,o)),o},r)}function Y0(e,t){return $C(typeof e=="function"?e(t):Q0(e,t))}function mf(e,t,n){if(typeof e!="string")return{hasError:!1,error:null};const r=Y0(t,n),o=Object.keys(r.errors).find(s=>e.split(".").every((i,u)=>i===s.split(".")[u]));return{hasError:!!o,error:o?r.errors[o]:null}}function UJ(e,{from:t,to:n},r){const o=ia(e,r);if(!Array.isArray(o))return r;const s=[...o],i=o[t];return s.splice(t,1),s.splice(n,0,i),$h(e,s,r)}var GJ=Object.defineProperty,zC=Object.getOwnPropertySymbols,qJ=Object.prototype.hasOwnProperty,KJ=Object.prototype.propertyIsEnumerable,LC=(e,t,n)=>t in e?GJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,QJ=(e,t)=>{for(var n in t||(t={}))qJ.call(t,n)&&LC(e,n,t[n]);if(zC)for(var n of zC(t))KJ.call(t,n)&&LC(e,n,t[n]);return e};function YJ(e,{from:t,to:n},r){const o=`${e}.${t}`,s=`${e}.${n}`,i=QJ({},r);return Object.keys(r).every(u=>{let d,p;if(u.startsWith(o)&&(d=u,p=u.replace(o,s)),u.startsWith(s)&&(d=u.replace(s,o),p=u),d&&p){const h=i[d],g=i[p];return g===void 0?delete i[d]:i[d]=g,h===void 0?delete i[p]:i[p]=h,!1}return!0}),i}function XJ(e,t,n){const r=ia(e,n);return Array.isArray(r)?$h(e,r.filter((o,s)=>s!==t),n):n}var JJ=Object.defineProperty,BC=Object.getOwnPropertySymbols,ZJ=Object.prototype.hasOwnProperty,eZ=Object.prototype.propertyIsEnumerable,FC=(e,t,n)=>t in e?JJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,tZ=(e,t)=>{for(var n in t||(t={}))ZJ.call(t,n)&&FC(e,n,t[n]);if(BC)for(var n of BC(t))eZ.call(t,n)&&FC(e,n,t[n]);return e};function HC(e,t){const n=e.substring(t.length+1).split(".")[0];return parseInt(n,10)}function WC(e,t,n,r){if(t===void 0)return n;const o=`${String(e)}`;let s=n;r===-1&&(s=rI(`${o}.${t}`,s));const i=tZ({},s),u=new Set;return Object.entries(s).filter(([d])=>{if(!d.startsWith(`${o}.`))return!1;const p=HC(d,o);return Number.isNaN(p)?!1:p>=t}).forEach(([d,p])=>{const h=HC(d,o),g=d.replace(`${o}.${h}`,`${o}.${h+r}`);i[g]=p,u.add(g),u.has(d)||delete i[d]}),i}function nZ(e,t,n,r){const o=ia(e,r);if(!Array.isArray(o))return r;const s=[...o];return s.splice(typeof n=="number"?n:s.length,0,t),$h(e,s,r)}function VC(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 rZ(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 oZ=Object.defineProperty,sZ=Object.defineProperties,aZ=Object.getOwnPropertyDescriptors,UC=Object.getOwnPropertySymbols,iZ=Object.prototype.hasOwnProperty,lZ=Object.prototype.propertyIsEnumerable,GC=(e,t,n)=>t in e?oZ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,za=(e,t)=>{for(var n in t||(t={}))iZ.call(t,n)&&GC(e,n,t[n]);if(UC)for(var n of UC(t))lZ.call(t,n)&&GC(e,n,t[n]);return e},Bg=(e,t)=>sZ(e,aZ(t));function pc({initialValues:e={},initialErrors:t={},initialDirty:n={},initialTouched:r={},clearInputErrorOnChange:o=!0,validateInputOnChange:s=!1,validateInputOnBlur:i=!1,transformValues:u=p=>p,validate:d}={}){const[p,h]=f.useState(r),[g,v]=f.useState(n),[b,S]=f.useState(e),[x,C]=f.useState(K0(t)),_=f.useRef(e),k=te=>{_.current=te},P=f.useCallback(()=>h({}),[]),I=te=>{const H=te?za(za({},b),te):b;k(H),v({})},E=f.useCallback(te=>C(H=>K0(typeof te=="function"?te(H):te)),[]),O=f.useCallback(()=>C({}),[]),R=f.useCallback(()=>{S(e),O(),k(e),v({}),P()},[]),D=f.useCallback((te,H)=>E(re=>Bg(za({},re),{[te]:H})),[]),T=f.useCallback(te=>E(H=>{if(typeof te!="string")return H;const re=za({},H);return delete re[te],re}),[]),B=f.useCallback(te=>v(H=>{if(typeof te!="string")return H;const re=rI(te,H);return delete re[te],re}),[]),W=f.useCallback((te,H)=>{const re=TC(te,s);B(te),h(pe=>Bg(za({},pe),{[te]:!0})),S(pe=>{const ne=$h(te,H,pe);if(re){const ve=mf(te,d,ne);ve.hasError?D(te,ve.error):T(te)}return ne}),!re&&o&&D(te,null)},[]),J=f.useCallback(te=>{S(H=>{const re=typeof te=="function"?te(H):te;return za(za({},H),re)}),o&&O()},[]),F=f.useCallback((te,H)=>{B(te),S(re=>UJ(te,H,re)),C(re=>YJ(te,H,re))},[]),N=f.useCallback((te,H)=>{B(te),S(re=>XJ(te,H,re)),C(re=>WC(te,H,re,-1))},[]),G=f.useCallback((te,H,re)=>{B(te),S(pe=>nZ(te,H,re,pe)),C(pe=>WC(te,re,pe,1))},[]),K=f.useCallback(()=>{const te=Y0(d,b);return C(te.errors),te},[b,d]),M=f.useCallback(te=>{const H=mf(te,d,b);return H.hasError?D(te,H.error):T(te),H},[b,d]),U=(te,{type:H="input",withError:re=!0,withFocus:pe=!0}={})=>{const ve={onChange:rZ(de=>W(te,de))};return re&&(ve.error=x[te]),H==="checkbox"?ve.checked=ia(te,b):ve.value=ia(te,b),pe&&(ve.onFocus=()=>h(de=>Bg(za({},de),{[te]:!0})),ve.onBlur=()=>{if(TC(te,i)){const de=mf(te,d,b);de.hasError?D(te,de.error):T(te)}}),ve},V=(te,H)=>re=>{re==null||re.preventDefault();const pe=K();pe.hasErrors?H==null||H(pe.errors,b,re):te==null||te(u(b),re)},ee=te=>u(te||b),ie=f.useCallback(te=>{te.preventDefault(),R()},[]),xe=te=>{if(te){const re=ia(te,g);if(typeof re=="boolean")return re;const pe=ia(te,b),ne=ia(te,_.current);return!RC(pe,ne)}return Object.keys(g).length>0?VC(g):!RC(b,_.current)},me=f.useCallback(te=>VC(p,te),[p]),ae=f.useCallback(te=>te?!mf(te,d,b).hasError:!Y0(d,b).hasErrors,[b,d]);return{values:b,errors:x,setValues:J,setErrors:E,setFieldValue:W,setFieldError:D,clearFieldError:T,clearErrors:O,reset:R,validate:K,validateField:M,reorderListItem:F,removeListItem:N,insertListItem:G,getInputProps:U,onSubmit:V,onReset:ie,isDirty:xe,isTouched:me,setTouched:h,setDirty:v,resetTouched:P,resetDirty:I,isValid:ae,getTransformedValues:ee}}function Or(e){const{...t}=e,{base50:n,base100:r,base200:o,base300:s,base800:i,base700:u,base900:d,accent500:p,accent300:h}=F1(),{colorMode:g}=xs();return a.jsx(Jj,{styles:()=>({input:{color:Me(d,r)(g),backgroundColor:Me(n,d)(g),borderColor:Me(o,i)(g),borderWidth:2,outline:"none",":focus":{borderColor:Me(h,p)(g)}},label:{color:Me(u,s)(g),fontWeight:"normal",marginBottom:4}}),...t})}const cZ=[{value:"sd-1",label:Mr["sd-1"]},{value:"sd-2",label:Mr["sd-2"]},{value:"sdxl",label:Mr.sdxl},{value:"sdxl-refiner",label:Mr["sdxl-refiner"]}];function zh(e){const{...t}=e,{t:n}=ue();return a.jsx(Co,{label:n("modelManager.baseModel"),data:cZ,...t})}function sI(e){const{data:t}=e3(),{...n}=e;return a.jsx(Co,{label:"Config File",placeholder:"Select A Config File",data:t||[],...n})}const uZ=[{value:"normal",label:"Normal"},{value:"inpaint",label:"Inpaint"},{value:"depth",label:"Depth"}];function Lh(e){const{...t}=e,{t:n}=ue();return a.jsx(Co,{label:n("modelManager.variant"),data:uZ,...t})}function aI(e){const{t}=ue(),n=Z(),{model_path:r}=e,o=pc({initialValues:{model_name:r?r.split("\\").splice(-1)[0].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]=t3(),[i,u]=f.useState(!1),d=p=>{s({body:p}).unwrap().then(h=>{n(Bn(Vn({title:`Model Added: ${p.model_name}`,status:"success"}))),o.reset(),r&&n(_u(null))}).catch(h=>{h&&n(Bn(Vn({title:"Model Add Failed",status:"error"})))})};return a.jsx("form",{onSubmit:o.onSubmit(p=>d(p)),style:{width:"100%"},children:a.jsxs(L,{flexDirection:"column",gap:2,children:[a.jsx(Or,{label:"Model Name",required:!0,...o.getInputProps("model_name")}),a.jsx(zh,{...o.getInputProps("base_model")}),a.jsx(Or,{label:"Model Location",required:!0,...o.getInputProps("path")}),a.jsx(Or,{label:"Description",...o.getInputProps("description")}),a.jsx(Or,{label:"VAE Location",...o.getInputProps("vae")}),a.jsx(Lh,{...o.getInputProps("variant")}),a.jsxs(L,{flexDirection:"column",width:"100%",gap:2,children:[i?a.jsx(Or,{required:!0,label:"Custom Config File Location",...o.getInputProps("config")}):a.jsx(sI,{required:!0,width:"100%",...o.getInputProps("config")}),a.jsx(Ln,{isChecked:i,onChange:()=>u(!i),label:"Use Custom Config"}),a.jsx(Xt,{mt:2,type:"submit",children:t("modelManager.addModel")})]})]})})}function iI(e){const{t}=ue(),n=Z(),{model_path:r}=e,[o]=t3(),s=pc({initialValues:{model_name:r?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=u=>{o({body:u}).unwrap().then(d=>{n(Bn(Vn({title:`Model Added: ${u.model_name}`,status:"success"}))),s.reset(),r&&n(_u(null))}).catch(d=>{d&&n(Bn(Vn({title:"Model Add Failed",status:"error"})))})};return a.jsx("form",{onSubmit:s.onSubmit(u=>i(u)),style:{width:"100%"},children:a.jsxs(L,{flexDirection:"column",gap:2,children:[a.jsx(Or,{required:!0,label:"Model Name",...s.getInputProps("model_name")}),a.jsx(zh,{...s.getInputProps("base_model")}),a.jsx(Or,{required:!0,label:"Model Location",placeholder:"Provide the path to a local folder where your Diffusers Model is stored",...s.getInputProps("path")}),a.jsx(Or,{label:"Description",...s.getInputProps("description")}),a.jsx(Or,{label:"VAE Location",...s.getInputProps("vae")}),a.jsx(Lh,{...s.getInputProps("variant")}),a.jsx(Xt,{mt:2,type:"submit",children:t("modelManager.addModel")})]})})}const lI=[{label:"Diffusers",value:"diffusers"},{label:"Checkpoint / Safetensors",value:"checkpoint"}];function dZ(){const[e,t]=f.useState("diffusers");return a.jsxs(L,{flexDirection:"column",gap:4,width:"100%",children:[a.jsx(Co,{label:"Model Type",value:e,data:lI,onChange:n=>{n&&t(n)}}),a.jsxs(L,{sx:{p:4,borderRadius:4,bg:"base.300",_dark:{bg:"base.850"}},children:[e==="diffusers"&&a.jsx(iI,{}),e==="checkpoint"&&a.jsx(aI,{})]})]})}const fZ=[{label:"None",value:"none"},{label:"v_prediction",value:"v_prediction"},{label:"epsilon",value:"epsilon"},{label:"sample",value:"sample"}];function pZ(){const e=Z(),{t}=ue(),n=$(u=>u.system.isProcessing),[r,{isLoading:o}]=n3(),s=pc({initialValues:{location:"",prediction_type:void 0}}),i=u=>{const d={location:u.location,prediction_type:u.prediction_type==="none"?void 0:u.prediction_type};r({body:d}).unwrap().then(p=>{e(Bn(Vn({title:"Model Added",status:"success"}))),s.reset()}).catch(p=>{p&&(console.log(p),e(Bn(Vn({title:`${p.data.detail} `,status:"error"}))))})};return a.jsx("form",{onSubmit:s.onSubmit(u=>i(u)),style:{width:"100%"},children:a.jsxs(L,{flexDirection:"column",width:"100%",gap:4,children:[a.jsx(Or,{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(Co,{label:"Prediction Type (for Stable Diffusion 2.x Models only)",data:fZ,defaultValue:"none",...s.getInputProps("prediction_type")}),a.jsx(Xt,{type:"submit",isLoading:o,isDisabled:o||n,children:t("modelManager.addModel")})]})})}function hZ(){const[e,t]=f.useState("simple");return a.jsxs(L,{flexDirection:"column",width:"100%",overflow:"scroll",maxHeight:window.innerHeight-250,gap:4,children:[a.jsxs(Yn,{isAttached:!0,children:[a.jsx(Xt,{size:"sm",isChecked:e=="simple",onClick:()=>t("simple"),children:"Simple"}),a.jsx(Xt,{size:"sm",isChecked:e=="advanced",onClick:()=>t("advanced"),children:"Advanced"})]}),a.jsxs(L,{sx:{p:4,borderRadius:4,background:"base.200",_dark:{background:"base.800"}},children:[e==="simple"&&a.jsx(pZ,{}),e==="advanced"&&a.jsx(dZ,{})]})]})}function mZ(e){const{...t}=e;return a.jsx(Uk,{w:"100%",...t,children:e.children})}function gZ(){const e=$(x=>x.modelmanager.searchFolder),[t,n]=f.useState(""),{data:r}=Ei(),{foundModels:o,alreadyInstalled:s,filteredModels:i}=r3({search_path:e||""},{selectFromResult:({data:x})=>{const C=SM(r==null?void 0:r.entities),_=Ss(C,"path"),k=bM(x,_),P=PM(x,_);return{foundModels:x,alreadyInstalled:qC(P,t),filteredModels:qC(k,t)}}}),[u,{isLoading:d}]=n3(),p=Z(),{t:h}=ue(),g=f.useCallback(x=>{const C=x.currentTarget.id.split("\\").splice(-1)[0];u({body:{location:x.currentTarget.id}}).unwrap().then(_=>{p(Bn(Vn({title:`Added Model: ${C}`,status:"success"})))}).catch(_=>{_&&p(Bn(Vn({title:"Failed To Add Model",status:"error"})))})},[p,u]),v=f.useCallback(x=>{n(x.target.value)},[]),b=({models:x,showActions:C=!0})=>x.map(_=>a.jsxs(L,{sx:{p:4,gap:4,alignItems:"center",borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs(L,{w:"100%",sx:{flexDirection:"column",minW:"25%"},children:[a.jsx(qe,{sx:{fontWeight:600},children:_.split("\\").slice(-1)[0]}),a.jsx(qe,{sx:{fontSize:"sm",color:"base.600",_dark:{color:"base.400"}},children:_})]}),C?a.jsxs(L,{gap:2,children:[a.jsx(Xt,{id:_,onClick:g,isLoading:d,children:"Quick Add"}),a.jsx(Xt,{onClick:()=>p(_u(_)),isLoading:d,children:"Advanced"})]}):a.jsx(qe,{sx:{fontWeight:600,p:2,borderRadius:4,color:"accent.50",bg:"accent.400",_dark:{color:"accent.100",bg:"accent.600"}},children:"Installed"})]},_));return(()=>{if(e)return!o||o.length===0?a.jsx(L,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",height:96,userSelect:"none",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(qe,{variant:"subtext",children:"No Models Found"})}):a.jsxs(L,{sx:{flexDirection:"column",gap:2,w:"100%",minW:"50%"},children:[a.jsx(zi,{onChange:v,label:h("modelManager.search"),labelPos:"side"}),a.jsxs(L,{p:2,gap:2,children:[a.jsxs(qe,{sx:{fontWeight:600},children:["Models Found: ",o.length]}),a.jsxs(qe,{sx:{fontWeight:600,color:"accent.500",_dark:{color:"accent.200"}},children:["Not Installed: ",i.length]})]}),a.jsx(mZ,{offsetScrollbars:!0,children:a.jsxs(L,{gap:2,flexDirection:"column",children:[b({models:i}),b({models:s,showActions:!1})]})})]})})()}const qC=(e,t)=>{const n=[];return Qo(e,r=>{r&&r.includes(t)&&n.push(r)}),n};function vZ(){const e=$(i=>i.modelmanager.advancedAddScanModel),[t,n]=f.useState("diffusers"),[r,o]=f.useState(!0);f.useEffect(()=>{e&&[".ckpt",".safetensors",".pth",".pt"].some(i=>e.endsWith(i))?n("checkpoint"):n("diffusers")},[e,n,r]);const s=Z();return e&&a.jsxs($e,{as:Jr.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(L,{justifyContent:"space-between",alignItems:"center",children:[a.jsx(qe,{size:"xl",fontWeight:600,children:r||t==="checkpoint"?"Add Checkpoint Model":"Add Diffusers Model"}),a.jsx(je,{icon:a.jsx(wL,{}),"aria-label":"Close Advanced",onClick:()=>s(_u(null)),size:"sm"})]}),a.jsx(Co,{label:"Model Type",value:t,data:lI,onChange:i=>{i&&(n(i),o(i==="checkpoint"))}}),r?a.jsx(aI,{model_path:e},e):a.jsx(iI,{model_path:e},e)]})}function yZ(){const e=Z(),{t}=ue(),n=$(u=>u.modelmanager.searchFolder),{refetch:r}=r3({search_path:n||""}),o=pc({initialValues:{folder:""}}),s=f.useCallback(u=>{e(Sx(u.folder))},[e]),i=()=>{r()};return a.jsx("form",{onSubmit:o.onSubmit(u=>s(u)),style:{width:"100%"},children:a.jsxs(L,{sx:{w:"100%",gap:2,borderRadius:4,alignItems:"center"},children:[a.jsxs(L,{w:"100%",alignItems:"center",gap:4,minH:12,children:[a.jsx(qe,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",minW:"max-content",_dark:{color:"base.300"}},children:"Folder"}),n?a.jsx(L,{sx:{w:"100%",p:2,px:4,bg:"base.300",borderRadius:4,fontSize:"sm",fontWeight:"bold",_dark:{bg:"base.700"}},children:n}):a.jsx(zi,{w:"100%",size:"md",...o.getInputProps("folder")})]}),a.jsxs(L,{gap:2,children:[n?a.jsx(je,{"aria-label":t("modelManager.scanAgain"),tooltip:t("modelManager.scanAgain"),icon:a.jsx(C_,{}),onClick:i,fontSize:18,size:"sm"}):a.jsx(je,{"aria-label":t("modelManager.findModels"),tooltip:t("modelManager.findModels"),icon:a.jsx(gL,{}),fontSize:18,size:"sm",type:"submit"}),a.jsx(je,{"aria-label":t("modelManager.clearCheckpointFolder"),tooltip:t("modelManager.clearCheckpointFolder"),icon:a.jsx(Xo,{}),size:"sm",onClick:()=>{e(Sx(null)),e(_u(null))},isDisabled:!n,colorScheme:"red"})]})]})})}const bZ=f.memo(yZ);function xZ(){return a.jsxs(L,{flexDirection:"column",w:"100%",gap:4,children:[a.jsx(bZ,{}),a.jsxs(L,{gap:4,children:[a.jsx(L,{sx:{maxHeight:window.innerHeight-300,overflow:"scroll",gap:4,w:"100%"},children:a.jsx(gZ,{})}),a.jsx(vZ,{})]})]})}function wZ(){const[e,t]=f.useState("add"),{t:n}=ue();return a.jsxs(L,{flexDirection:"column",gap:4,children:[a.jsxs(Yn,{isAttached:!0,children:[a.jsx(Xt,{onClick:()=>t("add"),isChecked:e=="add",size:"sm",width:"100%",children:n("modelManager.addModel")}),a.jsx(Xt,{onClick:()=>t("scan"),isChecked:e=="scan",size:"sm",width:"100%",children:n("modelManager.scanForModels")})]}),e=="add"&&a.jsx(hZ,{}),e=="scan"&&a.jsx(xZ,{})]})}const SZ=[{label:"Stable Diffusion 1",value:"sd-1"},{label:"Stable Diffusion 2",value:"sd-2"}];function CZ(){const{t:e}=ue(),t=Z(),{data:n}=Ei(),[r,{isLoading:o}]=V7(),[s,i]=f.useState("sd-1"),u=Cx(n==null?void 0:n.entities,(M,U)=>(M==null?void 0:M.model_format)==="diffusers"&&(M==null?void 0:M.base_model)==="sd-1"),d=Cx(n==null?void 0:n.entities,(M,U)=>(M==null?void 0:M.model_format)==="diffusers"&&(M==null?void 0:M.base_model)==="sd-2"),p=f.useMemo(()=>({"sd-1":u,"sd-2":d}),[u,d]),[h,g]=f.useState(Object.keys(p[s])[0]),[v,b]=f.useState(Object.keys(p[s])[1]),[S,x]=f.useState(null),[C,_]=f.useState(""),[k,P]=f.useState(.5),[I,E]=f.useState("weighted_sum"),[O,R]=f.useState("root"),[D,T]=f.useState(""),[B,W]=f.useState(!1),J=Object.keys(p[s]).filter(M=>M!==v&&M!==S),F=Object.keys(p[s]).filter(M=>M!==h&&M!==S),N=Object.keys(p[s]).filter(M=>M!==h&&M!==v),G=M=>{i(M),g(null),b(null)},K=()=>{const M=[];let U=[h,v,S];U=U.filter(ee=>ee!==null),U.forEach(ee=>{ee&&M.push(ee==null?void 0:ee.split("/")[2])});const V={model_names:M,merged_model_name:C!==""?C:M.join("-"),alpha:k,interp:I,force:B,merge_dest_directory:O==="root"?void 0:D};r({base_model:s,body:V}).unwrap().then(ee=>{t(Bn(Vn({title:e("modelManager.modelsMerged"),status:"success"})))}).catch(ee=>{ee&&t(Bn(Vn({title:e("modelManager.modelsMergeFailed"),status:"error"})))})};return a.jsxs(L,{flexDirection:"column",rowGap:4,children:[a.jsxs(L,{sx:{flexDirection:"column",rowGap:1},children:[a.jsx(qe,{children:e("modelManager.modelMergeHeaderHelp1")}),a.jsx(qe,{fontSize:"sm",variant:"subtext",children:e("modelManager.modelMergeHeaderHelp2")})]}),a.jsxs(L,{columnGap:4,children:[a.jsx(Co,{label:"Model Type",w:"100%",data:SZ,value:s,onChange:G}),a.jsx(br,{label:e("modelManager.modelOne"),w:"100%",value:h,placeholder:e("modelManager.selectModel"),data:J,onChange:M=>g(M)}),a.jsx(br,{label:e("modelManager.modelTwo"),w:"100%",placeholder:e("modelManager.selectModel"),value:v,data:F,onChange:M=>b(M)}),a.jsx(br,{label:e("modelManager.modelThree"),data:N,w:"100%",placeholder:e("modelManager.selectModel"),clearable:!0,onChange:M=>{M?(x(M),E("weighted_sum")):(x(null),E("add_difference"))}})]}),a.jsx(zi,{label:e("modelManager.mergedModelName"),value:C,onChange:M=>_(M.target.value)}),a.jsxs(L,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(Ct,{label:e("modelManager.alpha"),min:.01,max:.99,step:.01,value:k,onChange:M=>P(M),withInput:!0,withReset:!0,handleReset:()=>P(.5),withSliderMarks:!0}),a.jsx(qe,{variant:"subtext",fontSize:"sm",children:e("modelManager.modelMergeAlphaHelp")})]}),a.jsxs(L,{sx:{padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(qe,{fontWeight:500,fontSize:"sm",variant:"subtext",children:e("modelManager.interpolationType")}),a.jsx(Bf,{value:I,onChange:M=>E(M),children:a.jsx(L,{columnGap:4,children:S===null?a.jsxs(a.Fragment,{children:[a.jsx(aa,{value:"weighted_sum",children:a.jsx(qe,{fontSize:"sm",children:e("modelManager.weightedSum")})}),a.jsx(aa,{value:"sigmoid",children:a.jsx(qe,{fontSize:"sm",children:e("modelManager.sigmoid")})}),a.jsx(aa,{value:"inv_sigmoid",children:a.jsx(qe,{fontSize:"sm",children:e("modelManager.inverseSigmoid")})})]}):a.jsx(aa,{value:"add_difference",children:a.jsx(Cn,{label:e("modelManager.modelMergeInterpAddDifferenceHelp"),children:a.jsx(qe,{fontSize:"sm",children:e("modelManager.addDifference")})})})})})]}),a.jsxs(L,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.900"}},children:[a.jsxs(L,{columnGap:4,children:[a.jsx(qe,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:e("modelManager.mergedModelSaveLocation")}),a.jsx(Bf,{value:O,onChange:M=>R(M),children:a.jsxs(L,{columnGap:4,children:[a.jsx(aa,{value:"root",children:a.jsx(qe,{fontSize:"sm",children:e("modelManager.invokeAIFolder")})}),a.jsx(aa,{value:"custom",children:a.jsx(qe,{fontSize:"sm",children:e("modelManager.custom")})})]})})]}),O==="custom"&&a.jsx(zi,{label:e("modelManager.mergedModelCustomSaveLocation"),value:D,onChange:M=>T(M.target.value)})]}),a.jsx(Ln,{label:e("modelManager.ignoreMismatch"),isChecked:B,onChange:M=>W(M.target.checked),fontWeight:"500"}),a.jsx(Xt,{onClick:K,isLoading:o,isDisabled:h===null||v===null,children:e("modelManager.merge")})]})}const _Z=rt((e,t)=>{const{t:n}=ue(),{acceptButtonText:r=n("common.accept"),acceptCallback:o,cancelButtonText:s=n("common.cancel"),cancelCallback:i,children:u,title:d,triggerComponent:p}=e,{isOpen:h,onOpen:g,onClose:v}=Ws(),b=f.useRef(null),S=()=>{o(),v()},x=()=>{i&&i(),v()};return a.jsxs(a.Fragment,{children:[f.cloneElement(p,{onClick:g,ref:t}),a.jsx(Du,{isOpen:h,leastDestructiveRef:b,onClose:v,isCentered:!0,children:a.jsx(ya,{children:a.jsxs(Au,{children:[a.jsx(va,{fontSize:"lg",fontWeight:"bold",children:d}),a.jsx(ba,{children:u}),a.jsxs(ga,{children:[a.jsx(Xt,{ref:b,onClick:x,children:s}),a.jsx(Xt,{colorScheme:"error",onClick:S,ml:3,children:r})]})]})})})]})}),hy=f.memo(_Z);function kZ(e){const{model:t}=e,n=Z(),{t:r}=ue(),[o,{isLoading:s}]=U7(),[i,u]=f.useState("InvokeAIRoot"),[d,p]=f.useState("");f.useEffect(()=>{u("InvokeAIRoot")},[t]);const h=()=>{u("InvokeAIRoot")},g=()=>{const v={base_model:t.base_model,model_name:t.model_name,params:{convert_dest_directory:i==="Custom"?d:void 0}};if(i==="Custom"&&d===""){n(Bn(Vn({title:r("modelManager.noCustomLocationProvided"),status:"error"})));return}n(Bn(Vn({title:`${r("modelManager.convertingModelBegin")}: ${t.model_name}`,status:"success"}))),o(v).unwrap().then(b=>{n(Bn(Vn({title:`${r("modelManager.modelConverted")}: ${t.model_name}`,status:"success"})))}).catch(b=>{n(Bn(Vn({title:`${r("modelManager.modelConversionFailed")}: ${t.model_name}`,status:"error"})))})};return a.jsxs(hy,{title:`${r("modelManager.convert")} ${t.model_name}`,acceptCallback:g,cancelCallback:h,acceptButtonText:`${r("modelManager.convert")}`,triggerComponent:a.jsxs(Xt,{size:"sm","aria-label":r("modelManager.convertToDiffusers"),className:" modal-close-btn",isLoading:s,children:["🧨 ",r("modelManager.convertToDiffusers")]}),motionPreset:"slideInBottom",children:[a.jsxs(L,{flexDirection:"column",rowGap:4,children:[a.jsx(qe,{children:r("modelManager.convertToDiffusersHelpText1")}),a.jsxs(Fv,{children:[a.jsx(la,{children:r("modelManager.convertToDiffusersHelpText2")}),a.jsx(la,{children:r("modelManager.convertToDiffusersHelpText3")}),a.jsx(la,{children:r("modelManager.convertToDiffusersHelpText4")}),a.jsx(la,{children:r("modelManager.convertToDiffusersHelpText5")})]}),a.jsx(qe,{children:r("modelManager.convertToDiffusersHelpText6")})]}),a.jsxs(L,{flexDir:"column",gap:2,children:[a.jsxs(L,{marginTop:4,flexDir:"column",gap:2,children:[a.jsx(qe,{fontWeight:"600",children:r("modelManager.convertToDiffusersSaveLocation")}),a.jsx(Bf,{value:i,onChange:v=>u(v),children:a.jsxs(L,{gap:4,children:[a.jsx(aa,{value:"InvokeAIRoot",children:a.jsx(Cn,{label:"Save converted model in the InvokeAI root folder",children:r("modelManager.invokeRoot")})}),a.jsx(aa,{value:"Custom",children:a.jsx(Cn,{label:"Save converted model in a custom folder",children:r("modelManager.custom")})})]})})]}),i==="Custom"&&a.jsxs(L,{flexDirection:"column",rowGap:2,children:[a.jsx(qe,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:r("modelManager.customSaveLocation")}),a.jsx(zi,{value:d,onChange:v=>{p(v.target.value)},width:"full"})]})]})]})}function jZ(e){const t=$(Sr),{model:n}=e,[r,{isLoading:o}]=o3(),{data:s}=e3(),[i,u]=f.useState(!1);f.useEffect(()=>{s!=null&&s.includes(n.config)||u(!0)},[s,n.config]);const d=Z(),{t:p}=ue(),h=pc({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}}),g=f.useCallback(v=>{const b={base_model:n.base_model,model_name:n.model_name,body:v};r(b).unwrap().then(S=>{h.setValues(S),d(Bn(Vn({title:p("modelManager.modelUpdated"),status:"success"})))}).catch(S=>{h.reset(),d(Bn(Vn({title:p("modelManager.modelUpdateFailed"),status:"error"})))})},[h,d,n.base_model,n.model_name,p,r]);return a.jsxs(L,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs(L,{justifyContent:"space-between",alignItems:"center",children:[a.jsxs(L,{flexDirection:"column",children:[a.jsx(qe,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(qe,{fontSize:"sm",color:"base.400",children:[Mr[n.base_model]," Model"]})]}),["sdxl","sdxl-refiner"].includes(n.base_model)?a.jsx(Za,{sx:{p:2,borderRadius:4,bg:"error.200",_dark:{bg:"error.400"}},children:"Conversion Not Supported"}):a.jsx(kZ,{model:n})]}),a.jsx(Fi,{}),a.jsx(L,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",children:a.jsx("form",{onSubmit:h.onSubmit(v=>g(v)),children:a.jsxs(L,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(Or,{label:p("modelManager.name"),...h.getInputProps("model_name")}),a.jsx(Or,{label:p("modelManager.description"),...h.getInputProps("description")}),a.jsx(zh,{required:!0,...h.getInputProps("base_model")}),a.jsx(Lh,{required:!0,...h.getInputProps("variant")}),a.jsx(Or,{required:!0,label:p("modelManager.modelLocation"),...h.getInputProps("path")}),a.jsx(Or,{label:p("modelManager.vaeLocation"),...h.getInputProps("vae")}),a.jsxs(L,{flexDirection:"column",gap:2,children:[i?a.jsx(Or,{required:!0,label:p("modelManager.config"),...h.getInputProps("config")}):a.jsx(sI,{required:!0,...h.getInputProps("config")}),a.jsx(Ln,{isChecked:i,onChange:()=>u(!i),label:"Use Custom Config"})]}),a.jsx(Xt,{type:"submit",isDisabled:t||o,isLoading:o,children:p("modelManager.updateModel")})]})})})]})}function PZ(e){const t=$(Sr),{model:n}=e,[r,{isLoading:o}]=o3(),s=Z(),{t:i}=ue(),u=pc({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}}),d=f.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(g=>{u.setValues(g),s(Bn(Vn({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(g=>{u.reset(),s(Bn(Vn({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[u,s,n.base_model,n.model_name,i,r]);return a.jsxs(L,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs(L,{flexDirection:"column",children:[a.jsx(qe,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(qe,{fontSize:"sm",color:"base.400",children:[Mr[n.base_model]," Model"]})]}),a.jsx(Fi,{}),a.jsx("form",{onSubmit:u.onSubmit(p=>d(p)),children:a.jsxs(L,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(Or,{label:i("modelManager.name"),...u.getInputProps("model_name")}),a.jsx(Or,{label:i("modelManager.description"),...u.getInputProps("description")}),a.jsx(zh,{required:!0,...u.getInputProps("base_model")}),a.jsx(Lh,{required:!0,...u.getInputProps("variant")}),a.jsx(Or,{required:!0,label:i("modelManager.modelLocation"),...u.getInputProps("path")}),a.jsx(Or,{label:i("modelManager.vaeLocation"),...u.getInputProps("vae")}),a.jsx(Xt,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}const IZ={"sd-1":"SD1","sd-2":"SD2",sdxl:"SDXL","sdxl-refiner":"SDXLR"};function KC(e){const t=$(Sr),{t:n}=ue(),r=Z(),[o]=G7(),{model:s,isSelected:i,setSelectedModelId:u}=e,d=f.useCallback(()=>{u(s.id)},[s.id,u]),p=f.useCallback(()=>{o(s).unwrap().then(h=>{r(Bn(Vn({title:`${n("modelManager.modelDeleted")}: ${s.model_name}`,status:"success"})))}).catch(h=>{h&&r(Bn(Vn({title:`${n("modelManager.modelDeleteFailed")}: ${s.model_name}`,status:"success"})))}),u(void 0)},[o,s,u,r,n]);return a.jsxs(L,{sx:{gap:2,alignItems:"center",w:"full"},children:[a.jsx(L,{as:Xt,isChecked:i,sx:{justifyContent:"start",p:2,borderRadius:"base",w:"full",alignItems:"center",bg:i?"accent.400":"base.100",color:i?"base.50":"base.800",_hover:{bg:i?"accent.500":"base.300",color:i?"base.50":"base.800"},_dark:{color:i?"base.50":"base.100",bg:i?"accent.600":"base.850",_hover:{color:i?"base.50":"base.100",bg:i?"accent.550":"base.700"}}},onClick:d,children:a.jsxs(L,{gap:4,alignItems:"center",children:[a.jsx(Za,{minWidth:14,p:.5,fontSize:"sm",variant:"solid",children:IZ[s.base_model]}),a.jsx(Cn,{label:s.description,hasArrow:!0,placement:"bottom",children:a.jsx(qe,{sx:{fontWeight:500},children:s.model_name})})]})}),a.jsx(hy,{title:n("modelManager.deleteModel"),acceptCallback:p,acceptButtonText:n("modelManager.delete"),triggerComponent:a.jsx(je,{icon:a.jsx(jL,{}),"aria-label":n("modelManager.deleteConfig"),isDisabled:t,colorScheme:"error"}),children:a.jsxs(L,{rowGap:4,flexDirection:"column",children:[a.jsx("p",{style:{fontWeight:"bold"},children:n("modelManager.deleteMsg1")}),a.jsx("p",{children:n("modelManager.deleteMsg2")})]})})]})}const EZ=e=>{const{selectedModelId:t,setSelectedModelId:n}=e,{t:r}=ue(),[o,s]=f.useState(""),[i,u]=f.useState("images"),{filteredDiffusersModels:d}=Ei(void 0,{selectFromResult:({data:g})=>({filteredDiffusersModels:QC(g,"diffusers",o)})}),{filteredCheckpointModels:p}=Ei(void 0,{selectFromResult:({data:g})=>({filteredCheckpointModels:QC(g,"checkpoint",o)})}),h=f.useCallback(g=>{s(g.target.value)},[]);return a.jsx(L,{flexDirection:"column",rowGap:4,width:"50%",minWidth:"50%",children:a.jsxs(L,{flexDirection:"column",gap:4,paddingInlineEnd:4,children:[a.jsxs(Yn,{isAttached:!0,children:[a.jsx(Xt,{onClick:()=>u("images"),isChecked:i==="images",size:"sm",children:r("modelManager.allModels")}),a.jsx(Xt,{size:"sm",onClick:()=>u("diffusers"),isChecked:i==="diffusers",children:r("modelManager.diffusersModels")}),a.jsx(Xt,{size:"sm",onClick:()=>u("checkpoint"),isChecked:i==="checkpoint",children:r("modelManager.checkpointModels")})]}),a.jsx(zi,{onChange:h,label:r("modelManager.search"),labelPos:"side"}),a.jsxs(L,{flexDirection:"column",gap:4,maxHeight:window.innerHeight-280,overflow:"scroll",children:[["images","diffusers"].includes(i)&&d.length>0&&a.jsx(YC,{children:a.jsxs(L,{sx:{gap:2,flexDir:"column"},children:[a.jsx(qe,{variant:"subtext",fontSize:"sm",children:"Diffusers"}),d.map(g=>a.jsx(KC,{model:g,isSelected:t===g.id,setSelectedModelId:n},g.id))]})}),["images","checkpoint"].includes(i)&&p.length>0&&a.jsx(YC,{children:a.jsxs(L,{sx:{gap:2,flexDir:"column"},children:[a.jsx(qe,{variant:"subtext",fontSize:"sm",children:"Checkpoints"}),p.map(g=>a.jsx(KC,{model:g,isSelected:t===g.id,setSelectedModelId:n},g.id))]})})]})]})})},QC=(e,t,n)=>{const r=[];return Qo(e==null?void 0:e.entities,o=>{if(!o)return;const s=o.model_name.toLowerCase().includes(n.toLowerCase()),i=o.model_format===t;s&&i&&r.push(o)}),r},YC=e=>a.jsx(L,{flexDirection:"column",gap:4,borderRadius:4,p:4,sx:{bg:"base.200",_dark:{bg:"base.800"}},children:e.children});function OZ(){const[e,t]=f.useState(),{model:n}=Ei(void 0,{selectFromResult:({data:r})=>({model:e?r==null?void 0:r.entities[e]:void 0})});return a.jsxs(L,{sx:{gap:8,w:"full",h:"full"},children:[a.jsx(EZ,{selectedModelId:e,setSelectedModelId:t}),a.jsx(MZ,{model:n})]})}const MZ=e=>{const{model:t}=e;return(t==null?void 0:t.model_format)==="checkpoint"?a.jsx(jZ,{model:t},t.id):(t==null?void 0:t.model_format)==="diffusers"?a.jsx(PZ,{model:t},t.id):a.jsx(L,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",maxH:96,userSelect:"none"},children:a.jsx(qe,{variant:"subtext",children:"No Model Selected"})})};function RZ(){const{t:e}=ue();return a.jsxs(L,{sx:{w:"full",p:4,borderRadius:4,gap:4,justifyContent:"space-between",alignItems:"center",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs(L,{sx:{flexDirection:"column",gap:2},children:[a.jsx(qe,{sx:{fontWeight:600},children:e("modelManager.syncModels")}),a.jsx(qe,{fontSize:"sm",sx:{_dark:{color:"base.400"}},children:e("modelManager.syncModelsDesc")})]}),a.jsx(py,{})]})}function DZ(){return a.jsx(L,{children:a.jsx(RZ,{})})}const XC=[{id:"modelManager",label:pr.t("modelManager.modelManager"),content:a.jsx(OZ,{})},{id:"importModels",label:pr.t("modelManager.importModels"),content:a.jsx(wZ,{})},{id:"mergeModels",label:pr.t("modelManager.mergeModels"),content:a.jsx(CZ,{})},{id:"settings",label:pr.t("modelManager.settings"),content:a.jsx(DZ,{})}],AZ=()=>a.jsxs(Nu,{isLazy:!0,variant:"line",layerStyle:"first",sx:{w:"full",h:"full",p:4,gap:4,borderRadius:"base"},children:[a.jsx($u,{children:XC.map(e=>a.jsx(Bl,{sx:{borderTopRadius:"base"},children:e.label},e.id))}),a.jsx(fh,{sx:{w:"full",h:"full"},children:XC.map(e=>a.jsx(dh,{sx:{w:"full",h:"full"},children:e.content},e.id))})]}),TZ=f.memo(AZ);const NZ=e=>he([t=>t.nodes],t=>{const n=t.invocationTemplates[e];if(n)return n},{memoizeOptions:{resultEqualityCheck:(t,n)=>t!==void 0&&n!==void 0&&t.type===n.type}}),$Z=(e,t)=>{const n={id:e,name:t.name,type:t.type};return t.inputRequirement!=="never"&&(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==="array"&&(n.value=t.default??1),t.type==="image"&&(n.value=void 0),t.type==="image_collection"&&(n.value=[]),t.type==="latents"&&(n.value=void 0),t.type==="conditioning"&&(n.value=void 0),t.type==="unet"&&(n.value=void 0),t.type==="clip"&&(n.value=void 0),t.type==="vae"&&(n.value=void 0),t.type==="control"&&(n.value=void 0),t.type==="model"&&(n.value=void 0),t.type==="vae_model"&&(n.value=void 0),t.type==="lora_model"&&(n.value=void 0),t.type==="controlnet_model"&&(n.value=void 0)),n},zZ=he([e=>e.nodes],e=>e.invocationTemplates),my="node-drag-handle",JC={dragHandle:`.${my}`},LZ=()=>{const e=$(zZ),t=eh();return f.useCallback(n=>{if(n==="progress_image"){const{x:h,y:g}=t.project({x:window.innerWidth/2.5,y:window.innerHeight/8});return{...JC,id:"progress_image",type:"progress_image",position:{x:h,y:g},data:{}}}const r=e[n];if(r===void 0){console.error(`Unable to find template ${n}.`);return}const o=Ka(),s=_x(r.inputs,(h,g,v)=>{const b=Ka(),S=$Z(b,g);return h[v]=S,h},{}),i=_x(r.outputs,(h,g,v)=>{const S={id:Ka(),name:v,type:g.type};return h[v]=S,h},{}),{x:u,y:d}=t.project({x:window.innerWidth/2.5,y:window.innerHeight/8});return{...JC,id:o,type:"invocation",position:{x:u,y:d},data:{id:o,type:n,inputs:s,outputs:i}}},[e,t])},BZ=e=>{const{nodeId:t,title:n,description:r}=e;return a.jsxs(L,{className:my,sx:{borderTopRadius:"md",alignItems:"center",justifyContent:"space-between",px:2,py:1,bg:"base.100",_dark:{bg:"base.900"}},children:[a.jsx(Cn,{label:t,children:a.jsx(zs,{size:"xs",sx:{fontWeight:600,color:"base.900",_dark:{color:"base.200"}},children:n})}),a.jsx(Cn,{label:r,placement:"top",hasArrow:!0,shouldWrapChildren:!0,children:a.jsx(io,{sx:{h:"min-content",color:"base.700",_dark:{color:"base.300"}},as:aL})})]})},cI=f.memo(BZ),uI=()=>{const e=eh();return f.useCallback(({source:n,sourceHandle:r,target:o,targetHandle:s})=>(e.getEdges(),e.getNodes(),!0),[e])},FZ={position:"absolute",width:"1rem",height:"1rem",borderWidth:0},HZ={left:"-1rem"},WZ={right:"-0.5rem"},VZ=e=>{const{field:t,isValidConnection:n,handleType:r,styles:o}=e,{name:s,type:i}=t;return a.jsx(Cn,{label:i,placement:r==="target"?"start":"end",hasArrow:!0,openDelay:s3,children:a.jsx(q7,{type:r,id:s,isValidConnection:n,position:r==="target"?kx.Left:kx.Right,style:{backgroundColor:a3[i].colorCssVar,...o,...FZ,...r==="target"?HZ:WZ}})})},dI=f.memo(VZ),UZ=e=>a.jsx(cL,{}),GZ=f.memo(UZ),qZ=e=>{const{nodeId:t,field:n}=e,r=Z(),o=s=>{r(qo({nodeId:t,fieldName:n.name,value:s.target.checked}))};return a.jsx(Xv,{onChange:o,isChecked:n.value})},KZ=f.memo(qZ),QZ=e=>null,YZ=f.memo(QZ);function Bh(){return(Bh=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function X0(e){var t=f.useRef(e),n=f.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var Jl=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(ZC(o.current,C,u.current)):x(!1)},S=function(){return x(!1)};function x(C){var _=d.current,k=J0(o.current),P=C?k.addEventListener:k.removeEventListener;P(_?"touchmove":"mousemove",b),P(_?"touchend":"mouseup",S)}return[function(C){var _=C.nativeEvent,k=o.current;if(k&&(e4(_),!function(I,E){return E&&!ru(I)}(_,d.current)&&k)){if(ru(_)){d.current=!0;var P=_.changedTouches||[];P.length&&(u.current=P[0].identifier)}k.focus(),s(ZC(k,_,u.current)),x(!0)}},function(C){var _=C.which||C.keyCode;_<37||_>40||(C.preventDefault(),i({left:_===39?.05:_===37?-.05:0,top:_===40?.05:_===38?-.05:0}))},x]},[i,s]),h=p[0],g=p[1],v=p[2];return f.useEffect(function(){return v},[v]),z.createElement("div",Bh({},r,{onTouchStart:h,onMouseDown:h,className:"react-colorful__interactive",ref:o,onKeyDown:g,tabIndex:0,role:"slider"}))}),Fh=function(e){return e.filter(Boolean).join(" ")},vy=function(e){var t=e.color,n=e.left,r=e.top,o=r===void 0?.5:r,s=Fh(["react-colorful__pointer",e.className]);return z.createElement("div",{className:s,style:{top:100*o+"%",left:100*n+"%"}},z.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},lo=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},pI=function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:lo(e.h),s:lo(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:lo(o/2),a:lo(r,2)}},Z0=function(e){var t=pI(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Fg=function(e){var t=pI(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},XZ=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),u=r*(1-(t-s)*n),d=r*(1-(1-t+s)*n),p=s%6;return{r:lo(255*[r,u,i,i,d,r][p]),g:lo(255*[d,r,r,u,i,i][p]),b:lo(255*[i,i,d,r,r,u][p]),a:lo(o,2)}},JZ=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),u=i?s===t?(n-r)/i:s===n?2+(r-t)/i:4+(t-n)/i:0;return{h:lo(60*(u<0?u+6:u)),s:lo(s?i/s*100:0),v:lo(s/255*100),a:o}},ZZ=z.memo(function(e){var t=e.hue,n=e.onChange,r=Fh(["react-colorful__hue",e.className]);return z.createElement("div",{className:r},z.createElement(gy,{onMove:function(o){n({h:360*o.left})},onKey:function(o){n({h:Jl(t+360*o.left,0,360)})},"aria-label":"Hue","aria-valuenow":lo(t),"aria-valuemax":"360","aria-valuemin":"0"},z.createElement(vy,{className:"react-colorful__hue-pointer",left:t/360,color:Z0({h:t,s:100,v:100,a:1})})))}),eee=z.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:Z0({h:t.h,s:100,v:100,a:1})};return z.createElement("div",{className:"react-colorful__saturation",style:r},z.createElement(gy,{onMove:function(o){n({s:100*o.left,v:100-100*o.top})},onKey:function(o){n({s:Jl(t.s+100*o.left,0,100),v:Jl(t.v-100*o.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+lo(t.s)+"%, Brightness "+lo(t.v)+"%"},z.createElement(vy,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Z0(t)})))}),hI=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function tee(e,t,n){var r=X0(n),o=f.useState(function(){return e.toHsva(t)}),s=o[0],i=o[1],u=f.useRef({color:t,hsva:s});f.useEffect(function(){if(!e.equal(t,u.current.color)){var p=e.toHsva(t);u.current={hsva:p,color:t},i(p)}},[t,e]),f.useEffect(function(){var p;hI(s,u.current.hsva)||e.equal(p=e.fromHsva(s),u.current.color)||(u.current={hsva:s,color:p},r(p))},[s,e,r]);var d=f.useCallback(function(p){i(function(h){return Object.assign({},h,p)})},[]);return[s,d]}var nee=typeof window<"u"?f.useLayoutEffect:f.useEffect,ree=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},t4=new Map,oee=function(e){nee(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!t4.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}`,t4.set(t,n);var r=ree();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},see=function(e){var t=e.className,n=e.hsva,r=e.onChange,o={backgroundImage:"linear-gradient(90deg, "+Fg(Object.assign({},n,{a:0}))+", "+Fg(Object.assign({},n,{a:1}))+")"},s=Fh(["react-colorful__alpha",t]),i=lo(100*n.a);return z.createElement("div",{className:s},z.createElement("div",{className:"react-colorful__alpha-gradient",style:o}),z.createElement(gy,{onMove:function(u){r({a:u.left})},onKey:function(u){r({a:Jl(n.a+u.left)})},"aria-label":"Alpha","aria-valuetext":i+"%","aria-valuenow":i,"aria-valuemin":"0","aria-valuemax":"100"},z.createElement(vy,{className:"react-colorful__alpha-pointer",left:n.a,color:Fg(n)})))},aee=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,s=e.onChange,i=fI(e,["className","colorModel","color","onChange"]),u=f.useRef(null);oee(u);var d=tee(n,o,s),p=d[0],h=d[1],g=Fh(["react-colorful",t]);return z.createElement("div",Bh({},i,{ref:u,className:g}),z.createElement(eee,{hsva:p,onChange:h}),z.createElement(ZZ,{hue:p.h,onChange:h}),z.createElement(see,{hsva:p,onChange:h,className:"react-colorful__last-control"}))},iee={defaultColor:{r:0,g:0,b:0,a:1},toHsva:JZ,fromHsva:XZ,equal:hI},mI=function(e){return z.createElement(aee,Bh({},e,{colorModel:iee}))};const lee=e=>{const{nodeId:t,field:n}=e,r=Z(),o=s=>{r(qo({nodeId:t,fieldName:n.name,value:s}))};return a.jsx(mI,{className:"nodrag",color:n.value,onChange:o})},cee=f.memo(lee),uee=e=>null,dee=f.memo(uee),fee=e=>null,pee=f.memo(fee),hee=e=>{const{nodeId:t,field:n}=e,r=n.value,o=Z();ue();const{data:s}=yv(),i=f.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]),u=f.useMemo(()=>{if(!s)return[];const p=[];return Qo(s.entities,(h,g)=>{h&&p.push({value:g,label:h.model_name,group:Mr[h.base_model]})}),p},[s]),d=f.useCallback(p=>{if(!p)return;const h=UP(p);h&&o(qo({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(Co,{tooltip:i==null?void 0:i.description,label:(i==null?void 0:i.base_model)&&Mr[i==null?void 0:i.base_model],value:(i==null?void 0:i.id)??null,placeholder:"Pick one",error:!i,data:u,onChange:d})},mee=f.memo(hee),gee=e=>{const{nodeId:t,field:n,template:r}=e,o=Z(),s=i=>{o(qo({nodeId:t,fieldName:n.name,value:i.target.value}))};return a.jsx(o5,{onChange:s,value:n.value,children:r.options.map(i=>a.jsx("option",{children:i},i))})},vee=f.memo(gee),yee=e=>{var p;const{nodeId:t,field:n}=e,r=Z();f.useCallback(({image_name:h})=>{r(qo({nodeId:t,fieldName:n.name,value:K7([...n.value??[],{image_name:h}],"image_name")}))},[r,n.name,n.value,t]);const o={id:`node-${t}-${n.name}`,actionType:"SET_MULTI_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}},{isOver:s,setNodeRef:i,active:u,over:d}=uv({id:`node_${t}`,data:o});return f.useCallback(()=>{r(qo({nodeId:t,fieldName:n.name,value:void 0}))},[r,n.name,t]),a.jsxs(L,{ref:i,sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center",position:"relative",minH:"10rem"},children:[(p=n.value)==null?void 0:p.map(({image_name:h})=>a.jsx(xee,{imageName:h},h)),jf(o,u)&&a.jsx(Yf,{isOver:s})]})},bee=f.memo(yee),xee=e=>{const{currentData:t}=Uo(e.imageName);return a.jsx(ri,{imageDTO:t,isDropDisabled:!0,isDragDisabled:!0})},wee=e=>{var v;const{nodeId:t,field:n}=e,r=Z(),{currentData:o,isLoading:s,isError:i,isSuccess:u}=Uo(((v=n.value)==null?void 0:v.image_name)??Xr.skipToken),d=f.useCallback(()=>{r(qo({nodeId:t,fieldName:n.name,value:void 0}))},[r,n.name,t]),p=f.useMemo(()=>{if(o)return{id:`node-${t}-${n.name}`,payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[n.name,o,t]),h=f.useMemo(()=>({id:`node-${t}-${n.name}`,actionType:"SET_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}}),[n.name,t]),g=f.useMemo(()=>({type:"SET_NODES_IMAGE",nodeId:t,fieldName:n.name}),[t,n.name]);return a.jsx(L,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(ri,{imageDTO:o,droppableData:h,draggableData:p,onClickReset:d,postUploadAction:g})})},See=f.memo(wee),Cee=e=>a.jsx(Fz,{}),n4=f.memo(Cee),_ee=e=>null,kee=f.memo(_ee),jee=Zp.child({module:"models"}),Pee=e=>{const[t,n,r]=e.split("/"),o=Q7.safeParse({base_model:t,model_name:r});if(!o.success){jee.error({loraModelId:e,errors:o.error.format()},"Failed to parse LoRA model id");return}return o.data},Iee=e=>{const{nodeId:t,field:n}=e,r=n.value,o=Z(),{data:s}=V4(),i=f.useMemo(()=>{if(!s)return[];const p=[];return Qo(s.entities,(h,g)=>{h&&p.push({value:g,label:h.model_name,group:Mr[h.base_model]})}),p.sort((h,g)=>h.disabled&&!g.disabled?1:-1)},[s]),u=f.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]),d=f.useCallback(p=>{if(!p)return;const h=Pee(p);h&&o(qo({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return(s==null?void 0:s.ids.length)===0?a.jsx(L,{sx:{justifyContent:"center",p:2},children:a.jsx(qe,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(br,{value:(u==null?void 0:u.id)??null,label:(u==null?void 0:u.base_model)&&Mr[u==null?void 0:u.base_model],placeholder:i.length>0?"Select a LoRA":"No LoRAs available",data:i,nothingFound:"No matching LoRAs",itemComponent:ai,disabled:i.length===0,filter:(p,h)=>{var g;return((g=h.label)==null?void 0:g.toLowerCase().includes(p.toLowerCase().trim()))||h.value.toLowerCase().includes(p.toLowerCase().trim())},onChange:d})},Eee=f.memo(Iee),Oee=e=>{var h,g;const{nodeId:t,field:n}=e,r=Z(),{t:o}=ue(),{data:s,isLoading:i}=Ei(),u=f.useMemo(()=>{if(!s)return[];const v=[];return Qo(s.entities,(b,S)=>{b&&v.push({value:S,label:b.model_name,group:Mr[b.base_model]})}),v},[s]),d=f.useMemo(()=>{var v,b;return(s==null?void 0:s.entities[`${(v=n.value)==null?void 0:v.base_model}/main/${(b=n.value)==null?void 0:b.model_name}`])??null},[(h=n.value)==null?void 0:h.base_model,(g=n.value)==null?void 0:g.model_name,s==null?void 0:s.entities]),p=f.useCallback(v=>{if(!v)return;const b=JP(v);b&&r(qo({nodeId:t,fieldName:n.name,value:b}))},[r,n.name,t]);return i?a.jsx(br,{label:o("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs(L,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(br,{tooltip:d==null?void 0:d.description,label:(d==null?void 0:d.base_model)&&Mr[d==null?void 0:d.base_model],value:d==null?void 0:d.id,placeholder:u.length>0?"Select a model":"No models available",data:u,error:u.length===0,disabled:u.length===0,onChange:p}),a.jsx($e,{mt:7,children:a.jsx(py,{iconMode:!0})})]})},Mee=f.memo(Oee),Ree=e=>{const{nodeId:t,field:n}=e,r=Z(),[o,s]=f.useState(String(n.value)),i=u=>{s(u),u.match(Hp)||r(qo({nodeId:t,fieldName:n.name,value:e.template.type==="integer"?Math.floor(Number(u)):Number(u)}))};return f.useEffect(()=>{!o.match(Hp)&&n.value!==Number(o)&&s(String(n.value))},[n.value,o]),a.jsxs(G4,{onChange:i,value:o,step:e.template.type==="integer"?1:.1,precision:e.template.type==="integer"?0:3,children:[a.jsx(q4,{}),a.jsxs(K4,{children:[a.jsx(Q4,{}),a.jsx(Y4,{})]})]})},Dee=f.memo(Ree),Aee=e=>{const{nodeId:t,field:n}=e,r=Z(),o=s=>{r(qo({nodeId:t,fieldName:n.name,value:s.target.value}))};return a.jsx(Iu,{onChange:o,value:n.value})},Tee=f.memo(Aee),Nee=e=>null,$ee=f.memo(Nee),zee=e=>null,Lee=f.memo(zee),Bee=e=>{const{nodeId:t,field:n}=e,r=n.value,o=Z();ue();const{data:s}=X4(),i=f.useMemo(()=>{if(!s)return[];const p=[{value:"default",label:"Default",group:"Default"}];return Qo(s.entities,(h,g)=>{h&&p.push({value:g,label:h.model_name,group:Mr[h.base_model]})}),p.sort((h,g)=>h.disabled&&!g.disabled?1:-1)},[s]),u=f.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]),d=f.useCallback(p=>{if(!p)return;const h=ZP(p);h&&o(qo({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(br,{itemComponent:ai,tooltip:u==null?void 0:u.description,label:(u==null?void 0:u.base_model)&&Mr[u==null?void 0:u.base_model],value:(u==null?void 0:u.id)??"default",placeholder:"Default",data:i,onChange:d,disabled:i.length===0,clearable:!0})},Fee=f.memo(Bee),Hee=e=>{const{nodeId:t,field:n,template:r}=e,{type:o}=n;return o==="string"&&r.type==="string"?a.jsx(Tee,{nodeId:t,field:n,template:r}):o==="boolean"&&r.type==="boolean"?a.jsx(KZ,{nodeId:t,field:n,template:r}):o==="integer"&&r.type==="integer"||o==="float"&&r.type==="float"?a.jsx(Dee,{nodeId:t,field:n,template:r}):o==="enum"&&r.type==="enum"?a.jsx(vee,{nodeId:t,field:n,template:r}):o==="image"&&r.type==="image"?a.jsx(See,{nodeId:t,field:n,template:r}):o==="latents"&&r.type==="latents"?a.jsx(kee,{nodeId:t,field:n,template:r}):o==="conditioning"&&r.type==="conditioning"?a.jsx(dee,{nodeId:t,field:n,template:r}):o==="unet"&&r.type==="unet"?a.jsx($ee,{nodeId:t,field:n,template:r}):o==="clip"&&r.type==="clip"?a.jsx(YZ,{nodeId:t,field:n,template:r}):o==="vae"&&r.type==="vae"?a.jsx(Lee,{nodeId:t,field:n,template:r}):o==="control"&&r.type==="control"?a.jsx(pee,{nodeId:t,field:n,template:r}):o==="model"&&r.type==="model"?a.jsx(Mee,{nodeId:t,field:n,template:r}):o==="vae_model"&&r.type==="vae_model"?a.jsx(Fee,{nodeId:t,field:n,template:r}):o==="lora_model"&&r.type==="lora_model"?a.jsx(Eee,{nodeId:t,field:n,template:r}):o==="controlnet_model"&&r.type==="controlnet_model"?a.jsx(mee,{nodeId:t,field:n,template:r}):o==="array"&&r.type==="array"?a.jsx(GZ,{nodeId:t,field:n,template:r}):o==="item"&&r.type==="item"?a.jsx(n4,{nodeId:t,field:n,template:r}):o==="color"&&r.type==="color"?a.jsx(cee,{nodeId:t,field:n,template:r}):o==="item"&&r.type==="item"?a.jsx(n4,{nodeId:t,field:n,template:r}):o==="image_collection"&&r.type==="image_collection"?a.jsx(bee,{nodeId:t,field:n,template:r}):a.jsxs($e,{p:2,children:["Unknown field type: ",o]})},Wee=f.memo(Hee);function Vee(e){const{nodeId:t,input:n,template:r,connected:o}=e,s=uI();return a.jsx($e,{className:"nopan",position:"relative",borderColor:r?!o&&["always","connectionOnly"].includes(String(r==null?void 0:r.inputRequirement))&&n.value===void 0?"warning.400":void 0:"error.400",children:a.jsx(ws,{isDisabled:r?o:!0,pl:2,children:r?a.jsxs(a.Fragment,{children:[a.jsxs(Pl,{justifyContent:"space-between",alignItems:"center",children:[a.jsx(Pl,{children:a.jsx(Cn,{label:r==null?void 0:r.description,placement:"top",hasArrow:!0,shouldWrapChildren:!0,openDelay:s3,children:a.jsx(gs,{children:r==null?void 0:r.title})})}),a.jsx(Wee,{nodeId:t,field:n,template:r})]}),!["never","directOnly"].includes((r==null?void 0:r.inputRequirement)??"")&&a.jsx(dI,{nodeId:t,field:r,isValidConnection:s,handleType:"target"})]}):a.jsx(Pl,{justifyContent:"space-between",alignItems:"center",children:a.jsxs(gs,{children:["Unknown input: ",n.name]})})})})}const Uee=e=>{const{nodeId:t,template:n,inputs:r}=e,o=$(i=>i.nodes.edges);return f.useCallback(()=>{const i=[],u=Ss(r);return u.forEach((d,p)=>{const h=n.inputs[d.name],g=!!o.filter(v=>v.target===t&&v.targetHandle===d.name).length;p{const{nodeId:t,template:n,outputs:r}=e,o=$(i=>i.nodes.edges);return f.useCallback(()=>{const i=[];return Ss(r).forEach(d=>{const p=n.outputs[d.name],h=!!o.filter(g=>g.source===t&&g.sourceHandle===d.name).length;i.push(a.jsx(qee,{nodeId:t,output:d,template:p,connected:h},d.id))}),a.jsx(L,{flexDir:"column",children:i})},[o,t,r,n.outputs])()},Qee=f.memo(Kee),Yee=e=>{const{...t}=e;return a.jsx(BT,{style:{position:"absolute",border:"none",background:"transparent",width:15,height:15,bottom:0,right:0},minWidth:i3,...t})},ev=f.memo(Yee),tv=e=>{const[t,n]=ec("shadows",["nodeSelectedOutline","dark-lg"]),r=$(o=>o.hotkeys.shift);return a.jsx($e,{className:r?my:"nopan",sx:{position:"relative",borderRadius:"md",minWidth:i3,shadow:e.selected?`${t}, ${n}`:`${n}`},children:e.children})},gI=f.memo(e=>{const{id:t,data:n,selected:r}=e,{type:o,inputs:s,outputs:i}=n,u=f.useMemo(()=>NZ(o),[o]),d=$(u);return d?a.jsxs(tv,{selected:r,children:[a.jsx(cI,{nodeId:t,title:d.title,description:d.description}),a.jsxs(L,{className:"nopan",sx:{cursor:"auto",flexDirection:"column",borderBottomRadius:"md",py:2,bg:"base.150",_dark:{bg:"base.800"}},children:[a.jsx(Qee,{nodeId:t,outputs:i,template:d}),a.jsx(Gee,{nodeId:t,inputs:s,template:d})]}),a.jsx(ev,{})]}):a.jsx(tv,{selected:r,children:a.jsxs(L,{className:"nopan",sx:{alignItems:"center",justifyContent:"center",cursor:"auto"},children:[a.jsx(io,{as:m_,sx:{boxSize:32,color:"base.600",_dark:{color:"base.400"}}}),a.jsx(ev,{})]})})});gI.displayName="InvocationComponent";const Xee=e=>{const t=jx(i=>i.system.progressImage),n=jx(i=>i.nodes.progressNodeSize),r=Y7(),{selected:o}=e,s=(i,u)=>{r(X7(u))};return a.jsxs(tv,{selected:o,children:[a.jsx(cI,{title:"Progress Image",description:"Displays the progress image in the Node Editor"}),a.jsx(L,{sx:{flexDirection:"column",flexShrink:0,borderBottomRadius:"md",bg:"base.200",_dark:{bg:"base.800"},width:n.width-2,height:n.height-2,minW:250,minH:250,overflow:"hidden"},children:t?a.jsx(rc,{src:t.dataURL,sx:{w:"full",h:"full",objectFit:"contain"}}):a.jsx(L,{sx:{minW:250,minH:250,width:n.width-2,height:n.height-2},children:a.jsx(Ja,{})})}),a.jsx(ev,{onResize:s})]})},Jee=f.memo(Xee),Zee=()=>{const{t:e}=ue(),{zoomIn:t,zoomOut:n,fitView:r}=eh(),o=Z(),s=$(S=>S.nodes.shouldShowGraphOverlay),i=$(S=>S.nodes.shouldShowFieldTypeLegend),u=$(S=>S.nodes.shouldShowMinimapPanel),d=f.useCallback(()=>{t()},[t]),p=f.useCallback(()=>{n()},[n]),h=f.useCallback(()=>{r()},[r]),g=f.useCallback(()=>{o(J7(!s))},[s,o]),v=f.useCallback(()=>{o(Z7(!i))},[i,o]),b=f.useCallback(()=>{o(eO(!u))},[u,o]);return a.jsxs(Yn,{isAttached:!0,orientation:"vertical",children:[a.jsx(Cn,{label:e("nodes.zoomInNodes"),children:a.jsx(je,{onClick:d,icon:a.jsx(Hi,{})})}),a.jsx(Cn,{label:e("nodes.zoomOutNodes"),children:a.jsx(je,{onClick:p,icon:a.jsx(fL,{})})}),a.jsx(Cn,{label:e("nodes.fitViewportNodes"),children:a.jsx(je,{onClick:h,icon:a.jsx(Zz,{})})}),a.jsx(Cn,{label:e(s?"nodes.hideGraphNodes":"nodes.showGraphNodes"),children:a.jsx(je,{isChecked:s,onClick:g,icon:a.jsx(g1,{})})}),a.jsx(Cn,{label:e(i?"nodes.hideLegendNodes":"nodes.showLegendNodes"),children:a.jsx(je,{isChecked:i,onClick:v,icon:a.jsx(iL,{})})}),a.jsx(Cn,{label:e(u?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),children:a.jsx(je,{isChecked:u,onClick:b,icon:a.jsx(uL,{})})})]})},ete=f.memo(Zee),tte=()=>a.jsx(Su,{position:"bottom-left",children:a.jsx(ete,{})}),nte=f.memo(tte),rte=()=>{const e=gf({background:"var(--invokeai-colors-base-200)"},{background:"var(--invokeai-colors-base-500)"}),t=$(o=>o.nodes.shouldShowMinimapPanel),n=gf("var(--invokeai-colors-accent-300)","var(--invokeai-colors-accent-700)"),r=gf("var(--invokeai-colors-blackAlpha-300)","var(--invokeai-colors-blackAlpha-600)");return a.jsx(a.Fragment,{children:t&&a.jsx(OT,{nodeStrokeWidth:3,pannable:!0,zoomable:!0,nodeBorderRadius:30,style:e,nodeColor:n,maskColor:r})})},ote=f.memo(rte),ste=()=>{const{t:e}=ue(),t=Z(),{fitView:n}=eh(),r=f.useRef(null),o=f.useCallback(s=>{var u;if(!s)return;const i=new FileReader;i.onload=async()=>{const d=i.result,p=await JSON.parse(String(d));p||t(Bn(Vn({title:e("toast.nodesLoadedFailed"),status:"error"}))),p&&(t(tO(p.nodes)),t(nO(p.edges)),n(),t(Bn(Vn({title:e("toast.nodesLoaded"),status:"success"})))),i.abort()},i.readAsText(s),(u=r.current)==null||u.call(r)},[n,t,e]);return a.jsx(Nj,{resetRef:r,accept:"application/json",onChange:o,children:s=>a.jsx(je,{icon:a.jsx(Fu,{}),tooltip:e("nodes.loadNodes"),"aria-label":e("nodes.loadNodes"),...s})})},ate=f.memo(ste);function ite(e){const{iconButton:t=!1,...n}=e,r=Z(),o=$(or),s=iy(),i=f.useCallback(()=>{r(xv("nodes"))},[r]),{t:u}=ue();return Ye(["ctrl+enter","meta+enter"],i,{enabled:()=>s,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[s,o]),a.jsx($e,{style:{flexGrow:4},position:"relative",children:a.jsxs($e,{style:{position:"relative"},children:[!s&&a.jsx($e,{borderRadius:"base",style:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip"},children:a.jsx(XP,{})}),t?a.jsx(je,{"aria-label":u("parameters.invoke"),type:"submit",icon:a.jsx(x_,{}),isDisabled:!s,onClick:i,flexGrow:1,w:"100%",tooltip:u("parameters.invoke"),tooltipProps:{placement:"bottom"},colorScheme:"accent",id:"invoke-button",_disabled:{background:"none",_hover:{background:"none"}},...n}):a.jsx(Xt,{"aria-label":u("parameters.invoke"),type:"submit",isDisabled:!s,onClick:i,flexGrow:1,w:"100%",colorScheme:"accent",id:"invoke-button",fontWeight:700,_disabled:{background:"none",_hover:{background:"none"}},...n,children:"Invoke"})]})})}function lte(){const{t:e}=ue(),t=Z(),n=f.useCallback(()=>{t(rO())},[t]);return a.jsx(je,{icon:a.jsx(xL,{}),tooltip:e("nodes.reloadSchema"),"aria-label":e("nodes.reloadSchema"),onClick:n})}const cte=()=>{const{t:e}=ue(),t=$(o=>o.nodes.editorInstance),n=$(o=>o.nodes.nodes),r=f.useCallback(()=>{if(t){const o=t.toObject();o.edges=Ss(o.edges,u=>oO(u,["style"]));const s=new Blob([JSON.stringify(o)]),i=document.createElement("a");i.href=URL.createObjectURL(s),i.download="MyNodes.json",document.body.appendChild(i),i.click(),i.remove()}},[t]);return a.jsx(je,{icon:a.jsx(yh,{}),fontSize:18,tooltip:e("nodes.saveNodes"),"aria-label":e("nodes.saveNodes"),onClick:r,isDisabled:n.length===0})},ute=f.memo(cte),dte=()=>{const{t:e}=ue(),t=Z(),{isOpen:n,onOpen:r,onClose:o}=Ws(),s=f.useRef(null),i=$(d=>d.nodes.nodes),u=f.useCallback(()=>{t(sO()),t(Bn(Vn({title:e("toast.nodesCleared"),status:"success"}))),o()},[t,e,o]);return a.jsxs(a.Fragment,{children:[a.jsx(je,{icon:a.jsx(Xo,{}),tooltip:e("nodes.clearNodes"),"aria-label":e("nodes.clearNodes"),onClick:r,isDisabled:i.length===0}),a.jsxs(Du,{isOpen:n,onClose:o,leastDestructiveRef:s,isCentered:!0,children:[a.jsx(ya,{}),a.jsxs(Au,{children:[a.jsx(va,{fontSize:"lg",fontWeight:"bold",children:e("nodes.clearNodes")}),a.jsx(ba,{children:a.jsx(qe,{children:e("common.clearNodes")})}),a.jsxs(ga,{children:[a.jsx(kf,{ref:s,onClick:o,children:e("common.cancel")}),a.jsx(kf,{colorScheme:"red",ml:3,onClick:u,children:e("common.accept")})]})]})]})]})},fte=f.memo(dte),pte=()=>a.jsx(Su,{position:"top-center",children:a.jsxs(Pl,{children:[a.jsx(ite,{}),a.jsx(Th,{}),a.jsx(lte,{}),a.jsx(ute,{}),a.jsx(ate,{}),a.jsx(fte,{})]})}),hte=f.memo(pte),mte=he(aO,e=>{const t=Ss(e.invocationTemplates,n=>({label:n.title,value:n.type,description:n.description}));return t.push({label:"Progress Image",value:"progress_image",description:"Displays the progress image in the Node Editor"}),{data:t}},Ke),gte=()=>{const e=Z(),{data:t}=$(mte),n=LZ(),r=tc(),o=f.useCallback(i=>{const u=n(i);if(!u){r({status:"error",title:`Unknown Invocation type ${i}`});return}e(iO(u))},[e,n,r]),s=f.useCallback(i=>{i&&o(i)},[o]);return a.jsx(L,{sx:{gap:2,alignItems:"center"},children:a.jsx(br,{selectOnBlur:!1,placeholder:"Add Node",value:null,data:t,maxDropdownHeight:400,nothingFound:"No matching nodes",itemComponent:vI,filter:(i,u)=>u.label.toLowerCase().includes(i.toLowerCase().trim())||u.value.toLowerCase().includes(i.toLowerCase().trim())||u.description.toLowerCase().includes(i.toLowerCase().trim()),onChange:s,sx:{width:"18rem"}})})},vI=f.forwardRef(({label:e,description:t,...n},r)=>a.jsx("div",{ref:r,...n,children:a.jsxs("div",{children:[a.jsx(qe,{fontWeight:600,children:e}),a.jsx(qe,{size:"xs",sx:{color:"base.600",_dark:{color:"base.500"}},children:t})]})}));vI.displayName="SelectItem";const vte=()=>a.jsx(Su,{position:"top-left",children:a.jsx(gte,{})}),yte=f.memo(vte),bte=()=>a.jsx(L,{sx:{gap:2,flexDir:"column"},children:Ss(a3,({title:e,description:t,color:n},r)=>a.jsx(Cn,{label:t,children:a.jsx(Za,{colorScheme:n,sx:{userSelect:"none"},textAlign:"center",children:e})},r))}),xte=f.memo(bte),wte=()=>{const e=$(n=>n),t=lO(e);return a.jsx($e,{as:"pre",sx:{fontFamily:"monospace",position:"absolute",top:2,right:2,opacity:.7,p:2,maxHeight:500,maxWidth:500,overflowY:"scroll",borderRadius:"base",bg:"base.200",_dark:{bg:"base.800"}},children:JSON.stringify(t,null,2)})},Ste=f.memo(wte),Cte=()=>{const e=$(n=>n.nodes.shouldShowGraphOverlay),t=$(n=>n.nodes.shouldShowFieldTypeLegend);return a.jsxs(Su,{position:"top-right",children:[t&&a.jsx(xte,{}),e&&a.jsx(Ste,{})]})},_te=f.memo(Cte),kte={invocation:gI,progress_image:Jee},jte=()=>{const e=Z(),t=$(p=>p.nodes.nodes),n=$(p=>p.nodes.edges),r=f.useCallback(p=>{e(cO(p))},[e]),o=f.useCallback(p=>{e(uO(p))},[e]),s=f.useCallback((p,h)=>{e(dO(h))},[e]),i=f.useCallback(p=>{e(fO(p))},[e]),u=f.useCallback(()=>{e(pO())},[e]),d=f.useCallback(p=>{e(hO(p)),p&&p.fitView()},[e]);return a.jsxs(mO,{nodeTypes:kte,nodes:t,edges:n,onNodesChange:r,onEdgesChange:o,onConnectStart:s,onConnect:i,onConnectEnd:u,onInit:d,defaultEdgeOptions:{style:{strokeWidth:2}},children:[a.jsx(yte,{}),a.jsx(hte,{}),a.jsx(_te,{}),a.jsx(nte,{}),a.jsx(NT,{}),a.jsx(ote,{})]})},Pte=()=>a.jsx($e,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base"},children:a.jsx(gO,{children:a.jsx(jte,{})})}),Ite=f.memo(Pte),Ete=()=>a.jsx(Ite,{}),Ote=f.memo(Ete),Mte=he(mt,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ke),Rte=()=>{const{shouldUseSliders:e,activeLabel:t}=$(Mte);return a.jsx(Ro,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsx(L,{sx:{flexDirection:"column",gap:3},children:e?a.jsxs(a.Fragment,{children:[a.jsx(Kl,{}),a.jsx(Yl,{}),a.jsx(ql,{}),a.jsx(Ql,{}),a.jsx($e,{pt:2,children:a.jsx(Xl,{})}),a.jsx(Wp,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(L,{gap:3,children:[a.jsx(Kl,{}),a.jsx(Yl,{}),a.jsx(ql,{})]}),a.jsx(Ql,{}),a.jsx($e,{pt:2,children:a.jsx(Xl,{})}),a.jsx(Wp,{})]})})})},Dte=f.memo(Rte),Ate=()=>a.jsxs(a.Fragment,{children:[a.jsx(ly,{}),a.jsx(sy,{}),a.jsx(fy,{}),a.jsx(Dte,{}),a.jsx(ry,{}),a.jsx(ty,{}),a.jsx(ey,{}),a.jsx(uy,{}),a.jsx(QP,{}),a.jsx(cy,{}),a.jsx(YP,{}),a.jsx(ny,{})]}),yI=f.memo(Ate),Tte=()=>a.jsxs(L,{sx:{gap:4,w:"full",h:"full"},children:[a.jsx(Z1,{children:a.jsx(yI,{})}),a.jsx(VP,{})]}),Nte=f.memo(Tte);var nv={exports:{}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Konva=void 0;var n=Px;Object.defineProperty(t,"Konva",{enumerable:!0,get:function(){return n.Konva}});const r=Px;e.exports=r.Konva})(nv,nv.exports);var $te=nv.exports;const vu=wu($te);var bI={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 zte=function(t){var n={},r=f,o=vf,s=Object.assign;function i(l){for(var c="https://reactjs.org/docs/error-decoder.html?invariant="+l,m=1;mQ||w[A]!==j[Q]){var se=` -`+w[A].replace(" at new "," at ");return l.displayName&&se.includes("")&&(se=se.replace("",l.displayName)),se}while(1<=A&&0<=Q);break}}}finally{Lt=!1,Error.prepareStackTrace=m}return(l=l?l.displayName||l.name:"")?Ot(l):""}var qt=Object.prototype.hasOwnProperty,$t=[],Oe=-1;function ut(l){return{current:l}}function _t(l){0>Oe||(l.current=$t[Oe],$t[Oe]=null,Oe--)}function At(l,c){Oe++,$t[Oe]=l.current,l.current=c}var xn={},zt=ut(xn),tn=ut(!1),Jt=xn;function _r(l,c){var m=l.type.contextTypes;if(!m)return xn;var y=l.stateNode;if(y&&y.__reactInternalMemoizedUnmaskedChildContext===c)return y.__reactInternalMemoizedMaskedChildContext;var w={},j;for(j in m)w[j]=c[j];return y&&(l=l.stateNode,l.__reactInternalMemoizedUnmaskedChildContext=c,l.__reactInternalMemoizedMaskedChildContext=w),w}function Un(l){return l=l.childContextTypes,l!=null}function yt(){_t(tn),_t(zt)}function wn(l,c,m){if(zt.current!==xn)throw Error(i(168));At(zt,c),At(tn,m)}function kn(l,c,m){var y=l.stateNode;if(c=c.childContextTypes,typeof y.getChildContext!="function")return m;y=y.getChildContext();for(var w in y)if(!(w in c))throw Error(i(108,D(l)||"Unknown",w));return s({},m,y)}function Gn(l){return l=(l=l.stateNode)&&l.__reactInternalMemoizedMergedChildContext||xn,Jt=zt.current,At(zt,l),At(tn,tn.current),!0}function ar(l,c,m){var y=l.stateNode;if(!y)throw Error(i(169));m?(l=kn(l,c,Jt),y.__reactInternalMemoizedMergedChildContext=l,_t(tn),_t(zt),At(zt,l)):_t(tn),At(tn,m)}var En=Math.clz32?Math.clz32:pn,On=Math.log,nn=Math.LN2;function pn(l){return l>>>=0,l===0?32:31-(On(l)/nn|0)|0}var Sn=64,cn=4194304;function un(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 Be(l,c){var m=l.pendingLanes;if(m===0)return 0;var y=0,w=l.suspendedLanes,j=l.pingedLanes,A=m&268435455;if(A!==0){var Q=A&~w;Q!==0?y=un(Q):(j&=A,j!==0&&(y=un(j)))}else A=m&~w,A!==0?y=un(A):j!==0&&(y=un(j));if(y===0)return 0;if(c!==0&&c!==y&&!(c&w)&&(w=y&-y,j=c&-c,w>=j||w===16&&(j&4194240)!==0))return c;if(y&4&&(y|=m&16),c=l.entangledLanes,c!==0)for(l=l.entanglements,c&=y;0m;m++)c.push(l);return c}function lt(l,c,m){l.pendingLanes|=c,c!==536870912&&(l.suspendedLanes=0,l.pingedLanes=0),l=l.eventTimes,c=31-En(c),l[c]=m}function Qe(l,c){var m=l.pendingLanes&~c;l.pendingLanes=c,l.suspendedLanes=0,l.pingedLanes=0,l.expiredLanes&=c,l.mutableReadLanes&=c,l.entangledLanes&=c,c=l.entanglements;var y=l.eventTimes;for(l=l.expirationTimes;0>=A,w-=A,jo=1<<32-En(c)+w|m<hn?(Nr=Ut,Ut=null):Nr=Ut.sibling;var mn=et(oe,Ut,fe[hn],tt);if(mn===null){Ut===null&&(Ut=Nr);break}l&&Ut&&mn.alternate===null&&c(oe,Ut),X=j(mn,X,hn),Yt===null?It=mn:Yt.sibling=mn,Yt=mn,Ut=Nr}if(hn===fe.length)return m(oe,Ut),qn&&ci(oe,hn),It;if(Ut===null){for(;hnhn?(Nr=Ut,Ut=null):Nr=Ut.sibling;var Ta=et(oe,Ut,mn.value,tt);if(Ta===null){Ut===null&&(Ut=Nr);break}l&&Ut&&Ta.alternate===null&&c(oe,Ut),X=j(Ta,X,hn),Yt===null?It=Ta:Yt.sibling=Ta,Yt=Ta,Ut=Nr}if(mn.done)return m(oe,Ut),qn&&ci(oe,hn),It;if(Ut===null){for(;!mn.done;hn++,mn=fe.next())mn=Vt(oe,mn.value,tt),mn!==null&&(X=j(mn,X,hn),Yt===null?It=mn:Yt.sibling=mn,Yt=mn);return qn&&ci(oe,hn),It}for(Ut=y(oe,Ut);!mn.done;hn++,mn=fe.next())mn=Hn(Ut,oe,hn,mn.value,tt),mn!==null&&(l&&mn.alternate!==null&&Ut.delete(mn.key===null?hn:mn.key),X=j(mn,X,hn),Yt===null?It=mn:Yt.sibling=mn,Yt=mn);return l&&Ut.forEach(function(hE){return c(oe,hE)}),qn&&ci(oe,hn),It}function ra(oe,X,fe,tt){if(typeof fe=="object"&&fe!==null&&fe.type===h&&fe.key===null&&(fe=fe.props.children),typeof fe=="object"&&fe!==null){switch(fe.$$typeof){case d:e:{for(var It=fe.key,Yt=X;Yt!==null;){if(Yt.key===It){if(It=fe.type,It===h){if(Yt.tag===7){m(oe,Yt.sibling),X=w(Yt,fe.props.children),X.return=oe,oe=X;break e}}else if(Yt.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===P&&Ty(It)===Yt.type){m(oe,Yt.sibling),X=w(Yt,fe.props),X.ref=mc(oe,Yt,fe),X.return=oe,oe=X;break e}m(oe,Yt);break}else c(oe,Yt);Yt=Yt.sibling}fe.type===h?(X=gi(fe.props.children,oe.mode,tt,fe.key),X.return=oe,oe=X):(tt=kd(fe.type,fe.key,fe.props,null,oe.mode,tt),tt.ref=mc(oe,X,fe),tt.return=oe,oe=tt)}return A(oe);case p:e:{for(Yt=fe.key;X!==null;){if(X.key===Yt)if(X.tag===4&&X.stateNode.containerInfo===fe.containerInfo&&X.stateNode.implementation===fe.implementation){m(oe,X.sibling),X=w(X,fe.children||[]),X.return=oe,oe=X;break e}else{m(oe,X);break}else c(oe,X);X=X.sibling}X=Wm(fe,oe.mode,tt),X.return=oe,oe=X}return A(oe);case P:return Yt=fe._init,ra(oe,X,Yt(fe._payload),tt)}if(G(fe))return Rn(oe,X,fe,tt);if(O(fe))return mo(oe,X,fe,tt);Zu(oe,fe)}return typeof fe=="string"&&fe!==""||typeof fe=="number"?(fe=""+fe,X!==null&&X.tag===6?(m(oe,X.sibling),X=w(X,fe),X.return=oe,oe=X):(m(oe,X),X=Hm(fe,oe.mode,tt),X.return=oe,oe=X),A(oe)):m(oe,X)}return ra}var Ji=Ny(!0),$y=Ny(!1),gc={},No=ut(gc),vc=ut(gc),Zi=ut(gc);function Es(l){if(l===gc)throw Error(i(174));return l}function nm(l,c){At(Zi,c),At(vc,l),At(No,gc),l=M(c),_t(No),At(No,l)}function el(){_t(No),_t(vc),_t(Zi)}function zy(l){var c=Es(Zi.current),m=Es(No.current);c=U(m,l.type,c),m!==c&&(At(vc,l),At(No,c))}function rm(l){vc.current===l&&(_t(No),_t(vc))}var Zn=ut(0);function ed(l){for(var c=l;c!==null;){if(c.tag===13){var m=c.memoizedState;if(m!==null&&(m=m.dehydrated,m===null||Dr(m)||ks(m)))return c}else if(c.tag===19&&c.memoizedProps.revealOrder!==void 0){if(c.flags&128)return c}else if(c.child!==null){c.child.return=c,c=c.child;continue}if(c===l)break;for(;c.sibling===null;){if(c.return===null||c.return===l)return null;c=c.return}c.sibling.return=c.return,c=c.sibling}return null}var om=[];function sm(){for(var l=0;lm?m:4,l(!0);var y=am.transition;am.transition={};try{l(!1),c()}finally{Se=m,am.transition=y}}function nb(){return $o().memoizedState}function FI(l,c,m){var y=Ra(l);if(m={lane:y,action:m,hasEagerState:!1,eagerState:null,next:null},rb(l))ob(c,m);else if(m=Py(l,c,m,y),m!==null){var w=Kr();zo(m,l,y,w),sb(m,c,y)}}function HI(l,c,m){var y=Ra(l),w={lane:y,action:m,hasEagerState:!1,eagerState:null,next:null};if(rb(l))ob(c,w);else{var j=l.alternate;if(l.lanes===0&&(j===null||j.lanes===0)&&(j=c.lastRenderedReducer,j!==null))try{var A=c.lastRenderedState,Q=j(A,m);if(w.hasEagerState=!0,w.eagerState=Q,rn(Q,A)){var se=c.interleaved;se===null?(w.next=w,Jh(c)):(w.next=se.next,se.next=w),c.interleaved=w;return}}catch{}finally{}m=Py(l,c,w,y),m!==null&&(w=Kr(),zo(m,l,y,w),sb(m,c,y))}}function rb(l){var c=l.alternate;return l===er||c!==null&&c===er}function ob(l,c){yc=nd=!0;var m=l.pending;m===null?c.next=c:(c.next=m.next,m.next=c),l.pending=c}function sb(l,c,m){if(m&4194240){var y=c.lanes;y&=l.pendingLanes,m|=y,c.lanes=m,ke(l,m)}}var sd={readContext:To,useCallback:Ur,useContext:Ur,useEffect:Ur,useImperativeHandle:Ur,useInsertionEffect:Ur,useLayoutEffect:Ur,useMemo:Ur,useReducer:Ur,useRef:Ur,useState:Ur,useDebugValue:Ur,useDeferredValue:Ur,useTransition:Ur,useMutableSource:Ur,useSyncExternalStore:Ur,useId:Ur,unstable_isNewReconciler:!1},WI={readContext:To,useCallback:function(l,c){return Os().memoizedState=[l,c===void 0?null:c],l},useContext:To,useEffect:Ky,useImperativeHandle:function(l,c,m){return m=m!=null?m.concat([l]):null,rd(4194308,4,Xy.bind(null,c,l),m)},useLayoutEffect:function(l,c){return rd(4194308,4,l,c)},useInsertionEffect:function(l,c){return rd(4,2,l,c)},useMemo:function(l,c){var m=Os();return c=c===void 0?null:c,l=l(),m.memoizedState=[l,c],l},useReducer:function(l,c,m){var y=Os();return c=m!==void 0?m(c):c,y.memoizedState=y.baseState=c,l={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:c},y.queue=l,l=l.dispatch=FI.bind(null,er,l),[y.memoizedState,l]},useRef:function(l){var c=Os();return l={current:l},c.memoizedState=l},useState:Gy,useDebugValue:pm,useDeferredValue:function(l){return Os().memoizedState=l},useTransition:function(){var l=Gy(!1),c=l[0];return l=BI.bind(null,l[1]),Os().memoizedState=l,[c,l]},useMutableSource:function(){},useSyncExternalStore:function(l,c,m){var y=er,w=Os();if(qn){if(m===void 0)throw Error(i(407));m=m()}else{if(m=c(),Tr===null)throw Error(i(349));di&30||Fy(y,c,m)}w.memoizedState=m;var j={value:m,getSnapshot:c};return w.queue=j,Ky(Wy.bind(null,y,j,l),[l]),y.flags|=2048,wc(9,Hy.bind(null,y,j,m,c),void 0,null),m},useId:function(){var l=Os(),c=Tr.identifierPrefix;if(qn){var m=Vr,y=jo;m=(y&~(1<<32-En(y)-1)).toString(32)+m,c=":"+c+"R"+m,m=bc++,0Am&&(c.flags|=128,y=!0,_c(w,!1),c.lanes=4194304)}else{if(!y)if(l=ed(j),l!==null){if(c.flags|=128,y=!0,l=l.updateQueue,l!==null&&(c.updateQueue=l,c.flags|=4),_c(w,!0),w.tail===null&&w.tailMode==="hidden"&&!j.alternate&&!qn)return Gr(c),null}else 2*Ne()-w.renderingStartTime>Am&&m!==1073741824&&(c.flags|=128,y=!0,_c(w,!1),c.lanes=4194304);w.isBackwards?(j.sibling=c.child,c.child=j):(l=w.last,l!==null?l.sibling=j:c.child=j,w.last=j)}return w.tail!==null?(c=w.tail,w.rendering=c,w.tail=c.sibling,w.renderingStartTime=Ne(),c.sibling=null,l=Zn.current,At(Zn,y?l&1|2:l&1),c):(Gr(c),null);case 22:case 23:return Lm(),m=c.memoizedState!==null,l!==null&&l.memoizedState!==null!==m&&(c.flags|=8192),m&&c.mode&1?Io&1073741824&&(Gr(c),de&&c.subtreeFlags&6&&(c.flags|=8192)):Gr(c),null;case 24:return null;case 25:return null}throw Error(i(156,c.tag))}function XI(l,c){switch(Vh(c),c.tag){case 1:return Un(c.type)&&yt(),l=c.flags,l&65536?(c.flags=l&-65537|128,c):null;case 3:return el(),_t(tn),_t(zt),sm(),l=c.flags,l&65536&&!(l&128)?(c.flags=l&-65537|128,c):null;case 5:return rm(c),null;case 13:if(_t(Zn),l=c.memoizedState,l!==null&&l.dehydrated!==null){if(c.alternate===null)throw Error(i(340));Qi()}return l=c.flags,l&65536?(c.flags=l&-65537|128,c):null;case 19:return _t(Zn),null;case 4:return el(),null;case 10:return Yh(c.type._context),null;case 22:case 23:return Lm(),null;case 24:return null;default:return null}}var ud=!1,qr=!1,JI=typeof WeakSet=="function"?WeakSet:Set,at=null;function nl(l,c){var m=l.ref;if(m!==null)if(typeof m=="function")try{m(null)}catch(y){Kn(l,c,y)}else m.current=null}function Sm(l,c,m){try{m()}catch(y){Kn(l,c,y)}}var _b=!1;function ZI(l,c){for(V(l.containerInfo),at=c;at!==null;)if(l=at,c=l.child,(l.subtreeFlags&1028)!==0&&c!==null)c.return=l,at=c;else for(;at!==null;){l=at;try{var m=l.alternate;if(l.flags&1024)switch(l.tag){case 0:case 11:case 15:break;case 1:if(m!==null){var y=m.memoizedProps,w=m.memoizedState,j=l.stateNode,A=j.getSnapshotBeforeUpdate(l.elementType===l.type?y:rs(l.type,y),w);j.__reactInternalSnapshotBeforeUpdate=A}break;case 3:de&&bn(l.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(Q){Kn(l,l.return,Q)}if(c=l.sibling,c!==null){c.return=l.return,at=c;break}at=l.return}return m=_b,_b=!1,m}function kc(l,c,m){var y=c.updateQueue;if(y=y!==null?y.lastEffect:null,y!==null){var w=y=y.next;do{if((w.tag&l)===l){var j=w.destroy;w.destroy=void 0,j!==void 0&&Sm(c,m,j)}w=w.next}while(w!==y)}}function dd(l,c){if(c=c.updateQueue,c=c!==null?c.lastEffect:null,c!==null){var m=c=c.next;do{if((m.tag&l)===l){var y=m.create;m.destroy=y()}m=m.next}while(m!==c)}}function Cm(l){var c=l.ref;if(c!==null){var m=l.stateNode;switch(l.tag){case 5:l=K(m);break;default:l=m}typeof c=="function"?c(l):c.current=l}}function kb(l){var c=l.alternate;c!==null&&(l.alternate=null,kb(c)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(c=l.stateNode,c!==null&&Le(c)),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 jb(l){return l.tag===5||l.tag===3||l.tag===4}function Pb(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||jb(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 _m(l,c,m){var y=l.tag;if(y===5||y===6)l=l.stateNode,c?sr(m,l,c):_n(m,l);else if(y!==4&&(l=l.child,l!==null))for(_m(l,c,m),l=l.sibling;l!==null;)_m(l,c,m),l=l.sibling}function km(l,c,m){var y=l.tag;if(y===5||y===6)l=l.stateNode,c?vn(m,l,c):Wt(m,l);else if(y!==4&&(l=l.child,l!==null))for(km(l,c,m),l=l.sibling;l!==null;)km(l,c,m),l=l.sibling}var Fr=null,os=!1;function Rs(l,c,m){for(m=m.child;m!==null;)jm(l,c,m),m=m.sibling}function jm(l,c,m){if(an&&typeof an.onCommitFiberUnmount=="function")try{an.onCommitFiberUnmount(Fn,m)}catch{}switch(m.tag){case 5:qr||nl(m,c);case 6:if(de){var y=Fr,w=os;Fr=null,Rs(l,c,m),Fr=y,os=w,Fr!==null&&(os?it(Fr,m.stateNode):Ie(Fr,m.stateNode))}else Rs(l,c,m);break;case 18:de&&Fr!==null&&(os?De(Fr,m.stateNode):dt(Fr,m.stateNode));break;case 4:de?(y=Fr,w=os,Fr=m.stateNode.containerInfo,os=!0,Rs(l,c,m),Fr=y,os=w):(Ce&&(y=m.stateNode.containerInfo,w=dr(y),Nn(y,w)),Rs(l,c,m));break;case 0:case 11:case 14:case 15:if(!qr&&(y=m.updateQueue,y!==null&&(y=y.lastEffect,y!==null))){w=y=y.next;do{var j=w,A=j.destroy;j=j.tag,A!==void 0&&(j&2||j&4)&&Sm(m,c,A),w=w.next}while(w!==y)}Rs(l,c,m);break;case 1:if(!qr&&(nl(m,c),y=m.stateNode,typeof y.componentWillUnmount=="function"))try{y.props=m.memoizedProps,y.state=m.memoizedState,y.componentWillUnmount()}catch(Q){Kn(m,c,Q)}Rs(l,c,m);break;case 21:Rs(l,c,m);break;case 22:m.mode&1?(qr=(y=qr)||m.memoizedState!==null,Rs(l,c,m),qr=y):Rs(l,c,m);break;default:Rs(l,c,m)}}function Ib(l){var c=l.updateQueue;if(c!==null){l.updateQueue=null;var m=l.stateNode;m===null&&(m=l.stateNode=new JI),c.forEach(function(y){var w=lE.bind(null,l,y);m.has(y)||(m.add(y),y.then(w,w))})}}function ss(l,c){var m=c.deletions;if(m!==null)for(var y=0;y";case pd:return":has("+(Em(l)||"")+")";case hd:return'[role="'+l.value+'"]';case gd:return'"'+l.value+'"';case md:return'[data-testname="'+l.value+'"]';default:throw Error(i(365))}}function Ab(l,c){var m=[];l=[l,0];for(var y=0;yw&&(w=A),y&=~j}if(y=w,y=Ne()-y,y=(120>y?120:480>y?480:1080>y?1080:1920>y?1920:3e3>y?3e3:4320>y?4320:1960*tE(y/1960))-y,10l?16:l,Ma===null)var y=!1;else{if(l=Ma,Ma=null,wd=0,Zt&6)throw Error(i(331));var w=Zt;for(Zt|=4,at=l.current;at!==null;){var j=at,A=j.child;if(at.flags&16){var Q=j.deletions;if(Q!==null){for(var se=0;seNe()-Dm?pi(l,0):Rm|=m),ho(l,c)}function Wb(l,c){c===0&&(l.mode&1?(c=cn,cn<<=1,!(cn&130023424)&&(cn=4194304)):c=1);var m=Kr();l=Is(l,c),l!==null&&(lt(l,c,m),ho(l,m))}function iE(l){var c=l.memoizedState,m=0;c!==null&&(m=c.retryLane),Wb(l,m)}function lE(l,c){var m=0;switch(l.tag){case 13:var y=l.stateNode,w=l.memoizedState;w!==null&&(m=w.retryLane);break;case 19:y=l.stateNode;break;default:throw Error(i(314))}y!==null&&y.delete(c),Wb(l,m)}var Vb;Vb=function(l,c,m){if(l!==null)if(l.memoizedProps!==c.pendingProps||tn.current)fo=!0;else{if(!(l.lanes&m)&&!(c.flags&128))return fo=!1,QI(l,c,m);fo=!!(l.flags&131072)}else fo=!1,qn&&c.flags&1048576&&wy(c,no,c.index);switch(c.lanes=0,c.tag){case 2:var y=c.type;id(l,c),l=c.pendingProps;var w=_r(c,zt.current);Xi(c,m),w=lm(null,c,y,l,w,m);var j=cm();return c.flags|=1,typeof w=="object"&&w!==null&&typeof w.render=="function"&&w.$$typeof===void 0?(c.tag=1,c.memoizedState=null,c.updateQueue=null,Un(y)?(j=!0,Gn(c)):j=!1,c.memoizedState=w.state!==null&&w.state!==void 0?w.state:null,Zh(c),w.updater=Ju,c.stateNode=w,w._reactInternals=c,tm(c,y,l,m),c=vm(null,c,y,!0,j,m)):(c.tag=0,qn&&j&&Wh(c),so(null,c,w,m),c=c.child),c;case 16:y=c.elementType;e:{switch(id(l,c),l=c.pendingProps,w=y._init,y=w(y._payload),c.type=y,w=c.tag=uE(y),l=rs(y,l),w){case 0:c=gm(null,c,y,l,m);break e;case 1:c=gb(null,c,y,l,m);break e;case 11:c=db(null,c,y,l,m);break e;case 14:c=fb(null,c,y,rs(y.type,l),m);break e}throw Error(i(306,y,""))}return c;case 0:return y=c.type,w=c.pendingProps,w=c.elementType===y?w:rs(y,w),gm(l,c,y,w,m);case 1:return y=c.type,w=c.pendingProps,w=c.elementType===y?w:rs(y,w),gb(l,c,y,w,m);case 3:e:{if(vb(c),l===null)throw Error(i(387));y=c.pendingProps,j=c.memoizedState,w=j.element,Iy(l,c),Xu(c,y,null,m);var A=c.memoizedState;if(y=A.element,Re&&j.isDehydrated)if(j={element:y,isDehydrated:!1,cache:A.cache,pendingSuspenseBoundaries:A.pendingSuspenseBoundaries,transitions:A.transitions},c.updateQueue.baseState=j,c.memoizedState=j,c.flags&256){w=tl(Error(i(423)),c),c=yb(l,c,y,m,w);break e}else if(y!==w){w=tl(Error(i(424)),c),c=yb(l,c,y,m,w);break e}else for(Re&&(Ao=Y(c.stateNode.containerInfo),Po=c,qn=!0,ns=null,hc=!1),m=$y(c,null,y,m),c.child=m;m;)m.flags=m.flags&-3|4096,m=m.sibling;else{if(Qi(),y===w){c=ta(l,c,m);break e}so(l,c,y,m)}c=c.child}return c;case 5:return zy(c),l===null&&Gh(c),y=c.type,w=c.pendingProps,j=l!==null?l.memoizedProps:null,A=w.children,te(y,w)?A=null:j!==null&&te(y,j)&&(c.flags|=32),mb(l,c),so(l,c,A,m),c.child;case 6:return l===null&&Gh(c),null;case 13:return bb(l,c,m);case 4:return nm(c,c.stateNode.containerInfo),y=c.pendingProps,l===null?c.child=Ji(c,null,y,m):so(l,c,y,m),c.child;case 11:return y=c.type,w=c.pendingProps,w=c.elementType===y?w:rs(y,w),db(l,c,y,w,m);case 7:return so(l,c,c.pendingProps,m),c.child;case 8:return so(l,c,c.pendingProps.children,m),c.child;case 12:return so(l,c,c.pendingProps.children,m),c.child;case 10:e:{if(y=c.type._context,w=c.pendingProps,j=c.memoizedProps,A=w.value,jy(c,y,A),j!==null)if(rn(j.value,A)){if(j.children===w.children&&!tn.current){c=ta(l,c,m);break e}}else for(j=c.child,j!==null&&(j.return=c);j!==null;){var Q=j.dependencies;if(Q!==null){A=j.child;for(var se=Q.firstContext;se!==null;){if(se.context===y){if(j.tag===1){se=ea(-1,m&-m),se.tag=2;var Ee=j.updateQueue;if(Ee!==null){Ee=Ee.shared;var ct=Ee.pending;ct===null?se.next=se:(se.next=ct.next,ct.next=se),Ee.pending=se}}j.lanes|=m,se=j.alternate,se!==null&&(se.lanes|=m),Xh(j.return,m,c),Q.lanes|=m;break}se=se.next}}else if(j.tag===10)A=j.type===c.type?null:j.child;else if(j.tag===18){if(A=j.return,A===null)throw Error(i(341));A.lanes|=m,Q=A.alternate,Q!==null&&(Q.lanes|=m),Xh(A,m,c),A=j.sibling}else A=j.child;if(A!==null)A.return=j;else for(A=j;A!==null;){if(A===c){A=null;break}if(j=A.sibling,j!==null){j.return=A.return,A=j;break}A=A.return}j=A}so(l,c,w.children,m),c=c.child}return c;case 9:return w=c.type,y=c.pendingProps.children,Xi(c,m),w=To(w),y=y(w),c.flags|=1,so(l,c,y,m),c.child;case 14:return y=c.type,w=rs(y,c.pendingProps),w=rs(y.type,w),fb(l,c,y,w,m);case 15:return pb(l,c,c.type,c.pendingProps,m);case 17:return y=c.type,w=c.pendingProps,w=c.elementType===y?w:rs(y,w),id(l,c),c.tag=1,Un(y)?(l=!0,Gn(c)):l=!1,Xi(c,m),Dy(c,y,w),tm(c,y,w,m),vm(null,c,y,!0,l,m);case 19:return wb(l,c,m);case 22:return hb(l,c,m)}throw Error(i(156,c.tag))};function Ub(l,c){return Te(l,c)}function cE(l,c,m,y){this.tag=l,this.key=m,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=c,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=y,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lo(l,c,m,y){return new cE(l,c,m,y)}function Fm(l){return l=l.prototype,!(!l||!l.isReactComponent)}function uE(l){if(typeof l=="function")return Fm(l)?1:0;if(l!=null){if(l=l.$$typeof,l===x)return 11;if(l===k)return 14}return 2}function Aa(l,c){var m=l.alternate;return m===null?(m=Lo(l.tag,c,l.key,l.mode),m.elementType=l.elementType,m.type=l.type,m.stateNode=l.stateNode,m.alternate=l,l.alternate=m):(m.pendingProps=c,m.type=l.type,m.flags=0,m.subtreeFlags=0,m.deletions=null),m.flags=l.flags&14680064,m.childLanes=l.childLanes,m.lanes=l.lanes,m.child=l.child,m.memoizedProps=l.memoizedProps,m.memoizedState=l.memoizedState,m.updateQueue=l.updateQueue,c=l.dependencies,m.dependencies=c===null?null:{lanes:c.lanes,firstContext:c.firstContext},m.sibling=l.sibling,m.index=l.index,m.ref=l.ref,m}function kd(l,c,m,y,w,j){var A=2;if(y=l,typeof l=="function")Fm(l)&&(A=1);else if(typeof l=="string")A=5;else e:switch(l){case h:return gi(m.children,w,j,c);case g:A=8,w|=8;break;case v:return l=Lo(12,m,c,w|2),l.elementType=v,l.lanes=j,l;case C:return l=Lo(13,m,c,w),l.elementType=C,l.lanes=j,l;case _:return l=Lo(19,m,c,w),l.elementType=_,l.lanes=j,l;case I:return jd(m,w,j,c);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case b:A=10;break e;case S:A=9;break e;case x:A=11;break e;case k:A=14;break e;case P:A=16,y=null;break e}throw Error(i(130,l==null?l:typeof l,""))}return c=Lo(A,m,c,w),c.elementType=l,c.type=y,c.lanes=j,c}function gi(l,c,m,y){return l=Lo(7,l,y,c),l.lanes=m,l}function jd(l,c,m,y){return l=Lo(22,l,y,c),l.elementType=I,l.lanes=m,l.stateNode={isHidden:!1},l}function Hm(l,c,m){return l=Lo(6,l,null,c),l.lanes=m,l}function Wm(l,c,m){return c=Lo(4,l.children!==null?l.children:[],l.key,c),c.lanes=m,c.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},c}function dE(l,c,m,y,w){this.tag=c,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=ne,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Rt(0),this.expirationTimes=Rt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Rt(0),this.identifierPrefix=y,this.onRecoverableError=w,Re&&(this.mutableSourceEagerHydrationData=null)}function Gb(l,c,m,y,w,j,A,Q,se){return l=new dE(l,c,m,Q,se),c===1?(c=1,j===!0&&(c|=8)):c=0,j=Lo(3,null,null,c),l.current=j,j.stateNode=l,j.memoizedState={element:y,isDehydrated:m,cache:null,transitions:null,pendingSuspenseBoundaries:null},Zh(j),l}function qb(l){if(!l)return xn;l=l._reactInternals;e:{if(T(l)!==l||l.tag!==1)throw Error(i(170));var c=l;do{switch(c.tag){case 3:c=c.stateNode.context;break e;case 1:if(Un(c.type)){c=c.stateNode.__reactInternalMemoizedMergedChildContext;break e}}c=c.return}while(c!==null);throw Error(i(171))}if(l.tag===1){var m=l.type;if(Un(m))return kn(l,m,c)}return c}function Kb(l){var c=l._reactInternals;if(c===void 0)throw typeof l.render=="function"?Error(i(188)):(l=Object.keys(l).join(","),Error(i(268,l)));return l=J(c),l===null?null:l.stateNode}function Qb(l,c){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var m=l.retryLane;l.retryLane=m!==0&&m=Ee&&j>=Vt&&w<=ct&&A<=et){l.splice(c,1);break}else if(y!==Ee||m.width!==se.width||etA){if(!(j!==Vt||m.height!==se.height||ctw)){Ee>y&&(se.width+=Ee-y,se.x=y),ctj&&(se.height+=Vt-j,se.y=j),etm&&(m=A)),A ")+` - -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 K(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:u.ReactCurrentDispatcher,findHostInstanceByFiber:fE,findFiberByHostInstance:l.findFiberByHostInstance||pE,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")l=!1;else{var c=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(c.isDisabled||!c.supportsFiber)l=!0;else{try{Fn=c.inject(l),an=c}catch{}l=!!c.checkDCE}}return l},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(l,c,m,y){if(!vt)throw Error(i(363));l=Om(l,c);var w=Ft(l,m,y).disconnect;return{disconnect:function(){w()}}},n.registerMutableSourceForHydration=function(l,c){var m=c._getVersion;m=m(c._source),l.mutableSourceEagerHydrationData==null?l.mutableSourceEagerHydrationData=[c,m]:l.mutableSourceEagerHydrationData.push(c,m)},n.runWithPriority=function(l,c){var m=Se;try{return Se=l,c()}finally{Se=m}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(l,c,m,y){var w=c.current,j=Kr(),A=Ra(w);return m=qb(m),c.context===null?c.context=m:c.pendingContext=m,c=ea(j,A),c.payload={element:l},y=y===void 0?null:y,y!==null&&(c.callback=y),l=Ea(w,c,A),l!==null&&(zo(l,w,A,j),Yu(l,w,A)),A},n};bI.exports=zte;var Lte=bI.exports;const Bte=wu(Lte);var xI={exports:{}},Ki={};/** - * @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. - */Ki.ConcurrentRoot=1;Ki.ContinuousEventPriority=4;Ki.DefaultEventPriority=16;Ki.DiscreteEventPriority=1;Ki.IdleEventPriority=536870912;Ki.LegacyRoot=0;xI.exports=Ki;var wI=xI.exports;const r4={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let o4=!1,s4=!1;const yy=".react-konva-event",Fte=`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 -`,Hte=`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 -`,Wte={};function Hh(e,t,n=Wte){if(!o4&&"zIndex"in t&&(console.warn(Hte),o4=!0),!s4&&t.draggable){var r=t.x!==void 0||t.y!==void 0,o=t.onDragEnd||t.onDragMove;r&&!o&&(console.warn(Fte),s4=!0)}for(var s in n)if(!r4[s]){var i=s.slice(0,2)==="on",u=n[s]!==t[s];if(i&&u){var d=s.substr(2).toLowerCase();d.substr(0,7)==="content"&&(d="content"+d.substr(7,1).toUpperCase()+d.substr(8)),e.off(d,n[s])}var p=!t.hasOwnProperty(s);p&&e.setAttr(s,void 0)}var h=t._useStrictMode,g={},v=!1;const b={};for(var s in t)if(!r4[s]){var i=s.slice(0,2)==="on",S=n[s]!==t[s];if(i&&S){var d=s.substr(2).toLowerCase();d.substr(0,7)==="content"&&(d="content"+d.substr(7,1).toUpperCase()+d.substr(8)),t[s]&&(b[d]=t[s])}!i&&(t[s]!==n[s]||h&&t[s]!==e.getAttr(s))&&(v=!0,g[s]=t[s])}v&&(e.setAttrs(g),li(e));for(var d in b)e.on(d+yy,b[d])}function li(e){if(!vO.Konva.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const SI={},Vte={};vu.Node.prototype._applyProps=Hh;function Ute(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),li(e)}function Gte(e,t,n){let r=vu[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=vu.Group);const o={},s={};for(var i in t){var u=i.slice(0,2)==="on";u?s[i]=t[i]:o[i]=t[i]}const d=new r(o);return Hh(d,s),d}function qte(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function Kte(e,t,n){return!1}function Qte(e){return e}function Yte(){return null}function Xte(){return null}function Jte(e,t,n,r){return Vte}function Zte(){}function ene(e){}function tne(e,t){return!1}function nne(){return SI}function rne(){return SI}const one=setTimeout,sne=clearTimeout,ane=-1;function ine(e,t){return!1}const lne=!1,cne=!0,une=!0;function dne(e,t){t.parent===e?t.moveToTop():e.add(t),li(e)}function fne(e,t){t.parent===e?t.moveToTop():e.add(t),li(e)}function CI(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),li(e)}function pne(e,t,n){CI(e,t,n)}function hne(e,t){t.destroy(),t.off(yy),li(e)}function mne(e,t){t.destroy(),t.off(yy),li(e)}function gne(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function vne(e,t,n){}function yne(e,t,n,r,o){Hh(e,o,r)}function bne(e){e.hide(),li(e)}function xne(e){}function wne(e,t){(t.visible==null||t.visible)&&e.show()}function Sne(e,t){}function Cne(e){}function _ne(){}const kne=()=>wI.DefaultEventPriority,jne=Object.freeze(Object.defineProperty({__proto__:null,appendChild:dne,appendChildToContainer:fne,appendInitialChild:Ute,cancelTimeout:sne,clearContainer:Cne,commitMount:vne,commitTextUpdate:gne,commitUpdate:yne,createInstance:Gte,createTextInstance:qte,detachDeletedInstance:_ne,finalizeInitialChildren:Kte,getChildHostContext:rne,getCurrentEventPriority:kne,getPublicInstance:Qte,getRootHostContext:nne,hideInstance:bne,hideTextInstance:xne,idlePriority:vf.unstable_IdlePriority,insertBefore:CI,insertInContainerBefore:pne,isPrimaryRenderer:lne,noTimeout:ane,now:vf.unstable_now,prepareForCommit:Yte,preparePortalMount:Xte,prepareUpdate:Jte,removeChild:hne,removeChildFromContainer:mne,resetAfterCommit:Zte,resetTextContent:ene,run:vf.unstable_runWithPriority,scheduleTimeout:one,shouldDeprioritizeSubtree:tne,shouldSetTextContent:ine,supportsMutation:une,unhideInstance:wne,unhideTextInstance:Sne,warnsIfNotActing:cne},Symbol.toStringTag,{value:"Module"}));var Pne=Object.defineProperty,Ine=Object.defineProperties,Ene=Object.getOwnPropertyDescriptors,a4=Object.getOwnPropertySymbols,One=Object.prototype.hasOwnProperty,Mne=Object.prototype.propertyIsEnumerable,i4=(e,t,n)=>t in e?Pne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l4=(e,t)=>{for(var n in t||(t={}))One.call(t,n)&&i4(e,n,t[n]);if(a4)for(var n of a4(t))Mne.call(t,n)&&i4(e,n,t[n]);return e},Rne=(e,t)=>Ine(e,Ene(t));function _I(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const o=_I(r,t,n);if(o)return o;r=t?null:r.sibling}}function kI(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const by=kI(f.createContext(null));class jI extends f.Component{render(){return f.createElement(by.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:c4,ReactCurrentDispatcher:u4}=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function Dne(){const e=f.useContext(by);if(e===null)throw new Error("its-fine: useFiber must be called within a !");const t=f.useId();return f.useMemo(()=>{for(const r of[c4==null?void 0:c4.current,e,e==null?void 0:e.alternate]){if(!r)continue;const o=_I(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 Ane(){var e,t;const n=Dne(),[r]=f.useState(()=>new Map);r.clear();let o=n;for(;o;){const s=(e=o.type)==null?void 0:e._context;s&&s!==by&&!r.has(s)&&r.set(s,(t=u4==null?void 0:u4.current)==null?void 0:t.readContext(kI(s))),o=o.return}return r}function Tne(){const e=Ane();return f.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>r=>f.createElement(t,null,f.createElement(n.Provider,Rne(l4({},r),{value:e.get(n)}))),t=>f.createElement(jI,l4({},t))),[e])}function Nne(e){const t=z.useRef({});return z.useLayoutEffect(()=>{t.current=e}),z.useLayoutEffect(()=>()=>{t.current={}},[]),t.current}const $ne=e=>{const t=z.useRef(),n=z.useRef(),r=z.useRef(),o=Nne(e),s=Tne(),i=u=>{const{forwardedRef:d}=e;d&&(typeof d=="function"?d(u):d.current=u)};return z.useLayoutEffect(()=>(n.current=new vu.Stage({width:e.width,height:e.height,container:t.current}),i(n.current),r.current=qc.createContainer(n.current,wI.LegacyRoot,!1,null),qc.updateContainer(z.createElement(s,{},e.children),r.current),()=>{vu.isBrowser&&(i(null),qc.updateContainer(null,r.current,null),n.current.destroy())}),[]),z.useLayoutEffect(()=>{i(n.current),Hh(n.current,e,o),qc.updateContainer(z.createElement(s,{},e.children),r.current,null)}),z.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})},zc="Layer",Sa="Group",qs="Rect",vi="Circle",Vp="Line",PI="Image",zne="Transformer",qc=Bte(jne);qc.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:z.version,rendererPackageName:"react-konva"});const Lne=z.forwardRef((e,t)=>z.createElement(jI,{},z.createElement($ne,{...e,forwardedRef:t}))),Bne=he([en,Jn],(e,t)=>{const{tool:n,isMovingBoundingBox:r}=e;return{tool:n,isStaging:t,isMovingBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:Gt}}),Fne=()=>{const e=Z(),{tool:t,isStaging:n,isMovingBoundingBox:r}=$(Bne);return{handleDragStart:f.useCallback(()=>{(t==="move"||n)&&!r&&e(Df(!0))},[e,r,n,t]),handleDragMove:f.useCallback(o=>{if(!((t==="move"||n)&&!r))return;const s={x:o.target.x(),y:o.target.y()};e(l3(s))},[e,r,n,t]),handleDragEnd:f.useCallback(()=>{(t==="move"||n)&&!r&&e(Df(!1))},[e,r,n,t])}},Hne=he([en,or,Jn],(e,t,n)=>{const{cursorPosition:r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isMaskEnabled:u,shouldSnapToGrid:d}=e;return{activeTabName:t,isCursorOnCanvas:!!r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isStaging:n,isMaskEnabled:u,shouldSnapToGrid:d}},{memoizeOptions:{resultEqualityCheck:Gt}}),Wne=()=>{const e=Z(),{activeTabName:t,shouldShowBoundingBox:n,tool:r,isStaging:o,isMaskEnabled:s,shouldSnapToGrid:i}=$(Hne),u=f.useRef(null),d=c3(),p=()=>e(wv());Ye(["shift+c"],()=>{p()},{enabled:()=>!o,preventDefault:!0},[]);const h=()=>e(ku(!s));Ye(["h"],()=>{h()},{enabled:()=>!o,preventDefault:!0},[s]),Ye(["n"],()=>{e(ou(!i))},{enabled:!0,preventDefault:!0},[i]),Ye("esc",()=>{e(yO())},{enabled:()=>!0,preventDefault:!0}),Ye("shift+h",()=>{e(bO(!n))},{enabled:()=>!o,preventDefault:!0},[t,n]),Ye(["space"],g=>{g.repeat||(d==null||d.container().focus(),r!=="move"&&(u.current=r,e(Hs("move"))),r==="move"&&u.current&&u.current!=="move"&&(e(Hs(u.current)),u.current="move"))},{keyup:!0,keydown:!0,preventDefault:!0},[r,u])},xy=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}},II=()=>{const e=Z(),t=ma(),n=c3();return{updateColorUnderCursor:()=>{if(!n||!t)return;const r=n.getPointerPosition();if(!r)return;const o=xO.pixelRatio,[s,i,u,d]=t.getContext().getImageData(r.x*o,r.y*o,1,1).data;e(wO({r:s,g:i,b:u,a:d}))},commitColorUnderCursor:()=>{e(SO())}}},Vne=he([or,en,Jn],(e,t,n)=>{const{tool:r}=t;return{tool:r,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:Gt}}),Une=e=>{const t=Z(),{tool:n,isStaging:r}=$(Vne),{commitColorUnderCursor:o}=II();return f.useCallback(s=>{if(!e.current)return;if(e.current.container().focus(),n==="move"||r){t(Df(!0));return}if(n==="colorPicker"){o();return}const i=xy(e.current);i&&(s.evt.preventDefault(),t(u3(!0)),t(CO([i.x,i.y])))},[e,n,r,t,o])},Gne=he([or,en,Jn],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:Gt}}),qne=(e,t,n)=>{const r=Z(),{isDrawing:o,tool:s,isStaging:i}=$(Gne),{updateColorUnderCursor:u}=II();return f.useCallback(()=>{if(!e.current)return;const d=xy(e.current);if(d){if(r(_O(d)),n.current=d,s==="colorPicker"){u();return}!o||s==="move"||i||(t.current=!0,r(d3([d.x,d.y])))}},[t,r,o,i,n,e,s,u])},Kne=()=>{const e=Z();return f.useCallback(()=>{e(kO())},[e])},Qne=he([or,en,Jn],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:Gt}}),Yne=(e,t)=>{const n=Z(),{tool:r,isDrawing:o,isStaging:s}=$(Qne);return f.useCallback(()=>{if(r==="move"||s){n(Df(!1));return}if(!t.current&&o&&e.current){const i=xy(e.current);if(!i)return;n(d3([i.x,i.y]))}else t.current=!1;n(u3(!1))},[t,n,o,s,e,r])},Xne=he([en],e=>{const{isMoveStageKeyHeld:t,stageScale:n}=e;return{isMoveStageKeyHeld:t,stageScale:n}},{memoizeOptions:{resultEqualityCheck:Gt}}),Jne=e=>{const t=Z(),{isMoveStageKeyHeld:n,stageScale:r}=$(Xne);return f.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 u=o.evt.deltaY;o.evt.ctrlKey&&(u=-u);const d=Vs(r*IO**u,PO,jO),p={x:s.x-i.x*d,y:s.y-i.y*d};t(EO(d)),t(l3(p))},[e,n,r,t])},Zne=he(en,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:Gt}}),ere=()=>{const{boundingBoxCoordinates:e,boundingBoxDimensions:t,shouldDarkenOutsideBoundingBox:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=$(Zne);return a.jsxs(Sa,{children:[a.jsx(qs,{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(qs,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,visible:n,globalCompositeOperation:"destination-out"})]})},tre=he([en],e=>{const{stageScale:t,stageCoordinates:n,stageDimensions:r}=e;return{stageScale:t,stageCoordinates:n,stageDimensions:r}},{memoizeOptions:{resultEqualityCheck:Gt}}),nre=()=>{const{stageScale:e,stageCoordinates:t,stageDimensions:n}=$(tre),{colorMode:r}=xs(),[o,s]=f.useState([]),[i,u]=ec("colors",["base.800","base.200"]),d=f.useCallback(p=>p/e,[e]);return f.useLayoutEffect(()=>{const{width:p,height:h}=n,{x:g,y:v}=t,b={x1:0,y1:0,x2:p,y2:h,offset:{x:d(g),y:d(v)}},S={x:Math.ceil(d(g)/64)*64,y:Math.ceil(d(v)/64)*64},x={x1:-S.x,y1:-S.y,x2:d(p)-S.x+64,y2:d(h)-S.y+64},_={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-_.x1,P=_.y2-_.y1,I=Math.round(k/64)+1,E=Math.round(P/64)+1,O=$x(0,I).map(D=>a.jsx(Vp,{x:_.x1+D*64,y:_.y1,points:[0,0,0,P],stroke:r==="dark"?i:u,strokeWidth:1},`x_${D}`)),R=$x(0,E).map(D=>a.jsx(Vp,{x:_.x1,y:_.y1+D*64,points:[0,0,k,0],stroke:r==="dark"?i:u,strokeWidth:1},`y_${D}`));s(O.concat(R))},[e,t,n,d,r,i,u]),a.jsx(Sa,{children:o})},rre=he([xo,en],(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:Gt}}),ore=e=>{const{...t}=e,{progressImage:n,boundingBox:r}=$(rre),[o,s]=f.useState(null);return f.useEffect(()=>{if(!n)return;const i=new Image;i.onload=()=>{s(i)},i.src=n.dataURL},[n]),n&&r&&o?a.jsx(PI,{x:r.x,y:r.y,width:r.width,height:r.height,image:o,listening:!1,...t}):null},Ii=e=>{const{r:t,g:n,b:r,a:o}=e;return`rgba(${t}, ${n}, ${r}, ${o})`},sre=he(en,e=>{const{maskColor:t,stageCoordinates:n,stageDimensions:r,stageScale:o}=e;return{stageCoordinates:n,stageDimensions:r,stageScale:o,maskColorString:Ii(t)}}),d4=e=>`data:image/svg+xml;utf8, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -`.replaceAll("black",e),are=e=>{const{...t}=e,{maskColorString:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=$(sre),[i,u]=f.useState(null),[d,p]=f.useState(0),h=f.useRef(null),g=f.useCallback(()=>{p(d+1),setTimeout(g,500)},[d]);return f.useEffect(()=>{if(i)return;const v=new Image;v.onload=()=>{u(v)},v.src=d4(n)},[i,n]),f.useEffect(()=>{i&&(i.src=d4(n))},[i,n]),f.useEffect(()=>{const v=setInterval(()=>p(b=>(b+1)%5),50);return()=>clearInterval(v)},[]),!i||!il(r.x)||!il(r.y)||!il(s)||!il(o.width)||!il(o.height)?null:a.jsx(qs,{ref:h,offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fillPatternImage:i,fillPatternOffsetY:il(d)?d:0,fillPatternRepeat:"repeat",fillPatternScale:{x:1/s,y:1/s},listening:!0,globalCompositeOperation:"source-in",...t})},ire=he([en],e=>({objects:e.layerState.objects}),{memoizeOptions:{resultEqualityCheck:Gt}}),lre=e=>{const{...t}=e,{objects:n}=$(ire);return a.jsx(Sa,{listening:!1,...t,children:n.filter(OO).map((r,o)=>a.jsx(Vp,{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))})};var yi=f,cre=function(t,n,r){const o=yi.useRef("loading"),s=yi.useRef(),[i,u]=yi.useState(0),d=yi.useRef(),p=yi.useRef(),h=yi.useRef();return(d.current!==t||p.current!==n||h.current!==r)&&(o.current="loading",s.current=void 0,d.current=t,p.current=n,h.current=r),yi.useLayoutEffect(function(){if(!t)return;var g=document.createElement("img");function v(){o.current="loaded",s.current=g,u(Math.random())}function b(){o.current="failed",s.current=void 0,u(Math.random())}return g.addEventListener("load",v),g.addEventListener("error",b),n&&(g.crossOrigin=n),r&&(g.referrerPolicy=r),g.src=t,function(){g.removeEventListener("load",v),g.removeEventListener("error",b)}},[t,n,r]),[s.current,o.current]};const ure=wu(cre),EI=e=>{const{width:t,height:n,x:r,y:o,imageName:s}=e.canvasImage,{currentData:i,isError:u}=Uo(s??Xr.skipToken),[d]=ure((i==null?void 0:i.image_url)??"",MO.get()?"use-credentials":"anonymous");return u?a.jsx(qs,{x:r,y:o,width:t,height:n,fill:"red"}):a.jsx(PI,{x:r,y:o,image:d,listening:!1})},dre=he([en],e=>{const{layerState:{objects:t}}=e;return{objects:t}},{memoizeOptions:{resultEqualityCheck:Gt}}),fre=()=>{const{objects:e}=$(dre);return e?a.jsx(Sa,{name:"outpainting-objects",listening:!1,children:e.map((t,n)=>{if(O4(t))return a.jsx(EI,{canvasImage:t},n);if(RO(t)){const r=a.jsx(Vp,{points:t.points,stroke:t.color?Ii(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(Sa,{clipX:t.clip.x,clipY:t.clip.y,clipWidth:t.clip.width,clipHeight:t.clip.height,children:r},n):r}else{if(DO(t))return a.jsx(qs,{x:t.x,y:t.y,width:t.width,height:t.height,fill:Ii(t.color)},n);if(AO(t))return a.jsx(qs,{x:t.x,y:t.y,width:t.width,height:t.height,fill:"rgb(255, 255, 255)",globalCompositeOperation:"destination-out"},n)}})}):null},pre=he([en],e=>{const{layerState:t,shouldShowStagingImage:n,shouldShowStagingOutline:r,boundingBoxCoordinates:{x:o,y:s},boundingBoxDimensions:{width:i,height:u}}=e,{selectedImageIndex:d,images:p}=t.stagingArea;return{currentStagingAreaImage:p.length>0&&d!==void 0?p[d]:void 0,isOnFirstImage:d===0,isOnLastImage:d===p.length-1,shouldShowStagingImage:n,shouldShowStagingOutline:r,x:o,y:s,width:i,height:u}},{memoizeOptions:{resultEqualityCheck:Gt}}),hre=e=>{const{...t}=e,{currentStagingAreaImage:n,shouldShowStagingImage:r,shouldShowStagingOutline:o,x:s,y:i,width:u,height:d}=$(pre);return a.jsxs(Sa,{...t,children:[r&&n&&a.jsx(EI,{canvasImage:n}),o&&a.jsxs(Sa,{children:[a.jsx(qs,{x:s,y:i,width:u,height:d,strokeWidth:1,stroke:"white",strokeScaleEnabled:!1}),a.jsx(qs,{x:s,y:i,width:u,height:d,dash:[4,4],strokeWidth:1,stroke:"black",strokeScaleEnabled:!1})]})]})},mre=he([en],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:Gt}}),gre=()=>{const e=Z(),{isOnFirstImage:t,isOnLastImage:n,currentStagingAreaImage:r,shouldShowStagingImage:o,sessionId:s}=$(mre),{t:i}=ue(),u=f.useCallback(()=>{e(Ix(!0))},[e]),d=f.useCallback(()=>{e(Ix(!1))},[e]);Ye(["left"],()=>{p()},{enabled:()=>!0,preventDefault:!0}),Ye(["right"],()=>{h()},{enabled:()=>!0,preventDefault:!0}),Ye(["enter"],()=>{g()},{enabled:()=>!0,preventDefault:!0});const p=f.useCallback(()=>e(TO()),[e]),h=f.useCallback(()=>e(NO()),[e]),g=f.useCallback(()=>e($O(s)),[e,s]),{data:v}=Uo((r==null?void 0:r.imageName)??Xr.skipToken);return r?a.jsx(L,{pos:"absolute",bottom:4,w:"100%",align:"center",justify:"center",filter:"drop-shadow(0 0.5rem 1rem rgba(0,0,0))",onMouseOver:u,onMouseOut:d,children:a.jsxs(Yn,{isAttached:!0,children:[a.jsx(je,{tooltip:`${i("unifiedCanvas.previous")} (Left)`,"aria-label":`${i("unifiedCanvas.previous")} (Left)`,icon:a.jsx(Uz,{}),onClick:p,colorScheme:"accent",isDisabled:t}),a.jsx(je,{tooltip:`${i("unifiedCanvas.next")} (Right)`,"aria-label":`${i("unifiedCanvas.next")} (Right)`,icon:a.jsx(Gz,{}),onClick:h,colorScheme:"accent",isDisabled:n}),a.jsx(je,{tooltip:`${i("unifiedCanvas.accept")} (Enter)`,"aria-label":`${i("unifiedCanvas.accept")} (Enter)`,icon:a.jsx(Kz,{}),onClick:g,colorScheme:"accent"}),a.jsx(je,{tooltip:i("unifiedCanvas.showHide"),"aria-label":i("unifiedCanvas.showHide"),"data-alert":!o,icon:o?a.jsx(nL,{}):a.jsx(tL,{}),onClick:()=>e(zO(!o)),colorScheme:"accent"}),a.jsx(je,{tooltip:i("unifiedCanvas.saveToGallery"),"aria-label":i("unifiedCanvas.saveToGallery"),isDisabled:!v||!v.is_intermediate,icon:a.jsx(yh,{}),onClick:()=>{v&&e(LO({imageDTO:v}))},colorScheme:"accent"}),a.jsx(je,{tooltip:i("unifiedCanvas.discardAll"),"aria-label":i("unifiedCanvas.discardAll"),icon:a.jsx(Hi,{style:{transform:"rotate(45deg)"}}),onClick:()=>e(BO()),colorScheme:"error",fontSize:20})]})}):null},kl=e=>Math.round(e*100)/100,vre=he([en],e=>{const{cursorPosition:t}=e,{cursorX:n,cursorY:r}=t?{cursorX:t.x,cursorY:t.y}:{cursorX:-1,cursorY:-1};return{cursorCoordinatesString:`(${kl(n)}, ${kl(r)})`}},{memoizeOptions:{resultEqualityCheck:Gt}});function yre(){const{cursorCoordinatesString:e}=$(vre),{t}=ue();return a.jsx($e,{children:`${t("unifiedCanvas.cursorPosition")}: ${e}`})}const rv="var(--invokeai-colors-warning-500)",bre=he([en],e=>{const{stageDimensions:{width:t,height:n},stageCoordinates:{x:r,y:o},boundingBoxDimensions:{width:s,height:i},scaledBoundingBoxDimensions:{width:u,height:d},boundingBoxCoordinates:{x:p,y:h},stageScale:g,shouldShowCanvasDebugInfo:v,layer:b,boundingBoxScaleMethod:S,shouldPreserveMaskedArea:x}=e;let C="inherit";return(S==="none"&&(s<512||i<512)||S==="manual"&&u*d<512*512)&&(C=rv),{activeLayerColor:b==="mask"?rv:"inherit",activeLayerString:b.charAt(0).toUpperCase()+b.slice(1),boundingBoxColor:C,boundingBoxCoordinatesString:`(${kl(p)}, ${kl(h)})`,boundingBoxDimensionsString:`${s}×${i}`,scaledBoundingBoxDimensionsString:`${u}×${d}`,canvasCoordinatesString:`${kl(r)}×${kl(o)}`,canvasDimensionsString:`${t}×${n}`,canvasScaleString:Math.round(g*100),shouldShowCanvasDebugInfo:v,shouldShowBoundingBox:S!=="auto",shouldShowScaledBoundingBox:S!=="none",shouldPreserveMaskedArea:x}},{memoizeOptions:{resultEqualityCheck:Gt}}),xre=()=>{const{activeLayerColor:e,activeLayerString:t,boundingBoxColor:n,boundingBoxCoordinatesString:r,boundingBoxDimensionsString:o,scaledBoundingBoxDimensionsString:s,shouldShowScaledBoundingBox:i,canvasCoordinatesString:u,canvasDimensionsString:d,canvasScaleString:p,shouldShowCanvasDebugInfo:h,shouldShowBoundingBox:g,shouldPreserveMaskedArea:v}=$(bre),{t:b}=ue();return a.jsxs(L,{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($e,{style:{color:e},children:`${b("unifiedCanvas.activeLayer")}: ${t}`}),a.jsx($e,{children:`${b("unifiedCanvas.canvasScale")}: ${p}%`}),v&&a.jsx($e,{style:{color:rv},children:"Preserve Masked Area: On"}),g&&a.jsx($e,{style:{color:n},children:`${b("unifiedCanvas.boundingBox")}: ${o}`}),i&&a.jsx($e,{style:{color:n},children:`${b("unifiedCanvas.scaledBoundingBox")}: ${s}`}),h&&a.jsxs(a.Fragment,{children:[a.jsx($e,{children:`${b("unifiedCanvas.boundingBoxPosition")}: ${r}`}),a.jsx($e,{children:`${b("unifiedCanvas.canvasDimensions")}: ${d}`}),a.jsx($e,{children:`${b("unifiedCanvas.canvasPosition")}: ${u}`}),a.jsx(yre,{})]})]})},wre=he([en,Zr],(e,t)=>{const{boundingBoxCoordinates:n,boundingBoxDimensions:r,stageScale:o,isDrawing:s,isTransformingBoundingBox:i,isMovingBoundingBox:u,tool:d,shouldSnapToGrid:p}=e,{aspectRatio:h}=t;return{boundingBoxCoordinates:n,boundingBoxDimensions:r,isDrawing:s,isMovingBoundingBox:u,isTransformingBoundingBox:i,stageScale:o,shouldSnapToGrid:p,tool:d,hitStrokeWidth:20/o,aspectRatio:h}},{memoizeOptions:{resultEqualityCheck:Gt}}),Sre=e=>{const{...t}=e,n=Z(),{boundingBoxCoordinates:r,boundingBoxDimensions:o,isDrawing:s,isMovingBoundingBox:i,isTransformingBoundingBox:u,stageScale:d,shouldSnapToGrid:p,tool:h,hitStrokeWidth:g,aspectRatio:v}=$(wre),b=f.useRef(null),S=f.useRef(null),[x,C]=f.useState(!1);f.useEffect(()=>{var F;!b.current||!S.current||(b.current.nodes([S.current]),(F=b.current.getLayer())==null||F.batchDraw())},[]);const _=64*d;Ye("N",()=>{n(ou(!p))});const k=f.useCallback(F=>{if(!p){n(qm({x:Math.floor(F.target.x()),y:Math.floor(F.target.y())}));return}const N=F.target.x(),G=F.target.y(),K=cs(N,64),M=cs(G,64);F.target.x(K),F.target.y(M),n(qm({x:K,y:M}))},[n,p]),P=f.useCallback(()=>{if(!S.current)return;const F=S.current,N=F.scaleX(),G=F.scaleY(),K=Math.round(F.width()*N),M=Math.round(F.height()*G),U=Math.round(F.x()),V=Math.round(F.y());if(v){const ee=cs(K/v,64);n(Bs({width:K,height:ee}))}else n(Bs({width:K,height:M}));n(qm({x:p?Od(U,64):U,y:p?Od(V,64):V})),F.scaleX(1),F.scaleY(1)},[n,p,v]),I=f.useCallback((F,N,G)=>{const K=F.x%_,M=F.y%_;return{x:Od(N.x,_)+K,y:Od(N.y,_)+M}},[_]),E=()=>{n(Km(!0))},O=()=>{n(Km(!1)),n(Qm(!1)),n(Md(!1)),C(!1)},R=()=>{n(Qm(!0))},D=()=>{n(Km(!1)),n(Qm(!1)),n(Md(!1)),C(!1)},T=()=>{C(!0)},B=()=>{!u&&!i&&C(!1)},W=()=>{n(Md(!0))},J=()=>{n(Md(!1))};return a.jsxs(Sa,{...t,children:[a.jsx(qs,{height:o.height,width:o.width,x:r.x,y:r.y,onMouseEnter:W,onMouseOver:W,onMouseLeave:J,onMouseOut:J}),a.jsx(qs,{draggable:!0,fillEnabled:!1,height:o.height,hitStrokeWidth:g,listening:!s&&h==="move",onDragStart:R,onDragEnd:D,onDragMove:k,onMouseDown:R,onMouseOut:B,onMouseOver:T,onMouseEnter:T,onMouseUp:D,onTransform:P,onTransformEnd:O,ref:S,stroke:x?"rgba(255,255,255,0.7)":"white",strokeWidth:(x?8:1)/d,width:o.width,x:r.x,y:r.y}),a.jsx(zne,{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:R,onDragEnd:D,onMouseDown:E,onMouseUp:O,onTransformEnd:O,ref:b,rotateEnabled:!1})]})},Cre=he(en,e=>{const{cursorPosition:t,brushSize:n,colorPickerColor:r,maskColor:o,brushColor:s,tool:i,layer:u,shouldShowBrush:d,isMovingBoundingBox:p,isTransformingBoundingBox:h,stageScale:g,stageDimensions:v,boundingBoxCoordinates:b,boundingBoxDimensions:S,shouldRestrictStrokesToBox:x}=e,C=x?{clipX:b.x,clipY:b.y,clipWidth:S.width,clipHeight:S.height}:{};return{cursorPosition:t,brushX:t?t.x:v.width/2,brushY:t?t.y:v.height/2,radius:n/2,colorPickerOuterRadius:Ex/g,colorPickerInnerRadius:(Ex-Jg+1)/g,maskColorString:Ii({...o,a:.5}),brushColorString:Ii(s),colorPickerColorString:Ii(r),tool:i,layer:u,shouldShowBrush:d,shouldDrawBrushPreview:!(p||h||!t)&&d,strokeWidth:1.5/g,dotRadius:1.5/g,clip:C}},{memoizeOptions:{resultEqualityCheck:Gt}}),_re=e=>{const{...t}=e,{brushX:n,brushY:r,radius:o,maskColorString:s,tool:i,layer:u,shouldDrawBrushPreview:d,dotRadius:p,strokeWidth:h,brushColorString:g,colorPickerColorString:v,colorPickerInnerRadius:b,colorPickerOuterRadius:S,clip:x}=$(Cre);return d?a.jsxs(Sa,{listening:!1,...x,...t,children:[i==="colorPicker"?a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:S,stroke:g,strokeWidth:Jg,strokeScaleEnabled:!1}),a.jsx(vi,{x:n,y:r,radius:b,stroke:v,strokeWidth:Jg,strokeScaleEnabled:!1})]}):a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:o,fill:u==="mask"?s:g,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},kre=he([en,Jn],(e,t)=>{const{isMaskEnabled:n,stageScale:r,shouldShowBoundingBox:o,isTransformingBoundingBox:s,isMouseOverBoundingBox:i,isMovingBoundingBox:u,stageDimensions:d,stageCoordinates:p,tool:h,isMovingStage:g,shouldShowIntermediates:v,shouldShowGrid:b,shouldRestrictStrokesToBox:S,shouldAntialias:x}=e;let C="none";return h==="move"||t?g?C="grabbing":C="grab":s?C=void 0:S&&!i&&(C="default"),{isMaskEnabled:n,isModifyingBoundingBox:s||u,shouldShowBoundingBox:o,shouldShowGrid:b,stageCoordinates:p,stageCursor:C,stageDimensions:d,stageScale:r,tool:h,isStaging:t,shouldShowIntermediates:v,shouldAntialias:x}},Ke),jre=He(Lne,{shouldForwardProp:e=>!["sx"].includes(e)}),f4=()=>{const{isMaskEnabled:e,isModifyingBoundingBox:t,shouldShowBoundingBox:n,shouldShowGrid:r,stageCoordinates:o,stageCursor:s,stageDimensions:i,stageScale:u,tool:d,isStaging:p,shouldShowIntermediates:h,shouldAntialias:g}=$(kre);Wne();const v=f.useRef(null),b=f.useRef(null),S=f.useCallback(B=>{HO(B),v.current=B},[]),x=f.useCallback(B=>{FO(B),b.current=B},[]),C=f.useRef({x:0,y:0}),_=f.useRef(!1),k=Jne(v),P=Une(v),I=Yne(v,_),E=qne(v,_,C),O=Kne(),{handleDragStart:R,handleDragMove:D,handleDragEnd:T}=Fne();return a.jsx(L,{sx:{position:"relative",height:"100%",width:"100%",borderRadius:"base"},children:a.jsxs($e,{sx:{position:"relative"},children:[a.jsxs(jre,{tabIndex:-1,ref:S,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:u,y:u},onTouchStart:P,onTouchMove:E,onTouchEnd:I,onMouseDown:P,onMouseLeave:O,onMouseMove:E,onMouseUp:I,onDragStart:R,onDragMove:D,onDragEnd:T,onContextMenu:B=>B.evt.preventDefault(),onWheel:k,draggable:(d==="move"||p)&&!t,children:[a.jsx(zc,{id:"grid",visible:r,children:a.jsx(nre,{})}),a.jsx(zc,{id:"base",ref:x,listening:!1,imageSmoothingEnabled:g,children:a.jsx(fre,{})}),a.jsxs(zc,{id:"mask",visible:e,listening:!1,children:[a.jsx(lre,{visible:!0,listening:!1}),a.jsx(are,{listening:!1})]}),a.jsx(zc,{children:a.jsx(ere,{})}),a.jsxs(zc,{id:"preview",imageSmoothingEnabled:g,children:[!p&&a.jsx(_re,{visible:d!=="move",listening:!1}),a.jsx(hre,{visible:p}),h&&a.jsx(ore,{}),a.jsx(Sre,{visible:n&&!p})]})]}),a.jsx(xre,{}),a.jsx(gre,{})]})})},Pre=he(en,JN,or,(e,t,n)=>{const{doesCanvasNeedScaling:r,isCanvasInitialized:o}=e;return{doesCanvasNeedScaling:r,activeTabName:n,initialCanvasImage:t,isCanvasInitialized:o}}),p4=()=>{const e=Z(),{doesCanvasNeedScaling:t,activeTabName:n,initialCanvasImage:r,isCanvasInitialized:o}=$(Pre),s=f.useRef(null);return f.useLayoutEffect(()=>{window.setTimeout(()=>{if(!s.current)return;const{clientWidth:i,clientHeight:u}=s.current;e(WO({width:i,height:u})),e(o?VO():Jp()),e(M4(!1))},0)},[e,r,t,n,o]),a.jsx(L,{ref:s,sx:{flexDirection:"column",alignItems:"center",justifyContent:"center",gap:4,width:"100%",height:"100%"},children:a.jsx(oc,{thickness:"2px",size:"xl"})})};function OI(e,t,n=250){const[r,o]=f.useState(0);return f.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 Ire=He(mI,{baseStyle:{paddingInline:4},shouldForwardProp:e=>!["pickerColor"].includes(e)}),Hg={width:6,height:6,borderColor:"base.100"},Ere=e=>{const{styleClass:t="",...n}=e;return a.jsx(Ire,{sx:{".react-colorful__hue-pointer":Hg,".react-colorful__saturation-pointer":Hg,".react-colorful__alpha-pointer":Hg},className:t,...n})},Up=f.memo(Ere),Ore=he([en,Jn],(e,t)=>{const{maskColor:n,layer:r,isMaskEnabled:o,shouldPreserveMaskedArea:s}=e;return{layer:r,maskColor:n,maskColorString:Ii(n),isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:t}},{memoizeOptions:{resultEqualityCheck:Gt}}),Mre=()=>{const e=Z(),{t}=ue(),{layer:n,maskColor:r,isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:i}=$(Ore);Ye(["q"],()=>{u()},{enabled:()=>!i,preventDefault:!0},[n]),Ye(["shift+c"],()=>{d()},{enabled:()=>!i,preventDefault:!0},[]),Ye(["h"],()=>{p()},{enabled:()=>!i,preventDefault:!0},[o]);const u=()=>{e(Af(n==="mask"?"base":"mask"))},d=()=>e(wv()),p=()=>e(ku(!o));return a.jsx(Wi,{triggerComponent:a.jsx(Yn,{children:a.jsx(je,{"aria-label":t("unifiedCanvas.maskingOptions"),tooltip:t("unifiedCanvas.maskingOptions"),icon:a.jsx(dL,{}),isChecked:n==="mask",isDisabled:i})}),children:a.jsxs(L,{direction:"column",gap:2,children:[a.jsx(Ln,{label:`${t("unifiedCanvas.enableMask")} (H)`,isChecked:o,onChange:p}),a.jsx(Ln,{label:t("unifiedCanvas.preserveMaskedArea"),isChecked:s,onChange:h=>e(f3(h.target.checked))}),a.jsx(Up,{sx:{paddingTop:2,paddingBottom:2},pickerColor:r,onChange:h=>e(p3(h))}),a.jsxs(Xt,{size:"sm",leftIcon:a.jsx(Xo,{}),onClick:d,children:[t("unifiedCanvas.clearMask")," (Shift+C)"]})]})})},Rre=he([en,or,xo],(e,t,n)=>{const{futureLayerStates:r}=e;return{canRedo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:Gt}});function MI(){const e=Z(),{canRedo:t,activeTabName:n}=$(Rre),{t:r}=ue(),o=()=>{e(UO())};return Ye(["meta+shift+z","ctrl+shift+z","control+y","meta+y"],()=>{o()},{enabled:()=>t,preventDefault:!0},[n,t]),a.jsx(je,{"aria-label":`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,tooltip:`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,icon:a.jsx(mL,{}),onClick:o,isDisabled:!t})}const RI=()=>{const e=$(Jn),t=Z(),{t:n}=ue();return a.jsxs(hy,{title:n("unifiedCanvas.clearCanvasHistory"),acceptCallback:()=>t(GO()),acceptButtonText:n("unifiedCanvas.clearHistory"),triggerComponent:a.jsx(Xt,{size:"sm",leftIcon:a.jsx(Xo,{}),isDisabled:e,children:n("unifiedCanvas.clearCanvasHistory")}),children:[a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryMessage")}),a.jsx("br",{}),a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryConfirm")})]})},Dre=he([en],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:u,shouldRestrictStrokesToBox:d,shouldAntialias:p}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:u,shouldRestrictStrokesToBox:d,shouldAntialias:p}},{memoizeOptions:{resultEqualityCheck:Gt}}),Are=()=>{const e=Z(),{t}=ue(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldDarkenOutsideBoundingBox:o,shouldShowCanvasDebugInfo:s,shouldShowGrid:i,shouldShowIntermediates:u,shouldSnapToGrid:d,shouldRestrictStrokesToBox:p,shouldAntialias:h}=$(Dre);Ye(["n"],()=>{e(ou(!d))},{enabled:!0,preventDefault:!0},[d]);const g=v=>e(ou(v.target.checked));return a.jsx(Wi,{isLazy:!1,triggerComponent:a.jsx(je,{tooltip:t("unifiedCanvas.canvasSettings"),"aria-label":t("unifiedCanvas.canvasSettings"),icon:a.jsx(x1,{})}),children:a.jsxs(L,{direction:"column",gap:2,children:[a.jsx(Ln,{label:t("unifiedCanvas.showIntermediates"),isChecked:u,onChange:v=>e(h3(v.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.showGrid"),isChecked:i,onChange:v=>e(m3(v.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.snapToGrid"),isChecked:d,onChange:g}),a.jsx(Ln,{label:t("unifiedCanvas.darkenOutsideSelection"),isChecked:o,onChange:v=>e(g3(v.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:v=>e(v3(v.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:v=>e(y3(v.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.limitStrokesToBox"),isChecked:p,onChange:v=>e(b3(v.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:s,onChange:v=>e(x3(v.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.antialiasing"),isChecked:h,onChange:v=>e(w3(v.target.checked))}),a.jsx(RI,{})]})})},Tre=he([en,Jn,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:Gt}}),Nre=()=>{const e=Z(),{tool:t,brushColor:n,brushSize:r,isStaging:o}=$(Tre),{t:s}=ue();Ye(["b"],()=>{i()},{enabled:()=>!o,preventDefault:!0},[]),Ye(["e"],()=>{u()},{enabled:()=>!o,preventDefault:!0},[t]),Ye(["c"],()=>{d()},{enabled:()=>!o,preventDefault:!0},[t]),Ye(["shift+f"],()=>{p()},{enabled:()=>!o,preventDefault:!0}),Ye(["delete","backspace"],()=>{h()},{enabled:()=>!o,preventDefault:!0}),Ye(["BracketLeft"],()=>{e(Il(Math.max(r-5,5)))},{enabled:()=>!o,preventDefault:!0},[r]),Ye(["BracketRight"],()=>{e(Il(Math.min(r+5,500)))},{enabled:()=>!o,preventDefault:!0},[r]),Ye(["Shift+BracketLeft"],()=>{e(El({...n,a:Vs(n.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]),Ye(["Shift+BracketRight"],()=>{e(El({...n,a:Vs(n.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]);const i=()=>e(Hs("brush")),u=()=>e(Hs("eraser")),d=()=>e(Hs("colorPicker")),p=()=>e(S3()),h=()=>e(C3());return a.jsxs(Yn,{isAttached:!0,children:[a.jsx(je,{"aria-label":`${s("unifiedCanvas.brush")} (B)`,tooltip:`${s("unifiedCanvas.brush")} (B)`,icon:a.jsx(b_,{}),isChecked:t==="brush"&&!o,onClick:i,isDisabled:o}),a.jsx(je,{"aria-label":`${s("unifiedCanvas.eraser")} (E)`,tooltip:`${s("unifiedCanvas.eraser")} (E)`,icon:a.jsx(h_,{}),isChecked:t==="eraser"&&!o,isDisabled:o,onClick:u}),a.jsx(je,{"aria-label":`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:a.jsx(v_,{}),isDisabled:o,onClick:p}),a.jsx(je,{"aria-label":`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:a.jsx(Hi,{style:{transform:"rotate(45deg)"}}),isDisabled:o,onClick:h}),a.jsx(je,{"aria-label":`${s("unifiedCanvas.colorPicker")} (C)`,tooltip:`${s("unifiedCanvas.colorPicker")} (C)`,icon:a.jsx(g_,{}),isChecked:t==="colorPicker"&&!o,isDisabled:o,onClick:d}),a.jsx(Wi,{triggerComponent:a.jsx(je,{"aria-label":s("unifiedCanvas.brushOptions"),tooltip:s("unifiedCanvas.brushOptions"),icon:a.jsx(y1,{})}),children:a.jsxs(L,{minWidth:60,direction:"column",gap:4,width:"100%",children:[a.jsx(L,{gap:4,justifyContent:"space-between",children:a.jsx(Ct,{label:s("unifiedCanvas.brushSize"),value:r,withInput:!0,onChange:g=>e(Il(g)),sliderNumberInputProps:{max:500}})}),a.jsx(Up,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:g=>e(El(g))})]})})]})},$re=he([en,or,xo],(e,t,n)=>{const{pastLayerStates:r}=e;return{canUndo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:Gt}});function DI(){const e=Z(),{t}=ue(),{canUndo:n,activeTabName:r}=$($re),o=()=>{e(qO())};return Ye(["meta+z","ctrl+z"],()=>{o()},{enabled:()=>n,preventDefault:!0},[r,n]),a.jsx(je,{"aria-label":`${t("unifiedCanvas.undo")} (Ctrl+Z)`,tooltip:`${t("unifiedCanvas.undo")} (Ctrl+Z)`,icon:a.jsx(b1,{}),onClick:o,isDisabled:!n})}const zre=he([xo,en,Jn],(e,t,n)=>{const{isProcessing:r}=e,{tool:o,shouldCropToBoundingBoxOnSave:s,layer:i,isMaskEnabled:u}=t;return{isProcessing:r,isStaging:n,isMaskEnabled:u,tool:o,layer:i,shouldCropToBoundingBoxOnSave:s}},{memoizeOptions:{resultEqualityCheck:Gt}}),Lre=()=>{const e=Z(),{isProcessing:t,isStaging:n,isMaskEnabled:r,layer:o,tool:s}=$(zre),i=ma(),{t:u}=ue(),{isClipboardAPIAvailable:d}=G1(),{getUploadButtonProps:p,getUploadInputProps:h}=Rh({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}});Ye(["v"],()=>{g()},{enabled:()=>!n,preventDefault:!0},[]),Ye(["r"],()=>{b()},{enabled:()=>!0,preventDefault:!0},[i]),Ye(["shift+m"],()=>{x()},{enabled:()=>!n,preventDefault:!0},[i,t]),Ye(["shift+s"],()=>{C()},{enabled:()=>!n,preventDefault:!0},[i,t]),Ye(["meta+c","ctrl+c"],()=>{_()},{enabled:()=>!n&&d,preventDefault:!0},[i,t,d]),Ye(["shift+d"],()=>{k()},{enabled:()=>!n,preventDefault:!0},[i,t]);const g=()=>e(Hs("move")),v=OI(()=>b(!1),()=>b(!0)),b=(I=!1)=>{const E=ma();if(!E)return;const O=E.getClientRect({skipTransform:!0});e(_3({contentRect:O,shouldScaleTo1:I}))},S=()=>{e(vv()),e(Jp())},x=()=>{e(k3())},C=()=>{e(j3())},_=()=>{d&&e(P3())},k=()=>{e(I3())},P=I=>{const E=I;e(Af(E)),E==="mask"&&!r&&e(ku(!0))};return a.jsxs(L,{sx:{alignItems:"center",gap:2,flexWrap:"wrap"},children:[a.jsx($e,{w:24,children:a.jsx(br,{tooltip:`${u("unifiedCanvas.layer")} (Q)`,value:o,data:E3,onChange:P,disabled:n})}),a.jsx(Mre,{}),a.jsx(Nre,{}),a.jsxs(Yn,{isAttached:!0,children:[a.jsx(je,{"aria-label":`${u("unifiedCanvas.move")} (V)`,tooltip:`${u("unifiedCanvas.move")} (V)`,icon:a.jsx(d_,{}),isChecked:s==="move"||n,onClick:g}),a.jsx(je,{"aria-label":`${u("unifiedCanvas.resetView")} (R)`,tooltip:`${u("unifiedCanvas.resetView")} (R)`,icon:a.jsx(p_,{}),onClick:v})]}),a.jsxs(Yn,{isAttached:!0,children:[a.jsx(je,{"aria-label":`${u("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${u("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:a.jsx(y_,{}),onClick:x,isDisabled:n}),a.jsx(je,{"aria-label":`${u("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${u("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:a.jsx(yh,{}),onClick:C,isDisabled:n}),d&&a.jsx(je,{"aria-label":`${u("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${u("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:a.jsx(cc,{}),onClick:_,isDisabled:n}),a.jsx(je,{"aria-label":`${u("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${u("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:a.jsx(v1,{}),onClick:k,isDisabled:n})]}),a.jsxs(Yn,{isAttached:!0,children:[a.jsx(DI,{}),a.jsx(MI,{})]}),a.jsxs(Yn,{isAttached:!0,children:[a.jsx(je,{"aria-label":`${u("common.upload")}`,tooltip:`${u("common.upload")}`,icon:a.jsx(Fu,{}),isDisabled:n,...p()}),a.jsx("input",{...h()}),a.jsx(je,{"aria-label":`${u("unifiedCanvas.clearCanvas")}`,tooltip:`${u("unifiedCanvas.clearCanvas")}`,icon:a.jsx(Xo,{}),onClick:S,colorScheme:"error",isDisabled:n})]}),a.jsx(Yn,{isAttached:!0,children:a.jsx(Are,{})})]})};function Bre(){const e=Z(),t=$(o=>o.canvas.brushSize),{t:n}=ue(),r=$(Jn);return Ye(["BracketLeft"],()=>{e(Il(Math.max(t-5,5)))},{enabled:()=>!r,preventDefault:!0},[t]),Ye(["BracketRight"],()=>{e(Il(Math.min(t+5,500)))},{enabled:()=>!r,preventDefault:!0},[t]),a.jsx(Ct,{label:n("unifiedCanvas.brushSize"),value:t,withInput:!0,onChange:o=>e(Il(o)),sliderNumberInputProps:{max:500},isCompact:!0})}const Fre=he([en,Jn],(e,t)=>{const{brushColor:n,maskColor:r,layer:o}=e;return{brushColor:n,maskColor:r,layer:o,isStaging:t}},{memoizeOptions:{resultEqualityCheck:Gt}});function Hre(){const e=Z(),{brushColor:t,maskColor:n,layer:r,isStaging:o}=$(Fre),s=()=>{if(r==="base")return`rgba(${t.r},${t.g},${t.b},${t.a})`;if(r==="mask")return`rgba(${n.r},${n.g},${n.b},${n.a})`};return Ye(["shift+BracketLeft"],()=>{e(El({...t,a:Vs(t.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[t]),Ye(["shift+BracketRight"],()=>{e(El({...t,a:Vs(t.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[t]),a.jsx(Wi,{triggerComponent:a.jsx($e,{sx:{width:7,height:7,minWidth:7,minHeight:7,borderRadius:"full",bg:s(),cursor:"pointer"}}),children:a.jsxs(L,{minWidth:60,direction:"column",gap:4,width:"100%",children:[r==="base"&&a.jsx(Up,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:t,onChange:i=>e(El(i))}),r==="mask"&&a.jsx(Up,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:i=>e(p3(i))})]})})}function AI(){return a.jsxs(L,{columnGap:4,alignItems:"center",children:[a.jsx(Bre,{}),a.jsx(Hre,{})]})}function Wre(){const e=Z(),t=$(r=>r.canvas.shouldRestrictStrokesToBox),{t:n}=ue();return a.jsx(Ln,{label:n("unifiedCanvas.betaLimitToBox"),isChecked:t,onChange:r=>e(b3(r.target.checked))})}function Vre(){return a.jsxs(L,{gap:4,alignItems:"center",children:[a.jsx(AI,{}),a.jsx(Wre,{})]})}function Ure(){const e=Z(),{t}=ue(),n=()=>e(wv());return a.jsx(Xt,{size:"sm",leftIcon:a.jsx(Xo,{}),onClick:n,tooltip:`${t("unifiedCanvas.clearMask")} (Shift+C)`,children:t("unifiedCanvas.betaClear")})}function Gre(){const e=$(o=>o.canvas.isMaskEnabled),t=Z(),{t:n}=ue(),r=()=>t(ku(!e));return a.jsx(Ln,{label:`${n("unifiedCanvas.enableMask")} (H)`,isChecked:e,onChange:r})}function qre(){const e=Z(),{t}=ue(),n=$(r=>r.canvas.shouldPreserveMaskedArea);return a.jsx(Ln,{label:t("unifiedCanvas.betaPreserveMasked"),isChecked:n,onChange:r=>e(f3(r.target.checked))})}function Kre(){return a.jsxs(L,{gap:4,alignItems:"center",children:[a.jsx(AI,{}),a.jsx(Gre,{}),a.jsx(qre,{}),a.jsx(Ure,{})]})}function Qre(){const e=$(r=>r.canvas.shouldDarkenOutsideBoundingBox),t=Z(),{t:n}=ue();return a.jsx(Ln,{label:n("unifiedCanvas.betaDarkenOutside"),isChecked:e,onChange:r=>t(g3(r.target.checked))})}function Yre(){const e=$(r=>r.canvas.shouldShowGrid),t=Z(),{t:n}=ue();return a.jsx(Ln,{label:n("unifiedCanvas.showGrid"),isChecked:e,onChange:r=>t(m3(r.target.checked))})}function Xre(){const e=$(o=>o.canvas.shouldSnapToGrid),t=Z(),{t:n}=ue(),r=o=>t(ou(o.target.checked));return a.jsx(Ln,{label:`${n("unifiedCanvas.snapToGrid")} (N)`,isChecked:e,onChange:r})}function Jre(){return a.jsxs(L,{alignItems:"center",gap:4,children:[a.jsx(Yre,{}),a.jsx(Xre,{}),a.jsx(Qre,{})]})}const Zre=he([en],e=>{const{tool:t,layer:n}=e;return{tool:t,layer:n}},{memoizeOptions:{resultEqualityCheck:Gt}});function eoe(){const{tool:e,layer:t}=$(Zre);return a.jsxs(L,{height:8,minHeight:8,maxHeight:8,alignItems:"center",children:[t=="base"&&["brush","eraser","colorPicker"].includes(e)&&a.jsx(Vre,{}),t=="mask"&&["brush","eraser","colorPicker"].includes(e)&&a.jsx(Kre,{}),e=="move"&&a.jsx(Jre,{})]})}const toe=he([en],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldShowCanvasDebugInfo:r,shouldShowIntermediates:o,shouldAntialias:s}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldShowCanvasDebugInfo:r,shouldShowIntermediates:o,shouldAntialias:s}},{memoizeOptions:{resultEqualityCheck:Gt}}),noe=()=>{const e=Z(),{t}=ue(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldShowCanvasDebugInfo:o,shouldShowIntermediates:s,shouldAntialias:i}=$(toe);return a.jsx(Wi,{isLazy:!1,triggerComponent:a.jsx(je,{tooltip:t("unifiedCanvas.canvasSettings"),tooltipProps:{placement:"bottom"},"aria-label":t("unifiedCanvas.canvasSettings"),icon:a.jsx(x1,{})}),children:a.jsxs(L,{direction:"column",gap:2,children:[a.jsx(Ln,{label:t("unifiedCanvas.showIntermediates"),isChecked:s,onChange:u=>e(h3(u.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:u=>e(v3(u.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:u=>e(y3(u.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:o,onChange:u=>e(x3(u.target.checked))}),a.jsx(Ln,{label:t("unifiedCanvas.antialiasing"),isChecked:i,onChange:u=>e(w3(u.target.checked))}),a.jsx(RI,{})]})})};function roe(){const e=$(Jn),t=ma(),{isClipboardAPIAvailable:n}=G1(),r=$(u=>u.system.isProcessing),o=Z(),{t:s}=ue();Ye(["meta+c","ctrl+c"],()=>{i()},{enabled:()=>!e&&n,preventDefault:!0},[t,r,n]);const i=f.useCallback(()=>{n&&o(P3())},[o,n]);return n?a.jsx(je,{"aria-label":`${s("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${s("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:a.jsx(cc,{}),onClick:i,isDisabled:e}):null}function ooe(){const e=Z(),{t}=ue(),n=ma(),r=$(Jn);Ye(["shift+d"],()=>{o()},{enabled:()=>!r,preventDefault:!0},[n]);const o=()=>{e(I3())};return a.jsx(je,{"aria-label":`${t("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${t("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:a.jsx(v1,{}),onClick:o,isDisabled:r})}function soe(){const e=$(Jn),{getUploadButtonProps:t,getUploadInputProps:n}=Rh({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}}),{t:r}=ue();return a.jsxs(a.Fragment,{children:[a.jsx(je,{"aria-label":r("common.upload"),tooltip:r("common.upload"),icon:a.jsx(Fu,{}),isDisabled:e,...t()}),a.jsx("input",{...n()})]})}const aoe=he([en,Jn],(e,t)=>{const{layer:n,isMaskEnabled:r}=e;return{layer:n,isMaskEnabled:r,isStaging:t}},{memoizeOptions:{resultEqualityCheck:Gt}});function ioe(){const e=Z(),{t}=ue(),{layer:n,isMaskEnabled:r,isStaging:o}=$(aoe),s=()=>{e(Af(n==="mask"?"base":"mask"))};Ye(["q"],()=>{s()},{enabled:()=>!o,preventDefault:!0},[n]);const i=u=>{const d=u;e(Af(d)),d==="mask"&&!r&&e(ku(!0))};return a.jsx(Co,{tooltip:`${t("unifiedCanvas.layer")} (Q)`,"aria-label":`${t("unifiedCanvas.layer")} (Q)`,value:n,data:E3,onChange:i,disabled:o,w:"full"})}function loe(){const e=Z(),{t}=ue(),n=ma(),r=$(Jn),o=$(i=>i.system.isProcessing);Ye(["shift+m"],()=>{s()},{enabled:()=>!r,preventDefault:!0},[n,o]);const s=()=>{e(k3())};return a.jsx(je,{"aria-label":`${t("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${t("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:a.jsx(y_,{}),onClick:s,isDisabled:r})}function coe(){const e=$(s=>s.canvas.tool),t=$(Jn),n=Z(),{t:r}=ue();Ye(["v"],()=>{o()},{enabled:()=>!t,preventDefault:!0},[]);const o=()=>n(Hs("move"));return a.jsx(je,{"aria-label":`${r("unifiedCanvas.move")} (V)`,tooltip:`${r("unifiedCanvas.move")} (V)`,icon:a.jsx(d_,{}),isChecked:e==="move"||t,onClick:o})}function uoe(){const e=$(s=>s.ui.shouldPinParametersPanel),t=$(s=>s.ui.shouldShowParametersPanel),n=Z(),{t:r}=ue(),o=()=>{n(Sv(!0)),e&&n(yo())};return!e||!t?a.jsxs(L,{flexDirection:"column",gap:2,children:[a.jsx(je,{tooltip:`${r("parameters.showOptionsPanel")} (O)`,tooltipProps:{placement:"top"},"aria-label":r("parameters.showOptionsPanel"),onClick:o,children:a.jsx(y1,{})}),a.jsx(L,{children:a.jsx(dy,{iconButton:!0})}),a.jsx(L,{children:a.jsx(Th,{width:"100%",height:"40px",btnGroupWidth:"100%"})})]}):null}function doe(){const e=Z(),{t}=ue(),n=$(Jn),r=()=>{e(vv()),e(Jp())};return a.jsx(je,{"aria-label":t("unifiedCanvas.clearCanvas"),tooltip:t("unifiedCanvas.clearCanvas"),icon:a.jsx(Xo,{}),onClick:r,isDisabled:n,colorScheme:"error"})}function foe(){const e=ma(),t=Z(),{t:n}=ue();Ye(["r"],()=>{o()},{enabled:()=>!0,preventDefault:!0},[e]);const r=OI(()=>o(!1),()=>o(!0)),o=(s=!1)=>{const i=ma();if(!i)return;const u=i.getClientRect({skipTransform:!0});t(_3({contentRect:u,shouldScaleTo1:s}))};return a.jsx(je,{"aria-label":`${n("unifiedCanvas.resetView")} (R)`,tooltip:`${n("unifiedCanvas.resetView")} (R)`,icon:a.jsx(p_,{}),onClick:r})}function poe(){const e=$(Jn),t=ma(),n=$(i=>i.system.isProcessing),r=Z(),{t:o}=ue();Ye(["shift+s"],()=>{s()},{enabled:()=>!e,preventDefault:!0},[t,n]);const s=()=>{r(j3())};return a.jsx(je,{"aria-label":`${o("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${o("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:a.jsx(yh,{}),onClick:s,isDisabled:e})}const hoe=he([en,Jn,xo],(e,t,n)=>{const{isProcessing:r}=n,{tool:o}=e;return{tool:o,isStaging:t,isProcessing:r}},{memoizeOptions:{resultEqualityCheck:Gt}}),moe=()=>{const e=Z(),{t}=ue(),{tool:n,isStaging:r}=$(hoe);Ye(["b"],()=>{o()},{enabled:()=>!r,preventDefault:!0},[]),Ye(["e"],()=>{s()},{enabled:()=>!r,preventDefault:!0},[n]),Ye(["c"],()=>{i()},{enabled:()=>!r,preventDefault:!0},[n]),Ye(["shift+f"],()=>{u()},{enabled:()=>!r,preventDefault:!0}),Ye(["delete","backspace"],()=>{d()},{enabled:()=>!r,preventDefault:!0});const o=()=>e(Hs("brush")),s=()=>e(Hs("eraser")),i=()=>e(Hs("colorPicker")),u=()=>e(S3()),d=()=>e(C3());return a.jsxs(L,{flexDirection:"column",gap:2,children:[a.jsxs(Yn,{children:[a.jsx(je,{"aria-label":`${t("unifiedCanvas.brush")} (B)`,tooltip:`${t("unifiedCanvas.brush")} (B)`,icon:a.jsx(b_,{}),isChecked:n==="brush"&&!r,onClick:o,isDisabled:r}),a.jsx(je,{"aria-label":`${t("unifiedCanvas.eraser")} (E)`,tooltip:`${t("unifiedCanvas.eraser")} (B)`,icon:a.jsx(h_,{}),isChecked:n==="eraser"&&!r,isDisabled:r,onClick:s})]}),a.jsxs(Yn,{children:[a.jsx(je,{"aria-label":`${t("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${t("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:a.jsx(v_,{}),isDisabled:r,onClick:u}),a.jsx(je,{"aria-label":`${t("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${t("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:a.jsx(Hi,{style:{transform:"rotate(45deg)"}}),isDisabled:r,onClick:d})]}),a.jsx(je,{"aria-label":`${t("unifiedCanvas.colorPicker")} (C)`,tooltip:`${t("unifiedCanvas.colorPicker")} (C)`,icon:a.jsx(g_,{}),isChecked:n==="colorPicker"&&!r,isDisabled:r,onClick:i,width:"max-content"})]})},goe=()=>a.jsxs(L,{flexDirection:"column",rowGap:2,width:"min-content",children:[a.jsx(ioe,{}),a.jsx(moe,{}),a.jsxs(L,{gap:2,children:[a.jsx(coe,{}),a.jsx(foe,{})]}),a.jsxs(L,{columnGap:2,children:[a.jsx(loe,{}),a.jsx(poe,{})]}),a.jsxs(L,{columnGap:2,children:[a.jsx(roe,{}),a.jsx(ooe,{})]}),a.jsxs(L,{gap:2,children:[a.jsx(DI,{}),a.jsx(MI,{})]}),a.jsxs(L,{gap:2,children:[a.jsx(soe,{}),a.jsx(doe,{})]}),a.jsx(noe,{}),a.jsx(uoe,{})]}),voe=he([en,Zr],(e,t)=>{const{doesCanvasNeedScaling:n}=e,{shouldUseCanvasBetaLayout:r}=t;return{doesCanvasNeedScaling:n,shouldUseCanvasBetaLayout:r}},Ke),Wg={id:"canvas-intial-image",actionType:"SET_CANVAS_INITIAL_IMAGE"},yoe=()=>{const e=Z(),{doesCanvasNeedScaling:t,shouldUseCanvasBetaLayout:n}=$(voe),{isOver:r,setNodeRef:o,active:s}=uv({id:"unifiedCanvas",data:Wg});return f.useLayoutEffect(()=>{const i=()=>{e(yo())};return window.addEventListener("resize",i),()=>window.removeEventListener("resize",i)},[e]),n?a.jsx($e,{layerStyle:"first",ref:o,tabIndex:0,sx:{w:"full",h:"full",p:4,borderRadius:"base"},children:a.jsxs(L,{sx:{w:"full",h:"full",gap:4},children:[a.jsx(goe,{}),a.jsxs(L,{sx:{flexDir:"column",w:"full",h:"full",gap:4,position:"relative"},children:[a.jsx(eoe,{}),a.jsxs($e,{sx:{w:"full",h:"full",position:"relative"},children:[t?a.jsx(p4,{}):a.jsx(f4,{}),jf(Wg,s)&&a.jsx(Yf,{isOver:r,label:"Set Canvas Initial Image"})]})]})]})}):a.jsx($e,{ref:o,tabIndex:-1,sx:{layerStyle:"first",w:"full",h:"full",p:4,borderRadius:"base"},children:a.jsxs(L,{sx:{flexDirection:"column",alignItems:"center",gap:4,w:"full",h:"full"},children:[a.jsx(Lre,{}),a.jsx(L,{sx:{flexDirection:"column",alignItems:"center",justifyContent:"center",gap:4,w:"full",h:"full"},children:a.jsxs($e,{sx:{w:"full",h:"full",position:"relative"},children:[t?a.jsx(p4,{}):a.jsx(f4,{}),jf(Wg,s)&&a.jsx(Yf,{isOver:r,label:"Set Canvas Initial Image"})]})})]})})},boe=f.memo(yoe),xoe=he([mt],({generation:e})=>{const{infillMethod:t}=e;return{infillMethod:t}},Ke),woe=()=>{const e=Z(),{infillMethod:t}=$(xoe),{data:n,isLoading:r}=KO(),o=n==null?void 0:n.infill_methods,{t:s}=ue(),i=f.useCallback(u=>{e(QO(u))},[e]);return a.jsx(Co,{disabled:(o==null?void 0:o.length)===0,placeholder:r?"Loading...":void 0,label:s("parameters.infillMethod"),value:t,data:o??[],onChange:i})},Soe=f.memo(woe),Coe=he([Zo],e=>{const{tileSize:t,infillMethod:n}=e;return{tileSize:t,infillMethod:n}},Ke),_oe=()=>{const e=Z(),{tileSize:t,infillMethod:n}=$(Coe),{t:r}=ue(),o=f.useCallback(i=>{e(Ox(i))},[e]),s=f.useCallback(()=>{e(Ox(32))},[e]);return a.jsx(Ct,{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})},koe=f.memo(_oe),joe=he([en],e=>{const{boundingBoxScaleMethod:t}=e;return{boundingBoxScale:t}},Ke),Poe=()=>{const e=Z(),{boundingBoxScale:t}=$(joe),{t:n}=ue(),r=o=>{e(XO(o))};return a.jsx(br,{label:n("parameters.scaleBeforeProcessing"),data:YO,value:t,onChange:r})},Ioe=f.memo(Poe),Eoe=he([Zo,xo,en],(e,t,n)=>{const{scaledBoundingBoxDimensions:r,boundingBoxScaleMethod:o}=n;return{scaledBoundingBoxDimensions:r,isManual:o==="manual"}},Ke),Ooe=()=>{const e=Z(),{isManual:t,scaledBoundingBoxDimensions:n}=$(Eoe),{t:r}=ue(),o=i=>{e(Tf({...n,height:Math.floor(i)}))},s=()=>{e(Tf({...n,height:Math.floor(512)}))};return a.jsx(Ct,{isDisabled:!t,label:r("parameters.scaledHeight"),min:64,max:1024,step:64,value:n.height,onChange:o,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:s})},Moe=f.memo(Ooe),Roe=he([en],e=>{const{boundingBoxScaleMethod:t,scaledBoundingBoxDimensions:n}=e;return{scaledBoundingBoxDimensions:n,isManual:t==="manual"}},Ke),Doe=()=>{const e=Z(),{isManual:t,scaledBoundingBoxDimensions:n}=$(Roe),{t:r}=ue(),o=i=>{e(Tf({...n,width:Math.floor(i)}))},s=()=>{e(Tf({...n,width:Math.floor(512)}))};return a.jsx(Ct,{isDisabled:!t,label:r("parameters.scaledWidth"),min:64,max:1024,step:64,value:n.width,onChange:o,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:s})},Aoe=f.memo(Doe),Toe=()=>{const{t:e}=ue();return a.jsx(Ro,{label:e("parameters.infillScalingHeader"),children:a.jsxs(L,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(Soe,{}),a.jsx(koe,{}),a.jsx(Ioe,{}),a.jsx(Aoe,{}),a.jsx(Moe,{})]})})},Noe=f.memo(Toe);function $oe(){const e=Z(),t=$(r=>r.generation.seamBlur),{t:n}=ue();return a.jsx(Ct,{label:n("parameters.seamBlur"),min:0,max:64,sliderNumberInputProps:{max:512},value:t,onChange:r=>{e(Mx(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(Mx(16))}})}function zoe(){const e=Z(),{t}=ue(),n=$(r=>r.generation.seamSize);return a.jsx(Ct,{label:t("parameters.seamSize"),min:1,max:256,sliderNumberInputProps:{max:512},value:n,onChange:r=>{e(Rx(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>e(Rx(96))})}function Loe(){const{t:e}=ue(),t=$(r=>r.generation.seamSteps),n=Z();return a.jsx(Ct,{label:e("parameters.seamSteps"),min:1,max:100,sliderNumberInputProps:{max:999},value:t,onChange:r=>{n(Dx(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{n(Dx(30))}})}function Boe(){const e=Z(),{t}=ue(),n=$(r=>r.generation.seamStrength);return a.jsx(Ct,{label:t("parameters.seamStrength"),min:.01,max:.99,step:.01,value:n,onChange:r=>{e(Ax(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(Ax(.7))}})}const Foe=()=>{const{t:e}=ue();return a.jsxs(Ro,{label:e("parameters.seamCorrectionHeader"),children:[a.jsx(zoe,{}),a.jsx($oe,{}),a.jsx(Boe,{}),a.jsx(Loe,{})]})},Hoe=f.memo(Foe),Woe=he([en,Jn,Zr],(e,t,n)=>{const{boundingBoxDimensions:r}=e,{aspectRatio:o}=n;return{boundingBoxDimensions:r,isStaging:t,aspectRatio:o}},Ke),Voe=()=>{const e=Z(),{boundingBoxDimensions:t,isStaging:n,aspectRatio:r}=$(Woe),{t:o}=ue(),s=u=>{if(e(Bs({...t,height:Math.floor(u)})),r){const d=cs(u*r,64);e(Bs({width:d,height:Math.floor(u)}))}},i=()=>{if(e(Bs({...t,height:Math.floor(512)})),r){const u=cs(512*r,64);e(Bs({width:u,height:Math.floor(512)}))}};return a.jsx(Ct,{label:o("parameters.boundingBoxHeight"),min:64,max:1024,step:64,value:t.height,onChange:s,isDisabled:n,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:i})},Uoe=f.memo(Voe),Goe=he([en,Jn,Zr],(e,t,n)=>{const{boundingBoxDimensions:r}=e,{aspectRatio:o}=n;return{boundingBoxDimensions:r,isStaging:t,aspectRatio:o}},Ke),qoe=()=>{const e=Z(),{boundingBoxDimensions:t,isStaging:n,aspectRatio:r}=$(Goe),{t:o}=ue(),s=u=>{if(e(Bs({...t,width:Math.floor(u)})),r){const d=cs(u/r,64);e(Bs({width:Math.floor(u),height:d}))}},i=()=>{if(e(Bs({...t,width:Math.floor(512)})),r){const u=cs(512/r,64);e(Bs({width:Math.floor(512),height:u}))}};return a.jsx(Ct,{label:o("parameters.boundingBoxWidth"),min:64,max:1024,step:64,value:t.width,onChange:s,isDisabled:n,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:i})},Koe=f.memo(qoe);function h4(){const e=Z(),{t}=ue();return a.jsxs(L,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[a.jsxs(L,{alignItems:"center",gap:2,children:[a.jsx(qe,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:t("parameters.aspectRatio")}),a.jsx(Bi,{}),a.jsx(eI,{}),a.jsx(je,{tooltip:t("ui.swapSizes"),"aria-label":t("ui.swapSizes"),size:"sm",icon:a.jsx(jP,{}),fontSize:20,onClick:()=>e(JO())})]}),a.jsx(Koe,{}),a.jsx(Uoe,{})]})}const Qoe=he(mt,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ke),Yoe=()=>{const{shouldUseSliders:e,activeLabel:t}=$(Qoe);return a.jsx(Ro,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs(L,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(Kl,{}),a.jsx(Yl,{}),a.jsx(ql,{}),a.jsx(Ql,{}),a.jsx($e,{pt:2,children:a.jsx(Xl,{})}),a.jsx(h4,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(L,{gap:3,children:[a.jsx(Kl,{}),a.jsx(Yl,{}),a.jsx(ql,{})]}),a.jsx(Ql,{}),a.jsx($e,{pt:2,children:a.jsx(Xl,{})}),a.jsx(h4,{})]}),a.jsx(tI,{})]})})},Xoe=f.memo(Yoe),Joe=()=>a.jsxs(a.Fragment,{children:[a.jsx(ly,{}),a.jsx(sy,{}),a.jsx(fy,{}),a.jsx(Xoe,{}),a.jsx(ry,{}),a.jsx(ty,{}),a.jsx(ey,{}),a.jsx(uy,{}),a.jsx(cy,{}),a.jsx(Hoe,{}),a.jsx(Noe,{}),a.jsx(ny,{})]}),TI=f.memo(Joe),Zoe=()=>a.jsxs(L,{sx:{gap:4,w:"full",h:"full"},children:[a.jsx(Z1,{children:a.jsx(TI,{})}),a.jsx(boe,{})]}),ese=f.memo(Zoe),tse=[{id:"txt2img",translationKey:"common.txt2img",icon:a.jsx(io,{as:rL,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Nte,{})},{id:"img2img",translationKey:"common.img2img",icon:a.jsx(io,{as:Ti,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(zJ,{})},{id:"unifiedCanvas",translationKey:"common.unifiedCanvas",icon:a.jsx(io,{as:BK,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(ese,{})},{id:"nodes",translationKey:"common.nodes",icon:a.jsx(io,{as:LK,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Ote,{})},{id:"modelManager",translationKey:"modelManager.modelManager",icon:a.jsx(io,{as:Yz,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(TZ,{})}],nse=he([qi,xo],(e,t)=>{const{disabledTabs:n}=e,{isNodesEnabled:r}=t;return tse.filter(s=>s.id==="nodes"?r&&!n.includes(s.id):!n.includes(s.id))},{memoizeOptions:{resultEqualityCheck:Gt}}),rse=350,Vg=20,NI=["modelManager"],ose=()=>{const e=$(FT),t=$(or),n=$(nse),{shouldPinGallery:r,shouldPinParametersPanel:o,shouldShowGallery:s}=$(S=>S.ui),{t:i}=ue(),u=Z();Ye("f",()=>{u(ZO()),(r||o)&&u(yo())},[r,o]);const d=f.useCallback(()=>{t==="unifiedCanvas"&&u(yo())},[u,t]),p=f.useCallback(S=>{S.target instanceof HTMLElement&&S.target.blur()},[]),h=f.useMemo(()=>n.map(S=>a.jsx(Cn,{hasArrow:!0,label:String(i(S.translationKey)),placement:"end",children:a.jsxs(Bl,{onClick:p,children:[a.jsx(N3,{children:String(i(S.translationKey))}),S.icon]})},S.id)),[n,i,p]),g=f.useMemo(()=>n.map(S=>a.jsx(dh,{children:S.content},S.id)),[n]),{ref:v,minSizePct:b}=PQ(rse,Vg,"app");return a.jsxs(Nu,{defaultIndex:e,index:e,onChange:S=>{u(xl(S))},sx:{flexGrow:1,gap:4},isLazy:!0,children:[a.jsxs($u,{sx:{pt:2,gap:4,flexDir:"column"},children:[h,a.jsx(Bi,{}),a.jsx(cQ,{})]}),a.jsxs(X1,{id:"app",autoSaveId:"app",direction:"horizontal",style:{height:"100%",width:"100%"},children:[a.jsx(gu,{id:"main",children:a.jsx(fh,{style:{height:"100%",width:"100%"},children:g})}),r&&s&&!NI.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(HP,{}),a.jsx(gu,{ref:v,onResize:d,id:"gallery",order:3,defaultSize:b>Vg?b:Vg,minSize:b,maxSize:50,children:a.jsx(_P,{})})]})]})]})},sse=f.memo(ose),ase=he([or,Zr],(e,t)=>{const{shouldPinGallery:n,shouldShowGallery:r}=t;return{shouldPinGallery:n,shouldShowGalleryButton:NI.includes(e)?!1:!r}},{memoizeOptions:{resultEqualityCheck:Gt}}),ise=()=>{const{t:e}=ue(),{shouldPinGallery:t,shouldShowGalleryButton:n}=$(ase),r=Z(),o=()=>{r(Xg(!0)),t&&r(yo())};return n?a.jsx(je,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":e("accessibility.showGallery"),onClick:o,sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",p:0,insetInlineEnd:0,px:3,h:48,w:8,borderStartEndRadius:0,borderEndEndRadius:0,shadow:"2xl"},children:a.jsx(FK,{})}):null},lse=f.memo(ise),Ug={borderStartStartRadius:0,borderEndStartRadius:0,shadow:"2xl"},cse=he([Zr,or],(e,t)=>{const{shouldPinParametersPanel:n,shouldUseCanvasBetaLayout:r,shouldShowParametersPanel:o}=e,s=r&&t==="unifiedCanvas",i=!s&&(!n||!o),u=!s&&!o&&["txt2img","img2img","unifiedCanvas"].includes(t);return{shouldPinParametersPanel:n,shouldShowParametersPanelButton:u,shouldShowProcessButtons:i}},{memoizeOptions:{resultEqualityCheck:Gt}}),use=()=>{const e=Z(),{t}=ue(),{shouldShowProcessButtons:n,shouldShowParametersPanelButton:r,shouldPinParametersPanel:o}=$(cse),s=()=>{e(Sv(!0)),o&&e(yo())};return r?a.jsxs(L,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineStart:"4.5rem",direction:"column",gap:2,children:[a.jsx(je,{tooltip:"Show Options Panel (O)",tooltipProps:{placement:"top"},"aria-label":t("accessibility.showOptionsPanel"),onClick:s,sx:Ug,children:a.jsx(y1,{})}),n&&a.jsxs(a.Fragment,{children:[a.jsx(dy,{iconButton:!0,sx:Ug}),a.jsx(Th,{sx:Ug})]})]}):null},dse=f.memo(use),fse=he([Zr,or],(e,t)=>{const{shouldPinParametersPanel:n,shouldShowParametersPanel:r}=e;return{activeTabName:t,shouldPinParametersPanel:n,shouldShowParametersPanel:r}},Ke),pse=()=>{const e=Z(),{shouldPinParametersPanel:t,shouldShowParametersPanel:n,activeTabName:r}=$(fse),o=()=>{e(Sv(!1))},s=f.useMemo(()=>r==="txt2img"?a.jsx(yI,{}):r==="img2img"?a.jsx(nI,{}):r==="unifiedCanvas"?a.jsx(TI,{}):null,[r]);return t?null:a.jsx(R5,{direction:"left",isResizable:!1,isOpen:n,onClose:o,children:a.jsxs(L,{sx:{flexDir:"column",h:"full",w:J1,gap:2,position:"relative",flexShrink:0,overflowY:"auto"},children:[a.jsxs(L,{paddingBottom:4,justifyContent:"space-between",alignItems:"center",children:[a.jsx(PP,{}),a.jsx(FP,{})]}),a.jsx(L,{sx:{gap:2,flexDirection:"column",h:"full",w:"full"},children:s})]})})},hse=f.memo(pse),mse=()=>{const{data:e,isFetching:t}=Xp(),{isOpen:n,onClose:r,handleAddToBoard:o,image:s}=f.useContext(A4),[i,u]=f.useState(),d=f.useRef(null),p=e==null?void 0:e.find(h=>h.board_id===(s==null?void 0:s.board_id));return a.jsx(Du,{isOpen:n,leastDestructiveRef:d,onClose:r,isCentered:!0,children:a.jsx(ya,{children:a.jsxs(Au,{children:[a.jsx(va,{fontSize:"lg",fontWeight:"bold",children:p?"Move Image to Board":"Add Image to Board"}),a.jsx(ba,{children:a.jsx($e,{children:a.jsxs(L,{direction:"column",gap:3,children:[p&&a.jsxs(qe,{children:["Moving this image from"," ",a.jsx("strong",{children:p.board_name})," to"]}),t?a.jsx(oc,{}):a.jsx(br,{placeholder:"Select Board",onChange:h=>u(h),value:i,data:(e??[]).map(h=>({label:h.board_name,value:h.board_id}))})]})})}),a.jsxs(ga,{children:[a.jsx(Xt,{onClick:r,children:"Cancel"}),a.jsx(Xt,{isDisabled:!i,colorScheme:"accent",onClick:()=>{i&&o(i)},ml:3,children:p?"Move":"Add"})]})]})})})},gse=f.memo(mse),vse=he([e=>e.hotkeys,e=>e.ui],(e,t)=>{const{shift:n}=e,{shouldPinParametersPanel:r,shouldPinGallery:o}=t;return{shift:n,shouldPinGallery:o,shouldPinParametersPanel:r}},{memoizeOptions:{resultEqualityCheck:Gt}}),yse=()=>{const e=Z(),{shift:t,shouldPinParametersPanel:n,shouldPinGallery:r}=$(vse),o=$(or);return Ye("*",()=>{P5("shift")?!t&&e(Go(!0)):t&&e(Go(!1))},{keyup:!0,keydown:!0},[t]),Ye("o",()=>{e(eM()),o==="unifiedCanvas"&&n&&e(yo())}),Ye(["shift+o"],()=>{e(tM()),o==="unifiedCanvas"&&e(yo())}),Ye("g",()=>{e(nM()),o==="unifiedCanvas"&&r&&e(yo())}),Ye(["shift+g"],()=>{e(D4()),o==="unifiedCanvas"&&e(yo())}),Ye("1",()=>{e(xl("txt2img"))}),Ye("2",()=>{e(xl("img2img"))}),Ye("3",()=>{e(xl("unifiedCanvas"))}),Ye("4",()=>{e(xl("nodes"))}),null},bse=f.memo(yse),xse={},wse=({config:e=xse,headerComponent:t})=>{const n=$(L4),r=rM(),o=Z();return f.useEffect(()=>{pr.changeLanguage(n)},[n]),f.useEffect(()=>{r.info({namespace:"App",data:e},"Received config"),o(oM(e))},[o,e,r]),f.useEffect(()=>{o(sM())},[o]),a.jsxs(a.Fragment,{children:[a.jsxs(Mi,{w:"100vw",h:"100vh",position:"relative",overflow:"hidden",children:[a.jsx(XN,{children:a.jsxs(Mi,{sx:{gap:4,p:4,gridAutoRows:"min-content auto",w:"full",h:"full"},children:[t||a.jsx(aQ,{}),a.jsx(L,{sx:{gap:4,w:"full",h:"full"},children:a.jsx(sse,{})})]})}),a.jsx(jK,{}),a.jsx(hse,{}),a.jsx(Cf,{children:a.jsx(dse,{})}),a.jsx(Cf,{children:a.jsx(lse,{})})]}),a.jsx(OK,{}),a.jsx(gse,{}),a.jsx(aM,{}),a.jsx(bse,{})]})},Pse=f.memo(wse);export{Pse as default}; diff --git a/invokeai/frontend/web/dist/assets/App-d6f88f50.js b/invokeai/frontend/web/dist/assets/App-d6f88f50.js new file mode 100644 index 0000000000..9e418a7691 --- /dev/null +++ b/invokeai/frontend/web/dist/assets/App-d6f88f50.js @@ -0,0 +1,169 @@ +import{t as dv,r as t7,i as fv,a as Mc,b as g5,S as v5,c as b5,d as y5,e as pv,f as x5,g as hv,h as n7,j as r7,k as o7,l as s7,m as w5,n as a7,o as i7,p as l7,q as S5,s as c7,u as u7,v as d7,w as f7,x as p7,y as h7,z as f,A as i,B as Yh,C as jp,D as m7,E as C5,F as k5,G as g7,P as ld,H as A1,I as v7,J as b7,K as y7,L as x7,M as w7,N as S7,O as C7,Q as E2,R as k7,T as Ae,U as je,V as Ct,W as nt,X as cd,Y as ho,Z as Ir,_ as Fr,$ as qn,a0 as fl,a1 as ia,a2 as Ft,a3 as ns,a4 as ec,a5 as za,a6 as Qh,a7 as T1,a8 as ud,a9 as or,aa as _7,ab as H,ac as _5,ad as O2,ae as P5,af as mv,ag as Dc,ah as P7,ai as j5,aj as I5,ak as Ac,al as j7,am as fe,an as Ge,ao as Jt,ap as z,aq as I7,ar as R2,as as E7,at as O7,au as M2,av as te,aw as R7,ax as On,ay as Mn,az as Ee,aA as F,aB as Ys,aC as Xe,aD as Kn,aE as E5,aF as O5,aG as R5,aH as _i,aI as Ds,aJ as N1,aK as M7,aL as D7,aM as A7,aN as Ml,aO as wu,aP as T7,aQ as N7,aR as $7,aS as z7,aT as L7,aU as D2,aV as ui,aW as $1,aX as Ip,aY as Jh,aZ as M5,a_ as os,a$ as D5,b0 as B7,b1 as Tc,b2 as A5,b3 as T5,b4 as Es,b5 as Po,b6 as Su,b7 as F7,b8 as H7,b9 as W7,ba as V7,bb as z1,bc as Ep,bd as U7,be as G7,bf as jf,bg as If,bh as Mu,bi as Du,bj as A2,bk as Op,bl as T2,bm as Rp,bn as N2,bo as gv,bp as $2,bq as vv,br as z2,bs as Mp,bt as L2,bu as mc,bv as B2,bw as gc,bx as F2,by as Dp,bz as L1,bA as B1,bB as N5,bC as F1,bD as H1,bE as q7,bF as K7,bG as Zh,bH as Kl,bI as X7,bJ as Y7,bK as gp,bL as Q7,bM as J7,bN as Z7,bO as bv,bP as $5,bQ as eR,bR as z5,bS as L5,bT as ss,bU as H2,bV as La,bW as tR,bX as yv,bY as nR,bZ as B5,b_ as W2,b$ as rR,c0 as oR,c1 as sR,c2 as aR,c3 as iR,c4 as lR,c5 as W1,c6 as V1,c7 as cR,c8 as Bn,c9 as V2,ca as F5,cb as uR,cc as dR,cd as fR,ce as pR,cf as hR,cg as mR,ch as gR,ci as vR,cj as bR,ck as H5,cl as yR,cm as xR,cn as wR,co as SR,cp as CR,cq as kR,cr as _R,cs as PR,ct as jR,cu as IR,cv as U2,cw as ER,cx as G2,cy as OR,cz as RR,cA as MR,cB as DR,cC as U1,cD as Io,cE as dd,cF as fd,cG as AR,cH as hr,cI as TR,cJ as q2,cK as K2,cL as na,cM as G1,cN as X2,cO as Y2,cP as em,cQ as NR,cR as $R,cS as zR,cT as LR,cU as Q2,cV as J2,cW as BR,cX as Z2,cY as FR,cZ as W5,c_ as ew,c$ as HR,d0 as WR,d1 as Ss,d2 as VR,d3 as UR,d4 as V5,d5 as U5,d6 as GR,d7 as tw,d8 as qR,d9 as KR,da as G5,db as XR,dc as YR,dd as QR,de as JR,df as ZR,dg as eM,dh as tM,di as tm,dj as nM,dk as q5,dl as nw,dm as Ef,dn as rM,dp as q1,dq as K5,dr as oM,ds as sM,dt as aM,du as ls,dv as iM,dw as lM,dx as cM,dy as uM,dz as dM,dA as fM,dB as pM,dC as hM,dD as mM,dE as gM,dF as vM,dG as bM,dH as yM,dI as xM,dJ as rw,dK as ow,dL as wM,dM as X5,dN as Y5,dO as pd,dP as Q5,dQ as Wu,dR as J5,dS as sw,dT as SM,dU as CM,dV as Z5,dW as kM,dX as _M,dY as PM,dZ as jM,d_ as IM,d$ as K1,e0 as aw,e1 as e_,e2 as EM,e3 as iw,e4 as t_,e5 as As,e6 as OM,e7 as n_,e8 as lw,e9 as RM,ea as MM,eb as DM,ec as AM,ed as TM,ee as NM,ef as $M,eg as zM,eh as LM,ei as BM,ej as FM,ek as HM,el as WM,em as VM,en as UM,eo as GM,ep as qM,eq as KM,er as XM,es as YM,et as cw,eu as vp,ev as QM,ew as Ap,ex as r_,ey as Vu,ez as JM,eA as ZM,eB as ea,eC as o_,eD as X1,eE as hd,eF as eD,eG as tD,eH as nD,eI as Ea,eJ as s_,eK as rD,eL as oD,eM as a_,eN as sD,eO as aD,eP as iD,eQ as lD,eR as cD,eS as uD,eT as dD,eU as fD,eV as pD,eW as hD,eX as uw,eY as mD,eZ as gD,e_ as vD,e$ as bD,f0 as yD,f1 as xD,f2 as wD,f3 as SD,f4 as s0,f5 as Js,f6 as a0,f7 as i0,f8 as Of,f9 as dw,fa as xv,fb as CD,fc as kD,fd as _D,fe as PD,ff as Tp,fg as i_,fh as l_,fi as jD,fj as ID,fk as c_,fl as u_,fm as d_,fn as f_,fo as p_,fp as h_,fq as m_,fr as g_,fs as tc,ft as nc,fu as v_,fv as b_,fw as ED,fx as y_,fy as x_,fz as w_,fA as S_,fB as C_,fC as k_,fD as Y1,fE as OD,fF as fw,fG as RD,fH as MD,fI as Np,fJ as pw,fK as hw,fL as mw,fM as gw,fN as DD,fO as AD,fP as TD,fQ as ND,fR as $D,fS as zD,fT as LD,fU as BD,fV as FD}from"./index-bad7ff83.js";import{u as HD,c as WD,a as Dn,b as rr,I as no,d as Ba,P as Uu,C as VD,e as be,m as nm,f as __,g as Fa,h as UD,r as Ue,i as GD,j as vw,k as Vt,l as Sr}from"./MantineProvider-c592f969.js";function qD(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 bw=1/0,KD=17976931348623157e292;function l0(e){if(!e)return e===0?e:0;if(e=dv(e),e===bw||e===-bw){var t=e<0?-1:1;return t*KD}return e===e?e:0}var XD=function(){return t7.Date.now()};const c0=XD;var YD="Expected a function",QD=Math.max,JD=Math.min;function ZD(e,t,n){var r,o,s,a,c,d,p=0,h=!1,m=!1,v=!0;if(typeof e!="function")throw new TypeError(YD);t=dv(t)||0,fv(n)&&(h=!!n.leading,m="maxWait"in n,s=m?QD(dv(n.maxWait)||0,t):s,v="trailing"in n?!!n.trailing:v);function b(O){var R=r,M=o;return r=o=void 0,p=O,a=e.apply(M,R),a}function w(O){return p=O,c=setTimeout(k,t),h?b(O):a}function y(O){var R=O-d,M=O-p,A=t-R;return m?JD(A,s-M):A}function S(O){var R=O-d,M=O-p;return d===void 0||R>=t||R<0||m&&M>=s}function k(){var O=c0();if(S(O))return _(O);c=setTimeout(k,y(O))}function _(O){return c=void 0,v&&r?b(O):(r=o=void 0,a)}function I(){c!==void 0&&clearTimeout(c),p=0,r=d=o=c=void 0}function P(){return c===void 0?a:_(c0())}function E(){var O=c0(),R=S(O);if(r=arguments,o=this,d=O,R){if(c===void 0)return w(d);if(m)return clearTimeout(c),c=setTimeout(k,t),b(d)}return c===void 0&&(c=setTimeout(k,t)),a}return E.cancel=I,E.flush=P,E}var e9=200;function t9(e,t,n,r){var o=-1,s=b5,a=!0,c=e.length,d=[],p=t.length;if(!c)return d;n&&(t=Mc(t,g5(n))),r?(s=y5,a=!1):t.length>=e9&&(s=pv,a=!1,t=new v5(t));e:for(;++o=120&&h.length>=120)?new v5(a&&h):void 0}h=e[0];var m=-1,v=c[0];e:for(;++m{r.has(s)&&n(o,s)})}const P_=({id:e,x:t,y:n,width:r,height:o,style:s,color:a,strokeColor:c,strokeWidth:d,className:p,borderRadius:h,shapeRendering:m,onClick:v})=>{const{background:b,backgroundColor:w}=s||{},y=a||b||w;return i.jsx("rect",{className:Yh(["react-flow__minimap-node",p]),x:t,y:n,rx:h,ry:h,width:r,height:o,fill:y,stroke:c,strokeWidth:d,shapeRendering:m,onClick:v?S=>v(S,e):void 0})};P_.displayName="MiniMapNode";var w9=f.memo(P_);const S9=e=>e.nodeOrigin,C9=e=>e.getNodes().filter(t=>!t.hidden&&t.width&&t.height),u0=e=>e instanceof Function?e:()=>e;function k9({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o=2,nodeComponent:s=w9,onClick:a}){const c=jp(C9,A1),d=jp(S9),p=u0(t),h=u0(e),m=u0(n),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return i.jsx(i.Fragment,{children:c.map(b=>{const{x:w,y}=m7(b,d).positionAbsolute;return i.jsx(s,{x:w,y,width:b.width,height:b.height,style:b.style,className:m(b),color:p(b),borderRadius:r,strokeColor:h(b),strokeWidth:o,shapeRendering:v,onClick:a,id:b.id},b.id)})})}var _9=f.memo(k9);const P9=200,j9=150,I9=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?y7(x7(t,e.nodeOrigin),n):n,rfId:e.rfId}},E9="react-flow__minimap-desc";function j_({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:a=2,nodeComponent:c,maskColor:d="rgb(240, 240, 240, 0.6)",maskStrokeColor:p="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:v,onNodeClick:b,pannable:w=!1,zoomable:y=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:_=10}){const I=C5(),P=f.useRef(null),{boundingRect:E,viewBB:O,rfId:R}=jp(I9,A1),M=(e==null?void 0:e.width)??P9,A=(e==null?void 0:e.height)??j9,T=E.width/M,$=E.height/A,Q=Math.max(T,$),B=Q*M,V=Q*A,q=5*Q,G=E.x-(B-E.width)/2-q,D=E.y-(V-E.height)/2-q,L=B+q*2,W=V+q*2,Y=`${E9}-${R}`,ae=f.useRef(0);ae.current=Q,f.useEffect(()=>{if(P.current){const X=k5(P.current),K=re=>{const{transform:oe,d3Selection:pe,d3Zoom:ie}=I.getState();if(re.sourceEvent.type!=="wheel"||!pe||!ie)return;const ge=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*_,ke=oe[2]*Math.pow(2,ge);ie.scaleTo(pe,ke)},U=re=>{const{transform:oe,d3Selection:pe,d3Zoom:ie,translateExtent:ge,width:ke,height:xe}=I.getState();if(re.sourceEvent.type!=="mousemove"||!pe||!ie)return;const de=ae.current*Math.max(1,oe[2])*(k?-1:1),Te={x:oe[0]-re.sourceEvent.movementX*de,y:oe[1]-re.sourceEvent.movementY*de},Oe=[[0,0],[ke,xe]],$e=v7.translate(Te.x,Te.y).scale(oe[2]),kt=ie.constrain()($e,Oe,ge);ie.transform(pe,kt)},se=g7().on("zoom",w?U:null).on("zoom.wheel",y?K:null);return X.call(se),()=>{X.on("zoom",null)}}},[w,y,k,_]);const ye=v?X=>{const K=b7(X);v(X,{x:K[0],y:K[1]})}:void 0,ce=b?(X,K)=>{const U=I.getState().nodeInternals.get(K);b(X,U)}:void 0;return i.jsx(ld,{position:m,style:e,className:Yh(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:i.jsxs("svg",{width:M,height:A,viewBox:`${G} ${D} ${L} ${W}`,role:"img","aria-labelledby":Y,ref:P,onClick:ye,children:[S&&i.jsx("title",{id:Y,children:S}),i.jsx(_9,{onClick:ce,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:a,nodeComponent:c}),i.jsx("path",{className:"react-flow__minimap-mask",d:`M${G-q},${D-q}h${L+q*2}v${W+q*2}h${-L-q*2}z + M${O.x},${O.y}h${O.width}v${O.height}h${-O.width}z`,fill:d,fillRule:"evenodd",stroke:p,strokeWidth:h,pointerEvents:"none"})]})})}j_.displayName="MiniMap";var O9=f.memo(j_),Cs;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(Cs||(Cs={}));function R9({color:e,dimensions:t,lineWidth:n}){return i.jsx("path",{stroke:e,strokeWidth:n,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})}function M9({color:e,radius:t}){return i.jsx("circle",{cx:t,cy:t,r:t,fill:e})}const D9={[Cs.Dots]:"#91919a",[Cs.Lines]:"#eee",[Cs.Cross]:"#e2e2e2"},A9={[Cs.Dots]:1,[Cs.Lines]:1,[Cs.Cross]:6},T9=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function I_({id:e,variant:t=Cs.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=2,color:a,style:c,className:d}){const p=f.useRef(null),{transform:h,patternId:m}=jp(T9,A1),v=a||D9[t],b=r||A9[t],w=t===Cs.Dots,y=t===Cs.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*h[2]||1,S[1]*h[2]||1],_=b*h[2],I=y?[_,_]:k,P=w?[_/s,_/s]:[I[0]/s,I[1]/s];return i.jsxs("svg",{className:Yh(["react-flow__background",d]),style:{...c,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:p,"data-testid":"rf__background",children:[i.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(-${P[0]},-${P[1]})`,children:w?i.jsx(M9,{color:v,radius:_/s}):i.jsx(R9,{dimensions:I,color:v,lineWidth:o})}),i.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+e})`})]})}I_.displayName="Background";var N9=f.memo(I_),Au;(function(e){e.Line="line",e.Handle="handle"})(Au||(Au={}));function $9({width:e,prevWidth:t,height:n,prevHeight:r,invertX:o,invertY:s}){const a=e-t,c=n-r,d=[a>0?1:a<0?-1:0,c>0?1:c<0?-1:0];return a&&o&&(d[0]=d[0]*-1),c&&s&&(d[1]=d[1]*-1),d}const E_={width:0,height:0,x:0,y:0},z9={...E_,pointerX:0,pointerY:0,aspectRatio:1};function L9({nodeId:e,position:t,variant:n=Au.Handle,className:r,style:o={},children:s,color:a,minWidth:c=10,minHeight:d=10,maxWidth:p=Number.MAX_VALUE,maxHeight:h=Number.MAX_VALUE,keepAspectRatio:m=!1,shouldResize:v,onResizeStart:b,onResize:w,onResizeEnd:y}){const S=w7(),k=typeof e=="string"?e:S,_=C5(),I=f.useRef(null),P=f.useRef(z9),E=f.useRef(E_),O=S7(),R=n===Au.Line?"right":"bottom-right",M=t??R;f.useEffect(()=>{if(!I.current||!k)return;const Q=k5(I.current),B=M.includes("right")||M.includes("left"),V=M.includes("bottom")||M.includes("top"),q=M.includes("left"),G=M.includes("top"),D=C7().on("start",L=>{const W=_.getState().nodeInternals.get(k),{xSnapped:Y,ySnapped:ae}=O(L);E.current={width:(W==null?void 0:W.width)??0,height:(W==null?void 0:W.height)??0,x:(W==null?void 0:W.position.x)??0,y:(W==null?void 0:W.position.y)??0},P.current={...E.current,pointerX:Y,pointerY:ae,aspectRatio:E.current.width/E.current.height},b==null||b(L,{...E.current})}).on("drag",L=>{const{nodeInternals:W,triggerNodeChanges:Y}=_.getState(),{xSnapped:ae,ySnapped:ye}=O(L),ce=W.get(k);if(ce){const X=[],{pointerX:K,pointerY:U,width:se,height:re,x:oe,y:pe,aspectRatio:ie}=P.current,{x:ge,y:ke,width:xe,height:de}=E.current,Te=Math.floor(B?ae-K:0),Oe=Math.floor(V?ye-U:0);let $e=E2(se+(q?-Te:Te),c,p),kt=E2(re+(G?-Oe:Oe),d,h);if(m){const Me=$e/kt,Pt=B&&V,Tt=B&&!V,we=V&&!B;$e=Me<=ie&&Pt||we?kt*ie:$e,kt=Me>ie&&Pt||Tt?$e/ie:kt,$e>=p?($e=p,kt=p/ie):$e<=c&&($e=c,kt=c/ie),kt>=h?(kt=h,$e=h*ie):kt<=d&&(kt=d,$e=d*ie)}const ct=$e!==xe,on=kt!==de;if(q||G){const Me=q?oe-($e-se):oe,Pt=G?pe-(kt-re):pe,Tt=Me!==ge&&ct,we=Pt!==ke&&on;if(Tt||we){const ht={id:ce.id,type:"position",position:{x:Tt?Me:ge,y:we?Pt:ke}};X.push(ht),E.current.x=ht.position.x,E.current.y=ht.position.y}}if(ct||on){const Me={id:k,type:"dimensions",updateStyle:!0,resizing:!0,dimensions:{width:$e,height:kt}};X.push(Me),E.current.width=$e,E.current.height=kt}if(X.length===0)return;const vt=$9({width:E.current.width,prevWidth:xe,height:E.current.height,prevHeight:de,invertX:q,invertY:G}),bt={...E.current,direction:vt};if((v==null?void 0:v(L,bt))===!1)return;w==null||w(L,bt),Y(X)}}).on("end",L=>{const W={id:k,type:"dimensions",resizing:!1};y==null||y(L,{...E.current}),_.getState().triggerNodeChanges([W])});return Q.call(D),()=>{Q.on(".drag",null)}},[k,M,c,d,p,h,m,O,b,w,y]);const A=M.split("-"),T=n===Au.Line?"borderColor":"backgroundColor",$=a?{...o,[T]:a}:o;return i.jsx("div",{className:Yh(["react-flow__resize-control","nodrag",...A,n,r]),ref:I,style:$,children:s})}var B9=f.memo(L9);const O_=1/60*1e3,F9=typeof performance<"u"?()=>performance.now():()=>Date.now(),R_=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(F9()),O_);function H9(e){let t=[],n=[],r=0,o=!1,s=!1;const a=new WeakSet,c={schedule:(d,p=!1,h=!1)=>{const m=h&&o,v=m?t:n;return p&&a.add(d),v.indexOf(d)===-1&&(v.push(d),m&&o&&(r=t.length)),d},cancel:d=>{const p=n.indexOf(d);p!==-1&&n.splice(p,1),a.delete(d)},process:d=>{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]=H9(()=>Gu=!0),e),{}),V9=md.reduce((e,t)=>{const n=rm[t];return e[t]=(r,o=!1,s=!1)=>(Gu||q9(),n.schedule(r,o,s)),e},{}),U9=md.reduce((e,t)=>(e[t]=rm[t].cancel,e),{});md.reduce((e,t)=>(e[t]=()=>rm[t].process(rc),e),{});const G9=e=>rm[e].process(rc),M_=e=>{Gu=!1,rc.delta=wv?O_:Math.max(Math.min(e-rc.timestamp,W9),1),rc.timestamp=e,Sv=!0,md.forEach(G9),Sv=!1,Gu&&(wv=!1,R_(M_))},q9=()=>{Gu=!0,wv=!0,Sv||R_(M_)},ww=()=>rc;function Q1(e){const t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}function K9(e){const{theme:t}=k7(),n=HD();return f.useMemo(()=>WD(t.direction,{...n,...e}),[e,t.direction,n])}var X9=Object.defineProperty,Y9=(e,t,n)=>t in e?X9(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,vr=(e,t,n)=>(Y9(e,typeof t!="symbol"?t+"":t,n),n);function Sw(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 Q9=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function Cw(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function kw(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var Cv=typeof window<"u"?f.useLayoutEffect:f.useEffect,$p=e=>e,J9=class{constructor(){vr(this,"descendants",new Map),vr(this,"register",e=>{if(e!=null)return Q9(e)?this.registerNode(e):t=>{this.registerNode(t,e)}}),vr(this,"unregister",e=>{this.descendants.delete(e);const t=Sw(Array.from(this.descendants.keys()));this.assignIndex(t)}),vr(this,"destroy",()=>{this.descendants.clear()}),vr(this,"assignIndex",e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})}),vr(this,"count",()=>this.descendants.size),vr(this,"enabledCount",()=>this.enabledValues().length),vr(this,"values",()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index)),vr(this,"enabledValues",()=>this.values().filter(e=>!e.disabled)),vr(this,"item",e=>{if(this.count()!==0)return this.values()[e]}),vr(this,"enabledItem",e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]}),vr(this,"first",()=>this.item(0)),vr(this,"firstEnabled",()=>this.enabledItem(0)),vr(this,"last",()=>this.item(this.descendants.size-1)),vr(this,"lastEnabled",()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)}),vr(this,"indexOf",e=>{var t,n;return e&&(n=(t=this.descendants.get(e))==null?void 0:t.index)!=null?n:-1}),vr(this,"enabledIndexOf",e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e))),vr(this,"next",(e,t=!0)=>{const n=Cw(e,this.count(),t);return this.item(n)}),vr(this,"nextEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Cw(r,this.enabledCount(),t);return this.enabledItem(o)}),vr(this,"prev",(e,t=!0)=>{const n=kw(e,this.count()-1,t);return this.item(n)}),vr(this,"prevEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=kw(r,this.enabledCount()-1,t);return this.enabledItem(o)}),vr(this,"registerNode",(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=Sw(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 Z9(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=>{Z9(n,t)})}}function eA(...e){return f.useMemo(()=>cn(...e),e)}function tA(){const e=f.useRef(new J9);return Cv(()=>()=>e.current.destroy()),e.current}var[nA,D_]=Dn({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function rA(e){const t=D_(),[n,r]=f.useState(-1),o=f.useRef(null);Cv(()=>()=>{o.current&&t.unregister(o.current)},[]),Cv(()=>{if(!o.current)return;const a=Number(o.current.dataset.index);n!=a&&!Number.isNaN(a)&&r(a)});const s=$p(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(o.current),register:cn(s,o)}}function J1(){return[$p(nA),()=>$p(D_()),()=>tA(),o=>rA(o)]}var[oA,om]=Dn({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[sA,Z1]=Dn({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[aA,_de,iA,lA]=J1(),Cu=Ae(function(t,n){const{getButtonProps:r}=Z1(),o=r(t,n),a={display:"flex",alignItems:"center",width:"100%",outline:0,...om().button};return i.jsx(je.button,{...o,className:Ct("chakra-accordion__button",t.className),__css:a})});Cu.displayName="AccordionButton";function Nc(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:o=(v,b)=>v!==b}=e,s=rr(r),a=rr(o),[c,d]=f.useState(n),p=t!==void 0,h=p?t:c,m=rr(v=>{const w=typeof v=="function"?v(h):v;a(h,w)&&(p||d(w),s(w))},[p,s,h,a]);return[h,m]}function cA(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:o,allowToggle:s,...a}=e;fA(e),pA(e);const c=iA(),[d,p]=f.useState(-1);f.useEffect(()=>()=>{p(-1)},[]);const[h,m]=Nc({value:r,defaultValue(){return o?n??[]:n??-1},onChange:t});return{index:h,setIndex:m,htmlProps:a,getAccordionItemProps:b=>{let w=!1;return b!==null&&(w=Array.isArray(h)?h.includes(b):h===b),{isOpen:w,onChange:S=>{if(b!==null)if(o&&Array.isArray(h)){const k=S?h.concat(b):h.filter(_=>_!==b);m(k)}else S?m(b):s&&m(-1)}}},focusedIndex:d,setFocusedIndex:p,descendants:c}}var[uA,eb]=Dn({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function dA(e){const{isDisabled:t,isFocusable:n,id:r,...o}=e,{getAccordionItemProps:s,setFocusedIndex:a}=eb(),c=f.useRef(null),d=f.useId(),p=r??d,h=`accordion-button-${p}`,m=`accordion-panel-${p}`;hA(e);const{register:v,index:b,descendants:w}=lA({disabled:t&&!n}),{isOpen:y,onChange:S}=s(b===-1?null:b);mA({isOpen:y,isDisabled:t});const k=()=>{S==null||S(!0)},_=()=>{S==null||S(!1)},I=f.useCallback(()=>{S==null||S(!y),a(b)},[b,a,y,S]),P=f.useCallback(M=>{const T={ArrowDown:()=>{const $=w.nextEnabled(b);$==null||$.node.focus()},ArrowUp:()=>{const $=w.prevEnabled(b);$==null||$.node.focus()},Home:()=>{const $=w.firstEnabled();$==null||$.node.focus()},End:()=>{const $=w.lastEnabled();$==null||$.node.focus()}}[M.key];T&&(M.preventDefault(),T(M))},[w,b]),E=f.useCallback(()=>{a(b)},[a,b]),O=f.useCallback(function(A={},T=null){return{...A,type:"button",ref:cn(v,c,T),id:h,disabled:!!t,"aria-expanded":!!y,"aria-controls":m,onClick:nt(A.onClick,I),onFocus:nt(A.onFocus,E),onKeyDown:nt(A.onKeyDown,P)}},[h,t,y,I,E,P,m,v]),R=f.useCallback(function(A={},T=null){return{...A,ref:T,role:"region",id:m,"aria-labelledby":h,hidden:!y}},[h,y,m]);return{isOpen:y,isDisabled:t,isFocusable:n,onOpen:k,onClose:_,getButtonProps:O,getPanelProps:R,htmlProps:o}}function fA(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;cd({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function pA(e){cd({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 hA(e){cd({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 mA(e){cd({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function ku(e){const{isOpen:t,isDisabled:n}=Z1(),{reduceMotion:r}=eb(),o=Ct("chakra-accordion__icon",e.className),s=om(),a={opacity:n?.4:1,transform:t?"rotate(-180deg)":void 0,transition:r?void 0:"transform 0.2s",transformOrigin:"center",...s.icon};return i.jsx(no,{viewBox:"0 0 24 24","aria-hidden":!0,className:o,__css:a,...e,children:i.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})})}ku.displayName="AccordionIcon";var _u=Ae(function(t,n){const{children:r,className:o}=t,{htmlProps:s,...a}=dA(t),d={...om().container,overflowAnchor:"none"},p=f.useMemo(()=>a,[a]);return i.jsx(sA,{value:p,children:i.jsx(je.div,{ref:n,...s,className:Ct("chakra-accordion__item",o),__css:d,children:typeof r=="function"?r({isExpanded:!!a.isOpen,isDisabled:!!a.isDisabled}):r})})});_u.displayName="AccordionItem";var qi={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},du={scale:{enter:{scale:1},exit:{scale:.95}},fade:{enter:{opacity:1},exit:{opacity:0}},pushLeft:{enter:{x:"100%"},exit:{x:"-30%"}},pushRight:{enter:{x:"-100%"},exit:{x:"30%"}},pushUp:{enter:{y:"100%"},exit:{y:"-30%"}},pushDown:{enter:{y:"-100%"},exit:{y:"30%"}},slideLeft:{position:{left:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"-100%",y:0}},slideRight:{position:{right:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"100%",y:0}},slideUp:{position:{top:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"-100%"}},slideDown:{position:{bottom:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"100%"}}};function kv(e){var t;switch((t=e==null?void 0:e.direction)!=null?t:"right"){case"right":return du.slideRight;case"left":return du.slideLeft;case"bottom":return du.slideDown;case"top":return du.slideUp;default:return du.slideRight}}var Xi={enter:{duration:.2,ease:qi.easeOut},exit:{duration:.1,ease:qi.easeIn}},ks={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})},gA=e=>e!=null&&parseInt(e.toString(),10)>0,_w={exit:{height:{duration:.2,ease:qi.ease},opacity:{duration:.3,ease:qi.ease}},enter:{height:{duration:.3,ease:qi.ease},opacity:{duration:.4,ease:qi.ease}}},vA={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:gA(t)?1:0},height:t,transitionEnd:r==null?void 0:r.exit,transition:(s=n==null?void 0:n.exit)!=null?s:ks.exit(_w.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:ks.enter(_w.enter,o)}}},sm=f.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:o=!0,startingHeight:s=0,endingHeight:a="auto",style:c,className:d,transition:p,transitionEnd:h,...m}=e,[v,b]=f.useState(!1);f.useEffect(()=>{const _=setTimeout(()=>{b(!0)});return()=>clearTimeout(_)},[]),cd({condition:Number(s)>0&&!!r,message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const w=parseFloat(s.toString())>0,y={startingHeight:s,endingHeight:a,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:w?"block":"none"}}},S=r?n:!0,k=n||r?"enter":"exit";return i.jsx(ho,{initial:!1,custom:y,children:S&&i.jsx(Ir.div,{ref:t,...m,className:Ct("chakra-collapse",d),style:{overflow:"hidden",display:"block",...c},custom:y,variants:vA,initial:r?"exit":!1,animate:k,exit:"exit"})})});sm.displayName="Collapse";var bA={enter:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:1,transition:(r=e==null?void 0:e.enter)!=null?r:ks.enter(Xi.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:ks.exit(Xi.exit,n),transitionEnd:t==null?void 0:t.exit}}},A_={initial:"exit",animate:"enter",exit:"exit",variants:bA},yA=f.forwardRef(function(t,n){const{unmountOnExit:r,in:o,className:s,transition:a,transitionEnd:c,delay:d,...p}=t,h=o||r?"enter":"exit",m=r?o&&r:!0,v={transition:a,transitionEnd:c,delay:d};return i.jsx(ho,{custom:v,children:m&&i.jsx(Ir.div,{ref:n,className:Ct("chakra-fade",s),custom:v,...A_,animate:h,...p})})});yA.displayName="Fade";var xA={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:ks.exit(Xi.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:ks.enter(Xi.enter,n),transitionEnd:e==null?void 0:e.enter}}},T_={initial:"exit",animate:"enter",exit:"exit",variants:xA},wA=f.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,initialScale:a=.95,className:c,transition:d,transitionEnd:p,delay:h,...m}=t,v=r?o&&r:!0,b=o||r?"enter":"exit",w={initialScale:a,reverse:s,transition:d,transitionEnd:p,delay:h};return i.jsx(ho,{custom:w,children:v&&i.jsx(Ir.div,{ref:n,className:Ct("chakra-offset-slide",c),...T_,animate:b,custom:w,...m})})});wA.displayName="ScaleFade";var SA={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:ks.exit(Xi.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:ks.enter(Xi.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({offsetY:e,offsetX:t,transition:n,transitionEnd:r,reverse:o,delay:s})=>{var a;const c={x:t,y:e};return{opacity:0,transition:(a=n==null?void 0:n.exit)!=null?a:ks.exit(Xi.exit,s),...o?{...c,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{...c,...r==null?void 0:r.exit}}}}},_v={initial:"initial",animate:"enter",exit:"exit",variants:SA},CA=f.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,className:a,offsetX:c=0,offsetY:d=8,transition:p,transitionEnd:h,delay:m,...v}=t,b=r?o&&r:!0,w=o||r?"enter":"exit",y={offsetX:c,offsetY:d,reverse:s,transition:p,transitionEnd:h,delay:m};return i.jsx(ho,{custom:y,children:b&&i.jsx(Ir.div,{ref:n,className:Ct("chakra-offset-slide",a),custom:y,..._v,animate:w,...v})})});CA.displayName="SlideFade";var Pw={exit:{duration:.15,ease:qi.easeInOut},enter:{type:"spring",damping:25,stiffness:180}},kA={exit:({direction:e,transition:t,transitionEnd:n,delay:r})=>{var o;const{exit:s}=kv({direction:e});return{...s,transition:(o=t==null?void 0:t.exit)!=null?o:ks.exit(Pw.exit,r),transitionEnd:n==null?void 0:n.exit}},enter:({direction:e,transitionEnd:t,transition:n,delay:r})=>{var o;const{enter:s}=kv({direction:e});return{...s,transition:(o=n==null?void 0:n.enter)!=null?o:ks.enter(Pw.enter,r),transitionEnd:t==null?void 0:t.enter}}},N_=f.forwardRef(function(t,n){const{direction:r="right",style:o,unmountOnExit:s,in:a,className:c,transition:d,transitionEnd:p,delay:h,motionProps:m,...v}=t,b=kv({direction:r}),w=Object.assign({position:"fixed"},b.position,o),y=s?a&&s:!0,S=a||s?"enter":"exit",k={transitionEnd:p,transition:d,direction:r,delay:h};return i.jsx(ho,{custom:k,children:y&&i.jsx(Ir.div,{...v,ref:n,initial:"exit",className:Ct("chakra-slide",c),animate:S,exit:"exit",custom:k,variants:kA,style:w,...m})})});N_.displayName="Slide";var Pu=Ae(function(t,n){const{className:r,motionProps:o,...s}=t,{reduceMotion:a}=eb(),{getPanelProps:c,isOpen:d}=Z1(),p=c(s,n),h=Ct("chakra-accordion__panel",r),m=om();a||delete p.hidden;const v=i.jsx(je.div,{...p,__css:m.panel,className:h});return a?v:i.jsx(sm,{in:d,...o,children:v})});Pu.displayName="AccordionPanel";var $_=Ae(function({children:t,reduceMotion:n,...r},o){const s=Fr("Accordion",r),a=qn(r),{htmlProps:c,descendants:d,...p}=cA(a),h=f.useMemo(()=>({...p,reduceMotion:!!n}),[p,n]);return i.jsx(aA,{value:d,children:i.jsx(uA,{value:h,children:i.jsx(oA,{value:s,children:i.jsx(je.div,{ref:o,...c,className:Ct("chakra-accordion",r.className),__css:s.root,children:t})})})})});$_.displayName="Accordion";function gd(e){return f.Children.toArray(e).filter(t=>f.isValidElement(t))}var[_A,PA]=Dn({strict:!1,name:"ButtonGroupContext"}),jA={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}}},IA={horizontal:e=>({"& > *:not(style) ~ *:not(style)":{marginStart:e}}),vertical:e=>({"& > *:not(style) ~ *:not(style)":{marginTop:e}})},nr=Ae(function(t,n){const{size:r,colorScheme:o,variant:s,className:a,spacing:c="0.5rem",isAttached:d,isDisabled:p,orientation:h="horizontal",...m}=t,v=Ct("chakra-button__group",a),b=f.useMemo(()=>({size:r,colorScheme:o,variant:s,isDisabled:p}),[r,o,s,p]);let w={display:"inline-flex",...d?jA[h]:IA[h](c)};const y=h==="vertical";return i.jsx(_A,{value:b,children:i.jsx(je.div,{ref:n,role:"group",__css:w,className:v,"data-attached":d?"":void 0,"data-orientation":h,flexDir:y?"column":void 0,...m})})});nr.displayName="ButtonGroup";function EA(e){const[t,n]=f.useState(!e);return{ref:f.useCallback(s=>{s&&n(s.tagName==="BUTTON")},[]),type:t?"button":void 0}}function Pv(e){const{children:t,className:n,...r}=e,o=f.isValidElement(t)?f.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,s=Ct("chakra-button__icon",n);return i.jsx(je.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:s,children:o})}Pv.displayName="ButtonIcon";function zp(e){const{label:t,placement:n,spacing:r="0.5rem",children:o=i.jsx(fl,{color:"currentColor",width:"1em",height:"1em"}),className:s,__css:a,...c}=e,d=Ct("chakra-button__spinner",s),p=n==="start"?"marginEnd":"marginStart",h=f.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[p]:t?r:0,fontSize:"1em",lineHeight:"normal",...a}),[a,t,p,r]);return i.jsx(je.div,{className:d,...c,__css:h,children:o})}zp.displayName="ButtonSpinner";var vc=Ae((e,t)=>{const n=PA(),r=ia("Button",{...n,...e}),{isDisabled:o=n==null?void 0:n.isDisabled,isLoading:s,isActive:a,children:c,leftIcon:d,rightIcon:p,loadingText:h,iconSpacing:m="0.5rem",type:v,spinner:b,spinnerPlacement:w="start",className:y,as:S,...k}=qn(e),_=f.useMemo(()=>{const O={...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:O}}},[r,n]),{ref:I,type:P}=EA(S),E={rightIcon:p,leftIcon:d,iconSpacing:m,children:c};return i.jsxs(je.button,{ref:eA(t,I),as:S,type:v??P,"data-active":Ft(a),"data-loading":Ft(s),__css:_,className:Ct("chakra-button",y),...k,disabled:o||s,children:[s&&w==="start"&&i.jsx(zp,{className:"chakra-button__spinner--start",label:h,placement:"start",spacing:m,children:b}),s?h||i.jsx(je.span,{opacity:0,children:i.jsx(jw,{...E})}):i.jsx(jw,{...E}),s&&w==="end"&&i.jsx(zp,{className:"chakra-button__spinner--end",label:h,placement:"end",spacing:m,children:b})]})});vc.displayName="Button";function jw(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:o}=e;return i.jsxs(i.Fragment,{children:[t&&i.jsx(Pv,{marginEnd:o,children:t}),r,n&&i.jsx(Pv,{marginStart:o,children:n})]})}var Ca=Ae((e,t)=>{const{icon:n,children:r,isRound:o,"aria-label":s,...a}=e,c=n||r,d=f.isValidElement(c)?f.cloneElement(c,{"aria-hidden":!0,focusable:!1}):null;return i.jsx(vc,{padding:"0",borderRadius:o?"full":void 0,ref:t,"aria-label":s,...a,children:d})});Ca.displayName="IconButton";var[Pde,OA]=Dn({name:"CheckboxGroupContext",strict:!1});function RA(e){const[t,n]=f.useState(e),[r,o]=f.useState(!1);return e!==t&&(o(!0),n(e)),r}function MA(e){return i.jsx(je.svg,{width:"1.2em",viewBox:"0 0 12 10",style:{fill:"none",strokeWidth:2,stroke:"currentColor",strokeDasharray:16},...e,children:i.jsx("polyline",{points:"1.5 6 4.5 9 10.5 1"})})}function DA(e){return i.jsx(je.svg,{width:"1.2em",viewBox:"0 0 24 24",style:{stroke:"currentColor",strokeWidth:4},...e,children:i.jsx("line",{x1:"21",x2:"3",y1:"12",y2:"12"})})}function AA(e){const{isIndeterminate:t,isChecked:n,...r}=e,o=t?DA:MA;return n||t?i.jsx(je.div,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:i.jsx(o,{...r})}):null}var[TA,z_]=Dn({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[NA,vd]=Dn({strict:!1,name:"FormControlContext"});function $A(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:o,isReadOnly:s,...a}=e,c=f.useId(),d=t||`field-${c}`,p=`${d}-label`,h=`${d}-feedback`,m=`${d}-helptext`,[v,b]=f.useState(!1),[w,y]=f.useState(!1),[S,k]=f.useState(!1),_=f.useCallback((R={},M=null)=>({id:m,...R,ref:cn(M,A=>{A&&y(!0)})}),[m]),I=f.useCallback((R={},M=null)=>({...R,ref:M,"data-focus":Ft(S),"data-disabled":Ft(o),"data-invalid":Ft(r),"data-readonly":Ft(s),id:R.id!==void 0?R.id:p,htmlFor:R.htmlFor!==void 0?R.htmlFor:d}),[d,o,S,r,s,p]),P=f.useCallback((R={},M=null)=>({id:h,...R,ref:cn(M,A=>{A&&b(!0)}),"aria-live":"polite"}),[h]),E=f.useCallback((R={},M=null)=>({...R,...a,ref:M,role:"group"}),[a]),O=f.useCallback((R={},M=null)=>({...R,ref:M,role:"presentation","aria-hidden":!0,children:R.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!s,isDisabled:!!o,isFocused:!!S,onFocus:()=>k(!0),onBlur:()=>k(!1),hasFeedbackText:v,setHasFeedbackText:b,hasHelpText:w,setHasHelpText:y,id:d,labelId:p,feedbackId:h,helpTextId:m,htmlProps:a,getHelpTextProps:_,getErrorMessageProps:P,getRootProps:E,getLabelProps:I,getRequiredIndicatorProps:O}}var mo=Ae(function(t,n){const r=Fr("Form",t),o=qn(t),{getRootProps:s,htmlProps:a,...c}=$A(o),d=Ct("chakra-form-control",t.className);return i.jsx(NA,{value:c,children:i.jsx(TA,{value:r,children:i.jsx(je.div,{...s({},n),className:d,__css:r.container})})})});mo.displayName="FormControl";var zA=Ae(function(t,n){const r=vd(),o=z_(),s=Ct("chakra-form__helper-text",t.className);return i.jsx(je.div,{...r==null?void 0:r.getHelpTextProps(t,n),__css:o.helperText,className:s})});zA.displayName="FormHelperText";var Lo=Ae(function(t,n){var r;const o=ia("FormLabel",t),s=qn(t),{className:a,children:c,requiredIndicator:d=i.jsx(L_,{}),optionalIndicator:p=null,...h}=s,m=vd(),v=(r=m==null?void 0:m.getLabelProps(h,n))!=null?r:{ref:n,...h};return i.jsxs(je.label,{...v,className:Ct("chakra-form__label",s.className),__css:{display:"block",textAlign:"start",...o},children:[c,m!=null&&m.isRequired?d:p]})});Lo.displayName="FormLabel";var L_=Ae(function(t,n){const r=vd(),o=z_();if(!(r!=null&&r.isRequired))return null;const s=Ct("chakra-form__required-indicator",t.className);return i.jsx(je.span,{...r==null?void 0:r.getRequiredIndicatorProps(t,n),__css:o.requiredIndicator,className:s})});L_.displayName="RequiredIndicator";function tb(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:o,...s}=nb(e);return{...s,disabled:t,readOnly:r,required:o,"aria-invalid":ns(n),"aria-required":ns(o),"aria-readonly":ns(r)}}function nb(e){var t,n,r;const o=vd(),{id:s,disabled:a,readOnly:c,required:d,isRequired:p,isInvalid:h,isReadOnly:m,isDisabled:v,onFocus:b,onBlur:w,...y}=e,S=e["aria-describedby"]?[e["aria-describedby"]]:[];return o!=null&&o.hasFeedbackText&&(o!=null&&o.isInvalid)&&S.push(o.feedbackId),o!=null&&o.hasHelpText&&S.push(o.helpTextId),{...y,"aria-describedby":S.join(" ")||void 0,id:s??(o==null?void 0:o.id),isDisabled:(t=a??v)!=null?t:o==null?void 0:o.isDisabled,isReadOnly:(n=c??m)!=null?n:o==null?void 0:o.isReadOnly,isRequired:(r=d??p)!=null?r:o==null?void 0:o.isRequired,isInvalid:h??(o==null?void 0:o.isInvalid),onFocus:nt(o==null?void 0:o.onFocus,b),onBlur:nt(o==null?void 0:o.onBlur,w)}}var rb={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},B_=je("span",{baseStyle:rb});B_.displayName="VisuallyHidden";var LA=je("input",{baseStyle:rb});LA.displayName="VisuallyHiddenInput";const BA=()=>typeof document<"u";let Iw=!1,bd=null,rl=!1,jv=!1;const Iv=new Set;function ob(e,t){Iv.forEach(n=>n(e,t))}const FA=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function HA(e){return!(e.metaKey||!FA&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function Ew(e){rl=!0,HA(e)&&(bd="keyboard",ob("keyboard",e))}function Al(e){if(bd="pointer",e.type==="mousedown"||e.type==="pointerdown"){rl=!0;const t=e.composedPath?e.composedPath()[0]:e.target;let n=!1;try{n=t.matches(":focus-visible")}catch{}if(n)return;ob("pointer",e)}}function WA(e){return e.mozInputSource===0&&e.isTrusted?!0:e.detail===0&&!e.pointerType}function VA(e){WA(e)&&(rl=!0,bd="virtual")}function UA(e){e.target===window||e.target===document||(!rl&&!jv&&(bd="virtual",ob("virtual",e)),rl=!1,jv=!1)}function GA(){rl=!1,jv=!0}function Ow(){return bd!=="pointer"}function qA(){if(!BA()||Iw)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){rl=!0,e.apply(this,n)},document.addEventListener("keydown",Ew,!0),document.addEventListener("keyup",Ew,!0),document.addEventListener("click",VA,!0),window.addEventListener("focus",UA,!0),window.addEventListener("blur",GA,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",Al,!0),document.addEventListener("pointermove",Al,!0),document.addEventListener("pointerup",Al,!0)):(document.addEventListener("mousedown",Al,!0),document.addEventListener("mousemove",Al,!0),document.addEventListener("mouseup",Al,!0)),Iw=!0}function F_(e){qA(),e(Ow());const t=()=>e(Ow());return Iv.add(t),()=>{Iv.delete(t)}}function KA(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function H_(e={}){const t=nb(e),{isDisabled:n,isReadOnly:r,isRequired:o,isInvalid:s,id:a,onBlur:c,onFocus:d,"aria-describedby":p}=t,{defaultChecked:h,isChecked:m,isFocusable:v,onChange:b,isIndeterminate:w,name:y,value:S,tabIndex:k=void 0,"aria-label":_,"aria-labelledby":I,"aria-invalid":P,...E}=e,O=KA(E,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),R=rr(b),M=rr(c),A=rr(d),[T,$]=f.useState(!1),[Q,B]=f.useState(!1),[V,q]=f.useState(!1),[G,D]=f.useState(!1);f.useEffect(()=>F_($),[]);const L=f.useRef(null),[W,Y]=f.useState(!0),[ae,ye]=f.useState(!!h),ce=m!==void 0,X=ce?m:ae,K=f.useCallback(de=>{if(r||n){de.preventDefault();return}ce||ye(X?de.target.checked:w?!0:de.target.checked),R==null||R(de)},[r,n,X,ce,w,R]);ec(()=>{L.current&&(L.current.indeterminate=!!w)},[w]),Ba(()=>{n&&B(!1)},[n,B]),ec(()=>{const de=L.current;if(!(de!=null&&de.form))return;const Te=()=>{ye(!!h)};return de.form.addEventListener("reset",Te),()=>{var Oe;return(Oe=de.form)==null?void 0:Oe.removeEventListener("reset",Te)}},[]);const U=n&&!v,se=f.useCallback(de=>{de.key===" "&&D(!0)},[D]),re=f.useCallback(de=>{de.key===" "&&D(!1)},[D]);ec(()=>{if(!L.current)return;L.current.checked!==X&&ye(L.current.checked)},[L.current]);const oe=f.useCallback((de={},Te=null)=>{const Oe=$e=>{Q&&$e.preventDefault(),D(!0)};return{...de,ref:Te,"data-active":Ft(G),"data-hover":Ft(V),"data-checked":Ft(X),"data-focus":Ft(Q),"data-focus-visible":Ft(Q&&T),"data-indeterminate":Ft(w),"data-disabled":Ft(n),"data-invalid":Ft(s),"data-readonly":Ft(r),"aria-hidden":!0,onMouseDown:nt(de.onMouseDown,Oe),onMouseUp:nt(de.onMouseUp,()=>D(!1)),onMouseEnter:nt(de.onMouseEnter,()=>q(!0)),onMouseLeave:nt(de.onMouseLeave,()=>q(!1))}},[G,X,n,Q,T,V,w,s,r]),pe=f.useCallback((de={},Te=null)=>({...de,ref:Te,"data-active":Ft(G),"data-hover":Ft(V),"data-checked":Ft(X),"data-focus":Ft(Q),"data-focus-visible":Ft(Q&&T),"data-indeterminate":Ft(w),"data-disabled":Ft(n),"data-invalid":Ft(s),"data-readonly":Ft(r)}),[G,X,n,Q,T,V,w,s,r]),ie=f.useCallback((de={},Te=null)=>({...O,...de,ref:cn(Te,Oe=>{Oe&&Y(Oe.tagName==="LABEL")}),onClick:nt(de.onClick,()=>{var Oe;W||((Oe=L.current)==null||Oe.click(),requestAnimationFrame(()=>{var $e;($e=L.current)==null||$e.focus({preventScroll:!0})}))}),"data-disabled":Ft(n),"data-checked":Ft(X),"data-invalid":Ft(s)}),[O,n,X,s,W]),ge=f.useCallback((de={},Te=null)=>({...de,ref:cn(L,Te),type:"checkbox",name:y,value:S,id:a,tabIndex:k,onChange:nt(de.onChange,K),onBlur:nt(de.onBlur,M,()=>B(!1)),onFocus:nt(de.onFocus,A,()=>B(!0)),onKeyDown:nt(de.onKeyDown,se),onKeyUp:nt(de.onKeyUp,re),required:o,checked:X,disabled:U,readOnly:r,"aria-label":_,"aria-labelledby":I,"aria-invalid":P?!!P:s,"aria-describedby":p,"aria-disabled":n,style:rb}),[y,S,a,K,M,A,se,re,o,X,U,r,_,I,P,s,p,n,k]),ke=f.useCallback((de={},Te=null)=>({...de,ref:Te,onMouseDown:nt(de.onMouseDown,XA),"data-disabled":Ft(n),"data-checked":Ft(X),"data-invalid":Ft(s)}),[X,n,s]);return{state:{isInvalid:s,isFocused:Q,isChecked:X,isActive:G,isHovered:V,isIndeterminate:w,isDisabled:n,isReadOnly:r,isRequired:o},getRootProps:ie,getCheckboxProps:oe,getIndicatorProps:pe,getInputProps:ge,getLabelProps:ke,htmlProps:O}}function XA(e){e.preventDefault(),e.stopPropagation()}var YA={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},QA={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},JA=za({from:{opacity:0,strokeDashoffset:16,transform:"scale(0.95)"},to:{opacity:1,strokeDashoffset:0,transform:"scale(1)"}}),ZA=za({from:{opacity:0},to:{opacity:1}}),eT=za({from:{transform:"scaleX(0.65)"},to:{transform:"scaleX(1)"}}),W_=Ae(function(t,n){const r=OA(),o={...r,...t},s=Fr("Checkbox",o),a=qn(t),{spacing:c="0.5rem",className:d,children:p,iconColor:h,iconSize:m,icon:v=i.jsx(AA,{}),isChecked:b,isDisabled:w=r==null?void 0:r.isDisabled,onChange:y,inputProps:S,...k}=a;let _=b;r!=null&&r.value&&a.value&&(_=r.value.includes(a.value));let I=y;r!=null&&r.onChange&&a.value&&(I=Qh(r.onChange,y));const{state:P,getInputProps:E,getCheckboxProps:O,getLabelProps:R,getRootProps:M}=H_({...k,isDisabled:w,isChecked:_,onChange:I}),A=RA(P.isChecked),T=f.useMemo(()=>({animation:A?P.isIndeterminate?`${ZA} 20ms linear, ${eT} 200ms linear`:`${JA} 200ms linear`:void 0,fontSize:m,color:h,...s.icon}),[h,m,A,P.isIndeterminate,s.icon]),$=f.cloneElement(v,{__css:T,isIndeterminate:P.isIndeterminate,isChecked:P.isChecked});return i.jsxs(je.label,{__css:{...QA,...s.container},className:Ct("chakra-checkbox",d),...M(),children:[i.jsx("input",{className:"chakra-checkbox__input",...E(S,n)}),i.jsx(je.span,{__css:{...YA,...s.control},className:"chakra-checkbox__control",...O(),children:$}),p&&i.jsx(je.span,{className:"chakra-checkbox__label",...R(),__css:{marginStart:c,...s.label},children:p})]})});W_.displayName="Checkbox";function tT(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function sb(e,t){let n=tT(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function Ev(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 Lp(e,t,n){return(e-t)*100/(n-t)}function V_(e,t,n){return(n-t)*e+t}function Ov(e,t,n){const r=Math.round((e-t)/n)*n+t,o=Ev(n);return sb(r,o)}function oc(e,t,n){return e==null?e:(n{var T;return r==null?"":(T=d0(r,s,n))!=null?T:""}),v=typeof o<"u",b=v?o:h,w=U_(ni(b),s),y=n??w,S=f.useCallback(T=>{T!==b&&(v||m(T.toString()),p==null||p(T.toString(),ni(T)))},[p,v,b]),k=f.useCallback(T=>{let $=T;return d&&($=oc($,a,c)),sb($,y)},[y,d,c,a]),_=f.useCallback((T=s)=>{let $;b===""?$=ni(T):$=ni(b)+T,$=k($),S($)},[k,s,S,b]),I=f.useCallback((T=s)=>{let $;b===""?$=ni(-T):$=ni(b)-T,$=k($),S($)},[k,s,S,b]),P=f.useCallback(()=>{var T;let $;r==null?$="":$=(T=d0(r,s,n))!=null?T:a,S($)},[r,n,s,S,a]),E=f.useCallback(T=>{var $;const Q=($=d0(T,s,y))!=null?$:a;S(Q)},[y,s,S,a]),O=ni(b);return{isOutOfRange:O>c||O" `}),[oT,q_]=Dn({name:"EditableContext",errorMessage:"useEditableContext: context is undefined. Seems you forgot to wrap the editable components in ``"}),K_={fontSize:"inherit",fontWeight:"inherit",textAlign:"inherit",bg:"transparent"},X_=Ae(function(t,n){const{getInputProps:r}=q_(),o=G_(),s=r(t,n),a=Ct("chakra-editable__input",t.className);return i.jsx(je.input,{...s,__css:{outline:0,...K_,...o.input},className:a})});X_.displayName="EditableInput";var Y_=Ae(function(t,n){const{getPreviewProps:r}=q_(),o=G_(),s=r(t,n),a=Ct("chakra-editable__preview",t.className);return i.jsx(je.span,{...s,__css:{cursor:"text",display:"inline-block",...K_,...o.preview},className:a})});Y_.displayName="EditablePreview";function Yi(e,t,n,r){const o=rr(n);return f.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 sT(e){return"current"in e}var Q_=()=>typeof window<"u";function aT(){var e;const t=navigator.userAgentData;return(e=t==null?void 0:t.platform)!=null?e:navigator.platform}var iT=e=>Q_()&&e.test(navigator.vendor),lT=e=>Q_()&&e.test(aT()),cT=()=>lT(/mac|iphone|ipad|ipod/i),uT=()=>cT()&&iT(/apple/i);function J_(e){const{ref:t,elements:n,enabled:r}=e,o=()=>{var s,a;return(a=(s=t.current)==null?void 0:s.ownerDocument)!=null?a:document};Yi(o,"pointerdown",s=>{if(!uT()||!r)return;const a=s.target,d=(n??[t]).some(p=>{const h=sT(p)?p.current:p;return(h==null?void 0:h.contains(a))||h===a});o().activeElement!==a&&d&&(s.preventDefault(),a.focus())})}function Rw(e,t){return e?e===t||e.contains(t):!1}function dT(e={}){const{onChange:t,onCancel:n,onSubmit:r,onBlur:o,value:s,isDisabled:a,defaultValue:c,startWithEditView:d,isPreviewFocusable:p=!0,submitOnBlur:h=!0,selectAllOnFocus:m=!0,placeholder:v,onEdit:b,finalFocusRef:w,...y}=e,S=rr(b),k=!!(d&&!a),[_,I]=f.useState(k),[P,E]=Nc({defaultValue:c||"",value:s,onChange:t}),[O,R]=f.useState(P),M=f.useRef(null),A=f.useRef(null),T=f.useRef(null),$=f.useRef(null),Q=f.useRef(null);J_({ref:M,enabled:_,elements:[$,Q]});const B=!_&&!a;ec(()=>{var oe,pe;_&&((oe=M.current)==null||oe.focus(),m&&((pe=M.current)==null||pe.select()))},[]),Ba(()=>{var oe,pe,ie,ge;if(!_){w?(oe=w.current)==null||oe.focus():(pe=T.current)==null||pe.focus();return}(ie=M.current)==null||ie.focus(),m&&((ge=M.current)==null||ge.select()),S==null||S()},[_,S,m]);const V=f.useCallback(()=>{B&&I(!0)},[B]),q=f.useCallback(()=>{R(P)},[P]),G=f.useCallback(()=>{I(!1),E(O),n==null||n(O),o==null||o(O)},[n,o,E,O]),D=f.useCallback(()=>{I(!1),R(P),r==null||r(P),o==null||o(O)},[P,r,o,O]);f.useEffect(()=>{if(_)return;const oe=M.current;(oe==null?void 0:oe.ownerDocument.activeElement)===oe&&(oe==null||oe.blur())},[_]);const L=f.useCallback(oe=>{E(oe.currentTarget.value)},[E]),W=f.useCallback(oe=>{const pe=oe.key,ge={Escape:G,Enter:ke=>{!ke.shiftKey&&!ke.metaKey&&D()}}[pe];ge&&(oe.preventDefault(),ge(oe))},[G,D]),Y=f.useCallback(oe=>{const pe=oe.key,ge={Escape:G}[pe];ge&&(oe.preventDefault(),ge(oe))},[G]),ae=P.length===0,ye=f.useCallback(oe=>{var pe;if(!_)return;const ie=oe.currentTarget.ownerDocument,ge=(pe=oe.relatedTarget)!=null?pe:ie.activeElement,ke=Rw($.current,ge),xe=Rw(Q.current,ge);!ke&&!xe&&(h?D():G())},[h,D,G,_]),ce=f.useCallback((oe={},pe=null)=>{const ie=B&&p?0:void 0;return{...oe,ref:cn(pe,A),children:ae?v:P,hidden:_,"aria-disabled":ns(a),tabIndex:ie,onFocus:nt(oe.onFocus,V,q)}},[a,_,B,p,ae,V,q,v,P]),X=f.useCallback((oe={},pe=null)=>({...oe,hidden:!_,placeholder:v,ref:cn(pe,M),disabled:a,"aria-disabled":ns(a),value:P,onBlur:nt(oe.onBlur,ye),onChange:nt(oe.onChange,L),onKeyDown:nt(oe.onKeyDown,W),onFocus:nt(oe.onFocus,q)}),[a,_,ye,L,W,q,v,P]),K=f.useCallback((oe={},pe=null)=>({...oe,hidden:!_,placeholder:v,ref:cn(pe,M),disabled:a,"aria-disabled":ns(a),value:P,onBlur:nt(oe.onBlur,ye),onChange:nt(oe.onChange,L),onKeyDown:nt(oe.onKeyDown,Y),onFocus:nt(oe.onFocus,q)}),[a,_,ye,L,Y,q,v,P]),U=f.useCallback((oe={},pe=null)=>({"aria-label":"Edit",...oe,type:"button",onClick:nt(oe.onClick,V),ref:cn(pe,T),disabled:a}),[V,a]),se=f.useCallback((oe={},pe=null)=>({...oe,"aria-label":"Submit",ref:cn(Q,pe),type:"button",onClick:nt(oe.onClick,D),disabled:a}),[D,a]),re=f.useCallback((oe={},pe=null)=>({"aria-label":"Cancel",id:"cancel",...oe,ref:cn($,pe),type:"button",onClick:nt(oe.onClick,G),disabled:a}),[G,a]);return{isEditing:_,isDisabled:a,isValueEmpty:ae,value:P,onEdit:V,onCancel:G,onSubmit:D,getPreviewProps:ce,getInputProps:X,getTextareaProps:K,getEditButtonProps:U,getSubmitButtonProps:se,getCancelButtonProps:re,htmlProps:y}}var Z_=Ae(function(t,n){const r=Fr("Editable",t),o=qn(t),{htmlProps:s,...a}=dT(o),{isEditing:c,onSubmit:d,onCancel:p,onEdit:h}=a,m=Ct("chakra-editable",t.className),v=T1(t.children,{isEditing:c,onSubmit:d,onCancel:p,onEdit:h});return i.jsx(oT,{value:a,children:i.jsx(rT,{value:r,children:i.jsx(je.div,{ref:n,...s,className:m,children:v})})})});Z_.displayName="Editable";var e3={exports:{}},fT="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",pT=fT,hT=pT;function t3(){}function n3(){}n3.resetWarningCache=t3;var mT=function(){function e(r,o,s,a,c,d){if(d!==hT){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:n3,resetWarningCache:t3};return n.PropTypes=n,n};e3.exports=mT();var gT=e3.exports;const Ln=ud(gT);var Rv="data-focus-lock",r3="data-focus-lock-disabled",vT="data-no-focus-lock",bT="data-autofocus-inside",yT="data-no-autofocus";function xT(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function wT(e,t){var n=f.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 o3(e,t){return wT(t||null,function(n){return e.forEach(function(r){return xT(r,n)})})}var f0={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"},Qs=function(){return Qs=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){a={error:c}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return s}function Mv(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,s;r=0}).sort(TT)},NT=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],cb=NT.join(","),$T="".concat(cb,", [data-focus-guard]"),S3=function(e,t){return la((e.shadowRoot||e).children).reduce(function(n,r){return n.concat(r.matches(t?$T:cb)?[r]:[],S3(r))},[])},zT=function(e,t){var n;return e instanceof HTMLIFrameElement&&(!((n=e.contentDocument)===null||n===void 0)&&n.body)?am([e.contentDocument.body],t):[e]},am=function(e,t){return e.reduce(function(n,r){var o,s=S3(r,t),a=(o=[]).concat.apply(o,s.map(function(c){return zT(c,t)}));return n.concat(a,r.parentNode?la(r.parentNode.querySelectorAll(cb)).filter(function(c){return c===r}):[])},[])},LT=function(e){var t=e.querySelectorAll("[".concat(bT,"]"));return la(t).map(function(n){return am([n])}).reduce(function(n,r){return n.concat(r)},[])},ub=function(e,t){return la(e).filter(function(n){return g3(t,n)}).filter(function(n){return MT(n)})},Dw=function(e,t){return t===void 0&&(t=new Map),la(e).filter(function(n){return v3(t,n)})},Av=function(e,t,n){return w3(ub(am(e,n),t),!0,n)},Aw=function(e,t){return w3(ub(am(e),t),!1)},BT=function(e,t){return ub(LT(e),t)},sc=function(e,t){return e.shadowRoot?sc(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:la(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?sc(o,t):!1}return sc(n,t)})},FT=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(a,c){return!t.has(c)})},C3=function(e){return e.parentNode?C3(e.parentNode):e},db=function(e){var t=Bp(e);return t.filter(Boolean).reduce(function(n,r){var o=r.getAttribute(Rv);return n.push.apply(n,o?FT(la(C3(r).querySelectorAll("[".concat(Rv,'="').concat(o,'"]:not([').concat(r3,'="disabled"])')))):[r]),n},[])},HT=function(e){try{return e()}catch{return}},qu=function(e){if(e===void 0&&(e=document),!(!e||!e.activeElement)){var t=e.activeElement;return t.shadowRoot?qu(t.shadowRoot):t instanceof HTMLIFrameElement&&HT(function(){return t.contentWindow.document})?qu(t.contentWindow.document):t}},WT=function(e,t){return e===t},VT=function(e,t){return!!la(e.querySelectorAll("iframe")).some(function(n){return WT(n,t)})},k3=function(e,t){return t===void 0&&(t=qu(p3(e).ownerDocument)),!t||t.dataset&&t.dataset.focusGuard?!1:db(e).some(function(n){return sc(n,t)||VT(n,t)})},UT=function(e){e===void 0&&(e=document);var t=qu(e);return t?la(e.querySelectorAll("[".concat(vT,"]"))).some(function(n){return sc(n,t)}):!1},GT=function(e,t){return t.filter(x3).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},fb=function(e,t){return x3(e)&&e.name?GT(e,t):e},qT=function(e){var t=new Set;return e.forEach(function(n){return t.add(fb(n,e))}),e.filter(function(n){return t.has(n)})},Tw=function(e){return e[0]&&e.length>1?fb(e[0],e):e[0]},Nw=function(e,t){return e.length>1?e.indexOf(fb(e[t],e)):t},_3="NEW_FOCUS",KT=function(e,t,n,r){var o=e.length,s=e[0],a=e[o-1],c=lb(n);if(!(n&&e.indexOf(n)>=0)){var d=n!==void 0?t.indexOf(n):-1,p=r?t.indexOf(r):d,h=r?e.indexOf(r):-1,m=d-p,v=t.indexOf(s),b=t.indexOf(a),w=qT(t),y=n!==void 0?w.indexOf(n):-1,S=y-(r?w.indexOf(r):d),k=Nw(e,0),_=Nw(e,o-1);if(d===-1||h===-1)return _3;if(!m&&h>=0)return h;if(d<=v&&c&&Math.abs(m)>1)return _;if(d>=b&&c&&Math.abs(m)>1)return k;if(m&&Math.abs(S)>1)return h;if(d<=v)return _;if(d>b)return k;if(m)return Math.abs(m)>1?h:(o+h+m)%o}},XT=function(e){return function(t){var n,r=(n=b3(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},YT=function(e,t,n){var r=e.map(function(s){var a=s.node;return a}),o=Dw(r.filter(XT(n)));return o&&o.length?Tw(o):Tw(Dw(t))},Tv=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&Tv(e.parentNode.host||e.parentNode,t),t},p0=function(e,t){for(var n=Tv(e),r=Tv(t),o=0;o=0)return s}return!1},P3=function(e,t,n){var r=Bp(e),o=Bp(t),s=r[0],a=!1;return o.filter(Boolean).forEach(function(c){a=p0(a||c,c)||a,n.filter(Boolean).forEach(function(d){var p=p0(s,d);p&&(!a||sc(p,a)?a=p:a=p0(p,a))})}),a},QT=function(e,t){return e.reduce(function(n,r){return n.concat(BT(r,t))},[])},JT=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(AT)},ZT=function(e,t){var n=qu(Bp(e).length>0?document:p3(e).ownerDocument),r=db(e).filter(Fp),o=P3(n||e,e,r),s=new Map,a=Aw(r,s),c=Av(r,s).filter(function(b){var w=b.node;return Fp(w)});if(!(!c[0]&&(c=a,!c[0]))){var d=Aw([o],s).map(function(b){var w=b.node;return w}),p=JT(d,c),h=p.map(function(b){var w=b.node;return w}),m=KT(h,d,n,t);if(m===_3){var v=YT(a,h,QT(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]}},eN=function(e){var t=db(e).filter(Fp),n=P3(e,e,t),r=new Map,o=Av([n],r,!0),s=Av(t,r).filter(function(a){var c=a.node;return Fp(c)}).map(function(a){var c=a.node;return c});return o.map(function(a){var c=a.node,d=a.index;return{node:c,index:d,lockItem:s.indexOf(c)>=0,guard:lb(c)}})},tN=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},h0=0,m0=!1,j3=function(e,t,n){n===void 0&&(n={});var r=ZT(e,t);if(!m0&&r){if(h0>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),m0=!0,setTimeout(function(){m0=!1},1);return}h0++,tN(r.node,n.focusOptions),h0--}};function pb(e){setTimeout(e,1)}var nN=function(){return document&&document.activeElement===document.body},rN=function(){return nN()||UT()},ac=null,Xl=null,ic=null,Ku=!1,oN=function(){return!0},sN=function(t){return(ac.whiteList||oN)(t)},aN=function(t,n){ic={observerNode:t,portaledElement:n}},iN=function(t){return ic&&ic.portaledElement===t};function $w(e,t,n,r){var o=null,s=e;do{var a=r[s];if(a.guard)a.node.dataset.focusAutoGuard&&(o=a);else if(a.lockItem){if(s!==e)return;o=null}else break}while((s+=n)!==t);o&&(o.node.tabIndex=0)}var lN=function(t){return t&&"current"in t?t.current:t},cN=function(t){return t?!!Ku:Ku==="meanwhile"},uN=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},dN=function(t,n){return n.some(function(r){return uN(t,r,r)})},Hp=function(){var t=!1;if(ac){var n=ac,r=n.observed,o=n.persistentFocus,s=n.autoFocus,a=n.shards,c=n.crossFrame,d=n.focusOptions,p=r||ic&&ic.portaledElement,h=document&&document.activeElement;if(p){var m=[p].concat(a.map(lN).filter(Boolean));if((!h||sN(h))&&(o||cN(c)||!rN()||!Xl&&s)&&(p&&!(k3(m)||h&&dN(h,m)||iN(h))&&(document&&!Xl&&h&&!s?(h.blur&&h.blur(),document.body.focus()):(t=j3(m,Xl,{focusOptions:d}),ic={})),Ku=!1,Xl=document&&document.activeElement),document){var v=document&&document.activeElement,b=eN(m),w=b.map(function(y){var S=y.node;return S}).indexOf(v);w>-1&&(b.filter(function(y){var S=y.guard,k=y.node;return S&&k.dataset.focusAutoGuard}).forEach(function(y){var S=y.node;return S.removeAttribute("tabIndex")}),$w(w,b.length,1,b),$w(w,-1,-1,b))}}}return t},I3=function(t){Hp()&&t&&(t.stopPropagation(),t.preventDefault())},hb=function(){return pb(Hp)},fN=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||aN(r,n)},pN=function(){return null},E3=function(){Ku="just",pb(function(){Ku="meanwhile"})},hN=function(){document.addEventListener("focusin",I3),document.addEventListener("focusout",hb),window.addEventListener("blur",E3)},mN=function(){document.removeEventListener("focusin",I3),document.removeEventListener("focusout",hb),window.removeEventListener("blur",E3)};function gN(e){return e.filter(function(t){var n=t.disabled;return!n})}function vN(e){var t=e.slice(-1)[0];t&&!ac&&hN();var n=ac,r=n&&t&&t.id===n.id;ac=t,n&&!r&&(n.onDeactivation(),e.filter(function(o){var s=o.id;return s===n.id}).length||n.returnFocus(!t)),t?(Xl=null,(!r||n.observed!==t.observed)&&t.onActivation(),Hp(),pb(Hp)):(mN(),Xl=null)}u3.assignSyncMedium(fN);d3.assignMedium(hb);CT.assignMedium(function(e){return e({moveFocusInside:j3,focusInside:k3})});const bN=jT(gN,vN)(pN);var O3=f.forwardRef(function(t,n){return f.createElement(f3,or({sideCar:bN,ref:n},t))}),R3=f3.propTypes||{};R3.sideCar;qD(R3,["sideCar"]);O3.propTypes={};const zw=O3;function M3(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function mb(e){var t;if(!M3(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function yN(e){var t,n;return(n=(t=D3(e))==null?void 0:t.defaultView)!=null?n:window}function D3(e){return M3(e)?e.ownerDocument:document}function xN(e){return D3(e).activeElement}function wN(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 SN(e){return e.localName==="html"?e:e.assignedSlot||e.parentElement||e.ownerDocument.documentElement}function A3(e){return["html","body","#document"].includes(e.localName)?e.ownerDocument.body:mb(e)&&wN(e)?e:A3(SN(e))}var T3=e=>e.hasAttribute("tabindex"),CN=e=>T3(e)&&e.tabIndex===-1;function kN(e){return!!e.getAttribute("disabled")||!!e.getAttribute("aria-disabled")}function N3(e){return e.parentElement&&N3(e.parentElement)?!0:e.hidden}function _N(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function $3(e){if(!mb(e)||N3(e)||kN(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]():_N(e)?!0:T3(e)}function PN(e){return e?mb(e)&&$3(e)&&!CN(e):!1}var jN=["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]"],IN=jN.join(),EN=e=>e.offsetWidth>0&&e.offsetHeight>0;function z3(e){const t=Array.from(e.querySelectorAll(IN));return t.unshift(e),t.filter(n=>$3(n)&&EN(n))}var Lw,ON=(Lw=zw.default)!=null?Lw:zw,L3=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:o,children:s,isDisabled:a,autoFocus:c,persistentFocus:d,lockFocusAcrossFrames:p}=e,h=f.useCallback(()=>{t!=null&&t.current?t.current.focus():r!=null&&r.current&&z3(r.current).length===0&&requestAnimationFrame(()=>{var w;(w=r.current)==null||w.focus()})},[t,r]),m=f.useCallback(()=>{var b;(b=n==null?void 0:n.current)==null||b.focus()},[n]),v=o&&!n;return i.jsx(ON,{crossFrame:p,persistentFocus:d,autoFocus:c,disabled:a,onActivation:h,onDeactivation:m,returnFocus:v,children:s})};L3.displayName="FocusLock";function RN(e,t,n,r){const o=_5(t);return f.useEffect(()=>{var s;const a=(s=O2(n))!=null?s:document;if(t)return a.addEventListener(e,o,r),()=>{a.removeEventListener(e,o,r)}},[e,n,r,o,t]),()=>{var s;((s=O2(n))!=null?s:document).removeEventListener(e,o,r)}}function MN(e){const{ref:t,handler:n,enabled:r=!0}=e,o=_5(n),a=f.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;f.useEffect(()=>{if(!r)return;const c=m=>{g0(m,t)&&(a.isPointerDown=!0)},d=m=>{if(a.ignoreEmulatedMouseEvents){a.ignoreEmulatedMouseEvents=!1;return}a.isPointerDown&&n&&g0(m,t)&&(a.isPointerDown=!1,o(m))},p=m=>{a.ignoreEmulatedMouseEvents=!0,n&&a.isPointerDown&&g0(m,t)&&(a.isPointerDown=!1,o(m))},h=P5(t.current);return h.addEventListener("mousedown",c,!0),h.addEventListener("mouseup",d,!0),h.addEventListener("touchstart",c,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",c,!0),h.removeEventListener("mouseup",d,!0),h.removeEventListener("touchstart",c,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,a,r])}function g0(e,t){var n;const r=e.target;return r&&!P5(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}var[DN,AN]=Dn({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),B3=Ae(function(t,n){const r=Fr("Input",t),{children:o,className:s,...a}=qn(t),c=Ct("chakra-input__group",s),d={},p=gd(o),h=r.field;p.forEach(v=>{var b,w;r&&(h&&v.type.id==="InputLeftElement"&&(d.paddingStart=(b=h.height)!=null?b:h.h),h&&v.type.id==="InputRightElement"&&(d.paddingEnd=(w=h.height)!=null?w:h.h),v.type.id==="InputRightAddon"&&(d.borderEndRadius=0),v.type.id==="InputLeftAddon"&&(d.borderStartRadius=0))});const m=p.map(v=>{var b,w;const y=Q1({size:((b=v.props)==null?void 0:b.size)||t.size,variant:((w=v.props)==null?void 0:w.variant)||t.variant});return v.type.id!=="Input"?f.cloneElement(v,y):f.cloneElement(v,Object.assign(y,d,v.props))});return i.jsx(je.div,{className:c,ref:n,__css:{width:"100%",display:"flex",position:"relative",isolation:"isolate",...r.group},"data-group":!0,...a,children:i.jsx(DN,{value:r,children:m})})});B3.displayName="InputGroup";var TN=je("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),im=Ae(function(t,n){var r,o;const{placement:s="left",...a}=t,c=AN(),d=c.field,h={[s==="left"?"insetStart":"insetEnd"]:"0",width:(r=d==null?void 0:d.height)!=null?r:d==null?void 0:d.h,height:(o=d==null?void 0:d.height)!=null?o:d==null?void 0:d.h,fontSize:d==null?void 0:d.fontSize,...c.element};return i.jsx(TN,{ref:n,__css:h,...a})});im.id="InputElement";im.displayName="InputElement";var F3=Ae(function(t,n){const{className:r,...o}=t,s=Ct("chakra-input__left-element",r);return i.jsx(im,{ref:n,placement:"left",className:s,...o})});F3.id="InputLeftElement";F3.displayName="InputLeftElement";var gb=Ae(function(t,n){const{className:r,...o}=t,s=Ct("chakra-input__right-element",r);return i.jsx(im,{ref:n,placement:"right",className:s,...o})});gb.id="InputRightElement";gb.displayName="InputRightElement";var yd=Ae(function(t,n){const{htmlSize:r,...o}=t,s=Fr("Input",o),a=qn(o),c=tb(a),d=Ct("chakra-input",t.className);return i.jsx(je.input,{size:r,...c,__css:s.field,ref:n,className:d})});yd.displayName="Input";yd.id="Input";var vb=Ae(function(t,n){const r=ia("Link",t),{className:o,isExternal:s,...a}=qn(t);return i.jsx(je.a,{target:s?"_blank":void 0,rel:s?"noopener":void 0,ref:n,className:Ct("chakra-link",o),...a,__css:r})});vb.displayName="Link";var[NN,H3]=Dn({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),bb=Ae(function(t,n){const r=Fr("List",t),{children:o,styleType:s="none",stylePosition:a,spacing:c,...d}=qn(t),p=gd(o),m=c?{["& > *:not(style) ~ *:not(style)"]:{mt:c}}:{};return i.jsx(NN,{value:r,children:i.jsx(je.ul,{ref:n,listStyleType:s,listStylePosition:a,role:"list",__css:{...r.container,...m},...d,children:p})})});bb.displayName="List";var $N=Ae((e,t)=>{const{as:n,...r}=e;return i.jsx(bb,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});$N.displayName="OrderedList";var yb=Ae(function(t,n){const{as:r,...o}=t;return i.jsx(bb,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...o})});yb.displayName="UnorderedList";var wa=Ae(function(t,n){const r=H3();return i.jsx(je.li,{ref:n,...t,__css:r.item})});wa.displayName="ListItem";var zN=Ae(function(t,n){const r=H3();return i.jsx(no,{ref:n,role:"presentation",...t,__css:r.icon})});zN.displayName="ListIcon";var ol=Ae(function(t,n){const{templateAreas:r,gap:o,rowGap:s,columnGap:a,column:c,row:d,autoFlow:p,autoRows:h,templateRows:m,autoColumns:v,templateColumns:b,...w}=t,y={display:"grid",gridTemplateAreas:r,gridGap:o,gridRowGap:s,gridColumnGap:a,gridAutoColumns:v,gridColumn:c,gridRow:d,gridAutoFlow:p,gridAutoRows:h,gridTemplateRows:m,gridTemplateColumns:b};return i.jsx(je.div,{ref:n,__css:y,...w})});ol.displayName="Grid";function W3(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):mv(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var pl=je("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});pl.displayName="Spacer";var Ye=Ae(function(t,n){const r=ia("Text",t),{className:o,align:s,decoration:a,casing:c,...d}=qn(t),p=Q1({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return i.jsx(je.p,{ref:n,className:Ct("chakra-text",t.className),...p,...d,__css:r})});Ye.displayName="Text";var V3=e=>i.jsx(je.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});V3.displayName="StackItem";function LN(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{"&":W3(n,o=>r[o])}}var xb=Ae((e,t)=>{const{isInline:n,direction:r,align:o,justify:s,spacing:a="0.5rem",wrap:c,children:d,divider:p,className:h,shouldWrapChildren:m,...v}=e,b=n?"row":r??"column",w=f.useMemo(()=>LN({spacing:a,direction:b}),[a,b]),y=!!p,S=!m&&!y,k=f.useMemo(()=>{const I=gd(d);return S?I:I.map((P,E)=>{const O=typeof P.key<"u"?P.key:E,R=E+1===I.length,A=m?i.jsx(V3,{children:P},O):P;if(!y)return A;const T=f.cloneElement(p,{__css:w}),$=R?null:T;return i.jsxs(f.Fragment,{children:[A,$]},O)})},[p,w,y,S,m,d]),_=Ct("chakra-stack",h);return i.jsx(je.div,{ref:t,display:"flex",alignItems:o,justifyContent:s,flexDirection:b,flexWrap:c,gap:y?void 0:a,className:_,...v,children:k})});xb.displayName="Stack";var U3=Ae((e,t)=>i.jsx(xb,{align:"center",...e,direction:"column",ref:t}));U3.displayName="VStack";var di=Ae((e,t)=>i.jsx(xb,{align:"center",...e,direction:"row",ref:t}));di.displayName="HStack";function Bw(e){return W3(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var Nv=Ae(function(t,n){const{area:r,colSpan:o,colStart:s,colEnd:a,rowEnd:c,rowSpan:d,rowStart:p,...h}=t,m=Q1({gridArea:r,gridColumn:Bw(o),gridRow:Bw(d),gridColumnStart:s,gridColumnEnd:a,gridRowStart:p,gridRowEnd:c});return i.jsx(je.div,{ref:n,__css:m,...h})});Nv.displayName="GridItem";var hl=Ae(function(t,n){const r=ia("Badge",t),{className:o,...s}=qn(t);return i.jsx(je.span,{ref:n,className:Ct("chakra-badge",t.className),...s,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});hl.displayName="Badge";var Pi=Ae(function(t,n){const{borderLeftWidth:r,borderBottomWidth:o,borderTopWidth:s,borderRightWidth:a,borderWidth:c,borderStyle:d,borderColor:p,...h}=ia("Divider",t),{className:m,orientation:v="horizontal",__css:b,...w}=qn(t),y={vertical:{borderLeftWidth:r||a||c||"1px",height:"100%"},horizontal:{borderBottomWidth:o||s||c||"1px",width:"100%"}};return i.jsx(je.hr,{ref:n,"aria-orientation":v,...w,__css:{...h,border:"0",borderColor:p,borderStyle:d,...y[v],...b},className:Ct("chakra-divider",m)})});Pi.displayName="Divider";function BN(e){const{key:t}=e;return t.length===1||t.length>1&&/[^a-zA-Z0-9]/.test(t)}function FN(e={}){const{timeout:t=300,preventDefault:n=()=>!0}=e,[r,o]=f.useState([]),s=f.useRef(),a=()=>{s.current&&(clearTimeout(s.current),s.current=null)},c=()=>{a(),s.current=setTimeout(()=>{o([]),s.current=null},t)};f.useEffect(()=>a,[]);function d(p){return h=>{if(h.key==="Backspace"){const m=[...r];m.pop(),o(m);return}if(BN(h)){const m=r.concat(h.key);n(h)&&(h.preventDefault(),h.stopPropagation()),o(m),p(m.join("")),c()}}}return d}function HN(e,t,n,r){if(t==null)return r;if(!r)return e.find(a=>n(a).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 WN(){const e=f.useRef(new Map),t=e.current,n=f.useCallback((o,s,a,c)=>{e.current.set(a,{type:s,el:o,options:c}),o.addEventListener(s,a,c)},[]),r=f.useCallback((o,s,a,c)=>{o.removeEventListener(s,a,c),e.current.delete(a)},[]);return f.useEffect(()=>()=>{t.forEach((o,s)=>{r(o.el,o.type,s,o.options)})},[r,t]),{add:n,remove:r}}function v0(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function G3(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:o=!0,clickOnSpace:s=!0,onMouseDown:a,onMouseUp:c,onClick:d,onKeyDown:p,onKeyUp:h,tabIndex:m,onMouseOver:v,onMouseLeave:b,...w}=e,[y,S]=f.useState(!0),[k,_]=f.useState(!1),I=WN(),P=D=>{D&&D.tagName!=="BUTTON"&&S(!1)},E=y?m:m||0,O=n&&!r,R=f.useCallback(D=>{if(n){D.stopPropagation(),D.preventDefault();return}D.currentTarget.focus(),d==null||d(D)},[n,d]),M=f.useCallback(D=>{k&&v0(D)&&(D.preventDefault(),D.stopPropagation(),_(!1),I.remove(document,"keyup",M,!1))},[k,I]),A=f.useCallback(D=>{if(p==null||p(D),n||D.defaultPrevented||D.metaKey||!v0(D.nativeEvent)||y)return;const L=o&&D.key==="Enter";s&&D.key===" "&&(D.preventDefault(),_(!0)),L&&(D.preventDefault(),D.currentTarget.click()),I.add(document,"keyup",M,!1)},[n,y,p,o,s,I,M]),T=f.useCallback(D=>{if(h==null||h(D),n||D.defaultPrevented||D.metaKey||!v0(D.nativeEvent)||y)return;s&&D.key===" "&&(D.preventDefault(),_(!1),D.currentTarget.click())},[s,y,n,h]),$=f.useCallback(D=>{D.button===0&&(_(!1),I.remove(document,"mouseup",$,!1))},[I]),Q=f.useCallback(D=>{if(D.button!==0)return;if(n){D.stopPropagation(),D.preventDefault();return}y||_(!0),D.currentTarget.focus({preventScroll:!0}),I.add(document,"mouseup",$,!1),a==null||a(D)},[n,y,a,I,$]),B=f.useCallback(D=>{D.button===0&&(y||_(!1),c==null||c(D))},[c,y]),V=f.useCallback(D=>{if(n){D.preventDefault();return}v==null||v(D)},[n,v]),q=f.useCallback(D=>{k&&(D.preventDefault(),_(!1)),b==null||b(D)},[k,b]),G=cn(t,P);return y?{...w,ref:G,type:"button","aria-disabled":O?void 0:n,disabled:O,onClick:R,onMouseDown:a,onMouseUp:c,onKeyUp:h,onKeyDown:p,onMouseOver:v,onMouseLeave:b}:{...w,ref:G,role:"button","data-active":Ft(k),"aria-disabled":n?"true":void 0,tabIndex:O?void 0:E,onClick:R,onMouseDown:Q,onMouseUp:B,onKeyUp:T,onKeyDown:A,onMouseOver:V,onMouseLeave:q}}function VN(e){const t=e.current;if(!t)return!1;const n=xN(t);return!n||t.contains(n)?!1:!!PN(n)}function q3(e,t){const{shouldFocus:n,visible:r,focusRef:o}=t,s=n&&!r;Ba(()=>{if(!s||VN(e))return;const a=(o==null?void 0:o.current)||e.current;let c;if(a)return c=requestAnimationFrame(()=>{a.focus({preventScroll:!0})}),()=>{cancelAnimationFrame(c)}},[s,e,o])}var UN={preventScroll:!0,shouldFocus:!1};function GN(e,t=UN){const{focusRef:n,preventScroll:r,shouldFocus:o,visible:s}=t,a=qN(e)?e.current:e,c=o&&s,d=f.useRef(c),p=f.useRef(s);ec(()=>{!p.current&&s&&(d.current=c),p.current=s},[s,c]);const h=f.useCallback(()=>{if(!(!s||!a||!d.current)&&(d.current=!1,!a.contains(document.activeElement)))if(n!=null&&n.current)requestAnimationFrame(()=>{var m;(m=n.current)==null||m.focus({preventScroll:r})});else{const m=z3(a);m.length>0&&requestAnimationFrame(()=>{m[0].focus({preventScroll:r})})}},[s,r,a,n]);Ba(()=>{h()},[h]),Yi(a,"transitionend",h)}function qN(e){return"current"in e}var Tl=(e,t)=>({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),jr={arrowShadowColor:Tl("--popper-arrow-shadow-color"),arrowSize:Tl("--popper-arrow-size","8px"),arrowSizeHalf:Tl("--popper-arrow-size-half"),arrowBg:Tl("--popper-arrow-bg"),transformOrigin:Tl("--popper-transform-origin"),arrowOffset:Tl("--popper-arrow-offset")};function KN(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 XN={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"},YN=e=>XN[e],Fw={scroll:!0,resize:!0};function QN(e){let t;return typeof e=="object"?t={enabled:!0,options:{...Fw,...e}}:t={enabled:e,options:Fw},t}var JN={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`}},ZN={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{Hw(e)},effect:({state:e})=>()=>{Hw(e)}},Hw=e=>{e.elements.popper.style.setProperty(jr.transformOrigin.var,YN(e.placement))},e$={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{t$(e)}},t$=e=>{var t;if(!e.placement)return;const n=n$(e.placement);if((t=e.elements)!=null&&t.arrow&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:jr.arrowSize.varRef,height:jr.arrowSize.varRef,zIndex:-1});const r={[jr.arrowSizeHalf.var]:`calc(${jr.arrowSize.varRef} / 2 - 1px)`,[jr.arrowOffset.var]:`calc(${jr.arrowSizeHalf.varRef} * -1)`};for(const o in r)e.elements.arrow.style.setProperty(o,r[o])}},n$=e=>{if(e.startsWith("top"))return{property:"bottom",value:jr.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:jr.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:jr.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:jr.arrowOffset.varRef}},r$={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{Ww(e)},effect:({state:e})=>()=>{Ww(e)}},Ww=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");if(!t)return;const n=KN(e.placement);n&&t.style.setProperty("--popper-arrow-default-shadow",n),Object.assign(t.style,{transform:"rotate(45deg)",background:jr.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:"var(--popper-arrow-shadow, var(--popper-arrow-default-shadow))"})},o$={"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"}},s$={"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 a$(e,t="ltr"){var n,r;const o=((n=o$[e])==null?void 0:n[t])||e;return t==="ltr"?o:(r=s$[e])!=null?r:o}var ko="top",as="bottom",is="right",_o="left",wb="auto",xd=[ko,as,is,_o],bc="start",Xu="end",i$="clippingParents",K3="viewport",fu="popper",l$="reference",Vw=xd.reduce(function(e,t){return e.concat([t+"-"+bc,t+"-"+Xu])},[]),X3=[].concat(xd,[wb]).reduce(function(e,t){return e.concat([t,t+"-"+bc,t+"-"+Xu])},[]),c$="beforeRead",u$="read",d$="afterRead",f$="beforeMain",p$="main",h$="afterMain",m$="beforeWrite",g$="write",v$="afterWrite",b$=[c$,u$,d$,f$,p$,h$,m$,g$,v$];function ra(e){return e?(e.nodeName||"").toLowerCase():null}function Bo(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function sl(e){var t=Bo(e).Element;return e instanceof t||e instanceof Element}function rs(e){var t=Bo(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Sb(e){if(typeof ShadowRoot>"u")return!1;var t=Bo(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function y$(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];!rs(s)||!ra(s)||(Object.assign(s.style,r),Object.keys(o).forEach(function(a){var c=o[a];c===!1?s.removeAttribute(a):s.setAttribute(a,c===!0?"":c)}))})}function x$(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]||{},a=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),c=a.reduce(function(d,p){return d[p]="",d},{});!rs(o)||!ra(o)||(Object.assign(o.style,c),Object.keys(s).forEach(function(d){o.removeAttribute(d)}))})}}const w$={name:"applyStyles",enabled:!0,phase:"write",fn:y$,effect:x$,requires:["computeStyles"]};function ta(e){return e.split("-")[0]}var Qi=Math.max,Wp=Math.min,yc=Math.round;function $v(){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 Y3(){return!/^((?!chrome|android).)*safari/i.test($v())}function xc(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),o=1,s=1;t&&rs(e)&&(o=e.offsetWidth>0&&yc(r.width)/e.offsetWidth||1,s=e.offsetHeight>0&&yc(r.height)/e.offsetHeight||1);var a=sl(e)?Bo(e):window,c=a.visualViewport,d=!Y3()&&n,p=(r.left+(d&&c?c.offsetLeft:0))/o,h=(r.top+(d&&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 Cb(e){var t=xc(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 Q3(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Sb(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Oa(e){return Bo(e).getComputedStyle(e)}function S$(e){return["table","td","th"].indexOf(ra(e))>=0}function ji(e){return((sl(e)?e.ownerDocument:e.document)||window.document).documentElement}function lm(e){return ra(e)==="html"?e:e.assignedSlot||e.parentNode||(Sb(e)?e.host:null)||ji(e)}function Uw(e){return!rs(e)||Oa(e).position==="fixed"?null:e.offsetParent}function C$(e){var t=/firefox/i.test($v()),n=/Trident/i.test($v());if(n&&rs(e)){var r=Oa(e);if(r.position==="fixed")return null}var o=lm(e);for(Sb(o)&&(o=o.host);rs(o)&&["html","body"].indexOf(ra(o))<0;){var s=Oa(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 wd(e){for(var t=Bo(e),n=Uw(e);n&&S$(n)&&Oa(n).position==="static";)n=Uw(n);return n&&(ra(n)==="html"||ra(n)==="body"&&Oa(n).position==="static")?t:n||C$(e)||t}function kb(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Tu(e,t,n){return Qi(e,Wp(t,n))}function k$(e,t,n){var r=Tu(e,t,n);return r>n?n:r}function J3(){return{top:0,right:0,bottom:0,left:0}}function Z3(e){return Object.assign({},J3(),e)}function e6(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var _$=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,Z3(typeof t!="number"?t:e6(t,xd))};function P$(e){var t,n=e.state,r=e.name,o=e.options,s=n.elements.arrow,a=n.modifiersData.popperOffsets,c=ta(n.placement),d=kb(c),p=[_o,is].indexOf(c)>=0,h=p?"height":"width";if(!(!s||!a)){var m=_$(o.padding,n),v=Cb(s),b=d==="y"?ko:_o,w=d==="y"?as:is,y=n.rects.reference[h]+n.rects.reference[d]-a[d]-n.rects.popper[h],S=a[d]-n.rects.reference[d],k=wd(s),_=k?d==="y"?k.clientHeight||0:k.clientWidth||0:0,I=y/2-S/2,P=m[b],E=_-v[h]-m[w],O=_/2-v[h]/2+I,R=Tu(P,O,E),M=d;n.modifiersData[r]=(t={},t[M]=R,t.centerOffset=R-O,t)}}function j$(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)||Q3(t.elements.popper,o)&&(t.elements.arrow=o))}const I$={name:"arrow",enabled:!0,phase:"main",fn:P$,effect:j$,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function wc(e){return e.split("-")[1]}var E$={top:"auto",right:"auto",bottom:"auto",left:"auto"};function O$(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 Gw(e){var t,n=e.popper,r=e.popperRect,o=e.placement,s=e.variation,a=e.offsets,c=e.position,d=e.gpuAcceleration,p=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=a.x,b=v===void 0?0:v,w=a.y,y=w===void 0?0:w,S=typeof h=="function"?h({x:b,y}):{x:b,y};b=S.x,y=S.y;var k=a.hasOwnProperty("x"),_=a.hasOwnProperty("y"),I=_o,P=ko,E=window;if(p){var O=wd(n),R="clientHeight",M="clientWidth";if(O===Bo(n)&&(O=ji(n),Oa(O).position!=="static"&&c==="absolute"&&(R="scrollHeight",M="scrollWidth")),O=O,o===ko||(o===_o||o===is)&&s===Xu){P=as;var A=m&&O===E&&E.visualViewport?E.visualViewport.height:O[R];y-=A-r.height,y*=d?1:-1}if(o===_o||(o===ko||o===as)&&s===Xu){I=is;var T=m&&O===E&&E.visualViewport?E.visualViewport.width:O[M];b-=T-r.width,b*=d?1:-1}}var $=Object.assign({position:c},p&&E$),Q=h===!0?O$({x:b,y},Bo(n)):{x:b,y};if(b=Q.x,y=Q.y,d){var B;return Object.assign({},$,(B={},B[P]=_?"0":"",B[I]=k?"0":"",B.transform=(E.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",B))}return Object.assign({},$,(t={},t[P]=_?y+"px":"",t[I]=k?b+"px":"",t.transform="",t))}function R$(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,s=n.adaptive,a=s===void 0?!0:s,c=n.roundOffsets,d=c===void 0?!0:c,p={placement:ta(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,Gw(Object.assign({},p,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:d})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Gw(Object.assign({},p,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:d})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const M$={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:R$,data:{}};var Rf={passive:!0};function D$(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,s=o===void 0?!0:o,a=r.resize,c=a===void 0?!0:a,d=Bo(t.elements.popper),p=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&p.forEach(function(h){h.addEventListener("scroll",n.update,Rf)}),c&&d.addEventListener("resize",n.update,Rf),function(){s&&p.forEach(function(h){h.removeEventListener("scroll",n.update,Rf)}),c&&d.removeEventListener("resize",n.update,Rf)}}const A$={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:D$,data:{}};var T$={left:"right",right:"left",bottom:"top",top:"bottom"};function bp(e){return e.replace(/left|right|bottom|top/g,function(t){return T$[t]})}var N$={start:"end",end:"start"};function qw(e){return e.replace(/start|end/g,function(t){return N$[t]})}function _b(e){var t=Bo(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Pb(e){return xc(ji(e)).left+_b(e).scrollLeft}function $$(e,t){var n=Bo(e),r=ji(e),o=n.visualViewport,s=r.clientWidth,a=r.clientHeight,c=0,d=0;if(o){s=o.width,a=o.height;var p=Y3();(p||!p&&t==="fixed")&&(c=o.offsetLeft,d=o.offsetTop)}return{width:s,height:a,x:c+Pb(e),y:d}}function z$(e){var t,n=ji(e),r=_b(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=Qi(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=Qi(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),c=-r.scrollLeft+Pb(e),d=-r.scrollTop;return Oa(o||n).direction==="rtl"&&(c+=Qi(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:a,x:c,y:d}}function jb(e){var t=Oa(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function t6(e){return["html","body","#document"].indexOf(ra(e))>=0?e.ownerDocument.body:rs(e)&&jb(e)?e:t6(lm(e))}function Nu(e,t){var n;t===void 0&&(t=[]);var r=t6(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Bo(r),a=o?[s].concat(s.visualViewport||[],jb(r)?r:[]):r,c=t.concat(a);return o?c:c.concat(Nu(lm(a)))}function zv(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function L$(e,t){var n=xc(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 Kw(e,t,n){return t===K3?zv($$(e,n)):sl(t)?L$(t,n):zv(z$(ji(e)))}function B$(e){var t=Nu(lm(e)),n=["absolute","fixed"].indexOf(Oa(e).position)>=0,r=n&&rs(e)?wd(e):e;return sl(r)?t.filter(function(o){return sl(o)&&Q3(o,r)&&ra(o)!=="body"}):[]}function F$(e,t,n,r){var o=t==="clippingParents"?B$(e):[].concat(t),s=[].concat(o,[n]),a=s[0],c=s.reduce(function(d,p){var h=Kw(e,p,r);return d.top=Qi(h.top,d.top),d.right=Wp(h.right,d.right),d.bottom=Wp(h.bottom,d.bottom),d.left=Qi(h.left,d.left),d},Kw(e,a,r));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c}function n6(e){var t=e.reference,n=e.element,r=e.placement,o=r?ta(r):null,s=r?wc(r):null,a=t.x+t.width/2-n.width/2,c=t.y+t.height/2-n.height/2,d;switch(o){case ko:d={x:a,y:t.y-n.height};break;case as:d={x:a,y:t.y+t.height};break;case is:d={x:t.x+t.width,y:c};break;case _o:d={x:t.x-n.width,y:c};break;default:d={x:t.x,y:t.y}}var p=o?kb(o):null;if(p!=null){var h=p==="y"?"height":"width";switch(s){case bc:d[p]=d[p]-(t[h]/2-n[h]/2);break;case Xu:d[p]=d[p]+(t[h]/2-n[h]/2);break}}return d}function Yu(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,s=n.strategy,a=s===void 0?e.strategy:s,c=n.boundary,d=c===void 0?i$:c,p=n.rootBoundary,h=p===void 0?K3:p,m=n.elementContext,v=m===void 0?fu:m,b=n.altBoundary,w=b===void 0?!1:b,y=n.padding,S=y===void 0?0:y,k=Z3(typeof S!="number"?S:e6(S,xd)),_=v===fu?l$:fu,I=e.rects.popper,P=e.elements[w?_:v],E=F$(sl(P)?P:P.contextElement||ji(e.elements.popper),d,h,a),O=xc(e.elements.reference),R=n6({reference:O,element:I,strategy:"absolute",placement:o}),M=zv(Object.assign({},I,R)),A=v===fu?M:O,T={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},$=e.modifiersData.offset;if(v===fu&&$){var Q=$[o];Object.keys(T).forEach(function(B){var V=[is,as].indexOf(B)>=0?1:-1,q=[ko,as].indexOf(B)>=0?"y":"x";T[B]+=Q[q]*V})}return T}function H$(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,s=n.rootBoundary,a=n.padding,c=n.flipVariations,d=n.allowedAutoPlacements,p=d===void 0?X3:d,h=wc(r),m=h?c?Vw:Vw.filter(function(w){return wc(w)===h}):xd,v=m.filter(function(w){return p.indexOf(w)>=0});v.length===0&&(v=m);var b=v.reduce(function(w,y){return w[y]=Yu(e,{placement:y,boundary:o,rootBoundary:s,padding:a})[ta(y)],w},{});return Object.keys(b).sort(function(w,y){return b[w]-b[y]})}function W$(e){if(ta(e)===wb)return[];var t=bp(e);return[qw(e),t,qw(t)]}function V$(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,a=n.altAxis,c=a===void 0?!0:a,d=n.fallbackPlacements,p=n.padding,h=n.boundary,m=n.rootBoundary,v=n.altBoundary,b=n.flipVariations,w=b===void 0?!0:b,y=n.allowedAutoPlacements,S=t.options.placement,k=ta(S),_=k===S,I=d||(_||!w?[bp(S)]:W$(S)),P=[S].concat(I).reduce(function(X,K){return X.concat(ta(K)===wb?H$(t,{placement:K,boundary:h,rootBoundary:m,padding:p,flipVariations:w,allowedAutoPlacements:y}):K)},[]),E=t.rects.reference,O=t.rects.popper,R=new Map,M=!0,A=P[0],T=0;T=0,q=V?"width":"height",G=Yu(t,{placement:$,boundary:h,rootBoundary:m,altBoundary:v,padding:p}),D=V?B?is:_o:B?as:ko;E[q]>O[q]&&(D=bp(D));var L=bp(D),W=[];if(s&&W.push(G[Q]<=0),c&&W.push(G[D]<=0,G[L]<=0),W.every(function(X){return X})){A=$,M=!1;break}R.set($,W)}if(M)for(var Y=w?3:1,ae=function(K){var U=P.find(function(se){var re=R.get(se);if(re)return re.slice(0,K).every(function(oe){return oe})});if(U)return A=U,"break"},ye=Y;ye>0;ye--){var ce=ae(ye);if(ce==="break")break}t.placement!==A&&(t.modifiersData[r]._skip=!0,t.placement=A,t.reset=!0)}}const U$={name:"flip",enabled:!0,phase:"main",fn:V$,requiresIfExists:["offset"],data:{_skip:!1}};function Xw(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 Yw(e){return[ko,is,as,_o].some(function(t){return e[t]>=0})}function G$(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,a=Yu(t,{elementContext:"reference"}),c=Yu(t,{altBoundary:!0}),d=Xw(a,r),p=Xw(c,o,s),h=Yw(d),m=Yw(p);t.modifiersData[n]={referenceClippingOffsets:d,popperEscapeOffsets:p,isReferenceHidden:h,hasPopperEscaped:m},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":m})}const q$={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:G$};function K$(e,t,n){var r=ta(e),o=[_o,ko].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,a=s[0],c=s[1];return a=a||0,c=(c||0)*o,[_o,is].indexOf(r)>=0?{x:c,y:a}:{x:a,y:c}}function X$(e){var t=e.state,n=e.options,r=e.name,o=n.offset,s=o===void 0?[0,0]:o,a=X3.reduce(function(h,m){return h[m]=K$(m,t.rects,s),h},{}),c=a[t.placement],d=c.x,p=c.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=p),t.modifiersData[r]=a}const Y$={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:X$};function Q$(e){var t=e.state,n=e.name;t.modifiersData[n]=n6({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const J$={name:"popperOffsets",enabled:!0,phase:"read",fn:Q$,data:{}};function Z$(e){return e==="x"?"y":"x"}function ez(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=o===void 0?!0:o,a=n.altAxis,c=a===void 0?!1:a,d=n.boundary,p=n.rootBoundary,h=n.altBoundary,m=n.padding,v=n.tether,b=v===void 0?!0:v,w=n.tetherOffset,y=w===void 0?0:w,S=Yu(t,{boundary:d,rootBoundary:p,padding:m,altBoundary:h}),k=ta(t.placement),_=wc(t.placement),I=!_,P=kb(k),E=Z$(P),O=t.modifiersData.popperOffsets,R=t.rects.reference,M=t.rects.popper,A=typeof y=="function"?y(Object.assign({},t.rects,{placement:t.placement})):y,T=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),$=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,Q={x:0,y:0};if(O){if(s){var B,V=P==="y"?ko:_o,q=P==="y"?as:is,G=P==="y"?"height":"width",D=O[P],L=D+S[V],W=D-S[q],Y=b?-M[G]/2:0,ae=_===bc?R[G]:M[G],ye=_===bc?-M[G]:-R[G],ce=t.elements.arrow,X=b&&ce?Cb(ce):{width:0,height:0},K=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:J3(),U=K[V],se=K[q],re=Tu(0,R[G],X[G]),oe=I?R[G]/2-Y-re-U-T.mainAxis:ae-re-U-T.mainAxis,pe=I?-R[G]/2+Y+re+se+T.mainAxis:ye+re+se+T.mainAxis,ie=t.elements.arrow&&wd(t.elements.arrow),ge=ie?P==="y"?ie.clientTop||0:ie.clientLeft||0:0,ke=(B=$==null?void 0:$[P])!=null?B:0,xe=D+oe-ke-ge,de=D+pe-ke,Te=Tu(b?Wp(L,xe):L,D,b?Qi(W,de):W);O[P]=Te,Q[P]=Te-D}if(c){var Oe,$e=P==="x"?ko:_o,kt=P==="x"?as:is,ct=O[E],on=E==="y"?"height":"width",vt=ct+S[$e],bt=ct-S[kt],Se=[ko,_o].indexOf(k)!==-1,Me=(Oe=$==null?void 0:$[E])!=null?Oe:0,Pt=Se?vt:ct-R[on]-M[on]-Me+T.altAxis,Tt=Se?ct+R[on]+M[on]-Me-T.altAxis:bt,we=b&&Se?k$(Pt,ct,Tt):Tu(b?Pt:vt,ct,b?Tt:bt);O[E]=we,Q[E]=we-ct}t.modifiersData[r]=Q}}const tz={name:"preventOverflow",enabled:!0,phase:"main",fn:ez,requiresIfExists:["offset"]};function nz(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function rz(e){return e===Bo(e)||!rs(e)?_b(e):nz(e)}function oz(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 sz(e,t,n){n===void 0&&(n=!1);var r=rs(t),o=rs(t)&&oz(t),s=ji(t),a=xc(e,o,n),c={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(r||!r&&!n)&&((ra(t)!=="body"||jb(s))&&(c=rz(t)),rs(t)?(d=xc(t,!0),d.x+=t.clientLeft,d.y+=t.clientTop):s&&(d.x=Pb(s))),{x:a.left+c.scrollLeft-d.x,y:a.top+c.scrollTop-d.y,width:a.width,height:a.height}}function az(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 a=[].concat(s.requires||[],s.requiresIfExists||[]);a.forEach(function(c){if(!n.has(c)){var d=t.get(c);d&&o(d)}}),r.push(s)}return e.forEach(function(s){n.has(s.name)||o(s)}),r}function iz(e){var t=az(e);return b$.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function lz(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function cz(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 Qw={placement:"bottom",modifiers:[],strategy:"absolute"};function Jw(){for(var e=arguments.length,t=new Array(e),n=0;n{}),I=f.useCallback(()=>{var T;!t||!w.current||!y.current||((T=_.current)==null||T.call(_),S.current=fz(w.current,y.current,{placement:k,modifiers:[r$,e$,ZN,{...JN,enabled:!!v},{name:"eventListeners",...QN(a)},{name:"arrow",options:{padding:s}},{name:"offset",options:{offset:c??[0,d]}},{name:"flip",enabled:!!p,options:{padding:8}},{name:"preventOverflow",enabled:!!m,options:{boundary:h}},...n??[]],strategy:o}),S.current.forceUpdate(),_.current=S.current.destroy)},[k,t,n,v,a,s,c,d,p,m,h,o]);f.useEffect(()=>()=>{var T;!w.current&&!y.current&&((T=S.current)==null||T.destroy(),S.current=null)},[]);const P=f.useCallback(T=>{w.current=T,I()},[I]),E=f.useCallback((T={},$=null)=>({...T,ref:cn(P,$)}),[P]),O=f.useCallback(T=>{y.current=T,I()},[I]),R=f.useCallback((T={},$=null)=>({...T,ref:cn(O,$),style:{...T.style,position:o,minWidth:v?void 0:"max-content",inset:"0 auto auto 0"}}),[o,O,v]),M=f.useCallback((T={},$=null)=>{const{size:Q,shadowColor:B,bg:V,style:q,...G}=T;return{...G,ref:$,"data-popper-arrow":"",style:pz(T)}},[]),A=f.useCallback((T={},$=null)=>({...T,ref:$,"data-popper-arrow-inner":""}),[]);return{update(){var T;(T=S.current)==null||T.update()},forceUpdate(){var T;(T=S.current)==null||T.forceUpdate()},transformOrigin:jr.transformOrigin.varRef,referenceRef:P,popperRef:O,getPopperProps:R,getArrowProps:M,getArrowInnerProps:A,getReferenceProps:E}}function pz(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 Eb(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=rr(n),a=rr(t),[c,d]=f.useState(e.defaultIsOpen||!1),p=r!==void 0?r:c,h=r!==void 0,m=f.useId(),v=o??`disclosure-${m}`,b=f.useCallback(()=>{h||d(!1),a==null||a()},[h,a]),w=f.useCallback(()=>{h||d(!0),s==null||s()},[h,s]),y=f.useCallback(()=>{p?b():w()},[p,w,b]);function S(_={}){return{..._,"aria-expanded":p,"aria-controls":v,onClick(I){var P;(P=_.onClick)==null||P.call(_,I),y()}}}function k(_={}){return{..._,hidden:!p,id:v}}return{isOpen:p,onOpen:w,onClose:b,onToggle:y,isControlled:h,getButtonProps:S,getDisclosureProps:k}}function hz(e){const{ref:t,handler:n,enabled:r=!0}=e,o=rr(n),a=f.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;f.useEffect(()=>{if(!r)return;const c=m=>{b0(m,t)&&(a.isPointerDown=!0)},d=m=>{if(a.ignoreEmulatedMouseEvents){a.ignoreEmulatedMouseEvents=!1;return}a.isPointerDown&&n&&b0(m,t)&&(a.isPointerDown=!1,o(m))},p=m=>{a.ignoreEmulatedMouseEvents=!0,n&&a.isPointerDown&&b0(m,t)&&(a.isPointerDown=!1,o(m))},h=r6(t.current);return h.addEventListener("mousedown",c,!0),h.addEventListener("mouseup",d,!0),h.addEventListener("touchstart",c,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",c,!0),h.removeEventListener("mouseup",d,!0),h.removeEventListener("touchstart",c,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,a,r])}function b0(e,t){var n;const r=e.target;return r&&!r6(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}function r6(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function o6(e){const{isOpen:t,ref:n}=e,[r,o]=f.useState(t),[s,a]=f.useState(!1);return f.useEffect(()=>{s||(o(t),a(!0))},[t,s,r]),Yi(()=>n.current,"animationend",()=>{o(t)}),{present:!(t?!1:!r),onComplete(){var d;const p=yN(n.current),h=new p.CustomEvent("animationend",{bubbles:!0});(d=n.current)==null||d.dispatchEvent(h)}}}function Ob(e){const{wasSelected:t,enabled:n,isSelected:r,mode:o="unmount"}=e;return!!(!n||r||o==="keepMounted"&&t)}var[mz,gz,vz,bz]=J1(),[yz,Sd]=Dn({strict:!1,name:"MenuContext"});function xz(e,...t){const n=f.useId(),r=e||n;return f.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}function s6(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function Zw(e){return s6(e).activeElement===e}function wz(e={}){const{id:t,closeOnSelect:n=!0,closeOnBlur:r=!0,initialFocusRef:o,autoSelect:s=!0,isLazy:a,isOpen:c,defaultIsOpen:d,onClose:p,onOpen:h,placement:m="bottom-start",lazyBehavior:v="unmount",direction:b,computePositionOnMount:w=!1,...y}=e,S=f.useRef(null),k=f.useRef(null),_=vz(),I=f.useCallback(()=>{requestAnimationFrame(()=>{var ce;(ce=S.current)==null||ce.focus({preventScroll:!1})})},[]),P=f.useCallback(()=>{const ce=setTimeout(()=>{var X;if(o)(X=o.current)==null||X.focus();else{const K=_.firstEnabled();K&&B(K.index)}});L.current.add(ce)},[_,o]),E=f.useCallback(()=>{const ce=setTimeout(()=>{const X=_.lastEnabled();X&&B(X.index)});L.current.add(ce)},[_]),O=f.useCallback(()=>{h==null||h(),s?P():I()},[s,P,I,h]),{isOpen:R,onOpen:M,onClose:A,onToggle:T}=Eb({isOpen:c,defaultIsOpen:d,onClose:p,onOpen:O});hz({enabled:R&&r,ref:S,handler:ce=>{var X;(X=k.current)!=null&&X.contains(ce.target)||A()}});const $=Ib({...y,enabled:R||w,placement:m,direction:b}),[Q,B]=f.useState(-1);Ba(()=>{R||B(-1)},[R]),q3(S,{focusRef:k,visible:R,shouldFocus:!0});const V=o6({isOpen:R,ref:S}),[q,G]=xz(t,"menu-button","menu-list"),D=f.useCallback(()=>{M(),I()},[M,I]),L=f.useRef(new Set([]));Ez(()=>{L.current.forEach(ce=>clearTimeout(ce)),L.current.clear()});const W=f.useCallback(()=>{M(),P()},[P,M]),Y=f.useCallback(()=>{M(),E()},[M,E]),ae=f.useCallback(()=>{var ce,X;const K=s6(S.current),U=(ce=S.current)==null?void 0:ce.contains(K.activeElement);if(!(R&&!U))return;const re=(X=_.item(Q))==null?void 0:X.node;re==null||re.focus()},[R,Q,_]),ye=f.useRef(null);return{openAndFocusMenu:D,openAndFocusFirstItem:W,openAndFocusLastItem:Y,onTransitionEnd:ae,unstable__animationState:V,descendants:_,popper:$,buttonId:q,menuId:G,forceUpdate:$.forceUpdate,orientation:"vertical",isOpen:R,onToggle:T,onOpen:M,onClose:A,menuRef:S,buttonRef:k,focusedIndex:Q,closeOnSelect:n,closeOnBlur:r,autoSelect:s,setFocusedIndex:B,isLazy:a,lazyBehavior:v,initialFocusRef:o,rafId:ye}}function Sz(e={},t=null){const n=Sd(),{onToggle:r,popper:o,openAndFocusFirstItem:s,openAndFocusLastItem:a}=n,c=f.useCallback(d=>{const p=d.key,m={Enter:s,ArrowDown:s,ArrowUp:a}[p];m&&(d.preventDefault(),d.stopPropagation(),m(d))},[s,a]);return{...e,ref:cn(n.buttonRef,t,o.referenceRef),id:n.buttonId,"data-active":Ft(n.isOpen),"aria-expanded":n.isOpen,"aria-haspopup":"menu","aria-controls":n.menuId,onClick:nt(e.onClick,r),onKeyDown:nt(e.onKeyDown,c)}}function Lv(e){var t;return jz(e)&&!!((t=e==null?void 0:e.getAttribute("role"))!=null&&t.startsWith("menuitem"))}function Cz(e={},t=null){const n=Sd();if(!n)throw new Error("useMenuContext: context is undefined. Seems you forgot to wrap component within ");const{focusedIndex:r,setFocusedIndex:o,menuRef:s,isOpen:a,onClose:c,menuId:d,isLazy:p,lazyBehavior:h,unstable__animationState:m}=n,v=gz(),b=FN({preventDefault:k=>k.key!==" "&&Lv(k.target)}),w=f.useCallback(k=>{if(!k.currentTarget.contains(k.target))return;const _=k.key,P={Tab:O=>O.preventDefault(),Escape:c,ArrowDown:()=>{const O=v.nextEnabled(r);O&&o(O.index)},ArrowUp:()=>{const O=v.prevEnabled(r);O&&o(O.index)}}[_];if(P){k.preventDefault(),P(k);return}const E=b(O=>{const R=HN(v.values(),O,M=>{var A,T;return(T=(A=M==null?void 0:M.node)==null?void 0:A.textContent)!=null?T:""},v.item(r));if(R){const M=v.indexOf(R.node);o(M)}});Lv(k.target)&&E(k)},[v,r,b,c,o]),y=f.useRef(!1);a&&(y.current=!0);const S=Ob({wasSelected:y.current,enabled:p,mode:h,isSelected:m.present});return{...e,ref:cn(s,t),children:S?e.children:null,tabIndex:-1,role:"menu",id:d,style:{...e.style,transformOrigin:"var(--popper-transform-origin)"},"aria-orientation":"vertical",onKeyDown:nt(e.onKeyDown,w)}}function kz(e={}){const{popper:t,isOpen:n}=Sd();return t.getPopperProps({...e,style:{visibility:n?"visible":"hidden",...e.style}})}function a6(e={},t=null){const{onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onClick:s,onFocus:a,isDisabled:c,isFocusable:d,closeOnSelect:p,type:h,...m}=e,v=Sd(),{setFocusedIndex:b,focusedIndex:w,closeOnSelect:y,onClose:S,menuRef:k,isOpen:_,menuId:I,rafId:P}=v,E=f.useRef(null),O=`${I}-menuitem-${f.useId()}`,{index:R,register:M}=bz({disabled:c&&!d}),A=f.useCallback(D=>{n==null||n(D),!c&&b(R)},[b,R,c,n]),T=f.useCallback(D=>{r==null||r(D),E.current&&!Zw(E.current)&&A(D)},[A,r]),$=f.useCallback(D=>{o==null||o(D),!c&&b(-1)},[b,c,o]),Q=f.useCallback(D=>{s==null||s(D),Lv(D.currentTarget)&&(p??y)&&S()},[S,s,y,p]),B=f.useCallback(D=>{a==null||a(D),b(R)},[b,a,R]),V=R===w,q=c&&!d;Ba(()=>{_&&(V&&!q&&E.current?(P.current&&cancelAnimationFrame(P.current),P.current=requestAnimationFrame(()=>{var D;(D=E.current)==null||D.focus(),P.current=null})):k.current&&!Zw(k.current)&&k.current.focus({preventScroll:!0}))},[V,q,k,_]);const G=G3({onClick:Q,onFocus:B,onMouseEnter:A,onMouseMove:T,onMouseLeave:$,ref:cn(M,E,t),isDisabled:c,isFocusable:d});return{...m,...G,type:h??G.type,id:O,role:"menuitem",tabIndex:V?0:-1}}function _z(e={},t=null){const{type:n="radio",isChecked:r,...o}=e;return{...a6(o,t),role:`menuitem${n}`,"aria-checked":r}}function Pz(e={}){const{children:t,type:n="radio",value:r,defaultValue:o,onChange:s,...a}=e,d=n==="radio"?"":[],[p,h]=Nc({defaultValue:o??d,value:r,onChange:s}),m=f.useCallback(w=>{if(n==="radio"&&typeof p=="string"&&h(w),n==="checkbox"&&Array.isArray(p)){const y=p.includes(w)?p.filter(S=>S!==w):p.concat(w);h(y)}},[p,h,n]),b=gd(t).map(w=>{if(w.type.id!=="MenuItemOption")return w;const y=k=>{var _,I;m(w.props.value),(I=(_=w.props).onClick)==null||I.call(_,k)},S=n==="radio"?w.props.value===p:p.includes(w.props.value);return f.cloneElement(w,{type:n,onClick:y,isChecked:S})});return{...a,children:b}}function jz(e){var t;if(!Iz(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function Iz(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function Ez(e,t=[]){return f.useEffect(()=>()=>e(),t)}var[Oz,Lc]=Dn({name:"MenuStylesContext",errorMessage:`useMenuStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Cd=e=>{const{children:t}=e,n=Fr("Menu",e),r=qn(e),{direction:o}=Dc(),{descendants:s,...a}=wz({...r,direction:o}),c=f.useMemo(()=>a,[a]),{isOpen:d,onClose:p,forceUpdate:h}=c;return i.jsx(mz,{value:s,children:i.jsx(yz,{value:c,children:i.jsx(Oz,{value:n,children:T1(t,{isOpen:d,onClose:p,forceUpdate:h})})})})};Cd.displayName="Menu";var i6=Ae((e,t)=>{const n=Lc();return i.jsx(je.span,{ref:t,...e,__css:n.command,className:"chakra-menu__command"})});i6.displayName="MenuCommand";var l6=Ae((e,t)=>{const{type:n,...r}=e,o=Lc(),s=r.as||n?n??void 0:"button",a=f.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 i.jsx(je.button,{ref:t,type:s,...r,__css:a})}),Rb=e=>{const{className:t,children:n,...r}=e,o=Lc(),s=f.Children.only(n),a=f.isValidElement(s)?f.cloneElement(s,{focusable:"false","aria-hidden":!0,className:Ct("chakra-menu__icon",s.props.className)}):null,c=Ct("chakra-menu__icon-wrapper",t);return i.jsx(je.span,{className:c,...r,__css:o.icon,children:a})};Rb.displayName="MenuIcon";var Pr=Ae((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",command:o,commandSpacing:s="0.75rem",children:a,...c}=e,d=a6(c,t),h=n||o?i.jsx("span",{style:{pointerEvents:"none",flex:1},children:a}):a;return i.jsxs(l6,{...d,className:Ct("chakra-menu__menuitem",d.className),children:[n&&i.jsx(Rb,{fontSize:"0.8em",marginEnd:r,children:n}),h,o&&i.jsx(i6,{marginStart:s,children:o})]})});Pr.displayName="MenuItem";var Rz={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"}}},Mz=je(Ir.div),Bc=Ae(function(t,n){var r,o;const{rootProps:s,motionProps:a,...c}=t,{isOpen:d,onTransitionEnd:p,unstable__animationState:h}=Sd(),m=Cz(c,n),v=kz(s),b=Lc();return i.jsx(je.div,{...v,__css:{zIndex:(o=t.zIndex)!=null?o:(r=b.list)==null?void 0:r.zIndex},children:i.jsx(Mz,{variants:Rz,initial:!1,animate:d?"enter":"exit",__css:{outline:0,...b.list},...a,className:Ct("chakra-menu__menu-list",m.className),...m,onUpdate:p,onAnimationComplete:Qh(h.onComplete,m.onAnimationComplete)})})});Bc.displayName="MenuList";var Qu=Ae((e,t)=>{const{title:n,children:r,className:o,...s}=e,a=Ct("chakra-menu__group__title",o),c=Lc();return i.jsxs("div",{ref:t,className:"chakra-menu__group",role:"group",children:[n&&i.jsx(je.p,{className:a,...s,__css:c.groupTitle,children:n}),r]})});Qu.displayName="MenuGroup";var c6=e=>{const{className:t,title:n,...r}=e,o=Pz(r);return i.jsx(Qu,{title:n,className:Ct("chakra-menu__option-group",t),...o})};c6.displayName="MenuOptionGroup";var Dz=Ae((e,t)=>{const n=Lc();return i.jsx(je.button,{ref:t,...e,__css:{display:"inline-flex",appearance:"none",alignItems:"center",outline:0,...n.button}})}),kd=Ae((e,t)=>{const{children:n,as:r,...o}=e,s=Sz(o,t),a=r||Dz;return i.jsx(a,{...s,className:Ct("chakra-menu__menu-button",e.className),children:i.jsx(je.span,{__css:{pointerEvents:"none",flex:"1 1 auto",minW:0},children:e.children})})});kd.displayName="MenuButton";var Az=e=>i.jsx("svg",{viewBox:"0 0 14 14",width:"1em",height:"1em",...e,children:i.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"})}),Vp=Ae((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",...o}=e,s=_z(o,t);return i.jsxs(l6,{...s,className:Ct("chakra-menu__menuitem-option",o.className),children:[n!==null&&i.jsx(Rb,{fontSize:"0.8em",marginEnd:r,opacity:e.isChecked?1:0,children:n||i.jsx(Az,{})}),i.jsx("span",{style:{flex:1},children:s.children})]})});Vp.id="MenuItemOption";Vp.displayName="MenuItemOption";var Tz={slideInBottom:{..._v,custom:{offsetY:16,reverse:!0}},slideInRight:{..._v,custom:{offsetX:16,reverse:!0}},scale:{...T_,custom:{initialScale:.95,reverse:!0}},none:{}},Nz=je(Ir.section),$z=e=>Tz[e||"none"],u6=f.forwardRef((e,t)=>{const{preset:n,motionProps:r=$z(n),...o}=e;return i.jsx(Nz,{ref:t,...r,...o})});u6.displayName="ModalTransition";var zz=Object.defineProperty,Lz=(e,t,n)=>t in e?zz(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bz=(e,t,n)=>(Lz(e,typeof t!="symbol"?t+"":t,n),n),Fz=class{constructor(){Bz(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}},Bv=new Fz;function d6(e,t){const[n,r]=f.useState(0);return f.useEffect(()=>{const o=e.current;if(o){if(t){const s=Bv.add(o);r(s)}return()=>{Bv.remove(o),r(0)}}},[t,e]),n}var Hz=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Nl=new WeakMap,Mf=new WeakMap,Df={},y0=0,f6=function(e){return e&&(e.host||f6(e.parentNode))},Wz=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=f6(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})},Vz=function(e,t,n,r){var o=Wz(t,Array.isArray(e)?e:[e]);Df[n]||(Df[n]=new WeakMap);var s=Df[n],a=[],c=new Set,d=new Set(o),p=function(m){!m||c.has(m)||(c.add(m),p(m.parentNode))};o.forEach(p);var h=function(m){!m||d.has(m)||Array.prototype.forEach.call(m.children,function(v){if(c.has(v))h(v);else{var b=v.getAttribute(r),w=b!==null&&b!=="false",y=(Nl.get(v)||0)+1,S=(s.get(v)||0)+1;Nl.set(v,y),s.set(v,S),a.push(v),y===1&&w&&Mf.set(v,!0),S===1&&v.setAttribute(n,"true"),w||v.setAttribute(r,"true")}})};return h(t),c.clear(),y0++,function(){a.forEach(function(m){var v=Nl.get(m)-1,b=s.get(m)-1;Nl.set(m,v),s.set(m,b),v||(Mf.has(m)||m.removeAttribute(r),Mf.delete(m)),b||m.removeAttribute(n)}),y0--,y0||(Nl=new WeakMap,Nl=new WeakMap,Mf=new WeakMap,Df={})}},Uz=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||Hz(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),Vz(r,o,n,"aria-hidden")):function(){return null}};function Gz(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:o=!0,closeOnEsc:s=!0,useInert:a=!0,onOverlayClick:c,onEsc:d}=e,p=f.useRef(null),h=f.useRef(null),[m,v,b]=Kz(r,"chakra-modal","chakra-modal--header","chakra-modal--body");qz(p,t&&a);const w=d6(p,t),y=f.useRef(null),S=f.useCallback(A=>{y.current=A.target},[]),k=f.useCallback(A=>{A.key==="Escape"&&(A.stopPropagation(),s&&(n==null||n()),d==null||d())},[s,n,d]),[_,I]=f.useState(!1),[P,E]=f.useState(!1),O=f.useCallback((A={},T=null)=>({role:"dialog",...A,ref:cn(T,p),id:m,tabIndex:-1,"aria-modal":!0,"aria-labelledby":_?v:void 0,"aria-describedby":P?b:void 0,onClick:nt(A.onClick,$=>$.stopPropagation())}),[b,P,m,v,_]),R=f.useCallback(A=>{A.stopPropagation(),y.current===A.target&&Bv.isTopModal(p.current)&&(o&&(n==null||n()),c==null||c())},[n,o,c]),M=f.useCallback((A={},T=null)=>({...A,ref:cn(T,h),onClick:nt(A.onClick,R),onKeyDown:nt(A.onKeyDown,k),onMouseDown:nt(A.onMouseDown,S)}),[k,S,R]);return{isOpen:t,onClose:n,headerId:v,bodyId:b,setBodyMounted:E,setHeaderMounted:I,dialogRef:p,overlayRef:h,getDialogProps:O,getDialogContainerProps:M,index:w}}function qz(e,t){const n=e.current;f.useEffect(()=>{if(!(!e.current||!t))return Uz(e.current)},[t,e,n])}function Kz(e,...t){const n=f.useId(),r=e||n;return f.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}var[Xz,Fc]=Dn({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[Yz,al]=Dn({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),Ju=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:a,finalFocusRef:c,returnFocusOnClose:d,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b,onCloseComplete:w}=t,y=Fr("Modal",t),k={...Gz(t),autoFocus:o,trapFocus:s,initialFocusRef:a,finalFocusRef:c,returnFocusOnClose:d,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b};return i.jsx(Yz,{value:k,children:i.jsx(Xz,{value:y,children:i.jsx(ho,{onExitComplete:w,children:k.isOpen&&i.jsx(Uu,{...n,children:r})})})})};Ju.displayName="Modal";var yp="right-scroll-bar-position",xp="width-before-scroll-bar",Qz="with-scroll-bars-hidden",Jz="--removed-body-scroll-bar-size",p6=l3(),x0=function(){},cm=f.forwardRef(function(e,t){var n=f.useRef(null),r=f.useState({onScrollCapture:x0,onWheelCapture:x0,onTouchMoveCapture:x0}),o=r[0],s=r[1],a=e.forwardProps,c=e.children,d=e.className,p=e.removeScrollBar,h=e.enabled,m=e.shards,v=e.sideCar,b=e.noIsolation,w=e.inert,y=e.allowPinchZoom,S=e.as,k=S===void 0?"div":S,_=e.gapMode,I=s3(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),P=v,E=o3([n,t]),O=Qs(Qs({},I),o);return f.createElement(f.Fragment,null,h&&f.createElement(P,{sideCar:p6,removeScrollBar:p,shards:m,noIsolation:b,inert:w,setCallbacks:s,allowPinchZoom:!!y,lockRef:n,gapMode:_}),a?f.cloneElement(f.Children.only(c),Qs(Qs({},O),{ref:E})):f.createElement(k,Qs({},O,{className:d,ref:E}),c))});cm.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};cm.classNames={fullWidth:xp,zeroRight:yp};var eS,Zz=function(){if(eS)return eS;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function eL(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=Zz();return t&&e.setAttribute("nonce",t),e}function tL(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function nL(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var rL=function(){var e=0,t=null;return{add:function(n){e==0&&(t=eL())&&(tL(t,n),nL(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},oL=function(){var e=rL();return function(t,n){f.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},h6=function(){var e=oL(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},sL={left:0,top:0,right:0,gap:0},w0=function(e){return parseInt(e||"",10)||0},aL=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[w0(n),w0(r),w0(o)]},iL=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return sL;var t=aL(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])}},lL=h6(),cL=function(e,t,n,r){var o=e.left,s=e.top,a=e.right,c=e.gap;return n===void 0&&(n="margin"),` + .`.concat(Qz,` { + 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(a,`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(yp,` { + right: `).concat(c,"px ").concat(r,`; + } + + .`).concat(xp,` { + margin-right: `).concat(c,"px ").concat(r,`; + } + + .`).concat(yp," .").concat(yp,` { + right: 0 `).concat(r,`; + } + + .`).concat(xp," .").concat(xp,` { + margin-right: 0 `).concat(r,`; + } + + body { + `).concat(Jz,": ").concat(c,`px; + } +`)},uL=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,s=f.useMemo(function(){return iL(o)},[o]);return f.createElement(lL,{styles:cL(s,!t,o,n?"":"!important")})},Fv=!1;if(typeof window<"u")try{var Af=Object.defineProperty({},"passive",{get:function(){return Fv=!0,!0}});window.addEventListener("test",Af,Af),window.removeEventListener("test",Af,Af)}catch{Fv=!1}var $l=Fv?{passive:!1}:!1,dL=function(e){return e.tagName==="TEXTAREA"},m6=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!dL(e)&&n[t]==="visible")},fL=function(e){return m6(e,"overflowY")},pL=function(e){return m6(e,"overflowX")},tS=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=g6(e,r);if(o){var s=v6(e,r),a=s[1],c=s[2];if(a>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},hL=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},mL=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},g6=function(e,t){return e==="v"?fL(t):pL(t)},v6=function(e,t){return e==="v"?hL(t):mL(t)},gL=function(e,t){return e==="h"&&t==="rtl"?-1:1},vL=function(e,t,n,r,o){var s=gL(e,window.getComputedStyle(t).direction),a=s*r,c=n.target,d=t.contains(c),p=!1,h=a>0,m=0,v=0;do{var b=v6(e,c),w=b[0],y=b[1],S=b[2],k=y-S-s*w;(w||k)&&g6(e,c)&&(m+=k,v+=w),c=c.parentNode}while(!d&&c!==document.body||d&&(t.contains(c)||t===c));return(h&&(o&&m===0||!o&&a>m)||!h&&(o&&v===0||!o&&-a>v))&&(p=!0),p},Tf=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},nS=function(e){return[e.deltaX,e.deltaY]},rS=function(e){return e&&"current"in e?e.current:e},bL=function(e,t){return e[0]===t[0]&&e[1]===t[1]},yL=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},xL=0,zl=[];function wL(e){var t=f.useRef([]),n=f.useRef([0,0]),r=f.useRef(),o=f.useState(xL++)[0],s=f.useState(h6)[0],a=f.useRef(e);f.useEffect(function(){a.current=e},[e]),f.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var y=Mv([e.lockRef.current],(e.shards||[]).map(rS),!0).filter(Boolean);return y.forEach(function(S){return S.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),y.forEach(function(S){return S.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var c=f.useCallback(function(y,S){if("touches"in y&&y.touches.length===2)return!a.current.allowPinchZoom;var k=Tf(y),_=n.current,I="deltaX"in y?y.deltaX:_[0]-k[0],P="deltaY"in y?y.deltaY:_[1]-k[1],E,O=y.target,R=Math.abs(I)>Math.abs(P)?"h":"v";if("touches"in y&&R==="h"&&O.type==="range")return!1;var M=tS(R,O);if(!M)return!0;if(M?E=R:(E=R==="v"?"h":"v",M=tS(R,O)),!M)return!1;if(!r.current&&"changedTouches"in y&&(I||P)&&(r.current=E),!E)return!0;var A=r.current||E;return vL(A,S,y,A==="h"?I:P,!0)},[]),d=f.useCallback(function(y){var S=y;if(!(!zl.length||zl[zl.length-1]!==s)){var k="deltaY"in S?nS(S):Tf(S),_=t.current.filter(function(E){return E.name===S.type&&E.target===S.target&&bL(E.delta,k)})[0];if(_&&_.should){S.cancelable&&S.preventDefault();return}if(!_){var I=(a.current.shards||[]).map(rS).filter(Boolean).filter(function(E){return E.contains(S.target)}),P=I.length>0?c(S,I[0]):!a.current.noIsolation;P&&S.cancelable&&S.preventDefault()}}},[]),p=f.useCallback(function(y,S,k,_){var I={name:y,delta:S,target:k,should:_};t.current.push(I),setTimeout(function(){t.current=t.current.filter(function(P){return P!==I})},1)},[]),h=f.useCallback(function(y){n.current=Tf(y),r.current=void 0},[]),m=f.useCallback(function(y){p(y.type,nS(y),y.target,c(y,e.lockRef.current))},[]),v=f.useCallback(function(y){p(y.type,Tf(y),y.target,c(y,e.lockRef.current))},[]);f.useEffect(function(){return zl.push(s),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:v}),document.addEventListener("wheel",d,$l),document.addEventListener("touchmove",d,$l),document.addEventListener("touchstart",h,$l),function(){zl=zl.filter(function(y){return y!==s}),document.removeEventListener("wheel",d,$l),document.removeEventListener("touchmove",d,$l),document.removeEventListener("touchstart",h,$l)}},[]);var b=e.removeScrollBar,w=e.inert;return f.createElement(f.Fragment,null,w?f.createElement(s,{styles:yL(o)}):null,b?f.createElement(uL,{gapMode:e.gapMode}):null)}const SL=ST(p6,wL);var b6=f.forwardRef(function(e,t){return f.createElement(cm,Qs({},e,{ref:t,sideCar:SL}))});b6.classNames=cm.classNames;const CL=b6;function kL(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:o,blockScrollOnMount:s,allowPinchZoom:a,finalFocusRef:c,returnFocusOnClose:d,preserveScrollBarGap:p,lockFocusAcrossFrames:h,isOpen:m}=al(),[v,b]=P7();f.useEffect(()=>{!v&&b&&setTimeout(b)},[v,b]);const w=d6(r,m);return i.jsx(L3,{autoFocus:t,isDisabled:!n,initialFocusRef:o,finalFocusRef:c,restoreFocus:d,contentRef:r,lockFocusAcrossFrames:h,children:i.jsx(CL,{removeScrollBar:!p,allowPinchZoom:a,enabled:w===1&&s,forwardProps:!0,children:e.children})})}var Zu=Ae((e,t)=>{const{className:n,children:r,containerProps:o,motionProps:s,...a}=e,{getDialogProps:c,getDialogContainerProps:d}=al(),p=c(a,t),h=d(o),m=Ct("chakra-modal__content",n),v=Fc(),b={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...v.dialog},w={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...v.dialogContainer},{motionPreset:y}=al();return i.jsx(kL,{children:i.jsx(je.div,{...h,className:"chakra-modal__content-container",tabIndex:-1,__css:w,children:i.jsx(u6,{preset:y,motionProps:s,className:m,...p,__css:b,children:r})})})});Zu.displayName="ModalContent";function _d(e){const{leastDestructiveRef:t,...n}=e;return i.jsx(Ju,{...n,initialFocusRef:t})}var Pd=Ae((e,t)=>i.jsx(Zu,{ref:t,role:"alertdialog",...e})),Ra=Ae((e,t)=>{const{className:n,...r}=e,o=Ct("chakra-modal__footer",n),a={display:"flex",alignItems:"center",justifyContent:"flex-end",...Fc().footer};return i.jsx(je.footer,{ref:t,...r,__css:a,className:o})});Ra.displayName="ModalFooter";var Ma=Ae((e,t)=>{const{className:n,...r}=e,{headerId:o,setHeaderMounted:s}=al();f.useEffect(()=>(s(!0),()=>s(!1)),[s]);const a=Ct("chakra-modal__header",n),d={flex:0,...Fc().header};return i.jsx(je.header,{ref:t,className:a,id:o,...r,__css:d})});Ma.displayName="ModalHeader";var _L=je(Ir.div),Da=Ae((e,t)=>{const{className:n,transition:r,motionProps:o,...s}=e,a=Ct("chakra-modal__overlay",n),d={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",...Fc().overlay},{motionPreset:p}=al(),m=o||(p==="none"?{}:A_);return i.jsx(_L,{...m,__css:d,ref:t,className:a,...s})});Da.displayName="ModalOverlay";var Aa=Ae((e,t)=>{const{className:n,...r}=e,{bodyId:o,setBodyMounted:s}=al();f.useEffect(()=>(s(!0),()=>s(!1)),[s]);const a=Ct("chakra-modal__body",n),c=Fc();return i.jsx(je.div,{ref:t,className:a,id:o,...r,__css:c.body})});Aa.displayName="ModalBody";var Mb=Ae((e,t)=>{const{onClick:n,className:r,...o}=e,{onClose:s}=al(),a=Ct("chakra-modal__close-btn",r),c=Fc();return i.jsx(VD,{ref:t,__css:c.closeButton,className:a,onClick:nt(n,d=>{d.stopPropagation(),s()}),...o})});Mb.displayName="ModalCloseButton";var PL=e=>i.jsx(no,{viewBox:"0 0 24 24",...e,children:i.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"})}),jL=e=>i.jsx(no,{viewBox:"0 0 24 24",...e,children:i.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 oS(e,t,n,r){f.useEffect(()=>{var o;if(!e.current||!r)return;const s=(o=e.current.ownerDocument.defaultView)!=null?o:window,a=Array.isArray(t)?t:[t],c=new s.MutationObserver(d=>{for(const p of d)p.type==="attributes"&&p.attributeName&&a.includes(p.attributeName)&&n(p)});return c.observe(e.current,{attributes:!0,attributeFilter:a}),()=>c.disconnect()})}function IL(e,t){const n=rr(e);f.useEffect(()=>{let r=null;const o=()=>n();return t!==null&&(r=window.setInterval(o,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var EL=50,sS=300;function OL(e,t){const[n,r]=f.useState(!1),[o,s]=f.useState(null),[a,c]=f.useState(!0),d=f.useRef(null),p=()=>clearTimeout(d.current);IL(()=>{o==="increment"&&e(),o==="decrement"&&t()},n?EL:null);const h=f.useCallback(()=>{a&&e(),d.current=setTimeout(()=>{c(!1),r(!0),s("increment")},sS)},[e,a]),m=f.useCallback(()=>{a&&t(),d.current=setTimeout(()=>{c(!1),r(!0),s("decrement")},sS)},[t,a]),v=f.useCallback(()=>{c(!0),r(!1),p()},[]);return f.useEffect(()=>()=>p(),[]),{up:h,down:m,stop:v,isSpinning:n}}var RL=/^[Ee0-9+\-.]$/;function ML(e){return RL.test(e)}function DL(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 AL(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:o=Number.MIN_SAFE_INTEGER,max:s=Number.MAX_SAFE_INTEGER,step:a=1,isReadOnly:c,isDisabled:d,isRequired:p,isInvalid:h,pattern:m="[0-9]*(.[0-9]+)?",inputMode:v="decimal",allowMouseWheel:b,id:w,onChange:y,precision:S,name:k,"aria-describedby":_,"aria-label":I,"aria-labelledby":P,onFocus:E,onBlur:O,onInvalid:R,getAriaValueText:M,isValidCharacter:A,format:T,parse:$,...Q}=e,B=rr(E),V=rr(O),q=rr(R),G=rr(A??ML),D=rr(M),L=nT(e),{update:W,increment:Y,decrement:ae}=L,[ye,ce]=f.useState(!1),X=!(c||d),K=f.useRef(null),U=f.useRef(null),se=f.useRef(null),re=f.useRef(null),oe=f.useCallback(we=>we.split("").filter(G).join(""),[G]),pe=f.useCallback(we=>{var ht;return(ht=$==null?void 0:$(we))!=null?ht:we},[$]),ie=f.useCallback(we=>{var ht;return((ht=T==null?void 0:T(we))!=null?ht:we).toString()},[T]);Ba(()=>{(L.valueAsNumber>s||L.valueAsNumber{if(!K.current)return;if(K.current.value!=L.value){const ht=pe(K.current.value);L.setValue(oe(ht))}},[pe,oe]);const ge=f.useCallback((we=a)=>{X&&Y(we)},[Y,X,a]),ke=f.useCallback((we=a)=>{X&&ae(we)},[ae,X,a]),xe=OL(ge,ke);oS(se,"disabled",xe.stop,xe.isSpinning),oS(re,"disabled",xe.stop,xe.isSpinning);const de=f.useCallback(we=>{if(we.nativeEvent.isComposing)return;const $t=pe(we.currentTarget.value);W(oe($t)),U.current={start:we.currentTarget.selectionStart,end:we.currentTarget.selectionEnd}},[W,oe,pe]),Te=f.useCallback(we=>{var ht,$t,zt;B==null||B(we),U.current&&(we.target.selectionStart=($t=U.current.start)!=null?$t:(ht=we.currentTarget.value)==null?void 0:ht.length,we.currentTarget.selectionEnd=(zt=U.current.end)!=null?zt:we.currentTarget.selectionStart)},[B]),Oe=f.useCallback(we=>{if(we.nativeEvent.isComposing)return;DL(we,G)||we.preventDefault();const ht=$e(we)*a,$t=we.key,ze={ArrowUp:()=>ge(ht),ArrowDown:()=>ke(ht),Home:()=>W(o),End:()=>W(s)}[$t];ze&&(we.preventDefault(),ze(we))},[G,a,ge,ke,W,o,s]),$e=we=>{let ht=1;return(we.metaKey||we.ctrlKey)&&(ht=.1),we.shiftKey&&(ht=10),ht},kt=f.useMemo(()=>{const we=D==null?void 0:D(L.value);if(we!=null)return we;const ht=L.value.toString();return ht||void 0},[L.value,D]),ct=f.useCallback(()=>{let we=L.value;if(L.value==="")return;/^[eE]/.test(L.value.toString())?L.setValue(""):(L.valueAsNumbers&&(we=s),L.cast(we))},[L,s,o]),on=f.useCallback(()=>{ce(!1),n&&ct()},[n,ce,ct]),vt=f.useCallback(()=>{t&&requestAnimationFrame(()=>{var we;(we=K.current)==null||we.focus()})},[t]),bt=f.useCallback(we=>{we.preventDefault(),xe.up(),vt()},[vt,xe]),Se=f.useCallback(we=>{we.preventDefault(),xe.down(),vt()},[vt,xe]);Yi(()=>K.current,"wheel",we=>{var ht,$t;const ze=(($t=(ht=K.current)==null?void 0:ht.ownerDocument)!=null?$t:document).activeElement===K.current;if(!b||!ze)return;we.preventDefault();const qe=$e(we)*a,Pn=Math.sign(we.deltaY);Pn===-1?ge(qe):Pn===1&&ke(qe)},{passive:!1});const Me=f.useCallback((we={},ht=null)=>{const $t=d||r&&L.isAtMax;return{...we,ref:cn(ht,se),role:"button",tabIndex:-1,onPointerDown:nt(we.onPointerDown,zt=>{zt.button!==0||$t||bt(zt)}),onPointerLeave:nt(we.onPointerLeave,xe.stop),onPointerUp:nt(we.onPointerUp,xe.stop),disabled:$t,"aria-disabled":ns($t)}},[L.isAtMax,r,bt,xe.stop,d]),Pt=f.useCallback((we={},ht=null)=>{const $t=d||r&&L.isAtMin;return{...we,ref:cn(ht,re),role:"button",tabIndex:-1,onPointerDown:nt(we.onPointerDown,zt=>{zt.button!==0||$t||Se(zt)}),onPointerLeave:nt(we.onPointerLeave,xe.stop),onPointerUp:nt(we.onPointerUp,xe.stop),disabled:$t,"aria-disabled":ns($t)}},[L.isAtMin,r,Se,xe.stop,d]),Tt=f.useCallback((we={},ht=null)=>{var $t,zt,ze,qe;return{name:k,inputMode:v,type:"text",pattern:m,"aria-labelledby":P,"aria-label":I,"aria-describedby":_,id:w,disabled:d,...we,readOnly:($t=we.readOnly)!=null?$t:c,"aria-readonly":(zt=we.readOnly)!=null?zt:c,"aria-required":(ze=we.required)!=null?ze:p,required:(qe=we.required)!=null?qe:p,ref:cn(K,ht),value:ie(L.value),role:"spinbutton","aria-valuemin":o,"aria-valuemax":s,"aria-valuenow":Number.isNaN(L.valueAsNumber)?void 0:L.valueAsNumber,"aria-invalid":ns(h??L.isOutOfRange),"aria-valuetext":kt,autoComplete:"off",autoCorrect:"off",onChange:nt(we.onChange,de),onKeyDown:nt(we.onKeyDown,Oe),onFocus:nt(we.onFocus,Te,()=>ce(!0)),onBlur:nt(we.onBlur,V,on)}},[k,v,m,P,I,ie,_,w,d,p,c,h,L.value,L.valueAsNumber,L.isOutOfRange,o,s,kt,de,Oe,Te,V,on]);return{value:ie(L.value),valueAsNumber:L.valueAsNumber,isFocused:ye,isDisabled:d,isReadOnly:c,getIncrementButtonProps:Me,getDecrementButtonProps:Pt,getInputProps:Tt,htmlProps:Q}}var[TL,um]=Dn({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[NL,Db]=Dn({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),dm=Ae(function(t,n){const r=Fr("NumberInput",t),o=qn(t),s=nb(o),{htmlProps:a,...c}=AL(s),d=f.useMemo(()=>c,[c]);return i.jsx(NL,{value:d,children:i.jsx(TL,{value:r,children:i.jsx(je.div,{...a,ref:n,className:Ct("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})})})});dm.displayName="NumberInput";var fm=Ae(function(t,n){const r=um();return i.jsx(je.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}})});fm.displayName="NumberInputStepper";var pm=Ae(function(t,n){const{getInputProps:r}=Db(),o=r(t,n),s=um();return i.jsx(je.input,{...o,className:Ct("chakra-numberinput__field",t.className),__css:{width:"100%",...s.field}})});pm.displayName="NumberInputField";var y6=je("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),hm=Ae(function(t,n){var r;const o=um(),{getDecrementButtonProps:s}=Db(),a=s(t,n);return i.jsx(y6,{...a,__css:o.stepper,children:(r=t.children)!=null?r:i.jsx(PL,{})})});hm.displayName="NumberDecrementStepper";var mm=Ae(function(t,n){var r;const{getIncrementButtonProps:o}=Db(),s=o(t,n),a=um();return i.jsx(y6,{...s,__css:a.stepper,children:(r=t.children)!=null?r:i.jsx(jL,{})})});mm.displayName="NumberIncrementStepper";var[$L,jd]=Dn({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[zL,Ab]=Dn({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `});function Tb(e){const t=f.Children.only(e.children),{getTriggerProps:n}=jd();return f.cloneElement(t,n(t.props,t.ref))}Tb.displayName="PopoverTrigger";var Ll={click:"click",hover:"hover"};function LL(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:o,returnFocusOnClose:s=!0,autoFocus:a=!0,arrowSize:c,arrowShadowColor:d,trigger:p=Ll.click,openDelay:h=200,closeDelay:m=200,isLazy:v,lazyBehavior:b="unmount",computePositionOnMount:w,...y}=e,{isOpen:S,onClose:k,onOpen:_,onToggle:I}=Eb(e),P=f.useRef(null),E=f.useRef(null),O=f.useRef(null),R=f.useRef(!1),M=f.useRef(!1);S&&(M.current=!0);const[A,T]=f.useState(!1),[$,Q]=f.useState(!1),B=f.useId(),V=o??B,[q,G,D,L]=["popover-trigger","popover-content","popover-header","popover-body"].map(de=>`${de}-${V}`),{referenceRef:W,getArrowProps:Y,getPopperProps:ae,getArrowInnerProps:ye,forceUpdate:ce}=Ib({...y,enabled:S||!!w}),X=o6({isOpen:S,ref:O});J_({enabled:S,ref:E}),q3(O,{focusRef:E,visible:S,shouldFocus:s&&p===Ll.click}),GN(O,{focusRef:r,visible:S,shouldFocus:a&&p===Ll.click});const K=Ob({wasSelected:M.current,enabled:v,mode:b,isSelected:X.present}),U=f.useCallback((de={},Te=null)=>{const Oe={...de,style:{...de.style,transformOrigin:jr.transformOrigin.varRef,[jr.arrowSize.var]:c?`${c}px`:void 0,[jr.arrowShadowColor.var]:d},ref:cn(O,Te),children:K?de.children:null,id:G,tabIndex:-1,role:"dialog",onKeyDown:nt(de.onKeyDown,$e=>{n&&$e.key==="Escape"&&k()}),onBlur:nt(de.onBlur,$e=>{const kt=aS($e),ct=S0(O.current,kt),on=S0(E.current,kt);S&&t&&(!ct&&!on)&&k()}),"aria-labelledby":A?D:void 0,"aria-describedby":$?L:void 0};return p===Ll.hover&&(Oe.role="tooltip",Oe.onMouseEnter=nt(de.onMouseEnter,()=>{R.current=!0}),Oe.onMouseLeave=nt(de.onMouseLeave,$e=>{$e.nativeEvent.relatedTarget!==null&&(R.current=!1,setTimeout(()=>k(),m))})),Oe},[K,G,A,D,$,L,p,n,k,S,t,m,d,c]),se=f.useCallback((de={},Te=null)=>ae({...de,style:{visibility:S?"visible":"hidden",...de.style}},Te),[S,ae]),re=f.useCallback((de,Te=null)=>({...de,ref:cn(Te,P,W)}),[P,W]),oe=f.useRef(),pe=f.useRef(),ie=f.useCallback(de=>{P.current==null&&W(de)},[W]),ge=f.useCallback((de={},Te=null)=>{const Oe={...de,ref:cn(E,Te,ie),id:q,"aria-haspopup":"dialog","aria-expanded":S,"aria-controls":G};return p===Ll.click&&(Oe.onClick=nt(de.onClick,I)),p===Ll.hover&&(Oe.onFocus=nt(de.onFocus,()=>{oe.current===void 0&&_()}),Oe.onBlur=nt(de.onBlur,$e=>{const kt=aS($e),ct=!S0(O.current,kt);S&&t&&ct&&k()}),Oe.onKeyDown=nt(de.onKeyDown,$e=>{$e.key==="Escape"&&k()}),Oe.onMouseEnter=nt(de.onMouseEnter,()=>{R.current=!0,oe.current=window.setTimeout(()=>_(),h)}),Oe.onMouseLeave=nt(de.onMouseLeave,()=>{R.current=!1,oe.current&&(clearTimeout(oe.current),oe.current=void 0),pe.current=window.setTimeout(()=>{R.current===!1&&k()},m)})),Oe},[q,S,G,p,ie,I,_,t,k,h,m]);f.useEffect(()=>()=>{oe.current&&clearTimeout(oe.current),pe.current&&clearTimeout(pe.current)},[]);const ke=f.useCallback((de={},Te=null)=>({...de,id:D,ref:cn(Te,Oe=>{T(!!Oe)})}),[D]),xe=f.useCallback((de={},Te=null)=>({...de,id:L,ref:cn(Te,Oe=>{Q(!!Oe)})}),[L]);return{forceUpdate:ce,isOpen:S,onAnimationComplete:X.onComplete,onClose:k,getAnchorProps:re,getArrowProps:Y,getArrowInnerProps:ye,getPopoverPositionerProps:se,getPopoverProps:U,getTriggerProps:ge,getHeaderProps:ke,getBodyProps:xe}}function S0(e,t){return e===t||(e==null?void 0:e.contains(t))}function aS(e){var t;const n=e.currentTarget.ownerDocument.activeElement;return(t=e.relatedTarget)!=null?t:n}function Nb(e){const t=Fr("Popover",e),{children:n,...r}=qn(e),o=Dc(),s=LL({...r,direction:o.direction});return i.jsx($L,{value:s,children:i.jsx(zL,{value:t,children:T1(n,{isOpen:s.isOpen,onClose:s.onClose,forceUpdate:s.forceUpdate})})})}Nb.displayName="Popover";var C0=(e,t)=>t?`${e}.${t}, ${t}`:void 0;function x6(e){var t;const{bg:n,bgColor:r,backgroundColor:o,shadow:s,boxShadow:a,shadowColor:c}=e,{getArrowProps:d,getArrowInnerProps:p}=jd(),h=Ab(),m=(t=n??r)!=null?t:o,v=s??a;return i.jsx(je.div,{...d(),className:"chakra-popover__arrow-positioner",children:i.jsx(je.div,{className:Ct("chakra-popover__arrow",e.className),...p(e),__css:{"--popper-arrow-shadow-color":C0("colors",c),"--popper-arrow-bg":C0("colors",m),"--popper-arrow-shadow":C0("shadows",v),...h.arrow}})})}x6.displayName="PopoverArrow";var w6=Ae(function(t,n){const{getBodyProps:r}=jd(),o=Ab();return i.jsx(je.div,{...r(t,n),className:Ct("chakra-popover__body",t.className),__css:o.body})});w6.displayName="PopoverBody";function BL(e){if(e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var FL={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]}}},HL=je(Ir.section),S6=Ae(function(t,n){const{variants:r=FL,...o}=t,{isOpen:s}=jd();return i.jsx(HL,{ref:n,variants:BL(r),initial:!1,animate:s?"enter":"exit",...o})});S6.displayName="PopoverTransition";var $b=Ae(function(t,n){const{rootProps:r,motionProps:o,...s}=t,{getPopoverProps:a,getPopoverPositionerProps:c,onAnimationComplete:d}=jd(),p=Ab(),h={position:"relative",display:"flex",flexDirection:"column",...p.content};return i.jsx(je.div,{...c(r),__css:p.popper,className:"chakra-popover__popper",children:i.jsx(S6,{...o,...a(s,n),onAnimationComplete:Qh(d,s.onAnimationComplete),className:Ct("chakra-popover__content",t.className),__css:h})})});$b.displayName="PopoverContent";function WL(e,t,n){return(e-t)*100/(n-t)}za({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}});za({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}});var VL=za({"0%":{left:"-40%"},"100%":{left:"100%"}}),UL=za({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function GL(e){const{value:t=0,min:n,max:r,valueText:o,getValueText:s,isIndeterminate:a,role:c="progressbar"}=e,d=WL(t,n,r);return{bind:{"data-indeterminate":a?"":void 0,"aria-valuemax":r,"aria-valuemin":n,"aria-valuenow":a?void 0:t,"aria-valuetext":(()=>{if(t!=null)return typeof s=="function"?s(t,d):o})(),role:c},percent:d,value:t}}var[qL,KL]=Dn({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),XL=Ae((e,t)=>{const{min:n,max:r,value:o,isIndeterminate:s,role:a,...c}=e,d=GL({value:o,min:n,max:r,isIndeterminate:s,role:a}),h={height:"100%",...KL().filledTrack};return i.jsx(je.div,{ref:t,style:{width:`${d.percent}%`,...c.style},...d.bind,...c,__css:h})}),C6=Ae((e,t)=>{var n;const{value:r,min:o=0,max:s=100,hasStripe:a,isAnimated:c,children:d,borderRadius:p,isIndeterminate:h,"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,title:w,role:y,...S}=qn(e),k=Fr("Progress",e),_=p??((n=k.track)==null?void 0:n.borderRadius),I={animation:`${UL} 1s linear infinite`},O={...!h&&a&&c&&I,...h&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${VL} 1s ease infinite normal none running`}},R={overflow:"hidden",position:"relative",...k.track};return i.jsx(je.div,{ref:t,borderRadius:_,__css:R,...S,children:i.jsxs(qL,{value:k,children:[i.jsx(XL,{"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,min:o,max:s,value:r,isIndeterminate:h,css:O,borderRadius:_,title:w,role:y}),d]})})});C6.displayName="Progress";function YL(e){return e&&mv(e)&&mv(e.target)}function QL(e={}){const{onChange:t,value:n,defaultValue:r,name:o,isDisabled:s,isFocusable:a,isNative:c,...d}=e,[p,h]=f.useState(r||""),m=typeof n<"u",v=m?n:p,b=f.useRef(null),w=f.useCallback(()=>{const E=b.current;if(!E)return;let O="input:not(:disabled):checked";const R=E.querySelector(O);if(R){R.focus();return}O="input:not(:disabled)";const M=E.querySelector(O);M==null||M.focus()},[]),S=`radio-${f.useId()}`,k=o||S,_=f.useCallback(E=>{const O=YL(E)?E.target.value:E;m||h(O),t==null||t(String(O))},[t,m]),I=f.useCallback((E={},O=null)=>({...E,ref:cn(O,b),role:"radiogroup"}),[]),P=f.useCallback((E={},O=null)=>({...E,ref:O,name:k,[c?"checked":"isChecked"]:v!=null?E.value===v:void 0,onChange(M){_(M)},"data-radiogroup":!0}),[c,k,_,v]);return{getRootProps:I,getRadioProps:P,name:k,ref:b,focus:w,setValue:h,value:v,onChange:_,isDisabled:s,isFocusable:a,htmlProps:d}}var[JL,k6]=Dn({name:"RadioGroupContext",strict:!1}),Up=Ae((e,t)=>{const{colorScheme:n,size:r,variant:o,children:s,className:a,isDisabled:c,isFocusable:d,...p}=e,{value:h,onChange:m,getRootProps:v,name:b,htmlProps:w}=QL(p),y=f.useMemo(()=>({name:b,size:r,onChange:m,colorScheme:n,value:h,variant:o,isDisabled:c,isFocusable:d}),[b,r,m,n,h,o,c,d]);return i.jsx(JL,{value:y,children:i.jsx(je.div,{...v(w,t),className:Ct("chakra-radio-group",a),children:s})})});Up.displayName="RadioGroup";var ZL={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"};function eB(e={}){const{defaultChecked:t,isChecked:n,isFocusable:r,isDisabled:o,isReadOnly:s,isRequired:a,onChange:c,isInvalid:d,name:p,value:h,id:m,"data-radiogroup":v,"aria-describedby":b,...w}=e,y=`radio-${f.useId()}`,S=vd(),_=!!k6()||!!v;let P=!!S&&!_?S.id:y;P=m??P;const E=o??(S==null?void 0:S.isDisabled),O=s??(S==null?void 0:S.isReadOnly),R=a??(S==null?void 0:S.isRequired),M=d??(S==null?void 0:S.isInvalid),[A,T]=f.useState(!1),[$,Q]=f.useState(!1),[B,V]=f.useState(!1),[q,G]=f.useState(!1),[D,L]=f.useState(!!t),W=typeof n<"u",Y=W?n:D;f.useEffect(()=>F_(T),[]);const ae=f.useCallback(ie=>{if(O||E){ie.preventDefault();return}W||L(ie.target.checked),c==null||c(ie)},[W,E,O,c]),ye=f.useCallback(ie=>{ie.key===" "&&G(!0)},[G]),ce=f.useCallback(ie=>{ie.key===" "&&G(!1)},[G]),X=f.useCallback((ie={},ge=null)=>({...ie,ref:ge,"data-active":Ft(q),"data-hover":Ft(B),"data-disabled":Ft(E),"data-invalid":Ft(M),"data-checked":Ft(Y),"data-focus":Ft($),"data-focus-visible":Ft($&&A),"data-readonly":Ft(O),"aria-hidden":!0,onMouseDown:nt(ie.onMouseDown,()=>G(!0)),onMouseUp:nt(ie.onMouseUp,()=>G(!1)),onMouseEnter:nt(ie.onMouseEnter,()=>V(!0)),onMouseLeave:nt(ie.onMouseLeave,()=>V(!1))}),[q,B,E,M,Y,$,O,A]),{onFocus:K,onBlur:U}=S??{},se=f.useCallback((ie={},ge=null)=>{const ke=E&&!r;return{...ie,id:P,ref:ge,type:"radio",name:p,value:h,onChange:nt(ie.onChange,ae),onBlur:nt(U,ie.onBlur,()=>Q(!1)),onFocus:nt(K,ie.onFocus,()=>Q(!0)),onKeyDown:nt(ie.onKeyDown,ye),onKeyUp:nt(ie.onKeyUp,ce),checked:Y,disabled:ke,readOnly:O,required:R,"aria-invalid":ns(M),"aria-disabled":ns(ke),"aria-required":ns(R),"data-readonly":Ft(O),"aria-describedby":b,style:ZL}},[E,r,P,p,h,ae,U,K,ye,ce,Y,O,R,M,b]);return{state:{isInvalid:M,isFocused:$,isChecked:Y,isActive:q,isHovered:B,isDisabled:E,isReadOnly:O,isRequired:R},getCheckboxProps:X,getRadioProps:X,getInputProps:se,getLabelProps:(ie={},ge=null)=>({...ie,ref:ge,onMouseDown:nt(ie.onMouseDown,tB),"data-disabled":Ft(E),"data-checked":Ft(Y),"data-invalid":Ft(M)}),getRootProps:(ie,ge=null)=>({...ie,ref:ge,"data-disabled":Ft(E),"data-checked":Ft(Y),"data-invalid":Ft(M)}),htmlProps:w}}function tB(e){e.preventDefault(),e.stopPropagation()}function nB(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 ya=Ae((e,t)=>{var n;const r=k6(),{onChange:o,value:s}=e,a=Fr("Radio",{...r,...e}),c=qn(e),{spacing:d="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 w=e.isChecked;(r==null?void 0:r.value)!=null&&s!=null&&(w=r.value===s);let y=o;r!=null&&r.onChange&&s!=null&&(y=Qh(r.onChange,o));const S=(n=e==null?void 0:e.name)!=null?n:r==null?void 0:r.name,{getInputProps:k,getCheckboxProps:_,getLabelProps:I,getRootProps:P,htmlProps:E}=eB({...b,isChecked:w,isFocusable:m,isDisabled:h,onChange:y,name:S}),[O,R]=nB(E,j5),M=_(R),A=k(v,t),T=I(),$=Object.assign({},O,P()),Q={display:"inline-flex",alignItems:"center",verticalAlign:"top",cursor:"pointer",position:"relative",...a.container},B={display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,...a.control},V={userSelect:"none",marginStart:d,...a.label};return i.jsxs(je.label,{className:"chakra-radio",...$,__css:Q,children:[i.jsx("input",{className:"chakra-radio__input",...A}),i.jsx(je.span,{className:"chakra-radio__control",...M,__css:B}),p&&i.jsx(je.span,{className:"chakra-radio__label",...T,__css:V,children:p})]})});ya.displayName="Radio";var _6=Ae(function(t,n){const{children:r,placeholder:o,className:s,...a}=t;return i.jsxs(je.select,{...a,ref:n,className:Ct("chakra-select",s),children:[o&&i.jsx("option",{value:"",children:o}),r]})});_6.displayName="SelectField";function rB(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 P6=Ae((e,t)=>{var n;const r=Fr("Select",e),{rootProps:o,placeholder:s,icon:a,color:c,height:d,h:p,minH:h,minHeight:m,iconColor:v,iconSize:b,...w}=qn(e),[y,S]=rB(w,j5),k=tb(S),_={width:"100%",height:"fit-content",position:"relative",color:c},I={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return i.jsxs(je.div,{className:"chakra-select__wrapper",__css:_,...y,...o,children:[i.jsx(_6,{ref:t,height:p??d,minH:h??m,placeholder:s,...k,__css:I,children:e.children}),i.jsx(j6,{"data-disabled":Ft(k.disabled),...(v||c)&&{color:v||c},__css:r.icon,...b&&{fontSize:b},children:a})]})});P6.displayName="Select";var oB=e=>i.jsx("svg",{viewBox:"0 0 24 24",...e,children:i.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})}),sB=je("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),j6=e=>{const{children:t=i.jsx(oB,{}),...n}=e,r=f.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return i.jsx(sB,{...n,className:"chakra-select__icon-wrapper",children:f.isValidElement(t)?r:null})};j6.displayName="SelectIcon";function aB(){const e=f.useRef(!0);return f.useEffect(()=>{e.current=!1},[]),e.current}function iB(e){const t=f.useRef();return f.useEffect(()=>{t.current=e},[e]),t.current}var lB=je("div",{baseStyle:{boxShadow:"none",backgroundClip:"padding-box",cursor:"default",color:"transparent",pointerEvents:"none",userSelect:"none","&::before, &::after, *":{visibility:"hidden"}}}),Hv=I5("skeleton-start-color"),Wv=I5("skeleton-end-color"),cB=za({from:{opacity:0},to:{opacity:1}}),uB=za({from:{borderColor:Hv.reference,background:Hv.reference},to:{borderColor:Wv.reference,background:Wv.reference}}),gm=Ae((e,t)=>{const n={...e,fadeDuration:typeof e.fadeDuration=="number"?e.fadeDuration:.4,speed:typeof e.speed=="number"?e.speed:.8},r=ia("Skeleton",n),o=aB(),{startColor:s="",endColor:a="",isLoaded:c,fadeDuration:d,speed:p,className:h,fitContent:m,...v}=qn(n),[b,w]=Ac("colors",[s,a]),y=iB(c),S=Ct("chakra-skeleton",h),k={...b&&{[Hv.variable]:b},...w&&{[Wv.variable]:w}};if(c){const _=o||y?"none":`${cB} ${d}s`;return i.jsx(je.div,{ref:t,className:S,__css:{animation:_},...v})}return i.jsx(lB,{ref:t,className:S,...v,__css:{width:m?"fit-content":void 0,...r,...k,_dark:{...r._dark,...k},animation:`${p}s linear infinite alternate ${uB}`}})});gm.displayName="Skeleton";var Jo=e=>e?"":void 0,lc=e=>e?!0:void 0,Ii=(...e)=>e.filter(Boolean).join(" ");function cc(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function dB(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 ju(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var wp={width:0,height:0},Nf=e=>e||wp;function I6(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:o}=e,s=y=>{var S;const k=(S=r[y])!=null?S:wp;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...ju({orientation:t,vertical:{bottom:`calc(${n[y]}% - ${k.height/2}px)`},horizontal:{left:`calc(${n[y]}% - ${k.width/2}px)`}})}},a=t==="vertical"?r.reduce((y,S)=>Nf(y).height>Nf(S).height?y:S,wp):r.reduce((y,S)=>Nf(y).width>Nf(S).width?y:S,wp),c={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...ju({orientation:t,vertical:a?{paddingLeft:a.width/2,paddingRight:a.width/2}:{},horizontal:a?{paddingTop:a.height/2,paddingBottom:a.height/2}:{}})},d={position:"absolute",...ju({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]),w={...d,...ju({orientation:t,vertical:o?{height:`${b}%`,top:`${v}%`}:{height:`${b}%`,bottom:`${v}%`},horizontal:o?{width:`${b}%`,right:`${v}%`}:{width:`${b}%`,left:`${v}%`}})};return{trackStyle:d,innerTrackStyle:w,rootStyle:c,getThumbStyle:s}}function E6(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function fB(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function pB(e){const t=mB(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function O6(e){return!!e.touches}function hB(e){return O6(e)&&e.touches.length>1}function mB(e){var t;return(t=e.view)!=null?t:window}function gB(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function vB(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function R6(e,t="page"){return O6(e)?gB(e,t):vB(e,t)}function bB(e){return t=>{const n=pB(t);(!n||n&&t.button===0)&&e(t)}}function yB(e,t=!1){function n(o){e(o,{point:R6(o)})}return t?bB(n):n}function Sp(e,t,n,r){return fB(e,t,yB(n,t==="pointerdown"),r)}var xB=Object.defineProperty,wB=(e,t,n)=>t in e?xB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,bs=(e,t,n)=>(wB(e,typeof t!="symbol"?t+"":t,n),n),SB=class{constructor(e,t,n){bs(this,"history",[]),bs(this,"startEvent",null),bs(this,"lastEvent",null),bs(this,"lastEventInfo",null),bs(this,"handlers",{}),bs(this,"removeListeners",()=>{}),bs(this,"threshold",3),bs(this,"win"),bs(this,"updatePoint",()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const c=k0(this.lastEventInfo,this.history),d=this.startEvent!==null,p=PB(c.offset,{x:0,y:0})>=this.threshold;if(!d&&!p)return;const{timestamp:h}=ww();this.history.push({...c.point,timestamp:h});const{onStart:m,onMove:v}=this.handlers;d||(m==null||m(this.lastEvent,c),this.startEvent=this.lastEvent),v==null||v(this.lastEvent,c)}),bs(this,"onPointerMove",(c,d)=>{this.lastEvent=c,this.lastEventInfo=d,V9.update(this.updatePoint,!0)}),bs(this,"onPointerUp",(c,d)=>{const p=k0(d,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,hB(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const o={point:R6(e)},{timestamp:s}=ww();this.history=[{...o.point,timestamp:s}];const{onSessionStart:a}=t;a==null||a(e,k0(o,this.history)),this.removeListeners=_B(Sp(this.win,"pointermove",this.onPointerMove),Sp(this.win,"pointerup",this.onPointerUp),Sp(this.win,"pointercancel",this.onPointerUp))}updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),U9.update(this.updatePoint)}};function iS(e,t){return{x:e.x-t.x,y:e.y-t.y}}function k0(e,t){return{point:e.point,delta:iS(e.point,t[t.length-1]),offset:iS(e.point,t[0]),velocity:kB(t,.1)}}var CB=e=>e*1e3;function kB(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>CB(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 a={x:(o.x-r.x)/s,y:(o.y-r.y)/s};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}function _B(...e){return t=>e.reduce((n,r)=>r(n),t)}function _0(e,t){return Math.abs(e-t)}function lS(e){return"x"in e&&"y"in e}function PB(e,t){if(typeof e=="number"&&typeof t=="number")return _0(e,t);if(lS(e)&&lS(t)){const n=_0(e.x,t.x),r=_0(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function M6(e){const t=f.useRef(null);return t.current=e,t}function D6(e,t){const{onPan:n,onPanStart:r,onPanEnd:o,onPanSessionStart:s,onPanSessionEnd:a,threshold:c}=t,d=!!(n||r||o||s||a),p=f.useRef(null),h=M6({onSessionStart:s,onSessionEnd:a,onStart:r,onMove:n,onEnd(m,v){p.current=null,o==null||o(m,v)}});f.useEffect(()=>{var m;(m=p.current)==null||m.updateHandlers(h.current)}),f.useEffect(()=>{const m=e.current;if(!m||!d)return;function v(b){p.current=new SB(b,h.current,c)}return Sp(m,"pointerdown",v)},[e,d,h,c]),f.useEffect(()=>()=>{var m;(m=p.current)==null||m.end(),p.current=null},[])}function jB(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 a,c;if("borderBoxSize"in s){const d=s.borderBoxSize,p=Array.isArray(d)?d[0]:d;a=p.inlineSize,c=p.blockSize}else a=e.offsetWidth,c=e.offsetHeight;t({width:a,height:c})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var IB=globalThis!=null&&globalThis.document?f.useLayoutEffect:f.useEffect;function EB(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 A6({getNodes:e,observeMutation:t=!0}){const[n,r]=f.useState([]),[o,s]=f.useState(0);return IB(()=>{const a=e(),c=a.map((d,p)=>jB(d,h=>{r(m=>[...m.slice(0,p),h,...m.slice(p+1)])}));if(t){const d=a[0];c.push(EB(d,()=>{s(p=>p+1)}))}return()=>{c.forEach(d=>{d==null||d()})}},[o]),n}function OB(e){return typeof e=="object"&&e!==null&&"current"in e}function RB(e){const[t]=A6({observeMutation:!1,getNodes(){return[OB(e)?e.current:e]}});return t}function MB(e){const{min:t=0,max:n=100,onChange:r,value:o,defaultValue:s,isReversed:a,direction:c="ltr",orientation:d="horizontal",id:p,isDisabled:h,isReadOnly:m,onChangeStart:v,onChangeEnd:b,step:w=1,getAriaValueText:y,"aria-valuetext":S,"aria-label":k,"aria-labelledby":_,name:I,focusThumbOnChange:P=!0,minStepsBetweenThumbs:E=0,...O}=e,R=rr(v),M=rr(b),A=rr(y),T=E6({isReversed:a,direction:c,orientation:d}),[$,Q]=Nc({value:o,defaultValue:s??[25,75],onChange:r});if(!Array.isArray($))throw new TypeError(`[range-slider] You passed an invalid value for \`value\` or \`defaultValue\`, expected \`Array\` but got \`${typeof $}\``);const[B,V]=f.useState(!1),[q,G]=f.useState(!1),[D,L]=f.useState(-1),W=!(h||m),Y=f.useRef($),ae=$.map(Pe=>oc(Pe,t,n)),ye=E*w,ce=DB(ae,t,n,ye),X=f.useRef({eventSource:null,value:[],valueBounds:[]});X.current.value=ae,X.current.valueBounds=ce;const K=ae.map(Pe=>n-Pe+t),se=(T?K:ae).map(Pe=>Lp(Pe,t,n)),re=d==="vertical",oe=f.useRef(null),pe=f.useRef(null),ie=A6({getNodes(){const Pe=pe.current,Ze=Pe==null?void 0:Pe.querySelectorAll("[role=slider]");return Ze?Array.from(Ze):[]}}),ge=f.useId(),xe=dB(p??ge),de=f.useCallback(Pe=>{var Ze,Qe;if(!oe.current)return;X.current.eventSource="pointer";const dt=oe.current.getBoundingClientRect(),{clientX:Lt,clientY:lr}=(Qe=(Ze=Pe.touches)==null?void 0:Ze[0])!=null?Qe:Pe,pn=re?dt.bottom-lr:Lt-dt.left,ln=re?dt.height:dt.width;let Hr=pn/ln;return T&&(Hr=1-Hr),V_(Hr,t,n)},[re,T,n,t]),Te=(n-t)/10,Oe=w||(n-t)/100,$e=f.useMemo(()=>({setValueAtIndex(Pe,Ze){if(!W)return;const Qe=X.current.valueBounds[Pe];Ze=parseFloat(Ov(Ze,Qe.min,Oe)),Ze=oc(Ze,Qe.min,Qe.max);const dt=[...X.current.value];dt[Pe]=Ze,Q(dt)},setActiveIndex:L,stepUp(Pe,Ze=Oe){const Qe=X.current.value[Pe],dt=T?Qe-Ze:Qe+Ze;$e.setValueAtIndex(Pe,dt)},stepDown(Pe,Ze=Oe){const Qe=X.current.value[Pe],dt=T?Qe+Ze:Qe-Ze;$e.setValueAtIndex(Pe,dt)},reset(){Q(Y.current)}}),[Oe,T,Q,W]),kt=f.useCallback(Pe=>{const Ze=Pe.key,dt={ArrowRight:()=>$e.stepUp(D),ArrowUp:()=>$e.stepUp(D),ArrowLeft:()=>$e.stepDown(D),ArrowDown:()=>$e.stepDown(D),PageUp:()=>$e.stepUp(D,Te),PageDown:()=>$e.stepDown(D,Te),Home:()=>{const{min:Lt}=ce[D];$e.setValueAtIndex(D,Lt)},End:()=>{const{max:Lt}=ce[D];$e.setValueAtIndex(D,Lt)}}[Ze];dt&&(Pe.preventDefault(),Pe.stopPropagation(),dt(Pe),X.current.eventSource="keyboard")},[$e,D,Te,ce]),{getThumbStyle:ct,rootStyle:on,trackStyle:vt,innerTrackStyle:bt}=f.useMemo(()=>I6({isReversed:T,orientation:d,thumbRects:ie,thumbPercents:se}),[T,d,se,ie]),Se=f.useCallback(Pe=>{var Ze;const Qe=Pe??D;if(Qe!==-1&&P){const dt=xe.getThumb(Qe),Lt=(Ze=pe.current)==null?void 0:Ze.ownerDocument.getElementById(dt);Lt&&setTimeout(()=>Lt.focus())}},[P,D,xe]);Ba(()=>{X.current.eventSource==="keyboard"&&(M==null||M(X.current.value))},[ae,M]);const Me=Pe=>{const Ze=de(Pe)||0,Qe=X.current.value.map(ln=>Math.abs(ln-Ze)),dt=Math.min(...Qe);let Lt=Qe.indexOf(dt);const lr=Qe.filter(ln=>ln===dt);lr.length>1&&Ze>X.current.value[Lt]&&(Lt=Lt+lr.length-1),L(Lt),$e.setValueAtIndex(Lt,Ze),Se(Lt)},Pt=Pe=>{if(D==-1)return;const Ze=de(Pe)||0;L(D),$e.setValueAtIndex(D,Ze),Se(D)};D6(pe,{onPanSessionStart(Pe){W&&(V(!0),Me(Pe),R==null||R(X.current.value))},onPanSessionEnd(){W&&(V(!1),M==null||M(X.current.value))},onPan(Pe){W&&Pt(Pe)}});const Tt=f.useCallback((Pe={},Ze=null)=>({...Pe,...O,id:xe.root,ref:cn(Ze,pe),tabIndex:-1,"aria-disabled":lc(h),"data-focused":Jo(q),style:{...Pe.style,...on}}),[O,h,q,on,xe]),we=f.useCallback((Pe={},Ze=null)=>({...Pe,ref:cn(Ze,oe),id:xe.track,"data-disabled":Jo(h),style:{...Pe.style,...vt}}),[h,vt,xe]),ht=f.useCallback((Pe={},Ze=null)=>({...Pe,ref:Ze,id:xe.innerTrack,style:{...Pe.style,...bt}}),[bt,xe]),$t=f.useCallback((Pe,Ze=null)=>{var Qe;const{index:dt,...Lt}=Pe,lr=ae[dt];if(lr==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${dt}\`. The \`value\` or \`defaultValue\` length is : ${ae.length}`);const pn=ce[dt];return{...Lt,ref:Ze,role:"slider",tabIndex:W?0:void 0,id:xe.getThumb(dt),"data-active":Jo(B&&D===dt),"aria-valuetext":(Qe=A==null?void 0:A(lr))!=null?Qe:S==null?void 0:S[dt],"aria-valuemin":pn.min,"aria-valuemax":pn.max,"aria-valuenow":lr,"aria-orientation":d,"aria-disabled":lc(h),"aria-readonly":lc(m),"aria-label":k==null?void 0:k[dt],"aria-labelledby":k!=null&&k[dt]||_==null?void 0:_[dt],style:{...Pe.style,...ct(dt)},onKeyDown:cc(Pe.onKeyDown,kt),onFocus:cc(Pe.onFocus,()=>{G(!0),L(dt)}),onBlur:cc(Pe.onBlur,()=>{G(!1),L(-1)})}},[xe,ae,ce,W,B,D,A,S,d,h,m,k,_,ct,kt,G]),zt=f.useCallback((Pe={},Ze=null)=>({...Pe,ref:Ze,id:xe.output,htmlFor:ae.map((Qe,dt)=>xe.getThumb(dt)).join(" "),"aria-live":"off"}),[xe,ae]),ze=f.useCallback((Pe,Ze=null)=>{const{value:Qe,...dt}=Pe,Lt=!(Qen),lr=Qe>=ae[0]&&Qe<=ae[ae.length-1];let pn=Lp(Qe,t,n);pn=T?100-pn:pn;const ln={position:"absolute",pointerEvents:"none",...ju({orientation:d,vertical:{bottom:`${pn}%`},horizontal:{left:`${pn}%`}})};return{...dt,ref:Ze,id:xe.getMarker(Pe.value),role:"presentation","aria-hidden":!0,"data-disabled":Jo(h),"data-invalid":Jo(!Lt),"data-highlighted":Jo(lr),style:{...Pe.style,...ln}}},[h,T,n,t,d,ae,xe]),qe=f.useCallback((Pe,Ze=null)=>{const{index:Qe,...dt}=Pe;return{...dt,ref:Ze,id:xe.getInput(Qe),type:"hidden",value:ae[Qe],name:Array.isArray(I)?I[Qe]:`${I}-${Qe}`}},[I,ae,xe]);return{state:{value:ae,isFocused:q,isDragging:B,getThumbPercent:Pe=>se[Pe],getThumbMinValue:Pe=>ce[Pe].min,getThumbMaxValue:Pe=>ce[Pe].max},actions:$e,getRootProps:Tt,getTrackProps:we,getInnerTrackProps:ht,getThumbProps:$t,getMarkerProps:ze,getInputProps:qe,getOutputProps:zt}}function DB(e,t,n,r){return e.map((o,s)=>{const a=s===0?t:e[s-1]+r,c=s===e.length-1?n:e[s+1]-r;return{min:a,max:c}})}var[AB,vm]=Dn({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[TB,bm]=Dn({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),T6=Ae(function(t,n){const r={orientation:"horizontal",...t},o=Fr("Slider",r),s=qn(r),{direction:a}=Dc();s.direction=a;const{getRootProps:c,...d}=MB(s),p=f.useMemo(()=>({...d,name:r.name}),[d,r.name]);return i.jsx(AB,{value:p,children:i.jsx(TB,{value:o,children:i.jsx(je.div,{...c({},n),className:"chakra-slider",__css:o.container,children:r.children})})})});T6.displayName="RangeSlider";var Vv=Ae(function(t,n){const{getThumbProps:r,getInputProps:o,name:s}=vm(),a=bm(),c=r(t,n);return i.jsxs(je.div,{...c,className:Ii("chakra-slider__thumb",t.className),__css:a.thumb,children:[c.children,s&&i.jsx("input",{...o({index:t.index})})]})});Vv.displayName="RangeSliderThumb";var N6=Ae(function(t,n){const{getTrackProps:r}=vm(),o=bm(),s=r(t,n);return i.jsx(je.div,{...s,className:Ii("chakra-slider__track",t.className),__css:o.track,"data-testid":"chakra-range-slider-track"})});N6.displayName="RangeSliderTrack";var $6=Ae(function(t,n){const{getInnerTrackProps:r}=vm(),o=bm(),s=r(t,n);return i.jsx(je.div,{...s,className:"chakra-slider__filled-track",__css:o.filledTrack})});$6.displayName="RangeSliderFilledTrack";var Cp=Ae(function(t,n){const{getMarkerProps:r}=vm(),o=bm(),s=r(t,n);return i.jsx(je.div,{...s,className:Ii("chakra-slider__marker",t.className),__css:o.mark})});Cp.displayName="RangeSliderMark";function NB(e){var t;const{min:n=0,max:r=100,onChange:o,value:s,defaultValue:a,isReversed:c,direction:d="ltr",orientation:p="horizontal",id:h,isDisabled:m,isReadOnly:v,onChangeStart:b,onChangeEnd:w,step:y=1,getAriaValueText:S,"aria-valuetext":k,"aria-label":_,"aria-labelledby":I,name:P,focusThumbOnChange:E=!0,...O}=e,R=rr(b),M=rr(w),A=rr(S),T=E6({isReversed:c,direction:d,orientation:p}),[$,Q]=Nc({value:s,defaultValue:a??zB(n,r),onChange:o}),[B,V]=f.useState(!1),[q,G]=f.useState(!1),D=!(m||v),L=(r-n)/10,W=y||(r-n)/100,Y=oc($,n,r),ae=r-Y+n,ce=Lp(T?ae:Y,n,r),X=p==="vertical",K=M6({min:n,max:r,step:y,isDisabled:m,value:Y,isInteractive:D,isReversed:T,isVertical:X,eventSource:null,focusThumbOnChange:E,orientation:p}),U=f.useRef(null),se=f.useRef(null),re=f.useRef(null),oe=f.useId(),pe=h??oe,[ie,ge]=[`slider-thumb-${pe}`,`slider-track-${pe}`],ke=f.useCallback(ze=>{var qe,Pn;if(!U.current)return;const Pe=K.current;Pe.eventSource="pointer";const Ze=U.current.getBoundingClientRect(),{clientX:Qe,clientY:dt}=(Pn=(qe=ze.touches)==null?void 0:qe[0])!=null?Pn:ze,Lt=X?Ze.bottom-dt:Qe-Ze.left,lr=X?Ze.height:Ze.width;let pn=Lt/lr;T&&(pn=1-pn);let ln=V_(pn,Pe.min,Pe.max);return Pe.step&&(ln=parseFloat(Ov(ln,Pe.min,Pe.step))),ln=oc(ln,Pe.min,Pe.max),ln},[X,T,K]),xe=f.useCallback(ze=>{const qe=K.current;qe.isInteractive&&(ze=parseFloat(Ov(ze,qe.min,W)),ze=oc(ze,qe.min,qe.max),Q(ze))},[W,Q,K]),de=f.useMemo(()=>({stepUp(ze=W){const qe=T?Y-ze:Y+ze;xe(qe)},stepDown(ze=W){const qe=T?Y+ze:Y-ze;xe(qe)},reset(){xe(a||0)},stepTo(ze){xe(ze)}}),[xe,T,Y,W,a]),Te=f.useCallback(ze=>{const qe=K.current,Pe={ArrowRight:()=>de.stepUp(),ArrowUp:()=>de.stepUp(),ArrowLeft:()=>de.stepDown(),ArrowDown:()=>de.stepDown(),PageUp:()=>de.stepUp(L),PageDown:()=>de.stepDown(L),Home:()=>xe(qe.min),End:()=>xe(qe.max)}[ze.key];Pe&&(ze.preventDefault(),ze.stopPropagation(),Pe(ze),qe.eventSource="keyboard")},[de,xe,L,K]),Oe=(t=A==null?void 0:A(Y))!=null?t:k,$e=RB(se),{getThumbStyle:kt,rootStyle:ct,trackStyle:on,innerTrackStyle:vt}=f.useMemo(()=>{const ze=K.current,qe=$e??{width:0,height:0};return I6({isReversed:T,orientation:ze.orientation,thumbRects:[qe],thumbPercents:[ce]})},[T,$e,ce,K]),bt=f.useCallback(()=>{K.current.focusThumbOnChange&&setTimeout(()=>{var qe;return(qe=se.current)==null?void 0:qe.focus()})},[K]);Ba(()=>{const ze=K.current;bt(),ze.eventSource==="keyboard"&&(M==null||M(ze.value))},[Y,M]);function Se(ze){const qe=ke(ze);qe!=null&&qe!==K.current.value&&Q(qe)}D6(re,{onPanSessionStart(ze){const qe=K.current;qe.isInteractive&&(V(!0),bt(),Se(ze),R==null||R(qe.value))},onPanSessionEnd(){const ze=K.current;ze.isInteractive&&(V(!1),M==null||M(ze.value))},onPan(ze){K.current.isInteractive&&Se(ze)}});const Me=f.useCallback((ze={},qe=null)=>({...ze,...O,ref:cn(qe,re),tabIndex:-1,"aria-disabled":lc(m),"data-focused":Jo(q),style:{...ze.style,...ct}}),[O,m,q,ct]),Pt=f.useCallback((ze={},qe=null)=>({...ze,ref:cn(qe,U),id:ge,"data-disabled":Jo(m),style:{...ze.style,...on}}),[m,ge,on]),Tt=f.useCallback((ze={},qe=null)=>({...ze,ref:qe,style:{...ze.style,...vt}}),[vt]),we=f.useCallback((ze={},qe=null)=>({...ze,ref:cn(qe,se),role:"slider",tabIndex:D?0:void 0,id:ie,"data-active":Jo(B),"aria-valuetext":Oe,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":Y,"aria-orientation":p,"aria-disabled":lc(m),"aria-readonly":lc(v),"aria-label":_,"aria-labelledby":_?void 0:I,style:{...ze.style,...kt(0)},onKeyDown:cc(ze.onKeyDown,Te),onFocus:cc(ze.onFocus,()=>G(!0)),onBlur:cc(ze.onBlur,()=>G(!1))}),[D,ie,B,Oe,n,r,Y,p,m,v,_,I,kt,Te]),ht=f.useCallback((ze,qe=null)=>{const Pn=!(ze.valuer),Pe=Y>=ze.value,Ze=Lp(ze.value,n,r),Qe={position:"absolute",pointerEvents:"none",...$B({orientation:p,vertical:{bottom:T?`${100-Ze}%`:`${Ze}%`},horizontal:{left:T?`${100-Ze}%`:`${Ze}%`}})};return{...ze,ref:qe,role:"presentation","aria-hidden":!0,"data-disabled":Jo(m),"data-invalid":Jo(!Pn),"data-highlighted":Jo(Pe),style:{...ze.style,...Qe}}},[m,T,r,n,p,Y]),$t=f.useCallback((ze={},qe=null)=>({...ze,ref:qe,type:"hidden",value:Y,name:P}),[P,Y]);return{state:{value:Y,isFocused:q,isDragging:B},actions:de,getRootProps:Me,getTrackProps:Pt,getInnerTrackProps:Tt,getThumbProps:we,getMarkerProps:ht,getInputProps:$t}}function $B(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function zB(e,t){return t"}),[BB,xm]=Dn({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),z6=Ae((e,t)=>{var n;const r={...e,orientation:(n=e==null?void 0:e.orientation)!=null?n:"horizontal"},o=Fr("Slider",r),s=qn(r),{direction:a}=Dc();s.direction=a;const{getInputProps:c,getRootProps:d,...p}=NB(s),h=d(),m=c({},t);return i.jsx(LB,{value:p,children:i.jsx(BB,{value:o,children:i.jsxs(je.div,{...h,className:Ii("chakra-slider",r.className),__css:o.container,children:[r.children,i.jsx("input",{...m})]})})})});z6.displayName="Slider";var L6=Ae((e,t)=>{const{getThumbProps:n}=ym(),r=xm(),o=n(e,t);return i.jsx(je.div,{...o,className:Ii("chakra-slider__thumb",e.className),__css:r.thumb})});L6.displayName="SliderThumb";var B6=Ae((e,t)=>{const{getTrackProps:n}=ym(),r=xm(),o=n(e,t);return i.jsx(je.div,{...o,className:Ii("chakra-slider__track",e.className),__css:r.track})});B6.displayName="SliderTrack";var F6=Ae((e,t)=>{const{getInnerTrackProps:n}=ym(),r=xm(),o=n(e,t);return i.jsx(je.div,{...o,className:Ii("chakra-slider__filled-track",e.className),__css:r.filledTrack})});F6.displayName="SliderFilledTrack";var Ul=Ae((e,t)=>{const{getMarkerProps:n}=ym(),r=xm(),o=n(e,t);return i.jsx(je.div,{...o,className:Ii("chakra-slider__marker",e.className),__css:r.mark})});Ul.displayName="SliderMark";var zb=Ae(function(t,n){const r=Fr("Switch",t),{spacing:o="0.5rem",children:s,...a}=qn(t),{getIndicatorProps:c,getInputProps:d,getCheckboxProps:p,getRootProps:h,getLabelProps:m}=H_(a),v=f.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),b=f.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),w=f.useMemo(()=>({userSelect:"none",marginStart:o,...r.label}),[o,r.label]);return i.jsxs(je.label,{...h(),className:Ct("chakra-switch",t.className),__css:v,children:[i.jsx("input",{className:"chakra-switch__input",...d({},n)}),i.jsx(je.span,{...p(),className:"chakra-switch__track",__css:b,children:i.jsx(je.span,{__css:r.thumb,className:"chakra-switch__thumb",...c()})}),s&&i.jsx(je.span,{className:"chakra-switch__label",...m(),__css:w,children:s})]})});zb.displayName="Switch";var[FB,HB,WB,VB]=J1();function UB(e){var t;const{defaultIndex:n,onChange:r,index:o,isManual:s,isLazy:a,lazyBehavior:c="unmount",orientation:d="horizontal",direction:p="ltr",...h}=e,[m,v]=f.useState(n??0),[b,w]=Nc({defaultValue:n??0,value:o,onChange:r});f.useEffect(()=>{o!=null&&v(o)},[o]);const y=WB(),S=f.useId();return{id:`tabs-${(t=e.id)!=null?t:S}`,selectedIndex:b,focusedIndex:m,setSelectedIndex:w,setFocusedIndex:v,isManual:s,isLazy:a,lazyBehavior:c,orientation:d,descendants:y,direction:p,htmlProps:h}}var[GB,wm]=Dn({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function qB(e){const{focusedIndex:t,orientation:n,direction:r}=wm(),o=HB(),s=f.useCallback(a=>{const c=()=>{var _;const I=o.nextEnabled(t);I&&((_=I.node)==null||_.focus())},d=()=>{var _;const I=o.prevEnabled(t);I&&((_=I.node)==null||_.focus())},p=()=>{var _;const I=o.firstEnabled();I&&((_=I.node)==null||_.focus())},h=()=>{var _;const I=o.lastEnabled();I&&((_=I.node)==null||_.focus())},m=n==="horizontal",v=n==="vertical",b=a.key,w=r==="ltr"?"ArrowLeft":"ArrowRight",y=r==="ltr"?"ArrowRight":"ArrowLeft",k={[w]:()=>m&&d(),[y]:()=>m&&c(),ArrowDown:()=>v&&c(),ArrowUp:()=>v&&d(),Home:p,End:h}[b];k&&(a.preventDefault(),k(a))},[o,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:nt(e.onKeyDown,s)}}function KB(e){const{isDisabled:t=!1,isFocusable:n=!1,...r}=e,{setSelectedIndex:o,isManual:s,id:a,setFocusedIndex:c,selectedIndex:d}=wm(),{index:p,register:h}=VB({disabled:t&&!n}),m=p===d,v=()=>{o(p)},b=()=>{c(p),!s&&!(t&&n)&&o(p)},w=G3({...r,ref:cn(h,e.ref),isDisabled:t,isFocusable:n,onClick:nt(e.onClick,v)}),y="button";return{...w,id:H6(a,p),role:"tab",tabIndex:m?0:-1,type:y,"aria-selected":m,"aria-controls":W6(a,p),onFocus:t?void 0:nt(e.onFocus,b)}}var[XB,YB]=Dn({});function QB(e){const t=wm(),{id:n,selectedIndex:r}=t,s=gd(e.children).map((a,c)=>f.createElement(XB,{key:c,value:{isSelected:c===r,id:W6(n,c),tabId:H6(n,c),selectedIndex:r}},a));return{...e,children:s}}function JB(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:o}=wm(),{isSelected:s,id:a,tabId:c}=YB(),d=f.useRef(!1);s&&(d.current=!0);const p=Ob({wasSelected:d.current,isSelected:s,enabled:r,mode:o});return{tabIndex:0,...n,children:p?t:null,role:"tabpanel","aria-labelledby":c,hidden:!s,id:a}}function H6(e,t){return`${e}--tab-${t}`}function W6(e,t){return`${e}--tabpanel-${t}`}var[ZB,Sm]=Dn({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Id=Ae(function(t,n){const r=Fr("Tabs",t),{children:o,className:s,...a}=qn(t),{htmlProps:c,descendants:d,...p}=UB(a),h=f.useMemo(()=>p,[p]),{isFitted:m,...v}=c;return i.jsx(FB,{value:d,children:i.jsx(GB,{value:h,children:i.jsx(ZB,{value:r,children:i.jsx(je.div,{className:Ct("chakra-tabs",s),ref:n,...v,__css:r.root,children:o})})})})});Id.displayName="Tabs";var Ed=Ae(function(t,n){const r=qB({...t,ref:n}),s={display:"flex",...Sm().tablist};return i.jsx(je.div,{...r,className:Ct("chakra-tabs__tablist",t.className),__css:s})});Ed.displayName="TabList";var Cm=Ae(function(t,n){const r=JB({...t,ref:n}),o=Sm();return i.jsx(je.div,{outline:"0",...r,className:Ct("chakra-tabs__tab-panel",t.className),__css:o.tabpanel})});Cm.displayName="TabPanel";var km=Ae(function(t,n){const r=QB(t),o=Sm();return i.jsx(je.div,{...r,width:"100%",ref:n,className:Ct("chakra-tabs__tab-panels",t.className),__css:o.tabpanels})});km.displayName="TabPanels";var Sc=Ae(function(t,n){const r=Sm(),o=KB({...t,ref:n}),s={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return i.jsx(je.button,{...o,className:Ct("chakra-tabs__tab",t.className),__css:s})});Sc.displayName="Tab";function eF(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var tF=["h","minH","height","minHeight"],V6=Ae((e,t)=>{const n=ia("Textarea",e),{className:r,rows:o,...s}=qn(e),a=tb(s),c=o?eF(n,tF):n;return i.jsx(je.textarea,{ref:t,rows:o,...a,className:Ct("chakra-textarea",r),__css:c})});V6.displayName="Textarea";var nF={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]}}}},Uv=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},kp=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function rF(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:o,closeOnScroll:s,closeOnPointerDown:a=o,closeOnEsc:c=!0,onOpen:d,onClose:p,placement:h,id:m,isOpen:v,defaultIsOpen:b,arrowSize:w=10,arrowShadowColor:y,arrowPadding:S,modifiers:k,isDisabled:_,gutter:I,offset:P,direction:E,...O}=e,{isOpen:R,onOpen:M,onClose:A}=Eb({isOpen:v,defaultIsOpen:b,onOpen:d,onClose:p}),{referenceRef:T,getPopperProps:$,getArrowInnerProps:Q,getArrowProps:B}=Ib({enabled:R,placement:h,arrowPadding:S,modifiers:k,gutter:I,offset:P,direction:E}),V=f.useId(),G=`tooltip-${m??V}`,D=f.useRef(null),L=f.useRef(),W=f.useCallback(()=>{L.current&&(clearTimeout(L.current),L.current=void 0)},[]),Y=f.useRef(),ae=f.useCallback(()=>{Y.current&&(clearTimeout(Y.current),Y.current=void 0)},[]),ye=f.useCallback(()=>{ae(),A()},[A,ae]),ce=oF(D,ye),X=f.useCallback(()=>{if(!_&&!L.current){R&&ce();const ge=kp(D);L.current=ge.setTimeout(M,t)}},[ce,_,R,M,t]),K=f.useCallback(()=>{W();const ge=kp(D);Y.current=ge.setTimeout(ye,n)},[n,ye,W]),U=f.useCallback(()=>{R&&r&&K()},[r,K,R]),se=f.useCallback(()=>{R&&a&&K()},[a,K,R]),re=f.useCallback(ge=>{R&&ge.key==="Escape"&&K()},[R,K]);Yi(()=>Uv(D),"keydown",c?re:void 0),Yi(()=>{const ge=D.current;if(!ge)return null;const ke=A3(ge);return ke.localName==="body"?kp(D):ke},"scroll",()=>{R&&s&&ye()},{passive:!0,capture:!0}),f.useEffect(()=>{_&&(W(),R&&A())},[_,R,A,W]),f.useEffect(()=>()=>{W(),ae()},[W,ae]),Yi(()=>D.current,"pointerleave",K);const oe=f.useCallback((ge={},ke=null)=>({...ge,ref:cn(D,ke,T),onPointerEnter:nt(ge.onPointerEnter,de=>{de.pointerType!=="touch"&&X()}),onClick:nt(ge.onClick,U),onPointerDown:nt(ge.onPointerDown,se),onFocus:nt(ge.onFocus,X),onBlur:nt(ge.onBlur,K),"aria-describedby":R?G:void 0}),[X,K,se,R,G,U,T]),pe=f.useCallback((ge={},ke=null)=>$({...ge,style:{...ge.style,[jr.arrowSize.var]:w?`${w}px`:void 0,[jr.arrowShadowColor.var]:y}},ke),[$,w,y]),ie=f.useCallback((ge={},ke=null)=>{const xe={...ge.style,position:"relative",transformOrigin:jr.transformOrigin.varRef};return{ref:ke,...O,...ge,id:G,role:"tooltip",style:xe}},[O,G]);return{isOpen:R,show:X,hide:K,getTriggerProps:oe,getTooltipProps:ie,getTooltipPositionerProps:pe,getArrowProps:B,getArrowInnerProps:Q}}var P0="chakra-ui:close-tooltip";function oF(e,t){return f.useEffect(()=>{const n=Uv(e);return n.addEventListener(P0,t),()=>n.removeEventListener(P0,t)},[t,e]),()=>{const n=Uv(e),r=kp(e);n.dispatchEvent(new r.CustomEvent(P0))}}function sF(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function aF(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var iF=je(Ir.div),wn=Ae((e,t)=>{var n,r;const o=ia("Tooltip",e),s=qn(e),a=Dc(),{children:c,label:d,shouldWrapChildren:p,"aria-label":h,hasArrow:m,bg:v,portalProps:b,background:w,backgroundColor:y,bgColor:S,motionProps:k,..._}=s,I=(r=(n=w??y)!=null?n:v)!=null?r:S;if(I){o.bg=I;const $=j7(a,"colors",I);o[jr.arrowBg.var]=$}const P=rF({..._,direction:a.direction}),E=typeof c=="string"||p;let O;if(E)O=i.jsx(je.span,{display:"inline-block",tabIndex:0,...P.getTriggerProps(),children:c});else{const $=f.Children.only(c);O=f.cloneElement($,P.getTriggerProps($.props,$.ref))}const R=!!h,M=P.getTooltipProps({},t),A=R?sF(M,["role","id"]):M,T=aF(M,["role","id"]);return d?i.jsxs(i.Fragment,{children:[O,i.jsx(ho,{children:P.isOpen&&i.jsx(Uu,{...b,children:i.jsx(je.div,{...P.getTooltipPositionerProps(),__css:{zIndex:o.zIndex,pointerEvents:"none"},children:i.jsxs(iF,{variants:nF,initial:"exit",animate:"enter",exit:"exit",...k,...A,__css:o,children:[d,R&&i.jsx(je.span,{srOnly:!0,...T,children:h}),m&&i.jsx(je.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper",children:i.jsx(je.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:o.bg}})})]})})})})]}):i.jsx(i.Fragment,{children:c})});wn.displayName="Tooltip";function lF(e,t={}){let n=f.useCallback(o=>t.keys?x9(e,t.keys,o):e.listen(o),[t.keys,e]),r=e.get.bind(e);return f.useSyncExternalStore(n,r,r)}const go=e=>e.system,cF=e=>e.system.toastQueue,U6=fe(go,e=>e.language,Ge),Cr=fe(e=>e,e=>e.system.isProcessing||!e.system.isConnected),uF=fe(go,e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=e;return{consoleLogLevel:t,shouldLogToConsole:n}},{memoizeOptions:{resultEqualityCheck:Jt}}),dF=()=>{const{consoleLogLevel:e,shouldLogToConsole:t}=z(uF);return f.useEffect(()=>{t?(localStorage.setItem("ROARR_LOG","true"),localStorage.setItem("ROARR_FILTER",`context.logLevel:>=${I7[e]}`)):localStorage.setItem("ROARR_LOG","false"),R2.ROARR.write=E7.createLogWriter()},[e,t]),f.useEffect(()=>{const r={...O7};M2.set(R2.Roarr.child(r))},[]),lF(M2)},fF=()=>{const e=te(),t=z(cF),n=K9();return f.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(R7())},[e,n,t]),null},Hc=()=>{const e=te();return f.useCallback(n=>e(On(Mn(n))),[e])};var pF=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 Od(e,t){var n=hF(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 hF(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),o=pF.get(r);o&&Object.defineProperty(e,"type",{value:o,writable:!1,configurable:!1,enumerable:!0})}return e}var mF=[".DS_Store","Thumbs.db"];function gF(e){return $c(this,void 0,void 0,function(){return zc(this,function(t){return Gp(e)&&vF(e.dataTransfer)?[2,wF(e.dataTransfer,e.type)]:bF(e)?[2,yF(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,xF(e)]:[2,[]]})})}function vF(e){return Gp(e)}function bF(e){return Gp(e)&&Gp(e.target)}function Gp(e){return typeof e=="object"&&e!==null}function yF(e){return Gv(e.target.files).map(function(t){return Od(t)})}function xF(e){return $c(this,void 0,void 0,function(){var t;return zc(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 Od(r)})]}})})}function wF(e,t){return $c(this,void 0,void 0,function(){var n,r;return zc(this,function(o){switch(o.label){case 0:return e.items?(n=Gv(e.items).filter(function(s){return s.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(SF))]):[3,2];case 1:return r=o.sent(),[2,cS(G6(r))];case 2:return[2,cS(Gv(e.files).map(function(s){return Od(s)}))]}})})}function cS(e){return e.filter(function(t){return mF.indexOf(t.name)===-1})}function Gv(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,hS(n)];if(e.sizen)return[!1,hS(n)]}return[!0,null]}function Ui(e){return e!=null}function zF(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,s=e.multiple,a=e.maxFiles,c=e.validator;return!s&&t.length>1||s&&a>=1&&t.length>a?!1:t.every(function(d){var p=Y6(d,n),h=ed(p,1),m=h[0],v=Q6(d,r,o),b=ed(v,1),w=b[0],y=c?c(d):null;return m&&w&&!y})}function qp(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function $f(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 gS(e){e.preventDefault()}function LF(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function BF(e){return e.indexOf("Edge/")!==-1}function FF(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return LF(e)||BF(e)}function Gs(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),a=1;ae.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function oH(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 Lb=f.forwardRef(function(e,t){var n=e.children,r=Kp(e,qF),o=Bb(r),s=o.open,a=Kp(o,KF);return f.useImperativeHandle(t,function(){return{open:s}},[s]),H.createElement(f.Fragment,null,n(dr(dr({},a),{},{open:s})))});Lb.displayName="Dropzone";var tP={disabled:!1,getFilesFromEvent:gF,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};Lb.defaultProps=tP;Lb.propTypes={children:Ln.func,accept:Ln.objectOf(Ln.arrayOf(Ln.string)),multiple:Ln.bool,preventDropOnDocument:Ln.bool,noClick:Ln.bool,noKeyboard:Ln.bool,noDrag:Ln.bool,noDragEventsBubbling:Ln.bool,minSize:Ln.number,maxSize:Ln.number,maxFiles:Ln.number,disabled:Ln.bool,getFilesFromEvent:Ln.func,onFileDialogCancel:Ln.func,onFileDialogOpen:Ln.func,useFsAccessApi:Ln.bool,autoFocus:Ln.bool,onDragEnter:Ln.func,onDragLeave:Ln.func,onDragOver:Ln.func,onDrop:Ln.func,onDropAccepted:Ln.func,onDropRejected:Ln.func,onError:Ln.func,validator:Ln.func};var Yv={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Bb(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=dr(dr({},tP),e),n=t.accept,r=t.disabled,o=t.getFilesFromEvent,s=t.maxSize,a=t.minSize,c=t.multiple,d=t.maxFiles,p=t.onDragEnter,h=t.onDragLeave,m=t.onDragOver,v=t.onDrop,b=t.onDropAccepted,w=t.onDropRejected,y=t.onFileDialogCancel,S=t.onFileDialogOpen,k=t.useFsAccessApi,_=t.autoFocus,I=t.preventDropOnDocument,P=t.noClick,E=t.noKeyboard,O=t.noDrag,R=t.noDragEventsBubbling,M=t.onError,A=t.validator,T=f.useMemo(function(){return VF(n)},[n]),$=f.useMemo(function(){return WF(n)},[n]),Q=f.useMemo(function(){return typeof S=="function"?S:bS},[S]),B=f.useMemo(function(){return typeof y=="function"?y:bS},[y]),V=f.useRef(null),q=f.useRef(null),G=f.useReducer(sH,Yv),D=j0(G,2),L=D[0],W=D[1],Y=L.isFocused,ae=L.isFileDialogActive,ye=f.useRef(typeof window<"u"&&window.isSecureContext&&k&&HF()),ce=function(){!ye.current&&ae&&setTimeout(function(){if(q.current){var Me=q.current.files;Me.length||(W({type:"closeDialog"}),B())}},300)};f.useEffect(function(){return window.addEventListener("focus",ce,!1),function(){window.removeEventListener("focus",ce,!1)}},[q,ae,B,ye]);var X=f.useRef([]),K=function(Me){V.current&&V.current.contains(Me.target)||(Me.preventDefault(),X.current=[])};f.useEffect(function(){return I&&(document.addEventListener("dragover",gS,!1),document.addEventListener("drop",K,!1)),function(){I&&(document.removeEventListener("dragover",gS),document.removeEventListener("drop",K))}},[V,I]),f.useEffect(function(){return!r&&_&&V.current&&V.current.focus(),function(){}},[V,_,r]);var U=f.useCallback(function(Se){M?M(Se):console.error(Se)},[M]),se=f.useCallback(function(Se){Se.preventDefault(),Se.persist(),ct(Se),X.current=[].concat(QF(X.current),[Se.target]),$f(Se)&&Promise.resolve(o(Se)).then(function(Me){if(!(qp(Se)&&!R)){var Pt=Me.length,Tt=Pt>0&&zF({files:Me,accept:T,minSize:a,maxSize:s,multiple:c,maxFiles:d,validator:A}),we=Pt>0&&!Tt;W({isDragAccept:Tt,isDragReject:we,isDragActive:!0,type:"setDraggedFiles"}),p&&p(Se)}}).catch(function(Me){return U(Me)})},[o,p,U,R,T,a,s,c,d,A]),re=f.useCallback(function(Se){Se.preventDefault(),Se.persist(),ct(Se);var Me=$f(Se);if(Me&&Se.dataTransfer)try{Se.dataTransfer.dropEffect="copy"}catch{}return Me&&m&&m(Se),!1},[m,R]),oe=f.useCallback(function(Se){Se.preventDefault(),Se.persist(),ct(Se);var Me=X.current.filter(function(Tt){return V.current&&V.current.contains(Tt)}),Pt=Me.indexOf(Se.target);Pt!==-1&&Me.splice(Pt,1),X.current=Me,!(Me.length>0)&&(W({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),$f(Se)&&h&&h(Se))},[V,h,R]),pe=f.useCallback(function(Se,Me){var Pt=[],Tt=[];Se.forEach(function(we){var ht=Y6(we,T),$t=j0(ht,2),zt=$t[0],ze=$t[1],qe=Q6(we,a,s),Pn=j0(qe,2),Pe=Pn[0],Ze=Pn[1],Qe=A?A(we):null;if(zt&&Pe&&!Qe)Pt.push(we);else{var dt=[ze,Ze];Qe&&(dt=dt.concat(Qe)),Tt.push({file:we,errors:dt.filter(function(Lt){return Lt})})}}),(!c&&Pt.length>1||c&&d>=1&&Pt.length>d)&&(Pt.forEach(function(we){Tt.push({file:we,errors:[$F]})}),Pt.splice(0)),W({acceptedFiles:Pt,fileRejections:Tt,type:"setFiles"}),v&&v(Pt,Tt,Me),Tt.length>0&&w&&w(Tt,Me),Pt.length>0&&b&&b(Pt,Me)},[W,c,T,a,s,d,v,b,w,A]),ie=f.useCallback(function(Se){Se.preventDefault(),Se.persist(),ct(Se),X.current=[],$f(Se)&&Promise.resolve(o(Se)).then(function(Me){qp(Se)&&!R||pe(Me,Se)}).catch(function(Me){return U(Me)}),W({type:"reset"})},[o,pe,U,R]),ge=f.useCallback(function(){if(ye.current){W({type:"openDialog"}),Q();var Se={multiple:c,types:$};window.showOpenFilePicker(Se).then(function(Me){return o(Me)}).then(function(Me){pe(Me,null),W({type:"closeDialog"})}).catch(function(Me){UF(Me)?(B(Me),W({type:"closeDialog"})):GF(Me)?(ye.current=!1,q.current?(q.current.value=null,q.current.click()):U(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."))):U(Me)});return}q.current&&(W({type:"openDialog"}),Q(),q.current.value=null,q.current.click())},[W,Q,B,k,pe,U,$,c]),ke=f.useCallback(function(Se){!V.current||!V.current.isEqualNode(Se.target)||(Se.key===" "||Se.key==="Enter"||Se.keyCode===32||Se.keyCode===13)&&(Se.preventDefault(),ge())},[V,ge]),xe=f.useCallback(function(){W({type:"focus"})},[]),de=f.useCallback(function(){W({type:"blur"})},[]),Te=f.useCallback(function(){P||(FF()?setTimeout(ge,0):ge())},[P,ge]),Oe=function(Me){return r?null:Me},$e=function(Me){return E?null:Oe(Me)},kt=function(Me){return O?null:Oe(Me)},ct=function(Me){R&&Me.stopPropagation()},on=f.useMemo(function(){return function(){var Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Me=Se.refKey,Pt=Me===void 0?"ref":Me,Tt=Se.role,we=Se.onKeyDown,ht=Se.onFocus,$t=Se.onBlur,zt=Se.onClick,ze=Se.onDragEnter,qe=Se.onDragOver,Pn=Se.onDragLeave,Pe=Se.onDrop,Ze=Kp(Se,XF);return dr(dr(Xv({onKeyDown:$e(Gs(we,ke)),onFocus:$e(Gs(ht,xe)),onBlur:$e(Gs($t,de)),onClick:Oe(Gs(zt,Te)),onDragEnter:kt(Gs(ze,se)),onDragOver:kt(Gs(qe,re)),onDragLeave:kt(Gs(Pn,oe)),onDrop:kt(Gs(Pe,ie)),role:typeof Tt=="string"&&Tt!==""?Tt:"presentation"},Pt,V),!r&&!E?{tabIndex:0}:{}),Ze)}},[V,ke,xe,de,Te,se,re,oe,ie,E,O,r]),vt=f.useCallback(function(Se){Se.stopPropagation()},[]),bt=f.useMemo(function(){return function(){var Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Me=Se.refKey,Pt=Me===void 0?"ref":Me,Tt=Se.onChange,we=Se.onClick,ht=Kp(Se,YF),$t=Xv({accept:T,multiple:c,type:"file",style:{display:"none"},onChange:Oe(Gs(Tt,ie)),onClick:Oe(Gs(we,vt)),tabIndex:-1},Pt,q);return dr(dr({},$t),ht)}},[q,n,c,ie,r]);return dr(dr({},L),{},{isFocused:Y&&!r,getRootProps:on,getInputProps:bt,rootRef:V,inputRef:q,open:Oe(ge)})}function sH(e,t){switch(t.type){case"focus":return dr(dr({},e),{},{isFocused:!0});case"blur":return dr(dr({},e),{},{isFocused:!1});case"openDialog":return dr(dr({},Yv),{},{isFileDialogActive:!0});case"closeDialog":return dr(dr({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return dr(dr({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return dr(dr({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return dr({},Yv);default:return e}}function bS(){}function Qv(){return Qv=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 fH=function(t,n,r){r===void 0&&(r=!1);var o=n.alt,s=n.meta,a=n.mod,c=n.shift,d=n.ctrl,p=n.keys,h=t.key,m=t.code,v=t.ctrlKey,b=t.metaKey,w=t.shiftKey,y=t.altKey,S=ii(m),k=h.toLowerCase();if(!r){if(o===!y&&k!=="alt"||c===!w&&k!=="shift")return!1;if(a){if(!b&&!v)return!1}else if(s===!b&&k!=="meta"&&k!=="os"||d===!v&&k!=="ctrl"&&k!=="control")return!1}return p&&p.length===1&&(p.includes(k)||p.includes(S))?!0:p?rP(p):!p},pH=f.createContext(void 0),hH=function(){return f.useContext(pH)};function iP(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&&iP(e[r],t[r])},!0):e===t}var mH=f.createContext({hotkeys:[],enabledScopes:[],toggleScope:function(){},enableScope:function(){},disableScope:function(){}}),gH=function(){return f.useContext(mH)};function vH(e){var t=f.useRef(void 0);return iP(t.current,e)||(t.current=e),t.current}var yS=function(t){t.stopPropagation(),t.preventDefault(),t.stopImmediatePropagation()},bH=typeof window<"u"?f.useLayoutEffect:f.useEffect;function rt(e,t,n,r){var o=f.useRef(null),s=f.useRef(!1),a=n instanceof Array?r instanceof Array?void 0:r:n,c=e instanceof Array?e.join(a==null?void 0:a.splitKey):e,d=n instanceof Array?n:r instanceof Array?r:void 0,p=f.useCallback(t,d??[]),h=f.useRef(p);d?h.current=p:h.current=t;var m=vH(a),v=gH(),b=v.enabledScopes,w=hH();return bH(function(){if(!((m==null?void 0:m.enabled)===!1||!dH(b,m==null?void 0:m.scopes))){var y=function(P,E){var O;if(E===void 0&&(E=!1),!(uH(P)&&!aP(P,m==null?void 0:m.enableOnFormTags))&&!(m!=null&&m.ignoreEventWhen!=null&&m.ignoreEventWhen(P))){if(o.current!==null&&document.activeElement!==o.current&&!o.current.contains(document.activeElement)){yS(P);return}(O=P.target)!=null&&O.isContentEditable&&!(m!=null&&m.enableOnContentEditable)||I0(c,m==null?void 0:m.splitKey).forEach(function(R){var M,A=E0(R,m==null?void 0:m.combinationKey);if(fH(P,A,m==null?void 0:m.ignoreModifiers)||(M=A.keys)!=null&&M.includes("*")){if(E&&s.current)return;if(lH(P,A,m==null?void 0:m.preventDefault),!cH(P,A,m==null?void 0:m.enabled)){yS(P);return}h.current(P,A),E||(s.current=!0)}})}},S=function(P){P.key!==void 0&&(oP(ii(P.code)),((m==null?void 0:m.keydown)===void 0&&(m==null?void 0:m.keyup)!==!0||m!=null&&m.keydown)&&y(P))},k=function(P){P.key!==void 0&&(sP(ii(P.code)),s.current=!1,m!=null&&m.keyup&&y(P,!0))},_=o.current||(a==null?void 0:a.document)||document;return _.addEventListener("keyup",k),_.addEventListener("keydown",S),w&&I0(c,m==null?void 0:m.splitKey).forEach(function(I){return w.addHotkey(E0(I,m==null?void 0:m.combinationKey,m==null?void 0:m.description))}),function(){_.removeEventListener("keyup",k),_.removeEventListener("keydown",S),w&&I0(c,m==null?void 0:m.splitKey).forEach(function(I){return w.removeHotkey(E0(I,m==null?void 0:m.combinationKey,m==null?void 0:m.description))})}}},[c,m,b]),o}const yH=e=>{const{isDragAccept:t,isDragReject:n,setIsHandlingUpload:r}=e;return rt("esc",()=>{r(!1)}),i.jsxs(Ee,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"100vw",height:"100vh",zIndex:999,backdropFilter:"blur(20px)"},children:[i.jsx(F,{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"}}),i.jsx(F,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"full",height:"full",alignItems:"center",justifyContent:"center",p:4},children:i.jsx(F,{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?i.jsx(Ys,{size:"lg",children:"Drop to Upload"}):i.jsxs(i.Fragment,{children:[i.jsx(Ys,{size:"lg",children:"Invalid Upload"}),i.jsx(Ys,{size:"md",children:"Must be single JPEG or PNG image"})]})})})]})},xH=fe([Xe,Kn],({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}},Ge),wH=e=>{const{children:t}=e,{autoAddBoardId:n,postUploadAction:r}=z(xH),o=z(Cr),s=Hc(),{t:a}=be(),[c,d]=f.useState(!1),[p]=E5(),h=f.useCallback(I=>{d(!0),s({title:a("toast.uploadFailed"),description:I.errors.map(P=>P.message).join(` +`),status:"error"})},[a,s]),m=f.useCallback(async I=>{p({file:I,image_category:"user",is_intermediate:!1,postUploadAction:r,board_id:n})},[n,r,p]),v=f.useCallback((I,P)=>{if(P.length>1){s({title:a("toast.uploadFailed"),description:a("toast.uploadFailedInvalidUploadDesc"),status:"error"});return}P.forEach(E=>{h(E)}),I.forEach(E=>{m(E)})},[a,s,m,h]),{getRootProps:b,getInputProps:w,isDragAccept:y,isDragReject:S,isDragActive:k,inputRef:_}=Bb({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:v,onDragOver:()=>d(!0),disabled:o,multiple:!1});return f.useEffect(()=>{const I=async P=>{var E,O;_.current&&(E=P.clipboardData)!=null&&E.files&&(_.current.files=P.clipboardData.files,(O=_.current)==null||O.dispatchEvent(new Event("change",{bubbles:!0})))};return document.addEventListener("paste",I),()=>{document.removeEventListener("paste",I)}},[_]),i.jsxs(Ee,{...b({style:{}}),onKeyDown:I=>{I.key},children:[i.jsx("input",{...w()}),t,i.jsx(ho,{children:k&&c&&i.jsx(Ir.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:i.jsx(yH,{isDragAccept:y,isDragReject:S,setIsHandlingUpload:d})},"image-upload-overlay")})]})},SH=f.memo(wH),mn=e=>e.canvas,ir=fe([mn,Kn,go],(e,t,n)=>e.layerState.stagingArea.images.length>0||t==="unifiedCanvas"&&n.isProcessing),CH=e=>e.canvas.layerState.objects.find(O5),kH=ZD(e=>{e(R5(!0))},300),Co=()=>(e,t)=>{Kn(t())==="unifiedCanvas"&&kH(e)};var _H=globalThis&&globalThis.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(r[s]=o[s])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),_r=globalThis&&globalThis.__assign||function(){return _r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"u"?void 0:Number(r),maxHeight:typeof o>"u"?void 0:Number(o),minWidth:typeof s>"u"?void 0:Number(s),minHeight:typeof a>"u"?void 0:Number(a)}},MH=["as","style","className","grid","snap","bounds","boundsByDirection","size","defaultSize","minWidth","minHeight","maxWidth","maxHeight","lockAspectRatio","lockAspectRatioExtraWidth","lockAspectRatioExtraHeight","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","children","onResizeStart","onResize","onResizeStop","handleComponent","scale","resizeRatio","snapGap"],kS="__resizable_base__",DH=function(e){IH(t,e);function t(n){var r=e.call(this,n)||this;return r.ratio=1,r.resizable=null,r.parentLeft=0,r.parentTop=0,r.resizableLeft=0,r.resizableRight=0,r.resizableTop=0,r.resizableBottom=0,r.targetLeft=0,r.targetTop=0,r.appendBase=function(){if(!r.resizable||!r.window)return null;var o=r.parentNode;if(!o)return null;var s=r.window.document.createElement("div");return s.style.width="100%",s.style.height="100%",s.style.position="absolute",s.style.transform="scale(0, 0)",s.style.left="0",s.style.flex="0 0 100%",s.classList?s.classList.add(kS):s.className+=kS,o.appendChild(s),s},r.removeBase=function(o){var s=r.parentNode;s&&s.removeChild(o)},r.ref=function(o){o&&(r.resizable=o)},r.state={isResizing:!1,width:typeof(r.propsSize&&r.propsSize.width)>"u"?"auto":r.propsSize&&r.propsSize.width,height:typeof(r.propsSize&&r.propsSize.height)>"u"?"auto":r.propsSize&&r.propsSize.height,direction:"right",original:{x:0,y:0,width:0,height:0},backgroundStyle:{height:"100%",width:"100%",backgroundColor:"rgba(0,0,0,0)",cursor:"auto",opacity:0,position:"fixed",zIndex:9999,top:"0",left:"0",bottom:"0",right:"0"},flexBasis:void 0},r.onResizeStart=r.onResizeStart.bind(r),r.onMouseMove=r.onMouseMove.bind(r),r.onMouseUp=r.onMouseUp.bind(r),r}return Object.defineProperty(t.prototype,"parentNode",{get:function(){return this.resizable?this.resizable.parentNode:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"window",{get:function(){return!this.resizable||!this.resizable.ownerDocument?null:this.resizable.ownerDocument.defaultView},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"propsSize",{get:function(){return this.props.size||this.props.defaultSize||EH},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){var n=0,r=0;if(this.resizable&&this.window){var o=this.resizable.offsetWidth,s=this.resizable.offsetHeight,a=this.resizable.style.position;a!=="relative"&&(this.resizable.style.position="relative"),n=this.resizable.style.width!=="auto"?this.resizable.offsetWidth:o,r=this.resizable.style.height!=="auto"?this.resizable.offsetHeight:s,this.resizable.style.position=a}return{width:n,height:r}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sizeStyle",{get:function(){var n=this,r=this.props.size,o=function(c){if(typeof n.state[c]>"u"||n.state[c]==="auto")return"auto";if(n.propsSize&&n.propsSize[c]&&n.propsSize[c].toString().endsWith("%")){if(n.state[c].toString().endsWith("%"))return n.state[c].toString();var d=n.getParentSize(),p=Number(n.state[c].toString().replace("px","")),h=p/d[c]*100;return h+"%"}return O0(n.state[c])},s=r&&typeof r.width<"u"&&!this.state.isResizing?O0(r.width):o("width"),a=r&&typeof r.height<"u"&&!this.state.isResizing?O0(r.height):o("height");return{width:s,height:a}},enumerable:!1,configurable:!0}),t.prototype.getParentSize=function(){if(!this.parentNode)return this.window?{width:this.window.innerWidth,height:this.window.innerHeight}:{width:0,height:0};var n=this.appendBase();if(!n)return{width:0,height:0};var r=!1,o=this.parentNode.style.flexWrap;o!=="wrap"&&(r=!0,this.parentNode.style.flexWrap="wrap"),n.style.position="relative",n.style.minWidth="100%",n.style.minHeight="100%";var s={width:n.offsetWidth,height:n.offsetHeight};return r&&(this.parentNode.style.flexWrap=o),this.removeBase(n),s},t.prototype.bindEvents=function(){this.window&&(this.window.addEventListener("mouseup",this.onMouseUp),this.window.addEventListener("mousemove",this.onMouseMove),this.window.addEventListener("mouseleave",this.onMouseUp),this.window.addEventListener("touchmove",this.onMouseMove,{capture:!0,passive:!1}),this.window.addEventListener("touchend",this.onMouseUp))},t.prototype.unbindEvents=function(){this.window&&(this.window.removeEventListener("mouseup",this.onMouseUp),this.window.removeEventListener("mousemove",this.onMouseMove),this.window.removeEventListener("mouseleave",this.onMouseUp),this.window.removeEventListener("touchmove",this.onMouseMove,!0),this.window.removeEventListener("touchend",this.onMouseUp))},t.prototype.componentDidMount=function(){if(!(!this.resizable||!this.window)){var n=this.window.getComputedStyle(this.resizable);this.setState({width:this.state.width||this.size.width,height:this.state.height||this.size.height,flexBasis:n.flexBasis!=="auto"?n.flexBasis:void 0})}},t.prototype.componentWillUnmount=function(){this.window&&this.unbindEvents()},t.prototype.createSizeForCssProperty=function(n,r){var o=this.propsSize&&this.propsSize[r];return this.state[r]==="auto"&&this.state.original[r]===n&&(typeof o>"u"||o==="auto")?"auto":n},t.prototype.calculateNewMaxFromBoundary=function(n,r){var o=this.props.boundsByDirection,s=this.state.direction,a=o&&Bl("left",s),c=o&&Bl("top",s),d,p;if(this.props.bounds==="parent"){var h=this.parentNode;h&&(d=a?this.resizableRight-this.parentLeft:h.offsetWidth+(this.parentLeft-this.resizableLeft),p=c?this.resizableBottom-this.parentTop:h.offsetHeight+(this.parentTop-this.resizableTop))}else this.props.bounds==="window"?this.window&&(d=a?this.resizableRight:this.window.innerWidth-this.resizableLeft,p=c?this.resizableBottom:this.window.innerHeight-this.resizableTop):this.props.bounds&&(d=a?this.resizableRight-this.targetLeft:this.props.bounds.offsetWidth+(this.targetLeft-this.resizableLeft),p=c?this.resizableBottom-this.targetTop:this.props.bounds.offsetHeight+(this.targetTop-this.resizableTop));return d&&Number.isFinite(d)&&(n=n&&n"u"?10:s.width,m=typeof o.width>"u"||o.width<0?n:o.width,v=typeof s.height>"u"?10:s.height,b=typeof o.height>"u"||o.height<0?r:o.height,w=d||0,y=p||0;if(c){var S=(v-w)*this.ratio+y,k=(b-w)*this.ratio+y,_=(h-y)/this.ratio+w,I=(m-y)/this.ratio+w,P=Math.max(h,S),E=Math.min(m,k),O=Math.max(v,_),R=Math.min(b,I);n=Lf(n,P,E),r=Lf(r,O,R)}else n=Lf(n,h,m),r=Lf(r,v,b);return{newWidth:n,newHeight:r}},t.prototype.setBoundingClientRect=function(){if(this.props.bounds==="parent"){var n=this.parentNode;if(n){var r=n.getBoundingClientRect();this.parentLeft=r.left,this.parentTop=r.top}}if(this.props.bounds&&typeof this.props.bounds!="string"){var o=this.props.bounds.getBoundingClientRect();this.targetLeft=o.left,this.targetTop=o.top}if(this.resizable){var s=this.resizable.getBoundingClientRect(),a=s.left,c=s.top,d=s.right,p=s.bottom;this.resizableLeft=a,this.resizableRight=d,this.resizableTop=c,this.resizableBottom=p}},t.prototype.onResizeStart=function(n,r){if(!(!this.resizable||!this.window)){var o=0,s=0;if(n.nativeEvent&&OH(n.nativeEvent)?(o=n.nativeEvent.clientX,s=n.nativeEvent.clientY):n.nativeEvent&&Bf(n.nativeEvent)&&(o=n.nativeEvent.touches[0].clientX,s=n.nativeEvent.touches[0].clientY),this.props.onResizeStart&&this.resizable){var a=this.props.onResizeStart(n,r,this.resizable);if(a===!1)return}this.props.size&&(typeof this.props.size.height<"u"&&this.props.size.height!==this.state.height&&this.setState({height:this.props.size.height}),typeof this.props.size.width<"u"&&this.props.size.width!==this.state.width&&this.setState({width:this.props.size.width})),this.ratio=typeof this.props.lockAspectRatio=="number"?this.props.lockAspectRatio:this.size.width/this.size.height;var c,d=this.window.getComputedStyle(this.resizable);if(d.flexBasis!=="auto"){var p=this.parentNode;if(p){var h=this.window.getComputedStyle(p).flexDirection;this.flexDir=h.startsWith("row")?"row":"column",c=d.flexBasis}}this.setBoundingClientRect(),this.bindEvents();var m={original:{x:o,y:s,width:this.size.width,height:this.size.height},isResizing:!0,backgroundStyle:qs(qs({},this.state.backgroundStyle),{cursor:this.window.getComputedStyle(n.target).cursor||"auto"}),direction:r,flexBasis:c};this.setState(m)}},t.prototype.onMouseMove=function(n){var r=this;if(!(!this.state.isResizing||!this.resizable||!this.window)){if(this.window.TouchEvent&&Bf(n))try{n.preventDefault(),n.stopPropagation()}catch{}var o=this.props,s=o.maxWidth,a=o.maxHeight,c=o.minWidth,d=o.minHeight,p=Bf(n)?n.touches[0].clientX:n.clientX,h=Bf(n)?n.touches[0].clientY:n.clientY,m=this.state,v=m.direction,b=m.original,w=m.width,y=m.height,S=this.getParentSize(),k=RH(S,this.window.innerWidth,this.window.innerHeight,s,a,c,d);s=k.maxWidth,a=k.maxHeight,c=k.minWidth,d=k.minHeight;var _=this.calculateNewSizeFromDirection(p,h),I=_.newHeight,P=_.newWidth,E=this.calculateNewMaxFromBoundary(s,a);this.props.snap&&this.props.snap.x&&(P=CS(P,this.props.snap.x,this.props.snapGap)),this.props.snap&&this.props.snap.y&&(I=CS(I,this.props.snap.y,this.props.snapGap));var O=this.calculateNewSizeFromAspectRatio(P,I,{width:E.maxWidth,height:E.maxHeight},{width:c,height:d});if(P=O.newWidth,I=O.newHeight,this.props.grid){var R=SS(P,this.props.grid[0]),M=SS(I,this.props.grid[1]),A=this.props.snapGap||0;P=A===0||Math.abs(R-P)<=A?R:P,I=A===0||Math.abs(M-I)<=A?M:I}var T={width:P-b.width,height:I-b.height};if(w&&typeof w=="string"){if(w.endsWith("%")){var $=P/S.width*100;P=$+"%"}else if(w.endsWith("vw")){var Q=P/this.window.innerWidth*100;P=Q+"vw"}else if(w.endsWith("vh")){var B=P/this.window.innerHeight*100;P=B+"vh"}}if(y&&typeof y=="string"){if(y.endsWith("%")){var $=I/S.height*100;I=$+"%"}else if(y.endsWith("vw")){var Q=I/this.window.innerWidth*100;I=Q+"vw"}else if(y.endsWith("vh")){var B=I/this.window.innerHeight*100;I=B+"vh"}}var V={width:this.createSizeForCssProperty(P,"width"),height:this.createSizeForCssProperty(I,"height")};this.flexDir==="row"?V.flexBasis=V.width:this.flexDir==="column"&&(V.flexBasis=V.height),_i.flushSync(function(){r.setState(V)}),this.props.onResize&&this.props.onResize(n,v,this.resizable,T)}},t.prototype.onMouseUp=function(n){var r=this.state,o=r.isResizing,s=r.direction,a=r.original;if(!(!o||!this.resizable)){var c={width:this.size.width-a.width,height:this.size.height-a.height};this.props.onResizeStop&&this.props.onResizeStop(n,s,this.resizable,c),this.props.size&&this.setState(this.props.size),this.unbindEvents(),this.setState({isResizing:!1,backgroundStyle:qs(qs({},this.state.backgroundStyle),{cursor:"auto"})})}},t.prototype.updateSize=function(n){this.setState({width:n.width,height:n.height})},t.prototype.renderResizer=function(){var n=this,r=this.props,o=r.enable,s=r.handleStyles,a=r.handleClasses,c=r.handleWrapperStyle,d=r.handleWrapperClass,p=r.handleComponent;if(!o)return null;var h=Object.keys(o).map(function(m){return o[m]!==!1?f.createElement(jH,{key:m,direction:m,onResizeStart:n.onResizeStart,replaceStyles:s&&s[m],className:a&&a[m]},p&&p[m]?p[m]:null):null});return f.createElement("div",{className:d,style:c},h)},t.prototype.render=function(){var n=this,r=Object.keys(this.props).reduce(function(a,c){return MH.indexOf(c)!==-1||(a[c]=n.props[c]),a},{}),o=qs(qs(qs({position:"relative",userSelect:this.state.isResizing?"none":"auto"},this.props.style),this.sizeStyle),{maxWidth:this.props.maxWidth,maxHeight:this.props.maxHeight,minWidth:this.props.minWidth,minHeight:this.props.minHeight,boxSizing:"border-box",flexShrink:0});this.state.flexBasis&&(o.flexBasis=this.state.flexBasis);var s=this.props.as||"div";return f.createElement(s,qs({ref:this.ref,style:o,className:this.props.className},r),this.state.isResizing&&f.createElement("div",{style:this.state.backgroundStyle}),this.props.children,this.renderResizer())},t.defaultProps={as:"div",onResizeStart:function(){},onResize:function(){},onResizeStop:function(){},enable:{top:!0,right:!0,bottom:!0,left:!0,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},style:{},grid:[1,1],lockAspectRatio:!1,lockAspectRatioExtraWidth:0,lockAspectRatioExtraHeight:0,scale:1,resizeRatio:1,snapGap:0},t}(f.PureComponent);const AH=({direction:e,langDirection:t})=>({top:e==="bottom",right:t!=="rtl"&&e==="left"||t==="rtl"&&e==="right",bottom:e==="top",left:t!=="rtl"&&e==="right"||t==="rtl"&&e==="left"}),TH=({direction:e,minWidth:t,maxWidth:n,minHeight:r,maxHeight:o})=>{const s=t??(["left","right"].includes(e)?10:void 0),a=n??(["left","right"].includes(e)?"95vw":void 0),c=r??(["top","bottom"].includes(e)?10:void 0),d=o??(["top","bottom"].includes(e)?"95vh":void 0);return{...s?{minWidth:s}:{},...a?{maxWidth:a}:{},...c?{minHeight:c}:{},...d?{maxHeight:d}:{}}},ba="0.75rem",Hf="1rem",pu="5px",NH=({isResizable:e,direction:t})=>{const n=`calc((2 * ${ba} + ${pu}) / -2)`;return t==="top"?{containerStyles:{borderBottomWidth:pu,paddingBottom:Hf},handleStyles:e?{top:{paddingTop:ba,paddingBottom:ba,bottom:n}}:{}}:t==="left"?{containerStyles:{borderInlineEndWidth:pu,paddingInlineEnd:Hf},handleStyles:e?{right:{paddingInlineStart:ba,paddingInlineEnd:ba,insetInlineEnd:n}}:{}}:t==="bottom"?{containerStyles:{borderTopWidth:pu,paddingTop:Hf},handleStyles:e?{bottom:{paddingTop:ba,paddingBottom:ba,top:n}}:{}}:t==="right"?{containerStyles:{borderInlineStartWidth:pu,paddingInlineStart:Hf},handleStyles:e?{left:{paddingInlineStart:ba,paddingInlineEnd:ba,insetInlineStart:n}}:{}}:{containerStyles:{},handleStyles:{}}},$H=(e,t)=>["top","bottom"].includes(e)?e:e==="left"?t==="rtl"?"right":"left":e==="right"?t==="rtl"?"left":"right":"left",Fe=(e,t)=>n=>n==="light"?e:t,zH=je(DH,{shouldForwardProp:e=>!["sx"].includes(e)}),lP=({direction:e="left",isResizable:t,isOpen:n,onClose:r,children:o,initialWidth:s,minWidth:a,maxWidth:c,initialHeight:d,minHeight:p,maxHeight:h,onResizeStart:m,onResizeStop:v,onResize:b,sx:w={}})=>{const y=Dc().direction,{colorMode:S}=Ds(),k=f.useRef(null),_=f.useMemo(()=>s??a??(["left","right"].includes(e)?"auto":"100%"),[s,a,e]),I=f.useMemo(()=>d??p??(["top","bottom"].includes(e)?"auto":"100%"),[d,p,e]),[P,E]=f.useState(_),[O,R]=f.useState(I);MN({ref:k,handler:()=>{r()},enabled:n});const M=f.useMemo(()=>t?AH({direction:e,langDirection:y}):{},[t,y,e]),A=f.useMemo(()=>TH({direction:e,minWidth:a,maxWidth:c,minHeight:p,maxHeight:h}),[a,c,p,h,e]),{containerStyles:T,handleStyles:$}=f.useMemo(()=>NH({isResizable:t,direction:e}),[t,e]),Q=f.useMemo(()=>$H(e,y),[e,y]);return f.useEffect(()=>{["left","right"].includes(e)&&R("100vh"),["top","bottom"].includes(e)&&E("100vw")},[e]),i.jsx(N_,{direction:Q,in:n,motionProps:{initial:!1},style:{width:"full"},children:i.jsx(Ee,{ref:k,sx:{width:"full",height:"full"},children:i.jsx(zH,{size:{width:t?P:_,height:t?O:I},enable:M,handleStyles:$,...A,sx:{borderColor:Fe("base.200","base.800")(S),p:4,bg:Fe("base.50","base.900")(S),height:"full",shadow:n?"dark-lg":void 0,...T,...w},onResizeStart:(B,V,q)=>{m&&m(B,V,q)},onResize:(B,V,q,G)=>{b&&b(B,V,q,G)},onResizeStop:(B,V,q,G)=>{["left","right"].includes(V)&&E(Number(P)+G.width),["top","bottom"].includes(V)&&R(Number(O)+G.height),v&&v(B,V,q,G)},children:o})})})},LH=Ae((e,t)=>{const{children:n,tooltip:r="",tooltipProps:{placement:o="top",hasArrow:s=!0,...a}={},isChecked:c,...d}=e;return i.jsx(wn,{label:r,placement:o,hasArrow:s,...a,children:i.jsx(vc,{ref:t,colorScheme:c?"accent":"base",...d,children:n})})}),en=f.memo(LH);var cP={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},_S=H.createContext&&H.createContext(cP),fi=globalThis&&globalThis.__assign||function(){return fi=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt(e[n],n,e));return e}function ro(e,t){const n=Ei(t);if(Rs(t)||n){let o=n?"":{};if(e){const s=window.getComputedStyle(e,null);o=n?OS(e,s,t):t.reduce((a,c)=>(a[c]=OS(e,s,c),a),o)}return o}e&&_n(Fo(t),o=>FW(e,o,t[o]))}const xs=(e,t)=>{const{o:n,u:r,_:o}=e;let s=n,a;const c=(h,m)=>{const v=s,b=h,w=m||(r?!r(v,b):v!==b);return(w||o)&&(s=b,a=v),[s,w,a]};return[t?h=>c(t(s,a),h):c,h=>[s,!!h,a]]},Md=()=>typeof window<"u",_P=Md()&&Node.ELEMENT_NODE,{toString:PW,hasOwnProperty:M0}=Object.prototype,Ha=e=>e===void 0,Pm=e=>e===null,jW=e=>Ha(e)||Pm(e)?`${e}`:PW.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase(),pi=e=>typeof e=="number",Ei=e=>typeof e=="string",Gb=e=>typeof e=="boolean",Os=e=>typeof e=="function",Rs=e=>Array.isArray(e),td=e=>typeof e=="object"&&!Rs(e)&&!Pm(e),jm=e=>{const t=!!e&&e.length,n=pi(t)&&t>-1&&t%1==0;return Rs(e)||!Os(e)&&n?t>0&&td(e)?t-1 in e:!0:!1},Jv=e=>{if(!e||!td(e)||jW(e)!=="object")return!1;let t;const n="constructor",r=e[n],o=r&&r.prototype,s=M0.call(e,n),a=o&&M0.call(o,"isPrototypeOf");if(r&&!s&&!a)return!1;for(t in e);return Ha(t)||M0.call(e,t)},Xp=e=>{const t=HTMLElement;return e?t?e instanceof t:e.nodeType===_P:!1},Im=e=>{const t=Element;return e?t?e instanceof t:e.nodeType===_P:!1},qb=(e,t,n)=>e.indexOf(t,n),An=(e,t,n)=>(!n&&!Ei(t)&&jm(t)?Array.prototype.push.apply(e,t):e.push(t),e),ll=e=>{const t=Array.from,n=[];return t&&e?t(e):(e instanceof Set?e.forEach(r=>{An(n,r)}):_n(e,r=>{An(n,r)}),n)},Kb=e=>!!e&&e.length===0,ca=(e,t,n)=>{_n(e,o=>o&&o.apply(void 0,t||[])),!n&&(e.length=0)},Em=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Fo=e=>e?Object.keys(e):[],pr=(e,t,n,r,o,s,a)=>{const c=[t,n,r,o,s,a];return(typeof e!="object"||Pm(e))&&!Os(e)&&(e={}),_n(c,d=>{_n(Fo(d),p=>{const h=d[p];if(e===h)return!0;const m=Rs(h);if(h&&(Jv(h)||m)){const v=e[p];let b=v;m&&!Rs(v)?b=[]:!m&&!Jv(v)&&(b={}),e[p]=pr(b,h)}else e[p]=h})}),e},Xb=e=>{for(const t in e)return!1;return!0},PP=(e,t,n,r)=>{if(Ha(r))return n?n[e]:t;n&&(Ei(r)||pi(r))&&(n[e]=r)},to=(e,t,n)=>{if(Ha(n))return e?e.getAttribute(t):null;e&&e.setAttribute(t,n)},wo=(e,t)=>{e&&e.removeAttribute(t)},Ji=(e,t,n,r)=>{if(n){const o=to(e,t)||"",s=new Set(o.split(" "));s[r?"add":"delete"](n);const a=ll(s).join(" ").trim();to(e,t,a)}},IW=(e,t,n)=>{const r=to(e,t)||"";return new Set(r.split(" ")).has(n)},_s=(e,t)=>PP("scrollLeft",0,e,t),ka=(e,t)=>PP("scrollTop",0,e,t),Zv=Md()&&Element.prototype,jP=(e,t)=>{const n=[],r=t?Im(t)?t:null:document;return r?An(n,r.querySelectorAll(e)):n},EW=(e,t)=>{const n=t?Im(t)?t:null:document;return n?n.querySelector(e):null},Yp=(e,t)=>Im(e)?(Zv.matches||Zv.msMatchesSelector).call(e,t):!1,Yb=e=>e?ll(e.childNodes):[],Ta=e=>e?e.parentElement:null,Yl=(e,t)=>{if(Im(e)){const n=Zv.closest;if(n)return n.call(e,t);do{if(Yp(e,t))return e;e=Ta(e)}while(e)}return null},OW=(e,t,n)=>{const r=e&&Yl(e,t),o=e&&EW(n,r),s=Yl(o,t)===r;return r&&o?r===e||o===e||s&&Yl(Yl(e,n),t)!==r:!1},Qb=(e,t,n)=>{if(n&&e){let r=t,o;jm(n)?(o=document.createDocumentFragment(),_n(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)}},ts=(e,t)=>{Qb(e,null,t)},RW=(e,t)=>{Qb(Ta(e),e,t)},jS=(e,t)=>{Qb(Ta(e),e&&e.nextSibling,t)},oa=e=>{if(jm(e))_n(ll(e),t=>oa(t));else if(e){const t=Ta(e);t&&t.removeChild(e)}},Zi=e=>{const t=document.createElement("div");return e&&to(t,"class",e),t},IP=e=>{const t=Zi();return t.innerHTML=e.trim(),_n(Yb(t),n=>oa(n))},e1=e=>e.charAt(0).toUpperCase()+e.slice(1),MW=()=>Zi().style,DW=["-webkit-","-moz-","-o-","-ms-"],AW=["WebKit","Moz","O","MS","webkit","moz","o","ms"],D0={},A0={},TW=e=>{let t=A0[e];if(Em(A0,e))return t;const n=e1(e),r=MW();return _n(DW,o=>{const s=o.replace(/-/g,"");return!(t=[e,o+e,s+n,e1(s)+n].find(c=>r[c]!==void 0))}),A0[e]=t||""},Dd=e=>{if(Md()){let t=D0[e]||window[e];return Em(D0,e)||(_n(AW,n=>(t=t||window[n+e1(e)],!t)),D0[e]=t),t}},NW=Dd("MutationObserver"),IS=Dd("IntersectionObserver"),Ql=Dd("ResizeObserver"),EP=Dd("cancelAnimationFrame"),OP=Dd("requestAnimationFrame"),Qp=Md()&&window.setTimeout,t1=Md()&&window.clearTimeout,$W=/[^\x20\t\r\n\f]+/g,RP=(e,t,n)=>{const r=e&&e.classList;let o,s=0,a=!1;if(r&&t&&Ei(t)){const c=t.match($W)||[];for(a=c.length>0;o=c[s++];)a=!!n(r,o)&&a}return a},Jb=(e,t)=>{RP(e,t,(n,r)=>n.remove(r))},_a=(e,t)=>(RP(e,t,(n,r)=>n.add(r)),Jb.bind(0,e,t)),Om=(e,t,n,r)=>{if(e&&t){let o=!0;return _n(n,s=>{const a=r?r(e[s]):e[s],c=r?r(t[s]):t[s];a!==c&&(o=!1)}),o}return!1},MP=(e,t)=>Om(e,t,["w","h"]),DP=(e,t)=>Om(e,t,["x","y"]),zW=(e,t)=>Om(e,t,["t","r","b","l"]),ES=(e,t,n)=>Om(e,t,["width","height"],n&&(r=>Math.round(r))),es=()=>{},Gl=e=>{let t;const n=e?Qp:OP,r=e?t1:EP;return[o=>{r(t),t=n(o,Os(e)?e():e)},()=>r(t)]},Zb=(e,t)=>{let n,r,o,s=es;const{v:a,g:c,p:d}=t||{},p=function(w){s(),t1(n),n=r=void 0,s=es,e.apply(this,w)},h=b=>d&&r?d(r,b):b,m=()=>{s!==es&&p(h(o)||o)},v=function(){const w=ll(arguments),y=Os(a)?a():a;if(pi(y)&&y>=0){const k=Os(c)?c():c,_=pi(k)&&k>=0,I=y>0?Qp:OP,P=y>0?t1:EP,O=h(w)||w,R=p.bind(0,O);s();const M=I(R,y);s=()=>P(M),_&&!n&&(n=Qp(m,k)),r=o=O}else p(w)};return v.m=m,v},LW={opacity:1,zindex:1},Wf=(e,t)=>{const n=t?parseFloat(e):parseInt(e,10);return n===n?n:0},BW=(e,t)=>!LW[e.toLowerCase()]&&pi(t)?`${t}px`:t,OS=(e,t,n)=>t!=null?t[n]||t.getPropertyValue(n):e.style[n],FW=(e,t,n)=>{try{const{style:r}=e;Ha(r[t])?r.setProperty(t,n):r[t]=BW(t,n)}catch{}},nd=e=>ro(e,"direction")==="rtl",RS=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",s=`${r}top${o}`,a=`${r}right${o}`,c=`${r}bottom${o}`,d=`${r}left${o}`,p=ro(e,[s,a,c,d]);return{t:Wf(p[s],!0),r:Wf(p[a],!0),b:Wf(p[c],!0),l:Wf(p[d],!0)}},{round:MS}=Math,ey={w:0,h:0},rd=e=>e?{w:e.offsetWidth,h:e.offsetHeight}:ey,_p=e=>e?{w:e.clientWidth,h:e.clientHeight}:ey,Jp=e=>e?{w:e.scrollWidth,h:e.scrollHeight}:ey,Zp=e=>{const t=parseFloat(ro(e,"height"))||0,n=parseFloat(ro(e,"width"))||0;return{w:n-MS(n),h:t-MS(t)}},Zs=e=>e.getBoundingClientRect();let Vf;const HW=()=>{if(Ha(Vf)){Vf=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get(){Vf=!0}}))}catch{}}return Vf},AP=e=>e.split(" "),WW=(e,t,n,r)=>{_n(AP(t),o=>{e.removeEventListener(o,n,r)})},Tr=(e,t,n,r)=>{var o;const s=HW(),a=(o=s&&r&&r.S)!=null?o:s,c=r&&r.$||!1,d=r&&r.C||!1,p=[],h=s?{passive:a,capture:c}:c;return _n(AP(t),m=>{const v=d?b=>{e.removeEventListener(m,v,c),n&&n(b)}:n;An(p,WW.bind(null,e,m,v,c)),e.addEventListener(m,v,h)}),ca.bind(0,p)},TP=e=>e.stopPropagation(),NP=e=>e.preventDefault(),VW={x:0,y:0},T0=e=>{const t=e?Zs(e):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:VW},DS=(e,t)=>{_n(Rs(t)?t:[t],e)},ty=e=>{const t=new Map,n=(s,a)=>{if(s){const c=t.get(s);DS(d=>{c&&c[d?"delete":"clear"](d)},a)}else t.forEach(c=>{c.clear()}),t.clear()},r=(s,a)=>{if(Ei(s)){const p=t.get(s)||new Set;return t.set(s,p),DS(h=>{Os(h)&&p.add(h)},a),n.bind(0,s,a)}Gb(a)&&a&&n();const c=Fo(s),d=[];return _n(c,p=>{const h=s[p];h&&An(d,r(p,h))}),ca.bind(0,d)},o=(s,a)=>{const c=t.get(s);_n(ll(c),d=>{a&&!Kb(a)?d.apply(0,a):d()})};return r(e||{}),[r,n,o]},AS=e=>JSON.stringify(e,(t,n)=>{if(Os(n))throw new Error;return n}),UW={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"]}},$P=(e,t)=>{const n={},r=Fo(t).concat(Fo(e));return _n(r,o=>{const s=e[o],a=t[o];if(td(s)&&td(a))pr(n[o]={},$P(s,a)),Xb(n[o])&&delete n[o];else if(Em(t,o)&&a!==s){let c=!0;if(Rs(s)||Rs(a))try{AS(s)===AS(a)&&(c=!1)}catch{}c&&(n[o]=a)}}),n},zP="os-environment",LP=`${zP}-flexbox-glue`,GW=`${LP}-max`,BP="os-scrollbar-hidden",N0="data-overlayscrollbars-initialize",ws="data-overlayscrollbars",FP=`${ws}-overflow-x`,HP=`${ws}-overflow-y`,uc="overflowVisible",qW="scrollbarHidden",TS="scrollbarPressed",eh="updating",oi="data-overlayscrollbars-viewport",$0="arrange",WP="scrollbarHidden",dc=uc,n1="data-overlayscrollbars-padding",KW=dc,NS="data-overlayscrollbars-content",ny="os-size-observer",XW=`${ny}-appear`,YW=`${ny}-listener`,QW="os-trinsic-observer",JW="os-no-css-vars",ZW="os-theme-none",Eo="os-scrollbar",eV=`${Eo}-rtl`,tV=`${Eo}-horizontal`,nV=`${Eo}-vertical`,VP=`${Eo}-track`,ry=`${Eo}-handle`,rV=`${Eo}-visible`,oV=`${Eo}-cornerless`,$S=`${Eo}-transitionless`,zS=`${Eo}-interaction`,LS=`${Eo}-unusable`,BS=`${Eo}-auto-hidden`,FS=`${Eo}-wheel`,sV=`${VP}-interactive`,aV=`${ry}-interactive`,UP={},cl=()=>UP,iV=e=>{const t=[];return _n(Rs(e)?e:[e],n=>{const r=Fo(n);_n(r,o=>{An(t,UP[o]=n[o])})}),t},lV="__osOptionsValidationPlugin",cV="__osSizeObserverPlugin",oy="__osScrollbarsHidingPlugin",uV="__osClickScrollPlugin";let z0;const HS=(e,t,n,r)=>{ts(e,t);const o=_p(t),s=rd(t),a=Zp(n);return r&&oa(t),{x:s.h-o.h+a.h,y:s.w-o.w+a.w}},dV=e=>{let t=!1;const n=_a(e,BP);try{t=ro(e,TW("scrollbar-width"))==="none"||window.getComputedStyle(e,"::-webkit-scrollbar").getPropertyValue("display")==="none"}catch{}return n(),t},fV=(e,t)=>{const n="hidden";ro(e,{overflowX:n,overflowY:n,direction:"rtl"}),_s(e,0);const r=T0(e),o=T0(t);_s(e,-999);const s=T0(t);return{i:r.x===o.x,n:o.x!==s.x}},pV=(e,t)=>{const n=_a(e,LP),r=Zs(e),o=Zs(t),s=ES(o,r,!0),a=_a(e,GW),c=Zs(e),d=Zs(t),p=ES(d,c,!0);return n(),a(),s&&p},hV=()=>{const{body:e}=document,n=IP(`
`)[0],r=n.firstChild,[o,,s]=ty(),[a,c]=xs({o:HS(e,n,r),u:DP},HS.bind(0,e,n,r,!0)),[d]=c(),p=dV(n),h={x:d.x===0,y:d.y===0},m={elements:{host:null,padding:!p,viewport:_=>p&&_===_.ownerDocument.body&&_,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},v=pr({},UW),b=pr.bind(0,{},v),w=pr.bind(0,{},m),y={k:d,A:h,I:p,L:ro(n,"zIndex")==="-1",B:fV(n,r),V:pV(n,r),Y:o.bind(0,"z"),j:o.bind(0,"r"),N:w,q:_=>pr(m,_)&&w(),F:b,G:_=>pr(v,_)&&b(),X:pr({},m),U:pr({},v)},S=window.addEventListener,k=Zb(_=>s(_?"z":"r"),{v:33,g:99});if(wo(n,"style"),oa(n),S("resize",k.bind(0,!1)),!p&&(!h.x||!h.y)){let _;S("resize",()=>{const I=cl()[oy];_=_||I&&I.R(),_&&_(y,a,k.bind(0,!0))})}return y},Oo=()=>(z0||(z0=hV()),z0),sy=(e,t)=>Os(t)?t.apply(0,e):t,mV=(e,t,n,r)=>{const o=Ha(r)?n:r;return sy(e,o)||t.apply(0,e)},GP=(e,t,n,r)=>{const o=Ha(r)?n:r,s=sy(e,o);return!!s&&(Xp(s)?s:t.apply(0,e))},gV=(e,t,n)=>{const{nativeScrollbarsOverlaid:r,body:o}=n||{},{A:s,I:a}=Oo(),{nativeScrollbarsOverlaid:c,body:d}=t,p=r??c,h=Ha(o)?d:o,m=(s.x||s.y)&&p,v=e&&(Pm(h)?!a:h);return!!m||!!v},ay=new WeakMap,vV=(e,t)=>{ay.set(e,t)},bV=e=>{ay.delete(e)},qP=e=>ay.get(e),WS=(e,t)=>e?t.split(".").reduce((n,r)=>n&&Em(n,r)?n[r]:void 0,e):void 0,r1=(e,t,n)=>r=>[WS(e,r),n||WS(t,r)!==void 0],KP=e=>{let t=e;return[()=>t,n=>{t=pr({},t,n)}]},Uf="tabindex",Gf=Zi.bind(0,""),L0=e=>{ts(Ta(e),Yb(e)),oa(e)},yV=e=>{const t=Oo(),{N:n,I:r}=t,o=cl()[oy],s=o&&o.T,{elements:a}=n(),{host:c,padding:d,viewport:p,content:h}=a,m=Xp(e),v=m?{}:e,{elements:b}=v,{host:w,padding:y,viewport:S,content:k}=b||{},_=m?e:v.target,I=Yp(_,"textarea"),P=_.ownerDocument,E=P.documentElement,O=_===P.body,R=P.defaultView,M=mV.bind(0,[_]),A=GP.bind(0,[_]),T=sy.bind(0,[_]),$=M.bind(0,Gf,p),Q=A.bind(0,Gf,h),B=$(S),V=B===_,q=V&&O,G=!V&&Q(k),D=!V&&Xp(B)&&B===G,L=D&&!!T(h),W=L?$():B,Y=L?G:Q(),ye=q?E:D?W:B,ce=I?M(Gf,c,w):_,X=q?ye:ce,K=D?Y:G,U=P.activeElement,se=!V&&R.top===R&&U===_,re={W:_,Z:X,J:ye,K:!V&&A(Gf,d,y),tt:K,nt:!V&&!r&&s&&s(t),ot:q?E:ye,st:q?P:ye,et:R,ct:P,rt:I,it:O,lt:m,ut:V,dt:D,ft:(vt,bt)=>IW(ye,V?ws:oi,V?bt:vt),_t:(vt,bt,Se)=>Ji(ye,V?ws:oi,V?bt:vt,Se)},oe=Fo(re).reduce((vt,bt)=>{const Se=re[bt];return An(vt,Se&&!Ta(Se)?Se:!1)},[]),pe=vt=>vt?qb(oe,vt)>-1:null,{W:ie,Z:ge,K:ke,J:xe,tt:de,nt:Te}=re,Oe=[()=>{wo(ge,ws),wo(ge,N0),wo(ie,N0),O&&(wo(E,ws),wo(E,N0))}],$e=I&&pe(ge);let kt=I?ie:Yb([de,xe,ke,ge,ie].find(vt=>pe(vt)===!1));const ct=q?ie:de||xe;return[re,()=>{to(ge,ws,V?"viewport":"host"),to(ke,n1,""),to(de,NS,""),V||to(xe,oi,"");const vt=O&&!V?_a(Ta(_),BP):es;if($e&&(jS(ie,ge),An(Oe,()=>{jS(ge,ie),oa(ge)})),ts(ct,kt),ts(ge,ke),ts(ke||ge,!V&&xe),ts(xe,de),An(Oe,()=>{vt(),wo(ke,n1),wo(de,NS),wo(xe,FP),wo(xe,HP),wo(xe,oi),pe(de)&&L0(de),pe(xe)&&L0(xe),pe(ke)&&L0(ke)}),r&&!V&&(Ji(xe,oi,WP,!0),An(Oe,wo.bind(0,xe,oi))),Te&&(RW(xe,Te),An(Oe,oa.bind(0,Te))),se){const bt=to(xe,Uf);to(xe,Uf,"-1"),xe.focus();const Se=()=>bt?to(xe,Uf,bt):wo(xe,Uf),Me=Tr(P,"pointerdown keydown",()=>{Se(),Me()});An(Oe,[Se,Me])}else U&&U.focus&&U.focus();kt=0},ca.bind(0,Oe)]},xV=(e,t)=>{const{tt:n}=e,[r]=t;return o=>{const{V:s}=Oo(),{ht:a}=r(),{vt:c}=o,d=(n||!s)&&c;return d&&ro(n,{height:a?"":"100%"}),{gt:d,wt:d}}},wV=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:a,ut:c}=e,[d,p]=xs({u:zW,o:RS()},RS.bind(0,o,"padding",""));return(h,m,v)=>{let[b,w]=p(v);const{I:y,V:S}=Oo(),{bt:k}=n(),{gt:_,wt:I,yt:P}=h,[E,O]=m("paddingAbsolute");(_||w||!S&&I)&&([b,w]=d(v));const M=!c&&(O||P||w);if(M){const A=!E||!s&&!y,T=b.r+b.l,$=b.t+b.b,Q={marginRight:A&&!k?-T:0,marginBottom:A?-$:0,marginLeft:A&&k?-T:0,top:A?-b.t:0,right:A?k?-b.r:"auto":0,left:A?k?"auto":-b.l:0,width:A?`calc(100% + ${T}px)`:""},B={paddingTop:A?b.t:0,paddingRight:A?b.r:0,paddingBottom:A?b.b:0,paddingLeft:A?b.l:0};ro(s||a,Q),ro(a,B),r({K:b,St:!A,P:s?B:pr({},Q,B)})}return{xt:M}}},{max:o1}=Math,si=o1.bind(0,0),XP="visible",VS="hidden",SV=42,qf={u:MP,o:{w:0,h:0}},CV={u:DP,o:{x:VS,y:VS}},kV=(e,t)=>{const n=window.devicePixelRatio%1!==0?1:0,r={w:si(e.w-t.w),h:si(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},Kf=e=>e.indexOf(XP)===0,_V=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:a,nt:c,ut:d,_t:p,it:h,et:m}=e,{k:v,V:b,I:w,A:y}=Oo(),S=cl()[oy],k=!d&&!w&&(y.x||y.y),_=h&&d,[I,P]=xs(qf,Zp.bind(0,a)),[E,O]=xs(qf,Jp.bind(0,a)),[R,M]=xs(qf),[A,T]=xs(qf),[$]=xs(CV),Q=(L,W)=>{if(ro(a,{height:""}),W){const{St:Y,K:ae}=n(),{$t:ye,D:ce}=L,X=Zp(o),K=_p(o),U=ro(a,"boxSizing")==="content-box",se=Y||U?ae.b+ae.t:0,re=!(y.x&&U);ro(a,{height:K.h+X.h+(ye.x&&re?ce.x:0)-se})}},B=(L,W)=>{const Y=!w&&!L?SV:0,ae=(pe,ie,ge)=>{const ke=ro(a,pe),de=(W?W[pe]:ke)==="scroll";return[ke,de,de&&!w?ie?Y:ge:0,ie&&!!Y]},[ye,ce,X,K]=ae("overflowX",y.x,v.x),[U,se,re,oe]=ae("overflowY",y.y,v.y);return{Ct:{x:ye,y:U},$t:{x:ce,y:se},D:{x:X,y:re},M:{x:K,y:oe}}},V=(L,W,Y,ae)=>{const ye=(se,re)=>{const oe=Kf(se),pe=re&&oe&&se.replace(`${XP}-`,"")||"";return[re&&!oe?se:"",Kf(pe)?"hidden":pe]},[ce,X]=ye(Y.x,W.x),[K,U]=ye(Y.y,W.y);return ae.overflowX=X&&K?X:ce,ae.overflowY=U&&ce?U:K,B(L,ae)},q=(L,W,Y,ae)=>{const{D:ye,M:ce}=L,{x:X,y:K}=ce,{x:U,y:se}=ye,{P:re}=n(),oe=W?"marginLeft":"marginRight",pe=W?"paddingLeft":"paddingRight",ie=re[oe],ge=re.marginBottom,ke=re[pe],xe=re.paddingBottom;ae.width=`calc(100% + ${se+-1*ie}px)`,ae[oe]=-se+ie,ae.marginBottom=-U+ge,Y&&(ae[pe]=ke+(K?se:0),ae.paddingBottom=xe+(X?U:0))},[G,D]=S?S.H(k,b,a,c,n,B,q):[()=>k,()=>[es]];return(L,W,Y)=>{const{gt:ae,Ot:ye,wt:ce,xt:X,vt:K,yt:U}=L,{ht:se,bt:re}=n(),[oe,pe]=W("showNativeOverlaidScrollbars"),[ie,ge]=W("overflow"),ke=oe&&y.x&&y.y,xe=!d&&!b&&(ae||ce||ye||pe||K),de=Kf(ie.x),Te=Kf(ie.y),Oe=de||Te;let $e=P(Y),kt=O(Y),ct=M(Y),on=T(Y),vt;if(pe&&w&&p(WP,qW,!ke),xe&&(vt=B(ke),Q(vt,se)),ae||X||ce||U||pe){Oe&&p(dc,uc,!1);const[Pe,Ze]=D(ke,re,vt),[Qe,dt]=$e=I(Y),[Lt,lr]=kt=E(Y),pn=_p(a);let ln=Lt,Hr=pn;Pe(),(lr||dt||pe)&&Ze&&!ke&&G(Ze,Lt,Qe,re)&&(Hr=_p(a),ln=Jp(a));const yr={w:si(o1(Lt.w,ln.w)+Qe.w),h:si(o1(Lt.h,ln.h)+Qe.h)},Fn={w:si((_?m.innerWidth:Hr.w+si(pn.w-Lt.w))+Qe.w),h:si((_?m.innerHeight+Qe.h:Hr.h+si(pn.h-Lt.h))+Qe.h)};on=A(Fn),ct=R(kV(yr,Fn),Y)}const[bt,Se]=on,[Me,Pt]=ct,[Tt,we]=kt,[ht,$t]=$e,zt={x:Me.w>0,y:Me.h>0},ze=de&&Te&&(zt.x||zt.y)||de&&zt.x&&!zt.y||Te&&zt.y&&!zt.x;if(X||U||$t||we||Se||Pt||ge||pe||xe){const Pe={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},Ze=V(ke,zt,ie,Pe),Qe=G(Ze,Tt,ht,re);d||q(Ze,re,Qe,Pe),xe&&Q(Ze,se),d?(to(o,FP,Pe.overflowX),to(o,HP,Pe.overflowY)):ro(a,Pe)}Ji(o,ws,uc,ze),Ji(s,n1,KW,ze),d||Ji(a,oi,dc,Oe);const[qe,Pn]=$(B(ke).Ct);return r({Ct:qe,zt:{x:bt.w,y:bt.h},Tt:{x:Me.w,y:Me.h},Et:zt}),{It:Pn,At:Se,Lt:Pt}}},US=(e,t,n)=>{const r={},o=t||{},s=Fo(e).concat(Fo(o));return _n(s,a=>{const c=e[a],d=o[a];r[a]=!!(n||c||d)}),r},PV=(e,t)=>{const{W:n,J:r,_t:o,ut:s}=e,{I:a,A:c,V:d}=Oo(),p=!a&&(c.x||c.y),h=[xV(e,t),wV(e,t),_V(e,t)];return(m,v,b)=>{const w=US(pr({gt:!1,xt:!1,yt:!1,vt:!1,At:!1,Lt:!1,It:!1,Ot:!1,wt:!1},v),{},b),y=p||!d,S=y&&_s(r),k=y&&ka(r);o("",eh,!0);let _=w;return _n(h,I=>{_=US(_,I(_,m,!!b)||{},b)}),_s(r,S),ka(r,k),o("",eh),s||(_s(n,0),ka(n,0)),_}},jV=(e,t,n)=>{let r,o=!1;const s=()=>{o=!0},a=c=>{if(n){const d=n.reduce((p,h)=>{if(h){const[m,v]=h,b=v&&m&&(c?c(m):jP(m,e));b&&b.length&&v&&Ei(v)&&An(p,[b,v.trim()],!0)}return p},[]);_n(d,p=>_n(p[0],h=>{const m=p[1],v=r.get(h)||[];if(e.contains(h)){const w=Tr(h,m,y=>{o?(w(),r.delete(h)):t(y)});r.set(h,An(v,w))}else ca(v),r.delete(h)}))}};return n&&(r=new WeakMap,a()),[s,a]},GS=(e,t,n,r)=>{let o=!1;const{Ht:s,Pt:a,Dt:c,Mt:d,Rt:p,kt:h}=r||{},m=Zb(()=>{o&&n(!0)},{v:33,g:99}),[v,b]=jV(e,m,c),w=s||[],y=a||[],S=w.concat(y),k=(I,P)=>{const E=p||es,O=h||es,R=new Set,M=new Set;let A=!1,T=!1;if(_n(I,$=>{const{attributeName:Q,target:B,type:V,oldValue:q,addedNodes:G,removedNodes:D}=$,L=V==="attributes",W=V==="childList",Y=e===B,ae=L&&Ei(Q)?to(B,Q):0,ye=ae!==0&&q!==ae,ce=qb(y,Q)>-1&&ye;if(t&&(W||!Y)){const X=!L,K=L&&ye,U=K&&d&&Yp(B,d),re=(U?!E(B,Q,q,ae):X||K)&&!O($,!!U,e,r);_n(G,oe=>R.add(oe)),_n(D,oe=>R.add(oe)),T=T||re}!t&&Y&&ye&&!E(B,Q,q,ae)&&(M.add(Q),A=A||ce)}),R.size>0&&b($=>ll(R).reduce((Q,B)=>(An(Q,jP($,B)),Yp(B,$)?An(Q,B):Q),[])),t)return!P&&T&&n(!1),[!1];if(M.size>0||A){const $=[ll(M),A];return!P&&n.apply(0,$),$}},_=new NW(I=>k(I));return _.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:S,subtree:t,childList:t,characterData:t}),o=!0,[()=>{o&&(v(),_.disconnect(),o=!1)},()=>{if(o){m.m();const I=_.takeRecords();return!Kb(I)&&k(I,!0)}}]},Xf=3333333,Yf=e=>e&&(e.height||e.width),YP=(e,t,n)=>{const{Bt:r=!1,Vt:o=!1}=n||{},s=cl()[cV],{B:a}=Oo(),d=IP(`
`)[0],p=d.firstChild,h=nd.bind(0,e),[m]=xs({o:void 0,_:!0,u:(y,S)=>!(!y||!Yf(y)&&Yf(S))}),v=y=>{const S=Rs(y)&&y.length>0&&td(y[0]),k=!S&&Gb(y[0]);let _=!1,I=!1,P=!0;if(S){const[E,,O]=m(y.pop().contentRect),R=Yf(E),M=Yf(O);_=!O||!R,I=!M&&R,P=!_}else k?[,P]=y:I=y===!0;if(r&&P){const E=k?y[0]:nd(d);_s(d,E?a.n?-Xf:a.i?0:Xf:Xf),ka(d,Xf)}_||t({gt:!k,Yt:k?y:void 0,Vt:!!I})},b=[];let w=o?v:!1;return[()=>{ca(b),oa(d)},()=>{if(Ql){const y=new Ql(v);y.observe(p),An(b,()=>{y.disconnect()})}else if(s){const[y,S]=s.O(p,v,o);w=y,An(b,S)}if(r){const[y]=xs({o:void 0},h);An(b,Tr(d,"scroll",S=>{const k=y(),[_,I,P]=k;I&&(Jb(p,"ltr rtl"),_?_a(p,"rtl"):_a(p,"ltr"),v([!!_,I,P])),TP(S)}))}w&&(_a(d,XW),An(b,Tr(d,"animationstart",w,{C:!!Ql}))),(Ql||s)&&ts(e,d)}]},IV=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,EV=(e,t)=>{let n;const r=Zi(QW),o=[],[s]=xs({o:!1}),a=(d,p)=>{if(d){const h=s(IV(d)),[,m]=h;if(m)return!p&&t(h),[h]}},c=(d,p)=>{if(d&&d.length>0)return a(d.pop(),p)};return[()=>{ca(o),oa(r)},()=>{if(IS)n=new IS(d=>c(d),{root:e}),n.observe(r),An(o,()=>{n.disconnect()});else{const d=()=>{const m=rd(r);a(m)},[p,h]=YP(r,d);An(o,p),h(),d()}ts(e,r)},()=>{if(n)return c(n.takeRecords(),!0)}]},qS=`[${ws}]`,OV=`[${oi}]`,B0=["tabindex"],KS=["wrap","cols","rows"],F0=["id","class","style","open"],RV=(e,t,n)=>{let r,o,s;const{Z:a,J:c,tt:d,rt:p,ut:h,ft:m,_t:v}=e,{V:b}=Oo(),[w]=xs({u:MP,o:{w:0,h:0}},()=>{const V=m(dc,uc),q=m($0,""),G=q&&_s(c),D=q&&ka(c);v(dc,uc),v($0,""),v("",eh,!0);const L=Jp(d),W=Jp(c),Y=Zp(c);return v(dc,uc,V),v($0,"",q),v("",eh),_s(c,G),ka(c,D),{w:W.w+L.w+Y.w,h:W.h+L.h+Y.h}}),y=p?KS:F0.concat(KS),S=Zb(n,{v:()=>r,g:()=>o,p(V,q){const[G]=V,[D]=q;return[Fo(G).concat(Fo(D)).reduce((L,W)=>(L[W]=G[W]||D[W],L),{})]}}),k=V=>{_n(V||B0,q=>{if(qb(B0,q)>-1){const G=to(a,q);Ei(G)?to(c,q,G):wo(c,q)}})},_=(V,q)=>{const[G,D]=V,L={vt:D};return t({ht:G}),!q&&n(L),L},I=({gt:V,Yt:q,Vt:G})=>{const D=!V||G?n:S;let L=!1;if(q){const[W,Y]=q;L=Y,t({bt:W})}D({gt:V,yt:L})},P=(V,q)=>{const[,G]=w(),D={wt:G};return G&&!q&&(V?n:S)(D),D},E=(V,q,G)=>{const D={Ot:q};return q?!G&&S(D):h||k(V),D},[O,R,M]=d||!b?EV(a,_):[es,es,es],[A,T]=h?[es,es]:YP(a,I,{Vt:!0,Bt:!0}),[$,Q]=GS(a,!1,E,{Pt:F0,Ht:F0.concat(B0)}),B=h&&Ql&&new Ql(I.bind(0,{gt:!0}));return B&&B.observe(a),k(),[()=>{O(),A(),s&&s[0](),B&&B.disconnect(),$()},()=>{T(),R()},()=>{const V={},q=Q(),G=M(),D=s&&s[1]();return q&&pr(V,E.apply(0,An(q,!0))),G&&pr(V,_.apply(0,An(G,!0))),D&&pr(V,P.apply(0,An(D,!0))),V},V=>{const[q]=V("update.ignoreMutation"),[G,D]=V("update.attributes"),[L,W]=V("update.elementEvents"),[Y,ae]=V("update.debounce"),ye=W||D,ce=X=>Os(q)&&q(X);if(ye&&(s&&(s[1](),s[0]()),s=GS(d||c,!0,P,{Ht:y.concat(G||[]),Dt:L,Mt:qS,kt:(X,K)=>{const{target:U,attributeName:se}=X;return(!K&&se&&!h?OW(U,qS,OV):!1)||!!Yl(U,`.${Eo}`)||!!ce(X)}})),ae)if(S.m(),Rs(Y)){const X=Y[0],K=Y[1];r=pi(X)&&X,o=pi(K)&&K}else pi(Y)?(r=Y,o=!1):(r=!1,o=!1)}]},XS={x:0,y:0},MV=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:XS,Tt:XS,Ct:{x:"hidden",y:"hidden"},Et:{x:!1,y:!1},ht:!1,bt:nd(e.Z)}),DV=(e,t)=>{const n=r1(t,{}),[r,o,s]=ty(),[a,c,d]=yV(e),p=KP(MV(a)),[h,m]=p,v=PV(a,p),b=(I,P,E)=>{const R=Fo(I).some(M=>I[M])||!Xb(P)||E;return R&&s("u",[I,P,E]),R},[w,y,S,k]=RV(a,m,I=>b(v(n,I),{},!1)),_=h.bind(0);return _.jt=I=>r("u",I),_.Nt=()=>{const{W:I,J:P}=a,E=_s(I),O=ka(I);y(),c(),_s(P,E),ka(P,O)},_.qt=a,[(I,P)=>{const E=r1(t,I,P);return k(E),b(v(E,S(),P),I,!!P)},_,()=>{o(),w(),d()}]},{round:YS}=Math,AV=e=>{const{width:t,height:n}=Zs(e),{w:r,h:o}=rd(e);return{x:YS(t)/r||1,y:YS(n)/o||1}},TV=(e,t,n)=>{const r=t.scrollbars,{button:o,isPrimary:s,pointerType:a}=e,{pointers:c}=r;return o===0&&s&&r[n?"dragScroll":"clickScroll"]&&(c||[]).includes(a)},NV=(e,t)=>Tr(e,"mousedown",Tr.bind(0,t,"click",TP,{C:!0,$:!0}),{$:!0}),QS="pointerup pointerleave pointercancel lostpointercapture",$V=(e,t,n,r,o,s,a)=>{const{B:c}=Oo(),{Ft:d,Gt:p,Xt:h}=r,m=`scroll${a?"Left":"Top"}`,v=`client${a?"X":"Y"}`,b=a?"width":"height",w=a?"left":"top",y=a?"w":"h",S=a?"x":"y",k=(_,I)=>P=>{const{Tt:E}=s(),O=rd(p)[y]-rd(d)[y],M=I*P/O*E[S],T=nd(h)&&a?c.n||c.i?1:-1:1;o[m]=_+M*T};return Tr(p,"pointerdown",_=>{const I=Yl(_.target,`.${ry}`)===d,P=I?d:p;if(Ji(t,ws,TS,!0),TV(_,e,I)){const E=!I&&_.shiftKey,O=()=>Zs(d),R=()=>Zs(p),M=(W,Y)=>(W||O())[w]-(Y||R())[w],A=k(o[m]||0,1/AV(o)[S]),T=_[v],$=O(),Q=R(),B=$[b],V=M($,Q)+B/2,q=T-Q[w],G=I?0:q-V,D=W=>{ca(L),P.releasePointerCapture(W.pointerId)},L=[Ji.bind(0,t,ws,TS),Tr(n,QS,D),Tr(n,"selectstart",W=>NP(W),{S:!1}),Tr(p,QS,D),Tr(p,"pointermove",W=>{const Y=W[v]-T;(I||E)&&A(G+Y)})];if(E)A(G);else if(!I){const W=cl()[uV];W&&An(L,W.O(A,M,G,B,q))}P.setPointerCapture(_.pointerId)}})},zV=(e,t)=>(n,r,o,s,a,c)=>{const{Xt:d}=n,[p,h]=Gl(333),m=!!a.scrollBy;let v=!0;return ca.bind(0,[Tr(d,"pointerenter",()=>{r(zS,!0)}),Tr(d,"pointerleave pointercancel",()=>{r(zS)}),Tr(d,"wheel",b=>{const{deltaX:w,deltaY:y,deltaMode:S}=b;m&&v&&S===0&&Ta(d)===s&&a.scrollBy({left:w,top:y,behavior:"smooth"}),v=!1,r(FS,!0),p(()=>{v=!0,r(FS)}),NP(b)},{S:!1,$:!0}),NV(d,o),$V(e,s,o,n,a,t,c),h])},{min:s1,max:JS,abs:LV,round:BV}=Math,QP=(e,t,n,r)=>{if(r){const c=n?"x":"y",{Tt:d,zt:p}=r,h=p[c],m=d[c];return JS(0,s1(1,h/(h+m)))}const o=n?"width":"height",s=Zs(e)[o],a=Zs(t)[o];return JS(0,s1(1,s/a))},FV=(e,t,n,r,o,s)=>{const{B:a}=Oo(),c=s?"x":"y",d=s?"Left":"Top",{Tt:p}=r,h=BV(p[c]),m=LV(n[`scroll${d}`]),v=s&&o,b=a.i?m:h-m,y=s1(1,(v?b:m)/h),S=QP(e,t,s);return 1/S*(1-S)*y},HV=(e,t,n)=>{const{N:r,L:o}=Oo(),{scrollbars:s}=r(),{slot:a}=s,{ct:c,W:d,Z:p,J:h,lt:m,ot:v,it:b,ut:w}=t,{scrollbars:y}=m?{}:e,{slot:S}=y||{},k=GP([d,p,h],()=>w&&b?d:p,a,S),_=(G,D,L)=>{const W=L?_a:Jb;_n(G,Y=>{W(Y.Xt,D)})},I=(G,D)=>{_n(G,L=>{const[W,Y]=D(L);ro(W,Y)})},P=(G,D,L)=>{I(G,W=>{const{Ft:Y,Gt:ae}=W;return[Y,{[L?"width":"height"]:`${(100*QP(Y,ae,L,D)).toFixed(3)}%`}]})},E=(G,D,L)=>{const W=L?"X":"Y";I(G,Y=>{const{Ft:ae,Gt:ye,Xt:ce}=Y,X=FV(ae,ye,v,D,nd(ce),L);return[ae,{transform:X===X?`translate${W}(${(100*X).toFixed(3)}%)`:""}]})},O=[],R=[],M=[],A=(G,D,L)=>{const W=Gb(L),Y=W?L:!0,ae=W?!L:!0;Y&&_(R,G,D),ae&&_(M,G,D)},T=G=>{P(R,G,!0),P(M,G)},$=G=>{E(R,G,!0),E(M,G)},Q=G=>{const D=G?tV:nV,L=G?R:M,W=Kb(L)?$S:"",Y=Zi(`${Eo} ${D} ${W}`),ae=Zi(VP),ye=Zi(ry),ce={Xt:Y,Gt:ae,Ft:ye};return o||_a(Y,JW),ts(Y,ae),ts(ae,ye),An(L,ce),An(O,[oa.bind(0,Y),n(ce,A,c,p,v,G)]),ce},B=Q.bind(0,!0),V=Q.bind(0,!1),q=()=>{ts(k,R[0].Xt),ts(k,M[0].Xt),Qp(()=>{A($S)},300)};return B(),V(),[{Ut:T,Wt:$,Zt:A,Jt:{Kt:R,Qt:B,tn:I.bind(0,R)},nn:{Kt:M,Qt:V,tn:I.bind(0,M)}},q,ca.bind(0,O)]},WV=(e,t,n,r)=>{let o,s,a,c,d,p=0;const h=KP({}),[m]=h,[v,b]=Gl(),[w,y]=Gl(),[S,k]=Gl(100),[_,I]=Gl(100),[P,E]=Gl(()=>p),[O,R,M]=HV(e,n.qt,zV(t,n)),{Z:A,J:T,ot:$,st:Q,ut:B,it:V}=n.qt,{Jt:q,nn:G,Zt:D,Ut:L,Wt:W}=O,{tn:Y}=q,{tn:ae}=G,ye=se=>{const{Xt:re}=se,oe=B&&!V&&Ta(re)===T&&re;return[oe,{transform:oe?`translate(${_s($)}px, ${ka($)}px)`:""}]},ce=(se,re)=>{if(E(),se)D(BS);else{const oe=()=>D(BS,!0);p>0&&!re?P(oe):oe()}},X=()=>{c=s,c&&ce(!0)},K=[k,E,I,y,b,M,Tr(A,"pointerover",X,{C:!0}),Tr(A,"pointerenter",X),Tr(A,"pointerleave",()=>{c=!1,s&&ce(!1)}),Tr(A,"pointermove",()=>{o&&v(()=>{k(),ce(!0),_(()=>{o&&ce(!1)})})}),Tr(Q,"scroll",se=>{w(()=>{W(n()),a&&ce(!0),S(()=>{a&&!c&&ce(!1)})}),r(se),B&&Y(ye),B&&ae(ye)})],U=m.bind(0);return U.qt=O,U.Nt=R,[(se,re,oe)=>{const{At:pe,Lt:ie,It:ge,yt:ke}=oe,{A:xe}=Oo(),de=r1(t,se,re),Te=n(),{Tt:Oe,Ct:$e,bt:kt}=Te,[ct,on]=de("showNativeOverlaidScrollbars"),[vt,bt]=de("scrollbars.theme"),[Se,Me]=de("scrollbars.visibility"),[Pt,Tt]=de("scrollbars.autoHide"),[we]=de("scrollbars.autoHideDelay"),[ht,$t]=de("scrollbars.dragScroll"),[zt,ze]=de("scrollbars.clickScroll"),qe=pe||ie||ke,Pn=ge||Me,Pe=ct&&xe.x&&xe.y,Ze=(Qe,dt)=>{const Lt=Se==="visible"||Se==="auto"&&Qe==="scroll";return D(rV,Lt,dt),Lt};if(p=we,on&&D(ZW,Pe),bt&&(D(d),D(vt,!0),d=vt),Tt&&(o=Pt==="move",s=Pt==="leave",a=Pt!=="never",ce(!a,!0)),$t&&D(aV,ht),ze&&D(sV,zt),Pn){const Qe=Ze($e.x,!0),dt=Ze($e.y,!1);D(oV,!(Qe&&dt))}qe&&(L(Te),W(Te),D(LS,!Oe.x,!0),D(LS,!Oe.y,!1),D(eV,kt&&!V))},U,ca.bind(0,K)]},JP=(e,t,n)=>{Os(e)&&e(t||void 0,n||void 0)},ci=(e,t,n)=>{const{F:r,N:o,Y:s,j:a}=Oo(),c=cl(),d=Xp(e),p=d?e:e.target,h=qP(p);if(t&&!h){let m=!1;const v=B=>{const V=cl()[lV],q=V&&V.O;return q?q(B,!0):B},b=pr({},r(),v(t)),[w,y,S]=ty(n),[k,_,I]=DV(e,b),[P,E,O]=WV(e,b,_,B=>S("scroll",[Q,B])),R=(B,V)=>k(B,!!V),M=R.bind(0,{},!0),A=s(M),T=a(M),$=B=>{bV(p),A(),T(),O(),I(),m=!0,S("destroyed",[Q,!!B]),y()},Q={options(B,V){if(B){const q=V?r():{},G=$P(b,pr(q,v(B)));Xb(G)||(pr(b,G),R(G))}return pr({},b)},on:w,off:(B,V)=>{B&&V&&y(B,V)},state(){const{zt:B,Tt:V,Ct:q,Et:G,K:D,St:L,bt:W}=_();return pr({},{overflowEdge:B,overflowAmount:V,overflowStyle:q,hasOverflow:G,padding:D,paddingAbsolute:L,directionRTL:W,destroyed:m})},elements(){const{W:B,Z:V,K:q,J:G,tt:D,ot:L,st:W}=_.qt,{Jt:Y,nn:ae}=E.qt,ye=X=>{const{Ft:K,Gt:U,Xt:se}=X;return{scrollbar:se,track:U,handle:K}},ce=X=>{const{Kt:K,Qt:U}=X,se=ye(K[0]);return pr({},se,{clone:()=>{const re=ye(U());return P({},!0,{}),re}})};return pr({},{target:B,host:V,padding:q||G,viewport:G,content:D||G,scrollOffsetElement:L,scrollEventElement:W,scrollbarHorizontal:ce(Y),scrollbarVertical:ce(ae)})},update:B=>R({},B),destroy:$.bind(0)};return _.jt((B,V,q)=>{P(V,q,B)}),vV(p,Q),_n(Fo(c),B=>JP(c[B],0,Q)),gV(_.qt.it,o().cancel,!d&&e.cancel)?($(!0),Q):(_.Nt(),E.Nt(),S("initialized",[Q]),_.jt((B,V,q)=>{const{gt:G,yt:D,vt:L,At:W,Lt:Y,It:ae,wt:ye,Ot:ce}=B;S("updated",[Q,{updateHints:{sizeChanged:G,directionChanged:D,heightIntrinsicChanged:L,overflowEdgeChanged:W,overflowAmountChanged:Y,overflowStyleChanged:ae,contentMutation:ye,hostMutation:ce},changedOptions:V,force:q}])}),Q.update(!0),Q)}return h};ci.plugin=e=>{_n(iV(e),t=>JP(t,ci))};ci.valid=e=>{const t=e&&e.elements,n=Os(t)&&t();return Jv(n)&&!!qP(n.target)};ci.env=()=>{const{k:e,A:t,I:n,B:r,V:o,L:s,X:a,U:c,N:d,q:p,F:h,G:m}=Oo();return pr({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,rtlScrollBehavior:r,flexboxGlue:o,cssCustomProperties:s,staticDefaultInitialization:a,staticDefaultOptions:c,getDefaultInitialization:d,setDefaultInitialization:p,getDefaultOptions:h,setDefaultOptions:m})};const VV=()=>{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,a=r?n.requestIdleCallback:o,c=r?n.cancelIdleCallback:s,d=()=>{c(e),s(t)};return[(p,h)=>{d(),e=a(r?()=>{d(),t=o(p)}:p,typeof h=="object"?h:{timeout:2233})},d]},iy=e=>{const{options:t,events:n,defer:r}=e||{},[o,s]=f.useMemo(VV,[]),a=f.useRef(null),c=f.useRef(r),d=f.useRef(t),p=f.useRef(n);return f.useEffect(()=>{c.current=r},[r]),f.useEffect(()=>{const{current:h}=a;d.current=t,ci.valid(h)&&h.options(t||{},!0)},[t]),f.useEffect(()=>{const{current:h}=a;p.current=n,ci.valid(h)&&h.on(n||{},!0)},[n]),f.useEffect(()=>()=>{var h;s(),(h=a.current)==null||h.destroy()},[]),f.useMemo(()=>[h=>{const m=a.current;if(ci.valid(m))return;const v=c.current,b=d.current||{},w=p.current||{},y=()=>a.current=ci(h,b,w);v?o(y,v):y()},()=>a.current],[])},UV=(e,t)=>{const{element:n="div",options:r,events:o,defer:s,children:a,...c}=e,d=n,p=f.useRef(null),h=f.useRef(null),[m,v]=iy({options:r,events:o,defer:s});return f.useEffect(()=>{const{current:b}=p,{current:w}=h;return b&&w&&m({target:b,elements:{viewport:w,content:w}}),()=>{var y;return(y=v())==null?void 0:y.destroy()}},[m,n]),f.useImperativeHandle(t,()=>({osInstance:v,getElement:()=>p.current}),[]),H.createElement(d,{"data-overlayscrollbars-initialize":"",ref:p,...c},H.createElement("div",{ref:h},a))},ZP=f.forwardRef(UV);var ej={exports:{}},tj={};const $o=N1(M7),hu=N1(D7),GV=N1(A7);(function(e){var t,n,r=Ml&&Ml.__generator||function(J,ee){var he,_e,me,ut,st={label:0,sent:function(){if(1&me[0])throw me[1];return me[1]},trys:[],ops:[]};return ut={next:Ht(0),throw:Ht(1),return:Ht(2)},typeof Symbol=="function"&&(ut[Symbol.iterator]=function(){return this}),ut;function Ht(ft){return function(xt){return function(He){if(he)throw new TypeError("Generator is already executing.");for(;st;)try{if(he=1,_e&&(me=2&He[0]?_e.return:He[0]?_e.throw||((me=_e.return)&&me.call(_e),0):_e.next)&&!(me=me.call(_e,He[1])).done)return me;switch(_e=0,me&&(He=[2&He[0],me.value]),He[0]){case 0:case 1:me=He;break;case 4:return st.label++,{value:He[1],done:!1};case 5:st.label++,_e=He[1],He=[0];continue;case 7:He=st.ops.pop(),st.trys.pop();continue;default:if(!((me=(me=st.trys).length>0&&me[me.length-1])||He[0]!==6&&He[0]!==2)){st=0;continue}if(He[0]===3&&(!me||He[1]>me[0]&&He[1]=200&&J.status<=299},Q=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=S({},J),he=0,_e=Object.entries(ee);he<_e.length;he++){var me=_e[he];me[1]===void 0&&delete ee[me[0]]}return ee}function V(J){var ee=this;J===void 0&&(J={});var he=J.baseUrl,_e=J.prepareHeaders,me=_e===void 0?function(Zt){return Zt}:_e,ut=J.fetchFn,st=ut===void 0?T:ut,Ht=J.paramsSerializer,ft=J.isJsonContentType,xt=ft===void 0?Q:ft,He=J.jsonContentType,Ce=He===void 0?"application/json":He,Je=J.jsonReplacer,jt=J.timeout,Et=J.responseHandler,Nt=J.validateStatus,qt=I(J,["baseUrl","prepareHeaders","fetchFn","paramsSerializer","isJsonContentType","jsonContentType","jsonReplacer","timeout","responseHandler","validateStatus"]);return typeof fetch>"u"&&st===T&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(Zt,Ut){return E(ee,null,function(){var Be,yt,Mt,Wt,jn,Gt,un,sn,Or,Qn,It,In,Rn,Jn,mr,Tn,Nn,dn,Sn,En,vn,bn,Ke,Ot,St,at,wt,Bt,mt,ot,Re,Ie,De,We,tt,Dt;return r(this,function(Rt){switch(Rt.label){case 0:return Be=Ut.signal,yt=Ut.getState,Mt=Ut.extra,Wt=Ut.endpoint,jn=Ut.forced,Gt=Ut.type,Or=(sn=typeof Zt=="string"?{url:Zt}:Zt).url,It=(Qn=sn.headers)===void 0?new Headers(qt.headers):Qn,Rn=(In=sn.params)===void 0?void 0:In,mr=(Jn=sn.responseHandler)===void 0?Et??"json":Jn,Nn=(Tn=sn.validateStatus)===void 0?Nt??$:Tn,Sn=(dn=sn.timeout)===void 0?jt:dn,En=I(sn,["url","headers","params","responseHandler","validateStatus","timeout"]),vn=S(k(S({},qt),{signal:Be}),En),It=new Headers(B(It)),bn=vn,[4,me(It,{getState:yt,extra:Mt,endpoint:Wt,forced:jn,type:Gt})];case 1:bn.headers=Rt.sent()||It,Ke=function(Ve){return typeof Ve=="object"&&((0,A.isPlainObject)(Ve)||Array.isArray(Ve)||typeof Ve.toJSON=="function")},!vn.headers.has("content-type")&&Ke(vn.body)&&vn.headers.set("content-type",Ce),Ke(vn.body)&&xt(vn.headers)&&(vn.body=JSON.stringify(vn.body,Je)),Rn&&(Ot=~Or.indexOf("?")?"&":"?",St=Ht?Ht(Rn):new URLSearchParams(B(Rn)),Or+=Ot+St),Or=function(Ve,nn){if(!Ve)return nn;if(!nn)return Ve;if(function(hn){return new RegExp("(^|:)//").test(hn)}(nn))return nn;var yn=Ve.endsWith("/")||!nn.startsWith("?")?"/":"";return Ve=function(hn){return hn.replace(/\/$/,"")}(Ve),""+Ve+yn+function(hn){return hn.replace(/^\//,"")}(nn)}(he,Or),at=new Request(Or,vn),wt=at.clone(),un={request:wt},mt=!1,ot=Sn&&setTimeout(function(){mt=!0,Ut.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 Re=Rt.sent(),[2,{error:{status:mt?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(Re)},meta:un}];case 5:return ot&&clearTimeout(ot),[7];case 6:Ie=Bt.clone(),un.response=Ie,We="",Rt.label=7;case 7:return Rt.trys.push([7,9,,10]),[4,Promise.all([tn(Bt,mr).then(function(Ve){return De=Ve},function(Ve){return tt=Ve}),Ie.text().then(function(Ve){return We=Ve},function(){})])];case 8:if(Rt.sent(),tt)throw tt;return[3,10];case 9:return Dt=Rt.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:Bt.status,data:We,error:String(Dt)},meta:un}];case 10:return[2,Nn(Bt,De)?{data:De,meta:un}:{error:{status:Bt.status,data:De},meta:un}]}})})};function tn(Zt,Ut){return E(this,null,function(){var Be;return r(this,function(yt){switch(yt.label){case 0:return typeof Ut=="function"?[2,Ut(Zt)]:(Ut==="content-type"&&(Ut=xt(Zt.headers)?"json":"text"),Ut!=="json"?[3,2]:[4,Zt.text()]);case 1:return[2,(Be=yt.sent()).length?JSON.parse(Be):null];case 2:return[2,Zt.text()]}})})}}var q=function(J,ee){ee===void 0&&(ee=void 0),this.value=J,this.meta=ee};function G(J,ee){return J===void 0&&(J=0),ee===void 0&&(ee=5),E(this,null,function(){var he,_e;return r(this,function(me){switch(me.label){case 0:return he=Math.min(J,ee),_e=~~((Math.random()+.4)*(300<=Ie)}var En=(0,$e.createAsyncThunk)(Rn+"/executeQuery",dn,{getPendingMeta:function(){var Ke;return(Ke={startedTimeStamp:Date.now()})[$e.SHOULD_AUTOBATCH]=!0,Ke},condition:function(Ke,Ot){var St,at,wt,Bt=(0,Ot.getState)(),mt=(at=(St=Bt[Rn])==null?void 0:St.queries)==null?void 0:at[Ke.queryCacheKey],ot=mt==null?void 0:mt.fulfilledTimeStamp,Re=Ke.originalArgs,Ie=mt==null?void 0:mt.originalArgs,De=mr[Ke.endpointName];return!(!de(Ke)&&((mt==null?void 0:mt.status)==="pending"||!Sn(Ke,Bt)&&(!oe(De)||!((wt=De==null?void 0:De.forceRefetch)!=null&&wt.call(De,{currentArg:Re,previousArg:Ie,endpointState:mt,state:Bt})))&&ot))},dispatchConditionRejection:!0}),vn=(0,$e.createAsyncThunk)(Rn+"/executeMutation",dn,{getPendingMeta:function(){var Ke;return(Ke={startedTimeStamp:Date.now()})[$e.SHOULD_AUTOBATCH]=!0,Ke}});function bn(Ke){return function(Ot){var St,at;return((at=(St=Ot==null?void 0:Ot.meta)==null?void 0:St.arg)==null?void 0:at.endpointName)===Ke}}return{queryThunk:En,mutationThunk:vn,prefetch:function(Ke,Ot,St){return function(at,wt){var Bt=function(De){return"force"in De}(St)&&St.force,mt=function(De){return"ifOlderThan"in De}(St)&&St.ifOlderThan,ot=function(De){return De===void 0&&(De=!0),Nn.endpoints[Ke].initiate(Ot,{forceRefetch:De})},Re=Nn.endpoints[Ke].select(Ot)(wt());if(Bt)at(ot());else if(mt){var Ie=Re==null?void 0:Re.fulfilledTimeStamp;if(!Ie)return void at(ot());(Number(new Date)-Number(new Date(Ie)))/1e3>=mt&&at(ot())}else at(ot(!1))}},updateQueryData:function(Ke,Ot,St){return function(at,wt){var Bt,mt,ot=Nn.endpoints[Ke].select(Ot)(wt()),Re={patches:[],inversePatches:[],undo:function(){return at(Nn.util.patchQueryData(Ke,Ot,Re.inversePatches))}};if(ot.status===t.uninitialized)return Re;if("data"in ot)if((0,Oe.isDraftable)(ot.data)){var Ie=(0,Oe.produceWithPatches)(ot.data,St),De=Ie[2];(Bt=Re.patches).push.apply(Bt,Ie[1]),(mt=Re.inversePatches).push.apply(mt,De)}else{var We=St(ot.data);Re.patches.push({op:"replace",path:[],value:We}),Re.inversePatches.push({op:"replace",path:[],value:ot.data})}return at(Nn.util.patchQueryData(Ke,Ot,Re.patches)),Re}},upsertQueryData:function(Ke,Ot,St){return function(at){var wt;return at(Nn.endpoints[Ke].initiate(Ot,((wt={subscribe:!1,forceRefetch:!0})[xe]=function(){return{data:St}},wt)))}},patchQueryData:function(Ke,Ot,St){return function(at){at(Nn.internalActions.queryResultPatched({queryCacheKey:Tn({queryArgs:Ot,endpointDefinition:mr[Ke],endpointName:Ke}),patches:St}))}},buildMatchThunkActions:function(Ke,Ot){return{matchPending:(0,Te.isAllOf)((0,Te.isPending)(Ke),bn(Ot)),matchFulfilled:(0,Te.isAllOf)((0,Te.isFulfilled)(Ke),bn(Ot)),matchRejected:(0,Te.isAllOf)((0,Te.isRejected)(Ke),bn(Ot))}}}}({baseQuery:_e,reducerPath:me,context:he,api:J,serializeQueryArgs:ut}),Je=Ce.queryThunk,jt=Ce.mutationThunk,Et=Ce.patchQueryData,Nt=Ce.updateQueryData,qt=Ce.upsertQueryData,tn=Ce.prefetch,Zt=Ce.buildMatchThunkActions,Ut=function(It){var In=It.reducerPath,Rn=It.queryThunk,Jn=It.mutationThunk,mr=It.context,Tn=mr.endpointDefinitions,Nn=mr.apiUid,dn=mr.extractRehydrationInfo,Sn=mr.hasRehydrationInfo,En=It.assertTagType,vn=It.config,bn=(0,ge.createAction)(In+"/resetApiState"),Ke=(0,ge.createSlice)({name:In+"/queries",initialState:Pt,reducers:{removeQueryResult:{reducer:function(ot,Re){delete ot[Re.payload.queryCacheKey]},prepare:(0,ge.prepareAutoBatched)()},queryResultPatched:function(ot,Re){var Ie=Re.payload,De=Ie.patches;bt(ot,Ie.queryCacheKey,function(We){We.data=(0,vt.applyPatches)(We.data,De.concat())})}},extraReducers:function(ot){ot.addCase(Rn.pending,function(Re,Ie){var De,We=Ie.meta,tt=Ie.meta.arg,Dt=de(tt);(tt.subscribe||Dt)&&(Re[De=tt.queryCacheKey]!=null||(Re[De]={status:t.uninitialized,endpointName:tt.endpointName})),bt(Re,tt.queryCacheKey,function(Rt){Rt.status=t.pending,Rt.requestId=Dt&&Rt.requestId?Rt.requestId:We.requestId,tt.originalArgs!==void 0&&(Rt.originalArgs=tt.originalArgs),Rt.startedTimeStamp=We.startedTimeStamp})}).addCase(Rn.fulfilled,function(Re,Ie){var De=Ie.meta,We=Ie.payload;bt(Re,De.arg.queryCacheKey,function(tt){var Dt;if(tt.requestId===De.requestId||de(De.arg)){var Rt=Tn[De.arg.endpointName].merge;if(tt.status=t.fulfilled,Rt)if(tt.data!==void 0){var Ve=De.fulfilledTimeStamp,nn=De.arg,yn=De.baseQueryMeta,hn=De.requestId,gr=(0,ge.createNextState)(tt.data,function(Xn){return Rt(Xn,We,{arg:nn.originalArgs,baseQueryMeta:yn,fulfilledTimeStamp:Ve,requestId:hn})});tt.data=gr}else tt.data=We;else tt.data=(Dt=Tn[De.arg.endpointName].structuralSharing)==null||Dt?M((0,on.isDraft)(tt.data)?(0,vt.original)(tt.data):tt.data,We):We;delete tt.error,tt.fulfilledTimeStamp=De.fulfilledTimeStamp}})}).addCase(Rn.rejected,function(Re,Ie){var De=Ie.meta,We=De.condition,tt=De.requestId,Dt=Ie.error,Rt=Ie.payload;bt(Re,De.arg.queryCacheKey,function(Ve){if(!We){if(Ve.requestId!==tt)return;Ve.status=t.rejected,Ve.error=Rt??Dt}})}).addMatcher(Sn,function(Re,Ie){for(var De=dn(Ie).queries,We=0,tt=Object.entries(De);We"u"||navigator.onLine===void 0||navigator.onLine,focused:typeof document>"u"||document.visibilityState!=="hidden",middlewareRegistered:!1},vn),reducers:{middlewareRegistered:function(ot,Re){ot.middlewareRegistered=ot.middlewareRegistered!=="conflict"&&Nn===Re.payload||"conflict"}},extraReducers:function(ot){ot.addCase(ye,function(Re){Re.online=!0}).addCase(ce,function(Re){Re.online=!1}).addCase(Y,function(Re){Re.focused=!0}).addCase(ae,function(Re){Re.focused=!1}).addMatcher(Sn,function(Re){return S({},Re)})}}),mt=(0,ge.combineReducers)({queries:Ke.reducer,mutations:Ot.reducer,provided:St.reducer,subscriptions:wt.reducer,config:Bt.reducer});return{reducer:function(ot,Re){return mt(bn.match(Re)?void 0:ot,Re)},actions:k(S(S(S(S(S({},Bt.actions),Ke.actions),at.actions),wt.actions),Ot.actions),{unsubscribeMutationResult:Ot.actions.removeMutationResult,resetApiState:bn})}}({context:he,queryThunk:Je,mutationThunk:jt,reducerPath:me,assertTagType:He,config:{refetchOnFocus:ft,refetchOnReconnect:xt,refetchOnMountOrArgChange:Ht,keepUnusedDataFor:st,reducerPath:me}}),Be=Ut.reducer,yt=Ut.actions;$r(J.util,{patchQueryData:Et,updateQueryData:Nt,upsertQueryData:qt,prefetch:tn,resetApiState:yt.resetApiState}),$r(J.internalActions,yt);var Mt=function(It){var In=It.reducerPath,Rn=It.queryThunk,Jn=It.api,mr=It.context,Tn=mr.apiUid,Nn={invalidateTags:(0,lr.createAction)(In+"/invalidateTags")},dn=[Wr,pn,Hr,yr,Wn,Mo];return{middleware:function(En){var vn=!1,bn=k(S({},It),{internalState:{currentSubscriptions:{}},refetchQuery:Sn}),Ke=dn.map(function(at){return at(bn)}),Ot=function(at){var wt=at.api,Bt=at.queryThunk,mt=at.internalState,ot=wt.reducerPath+"/subscriptions",Re=null,Ie=!1,De=wt.internalActions,We=De.updateSubscriptionOptions,tt=De.unsubscribeQueryResult;return function(Dt,Rt){var Ve,nn;if(Re||(Re=JSON.parse(JSON.stringify(mt.currentSubscriptions))),wt.util.resetApiState.match(Dt))return Re=mt.currentSubscriptions={},[!0,!1];if(wt.internalActions.internal_probeSubscription.match(Dt)){var yn=Dt.payload;return[!1,!!((Ve=mt.currentSubscriptions[yn.queryCacheKey])!=null&&Ve[yn.requestId])]}var hn=function(gn,Vn){var ao,fn,$n,Ur,Rr,Va,Wd,Do,fa;if(We.match(Vn)){var Ls=Vn.payload,pa=Ls.queryCacheKey,io=Ls.requestId;return(ao=gn==null?void 0:gn[pa])!=null&&ao[io]&&(gn[pa][io]=Ls.options),!0}if(tt.match(Vn)){var lo=Vn.payload;return io=lo.requestId,gn[pa=lo.queryCacheKey]&&delete gn[pa][io],!0}if(wt.internalActions.removeQueryResult.match(Vn))return delete gn[Vn.payload.queryCacheKey],!0;if(Bt.pending.match(Vn)){var co=Vn.meta;if(io=co.requestId,(Yr=co.arg).subscribe)return(Ho=($n=gn[fn=Yr.queryCacheKey])!=null?$n:gn[fn]={})[io]=(Rr=(Ur=Yr.subscriptionOptions)!=null?Ur:Ho[io])!=null?Rr:{},!0}if(Bt.rejected.match(Vn)){var Ho,Ao=Vn.meta,Yr=Ao.arg;if(io=Ao.requestId,Ao.condition&&Yr.subscribe)return(Ho=(Wd=gn[Va=Yr.queryCacheKey])!=null?Wd:gn[Va]={})[io]=(fa=(Do=Yr.subscriptionOptions)!=null?Do:Ho[io])!=null?fa:{},!0}return!1}(mt.currentSubscriptions,Dt);if(hn){Ie||(fs(function(){var gn=JSON.parse(JSON.stringify(mt.currentSubscriptions)),Vn=(0,Vr.produceWithPatches)(Re,function(){return gn});Rt.next(wt.internalActions.subscriptionsUpdated(Vn[1])),Re=gn,Ie=!1}),Ie=!0);var gr=!!((nn=Dt.type)!=null&&nn.startsWith(ot)),Xn=Bt.rejected.match(Dt)&&Dt.meta.condition&&!!Dt.meta.arg.subscribe;return[!gr&&!Xn,!1]}return[!0,!1]}}(bn),St=function(at){var wt=at.reducerPath,Bt=at.context,mt=at.refetchQuery,ot=at.internalState,Re=at.api.internalActions.removeQueryResult;function Ie(De,We){var tt=De.getState()[wt],Dt=tt.queries,Rt=ot.currentSubscriptions;Bt.batch(function(){for(var Ve=0,nn=Object.keys(Rt);Ve{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||!wu(t)?null:i.jsxs(i.Fragment,{children:[i.jsx(Ye,{children:n}),i.jsxs(yb,{sx:{paddingInlineStart:6},children:[t.isInitialImage&&i.jsx(wa,{children:"Image to Image"}),t.isCanvasImage&&i.jsx(wa,{children:"Unified Canvas"}),t.isControlNetImage&&i.jsx(wa,{children:"ControlNet"}),t.isNodesImage&&i.jsx(wa,{children:"Node Editor"})]}),i.jsx(Ye,{children:r})]})},nj=f.memo(qV),KV=e=>{const{boardToDelete:t,setBoardToDelete:n}=e,{t:r}=be(),o=z(_=>_.config.canRestoreDeletedImagesFromBin),{currentData:s,isFetching:a}=T7((t==null?void 0:t.board_id)??oo.skipToken),c=f.useMemo(()=>fe([Xe],_=>{const I=(s??[]).map(E=>N7(_,E));return{imageUsageSummary:{isInitialImage:wu(I,E=>E.isInitialImage),isCanvasImage:wu(I,E=>E.isCanvasImage),isNodesImage:wu(I,E=>E.isNodesImage),isControlNetImage:wu(I,E=>E.isControlNetImage)}}}),[s]),[d,{isLoading:p}]=$7(),[h,{isLoading:m}]=z7(),{imageUsageSummary:v}=z(c),b=f.useCallback(()=>{t&&(d(t.board_id),n(void 0))},[t,d,n]),w=f.useCallback(()=>{t&&(h(t.board_id),n(void 0))},[t,h,n]),y=f.useCallback(()=>{n(void 0)},[n]),S=f.useRef(null),k=f.useMemo(()=>m||p||a,[m,p,a]);return t?i.jsx(_d,{isOpen:!!t,onClose:y,leastDestructiveRef:S,isCentered:!0,children:i.jsx(Da,{children:i.jsxs(Pd,{children:[i.jsxs(Ma,{fontSize:"lg",fontWeight:"bold",children:["Delete ",t.board_name]}),i.jsx(Aa,{children:i.jsxs(F,{direction:"column",gap:3,children:[a?i.jsx(gm,{children:i.jsx(F,{sx:{w:"full",h:32}})}):i.jsx(nj,{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."}),i.jsx(Ye,{children:"Deleted boards cannot be restored."}),i.jsx(Ye,{children:r(o?"gallery.deleteImageBin":"gallery.deleteImagePermanent")})]})}),i.jsx(Ra,{children:i.jsxs(F,{sx:{justifyContent:"space-between",width:"full",gap:2},children:[i.jsx(en,{ref:S,onClick:y,children:"Cancel"}),i.jsx(en,{colorScheme:"warning",isLoading:k,onClick:b,children:"Delete Board Only"}),i.jsx(en,{colorScheme:"error",isLoading:k,onClick:w,children:"Delete Board and Images"})]})})]})})}):null},XV=f.memo(KV),rj=Ae((e,t)=>{const{role:n,tooltip:r="",tooltipProps:o,isChecked:s,...a}=e;return i.jsx(wn,{label:r,hasArrow:!0,...o,...o!=null&&o.placement?{placement:o.placement}:{placement:"top"},children:i.jsx(Ca,{ref:t,role:n,colorScheme:s?"accent":"base",...a})})});rj.displayName="IAIIconButton";const Le=f.memo(rj),YV="My Board",QV=()=>{const[e,{isLoading:t}]=L7(),n=f.useCallback(()=>{e(YV)},[e]);return i.jsx(Le,{icon:i.jsx(ml,{}),isLoading:t,tooltip:"Add Board","aria-label":"Add Board",onClick:n,size:"sm"})};var ZS={path:i.jsxs("g",{stroke:"currentColor",strokeWidth:"1.5",children:[i.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"}),i.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"}),i.jsx("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},oj=Ae((e,t)=>{const{as:n,viewBox:r,color:o="currentColor",focusable:s=!1,children:a,className:c,__css:d,...p}=e,h=Ct("chakra-icon",c),m=ia("Icon",e),v={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:o,...d,...m},b={ref:t,focusable:s,className:h,__css:v},w=r??ZS.viewBox;if(n&&typeof n!="string")return i.jsx(je.svg,{as:n,...b,...p});const y=a??ZS.path;return i.jsx(je.svg,{verticalAlign:"middle",viewBox:w,...b,...p,children:y})});oj.displayName="Icon";function Ad(e){const{viewBox:t="0 0 24 24",d:n,displayName:r,defaultProps:o={}}=e,s=f.Children.toArray(e.path),a=Ae((c,d)=>i.jsx(oj,{ref:d,viewBox:t,...o,...c,children:s.length?s:i.jsx("path",{fill:"currentColor",d:n})}));return a.displayName=r,a}var sj=Ad({displayName:"ExternalLinkIcon",path:i.jsxs("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[i.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),i.jsx("path",{d:"M15 3h6v6"}),i.jsx("path",{d:"M10 14L21 3"})]})}),ly=Ad({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"}),JV=Ad({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"}),ZV=Ad({displayName:"DeleteIcon",path:i.jsx("g",{fill:"currentColor",children:i.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"})})}),eU=Ad({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});const tU=fe([Xe],({boards:e})=>{const{searchText:t}=e;return{searchText:t}},Ge),nU=()=>{const e=te(),{searchText:t}=z(tU),n=f.useRef(null),r=f.useCallback(c=>{e(D2(c))},[e]),o=f.useCallback(()=>{e(D2(""))},[e]),s=f.useCallback(c=>{c.key==="Escape"&&o()},[o]),a=f.useCallback(c=>{r(c.target.value)},[r]);return f.useEffect(()=>{n.current&&n.current.focus()},[]),i.jsxs(B3,{children:[i.jsx(yd,{ref:n,placeholder:"Search Boards...",value:t,onKeyDown:s,onChange:a}),t&&t.length&&i.jsx(gb,{children:i.jsx(Ca,{onClick:o,size:"xs",variant:"ghost","aria-label":"Clear Search",opacity:.5,icon:i.jsx(JV,{boxSize:2})})})]})},rU=f.memo(nU),oU=e=>{const{isOver:t,label:n="Drop"}=e,r=f.useRef(ui()),{colorMode:o}=Ds();return i.jsx(Ir.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:i.jsxs(F,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full"},children:[i.jsx(F,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:Fe("base.700","base.900")(o),opacity:.7,borderRadius:"base",alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),i.jsx(F,{sx:{position:"absolute",top:.5,insetInlineStart:.5,insetInlineEnd:.5,bottom:.5,opacity:1,borderWidth:2,borderColor:t?Fe("base.50","base.50")(o):Fe("base.200","base.300")(o),borderRadius:"lg",borderStyle:"dashed",transitionProperty:"common",transitionDuration:"0.1s",alignItems:"center",justifyContent:"center"},children:i.jsx(Ye,{sx:{fontSize:"2xl",fontWeight:600,transform:t?"scale(1.1)":"scale(1)",color:t?Fe("base.50","base.50")(o):Fe("base.200","base.300")(o),transitionProperty:"common",transitionDuration:"0.1s"},children:n})})]})},r.current)},th=f.memo(oU),sU=e=>{const{dropLabel:t,data:n,disabled:r}=e,o=f.useRef(ui()),{isOver:s,setNodeRef:a,active:c}=$1({id:o.current,disabled:r,data:n});return i.jsx(Ee,{ref:a,position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",pointerEvents:"none",children:i.jsx(ho,{children:Ip(n,c)&&i.jsx(th,{isOver:s,label:t})})})},cy=f.memo(sU),uy=({isSelected:e,isHovered:t})=>i.jsx(Ee,{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",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}}}),aj=()=>i.jsx(F,{sx:{position:"absolute",insetInlineEnd:0,top:0,p:1},children:i.jsx(hl,{variant:"solid",sx:{bg:"accent.400",_dark:{bg:"accent.500"}},children:"auto"})});var $u=globalThis&&globalThis.__assign||function(){return $u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const{boardName:t}=Jh(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},aU=({board:e,setBoardToDelete:t})=>{const n=f.useCallback(()=>{t&&t(e)},[e,t]);return i.jsxs(i.Fragment,{children:[e.image_count>0&&i.jsx(i.Fragment,{}),i.jsx(Pr,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:i.jsx(us,{}),onClick:n,children:"Delete Board"})]})},iU=f.memo(aU),lU=()=>i.jsx(i.Fragment,{}),cU=f.memo(lU),dy=f.memo(({board:e,board_id:t,setBoardToDelete:n,children:r})=>{const o=te(),s=f.useMemo(()=>fe(Xe,({gallery:h})=>({isAutoAdd:h.autoAddBoardId===t})),[t]),{isAutoAdd:a}=z(s),c=Rm(t),d=f.useCallback(()=>{o(M5(t))},[t,o]),p=f.useCallback(h=>{h.preventDefault()},[]);return i.jsx(ij,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>i.jsx(Bc,{sx:{visibility:"visible !important"},motionProps:nm,onContextMenu:p,children:i.jsxs(Qu,{title:c,children:[i.jsx(Pr,{icon:i.jsx(ml,{}),isDisabled:a,onClick:d,children:"Auto-add to this Board"}),!e&&i.jsx(cU,{}),e&&i.jsx(iU,{board:e,setBoardToDelete:n})]})}),children:r})});dy.displayName="HoverableBoard";const lj=f.memo(({board:e,isSelected:t,setBoardToDelete:n})=>{const r=te(),o=f.useMemo(()=>fe(Xe,({gallery:E})=>({isSelectedForAutoAdd:e.board_id===E.autoAddBoardId}),Ge),[e.board_id]),{isSelectedForAutoAdd:s}=z(o),[a,c]=f.useState(!1),d=f.useCallback(()=>{c(!0)},[]),p=f.useCallback(()=>{c(!1)},[]),{currentData:h}=os(e.cover_image_name??oo.skipToken),{board_name:m,board_id:v}=e,[b,w]=f.useState(m),y=f.useCallback(()=>{r(D5(v))},[v,r]),[S,{isLoading:k}]=B7(),_=f.useMemo(()=>({id:v,actionType:"MOVE_BOARD",context:{boardId:v}}),[v]),I=f.useCallback(async E=>{if(!E.trim()){w(m);return}if(E!==m)try{const{board_name:O}=await S({board_id:v,changes:{board_name:E}}).unwrap();w(O)}catch{w(m)}},[v,m,S]),P=f.useCallback(E=>{w(E)},[]);return i.jsx(Ee,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:i.jsx(F,{onMouseOver:d,onMouseOut:p,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",w:"full",h:"full"},children:i.jsx(dy,{board:e,board_id:v,setBoardToDelete:n,children:E=>i.jsxs(F,{ref:E,onClick:y,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[h!=null&&h.thumbnail_url?i.jsx(Tc,{src:h==null?void 0:h.thumbnail_url,draggable:!1,sx:{objectFit:"cover",w:"full",h:"full",maxH:"full",borderRadius:"base",borderBottomRadius:"lg"}}):i.jsx(F,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:i.jsx(no,{boxSize:12,as:_W,sx:{mt:-6,opacity:.7,color:"base.500",_dark:{color:"base.500"}}})}),s&&i.jsx(aj,{}),i.jsx(uy,{isSelected:t,isHovered:a}),i.jsx(F,{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:i.jsxs(Z_,{value:b,isDisabled:k,submitOnBlur:!0,onChange:P,onSubmit:I,sx:{w:"full"},children:[i.jsx(Y_,{sx:{p:0,fontWeight:t?700:500,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis"},noOfLines:1}),i.jsx(X_,{sx:{p:0,_focusVisible:{p:0,textAlign:"center",boxShadow:"none"}}})]})}),i.jsx(cy,{data:_,dropLabel:i.jsx(Ye,{fontSize:"md",children:"Move"})})]})})})})});lj.displayName="HoverableBoard";const uU=fe(Xe,({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},Ge),cj=f.memo(({isSelected:e})=>{const t=te(),{autoAddBoardId:n}=z(uU),r=Rm(void 0),o=f.useCallback(()=>{t(D5(void 0))},[t]),[s,a]=f.useState(!1),c=f.useCallback(()=>{a(!0)},[]),d=f.useCallback(()=>{a(!1)},[]),p=f.useMemo(()=>({id:"no_board",actionType:"MOVE_BOARD",context:{boardId:void 0}}),[]);return i.jsx(Ee,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:i.jsx(F,{onMouseOver:c,onMouseOut:d,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",borderRadius:"base",w:"full",h:"full"},children:i.jsx(dy,{children:h=>i.jsxs(F,{ref:h,onClick:o,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[i.jsx(F,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:i.jsx(Tc,{src:A5,alt:"invoke-ai-logo",sx:{opacity:.4,filter:"grayscale(1)",mt:-6,w:16,h:16,minW:16,minH:16,userSelect:"none"}})}),!n&&i.jsx(aj,{}),i.jsx(F,{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:r}),i.jsx(uy,{isSelected:e,isHovered:s}),i.jsx(cy,{data:p,dropLabel:i.jsx(Ye,{fontSize:"md",children:"Move"})})]})})})})});cj.displayName="HoverableBoard";const dU=fe([Xe],({boards:e,gallery:t})=>{const{searchText:n}=e,{selectedBoardId:r}=t;return{selectedBoardId:r,searchText:n}},Ge),fU=e=>{const{isOpen:t}=e,{selectedBoardId:n,searchText:r}=z(dU),{data:o}=Jh(),s=r?o==null?void 0:o.filter(d=>d.board_name.toLowerCase().includes(r.toLowerCase())):o,[a,c]=f.useState();return i.jsxs(i.Fragment,{children:[i.jsx(sm,{in:t,animateOpacity:!0,children:i.jsxs(F,{layerStyle:"first",sx:{flexDir:"column",gap:2,p:2,mt:2,borderRadius:"base"},children:[i.jsxs(F,{sx:{gap:2,alignItems:"center"},children:[i.jsx(rU,{}),i.jsx(QV,{})]}),i.jsx(ZP,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:i.jsxs(ol,{className:"list-container",sx:{gridTemplateColumns:"repeat(auto-fill, minmax(108px, 1fr));",maxH:346},children:[i.jsx(Nv,{sx:{p:1.5},children:i.jsx(cj,{isSelected:n===void 0})}),s&&s.map(d=>i.jsx(Nv,{sx:{p:1.5},children:i.jsx(lj,{board:d,isSelected:n===d.board_id,setBoardToDelete:c})},d.board_id))]})})]})}),i.jsx(XV,{boardToDelete:a,setBoardToDelete:c})]})},pU=f.memo(fU),hU=fe([Xe],e=>{const{selectedBoardId:t}=e.gallery;return{selectedBoardId:t}},Ge),mU=e=>{const{isOpen:t,onToggle:n}=e,{selectedBoardId:r}=z(hU),o=Rm(r),s=f.useMemo(()=>o.length>20?`${o.substring(0,20)}...`:o,[o]);return i.jsxs(F,{as:vc,onClick:n,size:"sm",sx:{position:"relative",gap:2,w:"full",justifyContent:"space-between",alignItems:"center",px:2},children:[i.jsx(Ye,{noOfLines:1,sx:{fontWeight:600,w:"100%",textAlign:"center",color:"base.800",_dark:{color:"base.200"}},children:s}),i.jsx(ly,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]})},gU=f.memo(mU);function uj(e){return et({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146z"}}]})(e)}function dj(e){return et({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146zm.122 2.112v-.002.002zm0-.002v.002a.5.5 0 0 1-.122.51L6.293 6.878a.5.5 0 0 1-.511.12H5.78l-.014-.004a4.507 4.507 0 0 0-.288-.076 4.922 4.922 0 0 0-.765-.116c-.422-.028-.836.008-1.175.15l5.51 5.509c.141-.34.177-.753.149-1.175a4.924 4.924 0 0 0-.192-1.054l-.004-.013v-.001a.5.5 0 0 1 .12-.512l3.536-3.535a.5.5 0 0 1 .532-.115l.096.022c.087.017.208.034.344.034.114 0 .23-.011.343-.04L9.927 2.028c-.029.113-.04.23-.04.343a1.779 1.779 0 0 0 .062.46z"}}]})(e)}const vU=fe([Xe],e=>{const{shouldPinGallery:t}=e.ui;return{shouldPinGallery:t}},Ge),bU=()=>{const e=te(),{t}=be(),{shouldPinGallery:n}=z(vU),r=()=>{e(T5()),e(Co())};return i.jsx(Le,{size:"sm","aria-label":t("gallery.pinGallery"),tooltip:`${t("gallery.pinGallery")} (Shift+G)`,onClick:r,icon:n?i.jsx(uj,{}):i.jsx(dj,{})})},yU=e=>{const{triggerComponent:t,children:n,hasArrow:r=!0,isLazy:o=!0,...s}=e;return i.jsxs(Nb,{isLazy:o,...s,children:[i.jsx(Tb,{children:t}),i.jsxs($b,{shadow:"dark-lg",children:[r&&i.jsx(x6,{}),n]})]})},gl=f.memo(yU),xU=e=>{const{label:t,...n}=e,{colorMode:r}=Ds();return i.jsx(W_,{colorScheme:"accent",...n,children:i.jsx(Ye,{sx:{fontSize:"sm",color:Fe("base.800","base.200")(r)},children:t})})},Gn=f.memo(xU);function wU(e){return et({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 SU=e=>{const[t,n]=f.useState(!1),{label:r,value:o,min:s=1,max:a=100,step:c=1,onChange:d,tooltipSuffix:p="",withSliderMarks:h=!1,withInput:m=!1,isInteger:v=!1,inputWidth:b=16,withReset:w=!1,hideTooltip:y=!1,isCompact:S=!1,isDisabled:k=!1,sliderMarks:_,handleReset:I,sliderFormControlProps:P,sliderFormLabelProps:E,sliderMarkProps:O,sliderTrackProps:R,sliderThumbProps:M,sliderNumberInputProps:A,sliderNumberInputFieldProps:T,sliderNumberInputStepperProps:$,sliderTooltipProps:Q,sliderIAIIconButtonProps:B,...V}=e,q=te(),{t:G}=be(),[D,L]=f.useState(String(o));f.useEffect(()=>{L(o)},[o]);const W=f.useMemo(()=>A!=null&&A.min?A.min:s,[s,A==null?void 0:A.min]),Y=f.useMemo(()=>A!=null&&A.max?A.max:a,[a,A==null?void 0:A.max]),ae=f.useCallback(re=>{d(re)},[d]),ye=f.useCallback(re=>{re.target.value===""&&(re.target.value=String(W));const oe=Es(v?Math.floor(Number(re.target.value)):Number(D),W,Y),pe=Su(oe,c);d(pe),L(pe)},[v,D,W,Y,d,c]),ce=f.useCallback(re=>{L(re)},[]),X=f.useCallback(()=>{I&&I()},[I]),K=f.useCallback(re=>{re.target instanceof HTMLDivElement&&re.target.focus()},[]),U=f.useCallback(re=>{re.shiftKey&&q(Po(!0))},[q]),se=f.useCallback(re=>{re.shiftKey||q(Po(!1))},[q]);return i.jsxs(mo,{onClick:K,sx:S?{display:"flex",flexDirection:"row",alignItems:"center",columnGap:4,margin:0,padding:0}:{},isDisabled:k,...P,children:[r&&i.jsx(Lo,{sx:m?{mb:-1.5}:{},...E,children:r}),i.jsxs(di,{w:"100%",gap:2,alignItems:"center",children:[i.jsxs(z6,{"aria-label":r,value:o,min:s,max:a,step:c,onChange:ae,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),focusThumbOnChange:!1,isDisabled:k,...V,children:[h&&!_&&i.jsxs(i.Fragment,{children:[i.jsx(Ul,{value:s,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...O,children:s}),i.jsx(Ul,{value:a,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...O,children:a})]}),h&&_&&i.jsx(i.Fragment,{children:_.map((re,oe)=>oe===0?i.jsx(Ul,{value:re,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...O,children:re},re):oe===_.length-1?i.jsx(Ul,{value:re,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...O,children:re},re):i.jsx(Ul,{value:re,sx:{transform:"translateX(-50%)"},...O,children:re},re))}),i.jsx(B6,{...R,children:i.jsx(F6,{})}),i.jsx(wn,{hasArrow:!0,placement:"top",isOpen:t,label:`${o}${p}`,hidden:y,...Q,children:i.jsx(L6,{...M,zIndex:0})})]}),m&&i.jsxs(dm,{min:W,max:Y,step:c,value:D,onChange:ce,onBlur:ye,focusInputOnChange:!1,...A,children:[i.jsx(pm,{onKeyDown:U,onKeyUp:se,minWidth:b,...T}),i.jsxs(fm,{...$,children:[i.jsx(mm,{onClick:()=>d(Number(D))}),i.jsx(hm,{onClick:()=>d(Number(D))})]})]}),w&&i.jsx(Le,{size:"sm","aria-label":G("accessibility.reset"),tooltip:G("accessibility.reset"),icon:i.jsx(wU,{}),isDisabled:k,onClick:X,...B})]})]})},_t=f.memo(SU);function CU(e){const t=f.createContext(null);return[({children:o,value:s})=>H.createElement(t.Provider,{value:s},o),()=>{const o=f.useContext(t);if(o===null)throw new Error(e);return o}]}function fj(e){return Array.isArray(e)?e:[e]}const kU=()=>{};function _U(e,t={active:!0}){return typeof e!="function"||!t.active?t.onKeyDown||kU:n=>{var r;n.key==="Escape"&&(e(n),(r=t.onTrigger)==null||r.call(t))}}function pj({data:e}){const t=[],n=[],r=e.reduce((o,s,a)=>(s.group?o[s.group]?o[s.group].push(a):o[s.group]=[a]:n.push(a),o),{});return Object.keys(r).forEach(o=>{t.push(...r[o].map(s=>e[s]))}),t.push(...n.map(o=>e[o])),t}function hj(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==H.Fragment:!1}function mj(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 IU=F7({key:"mantine",prepend:!0});function EU(){return __()||IU}var OU=Object.defineProperty,eC=Object.getOwnPropertySymbols,RU=Object.prototype.hasOwnProperty,MU=Object.prototype.propertyIsEnumerable,tC=(e,t,n)=>t in e?OU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,DU=(e,t)=>{for(var n in t||(t={}))RU.call(t,n)&&tC(e,n,t[n]);if(eC)for(var n of eC(t))MU.call(t,n)&&tC(e,n,t[n]);return e};const H0="ref";function AU(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(!(H0 in n))return{args:e,ref:t};t=n[H0];const r=DU({},n);return delete r[H0],{args:[r],ref:t}}const{cssFactory:TU}=(()=>{function e(n,r,o){const s=[],a=V7(n,s,o);return s.length<2?o:a+r(s)}function t(n){const{cache:r}=n,o=(...a)=>{const{ref:c,args:d}=AU(a),p=H7(d,r.registered);return W7(r,p,!1),`${r.key}-${p.name}${c===void 0?"":` ${c}`}`};return{css:o,cx:(...a)=>e(r.registered,o,gj(a))}}return{cssFactory:t}})();function vj(){const e=EU();return jU(()=>TU({cache:e}),[e])}function NU({cx:e,classes:t,context:n,classNames:r,name:o,cache:s}){const a=n.reduce((c,d)=>(Object.keys(d.classNames).forEach(p=>{typeof c[p]!="string"?c[p]=`${d.classNames[p]}`:c[p]=`${c[p]} ${d.classNames[p]}`}),c),{});return Object.keys(t).reduce((c,d)=>(c[d]=e(t[d],a[d],r!=null&&r[d],Array.isArray(o)?o.filter(Boolean).map(p=>`${(s==null?void 0:s.key)||"mantine"}-${p}-${d}`).join(" "):o?`${(s==null?void 0:s.key)||"mantine"}-${o}-${d}`:null),c),{})}var $U=Object.defineProperty,nC=Object.getOwnPropertySymbols,zU=Object.prototype.hasOwnProperty,LU=Object.prototype.propertyIsEnumerable,rC=(e,t,n)=>t in e?$U(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,W0=(e,t)=>{for(var n in t||(t={}))zU.call(t,n)&&rC(e,n,t[n]);if(nC)for(var n of nC(t))LU.call(t,n)&&rC(e,n,t[n]);return e};function a1(e,t){return t&&Object.keys(t).forEach(n=>{e[n]?e[n]=W0(W0({},e[n]),t[n]):e[n]=W0({},t[n])}),e}function oC(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,a)=>a1(s,a),{}):o(e)}function BU({ctx:e,theme:t,params:n,variant:r,size:o}){return e.reduce((s,a)=>(a.variants&&r in a.variants&&a1(s,a.variants[r](t,n,{variant:r,size:o})),a.sizes&&o in a.sizes&&a1(s,a.sizes[o](t,n,{variant:r,size:o})),s),{})}function so(e){const t=typeof e=="function"?e:()=>e;function n(r,o){const s=Fa(),a=UD(o==null?void 0:o.name),c=__(),d={variant:o==null?void 0:o.variant,size:o==null?void 0:o.size},{css:p,cx:h}=vj(),m=t(s,r,d),v=oC(o==null?void 0:o.styles,s,r,d),b=oC(a,s,r,d),w=BU({ctx:a,theme:s,params:r,variant:o==null?void 0:o.variant,size:o==null?void 0:o.size}),y=Object.fromEntries(Object.keys(m).map(S=>{const k=h({[p(m[S])]:!(o!=null&&o.unstyled)},p(w[S]),p(b[S]),p(v[S]));return[S,k]}));return{classes:NU({cx:h,classes:y,context:a,classNames:o==null?void 0:o.classNames,name:o==null?void 0:o.name,cache:c}),cx:h,theme:s}}return n}function sC(e){return`___ref-${e||""}`}var FU=Object.defineProperty,HU=Object.defineProperties,WU=Object.getOwnPropertyDescriptors,aC=Object.getOwnPropertySymbols,VU=Object.prototype.hasOwnProperty,UU=Object.prototype.propertyIsEnumerable,iC=(e,t,n)=>t in e?FU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mu=(e,t)=>{for(var n in t||(t={}))VU.call(t,n)&&iC(e,n,t[n]);if(aC)for(var n of aC(t))UU.call(t,n)&&iC(e,n,t[n]);return e},gu=(e,t)=>HU(e,WU(t));const vu={in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${Ue(10)})`},transitionProperty:"transform, opacity"},Qf={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(-${Ue(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(${Ue(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(${Ue(20)}) rotate(-5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Ue(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:gu(mu({},vu),{common:{transformOrigin:"center center"}}),"pop-bottom-left":gu(mu({},vu),{common:{transformOrigin:"bottom left"}}),"pop-bottom-right":gu(mu({},vu),{common:{transformOrigin:"bottom right"}}),"pop-top-left":gu(mu({},vu),{common:{transformOrigin:"top left"}}),"pop-top-right":gu(mu({},vu),{common:{transformOrigin:"top right"}})},lC=["mousedown","touchstart"];function GU(e,t,n){const r=f.useRef();return f.useEffect(()=>{const o=s=>{const{target:a}=s??{};if(Array.isArray(n)){const c=(a==null?void 0:a.hasAttribute("data-ignore-outside-clicks"))||!document.body.contains(a)&&a.tagName!=="HTML";n.every(p=>!!p&&!s.composedPath().includes(p))&&!c&&e()}else r.current&&!r.current.contains(a)&&e()};return(t||lC).forEach(s=>document.addEventListener(s,o)),()=>{(t||lC).forEach(s=>document.removeEventListener(s,o))}},[r,e,n]),r}function qU(e,t){try{return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}catch{return e.addListener(t),()=>e.removeListener(t)}}function KU(e,t){return typeof t=="boolean"?t:typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function XU(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[r,o]=f.useState(n?t:KU(e,t)),s=f.useRef();return f.useEffect(()=>{if("matchMedia"in window)return s.current=window.matchMedia(e),o(s.current.matches),qU(s.current,a=>o(a.matches))},[e]),r}const bj=typeof document<"u"?f.useLayoutEffect:f.useEffect;function Ps(e,t){const n=f.useRef(!1);f.useEffect(()=>()=>{n.current=!1},[]),f.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function YU({opened:e,shouldReturnFocus:t=!0}){const n=f.useRef(),r=()=>{var o;n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&((o=n.current)==null||o.focus({preventScroll:!0}))};return Ps(()=>{let o=-1;const s=a=>{a.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 QU=/input|select|textarea|button|object/,yj="a, input, select, textarea, button, object, [tabindex]";function JU(e){return e.style.display==="none"}function ZU(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(JU(n))return!1;n=n.parentNode}return!0}function xj(e){let t=e.getAttribute("tabindex");return t===null&&(t=void 0),parseInt(t,10)}function i1(e){const t=e.nodeName.toLowerCase(),n=!Number.isNaN(xj(e));return(QU.test(t)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&ZU(e)}function wj(e){const t=xj(e);return(Number.isNaN(t)||t>=0)&&i1(e)}function eG(e){return Array.from(e.querySelectorAll(yj)).filter(wj)}function tG(e,t){const n=eG(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 a=n[t.shiftKey?n.length-1:0];a&&a.focus()}function py(){return`mantine-${Math.random().toString(36).slice(2,11)}`}function nG(e,t="body > :not(script)"){const n=py(),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 a=o.getAttribute("aria-hidden"),c=o.getAttribute("data-hidden"),d=o.getAttribute("data-focus-id");return o.setAttribute("data-focus-id",n),a===null||a==="false"?o.setAttribute("aria-hidden","true"):!c&&!d&&o.setAttribute("data-hidden",a),{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 rG(e=!0){const t=f.useRef(),n=f.useRef(null),r=s=>{let a=s.querySelector("[data-autofocus]");if(!a){const c=Array.from(s.querySelectorAll(yj));a=c.find(wj)||c.find(i1)||null,!a&&i1(s)&&(a=s)}a&&a.focus({preventScroll:!0})},o=f.useCallback(s=>{if(e){if(s===null){n.current&&(n.current(),n.current=null);return}n.current=nG(s),t.current!==s&&(s?(setTimeout(()=>{s.getRootNode()&&r(s)}),t.current=s):t.current=null)}},[e]);return f.useEffect(()=>{if(!e)return;t.current&&setTimeout(()=>r(t.current));const s=a=>{a.key==="Tab"&&t.current&&tG(t.current,a)};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s),n.current&&n.current()}},[e]),o}const oG=H["useId".toString()]||(()=>{});function sG(){const e=oG();return e?`mantine-${e.replace(/:/g,"")}`:""}function hy(e){const t=sG(),[n,r]=f.useState(t);return bj(()=>{r(py())},[]),typeof e=="string"?e:typeof window>"u"?t:n}function cC(e,t,n){f.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t])}function Sj(e,t){typeof e=="function"?e(t):typeof e=="object"&&e!==null&&"current"in e&&(e.current=t)}function aG(...e){return t=>{e.forEach(n=>Sj(n,t))}}function Td(...e){return f.useCallback(aG(...e),e)}function od({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){const[o,s]=f.useState(t!==void 0?t:n),a=c=>{s(c),r==null||r(c)};return e!==void 0?[e,r,!0]:[o,a,!1]}function Cj(e,t){return XU("(prefers-reduced-motion: reduce)",e,t)}const iG=e=>e<.5?2*e*e:-1+(4-2*e)*e,lG=({axis:e,target:t,parent:n,alignment:r,offset:o,isList:s})=>{if(!t||!n&&typeof document>"u")return 0;const a=!!n,d=(n||document.body).getBoundingClientRect(),p=t.getBoundingClientRect(),h=m=>p[m]-d[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=a?d.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=a?d.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},cG=({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]},uG=({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 kj({duration:e=1250,axis:t="y",onScrollFinish:n,easing:r=iG,offset:o=0,cancelable:s=!0,isList:a=!1}={}){const c=f.useRef(0),d=f.useRef(0),p=f.useRef(!1),h=f.useRef(null),m=f.useRef(null),v=Cj(),b=()=>{c.current&&cancelAnimationFrame(c.current)},w=f.useCallback(({alignment:S="start"}={})=>{var k;p.current=!1,c.current&&b();const _=(k=cG({parent:h.current,axis:t}))!=null?k:0,I=lG({parent:h.current,target:m.current,axis:t,alignment:S,offset:o,isList:a})-(h.current?0:_);function P(){d.current===0&&(d.current=performance.now());const O=performance.now()-d.current,R=v||e===0?1:O/e,M=_+I*r(R);uG({parent:h.current,axis:t,distance:M}),!p.current&&R<1?c.current=requestAnimationFrame(P):(typeof n=="function"&&n(),d.current=0,c.current=0,b())}P()},[t,e,r,a,o,n,v]),y=()=>{s&&(p.current=!0)};return cC("wheel",y,{passive:!0}),cC("touchmove",y,{passive:!0}),f.useEffect(()=>b,[]),{scrollableRef:h,targetRef:m,scrollIntoView:w,cancel:b}}var uC=Object.getOwnPropertySymbols,dG=Object.prototype.hasOwnProperty,fG=Object.prototype.propertyIsEnumerable,pG=(e,t)=>{var n={};for(var r in e)dG.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&uC)for(var r of uC(e))t.indexOf(r)<0&&fG.call(e,r)&&(n[r]=e[r]);return n};function Mm(e){const t=e,{m:n,mx:r,my:o,mt:s,mb:a,ml:c,mr:d,p,px:h,py:m,pt:v,pb:b,pl:w,pr:y,bg:S,c:k,opacity:_,ff:I,fz:P,fw:E,lts:O,ta:R,lh:M,fs:A,tt:T,td:$,w:Q,miw:B,maw:V,h:q,mih:G,mah:D,bgsz:L,bgp:W,bgr:Y,bga:ae,pos:ye,top:ce,left:X,bottom:K,right:U,inset:se,display:re}=t,oe=pG(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:GD({m:n,mx:r,my:o,mt:s,mb:a,ml:c,mr:d,p,px:h,py:m,pt:v,pb:b,pl:w,pr:y,bg:S,c:k,opacity:_,ff:I,fz:P,fw:E,lts:O,ta:R,lh:M,fs:A,tt:T,td:$,w:Q,miw:B,maw:V,h:q,mih:G,mah:D,bgsz:L,bgp:W,bgr:Y,bga:ae,pos:ye,top:ce,left:X,bottom:K,right:U,inset:se,display:re}),rest:oe}}function hG(e,t){const n=Object.keys(e).filter(r=>r!=="base").sort((r,o)=>vw(Vt({size:r,sizes:t.breakpoints}))-vw(Vt({size:o,sizes:t.breakpoints})));return"base"in e?["base",...n]:n}function mG({value:e,theme:t,getValue:n,property:r}){if(e==null)return;if(typeof e=="object")return hG(e,t).reduce((a,c)=>{if(c==="base"&&e.base!==void 0){const p=n(e.base,t);return Array.isArray(r)?(r.forEach(h=>{a[h]=p}),a):(a[r]=p,a)}const d=n(e[c],t);return Array.isArray(r)?(a[t.fn.largerThan(c)]={},r.forEach(p=>{a[t.fn.largerThan(c)][p]=d}),a):(a[t.fn.largerThan(c)]={[r]:d},a)},{});const o=n(e,t);return Array.isArray(r)?r.reduce((s,a)=>(s[a]=o,s),{}):{[r]:o}}function gG(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 vG(e){return Ue(e)}function bG(e){return e}function yG(e,t){return Vt({size:e,sizes:t.fontSizes})}const xG=["-xs","-sm","-md","-lg","-xl"];function wG(e,t){return xG.includes(e)?`calc(${Vt({size:e.replace("-",""),sizes:t.spacing})} * -1)`:Vt({size:e,sizes:t.spacing})}const SG={identity:bG,color:gG,size:vG,fontSize:yG,spacing:wG},CG={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 kG=Object.defineProperty,dC=Object.getOwnPropertySymbols,_G=Object.prototype.hasOwnProperty,PG=Object.prototype.propertyIsEnumerable,fC=(e,t,n)=>t in e?kG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,pC=(e,t)=>{for(var n in t||(t={}))_G.call(t,n)&&fC(e,n,t[n]);if(dC)for(var n of dC(t))PG.call(t,n)&&fC(e,n,t[n]);return e};function hC(e,t,n=CG){return Object.keys(n).reduce((o,s)=>(s in e&&e[s]!==void 0&&o.push(mG({value:e[s],getValue:SG[n[s].type],property:n[s].property,theme:t})),o),[]).reduce((o,s)=>(Object.keys(s).forEach(a=>{typeof s[a]=="object"&&s[a]!==null&&a in o?o[a]=pC(pC({},o[a]),s[a]):o[a]=s[a]}),o),{})}function mC(e,t){return typeof e=="function"?e(t):e}function jG(e,t,n){const r=Fa(),{css:o,cx:s}=vj();return Array.isArray(e)?s(n,o(hC(t,r)),e.map(a=>o(mC(a,r)))):s(n,o(mC(e,r)),o(hC(t,r)))}var IG=Object.defineProperty,nh=Object.getOwnPropertySymbols,_j=Object.prototype.hasOwnProperty,Pj=Object.prototype.propertyIsEnumerable,gC=(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={}))_j.call(t,n)&&gC(e,n,t[n]);if(nh)for(var n of nh(t))Pj.call(t,n)&&gC(e,n,t[n]);return e},OG=(e,t)=>{var n={};for(var r in e)_j.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&&Pj.call(e,r)&&(n[r]=e[r]);return n};const jj=f.forwardRef((e,t)=>{var n=e,{className:r,component:o,style:s,sx:a}=n,c=OG(n,["className","component","style","sx"]);const{systemStyles:d,rest:p}=Mm(c),h=o||"div";return H.createElement(h,EG({ref:t,className:jG(a,d,r),style:s},p))});jj.displayName="@mantine/core/Box";const jo=jj;var RG=Object.defineProperty,MG=Object.defineProperties,DG=Object.getOwnPropertyDescriptors,vC=Object.getOwnPropertySymbols,AG=Object.prototype.hasOwnProperty,TG=Object.prototype.propertyIsEnumerable,bC=(e,t,n)=>t in e?RG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yC=(e,t)=>{for(var n in t||(t={}))AG.call(t,n)&&bC(e,n,t[n]);if(vC)for(var n of vC(t))TG.call(t,n)&&bC(e,n,t[n]);return e},NG=(e,t)=>MG(e,DG(t)),$G=so(e=>({root:NG(yC(yC({},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 zG=$G;var LG=Object.defineProperty,rh=Object.getOwnPropertySymbols,Ij=Object.prototype.hasOwnProperty,Ej=Object.prototype.propertyIsEnumerable,xC=(e,t,n)=>t in e?LG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,BG=(e,t)=>{for(var n in t||(t={}))Ij.call(t,n)&&xC(e,n,t[n]);if(rh)for(var n of rh(t))Ej.call(t,n)&&xC(e,n,t[n]);return e},FG=(e,t)=>{var n={};for(var r in e)Ij.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&&Ej.call(e,r)&&(n[r]=e[r]);return n};const Oj=f.forwardRef((e,t)=>{const n=Sr("UnstyledButton",{},e),{className:r,component:o="button",unstyled:s,variant:a}=n,c=FG(n,["className","component","unstyled","variant"]),{classes:d,cx:p}=zG(null,{name:"UnstyledButton",unstyled:s,variant:a});return H.createElement(jo,BG({component:o,ref:t,className:p(d.root,r),type:o==="button"?"button":void 0},c))});Oj.displayName="@mantine/core/UnstyledButton";const HG=Oj;var WG=Object.defineProperty,VG=Object.defineProperties,UG=Object.getOwnPropertyDescriptors,wC=Object.getOwnPropertySymbols,GG=Object.prototype.hasOwnProperty,qG=Object.prototype.propertyIsEnumerable,SC=(e,t,n)=>t in e?WG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l1=(e,t)=>{for(var n in t||(t={}))GG.call(t,n)&&SC(e,n,t[n]);if(wC)for(var n of wC(t))qG.call(t,n)&&SC(e,n,t[n]);return e},CC=(e,t)=>VG(e,UG(t));const KG=["subtle","filled","outline","light","default","transparent","gradient"],Jf={xs:Ue(18),sm:Ue(22),md:Ue(28),lg:Ue(34),xl:Ue(44)};function XG({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%"})}:KG.includes(e)?l1({border:`${Ue(1)} solid ${o.border}`,backgroundColor:o.background,color:o.color},t.fn.hover({backgroundColor:o.hover})):null}var YG=so((e,{radius:t,color:n,gradient:r},{variant:o,size:s})=>({root:CC(l1({position:"relative",borderRadius:e.fn.radius(t),padding:0,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",height:Vt({size:s,sizes:Jf}),minHeight:Vt({size:s,sizes:Jf}),width:Vt({size:s,sizes:Jf}),minWidth:Vt({size:s,sizes:Jf})},XG({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":CC(l1({content:'""'},e.fn.cover(Ue(-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 QG=YG;var JG=Object.defineProperty,oh=Object.getOwnPropertySymbols,Rj=Object.prototype.hasOwnProperty,Mj=Object.prototype.propertyIsEnumerable,kC=(e,t,n)=>t in e?JG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_C=(e,t)=>{for(var n in t||(t={}))Rj.call(t,n)&&kC(e,n,t[n]);if(oh)for(var n of oh(t))Mj.call(t,n)&&kC(e,n,t[n]);return e},PC=(e,t)=>{var n={};for(var r in e)Rj.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&oh)for(var r of oh(e))t.indexOf(r)<0&&Mj.call(e,r)&&(n[r]=e[r]);return n};function ZG(e){var t=e,{size:n,color:r}=t,o=PC(t,["size","color"]);const s=o,{style:a}=s,c=PC(s,["style"]);return H.createElement("svg",_C({viewBox:"0 0 135 140",xmlns:"http://www.w3.org/2000/svg",fill:r,style:_C({width:n},a)},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 eq=Object.defineProperty,sh=Object.getOwnPropertySymbols,Dj=Object.prototype.hasOwnProperty,Aj=Object.prototype.propertyIsEnumerable,jC=(e,t,n)=>t in e?eq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,IC=(e,t)=>{for(var n in t||(t={}))Dj.call(t,n)&&jC(e,n,t[n]);if(sh)for(var n of sh(t))Aj.call(t,n)&&jC(e,n,t[n]);return e},EC=(e,t)=>{var n={};for(var r in e)Dj.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&&Aj.call(e,r)&&(n[r]=e[r]);return n};function tq(e){var t=e,{size:n,color:r}=t,o=EC(t,["size","color"]);const s=o,{style:a}=s,c=EC(s,["style"]);return H.createElement("svg",IC({viewBox:"0 0 38 38",xmlns:"http://www.w3.org/2000/svg",stroke:r,style:IC({width:n,height:n},a)},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 nq=Object.defineProperty,ah=Object.getOwnPropertySymbols,Tj=Object.prototype.hasOwnProperty,Nj=Object.prototype.propertyIsEnumerable,OC=(e,t,n)=>t in e?nq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,RC=(e,t)=>{for(var n in t||(t={}))Tj.call(t,n)&&OC(e,n,t[n]);if(ah)for(var n of ah(t))Nj.call(t,n)&&OC(e,n,t[n]);return e},MC=(e,t)=>{var n={};for(var r in e)Tj.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&&Nj.call(e,r)&&(n[r]=e[r]);return n};function rq(e){var t=e,{size:n,color:r}=t,o=MC(t,["size","color"]);const s=o,{style:a}=s,c=MC(s,["style"]);return H.createElement("svg",RC({viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",fill:r,style:RC({width:n},a)},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 oq=Object.defineProperty,ih=Object.getOwnPropertySymbols,$j=Object.prototype.hasOwnProperty,zj=Object.prototype.propertyIsEnumerable,DC=(e,t,n)=>t in e?oq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,sq=(e,t)=>{for(var n in t||(t={}))$j.call(t,n)&&DC(e,n,t[n]);if(ih)for(var n of ih(t))zj.call(t,n)&&DC(e,n,t[n]);return e},aq=(e,t)=>{var n={};for(var r in e)$j.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ih)for(var r of ih(e))t.indexOf(r)<0&&zj.call(e,r)&&(n[r]=e[r]);return n};const V0={bars:ZG,oval:tq,dots:rq},iq={xs:Ue(18),sm:Ue(22),md:Ue(36),lg:Ue(44),xl:Ue(58)},lq={size:"md"};function Lj(e){const t=Sr("Loader",lq,e),{size:n,color:r,variant:o}=t,s=aq(t,["size","color","variant"]),a=Fa(),c=o in V0?o:a.loader;return H.createElement(jo,sq({role:"presentation",component:V0[c]||V0.bars,size:Vt({size:n,sizes:iq}),color:a.fn.variant({variant:"filled",primaryFallback:!1,color:r||a.primaryColor}).background},s))}Lj.displayName="@mantine/core/Loader";var cq=Object.defineProperty,lh=Object.getOwnPropertySymbols,Bj=Object.prototype.hasOwnProperty,Fj=Object.prototype.propertyIsEnumerable,AC=(e,t,n)=>t in e?cq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,TC=(e,t)=>{for(var n in t||(t={}))Bj.call(t,n)&&AC(e,n,t[n]);if(lh)for(var n of lh(t))Fj.call(t,n)&&AC(e,n,t[n]);return e},uq=(e,t)=>{var n={};for(var r in e)Bj.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&&Fj.call(e,r)&&(n[r]=e[r]);return n};const dq={color:"gray",size:"md",variant:"subtle"},Hj=f.forwardRef((e,t)=>{const n=Sr("ActionIcon",dq,e),{className:r,color:o,children:s,radius:a,size:c,variant:d,gradient:p,disabled:h,loaderProps:m,loading:v,unstyled:b,__staticSelector:w}=n,y=uq(n,["className","color","children","radius","size","variant","gradient","disabled","loaderProps","loading","unstyled","__staticSelector"]),{classes:S,cx:k,theme:_}=QG({radius:a,color:o,gradient:p},{name:["ActionIcon",w],unstyled:b,size:c,variant:d}),I=H.createElement(Lj,TC({color:_.fn.variant({color:o,variant:d}).color,size:"100%","data-action-icon-loader":!0},m));return H.createElement(HG,TC({className:k(S.root,r),ref:t,disabled:h,"data-disabled":h||void 0,"data-loading":v||void 0,unstyled:b},y),v?I:s)});Hj.displayName="@mantine/core/ActionIcon";const fq=Hj;var pq=Object.defineProperty,hq=Object.defineProperties,mq=Object.getOwnPropertyDescriptors,ch=Object.getOwnPropertySymbols,Wj=Object.prototype.hasOwnProperty,Vj=Object.prototype.propertyIsEnumerable,NC=(e,t,n)=>t in e?pq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gq=(e,t)=>{for(var n in t||(t={}))Wj.call(t,n)&&NC(e,n,t[n]);if(ch)for(var n of ch(t))Vj.call(t,n)&&NC(e,n,t[n]);return e},vq=(e,t)=>hq(e,mq(t)),bq=(e,t)=>{var n={};for(var r in e)Wj.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&&Vj.call(e,r)&&(n[r]=e[r]);return n};function Uj(e){const t=Sr("Portal",{},e),{children:n,target:r,className:o,innerRef:s}=t,a=bq(t,["children","target","className","innerRef"]),c=Fa(),[d,p]=f.useState(!1),h=f.useRef();return bj(()=>(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]),d?_i.createPortal(H.createElement("div",vq(gq({className:o,dir:c.dir},a),{ref:s}),n),h.current):null}Uj.displayName="@mantine/core/Portal";var yq=Object.defineProperty,uh=Object.getOwnPropertySymbols,Gj=Object.prototype.hasOwnProperty,qj=Object.prototype.propertyIsEnumerable,$C=(e,t,n)=>t in e?yq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xq=(e,t)=>{for(var n in t||(t={}))Gj.call(t,n)&&$C(e,n,t[n]);if(uh)for(var n of uh(t))qj.call(t,n)&&$C(e,n,t[n]);return e},wq=(e,t)=>{var n={};for(var r in e)Gj.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&&qj.call(e,r)&&(n[r]=e[r]);return n};function Kj(e){var t=e,{withinPortal:n=!0,children:r}=t,o=wq(t,["withinPortal","children"]);return n?H.createElement(Uj,xq({},o),r):H.createElement(H.Fragment,null,r)}Kj.displayName="@mantine/core/OptionalPortal";var Sq=Object.defineProperty,dh=Object.getOwnPropertySymbols,Xj=Object.prototype.hasOwnProperty,Yj=Object.prototype.propertyIsEnumerable,zC=(e,t,n)=>t in e?Sq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,LC=(e,t)=>{for(var n in t||(t={}))Xj.call(t,n)&&zC(e,n,t[n]);if(dh)for(var n of dh(t))Yj.call(t,n)&&zC(e,n,t[n]);return e},Cq=(e,t)=>{var n={};for(var r in e)Xj.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&&Yj.call(e,r)&&(n[r]=e[r]);return n};function Qj(e){const t=e,{width:n,height:r,style:o}=t,s=Cq(t,["width","height","style"]);return H.createElement("svg",LC({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:LC({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"}))}Qj.displayName="@mantine/core/CloseIcon";var kq=Object.defineProperty,fh=Object.getOwnPropertySymbols,Jj=Object.prototype.hasOwnProperty,Zj=Object.prototype.propertyIsEnumerable,BC=(e,t,n)=>t in e?kq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_q=(e,t)=>{for(var n in t||(t={}))Jj.call(t,n)&&BC(e,n,t[n]);if(fh)for(var n of fh(t))Zj.call(t,n)&&BC(e,n,t[n]);return e},Pq=(e,t)=>{var n={};for(var r in e)Jj.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&&Zj.call(e,r)&&(n[r]=e[r]);return n};const jq={xs:Ue(12),sm:Ue(16),md:Ue(20),lg:Ue(28),xl:Ue(34)},Iq={size:"sm"},eI=f.forwardRef((e,t)=>{const n=Sr("CloseButton",Iq,e),{iconSize:r,size:o,children:s}=n,a=Pq(n,["iconSize","size","children"]),c=Ue(r||jq[o]);return H.createElement(fq,_q({ref:t,__staticSelector:"CloseButton",size:o},a),s||H.createElement(Qj,{width:c,height:c}))});eI.displayName="@mantine/core/CloseButton";const tI=eI;var Eq=Object.defineProperty,Oq=Object.defineProperties,Rq=Object.getOwnPropertyDescriptors,FC=Object.getOwnPropertySymbols,Mq=Object.prototype.hasOwnProperty,Dq=Object.prototype.propertyIsEnumerable,HC=(e,t,n)=>t in e?Eq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Zf=(e,t)=>{for(var n in t||(t={}))Mq.call(t,n)&&HC(e,n,t[n]);if(FC)for(var n of FC(t))Dq.call(t,n)&&HC(e,n,t[n]);return e},Aq=(e,t)=>Oq(e,Rq(t));function Tq({underline:e,strikethrough:t}){const n=[];return e&&n.push("underline"),t&&n.push("line-through"),n.length>0?n.join(" "):"none"}function Nq({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 $q(e){return typeof e=="number"?{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:e,WebkitBoxOrient:"vertical"}:null}function zq({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 Lq=so((e,{color:t,lineClamp:n,truncate:r,inline:o,inherit:s,underline:a,gradient:c,weight:d,transform:p,align:h,strikethrough:m,italic:v},{size:b})=>{const w=e.fn.variant({variant:"gradient",gradient:c});return{root:Aq(Zf(Zf(Zf(Zf({},e.fn.fontStyles()),e.fn.focusStyles()),$q(n)),zq({theme:e,truncate:r})),{color:Nq({color:t,theme:e}),fontFamily:s?"inherit":e.fontFamily,fontSize:s||b===void 0?"inherit":Vt({size:b,sizes:e.fontSizes}),lineHeight:s?"inherit":o?1:e.lineHeight,textDecoration:Tq({underline:a,strikethrough:m}),WebkitTapHighlightColor:"transparent",fontWeight:s?"inherit":d,textTransform:p,textAlign:h,fontStyle:v?"italic":void 0}),gradient:{backgroundImage:w.background,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"}}});const Bq=Lq;var Fq=Object.defineProperty,ph=Object.getOwnPropertySymbols,nI=Object.prototype.hasOwnProperty,rI=Object.prototype.propertyIsEnumerable,WC=(e,t,n)=>t in e?Fq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hq=(e,t)=>{for(var n in t||(t={}))nI.call(t,n)&&WC(e,n,t[n]);if(ph)for(var n of ph(t))rI.call(t,n)&&WC(e,n,t[n]);return e},Wq=(e,t)=>{var n={};for(var r in e)nI.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&&rI.call(e,r)&&(n[r]=e[r]);return n};const Vq={variant:"text"},oI=f.forwardRef((e,t)=>{const n=Sr("Text",Vq,e),{className:r,size:o,weight:s,transform:a,color:c,align:d,variant:p,lineClamp:h,truncate:m,gradient:v,inline:b,inherit:w,underline:y,strikethrough:S,italic:k,classNames:_,styles:I,unstyled:P,span:E,__staticSelector:O}=n,R=Wq(n,["className","size","weight","transform","color","align","variant","lineClamp","truncate","gradient","inline","inherit","underline","strikethrough","italic","classNames","styles","unstyled","span","__staticSelector"]),{classes:M,cx:A}=Bq({color:c,lineClamp:h,truncate:m,inline:b,inherit:w,underline:y,strikethrough:S,italic:k,weight:s,transform:a,align:d,gradient:v},{unstyled:P,name:O||"Text",variant:p,size:o});return H.createElement(jo,Hq({ref:t,className:A(M.root,{[M.gradient]:p==="gradient"},r),component:E?"span":"div"},R))});oI.displayName="@mantine/core/Text";const Cc=oI,ep={xs:Ue(1),sm:Ue(2),md:Ue(3),lg:Ue(4),xl:Ue(5)};function tp(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 Uq=so((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:Ue(1),borderTop:`${Vt({size:n,sizes:ep})} ${r} ${tp(e,t)}`,marginRight:e.spacing.xs},"&::after":{content:'""',flex:1,borderTop:`${Vt({size:n,sizes:ep})} ${r} ${tp(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:Ue(Vt({size:n,sizes:ep})),borderTopColor:tp(e,t),borderTopStyle:r,margin:0},vertical:{border:0,alignSelf:"stretch",height:"auto",borderLeftWidth:Ue(Vt({size:n,sizes:ep})),borderLeftColor:tp(e,t),borderLeftStyle:r}}));const Gq=Uq;var qq=Object.defineProperty,Kq=Object.defineProperties,Xq=Object.getOwnPropertyDescriptors,hh=Object.getOwnPropertySymbols,sI=Object.prototype.hasOwnProperty,aI=Object.prototype.propertyIsEnumerable,VC=(e,t,n)=>t in e?qq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,UC=(e,t)=>{for(var n in t||(t={}))sI.call(t,n)&&VC(e,n,t[n]);if(hh)for(var n of hh(t))aI.call(t,n)&&VC(e,n,t[n]);return e},Yq=(e,t)=>Kq(e,Xq(t)),Qq=(e,t)=>{var n={};for(var r in e)sI.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&&aI.call(e,r)&&(n[r]=e[r]);return n};const Jq={orientation:"horizontal",size:"xs",labelPosition:"left",variant:"solid"},c1=f.forwardRef((e,t)=>{const n=Sr("Divider",Jq,e),{className:r,color:o,orientation:s,size:a,label:c,labelPosition:d,labelProps:p,variant:h,styles:m,classNames:v,unstyled:b}=n,w=Qq(n,["className","color","orientation","size","label","labelPosition","labelProps","variant","styles","classNames","unstyled"]),{classes:y,cx:S}=Gq({color:o},{classNames:v,styles:m,unstyled:b,name:"Divider",variant:h,size:a}),k=s==="vertical",_=s==="horizontal",I=!!c&&_,P=!(p!=null&&p.color);return H.createElement(jo,UC({ref:t,className:S(y.root,{[y.vertical]:k,[y.horizontal]:_,[y.withLabel]:I},r),role:"separator"},w),I&&H.createElement(Cc,Yq(UC({},p),{size:(p==null?void 0:p.size)||"xs",mt:Ue(2),className:S(y.label,y[d],{[y.labelDefaultStyles]:P})}),c))});c1.displayName="@mantine/core/Divider";var Zq=Object.defineProperty,eK=Object.defineProperties,tK=Object.getOwnPropertyDescriptors,GC=Object.getOwnPropertySymbols,nK=Object.prototype.hasOwnProperty,rK=Object.prototype.propertyIsEnumerable,qC=(e,t,n)=>t in e?Zq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,KC=(e,t)=>{for(var n in t||(t={}))nK.call(t,n)&&qC(e,n,t[n]);if(GC)for(var n of GC(t))rK.call(t,n)&&qC(e,n,t[n]);return e},oK=(e,t)=>eK(e,tK(t)),sK=so((e,t,{size:n})=>({item:oK(KC({},e.fn.fontStyles()),{boxSizing:"border-box",wordBreak:"break-all",textAlign:"left",width:"100%",padding:`calc(${Vt({size:n,sizes:e.spacing})} / 1.5) ${Vt({size:n,sizes:e.spacing})}`,cursor:"pointer",fontSize:Vt({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]":KC({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(${Vt({size:n,sizes:e.spacing})} / 2)`,paddingBottom:`calc(${Vt({size:n,sizes:e.spacing})} / 2)`,textAlign:"center"},separator:{boxSizing:"border-box",textAlign:"left",width:"100%",padding:`calc(${Vt({size:n,sizes:e.spacing})} / 1.5) ${Vt({size:n,sizes:e.spacing})}`},separatorLabel:{color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]}}));const aK=sK;var iK=Object.defineProperty,XC=Object.getOwnPropertySymbols,lK=Object.prototype.hasOwnProperty,cK=Object.prototype.propertyIsEnumerable,YC=(e,t,n)=>t in e?iK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uK=(e,t)=>{for(var n in t||(t={}))lK.call(t,n)&&YC(e,n,t[n]);if(XC)for(var n of XC(t))cK.call(t,n)&&YC(e,n,t[n]);return e};function my({data:e,hovered:t,classNames:n,styles:r,isItemSelected:o,uuid:s,__staticSelector:a,onItemHover:c,onItemSelect:d,itemsRefs:p,itemComponent:h,size:m,nothingFound:v,creatable:b,createLabel:w,unstyled:y,variant:S}){const{classes:k}=aK(null,{classNames:n,styles:r,unstyled:y,name:a,variant:S,size:m}),_=[],I=[];let P=null;const E=(R,M)=>{const A=typeof o=="function"?o(R.value):!1;return H.createElement(h,uK({key:R.value,className:k.item,"data-disabled":R.disabled||void 0,"data-hovered":!R.disabled&&t===M||void 0,"data-selected":!R.disabled&&A||void 0,selected:A,onMouseEnter:()=>c(M),id:`${s}-${M}`,role:"option",tabIndex:-1,"aria-selected":t===M,ref:T=>{p&&p.current&&(p.current[R.value]=T)},onMouseDown:R.disabled?null:T=>{T.preventDefault(),d(R)},disabled:R.disabled,variant:S},R))};let O=null;if(e.forEach((R,M)=>{R.creatable?P=M:R.group?(O!==R.group&&(O=R.group,I.push(H.createElement("div",{className:k.separator,key:`__mantine-divider-${M}`},H.createElement(c1,{classNames:{label:k.separatorLabel},label:R.group})))),I.push(E(R,M))):_.push(E(R,M))}),b){const R=e[P];_.push(H.createElement("div",{key:py(),className:k.item,"data-hovered":t===P||void 0,onMouseEnter:()=>c(P),onMouseDown:M=>{M.preventDefault(),d(R)},tabIndex:-1,ref:M=>{p&&p.current&&(p.current[R.value]=M)}},w))}return I.length>0&&_.length>0&&_.unshift(H.createElement("div",{className:k.separator,key:"empty-group-separator"},H.createElement(c1,null))),I.length>0||_.length>0?H.createElement(H.Fragment,null,I,_):H.createElement(Cc,{size:m,unstyled:y,className:k.nothingFound},v)}my.displayName="@mantine/core/SelectItems";var dK=Object.defineProperty,mh=Object.getOwnPropertySymbols,iI=Object.prototype.hasOwnProperty,lI=Object.prototype.propertyIsEnumerable,QC=(e,t,n)=>t in e?dK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fK=(e,t)=>{for(var n in t||(t={}))iI.call(t,n)&&QC(e,n,t[n]);if(mh)for(var n of mh(t))lI.call(t,n)&&QC(e,n,t[n]);return e},pK=(e,t)=>{var n={};for(var r in e)iI.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&&lI.call(e,r)&&(n[r]=e[r]);return n};const gy=f.forwardRef((e,t)=>{var n=e,{label:r,value:o}=n,s=pK(n,["label","value"]);return H.createElement("div",fK({ref:t},s),r||o)});gy.displayName="@mantine/core/DefaultItem";function hK(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function cI(...e){return t=>e.forEach(n=>hK(n,t))}function vl(...e){return f.useCallback(cI(...e),e)}const uI=f.forwardRef((e,t)=>{const{children:n,...r}=e,o=f.Children.toArray(n),s=o.find(gK);if(s){const a=s.props.children,c=o.map(d=>d===s?f.Children.count(a)>1?f.Children.only(null):f.isValidElement(a)?a.props.children:null:d);return f.createElement(u1,or({},r,{ref:t}),f.isValidElement(a)?f.cloneElement(a,void 0,c):null)}return f.createElement(u1,or({},r,{ref:t}),n)});uI.displayName="Slot";const u1=f.forwardRef((e,t)=>{const{children:n,...r}=e;return f.isValidElement(n)?f.cloneElement(n,{...vK(r,n.props),ref:cI(t,n.ref)}):f.Children.count(n)>1?f.Children.only(null):null});u1.displayName="SlotClone";const mK=({children:e})=>f.createElement(f.Fragment,null,e);function gK(e){return f.isValidElement(e)&&e.type===mK}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]=(...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 bK=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],Nd=bK.reduce((e,t)=>{const n=f.forwardRef((r,o)=>{const{asChild:s,...a}=r,c=s?uI:t;return f.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),f.createElement(c,or({},a,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),d1=globalThis!=null&&globalThis.document?f.useLayoutEffect:()=>{};function yK(e,t){return f.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const $d=e=>{const{present:t,children:n}=e,r=xK(t),o=typeof n=="function"?n({present:r.isPresent}):f.Children.only(n),s=vl(r.ref,o.ref);return typeof n=="function"||r.isPresent?f.cloneElement(o,{ref:s}):null};$d.displayName="Presence";function xK(e){const[t,n]=f.useState(),r=f.useRef({}),o=f.useRef(e),s=f.useRef("none"),a=e?"mounted":"unmounted",[c,d]=yK(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return f.useEffect(()=>{const p=np(r.current);s.current=c==="mounted"?p:"none"},[c]),d1(()=>{const p=r.current,h=o.current;if(h!==e){const v=s.current,b=np(p);e?d("MOUNT"):b==="none"||(p==null?void 0:p.display)==="none"?d("UNMOUNT"):d(h&&v!==b?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,d]),d1(()=>{if(t){const p=m=>{const b=np(r.current).includes(m.animationName);m.target===t&&b&&_i.flushSync(()=>d("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 d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:f.useCallback(p=>{p&&(r.current=getComputedStyle(p)),n(p)},[])}}function np(e){return(e==null?void 0:e.animationName)||"none"}function wK(e,t=[]){let n=[];function r(s,a){const c=f.createContext(a),d=n.length;n=[...n,a];function p(m){const{scope:v,children:b,...w}=m,y=(v==null?void 0:v[e][d])||c,S=f.useMemo(()=>w,Object.values(w));return f.createElement(y.Provider,{value:S},b)}function h(m,v){const b=(v==null?void 0:v[e][d])||c,w=f.useContext(b);if(w)return w;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${s}\``)}return p.displayName=s+"Provider",[p,h]}const o=()=>{const s=n.map(a=>f.createContext(a));return function(c){const d=(c==null?void 0:c[e])||s;return f.useMemo(()=>({[`__scope${e}`]:{...c,[e]:d}}),[c,d])}};return o.scopeName=e,[r,SK(o,...t)]}function SK(...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 a=r.reduce((c,{useScope:d,scopeName:p})=>{const m=d(s)[`__scope${p}`];return{...c,...m}},{});return f.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}function Gi(e){const t=f.useRef(e);return f.useEffect(()=>{t.current=e}),f.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}const CK=f.createContext(void 0);function kK(e){const t=f.useContext(CK);return e||t||"ltr"}function _K(e,[t,n]){return Math.min(n,Math.max(t,e))}function el(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 PK(e,t){return f.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const dI="ScrollArea",[fI,jde]=wK(dI),[jK,ds]=fI(dI),IK=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...a}=e,[c,d]=f.useState(null),[p,h]=f.useState(null),[m,v]=f.useState(null),[b,w]=f.useState(null),[y,S]=f.useState(null),[k,_]=f.useState(0),[I,P]=f.useState(0),[E,O]=f.useState(!1),[R,M]=f.useState(!1),A=vl(t,$=>d($)),T=kK(o);return f.createElement(jK,{scope:n,type:r,dir:T,scrollHideDelay:s,scrollArea:c,viewport:p,onViewportChange:h,content:m,onContentChange:v,scrollbarX:b,onScrollbarXChange:w,scrollbarXEnabled:E,onScrollbarXEnabledChange:O,scrollbarY:y,onScrollbarYChange:S,scrollbarYEnabled:R,onScrollbarYEnabledChange:M,onCornerWidthChange:_,onCornerHeightChange:P},f.createElement(Nd.div,or({dir:T},a,{ref:A,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":I+"px",...e.style}})))}),EK="ScrollAreaViewport",OK=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,...o}=e,s=ds(EK,n),a=f.useRef(null),c=vl(t,a,s.onViewportChange);return f.createElement(f.Fragment,null,f.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}"}}),f.createElement(Nd.div,or({"data-radix-scroll-area-viewport":""},o,{ref:c,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style}}),f.createElement("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"}},r)))}),Wa="ScrollAreaScrollbar",RK=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ds(Wa,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=o,c=e.orientation==="horizontal";return f.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),o.type==="hover"?f.createElement(MK,or({},r,{ref:t,forceMount:n})):o.type==="scroll"?f.createElement(DK,or({},r,{ref:t,forceMount:n})):o.type==="auto"?f.createElement(pI,or({},r,{ref:t,forceMount:n})):o.type==="always"?f.createElement(vy,or({},r,{ref:t})):null}),MK=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ds(Wa,e.__scopeScrollArea),[s,a]=f.useState(!1);return f.useEffect(()=>{const c=o.scrollArea;let d=0;if(c){const p=()=>{window.clearTimeout(d),a(!0)},h=()=>{d=window.setTimeout(()=>a(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",p),c.addEventListener("pointerleave",h),()=>{window.clearTimeout(d),c.removeEventListener("pointerenter",p),c.removeEventListener("pointerleave",h)}}},[o.scrollArea,o.scrollHideDelay]),f.createElement($d,{present:n||s},f.createElement(pI,or({"data-state":s?"visible":"hidden"},r,{ref:t})))}),DK=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ds(Wa,e.__scopeScrollArea),s=e.orientation==="horizontal",a=Am(()=>d("SCROLL_END"),100),[c,d]=PK("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 f.useEffect(()=>{if(c==="idle"){const p=window.setTimeout(()=>d("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(p)}},[c,o.scrollHideDelay,d]),f.useEffect(()=>{const p=o.viewport,h=s?"scrollLeft":"scrollTop";if(p){let m=p[h];const v=()=>{const b=p[h];m!==b&&(d("SCROLL"),a()),m=b};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[o.viewport,s,d,a]),f.createElement($d,{present:n||c!=="hidden"},f.createElement(vy,or({"data-state":c==="hidden"?"hidden":"visible"},r,{ref:t,onPointerEnter:el(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:el(e.onPointerLeave,()=>d("POINTER_LEAVE"))})))}),pI=f.forwardRef((e,t)=>{const n=ds(Wa,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,a]=f.useState(!1),c=e.orientation==="horizontal",d=Am(()=>{if(n.viewport){const p=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=e,o=ds(Wa,e.__scopeScrollArea),s=f.useRef(null),a=f.useRef(0),[c,d]=f.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=vI(c.viewport,c.content),h={...r,sizes:c,onSizesChange:d,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:v=>a.current=v};function m(v,b){return FK(v,a.current,c,b)}return n==="horizontal"?f.createElement(AK,or({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollLeft,b=JC(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"?f.createElement(TK,or({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollTop,b=JC(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}),AK=f.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=ds(Wa,e.__scopeScrollArea),[a,c]=f.useState(),d=f.useRef(null),p=vl(t,d,s.onScrollbarXChange);return f.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),f.createElement(mI,or({"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":Dm(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),yI(v,m)&&h.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:gh(a.paddingLeft),paddingEnd:gh(a.paddingRight)}})}}))}),TK=f.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=ds(Wa,e.__scopeScrollArea),[a,c]=f.useState(),d=f.useRef(null),p=vl(t,d,s.onScrollbarYChange);return f.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),f.createElement(mI,or({"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":Dm(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),yI(v,m)&&h.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:gh(a.paddingTop),paddingEnd:gh(a.paddingBottom)}})}}))}),[NK,hI]=fI(Wa),mI=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:a,onThumbPointerDown:c,onThumbPositionChange:d,onDragScroll:p,onWheelScroll:h,onResize:m,...v}=e,b=ds(Wa,n),[w,y]=f.useState(null),S=vl(t,A=>y(A)),k=f.useRef(null),_=f.useRef(""),I=b.viewport,P=r.content-r.viewport,E=Gi(h),O=Gi(d),R=Am(m,10);function M(A){if(k.current){const T=A.clientX-k.current.left,$=A.clientY-k.current.top;p({x:T,y:$})}}return f.useEffect(()=>{const A=T=>{const $=T.target;(w==null?void 0:w.contains($))&&E(T,P)};return document.addEventListener("wheel",A,{passive:!1}),()=>document.removeEventListener("wheel",A,{passive:!1})},[I,w,P,E]),f.useEffect(O,[r,O]),kc(w,R),kc(b.content,R),f.createElement(NK,{scope:n,scrollbar:w,hasThumb:o,onThumbChange:Gi(s),onThumbPointerUp:Gi(a),onThumbPositionChange:O,onThumbPointerDown:Gi(c)},f.createElement(Nd.div,or({},v,{ref:S,style:{position:"absolute",...v.style},onPointerDown:el(e.onPointerDown,A=>{A.button===0&&(A.target.setPointerCapture(A.pointerId),k.current=w.getBoundingClientRect(),_.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",M(A))}),onPointerMove:el(e.onPointerMove,M),onPointerUp:el(e.onPointerUp,A=>{const T=A.target;T.hasPointerCapture(A.pointerId)&&T.releasePointerCapture(A.pointerId),document.body.style.webkitUserSelect=_.current,k.current=null})})))}),f1="ScrollAreaThumb",$K=f.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=hI(f1,e.__scopeScrollArea);return f.createElement($d,{present:n||o.hasThumb},f.createElement(zK,or({ref:t},r)))}),zK=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=ds(f1,n),a=hI(f1,n),{onThumbPositionChange:c}=a,d=vl(t,m=>a.onThumbChange(m)),p=f.useRef(),h=Am(()=>{p.current&&(p.current(),p.current=void 0)},100);return f.useEffect(()=>{const m=s.viewport;if(m){const v=()=>{if(h(),!p.current){const b=HK(m,c);p.current=b,c()}};return c(),m.addEventListener("scroll",v),()=>m.removeEventListener("scroll",v)}},[s.viewport,h,c]),f.createElement(Nd.div,or({"data-state":a.hasThumb?"visible":"hidden"},o,{ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:el(e.onPointerDownCapture,m=>{const b=m.target.getBoundingClientRect(),w=m.clientX-b.left,y=m.clientY-b.top;a.onThumbPointerDown({x:w,y})}),onPointerUp:el(e.onPointerUp,a.onThumbPointerUp)}))}),gI="ScrollAreaCorner",LK=f.forwardRef((e,t)=>{const n=ds(gI,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?f.createElement(BK,or({},e,{ref:t})):null}),BK=f.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=ds(gI,n),[s,a]=f.useState(0),[c,d]=f.useState(0),p=!!(s&&c);return kc(o.scrollbarX,()=>{var h;const m=((h=o.scrollbarX)===null||h===void 0?void 0:h.offsetHeight)||0;o.onCornerHeightChange(m),d(m)}),kc(o.scrollbarY,()=>{var h;const m=((h=o.scrollbarY)===null||h===void 0?void 0:h.offsetWidth)||0;o.onCornerWidthChange(m),a(m)}),p?f.createElement(Nd.div,or({},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 gh(e){return e?parseInt(e,10):0}function vI(e,t){const n=e/t;return isNaN(n)?0:n}function Dm(e){const t=vI(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function FK(e,t,n,r="ltr"){const o=Dm(n),s=o/2,a=t||s,c=o-a,d=n.scrollbar.paddingStart+a,p=n.scrollbar.size-n.scrollbar.paddingEnd-c,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return bI([d,p],m)(e)}function JC(e,t,n="ltr"){const r=Dm(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,a=t.content-t.viewport,c=s-r,d=n==="ltr"?[0,a]:[a*-1,0],p=_K(e,d);return bI([0,a],[0,c])(p)}function bI(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 yI(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},a=n.left!==s.left,c=n.top!==s.top;(a||c)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function Am(e,t){const n=Gi(e),r=f.useRef(0);return f.useEffect(()=>()=>window.clearTimeout(r.current),[]),f.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function kc(e,t){const n=Gi(t);d1(()=>{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 WK=IK,VK=OK,ZC=RK,e4=$K,UK=LK;var GK=so((e,{scrollbarSize:t,offsetScrollbars:n,scrollbarHovered:r,hidden:o})=>({root:{overflow:"hidden"},viewport:{width:"100%",height:"100%",paddingRight:n?Ue(t):void 0,paddingBottom:n?Ue(t):void 0},scrollbar:{display:o?"none":"flex",userSelect:"none",touchAction:"none",boxSizing:"border-box",padding:`calc(${Ue(t)} / 5)`,transition:"background-color 150ms ease, opacity 150ms ease","&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[8]:e.colors.gray[0],[`& .${sC("thumb")}`]:{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.5):e.fn.rgba(e.black,.5)}},'&[data-orientation="vertical"]':{width:Ue(t)},'&[data-orientation="horizontal"]':{flexDirection:"column",height:Ue(t)},'&[data-state="hidden"]':{display:"none",opacity:0}},thumb:{ref:sC("thumb"),flex:1,backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.4):e.fn.rgba(e.black,.4),borderRadius:Ue(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:Ue(44),minHeight:Ue(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 qK=GK;var KK=Object.defineProperty,XK=Object.defineProperties,YK=Object.getOwnPropertyDescriptors,vh=Object.getOwnPropertySymbols,xI=Object.prototype.hasOwnProperty,wI=Object.prototype.propertyIsEnumerable,t4=(e,t,n)=>t in e?KK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,p1=(e,t)=>{for(var n in t||(t={}))xI.call(t,n)&&t4(e,n,t[n]);if(vh)for(var n of vh(t))wI.call(t,n)&&t4(e,n,t[n]);return e},SI=(e,t)=>XK(e,YK(t)),CI=(e,t)=>{var n={};for(var r in e)xI.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&&wI.call(e,r)&&(n[r]=e[r]);return n};const kI={scrollbarSize:12,scrollHideDelay:1e3,type:"hover",offsetScrollbars:!1},Tm=f.forwardRef((e,t)=>{const n=Sr("ScrollArea",kI,e),{children:r,className:o,classNames:s,styles:a,scrollbarSize:c,scrollHideDelay:d,type:p,dir:h,offsetScrollbars:m,viewportRef:v,onScrollPositionChange:b,unstyled:w,variant:y,viewportProps:S}=n,k=CI(n,["children","className","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","variant","viewportProps"]),[_,I]=f.useState(!1),P=Fa(),{classes:E,cx:O}=qK({scrollbarSize:c,offsetScrollbars:m,scrollbarHovered:_,hidden:p==="never"},{name:"ScrollArea",classNames:s,styles:a,unstyled:w,variant:y});return H.createElement(WK,{type:p==="never"?"always":p,scrollHideDelay:d,dir:h||P.dir,ref:t,asChild:!0},H.createElement(jo,p1({className:O(E.root,o)},k),H.createElement(VK,SI(p1({},S),{className:E.viewport,ref:v,onScroll:typeof b=="function"?({currentTarget:R})=>b({x:R.scrollLeft,y:R.scrollTop}):void 0}),r),H.createElement(ZC,{orientation:"horizontal",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>I(!0),onMouseLeave:()=>I(!1)},H.createElement(e4,{className:E.thumb})),H.createElement(ZC,{orientation:"vertical",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>I(!0),onMouseLeave:()=>I(!1)},H.createElement(e4,{className:E.thumb})),H.createElement(UK,{className:E.corner})))}),_I=f.forwardRef((e,t)=>{const n=Sr("ScrollAreaAutosize",kI,e),{children:r,classNames:o,styles:s,scrollbarSize:a,scrollHideDelay:c,type:d,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,sx:w,variant:y,viewportProps:S}=n,k=CI(n,["children","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","sx","variant","viewportProps"]);return H.createElement(jo,SI(p1({},k),{ref:t,sx:[{display:"flex"},...fj(w)]}),H.createElement(jo,{sx:{display:"flex",flexDirection:"column",flex:1}},H.createElement(Tm,{classNames:o,styles:s,scrollHideDelay:c,scrollbarSize:a,type:d,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,variant:y,viewportProps:S},r)))});_I.displayName="@mantine/core/ScrollAreaAutosize";Tm.displayName="@mantine/core/ScrollArea";Tm.Autosize=_I;const PI=Tm;var QK=Object.defineProperty,JK=Object.defineProperties,ZK=Object.getOwnPropertyDescriptors,bh=Object.getOwnPropertySymbols,jI=Object.prototype.hasOwnProperty,II=Object.prototype.propertyIsEnumerable,n4=(e,t,n)=>t in e?QK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,r4=(e,t)=>{for(var n in t||(t={}))jI.call(t,n)&&n4(e,n,t[n]);if(bh)for(var n of bh(t))II.call(t,n)&&n4(e,n,t[n]);return e},eX=(e,t)=>JK(e,ZK(t)),tX=(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&&II.call(e,r)&&(n[r]=e[r]);return n};const Nm=f.forwardRef((e,t)=>{var n=e,{style:r}=n,o=tX(n,["style"]);return H.createElement(PI,eX(r4({},o),{style:r4({width:"100%"},r),viewportProps:{tabIndex:-1},viewportRef:t}),o.children)});Nm.displayName="@mantine/core/SelectScrollArea";var nX=so(()=>({dropdown:{},itemsWrapper:{padding:Ue(4),display:"flex",width:"100%",boxSizing:"border-box"}}));const rX=nX;function Vc(e){return e.split("-")[1]}function by(e){return e==="y"?"height":"width"}function js(e){return e.split("-")[0]}function Oi(e){return["top","bottom"].includes(js(e))?"x":"y"}function o4(e,t,n){let{reference:r,floating:o}=e;const s=r.x+r.width/2-o.width/2,a=r.y+r.height/2-o.height/2,c=Oi(t),d=by(c),p=r[d]/2-o[d]/2,h=c==="x";let m;switch(js(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:a};break;case"left":m={x:r.x-o.width,y:a};break;default:m={x:r.x,y:r.y}}switch(Vc(t)){case"start":m[c]-=p*(n&&h?-1:1);break;case"end":m[c]+=p*(n&&h?-1:1)}return m}const oX=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:a}=n,c=s.filter(Boolean),d=await(a.isRTL==null?void 0:a.isRTL(t));let p=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:h,y:m}=o4(p,r,d),v=r,b={},w=0;for(let y=0;y({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:s,platform:a,elements:c}=t,{element:d,padding:p=0}=Na(e,t)||{};if(d==null)return{};const h=yy(p),m={x:n,y:r},v=Oi(o),b=by(v),w=await a.getDimensions(d),y=v==="y",S=y?"top":"left",k=y?"bottom":"right",_=y?"clientHeight":"clientWidth",I=s.reference[b]+s.reference[v]-m[v]-s.floating[b],P=m[v]-s.reference[v],E=await(a.getOffsetParent==null?void 0:a.getOffsetParent(d));let O=E?E[_]:0;O&&await(a.isElement==null?void 0:a.isElement(E))||(O=c.floating[_]||s.floating[b]);const R=I/2-P/2,M=O/2-w[b]/2-1,A=gi(h[S],M),T=gi(h[k],M),$=A,Q=O-w[b]-T,B=O/2-w[b]/2+R,V=h1($,B,Q),q=Vc(o)!=null&&B!=V&&s.reference[b]/2-(B<$?A:T)-w[b]/2<0?B<$?$-B:Q-B:0;return{[v]:m[v]-q,data:{[v]:V,centerOffset:B-V+q}}}}),sX=["top","right","bottom","left"];sX.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);const aX={left:"right",right:"left",bottom:"top",top:"bottom"};function yh(e){return e.replace(/left|right|bottom|top/g,t=>aX[t])}function iX(e,t,n){n===void 0&&(n=!1);const r=Vc(e),o=Oi(e),s=by(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(a=yh(a)),{main:a,cross:yh(a)}}const lX={start:"end",end:"start"};function U0(e){return e.replace(/start|end/g,t=>lX[t])}const cX=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:s,initialPlacement:a,platform:c,elements:d}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:b="none",flipAlignment:w=!0,...y}=Na(e,t),S=js(r),k=js(a)===a,_=await(c.isRTL==null?void 0:c.isRTL(d.floating)),I=m||(k||!w?[yh(a)]:function($){const Q=yh($);return[U0($),Q,U0(Q)]}(a));m||b==="none"||I.push(...function($,Q,B,V){const q=Vc($);let G=function(D,L,W){const Y=["left","right"],ae=["right","left"],ye=["top","bottom"],ce=["bottom","top"];switch(D){case"top":case"bottom":return W?L?ae:Y:L?Y:ae;case"left":case"right":return L?ye:ce;default:return[]}}(js($),B==="start",V);return q&&(G=G.map(D=>D+"-"+q),Q&&(G=G.concat(G.map(U0)))),G}(a,w,b,_));const P=[a,...I],E=await xy(t,y),O=[];let R=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&O.push(E[S]),h){const{main:$,cross:Q}=iX(r,s,_);O.push(E[$],E[Q])}if(R=[...R,{placement:r,overflows:O}],!O.every($=>$<=0)){var M,A;const $=(((M=o.flip)==null?void 0:M.index)||0)+1,Q=P[$];if(Q)return{data:{index:$,overflows:R},reset:{placement:Q}};let B=(A=R.filter(V=>V.overflows[0]<=0).sort((V,q)=>V.overflows[1]-q.overflows[1])[0])==null?void 0:A.placement;if(!B)switch(v){case"bestFit":{var T;const V=(T=R.map(q=>[q.placement,q.overflows.filter(G=>G>0).reduce((G,D)=>G+D,0)]).sort((q,G)=>q[1]-G[1])[0])==null?void 0:T[0];V&&(B=V);break}case"initialPlacement":B=a}if(r!==B)return{reset:{placement:B}}}return{}}}};function a4(e){const t=gi(...e.map(r=>r.left)),n=gi(...e.map(r=>r.top));return{x:t,y:n,width:Ks(...e.map(r=>r.right))-t,height:Ks(...e.map(r=>r.bottom))-n}}const uX=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){const{placement:n,elements:r,rects:o,platform:s,strategy:a}=t,{padding:c=2,x:d,y:p}=Na(e,t),h=Array.from(await(s.getClientRects==null?void 0:s.getClientRects(r.reference))||[]),m=function(y){const S=y.slice().sort((I,P)=>I.y-P.y),k=[];let _=null;for(let I=0;I_.height/2?k.push([P]):k[k.length-1].push(P),_=P}return k.map(I=>_c(a4(I)))}(h),v=_c(a4(h)),b=yy(c),w=await s.getElementRects({reference:{getBoundingClientRect:function(){if(m.length===2&&m[0].left>m[1].right&&d!=null&&p!=null)return m.find(y=>d>y.left-b.left&&dy.top-b.top&&p=2){if(Oi(n)==="x"){const E=m[0],O=m[m.length-1],R=js(n)==="top",M=E.top,A=O.bottom,T=R?E.left:O.left,$=R?E.right:O.right;return{top:M,bottom:A,left:T,right:$,width:$-T,height:A-M,x:T,y:M}}const y=js(n)==="left",S=Ks(...m.map(E=>E.right)),k=gi(...m.map(E=>E.left)),_=m.filter(E=>y?E.left===k:E.right===S),I=_[0].top,P=_[_.length-1].bottom;return{top:I,bottom:P,left:k,right:S,width:S-k,height:P-I,x:k,y:I}}return v}},floating:r.floating,strategy:a});return o.reference.x!==w.reference.x||o.reference.y!==w.reference.y||o.reference.width!==w.reference.width||o.reference.height!==w.reference.height?{reset:{rects:w}}:{}}}},dX=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,a){const{placement:c,platform:d,elements:p}=s,h=await(d.isRTL==null?void 0:d.isRTL(p.floating)),m=js(c),v=Vc(c),b=Oi(c)==="x",w=["left","top"].includes(m)?-1:1,y=h&&b?-1:1,S=Na(a,s);let{mainAxis:k,crossAxis:_,alignmentAxis:I}=typeof S=="number"?{mainAxis:S,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...S};return v&&typeof I=="number"&&(_=v==="end"?-1*I:I),b?{x:_*y,y:k*w}:{x:k*w,y:_*y}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function EI(e){return e==="x"?"y":"x"}const fX=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:a=!1,limiter:c={fn:S=>{let{x:k,y:_}=S;return{x:k,y:_}}},...d}=Na(e,t),p={x:n,y:r},h=await xy(t,d),m=Oi(js(o)),v=EI(m);let b=p[m],w=p[v];if(s){const S=m==="y"?"bottom":"right";b=h1(b+h[m==="y"?"top":"left"],b,b-h[S])}if(a){const S=v==="y"?"bottom":"right";w=h1(w+h[v==="y"?"top":"left"],w,w-h[S])}const y=c.fn({...t,[m]:b,[v]:w});return{...y,data:{x:y.x-n,y:y.y-r}}}}},pX=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:a}=t,{offset:c=0,mainAxis:d=!0,crossAxis:p=!0}=Na(e,t),h={x:n,y:r},m=Oi(o),v=EI(m);let b=h[m],w=h[v];const y=Na(c,t),S=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(d){const I=m==="y"?"height":"width",P=s.reference[m]-s.floating[I]+S.mainAxis,E=s.reference[m]+s.reference[I]-S.mainAxis;bE&&(b=E)}if(p){var k,_;const I=m==="y"?"width":"height",P=["top","left"].includes(js(o)),E=s.reference[v]-s.floating[I]+(P&&((k=a.offset)==null?void 0:k[v])||0)+(P?0:S.crossAxis),O=s.reference[v]+s.reference[I]+(P?0:((_=a.offset)==null?void 0:_[v])||0)-(P?S.crossAxis:0);wO&&(w=O)}return{[m]:b,[v]:w}}}},hX=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:a=()=>{},...c}=Na(e,t),d=await xy(t,c),p=js(n),h=Vc(n),m=Oi(n)==="x",{width:v,height:b}=r.floating;let w,y;p==="top"||p==="bottom"?(w=p,y=h===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(y=p,w=h==="end"?"top":"bottom");const S=b-d[w],k=v-d[y],_=!t.middlewareData.shift;let I=S,P=k;if(m){const O=v-d.left-d.right;P=h||_?gi(k,O):O}else{const O=b-d.top-d.bottom;I=h||_?gi(S,O):O}if(_&&!h){const O=Ks(d.left,0),R=Ks(d.right,0),M=Ks(d.top,0),A=Ks(d.bottom,0);m?P=v-2*(O!==0||R!==0?O+R:Ks(d.left,d.right)):I=b-2*(M!==0||A!==0?M+A:Ks(d.top,d.bottom))}await a({...t,availableWidth:P,availableHeight:I});const E=await o.getDimensions(s.floating);return v!==E.width||b!==E.height?{reset:{rects:!0}}:{}}}};function zo(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function sa(e){return zo(e).getComputedStyle(e)}function OI(e){return e instanceof zo(e).Node}function vi(e){return OI(e)?(e.nodeName||"").toLowerCase():"#document"}function Ms(e){return e instanceof HTMLElement||e instanceof zo(e).HTMLElement}function i4(e){return typeof ShadowRoot<"u"&&(e instanceof zo(e).ShadowRoot||e instanceof ShadowRoot)}function sd(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=sa(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function mX(e){return["table","td","th"].includes(vi(e))}function m1(e){const t=wy(),n=sa(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 wy(){return!(typeof CSS>"u"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function $m(e){return["html","body","#document"].includes(vi(e))}const g1=Math.min,fc=Math.max,xh=Math.round,rp=Math.floor,bi=e=>({x:e,y:e});function RI(e){const t=sa(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Ms(e),s=o?e.offsetWidth:n,a=o?e.offsetHeight:r,c=xh(n)!==s||xh(r)!==a;return c&&(n=s,r=a),{width:n,height:r,$:c}}function Pa(e){return e instanceof Element||e instanceof zo(e).Element}function Sy(e){return Pa(e)?e:e.contextElement}function pc(e){const t=Sy(e);if(!Ms(t))return bi(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=RI(t);let a=(s?xh(n.width):n.width)/r,c=(s?xh(n.height):n.height)/o;return a&&Number.isFinite(a)||(a=1),c&&Number.isFinite(c)||(c=1),{x:a,y:c}}const gX=bi(0);function MI(e){const t=zo(e);return wy()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:gX}function ul(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=Sy(e);let a=bi(1);t&&(r?Pa(r)&&(a=pc(r)):a=pc(e));const c=function(v,b,w){return b===void 0&&(b=!1),!(!w||b&&w!==zo(v))&&b}(s,n,r)?MI(s):bi(0);let d=(o.left+c.x)/a.x,p=(o.top+c.y)/a.y,h=o.width/a.x,m=o.height/a.y;if(s){const v=zo(s),b=r&&Pa(r)?zo(r):r;let w=v.frameElement;for(;w&&r&&b!==v;){const y=pc(w),S=w.getBoundingClientRect(),k=getComputedStyle(w),_=S.left+(w.clientLeft+parseFloat(k.paddingLeft))*y.x,I=S.top+(w.clientTop+parseFloat(k.paddingTop))*y.y;d*=y.x,p*=y.y,h*=y.x,m*=y.y,d+=_,p+=I,w=zo(w).frameElement}}return _c({width:h,height:m,x:d,y:p})}function zm(e){return Pa(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ja(e){var t;return(t=(OI(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function DI(e){return ul(ja(e)).left+zm(e).scrollLeft}function Pc(e){if(vi(e)==="html")return e;const t=e.assignedSlot||e.parentNode||i4(e)&&e.host||ja(e);return i4(t)?t.host:t}function AI(e){const t=Pc(e);return $m(t)?e.ownerDocument?e.ownerDocument.body:e.body:Ms(t)&&sd(t)?t:AI(t)}function wh(e,t){var n;t===void 0&&(t=[]);const r=AI(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=zo(r);return o?t.concat(s,s.visualViewport||[],sd(r)?r:[]):t.concat(r,wh(r))}function l4(e,t,n){let r;if(t==="viewport")r=function(o,s){const a=zo(o),c=ja(o),d=a.visualViewport;let p=c.clientWidth,h=c.clientHeight,m=0,v=0;if(d){p=d.width,h=d.height;const b=wy();(!b||b&&s==="fixed")&&(m=d.offsetLeft,v=d.offsetTop)}return{width:p,height:h,x:m,y:v}}(e,n);else if(t==="document")r=function(o){const s=ja(o),a=zm(o),c=o.ownerDocument.body,d=fc(s.scrollWidth,s.clientWidth,c.scrollWidth,c.clientWidth),p=fc(s.scrollHeight,s.clientHeight,c.scrollHeight,c.clientHeight);let h=-a.scrollLeft+DI(o);const m=-a.scrollTop;return sa(c).direction==="rtl"&&(h+=fc(s.clientWidth,c.clientWidth)-d),{width:d,height:p,x:h,y:m}}(ja(e));else if(Pa(t))r=function(o,s){const a=ul(o,!0,s==="fixed"),c=a.top+o.clientTop,d=a.left+o.clientLeft,p=Ms(o)?pc(o):bi(1);return{width:o.clientWidth*p.x,height:o.clientHeight*p.y,x:d*p.x,y:c*p.y}}(t,n);else{const o=MI(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return _c(r)}function TI(e,t){const n=Pc(e);return!(n===t||!Pa(n)||$m(n))&&(sa(n).position==="fixed"||TI(n,t))}function vX(e,t,n){const r=Ms(t),o=ja(t),s=n==="fixed",a=ul(e,!0,s,t);let c={scrollLeft:0,scrollTop:0};const d=bi(0);if(r||!r&&!s)if((vi(t)!=="body"||sd(o))&&(c=zm(t)),Ms(t)){const p=ul(t,!0,s,t);d.x=p.x+t.clientLeft,d.y=p.y+t.clientTop}else o&&(d.x=DI(o));return{x:a.left+c.scrollLeft-d.x,y:a.top+c.scrollTop-d.y,width:a.width,height:a.height}}function c4(e,t){return Ms(e)&&sa(e).position!=="fixed"?t?t(e):e.offsetParent:null}function u4(e,t){const n=zo(e);if(!Ms(e))return n;let r=c4(e,t);for(;r&&mX(r)&&sa(r).position==="static";)r=c4(r,t);return r&&(vi(r)==="html"||vi(r)==="body"&&sa(r).position==="static"&&!m1(r))?n:r||function(o){let s=Pc(o);for(;Ms(s)&&!$m(s);){if(m1(s))return s;s=Pc(s)}return null}(e)||n}const bX={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Ms(n),s=ja(n);if(n===s)return t;let a={scrollLeft:0,scrollTop:0},c=bi(1);const d=bi(0);if((o||!o&&r!=="fixed")&&((vi(n)!=="body"||sd(s))&&(a=zm(n)),Ms(n))){const p=ul(n);c=pc(n),d.x=p.x+n.clientLeft,d.y=p.y+n.clientTop}return{width:t.width*c.x,height:t.height*c.y,x:t.x*c.x-a.scrollLeft*c.x+d.x,y:t.y*c.y-a.scrollTop*c.y+d.y}},getDocumentElement:ja,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?function(d,p){const h=p.get(d);if(h)return h;let m=wh(d).filter(y=>Pa(y)&&vi(y)!=="body"),v=null;const b=sa(d).position==="fixed";let w=b?Pc(d):d;for(;Pa(w)&&!$m(w);){const y=sa(w),S=m1(w);S||y.position!=="fixed"||(v=null),(b?!S&&!v:!S&&y.position==="static"&&v&&["absolute","fixed"].includes(v.position)||sd(w)&&!S&&TI(d,w))?m=m.filter(k=>k!==w):v=y,w=Pc(w)}return p.set(d,m),m}(t,this._c):[].concat(n),r],a=s[0],c=s.reduce((d,p)=>{const h=l4(t,p,o);return d.top=fc(h.top,d.top),d.right=g1(h.right,d.right),d.bottom=g1(h.bottom,d.bottom),d.left=fc(h.left,d.left),d},l4(t,a,o));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},getOffsetParent:u4,getElementRects:async function(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||u4,s=this.getDimensions;return{reference:vX(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 RI(e)},getScale:pc,isElement:Pa,isRTL:function(e){return getComputedStyle(e).direction==="rtl"}};function yX(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:d=!1}=r,p=Sy(e),h=o||s?[...p?wh(p):[],...wh(t)]:[];h.forEach(S=>{o&&S.addEventListener("scroll",n,{passive:!0}),s&&S.addEventListener("resize",n)});const m=p&&c?function(S,k){let _,I=null;const P=ja(S);function E(){clearTimeout(_),I&&I.disconnect(),I=null}return function O(R,M){R===void 0&&(R=!1),M===void 0&&(M=1),E();const{left:A,top:T,width:$,height:Q}=S.getBoundingClientRect();if(R||k(),!$||!Q)return;const B={rootMargin:-rp(T)+"px "+-rp(P.clientWidth-(A+$))+"px "+-rp(P.clientHeight-(T+Q))+"px "+-rp(A)+"px",threshold:fc(0,g1(1,M))||1};let V=!0;function q(G){const D=G[0].intersectionRatio;if(D!==M){if(!V)return O();D?O(!1,D):_=setTimeout(()=>{O(!1,1e-7)},100)}V=!1}try{I=new IntersectionObserver(q,{...B,root:P.ownerDocument})}catch{I=new IntersectionObserver(q,B)}I.observe(S)}(!0),E}(p,n):null;let v,b=-1,w=null;a&&(w=new ResizeObserver(S=>{let[k]=S;k&&k.target===p&&w&&(w.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{w&&w.observe(t)})),n()}),p&&!d&&w.observe(p),w.observe(t));let y=d?ul(e):null;return d&&function S(){const k=ul(e);!y||k.x===y.x&&k.y===y.y&&k.width===y.width&&k.height===y.height||n(),y=k,v=requestAnimationFrame(S)}(),n(),()=>{h.forEach(S=>{o&&S.removeEventListener("scroll",n),s&&S.removeEventListener("resize",n)}),m&&m(),w&&w.disconnect(),w=null,d&&cancelAnimationFrame(v)}}const xX=(e,t,n)=>{const r=new Map,o={platform:bX,...n},s={...o.platform,_c:r};return oX(e,t,{...o,platform:s})},wX=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?s4({element:t.current,padding:n}).fn(o):{}:t?s4({element:t,padding:n}).fn(o):{}}}};var Pp=typeof document<"u"?f.useLayoutEffect:f.useEffect;function Sh(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(!Sh(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)&&!Sh(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function d4(e){const t=f.useRef(e);return Pp(()=>{t.current=e}),t}function SX(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,whileElementsMounted:s,open:a}=e,[c,d]=f.useState({x:null,y:null,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=f.useState(r);Sh(p,r)||h(r);const m=f.useRef(null),v=f.useRef(null),b=f.useRef(c),w=d4(s),y=d4(o),[S,k]=f.useState(null),[_,I]=f.useState(null),P=f.useCallback(T=>{m.current!==T&&(m.current=T,k(T))},[]),E=f.useCallback(T=>{v.current!==T&&(v.current=T,I(T))},[]),O=f.useCallback(()=>{if(!m.current||!v.current)return;const T={placement:t,strategy:n,middleware:p};y.current&&(T.platform=y.current),xX(m.current,v.current,T).then($=>{const Q={...$,isPositioned:!0};R.current&&!Sh(b.current,Q)&&(b.current=Q,_i.flushSync(()=>{d(Q)}))})},[p,t,n,y]);Pp(()=>{a===!1&&b.current.isPositioned&&(b.current.isPositioned=!1,d(T=>({...T,isPositioned:!1})))},[a]);const R=f.useRef(!1);Pp(()=>(R.current=!0,()=>{R.current=!1}),[]),Pp(()=>{if(S&&_){if(w.current)return w.current(S,_,O);O()}},[S,_,O,w]);const M=f.useMemo(()=>({reference:m,floating:v,setReference:P,setFloating:E}),[P,E]),A=f.useMemo(()=>({reference:S,floating:_}),[S,_]);return f.useMemo(()=>({...c,update:O,refs:M,elements:A,reference:P,floating:E}),[c,O,M,A,P,E])}var CX=typeof document<"u"?f.useLayoutEffect:f.useEffect;function kX(){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 _X=f.createContext(null),PX=()=>f.useContext(_X);function jX(e){return(e==null?void 0:e.ownerDocument)||document}function IX(e){return jX(e).defaultView||window}function op(e){return e?e instanceof IX(e).Element:!1}const EX=z1["useInsertionEffect".toString()],OX=EX||(e=>e());function RX(e){const t=f.useRef(()=>{});return OX(()=>{t.current=e}),f.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;okX())[0],[p,h]=f.useState(null),m=f.useCallback(k=>{const _=op(k)?{getBoundingClientRect:()=>k.getBoundingClientRect(),contextElement:k}:k;o.refs.setReference(_)},[o.refs]),v=f.useCallback(k=>{(op(k)||k===null)&&(a.current=k,h(k)),(op(o.refs.reference.current)||o.refs.reference.current===null||k!==null&&!op(k))&&o.refs.setReference(k)},[o.refs]),b=f.useMemo(()=>({...o.refs,setReference:v,setPositionReference:m,domReference:a}),[o.refs,v,m]),w=f.useMemo(()=>({...o.elements,domReference:p}),[o.elements,p]),y=RX(n),S=f.useMemo(()=>({...o,refs:b,elements:w,dataRef:c,nodeId:r,events:d,open:t,onOpenChange:y}),[o,r,d,t,y,b,w]);return CX(()=>{const k=s==null?void 0:s.nodesRef.current.find(_=>_.id===r);k&&(k.context=S)}),f.useMemo(()=>({...o,context:S,refs:b,reference:v,positionReference:m}),[o,b,S,v,m])}function DX({opened:e,floating:t,position:n,positionDependencies:r}){const[o,s]=f.useState(0);f.useEffect(()=>{if(t.refs.reference.current&&t.refs.floating.current)return yX(t.refs.reference.current,t.refs.floating.current,t.update)},[t.refs.reference.current,t.refs.floating.current,e,o,n]),Ps(()=>{t.update()},r),Ps(()=>{s(a=>a+1)},[e])}function AX(e){const t=[dX(e.offset)];return e.middlewares.shift&&t.push(fX({limiter:pX()})),e.middlewares.flip&&t.push(cX()),e.middlewares.inline&&t.push(uX()),t.push(wX({element:e.arrowRef,padding:e.arrowOffset})),t}function TX(e){const[t,n]=od({value:e.opened,defaultValue:e.defaultOpened,finalValue:!1,onChange:e.onChange}),r=()=>{var a;(a=e.onClose)==null||a.call(e),n(!1)},o=()=>{var a,c;t?((a=e.onClose)==null||a.call(e),n(!1)):((c=e.onOpen)==null||c.call(e),n(!0))},s=MX({placement:e.position,middleware:[...AX(e),...e.width==="target"?[hX({apply({rects:a}){var c,d;Object.assign((d=(c=s.refs.floating.current)==null?void 0:c.style)!=null?d:{},{width:`${a.reference.width}px`})}})]:[]]});return DX({opened:e.opened,position:e.position,positionDependencies:e.positionDependencies,floating:s}),Ps(()=>{var a;(a=e.onPositionChange)==null||a.call(e,s.placement)},[s.placement]),Ps(()=>{var a,c;e.opened?(c=e.onOpen)==null||c.call(e):(a=e.onClose)==null||a.call(e)},[e.opened]),{floating:s,controlled:typeof e.opened=="boolean",opened:t,onClose:r,onToggle:o}}const NI={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"},[NX,$I]=CU(NI.context);var $X=Object.defineProperty,zX=Object.defineProperties,LX=Object.getOwnPropertyDescriptors,Ch=Object.getOwnPropertySymbols,zI=Object.prototype.hasOwnProperty,LI=Object.prototype.propertyIsEnumerable,f4=(e,t,n)=>t in e?$X(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,sp=(e,t)=>{for(var n in t||(t={}))zI.call(t,n)&&f4(e,n,t[n]);if(Ch)for(var n of Ch(t))LI.call(t,n)&&f4(e,n,t[n]);return e},BX=(e,t)=>zX(e,LX(t)),FX=(e,t)=>{var n={};for(var r in e)zI.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&&LI.call(e,r)&&(n[r]=e[r]);return n};const HX={refProp:"ref",popupType:"dialog"},BI=f.forwardRef((e,t)=>{const n=Sr("PopoverTarget",HX,e),{children:r,refProp:o,popupType:s}=n,a=FX(n,["children","refProp","popupType"]);if(!hj(r))throw new Error(NI.children);const c=a,d=$I(),p=Td(d.reference,r.ref,t),h=d.withRoles?{"aria-haspopup":s,"aria-expanded":d.opened,"aria-controls":d.getDropdownId(),id:d.getTargetId()}:{};return f.cloneElement(r,sp(BX(sp(sp(sp({},c),h),d.targetProps),{className:gj(d.targetProps.className,c.className,r.props.className),[o]:p}),d.controlled?null:{onClick:d.onToggle}))});BI.displayName="@mantine/core/PopoverTarget";var WX=so((e,{radius:t,shadow:n})=>({dropdown:{position:"absolute",backgroundColor:e.white,background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,border:`${Ue(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:`${Ue(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,zIndex:1}}));const VX=WX;var UX=Object.defineProperty,p4=Object.getOwnPropertySymbols,GX=Object.prototype.hasOwnProperty,qX=Object.prototype.propertyIsEnumerable,h4=(e,t,n)=>t in e?UX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Fl=(e,t)=>{for(var n in t||(t={}))GX.call(t,n)&&h4(e,n,t[n]);if(p4)for(var n of p4(t))qX.call(t,n)&&h4(e,n,t[n]);return e};const m4={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function KX({transition:e,state:t,duration:n,timingFunction:r}){const o={transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e=="string"?e in Qf?Fl(Fl(Fl({transitionProperty:Qf[e].transitionProperty},o),Qf[e].common),Qf[e][m4[t]]):null:Fl(Fl(Fl({transitionProperty:e.transitionProperty},o),e.common),e[m4[t]])}function XX({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:o,onExit:s,onEntered:a,onExited:c}){const d=Fa(),p=Cj(),h=d.respectReducedMotion?p:!1,[m,v]=f.useState(h?0:e),[b,w]=f.useState(r?"entered":"exited"),y=f.useRef(-1),S=k=>{const _=k?o:s,I=k?a:c;w(k?"pre-entering":"pre-exiting"),window.clearTimeout(y.current);const P=h?0:k?e:t;if(v(P),P===0)typeof _=="function"&&_(),typeof I=="function"&&I(),w(k?"entered":"exited");else{const E=window.setTimeout(()=>{typeof _=="function"&&_(),w(k?"entering":"exiting")},10);y.current=window.setTimeout(()=>{window.clearTimeout(E),typeof I=="function"&&I(),w(k?"entered":"exited")},P)}};return Ps(()=>{S(r)},[r]),f.useEffect(()=>()=>window.clearTimeout(y.current),[]),{transitionDuration:m,transitionStatus:b,transitionTimingFunction:n||d.transitionTimingFunction}}function FI({keepMounted:e,transition:t,duration:n=250,exitDuration:r=n,mounted:o,children:s,timingFunction:a,onExit:c,onEntered:d,onEnter:p,onExited:h}){const{transitionDuration:m,transitionStatus:v,transitionTimingFunction:b}=XX({mounted:o,exitDuration:r,duration:n,timingFunction:a,onExit:c,onEntered:d,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(KX({transition:t,duration:m,state:v,timingFunction:b})))}FI.displayName="@mantine/core/Transition";function HI({children:e,active:t=!0,refProp:n="ref"}){const r=rG(t),o=Td(r,e==null?void 0:e.ref);return hj(e)?f.cloneElement(e,{[n]:o}):e}HI.displayName="@mantine/core/FocusTrap";var YX=Object.defineProperty,QX=Object.defineProperties,JX=Object.getOwnPropertyDescriptors,g4=Object.getOwnPropertySymbols,ZX=Object.prototype.hasOwnProperty,eY=Object.prototype.propertyIsEnumerable,v4=(e,t,n)=>t in e?YX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Za=(e,t)=>{for(var n in t||(t={}))ZX.call(t,n)&&v4(e,n,t[n]);if(g4)for(var n of g4(t))eY.call(t,n)&&v4(e,n,t[n]);return e},ap=(e,t)=>QX(e,JX(t));function b4(e,t,n,r){return e==="center"||r==="center"?{top:t}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function y4(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 tY={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function nY({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:o,arrowX:s,arrowY:a,dir:c}){const[d,p="center"]=e.split("-"),h={width:Ue(t),height:Ue(t),transform:"rotate(45deg)",position:"absolute",[tY[d]]:Ue(r)},m=Ue(-t/2);return d==="left"?ap(Za(Za({},h),b4(p,a,n,o)),{right:m,borderLeftColor:"transparent",borderBottomColor:"transparent"}):d==="right"?ap(Za(Za({},h),b4(p,a,n,o)),{left:m,borderRightColor:"transparent",borderTopColor:"transparent"}):d==="top"?ap(Za(Za({},h),y4(p,s,n,o,c)),{bottom:m,borderTopColor:"transparent",borderLeftColor:"transparent"}):d==="bottom"?ap(Za(Za({},h),y4(p,s,n,o,c)),{top:m,borderBottomColor:"transparent",borderRightColor:"transparent"}):{}}var rY=Object.defineProperty,oY=Object.defineProperties,sY=Object.getOwnPropertyDescriptors,kh=Object.getOwnPropertySymbols,WI=Object.prototype.hasOwnProperty,VI=Object.prototype.propertyIsEnumerable,x4=(e,t,n)=>t in e?rY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,aY=(e,t)=>{for(var n in t||(t={}))WI.call(t,n)&&x4(e,n,t[n]);if(kh)for(var n of kh(t))VI.call(t,n)&&x4(e,n,t[n]);return e},iY=(e,t)=>oY(e,sY(t)),lY=(e,t)=>{var n={};for(var r in e)WI.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&&VI.call(e,r)&&(n[r]=e[r]);return n};const UI=f.forwardRef((e,t)=>{var n=e,{position:r,arrowSize:o,arrowOffset:s,arrowRadius:a,arrowPosition:c,visible:d,arrowX:p,arrowY:h}=n,m=lY(n,["position","arrowSize","arrowOffset","arrowRadius","arrowPosition","visible","arrowX","arrowY"]);const v=Fa();return d?H.createElement("div",iY(aY({},m),{ref:t,style:nY({position:r,arrowSize:o,arrowOffset:s,arrowRadius:a,arrowPosition:c,dir:v.dir,arrowX:p,arrowY:h})})):null});UI.displayName="@mantine/core/FloatingArrow";var cY=Object.defineProperty,uY=Object.defineProperties,dY=Object.getOwnPropertyDescriptors,_h=Object.getOwnPropertySymbols,GI=Object.prototype.hasOwnProperty,qI=Object.prototype.propertyIsEnumerable,w4=(e,t,n)=>t in e?cY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hl=(e,t)=>{for(var n in t||(t={}))GI.call(t,n)&&w4(e,n,t[n]);if(_h)for(var n of _h(t))qI.call(t,n)&&w4(e,n,t[n]);return e},ip=(e,t)=>uY(e,dY(t)),fY=(e,t)=>{var n={};for(var r in e)GI.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&&qI.call(e,r)&&(n[r]=e[r]);return n};const pY={};function KI(e){var t;const n=Sr("PopoverDropdown",pY,e),{style:r,className:o,children:s,onKeyDownCapture:a}=n,c=fY(n,["style","className","children","onKeyDownCapture"]),d=$I(),{classes:p,cx:h}=VX({radius:d.radius,shadow:d.shadow},{name:d.__staticSelector,classNames:d.classNames,styles:d.styles,unstyled:d.unstyled,variant:d.variant}),m=YU({opened:d.opened,shouldReturnFocus:d.returnFocus}),v=d.withRoles?{"aria-labelledby":d.getTargetId(),id:d.getDropdownId(),role:"dialog"}:{};return d.disabled?null:H.createElement(Kj,ip(Hl({},d.portalProps),{withinPortal:d.withinPortal}),H.createElement(FI,ip(Hl({mounted:d.opened},d.transitionProps),{transition:d.transitionProps.transition||"fade",duration:(t=d.transitionProps.duration)!=null?t:150,keepMounted:d.keepMounted,exitDuration:typeof d.transitionProps.exitDuration=="number"?d.transitionProps.exitDuration:d.transitionProps.duration}),b=>{var w,y;return H.createElement(HI,{active:d.trapFocus},H.createElement(jo,Hl(ip(Hl({},v),{tabIndex:-1,ref:d.floating,style:ip(Hl(Hl({},r),b),{zIndex:d.zIndex,top:(w=d.y)!=null?w:0,left:(y=d.x)!=null?y:0,width:d.width==="target"?void 0:Ue(d.width)}),className:h(p.dropdown,o),onKeyDownCapture:_U(d.onClose,{active:d.closeOnEscape,onTrigger:m,onKeyDown:a}),"data-position":d.placement}),c),s,H.createElement(UI,{ref:d.arrowRef,arrowX:d.arrowX,arrowY:d.arrowY,visible:d.withArrow,position:d.placement,arrowSize:d.arrowSize,arrowRadius:d.arrowRadius,arrowOffset:d.arrowOffset,arrowPosition:d.arrowPosition,className:p.arrow})))}))}KI.displayName="@mantine/core/PopoverDropdown";function hY(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 S4=Object.getOwnPropertySymbols,mY=Object.prototype.hasOwnProperty,gY=Object.prototype.propertyIsEnumerable,vY=(e,t)=>{var n={};for(var r in e)mY.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&S4)for(var r of S4(e))t.indexOf(r)<0&&gY.call(e,r)&&(n[r]=e[r]);return n};const bY={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:fy("popover"),__staticSelector:"Popover",width:"max-content"};function Uc(e){var t,n,r,o,s,a;const c=f.useRef(null),d=Sr("Popover",bY,e),{children:p,position:h,offset:m,onPositionChange:v,positionDependencies:b,opened:w,transitionProps:y,width:S,middlewares:k,withArrow:_,arrowSize:I,arrowOffset:P,arrowRadius:E,arrowPosition:O,unstyled:R,classNames:M,styles:A,closeOnClickOutside:T,withinPortal:$,portalProps:Q,closeOnEscape:B,clickOutsideEvents:V,trapFocus:q,onClose:G,onOpen:D,onChange:L,zIndex:W,radius:Y,shadow:ae,id:ye,defaultOpened:ce,__staticSelector:X,withRoles:K,disabled:U,returnFocus:se,variant:re,keepMounted:oe}=d,pe=vY(d,["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"]),[ie,ge]=f.useState(null),[ke,xe]=f.useState(null),de=hy(ye),Te=Fa(),Oe=TX({middlewares:k,width:S,position:hY(Te.dir,h),offset:typeof m=="number"?m+(_?I/2:0):m,arrowRef:c,arrowOffset:P,onPositionChange:v,positionDependencies:b,opened:w,defaultOpened:ce,onChange:L,onOpen:D,onClose:G});GU(()=>Oe.opened&&T&&Oe.onClose(),V,[ie,ke]);const $e=f.useCallback(ct=>{ge(ct),Oe.floating.reference(ct)},[Oe.floating.reference]),kt=f.useCallback(ct=>{xe(ct),Oe.floating.floating(ct)},[Oe.floating.floating]);return H.createElement(NX,{value:{returnFocus:se,disabled:U,controlled:Oe.controlled,reference:$e,floating:kt,x:Oe.floating.x,y:Oe.floating.y,arrowX:(r=(n=(t=Oe.floating)==null?void 0:t.middlewareData)==null?void 0:n.arrow)==null?void 0:r.x,arrowY:(a=(s=(o=Oe.floating)==null?void 0:o.middlewareData)==null?void 0:s.arrow)==null?void 0:a.y,opened:Oe.opened,arrowRef:c,transitionProps:y,width:S,withArrow:_,arrowSize:I,arrowOffset:P,arrowRadius:E,arrowPosition:O,placement:Oe.floating.placement,trapFocus:q,withinPortal:$,portalProps:Q,zIndex:W,radius:Y,shadow:ae,closeOnEscape:B,onClose:Oe.onClose,onToggle:Oe.onToggle,getTargetId:()=>`${de}-target`,getDropdownId:()=>`${de}-dropdown`,withRoles:K,targetProps:pe,__staticSelector:X,classNames:M,styles:A,unstyled:R,variant:re,keepMounted:oe}},p)}Uc.Target=BI;Uc.Dropdown=KI;Uc.displayName="@mantine/core/Popover";var yY=Object.defineProperty,Ph=Object.getOwnPropertySymbols,XI=Object.prototype.hasOwnProperty,YI=Object.prototype.propertyIsEnumerable,C4=(e,t,n)=>t in e?yY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xY=(e,t)=>{for(var n in t||(t={}))XI.call(t,n)&&C4(e,n,t[n]);if(Ph)for(var n of Ph(t))YI.call(t,n)&&C4(e,n,t[n]);return e},wY=(e,t)=>{var n={};for(var r in e)XI.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&&YI.call(e,r)&&(n[r]=e[r]);return n};function SY(e){var t=e,{children:n,component:r="div",maxHeight:o=220,direction:s="column",id:a,innerRef:c,__staticSelector:d,styles:p,classNames:h,unstyled:m}=t,v=wY(t,["children","component","maxHeight","direction","id","innerRef","__staticSelector","styles","classNames","unstyled"]);const{classes:b}=rX(null,{name:d,styles:p,classNames:h,unstyled:m});return H.createElement(Uc.Dropdown,xY({p:0,onMouseDown:w=>w.preventDefault()},v),H.createElement("div",{style:{maxHeight:Ue(o),display:"flex"}},H.createElement(jo,{component:r||"div",id:`${a}-items`,"aria-labelledby":`${a}-label`,role:"listbox",onMouseDown:w=>w.preventDefault(),style:{flex:1,overflowY:r!==Nm?"auto":void 0},"data-combobox-popover":!0,tabIndex:-1,ref:c},H.createElement("div",{className:b.itemsWrapper,style:{flexDirection:s}},n))))}function hi({opened:e,transitionProps:t={transition:"fade",duration:0},shadow:n,withinPortal:r,portalProps:o,children:s,__staticSelector:a,onDirectionChange:c,switchDirectionOnFlip:d,zIndex:p,dropdownPosition:h,positionDependencies:m=[],classNames:v,styles:b,unstyled:w,readOnly:y,variant:S}){return H.createElement(Uc,{unstyled:w,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:a,withinPortal:r,portalProps:o,transitionProps:t,shadow:n,disabled:y,onPositionChange:k=>d&&(c==null?void 0:c(k==="top"?"column-reverse":"column")),variant:S},s)}hi.Target=Uc.Target;hi.Dropdown=SY;var CY=Object.defineProperty,kY=Object.defineProperties,_Y=Object.getOwnPropertyDescriptors,jh=Object.getOwnPropertySymbols,QI=Object.prototype.hasOwnProperty,JI=Object.prototype.propertyIsEnumerable,k4=(e,t,n)=>t in e?CY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lp=(e,t)=>{for(var n in t||(t={}))QI.call(t,n)&&k4(e,n,t[n]);if(jh)for(var n of jh(t))JI.call(t,n)&&k4(e,n,t[n]);return e},PY=(e,t)=>kY(e,_Y(t)),jY=(e,t)=>{var n={};for(var r in e)QI.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&&JI.call(e,r)&&(n[r]=e[r]);return n};function ZI(e,t,n){const r=Sr(e,t,n),{label:o,description:s,error:a,required:c,classNames:d,styles:p,className:h,unstyled:m,__staticSelector:v,sx:b,errorProps:w,labelProps:y,descriptionProps:S,wrapperProps:k,id:_,size:I,style:P,inputContainer:E,inputWrapperOrder:O,withAsterisk:R,variant:M}=r,A=jY(r,["label","description","error","required","classNames","styles","className","unstyled","__staticSelector","sx","errorProps","labelProps","descriptionProps","wrapperProps","id","size","style","inputContainer","inputWrapperOrder","withAsterisk","variant"]),T=hy(_),{systemStyles:$,rest:Q}=Mm(A),B=lp({label:o,description:s,error:a,required:c,classNames:d,className:h,__staticSelector:v,sx:b,errorProps:w,labelProps:y,descriptionProps:S,unstyled:m,styles:p,id:T,size:I,style:P,inputContainer:E,inputWrapperOrder:O,withAsterisk:R,variant:M},k);return PY(lp({},Q),{classNames:d,styles:p,unstyled:m,wrapperProps:lp(lp({},B),$),inputProps:{required:c,classNames:d,styles:p,unstyled:m,id:T,size:I,__staticSelector:v,error:a,variant:M}})}var IY=so((e,t,{size:n})=>({label:{display:"inline-block",fontSize:Vt({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 EY=IY;var OY=Object.defineProperty,Ih=Object.getOwnPropertySymbols,eE=Object.prototype.hasOwnProperty,tE=Object.prototype.propertyIsEnumerable,_4=(e,t,n)=>t in e?OY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,RY=(e,t)=>{for(var n in t||(t={}))eE.call(t,n)&&_4(e,n,t[n]);if(Ih)for(var n of Ih(t))tE.call(t,n)&&_4(e,n,t[n]);return e},MY=(e,t)=>{var n={};for(var r in e)eE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ih)for(var r of Ih(e))t.indexOf(r)<0&&tE.call(e,r)&&(n[r]=e[r]);return n};const DY={labelElement:"label",size:"sm"},Cy=f.forwardRef((e,t)=>{const n=Sr("InputLabel",DY,e),{labelElement:r,children:o,required:s,size:a,classNames:c,styles:d,unstyled:p,className:h,htmlFor:m,__staticSelector:v,variant:b,onMouseDown:w}=n,y=MY(n,["labelElement","children","required","size","classNames","styles","unstyled","className","htmlFor","__staticSelector","variant","onMouseDown"]),{classes:S,cx:k}=EY(null,{name:["InputWrapper",v],classNames:c,styles:d,unstyled:p,variant:b,size:a});return H.createElement(jo,RY({component:r,ref:t,className:k(S.label,h),htmlFor:r==="label"?m:void 0,onMouseDown:_=>{w==null||w(_),!_.defaultPrevented&&_.detail>1&&_.preventDefault()}},y),o,s&&H.createElement("span",{className:S.required,"aria-hidden":!0}," *"))});Cy.displayName="@mantine/core/InputLabel";var AY=so((e,t,{size:n})=>({error:{wordBreak:"break-word",color:e.fn.variant({variant:"filled",color:"red"}).background,fontSize:`calc(${Vt({size:n,sizes:e.fontSizes})} - ${Ue(2)})`,lineHeight:1.2,display:"block"}}));const TY=AY;var NY=Object.defineProperty,Eh=Object.getOwnPropertySymbols,nE=Object.prototype.hasOwnProperty,rE=Object.prototype.propertyIsEnumerable,P4=(e,t,n)=>t in e?NY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$Y=(e,t)=>{for(var n in t||(t={}))nE.call(t,n)&&P4(e,n,t[n]);if(Eh)for(var n of Eh(t))rE.call(t,n)&&P4(e,n,t[n]);return e},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&&Eh)for(var r of Eh(e))t.indexOf(r)<0&&rE.call(e,r)&&(n[r]=e[r]);return n};const LY={size:"sm"},ky=f.forwardRef((e,t)=>{const n=Sr("InputError",LY,e),{children:r,className:o,classNames:s,styles:a,unstyled:c,size:d,__staticSelector:p,variant:h}=n,m=zY(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=TY(null,{name:["InputWrapper",p],classNames:s,styles:a,unstyled:c,variant:h,size:d});return H.createElement(Cc,$Y({className:b(v.error,o),ref:t},m),r)});ky.displayName="@mantine/core/InputError";var BY=so((e,t,{size:n})=>({description:{wordBreak:"break-word",color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],fontSize:`calc(${Vt({size:n,sizes:e.fontSizes})} - ${Ue(2)})`,lineHeight:1.2,display:"block"}}));const FY=BY;var HY=Object.defineProperty,Oh=Object.getOwnPropertySymbols,oE=Object.prototype.hasOwnProperty,sE=Object.prototype.propertyIsEnumerable,j4=(e,t,n)=>t in e?HY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WY=(e,t)=>{for(var n in t||(t={}))oE.call(t,n)&&j4(e,n,t[n]);if(Oh)for(var n of Oh(t))sE.call(t,n)&&j4(e,n,t[n]);return e},VY=(e,t)=>{var n={};for(var r in e)oE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Oh)for(var r of Oh(e))t.indexOf(r)<0&&sE.call(e,r)&&(n[r]=e[r]);return n};const UY={size:"sm"},_y=f.forwardRef((e,t)=>{const n=Sr("InputDescription",UY,e),{children:r,className:o,classNames:s,styles:a,unstyled:c,size:d,__staticSelector:p,variant:h}=n,m=VY(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=FY(null,{name:["InputWrapper",p],classNames:s,styles:a,unstyled:c,variant:h,size:d});return H.createElement(Cc,WY({color:"dimmed",className:b(v.description,o),ref:t,unstyled:c},m),r)});_y.displayName="@mantine/core/InputDescription";const aE=f.createContext({offsetBottom:!1,offsetTop:!1,describedBy:void 0}),GY=aE.Provider,qY=()=>f.useContext(aE);function KY(e,{hasDescription:t,hasError:n}){const r=e.findIndex(d=>d==="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 XY=Object.defineProperty,YY=Object.defineProperties,QY=Object.getOwnPropertyDescriptors,I4=Object.getOwnPropertySymbols,JY=Object.prototype.hasOwnProperty,ZY=Object.prototype.propertyIsEnumerable,E4=(e,t,n)=>t in e?XY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,eQ=(e,t)=>{for(var n in t||(t={}))JY.call(t,n)&&E4(e,n,t[n]);if(I4)for(var n of I4(t))ZY.call(t,n)&&E4(e,n,t[n]);return e},tQ=(e,t)=>YY(e,QY(t)),nQ=so(e=>({root:tQ(eQ({},e.fn.fontStyles()),{lineHeight:e.lineHeight})}));const rQ=nQ;var oQ=Object.defineProperty,sQ=Object.defineProperties,aQ=Object.getOwnPropertyDescriptors,Rh=Object.getOwnPropertySymbols,iE=Object.prototype.hasOwnProperty,lE=Object.prototype.propertyIsEnumerable,O4=(e,t,n)=>t in e?oQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ei=(e,t)=>{for(var n in t||(t={}))iE.call(t,n)&&O4(e,n,t[n]);if(Rh)for(var n of Rh(t))lE.call(t,n)&&O4(e,n,t[n]);return e},R4=(e,t)=>sQ(e,aQ(t)),iQ=(e,t)=>{var n={};for(var r in e)iE.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&&lE.call(e,r)&&(n[r]=e[r]);return n};const lQ={labelElement:"label",size:"sm",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},cE=f.forwardRef((e,t)=>{const n=Sr("InputWrapper",lQ,e),{className:r,label:o,children:s,required:a,id:c,error:d,description:p,labelElement:h,labelProps:m,descriptionProps:v,errorProps:b,classNames:w,styles:y,size:S,inputContainer:k,__staticSelector:_,unstyled:I,inputWrapperOrder:P,withAsterisk:E,variant:O}=n,R=iQ(n,["className","label","children","required","id","error","description","labelElement","labelProps","descriptionProps","errorProps","classNames","styles","size","inputContainer","__staticSelector","unstyled","inputWrapperOrder","withAsterisk","variant"]),{classes:M,cx:A}=rQ(null,{classNames:w,styles:y,name:["InputWrapper",_],unstyled:I,variant:O,size:S}),T={classNames:w,styles:y,unstyled:I,size:S,variant:O,__staticSelector:_},$=typeof E=="boolean"?E:a,Q=c?`${c}-error`:b==null?void 0:b.id,B=c?`${c}-description`:v==null?void 0:v.id,q=`${!!d&&typeof d!="boolean"?Q:""} ${p?B:""}`,G=q.trim().length>0?q.trim():void 0,D=o&&H.createElement(Cy,ei(ei({key:"label",labelElement:h,id:c?`${c}-label`:void 0,htmlFor:c,required:$},T),m),o),L=p&&H.createElement(_y,R4(ei(ei({key:"description"},v),T),{size:(v==null?void 0:v.size)||T.size,id:(v==null?void 0:v.id)||B}),p),W=H.createElement(f.Fragment,{key:"input"},k(s)),Y=typeof d!="boolean"&&d&&H.createElement(ky,R4(ei(ei({},b),T),{size:(b==null?void 0:b.size)||T.size,key:"error",id:(b==null?void 0:b.id)||Q}),d),ae=P.map(ye=>{switch(ye){case"label":return D;case"input":return W;case"description":return L;case"error":return Y;default:return null}});return H.createElement(GY,{value:ei({describedBy:G},KY(P,{hasDescription:!!L,hasError:!!Y}))},H.createElement(jo,ei({className:A(M.root,r),ref:t},R),ae))});cE.displayName="@mantine/core/InputWrapper";var cQ=Object.defineProperty,Mh=Object.getOwnPropertySymbols,uE=Object.prototype.hasOwnProperty,dE=Object.prototype.propertyIsEnumerable,M4=(e,t,n)=>t in e?cQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uQ=(e,t)=>{for(var n in t||(t={}))uE.call(t,n)&&M4(e,n,t[n]);if(Mh)for(var n of Mh(t))dE.call(t,n)&&M4(e,n,t[n]);return e},dQ=(e,t)=>{var n={};for(var r in e)uE.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&&dE.call(e,r)&&(n[r]=e[r]);return n};const fQ={},fE=f.forwardRef((e,t)=>{const n=Sr("InputPlaceholder",fQ,e),{sx:r}=n,o=dQ(n,["sx"]);return H.createElement(jo,uQ({component:"span",sx:[s=>s.fn.placeholderStyles(),...fj(r)],ref:t},o))});fE.displayName="@mantine/core/InputPlaceholder";var pQ=Object.defineProperty,hQ=Object.defineProperties,mQ=Object.getOwnPropertyDescriptors,D4=Object.getOwnPropertySymbols,gQ=Object.prototype.hasOwnProperty,vQ=Object.prototype.propertyIsEnumerable,A4=(e,t,n)=>t in e?pQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,cp=(e,t)=>{for(var n in t||(t={}))gQ.call(t,n)&&A4(e,n,t[n]);if(D4)for(var n of D4(t))vQ.call(t,n)&&A4(e,n,t[n]);return e},G0=(e,t)=>hQ(e,mQ(t));const Yo={xs:Ue(30),sm:Ue(36),md:Ue(42),lg:Ue(50),xl:Ue(60)},bQ=["default","filled","unstyled"];function yQ({theme:e,variant:t}){return bQ.includes(t)?t==="default"?{border:`${Ue(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:`${Ue(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:Ue(28),outline:0,"&:focus, &:focus-within":{outline:"none",borderColor:"transparent"},"&:disabled":{backgroundColor:"transparent","&:focus, &:focus-within":{outline:"none",borderColor:"transparent"}}}:null}var xQ=so((e,{multiline:t,radius:n,invalid:r,rightSectionWidth:o,withRightSection:s,iconWidth:a,offsetBottom:c,offsetTop:d,pointer:p},{variant:h,size:m})=>{const v=e.fn.variant({variant:"filled",color:"red"}).background,b=h==="default"||h==="filled"?{minHeight:Vt({size:m,sizes:Yo}),paddingLeft:`calc(${Vt({size:m,sizes:Yo})} / 3)`,paddingRight:s?o||Vt({size:m,sizes:Yo}):`calc(${Vt({size:m,sizes:Yo})} / 3)`,borderRadius:e.fn.radius(n)}:h==="unstyled"&&s?{paddingRight:o||Vt({size:m,sizes:Yo})}:null;return{wrapper:{position:"relative",marginTop:d?`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:G0(cp(cp(G0(cp({},e.fn.fontStyles()),{height:t?h==="unstyled"?void 0:"auto":Vt({size:m,sizes:Yo}),WebkitTapHighlightColor:"transparent",lineHeight:t?e.lineHeight:`calc(${Vt({size:m,sizes:Yo})} - ${Ue(2)})`,appearance:"none",resize:"none",boxSizing:"border-box",fontSize:Vt({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}),yQ({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 a=="number"?Ue(a):Vt({size:m,sizes:Yo})},"&::placeholder":G0(cp({},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:a?Ue(a):Vt({size:m,sizes:Yo}),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||Vt({size:m,sizes:Yo})}}});const wQ=xQ;var SQ=Object.defineProperty,CQ=Object.defineProperties,kQ=Object.getOwnPropertyDescriptors,Dh=Object.getOwnPropertySymbols,pE=Object.prototype.hasOwnProperty,hE=Object.prototype.propertyIsEnumerable,T4=(e,t,n)=>t in e?SQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,up=(e,t)=>{for(var n in t||(t={}))pE.call(t,n)&&T4(e,n,t[n]);if(Dh)for(var n of Dh(t))hE.call(t,n)&&T4(e,n,t[n]);return e},N4=(e,t)=>CQ(e,kQ(t)),_Q=(e,t)=>{var n={};for(var r in e)pE.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&&hE.call(e,r)&&(n[r]=e[r]);return n};const PQ={size:"sm",variant:"default"},bl=f.forwardRef((e,t)=>{const n=Sr("Input",PQ,e),{className:r,error:o,required:s,disabled:a,variant:c,icon:d,style:p,rightSectionWidth:h,iconWidth:m,rightSection:v,rightSectionProps:b,radius:w,size:y,wrapperProps:S,classNames:k,styles:_,__staticSelector:I,multiline:P,sx:E,unstyled:O,pointer:R}=n,M=_Q(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:T,describedBy:$}=qY(),{classes:Q,cx:B}=wQ({radius:w,multiline:P,invalid:!!o,rightSectionWidth:h?Ue(h):void 0,iconWidth:m,withRightSection:!!v,offsetBottom:A,offsetTop:T,pointer:R},{classNames:k,styles:_,name:["Input",I],unstyled:O,variant:c,size:y}),{systemStyles:V,rest:q}=Mm(M);return H.createElement(jo,up(up({className:B(Q.wrapper,r),sx:E,style:p},V),S),d&&H.createElement("div",{className:Q.icon},d),H.createElement(jo,N4(up({component:"input"},q),{ref:t,required:s,"aria-invalid":!!o,"aria-describedby":$,disabled:a,"data-disabled":a||void 0,"data-with-icon":!!d||void 0,"data-invalid":!!o||void 0,className:Q.input})),v&&H.createElement("div",N4(up({},b),{className:Q.rightSection}),v))});bl.displayName="@mantine/core/Input";bl.Wrapper=cE;bl.Label=Cy;bl.Description=_y;bl.Error=ky;bl.Placeholder=fE;const jc=bl;var jQ=Object.defineProperty,Ah=Object.getOwnPropertySymbols,mE=Object.prototype.hasOwnProperty,gE=Object.prototype.propertyIsEnumerable,$4=(e,t,n)=>t in e?jQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,z4=(e,t)=>{for(var n in t||(t={}))mE.call(t,n)&&$4(e,n,t[n]);if(Ah)for(var n of Ah(t))gE.call(t,n)&&$4(e,n,t[n]);return e},IQ=(e,t)=>{var n={};for(var r in e)mE.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&&gE.call(e,r)&&(n[r]=e[r]);return n};const EQ={multiple:!1},vE=f.forwardRef((e,t)=>{const n=Sr("FileButton",EQ,e),{onChange:r,children:o,multiple:s,accept:a,name:c,form:d,resetRef:p,disabled:h,capture:m,inputProps:v}=n,b=IQ(n,["onChange","children","multiple","accept","name","form","resetRef","disabled","capture","inputProps"]),w=f.useRef(),y=()=>{!h&&w.current.click()},S=_=>{r(s?Array.from(_.currentTarget.files):_.currentTarget.files[0]||null)};return Sj(p,()=>{w.current.value=""}),H.createElement(H.Fragment,null,o(z4({onClick:y},b)),H.createElement("input",z4({style:{display:"none"},type:"file",accept:a,multiple:s,onChange:S,ref:Td(t,w),name:c,form:d,capture:m},v)))});vE.displayName="@mantine/core/FileButton";const bE={xs:Ue(16),sm:Ue(22),md:Ue(26),lg:Ue(30),xl:Ue(36)},OQ={xs:Ue(10),sm:Ue(12),md:Ue(14),lg:Ue(16),xl:Ue(18)};var RQ=so((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:Vt({size:o,sizes:bE}),paddingLeft:`calc(${Vt({size:o,sizes:e.spacing})} / 1.5)`,paddingRight:t||r?Vt({size:o,sizes:e.spacing}):0,fontWeight:500,fontSize:Vt({size:o,sizes:OQ}),borderRadius:Vt({size:n,sizes:e.radius}),cursor:t?"not-allowed":"default",userSelect:"none",maxWidth:`calc(100% - ${Ue(10)})`},defaultValueRemove:{color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],marginLeft:`calc(${Vt({size:o,sizes:e.spacing})} / 6)`},defaultValueLabel:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}));const MQ=RQ;var DQ=Object.defineProperty,Th=Object.getOwnPropertySymbols,yE=Object.prototype.hasOwnProperty,xE=Object.prototype.propertyIsEnumerable,L4=(e,t,n)=>t in e?DQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,AQ=(e,t)=>{for(var n in t||(t={}))yE.call(t,n)&&L4(e,n,t[n]);if(Th)for(var n of Th(t))xE.call(t,n)&&L4(e,n,t[n]);return e},TQ=(e,t)=>{var n={};for(var r in e)yE.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&&xE.call(e,r)&&(n[r]=e[r]);return n};const NQ={xs:16,sm:22,md:24,lg:26,xl:30};function wE(e){var t=e,{label:n,classNames:r,styles:o,className:s,onRemove:a,disabled:c,readOnly:d,size:p,radius:h="sm",variant:m,unstyled:v}=t,b=TQ(t,["label","classNames","styles","className","onRemove","disabled","readOnly","size","radius","variant","unstyled"]);const{classes:w,cx:y}=MQ({disabled:c,readOnly:d,radius:h},{name:"MultiSelect",classNames:r,styles:o,unstyled:v,size:p,variant:m});return H.createElement("div",AQ({className:y(w.defaultValue,s)},b),H.createElement("span",{className:w.defaultValueLabel},n),!c&&!d&&H.createElement(tI,{"aria-hidden":!0,onMouseDown:a,size:NQ[p],radius:2,color:"blue",variant:"transparent",iconSize:"70%",className:w.defaultValueRemove,tabIndex:-1,unstyled:v}))}wE.displayName="@mantine/core/MultiSelect/DefaultValue";function $Q({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,disableSelectedItemFiltering:a}){if(!t&&s.length===0)return e;if(!t){const d=[];for(let p=0;ph===e[p].value&&!e[p].disabled))&&d.push(e[p]);return d}const c=[];for(let d=0;dp===e[d].value&&!e[d].disabled),e[d])&&c.push(e[d]),!(c.length>=n));d+=1);return c}var zQ=Object.defineProperty,Nh=Object.getOwnPropertySymbols,SE=Object.prototype.hasOwnProperty,CE=Object.prototype.propertyIsEnumerable,B4=(e,t,n)=>t in e?zQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,F4=(e,t)=>{for(var n in t||(t={}))SE.call(t,n)&&B4(e,n,t[n]);if(Nh)for(var n of Nh(t))CE.call(t,n)&&B4(e,n,t[n]);return e},LQ=(e,t)=>{var n={};for(var r in e)SE.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&&CE.call(e,r)&&(n[r]=e[r]);return n};const BQ={xs:Ue(14),sm:Ue(18),md:Ue(20),lg:Ue(24),xl:Ue(28)};function FQ(e){var t=e,{size:n,error:r,style:o}=t,s=LQ(t,["size","error","style"]);const a=Fa(),c=Vt({size:n,sizes:BQ});return H.createElement("svg",F4({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:F4({color:r?a.colors.red[6]:a.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 HQ=Object.defineProperty,WQ=Object.defineProperties,VQ=Object.getOwnPropertyDescriptors,H4=Object.getOwnPropertySymbols,UQ=Object.prototype.hasOwnProperty,GQ=Object.prototype.propertyIsEnumerable,W4=(e,t,n)=>t in e?HQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qQ=(e,t)=>{for(var n in t||(t={}))UQ.call(t,n)&&W4(e,n,t[n]);if(H4)for(var n of H4(t))GQ.call(t,n)&&W4(e,n,t[n]);return e},KQ=(e,t)=>WQ(e,VQ(t));function kE({shouldClear:e,clearButtonProps:t,onClear:n,size:r,error:o}){return e?H.createElement(tI,KQ(qQ({},t),{variant:"transparent",onClick:n,size:r,onMouseDown:s=>s.preventDefault()})):H.createElement(FQ,{error:o,size:r})}kE.displayName="@mantine/core/SelectRightSection";var XQ=Object.defineProperty,YQ=Object.defineProperties,QQ=Object.getOwnPropertyDescriptors,$h=Object.getOwnPropertySymbols,_E=Object.prototype.hasOwnProperty,PE=Object.prototype.propertyIsEnumerable,V4=(e,t,n)=>t in e?XQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q0=(e,t)=>{for(var n in t||(t={}))_E.call(t,n)&&V4(e,n,t[n]);if($h)for(var n of $h(t))PE.call(t,n)&&V4(e,n,t[n]);return e},U4=(e,t)=>YQ(e,QQ(t)),JQ=(e,t)=>{var n={};for(var r in e)_E.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&&PE.call(e,r)&&(n[r]=e[r]);return n};function jE(e){var t=e,{styles:n,rightSection:r,rightSectionWidth:o,theme:s}=t,a=JQ(t,["styles","rightSection","rightSectionWidth","theme"]);if(r)return{rightSection:r,rightSectionWidth:o,styles:n};const c=typeof n=="function"?n(s):n;return{rightSection:!a.readOnly&&!(a.disabled&&a.shouldClear)&&H.createElement(kE,q0({},a)),styles:U4(q0({},c),{rightSection:U4(q0({},c==null?void 0:c.rightSection),{pointerEvents:a.shouldClear?void 0:"none"})})}}var ZQ=Object.defineProperty,eJ=Object.defineProperties,tJ=Object.getOwnPropertyDescriptors,G4=Object.getOwnPropertySymbols,nJ=Object.prototype.hasOwnProperty,rJ=Object.prototype.propertyIsEnumerable,q4=(e,t,n)=>t in e?ZQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,oJ=(e,t)=>{for(var n in t||(t={}))nJ.call(t,n)&&q4(e,n,t[n]);if(G4)for(var n of G4(t))rJ.call(t,n)&&q4(e,n,t[n]);return e},sJ=(e,t)=>eJ(e,tJ(t)),aJ=so((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(${Vt({size:n,sizes:Yo})} - ${Ue(2)})`,display:"flex",alignItems:"center",flexWrap:"wrap",marginLeft:`calc(-${e.spacing.xs} / 2)`,boxSizing:"border-box","&[data-clearable]":{marginRight:Vt({size:n,sizes:Yo})}},value:{margin:`calc(${e.spacing.xs} / 2 - ${Ue(2)}) calc(${e.spacing.xs} / 2)`},searchInput:sJ(oJ({},e.fn.fontStyles()),{flex:1,minWidth:Ue(60),backgroundColor:"transparent",border:0,outline:0,fontSize:Vt({size:n,sizes:e.fontSizes}),padding:0,marginLeft:`calc(${e.spacing.xs} / 2)`,appearance:"none",color:"inherit",maxHeight:Vt({size:n,sizes:bE}),"&::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 iJ=aJ;var lJ=Object.defineProperty,cJ=Object.defineProperties,uJ=Object.getOwnPropertyDescriptors,zh=Object.getOwnPropertySymbols,IE=Object.prototype.hasOwnProperty,EE=Object.prototype.propertyIsEnumerable,K4=(e,t,n)=>t in e?lJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Wl=(e,t)=>{for(var n in t||(t={}))IE.call(t,n)&&K4(e,n,t[n]);if(zh)for(var n of zh(t))EE.call(t,n)&&K4(e,n,t[n]);return e},X4=(e,t)=>cJ(e,uJ(t)),dJ=(e,t)=>{var n={};for(var r in e)IE.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&&EE.call(e,r)&&(n[r]=e[r]);return n};function fJ(e,t,n){return t?!1:n.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function pJ(e,t){return!!e&&!t.some(n=>n.value.toLowerCase()===e.toLowerCase())}function Y4(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 hJ={size:"sm",valueComponent:wE,itemComponent:gy,transitionProps:{transition:"fade",duration:0},maxDropdownHeight:220,shadow:"sm",searchable:!1,filter:fJ,limit:1/0,clearSearchOnChange:!0,clearable:!1,clearSearchOnBlur:!1,disabled:!1,initiallyOpened:!1,creatable:!1,shouldCreate:pJ,switchDirectionOnFlip:!1,zIndex:fy("popover"),selectOnBlur:!1,positionDependencies:[],dropdownPosition:"flip"},OE=f.forwardRef((e,t)=>{const n=Sr("MultiSelect",hJ,e),{className:r,style:o,required:s,label:a,description:c,size:d,error:p,classNames:h,styles:m,wrapperProps:v,value:b,defaultValue:w,data:y,onChange:S,valueComponent:k,itemComponent:_,id:I,transitionProps:P,maxDropdownHeight:E,shadow:O,nothingFound:R,onFocus:M,onBlur:A,searchable:T,placeholder:$,filter:Q,limit:B,clearSearchOnChange:V,clearable:q,clearSearchOnBlur:G,variant:D,onSearchChange:L,searchValue:W,disabled:Y,initiallyOpened:ae,radius:ye,icon:ce,rightSection:X,rightSectionWidth:K,creatable:U,getCreateLabel:se,shouldCreate:re,onCreate:oe,sx:pe,dropdownComponent:ie,onDropdownClose:ge,onDropdownOpen:ke,maxSelectedValues:xe,withinPortal:de,portalProps:Te,switchDirectionOnFlip:Oe,zIndex:$e,selectOnBlur:kt,name:ct,dropdownPosition:on,errorProps:vt,labelProps:bt,descriptionProps:Se,form:Me,positionDependencies:Pt,onKeyDown:Tt,unstyled:we,inputContainer:ht,inputWrapperOrder:$t,readOnly:zt,withAsterisk:ze,clearButtonProps:qe,hoverOnSearchChange:Pn,disableSelectedItemFiltering:Pe}=n,Ze=dJ(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:dt,theme:Lt}=iJ({invalid:!!p},{name:"MultiSelect",classNames:h,styles:m,unstyled:we,size:d,variant:D}),{systemStyles:lr,rest:pn}=Mm(Ze),ln=f.useRef(),Hr=f.useRef({}),yr=hy(I),[Fn,Hn]=f.useState(ae),[Wn,Nr]=f.useState(-1),[Mo,Wr]=f.useState("column"),[Vr,fs]=od({value:W,defaultValue:"",finalValue:void 0,onChange:L}),[$r,$s]=f.useState(!1),{scrollIntoView:ps,targetRef:da,scrollableRef:zs}=kj({duration:0,offset:5,cancelable:!1,isList:!0}),J=U&&typeof se=="function";let ee=null;const he=y.map(Be=>typeof Be=="string"?{label:Be,value:Be}:Be),_e=pj({data:he}),[me,ut]=od({value:Y4(b,y),defaultValue:Y4(w,y),finalValue:[],onChange:S}),st=f.useRef(!!xe&&xe{if(!zt){const yt=me.filter(Mt=>Mt!==Be);ut(yt),xe&&yt.length{fs(Be.currentTarget.value),!Y&&!st.current&&T&&Hn(!0)},xt=Be=>{typeof M=="function"&&M(Be),!Y&&!st.current&&T&&Hn(!0)},He=$Q({data:_e,searchable:T,searchValue:Vr,limit:B,filter:Q,value:me,disableSelectedItemFiltering:Pe});J&&re(Vr,_e)&&(ee=se(Vr),He.push({label:Vr,value:Vr,creatable:!0}));const Ce=Math.min(Wn,He.length-1),Je=(Be,yt,Mt)=>{let Wt=Be;for(;Mt(Wt);)if(Wt=yt(Wt),!He[Wt].disabled)return Wt;return Be};Ps(()=>{Nr(Pn&&Vr?0:-1)},[Vr,Pn]),Ps(()=>{!Y&&me.length>y.length&&Hn(!1),xe&&me.length=xe&&(st.current=!0,Hn(!1))},[me]);const jt=Be=>{if(!zt)if(V&&fs(""),me.includes(Be.value))Ht(Be.value);else{if(Be.creatable&&typeof oe=="function"){const yt=oe(Be.value);typeof yt<"u"&&yt!==null&&ut(typeof yt=="string"?[...me,yt]:[...me,yt.value])}else ut([...me,Be.value]);me.length===xe-1&&(st.current=!0,Hn(!1)),He.length===1&&Hn(!1)}},Et=Be=>{typeof A=="function"&&A(Be),kt&&He[Ce]&&Fn&&jt(He[Ce]),G&&fs(""),Hn(!1)},Nt=Be=>{if($r||(Tt==null||Tt(Be),zt)||Be.key!=="Backspace"&&xe&&st.current)return;const yt=Mo==="column",Mt=()=>{Nr(jn=>{var Gt;const un=Je(jn,sn=>sn+1,sn=>sn{Nr(jn=>{var Gt;const un=Je(jn,sn=>sn-1,sn=>sn>0);return Fn&&(da.current=Hr.current[(Gt=He[un])==null?void 0:Gt.value],ps({alignment:yt?"start":"end"})),un})};switch(Be.key){case"ArrowUp":{Be.preventDefault(),Hn(!0),yt?Wt():Mt();break}case"ArrowDown":{Be.preventDefault(),Hn(!0),yt?Mt():Wt();break}case"Enter":{Be.preventDefault(),He[Ce]&&Fn?jt(He[Ce]):Hn(!0);break}case" ":{T||(Be.preventDefault(),He[Ce]&&Fn?jt(He[Ce]):Hn(!0));break}case"Backspace":{me.length>0&&Vr.length===0&&(ut(me.slice(0,-1)),Hn(!0),xe&&(st.current=!1));break}case"Home":{if(!T){Be.preventDefault(),Fn||Hn(!0);const jn=He.findIndex(Gt=>!Gt.disabled);Nr(jn),ps({alignment:yt?"end":"start"})}break}case"End":{if(!T){Be.preventDefault(),Fn||Hn(!0);const jn=He.map(Gt=>!!Gt.disabled).lastIndexOf(!1);Nr(jn),ps({alignment:yt?"end":"start"})}break}case"Escape":Hn(!1)}},qt=me.map(Be=>{let yt=_e.find(Mt=>Mt.value===Be&&!Mt.disabled);return!yt&&J&&(yt={value:Be,label:Be}),yt}).filter(Be=>!!Be).map((Be,yt)=>H.createElement(k,X4(Wl({},Be),{variant:D,disabled:Y,className:Qe.value,readOnly:zt,onRemove:Mt=>{Mt.preventDefault(),Mt.stopPropagation(),Ht(Be.value)},key:Be.value,size:d,styles:m,classNames:h,radius:ye,index:yt}))),tn=Be=>me.includes(Be),Zt=()=>{var Be;fs(""),ut([]),(Be=ln.current)==null||Be.focus(),xe&&(st.current=!1)},Ut=!zt&&(He.length>0?Fn:Fn&&!!R);return Ps(()=>{const Be=Ut?ke:ge;typeof Be=="function"&&Be()},[Ut]),H.createElement(jc.Wrapper,Wl(Wl({required:s,id:yr,label:a,error:p,description:c,size:d,className:r,style:o,classNames:h,styles:m,__staticSelector:"MultiSelect",sx:pe,errorProps:vt,descriptionProps:Se,labelProps:bt,inputContainer:ht,inputWrapperOrder:$t,unstyled:we,withAsterisk:ze,variant:D},lr),v),H.createElement(hi,{opened:Ut,transitionProps:P,shadow:"sm",withinPortal:de,portalProps:Te,__staticSelector:"MultiSelect",onDirectionChange:Wr,switchDirectionOnFlip:Oe,zIndex:$e,dropdownPosition:on,positionDependencies:[...Pt,Vr],classNames:h,styles:m,unstyled:we,variant:D},H.createElement(hi.Target,null,H.createElement("div",{className:Qe.wrapper,role:"combobox","aria-haspopup":"listbox","aria-owns":Fn&&Ut?`${yr}-items`:null,"aria-controls":yr,"aria-expanded":Fn,onMouseLeave:()=>Nr(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:ct,value:me.join(","),form:Me,disabled:Y}),H.createElement(jc,Wl({__staticSelector:"MultiSelect",style:{overflow:"hidden"},component:"div",multiline:!0,size:d,variant:D,disabled:Y,error:p,required:s,radius:ye,icon:ce,unstyled:we,onMouseDown:Be=>{var yt;Be.preventDefault(),!Y&&!st.current&&Hn(!Fn),(yt=ln.current)==null||yt.focus()},classNames:X4(Wl({},h),{input:dt({[Qe.input]:!T},h==null?void 0:h.input)})},jE({theme:Lt,rightSection:X,rightSectionWidth:K,styles:m,size:d,shouldClear:q&&me.length>0,onClear:Zt,error:p,disabled:Y,clearButtonProps:qe,readOnly:zt})),H.createElement("div",{className:Qe.values,"data-clearable":q||void 0},qt,H.createElement("input",Wl({ref:Td(t,ln),type:"search",id:yr,className:dt(Qe.searchInput,{[Qe.searchInputPointer]:!T,[Qe.searchInputInputHidden]:!Fn&&me.length>0||!T&&me.length>0,[Qe.searchInputEmpty]:me.length===0}),onKeyDown:Nt,value:Vr,onChange:ft,onFocus:xt,onBlur:Et,readOnly:!T||st.current||zt,placeholder:me.length===0?$:void 0,disabled:Y,"data-mantine-stop-propagation":Fn,autoComplete:"off",onCompositionStart:()=>$s(!0),onCompositionEnd:()=>$s(!1)},pn)))))),H.createElement(hi.Dropdown,{component:ie||Nm,maxHeight:E,direction:Mo,id:yr,innerRef:zs,__staticSelector:"MultiSelect",classNames:h,styles:m},H.createElement(my,{data:He,hovered:Ce,classNames:h,styles:m,uuid:yr,__staticSelector:"MultiSelect",onItemHover:Nr,onItemSelect:jt,itemsRefs:Hr,itemComponent:_,size:d,nothingFound:R,isItemSelected:tn,creatable:U&&!!ee,createLabel:ee,unstyled:we,variant:D}))))});OE.displayName="@mantine/core/MultiSelect";var mJ=Object.defineProperty,gJ=Object.defineProperties,vJ=Object.getOwnPropertyDescriptors,Lh=Object.getOwnPropertySymbols,RE=Object.prototype.hasOwnProperty,ME=Object.prototype.propertyIsEnumerable,Q4=(e,t,n)=>t in e?mJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,K0=(e,t)=>{for(var n in t||(t={}))RE.call(t,n)&&Q4(e,n,t[n]);if(Lh)for(var n of Lh(t))ME.call(t,n)&&Q4(e,n,t[n]);return e},bJ=(e,t)=>gJ(e,vJ(t)),yJ=(e,t)=>{var n={};for(var r in e)RE.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&&ME.call(e,r)&&(n[r]=e[r]);return n};const xJ={type:"text",size:"sm",__staticSelector:"TextInput"},DE=f.forwardRef((e,t)=>{const n=ZI("TextInput",xJ,e),{inputProps:r,wrapperProps:o}=n,s=yJ(n,["inputProps","wrapperProps"]);return H.createElement(jc.Wrapper,K0({},o),H.createElement(jc,bJ(K0(K0({},r),s),{ref:t})))});DE.displayName="@mantine/core/TextInput";function wJ({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,filterDataOnExactSearchMatch:a}){if(!t)return e;const c=s!=null&&e.find(p=>p.value===s)||null;if(c&&!a&&(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 d=[];for(let p=0;p=n));p+=1);return d}var SJ=so(()=>({input:{"&:not(:disabled)":{cursor:"pointer","&::selection":{backgroundColor:"transparent"}}}}));const CJ=SJ;var kJ=Object.defineProperty,_J=Object.defineProperties,PJ=Object.getOwnPropertyDescriptors,Bh=Object.getOwnPropertySymbols,AE=Object.prototype.hasOwnProperty,TE=Object.prototype.propertyIsEnumerable,J4=(e,t,n)=>t in e?kJ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,bu=(e,t)=>{for(var n in t||(t={}))AE.call(t,n)&&J4(e,n,t[n]);if(Bh)for(var n of Bh(t))TE.call(t,n)&&J4(e,n,t[n]);return e},X0=(e,t)=>_J(e,PJ(t)),jJ=(e,t)=>{var n={};for(var r in e)AE.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&&TE.call(e,r)&&(n[r]=e[r]);return n};function IJ(e,t){return t.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function EJ(e,t){return!!e&&!t.some(n=>n.label.toLowerCase()===e.toLowerCase())}const OJ={required:!1,size:"sm",shadow:"sm",itemComponent:gy,transitionProps:{transition:"fade",duration:0},initiallyOpened:!1,filter:IJ,maxDropdownHeight:220,searchable:!1,clearable:!1,limit:1/0,disabled:!1,creatable:!1,shouldCreate:EJ,selectOnBlur:!1,switchDirectionOnFlip:!1,filterDataOnExactSearchMatch:!1,zIndex:fy("popover"),positionDependencies:[],dropdownPosition:"flip"},Py=f.forwardRef((e,t)=>{const n=ZI("Select",OJ,e),{inputProps:r,wrapperProps:o,shadow:s,data:a,value:c,defaultValue:d,onChange:p,itemComponent:h,onKeyDown:m,onBlur:v,onFocus:b,transitionProps:w,initiallyOpened:y,unstyled:S,classNames:k,styles:_,filter:I,maxDropdownHeight:P,searchable:E,clearable:O,nothingFound:R,limit:M,disabled:A,onSearchChange:T,searchValue:$,rightSection:Q,rightSectionWidth:B,creatable:V,getCreateLabel:q,shouldCreate:G,selectOnBlur:D,onCreate:L,dropdownComponent:W,onDropdownClose:Y,onDropdownOpen:ae,withinPortal:ye,portalProps:ce,switchDirectionOnFlip:X,zIndex:K,name:U,dropdownPosition:se,allowDeselect:re,placeholder:oe,filterDataOnExactSearchMatch:pe,form:ie,positionDependencies:ge,readOnly:ke,clearButtonProps:xe,hoverOnSearchChange:de}=n,Te=jJ(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:Oe,cx:$e,theme:kt}=CJ(),[ct,on]=f.useState(y),[vt,bt]=f.useState(-1),Se=f.useRef(),Me=f.useRef({}),[Pt,Tt]=f.useState("column"),we=Pt==="column",{scrollIntoView:ht,targetRef:$t,scrollableRef:zt}=kj({duration:0,offset:5,cancelable:!1,isList:!0}),ze=re===void 0?O:re,qe=ee=>{if(ct!==ee){on(ee);const he=ee?ae:Y;typeof he=="function"&&he()}},Pn=V&&typeof q=="function";let Pe=null;const Ze=a.map(ee=>typeof ee=="string"?{label:ee,value:ee}:ee),Qe=pj({data:Ze}),[dt,Lt,lr]=od({value:c,defaultValue:d,finalValue:null,onChange:p}),pn=Qe.find(ee=>ee.value===dt),[ln,Hr]=od({value:$,defaultValue:(pn==null?void 0:pn.label)||"",finalValue:void 0,onChange:T}),yr=ee=>{Hr(ee),E&&typeof T=="function"&&T(ee)},Fn=()=>{var ee;ke||(Lt(null),lr||yr(""),(ee=Se.current)==null||ee.focus())};f.useEffect(()=>{const ee=Qe.find(he=>he.value===dt);ee?yr(ee.label):(!Pn||!dt)&&yr("")},[dt]),f.useEffect(()=>{pn&&(!E||!ct)&&yr(pn.label)},[pn==null?void 0:pn.label]);const Hn=ee=>{if(!ke)if(ze&&(pn==null?void 0:pn.value)===ee.value)Lt(null),qe(!1);else{if(ee.creatable&&typeof L=="function"){const he=L(ee.value);typeof he<"u"&&he!==null&&Lt(typeof he=="string"?he:he.value)}else Lt(ee.value);lr||yr(ee.label),bt(-1),qe(!1),Se.current.focus()}},Wn=wJ({data:Qe,searchable:E,limit:M,searchValue:ln,filter:I,filterDataOnExactSearchMatch:pe,value:dt});Pn&&G(ln,Wn)&&(Pe=q(ln),Wn.push({label:ln,value:ln,creatable:!0}));const Nr=(ee,he,_e)=>{let me=ee;for(;_e(me);)if(me=he(me),!Wn[me].disabled)return me;return ee};Ps(()=>{bt(de&&ln?0:-1)},[ln,de]);const Mo=dt?Wn.findIndex(ee=>ee.value===dt):0,Wr=!ke&&(Wn.length>0?ct:ct&&!!R),Vr=()=>{bt(ee=>{var he;const _e=Nr(ee,me=>me-1,me=>me>0);return $t.current=Me.current[(he=Wn[_e])==null?void 0:he.value],Wr&&ht({alignment:we?"start":"end"}),_e})},fs=()=>{bt(ee=>{var he;const _e=Nr(ee,me=>me+1,me=>mewindow.setTimeout(()=>{var ee;$t.current=Me.current[(ee=Wn[Mo])==null?void 0:ee.value],ht({alignment:we?"end":"start"})},50);Ps(()=>{Wr&&$r()},[Wr]);const $s=ee=>{switch(typeof m=="function"&&m(ee),ee.key){case"ArrowUp":{ee.preventDefault(),ct?we?Vr():fs():(bt(Mo),qe(!0),$r());break}case"ArrowDown":{ee.preventDefault(),ct?we?fs():Vr():(bt(Mo),qe(!0),$r());break}case"Home":{if(!E){ee.preventDefault(),ct||qe(!0);const he=Wn.findIndex(_e=>!_e.disabled);bt(he),Wr&&ht({alignment:we?"end":"start"})}break}case"End":{if(!E){ee.preventDefault(),ct||qe(!0);const he=Wn.map(_e=>!!_e.disabled).lastIndexOf(!1);bt(he),Wr&&ht({alignment:we?"end":"start"})}break}case"Escape":{ee.preventDefault(),qe(!1),bt(-1);break}case" ":{E||(ee.preventDefault(),Wn[vt]&&ct?Hn(Wn[vt]):(qe(!0),bt(Mo),$r()));break}case"Enter":E||ee.preventDefault(),Wn[vt]&&ct&&(ee.preventDefault(),Hn(Wn[vt]))}},ps=ee=>{typeof v=="function"&&v(ee);const he=Qe.find(_e=>_e.value===dt);D&&Wn[vt]&&ct&&Hn(Wn[vt]),yr((he==null?void 0:he.label)||""),qe(!1)},da=ee=>{typeof b=="function"&&b(ee),E&&qe(!0)},zs=ee=>{ke||(yr(ee.currentTarget.value),O&&ee.currentTarget.value===""&&Lt(null),bt(-1),qe(!0))},J=()=>{ke||(qe(!ct),dt&&!ct&&bt(Mo))};return H.createElement(jc.Wrapper,X0(bu({},o),{__staticSelector:"Select"}),H.createElement(hi,{opened:Wr,transitionProps:w,shadow:s,withinPortal:ye,portalProps:ce,__staticSelector:"Select",onDirectionChange:Tt,switchDirectionOnFlip:X,zIndex:K,dropdownPosition:se,positionDependencies:[...ge,ln],classNames:k,styles:_,unstyled:S,variant:r.variant},H.createElement(hi.Target,null,H.createElement("div",{role:"combobox","aria-haspopup":"listbox","aria-owns":Wr?`${r.id}-items`:null,"aria-controls":r.id,"aria-expanded":Wr,onMouseLeave:()=>bt(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:U,value:dt||"",form:ie,disabled:A}),H.createElement(jc,bu(X0(bu(bu({autoComplete:"off",type:"search"},r),Te),{ref:Td(t,Se),onKeyDown:$s,__staticSelector:"Select",value:ln,placeholder:oe,onChange:zs,"aria-autocomplete":"list","aria-controls":Wr?`${r.id}-items`:null,"aria-activedescendant":vt>=0?`${r.id}-${vt}`:null,onMouseDown:J,onBlur:ps,onFocus:da,readOnly:!E||ke,disabled:A,"data-mantine-stop-propagation":Wr,name:null,classNames:X0(bu({},k),{input:$e({[Oe.input]:!E},k==null?void 0:k.input)})}),jE({theme:kt,rightSection:Q,rightSectionWidth:B,styles:_,size:r.size,shouldClear:O&&!!pn,onClear:Fn,error:o.error,clearButtonProps:xe,disabled:A,readOnly:ke}))))),H.createElement(hi.Dropdown,{component:W||Nm,maxHeight:P,direction:Pt,id:r.id,innerRef:zt,__staticSelector:"Select",classNames:k,styles:_},H.createElement(my,{data:Wn,hovered:vt,classNames:k,styles:_,isItemSelected:ee=>ee===dt,uuid:r.id,__staticSelector:"Select",onItemHover:bt,onItemSelect:Hn,itemsRefs:Me,itemComponent:h,size:r.size,nothingFound:R,creatable:Pn&&!!Pe,createLabel:Pe,"aria-label":o.label,unstyled:S,variant:r.variant}))))});Py.displayName="@mantine/core/Select";const jy=()=>{const[e,t,n,r,o,s,a,c,d,p,h,m,v,b,w,y,S,k,_,I,P,E,O,R,M,A,T,$,Q,B,V,q,G,D,L,W,Y,ae]=Ac("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"]);return{base50:e,base100:t,base150:n,base200:r,base250:o,base300:s,base350:a,base400:c,base450:d,base500:p,base550:h,base600:m,base650:v,base700:b,base750:w,base800:y,base850:S,base900:k,base950:_,accent50:I,accent100:P,accent150:E,accent200:O,accent250:R,accent300:M,accent350:A,accent400:T,accent450:$,accent500:Q,accent550:B,accent600:V,accent650:q,accent700:G,accent750:D,accent800:L,accent850:W,accent900:Y,accent950:ae}},NE=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:a,base700:c,base800:d,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:w}=jy(),{colorMode:y}=Ds(),[S]=Ac("shadows",["dark-lg"]);return f.useCallback(()=>({label:{color:Fe(c,r)(y)},separatorLabel:{color:Fe(s,s)(y),"::after":{borderTopColor:Fe(r,c)(y)}},input:{backgroundColor:Fe(e,p)(y),borderWidth:"2px",borderColor:Fe(n,d)(y),color:Fe(p,t)(y),paddingRight:24,fontWeight:600,"&:hover":{borderColor:Fe(r,a)(y)},"&:focus":{borderColor:Fe(m,w)(y)},"&:is(:focus, :hover)":{borderColor:Fe(o,s)(y)},"&:focus-within":{borderColor:Fe(h,w)(y)},"&[data-disabled]":{backgroundColor:Fe(r,c)(y),color:Fe(a,o)(y),cursor:"not-allowed"}},value:{backgroundColor:Fe(t,p)(y),color:Fe(p,t)(y),button:{color:Fe(p,t)(y)},"&:hover":{backgroundColor:Fe(r,c)(y),cursor:"pointer"}},dropdown:{backgroundColor:Fe(n,d)(y),borderColor:Fe(n,d)(y),boxShadow:S},item:{backgroundColor:Fe(n,d)(y),color:Fe(d,n)(y),padding:6,"&[data-hovered]":{color:Fe(p,t)(y),backgroundColor:Fe(r,c)(y)},"&[data-active]":{backgroundColor:Fe(r,c)(y),"&:hover":{color:Fe(p,t)(y),backgroundColor:Fe(r,c)(y)}},"&[data-selected]":{backgroundColor:Fe(v,w)(y),color:Fe(e,t)(y),fontWeight:600,"&:hover":{backgroundColor:Fe(b,b)(y),color:Fe("white",e)(y)}},"&[data-disabled]":{color:Fe(s,a)(y),cursor:"not-allowed"}},rightSection:{width:32,button:{color:Fe(p,t)(y)}}}),[h,m,v,b,w,t,n,r,o,e,s,a,c,d,p,S,y])},RJ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,onChange:o,label:s,disabled:a,...c}=e,d=te(),[p,h]=f.useState(""),m=f.useCallback(y=>{y.shiftKey&&d(Po(!0))},[d]),v=f.useCallback(y=>{y.shiftKey||d(Po(!1))},[d]),b=f.useCallback(y=>{h(""),o&&o(y)},[o]),w=NE();return i.jsx(wn,{label:n,placement:"top",hasArrow:!0,children:i.jsx(Py,{ref:r,label:s?i.jsx(mo,{isDisabled:a,children:i.jsx(Lo,{children:s})}):void 0,disabled:a,searchValue:p,onSearchChange:h,onChange:b,onKeyDown:m,onKeyUp:v,searchable:t,maxDropdownHeight:300,styles:w,...c})})},sr=f.memo(RJ),$E=f.forwardRef(({label:e,tooltip:t,description:n,disabled:r,...o},s)=>i.jsx(wn,{label:t,placement:"top",hasArrow:!0,openDelay:500,children:i.jsx(Ee,{ref:s,...o,children:i.jsxs(Ee,{children:[i.jsx(Cc,{children:e}),n&&i.jsx(Cc,{size:"xs",color:"base.600",children:n})]})})}));$E.displayName="IAIMantineSelectItemWithTooltip";const Ri=f.memo($E),MJ=fe([Xe],({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},Ge),DJ=()=>{const e=te(),{autoAddBoardId:t}=z(MJ),n=f.useRef(null),{boards:r,hasBoards:o}=Jh(void 0,{selectFromResult:({data:a})=>{const c=[{label:"None",value:"none"}];return a==null||a.forEach(({board_id:d,board_name:p})=>{c.push({label:p,value:d})}),{boards:c,hasBoards:c.length>1}}}),s=f.useCallback(a=>{a&&e(M5(a==="none"?void 0:a))},[e]);return i.jsx(sr,{label:"Auto-Add Board",inputRef:n,autoFocus:!0,placeholder:"Select a Board",value:t,data:r,nothingFound:"No matching Boards",itemComponent:Ri,disabled:!o,filter:(a,c)=>{var d;return((d=c.label)==null?void 0:d.toLowerCase().includes(a.toLowerCase().trim()))||c.value.toLowerCase().includes(a.toLowerCase().trim())},onChange:s})},AJ=fe([Xe],e=>{const{galleryImageMinimumWidth:t,shouldAutoSwitch:n}=e.gallery;return{galleryImageMinimumWidth:t,shouldAutoSwitch:n}},Ge),TJ=()=>{const e=te(),{t}=be(),{galleryImageMinimumWidth:n,shouldAutoSwitch:r}=z(AJ),o=s=>{e(Ep(s))};return i.jsx(gl,{triggerComponent:i.jsx(Le,{tooltip:t("gallery.gallerySettings"),"aria-label":t("gallery.gallerySettings"),size:"sm",icon:i.jsx(Ub,{})}),children:i.jsxs(F,{direction:"column",gap:4,children:[i.jsx(_t,{value:n,onChange:o,min:32,max:256,hideTooltip:!0,label:t("gallery.galleryImageSize"),withReset:!0,handleReset:()=>e(Ep(64))}),i.jsx(Gn,{label:t("gallery.autoSwitchNewImages"),isChecked:r,onChange:s=>e(U7(s.target.checked))}),i.jsx(DJ,{})]})})},NJ=e=>e.image?i.jsx(gm,{sx:{w:`${e.image.width}px`,h:"auto",objectFit:"contain",aspectRatio:`${e.image.width}/${e.image.height}`}}):i.jsx(F,{sx:{opacity:.7,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.200",_dark:{bg:"base.900"}},children:i.jsx(fl,{size:"xl"})}),mi=e=>{const{icon:t=il,boxSize:n=16}=e;return i.jsxs(F,{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:[i.jsx(no,{as:t,boxSize:n,opacity:.7}),e.label&&i.jsx(Ye,{textAlign:"center",children:e.label})]})},Lm=0,Mi=1,Gc=2,zE=4;function $J(e,t){return n=>e(t(n))}function zJ(e,t){return t(e)}function LE(e,t){return n=>e(t,n)}function Z4(e,t){return()=>e(t)}function Iy(e,t){return t(e),e}function yl(...e){return e}function LJ(e){e()}function ek(e){return()=>e}function BJ(...e){return()=>{e.map(LJ)}}function Bm(){}function po(e,t){return e(Mi,t)}function Ar(e,t){e(Lm,t)}function Ey(e){e(Gc)}function Fm(e){return e(zE)}function Un(e,t){return po(e,LE(t,Lm))}function tk(e,t){const n=e(Mi,r=>{n(),t(r)});return n}function wr(){const e=[];return(t,n)=>{switch(t){case Gc:e.splice(0,e.length);return;case Mi:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)};case Lm:e.slice().forEach(r=>{r(n)});return;default:throw new Error(`unrecognized action ${t}`)}}}function Kt(e){let t=e;const n=wr();return(r,o)=>{switch(r){case Mi:o(t);break;case Lm:t=o;break;case zE:return t}return n(r,o)}}function FJ(e){let t,n;const r=()=>t&&t();return function(o,s){switch(o){case Mi:return s?n===s?void 0:(r(),n=s,t=po(e,s),t):(r(),Bm);case Gc:r(),n=null;return;default:throw new Error(`unrecognized action ${o}`)}}}function zu(e){return Iy(wr(),t=>Un(e,t))}function hc(e,t){return Iy(Kt(t),n=>Un(e,n))}function HJ(...e){return t=>e.reduceRight(zJ,t)}function Xt(e,...t){const n=HJ(...t);return(r,o)=>{switch(r){case Mi:return po(e,n(o));case Gc:Ey(e);return}}}function BE(e,t){return e===t}function So(e=BE){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function Kr(e){return t=>n=>{e(n)&&t(n)}}function tr(e){return t=>$J(t,e)}function ai(e){return t=>()=>t(e)}function dp(e,t){return n=>r=>n(t=e(t,r))}function v1(e){return t=>n=>{e>0?e--:t(n)}}function Iu(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function nk(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function Xs(...e){const t=new Array(e.length);let n=0,r=null;const o=Math.pow(2,e.length)-1;return e.forEach((s,a)=>{const c=Math.pow(2,a);po(s,d=>{const p=n;n=n|c,t[a]=d,p!==o&&n===o&&r&&(r(),r=null)})}),s=>a=>{const c=()=>s([a].concat(t));n===o?c():r=c}}function rk(...e){return function(t,n){switch(t){case Mi:return BJ(...e.map(r=>po(r,n)));case Gc:return;default:throw new Error(`unrecognized action ${t}`)}}}function xn(e,t=BE){return Xt(e,So(t))}function Sa(...e){const t=wr(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,a)=>{const c=Math.pow(2,a);po(s,d=>{n[a]=d,r=r|c,r===o&&Ar(t,n)})}),function(s,a){switch(s){case Mi:return r===o&&a(n),po(t,a);case Gc:return Ey(t);default:throw new Error(`unrecognized action ${s}`)}}}function ua(e,t=[],{singleton:n}={singleton:!0}){return{id:WJ(),constructor:e,dependencies:t,singleton:n}}const WJ=()=>Symbol();function VJ(e){const t=new Map,n=({id:r,constructor:o,dependencies:s,singleton:a})=>{if(a&&t.has(r))return t.get(r);const c=o(s.map(d=>n(d)));return a&&t.set(r,c),c};return n(e)}function UJ(e,t){const n={},r={};let o=0;const s=e.length;for(;o(S[k]=_=>{const I=y[t.methods[k]];Ar(I,_)},S),{})}function h(y){return a.reduce((S,k)=>(S[k]=FJ(y[t.events[k]]),S),{})}return{Component:H.forwardRef((y,S)=>{const{children:k,..._}=y,[I]=H.useState(()=>Iy(VJ(e),E=>d(E,_))),[P]=H.useState(Z4(h,I));return fp(()=>{for(const E of a)E in _&&po(P[E],_[E]);return()=>{Object.values(P).map(Ey)}},[_,P,I]),fp(()=>{d(I,_)}),H.useImperativeHandle(S,ek(p(I))),H.createElement(c.Provider,{value:I},n?H.createElement(n,UJ([...r,...o,...a],_),k):k)}),usePublisher:y=>H.useCallback(LE(Ar,H.useContext(c)[y]),[y]),useEmitterValue:y=>{const k=H.useContext(c)[y],[_,I]=H.useState(Z4(Fm,k));return fp(()=>po(k,P=>{P!==_&&I(ek(P))}),[k,_]),_},useEmitter:(y,S)=>{const _=H.useContext(c)[y];fp(()=>po(_,S),[S,_])}}}const qJ=typeof document<"u"?H.useLayoutEffect:H.useEffect,KJ=qJ;var Oy=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Oy||{});const XJ={0:"debug",1:"log",2:"warn",3:"error"},YJ=()=>typeof globalThis>"u"?window:globalThis,FE=ua(()=>{const e=Kt(3);return{log:Kt((n,r,o=1)=>{var s;const a=(s=YJ().VIRTUOSO_LOG_LEVEL)!=null?s:Fm(e);o>=a&&console[XJ[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,r)}),logLevel:e}},[],{singleton:!0});function HE(e,t=!0){const n=H.useRef(null);let r=o=>{};if(typeof ResizeObserver<"u"){const o=H.useMemo(()=>new ResizeObserver(s=>{const a=s[0].target;a.offsetParent!==null&&e(a)}),[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 Hm(e,t=!0){return HE(e,t).callbackRef}function Fh(e,t){return Math.round(e.getBoundingClientRect()[t])}function WE(e,t){return Math.abs(e-t)<1.01}function VE(e,t,n,r=Bm,o){const s=H.useRef(null),a=H.useRef(null),c=H.useRef(null),d=H.useCallback(m=>{const v=m.target,b=v===window||v===document,w=b?window.pageYOffset||document.documentElement.scrollTop:v.scrollTop,y=b?document.documentElement.scrollHeight:v.scrollHeight,S=b?window.innerHeight:v.offsetHeight,k=()=>{e({scrollTop:Math.max(w,0),scrollHeight:y,viewportHeight:S})};m.suppressFlushSync?k():G7.flushSync(k),a.current!==null&&(w===a.current||w<=0||w===y-S)&&(a.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),d({target:m,suppressFlushSync:!0}),m.addEventListener("scroll",d,{passive:!0}),()=>{r(null),m.removeEventListener("scroll",d)}},[s,d,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 w,y,S;v===window?(y=Math.max(Fh(document.documentElement,"height"),document.documentElement.scrollHeight),w=window.innerHeight,S=document.documentElement.scrollTop):(y=v.scrollHeight,w=Fh(v,"height"),S=v.scrollTop);const k=y-w;if(m.top=Math.ceil(Math.max(Math.min(k,m.top),0)),WE(w,y)||m.top===S){e({scrollTop:S,scrollHeight:y,viewportHeight:w}),b&&t(!0);return}b?(a.current=m.top,c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,a.current=null,t(!0)},1e3)):a.current=null,v.scrollTo(m)}function h(m){s.current.scrollBy(m)}return{scrollerRef:s,scrollByCallback:h,scrollToCallback:p}}const Wm=ua(()=>{const e=wr(),t=wr(),n=Kt(0),r=wr(),o=Kt(0),s=wr(),a=wr(),c=Kt(0),d=Kt(0),p=Kt(0),h=Kt(0),m=wr(),v=wr(),b=Kt(!1);return Un(Xt(e,tr(({scrollTop:w})=>w)),t),Un(Xt(e,tr(({scrollHeight:w})=>w)),a),Un(t,o),{scrollContainerState:e,scrollTop:t,viewportHeight:s,headerHeight:c,fixedHeaderHeight:d,fixedFooterHeight:p,footerHeight:h,scrollHeight:a,smoothScrollTargetReached:r,scrollTo:m,scrollBy:v,statefulScrollTop:o,deviation:n,scrollingInProgress:b}},[],{singleton:!0}),QJ=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function JJ(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!QJ)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const Hh="up",Lu="down",ZJ="none",eZ={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},tZ=0,UE=ua(([{scrollContainerState:e,scrollTop:t,viewportHeight:n,headerHeight:r,footerHeight:o,scrollBy:s}])=>{const a=Kt(!1),c=Kt(!0),d=wr(),p=wr(),h=Kt(4),m=Kt(tZ),v=hc(Xt(rk(Xt(xn(t),v1(1),ai(!0)),Xt(xn(t),v1(1),ai(!1),nk(100))),So()),!1),b=hc(Xt(rk(Xt(s,ai(!0)),Xt(s,ai(!1),nk(200))),So()),!1);Un(Xt(Sa(xn(t),xn(m)),tr(([_,I])=>_<=I),So()),c),Un(Xt(c,Iu(50)),p);const w=zu(Xt(Sa(e,xn(n),xn(r),xn(o),xn(h)),dp((_,[{scrollTop:I,scrollHeight:P},E,O,R,M])=>{const A=I+E-P>-M,T={viewportHeight:E,scrollTop:I,scrollHeight:P};if(A){let Q,B;return I>_.state.scrollTop?(Q="SCROLLED_DOWN",B=_.state.scrollTop-I):(Q="SIZE_DECREASED",B=_.state.scrollTop-I||_.scrollTopDelta),{atBottom:!0,state:T,atBottomBecause:Q,scrollTopDelta:B}}let $;return T.scrollHeight>_.state.scrollHeight?$="SIZE_INCREASED":E<_.state.viewportHeight?$="VIEWPORT_HEIGHT_DECREASING":I<_.state.scrollTop?$="SCROLLING_UPWARDS":$="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:$,state:T}},eZ),So((_,I)=>_&&_.atBottom===I.atBottom))),y=hc(Xt(e,dp((_,{scrollTop:I,scrollHeight:P,viewportHeight:E})=>{if(WE(_.scrollHeight,P))return{scrollTop:I,scrollHeight:P,jump:0,changed:!1};{const O=P-(I+E)<1;return _.scrollTop!==I&&O?{scrollHeight:P,scrollTop:I,jump:_.scrollTop-I,changed:!0}:{scrollHeight:P,scrollTop:I,jump:0,changed:!0}}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),Kr(_=>_.changed),tr(_=>_.jump)),0);Un(Xt(w,tr(_=>_.atBottom)),a),Un(Xt(a,Iu(50)),d);const S=Kt(Lu);Un(Xt(e,tr(({scrollTop:_})=>_),So(),dp((_,I)=>Fm(b)?{direction:_.direction,prevScrollTop:I}:{direction:I<_.prevScrollTop?Hh:Lu,prevScrollTop:I},{direction:Lu,prevScrollTop:0}),tr(_=>_.direction)),S),Un(Xt(e,Iu(50),ai(ZJ)),S);const k=Kt(0);return Un(Xt(v,Kr(_=>!_),ai(0)),k),Un(Xt(t,Iu(100),Xs(v),Kr(([_,I])=>!!I),dp(([_,I],[P])=>[I,P],[0,0]),tr(([_,I])=>I-_)),k),{isScrolling:v,isAtTop:c,isAtBottom:a,atBottomState:w,atTopStateChange:p,atBottomStateChange:d,scrollDirection:S,atBottomThreshold:h,atTopThreshold:m,scrollVelocity:k,lastJumpDueToItemResize:y}},yl(Wm)),nZ=ua(([{log:e}])=>{const t=Kt(!1),n=zu(Xt(t,Kr(r=>r),So()));return po(t,r=>{r&&Fm(e)("props updated",{},Oy.DEBUG)}),{propsReady:t,didMount:n}},yl(FE),{singleton:!0});function GE(e,t){e==0?t():requestAnimationFrame(()=>GE(e-1,t))}function rZ(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}function b1(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}function oZ(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}const Wh="top",Vh="bottom",ok="none";function sk(e,t,n){return typeof e=="number"?n===Hh&&t===Wh||n===Lu&&t===Vh?e:0:n===Hh?t===Wh?e.main:e.reverse:t===Vh?e.main:e.reverse}function ak(e,t){return typeof e=="number"?e:e[t]||0}const sZ=ua(([{scrollTop:e,viewportHeight:t,deviation:n,headerHeight:r,fixedHeaderHeight:o}])=>{const s=wr(),a=Kt(0),c=Kt(0),d=Kt(0),p=hc(Xt(Sa(xn(e),xn(t),xn(r),xn(s,b1),xn(d),xn(a),xn(o),xn(n),xn(c)),tr(([h,m,v,[b,w],y,S,k,_,I])=>{const P=h-_,E=S+k,O=Math.max(v-P,0);let R=ok;const M=ak(I,Wh),A=ak(I,Vh);return b-=_,b+=v+k,w+=v+k,w-=_,b>h+E-M&&(R=Hh),wh!=null),So(b1)),[0,0]);return{listBoundary:s,overscan:d,topListHeight:a,increaseViewportBy:c,visibleRange:p}},yl(Wm),{singleton:!0}),aZ=ua(([{scrollVelocity:e}])=>{const t=Kt(!1),n=wr(),r=Kt(!1);return Un(Xt(e,Xs(r,t,n),Kr(([o,s])=>!!s),tr(([o,s,a,c])=>{const{exit:d,enter:p}=s;if(a){if(d(o,c))return!1}else if(p(o,c))return!0;return a}),So()),t),po(Xt(Sa(t,e,n),Xs(r)),([[o,s,a],c])=>o&&c&&c.change&&c.change(s,a)),{isSeeking:t,scrollSeekConfiguration:r,scrollVelocity:e,scrollSeekRangeChanged:n}},yl(UE),{singleton:!0});function iZ(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const lZ=ua(([{scrollTo:e,scrollContainerState:t}])=>{const n=wr(),r=wr(),o=wr(),s=Kt(!1),a=Kt(void 0);return Un(Xt(Sa(n,r),tr(([{viewportHeight:c,scrollTop:d,scrollHeight:p},{offsetTop:h}])=>({scrollTop:Math.max(0,d-h),scrollHeight:p,viewportHeight:c}))),t),Un(Xt(e,Xs(r),tr(([c,{offsetTop:d}])=>({...c,top:c.top+d}))),o),{useWindowScroll:s,customScrollParent:a,windowScrollContainerState:n,windowViewportRect:r,windowScrollTo:o}},yl(Wm)),Y0="-webkit-sticky",ik="sticky",qE=iZ(()=>{if(typeof document>"u")return ik;const e=document.createElement("div");return e.style.position=Y0,e.style.position===Y0?Y0:ik});function cZ(e,t){const n=H.useRef(null),r=H.useCallback(c=>{if(c===null||!c.offsetParent)return;const d=c.getBoundingClientRect(),p=d.width;let h,m;if(t){const v=t.getBoundingClientRect(),b=d.top-v.top;h=v.height-Math.max(0,b),m=b+t.scrollTop}else h=window.innerHeight-Math.max(0,d.top),m=d.top+window.pageYOffset;n.current={offsetTop:m,visibleHeight:h,visibleWidth:p},e(n.current)},[e,t]),{callbackRef:o,ref:s}=HE(r),a=H.useCallback(()=>{r(s.current)},[r,s]);return H.useEffect(()=>{if(t){t.addEventListener("scroll",a);const c=new ResizeObserver(a);return c.observe(t),()=>{t.removeEventListener("scroll",a),c.unobserve(t)}}else return window.addEventListener("scroll",a),window.addEventListener("resize",a),()=>{window.removeEventListener("scroll",a),window.removeEventListener("resize",a)}},[a,t]),o}H.createContext(void 0);const KE=H.createContext(void 0);function uZ(e){return e}qE();const dZ={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},XE={width:"100%",height:"100%",position:"absolute",top:0};qE();function tl(e,t){if(typeof e!="string")return{context:t}}function fZ({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:a,...c}){const d=e("scrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("scrollerRef"),v=n("context"),{scrollerRef:b,scrollByCallback:w,scrollToCallback:y}=VE(d,h,p,m);return t("scrollTo",y),t("scrollBy",w),H.createElement(p,{ref:b,style:{...dZ,...s},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...c,...tl(p,v)},a)})}function pZ({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:a,...c}){const d=e("windowScrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("totalListHeight"),v=n("deviation"),b=n("customScrollParent"),w=n("context"),{scrollerRef:y,scrollByCallback:S,scrollToCallback:k}=VE(d,h,p,Bm,b);return KJ(()=>(y.current=b||window,()=>{y.current=null}),[y,b]),t("windowScrollTo",k),t("scrollBy",S),H.createElement(p,{style:{position:"relative",...s,...m!==0?{height:m+v}:{}},"data-virtuoso-scroller":!0,...c,...tl(p,w)},a)})}const lk={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},hZ={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:ck,ceil:uk,floor:Uh,min:Q0,max:Bu}=Math;function mZ(e){return{...hZ,items:e}}function dk(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 gZ(e,t){return e&&e.column===t.column&&e.row===t.row}function pp(e,t){return e&&e.width===t.width&&e.height===t.height}const vZ=ua(([{overscan:e,visibleRange:t,listBoundary:n},{scrollTop:r,viewportHeight:o,scrollBy:s,scrollTo:a,smoothScrollTargetReached:c,scrollContainerState:d,footerHeight:p,headerHeight:h},m,v,{propsReady:b,didMount:w},{windowViewportRect:y,useWindowScroll:S,customScrollParent:k,windowScrollContainerState:_,windowScrollTo:I},P])=>{const E=Kt(0),O=Kt(0),R=Kt(lk),M=Kt({height:0,width:0}),A=Kt({height:0,width:0}),T=wr(),$=wr(),Q=Kt(0),B=Kt(null),V=Kt({row:0,column:0}),q=wr(),G=wr(),D=Kt(!1),L=Kt(0),W=Kt(!0),Y=Kt(!1);po(Xt(w,Xs(L),Kr(([U,se])=>!!se)),()=>{Ar(W,!1),Ar(O,0)}),po(Xt(Sa(w,W,A,M,L,Y),Kr(([U,se,re,oe,,pe])=>U&&!se&&re.height!==0&&oe.height!==0&&!pe)),([,,,,U])=>{Ar(Y,!0),GE(1,()=>{Ar(T,U)}),tk(Xt(r),()=>{Ar(n,[0,0]),Ar(W,!0)})}),Un(Xt(G,Kr(U=>U!=null&&U.scrollTop>0),ai(0)),O),po(Xt(w,Xs(G),Kr(([,U])=>U!=null)),([,U])=>{U&&(Ar(M,U.viewport),Ar(A,U==null?void 0:U.item),Ar(V,U.gap),U.scrollTop>0&&(Ar(D,!0),tk(Xt(r,v1(1)),se=>{Ar(D,!1)}),Ar(a,{top:U.scrollTop})))}),Un(Xt(M,tr(({height:U})=>U)),o),Un(Xt(Sa(xn(M,pp),xn(A,pp),xn(V,(U,se)=>U&&U.column===se.column&&U.row===se.row),xn(r)),tr(([U,se,re,oe])=>({viewport:U,item:se,gap:re,scrollTop:oe}))),q),Un(Xt(Sa(xn(E),t,xn(V,gZ),xn(A,pp),xn(M,pp),xn(B),xn(O),xn(D),xn(W),xn(L)),Kr(([,,,,,,,U])=>!U),tr(([U,[se,re],oe,pe,ie,ge,ke,,xe,de])=>{const{row:Te,column:Oe}=oe,{height:$e,width:kt}=pe,{width:ct}=ie;if(ke===0&&(U===0||ct===0))return lk;if(kt===0){const $t=rZ(de,U),zt=$t===0?Math.max(ke-1,0):$t;return mZ(dk($t,zt,ge))}const on=YE(ct,kt,Oe);let vt,bt;xe?se===0&&re===0&&ke>0?(vt=0,bt=ke-1):(vt=on*Uh((se+Te)/($e+Te)),bt=on*uk((re+Te)/($e+Te))-1,bt=Q0(U-1,Bu(bt,on-1)),vt=Q0(bt,Bu(0,vt))):(vt=0,bt=-1);const Se=dk(vt,bt,ge),{top:Me,bottom:Pt}=fk(ie,oe,pe,Se),Tt=uk(U/on),ht=Tt*$e+(Tt-1)*Te-Pt;return{items:Se,offsetTop:Me,offsetBottom:ht,top:Me,bottom:Pt,itemHeight:$e,itemWidth:kt}})),R),Un(Xt(B,Kr(U=>U!==null),tr(U=>U.length)),E),Un(Xt(Sa(M,A,R,V),Kr(([U,se,{items:re}])=>re.length>0&&se.height!==0&&U.height!==0),tr(([U,se,{items:re},oe])=>{const{top:pe,bottom:ie}=fk(U,oe,se,re);return[pe,ie]}),So(b1)),n);const ae=Kt(!1);Un(Xt(r,Xs(ae),tr(([U,se])=>se||U!==0)),ae);const ye=zu(Xt(xn(R),Kr(({items:U})=>U.length>0),Xs(E,ae),Kr(([{items:U},se,re])=>re&&U[U.length-1].index===se-1),tr(([,U])=>U-1),So())),ce=zu(Xt(xn(R),Kr(({items:U})=>U.length>0&&U[0].index===0),ai(0),So())),X=zu(Xt(xn(R),Xs(D),Kr(([{items:U},se])=>U.length>0&&!se),tr(([{items:U}])=>({startIndex:U[0].index,endIndex:U[U.length-1].index})),So(oZ),Iu(0)));Un(X,v.scrollSeekRangeChanged),Un(Xt(T,Xs(M,A,E,V),tr(([U,se,re,oe,pe])=>{const ie=JJ(U),{align:ge,behavior:ke,offset:xe}=ie;let de=ie.index;de==="LAST"&&(de=oe-1),de=Bu(0,de,Q0(oe-1,de));let Te=y1(se,pe,re,de);return ge==="end"?Te=ck(Te-se.height+re.height):ge==="center"&&(Te=ck(Te-se.height/2+re.height/2)),xe&&(Te+=xe),{top:Te,behavior:ke}})),a);const K=hc(Xt(R,tr(U=>U.offsetBottom+U.bottom)),0);return Un(Xt(y,tr(U=>({width:U.visibleWidth,height:U.visibleHeight}))),M),{data:B,totalCount:E,viewportDimensions:M,itemDimensions:A,scrollTop:r,scrollHeight:$,overscan:e,scrollBy:s,scrollTo:a,scrollToIndex:T,smoothScrollTargetReached:c,windowViewportRect:y,windowScrollTo:I,useWindowScroll:S,customScrollParent:k,windowScrollContainerState:_,deviation:Q,scrollContainerState:d,footerHeight:p,headerHeight:h,initialItemCount:O,gap:V,restoreStateFrom:G,...v,initialTopMostItemIndex:L,gridState:R,totalListHeight:K,...m,startReached:ce,endReached:ye,rangeChanged:X,stateChanged:q,propsReady:b,stateRestoreInProgress:D,...P}},yl(sZ,Wm,UE,aZ,nZ,lZ,FE));function fk(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{top:0,bottom:0};const s=y1(e,t,n,r[0].index),a=y1(e,t,n,r[r.length-1].index)+o;return{top:s,bottom:a}}function y1(e,t,n,r){const o=YE(e.width,n.width,t.column),s=Uh(r/o),a=s*n.height+Bu(0,s-1)*t.row;return a>0?a+t.row:a}function YE(e,t,n){return Bu(1,Uh((e+n)/(Uh(t)+n)))}const bZ=ua(()=>{const e=Kt(p=>`Item ${p}`),t=Kt({}),n=Kt(null),r=Kt("virtuoso-grid-item"),o=Kt("virtuoso-grid-list"),s=Kt(uZ),a=Kt("div"),c=Kt(Bm),d=(p,h=null)=>hc(Xt(t,tr(m=>m[p]),So()),h);return{context:n,itemContent:e,components:t,computeItemKey:s,itemClassName:r,listClassName:o,headerFooterTag:a,scrollerRef:c,FooterComponent:d("Footer"),HeaderComponent:d("Header"),ListComponent:d("List","div"),ItemComponent:d("Item","div"),ScrollerComponent:d("Scroller","div"),ScrollSeekPlaceholder:d("ScrollSeekPlaceholder","div")}}),yZ=ua(([e,t])=>({...e,...t}),yl(vZ,bZ)),xZ=H.memo(function(){const t=fr("gridState"),n=fr("listClassName"),r=fr("itemClassName"),o=fr("itemContent"),s=fr("computeItemKey"),a=fr("isSeeking"),c=Is("scrollHeight"),d=fr("ItemComponent"),p=fr("ListComponent"),h=fr("ScrollSeekPlaceholder"),m=fr("context"),v=Is("itemDimensions"),b=Is("gap"),w=fr("log"),y=fr("stateRestoreInProgress"),S=Hm(k=>{const _=k.parentElement.parentElement.scrollHeight;c(_);const I=k.firstChild;if(I){const{width:P,height:E}=I.getBoundingClientRect();v({width:P,height:E})}b({row:pk("row-gap",getComputedStyle(k).rowGap,w),column:pk("column-gap",getComputedStyle(k).columnGap,w)})});return y?null:H.createElement(p,{ref:S,className:n,...tl(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 a?H.createElement(h,{key:_,...tl(h,m),index:k.index,height:t.itemHeight,width:t.itemWidth}):H.createElement(d,{...tl(d,m),className:r,"data-index":k.index,key:_},o(k.index,k.data,m))}))}),wZ=H.memo(function(){const t=fr("HeaderComponent"),n=Is("headerHeight"),r=fr("headerFooterTag"),o=Hm(a=>n(Fh(a,"height"))),s=fr("context");return t?H.createElement(r,{ref:o},H.createElement(t,tl(t,s))):null}),SZ=H.memo(function(){const t=fr("FooterComponent"),n=Is("footerHeight"),r=fr("headerFooterTag"),o=Hm(a=>n(Fh(a,"height"))),s=fr("context");return t?H.createElement(r,{ref:o},H.createElement(t,tl(t,s))):null}),CZ=({children:e})=>{const t=H.useContext(KE),n=Is("itemDimensions"),r=Is("viewportDimensions"),o=Hm(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:XE,ref:o},e)},kZ=({children:e})=>{const t=H.useContext(KE),n=Is("windowViewportRect"),r=Is("itemDimensions"),o=fr("customScrollParent"),s=cZ(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:XE},e)},_Z=H.memo(function({...t}){const n=fr("useWindowScroll"),r=fr("customScrollParent"),o=r||n?IZ:jZ,s=r||n?kZ:CZ;return H.createElement(o,{...t},H.createElement(s,null,H.createElement(wZ,null),H.createElement(xZ,null),H.createElement(SZ,null)))}),{Component:PZ,usePublisher:Is,useEmitterValue:fr,useEmitter:QE}=GJ(yZ,{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"}},_Z),jZ=fZ({usePublisher:Is,useEmitterValue:fr,useEmitter:QE}),IZ=pZ({usePublisher:Is,useEmitterValue:fr,useEmitter:QE});function pk(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Oy.WARN),t==="normal"?0:parseInt(t??"0",10)}const JE=PZ,EZ=({imageDTO:e})=>i.jsx(F,{sx:{pointerEvents:"none",flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,p:2,alignItems:"flex-start",gap:2},children:i.jsxs(hl,{variant:"solid",colorScheme:"base",children:[e.width," × ",e.height]})}),Vm=({postUploadAction:e,isDisabled:t})=>{const n=z(d=>d.gallery.autoAddBoardId),[r]=E5(),o=f.useCallback(d=>{const p=d[0];p&&r({file:p,image_category:"user",is_intermediate:!1,postUploadAction:e??{type:"TOAST"},board_id:n})},[n,e,r]),{getRootProps:s,getInputProps:a,open:c}=Bb({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},onDropAccepted:o,disabled:t,noDrag:!0,multiple:!1});return{getUploadButtonProps:s,getUploadInputProps:a,openUploader:c}},Ry=()=>{const e=te(),t=Hc(),{t:n}=be(),r=f.useCallback(()=>{t({title:n("toast.parameterSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),o=f.useCallback(()=>{t({title:n("toast.parameterNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),s=f.useCallback(()=>{t({title:n("toast.parametersSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),a=f.useCallback(()=>{t({title:n("toast.parametersNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),c=f.useCallback((P,E)=>{if(jf(P)||If(E)){jf(P)&&e(Mu(P)),If(E)&&e(Du(E)),r();return}o()},[e,r,o]),d=f.useCallback(P=>{if(!jf(P)){o();return}e(Mu(P)),r()},[e,r,o]),p=f.useCallback(P=>{if(!If(P)){o();return}e(Du(P)),r()},[e,r,o]),h=f.useCallback(P=>{if(!A2(P)){o();return}e(Op(P)),r()},[e,r,o]),m=f.useCallback(P=>{if(!T2(P)){o();return}e(Rp(P)),r()},[e,r,o]),v=f.useCallback(P=>{if(!N2(P)){o();return}e(gv(P)),r()},[e,r,o]),b=f.useCallback(P=>{if(!$2(P)){o();return}e(vv(P)),r()},[e,r,o]),w=f.useCallback(P=>{if(!z2(P)){o();return}e(Mp(P)),r()},[e,r,o]),y=f.useCallback(P=>{if(!L2(P)){o();return}e(mc(P)),r()},[e,r,o]),S=f.useCallback(P=>{if(!B2(P)){o();return}e(gc(P)),r()},[e,r,o]),k=f.useCallback(P=>{if(!F2(P)){o();return}e(Dp(P)),r()},[e,r,o]),_=f.useCallback(P=>{e(L1(P))},[e]),I=f.useCallback(P=>{if(!P){a();return}const{cfg_scale:E,height:O,model:R,positive_prompt:M,negative_prompt:A,scheduler:T,seed:$,steps:Q,width:B,strength:V}=P;T2(E)&&e(Rp(E)),N2(R)&&e(gv(R)),jf(M)&&e(Mu(M)),If(A)&&e(Du(A)),$2(T)&&e(vv(T)),A2($)&&e(Op($)),z2(Q)&&e(Mp(Q)),L2(B)&&e(mc(B)),B2(O)&&e(gc(O)),F2(V)&&e(Dp(V)),s()},[a,s,e]);return{recallBothPrompts:c,recallPositivePrompt:d,recallNegativePrompt:p,recallSeed:h,recallCfgScale:m,recallModel:v,recallScheduler:b,recallSteps:w,recallWidth:y,recallHeight:S,recallStrength:k,recallAllParameters:I,sendToImageToImage:_}},ar=e=>{const t=z(a=>a.config.disabledTabs),n=z(a=>a.config.disabledFeatures),r=z(a=>a.config.disabledSDFeatures),o=f.useMemo(()=>n.includes(e)||r.includes(e)||t.includes(e),[n,r,t,e]),s=f.useMemo(()=>!(n.includes(e)||r.includes(e)||t.includes(e)),[n,r,t,e]);return{isFeatureDisabled:o,isFeatureEnabled:s}},My=()=>{const e=Hc(),{t}=be(),n=f.useMemo(()=>!!navigator.clipboard&&!!window.ClipboardItem,[]),r=f.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 a=await(await fetch(o)).blob();await navigator.clipboard.write([new ClipboardItem({[a.type]:a})]),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 OZ(e,t,n){var r=this,o=f.useRef(null),s=f.useRef(0),a=f.useRef(null),c=f.useRef([]),d=f.useRef(),p=f.useRef(),h=f.useRef(e),m=f.useRef(!0);f.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,w=!("trailing"in n)||!!n.trailing,y="maxWait"in n,S=y?Math.max(+n.maxWait||0,t):null;f.useEffect(function(){return m.current=!0,function(){m.current=!1}},[]);var k=f.useMemo(function(){var _=function(M){var A=c.current,T=d.current;return c.current=d.current=null,s.current=M,p.current=h.current.apply(T,A)},I=function(M,A){v&&cancelAnimationFrame(a.current),a.current=v?requestAnimationFrame(M):setTimeout(M,A)},P=function(M){if(!m.current)return!1;var A=M-o.current;return!o.current||A>=t||A<0||y&&M-s.current>=S},E=function(M){return a.current=null,w&&c.current?_(M):(c.current=d.current=null,p.current)},O=function M(){var A=Date.now();if(P(A))return E(A);if(m.current){var T=t-(A-o.current),$=y?Math.min(T,S-(A-s.current)):T;I(M,$)}},R=function(){var M=Date.now(),A=P(M);if(c.current=[].slice.call(arguments),d.current=r,o.current=M,A){if(!a.current&&m.current)return s.current=o.current,I(O,t),b?_(o.current):p.current;if(y)return I(O,t),_(o.current)}return a.current||I(O,t),p.current};return R.cancel=function(){a.current&&(v?cancelAnimationFrame(a.current):clearTimeout(a.current)),s.current=0,c.current=o.current=d.current=a.current=null},R.isPending=function(){return!!a.current},R.flush=function(){return a.current?E(Date.now()):p.current},R},[b,y,t,S,w,v]);return k}function RZ(e,t){return e===t}function hk(e){return typeof e=="function"?function(){return e}:e}function Dy(e,t,n){var r,o,s=n&&n.equalityFn||RZ,a=(r=f.useState(hk(e)),o=r[1],[r[0],f.useCallback(function(m){return o(hk(m))},[])]),c=a[0],d=a[1],p=OZ(f.useCallback(function(m){return d(m)},[d]),t,n),h=f.useRef(e);return s(h.current,e)||(p(e),h.current=e),[c,p]}B1("gallery/requestedBoardImagesDeletion");const MZ=B1("gallery/sentImageToCanvas"),ZE=B1("gallery/sentImageToImg2Img"),DZ=e=>{const{imageDTO:t}=e,n=f.useMemo(()=>fe([Xe],({gallery:V})=>({isInBatch:V.batchImageNames.includes(t.image_name)}),Ge),[t.image_name]),{isInBatch:r}=z(n),o=te(),{t:s}=be(),a=Hc(),c=ar("unifiedCanvas").isFeatureEnabled,d=ar("batches").isFeatureEnabled,{onClickAddToBoard:p}=f.useContext(N5),[h,m]=Dy(t.image_name,500),{currentData:v}=F1(m.isPending()?oo.skipToken:h??oo.skipToken),{isClipboardAPIAvailable:b,copyImageToClipboard:w}=My(),y=v==null?void 0:v.metadata,S=f.useCallback(()=>{t&&o(H1(t))},[o,t]),{recallBothPrompts:k,recallSeed:_,recallAllParameters:I}=Ry(),[P]=q7(),E=f.useCallback(()=>{k(y==null?void 0:y.positive_prompt,y==null?void 0:y.negative_prompt)},[y==null?void 0:y.negative_prompt,y==null?void 0:y.positive_prompt,k]),O=f.useCallback(()=>{_(y==null?void 0:y.seed)},[y==null?void 0:y.seed,_]),R=f.useCallback(()=>{o(ZE()),o(L1(t))},[o,t]),M=f.useCallback(()=>{o(MZ()),o(K7(t)),o(Zh()),o(Kl("unifiedCanvas")),a({title:s("toast.sentToUnifiedCanvas"),status:"success",duration:2500,isClosable:!0})},[o,t,s,a]),A=f.useCallback(()=>{console.log(y),I(y)},[y,I]),T=f.useCallback(()=>{p(t)},[t,p]),$=f.useCallback(()=>{t.board_id&&P({imageDTO:t})},[t,P]),Q=f.useCallback(()=>{o(X7([t.image_name]))},[o,t.image_name]),B=f.useCallback(()=>{w(t.image_url)},[w,t.image_url]);return i.jsxs(i.Fragment,{children:[i.jsx(Pr,{as:"a",href:t.image_url,target:"_blank",icon:i.jsx(sW,{}),children:s("common.openInNewTab")}),b&&i.jsx(Pr,{icon:i.jsx(Wc,{}),onClickCapture:B,children:s("parameters.copyImage")}),i.jsx(Pr,{as:"a",download:!0,href:t.image_url,target:"_blank",icon:i.jsx(Hb,{}),w:"100%",children:s("parameters.downloadImage")}),i.jsx(Pr,{icon:i.jsx(SP,{}),onClickCapture:E,isDisabled:(y==null?void 0:y.positive_prompt)===void 0&&(y==null?void 0:y.negative_prompt)===void 0,children:s("parameters.usePrompt")}),i.jsx(Pr,{icon:i.jsx(CP,{}),onClickCapture:O,isDisabled:(y==null?void 0:y.seed)===void 0,children:s("parameters.useSeed")}),i.jsx(Pr,{icon:i.jsx(fP,{}),onClickCapture:A,isDisabled:!y,children:s("parameters.useAll")}),i.jsx(Pr,{icon:i.jsx(PS,{}),onClickCapture:R,id:"send-to-img2img",children:s("parameters.sendToImg2Img")}),c&&i.jsx(Pr,{icon:i.jsx(PS,{}),onClickCapture:M,id:"send-to-canvas",children:s("parameters.sendToUnifiedCanvas")}),d&&i.jsx(Pr,{icon:i.jsx(R0,{}),isDisabled:r,onClickCapture:Q,children:"Add to Batch"}),i.jsx(Pr,{icon:i.jsx(R0,{}),onClickCapture:T,children:t.board_id?"Change Board":"Add to Board"}),t.board_id&&i.jsx(Pr,{icon:i.jsx(R0,{}),onClickCapture:$,children:"Remove from Board"}),i.jsx(Pr,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:i.jsx(us,{}),onClickCapture:S,children:s("gallery.deleteImage")})]})},e8=f.memo(DZ),AZ=({imageDTO:e,children:t})=>{const n=f.useCallback(r=>{r.preventDefault()},[]);return i.jsx(ij,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>e?i.jsx(Bc,{sx:{visibility:"visible !important"},motionProps:nm,onContextMenu:n,children:i.jsx(e8,{imageDTO:e})}):null,children:t})},t8=f.memo(AZ),TZ=e=>{const{data:t,disabled:n,onClick:r}=e,o=f.useRef(ui()),{attributes:s,listeners:a,setNodeRef:c}=Y7({id:o.current,disabled:n,data:t});return i.jsx(Ee,{onClick:r,ref:c,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,...s,...a})},NZ=f.memo(TZ),$Z=e=>{const{imageDTO:t,onClickReset:n,onError:r,onClick:o,withResetIcon:s=!1,withMetadataOverlay:a=!1,isDropDisabled:c=!1,isDragDisabled:d=!1,isUploadDisabled:p=!1,minSize:h=24,postUploadAction:m,imageSx:v,fitContainer:b=!1,droppableData:w,draggableData:y,dropLabel:S,isSelected:k=!1,thumbnail:_=!1,resetTooltip:I="Reset",resetIcon:P=i.jsx(Vb,{}),noContentFallback:E=i.jsx(mi,{icon:il}),useThumbailFallback:O,withHoverOverlay:R=!1}=e,{colorMode:M}=Ds(),[A,T]=f.useState(!1),$=f.useCallback(()=>{T(!0)},[]),Q=f.useCallback(()=>{T(!1)},[]),{getUploadButtonProps:B,getUploadInputProps:V}=Vm({postUploadAction:m,isDisabled:p}),q=gp("drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-600))","drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-800))"),G=p?{}:{cursor:"pointer",bg:Fe("base.200","base.800")(M),_hover:{bg:Fe("base.300","base.650")(M),color:Fe("base.500","base.300")(M)}};return i.jsx(t8,{imageDTO:t,children:D=>i.jsxs(F,{ref:D,onMouseOver:$,onMouseOut:Q,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative",minW:h||void 0,minH:h||void 0,userSelect:"none",cursor:d||!t?"default":"pointer"},children:[t&&i.jsxs(F,{sx:{w:"full",h:"full",position:b?"absolute":"relative",alignItems:"center",justifyContent:"center"},children:[i.jsx(Tc,{src:_?t.thumbnail_url:t.image_url,fallbackStrategy:"beforeLoadOrError",fallbackSrc:O?t.thumbnail_url:void 0,fallback:O?void 0:i.jsx(NJ,{image:t}),width:t.width,height:t.height,onError:r,draggable:!1,sx:{objectFit:"contain",maxW:"full",maxH:"full",borderRadius:"base",...v}}),a&&i.jsx(EZ,{imageDTO:t}),i.jsx(uy,{isSelected:k,isHovered:R?A:!1})]}),!t&&!p&&i.jsx(i.Fragment,{children:i.jsxs(F,{sx:{minH:h,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",transitionProperty:"common",transitionDuration:"0.1s",color:Fe("base.500","base.500")(M),...G},...B(),children:[i.jsx("input",{...V()}),i.jsx(no,{as:Rd,sx:{boxSize:16}})]})}),!t&&p&&E,t&&!d&&i.jsx(NZ,{data:y,disabled:d||!t,onClick:o}),!c&&i.jsx(cy,{data:w,disabled:c,dropLabel:S}),n&&s&&t&&i.jsx(Le,{onClick:n,"aria-label":I,tooltip:I,icon:P,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:q}}})]})})},yi=f.memo($Z),zZ=()=>i.jsx(Ee,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:i.jsx(F,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.100",color:"base.500",_dark:{color:"base.700",bg:"base.850"}},children:i.jsx(no,{as:nW,boxSize:16,opacity:.7})})}),n8=()=>i.jsx(gm,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:i.jsx(Ee,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full"}})}),LZ=e=>fe([Xe],t=>({selectionCount:t.gallery.selection.length,selection:t.gallery.selection,isSelected:t.gallery.selection.includes(e)}),Ge),BZ=e=>{const t=te(),{imageName:n}=e,{currentData:r,isLoading:o,isError:s}=os(n),a=f.useMemo(()=>LZ(n),[n]),{isSelected:c,selectionCount:d,selection:p}=z(a),h=f.useCallback(()=>{t(Q7([n]))},[t,n]),m=f.useMemo(()=>{if(d>1)return{id:"batch",payloadType:"IMAGE_NAMES",payload:{image_names:p}};if(r)return{id:"batch",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,p,d]);return o?i.jsx(n8,{}):s||!r?i.jsx(zZ,{}):i.jsx(Ee,{sx:{w:"full",h:"full",touchAction:"none"},children:i.jsx(t8,{imageDTO:r,children:v=>i.jsx(Ee,{position:"relative",userSelect:"none",ref:v,sx:{display:"flex",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:i.jsx(yi,{imageDTO:r,draggableData:m,isSelected:c,minSize:0,onClickReset:h,isDropDisabled:!0,imageSx:{w:"full",h:"full"},isUploadDisabled:!0,resetTooltip:"Remove from batch",withResetIcon:!0,thumbnail:!0})},n)})})},FZ=f.memo(BZ),r8=Ae((e,t)=>i.jsx(Ee,{className:"item-container",ref:t,p:1.5,children:e.children})),o8=Ae((e,t)=>{const n=z(r=>r.gallery.galleryImageMinimumWidth);return i.jsx(ol,{...e,className:"list-container",ref:t,sx:{gridTemplateColumns:`repeat(auto-fill, minmax(${n}px, 1fr));`},children:e.children})}),HZ=fe([Xe],e=>({imageNames:e.gallery.batchImageNames}),Ge),WZ=()=>{const{t:e}=be(),t=f.useRef(null),[n,r]=f.useState(null),[o,s]=iy({defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"leave",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}}),{imageNames:a}=z(HZ);return f.useEffect(()=>{const{current:c}=t;return n&&c&&o({target:c,elements:{viewport:n}}),()=>{var d;return(d=s())==null?void 0:d.destroy()}},[n,o,s]),a.length?i.jsx(Ee,{ref:t,"data-overlayscrollbars":"",h:"100%",children:i.jsx(JE,{style:{height:"100%"},data:a,components:{Item:r8,List:o8},scrollerRef:r,itemContent:(c,d)=>i.jsx(FZ,{imageName:d},d)})}):i.jsx(mi,{label:e("gallery.noImagesInGallery"),icon:il})},VZ=f.memo(WZ),UZ=e=>{const t=z(s=>s.gallery.galleryView),{data:n}=J7(e),{data:r}=Z7(e),o=f.useMemo(()=>t==="images"?n:r,[t,r,n]);return{totalImages:n,totalAssets:r,currentViewTotal:o}},GZ=e=>fe([Xe],({gallery:t})=>({isSelected:t.selection.includes(e),selectionCount:t.selection.length,selection:t.selection}),Ge),qZ=e=>{const t=te(),{imageName:n}=e,{currentData:r}=os(n),o=f.useMemo(()=>GZ(n),[n]),{isSelected:s,selectionCount:a,selection:c}=z(o),d=f.useCallback(()=>{t(bv(n))},[t,n]),p=f.useCallback(m=>{m.stopPropagation(),r&&t(H1(r))},[t,r]),h=f.useMemo(()=>{if(a>1)return{id:"gallery-image",payloadType:"IMAGE_NAMES",payload:{image_names:c}};if(r)return{id:"gallery-image",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,c,a]);return r?i.jsx(Ee,{sx:{w:"full",h:"full",touchAction:"none"},children:i.jsx(F,{userSelect:"none",sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:i.jsx(yi,{onClick:d,imageDTO:r,draggableData:h,isSelected:s,minSize:0,onClickReset:p,imageSx:{w:"full",h:"full"},isDropDisabled:!0,isUploadDisabled:!0,thumbnail:!0,withHoverOverlay:!0})})}):i.jsx(n8,{})},KZ=f.memo(qZ),XZ={defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"leave",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}},YZ=()=>{const{t:e}=be(),t=f.useRef(null),[n,r]=f.useState(null),[o,s]=iy(XZ),a=z(S=>S.gallery.selectedBoardId),{currentViewTotal:c}=UZ(a),d=z($5),{currentData:p,isFetching:h,isSuccess:m,isError:v}=eR(d),[b]=z5(),w=f.useMemo(()=>!p||!c?!1:p.ids.length{w&&b({...d,offset:(p==null?void 0:p.ids.length)??0,limit:L5})},[w,b,d,p==null?void 0:p.ids.length]);return f.useEffect(()=>{const{current:S}=t;return n&&S&&o({target:S,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?i.jsx(F,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:i.jsx(mi,{label:e("gallery.noImagesInGallery"),icon:il})}):m&&p?i.jsxs(i.Fragment,{children:[i.jsx(Ee,{ref:t,"data-overlayscrollbars":"",h:"100%",children:i.jsx(JE,{style:{height:"100%"},data:p.ids,endReached:y,components:{Item:r8,List:o8},scrollerRef:r,itemContent:(S,k)=>i.jsx(KZ,{imageName:k},k)})}),i.jsx(en,{onClick:y,isDisabled:!w,isLoading:h,loadingText:"Loading",flexShrink:0,children:`Load More (${p.ids.length} of ${c})`})]}):v?i.jsx(Ee,{sx:{w:"full",h:"full"},children:i.jsx(mi,{label:"Unable to load Gallery",icon:mP})}):null:i.jsx(F,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:i.jsx(mi,{label:"Loading...",icon:il})})},QZ=f.memo(YZ),JZ=fe([Xe],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{selectedBoardId:t,galleryView:n}},Ge),ZZ=()=>{const e=f.useRef(null),t=f.useRef(null),{selectedBoardId:n,galleryView:r}=z(JZ),o=te(),{isOpen:s,onToggle:a}=ss(),c=f.useCallback(()=>{o(H2("images"))},[o]),d=f.useCallback(()=>{o(H2("assets"))},[o]);return i.jsxs(U3,{sx:{flexDirection:"column",h:"full",w:"full",borderRadius:"base"},children:[i.jsxs(Ee,{sx:{w:"full"},children:[i.jsxs(F,{ref:e,sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:[i.jsx(gU,{isOpen:s,onToggle:a}),i.jsx(TJ,{}),i.jsx(bU,{})]}),i.jsx(Ee,{children:i.jsx(pU,{isOpen:s})})]}),i.jsxs(F,{ref:t,direction:"column",gap:2,h:"full",w:"full",children:[i.jsx(F,{sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:i.jsx(Id,{index:r==="images"?0:1,variant:"unstyled",size:"sm",sx:{w:"full"},children:i.jsx(Ed,{children:i.jsxs(nr,{isAttached:!0,sx:{w:"full"},children:[i.jsx(Sc,{as:en,size:"sm",isChecked:r==="images",onClick:c,sx:{w:"full"},leftIcon:i.jsx(uW,{}),children:"Images"}),i.jsx(Sc,{as:en,size:"sm",isChecked:r==="assets",onClick:d,sx:{w:"full"},leftIcon:i.jsx(wW,{}),children:"Assets"})]})})})}),n==="batch"?i.jsx(VZ,{}):i.jsx(QZ,{})]})]})},s8=f.memo(ZZ),eee=fe([Kn,La,tR,ir],(e,t,n,r)=>{const{shouldPinGallery:o,shouldShowGallery:s}=t,{galleryImageMinimumWidth:a}=n;return{activeTabName:e,isStaging:r,shouldPinGallery:o,shouldShowGallery:s,galleryImageMinimumWidth:a,isResizable:e!=="unifiedCanvas"}},{memoizeOptions:{resultEqualityCheck:Jt}}),tee=()=>{const e=te(),{shouldPinGallery:t,shouldShowGallery:n,galleryImageMinimumWidth:r}=z(eee),o=()=>{e(yv(!1)),t&&e(Co())};rt("esc",()=>{e(yv(!1))},{enabled:()=>!t,preventDefault:!0},[t]);const s=32;return rt("shift+up",()=>{if(r<256){const a=Es(r+s,32,256);e(Ep(a))}},[r]),rt("shift+down",()=>{if(r>32){const a=Es(r-s,32,256);e(Ep(a))}},[r]),t?null:i.jsx(lP,{direction:"right",isResizable:!0,isOpen:n,onClose:o,minWidth:400,children:i.jsx(s8,{})})},nee=f.memo(tee),ree=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:o,formLabelProps:s,tooltip:a,...c}=e;return i.jsx(wn,{label:a,hasArrow:!0,placement:"top",isDisabled:!a,children:i.jsxs(mo,{isDisabled:n,width:r,display:"flex",alignItems:"center",...o,children:[t&&i.jsx(Lo,{my:1,flexGrow:1,sx:{cursor:n?"not-allowed":"pointer",...s==null?void 0:s.sx,pe:4},...s,children:t}),i.jsx(zb,{...c})]})})},Er=f.memo(ree),oee=fe([Xe,nR],({system:e,config:t,imageDeletion:n},r)=>{const{shouldConfirmOnDelete:o}=e,{canRestoreDeletedImagesFromBin:s}=t,{imageToDelete:a,isModalOpen:c}=n;return{shouldConfirmOnDelete:o,canRestoreDeletedImagesFromBin:s,imageToDelete:a,imageUsage:r,isModalOpen:c}},Ge),see=()=>{const e=te(),{t}=be(),{shouldConfirmOnDelete:n,canRestoreDeletedImagesFromBin:r,imageToDelete:o,imageUsage:s,isModalOpen:a}=z(oee),c=f.useCallback(m=>e(B5(!m.target.checked)),[e]),d=f.useCallback(()=>{e(W2()),e(rR(!1))},[e]),p=f.useCallback(()=>{!o||!s||(e(W2()),e(oR({imageDTO:o,imageUsage:s})))},[e,o,s]),h=f.useRef(null);return i.jsx(_d,{isOpen:a,onClose:d,leastDestructiveRef:h,isCentered:!0,children:i.jsx(Da,{children:i.jsxs(Pd,{children:[i.jsx(Ma,{fontSize:"lg",fontWeight:"bold",children:t("gallery.deleteImage")}),i.jsx(Aa,{children:i.jsxs(F,{direction:"column",gap:3,children:[i.jsx(nj,{imageUsage:s}),i.jsx(Pi,{}),i.jsx(Ye,{children:t(r?"gallery.deleteImageBin":"gallery.deleteImagePermanent")}),i.jsx(Ye,{children:t("common.areYouSure")}),i.jsx(Er,{label:t("common.dontAskMeAgain"),isChecked:!n,onChange:c})]})}),i.jsxs(Ra,{children:[i.jsx(en,{ref:h,onClick:d,children:"Cancel"}),i.jsx(en,{colorScheme:"error",onClick:p,ml:3,children:"Delete"})]})]})})})},aee=f.memo(see);function iee(e){const{title:t,hotkey:n,description:r}=e;return i.jsxs(ol,{sx:{gridTemplateColumns:"auto max-content",justifyContent:"space-between",alignItems:"center"},children:[i.jsxs(ol,{children:[i.jsx(Ye,{fontWeight:600,children:t}),r&&i.jsx(Ye,{sx:{fontSize:"sm"},variant:"subtext",children:r})]}),i.jsx(Ee,{sx:{fontSize:"sm",fontWeight:600,px:2,py:1},children:n})]})}function lee({children:e}){const{isOpen:t,onOpen:n,onClose:r}=ss(),{t:o}=be(),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.pinOptions.title"),desc:o("hotkeys.pinOptions.desc"),hotkey:"Shift+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"}],a=[{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.toggleGalleryPin.title"),desc:o("hotkeys.toggleGalleryPin.desc"),hotkey:"Shift+G"},{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"}],d=[{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=h=>i.jsx(F,{flexDir:"column",gap:4,children:h.map((m,v)=>i.jsxs(F,{flexDir:"column",px:2,gap:4,children:[i.jsx(iee,{title:m.title,description:m.desc,hotkey:m.hotkey}),v{const{data:t}=sR(),n=f.useRef(null),r=a8(n);return i.jsxs(F,{alignItems:"center",gap:3,ps:1,ref:n,children:[i.jsx(Tc,{src:A5,alt:"invoke-ai-logo",sx:{w:"32px",h:"32px",minW:"32px",minH:"32px",userSelect:"none"}}),i.jsxs(F,{sx:{gap:3,alignItems:"center"},children:[i.jsxs(Ye,{sx:{fontSize:"xl",userSelect:"none"},children:["invoke ",i.jsx("strong",{children:"ai"})]}),i.jsx(ho,{children:e&&r&&t&&i.jsx(Ir.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:i.jsx(Ye,{sx:{fontWeight:600,marginTop:1,color:"base.300",fontSize:14},variant:"subtext",children:t.version})},"statusText")})]})]})},mee=e=>{const{tooltip:t,inputRef:n,label:r,disabled:o,required:s,...a}=e,c=NE();return i.jsx(wn,{label:t,placement:"top",hasArrow:!0,children:i.jsx(Py,{label:r?i.jsx(mo,{isRequired:s,isDisabled:o,children:i.jsx(Lo,{children:r})}):void 0,disabled:o,ref:n,styles:c,...a})})},Xr=f.memo(mee);function Xo(e){const{t}=be(),{label:n,textProps:r,useBadge:o=!1,badgeLabel:s=t("settings.experimental"),badgeProps:a,...c}=e;return i.jsxs(F,{justifyContent:"space-between",py:1,children:[i.jsxs(F,{gap:2,alignItems:"center",children:[i.jsx(Ye,{sx:{fontSize:14,_dark:{color:"base.300"}},...r,children:n}),o&&i.jsx(hl,{size:"xs",sx:{px:2,color:"base.700",bg:"accent.200",_dark:{bg:"accent.500",color:"base.200"}},...a,children:s})]}),i.jsx(Er,{...c})]})}const ql=e=>i.jsx(F,{sx:{flexDirection:"column",gap:2,p:4,borderRadius:"base",bg:"base.100",_dark:{bg:"base.900"}},children:e.children});function gee(){const e=te(),{data:t,refetch:n}=aR(),[r,{isLoading:o}]=iR(),s=f.useCallback(()=>{r().unwrap().then(c=>{e(lR()),e(W1()),e(On({title:`Cleared ${c} intermediates`,status:"info"}))})},[r,e]);f.useEffect(()=>{n()},[n]);const a=t?`Clear ${t} Intermediate${t>1?"s":""}`:"No Intermediates to Clear";return i.jsxs(ql,{children:[i.jsx(Ys,{size:"sm",children:"Clear Intermediates"}),i.jsx(en,{colorScheme:"warning",onClick:s,isLoading:o,isDisabled:!t,children:a}),i.jsx(Ye,{fontWeight:"bold",children:"Clearing intermediates will reset your Canvas and ControlNet state."}),i.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."}),i.jsx(Ye,{variant:"subtext",children:"Your gallery images will not be deleted."})]})}const vee=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:a,base700:c,base800:d,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:w}=jy(),{colorMode:y}=Ds(),[S]=Ac("shadows",["dark-lg"]);return f.useCallback(()=>({label:{color:Fe(c,r)(y)},separatorLabel:{color:Fe(s,s)(y),"::after":{borderTopColor:Fe(r,c)(y)}},searchInput:{":placeholder":{color:Fe(r,c)(y)}},input:{backgroundColor:Fe(e,p)(y),borderWidth:"2px",borderColor:Fe(n,d)(y),color:Fe(p,t)(y),paddingRight:24,fontWeight:600,"&:hover":{borderColor:Fe(r,a)(y)},"&:focus":{borderColor:Fe(m,w)(y)},"&:is(:focus, :hover)":{borderColor:Fe(o,s)(y)},"&:focus-within":{borderColor:Fe(h,w)(y)},"&[data-disabled]":{backgroundColor:Fe(r,c)(y),color:Fe(a,o)(y),cursor:"not-allowed"}},value:{backgroundColor:Fe(n,d)(y),color:Fe(p,t)(y),button:{color:Fe(p,t)(y)},"&:hover":{backgroundColor:Fe(r,c)(y),cursor:"pointer"}},dropdown:{backgroundColor:Fe(n,d)(y),borderColor:Fe(n,d)(y),boxShadow:S},item:{backgroundColor:Fe(n,d)(y),color:Fe(d,n)(y),padding:6,"&[data-hovered]":{color:Fe(p,t)(y),backgroundColor:Fe(r,c)(y)},"&[data-active]":{backgroundColor:Fe(r,c)(y),"&:hover":{color:Fe(p,t)(y),backgroundColor:Fe(r,c)(y)}},"&[data-selected]":{backgroundColor:Fe(v,w)(y),color:Fe(e,t)(y),fontWeight:600,"&:hover":{backgroundColor:Fe(b,b)(y),color:Fe("white",e)(y)}},"&[data-disabled]":{color:Fe(s,a)(y),cursor:"not-allowed"}},rightSection:{width:24,padding:20,button:{color:Fe(p,t)(y)}}}),[h,m,v,b,w,t,n,r,o,e,s,a,c,d,p,S,y])},bee=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,label:o,disabled:s,...a}=e,c=te(),d=f.useCallback(m=>{m.shiftKey&&c(Po(!0))},[c]),p=f.useCallback(m=>{m.shiftKey||c(Po(!1))},[c]),h=vee();return i.jsx(wn,{label:n,placement:"top",hasArrow:!0,isOpen:!0,children:i.jsx(OE,{label:o?i.jsx(mo,{isDisabled:s,children:i.jsx(Lo,{children:o})}):void 0,ref:r,disabled:s,onKeyDown:d,onKeyUp:p,searchable:t,maxDropdownHeight:300,styles:h,...a})})},yee=f.memo(bee),xee=cs(V1,(e,t)=>({value:t,label:e})).sort((e,t)=>e.label.localeCompare(t.label));function wee(){const e=te(),{t}=be(),n=z(o=>o.ui.favoriteSchedulers),r=f.useCallback(o=>{e(cR(o))},[e]);return i.jsx(yee,{label:t("settings.favoriteSchedulers"),value:n,data:xee,onChange:r,clearable:!0,searchable:!0,maxSelectedValues:99,placeholder:t("settings.favoriteSchedulersPlaceholder")})}const See={ar:Bn.t("common.langArabic",{lng:"ar"}),nl:Bn.t("common.langDutch",{lng:"nl"}),en:Bn.t("common.langEnglish",{lng:"en"}),fr:Bn.t("common.langFrench",{lng:"fr"}),de:Bn.t("common.langGerman",{lng:"de"}),he:Bn.t("common.langHebrew",{lng:"he"}),it:Bn.t("common.langItalian",{lng:"it"}),ja:Bn.t("common.langJapanese",{lng:"ja"}),ko:Bn.t("common.langKorean",{lng:"ko"}),pl:Bn.t("common.langPolish",{lng:"pl"}),pt_BR:Bn.t("common.langBrPortuguese",{lng:"pt_BR"}),pt:Bn.t("common.langPortuguese",{lng:"pt"}),ru:Bn.t("common.langRussian",{lng:"ru"}),zh_CN:Bn.t("common.langSimplifiedChinese",{lng:"zh_CN"}),es:Bn.t("common.langSpanish",{lng:"es"}),uk:Bn.t("common.langUkranian",{lng:"ua"})},Cee=fe([Xe],({system:e,ui:t,generation:n})=>{const{shouldConfirmOnDelete:r,enableImageDebugging:o,consoleLogLevel:s,shouldLogToConsole:a,shouldAntialiasProgressImage:c,isNodesEnabled:d,shouldUseNSFWChecker:p,shouldUseWatermarker:h}=e,{shouldUseCanvasBetaLayout:m,shouldUseSliders:v,shouldShowProgressInViewer:b}=t,{shouldShowAdvancedOptions:w}=n;return{shouldConfirmOnDelete:r,enableImageDebugging:o,shouldUseCanvasBetaLayout:m,shouldUseSliders:v,shouldShowProgressInViewer:b,consoleLogLevel:s,shouldLogToConsole:a,shouldAntialiasProgressImage:c,shouldShowAdvancedOptions:w,isNodesEnabled:d,shouldUseNSFWChecker:p,shouldUseWatermarker:h}},{memoizeOptions:{resultEqualityCheck:Jt}}),kee=({children:e,config:t})=>{const n=te(),{t:r}=be(),o=(t==null?void 0:t.shouldShowBetaLayout)??!0,s=(t==null?void 0:t.shouldShowDeveloperSettings)??!0,a=(t==null?void 0:t.shouldShowResetWebUiText)??!0,c=(t==null?void 0:t.shouldShowAdvancedOptionsSettings)??!0,d=(t==null?void 0:t.shouldShowClearIntermediates)??!0,p=(t==null?void 0:t.shouldShowNodesToggle)??!0,h=(t==null?void 0:t.shouldShowLocalizationToggle)??!0;f.useEffect(()=>{s||n(V2(!1))},[s,n]);const{isNSFWCheckerAvailable:m,isWatermarkerAvailable:v}=F5(void 0,{selectFromResult:({data:X})=>({isNSFWCheckerAvailable:(X==null?void 0:X.nsfw_methods.includes("nsfw_checker"))??!1,isWatermarkerAvailable:(X==null?void 0:X.watermarking_methods.includes("invisible_watermark"))??!1})}),{isOpen:b,onOpen:w,onClose:y}=ss(),{isOpen:S,onOpen:k,onClose:_}=ss(),{shouldConfirmOnDelete:I,enableImageDebugging:P,shouldUseCanvasBetaLayout:E,shouldUseSliders:O,shouldShowProgressInViewer:R,consoleLogLevel:M,shouldLogToConsole:A,shouldAntialiasProgressImage:T,shouldShowAdvancedOptions:$,isNodesEnabled:Q,shouldUseNSFWChecker:B,shouldUseWatermarker:V}=z(Cee),q=f.useCallback(()=>{Object.keys(window.localStorage).forEach(X=>{(uR.includes(X)||X.startsWith(dR))&&localStorage.removeItem(X)}),y(),k()},[y,k]),G=f.useCallback(X=>{n(fR(X))},[n]),D=f.useCallback(X=>{n(pR(X))},[n]),L=f.useCallback(X=>{n(V2(X.target.checked))},[n]),W=f.useCallback(X=>{n(hR(X.target.checked))},[n]),{colorMode:Y,toggleColorMode:ae}=Ds(),ye=ar("localization").isFeatureEnabled,ce=z(U6);return i.jsxs(i.Fragment,{children:[f.cloneElement(e,{onClick:w}),i.jsxs(Ju,{isOpen:b,onClose:y,size:"2xl",isCentered:!0,children:[i.jsx(Da,{}),i.jsxs(Zu,{children:[i.jsx(Ma,{bg:"none",children:r("common.settingsLabel")}),i.jsx(Mb,{}),i.jsx(Aa,{children:i.jsxs(F,{sx:{gap:4,flexDirection:"column"},children:[i.jsxs(ql,{children:[i.jsx(Ys,{size:"sm",children:r("settings.general")}),i.jsx(Xo,{label:r("settings.confirmOnDelete"),isChecked:I,onChange:X=>n(B5(X.target.checked))}),c&&i.jsx(Xo,{label:r("settings.showAdvancedOptions"),isChecked:$,onChange:X=>n(mR(X.target.checked))})]}),i.jsxs(ql,{children:[i.jsx(Ys,{size:"sm",children:r("settings.generation")}),i.jsx(wee,{}),i.jsx(Xo,{label:"Enable NSFW Checker",isDisabled:!m,isChecked:B,onChange:X=>n(gR(X.target.checked))}),i.jsx(Xo,{label:"Enable Invisible Watermark",isDisabled:!v,isChecked:V,onChange:X=>n(vR(X.target.checked))})]}),i.jsxs(ql,{children:[i.jsx(Ys,{size:"sm",children:r("settings.ui")}),i.jsx(Xo,{label:r("common.darkMode"),isChecked:Y==="dark",onChange:ae}),i.jsx(Xo,{label:r("settings.useSlidersForAll"),isChecked:O,onChange:X=>n(bR(X.target.checked))}),i.jsx(Xo,{label:r("settings.showProgressInViewer"),isChecked:R,onChange:X=>n(H5(X.target.checked))}),i.jsx(Xo,{label:r("settings.antialiasProgressImages"),isChecked:T,onChange:X=>n(yR(X.target.checked))}),o&&i.jsx(Xo,{label:r("settings.alternateCanvasLayout"),useBadge:!0,badgeLabel:r("settings.beta"),isChecked:E,onChange:X=>n(xR(X.target.checked))}),p&&i.jsx(Xo,{label:r("settings.enableNodesEditor"),useBadge:!0,isChecked:Q,onChange:W}),h&&i.jsx(Xr,{disabled:!ye,label:r("common.languagePickerLabel"),value:ce,data:Object.entries(See).map(([X,K])=>({value:X,label:K})),onChange:D})]}),s&&i.jsxs(ql,{children:[i.jsx(Ys,{size:"sm",children:r("settings.developer")}),i.jsx(Xo,{label:r("settings.shouldLogToConsole"),isChecked:A,onChange:L}),i.jsx(Xr,{disabled:!A,label:r("settings.consoleLogLevel"),onChange:G,value:M,data:wR.concat()}),i.jsx(Xo,{label:r("settings.enableImageDebugging"),isChecked:P,onChange:X=>n(SR(X.target.checked))})]}),d&&i.jsx(gee,{}),i.jsxs(ql,{children:[i.jsx(Ys,{size:"sm",children:r("settings.resetWebUI")}),i.jsx(en,{colorScheme:"error",onClick:q,children:r("settings.resetWebUI")}),a&&i.jsxs(i.Fragment,{children:[i.jsx(Ye,{variant:"subtext",children:r("settings.resetWebUIDesc1")}),i.jsx(Ye,{variant:"subtext",children:r("settings.resetWebUIDesc2")})]})]})]})}),i.jsx(Ra,{children:i.jsx(en,{onClick:y,children:r("common.close")})})]})]}),i.jsxs(Ju,{closeOnOverlayClick:!1,isOpen:S,onClose:_,isCentered:!0,children:[i.jsx(Da,{backdropFilter:"blur(40px)"}),i.jsxs(Zu,{children:[i.jsx(Ma,{}),i.jsx(Aa,{children:i.jsx(F,{justifyContent:"center",children:i.jsx(Ye,{fontSize:"lg",children:i.jsx(Ye,{children:r("settings.resetComplete")})})})}),i.jsx(Ra,{})]})]})]})},_ee=fe(go,e=>{const{isConnected:t,isProcessing:n,statusTranslationKey:r,currentIteration:o,totalIterations:s,currentStatusHasSteps:a}=e;return{isConnected:t,isProcessing:n,currentIteration:o,totalIterations:s,statusTranslationKey:r,currentStatusHasSteps:a}},Ge),vk={ok:"green.400",working:"yellow.400",error:"red.400"},bk={ok:"green.600",working:"yellow.500",error:"red.500"},Pee=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,statusTranslationKey:o}=z(_ee),{t:s}=be(),a=f.useRef(null),c=f.useMemo(()=>t?"working":e?"ok":"error",[t,e]),d=f.useMemo(()=>{if(n&&r)return` (${n}/${r})`},[n,r]),p=a8(a);return i.jsxs(F,{ref:a,h:"full",px:2,alignItems:"center",gap:5,children:[i.jsx(ho,{children:p&&i.jsx(Ir.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:i.jsxs(Ye,{sx:{fontSize:"sm",fontWeight:"600",pb:"1px",userSelect:"none",color:bk[c],_dark:{color:vk[c]}},children:[s(o),d]})},"statusText")}),i.jsx(no,{as:ZH,sx:{boxSize:"0.5rem",color:bk[c],_dark:{color:vk[c]}}})]})},jee=()=>{const{t:e}=be(),t=ar("bugLink").isFeatureEnabled,n=ar("discordLink").isFeatureEnabled,r=ar("githubLink").isFeatureEnabled,o="http://github.com/invoke-ai/InvokeAI",s="https://discord.gg/ZmtBAhwWhy";return i.jsxs(F,{sx:{gap:2,alignItems:"center"},children:[i.jsx(i8,{}),i.jsx(pl,{}),i.jsx(Pee,{}),i.jsxs(Cd,{children:[i.jsx(kd,{as:Le,variant:"link","aria-label":e("accessibility.menu"),icon:i.jsx(YH,{}),sx:{boxSize:8}}),i.jsxs(Bc,{motionProps:nm,children:[i.jsxs(Qu,{title:e("common.communityLabel"),children:[r&&i.jsx(Pr,{as:"a",href:o,target:"_blank",icon:i.jsx(WH,{}),children:e("common.githubLabel")}),t&&i.jsx(Pr,{as:"a",href:`${o}/issues`,target:"_blank",icon:i.jsx(QH,{}),children:e("common.reportBugLabel")}),n&&i.jsx(Pr,{as:"a",href:s,target:"_blank",icon:i.jsx(HH,{}),children:e("common.discordLabel")})]}),i.jsxs(Qu,{title:e("common.settingsLabel"),children:[i.jsx(lee,{children:i.jsx(Pr,{as:"button",icon:i.jsx(pW,{}),children:e("common.hotkeysLabel")})}),i.jsx(kee,{children:i.jsx(Pr,{as:"button",icon:i.jsx(eW,{}),children:e("common.settingsLabel")})})]})]})]})]})},Iee=f.memo(jee);function Eee(e){return et({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 Oee(e){return et({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 Ree(e){return et({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 Mee(e){return et({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 Dee(e){return et({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 l8(e){return et({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 Aee=fe(go,e=>{const{isUploading:t}=e;let n="";return t&&(n="Uploading..."),{tooltip:n,shouldShow:t}}),Tee=()=>{const{shouldShow:e,tooltip:t}=z(Aee);return e?i.jsx(F,{sx:{alignItems:"center",justifyContent:"center",color:"base.600"},children:i.jsx(wn,{label:t,placement:"right",hasArrow:!0,children:i.jsx(fl,{})})}):null},Nee=f.memo(Tee),c8=e=>e.config,{createElement:Ic,createContext:$ee,forwardRef:u8,useCallback:ri,useContext:d8,useEffect:Ia,useImperativeHandle:f8,useLayoutEffect:zee,useMemo:Lee,useRef:Zo,useState:Fu}=z1,yk=z1["useId".toString()],Bee=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Gh=Bee?zee:()=>{},Fee=typeof yk=="function"?yk:()=>null;let Hee=0;function Ay(e=null){const t=Fee(),n=Zo(e||t||null);return n.current===null&&(n.current=""+Hee++),n.current}const Um=$ee(null);Um.displayName="PanelGroupContext";function p8({children:e=null,className:t="",collapsedSize:n=0,collapsible:r=!1,defaultSize:o=null,forwardedRef:s,id:a=null,maxSize:c=100,minSize:d=10,onCollapse:p=null,onResize:h=null,order:m=null,style:v={},tagName:b="div"}){const w=d8(Um);if(w===null)throw Error("Panel components must be rendered within a PanelGroup container");const y=Ay(a),{collapsePanel:S,expandPanel:k,getPanelStyle:_,registerPanel:I,resizePanel:P,unregisterPanel:E}=w,O=Zo({onCollapse:p,onResize:h});if(Ia(()=>{O.current.onCollapse=p,O.current.onResize=h}),d<0||d>100)throw Error(`Panel minSize must be between 0 and 100, but was ${d}`);if(c<0||c>100)throw Error(`Panel maxSize must be between 0 and 100, but was ${c}`);if(o!==null){if(o<0||o>100)throw Error(`Panel defaultSize must be between 0 and 100, but was ${o}`);d>o&&!r&&(console.error(`Panel minSize ${d} cannot be greater than defaultSize ${o}`),o=d)}const R=_(y,o),M=Zo({size:xk(R)}),A=Zo({callbacksRef:O,collapsedSize:n,collapsible:r,defaultSize:o,id:y,maxSize:c,minSize:d,order:m});return Gh(()=>{M.current.size=xk(R),A.current.callbacksRef=O,A.current.collapsedSize=n,A.current.collapsible=r,A.current.defaultSize=o,A.current.id=y,A.current.maxSize=c,A.current.minSize=d,A.current.order=m}),Gh(()=>(I(y,A),()=>{E(y)}),[m,y,I,E]),f8(s,()=>({collapse:()=>S(y),expand:()=>k(y),getCollapsed(){return M.current.size===0},getSize(){return M.current.size},resize:T=>P(y,T)}),[S,k,y,P]),Ic(b,{children:e,className:t,"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-id":y,"data-panel-size":parseFloat(""+R.flexGrow).toFixed(1),id:`data-panel-id-${y}`,style:{...R,...v}})}const ad=u8((e,t)=>Ic(p8,{...e,forwardedRef:t}));p8.displayName="Panel";ad.displayName="forwardRef(Panel)";function xk(e){const{flexGrow:t}=e;return typeof t=="string"?parseFloat(t):t}const dl=10;function Eu(e,t,n,r,o,s,a,c){const{sizes:d}=c||{},p=d||s;if(o===0)return p;const h=Qo(t),m=p.concat();let v=0;{const y=o<0?r:n,S=h.findIndex(P=>P.current.id===y),k=h[S],_=p[S],I=wk(k,Math.abs(o),_,e);if(_===I)return p;I===0&&_>0&&a.set(y,_),o=o<0?_-I:I-_}let b=o<0?n:r,w=h.findIndex(y=>y.current.id===b);for(;;){const y=h[w],S=p[w],k=Math.abs(o)-Math.abs(v),_=wk(y,0-k,S,e);if(S!==_&&(_===0&&S>0&&a.set(y.current.id,S),v+=S-_,m[w]=_,v.toPrecision(dl).localeCompare(Math.abs(o).toPrecision(dl),void 0,{numeric:!0})>=0))break;if(o<0){if(--w<0)break}else if(++w>=h.length)break}return v===0?p:(b=o<0?r:n,w=h.findIndex(y=>y.current.id===b),m[w]=p[w]+v,m)}function Vl(e,t,n){t.forEach((r,o)=>{const{callbacksRef:s,collapsedSize:a,collapsible:c,id:d}=e[o].current,p=n[d];if(p!==r){n[d]=r;const{onCollapse:h,onResize:m}=s.current;m&&m(r,p),c&&h&&((p==null||p===a)&&r!==a?h(!1):p!==a&&r===a&&h(!0))}})}function J0(e,t){if(t.length<2)return[null,null];const n=t.findIndex(a=>a.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 h8(e,t,n){if(e.size===1)return"100";const o=Qo(e).findIndex(a=>a.current.id===t),s=n[o];return s==null?"0":s.toPrecision(dl)}function Wee(e){const t=document.querySelector(`[data-panel-id="${e}"]`);return t||null}function Ty(e){const t=document.querySelector(`[data-panel-group-id="${e}"]`);return t||null}function Gm(e){const t=document.querySelector(`[data-panel-resize-handle-id="${e}"]`);return t||null}function Vee(e){return m8().findIndex(r=>r.getAttribute("data-panel-resize-handle-id")===e)??null}function m8(){return Array.from(document.querySelectorAll("[data-panel-resize-handle-id]"))}function g8(e){return Array.from(document.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function Ny(e,t,n){var d,p,h,m;const r=Gm(t),o=g8(e),s=r?o.indexOf(r):-1,a=((p=(d=n[s])==null?void 0:d.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[a,c]}function Qo(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 wk(e,t,n,r){var h;const o=n+t,{collapsedSize:s,collapsible:a,maxSize:c,minSize:d}=e.current;if(a){if(n>s){if(o<=d/2+s)return s}else if(!((h=r==null?void 0:r.type)==null?void 0:h.startsWith("key"))&&o{const{direction:a,panels:c}=e.current,d=Ty(t),{height:p,width:h}=d.getBoundingClientRect(),v=g8(t).map(b=>{const w=b.getAttribute("data-panel-resize-handle-id"),y=Qo(c),[S,k]=Ny(t,w,y);if(S==null||k==null)return()=>{};let _=0,I=100,P=0,E=0;y.forEach($=>{$.current.id===S?(I=$.current.maxSize,_=$.current.minSize):(P+=$.current.minSize,E+=$.current.maxSize)});const O=Math.min(I,100-P),R=Math.max(_,(y.length-1)*100-E),M=h8(c,S,o);b.setAttribute("aria-valuemax",""+Math.round(O)),b.setAttribute("aria-valuemin",""+Math.round(R)),b.setAttribute("aria-valuenow",""+Math.round(parseInt(M)));const A=$=>{if(!$.defaultPrevented)switch($.key){case"Enter":{$.preventDefault();const Q=y.findIndex(B=>B.current.id===S);if(Q>=0){const B=y[Q],V=o[Q];if(V!=null){let q=0;V.toPrecision(dl)<=B.current.minSize.toPrecision(dl)?q=a==="horizontal"?h:p:q=-(a==="horizontal"?h:p);const G=Eu($,c,S,k,q,o,s.current,null);o!==G&&r(G)}}break}}};b.addEventListener("keydown",A);const T=Wee(S);return T!=null&&b.setAttribute("aria-controls",T.id),()=>{b.removeAttribute("aria-valuemax"),b.removeAttribute("aria-valuemin"),b.removeAttribute("aria-valuenow"),b.removeEventListener("keydown",A),T!=null&&b.removeAttribute("aria-controls")}});return()=>{v.forEach(b=>b())}},[e,t,n,s,r,o])}function Gee({disabled:e,handleId:t,resizeHandler:n}){Ia(()=>{if(e||n==null)return;const r=Gm(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 a=m8(),c=Vee(t);v8(c!==null);const d=s.shiftKey?c>0?c-1:a.length-1:c+1{r.removeEventListener("keydown",o)}},[e,t,n])}function qee(e,t){if(e.length!==t.length)return!1;for(let n=0;nR.current.id===P),O=r[E];if(O.current.collapsible){const R=h[E];(R===0||R.toPrecision(dl)===O.current.minSize.toPrecision(dl))&&(k=k<0?-O.current.minSize*w:O.current.minSize*w)}return k}else return b8(e,n,o,c,d)}function Xee(e){return e.type==="keydown"}function x1(e){return e.type.startsWith("mouse")}function w1(e){return e.type.startsWith("touch")}let S1=null,Ki=null;function y8(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 Yee(){Ki!==null&&(document.head.removeChild(Ki),S1=null,Ki=null)}function Z0(e){if(S1===e)return;S1=e;const t=y8(e);Ki===null&&(Ki=document.createElement("style"),document.head.appendChild(Ki)),Ki.innerHTML=`*{cursor: ${t}!important;}`}function Qee(e,t=10){let n=null;return(...o)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...o)},t)}}function x8(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 w8(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 Jee(e,t,n){const r=w8(e,n);if(r){const o=x8(t);return r[o]??null}return null}function Zee(e,t,n,r){const o=x8(t),s=w8(e,r)||{};s[o]=n;try{r.setItem(`PanelGroup:sizes:${e}`,JSON.stringify(s))}catch(a){console.error(a)}}const ev={};function Sk(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 Ou={getItem:e=>(Sk(Ou),Ou.getItem(e)),setItem:(e,t)=>{Sk(Ou),Ou.setItem(e,t)}};function S8({autoSaveId:e,children:t=null,className:n="",direction:r,disablePointerEventsDuringResize:o=!1,forwardedRef:s,id:a=null,onLayout:c,storage:d=Ou,style:p={},tagName:h="div"}){const m=Ay(a),[v,b]=Fu(null),[w,y]=Fu(new Map),S=Zo(null),k=Zo({onLayout:c});Ia(()=>{k.current.onLayout=c});const _=Zo({}),[I,P]=Fu([]),E=Zo(new Map),O=Zo(0),R=Zo({direction:r,panels:w,sizes:I});f8(s,()=>({getLayout:()=>{const{sizes:D}=R.current;return D},setLayout:D=>{const L=D.reduce((ye,ce)=>ye+ce,0);v8(L===100,"Panel sizes must add up to 100%");const{panels:W}=R.current,Y=_.current,ae=Qo(W);P(D),Vl(ae,D,Y)}}),[]),Gh(()=>{R.current.direction=r,R.current.panels=w,R.current.sizes=I}),Uee({committedValuesRef:R,groupId:m,panels:w,setSizes:P,sizes:I,panelSizeBeforeCollapse:E}),Ia(()=>{const{onLayout:D}=k.current,{panels:L,sizes:W}=R.current;if(W.length>0){D&&D(W);const Y=_.current,ae=Qo(L);Vl(ae,W,Y)}},[I]),Gh(()=>{if(R.current.sizes.length===w.size)return;let L=null;if(e){const W=Qo(w);L=Jee(e,W,d)}if(L!=null)P(L);else{const W=Qo(w);let Y=0,ae=0,ye=0;if(W.forEach(ce=>{ye+=ce.current.minSize,ce.current.defaultSize===null?Y++:ae+=ce.current.defaultSize}),ae>100)throw new Error("Default panel sizes cannot exceed 100%");if(W.length>1&&Y===0&&ae!==100)throw new Error("Invalid default sizes specified for panels");if(ye>100)throw new Error("Minimum panel sizes cannot exceed 100%");P(W.map(ce=>ce.current.defaultSize===null?(100-ae)/Y:ce.current.defaultSize))}},[e,w,d]),Ia(()=>{if(e){if(I.length===0||I.length!==w.size)return;const D=Qo(w);ev[e]||(ev[e]=Qee(Zee,100)),ev[e](e,D,I,d)}},[e,w,I,d]);const M=ri((D,L)=>{const{panels:W}=R.current;return W.size===0?{flexBasis:0,flexGrow:L??void 0,flexShrink:1,overflow:"hidden"}:{flexBasis:0,flexGrow:h8(W,D,I),flexShrink:1,overflow:"hidden",pointerEvents:o&&v!==null?"none":void 0}},[v,o,I]),A=ri((D,L)=>{y(W=>{if(W.has(D))return W;const Y=new Map(W);return Y.set(D,L),Y})},[]),T=ri(D=>W=>{W.preventDefault();const{direction:Y,panels:ae,sizes:ye}=R.current,ce=Qo(ae),[X,K]=Ny(m,D,ce);if(X==null||K==null)return;let U=Kee(W,m,D,ce,Y,ye,S.current);if(U===0)return;const re=Ty(m).getBoundingClientRect(),oe=Y==="horizontal";document.dir==="rtl"&&oe&&(U=-U);const pe=oe?re.width:re.height,ie=U/pe*100,ge=Eu(W,ae,X,K,ie,ye,E.current,S.current),ke=!qee(ye,ge);if((x1(W)||w1(W))&&O.current!=ie&&Z0(ke?oe?"horizontal":"vertical":oe?U<0?"horizontal-min":"horizontal-max":U<0?"vertical-min":"vertical-max"),ke){const xe=_.current;P(ge),Vl(ce,ge,xe)}O.current=ie},[m]),$=ri(D=>{y(L=>{if(!L.has(D))return L;const W=new Map(L);return W.delete(D),W})},[]),Q=ri(D=>{const{panels:L,sizes:W}=R.current,Y=L.get(D);if(Y==null)return;const{collapsedSize:ae,collapsible:ye}=Y.current;if(!ye)return;const ce=Qo(L),X=ce.indexOf(Y);if(X<0)return;const K=W[X];if(K===ae)return;E.current.set(D,K);const[U,se]=J0(D,ce);if(U==null||se==null)return;const oe=X===ce.length-1?K:ae-K,pe=Eu(null,L,U,se,oe,W,E.current,null);if(W!==pe){const ie=_.current;P(pe),Vl(ce,pe,ie)}},[]),B=ri(D=>{const{panels:L,sizes:W}=R.current,Y=L.get(D);if(Y==null)return;const{collapsedSize:ae,minSize:ye}=Y.current,ce=E.current.get(D)||ye;if(!ce)return;const X=Qo(L),K=X.indexOf(Y);if(K<0||W[K]!==ae)return;const[se,re]=J0(D,X);if(se==null||re==null)return;const pe=K===X.length-1?ae-ce:ce,ie=Eu(null,L,se,re,pe,W,E.current,null);if(W!==ie){const ge=_.current;P(ie),Vl(X,ie,ge)}},[]),V=ri((D,L)=>{const{panels:W,sizes:Y}=R.current,ae=W.get(D);if(ae==null)return;const{collapsedSize:ye,collapsible:ce,maxSize:X,minSize:K}=ae.current,U=Qo(W),se=U.indexOf(ae);if(se<0)return;const re=Y[se];if(re===L)return;ce&&L===ye||(L=Math.min(X,Math.max(K,L)));const[oe,pe]=J0(D,U);if(oe==null||pe==null)return;const ge=se===U.length-1?re-L:L-re,ke=Eu(null,W,oe,pe,ge,Y,E.current,null);if(Y!==ke){const xe=_.current;P(ke),Vl(U,ke,xe)}},[]),q=Lee(()=>({activeHandleId:v,collapsePanel:Q,direction:r,expandPanel:B,getPanelStyle:M,groupId:m,registerPanel:A,registerResizeHandle:T,resizePanel:V,startDragging:(D,L)=>{if(b(D),x1(L)||w1(L)){const W=Gm(D);S.current={dragHandleRect:W.getBoundingClientRect(),dragOffset:b8(L,D,r),sizes:R.current.sizes}}},stopDragging:()=>{Yee(),b(null),S.current=null},unregisterPanel:$}),[v,Q,r,B,M,m,A,T,V,$]),G={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return Ic(Um.Provider,{children:Ic(h,{children:t,className:n,"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":m,style:{...G,...p}}),value:q})}const $y=u8((e,t)=>Ic(S8,{...e,forwardedRef:t}));S8.displayName="PanelGroup";$y.displayName="forwardRef(PanelGroup)";function C1({children:e=null,className:t="",disabled:n=!1,id:r=null,onDragging:o,style:s={},tagName:a="div"}){const c=Zo(null),d=Zo({onDragging:o});Ia(()=>{d.current.onDragging=o});const p=d8(Um);if(p===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{activeHandleId:h,direction:m,groupId:v,registerResizeHandle:b,startDragging:w,stopDragging:y}=p,S=Ay(r),k=h===S,[_,I]=Fu(!1),[P,E]=Fu(null),O=ri(()=>{c.current.blur(),y();const{onDragging:A}=d.current;A&&A(!1)},[y]);Ia(()=>{if(n)E(null);else{const M=b(S);E(()=>M)}},[n,S,b]),Ia(()=>{if(n||P==null||!k)return;const M=Q=>{P(Q)},A=Q=>{P(Q)},$=c.current.ownerDocument;return $.body.addEventListener("contextmenu",O),$.body.addEventListener("mousemove",M),$.body.addEventListener("touchmove",M),$.body.addEventListener("mouseleave",A),window.addEventListener("mouseup",O),window.addEventListener("touchend",O),()=>{$.body.removeEventListener("contextmenu",O),$.body.removeEventListener("mousemove",M),$.body.removeEventListener("touchmove",M),$.body.removeEventListener("mouseleave",A),window.removeEventListener("mouseup",O),window.removeEventListener("touchend",O)}},[m,n,k,P,O]),Gee({disabled:n,handleId:S,resizeHandler:P});const R={cursor:y8(m),touchAction:"none",userSelect:"none"};return Ic(a,{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":S,onBlur:()=>I(!1),onFocus:()=>I(!0),onMouseDown:M=>{w(S,M.nativeEvent);const{onDragging:A}=d.current;A&&A(!0)},onMouseUp:O,onTouchCancel:O,onTouchEnd:O,onTouchStart:M=>{w(S,M.nativeEvent);const{onDragging:A}=d.current;A&&A(!0)},ref:c,role:"separator",style:{...R,...s},tabIndex:0})}C1.displayName="PanelResizeHandle";const ete=(e,t,n,r="horizontal")=>{const o=f.useRef(null),[s,a]=f.useState(t),c=f.useCallback(()=>{var p,h;const d=(p=o.current)==null?void 0:p.getSize();d!==void 0&&d{const d=document.querySelector(`[data-panel-group-id="${n}"]`),p=document.querySelectorAll("[data-panel-resize-handle-id]");if(!d)return;const h=new ResizeObserver(()=>{let m=r==="horizontal"?d.getBoundingClientRect().width:d.getBoundingClientRect().height;p.forEach(v=>{m-=r==="horizontal"?v.getBoundingClientRect().width:v.getBoundingClientRect().height}),a(e/m*100)});return h.observe(d),p.forEach(m=>{h.observe(m)}),window.addEventListener("resize",c),()=>{h.disconnect(),window.removeEventListener("resize",c)}},[n,c,s,e,r]),{ref:o,minSizePct:s}},tte=fe([Xe],e=>{const{initialImage:t}=e.generation;return{initialImage:t,isResetButtonDisabled:!t}},Ge),nte=()=>{const{initialImage:e}=z(tte),{currentData:t}=os((e==null?void 0:e.imageName)??oo.skipToken),n=f.useMemo(()=>{if(t)return{id:"initial-image",payloadType:"IMAGE_DTO",payload:{imageDTO:t}}},[t]),r=f.useMemo(()=>({id:"initial-image",actionType:"SET_INITIAL_IMAGE"}),[]);return i.jsx(yi,{imageDTO:t,droppableData:r,draggableData:n,isUploadDisabled:!0,fitContainer:!0,dropLabel:"Set as Initial Image",noContentFallback:i.jsx(mi,{label:"No initial image selected"})})},rte=fe([Xe],e=>{const{initialImage:t}=e.generation;return{isResetButtonDisabled:!t}},Ge),ote={type:"SET_INITIAL_IMAGE"},ste=()=>{const{isResetButtonDisabled:e}=z(rte),t=te(),{getUploadButtonProps:n,getUploadInputProps:r}=Vm({postUploadAction:ote}),o=f.useCallback(()=>{t(CR())},[t]);return i.jsxs(F,{layerStyle:"first",sx:{position:"relative",flexDirection:"column",height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",p:4,gap:4},children:[i.jsxs(F,{sx:{w:"full",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},children:[i.jsx(Ye,{sx:{fontWeight:600,userSelect:"none",color:"base.700",_dark:{color:"base.200"}},children:"Initial Image"}),i.jsx(pl,{}),i.jsx(Le,{tooltip:"Upload Initial Image","aria-label":"Upload Initial Image",icon:i.jsx(Rd,{}),...n()}),i.jsx(Le,{tooltip:"Reset Initial Image","aria-label":"Reset Initial Image",icon:i.jsx(Vb,{}),onClick:o,isDisabled:e})]}),i.jsx(nte,{}),i.jsx("input",{...r()})]})},ate=e=>{const{label:t,activeLabel:n,children:r,defaultIsOpen:o=!1}=e,{isOpen:s,onToggle:a}=ss({defaultIsOpen:o}),{colorMode:c}=Ds();return i.jsxs(Ee,{children:[i.jsxs(F,{onClick:a,sx:{alignItems:"center",p:2,px:4,gap:2,borderTopRadius:"base",borderBottomRadius:s?0:"base",bg:s?Fe("base.200","base.750")(c):Fe("base.150","base.800")(c),color:Fe("base.900","base.100")(c),_hover:{bg:s?Fe("base.250","base.700")(c):Fe("base.200","base.750")(c)},fontSize:"sm",fontWeight:600,cursor:"pointer",transitionProperty:"common",transitionDuration:"normal",userSelect:"none"},children:[t,i.jsx(ho,{children:n&&i.jsx(Ir.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:i.jsx(Ye,{sx:{color:"accent.500",_dark:{color:"accent.300"}},children:n})},"statusText")}),i.jsx(pl,{}),i.jsx(ly,{sx:{w:"1rem",h:"1rem",transform:s?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]}),i.jsx(sm,{in:s,animateOpacity:!0,style:{overflow:"unset"},children:i.jsx(Ee,{sx:{p:4,borderBottomRadius:"base",bg:"base.100",_dark:{bg:"base.800"}},children:r})})]})},Ro=f.memo(ate),ite=fe(Xe,e=>{const{combinatorial:t,isEnabled:n}=e.dynamicPrompts;return{combinatorial:t,isDisabled:!n}},Ge),lte=()=>{const{combinatorial:e,isDisabled:t}=z(ite),n=te(),r=f.useCallback(()=>{n(kR())},[n]);return i.jsx(Er,{isDisabled:t,label:"Combinatorial Generation",isChecked:e,onChange:r})},cte=fe(Xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{isEnabled:t}},Ge),ute=()=>{const e=te(),{isEnabled:t}=z(cte),n=f.useCallback(()=>{e(_R())},[e]);return i.jsx(Er,{label:"Enable Dynamic Prompts",isChecked:t,onChange:n})},dte=fe(Xe,e=>{const{maxPrompts:t,combinatorial:n,isEnabled:r}=e.dynamicPrompts,{min:o,sliderMax:s,inputMax:a}=e.config.sd.dynamicPrompts.maxPrompts;return{maxPrompts:t,min:o,sliderMax:s,inputMax:a,isDisabled:!r||!n}},Ge),fte=()=>{const{maxPrompts:e,min:t,sliderMax:n,inputMax:r,isDisabled:o}=z(dte),s=te(),a=f.useCallback(d=>{s(PR(d))},[s]),c=f.useCallback(()=>{s(jR())},[s]);return i.jsx(_t,{label:"Max Prompts",isDisabled:o,min:t,max:n,value:e,onChange:a,sliderNumberInputProps:{max:r},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:c})},pte=fe(Xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{activeLabel:t?"Enabled":void 0}},Ge),zd=()=>{const{activeLabel:e}=z(pte);return ar("dynamicPrompting").isFeatureEnabled?i.jsx(Ro,{label:"Dynamic Prompts",activeLabel:e,children:i.jsxs(F,{sx:{gap:2,flexDir:"column"},children:[i.jsx(ute,{}),i.jsx(lte,{}),i.jsx(fte,{})]})}):null},hte=fe(Xe,e=>{const{shouldUseNoiseSettings:t,shouldUseCpuNoise:n}=e.generation;return{isDisabled:!t,shouldUseCpuNoise:n}},Ge),mte=()=>{const e=te(),{isDisabled:t,shouldUseCpuNoise:n}=z(hte),r=o=>e(IR(o.target.checked));return i.jsx(Er,{isDisabled:t,label:"Use CPU Noise",isChecked:n,onChange:r})},gte=fe(Xe,e=>{const{shouldUseNoiseSettings:t,threshold:n}=e.generation;return{isDisabled:!t,threshold:n}},Ge);function vte(){const e=te(),{threshold:t,isDisabled:n}=z(gte),{t:r}=be();return i.jsx(_t,{isDisabled:n,label:r("parameters.noiseThreshold"),min:0,max:20,step:.1,onChange:o=>e(U2(o)),handleReset:()=>e(U2(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const bte=()=>{const e=te(),t=z(r=>r.generation.shouldUseNoiseSettings),n=r=>e(ER(r.target.checked));return i.jsx(Er,{label:"Enable Noise Settings",isChecked:t,onChange:n})},yte=fe(Xe,e=>{const{shouldUseNoiseSettings:t,perlin:n}=e.generation;return{isDisabled:!t,perlin:n}},Ge);function xte(){const e=te(),{perlin:t,isDisabled:n}=z(yte),{t:r}=be();return i.jsx(_t,{isDisabled:n,label:r("parameters.perlinNoise"),min:0,max:1,step:.05,onChange:o=>e(G2(o)),handleReset:()=>e(G2(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const wte=fe(Xe,e=>{const{shouldUseNoiseSettings:t}=e.generation;return{activeLabel:t?"Enabled":void 0}},Ge),Ste=()=>{const{t:e}=be(),t=ar("noise").isFeatureEnabled,n=ar("perlinNoise").isFeatureEnabled,r=ar("noiseThreshold").isFeatureEnabled,{activeLabel:o}=z(wte);return t?i.jsx(Ro,{label:e("parameters.noiseSettings"),activeLabel:o,children:i.jsxs(F,{sx:{gap:2,flexDirection:"column"},children:[i.jsx(bte,{}),i.jsx(mte,{}),n&&i.jsx(xte,{}),r&&i.jsx(vte,{})]})}):null},qm=f.memo(Ste),Cte=fe(go,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:Jt}}),kte=e=>{const t=te(),{btnGroupWidth:n="auto",...r}=e,{isProcessing:o,isConnected:s,isCancelable:a,cancelType:c,isCancelScheduled:d,sessionId:p}=z(Cte),h=f.useCallback(()=>{if(p){if(c==="scheduled"){t(OR());return}t(RR({session_id:p}))}},[t,p,c]),{t:m}=be(),v=f.useCallback(y=>{const S=Array.isArray(y)?y[0]:y;t(MR(S))},[t]);rt("shift+x",()=>{(s||o)&&a&&h()},[s,o,a]);const b=f.useMemo(()=>m(d?"parameters.cancel.isScheduled":c==="immediate"?"parameters.cancel.immediate":"parameters.cancel.schedule"),[m,c,d]),w=f.useMemo(()=>d?i.jsx(zp,{}):c==="immediate"?i.jsx(Dee,{}):i.jsx(Eee,{}),[c,d]);return i.jsxs(nr,{isAttached:!0,width:n,children:[i.jsx(Le,{icon:w,tooltip:b,"aria-label":b,isDisabled:!s||!o||!a,onClick:h,colorScheme:"error",id:"cancel-button",...r}),i.jsxs(Cd,{closeOnSelect:!1,children:[i.jsx(kd,{as:Le,tooltip:m("parameters.cancel.setType"),"aria-label":m("parameters.cancel.setType"),icon:i.jsx(eU,{w:"1em",h:"1em"}),paddingX:0,paddingY:0,colorScheme:"error",minWidth:5,...r}),i.jsx(Bc,{minWidth:"240px",children:i.jsxs(c6,{value:c,title:"Cancel Type",type:"radio",onChange:v,children:[i.jsx(Vp,{value:"immediate",children:m("parameters.cancel.immediate")}),i.jsx(Vp,{value:"scheduled",children:m("parameters.cancel.schedule")})]})})]})]})},Km=f.memo(kte),_te=fe([Xe,Kn],(e,t)=>{const{generation:n,system:r}=e,{initialImage:o}=n,{isProcessing:s,isConnected:a}=r;let c=!0;const d=[];t==="img2img"&&!o&&(c=!1,d.push("No initial image selected"));const{isSuccess:p}=DR.endpoints.getMainModels.select(U1)(e);return p||(c=!1,d.push("Models are not loaded")),s&&(c=!1,d.push("System Busy")),a||(c=!1,d.push("System Disconnected")),Io(e.controlNet.controlNets,(h,m)=>{h.model||(c=!1,d.push(`ControlNet ${m} has no model selected.`))}),{isReady:c,reasonsWhyNotReady:d}},Ge),Ld=()=>{const{isReady:e}=z(_te);return e},Pte=fe(go,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:Jt}}),jte=()=>{const{t:e}=be(),{isProcessing:t,currentStep:n,totalSteps:r,currentStatusHasSteps:o}=z(Pte),s=n?Math.round(n*100/r):0;return i.jsx(C6,{value:s,"aria-label":e("accessibility.invokeProgressBar"),isIndeterminate:t&&!o,height:"full",colorScheme:"accent"})},C8=f.memo(jte),Ck={_disabled:{bg:"none",color:"base.600",cursor:"not-allowed",_hover:{color:"base.600",bg:"none"}}},Ite=fe([Xe,Kn,Cr],({gallery:e},t,n)=>{const{autoAddBoardId:r}=e;return{isBusy:n,autoAddBoardId:r,activeTabName:t}},Ge);function zy(e){const{iconButton:t=!1,...n}=e,r=te(),o=Ld(),{isBusy:s,autoAddBoardId:a,activeTabName:c}=z(Ite),d=Rm(a),p=f.useCallback(()=>{r(dd()),r(fd(c))},[r,c]),{t:h}=be();return rt(["ctrl+enter","meta+enter"],p,{enabled:()=>o,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[o,c]),i.jsx(Ee,{style:{flexGrow:4},position:"relative",children:i.jsxs(Ee,{style:{position:"relative"},children:[!o&&i.jsx(Ee,{borderRadius:"base",style:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip"},...n,children:i.jsx(C8,{})}),i.jsx(wn,{placement:"top",hasArrow:!0,openDelay:500,label:a?`Auto-Adding to ${d}`:void 0,children:t?i.jsx(Le,{"aria-label":h("parameters.invoke"),type:"submit",icon:i.jsx(wP,{}),isDisabled:!o||s,onClick:p,tooltip:h("parameters.invoke"),tooltipProps:{placement:"top"},colorScheme:"accent",id:"invoke-button",...n,sx:{w:"full",flexGrow:1,...s?Ck:{}}}):i.jsx(en,{"aria-label":h("parameters.invoke"),type:"submit",isDisabled:!o||s,onClick:p,colorScheme:"accent",id:"invoke-button",...n,sx:{w:"full",flexGrow:1,fontWeight:700,...s?Ck:{}},children:"Invoke"})})]})})}const Bd=()=>i.jsxs(F,{gap:2,children:[i.jsx(zy,{}),i.jsx(Km,{})]}),Ly=e=>{e.stopPropagation()},Ete=Ae((e,t)=>{const n=te(),r=f.useCallback(s=>{s.shiftKey&&n(Po(!0))},[n]),o=f.useCallback(s=>{s.shiftKey||n(Po(!1))},[n]);return i.jsx(V6,{ref:t,onPaste:Ly,onKeyDown:r,onKeyUp:o,...e})}),Xm=f.memo(Ete),Ote=e=>{const{onClick:t}=e;return i.jsx(Le,{size:"sm","aria-label":"Add Embedding",tooltip:"Add Embedding",icon:i.jsx(Fb,{}),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})},Ym=f.memo(Ote),By="28rem",Qm=e=>{const{onSelect:t,isOpen:n,onClose:r,children:o}=e,{data:s}=AR(),a=f.useRef(null),c=z(h=>h.generation.model),d=f.useMemo(()=>{if(!s)return[];const h=[];return Io(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:hr[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=f.useCallback(h=>{h&&t(h)},[t]);return i.jsxs(Nb,{initialFocusRef:a,isOpen:n,onClose:r,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[i.jsx(Tb,{children:o}),i.jsx($b,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:i.jsx(w6,{sx:{p:0,w:`calc(${By} - 2rem )`},children:d.length===0?i.jsx(F,{sx:{justifyContent:"center",p:2,fontSize:"sm",color:"base.500",_dark:{color:"base.700"}},children:i.jsx(Ye,{children:"No Embeddings Loaded"})}):i.jsx(sr,{inputRef:a,autoFocus:!0,placeholder:"Add Embedding",value:null,data:d,nothingFound:"No matching Embeddings",itemComponent:Ri,disabled:d.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})})})]})},k8=()=>{const e=z(m=>m.generation.negativePrompt),t=f.useRef(null),{isOpen:n,onClose:r,onOpen:o}=ss(),s=te(),{t:a}=be(),c=f.useCallback(m=>{s(Du(m.target.value))},[s]),d=f.useCallback(m=>{m.key==="<"&&o()},[o]),p=f.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 w=b.length;b+=e.slice(v),_i.flushSync(()=>{s(Du(b))}),t.current.selectionEnd=w,r()},[s,r,e]),h=ar("embedding").isFeatureEnabled;return i.jsxs(mo,{children:[i.jsx(Qm,{isOpen:n,onClose:r,onSelect:p,children:i.jsx(Xm,{id:"negativePrompt",name:"negativePrompt",ref:t,value:e,placeholder:a("parameters.negativePromptPlaceholder"),onChange:c,resize:"vertical",fontSize:"sm",minH:16,...h&&{onKeyDown:d}})}),!n&&h&&i.jsx(Ee,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:i.jsx(Ym,{onClick:o})})]})},Rte=fe([Xe,Kn],({generation:e,ui:t},n)=>({shouldPinParametersPanel:t.shouldPinParametersPanel,prompt:e.positivePrompt,activeTabName:n}),{memoizeOptions:{resultEqualityCheck:Jt}}),_8=()=>{const e=te(),{prompt:t,shouldPinParametersPanel:n,activeTabName:r}=z(Rte),o=Ld(),s=f.useRef(null),{isOpen:a,onClose:c,onOpen:d}=ss(),{t:p}=be(),h=f.useCallback(w=>{e(Mu(w.target.value))},[e]);rt("alt+a",()=>{var w;(w=s.current)==null||w.focus()},[]);const m=f.useCallback(w=>{if(!s.current)return;const y=s.current.selectionStart;if(y===void 0)return;let S=t.slice(0,y);S[S.length-1]!=="<"&&(S+="<"),S+=`${w}>`;const k=S.length;S+=t.slice(y),_i.flushSync(()=>{e(Mu(S))}),s.current.selectionStart=k,s.current.selectionEnd=k,c()},[e,c,t]),v=ar("embedding").isFeatureEnabled,b=f.useCallback(w=>{w.key==="Enter"&&w.shiftKey===!1&&o&&(w.preventDefault(),e(dd()),e(fd(r))),v&&w.key==="<"&&d()},[o,e,r,d,v]);return i.jsxs(Ee,{position:"relative",children:[i.jsx(mo,{children:i.jsx(Qm,{isOpen:a,onClose:c,onSelect:m,children:i.jsx(Xm,{id:"prompt",name:"prompt",ref:s,value:t,placeholder:p("parameters.positivePromptPlaceholder"),onChange:h,onKeyDown:b,resize:"vertical",minH:32})})}),!a&&v&&i.jsx(Ee,{sx:{position:"absolute",top:n?5:0,insetInlineEnd:0},children:i.jsx(Ym,{onClick:d})})]})};function Mte(){const e=z(o=>o.sdxl.shouldConcatSDXLStylePrompt),t=z(o=>o.ui.shouldPinParametersPanel),n=te(),r=()=>{n(TR(!e))};return i.jsx(Le,{"aria-label":"Concat",tooltip:"Concatenates Basic Prompt with Style (Recommended)",variant:"outline",isChecked:e,onClick:r,icon:i.jsx(yP,{}),size:"xs",sx:{position:"absolute",insetInlineEnd:1,top:t?12:20,border:"none",color:e?"accent.500":"base.500",_hover:{bg:"none"}}})}const kk={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 P8(){return i.jsxs(F,{children:[i.jsx(Ee,{as:Ir.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",...kk,_dark:{borderColor:"accent.500"}}}),i.jsx(Ee,{as:Ir.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:i.jsx(yP,{size:12})}),i.jsx(Ee,{as:Ir.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",...kk,_dark:{borderColor:"accent.500"}}})]})}const Dte=fe([Xe,Kn],({sdxl:e},t)=>{const{negativeStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:Jt}}),Ate=()=>{const e=te(),t=Ld(),n=f.useRef(null),{isOpen:r,onClose:o,onOpen:s}=ss(),{prompt:a,activeTabName:c,shouldConcatSDXLStylePrompt:d}=z(Dte),p=f.useCallback(b=>{e(q2(b.target.value))},[e]),h=f.useCallback(b=>{if(!n.current)return;const w=n.current.selectionStart;if(w===void 0)return;let y=a.slice(0,w);y[y.length-1]!=="<"&&(y+="<"),y+=`${b}>`;const S=y.length;y+=a.slice(w),_i.flushSync(()=>{e(q2(y))}),n.current.selectionStart=S,n.current.selectionEnd=S,o()},[e,o,a]),m=ar("embedding").isFeatureEnabled,v=f.useCallback(b=>{b.key==="Enter"&&b.shiftKey===!1&&t&&(b.preventDefault(),e(dd()),e(fd(c))),m&&b.key==="<"&&s()},[t,e,c,s,m]);return i.jsxs(Ee,{position:"relative",children:[i.jsx(ho,{children:d&&i.jsx(Ee,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:i.jsx(P8,{})})}),i.jsx(mo,{children:i.jsx(Qm,{isOpen:r,onClose:o,onSelect:h,children:i.jsx(Xm,{id:"prompt",name:"prompt",ref:n,value:a,placeholder:"Negative Style Prompt",onChange:p,onKeyDown:v,resize:"vertical",fontSize:"sm",minH:16})})}),!r&&m&&i.jsx(Ee,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:i.jsx(Ym,{onClick:s})})]})},Tte=fe([Xe,Kn],({sdxl:e},t)=>{const{positiveStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:Jt}}),Nte=()=>{const e=te(),t=Ld(),n=f.useRef(null),{isOpen:r,onClose:o,onOpen:s}=ss(),{prompt:a,activeTabName:c,shouldConcatSDXLStylePrompt:d}=z(Tte),p=f.useCallback(b=>{e(K2(b.target.value))},[e]),h=f.useCallback(b=>{if(!n.current)return;const w=n.current.selectionStart;if(w===void 0)return;let y=a.slice(0,w);y[y.length-1]!=="<"&&(y+="<"),y+=`${b}>`;const S=y.length;y+=a.slice(w),_i.flushSync(()=>{e(K2(y))}),n.current.selectionStart=S,n.current.selectionEnd=S,o()},[e,o,a]),m=ar("embedding").isFeatureEnabled,v=f.useCallback(b=>{b.key==="Enter"&&b.shiftKey===!1&&t&&(b.preventDefault(),e(dd()),e(fd(c))),m&&b.key==="<"&&s()},[t,e,c,s,m]);return i.jsxs(Ee,{position:"relative",children:[i.jsx(ho,{children:d&&i.jsx(Ee,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:i.jsx(P8,{})})}),i.jsx(mo,{children:i.jsx(Qm,{isOpen:r,onClose:o,onSelect:h,children:i.jsx(Xm,{id:"prompt",name:"prompt",ref:n,value:a,placeholder:"Positive Style Prompt",onChange:p,onKeyDown:v,resize:"vertical",minH:16})})}),!r&&m&&i.jsx(Ee,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:i.jsx(Ym,{onClick:s})})]})};function j8(){return i.jsxs(F,{sx:{flexDirection:"column",gap:2},children:[i.jsx(_8,{}),i.jsx(Mte,{}),i.jsx(Nte,{}),i.jsx(k8,{}),i.jsx(Ate,{})]})}const qc=()=>{const{isRefinerAvailable:e}=na(G1,{selectFromResult:({data:t})=>({isRefinerAvailable:t?t.ids.length>0:!1})});return e},$te=fe([Xe],({sdxl:e,hotkeys:t})=>{const{refinerAestheticScore:n}=e,{shift:r}=t;return{refinerAestheticScore:n,shift:r}},Ge),zte=()=>{const{refinerAestheticScore:e,shift:t}=z($te),n=qc(),r=te(),o=f.useCallback(a=>r(X2(a)),[r]),s=f.useCallback(()=>r(X2(6)),[r]);return i.jsx(_t,{label:"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})},Lte=f.memo(zte),qh=/^-?(0\.)?\.?$/,Bte=e=>{const{label:t,isDisabled:n=!1,showStepper:r=!0,isInvalid:o,value:s,onChange:a,min:c,max:d,isInteger:p=!0,formControlProps:h,formLabelProps:m,numberInputFieldProps:v,numberInputStepperProps:b,tooltipProps:w,...y}=e,S=te(),[k,_]=f.useState(String(s));f.useEffect(()=>{!k.match(qh)&&s!==Number(k)&&_(String(s))},[s,k]);const I=R=>{_(R),R.match(qh)||a(p?Math.floor(Number(R)):Number(R))},P=R=>{const M=Es(p?Math.floor(Number(R.target.value)):Number(R.target.value),c,d);_(String(M)),a(M)},E=f.useCallback(R=>{R.shiftKey&&S(Po(!0))},[S]),O=f.useCallback(R=>{R.shiftKey||S(Po(!1))},[S]);return i.jsx(wn,{...w,children:i.jsxs(mo,{isDisabled:n,isInvalid:o,...h,children:[t&&i.jsx(Lo,{...m,children:t}),i.jsxs(dm,{value:k,min:c,max:d,keepWithinRange:!0,clampValueOnBlur:!1,onChange:I,onBlur:P,...y,onPaste:Ly,children:[i.jsx(pm,{...v,onKeyDown:E,onKeyUp:O}),r&&i.jsxs(fm,{children:[i.jsx(mm,{...b}),i.jsx(hm,{...b})]})]})]})})},Kc=f.memo(Bte),Fte=fe([Xe],({sdxl:e,ui:t,hotkeys:n})=>{const{refinerCFGScale:r}=e,{shouldUseSliders:o}=t,{shift:s}=n;return{refinerCFGScale:r,shouldUseSliders:o,shift:s}},Ge),Hte=()=>{const{refinerCFGScale:e,shouldUseSliders:t,shift:n}=z(Fte),r=qc(),o=te(),{t:s}=be(),a=f.useCallback(d=>o(Y2(d)),[o]),c=f.useCallback(()=>o(Y2(7)),[o]);return t?i.jsx(_t,{label:s("parameters.cfgScale"),step:n?.1:.5,min:1,max:20,onChange:a,handleReset:c,value:e,sliderNumberInputProps:{max:200},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!r}):i.jsx(Kc,{label:s("parameters.cfgScale"),step:.5,min:1,max:200,onChange:a,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"},isDisabled:!r})},Wte=f.memo(Hte),Jm=e=>{const t=em("models"),[n,r,o]=e.split("/"),s=NR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data};function Fd(e){const{iconMode:t=!1}=e,n=te(),{t:r}=be(),[o,{isLoading:s}]=$R(),a=()=>{o().unwrap().then(c=>{n(On(Mn({title:`${r("modelManager.modelsSynced")}`,status:"success"})))}).catch(c=>{c&&n(On(Mn({title:`${r("modelManager.modelSyncFailed")}`,status:"error"})))})};return t?i.jsx(Le,{icon:i.jsx(kP,{}),tooltip:r("modelManager.syncModels"),"aria-label":r("modelManager.syncModels"),isLoading:s,onClick:a,size:"sm"}):i.jsx(en,{isLoading:s,onClick:a,minW:"max-content",children:"Sync Models"})}const Vte=fe(Xe,e=>({model:e.sdxl.refinerModel}),Ge),Ute=()=>{const e=te(),t=ar("syncModels").isFeatureEnabled,{model:n}=z(Vte),{data:r,isLoading:o}=na(G1),s=f.useMemo(()=>{if(!r)return[];const d=[];return Io(r.entities,(p,h)=>{p&&d.push({value:h,label:p.model_name,group:hr[p.base_model]})}),d},[r]),a=f.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=f.useCallback(d=>{if(!d)return;const p=Jm(d);p&&e(zR(p))},[e]);return o?i.jsx(sr,{label:"Refiner Model",placeholder:"Loading...",disabled:!0,data:[]}):i.jsxs(F,{w:"100%",alignItems:"center",gap:2,children:[i.jsx(sr,{tooltip:a==null?void 0:a.description,label:"Refiner Model",value:a==null?void 0:a.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&&i.jsx(Ee,{mt:7,children:i.jsx(Fd,{iconMode:!0})})]})},Gte=f.memo(Ute),qte=fe(Xe,({ui:e,sdxl:t})=>{const{refinerScheduler:n}=t,{favoriteSchedulers:r}=e,o=cs(V1,(s,a)=>({value:a,label:s,group:r.includes(a)?"Favorites":void 0})).sort((s,a)=>s.label.localeCompare(a.label));return{refinerScheduler:n,data:o}},Ge),Kte=()=>{const e=te(),{t}=be(),{refinerScheduler:n,data:r}=z(qte),o=qc(),s=f.useCallback(a=>{a&&e(LR(a))},[e]);return i.jsx(sr,{w:"100%",label:t("parameters.scheduler"),value:n,data:r,onChange:s,disabled:!o})},Xte=f.memo(Kte),Yte=fe([Xe],({sdxl:e})=>{const{refinerStart:t}=e;return{refinerStart:t}},Ge),Qte=()=>{const{refinerStart:e}=z(Yte),t=te(),n=qc(),r=f.useCallback(s=>t(Q2(s)),[t]),o=f.useCallback(()=>t(Q2(.7)),[t]);return i.jsx(_t,{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})},Jte=f.memo(Qte),Zte=fe([Xe],({sdxl:e,ui:t})=>{const{refinerSteps:n}=e,{shouldUseSliders:r}=t;return{refinerSteps:n,shouldUseSliders:r}},Ge),ene=()=>{const{refinerSteps:e,shouldUseSliders:t}=z(Zte),n=qc(),r=te(),{t:o}=be(),s=f.useCallback(c=>{r(J2(c))},[r]),a=f.useCallback(()=>{r(J2(20))},[r]);return t?i.jsx(_t,{label:o("parameters.steps"),min:1,max:100,step:1,onChange:s,handleReset:a,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:500},isDisabled:!n}):i.jsx(Kc,{label:o("parameters.steps"),min:1,max:500,step:1,onChange:s,value:e,numberInputFieldProps:{textAlign:"center"},isDisabled:!n})},tne=f.memo(ene);function nne(){const e=z(o=>o.sdxl.shouldUseSDXLRefiner),t=qc(),n=te(),r=o=>{n(BR(o.target.checked))};return i.jsx(Er,{label:"Use Refiner",isChecked:e,onChange:r,isDisabled:!t})}const rne=fe(Xe,e=>{const{shouldUseSDXLRefiner:t}=e.sdxl,{shouldUseSliders:n}=e.ui;return{activeLabel:t?"Enabled":void 0,shouldUseSliders:n}},Ge),I8=()=>{const{activeLabel:e,shouldUseSliders:t}=z(rne);return i.jsx(Ro,{label:"Refiner",activeLabel:e,children:i.jsxs(F,{sx:{gap:2,flexDir:"column"},children:[i.jsx(nne,{}),i.jsx(Gte,{}),i.jsxs(F,{gap:2,flexDirection:t?"column":"row",children:[i.jsx(tne,{}),i.jsx(Wte,{})]}),i.jsx(Xte,{}),i.jsx(Lte,{}),i.jsx(Jte,{})]})})},one=fe([Xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:a,inputMax:c}=t.sd.guidance,{cfgScale:d}=e,{shouldUseSliders:p}=n,{shift:h}=r;return{cfgScale:d,initial:o,min:s,sliderMax:a,inputMax:c,shouldUseSliders:p,shift:h}},Ge),sne=()=>{const{cfgScale:e,initial:t,min:n,sliderMax:r,inputMax:o,shouldUseSliders:s,shift:a}=z(one),c=te(),{t:d}=be(),p=f.useCallback(m=>c(Rp(m)),[c]),h=f.useCallback(()=>c(Rp(t)),[c,t]);return s?i.jsx(_t,{label:d("parameters.cfgScale"),step:a?.1:.5,min:n,max:r,onChange:p,handleReset:h,value:e,sliderNumberInputProps:{max:o},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1}):i.jsx(Kc,{label:d("parameters.cfgScale"),step:.5,min:n,max:o,onChange:p,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"}})},xi=f.memo(sne),ane=fe([Xe],e=>{const{initial:t,min:n,sliderMax:r,inputMax:o,fineStep:s,coarseStep:a}=e.config.sd.iterations,{iterations:c}=e.generation,{shouldUseSliders:d}=e.ui,p=e.dynamicPrompts.isEnabled&&e.dynamicPrompts.combinatorial,h=e.hotkeys.shift?s:a;return{iterations:c,initial:t,min:n,sliderMax:r,inputMax:o,step:h,shouldUseSliders:d,isDisabled:p}},Ge),ine=()=>{const{iterations:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:a,isDisabled:c}=z(ane),d=te(),{t:p}=be(),h=f.useCallback(v=>{d(Z2(v))},[d]),m=f.useCallback(()=>{d(Z2(t))},[d,t]);return a?i.jsx(_t,{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}}):i.jsx(Kc,{isDisabled:c,label:p("parameters.images"),step:s,min:n,max:o,onChange:h,value:e,numberInputFieldProps:{textAlign:"center"}})},wi=f.memo(ine),lne=fe(Xe,e=>({model:e.generation.model}),Ge),cne=()=>{const e=te(),{t}=be(),{model:n}=z(lne),r=ar("syncModels").isFeatureEnabled,{data:o,isLoading:s}=na(U1),a=z(Kn),c=f.useMemo(()=>{if(!o)return[];const h=[];return Io(o.entities,(m,v)=>{!m||a==="unifiedCanvas"&&m.base_model==="sdxl"||h.push({value:v,label:m.model_name,group:hr[m.base_model]})}),h},[o,a]),d=f.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]),p=f.useCallback(h=>{if(!h)return;const m=Jm(h);m&&e(gv(m))},[e]);return s?i.jsx(sr,{label:t("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):i.jsxs(F,{w:"100%",alignItems:"center",gap:3,children:[i.jsx(sr,{tooltip:d==null?void 0:d.description,label:t("modelManager.model"),value:d==null?void 0:d.id,placeholder:c.length>0?"Select a model":"No models available",data:c,error:c.length===0,disabled:c.length===0,onChange:p,w:"100%"}),r&&i.jsx(Ee,{mt:7,children:i.jsx(Fd,{iconMode:!0})})]})},une=f.memo(cne),E8=e=>{const t=em("models"),[n,r,o]=e.split("/"),s=FR.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},dne=fe(Xe,({generation:e})=>{const{model:t,vae:n}=e;return{model:t,vae:n}},Ge),fne=()=>{const e=te(),{t}=be(),{model:n,vae:r}=z(dne),{data:o}=W5(),s=f.useMemo(()=>{if(!o)return[];const d=[{value:"default",label:"Default",group:"Default"}];return Io(o.entities,(p,h)=>{if(!p)return;const m=(n==null?void 0:n.base_model)!==p.base_model;d.push({value:h,label:p.model_name,group:hr[p.base_model],disabled:m,tooltip:m?`Incompatible base model: ${p.base_model}`:void 0})}),d.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,n==null?void 0:n.base_model]),a=f.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=f.useCallback(d=>{if(!d||d==="default"){e(ew(null));return}const p=E8(d);p&&e(ew(p))},[e]);return i.jsx(sr,{itemComponent:Ri,tooltip:a==null?void 0:a.description,label:t("modelManager.vae"),value:(a==null?void 0:a.id)??"default",placeholder:"Default",data:s,onChange:c,disabled:s.length===0,clearable:!0})},pne=f.memo(fne),Di=e=>e.generation,hne=fe([La,Di],(e,t)=>{const{scheduler:n}=t,{favoriteSchedulers:r}=e,o=cs(V1,(s,a)=>({value:a,label:s,group:r.includes(a)?"Favorites":void 0})).sort((s,a)=>s.label.localeCompare(a.label));return{scheduler:n,data:o}},Ge),mne=()=>{const e=te(),{t}=be(),{scheduler:n,data:r}=z(hne),o=f.useCallback(s=>{s&&e(vv(s))},[e]);return i.jsx(sr,{label:t("parameters.scheduler"),value:n,data:r,onChange:o})},gne=f.memo(mne),vne=fe(Xe,({generation:e})=>{const{vaePrecision:t}=e;return{vaePrecision:t}},Ge),bne=["fp16","fp32"],yne=()=>{const e=te(),{vaePrecision:t}=z(vne),n=f.useCallback(r=>{r&&e(HR(r))},[e]);return i.jsx(Xr,{label:"VAE Precision",value:t,data:bne,onChange:n})},xne=f.memo(yne),wne=()=>{const e=ar("vae").isFeatureEnabled;return i.jsxs(F,{gap:3,w:"full",flexWrap:e?"wrap":"nowrap",children:[i.jsx(Ee,{w:"full",children:i.jsx(une,{})}),i.jsx(Ee,{w:"full",children:i.jsx(gne,{})}),e&&i.jsxs(F,{w:"full",gap:3,children:[i.jsx(pne,{}),i.jsx(xne,{})]})]})},Si=f.memo(wne),Sne=[{name:"Free",value:null},{name:"2:3",value:2/3},{name:"16:9",value:16/9},{name:"1:1",value:1/1}];function O8(){const e=z(o=>o.generation.aspectRatio),t=te(),n=z(o=>o.generation.shouldFitToWidthHeight),r=z(Kn);return i.jsx(F,{gap:2,flexGrow:1,children:i.jsx(nr,{isAttached:!0,children:Sne.map(o=>i.jsx(en,{size:"sm",isChecked:e===o.value,isDisabled:r==="img2img"?!n:!1,onClick:()=>t(WR(o.value)),children:o.name},o.name))})})}const Cne=fe([Xe],({generation:e,hotkeys:t,config:n})=>{const{initial:r,min:o,sliderMax:s,inputMax:a,fineStep:c,coarseStep:d}=n.sd.height,{height:p}=e,{aspectRatio:h}=e,m=t.shift?c:d;return{height:p,initial:r,min:o,sliderMax:s,inputMax:a,step:m,aspectRatio:h}},Ge),kne=e=>{const{height:t,initial:n,min:r,sliderMax:o,inputMax:s,step:a,aspectRatio:c}=z(Cne),d=te(),{t:p}=be(),h=f.useCallback(v=>{if(d(gc(v)),c){const b=Ss(v*c,8);d(mc(b))}},[d,c]),m=f.useCallback(()=>{if(d(gc(n)),c){const v=Ss(n*c,8);d(mc(v))}},[d,n,c]);return i.jsx(_t,{label:p("parameters.height"),value:t,min:r,step:a,max:o,onChange:h,handleReset:m,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},_ne=f.memo(kne),Pne=fe([Xe],({generation:e,hotkeys:t,config:n})=>{const{initial:r,min:o,sliderMax:s,inputMax:a,fineStep:c,coarseStep:d}=n.sd.width,{width:p,aspectRatio:h}=e,m=t.shift?c:d;return{width:p,initial:r,min:o,sliderMax:s,inputMax:a,step:m,aspectRatio:h}},Ge),jne=e=>{const{width:t,initial:n,min:r,sliderMax:o,inputMax:s,step:a,aspectRatio:c}=z(Pne),d=te(),{t:p}=be(),h=f.useCallback(v=>{if(d(mc(v)),c){const b=Ss(v/c,8);d(gc(b))}},[d,c]),m=f.useCallback(()=>{if(d(mc(n)),c){const v=Ss(n/c,8);d(gc(v))}},[d,n,c]);return i.jsx(_t,{label:p("parameters.width"),value:t,min:r,step:a,max:o,onChange:h,handleReset:m,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},Ine=f.memo(jne);function Ec(){const{t:e}=be(),t=te(),n=z(o=>o.generation.shouldFitToWidthHeight),r=z(Kn);return i.jsxs(F,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[i.jsxs(F,{alignItems:"center",gap:2,children:[i.jsx(Ye,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:e("parameters.aspectRatio")}),i.jsx(pl,{}),i.jsx(O8,{}),i.jsx(Le,{tooltip:e("ui.swapSizes"),"aria-label":e("ui.swapSizes"),size:"sm",icon:i.jsx(l8,{}),fontSize:20,isDisabled:r==="img2img"?!n:!1,onClick:()=>t(VR())})]}),i.jsx(F,{gap:2,alignItems:"center",children:i.jsxs(F,{gap:2,flexDirection:"column",width:"full",children:[i.jsx(Ine,{isDisabled:r==="img2img"?!n:!1}),i.jsx(_ne,{isDisabled:r==="img2img"?!n:!1})]})})]})}const Ene=fe([Xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:a,inputMax:c,fineStep:d,coarseStep:p}=t.sd.steps,{steps:h}=e,{shouldUseSliders:m}=n,v=r.shift?d:p;return{steps:h,initial:o,min:s,sliderMax:a,inputMax:c,step:v,shouldUseSliders:m}},Ge),One=()=>{const{steps:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:a}=z(Ene),c=te(),{t:d}=be(),p=f.useCallback(v=>{c(Mp(v))},[c]),h=f.useCallback(()=>{c(Mp(t))},[c,t]),m=f.useCallback(()=>{c(dd())},[c]);return a?i.jsx(_t,{label:d("parameters.steps"),min:n,max:r,step:s,onChange:p,handleReset:h,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):i.jsx(Kc,{label:d("parameters.steps"),min:n,max:o,step:s,onChange:p,value:e,numberInputFieldProps:{textAlign:"center"},onBlur:m})},Ci=f.memo(One);function R8(){const e=te(),t=z(o=>o.generation.shouldFitToWidthHeight),n=o=>e(UR(o.target.checked)),{t:r}=be();return i.jsx(Er,{label:r("parameters.imageFit"),isChecked:t,onChange:n})}function Rne(){const e=z(a=>a.generation.seed),t=z(a=>a.generation.shouldRandomizeSeed),n=z(a=>a.generation.shouldGenerateVariations),{t:r}=be(),o=te(),s=a=>o(Op(a));return i.jsx(Kc,{label:r("parameters.seed"),step:1,precision:0,flexGrow:1,min:V5,max:U5,isDisabled:t,isInvalid:e<0&&n,onChange:s,value:e})}const Mne=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function Dne(){const e=te(),t=z(o=>o.generation.shouldRandomizeSeed),{t:n}=be(),r=()=>e(Op(Mne(V5,U5)));return i.jsx(Le,{size:"sm",isDisabled:t,"aria-label":n("parameters.shuffle"),tooltip:n("parameters.shuffle"),onClick:r,icon:i.jsx(bW,{})})}const Ane=()=>{const e=te(),{t}=be(),n=z(o=>o.generation.shouldRandomizeSeed),r=o=>e(GR(o.target.checked));return i.jsx(Er,{label:t("common.random"),isChecked:n,onChange:r})},Tne=f.memo(Ane),Nne=()=>i.jsxs(F,{sx:{gap:3,alignItems:"flex-end"},children:[i.jsx(Rne,{}),i.jsx(Dne,{}),i.jsx(Tne,{})]}),ki=f.memo(Nne),$ne=fe([Xe],({sdxl:e})=>{const{sdxlImg2ImgDenoisingStrength:t}=e;return{sdxlImg2ImgDenoisingStrength:t}},Ge),zne=()=>{const{sdxlImg2ImgDenoisingStrength:e}=z($ne),t=te(),{t:n}=be(),r=f.useCallback(s=>t(tw(s)),[t]),o=f.useCallback(()=>{t(tw(.7))},[t]);return i.jsx(_t,{label:`${n("parameters.denoisingStrength")}`,step:.01,min:0,max:1,onChange:r,handleReset:o,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0})},Lne=f.memo(zne),Bne=fe([La,Di],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ge),Fne=()=>{const{shouldUseSliders:e,activeLabel:t}=z(Bne);return i.jsx(Ro,{label:"General",activeLabel:t,defaultIsOpen:!0,children:i.jsxs(F,{sx:{flexDirection:"column",gap:3},children:[e?i.jsxs(i.Fragment,{children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(Ec,{})]}):i.jsxs(i.Fragment,{children:[i.jsxs(F,{gap:3,children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{})]}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(Ec,{})]}),i.jsx(Lne,{}),i.jsx(R8,{})]})})},Hne=f.memo(Fne),M8=()=>i.jsxs(i.Fragment,{children:[i.jsx(j8,{}),i.jsx(Bd,{}),i.jsx(Hne,{}),i.jsx(I8,{}),i.jsx(zd,{}),i.jsx(qm,{})]}),D8=e=>{const{sx:t}=e,n=te(),r=z(a=>a.ui.shouldPinParametersPanel),{t:o}=be(),s=()=>{n(qR(!r)),n(Co())};return i.jsx(Le,{...e,tooltip:o("common.pinOptionsPanel"),"aria-label":o("common.pinOptionsPanel"),onClick:s,icon:r?i.jsx(uj,{}):i.jsx(dj,{}),variant:"ghost",size:"sm",sx:{color:"base.500",_hover:{color:"base.600"},_active:{color:"base.700"},_dark:{color:"base.500",_hover:{color:"base.400"},_active:{color:"base.300"}},...t}})},Wne=fe(La,e=>{const{shouldPinParametersPanel:t,shouldShowParametersPanel:n}=e;return{shouldPinParametersPanel:t,shouldShowParametersPanel:n}}),Vne=e=>{const{shouldPinParametersPanel:t,shouldShowParametersPanel:n}=z(Wne);return t&&n?i.jsxs(Ee,{sx:{position:"relative",h:"full",w:By,flexShrink:0},children:[i.jsx(F,{sx:{gap:2,flexDirection:"column",h:"full",w:"full",position:"absolute",overflowY:"auto"},children:e.children}),i.jsx(D8,{sx:{position:"absolute",top:0,insetInlineEnd:0}})]}):null},Fy=f.memo(Vne),Une=e=>{const{direction:t="horizontal",...n}=e,{colorMode:r}=Ds();return t==="horizontal"?i.jsx(C1,{children:i.jsx(F,{sx:{w:6,h:"full",justifyContent:"center",alignItems:"center"},...n,children:i.jsx(Ee,{sx:{w:.5,h:"calc(100% - 4px)",bg:Fe("base.100","base.850")(r)}})})}):i.jsx(C1,{children:i.jsx(F,{sx:{w:"full",h:6,justifyContent:"center",alignItems:"center"},...n,children:i.jsx(Ee,{sx:{w:"calc(100% - 4px)",h:.5,bg:Fe("base.100","base.850")(r)}})})})},A8=f.memo(Une),Gne=fe([Xe],({system:e})=>{const{isProcessing:t,isConnected:n}=e;return n&&!t}),qne=e=>{const{onClick:t,isDisabled:n}=e,{t:r}=be(),o=z(Gne);return i.jsx(Le,{onClick:t,icon:i.jsx(us,{}),tooltip:`${r("gallery.deleteImage")} (Del)`,"aria-label":`${r("gallery.deleteImage")} (Del)`,isDisabled:n||!o,colorScheme:"error"})},Kne=[{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 Xne(){const e=z(r=>r.postprocessing.esrganModelName),t=te(),n=r=>t(KR(r));return i.jsx(Xr,{label:"ESRGAN Model",value:e,itemComponent:Ri,onChange:n,data:Kne})}const Yne=e=>{const{imageDTO:t}=e,n=te(),r=z(Cr),{t:o}=be(),{isOpen:s,onOpen:a,onClose:c}=ss(),d=f.useCallback(()=>{c(),t&&n(G5({image_name:t.image_name}))},[n,t,c]);return i.jsx(gl,{isOpen:s,onClose:c,triggerComponent:i.jsx(Le,{onClick:a,icon:i.jsx(rW,{}),"aria-label":o("parameters.upscale")}),children:i.jsxs(F,{sx:{flexDirection:"column",gap:4},children:[i.jsx(Xne,{}),i.jsx(en,{size:"sm",isDisabled:!t||r,onClick:d,children:o("parameters.upscaleImage")})]})})},Qne=fe([Xe,Kn],({gallery:e,system:t,ui:n},r)=>{const{isProcessing:o,isConnected:s,shouldConfirmOnDelete:a,progressImage:c}=t,{shouldShowImageDetails:d,shouldHidePreview:p,shouldShowProgressInViewer:h}=n,m=e.selection[e.selection.length-1];return{canDeleteImage:s&&!o,shouldConfirmOnDelete:a,isProcessing:o,isConnected:s,shouldDisableToolbarButtons:!!c||!m,shouldShowImageDetails:d,activeTabName:r,shouldHidePreview:p,shouldShowProgressInViewer:h,lastSelectedImage:m}},{memoizeOptions:{resultEqualityCheck:Jt}}),Jne=e=>{const t=te(),{isProcessing:n,isConnected:r,shouldDisableToolbarButtons:o,shouldShowImageDetails:s,lastSelectedImage:a,shouldShowProgressInViewer:c}=z(Qne),d=ar("upscaling").isFeatureEnabled,p=Hc(),{t:h}=be(),{recallBothPrompts:m,recallSeed:v,recallAllParameters:b}=Ry(),[w,y]=Dy(a,500),{currentData:S}=os(a??oo.skipToken),{currentData:k}=F1(y.isPending()?oo.skipToken:w??oo.skipToken),_=k==null?void 0:k.metadata,I=f.useCallback(()=>{b(_)},[_,b]);rt("a",()=>{},[_,b]);const P=f.useCallback(()=>{v(_==null?void 0:_.seed)},[_==null?void 0:_.seed,v]);rt("s",P,[S]);const E=f.useCallback(()=>{m(_==null?void 0:_.positive_prompt,_==null?void 0:_.negative_prompt)},[_==null?void 0:_.negative_prompt,_==null?void 0:_.positive_prompt,m]);rt("p",E,[S]);const O=f.useCallback(()=>{t(ZE()),t(L1(S))},[t,S]);rt("shift+i",O,[S]);const R=f.useCallback(()=>{S&&t(G5({image_name:S.image_name}))},[t,S]),M=f.useCallback(()=>{S&&t(H1(S))},[t,S]);rt("Shift+U",()=>{R()},{enabled:()=>!!(d&&!o&&r&&!n)},[d,S,o,r,n]);const A=f.useCallback(()=>t(XR(!s)),[t,s]);rt("i",()=>{S?A():p({title:h("toast.metadataLoadFailed"),status:"error",duration:2500,isClosable:!0})},[S,s,p]),rt("delete",()=>{M()},[t,S]);const T=f.useCallback(()=>{t(H5(!c))},[t,c]);return i.jsx(i.Fragment,{children:i.jsxs(F,{sx:{flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},...e,children:[i.jsx(nr,{isAttached:!0,isDisabled:o,children:i.jsxs(Cd,{children:[i.jsx(kd,{as:Le,"aria-label":`${h("parameters.sendTo")}...`,tooltip:`${h("parameters.sendTo")}...`,isDisabled:!S,icon:i.jsx(SW,{})}),i.jsx(Bc,{motionProps:nm,children:S&&i.jsx(e8,{imageDTO:S})})]})}),i.jsxs(nr,{isAttached:!0,isDisabled:o,children:[i.jsx(Le,{icon:i.jsx(SP,{}),tooltip:`${h("parameters.usePrompt")} (P)`,"aria-label":`${h("parameters.usePrompt")} (P)`,isDisabled:!(_!=null&&_.positive_prompt),onClick:E}),i.jsx(Le,{icon:i.jsx(CP,{}),tooltip:`${h("parameters.useSeed")} (S)`,"aria-label":`${h("parameters.useSeed")} (S)`,isDisabled:!(_!=null&&_.seed),onClick:P}),i.jsx(Le,{icon:i.jsx(fP,{}),tooltip:`${h("parameters.useAll")} (A)`,"aria-label":`${h("parameters.useAll")} (A)`,isDisabled:!_,onClick:I})]}),d&&i.jsx(nr,{isAttached:!0,isDisabled:o,children:d&&i.jsx(Yne,{imageDTO:S})}),i.jsx(nr,{isAttached:!0,isDisabled:o,children:i.jsx(Le,{icon:i.jsx(Fb,{}),tooltip:`${h("parameters.info")} (I)`,"aria-label":`${h("parameters.info")} (I)`,isChecked:s,onClick:A})}),i.jsx(nr,{isAttached:!0,children:i.jsx(Le,{"aria-label":h("settings.displayInProgress"),tooltip:h("settings.displayInProgress"),icon:i.jsx(cW,{}),isChecked:c,onClick:T})}),i.jsx(nr,{isAttached:!0,children:i.jsx(qne,{onClick:M,isDisabled:o})})]})})},Zne=fe([Xe,$5],(e,t)=>{var k,_;const{data:n,status:r}=YR.endpoints.listImages.select(t)(e),o=e.gallery.selection[e.gallery.selection.length-1],s=r==="pending";if(!n||!o||n.total===0)return{isFetching:s,queryArgs:t,isOnFirstImage:!0,isOnLastImage:!0};const a={...t,offset:n.ids.length,limit:L5},c=QR.getSelectors(),d=c.selectAll(n),p=d.findIndex(I=>I.image_name===o),h=Es(p+1,0,d.length-1),m=Es(p-1,0,d.length-1),v=(k=d[h])==null?void 0:k.image_name,b=(_=d[m])==null?void 0:_.image_name,w=c.selectById(n,v),y=c.selectById(n,b),S=d.length;return{isOnFirstImage:p===0,isOnLastImage:!isNaN(p)&&p===S-1,areMoreImagesAvailable:((n==null?void 0:n.total)??0)>S,isFetching:r==="pending",nextImage:w,prevImage:y,nextImageId:v,prevImageId:b,queryArgs:a}},{memoizeOptions:{resultEqualityCheck:Jt}}),T8=()=>{const e=te(),{isOnFirstImage:t,isOnLastImage:n,nextImageId:r,prevImageId:o,areMoreImagesAvailable:s,isFetching:a,queryArgs:c}=z(Zne),d=f.useCallback(()=>{o&&e(bv(o))},[e,o]),p=f.useCallback(()=>{r&&e(bv(r))},[e,r]),[h]=z5(),m=f.useCallback(()=>{h(c)},[h,c]);return{handlePrevImage:d,handleNextImage:p,isOnFirstImage:t,isOnLastImage:n,nextImageId:r,prevImageId:o,areMoreImagesAvailable:s,handleLoadMoreImages:m,isFetching:a}};function ere(e){return et({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 ys=({label:e,value:t,onClick:n,isLink:r,labelPosition:o,withCopy:s=!1})=>{const{t:a}=be();return t?i.jsxs(F,{gap:2,children:[n&&i.jsx(wn,{label:`Recall ${e}`,children:i.jsx(Ca,{"aria-label":a("accessibility.useThisParameter"),icon:i.jsx(ere,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),s&&i.jsx(wn,{label:`Copy ${e}`,children:i.jsx(Ca,{"aria-label":`Copy ${e}`,icon:i.jsx(Wc,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(t.toString())})}),i.jsxs(F,{direction:o?"column":"row",children:[i.jsxs(Ye,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?i.jsxs(vb,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",i.jsx(sj,{mx:"2px"})]}):i.jsx(Ye,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}):null},tre=e=>{const{metadata:t}=e,{recallPositivePrompt:n,recallNegativePrompt:r,recallSeed:o,recallCfgScale:s,recallModel:a,recallScheduler:c,recallSteps:d,recallWidth:p,recallHeight:h,recallStrength:m}=Ry(),v=f.useCallback(()=>{n(t==null?void 0:t.positive_prompt)},[t==null?void 0:t.positive_prompt,n]),b=f.useCallback(()=>{r(t==null?void 0:t.negative_prompt)},[t==null?void 0:t.negative_prompt,r]),w=f.useCallback(()=>{o(t==null?void 0:t.seed)},[t==null?void 0:t.seed,o]),y=f.useCallback(()=>{a(t==null?void 0:t.model)},[t==null?void 0:t.model,a]),S=f.useCallback(()=>{p(t==null?void 0:t.width)},[t==null?void 0:t.width,p]),k=f.useCallback(()=>{h(t==null?void 0:t.height)},[t==null?void 0:t.height,h]),_=f.useCallback(()=>{c(t==null?void 0:t.scheduler)},[t==null?void 0:t.scheduler,c]),I=f.useCallback(()=>{d(t==null?void 0:t.steps)},[t==null?void 0:t.steps,d]),P=f.useCallback(()=>{s(t==null?void 0:t.cfg_scale)},[t==null?void 0:t.cfg_scale,s]),E=f.useCallback(()=>{m(t==null?void 0:t.strength)},[t==null?void 0:t.strength,m]);return!t||Object.keys(t).length===0?null:i.jsxs(i.Fragment,{children:[t.generation_mode&&i.jsx(ys,{label:"Generation Mode",value:t.generation_mode}),t.positive_prompt&&i.jsx(ys,{label:"Positive Prompt",labelPosition:"top",value:t.positive_prompt,onClick:v}),t.negative_prompt&&i.jsx(ys,{label:"Negative Prompt",labelPosition:"top",value:t.negative_prompt,onClick:b}),t.seed!==void 0&&i.jsx(ys,{label:"Seed",value:t.seed,onClick:w}),t.model!==void 0&&i.jsx(ys,{label:"Model",value:t.model.model_name,onClick:y}),t.width&&i.jsx(ys,{label:"Width",value:t.width,onClick:S}),t.height&&i.jsx(ys,{label:"Height",value:t.height,onClick:k}),t.scheduler&&i.jsx(ys,{label:"Scheduler",value:t.scheduler,onClick:_}),t.steps&&i.jsx(ys,{label:"Steps",value:t.steps,onClick:I}),t.cfg_scale!==void 0&&i.jsx(ys,{label:"CFG scale",value:t.cfg_scale,onClick:P}),t.strength&&i.jsx(ys,{label:"Image to image strength",value:t.strength,onClick:E})]})},nre=e=>{const{copyTooltip:t,jsonObject:n}=e,r=f.useMemo(()=>JSON.stringify(n,null,2),[n]);return i.jsxs(F,{sx:{borderRadius:"base",bg:"whiteAlpha.500",_dark:{bg:"blackAlpha.500"},flexGrow:1,w:"full",h:"full",position:"relative"},children:[i.jsx(Ee,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"auto",p:4},children:i.jsx(ZP,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:i.jsx("pre",{children:r})})}),i.jsx(F,{sx:{position:"absolute",top:0,insetInlineEnd:0,p:2},children:i.jsx(wn,{label:t,children:i.jsx(Ca,{"aria-label":t,icon:i.jsx(Wc,{}),variant:"ghost",onClick:()=>navigator.clipboard.writeText(r)})})})]})},rre=({image:e})=>{const[t,n]=Dy(e.image_name,500),{currentData:r}=F1(n.isPending()?oo.skipToken:t??oo.skipToken),o=r==null?void 0:r.metadata,s=r==null?void 0:r.graph,a=f.useMemo(()=>{const c=[];return o&&c.push({label:"Core Metadata",data:o,copyTooltip:"Copy Core Metadata JSON"}),e&&c.push({label:"Image Details",data:e,copyTooltip:"Copy Image Details JSON"}),s&&c.push({label:"Graph",data:s,copyTooltip:"Copy Graph JSON"}),c},[o,s,e]);return i.jsxs(F,{sx:{padding:4,gap:1,flexDirection:"column",width:"full",height:"full",backdropFilter:"blur(20px)",bg:"baseAlpha.200",_dark:{bg:"blackAlpha.600"},borderRadius:"base",position:"absolute",overflow:"hidden"},children:[i.jsxs(F,{gap:2,children:[i.jsx(Ye,{fontWeight:"semibold",children:"File:"}),i.jsxs(vb,{href:e.image_url,isExternal:!0,maxW:"calc(100% - 3rem)",children:[e.image_name,i.jsx(sj,{mx:"2px"})]})]}),i.jsx(tre,{metadata:o}),i.jsxs(Id,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[i.jsx(Ed,{children:a.map(c=>i.jsx(Sc,{sx:{borderTopRadius:"base"},children:i.jsx(Ye,{sx:{color:"base.700",_dark:{color:"base.300"}},children:c.label})},c.label))}),i.jsx(km,{sx:{w:"full",h:"full"},children:a.map(c=>i.jsx(Cm,{sx:{w:"full",h:"full",p:0,pt:4},children:i.jsx(nre,{jsonObject:c.data,copyTooltip:c.copyTooltip})},c.label))})]})]})},ore=f.memo(rre),tv={color:"base.100",pointerEvents:"auto"},sre=()=>{const{t:e}=be(),{handlePrevImage:t,handleNextImage:n,isOnFirstImage:r,isOnLastImage:o,handleLoadMoreImages:s,areMoreImagesAvailable:a,isFetching:c}=T8();return i.jsxs(Ee,{sx:{position:"relative",height:"100%",width:"100%"},children:[i.jsx(Ee,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineStart:0},children:!r&&i.jsx(Ca,{"aria-label":e("accessibility.previousImage"),icon:i.jsx(GH,{size:64}),variant:"unstyled",onClick:t,boxSize:16,sx:tv})}),i.jsxs(Ee,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineEnd:0},children:[!o&&i.jsx(Ca,{"aria-label":e("accessibility.nextImage"),icon:i.jsx(qH,{size:64}),variant:"unstyled",onClick:n,boxSize:16,sx:tv}),o&&a&&!c&&i.jsx(Ca,{"aria-label":e("accessibility.loadMore"),icon:i.jsx(UH,{size:64}),variant:"unstyled",onClick:s,boxSize:16,sx:tv}),o&&a&&c&&i.jsx(F,{sx:{w:16,h:16,alignItems:"center",justifyContent:"center"},children:i.jsx(fl,{opacity:.5,size:"xl"})})]})]})},are=f.memo(sre),ire=fe([Xe,JR],({ui:e,system:t},n)=>{const{shouldShowImageDetails:r,shouldHidePreview:o,shouldShowProgressInViewer:s}=e,{progressImage:a,shouldAntialiasProgressImage:c}=t;return{shouldShowImageDetails:r,shouldHidePreview:o,imageName:n,progressImage:a,shouldShowProgressInViewer:s,shouldAntialiasProgressImage:c}},{memoizeOptions:{resultEqualityCheck:Jt}}),lre=()=>{const{shouldShowImageDetails:e,imageName:t,progressImage:n,shouldShowProgressInViewer:r,shouldAntialiasProgressImage:o}=z(ire),{handlePrevImage:s,handleNextImage:a,prevImageId:c,nextImageId:d,isOnLastImage:p,handleLoadMoreImages:h,areMoreImagesAvailable:m,isFetching:v}=T8();rt("left",()=>{s()},[c]),rt("right",()=>{if(p&&m&&!v){h();return}p||a()},[d,p,m,h,v]);const{currentData:b}=os(t??oo.skipToken),w=f.useMemo(()=>{if(b)return{id:"current-image",payloadType:"IMAGE_DTO",payload:{imageDTO:b}}},[b]),y=f.useMemo(()=>({id:"current-image",actionType:"SET_CURRENT_IMAGE"}),[]),[S,k]=f.useState(!1),_=f.useRef(0),I=f.useCallback(()=>{k(!0),window.clearTimeout(_.current)},[]),P=f.useCallback(()=>{_.current=window.setTimeout(()=>{k(!1)},500)},[]);return i.jsxs(F,{onMouseOver:I,onMouseOut:P,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative"},children:[n&&r?i.jsx(Tc,{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"}}):i.jsx(yi,{imageDTO:b,droppableData:y,draggableData:w,isUploadDisabled:!0,fitContainer:!0,useThumbailFallback:!0,dropLabel:"Set as Current Image",noContentFallback:i.jsx(mi,{icon:il,label:"No image selected"})}),e&&b&&i.jsx(Ee,{sx:{position:"absolute",top:"0",width:"full",height:"full",borderRadius:"base"},children:i.jsx(ore,{image:b})}),i.jsx(ho,{children:!e&&b&&S&&i.jsx(Ir.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:i.jsx(are,{})},"nextPrevButtons")})]})},cre=f.memo(lre),ure=()=>i.jsxs(F,{sx:{position:"relative",flexDirection:"column",height:"100%",width:"100%",rowGap:4,alignItems:"center",justifyContent:"center"},children:[i.jsx(Jne,{}),i.jsx(cre,{})]}),N8=()=>i.jsx(Ee,{layerStyle:"first",sx:{position:"relative",width:"100%",height:"100%",p:4,borderRadius:"base"},children:i.jsx(F,{sx:{width:"100%",height:"100%"},children:i.jsx(ure,{})})}),dre=e=>{const t=te(),{lora:n}=e,r=f.useCallback(a=>{t(ZR({id:n.id,weight:a}))},[t,n.id]),o=f.useCallback(()=>{t(eM(n.id))},[t,n.id]),s=f.useCallback(()=>{t(tM(n.id))},[t,n.id]);return i.jsxs(F,{sx:{gap:2.5,alignItems:"flex-end"},children:[i.jsx(_t,{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}}),i.jsx(Le,{size:"sm",onClick:s,tooltip:"Remove LoRA","aria-label":"Remove LoRA",icon:i.jsx(us,{}),colorScheme:"error"})]})},fre=f.memo(dre),pre=fe(Xe,({lora:e})=>{const{loras:t}=e;return{loras:t}},Ge),hre=()=>{const{loras:e}=z(pre);return i.jsx(i.Fragment,{children:cs(e,t=>i.jsx(fre,{lora:t},t.model_name))})},mre=fe(Xe,({lora:e})=>({loras:e.loras}),Ge),gre=()=>{const e=te(),{loras:t}=z(mre),{data:n}=tm(),r=z(a=>a.generation.model),o=f.useMemo(()=>{if(!n)return[];const a=[];return Io(n.entities,(c,d)=>{if(!c||d in t)return;const p=(r==null?void 0:r.base_model)!==c.base_model;a.push({value:d,label:c.model_name,disabled:p,group:hr[c.base_model],tooltip:p?`Incompatible base model: ${c.base_model}`:void 0})}),a.sort((c,d)=>{var p;return c.label&&d.label&&(p=c.label)!=null&&p.localeCompare(d.label)?1:-1}),a.sort((c,d)=>c.disabled&&!d.disabled?-1:1)},[t,n,r==null?void 0:r.base_model]),s=f.useCallback(a=>{if(!a)return;const c=n==null?void 0:n.entities[a];c&&e(nM(c))},[e,n==null?void 0:n.entities]);return(n==null?void 0:n.ids.length)===0?i.jsx(F,{sx:{justifyContent:"center",p:2},children:i.jsx(Ye,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):i.jsx(sr,{placeholder:o.length===0?"All LoRAs added":"Add LoRA",value:null,data:o,nothingFound:"No matching LoRAs",itemComponent:Ri,disabled:o.length===0,filter:(a,c)=>{var d;return((d=c.label)==null?void 0:d.toLowerCase().includes(a.toLowerCase().trim()))||c.value.toLowerCase().includes(a.toLowerCase().trim())},onChange:s})},vre=fe(Xe,e=>{const t=q5(e.lora.loras);return{activeLabel:t>0?`${t} Active`:void 0}},Ge),bre=()=>{const{activeLabel:e}=z(vre);return ar("lora").isFeatureEnabled?i.jsx(Ro,{label:"LoRA",activeLabel:e,children:i.jsxs(F,{sx:{flexDir:"column",gap:2},children:[i.jsx(gre,{}),i.jsx(hre,{})]})}):null},Hy=f.memo(bre);function yre(){const e=z(d=>d.generation.clipSkip),{model:t}=z(d=>d.generation),n=te(),{t:r}=be(),o=f.useCallback(d=>{n(nw(d))},[n]),s=f.useCallback(()=>{n(nw(0))},[n]),a=f.useMemo(()=>t?Ef[t.base_model].maxClip:Ef["sd-1"].maxClip,[t]),c=f.useMemo(()=>t?Ef[t.base_model].markers:Ef["sd-1"].markers,[t]);return i.jsx(_t,{label:r("parameters.clipSkip"),"aria-label":r("parameters.clipSkip"),min:0,max:a,step:1,value:e,onChange:o,withSliderMarks:!0,sliderMarks:c,withInput:!0,withReset:!0,handleReset:s})}const xre=fe(Xe,e=>({activeLabel:e.generation.clipSkip>0?"Clip Skip":void 0}),Ge);function Wy(){const{activeLabel:e}=z(xre);return z(n=>n.generation.shouldShowAdvancedOptions)?i.jsx(Ro,{label:"Advanced",activeLabel:e,children:i.jsx(F,{sx:{flexDir:"column",gap:2},children:i.jsx(yre,{})})}):null}const $8=e=>{const t=em("models"),[n,r,o]=e.split("/"),s=rM.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},wre=e=>{const{controlNetId:t}=e,n=te(),r=z(Cr),o=f.useMemo(()=>fe(Xe,({generation:v,controlNet:b})=>{var k,_;const{model:w}=v,y=(k=b.controlNets[t])==null?void 0:k.model,S=(_=b.controlNets[t])==null?void 0:_.isEnabled;return{mainModel:w,controlNetModel:y,isEnabled:S}},Ge),[t]),{mainModel:s,controlNetModel:a,isEnabled:c}=z(o),{data:d}=q1(),p=f.useMemo(()=>{if(!d)return[];const v=[];return Io(d.entities,(b,w)=>{if(!b)return;const y=(b==null?void 0:b.base_model)!==(s==null?void 0:s.base_model);v.push({value:w,label:b.model_name,group:hr[b.base_model],disabled:y,tooltip:y?`Incompatible base model: ${b.base_model}`:void 0})}),v},[d,s==null?void 0:s.base_model]),h=f.useMemo(()=>(d==null?void 0:d.entities[`${a==null?void 0:a.base_model}/controlnet/${a==null?void 0:a.model_name}`])??null,[a==null?void 0:a.base_model,a==null?void 0:a.model_name,d==null?void 0:d.entities]),m=f.useCallback(v=>{if(!v)return;const b=$8(v);b&&n(K5({controlNetId:t,model:b}))},[t,n]);return i.jsx(sr,{itemComponent:Ri,data:p,error:!h||(s==null?void 0:s.base_model)!==h.base_model,placeholder:"Select a model",value:(h==null?void 0:h.id)??null,onChange:m,disabled:r||!c,tooltip:h==null?void 0:h.description})},Sre=f.memo(wre),Cre=e=>{const{controlNetId:t}=e,n=te(),r=f.useMemo(()=>fe(Xe,({controlNet:c})=>{const{weight:d,isEnabled:p}=c.controlNets[t];return{weight:d,isEnabled:p}},Ge),[t]),{weight:o,isEnabled:s}=z(r),a=f.useCallback(c=>{n(oM({controlNetId:t,weight:c}))},[t,n]);return i.jsx(_t,{isDisabled:!s,label:"Weight",value:o,onChange:a,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2]})},kre=f.memo(Cre),_re=e=>{const{height:t,controlNetId:n}=e,r=te(),o=f.useMemo(()=>fe(Xe,({controlNet:E})=>{const{pendingControlImages:O}=E,{controlImage:R,processedControlImage:M,processorType:A,isEnabled:T}=E.controlNets[n];return{controlImageName:R,processedControlImageName:M,processorType:A,isEnabled:T,pendingControlImages:O}},Ge),[n]),{controlImageName:s,processedControlImageName:a,processorType:c,pendingControlImages:d,isEnabled:p}=z(o),[h,m]=f.useState(!1),{currentData:v}=os(s??oo.skipToken),{currentData:b}=os(a??oo.skipToken),w=f.useCallback(()=>{r(sM({controlNetId:n,controlImage:null}))},[n,r]),y=f.useCallback(()=>{m(!0)},[]),S=f.useCallback(()=>{m(!1)},[]),k=f.useMemo(()=>{if(v)return{id:n,payloadType:"IMAGE_DTO",payload:{imageDTO:v}}},[v,n]),_=f.useMemo(()=>({id:n,actionType:"SET_CONTROLNET_IMAGE",context:{controlNetId:n}}),[n]),I=f.useMemo(()=>({type:"SET_CONTROLNET_IMAGE",controlNetId:n}),[n]),P=v&&b&&!h&&!d.includes(n)&&c!=="none";return i.jsxs(F,{onMouseEnter:y,onMouseLeave:S,sx:{position:"relative",w:"full",h:t,alignItems:"center",justifyContent:"center",pointerEvents:p?"auto":"none",opacity:p?1:.5},children:[i.jsx(yi,{draggableData:k,droppableData:_,imageDTO:v,isDropDisabled:P||!p,onClickReset:w,postUploadAction:I,resetTooltip:"Reset Control Image",withResetIcon:!!v}),i.jsx(Ee,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",opacity:P?1:0,transitionProperty:"common",transitionDuration:"normal",pointerEvents:"none"},children:i.jsx(yi,{draggableData:k,droppableData:_,imageDTO:b,isUploadDisabled:!0,isDropDisabled:!p,onClickReset:w,resetTooltip:"Reset Control Image",withResetIcon:!!v})}),d.includes(n)&&i.jsx(F,{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:i.jsx(fl,{size:"xl",sx:{color:"base.100",_dark:{color:"base.400"}}})})]})},_k=f.memo(_re),Ts=()=>{const e=te();return f.useCallback((n,r)=>{e(aM({controlNetId:n,changes:r}))},[e])};function Ns(e){return i.jsx(F,{sx:{flexDirection:"column",gap:2},children:e.children})}const Pk=ls.canny_image_processor.default,Pre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{low_threshold:o,high_threshold:s}=n,a=z(Cr),c=Ts(),d=f.useCallback(v=>{c(t,{low_threshold:v})},[t,c]),p=f.useCallback(()=>{c(t,{low_threshold:Pk.low_threshold})},[t,c]),h=f.useCallback(v=>{c(t,{high_threshold:v})},[t,c]),m=f.useCallback(()=>{c(t,{high_threshold:Pk.high_threshold})},[t,c]);return i.jsxs(Ns,{children:[i.jsx(_t,{isDisabled:a||!r,label:"Low Threshold",value:o,onChange:d,handleReset:p,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0}),i.jsx(_t,{isDisabled:a||!r,label:"High Threshold",value:s,onChange:h,handleReset:m,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0})]})},jre=f.memo(Pre),yu=ls.content_shuffle_image_processor.default,Ire=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,w:a,h:c,f:d}=n,p=Ts(),h=z(Cr),m=f.useCallback(E=>{p(t,{detect_resolution:E})},[t,p]),v=f.useCallback(()=>{p(t,{detect_resolution:yu.detect_resolution})},[t,p]),b=f.useCallback(E=>{p(t,{image_resolution:E})},[t,p]),w=f.useCallback(()=>{p(t,{image_resolution:yu.image_resolution})},[t,p]),y=f.useCallback(E=>{p(t,{w:E})},[t,p]),S=f.useCallback(()=>{p(t,{w:yu.w})},[t,p]),k=f.useCallback(E=>{p(t,{h:E})},[t,p]),_=f.useCallback(()=>{p(t,{h:yu.h})},[t,p]),I=f.useCallback(E=>{p(t,{f:E})},[t,p]),P=f.useCallback(()=>{p(t,{f:yu.f})},[t,p]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:s,onChange:m,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),i.jsx(_t,{label:"Image Resolution",value:o,onChange:b,handleReset:w,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),i.jsx(_t,{label:"W",value:a,onChange:y,handleReset:S,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),i.jsx(_t,{label:"H",value:c,onChange:k,handleReset:_,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),i.jsx(_t,{label:"F",value:d,onChange:I,handleReset:P,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r})]})},Ere=f.memo(Ire),jk=ls.hed_image_processor.default,Ore=e=>{const{controlNetId:t,processorNode:{detect_resolution:n,image_resolution:r,scribble:o},isEnabled:s}=e,a=z(Cr),c=Ts(),d=f.useCallback(b=>{c(t,{detect_resolution:b})},[t,c]),p=f.useCallback(b=>{c(t,{image_resolution:b})},[t,c]),h=f.useCallback(b=>{c(t,{scribble:b.target.checked})},[t,c]),m=f.useCallback(()=>{c(t,{detect_resolution:jk.detect_resolution})},[t,c]),v=f.useCallback(()=>{c(t,{image_resolution:jk.image_resolution})},[t,c]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:n,onChange:d,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:a||!s}),i.jsx(_t,{label:"Image Resolution",value:r,onChange:p,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:a||!s}),i.jsx(Er,{label:"Scribble",isChecked:o,onChange:h,isDisabled:a||!s})]})},Rre=f.memo(Ore),Ik=ls.lineart_anime_image_processor.default,Mre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,a=Ts(),c=z(Cr),d=f.useCallback(v=>{a(t,{detect_resolution:v})},[t,a]),p=f.useCallback(v=>{a(t,{image_resolution:v})},[t,a]),h=f.useCallback(()=>{a(t,{detect_resolution:Ik.detect_resolution})},[t,a]),m=f.useCallback(()=>{a(t,{image_resolution:Ik.image_resolution})},[t,a]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:s,onChange:d,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),i.jsx(_t,{label:"Image Resolution",value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},Dre=f.memo(Mre),Ek=ls.lineart_image_processor.default,Are=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,coarse:a}=n,c=Ts(),d=z(Cr),p=f.useCallback(w=>{c(t,{detect_resolution:w})},[t,c]),h=f.useCallback(w=>{c(t,{image_resolution:w})},[t,c]),m=f.useCallback(()=>{c(t,{detect_resolution:Ek.detect_resolution})},[t,c]),v=f.useCallback(()=>{c(t,{image_resolution:Ek.image_resolution})},[t,c]),b=f.useCallback(w=>{c(t,{coarse:w.target.checked})},[t,c]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),i.jsx(_t,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),i.jsx(Er,{label:"Coarse",isChecked:a,onChange:b,isDisabled:d||!r})]})},Tre=f.memo(Are),Ok=ls.mediapipe_face_processor.default,Nre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{max_faces:o,min_confidence:s}=n,a=Ts(),c=z(Cr),d=f.useCallback(v=>{a(t,{max_faces:v})},[t,a]),p=f.useCallback(v=>{a(t,{min_confidence:v})},[t,a]),h=f.useCallback(()=>{a(t,{max_faces:Ok.max_faces})},[t,a]),m=f.useCallback(()=>{a(t,{min_confidence:Ok.min_confidence})},[t,a]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Max Faces",value:o,onChange:d,handleReset:h,withReset:!0,min:1,max:20,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),i.jsx(_t,{label:"Min Confidence",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},$re=f.memo(Nre),Rk=ls.midas_depth_image_processor.default,zre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{a_mult:o,bg_th:s}=n,a=Ts(),c=z(Cr),d=f.useCallback(v=>{a(t,{a_mult:v})},[t,a]),p=f.useCallback(v=>{a(t,{bg_th:v})},[t,a]),h=f.useCallback(()=>{a(t,{a_mult:Rk.a_mult})},[t,a]),m=f.useCallback(()=>{a(t,{bg_th:Rk.bg_th})},[t,a]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"a_mult",value:o,onChange:d,handleReset:h,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),i.jsx(_t,{label:"bg_th",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},Lre=f.memo(zre),hp=ls.mlsd_image_processor.default,Bre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,thr_d:a,thr_v:c}=n,d=Ts(),p=z(Cr),h=f.useCallback(_=>{d(t,{detect_resolution:_})},[t,d]),m=f.useCallback(_=>{d(t,{image_resolution:_})},[t,d]),v=f.useCallback(_=>{d(t,{thr_d:_})},[t,d]),b=f.useCallback(_=>{d(t,{thr_v:_})},[t,d]),w=f.useCallback(()=>{d(t,{detect_resolution:hp.detect_resolution})},[t,d]),y=f.useCallback(()=>{d(t,{image_resolution:hp.image_resolution})},[t,d]),S=f.useCallback(()=>{d(t,{thr_d:hp.thr_d})},[t,d]),k=f.useCallback(()=>{d(t,{thr_v:hp.thr_v})},[t,d]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:s,onChange:h,handleReset:w,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),i.jsx(_t,{label:"Image Resolution",value:o,onChange:m,handleReset:y,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),i.jsx(_t,{label:"W",value:a,onChange:v,handleReset:S,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),i.jsx(_t,{label:"H",value:c,onChange:b,handleReset:k,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r})]})},Fre=f.memo(Bre),Mk=ls.normalbae_image_processor.default,Hre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,a=Ts(),c=z(Cr),d=f.useCallback(v=>{a(t,{detect_resolution:v})},[t,a]),p=f.useCallback(v=>{a(t,{image_resolution:v})},[t,a]),h=f.useCallback(()=>{a(t,{detect_resolution:Mk.detect_resolution})},[t,a]),m=f.useCallback(()=>{a(t,{image_resolution:Mk.image_resolution})},[t,a]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:s,onChange:d,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),i.jsx(_t,{label:"Image Resolution",value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},Wre=f.memo(Hre),Dk=ls.openpose_image_processor.default,Vre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,hand_and_face:a}=n,c=Ts(),d=z(Cr),p=f.useCallback(w=>{c(t,{detect_resolution:w})},[t,c]),h=f.useCallback(w=>{c(t,{image_resolution:w})},[t,c]),m=f.useCallback(()=>{c(t,{detect_resolution:Dk.detect_resolution})},[t,c]),v=f.useCallback(()=>{c(t,{image_resolution:Dk.image_resolution})},[t,c]),b=f.useCallback(w=>{c(t,{hand_and_face:w.target.checked})},[t,c]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),i.jsx(_t,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:d||!r}),i.jsx(Er,{label:"Hand and Face",isChecked:a,onChange:b,isDisabled:d||!r})]})},Ure=f.memo(Vre),Ak=ls.pidi_image_processor.default,Gre=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,scribble:a,safe:c}=n,d=Ts(),p=z(Cr),h=f.useCallback(S=>{d(t,{detect_resolution:S})},[t,d]),m=f.useCallback(S=>{d(t,{image_resolution:S})},[t,d]),v=f.useCallback(()=>{d(t,{detect_resolution:Ak.detect_resolution})},[t,d]),b=f.useCallback(()=>{d(t,{image_resolution:Ak.image_resolution})},[t,d]),w=f.useCallback(S=>{d(t,{scribble:S.target.checked})},[t,d]),y=f.useCallback(S=>{d(t,{safe:S.target.checked})},[t,d]);return i.jsxs(Ns,{children:[i.jsx(_t,{label:"Detect Resolution",value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),i.jsx(_t,{label:"Image Resolution",value:o,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),i.jsx(Er,{label:"Scribble",isChecked:a,onChange:w}),i.jsx(Er,{label:"Safe",isChecked:c,onChange:y,isDisabled:p||!r})]})},qre=f.memo(Gre),Kre=e=>null,Xre=f.memo(Kre),Yre=e=>{const{controlNetId:t}=e,n=f.useMemo(()=>fe(Xe,({controlNet:s})=>{const{isEnabled:a,processorNode:c}=s.controlNets[t];return{isEnabled:a,processorNode:c}},Ge),[t]),{isEnabled:r,processorNode:o}=z(n);return o.type==="canny_image_processor"?i.jsx(jre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="hed_image_processor"?i.jsx(Rre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="lineart_image_processor"?i.jsx(Tre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="content_shuffle_image_processor"?i.jsx(Ere,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="lineart_anime_image_processor"?i.jsx(Dre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="mediapipe_face_processor"?i.jsx($re,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="midas_depth_image_processor"?i.jsx(Lre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="mlsd_image_processor"?i.jsx(Fre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="normalbae_image_processor"?i.jsx(Wre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="openpose_image_processor"?i.jsx(Ure,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="pidi_image_processor"?i.jsx(qre,{controlNetId:t,processorNode:o,isEnabled:r}):o.type==="zoe_depth_image_processor"?i.jsx(Xre,{controlNetId:t,processorNode:o,isEnabled:r}):null},Qre=f.memo(Yre),Jre=e=>{const{controlNetId:t}=e,n=te(),r=f.useMemo(()=>fe(Xe,({controlNet:d})=>{const{isEnabled:p,shouldAutoConfig:h}=d.controlNets[t];return{isEnabled:p,shouldAutoConfig:h}},Ge),[t]),{isEnabled:o,shouldAutoConfig:s}=z(r),a=z(Cr),c=f.useCallback(()=>{n(iM({controlNetId:t}))},[t,n]);return i.jsx(Er,{label:"Auto configure processor","aria-label":"Auto configure processor",isChecked:s,onChange:c,isDisabled:a||!o})},Zre=f.memo(Jre),Tk=e=>`${Math.round(e*100)}%`,eoe=e=>{const{controlNetId:t}=e,n=te(),r=f.useMemo(()=>fe(Xe,({controlNet:d})=>{const{beginStepPct:p,endStepPct:h,isEnabled:m}=d.controlNets[t];return{beginStepPct:p,endStepPct:h,isEnabled:m}},Ge),[t]),{beginStepPct:o,endStepPct:s,isEnabled:a}=z(r),c=f.useCallback(d=>{n(lM({controlNetId:t,beginStepPct:d[0]})),n(cM({controlNetId:t,endStepPct:d[1]}))},[t,n]);return i.jsxs(mo,{isDisabled:!a,children:[i.jsx(Lo,{children:"Begin / End Step Percentage"}),i.jsx(di,{w:"100%",gap:2,alignItems:"center",children:i.jsxs(T6,{"aria-label":["Begin Step %","End Step %"],value:[o,s],onChange:c,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!a,children:[i.jsx(N6,{children:i.jsx($6,{})}),i.jsx(wn,{label:Tk(o),placement:"top",hasArrow:!0,children:i.jsx(Vv,{index:0})}),i.jsx(wn,{label:Tk(s),placement:"top",hasArrow:!0,children:i.jsx(Vv,{index:1})}),i.jsx(Cp,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),i.jsx(Cp,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),i.jsx(Cp,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},toe=f.memo(eoe),noe=[{label:"Balanced",value:"balanced"},{label:"Prompt",value:"more_prompt"},{label:"Control",value:"more_control"},{label:"Mega Control",value:"unbalanced"}];function roe(e){const{controlNetId:t}=e,n=te(),r=f.useMemo(()=>fe(Xe,({controlNet:c})=>{const{controlMode:d,isEnabled:p}=c.controlNets[t];return{controlMode:d,isEnabled:p}},Ge),[t]),{controlMode:o,isEnabled:s}=z(r),a=f.useCallback(c=>{n(uM({controlNetId:t,controlMode:c}))},[t,n]);return i.jsx(Xr,{disabled:!s,label:"Control Mode",data:noe,value:String(o),onChange:a})}const ooe=fe(c8,e=>cs(ls,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)),Ge),soe=e=>{const t=te(),{controlNetId:n}=e,r=f.useMemo(()=>fe(Xe,({controlNet:p})=>{const{isEnabled:h,processorNode:m}=p.controlNets[n];return{isEnabled:h,processorNode:m}},Ge),[n]),o=z(Cr),s=z(ooe),{isEnabled:a,processorNode:c}=z(r),d=f.useCallback(p=>{t(dM({controlNetId:n,processorType:p}))},[n,t]);return i.jsx(sr,{label:"Processor",value:c.type??"canny_image_processor",data:s,onChange:d,disabled:o||!a})},aoe=f.memo(soe),ioe=[{label:"Resize",value:"just_resize"},{label:"Crop",value:"crop_resize"},{label:"Fill",value:"fill_resize"}];function loe(e){const{controlNetId:t}=e,n=te(),r=f.useMemo(()=>fe(Xe,({controlNet:c})=>{const{resizeMode:d,isEnabled:p}=c.controlNets[t];return{resizeMode:d,isEnabled:p}},Ge),[t]),{resizeMode:o,isEnabled:s}=z(r),a=f.useCallback(c=>{n(fM({controlNetId:t,resizeMode:c}))},[t,n]);return i.jsx(Xr,{disabled:!s,label:"Resize Mode",data:ioe,value:String(o),onChange:a})}const coe=e=>{const{controlNetId:t}=e,n=te(),r=fe(Xe,({controlNet:m})=>{const{isEnabled:v,shouldAutoConfig:b}=m.controlNets[t];return{isEnabled:v,shouldAutoConfig:b}},Ge),{isEnabled:o,shouldAutoConfig:s}=z(r),[a,c]=dee(!1),d=f.useCallback(()=>{n(pM({controlNetId:t}))},[t,n]),p=f.useCallback(()=>{n(hM({sourceControlNetId:t,newControlNetId:ui()}))},[t,n]),h=f.useCallback(()=>{n(mM({controlNetId:t}))},[t,n]);return i.jsxs(F,{sx:{flexDir:"column",gap:3,p:3,borderRadius:"base",position:"relative",bg:"base.200",_dark:{bg:"base.850"}},children:[i.jsxs(F,{sx:{gap:2,alignItems:"center"},children:[i.jsx(Er,{tooltip:"Toggle this ControlNet","aria-label":"Toggle this ControlNet",isChecked:o,onChange:h}),i.jsx(Ee,{sx:{w:"full",minW:0,opacity:o?1:.5,pointerEvents:o?"auto":"none",transitionProperty:"common",transitionDuration:"0.1s"},children:i.jsx(Sre,{controlNetId:t})}),i.jsx(Le,{size:"sm",tooltip:"Duplicate","aria-label":"Duplicate",onClick:p,icon:i.jsx(Wc,{})}),i.jsx(Le,{size:"sm",tooltip:"Delete","aria-label":"Delete",colorScheme:"error",onClick:d,icon:i.jsx(us,{})}),i.jsx(Le,{size:"sm",tooltip:a?"Hide Advanced":"Show Advanced","aria-label":a?"Hide Advanced":"Show Advanced",onClick:c,variant:"ghost",sx:{_hover:{bg:"none"}},icon:i.jsx(ly,{sx:{boxSize:4,color:"base.700",transform:a?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal",_dark:{color:"base.300"}}})}),!s&&i.jsx(Ee,{sx:{position:"absolute",w:1.5,h:1.5,borderRadius:"full",top:4,insetInlineEnd:4,bg:"accent.700",_dark:{bg:"accent.400"}}})]}),i.jsxs(F,{sx:{w:"full",flexDirection:"column",gap:3},children:[i.jsxs(F,{sx:{gap:4,w:"full",alignItems:"center"},children:[i.jsxs(F,{sx:{flexDir:"column",gap:3,h:28,w:"full",paddingInlineStart:1,paddingInlineEnd:a?1:0,pb:2,justifyContent:"space-between"},children:[i.jsx(kre,{controlNetId:t}),i.jsx(toe,{controlNetId:t})]}),!a&&i.jsx(F,{sx:{alignItems:"center",justifyContent:"center",h:28,w:28,aspectRatio:"1/1"},children:i.jsx(_k,{controlNetId:t,height:28})})]}),i.jsxs(F,{sx:{gap:2},children:[i.jsx(roe,{controlNetId:t}),i.jsx(loe,{controlNetId:t})]}),i.jsx(aoe,{controlNetId:t})]}),a&&i.jsxs(i.Fragment,{children:[i.jsx(_k,{controlNetId:t,height:"392px"}),i.jsx(Zre,{controlNetId:t}),i.jsx(Qre,{controlNetId:t})]})]})},uoe=f.memo(coe),doe=fe(Xe,e=>{const{isEnabled:t}=e.controlNet;return{isEnabled:t}},Ge),foe=()=>{const{isEnabled:e}=z(doe),t=te(),n=f.useCallback(()=>{t(gM())},[t]);return i.jsx(Er,{label:"Enable ControlNet",isChecked:e,onChange:n,formControlProps:{width:"100%"}})},poe=fe([Xe],({controlNet:e})=>{const{controlNets:t,isEnabled:n}=e,r=vM(t),o=n&&r.length>0?`${r.length} Active`:void 0;return{controlNetsArray:cs(t),activeLabel:o}},Ge),hoe=()=>{const{controlNetsArray:e,activeLabel:t}=z(poe),n=ar("controlNet").isFeatureDisabled,r=te(),{firstModel:o}=q1(void 0,{selectFromResult:a=>{var d,p;return{firstModel:(p=a.data)==null?void 0:p.entities[(d=a.data)==null?void 0:d.ids[0]]}}}),s=f.useCallback(()=>{if(!o)return;const a=ui();r(bM({controlNetId:a})),r(K5({controlNetId:a,model:o}))},[r,o]);return n?null:i.jsx(Ro,{label:"ControlNet",activeLabel:t,children:i.jsxs(F,{sx:{flexDir:"column",gap:3},children:[i.jsxs(F,{gap:2,alignItems:"center",children:[i.jsx(F,{sx:{flexDirection:"column",w:"100%",gap:2,px:4,py:2,borderRadius:4,bg:"base.200",_dark:{bg:"base.850"}},children:i.jsx(foe,{})}),i.jsx(Le,{tooltip:"Add ControlNet","aria-label":"Add ControlNet",icon:i.jsx(ml,{}),isDisabled:!o,flexGrow:1,size:"md",onClick:s})]}),e.map((a,c)=>i.jsxs(f.Fragment,{children:[c>0&&i.jsx(Pi,{}),i.jsx(uoe,{controlNetId:a.controlNetId})]},a.controlNetId))]})})},Vy=f.memo(hoe),moe=fe(Di,e=>{const{seamlessXAxis:t}=e;return{seamlessXAxis:t}},Ge),goe=()=>{const{t:e}=be(),{seamlessXAxis:t}=z(moe),n=te(),r=f.useCallback(o=>{n(yM(o.target.checked))},[n]);return i.jsx(Er,{label:e("parameters.seamlessXAxis"),"aria-label":e("parameters.seamlessXAxis"),isChecked:t,onChange:r})},voe=f.memo(goe),boe=fe(Di,e=>{const{seamlessYAxis:t}=e;return{seamlessYAxis:t}},Ge),yoe=()=>{const{t:e}=be(),{seamlessYAxis:t}=z(boe),n=te(),r=f.useCallback(o=>{n(xM(o.target.checked))},[n]);return i.jsx(Er,{label:e("parameters.seamlessYAxis"),"aria-label":e("parameters.seamlessYAxis"),isChecked:t,onChange:r})},xoe=f.memo(yoe),woe=(e,t)=>{if(e&&t)return"X & Y";if(e)return"X";if(t)return"Y"},Soe=fe(Di,e=>{const{seamlessXAxis:t,seamlessYAxis:n}=e;return{activeLabel:woe(t,n)}},Ge),Coe=()=>{const{t:e}=be(),{activeLabel:t}=z(Soe);return ar("seamless").isFeatureEnabled?i.jsx(Ro,{label:e("parameters.seamlessTiling"),activeLabel:t,children:i.jsxs(F,{sx:{gap:5},children:[i.jsx(Ee,{flexGrow:1,children:i.jsx(voe,{})}),i.jsx(Ee,{flexGrow:1,children:i.jsx(xoe,{})})]})}):null},z8=f.memo(Coe);function koe(){const e=z(o=>o.generation.horizontalSymmetrySteps),t=z(o=>o.generation.steps),n=te(),{t:r}=be();return i.jsx(_t,{label:r("parameters.hSymmetryStep"),value:e,onChange:o=>n(rw(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(rw(0))})}function _oe(){const e=z(o=>o.generation.verticalSymmetrySteps),t=z(o=>o.generation.steps),n=te(),{t:r}=be();return i.jsx(_t,{label:r("parameters.vSymmetryStep"),value:e,onChange:o=>n(ow(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(ow(0))})}function Poe(){const e=z(n=>n.generation.shouldUseSymmetry),t=te();return i.jsx(Er,{label:"Enable Symmetry",isChecked:e,onChange:n=>t(wM(n.target.checked))})}const joe=fe(Xe,e=>({activeLabel:e.generation.shouldUseSymmetry?"Enabled":void 0}),Ge),Ioe=()=>{const{t:e}=be(),{activeLabel:t}=z(joe);return ar("symmetry").isFeatureEnabled?i.jsx(Ro,{label:e("parameters.symmetry"),activeLabel:t,children:i.jsxs(F,{sx:{gap:2,flexDirection:"column"},children:[i.jsx(Poe,{}),i.jsx(koe,{}),i.jsx(_oe,{})]})}):null},Uy=f.memo(Ioe);function Gy(){return i.jsxs(F,{sx:{flexDirection:"column",gap:2},children:[i.jsx(_8,{}),i.jsx(k8,{})]})}const Eoe=fe([Xe],({generation:e,hotkeys:t,config:n})=>{const{initial:r,min:o,sliderMax:s,inputMax:a,fineStep:c,coarseStep:d}=n.sd.img2imgStrength,{img2imgStrength:p}=e,h=t.shift?c:d;return{img2imgStrength:p,initial:r,min:o,sliderMax:s,inputMax:a,step:h}},Ge),Ooe=()=>{const{img2imgStrength:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s}=z(Eoe),a=te(),{t:c}=be(),d=f.useCallback(h=>a(Dp(h)),[a]),p=f.useCallback(()=>{a(Dp(t))},[a,t]);return i.jsx(_t,{label:`${c("parameters.denoisingStrength")}`,step:s,min:n,max:r,onChange:d,handleReset:p,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0,sliderNumberInputProps:{max:o}})},L8=f.memo(Ooe),Roe=fe([La,Di],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ge),Moe=()=>{const{shouldUseSliders:e,activeLabel:t}=z(Roe);return i.jsx(Ro,{label:"General",activeLabel:t,defaultIsOpen:!0,children:i.jsxs(F,{sx:{flexDirection:"column",gap:3},children:[e?i.jsxs(i.Fragment,{children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(Ec,{})]}):i.jsxs(i.Fragment,{children:[i.jsxs(F,{gap:3,children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{})]}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(Ec,{})]}),i.jsx(L8,{}),i.jsx(R8,{})]})})},Doe=f.memo(Moe),B8=()=>i.jsxs(i.Fragment,{children:[i.jsx(Gy,{}),i.jsx(Bd,{}),i.jsx(Doe,{}),i.jsx(Vy,{}),i.jsx(Hy,{}),i.jsx(zd,{}),i.jsx(qm,{}),i.jsx(Uy,{}),i.jsx(z8,{}),i.jsx(Wy,{})]}),Aoe=()=>{const e=te(),t=f.useRef(null),n=z(o=>o.generation.model),r=f.useCallback(()=>{t.current&&t.current.setLayout([50,50])},[]);return i.jsxs(F,{sx:{gap:4,w:"full",h:"full"},children:[i.jsx(Fy,{children:n&&n.base_model==="sdxl"?i.jsx(M8,{}):i.jsx(B8,{})}),i.jsx(Ee,{sx:{w:"full",h:"full"},children:i.jsxs($y,{ref:t,autoSaveId:"imageTab.content",direction:"horizontal",style:{height:"100%",width:"100%"},children:[i.jsx(ad,{id:"imageTab.content.initImage",order:0,defaultSize:50,minSize:25,style:{position:"relative"},children:i.jsx(ste,{})}),i.jsx(A8,{onDoubleClick:r}),i.jsx(ad,{id:"imageTab.content.selectedImage",order:1,defaultSize:50,minSize:25,onResize:()=>{e(Co())},children:i.jsx(N8,{})})]})})]})},Toe=f.memo(Aoe);var Noe=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 a=s[o];if(!e(t[a],n[a]))return!1}return!0}return t!==t&&n!==n};const Nk=ud(Noe);function k1(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 $oe=Object.defineProperty,$k=Object.getOwnPropertySymbols,zoe=Object.prototype.hasOwnProperty,Loe=Object.prototype.propertyIsEnumerable,zk=(e,t,n)=>t in e?$oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Boe=(e,t)=>{for(var n in t||(t={}))zoe.call(t,n)&&zk(e,n,t[n]);if($k)for(var n of $k(t))Loe.call(t,n)&&zk(e,n,t[n]);return e};function F8(e,t){if(t===null||typeof t!="object")return{};const n=Boe({},t);return Object.keys(t).forEach(r=>{r.includes(`${String(e)}.`)&&delete n[r]}),n}const Foe="__MANTINE_FORM_INDEX__";function Lk(e,t){return t?typeof t=="boolean"?t:Array.isArray(t)?t.includes(e.replace(/[.][0-9]/g,`.${Foe}`)):!1:!1}function Bk(e,t,n){typeof n.value=="object"&&(n.value=Jl(n.value)),!n.enumerable||n.get||n.set||!n.configurable||!n.writable||t==="__proto__"?Object.defineProperty(e,t,n):e[t]=n.value}function Jl(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(a){o.add(Jl(a))})):s==="[object Map]"?(o=new Map,e.forEach(function(a,c){o.set(Jl(c),Jl(a))})):s==="[object Date]"?o=new Date(+e):s==="[object RegExp]"?o=new RegExp(e.source,e.flags):s==="[object DataView]"?o=new e.constructor(Jl(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 _1(e,t,n="",r={}){return typeof e!="object"||e===null?r:Object.keys(e).reduce((o,s)=>{const a=e[s],c=`${n===""?"":`${n}.`}${s}`,d=xa(c,t);let p=!1;return typeof a=="function"&&(o[c]=a(d,t,c)),typeof a=="object"&&Array.isArray(d)&&(p=!0,d.forEach((h,m)=>_1(a,t,`${c}.${m}`,o))),typeof a=="object"&&typeof d=="object"&&d!==null&&(p||_1(a,t,c,o)),o},r)}function P1(e,t){return Fk(typeof e=="function"?e(t):_1(e,t))}function mp(e,t,n){if(typeof e!="string")return{hasError:!1,error:null};const r=P1(t,n),o=Object.keys(r.errors).find(s=>e.split(".").every((a,c)=>a===s.split(".")[c]));return{hasError:!!o,error:o?r.errors[o]:null}}function Hoe(e,{from:t,to:n},r){const o=xa(e,r);if(!Array.isArray(o))return r;const s=[...o],a=o[t];return s.splice(t,1),s.splice(n,0,a),Zm(e,s,r)}var Woe=Object.defineProperty,Hk=Object.getOwnPropertySymbols,Voe=Object.prototype.hasOwnProperty,Uoe=Object.prototype.propertyIsEnumerable,Wk=(e,t,n)=>t in e?Woe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Goe=(e,t)=>{for(var n in t||(t={}))Voe.call(t,n)&&Wk(e,n,t[n]);if(Hk)for(var n of Hk(t))Uoe.call(t,n)&&Wk(e,n,t[n]);return e};function qoe(e,{from:t,to:n},r){const o=`${e}.${t}`,s=`${e}.${n}`,a=Goe({},r);return Object.keys(r).every(c=>{let d,p;if(c.startsWith(o)&&(d=c,p=c.replace(o,s)),c.startsWith(s)&&(d=c.replace(s,o),p=c),d&&p){const h=a[d],m=a[p];return m===void 0?delete a[d]:a[d]=m,h===void 0?delete a[p]:a[p]=h,!1}return!0}),a}function Koe(e,t,n){const r=xa(e,n);return Array.isArray(r)?Zm(e,r.filter((o,s)=>s!==t),n):n}var Xoe=Object.defineProperty,Vk=Object.getOwnPropertySymbols,Yoe=Object.prototype.hasOwnProperty,Qoe=Object.prototype.propertyIsEnumerable,Uk=(e,t,n)=>t in e?Xoe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Joe=(e,t)=>{for(var n in t||(t={}))Yoe.call(t,n)&&Uk(e,n,t[n]);if(Vk)for(var n of Vk(t))Qoe.call(t,n)&&Uk(e,n,t[n]);return e};function Gk(e,t){const n=e.substring(t.length+1).split(".")[0];return parseInt(n,10)}function qk(e,t,n,r){if(t===void 0)return n;const o=`${String(e)}`;let s=n;r===-1&&(s=F8(`${o}.${t}`,s));const a=Joe({},s),c=new Set;return Object.entries(s).filter(([d])=>{if(!d.startsWith(`${o}.`))return!1;const p=Gk(d,o);return Number.isNaN(p)?!1:p>=t}).forEach(([d,p])=>{const h=Gk(d,o),m=d.replace(`${o}.${h}`,`${o}.${h+r}`);a[m]=p,c.add(m),c.has(d)||delete a[d]}),a}function Zoe(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),Zm(e,s,r)}function Kk(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 ese(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 tse=Object.defineProperty,nse=Object.defineProperties,rse=Object.getOwnPropertyDescriptors,Xk=Object.getOwnPropertySymbols,ose=Object.prototype.hasOwnProperty,sse=Object.prototype.propertyIsEnumerable,Yk=(e,t,n)=>t in e?tse(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ti=(e,t)=>{for(var n in t||(t={}))ose.call(t,n)&&Yk(e,n,t[n]);if(Xk)for(var n of Xk(t))sse.call(t,n)&&Yk(e,n,t[n]);return e},nv=(e,t)=>nse(e,rse(t));function xl({initialValues:e={},initialErrors:t={},initialDirty:n={},initialTouched:r={},clearInputErrorOnChange:o=!0,validateInputOnChange:s=!1,validateInputOnBlur:a=!1,transformValues:c=p=>p,validate:d}={}){const[p,h]=f.useState(r),[m,v]=f.useState(n),[b,w]=f.useState(e),[y,S]=f.useState(k1(t)),k=f.useRef(e),_=K=>{k.current=K},I=f.useCallback(()=>h({}),[]),P=K=>{const U=K?ti(ti({},b),K):b;_(U),v({})},E=f.useCallback(K=>S(U=>k1(typeof K=="function"?K(U):K)),[]),O=f.useCallback(()=>S({}),[]),R=f.useCallback(()=>{w(e),O(),_(e),v({}),I()},[]),M=f.useCallback((K,U)=>E(se=>nv(ti({},se),{[K]:U})),[]),A=f.useCallback(K=>E(U=>{if(typeof K!="string")return U;const se=ti({},U);return delete se[K],se}),[]),T=f.useCallback(K=>v(U=>{if(typeof K!="string")return U;const se=F8(K,U);return delete se[K],se}),[]),$=f.useCallback((K,U)=>{const se=Lk(K,s);T(K),h(re=>nv(ti({},re),{[K]:!0})),w(re=>{const oe=Zm(K,U,re);if(se){const pe=mp(K,d,oe);pe.hasError?M(K,pe.error):A(K)}return oe}),!se&&o&&M(K,null)},[]),Q=f.useCallback(K=>{w(U=>{const se=typeof K=="function"?K(U):K;return ti(ti({},U),se)}),o&&O()},[]),B=f.useCallback((K,U)=>{T(K),w(se=>Hoe(K,U,se)),S(se=>qoe(K,U,se))},[]),V=f.useCallback((K,U)=>{T(K),w(se=>Koe(K,U,se)),S(se=>qk(K,U,se,-1))},[]),q=f.useCallback((K,U,se)=>{T(K),w(re=>Zoe(K,U,se,re)),S(re=>qk(K,se,re,1))},[]),G=f.useCallback(()=>{const K=P1(d,b);return S(K.errors),K},[b,d]),D=f.useCallback(K=>{const U=mp(K,d,b);return U.hasError?M(K,U.error):A(K),U},[b,d]),L=(K,{type:U="input",withError:se=!0,withFocus:re=!0}={})=>{const pe={onChange:ese(ie=>$(K,ie))};return se&&(pe.error=y[K]),U==="checkbox"?pe.checked=xa(K,b):pe.value=xa(K,b),re&&(pe.onFocus=()=>h(ie=>nv(ti({},ie),{[K]:!0})),pe.onBlur=()=>{if(Lk(K,a)){const ie=mp(K,d,b);ie.hasError?M(K,ie.error):A(K)}}),pe},W=(K,U)=>se=>{se==null||se.preventDefault();const re=G();re.hasErrors?U==null||U(re.errors,b,se):K==null||K(c(b),se)},Y=K=>c(K||b),ae=f.useCallback(K=>{K.preventDefault(),R()},[]),ye=K=>{if(K){const se=xa(K,m);if(typeof se=="boolean")return se;const re=xa(K,b),oe=xa(K,k.current);return!Nk(re,oe)}return Object.keys(m).length>0?Kk(m):!Nk(b,k.current)},ce=f.useCallback(K=>Kk(p,K),[p]),X=f.useCallback(K=>K?!mp(K,d,b).hasError:!P1(d,b).hasErrors,[b,d]);return{values:b,errors:y,setValues:Q,setErrors:E,setFieldValue:$,setFieldError:M,clearFieldError:A,clearErrors:O,reset:R,validate:G,validateField:D,reorderListItem:B,removeListItem:V,insertListItem:q,getInputProps:L,onSubmit:W,onReset:ae,isDirty:ye,isTouched:ce,setTouched:h,setDirty:v,resetTouched:I,resetDirty:P,isValid:X,getTransformedValues:Y}}function br(e){const{...t}=e,{base50:n,base100:r,base200:o,base300:s,base800:a,base700:c,base900:d,accent500:p,accent300:h}=jy(),{colorMode:m}=Ds();return i.jsx(DE,{styles:()=>({input:{color:Fe(d,r)(m),backgroundColor:Fe(n,d)(m),borderColor:Fe(o,a)(m),borderWidth:2,outline:"none",":focus":{borderColor:Fe(h,p)(m)}},label:{color:Fe(c,s)(m),fontWeight:"normal",marginBottom:4}}),...t})}const ase=[{value:"sd-1",label:hr["sd-1"]},{value:"sd-2",label:hr["sd-2"]},{value:"sdxl",label:hr.sdxl},{value:"sdxl-refiner",label:hr["sdxl-refiner"]}];function Hd(e){const{...t}=e,{t:n}=be();return i.jsx(Xr,{label:n("modelManager.baseModel"),data:ase,...t})}function W8(e){const{data:t}=X5(),{...n}=e;return i.jsx(Xr,{label:"Config File",placeholder:"Select A Config File",data:t||[],...n})}const ise=[{value:"normal",label:"Normal"},{value:"inpaint",label:"Inpaint"},{value:"depth",label:"Depth"}];function eg(e){const{...t}=e,{t:n}=be();return i.jsx(Xr,{label:n("modelManager.variant"),data:ise,...t})}function V8(e){const{t}=be(),n=te(),{model_path:r}=e,o=xl({initialValues:{model_name:r?r.split("\\").splice(-1)[0].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]=Y5(),[a,c]=f.useState(!1),d=p=>{s({body:p}).unwrap().then(h=>{n(On(Mn({title:`Model Added: ${p.model_name}`,status:"success"}))),o.reset(),r&&n(pd(null))}).catch(h=>{h&&n(On(Mn({title:"Model Add Failed",status:"error"})))})};return i.jsx("form",{onSubmit:o.onSubmit(p=>d(p)),style:{width:"100%"},children:i.jsxs(F,{flexDirection:"column",gap:2,children:[i.jsx(br,{label:"Model Name",required:!0,...o.getInputProps("model_name")}),i.jsx(Hd,{...o.getInputProps("base_model")}),i.jsx(br,{label:"Model Location",required:!0,...o.getInputProps("path")}),i.jsx(br,{label:"Description",...o.getInputProps("description")}),i.jsx(br,{label:"VAE Location",...o.getInputProps("vae")}),i.jsx(eg,{...o.getInputProps("variant")}),i.jsxs(F,{flexDirection:"column",width:"100%",gap:2,children:[a?i.jsx(br,{required:!0,label:"Custom Config File Location",...o.getInputProps("config")}):i.jsx(W8,{required:!0,width:"100%",...o.getInputProps("config")}),i.jsx(Gn,{isChecked:a,onChange:()=>c(!a),label:"Use Custom Config"}),i.jsx(en,{mt:2,type:"submit",children:t("modelManager.addModel")})]})]})})}function U8(e){const{t}=be(),n=te(),{model_path:r}=e,[o]=Y5(),s=xl({initialValues:{model_name:r?r.split("\\").splice(-1)[0]:"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"diffusers",error:void 0,vae:"",variant:"normal"}}),a=c=>{o({body:c}).unwrap().then(d=>{n(On(Mn({title:`Model Added: ${c.model_name}`,status:"success"}))),s.reset(),r&&n(pd(null))}).catch(d=>{d&&n(On(Mn({title:"Model Add Failed",status:"error"})))})};return i.jsx("form",{onSubmit:s.onSubmit(c=>a(c)),style:{width:"100%"},children:i.jsxs(F,{flexDirection:"column",gap:2,children:[i.jsx(br,{required:!0,label:"Model Name",...s.getInputProps("model_name")}),i.jsx(Hd,{...s.getInputProps("base_model")}),i.jsx(br,{required:!0,label:"Model Location",placeholder:"Provide the path to a local folder where your Diffusers Model is stored",...s.getInputProps("path")}),i.jsx(br,{label:"Description",...s.getInputProps("description")}),i.jsx(br,{label:"VAE Location",...s.getInputProps("vae")}),i.jsx(eg,{...s.getInputProps("variant")}),i.jsx(en,{mt:2,type:"submit",children:t("modelManager.addModel")})]})})}const G8=[{label:"Diffusers",value:"diffusers"},{label:"Checkpoint / Safetensors",value:"checkpoint"}];function lse(){const[e,t]=f.useState("diffusers");return i.jsxs(F,{flexDirection:"column",gap:4,width:"100%",children:[i.jsx(Xr,{label:"Model Type",value:e,data:G8,onChange:n=>{n&&t(n)}}),i.jsxs(F,{sx:{p:4,borderRadius:4,bg:"base.300",_dark:{bg:"base.850"}},children:[e==="diffusers"&&i.jsx(U8,{}),e==="checkpoint"&&i.jsx(V8,{})]})]})}const cse=[{label:"None",value:"none"},{label:"v_prediction",value:"v_prediction"},{label:"epsilon",value:"epsilon"},{label:"sample",value:"sample"}];function use(){const e=te(),{t}=be(),n=z(c=>c.system.isProcessing),[r,{isLoading:o}]=Q5(),s=xl({initialValues:{location:"",prediction_type:void 0}}),a=c=>{const d={location:c.location,prediction_type:c.prediction_type==="none"?void 0:c.prediction_type};r({body:d}).unwrap().then(p=>{e(On(Mn({title:"Model Added",status:"success"}))),s.reset()}).catch(p=>{p&&(console.log(p),e(On(Mn({title:`${p.data.detail} `,status:"error"}))))})};return i.jsx("form",{onSubmit:s.onSubmit(c=>a(c)),style:{width:"100%"},children:i.jsxs(F,{flexDirection:"column",width:"100%",gap:4,children:[i.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")}),i.jsx(Xr,{label:"Prediction Type (for Stable Diffusion 2.x Models only)",data:cse,defaultValue:"none",...s.getInputProps("prediction_type")}),i.jsx(en,{type:"submit",isLoading:o,isDisabled:o||n,children:t("modelManager.addModel")})]})})}function dse(){const[e,t]=f.useState("simple");return i.jsxs(F,{flexDirection:"column",width:"100%",overflow:"scroll",maxHeight:window.innerHeight-250,gap:4,children:[i.jsxs(nr,{isAttached:!0,children:[i.jsx(en,{size:"sm",isChecked:e=="simple",onClick:()=>t("simple"),children:"Simple"}),i.jsx(en,{size:"sm",isChecked:e=="advanced",onClick:()=>t("advanced"),children:"Advanced"})]}),i.jsxs(F,{sx:{p:4,borderRadius:4,background:"base.200",_dark:{background:"base.800"}},children:[e==="simple"&&i.jsx(use,{}),e==="advanced"&&i.jsx(lse,{})]})]})}const fse={display:"flex",flexDirection:"row",alignItems:"center",gap:10},pse=e=>{const{label:t="",labelPos:n="top",isDisabled:r=!1,isInvalid:o,formControlProps:s,...a}=e,c=te(),d=f.useCallback(h=>{h.shiftKey&&c(Po(!0))},[c]),p=f.useCallback(h=>{h.shiftKey||c(Po(!1))},[c]);return i.jsxs(mo,{isInvalid:o,isDisabled:r,...s,style:n==="side"?fse:void 0,children:[t!==""&&i.jsx(Lo,{children:t}),i.jsx(yd,{...a,onPaste:Ly,onKeyDown:d,onKeyUp:p})]})},Oc=f.memo(pse);function hse(e){const{...t}=e;return i.jsx(PI,{w:"100%",...t,children:e.children})}function mse(){const e=z(y=>y.modelmanager.searchFolder),[t,n]=f.useState(""),{data:r}=na(Wu),{foundModels:o,alreadyInstalled:s,filteredModels:a}=J5({search_path:e||""},{selectFromResult:({data:y})=>{const S=a9(r==null?void 0:r.entities),k=cs(S,"path"),_=r9(y,k),I=d9(y,k);return{foundModels:y,alreadyInstalled:Qk(I,t),filteredModels:Qk(_,t)}}}),[c,{isLoading:d}]=Q5(),p=te(),{t:h}=be(),m=f.useCallback(y=>{const S=y.currentTarget.id.split("\\").splice(-1)[0];c({body:{location:y.currentTarget.id}}).unwrap().then(k=>{p(On(Mn({title:`Added Model: ${S}`,status:"success"})))}).catch(k=>{k&&p(On(Mn({title:"Failed To Add Model",status:"error"})))})},[p,c]),v=f.useCallback(y=>{n(y.target.value)},[]),b=({models:y,showActions:S=!0})=>y.map(k=>i.jsxs(F,{sx:{p:4,gap:4,alignItems:"center",borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[i.jsxs(F,{w:"100%",sx:{flexDirection:"column",minW:"25%"},children:[i.jsx(Ye,{sx:{fontWeight:600},children:k.split("\\").slice(-1)[0]}),i.jsx(Ye,{sx:{fontSize:"sm",color:"base.600",_dark:{color:"base.400"}},children:k})]}),S?i.jsxs(F,{gap:2,children:[i.jsx(en,{id:k,onClick:m,isLoading:d,children:"Quick Add"}),i.jsx(en,{onClick:()=>p(pd(k)),isLoading:d,children:"Advanced"})]}):i.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?i.jsx(F,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",height:96,userSelect:"none",bg:"base.200",_dark:{bg:"base.900"}},children:i.jsx(Ye,{variant:"subtext",children:"No Models Found"})}):i.jsxs(F,{sx:{flexDirection:"column",gap:2,w:"100%",minW:"50%"},children:[i.jsx(Oc,{onChange:v,label:h("modelManager.search"),labelPos:"side"}),i.jsxs(F,{p:2,gap:2,children:[i.jsxs(Ye,{sx:{fontWeight:600},children:["Models Found: ",o.length]}),i.jsxs(Ye,{sx:{fontWeight:600,color:"accent.500",_dark:{color:"accent.200"}},children:["Not Installed: ",a.length]})]}),i.jsx(hse,{offsetScrollbars:!0,children:i.jsxs(F,{gap:2,flexDirection:"column",children:[b({models:a}),b({models:s,showActions:!1})]})})]}):null)()}const Qk=(e,t)=>{const n=[];return Io(e,r=>{if(!r)return null;r.includes(t)&&n.push(r)}),n};function gse(){const e=z(a=>a.modelmanager.advancedAddScanModel),[t,n]=f.useState("diffusers"),[r,o]=f.useState(!0);f.useEffect(()=>{e&&[".ckpt",".safetensors",".pth",".pt"].some(a=>e.endsWith(a))?n("checkpoint"):n("diffusers")},[e,n,r]);const s=te();return e?i.jsxs(Ee,{as:Ir.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:[i.jsxs(F,{justifyContent:"space-between",alignItems:"center",children:[i.jsx(Ye,{size:"xl",fontWeight:600,children:r||t==="checkpoint"?"Add Checkpoint Model":"Add Diffusers Model"}),i.jsx(Le,{icon:i.jsx(kW,{}),"aria-label":"Close Advanced",onClick:()=>s(pd(null)),size:"sm"})]}),i.jsx(Xr,{label:"Model Type",value:t,data:G8,onChange:a=>{a&&(n(a),o(a==="checkpoint"))}}),r?i.jsx(V8,{model_path:e},e):i.jsx(U8,{model_path:e},e)]}):null}function vse(){const e=te(),{t}=be(),n=z(c=>c.modelmanager.searchFolder),{refetch:r}=J5({search_path:n||""}),o=xl({initialValues:{folder:""}}),s=f.useCallback(c=>{e(sw(c.folder))},[e]),a=()=>{r()};return i.jsx("form",{onSubmit:o.onSubmit(c=>s(c)),style:{width:"100%"},children:i.jsxs(F,{sx:{w:"100%",gap:2,borderRadius:4,alignItems:"center"},children:[i.jsxs(F,{w:"100%",alignItems:"center",gap:4,minH:12,children:[i.jsx(Ye,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",minW:"max-content",_dark:{color:"base.300"}},children:"Folder"}),n?i.jsx(F,{sx:{w:"100%",p:2,px:4,bg:"base.300",borderRadius:4,fontSize:"sm",fontWeight:"bold",_dark:{bg:"base.700"}},children:n}):i.jsx(Oc,{w:"100%",size:"md",...o.getInputProps("folder")})]}),i.jsxs(F,{gap:2,children:[n?i.jsx(Le,{"aria-label":t("modelManager.scanAgain"),tooltip:t("modelManager.scanAgain"),icon:i.jsx(kP,{}),onClick:a,fontSize:18,size:"sm"}):i.jsx(Le,{"aria-label":t("modelManager.findModels"),tooltip:t("modelManager.findModels"),icon:i.jsx(xW,{}),fontSize:18,size:"sm",type:"submit"}),i.jsx(Le,{"aria-label":t("modelManager.clearCheckpointFolder"),tooltip:t("modelManager.clearCheckpointFolder"),icon:i.jsx(us,{}),size:"sm",onClick:()=>{e(sw(null)),e(pd(null))},isDisabled:!n,colorScheme:"red"})]})]})})}const bse=f.memo(vse);function yse(){return i.jsxs(F,{flexDirection:"column",w:"100%",gap:4,children:[i.jsx(bse,{}),i.jsxs(F,{gap:4,children:[i.jsx(F,{sx:{maxHeight:window.innerHeight-300,overflow:"scroll",gap:4,w:"100%"},children:i.jsx(mse,{})}),i.jsx(gse,{})]})]})}function xse(){const[e,t]=f.useState("add"),{t:n}=be();return i.jsxs(F,{flexDirection:"column",gap:4,children:[i.jsxs(nr,{isAttached:!0,children:[i.jsx(en,{onClick:()=>t("add"),isChecked:e=="add",size:"sm",width:"100%",children:n("modelManager.addModel")}),i.jsx(en,{onClick:()=>t("scan"),isChecked:e=="scan",size:"sm",width:"100%",children:n("modelManager.scanForModels")})]}),e=="add"&&i.jsx(dse,{}),e=="scan"&&i.jsx(yse,{})]})}const wse=[{label:"Stable Diffusion 1",value:"sd-1"},{label:"Stable Diffusion 2",value:"sd-2"}];function Sse(){const{t:e}=be(),t=te(),{data:n}=na(Wu),[r,{isLoading:o}]=SM(),[s,a]=f.useState("sd-1"),c=yw(n==null?void 0:n.entities,(D,L)=>(D==null?void 0:D.model_format)==="diffusers"&&(D==null?void 0:D.base_model)==="sd-1"),d=yw(n==null?void 0:n.entities,(D,L)=>(D==null?void 0:D.model_format)==="diffusers"&&(D==null?void 0:D.base_model)==="sd-2"),p=f.useMemo(()=>({"sd-1":c,"sd-2":d}),[c,d]),[h,m]=f.useState(Object.keys(p[s])[0]),[v,b]=f.useState(Object.keys(p[s])[1]),[w,y]=f.useState(null),[S,k]=f.useState(""),[_,I]=f.useState(.5),[P,E]=f.useState("weighted_sum"),[O,R]=f.useState("root"),[M,A]=f.useState(""),[T,$]=f.useState(!1),Q=Object.keys(p[s]).filter(D=>D!==v&&D!==w),B=Object.keys(p[s]).filter(D=>D!==h&&D!==w),V=Object.keys(p[s]).filter(D=>D!==h&&D!==v),q=D=>{a(D),m(null),b(null)},G=()=>{const D=[];let L=[h,v,w];L=L.filter(Y=>Y!==null),L.forEach(Y=>{Y&&D.push(Y==null?void 0:Y.split("/")[2])});const W={model_names:D,merged_model_name:S!==""?S:D.join("-"),alpha:_,interp:P,force:T,merge_dest_directory:O==="root"?void 0:M};r({base_model:s,body:W}).unwrap().then(Y=>{t(On(Mn({title:e("modelManager.modelsMerged"),status:"success"})))}).catch(Y=>{Y&&t(On(Mn({title:e("modelManager.modelsMergeFailed"),status:"error"})))})};return i.jsxs(F,{flexDirection:"column",rowGap:4,children:[i.jsxs(F,{sx:{flexDirection:"column",rowGap:1},children:[i.jsx(Ye,{children:e("modelManager.modelMergeHeaderHelp1")}),i.jsx(Ye,{fontSize:"sm",variant:"subtext",children:e("modelManager.modelMergeHeaderHelp2")})]}),i.jsxs(F,{columnGap:4,children:[i.jsx(Xr,{label:"Model Type",w:"100%",data:wse,value:s,onChange:q}),i.jsx(sr,{label:e("modelManager.modelOne"),w:"100%",value:h,placeholder:e("modelManager.selectModel"),data:Q,onChange:D=>m(D)}),i.jsx(sr,{label:e("modelManager.modelTwo"),w:"100%",placeholder:e("modelManager.selectModel"),value:v,data:B,onChange:D=>b(D)}),i.jsx(sr,{label:e("modelManager.modelThree"),data:V,w:"100%",placeholder:e("modelManager.selectModel"),clearable:!0,onChange:D=>{D?(y(D),E("weighted_sum")):(y(null),E("add_difference"))}})]}),i.jsx(Oc,{label:e("modelManager.mergedModelName"),value:S,onChange:D=>k(D.target.value)}),i.jsxs(F,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[i.jsx(_t,{label:e("modelManager.alpha"),min:.01,max:.99,step:.01,value:_,onChange:D=>I(D),withInput:!0,withReset:!0,handleReset:()=>I(.5),withSliderMarks:!0}),i.jsx(Ye,{variant:"subtext",fontSize:"sm",children:e("modelManager.modelMergeAlphaHelp")})]}),i.jsxs(F,{sx:{padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[i.jsx(Ye,{fontWeight:500,fontSize:"sm",variant:"subtext",children:e("modelManager.interpolationType")}),i.jsx(Up,{value:P,onChange:D=>E(D),children:i.jsx(F,{columnGap:4,children:w===null?i.jsxs(i.Fragment,{children:[i.jsx(ya,{value:"weighted_sum",children:i.jsx(Ye,{fontSize:"sm",children:e("modelManager.weightedSum")})}),i.jsx(ya,{value:"sigmoid",children:i.jsx(Ye,{fontSize:"sm",children:e("modelManager.sigmoid")})}),i.jsx(ya,{value:"inv_sigmoid",children:i.jsx(Ye,{fontSize:"sm",children:e("modelManager.inverseSigmoid")})})]}):i.jsx(ya,{value:"add_difference",children:i.jsx(wn,{label:e("modelManager.modelMergeInterpAddDifferenceHelp"),children:i.jsx(Ye,{fontSize:"sm",children:e("modelManager.addDifference")})})})})})]}),i.jsxs(F,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.900"}},children:[i.jsxs(F,{columnGap:4,children:[i.jsx(Ye,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:e("modelManager.mergedModelSaveLocation")}),i.jsx(Up,{value:O,onChange:D=>R(D),children:i.jsxs(F,{columnGap:4,children:[i.jsx(ya,{value:"root",children:i.jsx(Ye,{fontSize:"sm",children:e("modelManager.invokeAIFolder")})}),i.jsx(ya,{value:"custom",children:i.jsx(Ye,{fontSize:"sm",children:e("modelManager.custom")})})]})})]}),O==="custom"&&i.jsx(Oc,{label:e("modelManager.mergedModelCustomSaveLocation"),value:M,onChange:D=>A(D.target.value)})]}),i.jsx(Gn,{label:e("modelManager.ignoreMismatch"),isChecked:T,onChange:D=>$(D.target.checked),fontWeight:"500"}),i.jsx(en,{onClick:G,isLoading:o,isDisabled:h===null||v===null,children:e("modelManager.merge")})]})}const Cse=Ae((e,t)=>{const{t:n}=be(),{acceptButtonText:r=n("common.accept"),acceptCallback:o,cancelButtonText:s=n("common.cancel"),cancelCallback:a,children:c,title:d,triggerComponent:p}=e,{isOpen:h,onOpen:m,onClose:v}=ss(),b=f.useRef(null),w=()=>{o(),v()},y=()=>{a&&a(),v()};return i.jsxs(i.Fragment,{children:[f.cloneElement(p,{onClick:m,ref:t}),i.jsx(_d,{isOpen:h,leastDestructiveRef:b,onClose:v,isCentered:!0,children:i.jsx(Da,{children:i.jsxs(Pd,{children:[i.jsx(Ma,{fontSize:"lg",fontWeight:"bold",children:d}),i.jsx(Aa,{children:c}),i.jsxs(Ra,{children:[i.jsx(en,{ref:b,onClick:y,children:s}),i.jsx(en,{colorScheme:"error",onClick:w,ml:3,children:r})]})]})})})]})}),qy=f.memo(Cse);function kse(e){const{model:t}=e,n=te(),{t:r}=be(),[o,{isLoading:s}]=CM(),[a,c]=f.useState("InvokeAIRoot"),[d,p]=f.useState("");f.useEffect(()=>{c("InvokeAIRoot")},[t]);const h=()=>{c("InvokeAIRoot")},m=()=>{const v={base_model:t.base_model,model_name:t.model_name,params:{convert_dest_directory:a==="Custom"?d:void 0}};if(a==="Custom"&&d===""){n(On(Mn({title:r("modelManager.noCustomLocationProvided"),status:"error"})));return}n(On(Mn({title:`${r("modelManager.convertingModelBegin")}: ${t.model_name}`,status:"success"}))),o(v).unwrap().then(b=>{n(On(Mn({title:`${r("modelManager.modelConverted")}: ${t.model_name}`,status:"success"})))}).catch(b=>{n(On(Mn({title:`${r("modelManager.modelConversionFailed")}: ${t.model_name}`,status:"error"})))})};return i.jsxs(qy,{title:`${r("modelManager.convert")} ${t.model_name}`,acceptCallback:m,cancelCallback:h,acceptButtonText:`${r("modelManager.convert")}`,triggerComponent:i.jsxs(en,{size:"sm","aria-label":r("modelManager.convertToDiffusers"),className:" modal-close-btn",isLoading:s,children:["🧨 ",r("modelManager.convertToDiffusers")]}),motionPreset:"slideInBottom",children:[i.jsxs(F,{flexDirection:"column",rowGap:4,children:[i.jsx(Ye,{children:r("modelManager.convertToDiffusersHelpText1")}),i.jsxs(yb,{children:[i.jsx(wa,{children:r("modelManager.convertToDiffusersHelpText2")}),i.jsx(wa,{children:r("modelManager.convertToDiffusersHelpText3")}),i.jsx(wa,{children:r("modelManager.convertToDiffusersHelpText4")}),i.jsx(wa,{children:r("modelManager.convertToDiffusersHelpText5")})]}),i.jsx(Ye,{children:r("modelManager.convertToDiffusersHelpText6")})]}),i.jsxs(F,{flexDir:"column",gap:2,children:[i.jsxs(F,{marginTop:4,flexDir:"column",gap:2,children:[i.jsx(Ye,{fontWeight:"600",children:r("modelManager.convertToDiffusersSaveLocation")}),i.jsx(Up,{value:a,onChange:v=>c(v),children:i.jsxs(F,{gap:4,children:[i.jsx(ya,{value:"InvokeAIRoot",children:i.jsx(wn,{label:"Save converted model in the InvokeAI root folder",children:r("modelManager.invokeRoot")})}),i.jsx(ya,{value:"Custom",children:i.jsx(wn,{label:"Save converted model in a custom folder",children:r("modelManager.custom")})})]})})]}),a==="Custom"&&i.jsxs(F,{flexDirection:"column",rowGap:2,children:[i.jsx(Ye,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:r("modelManager.customSaveLocation")}),i.jsx(Oc,{value:d,onChange:v=>{p(v.target.value)},width:"full"})]})]})]})}function _se(e){const t=z(Cr),{model:n}=e,[r,{isLoading:o}]=Z5(),{data:s}=X5(),[a,c]=f.useState(!1);f.useEffect(()=>{s!=null&&s.includes(n.config)||c(!0)},[s,n.config]);const d=te(),{t:p}=be(),h=xl({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=f.useCallback(v=>{const b={base_model:n.base_model,model_name:n.model_name,body:v};r(b).unwrap().then(w=>{h.setValues(w),d(On(Mn({title:p("modelManager.modelUpdated"),status:"success"})))}).catch(w=>{h.reset(),d(On(Mn({title:p("modelManager.modelUpdateFailed"),status:"error"})))})},[h,d,n.base_model,n.model_name,p,r]);return i.jsxs(F,{flexDirection:"column",rowGap:4,width:"100%",children:[i.jsxs(F,{justifyContent:"space-between",alignItems:"center",children:[i.jsxs(F,{flexDirection:"column",children:[i.jsx(Ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),i.jsxs(Ye,{fontSize:"sm",color:"base.400",children:[hr[n.base_model]," Model"]})]}),[""].includes(n.base_model)?i.jsx(hl,{sx:{p:2,borderRadius:4,bg:"error.200",_dark:{bg:"error.400"}},children:"Conversion Not Supported"}):i.jsx(kse,{model:n})]}),i.jsx(Pi,{}),i.jsx(F,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",children:i.jsx("form",{onSubmit:h.onSubmit(v=>m(v)),children:i.jsxs(F,{flexDirection:"column",overflowY:"scroll",gap:4,children:[i.jsx(br,{label:p("modelManager.name"),...h.getInputProps("model_name")}),i.jsx(br,{label:p("modelManager.description"),...h.getInputProps("description")}),i.jsx(Hd,{required:!0,...h.getInputProps("base_model")}),i.jsx(eg,{required:!0,...h.getInputProps("variant")}),i.jsx(br,{required:!0,label:p("modelManager.modelLocation"),...h.getInputProps("path")}),i.jsx(br,{label:p("modelManager.vaeLocation"),...h.getInputProps("vae")}),i.jsxs(F,{flexDirection:"column",gap:2,children:[a?i.jsx(br,{required:!0,label:p("modelManager.config"),...h.getInputProps("config")}):i.jsx(W8,{required:!0,...h.getInputProps("config")}),i.jsx(Gn,{isChecked:a,onChange:()=>c(!a),label:"Use Custom Config"})]}),i.jsx(en,{type:"submit",isDisabled:t||o,isLoading:o,children:p("modelManager.updateModel")})]})})})]})}function Pse(e){const t=z(Cr),{model:n}=e,[r,{isLoading:o}]=Z5(),s=te(),{t:a}=be(),c=xl({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}}),d=f.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(On(Mn({title:a("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{c.reset(),s(On(Mn({title:a("modelManager.modelUpdateFailed"),status:"error"})))})},[c,s,n.base_model,n.model_name,a,r]);return i.jsxs(F,{flexDirection:"column",rowGap:4,width:"100%",children:[i.jsxs(F,{flexDirection:"column",children:[i.jsx(Ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),i.jsxs(Ye,{fontSize:"sm",color:"base.400",children:[hr[n.base_model]," Model"]})]}),i.jsx(Pi,{}),i.jsx("form",{onSubmit:c.onSubmit(p=>d(p)),children:i.jsxs(F,{flexDirection:"column",overflowY:"scroll",gap:4,children:[i.jsx(br,{label:a("modelManager.name"),...c.getInputProps("model_name")}),i.jsx(br,{label:a("modelManager.description"),...c.getInputProps("description")}),i.jsx(Hd,{required:!0,...c.getInputProps("base_model")}),i.jsx(eg,{required:!0,...c.getInputProps("variant")}),i.jsx(br,{required:!0,label:a("modelManager.modelLocation"),...c.getInputProps("path")}),i.jsx(br,{label:a("modelManager.vaeLocation"),...c.getInputProps("vae")}),i.jsx(en,{type:"submit",isDisabled:t||o,isLoading:o,children:a("modelManager.updateModel")})]})})]})}function jse(e){const t=z(Cr),{model:n}=e,[r,{isLoading:o}]=kM(),s=te(),{t:a}=be(),c=xl({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}}),d=f.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(On(Mn({title:a("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{c.reset(),s(On(Mn({title:a("modelManager.modelUpdateFailed"),status:"error"})))})},[s,c,n.base_model,n.model_name,a,r]);return i.jsxs(F,{flexDirection:"column",rowGap:4,width:"100%",children:[i.jsxs(F,{flexDirection:"column",children:[i.jsx(Ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),i.jsxs(Ye,{fontSize:"sm",color:"base.400",children:[hr[n.base_model]," Model ⋅"," ",_M[n.model_format]," format"]})]}),i.jsx(Pi,{}),i.jsx("form",{onSubmit:c.onSubmit(p=>d(p)),children:i.jsxs(F,{flexDirection:"column",overflowY:"scroll",gap:4,children:[i.jsx(br,{label:a("modelManager.name"),...c.getInputProps("model_name")}),i.jsx(br,{label:a("modelManager.description"),...c.getInputProps("description")}),i.jsx(Hd,{...c.getInputProps("base_model")}),i.jsx(br,{label:a("modelManager.modelLocation"),...c.getInputProps("path")}),i.jsx(en,{type:"submit",isDisabled:t||o,isLoading:o,children:a("modelManager.updateModel")})]})})]})}function rv(e){const t=z(Cr),{t:n}=be(),r=te(),[o]=PM(),[s]=jM(),{model:a,isSelected:c,setSelectedModelId:d}=e,p=f.useCallback(()=>{d(a.id)},[a.id,d]),h=f.useCallback(()=>{const m={main:o,lora:s}[a.model_type];m(a).unwrap().then(v=>{r(On(Mn({title:`${n("modelManager.modelDeleted")}: ${a.model_name}`,status:"success"})))}).catch(v=>{v&&r(On(Mn({title:`${n("modelManager.modelDeleteFailed")}: ${a.model_name}`,status:"error"})))}),d(void 0)},[o,s,a,d,r,n]);return i.jsxs(F,{sx:{gap:2,alignItems:"center",w:"full"},children:[i.jsx(F,{as:en,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:i.jsxs(F,{gap:4,alignItems:"center",children:[i.jsx(hl,{minWidth:14,p:.5,fontSize:"sm",variant:"solid",children:IM[a.base_model]}),i.jsx(wn,{label:a.description,hasArrow:!0,placement:"bottom",children:i.jsx(Ye,{sx:{fontWeight:500},children:a.model_name})})]})}),i.jsx(qy,{title:n("modelManager.deleteModel"),acceptCallback:h,acceptButtonText:n("modelManager.delete"),triggerComponent:i.jsx(Le,{icon:i.jsx(ZV,{}),"aria-label":n("modelManager.deleteConfig"),isDisabled:t,colorScheme:"error"}),children:i.jsxs(F,{rowGap:4,flexDirection:"column",children:[i.jsx("p",{style:{fontWeight:"bold"},children:n("modelManager.deleteMsg1")}),i.jsx("p",{children:n("modelManager.deleteMsg2")})]})})]})}const Ise=e=>{const{selectedModelId:t,setSelectedModelId:n}=e,{t:r}=be(),[o,s]=f.useState(""),[a,c]=f.useState("images"),{filteredDiffusersModels:d}=na(Wu,{selectFromResult:({data:v})=>({filteredDiffusersModels:ov(v,"main","diffusers",o)})}),{filteredCheckpointModels:p}=na(Wu,{selectFromResult:({data:v})=>({filteredCheckpointModels:ov(v,"main","checkpoint",o)})}),{filteredLoraModels:h}=tm(void 0,{selectFromResult:({data:v})=>({filteredLoraModels:ov(v,"lora",void 0,o)})}),m=f.useCallback(v=>{s(v.target.value)},[]);return i.jsx(F,{flexDirection:"column",rowGap:4,width:"50%",minWidth:"50%",children:i.jsxs(F,{flexDirection:"column",gap:4,paddingInlineEnd:4,children:[i.jsxs(nr,{isAttached:!0,children:[i.jsx(en,{onClick:()=>c("images"),isChecked:a==="images",size:"sm",children:r("modelManager.allModels")}),i.jsx(en,{size:"sm",onClick:()=>c("diffusers"),isChecked:a==="diffusers",children:r("modelManager.diffusersModels")}),i.jsx(en,{size:"sm",onClick:()=>c("checkpoint"),isChecked:a==="checkpoint",children:r("modelManager.checkpointModels")}),i.jsx(en,{size:"sm",onClick:()=>c("lora"),isChecked:a==="lora",children:r("modelManager.loraModels")})]}),i.jsx(Oc,{onChange:m,label:r("modelManager.search"),labelPos:"side"}),i.jsxs(F,{flexDirection:"column",gap:4,maxHeight:window.innerHeight-280,overflow:"scroll",children:[["images","diffusers"].includes(a)&&d.length>0&&i.jsx(sv,{children:i.jsxs(F,{sx:{gap:2,flexDir:"column"},children:[i.jsx(Ye,{variant:"subtext",fontSize:"sm",children:"Diffusers"}),d.map(v=>i.jsx(rv,{model:v,isSelected:t===v.id,setSelectedModelId:n},v.id))]})}),["images","checkpoint"].includes(a)&&p.length>0&&i.jsx(sv,{children:i.jsxs(F,{sx:{gap:2,flexDir:"column"},children:[i.jsx(Ye,{variant:"subtext",fontSize:"sm",children:"Checkpoints"}),p.map(v=>i.jsx(rv,{model:v,isSelected:t===v.id,setSelectedModelId:n},v.id))]})}),["images","lora"].includes(a)&&h.length>0&&i.jsx(sv,{children:i.jsxs(F,{sx:{gap:2,flexDir:"column"},children:[i.jsx(Ye,{variant:"subtext",fontSize:"sm",children:"LoRAs"}),h.map(v=>i.jsx(rv,{model:v,isSelected:t===v.id,setSelectedModelId:n},v.id))]})})]})]})})},ov=(e,t,n,r)=>{const o=[];return Io(e==null?void 0:e.entities,s=>{if(!s)return;const a=s.model_name.toLowerCase().includes(r.toLowerCase()),c=n===void 0||s.model_format===n,d=s.model_type===t;a&&c&&d&&o.push(s)}),o},sv=e=>i.jsx(F,{flexDirection:"column",gap:4,borderRadius:4,p:4,sx:{bg:"base.200",_dark:{bg:"base.800"}},children:e.children});function Ese(){const[e,t]=f.useState(),{mainModel:n}=na(Wu,{selectFromResult:({data:s})=>({mainModel:e?s==null?void 0:s.entities[e]:void 0})}),{loraModel:r}=tm(void 0,{selectFromResult:({data:s})=>({loraModel:e?s==null?void 0:s.entities[e]:void 0})}),o=n||r;return i.jsxs(F,{sx:{gap:8,w:"full",h:"full"},children:[i.jsx(Ise,{selectedModelId:e,setSelectedModelId:t}),i.jsx(Ose,{model:o})]})}const Ose=e=>{const{model:t}=e;return(t==null?void 0:t.model_format)==="checkpoint"?i.jsx(_se,{model:t},t.id):(t==null?void 0:t.model_format)==="diffusers"?i.jsx(Pse,{model:t},t.id):(t==null?void 0:t.model_type)==="lora"?i.jsx(jse,{model:t},t.id):i.jsx(F,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",maxH:96,userSelect:"none"},children:i.jsx(Ye,{variant:"subtext",children:"No Model Selected"})})};function Rse(){const{t:e}=be();return i.jsxs(F,{sx:{w:"full",p:4,borderRadius:4,gap:4,justifyContent:"space-between",alignItems:"center",bg:"base.200",_dark:{bg:"base.800"}},children:[i.jsxs(F,{sx:{flexDirection:"column",gap:2},children:[i.jsx(Ye,{sx:{fontWeight:600},children:e("modelManager.syncModels")}),i.jsx(Ye,{fontSize:"sm",sx:{_dark:{color:"base.400"}},children:e("modelManager.syncModelsDesc")})]}),i.jsx(Fd,{})]})}function Mse(){return i.jsx(F,{children:i.jsx(Rse,{})})}const Jk=[{id:"modelManager",label:Bn.t("modelManager.modelManager"),content:i.jsx(Ese,{})},{id:"importModels",label:Bn.t("modelManager.importModels"),content:i.jsx(xse,{})},{id:"mergeModels",label:Bn.t("modelManager.mergeModels"),content:i.jsx(Sse,{})},{id:"settings",label:Bn.t("modelManager.settings"),content:i.jsx(Mse,{})}],Dse=()=>i.jsxs(Id,{isLazy:!0,variant:"line",layerStyle:"first",sx:{w:"full",h:"full",p:4,gap:4,borderRadius:"base"},children:[i.jsx(Ed,{children:Jk.map(e=>i.jsx(Sc,{sx:{borderTopRadius:"base"},children:e.label},e.id))}),i.jsx(km,{sx:{w:"full",h:"full"},children:Jk.map(e=>i.jsx(Cm,{sx:{w:"full",h:"full"},children:e.content},e.id))})]}),Ase=f.memo(Dse);const Tse=e=>fe([t=>t.nodes],t=>{const n=t.invocationTemplates[e];if(n)return n},{memoizeOptions:{resultEqualityCheck:(t,n)=>t!==void 0&&n!==void 0&&t.type===n.type}}),Nse=(e,t)=>{const n={id:e,name:t.name,type:t.type};return t.inputRequirement!=="never"&&(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==="array"&&(n.value=t.default??1),t.type==="image"&&(n.value=void 0),t.type==="image_collection"&&(n.value=[]),t.type==="latents"&&(n.value=void 0),t.type==="conditioning"&&(n.value=void 0),t.type==="unet"&&(n.value=void 0),t.type==="clip"&&(n.value=void 0),t.type==="vae"&&(n.value=void 0),t.type==="control"&&(n.value=void 0),t.type==="model"&&(n.value=void 0),t.type==="refiner_model"&&(n.value=void 0),t.type==="vae_model"&&(n.value=void 0),t.type==="lora_model"&&(n.value=void 0),t.type==="controlnet_model"&&(n.value=void 0)),n},$se=fe([e=>e.nodes],e=>e.invocationTemplates),Ky="node-drag-handle",Zk={dragHandle:`.${Ky}`},zse=()=>{const e=z($se),t=K1();return f.useCallback(n=>{if(n==="progress_image"){const{x:h,y:m}=t.project({x:window.innerWidth/2.5,y:window.innerHeight/8});return{...Zk,id:"progress_image",type:"progress_image",position:{x:h,y:m},data:{}}}const r=e[n];if(r===void 0){console.error(`Unable to find template ${n}.`);return}const o=ui(),s=aw(r.inputs,(h,m,v)=>{const b=ui(),w=Nse(b,m);return h[v]=w,h},{}),a=aw(r.outputs,(h,m,v)=>{const w={id:ui(),name:v,type:m.type};return h[v]=w,h},{}),{x:c,y:d}=t.project({x:window.innerWidth/2.5,y:window.innerHeight/8});return{...Zk,id:o,type:"invocation",position:{x:c,y:d},data:{id:o,type:n,inputs:s,outputs:a}}},[e,t])},Lse=e=>{const{nodeId:t,title:n,description:r}=e;return i.jsxs(F,{className:Ky,sx:{borderTopRadius:"md",alignItems:"center",justifyContent:"space-between",px:2,py:1,bg:"base.100",_dark:{bg:"base.900"}},children:[i.jsx(wn,{label:t,children:i.jsx(Ys,{size:"xs",sx:{fontWeight:600,color:"base.900",_dark:{color:"base.200"}},children:n})}),i.jsx(wn,{label:r,placement:"top",hasArrow:!0,shouldWrapChildren:!0,children:i.jsx(no,{sx:{h:"min-content",color:"base.700",_dark:{color:"base.300"}},as:dW})})]})},q8=f.memo(Lse),K8=()=>()=>!0,Bse={position:"absolute",width:"1rem",height:"1rem",borderWidth:0},Fse={left:"-1rem"},Hse={right:"-0.5rem"},Wse=e=>{const{field:t,isValidConnection:n,handleType:r,styles:o}=e,{name:s,type:a}=t;return i.jsx(wn,{label:a,placement:r==="target"?"start":"end",hasArrow:!0,openDelay:e_,children:i.jsx(EM,{type:r,id:s,isValidConnection:n,position:r==="target"?iw.Left:iw.Right,style:{backgroundColor:t_[a].colorCssVar,...o,...Bse,...r==="target"?Fse:Hse}})})},X8=f.memo(Wse),Vse=e=>i.jsx(hW,{}),Use=f.memo(Vse),Gse=e=>{const{nodeId:t,field:n}=e,r=te(),o=s=>{r(As({nodeId:t,fieldName:n.name,value:s.target.checked}))};return i.jsx(zb,{onChange:o,isChecked:n.value})},qse=f.memo(Gse),Kse=e=>null,Xse=f.memo(Kse);function tg(){return(tg=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function j1(e){var t=f.useRef(e),n=f.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var Rc=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:S.buttons>0)&&o.current?s(e5(o.current,S,c.current)):y(!1)},w=function(){return y(!1)};function y(S){var k=d.current,_=I1(o.current),I=S?_.addEventListener:_.removeEventListener;I(k?"touchmove":"mousemove",b),I(k?"touchend":"mouseup",w)}return[function(S){var k=S.nativeEvent,_=o.current;if(_&&(t5(k),!function(P,E){return E&&!Hu(P)}(k,d.current)&&_)){if(Hu(k)){d.current=!0;var I=k.changedTouches||[];I.length&&(c.current=I[0].identifier)}_.focus(),s(e5(_,k,c.current)),y(!0)}},function(S){var k=S.which||S.keyCode;k<37||k>40||(S.preventDefault(),a({left:k===39?.05:k===37?-.05:0,top:k===40?.05:k===38?-.05:0}))},y]},[a,s]),h=p[0],m=p[1],v=p[2];return f.useEffect(function(){return v},[v]),H.createElement("div",tg({},r,{onTouchStart:h,onMouseDown:h,className:"react-colorful__interactive",ref:o,onKeyDown:m,tabIndex:0,role:"slider"}))}),ng=function(e){return e.filter(Boolean).join(" ")},Yy=function(e){var t=e.color,n=e.left,r=e.top,o=r===void 0?.5:r,s=ng(["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}}))},fo=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},Q8=function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:fo(e.h),s:fo(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:fo(o/2),a:fo(r,2)}},E1=function(e){var t=Q8(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},av=function(e){var t=Q8(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},Yse=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),a=r*(1-n),c=r*(1-(t-s)*n),d=r*(1-(1-t+s)*n),p=s%6;return{r:fo(255*[r,c,a,a,d,r][p]),g:fo(255*[d,r,r,c,a,a][p]),b:fo(255*[a,a,d,r,r,c][p]),a:fo(o,2)}},Qse=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,s=Math.max(t,n,r),a=s-Math.min(t,n,r),c=a?s===t?(n-r)/a:s===n?2+(r-t)/a:4+(t-n)/a:0;return{h:fo(60*(c<0?c+6:c)),s:fo(s?a/s*100:0),v:fo(s/255*100),a:o}},Jse=H.memo(function(e){var t=e.hue,n=e.onChange,r=ng(["react-colorful__hue",e.className]);return H.createElement("div",{className:r},H.createElement(Xy,{onMove:function(o){n({h:360*o.left})},onKey:function(o){n({h:Rc(t+360*o.left,0,360)})},"aria-label":"Hue","aria-valuenow":fo(t),"aria-valuemax":"360","aria-valuemin":"0"},H.createElement(Yy,{className:"react-colorful__hue-pointer",left:t/360,color:E1({h:t,s:100,v:100,a:1})})))}),Zse=H.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:E1({h:t.h,s:100,v:100,a:1})};return H.createElement("div",{className:"react-colorful__saturation",style:r},H.createElement(Xy,{onMove:function(o){n({s:100*o.left,v:100-100*o.top})},onKey:function(o){n({s:Rc(t.s+100*o.left,0,100),v:Rc(t.v-100*o.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+fo(t.s)+"%, Brightness "+fo(t.v)+"%"},H.createElement(Yy,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:E1(t)})))}),J8=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function eae(e,t,n){var r=j1(n),o=f.useState(function(){return e.toHsva(t)}),s=o[0],a=o[1],c=f.useRef({color:t,hsva:s});f.useEffect(function(){if(!e.equal(t,c.current.color)){var p=e.toHsva(t);c.current={hsva:p,color:t},a(p)}},[t,e]),f.useEffect(function(){var p;J8(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 d=f.useCallback(function(p){a(function(h){return Object.assign({},h,p)})},[]);return[s,d]}var tae=typeof window<"u"?f.useLayoutEffect:f.useEffect,nae=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},n5=new Map,rae=function(e){tae(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!n5.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}`,n5.set(t,n);var r=nae();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},oae=function(e){var t=e.className,n=e.hsva,r=e.onChange,o={backgroundImage:"linear-gradient(90deg, "+av(Object.assign({},n,{a:0}))+", "+av(Object.assign({},n,{a:1}))+")"},s=ng(["react-colorful__alpha",t]),a=fo(100*n.a);return H.createElement("div",{className:s},H.createElement("div",{className:"react-colorful__alpha-gradient",style:o}),H.createElement(Xy,{onMove:function(c){r({a:c.left})},onKey:function(c){r({a:Rc(n.a+c.left)})},"aria-label":"Alpha","aria-valuetext":a+"%","aria-valuenow":a,"aria-valuemin":"0","aria-valuemax":"100"},H.createElement(Yy,{className:"react-colorful__alpha-pointer",left:n.a,color:av(n)})))},sae=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,s=e.onChange,a=Y8(e,["className","colorModel","color","onChange"]),c=f.useRef(null);rae(c);var d=eae(n,o,s),p=d[0],h=d[1],m=ng(["react-colorful",t]);return H.createElement("div",tg({},a,{ref:c,className:m}),H.createElement(Zse,{hsva:p,onChange:h}),H.createElement(Jse,{hue:p.h,onChange:h}),H.createElement(oae,{hsva:p,onChange:h,className:"react-colorful__last-control"}))},aae={defaultColor:{r:0,g:0,b:0,a:1},toHsva:Qse,fromHsva:Yse,equal:J8},Z8=function(e){return H.createElement(sae,tg({},e,{colorModel:aae}))};const iae=e=>{const{nodeId:t,field:n}=e,r=te(),o=s=>{r(As({nodeId:t,fieldName:n.name,value:s}))};return i.jsx(Z8,{className:"nodrag",color:n.value,onChange:o})},lae=f.memo(iae),cae=e=>null,uae=f.memo(cae),dae=e=>null,fae=f.memo(dae),pae=e=>{const{nodeId:t,field:n}=e,r=n.value,o=te(),{data:s}=q1(),a=f.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=f.useMemo(()=>{if(!s)return[];const p=[];return Io(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:hr[h.base_model]})}),p},[s]),d=f.useCallback(p=>{if(!p)return;const h=$8(p);h&&o(As({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return i.jsx(Xr,{tooltip:a==null?void 0:a.description,label:(a==null?void 0:a.base_model)&&hr[a==null?void 0:a.base_model],value:(a==null?void 0:a.id)??null,placeholder:"Pick one",error:!a,data:c,onChange:d})},hae=f.memo(pae),mae=e=>{const{nodeId:t,field:n,template:r}=e,o=te(),s=a=>{o(As({nodeId:t,fieldName:n.name,value:a.target.value}))};return i.jsx(P6,{onChange:s,value:n.value,children:r.options.map(a=>i.jsx("option",{children:a},a))})},gae=f.memo(mae),vae=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:a}=$1({id:`node_${t}`,data:r});return i.jsxs(F,{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:d})=>i.jsx(yae,{imageName:d},d)),Ip(r,a)&&i.jsx(th,{isOver:o})]})},bae=f.memo(vae),yae=e=>{const{currentData:t}=os(e.imageName);return i.jsx(yi,{imageDTO:t,isDropDisabled:!0,isDragDisabled:!0})},xae=e=>{var p;const{nodeId:t,field:n}=e,r=te(),{currentData:o}=os(((p=n.value)==null?void 0:p.image_name)??oo.skipToken),s=f.useCallback(()=>{r(As({nodeId:t,fieldName:n.name,value:void 0}))},[r,n.name,t]),a=f.useMemo(()=>{if(o)return{id:`node-${t}-${n.name}`,payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[n.name,o,t]),c=f.useMemo(()=>({id:`node-${t}-${n.name}`,actionType:"SET_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}}),[n.name,t]),d=f.useMemo(()=>({type:"SET_NODES_IMAGE",nodeId:t,fieldName:n.name}),[t,n.name]);return i.jsx(F,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:i.jsx(yi,{imageDTO:o,droppableData:c,draggableData:a,onClickReset:s,postUploadAction:d})})},wae=f.memo(xae),Sae=e=>i.jsx(VH,{}),r5=f.memo(Sae),Cae=e=>null,kae=f.memo(Cae),_ae=e=>{const t=em("models"),[n,r,o]=e.split("/"),s=OM.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},Pae=e=>{const{nodeId:t,field:n}=e,r=n.value,o=te(),{data:s}=tm(),a=f.useMemo(()=>{if(!s)return[];const p=[];return Io(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:hr[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),c=f.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]),d=f.useCallback(p=>{if(!p)return;const h=_ae(p);h&&o(As({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return(s==null?void 0:s.ids.length)===0?i.jsx(F,{sx:{justifyContent:"center",p:2},children:i.jsx(Ye,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):i.jsx(sr,{value:(c==null?void 0:c.id)??null,label:(c==null?void 0:c.base_model)&&hr[c==null?void 0:c.base_model],placeholder:a.length>0?"Select a LoRA":"No LoRAs available",data:a,nothingFound:"No matching LoRAs",itemComponent:Ri,disabled:a.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())},onChange:d})},jae=f.memo(Pae),Iae=e=>{var m,v;const{nodeId:t,field:n}=e,r=te(),{t:o}=be(),s=ar("syncModels").isFeatureEnabled,{data:a,isLoading:c}=na(U1),d=f.useMemo(()=>{if(!a)return[];const b=[];return Io(a.entities,(w,y)=>{w&&b.push({value:y,label:w.model_name,group:hr[w.base_model]})}),b},[a]),p=f.useMemo(()=>{var b,w;return(a==null?void 0:a.entities[`${(b=n.value)==null?void 0:b.base_model}/main/${(w=n.value)==null?void 0:w.model_name}`])??null},[(m=n.value)==null?void 0:m.base_model,(v=n.value)==null?void 0:v.model_name,a==null?void 0:a.entities]),h=f.useCallback(b=>{if(!b)return;const w=Jm(b);w&&r(As({nodeId:t,fieldName:n.name,value:w}))},[r,n.name,t]);return c?i.jsx(sr,{label:o("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):i.jsxs(F,{w:"100%",alignItems:"center",gap:2,children:[i.jsx(sr,{tooltip:p==null?void 0:p.description,label:(p==null?void 0:p.base_model)&&hr[p==null?void 0:p.base_model],value:p==null?void 0:p.id,placeholder:d.length>0?"Select a model":"No models available",data:d,error:d.length===0,disabled:d.length===0,onChange:h}),s&&i.jsx(Ee,{mt:7,children:i.jsx(Fd,{iconMode:!0})})]})},Eae=f.memo(Iae),Oae=e=>{const{nodeId:t,field:n}=e,r=te(),[o,s]=f.useState(String(n.value)),a=c=>{s(c),c.match(qh)||r(As({nodeId:t,fieldName:n.name,value:e.template.type==="integer"?Math.floor(Number(c)):Number(c)}))};return f.useEffect(()=>{!o.match(qh)&&n.value!==Number(o)&&s(String(n.value))},[n.value,o]),i.jsxs(dm,{onChange:a,value:o,step:e.template.type==="integer"?1:.1,precision:e.template.type==="integer"?0:3,children:[i.jsx(pm,{}),i.jsxs(fm,{children:[i.jsx(mm,{}),i.jsx(hm,{})]})]})},Rae=f.memo(Oae),Mae=e=>{const{nodeId:t,field:n}=e,r=te(),o=s=>{r(As({nodeId:t,fieldName:n.name,value:s.target.value}))};return i.jsx(yd,{onChange:o,value:n.value})},Dae=f.memo(Mae),Aae=e=>null,Tae=f.memo(Aae),Nae=e=>null,$ae=f.memo(Nae),zae=e=>{const{nodeId:t,field:n}=e,r=n.value,o=te(),{data:s}=W5(),a=f.useMemo(()=>{if(!s)return[];const p=[{value:"default",label:"Default",group:"Default"}];return Io(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:hr[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),c=f.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]),d=f.useCallback(p=>{if(!p)return;const h=E8(p);h&&o(As({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return i.jsx(sr,{itemComponent:Ri,tooltip:c==null?void 0:c.description,label:(c==null?void 0:c.base_model)&&hr[c==null?void 0:c.base_model],value:(c==null?void 0:c.id)??"default",placeholder:"Default",data:a,onChange:d,disabled:a.length===0,clearable:!0})},Lae=f.memo(zae),Bae=e=>{var m,v;const{nodeId:t,field:n}=e,r=te(),{t:o}=be(),s=ar("syncModels").isFeatureEnabled,{data:a,isLoading:c}=na(G1),d=f.useMemo(()=>{if(!a)return[];const b=[];return Io(a.entities,(w,y)=>{w&&b.push({value:y,label:w.model_name,group:hr[w.base_model]})}),b},[a]),p=f.useMemo(()=>{var b,w;return(a==null?void 0:a.entities[`${(b=n.value)==null?void 0:b.base_model}/main/${(w=n.value)==null?void 0:w.model_name}`])??null},[(m=n.value)==null?void 0:m.base_model,(v=n.value)==null?void 0:v.model_name,a==null?void 0:a.entities]),h=f.useCallback(b=>{if(!b)return;const w=Jm(b);w&&r(As({nodeId:t,fieldName:n.name,value:w}))},[r,n.name,t]);return c?i.jsx(sr,{label:o("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):i.jsxs(F,{w:"100%",alignItems:"center",gap:2,children:[i.jsx(sr,{tooltip:p==null?void 0:p.description,label:(p==null?void 0:p.base_model)&&hr[p==null?void 0:p.base_model],value:p==null?void 0:p.id,placeholder:d.length>0?"Select a model":"No models available",data:d,error:d.length===0,disabled:d.length===0,onChange:h}),s&&i.jsx(Ee,{mt:7,children:i.jsx(Fd,{iconMode:!0})})]})},Fae=f.memo(Bae),Hae=e=>{const{nodeId:t,field:n,template:r}=e,{type:o}=n;return o==="string"&&r.type==="string"?i.jsx(Dae,{nodeId:t,field:n,template:r}):o==="boolean"&&r.type==="boolean"?i.jsx(qse,{nodeId:t,field:n,template:r}):o==="integer"&&r.type==="integer"||o==="float"&&r.type==="float"?i.jsx(Rae,{nodeId:t,field:n,template:r}):o==="enum"&&r.type==="enum"?i.jsx(gae,{nodeId:t,field:n,template:r}):o==="image"&&r.type==="image"?i.jsx(wae,{nodeId:t,field:n,template:r}):o==="latents"&&r.type==="latents"?i.jsx(kae,{nodeId:t,field:n,template:r}):o==="conditioning"&&r.type==="conditioning"?i.jsx(uae,{nodeId:t,field:n,template:r}):o==="unet"&&r.type==="unet"?i.jsx(Tae,{nodeId:t,field:n,template:r}):o==="clip"&&r.type==="clip"?i.jsx(Xse,{nodeId:t,field:n,template:r}):o==="vae"&&r.type==="vae"?i.jsx($ae,{nodeId:t,field:n,template:r}):o==="control"&&r.type==="control"?i.jsx(fae,{nodeId:t,field:n,template:r}):o==="model"&&r.type==="model"?i.jsx(Eae,{nodeId:t,field:n,template:r}):o==="refiner_model"&&r.type==="refiner_model"?i.jsx(Fae,{nodeId:t,field:n,template:r}):o==="vae_model"&&r.type==="vae_model"?i.jsx(Lae,{nodeId:t,field:n,template:r}):o==="lora_model"&&r.type==="lora_model"?i.jsx(jae,{nodeId:t,field:n,template:r}):o==="controlnet_model"&&r.type==="controlnet_model"?i.jsx(hae,{nodeId:t,field:n,template:r}):o==="array"&&r.type==="array"?i.jsx(Use,{nodeId:t,field:n,template:r}):o==="item"&&r.type==="item"?i.jsx(r5,{nodeId:t,field:n,template:r}):o==="color"&&r.type==="color"?i.jsx(lae,{nodeId:t,field:n,template:r}):o==="item"&&r.type==="item"?i.jsx(r5,{nodeId:t,field:n,template:r}):o==="image_collection"&&r.type==="image_collection"?i.jsx(bae,{nodeId:t,field:n,template:r}):i.jsxs(Ee,{p:2,children:["Unknown field type: ",o]})},Wae=f.memo(Hae);function Vae(e){const{nodeId:t,input:n,template:r,connected:o}=e,s=K8();return i.jsx(Ee,{className:"nopan",position:"relative",borderColor:r?!o&&["always","connectionOnly"].includes(String(r==null?void 0:r.inputRequirement))&&n.value===void 0?"warning.400":void 0:"error.400",children:i.jsx(mo,{isDisabled:r?o:!0,pl:2,children:r?i.jsxs(i.Fragment,{children:[i.jsxs(di,{justifyContent:"space-between",alignItems:"center",children:[i.jsx(di,{children:i.jsx(wn,{label:r==null?void 0:r.description,placement:"top",hasArrow:!0,shouldWrapChildren:!0,openDelay:e_,children:i.jsx(Lo,{children:r==null?void 0:r.title})})}),i.jsx(Wae,{nodeId:t,field:n,template:r})]}),!["never","directOnly"].includes((r==null?void 0:r.inputRequirement)??"")&&i.jsx(X8,{nodeId:t,field:r,isValidConnection:s,handleType:"target"})]}):i.jsx(di,{justifyContent:"space-between",alignItems:"center",children:i.jsxs(Lo,{children:["Unknown input: ",n.name]})})})})}const Uae=e=>{const{nodeId:t,template:n,inputs:r}=e,o=z(a=>a.nodes.edges);return f.useCallback(()=>{const a=[],c=cs(r);return c.forEach((d,p)=>{const h=n.inputs[d.name],m=!!o.filter(v=>v.target===t&&v.targetHandle===d.name).length;p{const{nodeId:t,template:n,outputs:r}=e,o=z(a=>a.nodes.edges);return f.useCallback(()=>{const a=[];return cs(r).forEach(d=>{const p=n.outputs[d.name],h=!!o.filter(m=>m.source===t&&m.sourceHandle===d.name).length;a.push(i.jsx(qae,{nodeId:t,output:d,template:p,connected:h},d.id))}),i.jsx(F,{flexDir:"column",children:a})},[o,t,r,n.outputs])()},Xae=f.memo(Kae),Yae=e=>{const{...t}=e;return i.jsx(B9,{style:{position:"absolute",border:"none",background:"transparent",width:15,height:15,bottom:0,right:0},minWidth:n_,...t})},O1=f.memo(Yae),R1=e=>{const[t,n]=Ac("shadows",["nodeSelectedOutline","dark-lg"]),r=z(o=>o.hotkeys.shift);return i.jsx(Ee,{className:r?Ky:"nopan",sx:{position:"relative",borderRadius:"md",minWidth:n_,shadow:e.selected?`${t}, ${n}`:`${n}`},children:e.children})},eO=f.memo(e=>{const{id:t,data:n,selected:r}=e,{type:o,inputs:s,outputs:a}=n,c=f.useMemo(()=>Tse(o),[o]),d=z(c);return d?i.jsxs(R1,{selected:r,children:[i.jsx(q8,{nodeId:t,title:d.title,description:d.description}),i.jsxs(F,{className:"nopan",sx:{cursor:"auto",flexDirection:"column",borderBottomRadius:"md",py:2,bg:"base.150",_dark:{bg:"base.800"}},children:[i.jsx(Xae,{nodeId:t,outputs:a,template:d}),i.jsx(Gae,{nodeId:t,inputs:s,template:d})]}),i.jsx(O1,{})]}):i.jsx(R1,{selected:r,children:i.jsxs(F,{className:"nopan",sx:{alignItems:"center",justifyContent:"center",cursor:"auto"},children:[i.jsx(no,{as:mP,sx:{boxSize:32,color:"base.600",_dark:{color:"base.400"}}}),i.jsx(O1,{})]})})});eO.displayName="InvocationComponent";const Qae=e=>{const t=lw(a=>a.system.progressImage),n=lw(a=>a.nodes.progressNodeSize),r=RM(),{selected:o}=e,s=(a,c)=>{r(MM(c))};return i.jsxs(R1,{selected:o,children:[i.jsx(q8,{title:"Progress Image",description:"Displays the progress image in the Node Editor"}),i.jsx(F,{sx:{flexDirection:"column",flexShrink:0,borderBottomRadius:"md",bg:"base.200",_dark:{bg:"base.800"},width:n.width-2,height:n.height-2,minW:250,minH:250,overflow:"hidden"},children:t?i.jsx(Tc,{src:t.dataURL,sx:{w:"full",h:"full",objectFit:"contain"}}):i.jsx(F,{sx:{minW:250,minH:250,width:n.width-2,height:n.height-2},children:i.jsx(mi,{})})}),i.jsx(O1,{onResize:s})]})},Jae=f.memo(Qae),Zae=()=>{const{t:e}=be(),{zoomIn:t,zoomOut:n,fitView:r}=K1(),o=te(),s=z(w=>w.nodes.shouldShowGraphOverlay),a=z(w=>w.nodes.shouldShowFieldTypeLegend),c=z(w=>w.nodes.shouldShowMinimapPanel),d=f.useCallback(()=>{t()},[t]),p=f.useCallback(()=>{n()},[n]),h=f.useCallback(()=>{r()},[r]),m=f.useCallback(()=>{o(DM(!s))},[s,o]),v=f.useCallback(()=>{o(AM(!a))},[a,o]),b=f.useCallback(()=>{o(TM(!c))},[c,o]);return i.jsxs(nr,{isAttached:!0,orientation:"vertical",children:[i.jsx(wn,{label:e("nodes.zoomInNodes"),children:i.jsx(Le,{"aria-label":"Zoom in ",onClick:d,icon:i.jsx(ml,{})})}),i.jsx(wn,{label:e("nodes.zoomOutNodes"),children:i.jsx(Le,{"aria-label":"Zoom out",onClick:p,icon:i.jsx(vW,{})})}),i.jsx(wn,{label:e("nodes.fitViewportNodes"),children:i.jsx(Le,{"aria-label":"Fit viewport",onClick:h,icon:i.jsx(oW,{})})}),i.jsx(wn,{label:e(s?"nodes.hideGraphNodes":"nodes.showGraphNodes"),children:i.jsx(Le,{"aria-label":"Toggle nodes graph overlay",isChecked:s,onClick:m,icon:i.jsx(Fb,{})})}),i.jsx(wn,{label:e(a?"nodes.hideLegendNodes":"nodes.showLegendNodes"),children:i.jsx(Le,{"aria-label":"Toggle field type legend",isChecked:a,onClick:v,icon:i.jsx(fW,{})})}),i.jsx(wn,{label:e(c?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),children:i.jsx(Le,{"aria-label":"Toggle minimap",isChecked:c,onClick:b,icon:i.jsx(mW,{})})})]})},eie=f.memo(Zae),tie=()=>i.jsx(ld,{position:"bottom-left",children:i.jsx(eie,{})}),nie=f.memo(tie),rie=()=>{const e=gp({background:"var(--invokeai-colors-base-200)"},{background:"var(--invokeai-colors-base-500)"}),t=z(o=>o.nodes.shouldShowMinimapPanel),n=gp("var(--invokeai-colors-accent-300)","var(--invokeai-colors-accent-700)"),r=gp("var(--invokeai-colors-blackAlpha-300)","var(--invokeai-colors-blackAlpha-600)");return i.jsx(i.Fragment,{children:t&&i.jsx(O9,{nodeStrokeWidth:3,pannable:!0,zoomable:!0,nodeBorderRadius:30,style:e,nodeColor:n,maskColor:r})})},oie=f.memo(rie),sie=()=>{const{t:e}=be(),t=te(),{isOpen:n,onOpen:r,onClose:o}=ss(),s=f.useRef(null),a=z(d=>d.nodes.nodes),c=f.useCallback(()=>{t(NM()),t(On(Mn({title:e("toast.nodesCleared"),status:"success"}))),o()},[t,e,o]);return i.jsxs(i.Fragment,{children:[i.jsx(Le,{icon:i.jsx(us,{}),tooltip:e("nodes.clearGraph"),"aria-label":e("nodes.clearGraph"),onClick:r,isDisabled:a.length===0}),i.jsxs(_d,{isOpen:n,onClose:o,leastDestructiveRef:s,isCentered:!0,children:[i.jsx(Da,{}),i.jsxs(Pd,{children:[i.jsx(Ma,{fontSize:"lg",fontWeight:"bold",children:e("nodes.clearGraph")}),i.jsx(Aa,{children:i.jsx(Ye,{children:e("nodes.clearGraphDesc")})}),i.jsxs(Ra,{children:[i.jsx(vc,{ref:s,onClick:o,children:e("common.cancel")}),i.jsx(vc,{colorScheme:"red",ml:3,onClick:c,children:e("common.accept")})]})]})]})]})},aie=f.memo(sie);function iie(e){const t=["nodes","edges","viewport"];for(const s of t)if(!(s in e))return{isValid:!1,message:Bn.t("toast.nodesNotValidGraph")};if(!Array.isArray(e.nodes)||!Array.isArray(e.edges))return{isValid:!1,message:Bn.t("toast.nodesNotValidGraph")};const n=["data","type"],r=["invocation","progress_image"];if(e.nodes.length>0)for(const s of e.nodes)for(const a of n){if(!(a in s))return{isValid:!1,message:Bn.t("toast.nodesNotValidGraph")};if(a==="type"&&!r.includes(s[a]))return{isValid:!1,message:Bn.t("toast.nodesUnrecognizedTypes")}}const o=["source","sourceHandle","target","targetHandle"];if(e.edges.length>0){for(const s of e.edges)for(const a of o)if(!(a in s))return{isValid:!1,message:Bn.t("toast.nodesBrokenConnections")}}return{isValid:!0,message:Bn.t("toast.nodesLoaded")}}const lie=()=>{const{t:e}=be(),t=te(),{fitView:n}=K1(),r=f.useRef(null),o=f.useCallback(s=>{var c;if(!s)return;const a=new FileReader;a.onload=async()=>{const d=a.result;try{const p=await JSON.parse(String(d)),{isValid:h,message:m}=iie(p);h?(t($M(p.nodes)),t(zM(p.edges)),n(),t(On(Mn({title:m,status:"success"})))):t(On(Mn({title:m,status:"error"}))),a.abort()}catch(p){p&&t(On(Mn({title:e("toast.nodesNotValidJSON"),status:"error"})))}},a.readAsText(s),(c=r.current)==null||c.call(r)},[n,t,e]);return i.jsx(vE,{resetRef:r,accept:"application/json",onChange:o,children:s=>i.jsx(Le,{icon:i.jsx(Rd,{}),tooltip:e("nodes.loadGraph"),"aria-label":e("nodes.loadGraph"),...s})})},cie=f.memo(lie);function uie(e){const{iconButton:t=!1,...n}=e,r=te(),o=z(Kn),s=Ld(),a=f.useCallback(()=>{r(fd("nodes"))},[r]),{t:c}=be();return rt(["ctrl+enter","meta+enter"],a,{enabled:()=>s,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[s,o]),i.jsx(Ee,{style:{flexGrow:4},position:"relative",children:i.jsxs(Ee,{style:{position:"relative"},children:[!s&&i.jsx(Ee,{borderRadius:"base",style:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip"},children:i.jsx(C8,{})}),t?i.jsx(Le,{"aria-label":c("parameters.invoke"),type:"submit",icon:i.jsx(wP,{}),isDisabled:!s,onClick:a,flexGrow:1,w:"100%",tooltip:c("parameters.invoke"),tooltipProps:{placement:"bottom"},colorScheme:"accent",id:"invoke-button",_disabled:{background:"none",_hover:{background:"none"}},...n}):i.jsx(en,{"aria-label":c("parameters.invoke"),type:"submit",isDisabled:!s,onClick:a,flexGrow:1,w:"100%",colorScheme:"accent",id:"invoke-button",fontWeight:700,_disabled:{background:"none",_hover:{background:"none"}},...n,children:"Invoke"})]})})}function die(){const{t:e}=be(),t=te(),n=f.useCallback(()=>{t(LM())},[t]);return i.jsx(Le,{icon:i.jsx(CW,{}),tooltip:e("nodes.reloadSchema"),"aria-label":e("nodes.reloadSchema"),onClick:n})}const fie=()=>{const{t:e}=be(),t=z(o=>o.nodes.editorInstance),n=z(o=>o.nodes.nodes),r=f.useCallback(()=>{if(t){const o=t.toObject();o.edges=cs(o.edges,c=>BM(c,["style"]));const s=new Blob([JSON.stringify(o)]),a=document.createElement("a");a.href=URL.createObjectURL(s),a.download="MyNodes.json",document.body.appendChild(a),a.click(),a.remove()}},[t]);return i.jsx(Le,{icon:i.jsx(_m,{}),fontSize:18,tooltip:e("nodes.saveGraph"),"aria-label":e("nodes.saveGraph"),onClick:r,isDisabled:n.length===0})},pie=f.memo(fie),hie=()=>i.jsx(ld,{position:"top-center",children:i.jsxs(di,{children:[i.jsx(uie,{}),i.jsx(Km,{}),i.jsx(die,{}),i.jsx(pie,{}),i.jsx(cie,{}),i.jsx(aie,{})]})}),mie=f.memo(hie),gie=fe([Xe],({nodes:e})=>{const t=cs(e.invocationTemplates,n=>({label:n.title,value:n.type,description:n.description}));return t.push({label:"Progress Image",value:"progress_image",description:"Displays the progress image in the Node Editor"}),{data:t}},Ge),vie=()=>{const e=te(),{data:t}=z(gie),n=zse(),r=Hc(),o=f.useCallback(a=>{const c=n(a);if(!c){r({status:"error",title:`Unknown Invocation type ${a}`});return}e(FM(c))},[e,n,r]),s=f.useCallback(a=>{a&&o(a)},[o]);return i.jsx(F,{sx:{gap:2,alignItems:"center"},children:i.jsx(sr,{selectOnBlur:!1,placeholder:"Add Node",value:null,data:t,maxDropdownHeight:400,nothingFound:"No matching nodes",itemComponent:tO,filter:(a,c)=>c.label.toLowerCase().includes(a.toLowerCase().trim())||c.value.toLowerCase().includes(a.toLowerCase().trim())||c.description.toLowerCase().includes(a.toLowerCase().trim()),onChange:s,sx:{width:"18rem"}})})},tO=f.forwardRef(({label:e,description:t,...n},r)=>i.jsx("div",{ref:r,...n,children:i.jsxs("div",{children:[i.jsx(Ye,{fontWeight:600,children:e}),i.jsx(Ye,{size:"xs",sx:{color:"base.600",_dark:{color:"base.500"}},children:t})]})}));tO.displayName="SelectItem";const bie=()=>i.jsx(ld,{position:"top-left",children:i.jsx(vie,{})}),yie=f.memo(bie),xie=()=>i.jsx(F,{sx:{gap:2,flexDir:"column"},children:cs(t_,({title:e,description:t,color:n},r)=>i.jsx(wn,{label:t,children:i.jsx(hl,{colorScheme:n,sx:{userSelect:"none"},textAlign:"center",children:e})},r))}),wie=f.memo(xie),Sie=()=>{const e=z(n=>n),t=HM(e);return i.jsx(Ee,{as:"pre",sx:{fontFamily:"monospace",position:"absolute",top:2,right:2,opacity:.7,p:2,maxHeight:500,maxWidth:500,overflowY:"scroll",borderRadius:"base",bg:"base.200",_dark:{bg:"base.800"}},children:JSON.stringify(t,null,2)})},Cie=f.memo(Sie),kie=()=>{const e=z(n=>n.nodes.shouldShowGraphOverlay),t=z(n=>n.nodes.shouldShowFieldTypeLegend);return i.jsxs(ld,{position:"top-right",children:[t&&i.jsx(wie,{}),e&&i.jsx(Cie,{})]})},_ie=f.memo(kie),Pie={invocation:eO,progress_image:Jae},jie=()=>{const e=te(),t=z(p=>p.nodes.nodes),n=z(p=>p.nodes.edges),r=f.useCallback(p=>{e(WM(p))},[e]),o=f.useCallback(p=>{e(VM(p))},[e]),s=f.useCallback((p,h)=>{e(UM(h))},[e]),a=f.useCallback(p=>{e(GM(p))},[e]),c=f.useCallback(()=>{e(qM())},[e]),d=f.useCallback(p=>{e(KM(p)),p&&p.fitView()},[e]);return i.jsxs(XM,{nodeTypes:Pie,nodes:t,edges:n,onNodesChange:r,onEdgesChange:o,onConnectStart:s,onConnect:a,onConnectEnd:c,onInit:d,defaultEdgeOptions:{style:{strokeWidth:2}},children:[i.jsx(yie,{}),i.jsx(mie,{}),i.jsx(_ie,{}),i.jsx(nie,{}),i.jsx(N9,{}),i.jsx(oie,{})]})},Iie=()=>i.jsx(Ee,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base"},children:i.jsx(YM,{children:i.jsx(jie,{})})}),Eie=f.memo(Iie),Oie=()=>i.jsx(Eie,{}),Rie=f.memo(Oie),Mie=fe(Xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ge),Die=()=>{const{shouldUseSliders:e,activeLabel:t}=z(Mie);return i.jsx(Ro,{label:"General",activeLabel:t,defaultIsOpen:!0,children:i.jsx(F,{sx:{flexDirection:"column",gap:3},children:e?i.jsxs(i.Fragment,{children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(Ec,{})]}):i.jsxs(i.Fragment,{children:[i.jsxs(F,{gap:3,children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{})]}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(Ec,{})]})})})},nO=f.memo(Die),rO=()=>i.jsxs(i.Fragment,{children:[i.jsx(j8,{}),i.jsx(Bd,{}),i.jsx(nO,{}),i.jsx(I8,{}),i.jsx(zd,{}),i.jsx(qm,{})]}),oO=()=>i.jsxs(i.Fragment,{children:[i.jsx(Gy,{}),i.jsx(Bd,{}),i.jsx(nO,{}),i.jsx(Vy,{}),i.jsx(Hy,{}),i.jsx(zd,{}),i.jsx(qm,{}),i.jsx(Uy,{}),i.jsx(z8,{}),i.jsx(Wy,{})]}),Aie=()=>{const e=z(t=>t.generation.model);return i.jsxs(F,{sx:{gap:4,w:"full",h:"full"},children:[i.jsx(Fy,{children:e&&e.base_model==="sdxl"?i.jsx(rO,{}):i.jsx(oO,{})}),i.jsx(N8,{})]})},Tie=f.memo(Aie);var M1={exports:{}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Konva=void 0;var n=cw;Object.defineProperty(t,"Konva",{enumerable:!0,get:function(){return n.Konva}});const r=cw;e.exports=r.Konva})(M1,M1.exports);var Nie=M1.exports;const id=ud(Nie);var sO={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 $ie=function(t){var n={},r=f,o=vp,s=Object.assign;function a(l){for(var u="https://reactjs.org/docs/error-decoder.html?invariant="+l,g=1;gZ||C[N]!==j[Z]){var ue=` +`+C[N].replace(" at new "," at ");return l.displayName&&ue.includes("")&&(ue=ue.replace("",l.displayName)),ue}while(1<=N&&0<=Z);break}}}finally{qt=!1,Error.prepareStackTrace=g}return(l=l?l.displayName||l.name:"")?Nt(l):""}var Zt=Object.prototype.hasOwnProperty,Ut=[],Be=-1;function yt(l){return{current:l}}function Mt(l){0>Be||(l.current=Ut[Be],Ut[Be]=null,Be--)}function Wt(l,u){Be++,Ut[Be]=l.current,l.current=u}var jn={},Gt=yt(jn),un=yt(!1),sn=jn;function Or(l,u){var g=l.type.contextTypes;if(!g)return jn;var x=l.stateNode;if(x&&x.__reactInternalMemoizedUnmaskedChildContext===u)return x.__reactInternalMemoizedMaskedChildContext;var C={},j;for(j in g)C[j]=u[j];return x&&(l=l.stateNode,l.__reactInternalMemoizedUnmaskedChildContext=u,l.__reactInternalMemoizedMaskedChildContext=C),C}function Qn(l){return l=l.childContextTypes,l!=null}function It(){Mt(un),Mt(Gt)}function In(l,u,g){if(Gt.current!==jn)throw Error(a(168));Wt(Gt,u),Wt(un,g)}function Rn(l,u,g){var x=l.stateNode;if(u=u.childContextTypes,typeof x.getChildContext!="function")return g;x=x.getChildContext();for(var C in x)if(!(C in u))throw Error(a(108,M(l)||"Unknown",C));return s({},g,x)}function Jn(l){return l=(l=l.stateNode)&&l.__reactInternalMemoizedMergedChildContext||jn,sn=Gt.current,Wt(Gt,l),Wt(un,un.current),!0}function mr(l,u,g){var x=l.stateNode;if(!x)throw Error(a(169));g?(l=Rn(l,u,sn),x.__reactInternalMemoizedMergedChildContext=l,Mt(un),Mt(Gt),Wt(Gt,l)):Mt(un),Wt(un,g)}var Tn=Math.clz32?Math.clz32:Sn,Nn=Math.log,dn=Math.LN2;function Sn(l){return l>>>=0,l===0?32:31-(Nn(l)/dn|0)|0}var En=64,vn=4194304;function bn(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 Ke(l,u){var g=l.pendingLanes;if(g===0)return 0;var x=0,C=l.suspendedLanes,j=l.pingedLanes,N=g&268435455;if(N!==0){var Z=N&~C;Z!==0?x=bn(Z):(j&=N,j!==0&&(x=bn(j)))}else N=g&~C,N!==0?x=bn(N):j!==0&&(x=bn(j));if(x===0)return 0;if(u!==0&&u!==x&&!(u&C)&&(C=x&-x,j=u&-u,C>=j||C===16&&(j&4194240)!==0))return u;if(x&4&&(x|=g&16),u=l.entangledLanes,u!==0)for(l=l.entanglements,u&=x;0g;g++)u.push(l);return u}function mt(l,u,g){l.pendingLanes|=u,u!==536870912&&(l.suspendedLanes=0,l.pingedLanes=0),l=l.eventTimes,u=31-Tn(u),l[u]=g}function ot(l,u){var g=l.pendingLanes&~u;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.expiredLanes&=u,l.mutableReadLanes&=u,l.entangledLanes&=u,u=l.entanglements;var x=l.eventTimes;for(l=l.expirationTimes;0>=N,C-=N,Ao=1<<32-Tn(u)+C|g<Cn?(Br=Qt,Qt=null):Br=Qt.sibling;var kn=it(le,Qt,ve[Cn],lt);if(kn===null){Qt===null&&(Qt=Br);break}l&&Qt&&kn.alternate===null&&u(le,Qt),ne=j(kn,ne,Cn),rn===null?At=kn:rn.sibling=kn,rn=kn,Qt=Br}if(Cn===ve.length)return g(le,Qt),Zn&&Ti(le,Cn),At;if(Qt===null){for(;CnCn?(Br=Qt,Qt=null):Br=Qt.sibling;var Ja=it(le,Qt,kn.value,lt);if(Ja===null){Qt===null&&(Qt=Br);break}l&&Qt&&Ja.alternate===null&&u(le,Qt),ne=j(Ja,ne,Cn),rn===null?At=Ja:rn.sibling=Ja,rn=Ja,Qt=Br}if(kn.done)return g(le,Qt),Zn&&Ti(le,Cn),At;if(Qt===null){for(;!kn.done;Cn++,kn=ve.next())kn=Yt(le,kn.value,lt),kn!==null&&(ne=j(kn,ne,Cn),rn===null?At=kn:rn.sibling=kn,rn=kn);return Zn&&Ti(le,Cn),At}for(Qt=x(le,Qt);!kn.done;Cn++,kn=ve.next())kn=Yn(Qt,le,Cn,kn.value,lt),kn!==null&&(l&&kn.alternate!==null&&Qt.delete(kn.key===null?Cn:kn.key),ne=j(kn,ne,Cn),rn===null?At=kn:rn.sibling=kn,rn=kn);return l&&Qt.forEach(function(e7){return u(le,e7)}),Zn&&Ti(le,Cn),At}function va(le,ne,ve,lt){if(typeof ve=="object"&&ve!==null&&ve.type===h&&ve.key===null&&(ve=ve.props.children),typeof ve=="object"&&ve!==null){switch(ve.$$typeof){case d:e:{for(var At=ve.key,rn=ne;rn!==null;){if(rn.key===At){if(At=ve.type,At===h){if(rn.tag===7){g(le,rn.sibling),ne=C(rn,ve.props.children),ne.return=le,le=ne;break e}}else if(rn.elementType===At||typeof At=="object"&&At!==null&&At.$$typeof===I&&hx(At)===rn.type){g(le,rn.sibling),ne=C(rn,ve.props),ne.ref=Yc(le,rn,ve),ne.return=le,le=ne;break e}g(le,rn);break}else u(le,rn);rn=rn.sibling}ve.type===h?(ne=Hi(ve.props.children,le.mode,lt,ve.key),ne.return=le,le=ne):(lt=kf(ve.type,ve.key,ve.props,null,le.mode,lt),lt.ref=Yc(le,ne,ve),lt.return=le,le=lt)}return N(le);case p:e:{for(rn=ve.key;ne!==null;){if(ne.key===rn)if(ne.tag===4&&ne.stateNode.containerInfo===ve.containerInfo&&ne.stateNode.implementation===ve.implementation){g(le,ne.sibling),ne=C(ne,ve.children||[]),ne.return=le,le=ne;break e}else{g(le,ne);break}else u(le,ne);ne=ne.sibling}ne=o0(ve,le.mode,lt),ne.return=le,le=ne}return N(le);case I:return rn=ve._init,va(le,ne,rn(ve._payload),lt)}if(q(ve))return zn(le,ne,ve,lt);if(O(ve))return xo(le,ne,ve,lt);Qd(le,ve)}return typeof ve=="string"&&ve!==""||typeof ve=="number"?(ve=""+ve,ne!==null&&ne.tag===6?(g(le,ne.sibling),ne=C(ne,ve),ne.return=le,le=ne):(g(le,ne),ne=r0(ve,le.mode,lt),ne.return=le,le=ne),N(le)):g(le,ne)}return va}var _l=mx(!0),gx=mx(!1),Qc={},Uo=yt(Qc),Jc=yt(Qc),Pl=yt(Qc);function Fs(l){if(l===Qc)throw Error(a(174));return l}function vg(l,u){Wt(Pl,u),Wt(Jc,l),Wt(Uo,Qc),l=D(u),Mt(Uo),Wt(Uo,l)}function jl(){Mt(Uo),Mt(Jc),Mt(Pl)}function vx(l){var u=Fs(Pl.current),g=Fs(Uo.current);u=L(g,l.type,u),g!==u&&(Wt(Jc,l),Wt(Uo,u))}function bg(l){Jc.current===l&&(Mt(Uo),Mt(Jc))}var cr=yt(0);function Jd(l){for(var u=l;u!==null;){if(u.tag===13){var g=u.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||$r(g)||$s(g)))return u}else if(u.tag===19&&u.memoizedProps.revealOrder!==void 0){if(u.flags&128)return u}else if(u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break;for(;u.sibling===null;){if(u.return===null||u.return===l)return null;u=u.return}u.sibling.return=u.return,u=u.sibling}return null}var yg=[];function xg(){for(var l=0;lg?g:4,l(!0);var x=wg.transition;wg.transition={};try{l(!1),u()}finally{Ie=g,wg.transition=x}}function Tx(){return Go().memoizedState}function jO(l,u,g){var x=Xa(l);if(g={lane:x,action:g,hasEagerState:!1,eagerState:null,next:null},Nx(l))$x(u,g);else if(g=ax(l,u,g,x),g!==null){var C=eo();qo(g,l,x,C),zx(g,u,x)}}function IO(l,u,g){var x=Xa(l),C={lane:x,action:g,hasEagerState:!1,eagerState:null,next:null};if(Nx(l))$x(u,C);else{var j=l.alternate;if(l.lanes===0&&(j===null||j.lanes===0)&&(j=u.lastRenderedReducer,j!==null))try{var N=u.lastRenderedState,Z=j(N,g);if(C.hasEagerState=!0,C.eagerState=Z,fn(Z,N)){var ue=u.interleaved;ue===null?(C.next=C,pg(u)):(C.next=ue.next,ue.next=C),u.interleaved=C;return}}catch{}finally{}g=ax(l,u,C,x),g!==null&&(C=eo(),qo(g,l,x,C),zx(g,u,x))}}function Nx(l){var u=l.alternate;return l===ur||u!==null&&u===ur}function $x(l,u){Zc=ef=!0;var g=l.pending;g===null?u.next=u:(u.next=g.next,g.next=u),l.pending=u}function zx(l,u,g){if(g&4194240){var x=u.lanes;x&=l.pendingLanes,g|=x,u.lanes=g,Re(l,g)}}var rf={readContext:Vo,useCallback:Qr,useContext:Qr,useEffect:Qr,useImperativeHandle:Qr,useInsertionEffect:Qr,useLayoutEffect:Qr,useMemo:Qr,useReducer:Qr,useRef:Qr,useState:Qr,useDebugValue:Qr,useDeferredValue:Qr,useTransition:Qr,useMutableSource:Qr,useSyncExternalStore:Qr,useId:Qr,unstable_isNewReconciler:!1},EO={readContext:Vo,useCallback:function(l,u){return Hs().memoizedState=[l,u===void 0?null:u],l},useContext:Vo,useEffect:jx,useImperativeHandle:function(l,u,g){return g=g!=null?g.concat([l]):null,tf(4194308,4,Ox.bind(null,u,l),g)},useLayoutEffect:function(l,u){return tf(4194308,4,l,u)},useInsertionEffect:function(l,u){return tf(4,2,l,u)},useMemo:function(l,u){var g=Hs();return u=u===void 0?null:u,l=l(),g.memoizedState=[l,u],l},useReducer:function(l,u,g){var x=Hs();return u=g!==void 0?g(u):u,x.memoizedState=x.baseState=u,l={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:u},x.queue=l,l=l.dispatch=jO.bind(null,ur,l),[x.memoizedState,l]},useRef:function(l){var u=Hs();return l={current:l},u.memoizedState=l},useState:_x,useDebugValue:Ig,useDeferredValue:function(l){return Hs().memoizedState=l},useTransition:function(){var l=_x(!1),u=l[0];return l=PO.bind(null,l[1]),Hs().memoizedState=l,[u,l]},useMutableSource:function(){},useSyncExternalStore:function(l,u,g){var x=ur,C=Hs();if(Zn){if(g===void 0)throw Error(a(407));g=g()}else{if(g=u(),Lr===null)throw Error(a(349));$i&30||xx(x,u,g)}C.memoizedState=g;var j={value:g,getSnapshot:u};return C.queue=j,jx(Sx.bind(null,x,j,l),[l]),x.flags|=2048,nu(9,wx.bind(null,x,j,g,u),void 0,null),g},useId:function(){var l=Hs(),u=Lr.identifierPrefix;if(Zn){var g=Yr,x=Ao;g=(x&~(1<<32-Tn(x)-1)).toString(32)+g,u=":"+u+"R"+g,g=eu++,0Xg&&(u.flags|=128,x=!0,su(C,!1),u.lanes=4194304)}else{if(!x)if(l=Jd(j),l!==null){if(u.flags|=128,x=!0,l=l.updateQueue,l!==null&&(u.updateQueue=l,u.flags|=4),su(C,!0),C.tail===null&&C.tailMode==="hidden"&&!j.alternate&&!Zn)return Jr(u),null}else 2*Ve()-C.renderingStartTime>Xg&&g!==1073741824&&(u.flags|=128,x=!0,su(C,!1),u.lanes=4194304);C.isBackwards?(j.sibling=u.child,u.child=j):(l=C.last,l!==null?l.sibling=j:u.child=j,C.last=j)}return C.tail!==null?(u=C.tail,C.rendering=u,C.tail=u.sibling,C.renderingStartTime=Ve(),u.sibling=null,l=cr.current,Wt(cr,x?l&1|2:l&1),u):(Jr(u),null);case 22:case 23:return e0(),g=u.memoizedState!==null,l!==null&&l.memoizedState!==null!==g&&(u.flags|=8192),g&&u.mode&1?No&1073741824&&(Jr(u),ie&&u.subtreeFlags&6&&(u.flags|=8192)):Jr(u),null;case 24:return null;case 25:return null}throw Error(a(156,u.tag))}function $O(l,u){switch(sg(u),u.tag){case 1:return Qn(u.type)&&It(),l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 3:return jl(),Mt(un),Mt(Gt),xg(),l=u.flags,l&65536&&!(l&128)?(u.flags=l&-65537|128,u):null;case 5:return bg(u),null;case 13:if(Mt(cr),l=u.memoizedState,l!==null&&l.dehydrated!==null){if(u.alternate===null)throw Error(a(340));Sl()}return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 19:return Mt(cr),null;case 4:return jl(),null;case 10:return dg(u.type._context),null;case 22:case 23:return e0(),null;case 24:return null;default:return null}}var cf=!1,Zr=!1,zO=typeof WeakSet=="function"?WeakSet:Set,pt=null;function El(l,u){var g=l.ref;if(g!==null)if(typeof g=="function")try{g(null)}catch(x){er(l,u,x)}else g.current=null}function $g(l,u,g){try{g()}catch(x){er(l,u,x)}}var r2=!1;function LO(l,u){for(W(l.containerInfo),pt=u;pt!==null;)if(l=pt,u=l.child,(l.subtreeFlags&1028)!==0&&u!==null)u.return=l,pt=u;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 x=g.memoizedProps,C=g.memoizedState,j=l.stateNode,N=j.getSnapshotBeforeUpdate(l.elementType===l.type?x:ms(l.type,x),C);j.__reactInternalSnapshotBeforeUpdate=N}break;case 3:ie&&ln(l.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}catch(Z){er(l,l.return,Z)}if(u=l.sibling,u!==null){u.return=l.return,pt=u;break}pt=l.return}return g=r2,r2=!1,g}function au(l,u,g){var x=u.updateQueue;if(x=x!==null?x.lastEffect:null,x!==null){var C=x=x.next;do{if((C.tag&l)===l){var j=C.destroy;C.destroy=void 0,j!==void 0&&$g(u,g,j)}C=C.next}while(C!==x)}}function uf(l,u){if(u=u.updateQueue,u=u!==null?u.lastEffect:null,u!==null){var g=u=u.next;do{if((g.tag&l)===l){var x=g.create;g.destroy=x()}g=g.next}while(g!==u)}}function zg(l){var u=l.ref;if(u!==null){var g=l.stateNode;switch(l.tag){case 5:l=G(g);break;default:l=g}typeof u=="function"?u(l):u.current=l}}function o2(l){var u=l.alternate;u!==null&&(l.alternate=null,o2(u)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(u=l.stateNode,u!==null&&Oe(u)),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 s2(l){return l.tag===5||l.tag===3||l.tag===4}function a2(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||s2(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 Lg(l,u,g){var x=l.tag;if(x===5||x===6)l=l.stateNode,u?Pn(g,l,u):ht(g,l);else if(x!==4&&(l=l.child,l!==null))for(Lg(l,u,g),l=l.sibling;l!==null;)Lg(l,u,g),l=l.sibling}function Bg(l,u,g){var x=l.tag;if(x===5||x===6)l=l.stateNode,u?qe(g,l,u):we(g,l);else if(x!==4&&(l=l.child,l!==null))for(Bg(l,u,g),l=l.sibling;l!==null;)Bg(l,u,g),l=l.sibling}var Gr=null,gs=!1;function Vs(l,u,g){for(g=g.child;g!==null;)Fg(l,u,g),g=g.sibling}function Fg(l,u,g){if(gn&&typeof gn.onCommitFiberUnmount=="function")try{gn.onCommitFiberUnmount(Xn,g)}catch{}switch(g.tag){case 5:Zr||El(g,u);case 6:if(ie){var x=Gr,C=gs;Gr=null,Vs(l,u,g),Gr=x,gs=C,Gr!==null&&(gs?Ze(Gr,g.stateNode):Pe(Gr,g.stateNode))}else Vs(l,u,g);break;case 18:ie&&Gr!==null&&(gs?He(Gr,g.stateNode):xt(Gr,g.stateNode));break;case 4:ie?(x=Gr,C=gs,Gr=g.stateNode.containerInfo,gs=!0,Vs(l,u,g),Gr=x,gs=C):(ge&&(x=g.stateNode.containerInfo,C=yr(x),Wn(x,C)),Vs(l,u,g));break;case 0:case 11:case 14:case 15:if(!Zr&&(x=g.updateQueue,x!==null&&(x=x.lastEffect,x!==null))){C=x=x.next;do{var j=C,N=j.destroy;j=j.tag,N!==void 0&&(j&2||j&4)&&$g(g,u,N),C=C.next}while(C!==x)}Vs(l,u,g);break;case 1:if(!Zr&&(El(g,u),x=g.stateNode,typeof x.componentWillUnmount=="function"))try{x.props=g.memoizedProps,x.state=g.memoizedState,x.componentWillUnmount()}catch(Z){er(g,u,Z)}Vs(l,u,g);break;case 21:Vs(l,u,g);break;case 22:g.mode&1?(Zr=(x=Zr)||g.memoizedState!==null,Vs(l,u,g),Zr=x):Vs(l,u,g);break;default:Vs(l,u,g)}}function i2(l){var u=l.updateQueue;if(u!==null){l.updateQueue=null;var g=l.stateNode;g===null&&(g=l.stateNode=new zO),u.forEach(function(x){var C=KO.bind(null,l,x);g.has(x)||(g.add(x),x.then(C,C))})}}function vs(l,u){var g=u.deletions;if(g!==null)for(var x=0;x";case ff:return":has("+(Vg(l)||"")+")";case pf:return'[role="'+l.value+'"]';case mf:return'"'+l.value+'"';case hf:return'[data-testname="'+l.value+'"]';default:throw Error(a(365))}}function p2(l,u){var g=[];l=[l,0];for(var x=0;xC&&(C=N),x&=~j}if(x=C,x=Ve()-x,x=(120>x?120:480>x?480:1080>x?1080:1920>x?1920:3e3>x?3e3:4320>x?4320:1960*FO(x/1960))-x,10l?16:l,Ka===null)var x=!1;else{if(l=Ka,Ka=null,xf=0,an&6)throw Error(a(331));var C=an;for(an|=4,pt=l.current;pt!==null;){var j=pt,N=j.child;if(pt.flags&16){var Z=j.deletions;if(Z!==null){for(var ue=0;ueVe()-Kg?Li(l,0):qg|=g),yo(l,u)}function S2(l,u){u===0&&(l.mode&1?(u=vn,vn<<=1,!(vn&130023424)&&(vn=4194304)):u=1);var g=eo();l=Bs(l,u),l!==null&&(mt(l,u,g),yo(l,g))}function qO(l){var u=l.memoizedState,g=0;u!==null&&(g=u.retryLane),S2(l,g)}function KO(l,u){var g=0;switch(l.tag){case 13:var x=l.stateNode,C=l.memoizedState;C!==null&&(g=C.retryLane);break;case 19:x=l.stateNode;break;default:throw Error(a(314))}x!==null&&x.delete(u),S2(l,g)}var C2;C2=function(l,u,g){if(l!==null)if(l.memoizedProps!==u.pendingProps||un.current)vo=!0;else{if(!(l.lanes&g)&&!(u.flags&128))return vo=!1,TO(l,u,g);vo=!!(l.flags&131072)}else vo=!1,Zn&&u.flags&1048576&&ex(u,io,u.index);switch(u.lanes=0,u.tag){case 2:var x=u.type;sf(l,u),l=u.pendingProps;var C=Or(u,Gt.current);kl(u,g),C=Cg(null,u,x,l,C,g);var j=kg();return u.flags|=1,typeof C=="object"&&C!==null&&typeof C.render=="function"&&C.$$typeof===void 0?(u.tag=1,u.memoizedState=null,u.updateQueue=null,Qn(x)?(j=!0,Jn(u)):j=!1,u.memoizedState=C.state!==null&&C.state!==void 0?C.state:null,hg(u),C.updater=Yd,u.stateNode=C,C._reactInternals=u,gg(u,x,l,g),u=Mg(null,u,x,!0,j,g)):(u.tag=0,Zn&&j&&og(u),uo(null,u,C,g),u=u.child),u;case 16:x=u.elementType;e:{switch(sf(l,u),l=u.pendingProps,C=x._init,x=C(x._payload),u.type=x,C=u.tag=YO(x),l=ms(x,l),C){case 0:u=Rg(null,u,x,l,g);break e;case 1:u=Xx(null,u,x,l,g);break e;case 11:u=Vx(null,u,x,l,g);break e;case 14:u=Ux(null,u,x,ms(x.type,l),g);break e}throw Error(a(306,x,""))}return u;case 0:return x=u.type,C=u.pendingProps,C=u.elementType===x?C:ms(x,C),Rg(l,u,x,C,g);case 1:return x=u.type,C=u.pendingProps,C=u.elementType===x?C:ms(x,C),Xx(l,u,x,C,g);case 3:e:{if(Yx(u),l===null)throw Error(a(387));x=u.pendingProps,j=u.memoizedState,C=j.element,ix(l,u),Xd(u,x,null,g);var N=u.memoizedState;if(x=N.element,ke&&j.isDehydrated)if(j={element:x,isDehydrated:!1,cache:N.cache,pendingSuspenseBoundaries:N.pendingSuspenseBoundaries,transitions:N.transitions},u.updateQueue.baseState=j,u.memoizedState=j,u.flags&256){C=Il(Error(a(423)),u),u=Qx(l,u,x,g,C);break e}else if(x!==C){C=Il(Error(a(424)),u),u=Qx(l,u,x,g,C);break e}else for(ke&&(Wo=ee(u.stateNode.containerInfo),To=u,Zn=!0,hs=null,Xc=!1),g=gx(u,null,x,g),u.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(Sl(),x===C){u=ma(l,u,g);break e}uo(l,u,x,g)}u=u.child}return u;case 5:return vx(u),l===null&&ig(u),x=u.type,C=u.pendingProps,j=l!==null?l.memoizedProps:null,N=C.children,K(x,C)?N=null:j!==null&&K(x,j)&&(u.flags|=32),Kx(l,u),uo(l,u,N,g),u.child;case 6:return l===null&&ig(u),null;case 13:return Jx(l,u,g);case 4:return vg(u,u.stateNode.containerInfo),x=u.pendingProps,l===null?u.child=_l(u,null,x,g):uo(l,u,x,g),u.child;case 11:return x=u.type,C=u.pendingProps,C=u.elementType===x?C:ms(x,C),Vx(l,u,x,C,g);case 7:return uo(l,u,u.pendingProps,g),u.child;case 8:return uo(l,u,u.pendingProps.children,g),u.child;case 12:return uo(l,u,u.pendingProps.children,g),u.child;case 10:e:{if(x=u.type._context,C=u.pendingProps,j=u.memoizedProps,N=C.value,sx(u,x,N),j!==null)if(fn(j.value,N)){if(j.children===C.children&&!un.current){u=ma(l,u,g);break e}}else for(j=u.child,j!==null&&(j.return=u);j!==null;){var Z=j.dependencies;if(Z!==null){N=j.child;for(var ue=Z.firstContext;ue!==null;){if(ue.context===x){if(j.tag===1){ue=ha(-1,g&-g),ue.tag=2;var Ne=j.updateQueue;if(Ne!==null){Ne=Ne.shared;var gt=Ne.pending;gt===null?ue.next=ue:(ue.next=gt.next,gt.next=ue),Ne.pending=ue}}j.lanes|=g,ue=j.alternate,ue!==null&&(ue.lanes|=g),fg(j.return,g,u),Z.lanes|=g;break}ue=ue.next}}else if(j.tag===10)N=j.type===u.type?null:j.child;else if(j.tag===18){if(N=j.return,N===null)throw Error(a(341));N.lanes|=g,Z=N.alternate,Z!==null&&(Z.lanes|=g),fg(N,g,u),N=j.sibling}else N=j.child;if(N!==null)N.return=j;else for(N=j;N!==null;){if(N===u){N=null;break}if(j=N.sibling,j!==null){j.return=N.return,N=j;break}N=N.return}j=N}uo(l,u,C.children,g),u=u.child}return u;case 9:return C=u.type,x=u.pendingProps.children,kl(u,g),C=Vo(C),x=x(C),u.flags|=1,uo(l,u,x,g),u.child;case 14:return x=u.type,C=ms(x,u.pendingProps),C=ms(x.type,C),Ux(l,u,x,C,g);case 15:return Gx(l,u,u.type,u.pendingProps,g);case 17:return x=u.type,C=u.pendingProps,C=u.elementType===x?C:ms(x,C),sf(l,u),u.tag=1,Qn(x)?(l=!0,Jn(u)):l=!1,kl(u,g),fx(u,x,C),gg(u,x,C,g),Mg(null,u,x,!0,l,g);case 19:return e2(l,u,g);case 22:return qx(l,u,g)}throw Error(a(156,u.tag))};function k2(l,u){return We(l,u)}function XO(l,u,g,x){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=u,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=x,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ko(l,u,g,x){return new XO(l,u,g,x)}function n0(l){return l=l.prototype,!(!l||!l.isReactComponent)}function YO(l){if(typeof l=="function")return n0(l)?1:0;if(l!=null){if(l=l.$$typeof,l===y)return 11;if(l===_)return 14}return 2}function Qa(l,u){var g=l.alternate;return g===null?(g=Ko(l.tag,u,l.key,l.mode),g.elementType=l.elementType,g.type=l.type,g.stateNode=l.stateNode,g.alternate=l,l.alternate=g):(g.pendingProps=u,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,u=l.dependencies,g.dependencies=u===null?null:{lanes:u.lanes,firstContext:u.firstContext},g.sibling=l.sibling,g.index=l.index,g.ref=l.ref,g}function kf(l,u,g,x,C,j){var N=2;if(x=l,typeof l=="function")n0(l)&&(N=1);else if(typeof l=="string")N=5;else e:switch(l){case h:return Hi(g.children,C,j,u);case m:N=8,C|=8;break;case v:return l=Ko(12,g,u,C|2),l.elementType=v,l.lanes=j,l;case S:return l=Ko(13,g,u,C),l.elementType=S,l.lanes=j,l;case k:return l=Ko(19,g,u,C),l.elementType=k,l.lanes=j,l;case P:return _f(g,C,j,u);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case b:N=10;break e;case w:N=9;break e;case y:N=11;break e;case _:N=14;break e;case I:N=16,x=null;break e}throw Error(a(130,l==null?l:typeof l,""))}return u=Ko(N,g,u,C),u.elementType=l,u.type=x,u.lanes=j,u}function Hi(l,u,g,x){return l=Ko(7,l,x,u),l.lanes=g,l}function _f(l,u,g,x){return l=Ko(22,l,x,u),l.elementType=P,l.lanes=g,l.stateNode={isHidden:!1},l}function r0(l,u,g){return l=Ko(6,l,null,u),l.lanes=g,l}function o0(l,u,g){return u=Ko(4,l.children!==null?l.children:[],l.key,u),u.lanes=g,u.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},u}function QO(l,u,g,x,C){this.tag=u,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=x,this.onRecoverableError=C,ke&&(this.mutableSourceEagerHydrationData=null)}function _2(l,u,g,x,C,j,N,Z,ue){return l=new QO(l,u,g,Z,ue),u===1?(u=1,j===!0&&(u|=8)):u=0,j=Ko(3,null,null,u),l.current=j,j.stateNode=l,j.memoizedState={element:x,isDehydrated:g,cache:null,transitions:null,pendingSuspenseBoundaries:null},hg(j),l}function P2(l){if(!l)return jn;l=l._reactInternals;e:{if(A(l)!==l||l.tag!==1)throw Error(a(170));var u=l;do{switch(u.tag){case 3:u=u.stateNode.context;break e;case 1:if(Qn(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break e}}u=u.return}while(u!==null);throw Error(a(171))}if(l.tag===1){var g=l.type;if(Qn(g))return Rn(l,g,u)}return u}function j2(l){var u=l._reactInternals;if(u===void 0)throw typeof l.render=="function"?Error(a(188)):(l=Object.keys(l).join(","),Error(a(268,l)));return l=Q(u),l===null?null:l.stateNode}function I2(l,u){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var g=l.retryLane;l.retryLane=g!==0&&g=Ne&&j>=Yt&&C<=gt&&N<=it){l.splice(u,1);break}else if(x!==Ne||g.width!==ue.width||itN){if(!(j!==Yt||g.height!==ue.height||gtC)){Ne>x&&(ue.width+=Ne-x,ue.x=x),gtj&&(ue.height+=Yt-j,ue.y=j),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 G(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:JO,findFiberByHostInstance:l.findFiberByHostInstance||ZO,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")l=!1;else{var u=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(u.isDisabled||!u.supportsFiber)l=!0;else{try{Xn=u.inject(l),gn=u}catch{}l=!!u.checkDCE}}return l},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(l,u,g,x){if(!ct)throw Error(a(363));l=Ug(l,u);var C=Tt(l,g,x).disconnect;return{disconnect:function(){C()}}},n.registerMutableSourceForHydration=function(l,u){var g=u._getVersion;g=g(u._source),l.mutableSourceEagerHydrationData==null?l.mutableSourceEagerHydrationData=[u,g]:l.mutableSourceEagerHydrationData.push(u,g)},n.runWithPriority=function(l,u){var g=Ie;try{return Ie=l,u()}finally{Ie=g}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(l,u,g,x){var C=u.current,j=eo(),N=Xa(C);return g=P2(g),u.context===null?u.context=g:u.pendingContext=g,u=ha(j,N),u.payload={element:l},x=x===void 0?null:x,x!==null&&(u.callback=x),l=Ga(C,u,N),l!==null&&(qo(l,C,N,j),Kd(l,C,N)),N},n};sO.exports=$ie;var zie=sO.exports;const Lie=ud(zie);var aO={exports:{}},wl={};/** + * @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. + */wl.ConcurrentRoot=1;wl.ContinuousEventPriority=4;wl.DefaultEventPriority=16;wl.DiscreteEventPriority=1;wl.IdleEventPriority=536870912;wl.LegacyRoot=0;aO.exports=wl;var iO=aO.exports;const o5={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let s5=!1,a5=!1;const Qy=".react-konva-event",Bie=`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 +`,Fie=`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 +`,Hie={};function rg(e,t,n=Hie){if(!s5&&"zIndex"in t&&(console.warn(Fie),s5=!0),!a5&&t.draggable){var r=t.x!==void 0||t.y!==void 0,o=t.onDragEnd||t.onDragMove;r&&!o&&(console.warn(Bie),a5=!0)}for(var s in n)if(!o5[s]){var a=s.slice(0,2)==="on",c=n[s]!==t[s];if(a&&c){var d=s.substr(2).toLowerCase();d.substr(0,7)==="content"&&(d="content"+d.substr(7,1).toUpperCase()+d.substr(8)),e.off(d,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(!o5[s]){var a=s.slice(0,2)==="on",w=n[s]!==t[s];if(a&&w){var d=s.substr(2).toLowerCase();d.substr(0,7)==="content"&&(d="content"+d.substr(7,1).toUpperCase()+d.substr(8)),t[s]&&(b[d]=t[s])}!a&&(t[s]!==n[s]||h&&t[s]!==e.getAttr(s))&&(v=!0,m[s]=t[s])}v&&(e.setAttrs(m),Ai(e));for(var d in b)e.on(d+Qy,b[d])}function Ai(e){if(!QM.Konva.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const lO={},Wie={};id.Node.prototype._applyProps=rg;function Vie(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),Ai(e)}function Uie(e,t,n){let r=id[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=id.Group);const o={},s={};for(var a in t){var c=a.slice(0,2)==="on";c?s[a]=t[a]:o[a]=t[a]}const d=new r(o);return rg(d,s),d}function Gie(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function qie(e,t,n){return!1}function Kie(e){return e}function Xie(){return null}function Yie(){return null}function Qie(e,t,n,r){return Wie}function Jie(){}function Zie(e){}function ele(e,t){return!1}function tle(){return lO}function nle(){return lO}const rle=setTimeout,ole=clearTimeout,sle=-1;function ale(e,t){return!1}const ile=!1,lle=!0,cle=!0;function ule(e,t){t.parent===e?t.moveToTop():e.add(t),Ai(e)}function dle(e,t){t.parent===e?t.moveToTop():e.add(t),Ai(e)}function cO(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),Ai(e)}function fle(e,t,n){cO(e,t,n)}function ple(e,t){t.destroy(),t.off(Qy),Ai(e)}function hle(e,t){t.destroy(),t.off(Qy),Ai(e)}function mle(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function gle(e,t,n){}function vle(e,t,n,r,o){rg(e,o,r)}function ble(e){e.hide(),Ai(e)}function yle(e){}function xle(e,t){(t.visible==null||t.visible)&&e.show()}function wle(e,t){}function Sle(e){}function Cle(){}const kle=()=>iO.DefaultEventPriority,_le=Object.freeze(Object.defineProperty({__proto__:null,appendChild:ule,appendChildToContainer:dle,appendInitialChild:Vie,cancelTimeout:ole,clearContainer:Sle,commitMount:gle,commitTextUpdate:mle,commitUpdate:vle,createInstance:Uie,createTextInstance:Gie,detachDeletedInstance:Cle,finalizeInitialChildren:qie,getChildHostContext:nle,getCurrentEventPriority:kle,getPublicInstance:Kie,getRootHostContext:tle,hideInstance:ble,hideTextInstance:yle,idlePriority:vp.unstable_IdlePriority,insertBefore:cO,insertInContainerBefore:fle,isPrimaryRenderer:ile,noTimeout:sle,now:vp.unstable_now,prepareForCommit:Xie,preparePortalMount:Yie,prepareUpdate:Qie,removeChild:ple,removeChildFromContainer:hle,resetAfterCommit:Jie,resetTextContent:Zie,run:vp.unstable_runWithPriority,scheduleTimeout:rle,shouldDeprioritizeSubtree:ele,shouldSetTextContent:ale,supportsMutation:cle,unhideInstance:xle,unhideTextInstance:wle,warnsIfNotActing:lle},Symbol.toStringTag,{value:"Module"}));var Ple=Object.defineProperty,jle=Object.defineProperties,Ile=Object.getOwnPropertyDescriptors,i5=Object.getOwnPropertySymbols,Ele=Object.prototype.hasOwnProperty,Ole=Object.prototype.propertyIsEnumerable,l5=(e,t,n)=>t in e?Ple(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,c5=(e,t)=>{for(var n in t||(t={}))Ele.call(t,n)&&l5(e,n,t[n]);if(i5)for(var n of i5(t))Ole.call(t,n)&&l5(e,n,t[n]);return e},Rle=(e,t)=>jle(e,Ile(t));function uO(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const o=uO(r,t,n);if(o)return o;r=t?null:r.sibling}}function dO(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const Jy=dO(f.createContext(null));class fO extends f.Component{render(){return f.createElement(Jy.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:u5,ReactCurrentDispatcher:d5}=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function Mle(){const e=f.useContext(Jy);if(e===null)throw new Error("its-fine: useFiber must be called within a !");const t=f.useId();return f.useMemo(()=>{for(const r of[u5==null?void 0:u5.current,e,e==null?void 0:e.alternate]){if(!r)continue;const o=uO(r,!1,s=>{let a=s.memoizedState;for(;a;){if(a.memoizedState===t)return!0;a=a.next}});if(o)return o}},[e,t])}function Dle(){var e,t;const n=Mle(),[r]=f.useState(()=>new Map);r.clear();let o=n;for(;o;){const s=(e=o.type)==null?void 0:e._context;s&&s!==Jy&&!r.has(s)&&r.set(s,(t=d5==null?void 0:d5.current)==null?void 0:t.readContext(dO(s))),o=o.return}return r}function Ale(){const e=Dle();return f.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>r=>f.createElement(t,null,f.createElement(n.Provider,Rle(c5({},r),{value:e.get(n)}))),t=>f.createElement(fO,c5({},t))),[e])}function Tle(e){const t=H.useRef({});return H.useLayoutEffect(()=>{t.current=e}),H.useLayoutEffect(()=>()=>{t.current={}},[]),t.current}const Nle=e=>{const t=H.useRef(),n=H.useRef(),r=H.useRef(),o=Tle(e),s=Ale(),a=c=>{const{forwardedRef:d}=e;d&&(typeof d=="function"?d(c):d.current=c)};return H.useLayoutEffect(()=>(n.current=new id.Stage({width:e.width,height:e.height,container:t.current}),a(n.current),r.current=Ru.createContainer(n.current,iO.LegacyRoot,!1,null),Ru.updateContainer(H.createElement(s,{},e.children),r.current),()=>{id.isBrowser&&(a(null),Ru.updateContainer(null,r.current,null),n.current.destroy())}),[]),H.useLayoutEffect(()=>{a(n.current),rg(n.current,e,o),Ru.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})},xu="Layer",$a="Group",aa="Rect",Wi="Circle",Kh="Line",pO="Image",$le="Transformer",Ru=Lie(_le);Ru.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:H.version,rendererPackageName:"react-konva"});const zle=H.forwardRef((e,t)=>H.createElement(fO,{},H.createElement(Nle,{...e,forwardedRef:t}))),Lle=fe([mn,ir],(e,t)=>{const{tool:n,isMovingBoundingBox:r}=e;return{tool:n,isStaging:t,isMovingBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:Jt}}),Ble=()=>{const e=te(),{tool:t,isStaging:n,isMovingBoundingBox:r}=z(Lle);return{handleDragStart:f.useCallback(()=>{(t==="move"||n)&&!r&&e(Ap(!0))},[e,r,n,t]),handleDragMove:f.useCallback(o=>{if(!((t==="move"||n)&&!r))return;const s={x:o.target.x(),y:o.target.y()};e(r_(s))},[e,r,n,t]),handleDragEnd:f.useCallback(()=>{(t==="move"||n)&&!r&&e(Ap(!1))},[e,r,n,t])}},Fle=fe([mn,Kn,ir],(e,t,n)=>{const{cursorPosition:r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:a,isMaskEnabled:c,shouldSnapToGrid:d}=e;return{activeTabName:t,isCursorOnCanvas:!!r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:a,isStaging:n,isMaskEnabled:c,shouldSnapToGrid:d}},{memoizeOptions:{resultEqualityCheck:Jt}}),Hle=()=>{const e=te(),{activeTabName:t,shouldShowBoundingBox:n,tool:r,isStaging:o,isMaskEnabled:s,shouldSnapToGrid:a}=z(Fle),c=f.useRef(null),d=o_(),p=()=>e(X1());rt(["shift+c"],()=>{p()},{enabled:()=>!o,preventDefault:!0},[]);const h=()=>e(hd(!s));rt(["h"],()=>{h()},{enabled:()=>!o,preventDefault:!0},[s]),rt(["n"],()=>{e(Vu(!a))},{enabled:!0,preventDefault:!0},[a]),rt("esc",()=>{e(JM())},{enabled:()=>!0,preventDefault:!0}),rt("shift+h",()=>{e(ZM(!n))},{enabled:()=>!o,preventDefault:!0},[t,n]),rt(["space"],m=>{m.repeat||(d==null||d.container().focus(),r!=="move"&&(c.current=r,e(ea("move"))),r==="move"&&c.current&&c.current!=="move"&&(e(ea(c.current)),c.current="move"))},{keyup:!0,keydown:!0,preventDefault:!0},[r,c])},Zy=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}},hO=()=>{const e=te(),t=Ea(),n=o_();return{updateColorUnderCursor:()=>{if(!n||!t)return;const r=n.getPointerPosition();if(!r)return;const o=eD.pixelRatio,[s,a,c,d]=t.getContext().getImageData(r.x*o,r.y*o,1,1).data;e(tD({r:s,g:a,b:c,a:d}))},commitColorUnderCursor:()=>{e(nD())}}},Wle=fe([Kn,mn,ir],(e,t,n)=>{const{tool:r}=t;return{tool:r,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:Jt}}),Vle=e=>{const t=te(),{tool:n,isStaging:r}=z(Wle),{commitColorUnderCursor:o}=hO();return f.useCallback(s=>{if(!e.current)return;if(e.current.container().focus(),n==="move"||r){t(Ap(!0));return}if(n==="colorPicker"){o();return}const a=Zy(e.current);a&&(s.evt.preventDefault(),t(s_(!0)),t(rD([a.x,a.y])))},[e,n,r,t,o])},Ule=fe([Kn,mn,ir],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:Jt}}),Gle=(e,t,n)=>{const r=te(),{isDrawing:o,tool:s,isStaging:a}=z(Ule),{updateColorUnderCursor:c}=hO();return f.useCallback(()=>{if(!e.current)return;const d=Zy(e.current);if(d){if(r(oD(d)),n.current=d,s==="colorPicker"){c();return}!o||s==="move"||a||(t.current=!0,r(a_([d.x,d.y])))}},[t,r,o,a,n,e,s,c])},qle=()=>{const e=te();return f.useCallback(()=>{e(sD())},[e])},Kle=fe([Kn,mn,ir],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:Jt}}),Xle=(e,t)=>{const n=te(),{tool:r,isDrawing:o,isStaging:s}=z(Kle);return f.useCallback(()=>{if(r==="move"||s){n(Ap(!1));return}if(!t.current&&o&&e.current){const a=Zy(e.current);if(!a)return;n(a_([a.x,a.y]))}else t.current=!1;n(s_(!1))},[t,n,o,s,e,r])},Yle=fe([mn],e=>{const{isMoveStageKeyHeld:t,stageScale:n}=e;return{isMoveStageKeyHeld:t,stageScale:n}},{memoizeOptions:{resultEqualityCheck:Jt}}),Qle=e=>{const t=te(),{isMoveStageKeyHeld:n,stageScale:r}=z(Yle);return f.useCallback(o=>{if(!e.current||n)return;o.evt.preventDefault();const s=e.current.getPointerPosition();if(!s)return;const a={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 d=Es(r*lD**c,iD,aD),p={x:s.x-a.x*d,y:s.y-a.y*d};t(cD(d)),t(r_(p))},[e,n,r,t])},Jle=fe(mn,e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,stageDimensions:r,stageScale:o,shouldDarkenOutsideBoundingBox:s,stageCoordinates:a}=e;return{boundingBoxCoordinates:t,boundingBoxDimensions:n,shouldDarkenOutsideBoundingBox:s,stageCoordinates:a,stageDimensions:r,stageScale:o}},{memoizeOptions:{resultEqualityCheck:Jt}}),Zle=()=>{const{boundingBoxCoordinates:e,boundingBoxDimensions:t,shouldDarkenOutsideBoundingBox:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=z(Jle);return i.jsxs($a,{children:[i.jsx(aa,{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}),i.jsx(aa,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,visible:n,globalCompositeOperation:"destination-out"})]})},ece=fe([mn],e=>{const{stageScale:t,stageCoordinates:n,stageDimensions:r}=e;return{stageScale:t,stageCoordinates:n,stageDimensions:r}},{memoizeOptions:{resultEqualityCheck:Jt}}),tce=()=>{const{stageScale:e,stageCoordinates:t,stageDimensions:n}=z(ece),{colorMode:r}=Ds(),[o,s]=f.useState([]),[a,c]=Ac("colors",["base.800","base.200"]),d=f.useCallback(p=>p/e,[e]);return f.useLayoutEffect(()=>{const{width:p,height:h}=n,{x:m,y:v}=t,b={x1:0,y1:0,x2:p,y2:h,offset:{x:d(m),y:d(v)}},w={x:Math.ceil(d(m)/64)*64,y:Math.ceil(d(v)/64)*64},y={x1:-w.x,y1:-w.y,x2:d(p)-w.x+64,y2:d(h)-w.y+64},k={x1:Math.min(b.x1,y.x1),y1:Math.min(b.y1,y.y1),x2:Math.max(b.x2,y.x2),y2:Math.max(b.y2,y.y2)},_=k.x2-k.x1,I=k.y2-k.y1,P=Math.round(_/64)+1,E=Math.round(I/64)+1,O=xw(0,P).map(M=>i.jsx(Kh,{x:k.x1+M*64,y:k.y1,points:[0,0,0,I],stroke:r==="dark"?a:c,strokeWidth:1},`x_${M}`)),R=xw(0,E).map(M=>i.jsx(Kh,{x:k.x1,y:k.y1+M*64,points:[0,0,_,0],stroke:r==="dark"?a:c,strokeWidth:1},`y_${M}`));s(O.concat(R))},[e,t,n,d,r,a,c]),i.jsx($a,{children:o})},nce=fe([go,mn],(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:Jt}}),rce=e=>{const{...t}=e,{progressImage:n,boundingBox:r}=z(nce),[o,s]=f.useState(null);return f.useEffect(()=>{if(!n)return;const a=new Image;a.onload=()=>{s(a)},a.src=n.dataURL},[n]),n&&r&&o?i.jsx(pO,{x:r.x,y:r.y,width:r.width,height:r.height,image:o,listening:!1,...t}):null},nl=e=>{const{r:t,g:n,b:r,a:o}=e;return`rgba(${t}, ${n}, ${r}, ${o})`},oce=fe(mn,e=>{const{maskColor:t,stageCoordinates:n,stageDimensions:r,stageScale:o}=e;return{stageCoordinates:n,stageDimensions:r,stageScale:o,maskColorString:nl(t)}}),f5=e=>`data:image/svg+xml;utf8, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`.replaceAll("black",e),sce=e=>{const{...t}=e,{maskColorString:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=z(oce),[a,c]=f.useState(null),[d,p]=f.useState(0),h=f.useRef(null),m=f.useCallback(()=>{p(d+1),setTimeout(m,500)},[d]);return f.useEffect(()=>{if(a)return;const v=new Image;v.onload=()=>{c(v)},v.src=f5(n)},[a,n]),f.useEffect(()=>{a&&(a.src=f5(n))},[a,n]),f.useEffect(()=>{const v=setInterval(()=>p(b=>(b+1)%5),50);return()=>clearInterval(v)},[]),!a||!Dl(r.x)||!Dl(r.y)||!Dl(s)||!Dl(o.width)||!Dl(o.height)?null:i.jsx(aa,{ref:h,offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fillPatternImage:a,fillPatternOffsetY:Dl(d)?d:0,fillPatternRepeat:"repeat",fillPatternScale:{x:1/s,y:1/s},listening:!0,globalCompositeOperation:"source-in",...t})},ace=fe([mn],e=>({objects:e.layerState.objects}),{memoizeOptions:{resultEqualityCheck:Jt}}),ice=e=>{const{...t}=e,{objects:n}=z(ace);return i.jsx($a,{listening:!1,...t,children:n.filter(uD).map((r,o)=>i.jsx(Kh,{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))})};var Vi=f,lce=function(t,n,r){const o=Vi.useRef("loading"),s=Vi.useRef(),[a,c]=Vi.useState(0),d=Vi.useRef(),p=Vi.useRef(),h=Vi.useRef();return(d.current!==t||p.current!==n||h.current!==r)&&(o.current="loading",s.current=void 0,d.current=t,p.current=n,h.current=r),Vi.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 cce=ud(lce),mO=e=>{const{width:t,height:n,x:r,y:o,imageName:s}=e.canvasImage,{currentData:a,isError:c}=os(s??oo.skipToken),[d]=cce((a==null?void 0:a.image_url)??"",dD.get()?"use-credentials":"anonymous");return c?i.jsx(aa,{x:r,y:o,width:t,height:n,fill:"red"}):i.jsx(pO,{x:r,y:o,image:d,listening:!1})},uce=fe([mn],e=>{const{layerState:{objects:t}}=e;return{objects:t}},{memoizeOptions:{resultEqualityCheck:Jt}}),dce=()=>{const{objects:e}=z(uce);return e?i.jsx($a,{name:"outpainting-objects",listening:!1,children:e.map((t,n)=>{if(O5(t))return i.jsx(mO,{canvasImage:t},n);if(fD(t)){const r=i.jsx(Kh,{points:t.points,stroke:t.color?nl(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?i.jsx($a,{clipX:t.clip.x,clipY:t.clip.y,clipWidth:t.clip.width,clipHeight:t.clip.height,children:r},n):r}else{if(pD(t))return i.jsx(aa,{x:t.x,y:t.y,width:t.width,height:t.height,fill:nl(t.color)},n);if(hD(t))return i.jsx(aa,{x:t.x,y:t.y,width:t.width,height:t.height,fill:"rgb(255, 255, 255)",globalCompositeOperation:"destination-out"},n)}})}):null},fce=fe([mn],e=>{const{layerState:t,shouldShowStagingImage:n,shouldShowStagingOutline:r,boundingBoxCoordinates:{x:o,y:s},boundingBoxDimensions:{width:a,height:c}}=e,{selectedImageIndex:d,images:p}=t.stagingArea;return{currentStagingAreaImage:p.length>0&&d!==void 0?p[d]:void 0,isOnFirstImage:d===0,isOnLastImage:d===p.length-1,shouldShowStagingImage:n,shouldShowStagingOutline:r,x:o,y:s,width:a,height:c}},{memoizeOptions:{resultEqualityCheck:Jt}}),pce=e=>{const{...t}=e,{currentStagingAreaImage:n,shouldShowStagingImage:r,shouldShowStagingOutline:o,x:s,y:a,width:c,height:d}=z(fce);return i.jsxs($a,{...t,children:[r&&n&&i.jsx(mO,{canvasImage:n}),o&&i.jsxs($a,{children:[i.jsx(aa,{x:s,y:a,width:c,height:d,strokeWidth:1,stroke:"white",strokeScaleEnabled:!1}),i.jsx(aa,{x:s,y:a,width:c,height:d,dash:[4,4],strokeWidth:1,stroke:"black",strokeScaleEnabled:!1})]})]})},hce=fe([mn],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:Jt}}),mce=()=>{const e=te(),{isOnFirstImage:t,isOnLastImage:n,currentStagingAreaImage:r,shouldShowStagingImage:o,sessionId:s}=z(hce),{t:a}=be(),c=f.useCallback(()=>{e(uw(!0))},[e]),d=f.useCallback(()=>{e(uw(!1))},[e]);rt(["left"],()=>{p()},{enabled:()=>!0,preventDefault:!0}),rt(["right"],()=>{h()},{enabled:()=>!0,preventDefault:!0}),rt(["enter"],()=>{m()},{enabled:()=>!0,preventDefault:!0});const p=f.useCallback(()=>e(mD()),[e]),h=f.useCallback(()=>e(gD()),[e]),m=f.useCallback(()=>e(vD(s)),[e,s]),{data:v}=os((r==null?void 0:r.imageName)??oo.skipToken);return r?i.jsx(F,{pos:"absolute",bottom:4,w:"100%",align:"center",justify:"center",filter:"drop-shadow(0 0.5rem 1rem rgba(0,0,0))",onMouseOver:c,onMouseOut:d,children:i.jsxs(nr,{isAttached:!0,children:[i.jsx(Le,{tooltip:`${a("unifiedCanvas.previous")} (Left)`,"aria-label":`${a("unifiedCanvas.previous")} (Left)`,icon:i.jsx(KH,{}),onClick:p,colorScheme:"accent",isDisabled:t}),i.jsx(Le,{tooltip:`${a("unifiedCanvas.next")} (Right)`,"aria-label":`${a("unifiedCanvas.next")} (Right)`,icon:i.jsx(XH,{}),onClick:h,colorScheme:"accent",isDisabled:n}),i.jsx(Le,{tooltip:`${a("unifiedCanvas.accept")} (Enter)`,"aria-label":`${a("unifiedCanvas.accept")} (Enter)`,icon:i.jsx(JH,{}),onClick:m,colorScheme:"accent"}),i.jsx(Le,{tooltip:a("unifiedCanvas.showHide"),"aria-label":a("unifiedCanvas.showHide"),"data-alert":!o,icon:o?i.jsx(iW,{}):i.jsx(aW,{}),onClick:()=>e(bD(!o)),colorScheme:"accent"}),i.jsx(Le,{tooltip:a("unifiedCanvas.saveToGallery"),"aria-label":a("unifiedCanvas.saveToGallery"),isDisabled:!v||!v.is_intermediate,icon:i.jsx(_m,{}),onClick:()=>{v&&e(yD({imageDTO:v}))},colorScheme:"accent"}),i.jsx(Le,{tooltip:a("unifiedCanvas.discardAll"),"aria-label":a("unifiedCanvas.discardAll"),icon:i.jsx(ml,{style:{transform:"rotate(45deg)"}}),onClick:()=>e(xD()),colorScheme:"error",fontSize:20})]})}):null},gce=()=>{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,a]=f.useState();return f.useEffect(()=>{a(void 0)},[e,t,n,r,o]),pee(async()=>{const c=await wD(e,t,n,r,o);if(!c)return;const{baseImageData:d,maskImageData:p}=c,h=SD(d,p);a(h)},1e3,[e,t,n,r,o]),s},vce={txt2img:"Text to Image",img2img:"Image to Image",inpaint:"Inpaint",outpaint:"Inpaint"},bce=()=>{const e=gce();return i.jsxs(Ee,{children:["Mode: ",e?vce[e]:"..."]})},Zl=e=>Math.round(e*100)/100,yce=fe([mn],e=>{const{cursorPosition:t}=e,{cursorX:n,cursorY:r}=t?{cursorX:t.x,cursorY:t.y}:{cursorX:-1,cursorY:-1};return{cursorCoordinatesString:`(${Zl(n)}, ${Zl(r)})`}},{memoizeOptions:{resultEqualityCheck:Jt}});function xce(){const{cursorCoordinatesString:e}=z(yce),{t}=be();return i.jsx(Ee,{children:`${t("unifiedCanvas.cursorPosition")}: ${e}`})}const D1="var(--invokeai-colors-warning-500)",wce=fe([mn],e=>{const{stageDimensions:{width:t,height:n},stageCoordinates:{x:r,y:o},boundingBoxDimensions:{width:s,height:a},scaledBoundingBoxDimensions:{width:c,height:d},boundingBoxCoordinates:{x:p,y:h},stageScale:m,shouldShowCanvasDebugInfo:v,layer:b,boundingBoxScaleMethod:w,shouldPreserveMaskedArea:y}=e;let S="inherit";return(w==="none"&&(s<512||a<512)||w==="manual"&&c*d<512*512)&&(S=D1),{activeLayerColor:b==="mask"?D1:"inherit",activeLayerString:b.charAt(0).toUpperCase()+b.slice(1),boundingBoxColor:S,boundingBoxCoordinatesString:`(${Zl(p)}, ${Zl(h)})`,boundingBoxDimensionsString:`${s}×${a}`,scaledBoundingBoxDimensionsString:`${c}×${d}`,canvasCoordinatesString:`${Zl(r)}×${Zl(o)}`,canvasDimensionsString:`${t}×${n}`,canvasScaleString:Math.round(m*100),shouldShowCanvasDebugInfo:v,shouldShowBoundingBox:w!=="auto",shouldShowScaledBoundingBox:w!=="none",shouldPreserveMaskedArea:y}},{memoizeOptions:{resultEqualityCheck:Jt}}),Sce=()=>{const{activeLayerColor:e,activeLayerString:t,boundingBoxColor:n,boundingBoxCoordinatesString:r,boundingBoxDimensionsString:o,scaledBoundingBoxDimensionsString:s,shouldShowScaledBoundingBox:a,canvasCoordinatesString:c,canvasDimensionsString:d,canvasScaleString:p,shouldShowCanvasDebugInfo:h,shouldShowBoundingBox:m,shouldPreserveMaskedArea:v}=z(wce),{t:b}=be();return i.jsxs(F,{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:[i.jsx(bce,{}),i.jsx(Ee,{style:{color:e},children:`${b("unifiedCanvas.activeLayer")}: ${t}`}),i.jsx(Ee,{children:`${b("unifiedCanvas.canvasScale")}: ${p}%`}),v&&i.jsx(Ee,{style:{color:D1},children:"Preserve Masked Area: On"}),m&&i.jsx(Ee,{style:{color:n},children:`${b("unifiedCanvas.boundingBox")}: ${o}`}),a&&i.jsx(Ee,{style:{color:n},children:`${b("unifiedCanvas.scaledBoundingBox")}: ${s}`}),h&&i.jsxs(i.Fragment,{children:[i.jsx(Ee,{children:`${b("unifiedCanvas.boundingBoxPosition")}: ${r}`}),i.jsx(Ee,{children:`${b("unifiedCanvas.canvasDimensions")}: ${d}`}),i.jsx(Ee,{children:`${b("unifiedCanvas.canvasPosition")}: ${c}`}),i.jsx(xce,{})]})]})},Cce=fe([Xe],({canvas:e,generation:t})=>{const{boundingBoxCoordinates:n,boundingBoxDimensions:r,stageScale:o,isDrawing:s,isTransformingBoundingBox:a,isMovingBoundingBox:c,tool:d,shouldSnapToGrid:p}=e,{aspectRatio:h}=t;return{boundingBoxCoordinates:n,boundingBoxDimensions:r,isDrawing:s,isMovingBoundingBox:c,isTransformingBoundingBox:a,stageScale:o,shouldSnapToGrid:p,tool:d,hitStrokeWidth:20/o,aspectRatio:h}},{memoizeOptions:{resultEqualityCheck:Jt}}),kce=e=>{const{...t}=e,n=te(),{boundingBoxCoordinates:r,boundingBoxDimensions:o,isDrawing:s,isMovingBoundingBox:a,isTransformingBoundingBox:c,stageScale:d,shouldSnapToGrid:p,tool:h,hitStrokeWidth:m,aspectRatio:v}=z(Cce),b=f.useRef(null),w=f.useRef(null),[y,S]=f.useState(!1);f.useEffect(()=>{var B;!b.current||!w.current||(b.current.nodes([w.current]),(B=b.current.getLayer())==null||B.batchDraw())},[]);const k=64*d;rt("N",()=>{n(Vu(!p))});const _=f.useCallback(B=>{if(!p){n(s0({x:Math.floor(B.target.x()),y:Math.floor(B.target.y())}));return}const V=B.target.x(),q=B.target.y(),G=Ss(V,64),D=Ss(q,64);B.target.x(G),B.target.y(D),n(s0({x:G,y:D}))},[n,p]),I=f.useCallback(()=>{if(!w.current)return;const B=w.current,V=B.scaleX(),q=B.scaleY(),G=Math.round(B.width()*V),D=Math.round(B.height()*q),L=Math.round(B.x()),W=Math.round(B.y());if(v){const Y=Ss(G/v,64);n(Js({width:G,height:Y}))}else n(Js({width:G,height:D}));n(s0({x:p?Su(L,64):L,y:p?Su(W,64):W})),B.scaleX(1),B.scaleY(1)},[n,p,v]),P=f.useCallback((B,V,q)=>{const G=B.x%k,D=B.y%k;return{x:Su(V.x,k)+G,y:Su(V.y,k)+D}},[k]),E=()=>{n(a0(!0))},O=()=>{n(a0(!1)),n(i0(!1)),n(Of(!1)),S(!1)},R=()=>{n(i0(!0))},M=()=>{n(a0(!1)),n(i0(!1)),n(Of(!1)),S(!1)},A=()=>{S(!0)},T=()=>{!c&&!a&&S(!1)},$=()=>{n(Of(!0))},Q=()=>{n(Of(!1))};return i.jsxs($a,{...t,children:[i.jsx(aa,{height:o.height,width:o.width,x:r.x,y:r.y,onMouseEnter:$,onMouseOver:$,onMouseLeave:Q,onMouseOut:Q}),i.jsx(aa,{draggable:!0,fillEnabled:!1,height:o.height,hitStrokeWidth:m,listening:!s&&h==="move",onDragStart:R,onDragEnd:M,onDragMove:_,onMouseDown:R,onMouseOut:T,onMouseOver:A,onMouseEnter:A,onMouseUp:M,onTransform:I,onTransformEnd:O,ref:w,stroke:y?"rgba(255,255,255,0.7)":"white",strokeWidth:(y?8:1)/d,width:o.width,x:r.x,y:r.y}),i.jsx($le,{anchorCornerRadius:3,anchorDragBoundFunc:P,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:R,onDragEnd:M,onMouseDown:E,onMouseUp:O,onTransformEnd:O,ref:b,rotateEnabled:!1})]})},_ce=fe(mn,e=>{const{cursorPosition:t,brushSize:n,colorPickerColor:r,maskColor:o,brushColor:s,tool:a,layer:c,shouldShowBrush:d,isMovingBoundingBox:p,isTransformingBoundingBox:h,stageScale:m,stageDimensions:v,boundingBoxCoordinates:b,boundingBoxDimensions:w,shouldRestrictStrokesToBox:y}=e,S=y?{clipX:b.x,clipY:b.y,clipWidth:w.width,clipHeight:w.height}:{};return{cursorPosition:t,brushX:t?t.x:v.width/2,brushY:t?t.y:v.height/2,radius:n/2,colorPickerOuterRadius:dw/m,colorPickerInnerRadius:(dw-xv+1)/m,maskColorString:nl({...o,a:.5}),brushColorString:nl(s),colorPickerColorString:nl(r),tool:a,layer:c,shouldShowBrush:d,shouldDrawBrushPreview:!(p||h||!t)&&d,strokeWidth:1.5/m,dotRadius:1.5/m,clip:S}},{memoizeOptions:{resultEqualityCheck:Jt}}),Pce=e=>{const{...t}=e,{brushX:n,brushY:r,radius:o,maskColorString:s,tool:a,layer:c,shouldDrawBrushPreview:d,dotRadius:p,strokeWidth:h,brushColorString:m,colorPickerColorString:v,colorPickerInnerRadius:b,colorPickerOuterRadius:w,clip:y}=z(_ce);return d?i.jsxs($a,{listening:!1,...y,...t,children:[a==="colorPicker"?i.jsxs(i.Fragment,{children:[i.jsx(Wi,{x:n,y:r,radius:w,stroke:m,strokeWidth:xv,strokeScaleEnabled:!1}),i.jsx(Wi,{x:n,y:r,radius:b,stroke:v,strokeWidth:xv,strokeScaleEnabled:!1})]}):i.jsxs(i.Fragment,{children:[i.jsx(Wi,{x:n,y:r,radius:o,fill:c==="mask"?s:m,globalCompositeOperation:a==="eraser"?"destination-out":"source-out"}),i.jsx(Wi,{x:n,y:r,radius:o,stroke:"rgba(255,255,255,0.4)",strokeWidth:h*2,strokeEnabled:!0,listening:!1}),i.jsx(Wi,{x:n,y:r,radius:o,stroke:"rgba(0,0,0,1)",strokeWidth:h,strokeEnabled:!0,listening:!1})]}),i.jsx(Wi,{x:n,y:r,radius:p*2,fill:"rgba(255,255,255,0.4)",listening:!1}),i.jsx(Wi,{x:n,y:r,radius:p,fill:"rgba(0,0,0,1)",listening:!1})]}):null},jce=fe([mn,ir],(e,t)=>{const{isMaskEnabled:n,stageScale:r,shouldShowBoundingBox:o,isTransformingBoundingBox:s,isMouseOverBoundingBox:a,isMovingBoundingBox:c,stageDimensions:d,stageCoordinates:p,tool:h,isMovingStage:m,shouldShowIntermediates:v,shouldShowGrid:b,shouldRestrictStrokesToBox:w,shouldAntialias:y}=e;let S="none";return h==="move"||t?m?S="grabbing":S="grab":s?S=void 0:w&&!a&&(S="default"),{isMaskEnabled:n,isModifyingBoundingBox:s||c,shouldShowBoundingBox:o,shouldShowGrid:b,stageCoordinates:p,stageCursor:S,stageDimensions:d,stageScale:r,tool:h,isStaging:t,shouldShowIntermediates:v,shouldAntialias:y}},Ge),Ice=je(zle,{shouldForwardProp:e=>!["sx"].includes(e)}),p5=()=>{const{isMaskEnabled:e,isModifyingBoundingBox:t,shouldShowBoundingBox:n,shouldShowGrid:r,stageCoordinates:o,stageCursor:s,stageDimensions:a,stageScale:c,tool:d,isStaging:p,shouldShowIntermediates:h,shouldAntialias:m}=z(jce);Hle();const v=f.useRef(null),b=f.useRef(null),w=f.useCallback(T=>{kD(T),v.current=T},[]),y=f.useCallback(T=>{CD(T),b.current=T},[]),S=f.useRef({x:0,y:0}),k=f.useRef(!1),_=Qle(v),I=Vle(v),P=Xle(v,k),E=Gle(v,k,S),O=qle(),{handleDragStart:R,handleDragMove:M,handleDragEnd:A}=Ble();return i.jsx(F,{sx:{position:"relative",height:"100%",width:"100%",borderRadius:"base"},children:i.jsxs(Ee,{sx:{position:"relative"},children:[i.jsxs(Ice,{tabIndex:-1,ref:w,sx:{outline:"none",overflow:"hidden",cursor:s||void 0,canvas:{outline:"none"}},x:o.x,y:o.y,width:a.width,height:a.height,scale:{x:c,y:c},onTouchStart:I,onTouchMove:E,onTouchEnd:P,onMouseDown:I,onMouseLeave:O,onMouseMove:E,onMouseUp:P,onDragStart:R,onDragMove:M,onDragEnd:A,onContextMenu:T=>T.evt.preventDefault(),onWheel:_,draggable:(d==="move"||p)&&!t,children:[i.jsx(xu,{id:"grid",visible:r,children:i.jsx(tce,{})}),i.jsx(xu,{id:"base",ref:y,listening:!1,imageSmoothingEnabled:m,children:i.jsx(dce,{})}),i.jsxs(xu,{id:"mask",visible:e,listening:!1,children:[i.jsx(ice,{visible:!0,listening:!1}),i.jsx(sce,{listening:!1})]}),i.jsx(xu,{children:i.jsx(Zle,{})}),i.jsxs(xu,{id:"preview",imageSmoothingEnabled:m,children:[!p&&i.jsx(Pce,{visible:d!=="move",listening:!1}),i.jsx(pce,{visible:p}),h&&i.jsx(rce,{}),i.jsx(kce,{visible:n&&!p})]})]}),i.jsx(Sce,{}),i.jsx(mce,{})]})})},Ece=fe(mn,CH,Kn,(e,t,n)=>{const{doesCanvasNeedScaling:r,isCanvasInitialized:o}=e;return{doesCanvasNeedScaling:r,activeTabName:n,initialCanvasImage:t,isCanvasInitialized:o}}),h5=()=>{const e=te(),{doesCanvasNeedScaling:t,activeTabName:n,initialCanvasImage:r,isCanvasInitialized:o}=z(Ece),s=f.useRef(null);return f.useLayoutEffect(()=>{window.setTimeout(()=>{if(!s.current)return;const{clientWidth:a,clientHeight:c}=s.current;e(_D({width:a,height:c})),e(o?PD():Zh()),e(R5(!1))},0)},[e,r,t,n,o]),i.jsx(F,{ref:s,sx:{flexDirection:"column",alignItems:"center",justifyContent:"center",gap:4,width:"100%",height:"100%"},children:i.jsx(fl,{thickness:"2px",size:"xl"})})};function gO(e,t,n=250){const[r,o]=f.useState(0);return f.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 Oce=je(Z8,{baseStyle:{paddingInline:4},shouldForwardProp:e=>!["pickerColor"].includes(e)}),iv={width:6,height:6,borderColor:"base.100"},Rce=e=>{const{styleClass:t="",...n}=e;return i.jsx(Oce,{sx:{".react-colorful__hue-pointer":iv,".react-colorful__saturation-pointer":iv,".react-colorful__alpha-pointer":iv},className:t,...n})},Xh=f.memo(Rce),Mce=fe([mn,ir],(e,t)=>{const{maskColor:n,layer:r,isMaskEnabled:o,shouldPreserveMaskedArea:s}=e;return{layer:r,maskColor:n,maskColorString:nl(n),isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:t}},{memoizeOptions:{resultEqualityCheck:Jt}}),Dce=()=>{const e=te(),{t}=be(),{layer:n,maskColor:r,isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:a}=z(Mce);rt(["q"],()=>{c()},{enabled:()=>!a,preventDefault:!0},[n]),rt(["shift+c"],()=>{d()},{enabled:()=>!a,preventDefault:!0},[]),rt(["h"],()=>{p()},{enabled:()=>!a,preventDefault:!0},[o]);const c=()=>{e(Tp(n==="mask"?"base":"mask"))},d=()=>e(X1()),p=()=>e(hd(!o));return i.jsx(gl,{triggerComponent:i.jsx(nr,{children:i.jsx(Le,{"aria-label":t("unifiedCanvas.maskingOptions"),tooltip:t("unifiedCanvas.maskingOptions"),icon:i.jsx(gW,{}),isChecked:n==="mask",isDisabled:a})}),children:i.jsxs(F,{direction:"column",gap:2,children:[i.jsx(Gn,{label:`${t("unifiedCanvas.enableMask")} (H)`,isChecked:o,onChange:p}),i.jsx(Gn,{label:t("unifiedCanvas.preserveMaskedArea"),isChecked:s,onChange:h=>e(i_(h.target.checked))}),i.jsx(Xh,{sx:{paddingTop:2,paddingBottom:2},pickerColor:r,onChange:h=>e(l_(h))}),i.jsxs(en,{size:"sm",leftIcon:i.jsx(us,{}),onClick:d,children:[t("unifiedCanvas.clearMask")," (Shift+C)"]})]})})},Ace=fe([mn,Kn,go],(e,t,n)=>{const{futureLayerStates:r}=e;return{canRedo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:Jt}});function vO(){const e=te(),{canRedo:t,activeTabName:n}=z(Ace),{t:r}=be(),o=()=>{e(jD())};return rt(["meta+shift+z","ctrl+shift+z","control+y","meta+y"],()=>{o()},{enabled:()=>t,preventDefault:!0},[n,t]),i.jsx(Le,{"aria-label":`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,tooltip:`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,icon:i.jsx(yW,{}),onClick:o,isDisabled:!t})}const bO=()=>{const e=z(ir),t=te(),{t:n}=be();return i.jsxs(qy,{title:n("unifiedCanvas.clearCanvasHistory"),acceptCallback:()=>t(ID()),acceptButtonText:n("unifiedCanvas.clearHistory"),triggerComponent:i.jsx(en,{size:"sm",leftIcon:i.jsx(us,{}),isDisabled:e,children:n("unifiedCanvas.clearCanvasHistory")}),children:[i.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryMessage")}),i.jsx("br",{}),i.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryConfirm")})]})},Tce=fe([mn],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:a,shouldSnapToGrid:c,shouldRestrictStrokesToBox:d,shouldAntialias:p}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:a,shouldSnapToGrid:c,shouldRestrictStrokesToBox:d,shouldAntialias:p}},{memoizeOptions:{resultEqualityCheck:Jt}}),Nce=()=>{const e=te(),{t}=be(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldDarkenOutsideBoundingBox:o,shouldShowCanvasDebugInfo:s,shouldShowGrid:a,shouldShowIntermediates:c,shouldSnapToGrid:d,shouldRestrictStrokesToBox:p,shouldAntialias:h}=z(Tce);rt(["n"],()=>{e(Vu(!d))},{enabled:!0,preventDefault:!0},[d]);const m=v=>e(Vu(v.target.checked));return i.jsx(gl,{isLazy:!1,triggerComponent:i.jsx(Le,{tooltip:t("unifiedCanvas.canvasSettings"),"aria-label":t("unifiedCanvas.canvasSettings"),icon:i.jsx(Ub,{})}),children:i.jsxs(F,{direction:"column",gap:2,children:[i.jsx(Gn,{label:t("unifiedCanvas.showIntermediates"),isChecked:c,onChange:v=>e(c_(v.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.showGrid"),isChecked:a,onChange:v=>e(u_(v.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.snapToGrid"),isChecked:d,onChange:m}),i.jsx(Gn,{label:t("unifiedCanvas.darkenOutsideSelection"),isChecked:o,onChange:v=>e(d_(v.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:v=>e(f_(v.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:v=>e(p_(v.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.limitStrokesToBox"),isChecked:p,onChange:v=>e(h_(v.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:s,onChange:v=>e(m_(v.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.antialiasing"),isChecked:h,onChange:v=>e(g_(v.target.checked))}),i.jsx(bO,{})]})})},$ce=fe([mn,ir,go],(e,t,n)=>{const{isProcessing:r}=n,{tool:o,brushColor:s,brushSize:a}=e;return{tool:o,isStaging:t,isProcessing:r,brushColor:s,brushSize:a}},{memoizeOptions:{resultEqualityCheck:Jt}}),zce=()=>{const e=te(),{tool:t,brushColor:n,brushSize:r,isStaging:o}=z($ce),{t:s}=be();rt(["b"],()=>{a()},{enabled:()=>!o,preventDefault:!0},[]),rt(["e"],()=>{c()},{enabled:()=>!o,preventDefault:!0},[t]),rt(["c"],()=>{d()},{enabled:()=>!o,preventDefault:!0},[t]),rt(["shift+f"],()=>{p()},{enabled:()=>!o,preventDefault:!0}),rt(["delete","backspace"],()=>{h()},{enabled:()=>!o,preventDefault:!0}),rt(["BracketLeft"],()=>{e(tc(Math.max(r-5,5)))},{enabled:()=>!o,preventDefault:!0},[r]),rt(["BracketRight"],()=>{e(tc(Math.min(r+5,500)))},{enabled:()=>!o,preventDefault:!0},[r]),rt(["Shift+BracketLeft"],()=>{e(nc({...n,a:Es(n.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]),rt(["Shift+BracketRight"],()=>{e(nc({...n,a:Es(n.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]);const a=()=>e(ea("brush")),c=()=>e(ea("eraser")),d=()=>e(ea("colorPicker")),p=()=>e(v_()),h=()=>e(b_());return i.jsxs(nr,{isAttached:!0,children:[i.jsx(Le,{"aria-label":`${s("unifiedCanvas.brush")} (B)`,tooltip:`${s("unifiedCanvas.brush")} (B)`,icon:i.jsx(xP,{}),isChecked:t==="brush"&&!o,onClick:a,isDisabled:o}),i.jsx(Le,{"aria-label":`${s("unifiedCanvas.eraser")} (E)`,tooltip:`${s("unifiedCanvas.eraser")} (E)`,icon:i.jsx(hP,{}),isChecked:t==="eraser"&&!o,isDisabled:o,onClick:c}),i.jsx(Le,{"aria-label":`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:i.jsx(vP,{}),isDisabled:o,onClick:p}),i.jsx(Le,{"aria-label":`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:i.jsx(ml,{style:{transform:"rotate(45deg)"}}),isDisabled:o,onClick:h}),i.jsx(Le,{"aria-label":`${s("unifiedCanvas.colorPicker")} (C)`,tooltip:`${s("unifiedCanvas.colorPicker")} (C)`,icon:i.jsx(gP,{}),isChecked:t==="colorPicker"&&!o,isDisabled:o,onClick:d}),i.jsx(gl,{triggerComponent:i.jsx(Le,{"aria-label":s("unifiedCanvas.brushOptions"),tooltip:s("unifiedCanvas.brushOptions"),icon:i.jsx(Wb,{})}),children:i.jsxs(F,{minWidth:60,direction:"column",gap:4,width:"100%",children:[i.jsx(F,{gap:4,justifyContent:"space-between",children:i.jsx(_t,{label:s("unifiedCanvas.brushSize"),value:r,withInput:!0,onChange:m=>e(tc(m)),sliderNumberInputProps:{max:500}})}),i.jsx(Xh,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:m=>e(nc(m))})]})})]})},Lce=fe([mn,Kn,go],(e,t,n)=>{const{pastLayerStates:r}=e;return{canUndo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:Jt}});function yO(){const e=te(),{t}=be(),{canUndo:n,activeTabName:r}=z(Lce),o=()=>{e(ED())};return rt(["meta+z","ctrl+z"],()=>{o()},{enabled:()=>n,preventDefault:!0},[r,n]),i.jsx(Le,{"aria-label":`${t("unifiedCanvas.undo")} (Ctrl+Z)`,tooltip:`${t("unifiedCanvas.undo")} (Ctrl+Z)`,icon:i.jsx(Vb,{}),onClick:o,isDisabled:!n})}const Bce=fe([go,mn,ir],(e,t,n)=>{const{isProcessing:r}=e,{tool:o,shouldCropToBoundingBoxOnSave:s,layer:a,isMaskEnabled:c}=t;return{isProcessing:r,isStaging:n,isMaskEnabled:c,tool:o,layer:a,shouldCropToBoundingBoxOnSave:s}},{memoizeOptions:{resultEqualityCheck:Jt}}),Fce=()=>{const e=te(),{isProcessing:t,isStaging:n,isMaskEnabled:r,layer:o,tool:s}=z(Bce),a=Ea(),{t:c}=be(),{isClipboardAPIAvailable:d}=My(),{getUploadButtonProps:p,getUploadInputProps:h}=Vm({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}});rt(["v"],()=>{m()},{enabled:()=>!n,preventDefault:!0},[]),rt(["r"],()=>{b()},{enabled:()=>!0,preventDefault:!0},[a]),rt(["shift+m"],()=>{y()},{enabled:()=>!n,preventDefault:!0},[a,t]),rt(["shift+s"],()=>{S()},{enabled:()=>!n,preventDefault:!0},[a,t]),rt(["meta+c","ctrl+c"],()=>{k()},{enabled:()=>!n&&d,preventDefault:!0},[a,t,d]),rt(["shift+d"],()=>{_()},{enabled:()=>!n,preventDefault:!0},[a,t]);const m=()=>e(ea("move")),v=gO(()=>b(!1),()=>b(!0)),b=(P=!1)=>{const E=Ea();if(!E)return;const O=E.getClientRect({skipTransform:!0});e(y_({contentRect:O,shouldScaleTo1:P}))},w=()=>{e(W1()),e(Zh())},y=()=>{e(x_())},S=()=>{e(w_())},k=()=>{d&&e(S_())},_=()=>{e(C_())},I=P=>{const E=P;e(Tp(E)),E==="mask"&&!r&&e(hd(!0))};return i.jsxs(F,{sx:{alignItems:"center",gap:2,flexWrap:"wrap"},children:[i.jsx(Ee,{w:24,children:i.jsx(Xr,{tooltip:`${c("unifiedCanvas.layer")} (Q)`,value:o,data:k_,onChange:I,disabled:n})}),i.jsx(Dce,{}),i.jsx(zce,{}),i.jsxs(nr,{isAttached:!0,children:[i.jsx(Le,{"aria-label":`${c("unifiedCanvas.move")} (V)`,tooltip:`${c("unifiedCanvas.move")} (V)`,icon:i.jsx(dP,{}),isChecked:s==="move"||n,onClick:m}),i.jsx(Le,{"aria-label":`${c("unifiedCanvas.resetView")} (R)`,tooltip:`${c("unifiedCanvas.resetView")} (R)`,icon:i.jsx(pP,{}),onClick:v})]}),i.jsxs(nr,{isAttached:!0,children:[i.jsx(Le,{"aria-label":`${c("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${c("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:i.jsx(bP,{}),onClick:y,isDisabled:n}),i.jsx(Le,{"aria-label":`${c("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${c("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:i.jsx(_m,{}),onClick:S,isDisabled:n}),d&&i.jsx(Le,{"aria-label":`${c("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${c("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:i.jsx(Wc,{}),onClick:k,isDisabled:n}),i.jsx(Le,{"aria-label":`${c("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${c("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:i.jsx(Hb,{}),onClick:_,isDisabled:n})]}),i.jsxs(nr,{isAttached:!0,children:[i.jsx(yO,{}),i.jsx(vO,{})]}),i.jsxs(nr,{isAttached:!0,children:[i.jsx(Le,{"aria-label":`${c("common.upload")}`,tooltip:`${c("common.upload")}`,icon:i.jsx(Rd,{}),isDisabled:n,...p()}),i.jsx("input",{...h()}),i.jsx(Le,{"aria-label":`${c("unifiedCanvas.clearCanvas")}`,tooltip:`${c("unifiedCanvas.clearCanvas")}`,icon:i.jsx(us,{}),onClick:w,colorScheme:"error",isDisabled:n})]}),i.jsx(nr,{isAttached:!0,children:i.jsx(Nce,{})})]})};function Hce(){const e=te(),t=z(o=>o.canvas.brushSize),{t:n}=be(),r=z(ir);return rt(["BracketLeft"],()=>{e(tc(Math.max(t-5,5)))},{enabled:()=>!r,preventDefault:!0},[t]),rt(["BracketRight"],()=>{e(tc(Math.min(t+5,500)))},{enabled:()=>!r,preventDefault:!0},[t]),i.jsx(_t,{label:n("unifiedCanvas.brushSize"),value:t,withInput:!0,onChange:o=>e(tc(o)),sliderNumberInputProps:{max:500},isCompact:!0})}const Wce=fe([mn,ir],(e,t)=>{const{brushColor:n,maskColor:r,layer:o}=e;return{brushColor:n,maskColor:r,layer:o,isStaging:t}},{memoizeOptions:{resultEqualityCheck:Jt}});function Vce(){const e=te(),{brushColor:t,maskColor:n,layer:r,isStaging:o}=z(Wce),s=()=>{if(r==="base")return`rgba(${t.r},${t.g},${t.b},${t.a})`;if(r==="mask")return`rgba(${n.r},${n.g},${n.b},${n.a})`};return rt(["shift+BracketLeft"],()=>{e(nc({...t,a:Es(t.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[t]),rt(["shift+BracketRight"],()=>{e(nc({...t,a:Es(t.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[t]),i.jsx(gl,{triggerComponent:i.jsx(Ee,{sx:{width:7,height:7,minWidth:7,minHeight:7,borderRadius:"full",bg:s(),cursor:"pointer"}}),children:i.jsxs(F,{minWidth:60,direction:"column",gap:4,width:"100%",children:[r==="base"&&i.jsx(Xh,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:t,onChange:a=>e(nc(a))}),r==="mask"&&i.jsx(Xh,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:a=>e(l_(a))})]})})}function xO(){return i.jsxs(F,{columnGap:4,alignItems:"center",children:[i.jsx(Hce,{}),i.jsx(Vce,{})]})}function Uce(){const e=te(),t=z(r=>r.canvas.shouldRestrictStrokesToBox),{t:n}=be();return i.jsx(Gn,{label:n("unifiedCanvas.betaLimitToBox"),isChecked:t,onChange:r=>e(h_(r.target.checked))})}function Gce(){return i.jsxs(F,{gap:4,alignItems:"center",children:[i.jsx(xO,{}),i.jsx(Uce,{})]})}function qce(){const e=te(),{t}=be(),n=()=>e(X1());return i.jsx(en,{size:"sm",leftIcon:i.jsx(us,{}),onClick:n,tooltip:`${t("unifiedCanvas.clearMask")} (Shift+C)`,children:t("unifiedCanvas.betaClear")})}function Kce(){const e=z(o=>o.canvas.isMaskEnabled),t=te(),{t:n}=be(),r=()=>t(hd(!e));return i.jsx(Gn,{label:`${n("unifiedCanvas.enableMask")} (H)`,isChecked:e,onChange:r})}function Xce(){const e=te(),{t}=be(),n=z(r=>r.canvas.shouldPreserveMaskedArea);return i.jsx(Gn,{label:t("unifiedCanvas.betaPreserveMasked"),isChecked:n,onChange:r=>e(i_(r.target.checked))})}function Yce(){return i.jsxs(F,{gap:4,alignItems:"center",children:[i.jsx(xO,{}),i.jsx(Kce,{}),i.jsx(Xce,{}),i.jsx(qce,{})]})}function Qce(){const e=z(r=>r.canvas.shouldDarkenOutsideBoundingBox),t=te(),{t:n}=be();return i.jsx(Gn,{label:n("unifiedCanvas.betaDarkenOutside"),isChecked:e,onChange:r=>t(d_(r.target.checked))})}function Jce(){const e=z(r=>r.canvas.shouldShowGrid),t=te(),{t:n}=be();return i.jsx(Gn,{label:n("unifiedCanvas.showGrid"),isChecked:e,onChange:r=>t(u_(r.target.checked))})}function Zce(){const e=z(o=>o.canvas.shouldSnapToGrid),t=te(),{t:n}=be(),r=o=>t(Vu(o.target.checked));return i.jsx(Gn,{label:`${n("unifiedCanvas.snapToGrid")} (N)`,isChecked:e,onChange:r})}function eue(){return i.jsxs(F,{alignItems:"center",gap:4,children:[i.jsx(Jce,{}),i.jsx(Zce,{}),i.jsx(Qce,{})]})}const tue=fe([mn],e=>{const{tool:t,layer:n}=e;return{tool:t,layer:n}},{memoizeOptions:{resultEqualityCheck:Jt}});function nue(){const{tool:e,layer:t}=z(tue);return i.jsxs(F,{height:8,minHeight:8,maxHeight:8,alignItems:"center",children:[t=="base"&&["brush","eraser","colorPicker"].includes(e)&&i.jsx(Gce,{}),t=="mask"&&["brush","eraser","colorPicker"].includes(e)&&i.jsx(Yce,{}),e=="move"&&i.jsx(eue,{})]})}const rue=fe([mn],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldShowCanvasDebugInfo:r,shouldShowIntermediates:o,shouldAntialias:s}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldShowCanvasDebugInfo:r,shouldShowIntermediates:o,shouldAntialias:s}},{memoizeOptions:{resultEqualityCheck:Jt}}),oue=()=>{const e=te(),{t}=be(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldShowCanvasDebugInfo:o,shouldShowIntermediates:s,shouldAntialias:a}=z(rue);return i.jsx(gl,{isLazy:!1,triggerComponent:i.jsx(Le,{tooltip:t("unifiedCanvas.canvasSettings"),tooltipProps:{placement:"bottom"},"aria-label":t("unifiedCanvas.canvasSettings"),icon:i.jsx(Ub,{})}),children:i.jsxs(F,{direction:"column",gap:2,children:[i.jsx(Gn,{label:t("unifiedCanvas.showIntermediates"),isChecked:s,onChange:c=>e(c_(c.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:c=>e(f_(c.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:c=>e(p_(c.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:o,onChange:c=>e(m_(c.target.checked))}),i.jsx(Gn,{label:t("unifiedCanvas.antialiasing"),isChecked:a,onChange:c=>e(g_(c.target.checked))}),i.jsx(bO,{})]})})};function sue(){const e=z(ir),t=Ea(),{isClipboardAPIAvailable:n}=My(),r=z(c=>c.system.isProcessing),o=te(),{t:s}=be();rt(["meta+c","ctrl+c"],()=>{a()},{enabled:()=>!e&&n,preventDefault:!0},[t,r,n]);const a=f.useCallback(()=>{n&&o(S_())},[o,n]);return n?i.jsx(Le,{"aria-label":`${s("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${s("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:i.jsx(Wc,{}),onClick:a,isDisabled:e}):null}function aue(){const e=te(),{t}=be(),n=Ea(),r=z(ir);rt(["shift+d"],()=>{o()},{enabled:()=>!r,preventDefault:!0},[n]);const o=()=>{e(C_())};return i.jsx(Le,{"aria-label":`${t("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${t("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:i.jsx(Hb,{}),onClick:o,isDisabled:r})}function iue(){const e=z(ir),{getUploadButtonProps:t,getUploadInputProps:n}=Vm({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}}),{t:r}=be();return i.jsxs(i.Fragment,{children:[i.jsx(Le,{"aria-label":r("common.upload"),tooltip:r("common.upload"),icon:i.jsx(Rd,{}),isDisabled:e,...t()}),i.jsx("input",{...n()})]})}const lue=fe([mn,ir],(e,t)=>{const{layer:n,isMaskEnabled:r}=e;return{layer:n,isMaskEnabled:r,isStaging:t}},{memoizeOptions:{resultEqualityCheck:Jt}});function cue(){const e=te(),{t}=be(),{layer:n,isMaskEnabled:r,isStaging:o}=z(lue),s=()=>{e(Tp(n==="mask"?"base":"mask"))};rt(["q"],()=>{s()},{enabled:()=>!o,preventDefault:!0},[n]);const a=c=>{const d=c;e(Tp(d)),d==="mask"&&!r&&e(hd(!0))};return i.jsx(Xr,{tooltip:`${t("unifiedCanvas.layer")} (Q)`,"aria-label":`${t("unifiedCanvas.layer")} (Q)`,value:n,data:k_,onChange:a,disabled:o,w:"full"})}function uue(){const e=te(),{t}=be(),n=Ea(),r=z(ir),o=z(a=>a.system.isProcessing);rt(["shift+m"],()=>{s()},{enabled:()=>!r,preventDefault:!0},[n,o]);const s=()=>{e(x_())};return i.jsx(Le,{"aria-label":`${t("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${t("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:i.jsx(bP,{}),onClick:s,isDisabled:r})}function due(){const e=z(s=>s.canvas.tool),t=z(ir),n=te(),{t:r}=be();rt(["v"],()=>{o()},{enabled:()=>!t,preventDefault:!0},[]);const o=()=>n(ea("move"));return i.jsx(Le,{"aria-label":`${r("unifiedCanvas.move")} (V)`,tooltip:`${r("unifiedCanvas.move")} (V)`,icon:i.jsx(dP,{}),isChecked:e==="move"||t,onClick:o})}function fue(){const e=z(s=>s.ui.shouldPinParametersPanel),t=z(s=>s.ui.shouldShowParametersPanel),n=te(),{t:r}=be(),o=()=>{n(Y1(!0)),e&&n(Co())};return!e||!t?i.jsxs(F,{flexDirection:"column",gap:2,children:[i.jsx(Le,{tooltip:`${r("parameters.showOptionsPanel")} (O)`,tooltipProps:{placement:"top"},"aria-label":r("parameters.showOptionsPanel"),onClick:o,children:i.jsx(Wb,{})}),i.jsx(F,{children:i.jsx(zy,{iconButton:!0})}),i.jsx(F,{children:i.jsx(Km,{width:"100%",height:"40px",btnGroupWidth:"100%"})})]}):null}function pue(){const e=te(),{t}=be(),n=z(ir),r=()=>{e(W1()),e(Zh())};return i.jsx(Le,{"aria-label":t("unifiedCanvas.clearCanvas"),tooltip:t("unifiedCanvas.clearCanvas"),icon:i.jsx(us,{}),onClick:r,isDisabled:n,colorScheme:"error"})}function hue(){const e=Ea(),t=te(),{t:n}=be();rt(["r"],()=>{o()},{enabled:()=>!0,preventDefault:!0},[e]);const r=gO(()=>o(!1),()=>o(!0)),o=(s=!1)=>{const a=Ea();if(!a)return;const c=a.getClientRect({skipTransform:!0});t(y_({contentRect:c,shouldScaleTo1:s}))};return i.jsx(Le,{"aria-label":`${n("unifiedCanvas.resetView")} (R)`,tooltip:`${n("unifiedCanvas.resetView")} (R)`,icon:i.jsx(pP,{}),onClick:r})}function mue(){const e=z(ir),t=Ea(),n=z(a=>a.system.isProcessing),r=te(),{t:o}=be();rt(["shift+s"],()=>{s()},{enabled:()=>!e,preventDefault:!0},[t,n]);const s=()=>{r(w_())};return i.jsx(Le,{"aria-label":`${o("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${o("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:i.jsx(_m,{}),onClick:s,isDisabled:e})}const gue=fe([mn,ir,go],(e,t,n)=>{const{isProcessing:r}=n,{tool:o}=e;return{tool:o,isStaging:t,isProcessing:r}},{memoizeOptions:{resultEqualityCheck:Jt}}),vue=()=>{const e=te(),{t}=be(),{tool:n,isStaging:r}=z(gue);rt(["b"],()=>{o()},{enabled:()=>!r,preventDefault:!0},[]),rt(["e"],()=>{s()},{enabled:()=>!r,preventDefault:!0},[n]),rt(["c"],()=>{a()},{enabled:()=>!r,preventDefault:!0},[n]),rt(["shift+f"],()=>{c()},{enabled:()=>!r,preventDefault:!0}),rt(["delete","backspace"],()=>{d()},{enabled:()=>!r,preventDefault:!0});const o=()=>e(ea("brush")),s=()=>e(ea("eraser")),a=()=>e(ea("colorPicker")),c=()=>e(v_()),d=()=>e(b_());return i.jsxs(F,{flexDirection:"column",gap:2,children:[i.jsxs(nr,{children:[i.jsx(Le,{"aria-label":`${t("unifiedCanvas.brush")} (B)`,tooltip:`${t("unifiedCanvas.brush")} (B)`,icon:i.jsx(xP,{}),isChecked:n==="brush"&&!r,onClick:o,isDisabled:r}),i.jsx(Le,{"aria-label":`${t("unifiedCanvas.eraser")} (E)`,tooltip:`${t("unifiedCanvas.eraser")} (B)`,icon:i.jsx(hP,{}),isChecked:n==="eraser"&&!r,isDisabled:r,onClick:s})]}),i.jsxs(nr,{children:[i.jsx(Le,{"aria-label":`${t("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${t("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:i.jsx(vP,{}),isDisabled:r,onClick:c}),i.jsx(Le,{"aria-label":`${t("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${t("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:i.jsx(ml,{style:{transform:"rotate(45deg)"}}),isDisabled:r,onClick:d})]}),i.jsx(Le,{"aria-label":`${t("unifiedCanvas.colorPicker")} (C)`,tooltip:`${t("unifiedCanvas.colorPicker")} (C)`,icon:i.jsx(gP,{}),isChecked:n==="colorPicker"&&!r,isDisabled:r,onClick:a,width:"max-content"})]})},bue=()=>i.jsxs(F,{flexDirection:"column",rowGap:2,width:"min-content",children:[i.jsx(cue,{}),i.jsx(vue,{}),i.jsxs(F,{gap:2,children:[i.jsx(due,{}),i.jsx(hue,{})]}),i.jsxs(F,{columnGap:2,children:[i.jsx(uue,{}),i.jsx(mue,{})]}),i.jsxs(F,{columnGap:2,children:[i.jsx(sue,{}),i.jsx(aue,{})]}),i.jsxs(F,{gap:2,children:[i.jsx(yO,{}),i.jsx(vO,{})]}),i.jsxs(F,{gap:2,children:[i.jsx(iue,{}),i.jsx(pue,{})]}),i.jsx(oue,{}),i.jsx(fue,{})]}),yue=fe([mn,La],(e,t)=>{const{doesCanvasNeedScaling:n}=e,{shouldUseCanvasBetaLayout:r}=t;return{doesCanvasNeedScaling:n,shouldUseCanvasBetaLayout:r}},Ge),lv={id:"canvas-intial-image",actionType:"SET_CANVAS_INITIAL_IMAGE"},xue=()=>{const e=te(),{doesCanvasNeedScaling:t,shouldUseCanvasBetaLayout:n}=z(yue),{isOver:r,setNodeRef:o,active:s}=$1({id:"unifiedCanvas",data:lv});return f.useLayoutEffect(()=>{const a=()=>{e(Co())};return window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[e]),n?i.jsx(Ee,{layerStyle:"first",ref:o,tabIndex:0,sx:{w:"full",h:"full",p:4,borderRadius:"base"},children:i.jsxs(F,{sx:{w:"full",h:"full",gap:4},children:[i.jsx(bue,{}),i.jsxs(F,{sx:{flexDir:"column",w:"full",h:"full",gap:4,position:"relative"},children:[i.jsx(nue,{}),i.jsxs(Ee,{sx:{w:"full",h:"full",position:"relative"},children:[t?i.jsx(h5,{}):i.jsx(p5,{}),Ip(lv,s)&&i.jsx(th,{isOver:r,label:"Set Canvas Initial Image"})]})]})]})}):i.jsx(Ee,{ref:o,tabIndex:-1,sx:{layerStyle:"first",w:"full",h:"full",p:4,borderRadius:"base"},children:i.jsxs(F,{sx:{flexDirection:"column",alignItems:"center",gap:4,w:"full",h:"full"},children:[i.jsx(Fce,{}),i.jsx(F,{sx:{flexDirection:"column",alignItems:"center",justifyContent:"center",gap:4,w:"full",h:"full"},children:i.jsxs(Ee,{sx:{w:"full",h:"full",position:"relative"},children:[t?i.jsx(h5,{}):i.jsx(p5,{}),Ip(lv,s)&&i.jsx(th,{isOver:r,label:"Set Canvas Initial Image"})]})})]})})},wue=f.memo(xue),Sue=fe([Xe],({generation:e})=>{const{infillMethod:t}=e;return{infillMethod:t}},Ge),Cue=()=>{const e=te(),{infillMethod:t}=z(Sue),{data:n,isLoading:r}=F5(),o=n==null?void 0:n.infill_methods,{t:s}=be(),a=f.useCallback(c=>{e(OD(c))},[e]);return i.jsx(Xr,{disabled:(o==null?void 0:o.length)===0,placeholder:r?"Loading...":void 0,label:s("parameters.infillMethod"),value:t,data:o??[],onChange:a})},kue=f.memo(Cue),_ue=fe([Di],e=>{const{tileSize:t,infillMethod:n}=e;return{tileSize:t,infillMethod:n}},Ge),Pue=()=>{const e=te(),{tileSize:t,infillMethod:n}=z(_ue),{t:r}=be(),o=f.useCallback(a=>{e(fw(a))},[e]),s=f.useCallback(()=>{e(fw(32))},[e]);return i.jsx(_t,{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})},jue=f.memo(Pue),Iue=fe([mn],e=>{const{boundingBoxScaleMethod:t}=e;return{boundingBoxScale:t}},Ge),Eue=()=>{const e=te(),{boundingBoxScale:t}=z(Iue),{t:n}=be(),r=o=>{e(MD(o))};return i.jsx(sr,{label:n("parameters.scaleBeforeProcessing"),data:RD,value:t,onChange:r})},Oue=f.memo(Eue),Rue=fe([Di,go,mn],(e,t,n)=>{const{scaledBoundingBoxDimensions:r,boundingBoxScaleMethod:o}=n;return{scaledBoundingBoxDimensions:r,isManual:o==="manual"}},Ge),Mue=()=>{const e=te(),{isManual:t,scaledBoundingBoxDimensions:n}=z(Rue),{t:r}=be(),o=a=>{e(Np({...n,height:Math.floor(a)}))},s=()=>{e(Np({...n,height:Math.floor(512)}))};return i.jsx(_t,{isDisabled:!t,label:r("parameters.scaledHeight"),min:64,max:1024,step:64,value:n.height,onChange:o,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:s})},Due=f.memo(Mue),Aue=fe([mn],e=>{const{boundingBoxScaleMethod:t,scaledBoundingBoxDimensions:n}=e;return{scaledBoundingBoxDimensions:n,isManual:t==="manual"}},Ge),Tue=()=>{const e=te(),{isManual:t,scaledBoundingBoxDimensions:n}=z(Aue),{t:r}=be(),o=a=>{e(Np({...n,width:Math.floor(a)}))},s=()=>{e(Np({...n,width:Math.floor(512)}))};return i.jsx(_t,{isDisabled:!t,label:r("parameters.scaledWidth"),min:64,max:1024,step:64,value:n.width,onChange:o,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:s})},Nue=f.memo(Tue),$ue=()=>{const{t:e}=be();return i.jsx(Ro,{label:e("parameters.infillScalingHeader"),children:i.jsxs(F,{sx:{gap:2,flexDirection:"column"},children:[i.jsx(kue,{}),i.jsx(jue,{}),i.jsx(Oue,{}),i.jsx(Nue,{}),i.jsx(Due,{})]})})},zue=f.memo($ue);function Lue(){const e=te(),t=z(r=>r.generation.seamBlur),{t:n}=be();return i.jsx(_t,{label:n("parameters.seamBlur"),min:0,max:64,sliderNumberInputProps:{max:512},value:t,onChange:r=>{e(pw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(pw(16))}})}function Bue(){const e=te(),{t}=be(),n=z(r=>r.generation.seamSize);return i.jsx(_t,{label:t("parameters.seamSize"),min:1,max:256,sliderNumberInputProps:{max:512},value:n,onChange:r=>{e(hw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>e(hw(96))})}function Fue(){const{t:e}=be(),t=z(r=>r.generation.seamSteps),n=te();return i.jsx(_t,{label:e("parameters.seamSteps"),min:1,max:100,sliderNumberInputProps:{max:999},value:t,onChange:r=>{n(mw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{n(mw(30))}})}function Hue(){const e=te(),{t}=be(),n=z(r=>r.generation.seamStrength);return i.jsx(_t,{label:t("parameters.seamStrength"),min:.01,max:.99,step:.01,value:n,onChange:r=>{e(gw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(gw(.7))}})}const Wue=()=>{const{t:e}=be();return i.jsxs(Ro,{label:e("parameters.seamCorrectionHeader"),children:[i.jsx(Bue,{}),i.jsx(Lue,{}),i.jsx(Hue,{}),i.jsx(Fue,{})]})},Vue=f.memo(Wue),Uue=fe([Xe,ir],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{aspectRatio:o}=t;return{boundingBoxDimensions:r,isStaging:n,aspectRatio:o}},Ge),Gue=()=>{const e=te(),{boundingBoxDimensions:t,isStaging:n,aspectRatio:r}=z(Uue),{t:o}=be(),s=c=>{if(e(Js({...t,height:Math.floor(c)})),r){const d=Ss(c*r,64);e(Js({width:d,height:Math.floor(c)}))}},a=()=>{if(e(Js({...t,height:Math.floor(512)})),r){const c=Ss(512*r,64);e(Js({width:c,height:Math.floor(512)}))}};return i.jsx(_t,{label:o("parameters.boundingBoxHeight"),min:64,max:1024,step:64,value:t.height,onChange:s,isDisabled:n,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:a})},que=f.memo(Gue),Kue=fe([Xe,ir],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{aspectRatio:o}=t;return{boundingBoxDimensions:r,isStaging:n,aspectRatio:o}},Ge),Xue=()=>{const e=te(),{boundingBoxDimensions:t,isStaging:n,aspectRatio:r}=z(Kue),{t:o}=be(),s=c=>{if(e(Js({...t,width:Math.floor(c)})),r){const d=Ss(c/r,64);e(Js({width:Math.floor(c),height:d}))}},a=()=>{if(e(Js({...t,width:Math.floor(512)})),r){const c=Ss(512/r,64);e(Js({width:Math.floor(512),height:c}))}};return i.jsx(_t,{label:o("parameters.boundingBoxWidth"),min:64,max:1024,step:64,value:t.width,onChange:s,isDisabled:n,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:a})},Yue=f.memo(Xue);function m5(){const e=te(),{t}=be();return i.jsxs(F,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[i.jsxs(F,{alignItems:"center",gap:2,children:[i.jsx(Ye,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:t("parameters.aspectRatio")}),i.jsx(pl,{}),i.jsx(O8,{}),i.jsx(Le,{tooltip:t("ui.swapSizes"),"aria-label":t("ui.swapSizes"),size:"sm",icon:i.jsx(l8,{}),fontSize:20,onClick:()=>e(DD())})]}),i.jsx(Yue,{}),i.jsx(que,{})]})}const Que=fe(Xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ge),Jue=()=>{const{shouldUseSliders:e,activeLabel:t}=z(Que);return i.jsx(Ro,{label:"General",activeLabel:t,defaultIsOpen:!0,children:i.jsxs(F,{sx:{flexDirection:"column",gap:3},children:[e?i.jsxs(i.Fragment,{children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(m5,{})]}):i.jsxs(i.Fragment,{children:[i.jsxs(F,{gap:3,children:[i.jsx(wi,{}),i.jsx(Ci,{}),i.jsx(xi,{})]}),i.jsx(Si,{}),i.jsx(Ee,{pt:2,children:i.jsx(ki,{})}),i.jsx(m5,{})]}),i.jsx(L8,{})]})})},Zue=f.memo(Jue),wO=()=>i.jsxs(i.Fragment,{children:[i.jsx(Gy,{}),i.jsx(Bd,{}),i.jsx(Zue,{}),i.jsx(Vy,{}),i.jsx(Hy,{}),i.jsx(zd,{}),i.jsx(Uy,{}),i.jsx(Vue,{}),i.jsx(zue,{}),i.jsx(Wy,{})]}),ede=()=>i.jsxs(F,{sx:{gap:4,w:"full",h:"full"},children:[i.jsx(Fy,{children:i.jsx(wO,{})}),i.jsx(wue,{})]}),tde=f.memo(ede),nde=[{id:"txt2img",translationKey:"common.txt2img",icon:i.jsx(no,{as:lW,sx:{boxSize:6,pointerEvents:"none"}}),content:i.jsx(Tie,{})},{id:"img2img",translationKey:"common.img2img",icon:i.jsx(no,{as:il,sx:{boxSize:6,pointerEvents:"none"}}),content:i.jsx(Toe,{})},{id:"unifiedCanvas",translationKey:"common.unifiedCanvas",icon:i.jsx(no,{as:Ree,sx:{boxSize:6,pointerEvents:"none"}}),content:i.jsx(tde,{})},{id:"nodes",translationKey:"common.nodes",icon:i.jsx(no,{as:Oee,sx:{boxSize:6,pointerEvents:"none"}}),content:i.jsx(Rie,{})},{id:"modelManager",translationKey:"modelManager.modelManager",icon:i.jsx(no,{as:tW,sx:{boxSize:6,pointerEvents:"none"}}),content:i.jsx(Ase,{})}],rde=fe([c8,go],(e,t)=>{const{disabledTabs:n}=e,{isNodesEnabled:r}=t;return nde.filter(s=>s.id==="nodes"?r&&!n.includes(s.id):!n.includes(s.id))},{memoizeOptions:{resultEqualityCheck:Jt}}),ode=350,cv=20,SO=["modelManager"],sde=()=>{const e=z(AD),t=z(Kn),n=z(rde),{shouldPinGallery:r,shouldPinParametersPanel:o,shouldShowGallery:s}=z(y=>y.ui),{t:a}=be(),c=te();rt("f",()=>{c(TD()),(r||o)&&c(Co())},[r,o]);const d=f.useCallback(()=>{t==="unifiedCanvas"&&c(Co())},[c,t]),p=f.useCallback(y=>{y.target instanceof HTMLElement&&y.target.blur()},[]),h=f.useMemo(()=>n.map(y=>i.jsx(wn,{hasArrow:!0,label:String(a(y.translationKey)),placement:"end",children:i.jsxs(Sc,{onClick:p,children:[i.jsx(B_,{children:String(a(y.translationKey))}),y.icon]})},y.id)),[n,a,p]),m=f.useMemo(()=>n.map(y=>i.jsx(Cm,{children:y.content},y.id)),[n]),{ref:v,minSizePct:b}=ete(ode,cv,"app"),w=f.useCallback(y=>{const S=ND[y];S&&c(Kl(S))},[c]);return i.jsxs(Id,{defaultIndex:e,index:e,onChange:w,sx:{flexGrow:1,gap:4},isLazy:!0,children:[i.jsxs(Ed,{sx:{pt:2,gap:4,flexDir:"column"},children:[h,i.jsx(pl,{}),i.jsx(Nee,{})]}),i.jsxs($y,{id:"app",autoSaveId:"app",direction:"horizontal",style:{height:"100%",width:"100%"},children:[i.jsx(ad,{id:"main",children:i.jsx(km,{style:{height:"100%",width:"100%"},children:m})}),r&&s&&!SO.includes(t)&&i.jsxs(i.Fragment,{children:[i.jsx(A8,{}),i.jsx(ad,{ref:v,onResize:d,id:"gallery",order:3,defaultSize:b>cv&&b<100?b:cv,minSize:b,maxSize:50,children:i.jsx(s8,{})})]})]})]})},ade=f.memo(sde),ide=fe([Kn,La],(e,t)=>{const{shouldPinGallery:n,shouldShowGallery:r}=t;return{shouldPinGallery:n,shouldShowGalleryButton:SO.includes(e)?!1:!r}},{memoizeOptions:{resultEqualityCheck:Jt}}),lde=()=>{const{t:e}=be(),{shouldPinGallery:t,shouldShowGalleryButton:n}=z(ide),r=te(),o=()=>{r(yv(!0)),t&&r(Co())};return n?i.jsx(Le,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":e("accessibility.showGallery"),onClick:o,sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",p:0,insetInlineEnd:0,px:3,h:48,w:8,borderStartEndRadius:0,borderEndEndRadius:0,shadow:"2xl"},children:i.jsx(Mee,{})}):null},cde=f.memo(lde),uv={borderStartStartRadius:0,borderEndStartRadius:0,shadow:"2xl"},ude=fe([La,Kn],(e,t)=>{const{shouldPinParametersPanel:n,shouldUseCanvasBetaLayout:r,shouldShowParametersPanel:o}=e,s=r&&t==="unifiedCanvas",a=!s&&(!n||!o),c=!s&&!o&&["txt2img","img2img","unifiedCanvas"].includes(t);return{shouldPinParametersPanel:n,shouldShowParametersPanelButton:c,shouldShowProcessButtons:a}},{memoizeOptions:{resultEqualityCheck:Jt}}),dde=()=>{const e=te(),{t}=be(),{shouldShowProcessButtons:n,shouldShowParametersPanelButton:r,shouldPinParametersPanel:o}=z(ude),s=()=>{e(Y1(!0)),o&&e(Co())};return r?i.jsxs(F,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineStart:"4.5rem",direction:"column",gap:2,children:[i.jsx(Le,{tooltip:"Show Options Panel (O)",tooltipProps:{placement:"top"},"aria-label":t("accessibility.showOptionsPanel"),onClick:s,sx:uv,children:i.jsx(Wb,{})}),n&&i.jsxs(i.Fragment,{children:[i.jsx(zy,{iconButton:!0,sx:uv}),i.jsx(Km,{sx:uv})]})]}):null},fde=f.memo(dde),pde=fe([La,Kn],(e,t)=>{const{shouldPinParametersPanel:n,shouldShowParametersPanel:r}=e;return{activeTabName:t,shouldPinParametersPanel:n,shouldShowParametersPanel:r}},Ge),hde=()=>{const e=te(),{shouldPinParametersPanel:t,shouldShowParametersPanel:n,activeTabName:r}=z(pde),o=()=>{e(Y1(!1))},s=z(c=>c.generation.model),a=f.useMemo(()=>r==="txt2img"?s&&s.base_model==="sdxl"?i.jsx(rO,{}):i.jsx(oO,{}):r==="img2img"?s&&s.base_model==="sdxl"?i.jsx(M8,{}):i.jsx(B8,{}):r==="unifiedCanvas"?i.jsx(wO,{}):null,[r,s]);return t?null:i.jsx(lP,{direction:"left",isResizable:!1,isOpen:n,onClose:o,children:i.jsxs(F,{sx:{flexDir:"column",h:"full",w:By,gap:2,position:"relative",flexShrink:0,overflowY:"auto"},children:[i.jsxs(F,{paddingBottom:4,justifyContent:"space-between",alignItems:"center",children:[i.jsx(i8,{}),i.jsx(D8,{})]}),i.jsx(F,{sx:{gap:2,flexDirection:"column",h:"full",w:"full"},children:a})]})})},mde=f.memo(hde),gde=()=>{const{data:e,isFetching:t}=Jh(),{isOpen:n,onClose:r,handleAddToBoard:o,image:s}=f.useContext(N5),[a,c]=f.useState(),d=f.useRef(null),p=e==null?void 0:e.find(h=>h.board_id===(s==null?void 0:s.board_id));return i.jsx(_d,{isOpen:n,leastDestructiveRef:d,onClose:r,isCentered:!0,children:i.jsx(Da,{children:i.jsxs(Pd,{children:[i.jsx(Ma,{fontSize:"lg",fontWeight:"bold",children:p?"Move Image to Board":"Add Image to Board"}),i.jsx(Aa,{children:i.jsx(Ee,{children:i.jsxs(F,{direction:"column",gap:3,children:[p&&i.jsxs(Ye,{children:["Moving this image from"," ",i.jsx("strong",{children:p.board_name})," to"]}),t?i.jsx(fl,{}):i.jsx(sr,{placeholder:"Select Board",onChange:h=>c(h),value:a,data:(e??[]).map(h=>({label:h.board_name,value:h.board_id}))})]})})}),i.jsxs(Ra,{children:[i.jsx(en,{onClick:r,children:"Cancel"}),i.jsx(en,{isDisabled:!a,colorScheme:"accent",onClick:()=>{a&&o(a)},ml:3,children:p?"Move":"Add"})]})]})})})},vde=f.memo(gde),bde=fe([e=>e.hotkeys,e=>e.ui],(e,t)=>{const{shift:n}=e,{shouldPinParametersPanel:r,shouldPinGallery:o}=t;return{shift:n,shouldPinGallery:o,shouldPinParametersPanel:r}},{memoizeOptions:{resultEqualityCheck:Jt}}),yde=()=>{const e=te(),{shift:t,shouldPinParametersPanel:n,shouldPinGallery:r}=z(bde),o=z(Kn);return rt("*",()=>{rP("shift")?!t&&e(Po(!0)):t&&e(Po(!1))},{keyup:!0,keydown:!0},[t]),rt("o",()=>{e($D()),o==="unifiedCanvas"&&n&&e(Co())}),rt(["shift+o"],()=>{e(zD()),o==="unifiedCanvas"&&e(Co())}),rt("g",()=>{e(LD()),o==="unifiedCanvas"&&r&&e(Co())}),rt(["shift+g"],()=>{e(T5()),o==="unifiedCanvas"&&e(Co())}),rt("1",()=>{e(Kl("txt2img"))}),rt("2",()=>{e(Kl("img2img"))}),rt("3",()=>{e(Kl("unifiedCanvas"))}),rt("4",()=>{e(Kl("nodes"))}),null},xde=f.memo(yde),wde={},Sde=({config:e=wde,headerComponent:t})=>{const n=z(U6),r=dF(),o=te();return f.useEffect(()=>{Bn.changeLanguage(n)},[n]),f.useEffect(()=>{q5(e)&&(r.info({namespace:"App",config:e},"Received config"),o(BD(e)))},[o,e,r]),f.useEffect(()=>{o(FD())},[o]),i.jsxs(i.Fragment,{children:[i.jsxs(ol,{w:"100vw",h:"100vh",position:"relative",overflow:"hidden",children:[i.jsx(SH,{children:i.jsxs(ol,{sx:{gap:4,p:4,gridAutoRows:"min-content auto",w:"full",h:"full"},children:[t||i.jsx(Iee,{}),i.jsx(F,{sx:{gap:4,w:"full",h:"full"},children:i.jsx(ade,{})})]})}),i.jsx(nee,{}),i.jsx(mde,{}),i.jsx(Uu,{children:i.jsx(fde,{})}),i.jsx(Uu,{children:i.jsx(cde,{})})]}),i.jsx(aee,{}),i.jsx(vde,{}),i.jsx(fF,{}),i.jsx(xde,{})]})},Ide=f.memo(Sde);export{Ide as default}; diff --git a/invokeai/frontend/web/dist/assets/MantineProvider-b5842fc1.js b/invokeai/frontend/web/dist/assets/MantineProvider-b5842fc1.js deleted file mode 100644 index d479487e00..0000000000 --- a/invokeai/frontend/web/dist/assets/MantineProvider-b5842fc1.js +++ /dev/null @@ -1 +0,0 @@ -import{go as J,W as g,gm as P,s as x,gv as K}from"./index-e2437518.js";function b(r,e){return t=>t.colorMode==="dark"?e:r}function oe(r){const{orientation:e,vertical:t,horizontal:n}=r;return e?e==="vertical"?t:n:{}}function s(r,e={}){let t=!1;function n(){if(!t){t=!0;return}throw new Error("[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?")}function a(...d){n();for(const u of d)e[u]=c(u);return s(r,e)}function o(...d){for(const u of d)u in e||(e[u]=c(u));return s(r,e)}function i(){return Object.fromEntries(Object.entries(e).map(([u,k])=>[u,k.selector]))}function l(){return Object.fromEntries(Object.entries(e).map(([u,k])=>[u,k.className]))}function c(d){const A=`chakra-${(["container","root"].includes(d??"")?[r]:[r,d]).filter(Boolean).join("__")}`;return{className:A,selector:`.${A}`,toString:()=>d}}return{parts:a,toPart:c,extend:o,selectors:i,classnames:l,get keys(){return Object.keys(e)},__type:{}}}var ae=s("accordion").parts("root","container","button","panel").extend("icon");s("alert").parts("title","description","container").extend("icon","spinner");s("avatar").parts("label","badge","container").extend("excessLabel","group");s("breadcrumb").parts("link","item","container").extend("separator");s("button").parts();var ie=s("checkbox").parts("control","icon","container").extend("label");s("progress").parts("track","filledTrack").extend("label");s("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer");var se=s("editable").parts("preview","input","textarea");s("form").parts("container","requiredIndicator","helperText");s("formError").parts("text","icon");var le=s("input").parts("addon","field","element");s("list").parts("container","item","icon");var Q=s("menu").parts("button","list","item").extend("groupTitle","command","divider"),ce=s("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),fe=s("numberinput").parts("root","field","stepperGroup","stepper");s("pininput").parts("field");var de=s("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),ue=s("progress").parts("label","filledTrack","track");s("radio").parts("container","control","label");var pe=s("select").parts("field","icon"),be=s("slider").parts("container","track","thumb","filledTrack","mark");s("stat").parts("container","label","helpText","number","icon");var ge=s("switch").parts("container","track","thumb");s("table").parts("table","thead","tbody","tr","th","td","tfoot","caption");var me=s("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator");s("tag").parts("container","label","closeButton");s("card").parts("container","header","body","footer");const{definePartsStyle:Z,defineMultiStyleConfig:rr}=J(Q.keys),er=Z(r=>({button:{fontWeight:500,bg:b("base.300","base.500")(r),color:b("base.900","base.100")(r),_hover:{bg:b("base.400","base.600")(r),color:b("base.900","base.50")(r),fontWeight:600}},list:{zIndex:9999,color:b("base.900","base.150")(r),bg:b("base.200","base.800")(r),shadow:"dark-lg",border:"none"},item:{fontSize:"sm",bg:b("base.200","base.800")(r),_hover:{bg:b("base.300","base.700")(r)},_focus:{bg:b("base.400","base.600")(r)},svg:{opacity:.5}}})),ye=rr({variants:{invokeAI:er},defaultProps:{variant:"invokeAI"}}),ve={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"}}}},tr={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 nr(r){return()=>({fontFamily:r.fontFamily||"sans-serif"})}var or=Object.defineProperty,M=Object.getOwnPropertySymbols,ar=Object.prototype.hasOwnProperty,ir=Object.prototype.propertyIsEnumerable,I=(r,e,t)=>e in r?or(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,R=(r,e)=>{for(var t in e||(e={}))ar.call(e,t)&&I(r,t,e[t]);if(M)for(var t of M(e))ir.call(e,t)&&I(r,t,e[t]);return r};function sr(r){return e=>({WebkitTapHighlightColor:"transparent",[e||"&:focus"]:R({},r.focusRing==="always"||r.focusRing==="auto"?r.focusRingStyles.styles(r):r.focusRingStyles.resetStyles(r)),[e?e.replace(":focus",":focus:not(:focus-visible)"):"&:focus:not(:focus-visible)"]:R({},r.focusRing==="auto"||r.focusRing==="never"?r.focusRingStyles.resetStyles(r):null)})}function _(r){return e=>typeof r.primaryShade=="number"?r.primaryShade:r.primaryShade[e||r.colorScheme]}function E(r){const e=_(r);return(t,n,a=!0,o=!0)=>{if(typeof t=="string"&&t.includes(".")){const[l,c]=t.split("."),y=parseInt(c,10);if(l in r.colors&&y>=0&&y<10)return r.colors[l][typeof n=="number"&&!o?n:y]}const i=typeof n=="number"?n:e();return t in r.colors?r.colors[t][i]:a?r.colors[r.primaryColor][i]:t}}function V(r){let e="";for(let t=1;t{const a={from:(n==null?void 0:n.from)||r.defaultGradient.from,to:(n==null?void 0:n.to)||r.defaultGradient.to,deg:(n==null?void 0:n.deg)||r.defaultGradient.deg};return`linear-gradient(${a.deg}deg, ${e(a.from,t(),!1)} 0%, ${e(a.to,t(),!1)} 100%)`}}function X(r){return e=>{if(typeof e=="number")return`${e/16}${r}`;if(typeof e=="string"){const t=e.replace("px","");if(!Number.isNaN(Number(t)))return`${Number(t)/16}${r}`}return e}}const m=X("rem"),O=X("em");function q({size:r,sizes:e,units:t}){return r in e?e[r]:typeof r=="number"?t==="em"?O(r):m(r):r||e.md}function $(r){return typeof r=="number"?r:typeof r=="string"&&r.includes("rem")?Number(r.replace("rem",""))*16:typeof r=="string"&&r.includes("em")?Number(r.replace("em",""))*16:Number(r)}function fr(r){return e=>`@media (min-width: ${O($(q({size:e,sizes:r.breakpoints})))})`}function dr(r){return e=>`@media (max-width: ${O($(q({size:e,sizes:r.breakpoints}))-1)})`}function ur(r){return/^#?([0-9A-F]{3}){1,2}$/i.test(r)}function pr(r){let e=r.replace("#","");if(e.length===3){const i=e.split("");e=[i[0],i[0],i[1],i[1],i[2],i[2]].join("")}const t=parseInt(e,16),n=t>>16&255,a=t>>8&255,o=t&255;return{r:n,g:a,b:o,a:1}}function br(r){const[e,t,n,a]=r.replace(/[^0-9,.]/g,"").split(",").map(Number);return{r:e,g:t,b:n,a:a||1}}function j(r){return ur(r)?pr(r):r.startsWith("rgb")?br(r):{r:0,g:0,b:0,a:1}}function v(r,e){if(typeof r!="string"||e>1||e<0)return"rgba(0, 0, 0, 1)";if(r.startsWith("var(--"))return r;const{r:t,g:n,b:a}=j(r);return`rgba(${t}, ${n}, ${a}, ${e})`}function gr(r=0){return{position:"absolute",top:m(r),right:m(r),left:m(r),bottom:m(r)}}function mr(r,e){if(typeof r=="string"&&r.startsWith("var(--"))return r;const{r:t,g:n,b:a,a:o}=j(r),i=1-e,l=c=>Math.round(c*i);return`rgba(${l(t)}, ${l(n)}, ${l(a)}, ${o})`}function yr(r,e){if(typeof r=="string"&&r.startsWith("var(--"))return r;const{r:t,g:n,b:a,a:o}=j(r),i=l=>Math.round(l+(255-l)*e);return`rgba(${i(t)}, ${i(n)}, ${i(a)}, ${o})`}function vr(r){return e=>{if(typeof e=="number")return m(e);const t=typeof r.defaultRadius=="number"?r.defaultRadius:r.radius[r.defaultRadius]||r.defaultRadius;return r.radius[e]||e||t}}function Sr(r,e){if(typeof r=="string"&&r.includes(".")){const[t,n]=r.split("."),a=parseInt(n,10);if(t in e.colors&&a>=0&&a<10)return{isSplittedColor:!0,key:t,shade:a}}return{isSplittedColor:!1}}function hr(r){const e=E(r),t=_(r),n=U(r);return({variant:a,color:o,gradient:i,primaryFallback:l})=>{const c=Sr(o,r);switch(a){case"light":return{border:"transparent",background:v(e(o,r.colorScheme==="dark"?8:0,l,!1),r.colorScheme==="dark"?.2:1),color:o==="dark"?r.colorScheme==="dark"?r.colors.dark[0]:r.colors.dark[9]:e(o,r.colorScheme==="dark"?2:t("light")),hover:v(e(o,r.colorScheme==="dark"?7:1,l,!1),r.colorScheme==="dark"?.25:.65)};case"subtle":return{border:"transparent",background:"transparent",color:o==="dark"?r.colorScheme==="dark"?r.colors.dark[0]:r.colors.dark[9]:e(o,r.colorScheme==="dark"?2:t("light")),hover:v(e(o,r.colorScheme==="dark"?8:0,l,!1),r.colorScheme==="dark"?.2:1)};case"outline":return{border:e(o,r.colorScheme==="dark"?5:t("light")),background:"transparent",color:e(o,r.colorScheme==="dark"?5:t("light")),hover:r.colorScheme==="dark"?v(e(o,5,l,!1),.05):v(e(o,0,l,!1),.35)};case"default":return{border:r.colorScheme==="dark"?r.colors.dark[4]:r.colors.gray[4],background:r.colorScheme==="dark"?r.colors.dark[6]:r.white,color:r.colorScheme==="dark"?r.white:r.black,hover:r.colorScheme==="dark"?r.colors.dark[5]:r.colors.gray[0]};case"white":return{border:"transparent",background:r.white,color:e(o,t()),hover:null};case"transparent":return{border:"transparent",color:o==="dark"?r.colorScheme==="dark"?r.colors.dark[0]:r.colors.dark[9]:e(o,r.colorScheme==="dark"?2:t("light")),background:"transparent",hover:null};case"gradient":return{background:n(i),color:r.white,border:"transparent",hover:null};default:{const y=t(),d=c.isSplittedColor?c.shade:y,u=c.isSplittedColor?c.key:o;return{border:"transparent",background:e(u,d,l),color:r.white,hover:e(u,d===9?8:d+1)}}}}}function _r(r){return e=>{const t=_(r)(e);return r.colors[r.primaryColor][t]}}function kr(r){return{"@media (hover: hover)":{"&:hover":r},"@media (hover: none)":{"&:active":r}}}function $r(r){return()=>({userSelect:"none",color:r.colorScheme==="dark"?r.colors.dark[3]:r.colors.gray[5]})}function wr(r){return()=>r.colorScheme==="dark"?r.colors.dark[2]:r.colors.gray[6]}const f={fontStyles:nr,themeColor:E,focusStyles:sr,linearGradient:lr,radialGradient:cr,smallerThan:dr,largerThan:fr,rgba:v,cover:gr,darken:mr,lighten:yr,radius:vr,variant:hr,primaryShade:_,hover:kr,gradient:U,primaryColor:_r,placeholderStyles:$r,dimmed:wr};var Pr=Object.defineProperty,xr=Object.defineProperties,Or=Object.getOwnPropertyDescriptors,T=Object.getOwnPropertySymbols,Cr=Object.prototype.hasOwnProperty,Er=Object.prototype.propertyIsEnumerable,F=(r,e,t)=>e in r?Pr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,jr=(r,e)=>{for(var t in e||(e={}))Cr.call(e,t)&&F(r,t,e[t]);if(T)for(var t of T(e))Er.call(e,t)&&F(r,t,e[t]);return r},zr=(r,e)=>xr(r,Or(e));function B(r){return zr(jr({},r),{fn:{fontStyles:f.fontStyles(r),themeColor:f.themeColor(r),focusStyles:f.focusStyles(r),largerThan:f.largerThan(r),smallerThan:f.smallerThan(r),radialGradient:f.radialGradient,linearGradient:f.linearGradient,gradient:f.gradient(r),rgba:f.rgba,cover:f.cover,lighten:f.lighten,darken:f.darken,primaryShade:f.primaryShade(r),radius:f.radius(r),variant:f.variant(r),hover:f.hover,primaryColor:f.primaryColor(r),placeholderStyles:f.placeholderStyles(r),dimmed:f.dimmed(r)}})}const Ar={dir:"ltr",primaryShade:{light:6,dark:8},focusRing:"auto",loader:"oval",colorScheme:"light",white:"#fff",black:"#000",defaultRadius:"sm",transitionTimingFunction:"ease",colors:tr,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:r=>({outlineOffset:"0.125rem",outline:`0.125rem solid ${r.colors[r.primaryColor][r.colorScheme==="dark"?7:5]}`}),resetStyles:()=>({outline:"none"}),inputStyles:r=>({outline:"none",borderColor:r.colors[r.primaryColor][typeof r.primaryShade=="object"?r.primaryShade[r.colorScheme]:r.primaryShade]})}},z=B(Ar);var Mr=Object.defineProperty,Ir=Object.defineProperties,Rr=Object.getOwnPropertyDescriptors,H=Object.getOwnPropertySymbols,Tr=Object.prototype.hasOwnProperty,Fr=Object.prototype.propertyIsEnumerable,W=(r,e,t)=>e in r?Mr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Hr=(r,e)=>{for(var t in e||(e={}))Tr.call(e,t)&&W(r,t,e[t]);if(H)for(var t of H(e))Fr.call(e,t)&&W(r,t,e[t]);return r},Wr=(r,e)=>Ir(r,Rr(e));function Nr({theme:r}){return g.createElement(P,{styles:{"*, *::before, *::after":{boxSizing:"border-box"},html:{colorScheme:r.colorScheme==="dark"?"dark":"light"},body:Wr(Hr({},r.fn.fontStyles()),{backgroundColor:r.colorScheme==="dark"?r.colors.dark[7]:r.white,color:r.colorScheme==="dark"?r.colors.dark[0]:r.black,lineHeight:r.lineHeight,fontSize:r.fontSizes.md,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"})}})}function S(r,e,t,n=m){Object.keys(e).forEach(a=>{r[`--mantine-${t}-${a}`]=n(e[a])})}function Gr({theme:r}){const e={"--mantine-color-white":r.white,"--mantine-color-black":r.black,"--mantine-transition-timing-function":r.transitionTimingFunction,"--mantine-line-height":`${r.lineHeight}`,"--mantine-font-family":r.fontFamily,"--mantine-font-family-monospace":r.fontFamilyMonospace,"--mantine-font-family-headings":r.headings.fontFamily,"--mantine-heading-font-weight":`${r.headings.fontWeight}`};S(e,r.shadows,"shadow"),S(e,r.fontSizes,"font-size"),S(e,r.radius,"radius"),S(e,r.spacing,"spacing"),S(e,r.breakpoints,"breakpoints",O),Object.keys(r.colors).forEach(n=>{r.colors[n].forEach((a,o)=>{e[`--mantine-color-${n}-${o}`]=a})});const t=r.headings.sizes;return Object.keys(t).forEach(n=>{e[`--mantine-${n}-font-size`]=t[n].fontSize,e[`--mantine-${n}-line-height`]=`${t[n].lineHeight}`}),g.createElement(P,{styles:{":root":e}})}var Dr=Object.defineProperty,Lr=Object.defineProperties,Vr=Object.getOwnPropertyDescriptors,N=Object.getOwnPropertySymbols,Ur=Object.prototype.hasOwnProperty,Xr=Object.prototype.propertyIsEnumerable,G=(r,e,t)=>e in r?Dr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,p=(r,e)=>{for(var t in e||(e={}))Ur.call(e,t)&&G(r,t,e[t]);if(N)for(var t of N(e))Xr.call(e,t)&&G(r,t,e[t]);return r},C=(r,e)=>Lr(r,Vr(e));function qr(r,e){var t;if(!e)return r;const n=Object.keys(r).reduce((a,o)=>{if(o==="headings"&&e.headings){const i=e.headings.sizes?Object.keys(r.headings.sizes).reduce((l,c)=>(l[c]=p(p({},r.headings.sizes[c]),e.headings.sizes[c]),l),{}):r.headings.sizes;return C(p({},a),{headings:C(p(p({},r.headings),e.headings),{sizes:i})})}if(o==="breakpoints"&&e.breakpoints){const i=p(p({},r.breakpoints),e.breakpoints);return C(p({},a),{breakpoints:Object.fromEntries(Object.entries(i).sort((l,c)=>$(l[1])-$(c[1])))})}return a[o]=typeof e[o]=="object"?p(p({},r[o]),e[o]):typeof e[o]=="number"||typeof e[o]=="boolean"||typeof e[o]=="function"?e[o]:e[o]||r[o],a},{});if(e!=null&&e.fontFamily&&!((t=e==null?void 0:e.headings)!=null&&t.fontFamily)&&(n.headings.fontFamily=e.fontFamily),!(n.primaryColor in n.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 n}function Br(r,e){return B(qr(r,e))}function Yr(r){return Object.keys(r).reduce((e,t)=>(r[t]!==void 0&&(e[t]=r[t]),e),{})}const Jr={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:`${m(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 Kr(){return g.createElement(P,{styles:Jr})}var Qr=Object.defineProperty,D=Object.getOwnPropertySymbols,Zr=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable,L=(r,e,t)=>e in r?Qr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,h=(r,e)=>{for(var t in e||(e={}))Zr.call(e,t)&&L(r,t,e[t]);if(D)for(var t of D(e))re.call(e,t)&&L(r,t,e[t]);return r};const w=x.createContext({theme:z});function Y(){var r;return((r=x.useContext(w))==null?void 0:r.theme)||z}function Se(r){const e=Y(),t=n=>{var a,o,i,l;return{styles:((a=e.components[n])==null?void 0:a.styles)||{},classNames:((o=e.components[n])==null?void 0:o.classNames)||{},variants:(i=e.components[n])==null?void 0:i.variants,sizes:(l=e.components[n])==null?void 0:l.sizes}};return Array.isArray(r)?r.map(t):[t(r)]}function he(){var r;return(r=x.useContext(w))==null?void 0:r.emotionCache}function _e(r,e,t){var n;const a=Y(),o=(n=a.components[r])==null?void 0:n.defaultProps,i=typeof o=="function"?o(a):o;return h(h(h({},e),i),Yr(t))}function ee({theme:r,emotionCache:e,withNormalizeCSS:t=!1,withGlobalStyles:n=!1,withCSSVariables:a=!1,inherit:o=!1,children:i}){const l=x.useContext(w),c=Br(z,o?h(h({},l.theme),r):r);return g.createElement(K,{theme:c},g.createElement(w.Provider,{value:{theme:c,emotionCache:e}},t&&g.createElement(Kr,null),n&&g.createElement(Nr,{theme:c}),a&&g.createElement(Gr,{theme:c}),typeof c.globalStyles=="function"&&g.createElement(P,{styles:c.globalStyles(c)}),i))}ee.displayName="@mantine/core/MantineProvider";export{ee as M,Y as a,Se as b,q as c,_e as d,b as e,Yr as f,$ as g,ae as h,ie as i,se as j,le as k,ce as l,ve as m,fe as n,oe as o,de as p,ue as q,m as r,pe as s,be as t,he as u,ge as v,me as w,ye as x}; diff --git a/invokeai/frontend/web/dist/assets/MantineProvider-c592f969.js b/invokeai/frontend/web/dist/assets/MantineProvider-c592f969.js new file mode 100644 index 0000000000..8993cccebf --- /dev/null +++ b/invokeai/frontend/web/dist/assets/MantineProvider-c592f969.js @@ -0,0 +1 @@ +import{z as p,A as d,a4 as Z,aH as xe,g5 as We,Z as De,U as j,a7 as q,T as z,V as R,a1 as _e,a0 as Be,$ as Ce,_ as Ge,Y as Ue,g6 as Ve,g7 as Ze,fY as qe,ab as A,fW as B,g2 as Xe}from"./index-bad7ff83.js";function Ye(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??Ye(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,Ke]=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"}),Y="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=Ke();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=Y,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=Y),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=Y;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"),Yr=m("select").parts("field","icon"),Jr=m("slider").parts("container","track","thumb","filledTrack","mark"),Kr=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=_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,J]=M({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[bt,K]=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=K(),{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=K(),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=K(),{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}=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{definePartsStyle:Nt,defineMultiStyleConfig:$t}=qe(at.keys),Tt=Nt(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}}})),dn=$t({variants:{invokeAI:Tt},defaultProps:{variant:"invokeAI"}}),fn={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"}}}},It={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 Ot(e){return()=>({fontFamily:e.fontFamily||"sans-serif"})}var zt=Object.defineProperty,ue=Object.getOwnPropertySymbols,Rt=Object.prototype.hasOwnProperty,Mt=Object.prototype.propertyIsEnumerable,de=(e,t,r)=>t in e?zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fe=(e,t)=>{for(var r in t||(t={}))Rt.call(t,r)&&de(e,r,t[r]);if(ue)for(var r of ue(t))Mt.call(t,r)&&de(e,r,t[r]);return e};function Lt(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 Wt(e){return t=>`@media (min-width: ${U(W(Le({size:t,sizes:e.breakpoints})))})`}function Dt(e){return t=>`@media (max-width: ${U(W(Le({size:t,sizes:e.breakpoints}))-1)})`}function Bt(e){return/^#?([0-9A-F]{3}){1,2}$/i.test(e)}function Gt(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 Ut(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 Bt(e)?Gt(e):e.startsWith("rgb")?Ut(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 Vt(e=0){return{position:"absolute",top:E(e),right:E(e),left:E(e),bottom:E(e)}}function Zt(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 qt(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 Xt(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 Yt(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 Jt(e){const t=Q(e),r=F(e),o=Re(e);return({variant:a,color:n,gradient:s,primaryFallback:i})=>{const l=Yt(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 Kt(e){return t=>{const r=F(e)(t);return e.colors[e.primaryColor][r]}}function Qt(e){return{"@media (hover: hover)":{"&:hover":e},"@media (hover: none)":{"&:active":e}}}function er(e){return()=>({userSelect:"none",color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]})}function tr(e){return()=>e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6]}const b={fontStyles:Ot,themeColor:Q,focusStyles:Lt,linearGradient:Ft,radialGradient:Ht,smallerThan:Dt,largerThan:Wt,rgba:T,cover:Vt,darken:Zt,lighten:qt,radius:Xt,variant:Jt,primaryShade:F,hover:Qt,gradient:Re,primaryColor:Kt,placeholderStyles:er,dimmed:tr};var rr=Object.defineProperty,nr=Object.defineProperties,or=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,ar=Object.prototype.hasOwnProperty,sr=Object.prototype.propertyIsEnumerable,me=(e,t,r)=>t in e?rr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ir=(e,t)=>{for(var r in t||(t={}))ar.call(t,r)&&me(e,r,t[r]);if(pe)for(var r of pe(t))sr.call(t,r)&&me(e,r,t[r]);return e},lr=(e,t)=>nr(e,or(t));function Fe(e){return lr(ir({},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 cr={dir:"ltr",primaryShade:{light:6,dark:8},focusRing:"auto",loader:"oval",colorScheme:"light",white:"#fff",black:"#000",defaultRadius:"sm",transitionTimingFunction:"ease",colors:It,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(cr);var ur=Object.defineProperty,dr=Object.defineProperties,fr=Object.getOwnPropertyDescriptors,ge=Object.getOwnPropertySymbols,pr=Object.prototype.hasOwnProperty,mr=Object.prototype.propertyIsEnumerable,be=(e,t,r)=>t in e?ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,gr=(e,t)=>{for(var r in t||(t={}))pr.call(t,r)&&be(e,r,t[r]);if(ge)for(var r of ge(t))mr.call(t,r)&&be(e,r,t[r]);return e},br=(e,t)=>dr(e,fr(t));function yr({theme:e}){return A.createElement(B,{styles:{"*, *::before, *::after":{boxSizing:"border-box"},html:{colorScheme:e.colorScheme==="dark"?"dark":"light"},body:br(gr({},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 vr({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 hr=Object.defineProperty,Sr=Object.defineProperties,xr=Object.getOwnPropertyDescriptors,ye=Object.getOwnPropertySymbols,_r=Object.prototype.hasOwnProperty,Cr=Object.prototype.propertyIsEnumerable,ve=(e,t,r)=>t in e?hr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,_=(e,t)=>{for(var r in t||(t={}))_r.call(t,r)&&ve(e,r,t[r]);if(ye)for(var r of ye(t))Cr.call(t,r)&&ve(e,r,t[r]);return e},V=(e,t)=>Sr(e,xr(t));function kr(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 wr(e,t){return Fe(kr(e,t))}function Pr(e){return Object.keys(e).reduce((t,r)=>(e[r]!==void 0&&(t[r]=e[r]),t),{})}const Ar={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 jr(){return A.createElement(B,{styles:Ar})}var Er=Object.defineProperty,he=Object.getOwnPropertySymbols,Nr=Object.prototype.hasOwnProperty,$r=Object.prototype.propertyIsEnumerable,Se=(e,t,r)=>t in e?Er(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,O=(e,t)=>{for(var r in t||(t={}))Nr.call(t,r)&&Se(e,r,t[r]);if(he)for(var r of he(t))$r.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 pn(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 mn(){var e;return(e=p.useContext(D))==null?void 0:e.emotionCache}function gn(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),Pr(r))}function Tr({theme:e,emotionCache:t,withNormalizeCSS:r=!1,withGlobalStyles:o=!1,withCSSVariables:a=!1,inherit:n=!1,children:s}){const i=p.useContext(D),l=wr(te,n?O(O({},i.theme),e):e);return A.createElement(Xe,{theme:l},A.createElement(D.Provider,{value:{theme:l,emotionCache:t}},r&&A.createElement(jr,null),o&&A.createElement(yr,{theme:l}),a&&A.createElement(vr,{theme:l}),typeof l.globalStyles=="function"&&A.createElement(B,{styles:l.globalStyles(l)}),s))}Tr.displayName="@mantine/core/MantineProvider";export{on as A,Kr 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,dn as W,Tr as X,M as a,ct as b,an as c,ne as d,un as e,mn as f,He as g,pn as h,Pr as i,W as j,Le as k,gn as l,fn 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,Yr as y,Jr as z}; diff --git a/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-94e0a1e5.js b/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-94e0a1e5.js new file mode 100644 index 0000000000..c11ffa2797 --- /dev/null +++ b/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-94e0a1e5.js @@ -0,0 +1,310 @@ +import{A as m,fW as Ze,z as y,a4 as Xa,fX as Ya,af as va,aj as d,fY as b,fZ as t,f_ as Ka,f$ as h,g0 as ua,g1 as Za,g2 as Ja,aI as Qa,g3 as et,ad as rt,g4 as at}from"./index-bad7ff83.js";import{s as fa,n as o,t as tt,o as ha,p as ot,q as ma,v as ga,w as ya,x as it,y as Sa,z as pa,A as xr,B as nt,D as lt,E as st,F as xa,G as $a,H as ka,J as dt,K as _a,L as ct,M as bt,N as vt,O as ut,Q as wa,R as ft,S as ht,T as mt,U as gt,V as yt,W as St,e as pt,X as xt}from"./MantineProvider-c592f969.js";var za=String.raw,Ca=za` + :root, + :host { + --chakra-vh: 100vh; + } + + @supports (height: -webkit-fill-available) { + :root, + :host { + --chakra-vh: -webkit-fill-available; + } + } + + @supports (height: -moz-fill-available) { + :root, + :host { + --chakra-vh: -moz-fill-available; + } + } + + @supports (height: 100dvh) { + :root, + :host { + --chakra-vh: 100dvh; + } + } +`,$t=()=>m.jsx(Ze,{styles:Ca}),kt=({scope:e=""})=>m.jsx(Ze,{styles:za` + html { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + font-family: system-ui, sans-serif; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + -moz-osx-font-smoothing: grayscale; + touch-action: manipulation; + } + + body { + position: relative; + min-height: 100%; + margin: 0; + font-feature-settings: "kern"; + } + + ${e} :where(*, *::before, *::after) { + border-width: 0; + border-style: solid; + box-sizing: border-box; + word-wrap: break-word; + } + + main { + display: block; + } + + ${e} hr { + border-top-width: 1px; + box-sizing: content-box; + height: 0; + overflow: visible; + } + + ${e} :where(pre, code, kbd,samp) { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; + font-size: 1em; + } + + ${e} a { + background-color: transparent; + color: inherit; + text-decoration: inherit; + } + + ${e} abbr[title] { + border-bottom: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + + ${e} :where(b, strong) { + font-weight: bold; + } + + ${e} small { + font-size: 80%; + } + + ${e} :where(sub,sup) { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + + ${e} sub { + bottom: -0.25em; + } + + ${e} sup { + top: -0.5em; + } + + ${e} img { + border-style: none; + } + + ${e} :where(button, input, optgroup, select, textarea) { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; + } + + ${e} :where(button, input) { + overflow: visible; + } + + ${e} :where(button, select) { + text-transform: none; + } + + ${e} :where( + button::-moz-focus-inner, + [type="button"]::-moz-focus-inner, + [type="reset"]::-moz-focus-inner, + [type="submit"]::-moz-focus-inner + ) { + border-style: none; + padding: 0; + } + + ${e} fieldset { + padding: 0.35em 0.75em 0.625em; + } + + ${e} legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; + } + + ${e} progress { + vertical-align: baseline; + } + + ${e} textarea { + overflow: auto; + } + + ${e} :where([type="checkbox"], [type="radio"]) { + box-sizing: border-box; + padding: 0; + } + + ${e} input[type="number"]::-webkit-inner-spin-button, + ${e} input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none !important; + } + + ${e} input[type="number"] { + -moz-appearance: textfield; + } + + ${e} input[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; + } + + ${e} input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none !important; + } + + ${e} ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; + } + + ${e} details { + display: block; + } + + ${e} summary { + display: list-item; + } + + template { + display: none; + } + + [hidden] { + display: none !important; + } + + ${e} :where( + blockquote, + dl, + dd, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + figure, + p, + pre + ) { + margin: 0; + } + + ${e} button { + background: transparent; + padding: 0; + } + + ${e} fieldset { + margin: 0; + padding: 0; + } + + ${e} :where(ol, ul) { + margin: 0; + padding: 0; + } + + ${e} textarea { + resize: vertical; + } + + ${e} :where(button, [role="button"]) { + cursor: pointer; + } + + ${e} button::-moz-focus-inner { + border: 0 !important; + } + + ${e} table { + border-collapse: collapse; + } + + ${e} :where(h1, h2, h3, h4, h5, h6) { + font-size: inherit; + font-weight: inherit; + } + + ${e} :where(button, input, optgroup, select, textarea) { + padding: 0; + line-height: inherit; + color: inherit; + } + + ${e} :where(img, svg, video, canvas, audio, iframe, embed, object) { + display: block; + } + + ${e} :where(img, video) { + max-width: 100%; + height: auto; + } + + [data-js-focus-visible] + :focus:not([data-focus-visible-added]):not( + [data-focus-visible-disabled] + ) { + outline: none; + box-shadow: none; + } + + ${e} select::-ms-expand { + display: none; + } + + ${Ca} + `}),Ce={light:"chakra-ui-light",dark:"chakra-ui-dark"};function _t(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 wt="chakra-ui-color-mode";function Aa(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 zt=Aa(wt),Pr=()=>{};function Ir(e,r){return e.type==="cookie"&&e.ssr?e.get(r):r}function Pa(e){const{value:r,children:a,options:{useSystemColorMode:i,initialColorMode:n,disableTransitionOnChange:l}={},colorModeManager:s=zt}=e,c=n==="dark"?"dark":"light",[v,x]=y.useState(()=>Ir(s,c)),[I,O]=y.useState(()=>Ir(s)),{getSystemTheme:oe,setClassName:_e,setDataset:zr,addListener:Cr}=y.useMemo(()=>_t({preventTransition:l}),[l]),we=n==="system"&&!v?I:v,C=y.useCallback(ie=>{const ze=ie==="system"?oe():ie;x(ze),_e(ze==="dark"),zr(ze),s.set(ze)},[s,oe,_e,zr]);Xa(()=>{n==="system"&&O(oe())},[]),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 Ua=y.useMemo(()=>({colorMode:r??we,toggleColorMode:r?Pr:Ar,setColorMode:r?Pr:C,forced:r!==void 0}),[we,Ar,C,r]);return m.jsx(Ya.Provider,{value:Ua,children:a})}Pa.displayName="ColorModeProvider";var Ct=["borders","breakpoints","colors","components","config","direction","fonts","fontSizes","fontWeights","letterSpacings","lineHeights","radii","shadows","sizes","space","styles","transition","zIndices"];function At(e){return va(e)?Ct.every(r=>Object.prototype.hasOwnProperty.call(e,r)):!1}var Pt={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"},It={"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)"},Ft={"ultra-fast":"50ms",faster:"100ms",fast:"150ms",normal:"200ms",slow:"300ms",slower:"400ms","ultra-slow":"500ms"},Tt={property:Pt,easing:It,duration:Ft},Mt=Tt,Bt={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},Et=Bt,Dt={none:0,"1px":"1px solid","2px":"2px solid","4px":"4px solid","8px":"8px solid"},Rt=Dt,jt={base:"0em",sm:"30em",md:"48em",lg:"62em",xl:"80em","2xl":"96em"},Ht=jt,Wt={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"}},Vt=Wt,Lt={none:"0",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},qt=Lt,Ot={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"},Nt=Ot,Gt={none:0,sm:"4px",base:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},Ut=Gt,Xt={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"}},Ia=Xt,Fa={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"},Yt={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"},Kt={sm:"640px",md:"768px",lg:"1024px",xl:"1280px"},Zt={...Fa,...Yt,container:Kt},Ta=Zt,Jt={breakpoints:Ht,zIndices:Et,radii:qt,blur:Ut,colors:Vt,...Ia,sizes:Ta,shadows:Nt,space:Fa,borders:Rt,transition:Mt},{defineMultiStyleConfig:Qt,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"),eo=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)`}}})),ro=Qt({baseStyle:eo,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 ao extends Error{constructor(r){super(`Failed to parse color: "${r}"`)}}var be=ao;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=bo.test(e)?io(e):e;const a=no.exec(r);if(a){const s=Array.from(a).slice(1);return[...s.slice(0,3).map(c=>parseInt(Se(c,2),16)),parseInt(Se(s[3]||"f",2),16)/255]}const i=lo.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=so.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=co.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[...vo(s,c,v),Number.isNaN(x)?1:x]}throw new be(e)}function to(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),oo="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 io(e){const r=e.toLowerCase().trim(),a=oo[to(r)];if(!a)throw new be(e);return`#${a}`}const Se=(e,r)=>Array.from(Array(r)).map(()=>e).join(""),no=new RegExp(`^#${Se("([a-f0-9])",3)}([a-f0-9])?$`,"i"),lo=new RegExp(`^#${Se("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),so=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Se(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),co=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,bo=/^[a-z]+$/i,Tr=e=>Math.round(e*255),vo=(e,r,a)=>{let i=a/100;if(r===0)return[i,i,i].map(Tr);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 I=i-l/2,O=c+I,oe=v+I,_e=x+I;return[O,oe,_e].map(Tr)};function uo(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 fo(e,r){const[a,i,n,l]=$r(e);return uo(a,i,n,l-r)}function ho(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 mo(e,r,a,i,n){for(r=r.split?r.split("."):r,i=0;iObject.keys(e).length===0,S=(e,r,a)=>{const i=mo(e,`colors.${r}`,r);try{return ho(i),i}catch{return a??"#000000"}},yo=e=>{const[r,a,i]=$r(e);return(r*299+a*587+i*114)/1e3},So=e=>r=>{const a=S(r,e);return yo(a)<128?"dark":"light"},po=e=>r=>So(e)(r)==="dark",ae=(e,r)=>a=>{const i=S(a,e);return fo(i,1-r)};function Mr(e="1rem",r="rgba(255, 255, 255, 0.15)"){return{backgroundImage:`linear-gradient( + 45deg, + ${r} 25%, + transparent 25%, + transparent 50%, + ${r} 50%, + ${r} 75%, + transparent 75%, + transparent + )`,backgroundSize:`${e} ${e}`}}var xo=()=>`#${Math.floor(Math.random()*16777215).toString(16).padEnd(6,"0")}`;function $o(e){const r=xo();return!e||go(e)?r:e.string&&e.colors?_o(e.string,e.colors):e.string&&!e.colors?ko(e.string):e.colors&&!e.string?wo(e.colors):r}function ko(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 _o(e,r){let a=0;if(e.length===0)return r[0];for(let i=0;ir.map(Ma).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=Ma(e);return r!=null&&!Number.isNaN(parseFloat(r))?String(r).startsWith("-")?String(r).slice(1):`-${r}`:gr(r,-1)},T=Object.assign(e=>({add:(...r)=>T(Br(e,...r)),subtract:(...r)=>T(Er(e,...r)),multiply:(...r)=>T(gr(e,...r)),divide:(...r)=>T(Dr(e,...r)),negate:()=>T(Rr(e)),toString:()=>e.toString()}),{add:Br,subtract:Er,multiply:gr,divide:Dr,negate:Rr});function zo(e){return!Number.isInteger(parseFloat(e.toString()))}function Co(e,r="-"){return e.replace(/\s+/g,r)}function Ba(e){const r=Co(e.toString());return r.includes("\\.")?e:zo(e)?r.replace(".","\\."):e}function Ao(e,r=""){return[r,Ba(e)].filter(Boolean).join("-")}function Po(e,r){return`var(${Ba(e)}${r?`, ${r}`:""})`}function Io(e,r=""){return`--${Ao(e,r)}`}function f(e,r){const a=Io(e,r==null?void 0:r.prefix);return{variable:a,reference:Po(a,Fo(r==null?void 0:r.fallback))}}function Fo(e){return typeof e=="string"?e:e==null?void 0:e.reference}var{defineMultiStyleConfig:To,definePartsStyle:We}=b(fa.keys),fe=f("switch-track-width"),V=f("switch-track-height"),rr=f("switch-track-diff"),Mo=T.subtract(fe,V),yr=f("switch-thumb-x"),le=f("switch-bg"),Bo=t(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}}),Eo=t({bg:"white",transitionProperty:"transform",transitionDuration:"normal",borderRadius:"inherit",width:[V.reference],height:[V.reference],_checked:{transform:`translateX(${yr.reference})`}}),Do=We(e=>({container:{[rr.variable]:Mo,[yr.variable]:rr.reference,_rtl:{[yr.variable]:T(rr).negate().toString()}},track:Bo(e),thumb:Eo})),Ro={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"}})},jo=To({baseStyle:Do,sizes:Ro,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Ho,definePartsStyle:J}=b(tt.keys),Wo=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"}}),Xe=t({"&[data-is-numeric=true]":{textAlign:"end"}}),Vo=J(e=>{const{colorScheme:r}=e;return{th:{color:o("gray.600","gray.400")(e),borderBottom:"1px",borderColor:o(`${r}.100`,`${r}.700`)(e),...Xe},td:{borderBottom:"1px",borderColor:o(`${r}.100`,`${r}.700`)(e),...Xe},caption:{color:o("gray.600","gray.100")(e)},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),Lo=J(e=>{const{colorScheme:r}=e;return{th:{color:o("gray.600","gray.400")(e),borderBottom:"1px",borderColor:o(`${r}.100`,`${r}.700`)(e),...Xe},td:{borderBottom:"1px",borderColor:o(`${r}.100`,`${r}.700`)(e),...Xe},caption:{color:o("gray.600","gray.100")(e)},tbody:{tr:{"&:nth-of-type(odd)":{"th, td":{borderBottomWidth:"1px",borderColor:o(`${r}.100`,`${r}.700`)(e)},td:{background:o(`${r}.100`,`${r}.700`)(e)}}}},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),qo={simple:Vo,striped:Lo,unstyled:t({})},Oo={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"}})},No=Ho({baseStyle:Wo,variants:qo,sizes:Oo,defaultProps:{variant:"simple",size:"md",colorScheme:"gray"}}),$=d("tabs-color"),z=d("tabs-bg"),Ae=d("tabs-border-color"),{defineMultiStyleConfig:Go,definePartsStyle:P}=b(ha.keys),Uo=t(e=>{const{orientation:r}=e;return{display:r==="vertical"?"flex":"block"}}),Xo=t(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}}}),Yo=t(e=>{const{align:r="start",orientation:a}=e;return{justifyContent:{end:"flex-end",center:"center",start:"flex-start"}[r],flexDirection:a==="vertical"?"column":"row"}}),Ko=t({p:4}),Zo=P(e=>({root:Uo(e),tab:Xo(e),tablist:Yo(e),tabpanel:Ko})),Jo={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}})},Qo=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}}}),ei=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"}}}),ri=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"}}}),ai=P(e=>{const{colorScheme:r,theme:a}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",color:"gray.600",_selected:{color:S(a,`${r}.700`),bg:S(a,`${r}.100`)}}}}),ti=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}}}),oi=P({}),ii={line:Qo,enclosed:ei,"enclosed-colored":ri,"soft-rounded":ai,"solid-rounded":ti,unstyled:oi},ni=Go({baseStyle:Zo,sizes:Jo,variants:ii,defaultProps:{size:"md",variant:"line",colorScheme:"blue"}}),g=Ka("badge",["bg","color","shadow"]),li=t({px:1,textTransform:"uppercase",fontSize:"xs",borderRadius:"sm",fontWeight:"bold",bg:g.bg.reference,color:g.color.reference,boxShadow:g.shadow.reference}),si=t(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"}}}),di=t(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`}}}),ci=t(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}`}}),bi={solid:si,subtle:di,outline:ci},he=h({baseStyle:li,variants:bi,defaultProps:{variant:"subtle",colorScheme:"gray"}}),{defineMultiStyleConfig:vi,definePartsStyle:L}=b(ot.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"),Oe=d("tag-padding-inline"),ui=t({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:Oe.reference,_focusVisible:{[ar.variable]:"shadows.outline"}}),fi=t({lineHeight:1.2,overflow:"visible"}),hi=t({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}}),mi=L({container:ui,label:fi,closeButton:hi}),gi={sm:L({container:{[Ve.variable]:"sizes.5",[Le.variable]:"sizes.5",[qe.variable]:"fontSizes.xs",[Oe.variable]:"space.2"},closeButton:{marginEnd:"-2px",marginStart:"0.35rem"}}),md:L({container:{[Ve.variable]:"sizes.6",[Le.variable]:"sizes.6",[qe.variable]:"fontSizes.sm",[Oe.variable]:"space.2"}}),lg:L({container:{[Ve.variable]:"sizes.8",[Le.variable]:"sizes.8",[qe.variable]:"fontSizes.md",[Oe.variable]:"space.3"}})},yi={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)}})},Si=vi({variants:yi,baseStyle:mi,sizes:gi,defaultProps:{size:"md",variant:"subtle",colorScheme:"gray"}}),{definePartsStyle:M,defineMultiStyleConfig:pi}=b(ma.keys),X=d("input-height"),Y=d("input-font-size"),K=d("input-padding"),Z=d("input-border-radius"),xi=M({addon:{height:X.reference,fontSize:Y.reference,px:K.reference,borderRadius:Z.reference},field:{width:"100%",height:X.reference,fontSize:Y.reference,px:K.reference,borderRadius:Z.reference,minWidth:0,outline:0,position:"relative",appearance:"none",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed"}}}),D={lg:t({[Y.variable]:"fontSizes.lg",[K.variable]:"space.4",[Z.variable]:"radii.md",[X.variable]:"sizes.12"}),md:t({[Y.variable]:"fontSizes.md",[K.variable]:"space.4",[Z.variable]:"radii.md",[X.variable]:"sizes.10"}),sm:t({[Y.variable]:"fontSizes.sm",[K.variable]:"space.3",[Z.variable]:"radii.sm",[X.variable]:"sizes.8"}),xs:t({[Y.variable]:"fontSizes.xs",[K.variable]:"space.2",[Z.variable]:"radii.sm",[X.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||o("blue.500","blue.300")(e),errorBorderColor:a||o("red.500","red.300")(e)}}var ki=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{border:"1px solid",borderColor:"inherit",bg:"inherit",_hover:{borderColor:o("gray.300","whiteAlpha.400")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:S(r,i),boxShadow:`0 0 0 1px ${S(r,i)}`},_focusVisible:{zIndex:1,borderColor:S(r,a),boxShadow:`0 0 0 1px ${S(r,a)}`}},addon:{border:"1px solid",borderColor:o("inherit","whiteAlpha.50")(e),bg:o("gray.100","whiteAlpha.300")(e)}}}),_i=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{border:"2px solid",borderColor:"transparent",bg:o("gray.100","whiteAlpha.50")(e),_hover:{bg:o("gray.200","whiteAlpha.100")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:S(r,i)},_focusVisible:{bg:"transparent",borderColor:S(r,a)}},addon:{border:"2px solid",borderColor:"transparent",bg:o("gray.100","whiteAlpha.50")(e)}}}),wi=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:S(r,i),boxShadow:`0px 1px 0px 0px ${S(r,i)}`},_focusVisible:{borderColor:S(r,a),boxShadow:`0px 1px 0px 0px ${S(r,a)}`}},addon:{borderBottom:"2px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent"}}}),zi=M({field:{bg:"transparent",px:"0",height:"auto"},addon:{bg:"transparent",px:"0",height:"auto"}}),Ci={outline:ki,filled:_i,flushed:wi,unstyled:zi},u=pi({baseStyle:xi,sizes:$i,variants:Ci,defaultProps:{size:"md",variant:"outline"}}),Wr,Ai=t({...(Wr=u.baseStyle)==null?void 0:Wr.field,paddingY:"2",minHeight:"20",lineHeight:"short",verticalAlign:"top"}),Vr,Lr,Pi={outline:t(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.outline(e).field)!=null?a:{}}),flushed:t(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.flushed(e).field)!=null?a:{}}),filled:t(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,Or,Nr,Gr,Ur,Xr,Yr,Kr,Ii={xs:(Or=(qr=u.sizes)==null?void 0:qr.xs.field)!=null?Or:{},sm:(Gr=(Nr=u.sizes)==null?void 0:Nr.sm.field)!=null?Gr:{},md:(Xr=(Ur=u.sizes)==null?void 0:Ur.md.field)!=null?Xr:{},lg:(Kr=(Yr=u.sizes)==null?void 0:Yr.lg.field)!=null?Kr:{}},Fi=h({baseStyle:Ai,sizes:Ii,variants:Pi,defaultProps:{size:"md",variant:"outline"}}),Pe=f("tooltip-bg"),tr=f("tooltip-fg"),Ti=f("popper-arrow-bg"),Mi=t({bg:Pe.reference,color:tr.reference,[Pe.variable]:"colors.gray.700",[tr.variable]:"colors.whiteAlpha.900",_dark:{[Pe.variable]:"colors.gray.300",[tr.variable]:"colors.gray.900"},[Ti.variable]:Pe.reference,px:"2",py:"0.5",borderRadius:"sm",fontWeight:"medium",fontSize:"sm",boxShadow:"md",maxW:"xs",zIndex:"tooltip"}),Bi=h({baseStyle:Mi}),{defineMultiStyleConfig:Ei,definePartsStyle:ve}=b(ga.keys),Di=t(e=>{const{colorScheme:r,theme:a,isIndeterminate:i,hasStripe:n}=e,l=o(Mr(),Mr("1rem","rgba(0,0,0,0.1)"))(e),s=o(`${r}.500`,`${r}.200`)(e),c=`linear-gradient( + to right, + transparent 0%, + ${S(a,s)} 50%, + transparent 100% + )`;return{...!i&&n&&l,...i?{bgImage:c}:{bgColor:s}}}),Ri=t({lineHeight:"1",fontSize:"0.25em",fontWeight:"bold",color:"white"}),ji=t(e=>({bg:o("gray.100","whiteAlpha.300")(e)})),Hi=t(e=>({transitionProperty:"common",transitionDuration:"slow",...Di(e)})),Wi=ve(e=>({label:Ri,filledTrack:Hi(e),track:ji(e)})),Vi={xs:ve({track:{h:"1"}}),sm:ve({track:{h:"2"}}),md:ve({track:{h:"3"}}),lg:ve({track:{h:"4"}})},Li=Ei({sizes:Vi,baseStyle:Wi,defaultProps:{size:"md",colorScheme:"blue"}}),qi=e=>typeof e=="function";function p(e,...r){return qi(e)?e(...r):e}var{definePartsStyle:Ne,defineMultiStyleConfig:Oi}=b(ya.keys),me=d("checkbox-size"),Ni=t(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:o(`${r}.500`,`${r}.200`)(e),borderColor:o(`${r}.500`,`${r}.200`)(e),color:o("white","gray.900")(e),_hover:{bg:o(`${r}.600`,`${r}.300`)(e),borderColor:o(`${r}.600`,`${r}.300`)(e)},_disabled:{borderColor:o("gray.200","transparent")(e),bg:o("gray.200","whiteAlpha.300")(e),color:o("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:o(`${r}.500`,`${r}.200`)(e),borderColor:o(`${r}.500`,`${r}.200`)(e),color:o("white","gray.900")(e)},_disabled:{bg:o("gray.100","whiteAlpha.100")(e),borderColor:o("gray.100","transparent")(e)},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:o("red.500","red.300")(e)}}}),Gi=t({_disabled:{cursor:"not-allowed"}}),Ui=t({userSelect:"none",_disabled:{opacity:.4}}),Xi=t({transitionProperty:"transform",transitionDuration:"normal"}),Yi=Ne(e=>({icon:Xi,container:Gi,control:p(Ni,e),label:Ui})),Ki={sm:Ne({control:{[me.variable]:"sizes.3"},label:{fontSize:"sm"},icon:{fontSize:"3xs"}}),md:Ne({control:{[me.variable]:"sizes.4"},label:{fontSize:"md"},icon:{fontSize:"2xs"}}),lg:Ne({control:{[me.variable]:"sizes.5"},label:{fontSize:"lg"},icon:{fontSize:"2xs"}})},Ye=Oi({baseStyle:Yi,sizes:Ki,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Zi,definePartsStyle:Ge}=b(it.keys),Ji=t(e=>{var r;const a=(r=p(Ye.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"}}}}),Qi=Ge(e=>{var r,a,i,n;return{label:(a=(r=Ye).baseStyle)==null?void 0:a.call(r,e).label,container:(n=(i=Ye).baseStyle)==null?void 0:n.call(i,e).container,control:Ji(e)}}),en={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"}})},rn=Zi({baseStyle:Qi,sizes:en,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:an,definePartsStyle:tn}=b(Sa.keys),Ie=d("select-bg"),Zr,on=t({...(Zr=u.baseStyle)==null?void 0:Zr.field,appearance:"none",paddingBottom:"1px",lineHeight:"normal",bg:Ie.reference,[Ie.variable]:"colors.white",_dark:{[Ie.variable]:"colors.gray.700"},"> option, > optgroup":{bg:Ie.reference}}),nn=t({width:"6",height:"100%",insetEnd:"2",position:"relative",color:"currentColor",fontSize:"xl",_disabled:{opacity:.5}}),ln=tn({field:on,icon:nn}),Fe=t({paddingInlineEnd:"8"}),Jr,Qr,ea,ra,aa,ta,oa,ia,sn={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:{...(ta=u.sizes)==null?void 0:ta.sm.field,...Fe}},xs:{...(oa=u.sizes)==null?void 0:oa.xs,field:{...(ia=u.sizes)==null?void 0:ia.xs.field,...Fe},icon:{insetEnd:"1"}}},dn=an({baseStyle:ln,sizes:sn,variants:u.variants,defaultProps:u.defaultProps}),or=d("skeleton-start-color"),ir=d("skeleton-end-color"),cn=t({[or.variable]:"colors.gray.100",[ir.variable]:"colors.gray.400",_dark:{[or.variable]:"colors.gray.800",[ir.variable]:"colors.gray.600"},background:or.reference,borderColor:ir.reference,opacity:.7,borderRadius:"sm"}),bn=h({baseStyle:cn}),nr=d("skip-link-bg"),vn=t({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}}),un=h({baseStyle:vn}),{defineMultiStyleConfig:fn,definePartsStyle:Qe}=b(pa.keys),pe=d("slider-thumb-size"),xe=d("slider-track-size"),j=d("slider-bg"),hn=t(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%"}})}}),mn=t(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})),gn=t(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:pe.reference,h:pe.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"}}}),yn=t(e=>{const{colorScheme:r}=e;return{width:"inherit",height:"inherit",[j.variable]:`colors.${r}.500`,_dark:{[j.variable]:`colors.${r}.200`},bg:j.reference}}),Sn=Qe(e=>({container:hn(e),track:mn(e),thumb:gn(e),filledTrack:yn(e)})),pn=Qe({container:{[pe.variable]:"sizes.4",[xe.variable]:"sizes.1"}}),xn=Qe({container:{[pe.variable]:"sizes.3.5",[xe.variable]:"sizes.1"}}),$n=Qe({container:{[pe.variable]:"sizes.2.5",[xe.variable]:"sizes.0.5"}}),kn={lg:pn,md:xn,sm:$n},_n=fn({baseStyle:Sn,sizes:kn,defaultProps:{size:"md",colorScheme:"blue"}}),H=f("spinner-size"),wn=t({width:[H.reference],height:[H.reference]}),zn={xs:t({[H.variable]:"sizes.3"}),sm:t({[H.variable]:"sizes.4"}),md:t({[H.variable]:"sizes.6"}),lg:t({[H.variable]:"sizes.8"}),xl:t({[H.variable]:"sizes.12"})},Cn=h({baseStyle:wn,sizes:zn,defaultProps:{size:"md"}}),{defineMultiStyleConfig:An,definePartsStyle:Ea}=b(nt.keys),Pn=t({fontWeight:"medium"}),In=t({opacity:.8,marginBottom:"2"}),Fn=t({verticalAlign:"baseline",fontWeight:"semibold"}),Tn=t({marginEnd:1,w:"3.5",h:"3.5",verticalAlign:"middle"}),Mn=Ea({container:{},label:Pn,helpText:In,number:Fn,icon:Tn}),Bn={md:Ea({label:{fontSize:"sm"},helpText:{fontSize:"sm"},number:{fontSize:"2xl"}})},En=An({baseStyle:Mn,sizes:Bn,defaultProps:{size:"md"}}),lr=d("kbd-bg"),Dn=t({[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"}),Rn=h({baseStyle:Dn}),jn=t({transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}}),Hn=h({baseStyle:jn}),{defineMultiStyleConfig:Wn,definePartsStyle:Vn}=b(lt.keys),Ln=t({marginEnd:"2",display:"inline",verticalAlign:"text-bottom"}),qn=Vn({icon:Ln}),On=Wn({baseStyle:qn}),{defineMultiStyleConfig:Nn,definePartsStyle:Gn}=b(st.keys),A=d("menu-bg"),sr=d("menu-shadow"),Un=t({[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=t({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}),Yn=t({mx:4,my:2,fontWeight:"semibold",fontSize:"sm"}),Kn=t({display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0}),Zn=t({opacity:.6}),Jn=t({border:0,borderBottom:"1px solid",borderColor:"inherit",my:"2",opacity:.6}),Qn=t({transitionProperty:"common",transitionDuration:"normal"}),el=Gn({button:Qn,list:Un,item:Xn,groupTitle:Yn,icon:Kn,command:Zn,divider:Jn}),rl=Nn({baseStyle:el}),{defineMultiStyleConfig:al,definePartsStyle:Sr}=b(xa.keys),dr=d("modal-bg"),cr=d("modal-shadow"),tl=t({bg:"blackAlpha.600",zIndex:"modal"}),ol=t(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"}}),il=t(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}}),nl=t({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),ll=t({position:"absolute",top:"2",insetEnd:"3"}),sl=t(e=>{const{scrollBehavior:r}=e;return{px:"6",py:"2",flex:"1",overflow:r==="inside"?"auto":void 0}}),dl=t({px:"6",py:"4"}),cl=Sr(e=>({overlay:tl,dialogContainer:p(ol,e),dialog:p(il,e),header:nl,closeButton:ll,body:p(sl,e),footer:dl}));function w(e){return Sr(e==="full"?{dialog:{maxW:"100vw",minH:"$100vh",my:"0",borderRadius:"0"}}:{dialog:{maxW:e}})}var bl={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")},vl=al({baseStyle:cl,sizes:bl,defaultProps:{size:"md"}}),{defineMultiStyleConfig:ul,definePartsStyle:Da}=b($a.keys),_r=f("number-input-stepper-width"),Ra=f("number-input-input-padding"),fl=T(_r).add("0.5rem").toString(),br=f("number-input-bg"),vr=f("number-input-color"),ur=f("number-input-border-color"),hl=t({[_r.variable]:"sizes.6",[Ra.variable]:fl}),ml=t(e=>{var r,a;return(a=(r=p(u.baseStyle,e))==null?void 0:r.field)!=null?a:{}}),gl=t({width:_r.reference}),yl=t({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"}}),Sl=Da(e=>{var r;return{root:hl,field:(r=p(ml,e))!=null?r:{},stepperGroup:gl,stepper:yl}});function Te(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=Ia.fontSizes[s];return Da({field:{...n.field,paddingInlineEnd:Ra.reference,verticalAlign:"top"},stepper:{fontSize:T(c).multiply(.75).toString(),_first:{borderTopEndRadius:l[e]},_last:{borderBottomEndRadius:l[e],mt:"-1px",borderTopWidth:1}}})}var pl={xs:Te("xs"),sm:Te("sm"),md:Te("md"),lg:Te("lg")},xl=ul({baseStyle:Sl,sizes:pl,variants:u.variants,defaultProps:u.defaultProps}),na,$l=t({...(na=u.baseStyle)==null?void 0:na.field,textAlign:"center"}),kl={lg:t({fontSize:"lg",w:12,h:12,borderRadius:"md"}),md:t({fontSize:"md",w:10,h:10,borderRadius:"md"}),sm:t({fontSize:"sm",w:8,h:8,borderRadius:"sm"}),xs:t({fontSize:"xs",w:6,h:6,borderRadius:"sm"})},la,sa,_l={outline:t(e=>{var r,a,i;return(i=(a=p((r=u.variants)==null?void 0:r.outline,e))==null?void 0:a.field)!=null?i:{}}),flushed:t(e=>{var r,a,i;return(i=(a=p((r=u.variants)==null?void 0:r.flushed,e))==null?void 0:a.field)!=null?i:{}}),filled:t(e=>{var r,a,i;return(i=(a=p((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:{}},wl=h({baseStyle:$l,sizes:kl,variants:_l,defaultProps:u.defaultProps}),{defineMultiStyleConfig:zl,definePartsStyle:Cl}=b(ka.keys),Me=f("popper-bg"),Al=f("popper-arrow-bg"),da=f("popper-arrow-shadow-color"),Pl=t({zIndex:10}),Il=t({[Me.variable]:"colors.white",bg:Me.reference,[Al.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"}}),Fl=t({px:3,py:2,borderBottomWidth:"1px"}),Tl=t({px:3,py:2}),Ml=t({px:3,py:2,borderTopWidth:"1px"}),Bl=t({position:"absolute",borderRadius:"md",top:1,insetEnd:2,padding:2}),El=Cl({popper:Pl,content:Il,header:Fl,body:Tl,footer:Ml,closeButton:Bl}),Dl=zl({baseStyle:El}),{definePartsStyle:pr,defineMultiStyleConfig:Rl}=b(dt.keys),fr=d("drawer-bg"),hr=d("drawer-box-shadow");function N(e){return pr(e==="full"?{dialog:{maxW:"100vw",h:"100vh"}}:{dialog:{maxW:e}})}var jl=t({bg:"blackAlpha.600",zIndex:"overlay"}),Hl=t({display:"flex",zIndex:"modal",justifyContent:"center"}),Wl=t(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}}),Vl=t({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),Ll=t({position:"absolute",top:"2",insetEnd:"3"}),ql=t({px:"6",py:"2",flex:"1",overflow:"auto"}),Ol=t({px:"6",py:"4"}),Nl=pr(e=>({overlay:jl,dialogContainer:Hl,dialog:p(Wl,e),header:Vl,closeButton:Ll,body:ql,footer:Ol})),Gl={xs:N("xs"),sm:N("md"),md:N("lg"),lg:N("2xl"),xl:N("4xl"),full:N("full")},Ul=Rl({baseStyle:Nl,sizes:Gl,defaultProps:{size:"xs"}}),{definePartsStyle:Xl,defineMultiStyleConfig:Yl}=b(_a.keys),Kl=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),Zl=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),Jl=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),Ql=Xl({preview:Kl,input:Zl,textarea:Jl}),es=Yl({baseStyle:Ql}),{definePartsStyle:rs,defineMultiStyleConfig:as}=b(ct.keys),Q=d("form-control-color"),ts=t({marginStart:"1",[Q.variable]:"colors.red.500",_dark:{[Q.variable]:"colors.red.300"},color:Q.reference}),os=t({mt:"2",[Q.variable]:"colors.gray.600",_dark:{[Q.variable]:"colors.whiteAlpha.600"},color:Q.reference,lineHeight:"normal",fontSize:"sm"}),is=rs({container:{width:"100%",position:"relative"},requiredIndicator:ts,helperText:os}),ns=as({baseStyle:is}),{definePartsStyle:ls,defineMultiStyleConfig:ss}=b(bt.keys),ee=d("form-error-color"),ds=t({[ee.variable]:"colors.red.500",_dark:{[ee.variable]:"colors.red.300"},color:ee.reference,mt:"2",fontSize:"sm",lineHeight:"normal"}),cs=t({marginEnd:"0.5em",[ee.variable]:"colors.red.500",_dark:{[ee.variable]:"colors.red.300"},color:ee.reference}),bs=ls({text:ds,icon:cs}),vs=ss({baseStyle:bs}),us=t({fontSize:"md",marginEnd:"3",mb:"2",fontWeight:"medium",transitionProperty:"common",transitionDuration:"normal",opacity:1,_disabled:{opacity:.4}}),fs=h({baseStyle:us}),hs=t({fontFamily:"heading",fontWeight:"bold"}),ms={"4xl":t({fontSize:["6xl",null,"7xl"],lineHeight:1}),"3xl":t({fontSize:["5xl",null,"6xl"],lineHeight:1}),"2xl":t({fontSize:["4xl",null,"5xl"],lineHeight:[1.2,null,1]}),xl:t({fontSize:["3xl",null,"4xl"],lineHeight:[1.33,null,1.2]}),lg:t({fontSize:["2xl",null,"3xl"],lineHeight:[1.33,null,1.2]}),md:t({fontSize:"xl",lineHeight:1.2}),sm:t({fontSize:"md",lineHeight:1.2}),xs:t({fontSize:"sm",lineHeight:1.2})},gs=h({baseStyle:hs,sizes:ms,defaultProps:{size:"xl"}}),{defineMultiStyleConfig:ys,definePartsStyle:Ss}=b(vt.keys),mr=d("breadcrumb-link-decor"),ps=t({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"}}}),xs=Ss({link:ps}),$s=ys({baseStyle:xs}),ks=t({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"}}}),ja=t(e=>{const{colorScheme:r,theme:a}=e;if(r==="gray")return{color:o("gray.800","whiteAlpha.900")(e),_hover:{bg:o("gray.100","whiteAlpha.200")(e)},_active:{bg:o("gray.200","whiteAlpha.300")(e)}};const i=ae(`${r}.200`,.12)(a),n=ae(`${r}.200`,.24)(a);return{color:o(`${r}.600`,`${r}.200`)(e),bg:"transparent",_hover:{bg:o(`${r}.50`,i)(e)},_active:{bg:o(`${r}.100`,n)(e)}}}),_s=t(e=>{const{colorScheme:r}=e,a=o("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"},...p(ja,e)}}),ws={yellow:{bg:"yellow.400",color:"black",hoverBg:"yellow.500",activeBg:"yellow.600"},cyan:{bg:"cyan.400",color:"black",hoverBg:"cyan.500",activeBg:"cyan.600"}},zs=t(e=>{var r;const{colorScheme:a}=e;if(a==="gray"){const v=o("gray.100","whiteAlpha.200")(e);return{bg:v,color:o("gray.800","whiteAlpha.900")(e),_hover:{bg:o("gray.200","whiteAlpha.300")(e),_disabled:{bg:v}},_active:{bg:o("gray.300","whiteAlpha.400")(e)}}}const{bg:i=`${a}.500`,color:n="white",hoverBg:l=`${a}.600`,activeBg:s=`${a}.700`}=(r=ws[a])!=null?r:{},c=o(i,`${a}.200`)(e);return{bg:c,color:o(n,"gray.800")(e),_hover:{bg:o(l,`${a}.300`)(e),_disabled:{bg:c}},_active:{bg:o(s,`${a}.400`)(e)}}}),Cs=t(e=>{const{colorScheme:r}=e;return{padding:0,height:"auto",lineHeight:"normal",verticalAlign:"baseline",color:o(`${r}.500`,`${r}.200`)(e),_hover:{textDecoration:"underline",_disabled:{textDecoration:"none"}},_active:{color:o(`${r}.700`,`${r}.500`)(e)}}}),As=t({bg:"none",color:"inherit",display:"inline",lineHeight:"inherit",m:"0",p:"0"}),Ps={ghost:ja,outline:_s,solid:zs,link:Cs,unstyled:As},Is={lg:t({h:"12",minW:"12",fontSize:"lg",px:"6"}),md:t({h:"10",minW:"10",fontSize:"md",px:"4"}),sm:t({h:"8",minW:"8",fontSize:"sm",px:"3"}),xs:t({h:"6",minW:"6",fontSize:"xs",px:"2"})},Fs=h({baseStyle:ks,variants:Ps,sizes:Is,defaultProps:{variant:"solid",size:"md",colorScheme:"gray"}}),{definePartsStyle:q,defineMultiStyleConfig:Ts}=b(ut.keys),Ke=d("card-bg"),B=d("card-padding"),Ha=d("card-shadow"),Ue=d("card-radius"),Wa=d("card-border-width","0"),Va=d("card-border-color"),Ms=q({container:{[Ke.variable]:"colors.chakra-body-bg",backgroundColor:Ke.reference,boxShadow:Ha.reference,borderRadius:Ue.reference,color:"chakra-body-text",borderWidth:Wa.reference,borderColor:Va.reference},body:{padding:B.reference,flex:"1 1 0%"},header:{padding:B.reference},footer:{padding:B.reference}}),Bs={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"}})},Es={elevated:q({container:{[Ha.variable]:"shadows.base",_dark:{[Ke.variable]:"colors.gray.700"}}}),outline:q({container:{[Wa.variable]:"1px",[Va.variable]:"colors.chakra-border-color"}}),filled:q({container:{[Ke.variable]:"colors.chakra-subtle-bg"}}),unstyled:{body:{[B.variable]:0},header:{[B.variable]:0},footer:{[B.variable]:0}}},Ds=Ts({baseStyle:Ms,variants:Es,sizes:Bs,defaultProps:{variant:"elevated",size:"md"}}),ge=f("close-button-size"),se=f("close-button-bg"),Rs=t({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}),js={lg:t({[ge.variable]:"sizes.10",fontSize:"md"}),md:t({[ge.variable]:"sizes.8",fontSize:"xs"}),sm:t({[ge.variable]:"sizes.6",fontSize:"2xs"})},Hs=h({baseStyle:Rs,sizes:js,defaultProps:{size:"md"}}),{variants:Ws,defaultProps:Vs}=he,Ls=t({fontFamily:"mono",fontSize:"sm",px:"0.2em",borderRadius:"sm",bg:g.bg.reference,color:g.color.reference,boxShadow:g.shadow.reference}),qs=h({baseStyle:Ls,variants:Ws,defaultProps:Vs}),Os=t({w:"100%",mx:"auto",maxW:"prose",px:"4"}),Ns=h({baseStyle:Os}),Gs=t({opacity:.6,borderColor:"inherit"}),Us=t({borderStyle:"solid"}),Xs=t({borderStyle:"dashed"}),Ys={solid:Us,dashed:Xs},Ks=h({baseStyle:Gs,variants:Ys,defaultProps:{variant:"solid"}}),{definePartsStyle:Zs,defineMultiStyleConfig:Js}=b(wa.keys),Qs=t({borderTopWidth:"1px",borderColor:"inherit",_last:{borderBottomWidth:"1px"}}),e0=t({transitionProperty:"common",transitionDuration:"normal",fontSize:"md",_focusVisible:{boxShadow:"outline"},_hover:{bg:"blackAlpha.50"},_disabled:{opacity:.4,cursor:"not-allowed"},px:"4",py:"2"}),r0=t({pt:"2",px:"4",pb:"5"}),a0=t({fontSize:"1.25em"}),t0=Zs({container:Qs,button:e0,panel:r0,icon:a0}),o0=Js({baseStyle:t0}),{definePartsStyle:ke,defineMultiStyleConfig:i0}=b(ft.keys),k=d("alert-fg"),E=d("alert-bg"),n0=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 l0=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}}}}),s0=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}}}),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},pt:"2",borderTopWidth:"4px",borderTopColor:k.reference}}}),c0=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}}}),b0={subtle:l0,"left-accent":s0,"top-accent":d0,solid:c0},v0=i0({baseStyle:n0,variants:b0,defaultProps:{variant:"subtle",colorScheme:"blue"}}),{definePartsStyle:La,defineMultiStyleConfig:u0}=b(ht.keys),re=d("avatar-border-color"),ye=d("avatar-bg"),$e=d("avatar-font-size"),te=d("avatar-size"),f0=t({borderRadius:"full",border:"0.2em solid",borderColor:re.reference,[re.variable]:"white",_dark:{[re.variable]:"colors.gray.800"}}),h0=t({bg:ye.reference,fontSize:$e.reference,width:te.reference,height:te.reference,lineHeight:"1",[ye.variable]:"colors.gray.200",_dark:{[ye.variable]:"colors.whiteAlpha.400"}}),m0=t(e=>{const{name:r,theme:a}=e,i=r?$o({string:r}):"colors.gray.400",n=po(i)(a);let l="white";return n||(l="gray.800"),{bg:ye.reference,fontSize:$e.reference,color:l,borderColor:re.reference,verticalAlign:"top",width:te.reference,height:te.reference,"&:not([data-loaded])":{[ye.variable]:i},[re.variable]:"colors.white",_dark:{[re.variable]:"colors.gray.800"}}}),g0=t({fontSize:$e.reference,lineHeight:"1"}),y0=La(e=>({badge:p(f0,e),excessLabel:p(h0,e),container:p(m0,e),label:g0}));function R(e){const r=e!=="100%"?Ta[e]:void 0;return La({container:{[te.variable]:r??e,[$e.variable]:`calc(${r??e} / 2.5)`},excessLabel:{[te.variable]:r??e,[$e.variable]:`calc(${r??e} / 2.5)`}})}var S0={"2xs":R(4),xs:R(6),sm:R(8),md:R(12),lg:R(16),xl:R(24),"2xl":R(32),full:R("100%")},p0=u0({baseStyle:y0,sizes:S0,defaultProps:{size:"md"}}),x0={Accordion:o0,Alert:v0,Avatar:p0,Badge:he,Breadcrumb:$s,Button:Fs,Checkbox:Ye,CloseButton:Hs,Code:qs,Container:Ns,Divider:Ks,Drawer:Ul,Editable:es,Form:ns,FormError:vs,FormLabel:fs,Heading:gs,Input:u,Kbd:Rn,Link:Hn,List:On,Menu:rl,Modal:vl,NumberInput:xl,PinInput:wl,Popover:Dl,Progress:Li,Radio:rn,Select:dn,Skeleton:bn,SkipLink:un,Slider:_n,Spinner:Cn,Stat:En,Switch:jo,Table:No,Tabs:ni,Tag:Si,Textarea:Fi,Tooltip:Bi,Card:Ds,Stepper:ro},$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"}}},k0={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"}}},_0="ltr",w0={useSystemColorMode:!1,initialColorMode:"light",cssVarPrefix:"chakra"},qa={semanticTokens:$0,direction:_0,...Jt,components:x0,styles:k0,config:w0};function ue(e){return typeof e=="function"}function z0(...e){return r=>e.reduce((a,i)=>i(a),r)}var C0=e=>function(...a){let i=[...a],n=a[a.length-1];return At(n)&&i.length>1?i=i.slice(0,i.length-1):n=e,z0(...i.map(l=>s=>ue(l)?l(s):P0(s,l)))(n)},A0=C0(qa);function P0(...e){return ua({},...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 ua({},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 F0(e){const{cssVarsRoot:r,theme:a,children:i}=e,n=y.useMemo(()=>Za(a),[a]);return m.jsxs(Ja,{theme:n,children:[m.jsx(T0,{root:r}),i]})}function T0({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 M0(){const{colorMode:e}=Qa();return m.jsx(Ze,{styles:r=>{const a=et(r,"styles.global"),i=rt(a,{theme:r,colorMode:e});return i?at(i)(r):void 0}})}var Na=y.createContext({getDocument(){return document},getWindow(){return window}});Na.displayName="EnvironmentContext";function Ga(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(Na.Provider,{value:l,children:[r,s&&m.jsx("span",{id:"__chakra_env",hidden:!0,ref:n})]})}Ga.displayName="EnvironmentProvider";var B0=e=>{const{children:r,colorModeManager:a,portalZIndex:i,resetScope:n,resetCSS:l=!0,theme:s={},environment:c,cssVarsRoot:v,disableEnvironment:x,disableGlobalStyle:I}=e,O=m.jsx(Ga,{environment:c,disabled:x,children:r});return m.jsx(F0,{theme:s,cssVarsRoot:v,children:m.jsxs(Pa,{colorModeManager:a,options:s.config,children:[l?m.jsx(kt,{scope:n}):m.jsx($t,{}),!I&&m.jsx(M0,{}),i?m.jsx(mt,{zIndex:i,children:O}):O]})})},E0=e=>function({children:a,theme:i=e,toastOptions:n,...l}){return m.jsxs(B0,{theme:i,...l,children:[m.jsx(gt,{value:n==null?void 0:n.defaultOptions,children:a}),m.jsx(yt,{...n})]})},D0=E0(qa);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,I=a?50:n[i.length-1-v];return s[c]=`hsl(${e} ${r}% ${I}% / ${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},R0={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:j0,defineMultiStyleConfig:H0}=b(wa.keys),W0=t({border:"none"}),V0=t(e=>{const{colorScheme:r}=e;return{fontWeight:"600",fontSize:"sm",border:"none",borderRadius:"base",bg:o(`${r}.200`,`${r}.700`)(e),color:o(`${r}.900`,`${r}.100`)(e),_hover:{bg:o(`${r}.250`,`${r}.650`)(e)},_expanded:{bg:o(`${r}.250`,`${r}.650`)(e),borderBottomRadius:"none",_hover:{bg:o(`${r}.300`,`${r}.600`)(e)}}}}),L0=t(e=>{const{colorScheme:r}=e;return{bg:o(`${r}.100`,`${r}.800`)(e),borderRadius:"base",borderTopRadius:"none"}}),q0=t({}),O0=j0(e=>({container:W0,button:V0(e),panel:L0(e),icon:q0})),N0=H0({variants:{invokeAI:O0},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),G0=t(e=>{const{colorScheme:r}=e;if(r==="base"){const i={bg:o("base.150","base.700")(e),color:o("base.500","base.500")(e),svg:{fill:o("base.500","base.500")(e)},opacity:1};return{bg:o("base.250","base.600")(e),color:o("base.850","base.100")(e),borderRadius:"base",svg:{fill:o("base.850","base.100")(e)},_hover:{bg:o("base.300","base.500")(e),color:o("base.900","base.50")(e),svg:{fill:o("base.900","base.50")(e)},_disabled:i},_disabled:i}}const a={bg:o(`${r}.250`,`${r}.700`)(e),color:o(`${r}.50`,`${r}.500`)(e),svg:{fill:o(`${r}.50`,`${r}.500`)(e),filter:"unset"},opacity:1,filter:o(void 0,"saturate(65%)")(e)};return{bg:o(`${r}.400`,`${r}.600`)(e),color:o("base.50","base.100")(e),borderRadius:"base",svg:{fill:o("base.50","base.100")(e)},_disabled:a,_hover:{bg:o(`${r}.500`,`${r}.500`)(e),color:o("white","base.50")(e),svg:{fill:o("white","base.50")(e)},_disabled:a}}}),U0=t(e=>{const{colorScheme:r}=e,a=o("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:G0,invokeAIOutline:U0},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),{definePartsStyle:Y0,defineMultiStyleConfig:K0}=b(ya.keys),Z0=t(e=>{const{colorScheme:r}=e;return{bg:o("base.200","base.700")(e),borderColor:o("base.200","base.700")(e),color:o("base.900","base.100")(e),_checked:{bg:o(`${r}.300`,`${r}.600`)(e),borderColor:o(`${r}.300`,`${r}.600`)(e),color:o(`${r}.900`,`${r}.100`)(e),_hover:{bg:o(`${r}.400`,`${r}.500`)(e),borderColor:o(`${r}.400`,`${r}.500`)(e)},_disabled:{borderColor:"transparent",bg:"whiteAlpha.300",color:"whiteAlpha.500"}},_indeterminate:{bg:o(`${r}.300`,`${r}.600`)(e),borderColor:o(`${r}.300`,`${r}.600`)(e),color:o(`${r}.900`,`${r}.100`)(e)},_disabled:{bg:"whiteAlpha.100",borderColor:"transparent"},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:o("error.600","error.300")(e)}}}),J0=Y0(e=>({control:Z0(e)})),Q0=K0({variants:{invokeAI:J0},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{definePartsStyle:ed,defineMultiStyleConfig:rd}=b(_a.keys),ad=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),td=t(e=>({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6},"::selection":{color:o("accent.900","accent.50")(e),bg:o("accent.200","accent.400")(e)}})),od=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),id=ed(e=>({preview:ad,input:td(e),textarea:od})),nd=rd({variants:{invokeAI:id},defaultProps:{size:"sm",variant:"invokeAI"}}),ld=t(e=>({fontSize:"sm",marginEnd:0,mb:1,fontWeight:"400",transitionProperty:"common",transitionDuration:"normal",whiteSpace:"nowrap",_disabled:{opacity:.4},color:o("base.700","base.300")(e)})),sd=h({variants:{invokeAI:ld},defaultProps:{variant:"invokeAI"}}),er=e=>({outline:"none",borderWidth:2,borderStyle:"solid",borderColor:o("base.200","base.800")(e),bg:o("base.50","base.900")(e),borderRadius:"base",color:o("base.900","base.100")(e),boxShadow:"none",_hover:{borderColor:o("base.300","base.600")(e)},_focus:{borderColor:o("accent.200","accent.600")(e),boxShadow:"none",_hover:{borderColor:o("accent.300","accent.500")(e)}},_invalid:{borderColor:o("error.300","error.600")(e),boxShadow:"none",_hover:{borderColor:o("error.400","error.500")(e)}},_disabled:{borderColor:o("base.300","base.700")(e),bg:o("base.300","base.700")(e),color:o("base.600","base.400")(e),_hover:{borderColor:o("base.300","base.700")(e)}},_placeholder:{color:o("base.700","base.400")(e)},"::selection":{bg:o("accent.200","accent.400")(e)}}),{definePartsStyle:dd,defineMultiStyleConfig:cd}=b(ma.keys),bd=dd(e=>({field:er(e)})),vd=cd({variants:{invokeAI:bd},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:ud,definePartsStyle:fd}=b(xa.keys),hd=t(e=>({bg:o("blackAlpha.700","blackAlpha.700")(e)})),md=t({}),gd=t(()=>({layerStyle:"first",maxH:"80vh"})),yd=t(()=>({fontWeight:"600",fontSize:"lg",layerStyle:"first",borderTopRadius:"base",borderInlineEndRadius:"base"})),Sd=t({}),pd=t({overflowY:"scroll"}),xd=t({}),$d=fd(e=>({overlay:hd(e),dialogContainer:md,dialog:gd(),header:yd(),closeButton:Sd,body:pd,footer:xd})),kd=ud({variants:{invokeAI:$d},defaultProps:{variant:"invokeAI",size:"lg"}}),{defineMultiStyleConfig:_d,definePartsStyle:wd}=b($a.keys),zd=t(e=>({height:8})),Cd=t(e=>({border:"none",fontWeight:"600",height:"auto",py:1,ps:2,pe:6,...er(e)})),Ad=t(e=>({display:"flex"})),Pd=t(e=>({border:"none",px:2,py:0,mx:-2,my:0,svg:{color:o("base.700","base.300")(e),width:2.5,height:2.5,_hover:{color:o("base.900","base.100")(e)}}})),Id=wd(e=>({root:zd(e),field:Cd(e),stepperGroup:Ad(e),stepper:Pd(e)})),Fd=_d({variants:{invokeAI:Id},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:Td,definePartsStyle:Md}=b(ka.keys),Bd=f("popper-bg"),Ed=f("popper-arrow-bg"),Dd=f("popper-arrow-shadow-color"),Rd=t(e=>({[Ed.variable]:o("colors.base.100","colors.base.800")(e),[Bd.variable]:o("colors.base.100","colors.base.800")(e),[Dd.variable]:o("colors.base.400","colors.base.600")(e),minW:"unset",width:"unset",p:4,bg:o("base.100","base.800")(e),border:"none",shadow:"dark-lg"})),jd=Md(e=>({content:Rd(e)})),Hd=Td({variants:{invokeAI:jd},defaultProps:{variant:"invokeAI"}}),{defineMultiStyleConfig:Wd,definePartsStyle:Vd}=b(ga.keys),Ld=t(e=>({bg:"accentAlpha.500"})),qd=t(e=>{const{colorScheme:r}=e;return{bg:o(`${r}.200`,`${r}.700`)(e)}}),Od=Vd(e=>({filledTrack:Ld(e),track:qd(e)})),Nd=Wd({variants:{invokeAI:Od},defaultProps:{variant:"invokeAI"}}),Gd={"::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"},{definePartsStyle:Ud,defineMultiStyleConfig:Xd}=b(Sa.keys),Yd=t(e=>({color:o("base.200","base.300")(e)})),Kd=t(e=>({fontWeight:"600",...er(e)})),Zd=Ud(e=>({field:Kd(e),icon:Yd(e)})),Jd=Xd({variants:{invokeAI:Zd},defaultProps:{size:"sm",variant:"invokeAI"}}),ca=d("skeleton-start-color"),ba=d("skeleton-end-color"),Qd=t({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"}}),ec=h({variants:{invokeAI:Qd},defaultProps:{variant:"invokeAI"}}),{definePartsStyle:rc,defineMultiStyleConfig:ac}=b(pa.keys),tc=t(e=>({bg:o("base.400","base.600")(e),h:1.5})),oc=t(e=>{const{colorScheme:r}=e;return{bg:o(`${r}.400`,`${r}.600`)(e),h:1.5}}),ic=t(e=>({w:2,h:4,bg:o("base.50","base.100")(e)})),nc=t(e=>({fontSize:"2xs",fontWeight:"500",color:o("base.700","base.400")(e),mt:2,insetInlineStart:"unset"})),lc=rc(e=>({container:{_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"}},track:tc(e),filledTrack:oc(e),thumb:ic(e),mark:nc(e)})),sc=ac({variants:{invokeAI:lc},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:dc,definePartsStyle:cc}=b(fa.keys),bc=t(e=>{const{colorScheme:r}=e;return{bg:o("base.300","base.600")(e),_focusVisible:{boxShadow:"none"},_checked:{bg:o(`${r}.400`,`${r}.500`)(e)}}}),vc=t(e=>{const{colorScheme:r}=e;return{bg:o(`${r}.50`,`${r}.50`)(e)}}),uc=cc(e=>({container:{},track:bc(e),thumb:vc(e)})),fc=dc({variants:{invokeAI:uc},defaultProps:{size:"md",variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:hc,definePartsStyle:mc}=b(ha.keys),gc=t(e=>({display:"flex",columnGap:4})),yc=t(e=>({})),Sc=t(e=>{const{colorScheme:r}=e;return{display:"flex",flexDirection:"column",gap:1,color:o("base.700","base.400")(e),button:{fontSize:"sm",padding:2,borderRadius:"base",textShadow:o("0 0 0.3rem var(--invokeai-colors-accent-100)","0 0 0.3rem var(--invokeai-colors-accent-900)")(e),svg:{fill:o("base.700","base.300")(e)},_selected:{bg:o("accent.400","accent.600")(e),color:o("base.50","base.100")(e),svg:{fill:o("base.50","base.100")(e),filter:o(`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:o("accent.500","accent.500")(e),color:o("white","base.50")(e),svg:{fill:o("white","base.50")(e)}}},_hover:{bg:o("base.100","base.800")(e),color:o("base.900","base.50")(e),svg:{fill:o("base.800","base.100")(e)}}}}}),pc=t(e=>({padding:0,height:"100%"})),xc=mc(e=>({root:gc(e),tab:yc(e),tablist:Sc(e),tabpanel:pc(e)})),$c=hc({variants:{invokeAI:xc},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),kc=t(e=>({color:o("base.500","base.400")(e)})),_c=h({variants:{subtext:kc}}),wc=t(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%, + var(--invokeai-colors-base-200) 100%)`},_disabled:{"::-webkit-resizer":{backgroundImage:`linear-gradient(135deg, + var(--invokeai-colors-base-50) 0%, + var(--invokeai-colors-base-50) 70%, + var(--invokeai-colors-base-200) 70%, + var(--invokeai-colors-base-200) 100%)`}},_dark:{"::-webkit-resizer":{backgroundImage:`linear-gradient(135deg, + var(--invokeai-colors-base-900) 0%, + var(--invokeai-colors-base-900) 70%, + var(--invokeai-colors-base-800) 70%, + var(--invokeai-colors-base-800) 100%)`},_disabled:{"::-webkit-resizer":{backgroundImage:`linear-gradient(135deg, + var(--invokeai-colors-base-900) 0%, + var(--invokeai-colors-base-900) 70%, + var(--invokeai-colors-base-800) 70%, + var(--invokeai-colors-base-800) 100%)`}}}})),zc=h({variants:{invokeAI:wc},defaultProps:{size:"md",variant:"invokeAI"}}),Cc=f("popper-arrow-bg"),Ac=t(e=>({borderRadius:"base",shadow:"dark-lg",bg:o("base.700","base.200")(e),[Cc.variable]:o("colors.base.700","colors.base.200")(e),pb:1.5})),Pc=h({baseStyle:Ac}),Ic={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"}}},styles:{global:()=>({layerStyle:"body","*":{...Gd}})},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)"},nodeSelectedOutline:"0 0 0 2px var(--invokeai-colors-accent-450)"},colors:R0,components:{Button:X0,Input:vd,Editable:nd,Textarea:zc,Tabs:$c,Progress:Nd,Accordion:N0,FormLabel:sd,Switch:fc,NumberInput:Fd,Select:Jd,Skeleton:ec,Slider:sc,Popover:Hd,Modal:kd,Checkbox:Q0,Menu:St,Text:_c,Tooltip:Pc}};const Fc=()=>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)"}}}}}),[]),Tc=Aa("@@invokeai-color-mode");function Ec({children:e}){const{i18n:r}=pt(),a=r.dir(),i=y.useMemo(()=>A0({...Ic,direction:a}),[a]);y.useEffect(()=>{document.body.dir=a},[a]);const n=Fc();return m.jsx(xt,{theme:n,children:m.jsx(D0,{theme:i,colorModeManager:Tc,children:e})})}export{Ec as default}; diff --git a/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a6269375.js b/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a6269375.js deleted file mode 100644 index b1b3abea4e..0000000000 --- a/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a6269375.js +++ /dev/null @@ -1,302 +0,0 @@ -import{v as g,gm as Ke,s as x,L as Ba,gn as Ea,ae as ca,ah as c,go as b,gp as Da,gq as t,gr as Ra,gs as h,gt as ba,gu as ja,gv as Ha,b2 as Wa,gw as Va,Z as La,gx as qa,gy as Oa,gz as Na,gA as Ga,aY as Ua}from"./index-e2437518.js";import{e as n,o as Sr,h as Ya,i as Ka,j as Xa,k as Za,l as Ja,n as Qa,p as et,q as rt,s as at,t as tt,v as ot,w as nt,x as it,M as lt}from"./MantineProvider-b5842fc1.js";var va=String.raw,ua=va` - :root, - :host { - --chakra-vh: 100vh; - } - - @supports (height: -webkit-fill-available) { - :root, - :host { - --chakra-vh: -webkit-fill-available; - } - } - - @supports (height: -moz-fill-available) { - :root, - :host { - --chakra-vh: -moz-fill-available; - } - } - - @supports (height: 100dvh) { - :root, - :host { - --chakra-vh: 100dvh; - } - } -`,st=()=>g.jsx(Ke,{styles:ua}),dt=({scope:e=""})=>g.jsx(Ke,{styles:va` - html { - line-height: 1.5; - -webkit-text-size-adjust: 100%; - font-family: system-ui, sans-serif; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; - -moz-osx-font-smoothing: grayscale; - touch-action: manipulation; - } - - body { - position: relative; - min-height: 100%; - margin: 0; - font-feature-settings: "kern"; - } - - ${e} :where(*, *::before, *::after) { - border-width: 0; - border-style: solid; - box-sizing: border-box; - word-wrap: break-word; - } - - main { - display: block; - } - - ${e} hr { - border-top-width: 1px; - box-sizing: content-box; - height: 0; - overflow: visible; - } - - ${e} :where(pre, code, kbd,samp) { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; - font-size: 1em; - } - - ${e} a { - background-color: transparent; - color: inherit; - text-decoration: inherit; - } - - ${e} abbr[title] { - border-bottom: none; - text-decoration: underline; - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - } - - ${e} :where(b, strong) { - font-weight: bold; - } - - ${e} small { - font-size: 80%; - } - - ${e} :where(sub,sup) { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - } - - ${e} sub { - bottom: -0.25em; - } - - ${e} sup { - top: -0.5em; - } - - ${e} img { - border-style: none; - } - - ${e} :where(button, input, optgroup, select, textarea) { - font-family: inherit; - font-size: 100%; - line-height: 1.15; - margin: 0; - } - - ${e} :where(button, input) { - overflow: visible; - } - - ${e} :where(button, select) { - text-transform: none; - } - - ${e} :where( - button::-moz-focus-inner, - [type="button"]::-moz-focus-inner, - [type="reset"]::-moz-focus-inner, - [type="submit"]::-moz-focus-inner - ) { - border-style: none; - padding: 0; - } - - ${e} fieldset { - padding: 0.35em 0.75em 0.625em; - } - - ${e} legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; - } - - ${e} progress { - vertical-align: baseline; - } - - ${e} textarea { - overflow: auto; - } - - ${e} :where([type="checkbox"], [type="radio"]) { - box-sizing: border-box; - padding: 0; - } - - ${e} input[type="number"]::-webkit-inner-spin-button, - ${e} input[type="number"]::-webkit-outer-spin-button { - -webkit-appearance: none !important; - } - - ${e} input[type="number"] { - -moz-appearance: textfield; - } - - ${e} input[type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; - } - - ${e} input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none !important; - } - - ${e} ::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; - } - - ${e} details { - display: block; - } - - ${e} summary { - display: list-item; - } - - template { - display: none; - } - - [hidden] { - display: none !important; - } - - ${e} :where( - blockquote, - dl, - dd, - h1, - h2, - h3, - h4, - h5, - h6, - hr, - figure, - p, - pre - ) { - margin: 0; - } - - ${e} button { - background: transparent; - padding: 0; - } - - ${e} fieldset { - margin: 0; - padding: 0; - } - - ${e} :where(ol, ul) { - margin: 0; - padding: 0; - } - - ${e} textarea { - resize: vertical; - } - - ${e} :where(button, [role="button"]) { - cursor: pointer; - } - - ${e} button::-moz-focus-inner { - border: 0 !important; - } - - ${e} table { - border-collapse: collapse; - } - - ${e} :where(h1, h2, h3, h4, h5, h6) { - font-size: inherit; - font-weight: inherit; - } - - ${e} :where(button, input, optgroup, select, textarea) { - padding: 0; - line-height: inherit; - color: inherit; - } - - ${e} :where(img, svg, video, canvas, audio, iframe, embed, object) { - display: block; - } - - ${e} :where(img, video) { - max-width: 100%; - height: auto; - } - - [data-js-focus-visible] - :focus:not([data-focus-visible-added]):not( - [data-focus-visible-disabled] - ) { - outline: none; - box-shadow: none; - } - - ${e} select::-ms-expand { - display: none; - } - - ${ua} - `}),_e={light:"chakra-ui-light",dark:"chakra-ui-dark"};function ct(e={}){const{preventTransition:r=!0}=e,a={setDataset:o=>{const i=r?a.preventTransition():void 0;document.documentElement.dataset.theme=o,document.documentElement.style.colorScheme=o,i==null||i()},setClassName(o){document.body.classList.add(o?_e.dark:_e.light),document.body.classList.remove(o?_e.light:_e.dark)},query(){return window.matchMedia("(prefers-color-scheme: dark)")},getSystemTheme(o){var i;return((i=a.query().matches)!=null?i:o==="dark")?"dark":"light"},addListener(o){const i=a.query(),l=s=>{o(s.matches?"dark":"light")};return typeof i.addListener=="function"?i.addListener(l):i.addEventListener("change",l),()=>{typeof i.removeListener=="function"?i.removeListener(l):i.removeEventListener("change",l)}},preventTransition(){const o=document.createElement("style");return o.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(o),()=>{window.getComputedStyle(document.body),requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.head.removeChild(o)})})}}};return a}var bt="chakra-ui-color-mode";function fa(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 vt=fa(bt),Cr=()=>{};function Ar(e,r){return e.type==="cookie"&&e.ssr?e.get(r):r}function ma(e){const{value:r,children:a,options:{useSystemColorMode:o,initialColorMode:i,disableTransitionOnChange:l}={},colorModeManager:s=vt}=e,d=i==="dark"?"dark":"light",[v,$]=x.useState(()=>Ar(s,d)),[p,S]=x.useState(()=>Ar(s)),{getSystemTheme:T,setClassName:L,setDataset:Qe,addListener:wr}=x.useMemo(()=>ct({preventTransition:l}),[l]),$e=i==="system"&&!v?p:v,F=x.useCallback(te=>{const ke=te==="system"?T():te;$(ke),L(ke==="dark"),Qe(ke),s.set(ke)},[s,T,L,Qe]);Ba(()=>{i==="system"&&S(T())},[]),x.useEffect(()=>{const te=s.get();if(te){F(te);return}if(i==="system"){F("system");return}F(d)},[s,d,i,F]);const zr=x.useCallback(()=>{F($e==="dark"?"light":"dark")},[$e,F]);x.useEffect(()=>{if(o)return wr(F)},[o,wr,F]);const Ma=x.useMemo(()=>({colorMode:r??$e,toggleColorMode:r?Cr:zr,setColorMode:r?Cr:F,forced:r!==void 0}),[$e,zr,F,r]);return g.jsx(Ea.Provider,{value:Ma,children:a})}ma.displayName="ColorModeProvider";var ut=["borders","breakpoints","colors","components","config","direction","fonts","fontSizes","fontWeights","letterSpacings","lineHeights","radii","shadows","sizes","space","styles","transition","zIndices"];function ft(e){return ca(e)?ut.every(r=>Object.prototype.hasOwnProperty.call(e,r)):!1}var mt={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"},ht={"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)"},gt={"ultra-fast":"50ms",faster:"100ms",fast:"150ms",normal:"200ms",slow:"300ms",slower:"400ms","ultra-slow":"500ms"},yt={property:mt,easing:ht,duration:gt},pt=yt,St={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},xt=St,$t={none:0,"1px":"1px solid","2px":"2px solid","4px":"4px solid","8px":"8px solid"},kt=$t,_t={base:"0em",sm:"30em",md:"48em",lg:"62em",xl:"80em","2xl":"96em"},wt=_t,zt={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"}},Ct=zt,At={none:"0",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},Pt=At,Tt={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"},Ft=Tt,It={none:0,sm:"4px",base:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},Mt=It,Bt={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"}},ha=Bt,ga={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"},Et={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"},Dt={sm:"640px",md:"768px",lg:"1024px",xl:"1280px"},Rt={...ga,...Et,container:Dt},ya=Rt,jt={breakpoints:wt,zIndices:xt,radii:Pt,blur:Mt,colors:Ct,...ha,sizes:ya,shadows:Ft,space:ga,borders:kt,transition:pt},{defineMultiStyleConfig:Ht,definePartsStyle:le}=b(["stepper","step","title","description","indicator","separator","icon","number"]),B=c("stepper-indicator-size"),K=c("stepper-icon-size"),X=c("stepper-title-font-size"),se=c("stepper-description-font-size"),oe=c("stepper-accent-color"),Wt=le(({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"},[oe.variable]:`colors.${e}.500`,_dark:{[oe.variable]:`colors.${e}.200`}},title:{fontSize:X.reference,fontWeight:"medium"},description:{fontSize:se.reference,color:"chakra-subtle-text"},number:{fontSize:X.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:K.reference,height:K.reference},indicator:{flexShrink:0,borderRadius:"full",width:B.reference,height:B.reference,display:"flex",justifyContent:"center",alignItems:"center","&[data-status=active]":{borderWidth:"2px",borderColor:oe.reference},"&[data-status=complete]":{bg:oe.reference,color:"chakra-inverse-text"},"&[data-status=incomplete]":{borderWidth:"2px"}},separator:{bg:"chakra-border-color",flex:"1","&[data-status=complete]":{bg:oe.reference},"&[data-orientation=horizontal]":{width:"100%",height:"2px",marginStart:"2"},"&[data-orientation=vertical]":{width:"2px",position:"absolute",height:"100%",maxHeight:`calc(100% - ${B.reference} - 8px)`,top:`calc(${B.reference} + 4px)`,insetStart:`calc(${B.reference} / 2 - 1px)`}}})),Vt=Ht({baseStyle:Wt,sizes:{xs:le({stepper:{[B.variable]:"sizes.4",[K.variable]:"sizes.3",[X.variable]:"fontSizes.xs",[se.variable]:"fontSizes.xs"}}),sm:le({stepper:{[B.variable]:"sizes.6",[K.variable]:"sizes.4",[X.variable]:"fontSizes.sm",[se.variable]:"fontSizes.xs"}}),md:le({stepper:{[B.variable]:"sizes.8",[K.variable]:"sizes.5",[X.variable]:"fontSizes.md",[se.variable]:"fontSizes.sm"}}),lg:le({stepper:{[B.variable]:"sizes.10",[K.variable]:"sizes.6",[X.variable]:"fontSizes.lg",[se.variable]:"fontSizes.md"}})},defaultProps:{size:"md",colorScheme:"blue"}});function f(e,r={}){let a=!1;function o(){if(!a){a=!0;return}throw new Error("[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?")}function i(...p){o();for(const S of p)r[S]=v(S);return f(e,r)}function l(...p){for(const S of p)S in r||(r[S]=v(S));return f(e,r)}function s(){return Object.fromEntries(Object.entries(r).map(([S,T])=>[S,T.selector]))}function d(){return Object.fromEntries(Object.entries(r).map(([S,T])=>[S,T.className]))}function v(p){const L=`chakra-${(["container","root"].includes(p??"")?[e]:[e,p]).filter(Boolean).join("__")}`;return{className:L,selector:`.${L}`,toString:()=>p}}return{parts:i,toPart:v,extend:l,selectors:s,classnames:d,get keys(){return Object.keys(r)},__type:{}}}var Lt=f("accordion").parts("root","container","button","panel").extend("icon"),qt=f("alert").parts("title","description","container").extend("icon","spinner"),Ot=f("avatar").parts("label","badge","container").extend("excessLabel","group"),Nt=f("breadcrumb").parts("link","item","container").extend("separator");f("button").parts();var Gt=f("checkbox").parts("control","icon","container").extend("label");f("progress").parts("track","filledTrack").extend("label");var Ut=f("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Yt=f("editable").parts("preview","input","textarea"),Kt=f("form").parts("container","requiredIndicator","helperText"),Xt=f("formError").parts("text","icon"),Zt=f("input").parts("addon","field","element"),Jt=f("list").parts("container","item","icon"),Qt=f("menu").parts("button","list","item").extend("groupTitle","command","divider"),eo=f("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),ro=f("numberinput").parts("root","field","stepperGroup","stepper");f("pininput").parts("field");var ao=f("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),to=f("progress").parts("label","filledTrack","track"),oo=f("radio").parts("container","control","label"),no=f("select").parts("field","icon"),io=f("slider").parts("container","track","thumb","filledTrack","mark"),lo=f("stat").parts("container","label","helpText","number","icon"),so=f("switch").parts("container","track","thumb"),co=f("table").parts("table","thead","tbody","tr","th","td","tfoot","caption"),bo=f("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator"),vo=f("tag").parts("container","label","closeButton"),uo=f("card").parts("container","header","body","footer");function O(e,r,a){return Math.min(Math.max(e,a),r)}class fo extends Error{constructor(r){super(`Failed to parse color: "${r}"`)}}var de=fo;function xr(e){if(typeof e!="string")throw new de(e);if(e.trim().toLowerCase()==="transparent")return[0,0,0,0];let r=e.trim();r=$o.test(e)?go(e):e;const a=yo.exec(r);if(a){const s=Array.from(a).slice(1);return[...s.slice(0,3).map(d=>parseInt(ge(d,2),16)),parseInt(ge(s[3]||"f",2),16)/255]}const o=po.exec(r);if(o){const s=Array.from(o).slice(1);return[...s.slice(0,3).map(d=>parseInt(d,16)),parseInt(s[3]||"ff",16)/255]}const i=So.exec(r);if(i){const s=Array.from(i).slice(1);return[...s.slice(0,3).map(d=>parseInt(d,10)),parseFloat(s[3]||"1")]}const l=xo.exec(r);if(l){const[s,d,v,$]=Array.from(l).slice(1).map(parseFloat);if(O(0,100,d)!==d)throw new de(e);if(O(0,100,v)!==v)throw new de(e);return[...ko(s,d,v),Number.isNaN($)?1:$]}throw new de(e)}function mo(e){let r=5381,a=e.length;for(;a;)r=r*33^e.charCodeAt(--a);return(r>>>0)%2341}const Pr=e=>parseInt(e.replace(/_/g,""),36),ho="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=Pr(r.substring(0,3)),o=Pr(r.substring(3)).toString(16);let i="";for(let l=0;l<6-o.length;l++)i+="0";return e[a]=`${i}${o}`,e},{});function go(e){const r=e.toLowerCase().trim(),a=ho[mo(r)];if(!a)throw new de(e);return`#${a}`}const ge=(e,r)=>Array.from(Array(r)).map(()=>e).join(""),yo=new RegExp(`^#${ge("([a-f0-9])",3)}([a-f0-9])?$`,"i"),po=new RegExp(`^#${ge("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),So=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${ge(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),xo=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,$o=/^[a-z]+$/i,Tr=e=>Math.round(e*255),ko=(e,r,a)=>{let o=a/100;if(r===0)return[o,o,o].map(Tr);const i=(e%360+360)%360/60,l=(1-Math.abs(2*o-1))*(r/100),s=l*(1-Math.abs(i%2-1));let d=0,v=0,$=0;i>=0&&i<1?(d=l,v=s):i>=1&&i<2?(d=s,v=l):i>=2&&i<3?(v=l,$=s):i>=3&&i<4?(v=s,$=l):i>=4&&i<5?(d=s,$=l):i>=5&&i<6&&(d=l,$=s);const p=o-l/2,S=d+p,T=v+p,L=$+p;return[S,T,L].map(Tr)};function _o(e,r,a,o){return`rgba(${O(0,255,e).toFixed()}, ${O(0,255,r).toFixed()}, ${O(0,255,a).toFixed()}, ${parseFloat(O(0,1,o).toFixed(3))})`}function wo(e,r){const[a,o,i,l]=xr(e);return _o(a,o,i,l-r)}function zo(e){const[r,a,o,i]=xr(e);let l=s=>{const d=O(0,255,s).toString(16);return d.length===1?`0${d}`:d};return`#${l(r)}${l(a)}${l(o)}${i<1?l(Math.round(i*255)):""}`}function Co(e,r,a,o,i){for(r=r.split?r.split("."):r,o=0;oObject.keys(e).length===0,Ne=(e,r,a)=>{const o=Co(e,`colors.${r}`,r);try{return zo(o),o}catch{return a??"#000000"}},P=(e,r,a)=>{var o;return(o=Da(e,"colors",r))!=null?o:a},Po=e=>{const[r,a,o]=xr(e);return(r*299+a*587+o*114)/1e3},To=e=>r=>{const a=Ne(r,e);return Po(a)<128?"dark":"light"},Fo=e=>r=>To(e)(r)==="dark",re=(e,r)=>a=>{const o=Ne(a,e);return wo(o,1-r)};function Fr(e="1rem",r="rgba(255, 255, 255, 0.15)"){return{backgroundImage:`linear-gradient( - 45deg, - ${r} 25%, - transparent 25%, - transparent 50%, - ${r} 50%, - ${r} 75%, - transparent 75%, - transparent - )`,backgroundSize:`${e} ${e}`}}var Io=()=>`#${Math.floor(Math.random()*16777215).toString(16).padEnd(6,"0")}`;function Mo(e){const r=Io();return!e||Ao(e)?r:e.string&&e.colors?Eo(e.string,e.colors):e.string&&!e.colors?Bo(e.string):e.colors&&!e.string?Do(e.colors):r}function Bo(e){let r=0;if(e.length===0)return r.toString();for(let o=0;o>o*8&255;a+=`00${i.toString(16)}`.substr(-2)}return a}function Eo(e,r){let a=0;if(e.length===0)return r[0];for(let o=0;or.map(pa).join(` ${e} `).replace(/calc/g,""),Ir=(...e)=>`calc(${Xe("+",...e)})`,Mr=(...e)=>`calc(${Xe("-",...e)})`,hr=(...e)=>`calc(${Xe("*",...e)})`,Br=(...e)=>`calc(${Xe("/",...e)})`,Er=e=>{const r=pa(e);return r!=null&&!Number.isNaN(parseFloat(r))?String(r).startsWith("-")?String(r).slice(1):`-${r}`:hr(r,-1)},E=Object.assign(e=>({add:(...r)=>E(Ir(e,...r)),subtract:(...r)=>E(Mr(e,...r)),multiply:(...r)=>E(hr(e,...r)),divide:(...r)=>E(Br(e,...r)),negate:()=>E(Er(e)),toString:()=>e.toString()}),{add:Ir,subtract:Mr,multiply:hr,divide:Br,negate:Er});function Ro(e){return!Number.isInteger(parseFloat(e.toString()))}function jo(e,r="-"){return e.replace(/\s+/g,r)}function Sa(e){const r=jo(e.toString());return r.includes("\\.")?e:Ro(e)?r.replace(".","\\."):e}function Ho(e,r=""){return[r,Sa(e)].filter(Boolean).join("-")}function Wo(e,r){return`var(${Sa(e)}${r?`, ${r}`:""})`}function Vo(e,r=""){return`--${Ho(e,r)}`}function m(e,r){const a=Vo(e,r==null?void 0:r.prefix);return{variable:a,reference:Wo(a,Lo(r==null?void 0:r.fallback))}}function Lo(e){return typeof e=="string"?e:e==null?void 0:e.reference}var{defineMultiStyleConfig:qo,definePartsStyle:Re}=b(so.keys),ve=m("switch-track-width"),N=m("switch-track-height"),er=m("switch-track-diff"),Oo=E.subtract(ve,N),gr=m("switch-thumb-x"),ne=m("switch-bg"),No=t(e=>{const{colorScheme:r}=e;return{borderRadius:"full",p:"0.5",width:[ve.reference],height:[N.reference],transitionProperty:"common",transitionDuration:"fast",[ne.variable]:"colors.gray.300",_dark:{[ne.variable]:"colors.whiteAlpha.400"},_focusVisible:{boxShadow:"outline"},_disabled:{opacity:.4,cursor:"not-allowed"},_checked:{[ne.variable]:`colors.${r}.500`,_dark:{[ne.variable]:`colors.${r}.200`}},bg:ne.reference}}),Go=t({bg:"white",transitionProperty:"transform",transitionDuration:"normal",borderRadius:"inherit",width:[N.reference],height:[N.reference],_checked:{transform:`translateX(${gr.reference})`}}),Uo=Re(e=>({container:{[er.variable]:Oo,[gr.variable]:er.reference,_rtl:{[gr.variable]:E(er).negate().toString()}},track:No(e),thumb:Go})),Yo={sm:Re({container:{[ve.variable]:"1.375rem",[N.variable]:"sizes.3"}}),md:Re({container:{[ve.variable]:"1.875rem",[N.variable]:"sizes.4"}}),lg:Re({container:{[ve.variable]:"2.875rem",[N.variable]:"sizes.6"}})},Ko=qo({baseStyle:Uo,sizes:Yo,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Xo,definePartsStyle:Z}=b(co.keys),Zo=Z({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"}}),Ge=t({"&[data-is-numeric=true]":{textAlign:"end"}}),Jo=Z(e=>{const{colorScheme:r}=e;return{th:{color:n("gray.600","gray.400")(e),borderBottom:"1px",borderColor:n(`${r}.100`,`${r}.700`)(e),...Ge},td:{borderBottom:"1px",borderColor:n(`${r}.100`,`${r}.700`)(e),...Ge},caption:{color:n("gray.600","gray.100")(e)},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),Qo=Z(e=>{const{colorScheme:r}=e;return{th:{color:n("gray.600","gray.400")(e),borderBottom:"1px",borderColor:n(`${r}.100`,`${r}.700`)(e),...Ge},td:{borderBottom:"1px",borderColor:n(`${r}.100`,`${r}.700`)(e),...Ge},caption:{color:n("gray.600","gray.100")(e)},tbody:{tr:{"&:nth-of-type(odd)":{"th, td":{borderBottomWidth:"1px",borderColor:n(`${r}.100`,`${r}.700`)(e)},td:{background:n(`${r}.100`,`${r}.700`)(e)}}}},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),en={simple:Jo,striped:Qo,unstyled:t({})},rn={sm:Z({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:Z({th:{px:"6",py:"3",lineHeight:"4",fontSize:"xs"},td:{px:"6",py:"4",lineHeight:"5"},caption:{px:"6",py:"2",fontSize:"sm"}}),lg:Z({th:{px:"8",py:"4",lineHeight:"5",fontSize:"sm"},td:{px:"8",py:"5",lineHeight:"6"},caption:{px:"6",py:"2",fontSize:"md"}})},an=Xo({baseStyle:Zo,variants:en,sizes:rn,defaultProps:{variant:"simple",size:"md",colorScheme:"gray"}}),_=c("tabs-color"),A=c("tabs-bg"),we=c("tabs-border-color"),{defineMultiStyleConfig:tn,definePartsStyle:M}=b(bo.keys),on=t(e=>{const{orientation:r}=e;return{display:r==="vertical"?"flex":"block"}}),nn=t(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}}}),ln=t(e=>{const{align:r="start",orientation:a}=e;return{justifyContent:{end:"flex-end",center:"center",start:"flex-start"}[r],flexDirection:a==="vertical"?"column":"row"}}),sn=t({p:4}),dn=M(e=>({root:on(e),tab:nn(e),tablist:ln(e),tabpanel:sn})),cn={sm:M({tab:{py:1,px:4,fontSize:"sm"}}),md:M({tab:{fontSize:"md",py:2,px:4}}),lg:M({tab:{fontSize:"lg",py:3,px:4}})},bn=M(e=>{const{colorScheme:r,orientation:a}=e,o=a==="vertical",i=o?"borderStart":"borderBottom",l=o?"marginStart":"marginBottom";return{tablist:{[i]:"2px solid",borderColor:"inherit"},tab:{[i]:"2px solid",borderColor:"transparent",[l]:"-2px",_selected:{[_.variable]:`colors.${r}.600`,_dark:{[_.variable]:`colors.${r}.300`},borderColor:"currentColor"},_active:{[A.variable]:"colors.gray.200",_dark:{[A.variable]:"colors.whiteAlpha.300"}},_disabled:{_active:{bg:"none"}},color:_.reference,bg:A.reference}}}),vn=M(e=>{const{colorScheme:r}=e;return{tab:{borderTopRadius:"md",border:"1px solid",borderColor:"transparent",mb:"-1px",[we.variable]:"transparent",_selected:{[_.variable]:`colors.${r}.600`,[we.variable]:"colors.white",_dark:{[_.variable]:`colors.${r}.300`,[we.variable]:"colors.gray.800"},borderColor:"inherit",borderBottomColor:we.reference},color:_.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),un=M(e=>{const{colorScheme:r}=e;return{tab:{border:"1px solid",borderColor:"inherit",[A.variable]:"colors.gray.50",_dark:{[A.variable]:"colors.whiteAlpha.50"},mb:"-1px",_notLast:{marginEnd:"-1px"},_selected:{[A.variable]:"colors.white",[_.variable]:`colors.${r}.600`,_dark:{[A.variable]:"colors.gray.800",[_.variable]:`colors.${r}.300`},borderColor:"inherit",borderTopColor:"currentColor",borderBottomColor:"transparent"},color:_.reference,bg:A.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),fn=M(e=>{const{colorScheme:r,theme:a}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",color:"gray.600",_selected:{color:Ne(a,`${r}.700`),bg:Ne(a,`${r}.100`)}}}}),mn=M(e=>{const{colorScheme:r}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",[_.variable]:"colors.gray.600",_dark:{[_.variable]:"inherit"},_selected:{[_.variable]:"colors.white",[A.variable]:`colors.${r}.600`,_dark:{[_.variable]:"colors.gray.800",[A.variable]:`colors.${r}.300`}},color:_.reference,bg:A.reference}}}),hn=M({}),gn={line:bn,enclosed:vn,"enclosed-colored":un,"soft-rounded":fn,"solid-rounded":mn,unstyled:hn},yn=tn({baseStyle:dn,sizes:cn,variants:gn,defaultProps:{size:"md",variant:"line",colorScheme:"blue"}}),y=Ra("badge",["bg","color","shadow"]),pn=t({px:1,textTransform:"uppercase",fontSize:"xs",borderRadius:"sm",fontWeight:"bold",bg:y.bg.reference,color:y.color.reference,boxShadow:y.shadow.reference}),Sn=t(e=>{const{colorScheme:r,theme:a}=e,o=re(`${r}.500`,.6)(a);return{[y.bg.variable]:`colors.${r}.500`,[y.color.variable]:"colors.white",_dark:{[y.bg.variable]:o,[y.color.variable]:"colors.whiteAlpha.800"}}}),xn=t(e=>{const{colorScheme:r,theme:a}=e,o=re(`${r}.200`,.16)(a);return{[y.bg.variable]:`colors.${r}.100`,[y.color.variable]:`colors.${r}.800`,_dark:{[y.bg.variable]:o,[y.color.variable]:`colors.${r}.200`}}}),$n=t(e=>{const{colorScheme:r,theme:a}=e,o=re(`${r}.200`,.8)(a);return{[y.color.variable]:`colors.${r}.500`,_dark:{[y.color.variable]:o},[y.shadow.variable]:`inset 0 0 0px 1px ${y.color.reference}`}}),kn={solid:Sn,subtle:xn,outline:$n},ue=h({baseStyle:pn,variants:kn,defaultProps:{variant:"subtle",colorScheme:"gray"}}),{defineMultiStyleConfig:_n,definePartsStyle:G}=b(vo.keys),Dr=c("tag-bg"),Rr=c("tag-color"),rr=c("tag-shadow"),je=c("tag-min-height"),He=c("tag-min-width"),We=c("tag-font-size"),Ve=c("tag-padding-inline"),wn=t({fontWeight:"medium",lineHeight:1.2,outline:0,[Rr.variable]:y.color.reference,[Dr.variable]:y.bg.reference,[rr.variable]:y.shadow.reference,color:Rr.reference,bg:Dr.reference,boxShadow:rr.reference,borderRadius:"md",minH:je.reference,minW:He.reference,fontSize:We.reference,px:Ve.reference,_focusVisible:{[rr.variable]:"shadows.outline"}}),zn=t({lineHeight:1.2,overflow:"visible"}),Cn=t({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}}),An=G({container:wn,label:zn,closeButton:Cn}),Pn={sm:G({container:{[je.variable]:"sizes.5",[He.variable]:"sizes.5",[We.variable]:"fontSizes.xs",[Ve.variable]:"space.2"},closeButton:{marginEnd:"-2px",marginStart:"0.35rem"}}),md:G({container:{[je.variable]:"sizes.6",[He.variable]:"sizes.6",[We.variable]:"fontSizes.sm",[Ve.variable]:"space.2"}}),lg:G({container:{[je.variable]:"sizes.8",[He.variable]:"sizes.8",[We.variable]:"fontSizes.md",[Ve.variable]:"space.3"}})},Tn={subtle:G(e=>{var r;return{container:(r=ue.variants)==null?void 0:r.subtle(e)}}),solid:G(e=>{var r;return{container:(r=ue.variants)==null?void 0:r.solid(e)}}),outline:G(e=>{var r;return{container:(r=ue.variants)==null?void 0:r.outline(e)}})},Fn=_n({variants:Tn,baseStyle:An,sizes:Pn,defaultProps:{size:"md",variant:"subtle",colorScheme:"gray"}}),{definePartsStyle:D,defineMultiStyleConfig:In}=b(Zt.keys),Mn=D({field:{width:"100%",minWidth:0,outline:0,position:"relative",appearance:"none",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed"}}}),H={lg:t({fontSize:"lg",px:"4",h:"12",borderRadius:"md"}),md:t({fontSize:"md",px:"4",h:"10",borderRadius:"md"}),sm:t({fontSize:"sm",px:"3",h:"8",borderRadius:"sm"}),xs:t({fontSize:"xs",px:"2",h:"6",borderRadius:"sm"})},Bn={lg:D({field:H.lg,addon:H.lg}),md:D({field:H.md,addon:H.md}),sm:D({field:H.sm,addon:H.sm}),xs:D({field:H.xs,addon:H.xs})};function $r(e){const{focusBorderColor:r,errorBorderColor:a}=e;return{focusBorderColor:r||n("blue.500","blue.300")(e),errorBorderColor:a||n("red.500","red.300")(e)}}var En=D(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:o}=$r(e);return{field:{border:"1px solid",borderColor:"inherit",bg:"inherit",_hover:{borderColor:n("gray.300","whiteAlpha.400")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:P(r,o),boxShadow:`0 0 0 1px ${P(r,o)}`},_focusVisible:{zIndex:1,borderColor:P(r,a),boxShadow:`0 0 0 1px ${P(r,a)}`}},addon:{border:"1px solid",borderColor:n("inherit","whiteAlpha.50")(e),bg:n("gray.100","whiteAlpha.300")(e)}}}),Dn=D(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:o}=$r(e);return{field:{border:"2px solid",borderColor:"transparent",bg:n("gray.100","whiteAlpha.50")(e),_hover:{bg:n("gray.200","whiteAlpha.100")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:P(r,o)},_focusVisible:{bg:"transparent",borderColor:P(r,a)}},addon:{border:"2px solid",borderColor:"transparent",bg:n("gray.100","whiteAlpha.50")(e)}}}),Rn=D(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:o}=$r(e);return{field:{borderBottom:"1px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent",_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:P(r,o),boxShadow:`0px 1px 0px 0px ${P(r,o)}`},_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"}}}),jn=D({field:{bg:"transparent",px:"0",height:"auto"},addon:{bg:"transparent",px:"0",height:"auto"}}),Hn={outline:En,filled:Dn,flushed:Rn,unstyled:jn},u=In({baseStyle:Mn,sizes:Bn,variants:Hn,defaultProps:{size:"md",variant:"outline"}}),jr,Wn=t({...(jr=u.baseStyle)==null?void 0:jr.field,paddingY:"2",minHeight:"20",lineHeight:"short",verticalAlign:"top"}),Hr,Wr,Vn={outline:t(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.outline(e).field)!=null?a:{}}),flushed:t(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.flushed(e).field)!=null?a:{}}),filled:t(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.filled(e).field)!=null?a:{}}),unstyled:(Wr=(Hr=u.variants)==null?void 0:Hr.unstyled.field)!=null?Wr:{}},Vr,Lr,qr,Or,Nr,Gr,Ur,Yr,Ln={xs:(Lr=(Vr=u.sizes)==null?void 0:Vr.xs.field)!=null?Lr:{},sm:(Or=(qr=u.sizes)==null?void 0:qr.sm.field)!=null?Or:{},md:(Gr=(Nr=u.sizes)==null?void 0:Nr.md.field)!=null?Gr:{},lg:(Yr=(Ur=u.sizes)==null?void 0:Ur.lg.field)!=null?Yr:{}},qn=h({baseStyle:Wn,sizes:Ln,variants:Vn,defaultProps:{size:"md",variant:"outline"}}),ze=m("tooltip-bg"),ar=m("tooltip-fg"),On=m("popper-arrow-bg"),Nn=t({bg:ze.reference,color:ar.reference,[ze.variable]:"colors.gray.700",[ar.variable]:"colors.whiteAlpha.900",_dark:{[ze.variable]:"colors.gray.300",[ar.variable]:"colors.gray.900"},[On.variable]:ze.reference,px:"2",py:"0.5",borderRadius:"sm",fontWeight:"medium",fontSize:"sm",boxShadow:"md",maxW:"xs",zIndex:"tooltip"}),Gn=h({baseStyle:Nn}),{defineMultiStyleConfig:Un,definePartsStyle:ce}=b(to.keys),Yn=t(e=>{const{colorScheme:r,theme:a,isIndeterminate:o,hasStripe:i}=e,l=n(Fr(),Fr("1rem","rgba(0,0,0,0.1)"))(e),s=n(`${r}.500`,`${r}.200`)(e),d=`linear-gradient( - to right, - transparent 0%, - ${P(a,s)} 50%, - transparent 100% - )`;return{...!o&&i&&l,...o?{bgImage:d}:{bgColor:s}}}),Kn=t({lineHeight:"1",fontSize:"0.25em",fontWeight:"bold",color:"white"}),Xn=t(e=>({bg:n("gray.100","whiteAlpha.300")(e)})),Zn=t(e=>({transitionProperty:"common",transitionDuration:"slow",...Yn(e)})),Jn=ce(e=>({label:Kn,filledTrack:Zn(e),track:Xn(e)})),Qn={xs:ce({track:{h:"1"}}),sm:ce({track:{h:"2"}}),md:ce({track:{h:"3"}}),lg:ce({track:{h:"4"}})},ei=Un({sizes:Qn,baseStyle:Jn,defaultProps:{size:"md",colorScheme:"blue"}}),ri=e=>typeof e=="function";function k(e,...r){return ri(e)?e(...r):e}var{definePartsStyle:Le,defineMultiStyleConfig:ai}=b(Gt.keys),fe=c("checkbox-size"),ti=t(e=>{const{colorScheme:r}=e;return{w:fe.reference,h:fe.reference,transitionProperty:"box-shadow",transitionDuration:"normal",border:"2px solid",borderRadius:"sm",borderColor:"inherit",color:"white",_checked:{bg:n(`${r}.500`,`${r}.200`)(e),borderColor:n(`${r}.500`,`${r}.200`)(e),color:n("white","gray.900")(e),_hover:{bg:n(`${r}.600`,`${r}.300`)(e),borderColor:n(`${r}.600`,`${r}.300`)(e)},_disabled:{borderColor:n("gray.200","transparent")(e),bg:n("gray.200","whiteAlpha.300")(e),color:n("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:n(`${r}.500`,`${r}.200`)(e),borderColor:n(`${r}.500`,`${r}.200`)(e),color:n("white","gray.900")(e)},_disabled:{bg:n("gray.100","whiteAlpha.100")(e),borderColor:n("gray.100","transparent")(e)},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:n("red.500","red.300")(e)}}}),oi=t({_disabled:{cursor:"not-allowed"}}),ni=t({userSelect:"none",_disabled:{opacity:.4}}),ii=t({transitionProperty:"transform",transitionDuration:"normal"}),li=Le(e=>({icon:ii,container:oi,control:k(ti,e),label:ni})),si={sm:Le({control:{[fe.variable]:"sizes.3"},label:{fontSize:"sm"},icon:{fontSize:"3xs"}}),md:Le({control:{[fe.variable]:"sizes.4"},label:{fontSize:"md"},icon:{fontSize:"2xs"}}),lg:Le({control:{[fe.variable]:"sizes.5"},label:{fontSize:"lg"},icon:{fontSize:"2xs"}})},Ue=ai({baseStyle:li,sizes:si,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:di,definePartsStyle:qe}=b(oo.keys),ci=t(e=>{var r;const a=(r=k(Ue.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"}}}}),bi=qe(e=>{var r,a,o,i;return{label:(a=(r=Ue).baseStyle)==null?void 0:a.call(r,e).label,container:(i=(o=Ue).baseStyle)==null?void 0:i.call(o,e).container,control:ci(e)}}),vi={md:qe({control:{w:"4",h:"4"},label:{fontSize:"md"}}),lg:qe({control:{w:"5",h:"5"},label:{fontSize:"lg"}}),sm:qe({control:{width:"3",height:"3"},label:{fontSize:"sm"}})},ui=di({baseStyle:bi,sizes:vi,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:fi,definePartsStyle:mi}=b(no.keys),Ce=c("select-bg"),Kr,hi=t({...(Kr=u.baseStyle)==null?void 0:Kr.field,appearance:"none",paddingBottom:"1px",lineHeight:"normal",bg:Ce.reference,[Ce.variable]:"colors.white",_dark:{[Ce.variable]:"colors.gray.700"},"> option, > optgroup":{bg:Ce.reference}}),gi=t({width:"6",height:"100%",insetEnd:"2",position:"relative",color:"currentColor",fontSize:"xl",_disabled:{opacity:.5}}),yi=mi({field:hi,icon:gi}),Ae=t({paddingInlineEnd:"8"}),Xr,Zr,Jr,Qr,ea,ra,aa,ta,pi={lg:{...(Xr=u.sizes)==null?void 0:Xr.lg,field:{...(Zr=u.sizes)==null?void 0:Zr.lg.field,...Ae}},md:{...(Jr=u.sizes)==null?void 0:Jr.md,field:{...(Qr=u.sizes)==null?void 0:Qr.md.field,...Ae}},sm:{...(ea=u.sizes)==null?void 0:ea.sm,field:{...(ra=u.sizes)==null?void 0:ra.sm.field,...Ae}},xs:{...(aa=u.sizes)==null?void 0:aa.xs,field:{...(ta=u.sizes)==null?void 0:ta.xs.field,...Ae},icon:{insetEnd:"1"}}},Si=fi({baseStyle:yi,sizes:pi,variants:u.variants,defaultProps:u.defaultProps}),tr=c("skeleton-start-color"),or=c("skeleton-end-color"),xi=t({[tr.variable]:"colors.gray.100",[or.variable]:"colors.gray.400",_dark:{[tr.variable]:"colors.gray.800",[or.variable]:"colors.gray.600"},background:tr.reference,borderColor:or.reference,opacity:.7,borderRadius:"sm"}),$i=h({baseStyle:xi}),nr=c("skip-link-bg"),ki=t({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}}),_i=h({baseStyle:ki}),{defineMultiStyleConfig:wi,definePartsStyle:Ze}=b(io.keys),ye=c("slider-thumb-size"),pe=c("slider-track-size"),V=c("slider-bg"),zi=t(e=>{const{orientation:r}=e;return{display:"inline-block",position:"relative",cursor:"pointer",_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"},...Sr({orientation:r,vertical:{h:"100%"},horizontal:{w:"100%"}})}}),Ci=t(e=>({...Sr({orientation:e.orientation,horizontal:{h:pe.reference},vertical:{w:pe.reference}}),overflow:"hidden",borderRadius:"sm",[V.variable]:"colors.gray.200",_dark:{[V.variable]:"colors.whiteAlpha.200"},_disabled:{[V.variable]:"colors.gray.300",_dark:{[V.variable]:"colors.whiteAlpha.300"}},bg:V.reference})),Ai=t(e=>{const{orientation:r}=e;return{...Sr({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:ye.reference,h:ye.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"}}}),Pi=t(e=>{const{colorScheme:r}=e;return{width:"inherit",height:"inherit",[V.variable]:`colors.${r}.500`,_dark:{[V.variable]:`colors.${r}.200`},bg:V.reference}}),Ti=Ze(e=>({container:zi(e),track:Ci(e),thumb:Ai(e),filledTrack:Pi(e)})),Fi=Ze({container:{[ye.variable]:"sizes.4",[pe.variable]:"sizes.1"}}),Ii=Ze({container:{[ye.variable]:"sizes.3.5",[pe.variable]:"sizes.1"}}),Mi=Ze({container:{[ye.variable]:"sizes.2.5",[pe.variable]:"sizes.0.5"}}),Bi={lg:Fi,md:Ii,sm:Mi},Ei=wi({baseStyle:Ti,sizes:Bi,defaultProps:{size:"md",colorScheme:"blue"}}),q=m("spinner-size"),Di=t({width:[q.reference],height:[q.reference]}),Ri={xs:t({[q.variable]:"sizes.3"}),sm:t({[q.variable]:"sizes.4"}),md:t({[q.variable]:"sizes.6"}),lg:t({[q.variable]:"sizes.8"}),xl:t({[q.variable]:"sizes.12"})},ji=h({baseStyle:Di,sizes:Ri,defaultProps:{size:"md"}}),{defineMultiStyleConfig:Hi,definePartsStyle:xa}=b(lo.keys),Wi=t({fontWeight:"medium"}),Vi=t({opacity:.8,marginBottom:"2"}),Li=t({verticalAlign:"baseline",fontWeight:"semibold"}),qi=t({marginEnd:1,w:"3.5",h:"3.5",verticalAlign:"middle"}),Oi=xa({container:{},label:Wi,helpText:Vi,number:Li,icon:qi}),Ni={md:xa({label:{fontSize:"sm"},helpText:{fontSize:"sm"},number:{fontSize:"2xl"}})},Gi=Hi({baseStyle:Oi,sizes:Ni,defaultProps:{size:"md"}}),ir=c("kbd-bg"),Ui=t({[ir.variable]:"colors.gray.100",_dark:{[ir.variable]:"colors.whiteAlpha.100"},bg:ir.reference,borderRadius:"md",borderWidth:"1px",borderBottomWidth:"3px",fontSize:"0.8em",fontWeight:"bold",lineHeight:"normal",px:"0.4em",whiteSpace:"nowrap"}),Yi=h({baseStyle:Ui}),Ki=t({transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}}),Xi=h({baseStyle:Ki}),{defineMultiStyleConfig:Zi,definePartsStyle:Ji}=b(Jt.keys),Qi=t({marginEnd:"2",display:"inline",verticalAlign:"text-bottom"}),el=Ji({icon:Qi}),rl=Zi({baseStyle:el}),{defineMultiStyleConfig:al,definePartsStyle:tl}=b(Qt.keys),I=c("menu-bg"),lr=c("menu-shadow"),ol=t({[I.variable]:"#fff",[lr.variable]:"shadows.sm",_dark:{[I.variable]:"colors.gray.700",[lr.variable]:"shadows.dark-lg"},color:"inherit",minW:"3xs",py:"2",zIndex:1,borderRadius:"md",borderWidth:"1px",bg:I.reference,boxShadow:lr.reference}),nl=t({py:"1.5",px:"3",transitionProperty:"background",transitionDuration:"ultra-fast",transitionTimingFunction:"ease-in",_focus:{[I.variable]:"colors.gray.100",_dark:{[I.variable]:"colors.whiteAlpha.100"}},_active:{[I.variable]:"colors.gray.200",_dark:{[I.variable]:"colors.whiteAlpha.200"}},_expanded:{[I.variable]:"colors.gray.100",_dark:{[I.variable]:"colors.whiteAlpha.100"}},_disabled:{opacity:.4,cursor:"not-allowed"},bg:I.reference}),il=t({mx:4,my:2,fontWeight:"semibold",fontSize:"sm"}),ll=t({opacity:.6}),sl=t({border:0,borderBottom:"1px solid",borderColor:"inherit",my:"2",opacity:.6}),dl=t({transitionProperty:"common",transitionDuration:"normal"}),cl=tl({button:dl,list:ol,item:nl,groupTitle:il,command:ll,divider:sl}),bl=al({baseStyle:cl}),{defineMultiStyleConfig:vl,definePartsStyle:yr}=b(eo.keys),sr=c("modal-bg"),dr=c("modal-shadow"),ul=t({bg:"blackAlpha.600",zIndex:"modal"}),fl=t(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"}}),ml=t(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,[sr.variable]:"colors.white",[dr.variable]:"shadows.lg",_dark:{[sr.variable]:"colors.gray.700",[dr.variable]:"shadows.dark-lg"},bg:sr.reference,boxShadow:dr.reference}}),hl=t({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),gl=t({position:"absolute",top:"2",insetEnd:"3"}),yl=t(e=>{const{scrollBehavior:r}=e;return{px:"6",py:"2",flex:"1",overflow:r==="inside"?"auto":void 0}}),pl=t({px:"6",py:"4"}),Sl=yr(e=>({overlay:ul,dialogContainer:k(fl,e),dialog:k(ml,e),header:hl,closeButton:gl,body:k(yl,e),footer:pl}));function C(e){return yr(e==="full"?{dialog:{maxW:"100vw",minH:"$100vh",my:"0",borderRadius:"0"}}:{dialog:{maxW:e}})}var xl={xs:C("xs"),sm:C("sm"),md:C("md"),lg:C("lg"),xl:C("xl"),"2xl":C("2xl"),"3xl":C("3xl"),"4xl":C("4xl"),"5xl":C("5xl"),"6xl":C("6xl"),full:C("full")},$l=vl({baseStyle:Sl,sizes:xl,defaultProps:{size:"md"}}),{defineMultiStyleConfig:kl,definePartsStyle:$a}=b(ro.keys),kr=m("number-input-stepper-width"),ka=m("number-input-input-padding"),_l=E(kr).add("0.5rem").toString(),cr=m("number-input-bg"),br=m("number-input-color"),vr=m("number-input-border-color"),wl=t({[kr.variable]:"sizes.6",[ka.variable]:_l}),zl=t(e=>{var r,a;return(a=(r=k(u.baseStyle,e))==null?void 0:r.field)!=null?a:{}}),Cl=t({width:kr.reference}),Al=t({borderStart:"1px solid",borderStartColor:vr.reference,color:br.reference,bg:cr.reference,[br.variable]:"colors.chakra-body-text",[vr.variable]:"colors.chakra-border-color",_dark:{[br.variable]:"colors.whiteAlpha.800",[vr.variable]:"colors.whiteAlpha.300"},_active:{[cr.variable]:"colors.gray.200",_dark:{[cr.variable]:"colors.whiteAlpha.300"}},_disabled:{opacity:.4,cursor:"not-allowed"}}),Pl=$a(e=>{var r;return{root:wl,field:(r=k(zl,e))!=null?r:{},stepperGroup:Cl,stepper:Al}});function Pe(e){var r,a,o;const i=(r=u.sizes)==null?void 0:r[e],l={lg:"md",md:"md",sm:"sm",xs:"sm"},s=(o=(a=i.field)==null?void 0:a.fontSize)!=null?o:"md",d=ha.fontSizes[s];return $a({field:{...i.field,paddingInlineEnd:ka.reference,verticalAlign:"top"},stepper:{fontSize:E(d).multiply(.75).toString(),_first:{borderTopEndRadius:l[e]},_last:{borderBottomEndRadius:l[e],mt:"-1px",borderTopWidth:1}}})}var Tl={xs:Pe("xs"),sm:Pe("sm"),md:Pe("md"),lg:Pe("lg")},Fl=kl({baseStyle:Pl,sizes:Tl,variants:u.variants,defaultProps:u.defaultProps}),oa,Il=t({...(oa=u.baseStyle)==null?void 0:oa.field,textAlign:"center"}),Ml={lg:t({fontSize:"lg",w:12,h:12,borderRadius:"md"}),md:t({fontSize:"md",w:10,h:10,borderRadius:"md"}),sm:t({fontSize:"sm",w:8,h:8,borderRadius:"sm"}),xs:t({fontSize:"xs",w:6,h:6,borderRadius:"sm"})},na,ia,Bl={outline:t(e=>{var r,a,o;return(o=(a=k((r=u.variants)==null?void 0:r.outline,e))==null?void 0:a.field)!=null?o:{}}),flushed:t(e=>{var r,a,o;return(o=(a=k((r=u.variants)==null?void 0:r.flushed,e))==null?void 0:a.field)!=null?o:{}}),filled:t(e=>{var r,a,o;return(o=(a=k((r=u.variants)==null?void 0:r.filled,e))==null?void 0:a.field)!=null?o:{}}),unstyled:(ia=(na=u.variants)==null?void 0:na.unstyled.field)!=null?ia:{}},El=h({baseStyle:Il,sizes:Ml,variants:Bl,defaultProps:u.defaultProps}),{defineMultiStyleConfig:Dl,definePartsStyle:Rl}=b(ao.keys),Te=m("popper-bg"),jl=m("popper-arrow-bg"),la=m("popper-arrow-shadow-color"),Hl=t({zIndex:10}),Wl=t({[Te.variable]:"colors.white",bg:Te.reference,[jl.variable]:Te.reference,[la.variable]:"colors.gray.200",_dark:{[Te.variable]:"colors.gray.700",[la.variable]:"colors.whiteAlpha.300"},width:"xs",border:"1px solid",borderColor:"inherit",borderRadius:"md",boxShadow:"sm",zIndex:"inherit",_focusVisible:{outline:0,boxShadow:"outline"}}),Vl=t({px:3,py:2,borderBottomWidth:"1px"}),Ll=t({px:3,py:2}),ql=t({px:3,py:2,borderTopWidth:"1px"}),Ol=t({position:"absolute",borderRadius:"md",top:1,insetEnd:2,padding:2}),Nl=Rl({popper:Hl,content:Wl,header:Vl,body:Ll,footer:ql,closeButton:Ol}),Gl=Dl({baseStyle:Nl}),{definePartsStyle:pr,defineMultiStyleConfig:Ul}=b(Ut.keys),ur=c("drawer-bg"),fr=c("drawer-box-shadow");function Y(e){return pr(e==="full"?{dialog:{maxW:"100vw",h:"100vh"}}:{dialog:{maxW:e}})}var Yl=t({bg:"blackAlpha.600",zIndex:"overlay"}),Kl=t({display:"flex",zIndex:"modal",justifyContent:"center"}),Xl=t(e=>{const{isFullHeight:r}=e;return{...r&&{height:"100vh"},zIndex:"modal",maxH:"100vh",color:"inherit",[ur.variable]:"colors.white",[fr.variable]:"shadows.lg",_dark:{[ur.variable]:"colors.gray.700",[fr.variable]:"shadows.dark-lg"},bg:ur.reference,boxShadow:fr.reference}}),Zl=t({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),Jl=t({position:"absolute",top:"2",insetEnd:"3"}),Ql=t({px:"6",py:"2",flex:"1",overflow:"auto"}),es=t({px:"6",py:"4"}),rs=pr(e=>({overlay:Yl,dialogContainer:Kl,dialog:k(Xl,e),header:Zl,closeButton:Jl,body:Ql,footer:es})),as={xs:Y("xs"),sm:Y("md"),md:Y("lg"),lg:Y("2xl"),xl:Y("4xl"),full:Y("full")},ts=Ul({baseStyle:rs,sizes:as,defaultProps:{size:"xs"}}),{definePartsStyle:os,defineMultiStyleConfig:ns}=b(Yt.keys),is=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),ls=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),ss=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),ds=os({preview:is,input:ls,textarea:ss}),cs=ns({baseStyle:ds}),{definePartsStyle:bs,defineMultiStyleConfig:vs}=b(Kt.keys),J=c("form-control-color"),us=t({marginStart:"1",[J.variable]:"colors.red.500",_dark:{[J.variable]:"colors.red.300"},color:J.reference}),fs=t({mt:"2",[J.variable]:"colors.gray.600",_dark:{[J.variable]:"colors.whiteAlpha.600"},color:J.reference,lineHeight:"normal",fontSize:"sm"}),ms=bs({container:{width:"100%",position:"relative"},requiredIndicator:us,helperText:fs}),hs=vs({baseStyle:ms}),{definePartsStyle:gs,defineMultiStyleConfig:ys}=b(Xt.keys),Q=c("form-error-color"),ps=t({[Q.variable]:"colors.red.500",_dark:{[Q.variable]:"colors.red.300"},color:Q.reference,mt:"2",fontSize:"sm",lineHeight:"normal"}),Ss=t({marginEnd:"0.5em",[Q.variable]:"colors.red.500",_dark:{[Q.variable]:"colors.red.300"},color:Q.reference}),xs=gs({text:ps,icon:Ss}),$s=ys({baseStyle:xs}),ks=t({fontSize:"md",marginEnd:"3",mb:"2",fontWeight:"medium",transitionProperty:"common",transitionDuration:"normal",opacity:1,_disabled:{opacity:.4}}),_s=h({baseStyle:ks}),ws=t({fontFamily:"heading",fontWeight:"bold"}),zs={"4xl":t({fontSize:["6xl",null,"7xl"],lineHeight:1}),"3xl":t({fontSize:["5xl",null,"6xl"],lineHeight:1}),"2xl":t({fontSize:["4xl",null,"5xl"],lineHeight:[1.2,null,1]}),xl:t({fontSize:["3xl",null,"4xl"],lineHeight:[1.33,null,1.2]}),lg:t({fontSize:["2xl",null,"3xl"],lineHeight:[1.33,null,1.2]}),md:t({fontSize:"xl",lineHeight:1.2}),sm:t({fontSize:"md",lineHeight:1.2}),xs:t({fontSize:"sm",lineHeight:1.2})},Cs=h({baseStyle:ws,sizes:zs,defaultProps:{size:"xl"}}),{defineMultiStyleConfig:As,definePartsStyle:Ps}=b(Nt.keys),mr=c("breadcrumb-link-decor"),Ts=t({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"}}}),Fs=Ps({link:Ts}),Is=As({baseStyle:Fs}),Ms=t({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"}}}),_a=t(e=>{const{colorScheme:r,theme:a}=e;if(r==="gray")return{color:n("gray.800","whiteAlpha.900")(e),_hover:{bg:n("gray.100","whiteAlpha.200")(e)},_active:{bg:n("gray.200","whiteAlpha.300")(e)}};const o=re(`${r}.200`,.12)(a),i=re(`${r}.200`,.24)(a);return{color:n(`${r}.600`,`${r}.200`)(e),bg:"transparent",_hover:{bg:n(`${r}.50`,o)(e)},_active:{bg:n(`${r}.100`,i)(e)}}}),Bs=t(e=>{const{colorScheme:r}=e,a=n("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"},...k(_a,e)}}),Es={yellow:{bg:"yellow.400",color:"black",hoverBg:"yellow.500",activeBg:"yellow.600"},cyan:{bg:"cyan.400",color:"black",hoverBg:"cyan.500",activeBg:"cyan.600"}},Ds=t(e=>{var r;const{colorScheme:a}=e;if(a==="gray"){const v=n("gray.100","whiteAlpha.200")(e);return{bg:v,color:n("gray.800","whiteAlpha.900")(e),_hover:{bg:n("gray.200","whiteAlpha.300")(e),_disabled:{bg:v}},_active:{bg:n("gray.300","whiteAlpha.400")(e)}}}const{bg:o=`${a}.500`,color:i="white",hoverBg:l=`${a}.600`,activeBg:s=`${a}.700`}=(r=Es[a])!=null?r:{},d=n(o,`${a}.200`)(e);return{bg:d,color:n(i,"gray.800")(e),_hover:{bg:n(l,`${a}.300`)(e),_disabled:{bg:d}},_active:{bg:n(s,`${a}.400`)(e)}}}),Rs=t(e=>{const{colorScheme:r}=e;return{padding:0,height:"auto",lineHeight:"normal",verticalAlign:"baseline",color:n(`${r}.500`,`${r}.200`)(e),_hover:{textDecoration:"underline",_disabled:{textDecoration:"none"}},_active:{color:n(`${r}.700`,`${r}.500`)(e)}}}),js=t({bg:"none",color:"inherit",display:"inline",lineHeight:"inherit",m:"0",p:"0"}),Hs={ghost:_a,outline:Bs,solid:Ds,link:Rs,unstyled:js},Ws={lg:t({h:"12",minW:"12",fontSize:"lg",px:"6"}),md:t({h:"10",minW:"10",fontSize:"md",px:"4"}),sm:t({h:"8",minW:"8",fontSize:"sm",px:"3"}),xs:t({h:"6",minW:"6",fontSize:"xs",px:"2"})},Vs=h({baseStyle:Ms,variants:Hs,sizes:Ws,defaultProps:{variant:"solid",size:"md",colorScheme:"gray"}}),{definePartsStyle:U,defineMultiStyleConfig:Ls}=b(uo.keys),Ye=c("card-bg"),R=c("card-padding"),wa=c("card-shadow"),Oe=c("card-radius"),za=c("card-border-width","0"),Ca=c("card-border-color"),qs=U({container:{[Ye.variable]:"colors.chakra-body-bg",backgroundColor:Ye.reference,boxShadow:wa.reference,borderRadius:Oe.reference,color:"chakra-body-text",borderWidth:za.reference,borderColor:Ca.reference},body:{padding:R.reference,flex:"1 1 0%"},header:{padding:R.reference},footer:{padding:R.reference}}),Os={sm:U({container:{[Oe.variable]:"radii.base",[R.variable]:"space.3"}}),md:U({container:{[Oe.variable]:"radii.md",[R.variable]:"space.5"}}),lg:U({container:{[Oe.variable]:"radii.xl",[R.variable]:"space.7"}})},Ns={elevated:U({container:{[wa.variable]:"shadows.base",_dark:{[Ye.variable]:"colors.gray.700"}}}),outline:U({container:{[za.variable]:"1px",[Ca.variable]:"colors.chakra-border-color"}}),filled:U({container:{[Ye.variable]:"colors.chakra-subtle-bg"}}),unstyled:{body:{[R.variable]:0},header:{[R.variable]:0},footer:{[R.variable]:0}}},Gs=Ls({baseStyle:qs,variants:Ns,sizes:Os,defaultProps:{variant:"elevated",size:"md"}}),me=m("close-button-size"),ie=m("close-button-bg"),Us=t({w:[me.reference],h:[me.reference],borderRadius:"md",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed",boxShadow:"none"},_hover:{[ie.variable]:"colors.blackAlpha.100",_dark:{[ie.variable]:"colors.whiteAlpha.100"}},_active:{[ie.variable]:"colors.blackAlpha.200",_dark:{[ie.variable]:"colors.whiteAlpha.200"}},_focusVisible:{boxShadow:"outline"},bg:ie.reference}),Ys={lg:t({[me.variable]:"sizes.10",fontSize:"md"}),md:t({[me.variable]:"sizes.8",fontSize:"xs"}),sm:t({[me.variable]:"sizes.6",fontSize:"2xs"})},Ks=h({baseStyle:Us,sizes:Ys,defaultProps:{size:"md"}}),{variants:Xs,defaultProps:Zs}=ue,Js=t({fontFamily:"mono",fontSize:"sm",px:"0.2em",borderRadius:"sm",bg:y.bg.reference,color:y.color.reference,boxShadow:y.shadow.reference}),Qs=h({baseStyle:Js,variants:Xs,defaultProps:Zs}),e0=t({w:"100%",mx:"auto",maxW:"prose",px:"4"}),r0=h({baseStyle:e0}),a0=t({opacity:.6,borderColor:"inherit"}),t0=t({borderStyle:"solid"}),o0=t({borderStyle:"dashed"}),n0={solid:t0,dashed:o0},i0=h({baseStyle:a0,variants:n0,defaultProps:{variant:"solid"}}),{definePartsStyle:l0,defineMultiStyleConfig:s0}=b(Lt.keys),d0=t({borderTopWidth:"1px",borderColor:"inherit",_last:{borderBottomWidth:"1px"}}),c0=t({transitionProperty:"common",transitionDuration:"normal",fontSize:"md",_focusVisible:{boxShadow:"outline"},_hover:{bg:"blackAlpha.50"},_disabled:{opacity:.4,cursor:"not-allowed"},px:"4",py:"2"}),b0=t({pt:"2",px:"4",pb:"5"}),v0=t({fontSize:"1.25em"}),u0=l0({container:d0,button:c0,panel:b0,icon:v0}),f0=s0({baseStyle:u0}),{definePartsStyle:xe,defineMultiStyleConfig:m0}=b(qt.keys),w=c("alert-fg"),j=c("alert-bg"),h0=xe({container:{bg:j.reference,px:"4",py:"3"},title:{fontWeight:"bold",lineHeight:"6",marginEnd:"2"},description:{lineHeight:"6"},icon:{color:w.reference,flexShrink:0,marginEnd:"3",w:"5",h:"6"},spinner:{color:w.reference,flexShrink:0,marginEnd:"3",w:"5",h:"5"}});function _r(e){const{theme:r,colorScheme:a}=e,o=re(`${a}.200`,.16)(r);return{light:`colors.${a}.100`,dark:o}}var g0=xe(e=>{const{colorScheme:r}=e,a=_r(e);return{container:{[w.variable]:`colors.${r}.500`,[j.variable]:a.light,_dark:{[w.variable]:`colors.${r}.200`,[j.variable]:a.dark}}}}),y0=xe(e=>{const{colorScheme:r}=e,a=_r(e);return{container:{[w.variable]:`colors.${r}.500`,[j.variable]:a.light,_dark:{[w.variable]:`colors.${r}.200`,[j.variable]:a.dark},paddingStart:"3",borderStartWidth:"4px",borderStartColor:w.reference}}}),p0=xe(e=>{const{colorScheme:r}=e,a=_r(e);return{container:{[w.variable]:`colors.${r}.500`,[j.variable]:a.light,_dark:{[w.variable]:`colors.${r}.200`,[j.variable]:a.dark},pt:"2",borderTopWidth:"4px",borderTopColor:w.reference}}}),S0=xe(e=>{const{colorScheme:r}=e;return{container:{[w.variable]:"colors.white",[j.variable]:`colors.${r}.500`,_dark:{[w.variable]:"colors.gray.900",[j.variable]:`colors.${r}.200`},color:w.reference}}}),x0={subtle:g0,"left-accent":y0,"top-accent":p0,solid:S0},$0=m0({baseStyle:h0,variants:x0,defaultProps:{variant:"subtle",colorScheme:"blue"}}),{definePartsStyle:Aa,defineMultiStyleConfig:k0}=b(Ot.keys),ee=c("avatar-border-color"),he=c("avatar-bg"),Se=c("avatar-font-size"),ae=c("avatar-size"),_0=t({borderRadius:"full",border:"0.2em solid",borderColor:ee.reference,[ee.variable]:"white",_dark:{[ee.variable]:"colors.gray.800"}}),w0=t({bg:he.reference,fontSize:Se.reference,width:ae.reference,height:ae.reference,lineHeight:"1",[he.variable]:"colors.gray.200",_dark:{[he.variable]:"colors.whiteAlpha.400"}}),z0=t(e=>{const{name:r,theme:a}=e,o=r?Mo({string:r}):"colors.gray.400",i=Fo(o)(a);let l="white";return i||(l="gray.800"),{bg:he.reference,fontSize:Se.reference,color:l,borderColor:ee.reference,verticalAlign:"top",width:ae.reference,height:ae.reference,"&:not([data-loaded])":{[he.variable]:o},[ee.variable]:"colors.white",_dark:{[ee.variable]:"colors.gray.800"}}}),C0=t({fontSize:Se.reference,lineHeight:"1"}),A0=Aa(e=>({badge:k(_0,e),excessLabel:k(w0,e),container:k(z0,e),label:C0}));function W(e){const r=e!=="100%"?ya[e]:void 0;return Aa({container:{[ae.variable]:r??e,[Se.variable]:`calc(${r??e} / 2.5)`},excessLabel:{[ae.variable]:r??e,[Se.variable]:`calc(${r??e} / 2.5)`}})}var P0={"2xs":W(4),xs:W(6),sm:W(8),md:W(12),lg:W(16),xl:W(24),"2xl":W(32),full:W("100%")},T0=k0({baseStyle:A0,sizes:P0,defaultProps:{size:"md"}}),F0={Accordion:f0,Alert:$0,Avatar:T0,Badge:ue,Breadcrumb:Is,Button:Vs,Checkbox:Ue,CloseButton:Ks,Code:Qs,Container:r0,Divider:i0,Drawer:ts,Editable:cs,Form:hs,FormError:$s,FormLabel:_s,Heading:Cs,Input:u,Kbd:Yi,Link:Xi,List:rl,Menu:bl,Modal:$l,NumberInput:Fl,PinInput:El,Popover:Gl,Progress:ei,Radio:ui,Select:Si,Skeleton:$i,SkipLink:_i,Slider:Ei,Spinner:ji,Stat:Gi,Switch:Ko,Table:an,Tabs:yn,Tag:Fn,Textarea:qn,Tooltip:Gn,Card:Gs,Stepper:Vt},I0={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"}}},M0={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"}}},B0="ltr",E0={useSystemColorMode:!1,initialColorMode:"light",cssVarPrefix:"chakra"},Pa={semanticTokens:I0,direction:B0,...jt,components:F0,styles:M0,config:E0};function be(e){return typeof e=="function"}function D0(...e){return r=>e.reduce((a,o)=>o(a),r)}var R0=e=>function(...a){let o=[...a],i=a[a.length-1];return ft(i)&&o.length>1?o=o.slice(0,o.length-1):i=e,D0(...o.map(l=>s=>be(l)?l(s):H0(s,l)))(i)},j0=R0(Pa);function H0(...e){return ba({},...e,Ta)}function Ta(e,r,a,o){if((be(e)||be(r))&&Object.prototype.hasOwnProperty.call(o,a))return(...i)=>{const l=be(e)?e(...i):e,s=be(r)?r(...i):r;return ba({},l,s,Ta)}}function W0(e={}){const{strict:r=!0,errorMessage:a="useContext: `context` is undefined. Seems you forgot to wrap component within the Provider",name:o}=e,i=x.createContext(void 0);i.displayName=o;function l(){var s;const d=x.useContext(i);if(!d&&r){const v=new Error(a);throw v.name="ContextError",(s=Error.captureStackTrace)==null||s.call(Error,v,l),v}return d}return[i.Provider,l,i]}function V0(e){const{cssVarsRoot:r,theme:a,children:o}=e,i=x.useMemo(()=>ja(a),[a]);return g.jsxs(Ha,{theme:i,children:[g.jsx(L0,{root:r}),o]})}function L0({root:e=":host, :root"}){const r=[e,"[data-theme]"].join(",");return g.jsx(Ke,{styles:a=>({[r]:a.__cssVars})})}W0({name:"StylesContext",errorMessage:"useStyles: `styles` is undefined. Seems you forgot to wrap the components in `` "});function q0(){const{colorMode:e}=Wa();return g.jsx(Ke,{styles:r=>{const a=Va(r,"styles.global"),o=La(a,{theme:r,colorMode:e});return o?qa(o)(r):void 0}})}var Fa=x.createContext({getDocument(){return document},getWindow(){return window}});Fa.displayName="EnvironmentContext";function Ia(e){const{children:r,environment:a,disabled:o}=e,i=x.useRef(null),l=x.useMemo(()=>a||{getDocument:()=>{var d,v;return(v=(d=i.current)==null?void 0:d.ownerDocument)!=null?v:document},getWindow:()=>{var d,v;return(v=(d=i.current)==null?void 0:d.ownerDocument.defaultView)!=null?v:window}},[a]),s=!o||!a;return g.jsxs(Fa.Provider,{value:l,children:[r,s&&g.jsx("span",{id:"__chakra_env",hidden:!0,ref:i})]})}Ia.displayName="EnvironmentProvider";var O0=e=>{const{children:r,colorModeManager:a,portalZIndex:o,resetScope:i,resetCSS:l=!0,theme:s={},environment:d,cssVarsRoot:v,disableEnvironment:$,disableGlobalStyle:p}=e,S=g.jsx(Ia,{environment:d,disabled:$,children:r});return g.jsx(V0,{theme:s,cssVarsRoot:v,children:g.jsxs(ma,{colorModeManager:a,options:s.config,children:[l?g.jsx(dt,{scope:i}):g.jsx(st,{}),!p&&g.jsx(q0,{}),o?g.jsx(Oa,{zIndex:o,children:S}):S]})})},N0=e=>function({children:a,theme:o=e,toastOptions:i,...l}){return g.jsxs(O0,{theme:o,...l,children:[g.jsx(Na,{value:i==null?void 0:i.defaultOptions,children:a}),g.jsx(Ga,{...i})]})},G0=N0(Pa);function z(e,r,a=!1){e=String(e),r=String(r);const o=Array.from({length:21},(s,d)=>d*50),i=[0,5,10,15,20,25,30,35,40,45,50,55,59,64,68,73,77,82,86,95,100];return o.reduce((s,d,v)=>{const $=a?i[v]/100:1,p=a?50:i[o.length-1-v];return s[d]=`hsl(${e} ${r}% ${p}% / ${$})`,s},{})}const Fe={H:220,S:16},Ie={H:250,S:42},Me={H:47,S:42},Be={H:28,S:42},Ee={H:113,S:42},De={H:0,S:42},U0={base:z(Fe.H,Fe.S),baseAlpha:z(Fe.H,Fe.S,!0),accent:z(Ie.H,Ie.S),accentAlpha:z(Ie.H,Ie.S,!0),working:z(Me.H,Me.S),workingAlpha:z(Me.H,Me.S,!0),warning:z(Be.H,Be.S),warningAlpha:z(Be.H,Be.S,!0),ok:z(Ee.H,Ee.S),okAlpha:z(Ee.H,Ee.S,!0),error:z(De.H,De.S),errorAlpha:z(De.H,De.S,!0)},{definePartsStyle:Y0,defineMultiStyleConfig:K0}=b(Ya.keys),X0=t({border:"none"}),Z0=t(e=>{const{colorScheme:r}=e;return{fontWeight:"600",fontSize:"sm",border:"none",borderRadius:"base",bg:n(`${r}.200`,`${r}.700`)(e),color:n(`${r}.900`,`${r}.100`)(e),_hover:{bg:n(`${r}.250`,`${r}.650`)(e)},_expanded:{bg:n(`${r}.250`,`${r}.650`)(e),borderBottomRadius:"none",_hover:{bg:n(`${r}.300`,`${r}.600`)(e)}}}}),J0=t(e=>{const{colorScheme:r}=e;return{bg:n(`${r}.100`,`${r}.800`)(e),borderRadius:"base",borderTopRadius:"none"}}),Q0=t({}),ed=Y0(e=>({container:X0,button:Z0(e),panel:J0(e),icon:Q0})),rd=K0({variants:{invokeAI:ed},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),ad=t(e=>{const{colorScheme:r}=e;if(r==="base"){const o={bg:n("base.150","base.700")(e),color:n("base.500","base.500")(e),svg:{fill:n("base.500","base.500")(e)},opacity:1};return{bg:n("base.250","base.600")(e),color:n("base.850","base.100")(e),borderRadius:"base",svg:{fill:n("base.850","base.100")(e)},_hover:{bg:n("base.300","base.500")(e),color:n("base.900","base.50")(e),svg:{fill:n("base.900","base.50")(e)},_disabled:o},_disabled:o}}const a={bg:n(`${r}.250`,`${r}.700`)(e),color:n(`${r}.50`,`${r}.500`)(e),svg:{fill:n(`${r}.50`,`${r}.500`)(e),filter:"unset"},opacity:1,filter:n(void 0,"saturate(65%)")(e)};return{bg:n(`${r}.400`,`${r}.600`)(e),color:n("base.50","base.100")(e),borderRadius:"base",svg:{fill:n("base.50","base.100")(e)},_disabled:a,_hover:{bg:n(`${r}.500`,`${r}.500`)(e),color:n("white","base.50")(e),svg:{fill:n("white","base.50")(e)},_disabled:a}}}),td=t(e=>{const{colorScheme:r}=e,a=n("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"}}}),od=h({variants:{invokeAI:ad,invokeAIOutline:td},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),{definePartsStyle:nd,defineMultiStyleConfig:id}=b(Ka.keys),ld=t(e=>{const{colorScheme:r}=e;return{bg:n("base.200","base.700")(e),borderColor:n("base.200","base.700")(e),color:n("base.900","base.100")(e),_checked:{bg:n(`${r}.300`,`${r}.600`)(e),borderColor:n(`${r}.300`,`${r}.600`)(e),color:n(`${r}.900`,`${r}.100`)(e),_hover:{bg:n(`${r}.400`,`${r}.500`)(e),borderColor:n(`${r}.400`,`${r}.500`)(e)},_disabled:{borderColor:"transparent",bg:"whiteAlpha.300",color:"whiteAlpha.500"}},_indeterminate:{bg:n(`${r}.300`,`${r}.600`)(e),borderColor:n(`${r}.300`,`${r}.600`)(e),color:n(`${r}.900`,`${r}.100`)(e)},_disabled:{bg:"whiteAlpha.100",borderColor:"transparent"},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:n("error.600","error.300")(e)}}}),sd=nd(e=>({control:ld(e)})),dd=id({variants:{invokeAI:sd},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{definePartsStyle:cd,defineMultiStyleConfig:bd}=b(Xa.keys),vd=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),ud=t(e=>({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6},"::selection":{color:n("accent.900","accent.50")(e),bg:n("accent.200","accent.400")(e)}})),fd=t({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),md=cd(e=>({preview:vd,input:ud(e),textarea:fd})),hd=bd({variants:{invokeAI:md},defaultProps:{size:"sm",variant:"invokeAI"}}),gd=t(e=>({fontSize:"sm",marginEnd:0,mb:1,fontWeight:"400",transitionProperty:"common",transitionDuration:"normal",whiteSpace:"nowrap",_disabled:{opacity:.4},color:n("base.700","base.300")(e)})),yd=h({variants:{invokeAI:gd},defaultProps:{variant:"invokeAI"}}),Je=e=>({outline:"none",borderWidth:2,borderStyle:"solid",borderColor:n("base.200","base.800")(e),bg:n("base.50","base.900")(e),borderRadius:"base",color:n("base.900","base.100")(e),boxShadow:"none",_hover:{borderColor:n("base.300","base.600")(e)},_focus:{borderColor:n("accent.200","accent.600")(e),boxShadow:"none",_hover:{borderColor:n("accent.300","accent.500")(e)}},_invalid:{borderColor:n("error.300","error.600")(e),boxShadow:"none",_hover:{borderColor:n("error.400","error.500")(e)}},_disabled:{borderColor:n("base.300","base.700")(e),bg:n("base.300","base.700")(e),color:n("base.600","base.400")(e),_hover:{borderColor:n("base.300","base.700")(e)}},_placeholder:{color:n("base.700","base.400")(e)},"::selection":{bg:n("accent.200","accent.400")(e)}}),{definePartsStyle:pd,defineMultiStyleConfig:Sd}=b(Za.keys),xd=pd(e=>({field:Je(e)})),$d=Sd({variants:{invokeAI:xd},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:kd,definePartsStyle:_d}=b(Ja.keys),wd=t(e=>({bg:n("blackAlpha.700","blackAlpha.700")(e)})),zd=t({}),Cd=t(e=>({layerStyle:"first",maxH:"80vh"})),Ad=t(e=>({fontWeight:"600",fontSize:"lg",layerStyle:"first",borderTopRadius:"base",borderInlineEndRadius:"base"})),Pd=t({}),Td=t({overflowY:"scroll"}),Fd=t({}),Id=_d(e=>({overlay:wd(e),dialogContainer:zd,dialog:Cd(e),header:Ad(e),closeButton:Pd,body:Td,footer:Fd})),Md=kd({variants:{invokeAI:Id},defaultProps:{variant:"invokeAI",size:"lg"}}),{defineMultiStyleConfig:Bd,definePartsStyle:Ed}=b(Qa.keys),Dd=t(e=>({height:8})),Rd=t(e=>({border:"none",fontWeight:"600",height:"auto",py:1,ps:2,pe:6,...Je(e)})),jd=t(e=>({display:"flex"})),Hd=t(e=>({border:"none",px:2,py:0,mx:-2,my:0,svg:{color:n("base.700","base.300")(e),width:2.5,height:2.5,_hover:{color:n("base.900","base.100")(e)}}})),Wd=Ed(e=>({root:Dd(e),field:Rd(e),stepperGroup:jd(e),stepper:Hd(e)})),Vd=Bd({variants:{invokeAI:Wd},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:Ld,definePartsStyle:qd}=b(et.keys),Od=m("popper-bg"),Nd=m("popper-arrow-bg"),Gd=m("popper-arrow-shadow-color"),Ud=t(e=>({[Nd.variable]:n("colors.base.100","colors.base.800")(e),[Od.variable]:n("colors.base.100","colors.base.800")(e),[Gd.variable]:n("colors.base.400","colors.base.600")(e),minW:"unset",width:"unset",p:4,bg:n("base.100","base.800")(e),border:"none",shadow:"dark-lg"})),Yd=qd(e=>({content:Ud(e)})),Kd=Ld({variants:{invokeAI:Yd},defaultProps:{variant:"invokeAI"}}),{defineMultiStyleConfig:Xd,definePartsStyle:Zd}=b(rt.keys),Jd=t(e=>({bg:"accentAlpha.500"})),Qd=t(e=>{const{colorScheme:r}=e;return{bg:n(`${r}.200`,`${r}.700`)(e)}}),ec=Zd(e=>({filledTrack:Jd(e),track:Qd(e)})),rc=Xd({variants:{invokeAI:ec},defaultProps:{variant:"invokeAI"}}),ac={"::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"},{definePartsStyle:tc,defineMultiStyleConfig:oc}=b(at.keys),nc=t(e=>({color:n("base.200","base.300")(e)})),ic=t(e=>({fontWeight:"600",...Je(e)})),lc=tc(e=>({field:ic(e),icon:nc(e)})),sc=oc({variants:{invokeAI:lc},defaultProps:{size:"sm",variant:"invokeAI"}}),sa=c("skeleton-start-color"),da=c("skeleton-end-color"),dc=t({borderRadius:"base",maxW:"full",maxH:"full",_light:{[sa.variable]:"colors.base.250",[da.variable]:"colors.base.450"},_dark:{[sa.variable]:"colors.base.700",[da.variable]:"colors.base.500"}}),cc=h({variants:{invokeAI:dc},defaultProps:{variant:"invokeAI"}}),{definePartsStyle:bc,defineMultiStyleConfig:vc}=b(tt.keys),uc=t(e=>({bg:n("base.400","base.600")(e),h:1.5})),fc=t(e=>{const{colorScheme:r}=e;return{bg:n(`${r}.400`,`${r}.600`)(e),h:1.5}}),mc=t(e=>({w:2,h:4,bg:n("base.50","base.100")(e)})),hc=t(e=>({fontSize:"2xs",fontWeight:"500",color:n("base.700","base.400")(e),mt:2,insetInlineStart:"unset"})),gc=bc(e=>({container:{_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"}},track:uc(e),filledTrack:fc(e),thumb:mc(e),mark:hc(e)})),yc=vc({variants:{invokeAI:gc},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:pc,definePartsStyle:Sc}=b(ot.keys),xc=t(e=>{const{colorScheme:r}=e;return{bg:n("base.300","base.600")(e),_focusVisible:{boxShadow:"none"},_checked:{bg:n(`${r}.400`,`${r}.500`)(e)}}}),$c=t(e=>{const{colorScheme:r}=e;return{bg:n(`${r}.50`,`${r}.50`)(e)}}),kc=Sc(e=>({container:{},track:xc(e),thumb:$c(e)})),_c=pc({variants:{invokeAI:kc},defaultProps:{size:"md",variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:wc,definePartsStyle:zc}=b(nt.keys),Cc=t(e=>({display:"flex",columnGap:4})),Ac=t(e=>({})),Pc=t(e=>{const{colorScheme:r}=e;return{display:"flex",flexDirection:"column",gap:1,color:n("base.700","base.400")(e),button:{fontSize:"sm",padding:2,borderRadius:"base",textShadow:n("0 0 0.3rem var(--invokeai-colors-accent-100)","0 0 0.3rem var(--invokeai-colors-accent-900)")(e),svg:{fill:n("base.700","base.300")(e)},_selected:{bg:n("accent.400","accent.600")(e),color:n("base.50","base.100")(e),svg:{fill:n("base.50","base.100")(e),filter:n(`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:n("accent.500","accent.500")(e),color:n("white","base.50")(e),svg:{fill:n("white","base.50")(e)}}},_hover:{bg:n("base.100","base.800")(e),color:n("base.900","base.50")(e),svg:{fill:n("base.800","base.100")(e)}}}}}),Tc=t(e=>({padding:0,height:"100%"})),Fc=zc(e=>({root:Cc(e),tab:Ac(e),tablist:Pc(e),tabpanel:Tc(e)})),Ic=wc({variants:{invokeAI:Fc},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),Mc=t(e=>({color:n("base.500","base.400")(e)})),Bc=h({variants:{subtext:Mc}}),Ec=t(e=>({...Je(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%, - var(--invokeai-colors-base-200) 100%)`},_dark:{"::-webkit-resizer":{backgroundImage:`linear-gradient(135deg, - var(--invokeai-colors-base-900) 0%, - var(--invokeai-colors-base-900) 70%, - var(--invokeai-colors-base-800) 70%, - var(--invokeai-colors-base-800) 100%)`}}})),Dc=h({variants:{invokeAI:Ec},defaultProps:{size:"md",variant:"invokeAI"}}),Rc=m("popper-arrow-bg"),jc=t(e=>({borderRadius:"base",shadow:"dark-lg",bg:n("base.700","base.200")(e),[Rc.variable]:n("colors.base.700","colors.base.200")(e),pb:1.5})),Hc=h({baseStyle:jc}),Wc={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"}}},styles:{global:()=>({layerStyle:"body","*":{...ac}})},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)"},nodeSelectedOutline:"0 0 0 2px var(--invokeai-colors-accent-450)"},colors:U0,components:{Button:od,Input:$d,Editable:hd,Textarea:Dc,Tabs:Ic,Progress:rc,Accordion:rd,FormLabel:yd,Switch:_c,NumberInput:Vd,Select:sc,Skeleton:cc,Slider:yc,Popover:Kd,Modal:Md,Checkbox:dd,Menu:it,Text:Bc,Tooltip:Hc}};const Vc=()=>x.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)"}}}}}),[]),Lc=fa("@@invokeai-color-mode");function Nc({children:e}){const{i18n:r}=Ua(),a=r.dir(),o=x.useMemo(()=>j0({...Wc,direction:a}),[a]);x.useEffect(()=>{document.body.dir=a},[a]);const i=Vc();return g.jsx(lt,{theme:i,children:g.jsx(G0,{theme:o,colorModeManager:Lc,children:e})})}export{Nc as default}; diff --git a/invokeai/frontend/web/dist/assets/index-bad7ff83.js b/invokeai/frontend/web/dist/assets/index-bad7ff83.js new file mode 100644 index 0000000000..604784e6c9 --- /dev/null +++ b/invokeai/frontend/web/dist/assets/index-bad7ff83.js @@ -0,0 +1,125 @@ +function R8(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 Ee=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function al(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function nF(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){if(this instanceof r){var i=[null];i.push.apply(i,arguments);var o=Function.bind.apply(t,i);return new o}return 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 O8={exports:{}},Sy={},M8={exports:{}},Oe={};/** + * @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 Jf=Symbol.for("react.element"),rF=Symbol.for("react.portal"),iF=Symbol.for("react.fragment"),oF=Symbol.for("react.strict_mode"),sF=Symbol.for("react.profiler"),aF=Symbol.for("react.provider"),lF=Symbol.for("react.context"),uF=Symbol.for("react.forward_ref"),cF=Symbol.for("react.suspense"),dF=Symbol.for("react.memo"),fF=Symbol.for("react.lazy"),N3=Symbol.iterator;function hF(e){return e===null||typeof e!="object"?null:(e=N3&&e[N3]||e["@@iterator"],typeof e=="function"?e:null)}var I8={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},N8=Object.assign,D8={};function dc(e,t,n){this.props=e,this.context=t,this.refs=D8,this.updater=n||I8}dc.prototype.isReactComponent={};dc.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")};dc.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function L8(){}L8.prototype=dc.prototype;function lw(e,t,n){this.props=e,this.context=t,this.refs=D8,this.updater=n||I8}var uw=lw.prototype=new L8;uw.constructor=lw;N8(uw,dc.prototype);uw.isPureReactComponent=!0;var D3=Array.isArray,$8=Object.prototype.hasOwnProperty,cw={current:null},F8={key:!0,ref:!0,__self:!0,__source:!0};function B8(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)$8.call(t,r)&&!F8.hasOwnProperty(r)&&(i[r]=t[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,U=O[j];if(0>>1;ji(X,L))Yi(B,X)?(O[j]=B,O[Y]=L,j=Y):(O[j]=X,O[W]=L,j=W);else if(Yi(B,L))O[j]=B,O[Y]=L,j=Y;else break e}}return D}function i(O,D){var L=O.sortIndex-D.sortIndex;return L!==0?L:O.id-D.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,S=typeof setTimeout=="function"?setTimeout:null,v=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(O){for(var D=n(u);D!==null;){if(D.callback===null)r(u);else if(D.startTime<=O)r(u),D.sortIndex=D.expirationTime,t(l,D);else break;D=n(u)}}function b(O){if(m=!1,g(O),!p)if(n(l)!==null)p=!0,M(_);else{var D=n(u);D!==null&&N(b,D.startTime-O)}}function _(O,D){p=!1,m&&(m=!1,v(T),T=-1),h=!0;var L=f;try{for(g(D),d=n(l);d!==null&&(!(d.expirationTime>D)||O&&!A());){var j=d.callback;if(typeof j=="function"){d.callback=null,f=d.priorityLevel;var U=j(d.expirationTime<=D);D=e.unstable_now(),typeof U=="function"?d.callback=U:d===n(l)&&r(l),g(D)}else r(l);d=n(l)}if(d!==null)var G=!0;else{var W=n(u);W!==null&&N(b,W.startTime-D),G=!1}return G}finally{d=null,f=L,h=!1}}var w=!1,x=null,T=-1,P=5,E=-1;function A(){return!(e.unstable_now()-EO||125j?(O.sortIndex=L,t(u,O),n(l)===null&&O===n(u)&&(m?(v(T),T=-1):m=!0,N(b,L-j))):(O.sortIndex=U,t(l,O),p||h||(p=!0,M(_))),O},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(O){var D=f;return function(){var L=f;f=D;try{return O.apply(this,arguments)}finally{f=L}}}})(U8);z8.exports=U8;var CF=z8.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 G8=k,kr=CF;function Z(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"),CS=Object.prototype.hasOwnProperty,TF=/^[: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]*$/,F3={},B3={};function EF(e){return CS.call(B3,e)?!0:CS.call(F3,e)?!1:TF.test(e)?B3[e]=!0:(F3[e]=!0,!1)}function PF(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 AF(e,t,n,r){if(t===null||typeof t>"u"||PF(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 rr(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 kn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){kn[e]=new rr(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];kn[t]=new rr(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){kn[e]=new rr(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){kn[e]=new rr(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){kn[e]=new rr(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){kn[e]=new rr(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){kn[e]=new rr(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){kn[e]=new rr(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){kn[e]=new rr(e,5,!1,e.toLowerCase(),null,!1,!1)});var fw=/[\-:]([a-z])/g;function hw(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(fw,hw);kn[t]=new rr(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(fw,hw);kn[t]=new rr(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(fw,hw);kn[t]=new rr(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){kn[e]=new rr(e,1,!1,e.toLowerCase(),null,!1,!1)});kn.xlinkHref=new rr("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){kn[e]=new rr(e,1,!1,e.toLowerCase(),null,!0,!0)});function pw(e,t,n,r){var i=kn.hasOwnProperty(t)?kn[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{D1=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?ad(e):""}function kF(e){switch(e.tag){case 5:return ad(e.type);case 16:return ad("Lazy");case 13:return ad("Suspense");case 19:return ad("SuspenseList");case 0:case 2:case 15:return e=L1(e.type,!1),e;case 11:return e=L1(e.type.render,!1),e;case 1:return e=L1(e.type,!0),e;default:return""}}function AS(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 eu:return"Fragment";case Jl:return"Portal";case TS:return"Profiler";case gw:return"StrictMode";case ES:return"Suspense";case PS:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case W8:return(e.displayName||"Context")+".Consumer";case q8:return(e._context.displayName||"Context")+".Provider";case mw:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case yw:return t=e.displayName||null,t!==null?t:AS(e.type)||"Memo";case ls:t=e._payload,e=e._init;try{return AS(e(t))}catch{}}return null}function RF(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 AS(t);case 8:return t===gw?"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 Ls(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function X8(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function OF(e){var t=X8(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 Qh(e){e._valueTracker||(e._valueTracker=OF(e))}function Y8(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=X8(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ig(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 kS(e,t){var n=t.checked;return Rt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function V3(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Ls(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 Q8(e,t){t=t.checked,t!=null&&pw(e,"checked",t,!1)}function RS(e,t){Q8(e,t);var n=Ls(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")?OS(e,t.type,n):t.hasOwnProperty("defaultValue")&&OS(e,t.type,Ls(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function z3(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 OS(e,t,n){(t!=="number"||Ig(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ld=Array.isArray;function yu(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Zh.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Bd(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var yd={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},MF=["Webkit","ms","Moz","O"];Object.keys(yd).forEach(function(e){MF.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),yd[t]=yd[e]})});function tA(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||yd.hasOwnProperty(e)&&yd[e]?(""+t).trim():t+"px"}function nA(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=tA(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var IF=Rt({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 NS(e,t){if(t){if(IF[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Z(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Z(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(Z(61))}if(t.style!=null&&typeof t.style!="object")throw Error(Z(62))}}function DS(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 LS=null;function vw(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var $S=null,vu=null,bu=null;function H3(e){if(e=nh(e)){if(typeof $S!="function")throw Error(Z(280));var t=e.stateNode;t&&(t=Ty(t),$S(e.stateNode,e.type,t))}}function rA(e){vu?bu?bu.push(e):bu=[e]:vu=e}function iA(){if(vu){var e=vu,t=bu;if(bu=vu=null,H3(e),t)for(e=0;e>>=0,e===0?32:31-(GF(e)/HF|0)|0}var Jh=64,ep=4194304;function ud(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 $g(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=ud(a):(o&=s,o!==0&&(r=ud(o)))}else s=n&~i,s!==0?r=ud(s):o!==0&&(r=ud(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 eh(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-mi(t),e[t]=n}function XF(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=bd),e5=String.fromCharCode(32),t5=!1;function CA(e,t){switch(e){case"keyup":return xB.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function TA(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var tu=!1;function TB(e,t){switch(e){case"compositionend":return TA(t);case"keypress":return t.which!==32?null:(t5=!0,e5);case"textInput":return e=t.data,e===e5&&t5?null:e;default:return null}}function EB(e,t){if(tu)return e==="compositionend"||!Ew&&CA(e,t)?(e=wA(),eg=xw=vs=null,tu=!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=o5(n)}}function kA(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?kA(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function RA(){for(var e=window,t=Ig();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ig(e.document)}return t}function Pw(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 DB(e){var t=RA(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&kA(n.ownerDocument.documentElement,n)){if(r!==null&&Pw(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=s5(n,o);var s=s5(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,nu=null,US=null,_d=null,GS=!1;function a5(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;GS||nu==null||nu!==Ig(r)||(r=nu,"selectionStart"in r&&Pw(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}),_d&&Hd(_d,r)||(_d=r,r=jg(US,"onSelect"),0ou||(e.current=YS[ou],YS[ou]=null,ou--)}function lt(e,t){ou++,YS[ou]=e.current,e.current=t}var $s={},Bn=Qs($s),pr=Qs(!1),Ha=$s;function ju(e,t){var n=e.type.contextTypes;if(!n)return $s;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 gr(e){return e=e.childContextTypes,e!=null}function zg(){ht(pr),ht(Bn)}function p5(e,t,n){if(Bn.current!==$s)throw Error(Z(168));lt(Bn,t),lt(pr,n)}function BA(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(Z(108,RF(e)||"Unknown",i));return Rt({},n,r)}function Ug(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||$s,Ha=Bn.current,lt(Bn,e),lt(pr,pr.current),!0}function g5(e,t,n){var r=e.stateNode;if(!r)throw Error(Z(169));n?(e=BA(e,t,Ha),r.__reactInternalMemoizedMergedChildContext=e,ht(pr),ht(Bn),lt(Bn,e)):ht(pr),lt(pr,n)}var _o=null,Ey=!1,Y1=!1;function jA(e){_o===null?_o=[e]:_o.push(e)}function WB(e){Ey=!0,jA(e)}function Zs(){if(!Y1&&_o!==null){Y1=!0;var e=0,t=Ye;try{var n=_o;for(Ye=1;e>=s,i-=s,To=1<<32-mi(t)+i|n<T?(P=x,x=null):P=x.sibling;var E=f(v,x,g[T],b);if(E===null){x===null&&(x=P);break}e&&x&&E.alternate===null&&t(v,x),y=o(E,y,T),w===null?_=E:w.sibling=E,w=E,x=P}if(T===g.length)return n(v,x),St&&Sa(v,T),_;if(x===null){for(;TT?(P=x,x=null):P=x.sibling;var A=f(v,x,E.value,b);if(A===null){x===null&&(x=P);break}e&&x&&A.alternate===null&&t(v,x),y=o(A,y,T),w===null?_=A:w.sibling=A,w=A,x=P}if(E.done)return n(v,x),St&&Sa(v,T),_;if(x===null){for(;!E.done;T++,E=g.next())E=d(v,E.value,b),E!==null&&(y=o(E,y,T),w===null?_=E:w.sibling=E,w=E);return St&&Sa(v,T),_}for(x=r(v,x);!E.done;T++,E=g.next())E=h(x,v,T,E.value,b),E!==null&&(e&&E.alternate!==null&&x.delete(E.key===null?T:E.key),y=o(E,y,T),w===null?_=E:w.sibling=E,w=E);return e&&x.forEach(function($){return t(v,$)}),St&&Sa(v,T),_}function S(v,y,g,b){if(typeof g=="object"&&g!==null&&g.type===eu&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Yh:e:{for(var _=g.key,w=y;w!==null;){if(w.key===_){if(_=g.type,_===eu){if(w.tag===7){n(v,w.sibling),y=i(w,g.props.children),y.return=v,v=y;break e}}else if(w.elementType===_||typeof _=="object"&&_!==null&&_.$$typeof===ls&&w5(_)===w.type){n(v,w.sibling),y=i(w,g.props),y.ref=$c(v,w,g),y.return=v,v=y;break e}n(v,w);break}else t(v,w);w=w.sibling}g.type===eu?(y=$a(g.props.children,v.mode,b,g.key),y.return=v,v=y):(b=lg(g.type,g.key,g.props,null,v.mode,b),b.ref=$c(v,y,g),b.return=v,v=b)}return s(v);case Jl: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(v,y.sibling),y=i(y,g.children||[]),y.return=v,v=y;break e}else{n(v,y);break}else t(v,y);y=y.sibling}y=ib(g,v.mode,b),y.return=v,v=y}return s(v);case ls:return w=g._init,S(v,y,w(g._payload),b)}if(ld(g))return p(v,y,g,b);if(Mc(g))return m(v,y,g,b);ap(v,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,y!==null&&y.tag===6?(n(v,y.sibling),y=i(y,g),y.return=v,v=y):(n(v,y),y=rb(g,v.mode,b),y.return=v,v=y),s(v)):n(v,y)}return S}var zu=KA(!0),XA=KA(!1),rh={},Xi=Qs(rh),Xd=Qs(rh),Yd=Qs(rh);function Ra(e){if(e===rh)throw Error(Z(174));return e}function Lw(e,t){switch(lt(Yd,t),lt(Xd,e),lt(Xi,rh),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:IS(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=IS(t,e)}ht(Xi),lt(Xi,t)}function Uu(){ht(Xi),ht(Xd),ht(Yd)}function YA(e){Ra(Yd.current);var t=Ra(Xi.current),n=IS(t,e.type);t!==n&&(lt(Xd,e),lt(Xi,n))}function $w(e){Xd.current===e&&(ht(Xi),ht(Xd))}var Et=Qs(0);function Xg(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 Q1=[];function Fw(){for(var e=0;en?n:4,e(!0);var r=Z1.transition;Z1.transition={};try{e(!1),t()}finally{Ye=n,Z1.transition=r}}function f9(){return Qr().memoizedState}function QB(e,t,n){var r=As(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},h9(e))p9(t,n);else if(n=GA(e,t,n,r),n!==null){var i=Zn();yi(n,e,r,i),g9(n,t,r)}}function ZB(e,t,n){var r=As(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(h9(e))p9(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,wi(a,s)){var l=t.interleaved;l===null?(i.next=i,Nw(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=GA(e,t,i,r),n!==null&&(i=Zn(),yi(n,e,r,i),g9(n,t,r))}}function h9(e){var t=e.alternate;return e===kt||t!==null&&t===kt}function p9(e,t){wd=Yg=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function g9(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Sw(e,n)}}var Qg={readContext:Yr,useCallback:In,useContext:In,useEffect:In,useImperativeHandle:In,useInsertionEffect:In,useLayoutEffect:In,useMemo:In,useReducer:In,useRef:In,useState:In,useDebugValue:In,useDeferredValue:In,useTransition:In,useMutableSource:In,useSyncExternalStore:In,useId:In,unstable_isNewReconciler:!1},JB={readContext:Yr,useCallback:function(e,t){return Di().memoizedState=[e,t===void 0?null:t],e},useContext:Yr,useEffect:C5,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ig(4194308,4,a9.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ig(4194308,4,e,t)},useInsertionEffect:function(e,t){return ig(4,2,e,t)},useMemo:function(e,t){var n=Di();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Di();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=QB.bind(null,kt,e),[r.memoizedState,e]},useRef:function(e){var t=Di();return e={current:e},t.memoizedState=e},useState:x5,useDebugValue:Uw,useDeferredValue:function(e){return Di().memoizedState=e},useTransition:function(){var e=x5(!1),t=e[0];return e=YB.bind(null,e[1]),Di().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=kt,i=Di();if(St){if(n===void 0)throw Error(Z(407));n=n()}else{if(n=t(),gn===null)throw Error(Z(349));Wa&30||JA(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,C5(t9.bind(null,r,o,e),[e]),r.flags|=2048,Jd(9,e9.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Di(),t=gn.identifierPrefix;if(St){var n=Eo,r=To;n=(r&~(1<<32-mi(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Qd++,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[Vi]=t,e[Kd]=r,C9(e,t,!1,!1),t.stateNode=e;e:{switch(s=DS(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;iHu&&(t.flags|=128,r=!0,Fc(o,!1),t.lanes=4194304)}else{if(!r)if(e=Xg(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Fc(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!St)return Nn(t),null}else 2*Bt()-o.renderingStartTime>Hu&&n!==1073741824&&(t.flags|=128,r=!0,Fc(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=Bt(),t.sibling=null,n=Et.current,lt(Et,r?n&1|2:n&1),t):(Nn(t),null);case 22:case 23:return Xw(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Cr&1073741824&&(Nn(t),t.subtreeFlags&6&&(t.flags|=8192)):Nn(t),null;case 24:return null;case 25:return null}throw Error(Z(156,t.tag))}function aj(e,t){switch(kw(t),t.tag){case 1:return gr(t.type)&&zg(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Uu(),ht(pr),ht(Bn),Fw(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return $w(t),null;case 13:if(ht(Et),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Z(340));Vu()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ht(Et),null;case 4:return Uu(),null;case 10:return Iw(t.type._context),null;case 22:case 23:return Xw(),null;case 24:return null;default:return null}}var up=!1,Fn=!1,lj=typeof WeakSet=="function"?WeakSet:Set,ae=null;function uu(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){It(e,t,r)}else n.current=null}function l_(e,t,n){try{n()}catch(r){It(e,t,r)}}var I5=!1;function uj(e,t){if(HS=Fg,e=RA(),Pw(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(qS={focusedElem:e,selectionRange:n},Fg=!1,ae=t;ae!==null;)if(t=ae,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,ae=e;else for(;ae!==null;){t=ae;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,S=p.memoizedState,v=t.stateNode,y=v.getSnapshotBeforeUpdate(t.elementType===t.type?m:ai(t.type,m),S);v.__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(Z(163))}}catch(b){It(t,t.return,b)}if(e=t.sibling,e!==null){e.return=t.return,ae=e;break}ae=t.return}return p=I5,I5=!1,p}function xd(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&&l_(t,n,o)}i=i.next}while(i!==r)}}function ky(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 u_(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 P9(e){var t=e.alternate;t!==null&&(e.alternate=null,P9(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Vi],delete t[Kd],delete t[XS],delete t[HB],delete t[qB])),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 A9(e){return e.tag===5||e.tag===3||e.tag===4}function N5(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||A9(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 c_(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=Vg));else if(r!==4&&(e=e.child,e!==null))for(c_(e,t,n),e=e.sibling;e!==null;)c_(e,t,n),e=e.sibling}function d_(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(d_(e,t,n),e=e.sibling;e!==null;)d_(e,t,n),e=e.sibling}var Tn=null,li=!1;function ts(e,t,n){for(n=n.child;n!==null;)k9(e,t,n),n=n.sibling}function k9(e,t,n){if(Ki&&typeof Ki.onCommitFiberUnmount=="function")try{Ki.onCommitFiberUnmount(_y,n)}catch{}switch(n.tag){case 5:Fn||uu(n,t);case 6:var r=Tn,i=li;Tn=null,ts(e,t,n),Tn=r,li=i,Tn!==null&&(li?(e=Tn,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Tn.removeChild(n.stateNode));break;case 18:Tn!==null&&(li?(e=Tn,n=n.stateNode,e.nodeType===8?X1(e.parentNode,n):e.nodeType===1&&X1(e,n),Ud(e)):X1(Tn,n.stateNode));break;case 4:r=Tn,i=li,Tn=n.stateNode.containerInfo,li=!0,ts(e,t,n),Tn=r,li=i;break;case 0:case 11:case 14:case 15:if(!Fn&&(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)&&l_(n,t,s),i=i.next}while(i!==r)}ts(e,t,n);break;case 1:if(!Fn&&(uu(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){It(n,t,a)}ts(e,t,n);break;case 21:ts(e,t,n);break;case 22:n.mode&1?(Fn=(r=Fn)||n.memoizedState!==null,ts(e,t,n),Fn=r):ts(e,t,n);break;default:ts(e,t,n)}}function D5(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new lj),t.forEach(function(r){var i=vj.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function oi(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=s),r&=~o}if(r=i,r=Bt()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*dj(r/1960))-r,10e?16:e,bs===null)var r=!1;else{if(e=bs,bs=null,em=0,Fe&6)throw Error(Z(331));var i=Fe;for(Fe|=4,ae=e.current;ae!==null;){var o=ae,s=o.child;if(ae.flags&16){var a=o.deletions;if(a!==null){for(var l=0;lBt()-Ww?La(e,0):qw|=n),mr(e,t)}function $9(e,t){t===0&&(e.mode&1?(t=ep,ep<<=1,!(ep&130023424)&&(ep=4194304)):t=1);var n=Zn();e=Fo(e,t),e!==null&&(eh(e,t,n),mr(e,n))}function yj(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),$9(e,n)}function vj(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(Z(314))}r!==null&&r.delete(t),$9(e,n)}var F9;F9=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||pr.current)dr=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return dr=!1,oj(e,t,n);dr=!!(e.flags&131072)}else dr=!1,St&&t.flags&1048576&&VA(t,Hg,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;og(e,t),e=t.pendingProps;var i=ju(t,Bn.current);_u(t,n),i=jw(null,t,r,e,i,n);var o=Vw();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,gr(r)?(o=!0,Ug(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Dw(t),i.updater=Py,t.stateNode=i,i._reactInternals=t,t_(t,r,e,n),t=i_(null,t,r,!0,o,n)):(t.tag=0,St&&o&&Aw(t),Yn(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(og(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=Sj(r),e=ai(r,e),i){case 0:t=r_(null,t,r,e,n);break e;case 1:t=R5(null,t,r,e,n);break e;case 11:t=A5(null,t,r,e,n);break e;case 14:t=k5(null,t,r,ai(r.type,e),n);break e}throw Error(Z(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ai(r,i),r_(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ai(r,i),R5(e,t,r,i,n);case 3:e:{if(_9(t),e===null)throw Error(Z(387));r=t.pendingProps,o=t.memoizedState,i=o.element,HA(e,t),Kg(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=Gu(Error(Z(423)),t),t=O5(e,t,r,n,i);break e}else if(r!==i){i=Gu(Error(Z(424)),t),t=O5(e,t,r,n,i);break e}else for(Er=Ts(t.stateNode.containerInfo.firstChild),Pr=t,St=!0,ci=null,n=XA(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Vu(),r===i){t=Bo(e,t,n);break e}Yn(e,t,r,n)}t=t.child}return t;case 5:return YA(t),e===null&&ZS(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,s=i.children,WS(r,i)?s=null:o!==null&&WS(r,o)&&(t.flags|=32),S9(e,t),Yn(e,t,s,n),t.child;case 6:return e===null&&ZS(t),null;case 13:return w9(e,t,n);case 4:return Lw(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=zu(t,null,r,n):Yn(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ai(r,i),A5(e,t,r,i,n);case 7:return Yn(e,t,t.pendingProps,n),t.child;case 8:return Yn(e,t,t.pendingProps.children,n),t.child;case 12:return Yn(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,lt(qg,r._currentValue),r._currentValue=s,o!==null)if(wi(o.value,s)){if(o.children===i.children&&!pr.current){t=Bo(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=ko(-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),JS(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(Z(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),JS(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}Yn(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,_u(t,n),i=Yr(i),r=r(i),t.flags|=1,Yn(e,t,r,n),t.child;case 14:return r=t.type,i=ai(r,t.pendingProps),i=ai(r.type,i),k5(e,t,r,i,n);case 15:return v9(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ai(r,i),og(e,t),t.tag=1,gr(r)?(e=!0,Ug(t)):e=!1,_u(t,n),WA(t,r,i),t_(t,r,i,n),i_(null,t,r,!0,e,n);case 19:return x9(e,t,n);case 22:return b9(e,t,n)}throw Error(Z(156,t.tag))};function B9(e,t){return dA(e,t)}function bj(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 Wr(e,t,n,r){return new bj(e,t,n,r)}function Qw(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Sj(e){if(typeof e=="function")return Qw(e)?1:0;if(e!=null){if(e=e.$$typeof,e===mw)return 11;if(e===yw)return 14}return 2}function ks(e,t){var n=e.alternate;return n===null?(n=Wr(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 lg(e,t,n,r,i,o){var s=2;if(r=e,typeof e=="function")Qw(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case eu:return $a(n.children,i,o,t);case gw:s=8,i|=8;break;case TS:return e=Wr(12,n,t,i|2),e.elementType=TS,e.lanes=o,e;case ES:return e=Wr(13,n,t,i),e.elementType=ES,e.lanes=o,e;case PS:return e=Wr(19,n,t,i),e.elementType=PS,e.lanes=o,e;case K8:return Oy(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case q8:s=10;break e;case W8:s=9;break e;case mw:s=11;break e;case yw:s=14;break e;case ls:s=16,r=null;break e}throw Error(Z(130,e==null?e:typeof e,""))}return t=Wr(s,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function $a(e,t,n,r){return e=Wr(7,e,r,t),e.lanes=n,e}function Oy(e,t,n,r){return e=Wr(22,e,r,t),e.elementType=K8,e.lanes=n,e.stateNode={isHidden:!1},e}function rb(e,t,n){return e=Wr(6,e,null,t),e.lanes=n,e}function ib(e,t,n){return t=Wr(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function _j(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=F1(0),this.expirationTimes=F1(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=F1(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Zw(e,t,n,r,i,o,s,a,l){return e=new _j(e,t,n,a,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Wr(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Dw(o),e}function wj(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(U9)}catch(e){console.error(e)}}U9(),V8.exports=Ir;var zi=V8.exports;const cwe=al(zi);var U5=zi;xS.createRoot=U5.createRoot,xS.hydrateRoot=U5.hydrateRoot;const Pj="modulepreload",Aj=function(e,t){return new URL(e,t).href},G5={},G9=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=Aj(o,r),o in G5)return;G5[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":Pj,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})};var H9={exports:{}},q9={};/** + * @license React + * use-sync-external-store-shim.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 qu=k;function kj(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Rj=typeof Object.is=="function"?Object.is:kj,Oj=qu.useState,Mj=qu.useEffect,Ij=qu.useLayoutEffect,Nj=qu.useDebugValue;function Dj(e,t){var n=t(),r=Oj({inst:{value:n,getSnapshot:t}}),i=r[0].inst,o=r[1];return Ij(function(){i.value=n,i.getSnapshot=t,ob(i)&&o({inst:i})},[e,n,t]),Mj(function(){return ob(i)&&o({inst:i}),e(function(){ob(i)&&o({inst:i})})},[e]),Nj(n),n}function ob(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Rj(e,n)}catch{return!0}}function Lj(e,t){return t()}var $j=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Lj:Dj;q9.useSyncExternalStore=qu.useSyncExternalStore!==void 0?qu.useSyncExternalStore:$j;H9.exports=q9;var Fj=H9.exports,W9={exports:{}},K9={};/** + * @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 Ly=k,Bj=Fj;function jj(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Vj=typeof Object.is=="function"?Object.is:jj,zj=Bj.useSyncExternalStore,Uj=Ly.useRef,Gj=Ly.useEffect,Hj=Ly.useMemo,qj=Ly.useDebugValue;K9.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=Uj(null);if(o.current===null){var s={hasValue:!1,value:null};o.current=s}else s=o.current;o=Hj(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,Vj(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=zj(e,o[0],o[1]);return Gj(function(){s.hasValue=!0,s.value=a},[a]),qj(a),a};W9.exports=K9;var X9=W9.exports;const Wj=al(X9);function Kj(e){e()}let Y9=Kj;const Xj=e=>Y9=e,Yj=()=>Y9,H5=Symbol.for(`react-redux-context-${k.version}`),q5=globalThis;function Qj(){let e=q5[H5];return e||(e=k.createContext(null),q5[H5]=e),e}const Fs=new Proxy({},new Proxy({},{get(e,t){const n=Qj();return(r,...i)=>Reflect[t](n,...i)}}));function nx(e=Fs){return function(){return k.useContext(e)}}const Q9=nx(),Zj=()=>{throw new Error("uSES not initialized!")};let Z9=Zj;const Jj=e=>{Z9=e},eV=(e,t)=>e===t;function tV(e=Fs){const t=e===Fs?Q9:nx(e);return function(r,i={}){const{equalityFn:o=eV,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();k.useRef(!0);const h=k.useCallback({[r.name](m){return r(m)}}[r.name],[r,d,s]),p=Z9(u.addNestedSub,l.getState,c||l.getState,h,o);return k.useDebugValue(p),p}}const J9=tV();function rm(){return rm=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 W5={notify(){},get:()=>[]};function hV(e,t){let n,r=W5;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=fV())}function u(){n&&(n(),n=void 0,r.clear(),r=W5)}const c={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:s,isSubscribed:a,trySubscribe:l,tryUnsubscribe:u,getListeners:()=>r};return c}const pV=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",gV=pV?k.useLayoutEffect:k.useEffect;function K5(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function im(e,t){if(K5(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=hV(e);return{store:e,subscription:u,getServerState:r?()=>r:void 0,stabilityCheck:i,noopCheck:o}},[e,r,i,o]),a=k.useMemo(()=>e.getState(),[e]);gV(()=>{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||Fs;return Xe.createElement(l.Provider,{value:s},n)}function ok(e=Fs){const t=e===Fs?Q9:nx(e);return function(){const{store:r}=t();return r}}const sk=ok();function yV(e=Fs){const t=e===Fs?sk:ok(e);return function(){return t().dispatch}}const ak=yV();Jj(X9.useSyncExternalStoreWithSelector);Xj(zi.unstable_batchedUpdates);function pn(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:r0(e)?2:i0(e)?3:0}function Rs(e,t){return Bs(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function ug(e,t){return Bs(e)===2?e.get(t):e[t]}function lk(e,t,n){var r=Bs(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function uk(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function r0(e){return xV&&e instanceof Map}function i0(e){return CV&&e instanceof Set}function un(e){return e.o||e.t}function ux(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=dk(e);delete t[_e];for(var n=Cu(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=vV),Object.freeze(e),t&&jo(e,function(n,r){return ih(r,!0)},!0)),e}function vV(){pn(2)}function cx(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function Yi(e){var t=y_[e];return t||pn(18,e),t}function dx(e,t){y_[e]||(y_[e]=t)}function tf(){return rf}function sb(e,t){t&&(Yi("Patches"),e.u=[],e.s=[],e.v=t)}function om(e){m_(e),e.p.forEach(bV),e.p=null}function m_(e){e===rf&&(rf=e.l)}function X5(e){return rf={p:[],l:rf,h:e,m:!0,_:0}}function bV(e){var t=e[_e];t.i===0||t.i===1?t.j():t.g=!0}function ab(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.O||Yi("ES5").S(t,e,r),r?(n[_e].P&&(om(t),pn(4)),yr(e)&&(e=sm(t,e),t.l||am(t,e)),t.u&&Yi("Patches").M(n[_e].t,e,t.u,t.s)):e=sm(t,n,[]),om(t),t.u&&t.v(t.u,t.s),e!==s0?e:void 0}function sm(e,t,n){if(cx(t))return t;var r=t[_e];if(!r)return jo(t,function(a,l){return Y5(e,r,t,a,l,n)},!0),t;if(r.A!==e)return t;if(!r.P)return am(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=ux(r.k):r.o,o=i,s=!1;r.i===3&&(o=new Set(i),i.clear(),s=!0),jo(o,function(a,l){return Y5(e,r,i,a,l,n,s)}),am(e,i,!1),n&&e.u&&Yi("Patches").N(r,n,e.u,e.s)}return r.o}function Y5(e,t,n,r,i,o,s){if(er(i)){var a=sm(e,i,o&&t&&t.i!==3&&!Rs(t.R,r)?o.concat(r):void 0);if(lk(n,r,a),!er(a))return;e.m=!1}else s&&n.add(i);if(yr(i)&&!cx(i)){if(!e.h.D&&e._<1)return;sm(e,i),t&&t.A.l||am(e,i)}}function am(e,t,n){n===void 0&&(n=!1),!e.l&&e.h.D&&e.m&&ih(t,n)}function lb(e,t){var n=e[_e];return(n?un(n):e)[t]}function Q5(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 cr(e){e.P||(e.P=!0,e.l&&cr(e.l))}function ub(e){e.o||(e.o=ux(e.t))}function nf(e,t,n){var r=r0(t)?Yi("MapSet").F(t,n):i0(t)?Yi("MapSet").T(t,n):e.O?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:tf(),P:!1,I:!1,R:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=a,u=of;s&&(l=[a],u=dd);var c=Proxy.revocable(l,u),d=c.revoke,f=c.proxy;return a.k=f,a.j=d,f}(t,n):Yi("ES5").J(t,n);return(n?n.A:tf()).p.push(r),r}function o0(e){return er(e)||pn(22,e),function t(n){if(!yr(n))return n;var r,i=n[_e],o=Bs(n);if(i){if(!i.P&&(i.i<4||!Yi("ES5").K(i)))return i.t;i.I=!0,r=Z5(n,o),i.I=!1}else r=Z5(n,o);return jo(r,function(s,a){i&&ug(i.t,s)===a||lk(r,s,t(a))}),o===3?new Set(r):r}(e)}function Z5(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return ux(e)}function fx(){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[_e];return of.get(l,o)},set:function(l){var u=this[_e];of.set(u,o,l)}},a}function t(o){for(var s=o.length-1;s>=0;s--){var a=o[s][_e];if(!a.P)switch(a.i){case 5:r(a)&&cr(a);break;case 4:n(a)&&cr(a)}}}function n(o){for(var s=o.t,a=o.k,l=Cu(a),u=l.length-1;u>=0;u--){var c=l[u];if(c!==_e){var d=s[c];if(d===void 0&&!Rs(s,c))return!0;var f=a[c],h=f&&f[_e];if(h?h.t!==d:!uk(f,d))return!0}}var p=!!s[_e];return l.length!==Cu(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?v-1:0),g=1;g1?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=Yi("Patches").$;return er(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},e}(),Rr=new fk,hk=Rr.produce,gx=Rr.produceWithPatches.bind(Rr),EV=Rr.setAutoFreeze.bind(Rr),PV=Rr.setUseProxies.bind(Rr),v_=Rr.applyPatches.bind(Rr),AV=Rr.createDraft.bind(Rr),kV=Rr.finishDraft.bind(Rr);const Js=hk,dwe=Object.freeze(Object.defineProperty({__proto__:null,Immer:fk,applyPatches:v_,castDraft:_V,castImmutable:wV,createDraft:AV,current:o0,default:Js,enableAllPlugins:SV,enableES5:fx,enableMapSet:ck,enablePatches:hx,finishDraft:kV,freeze:ih,immerable:xu,isDraft:er,isDraftable:yr,nothing:s0,original:lx,produce:hk,produceWithPatches:gx,setAutoFreeze:EV,setUseProxies:PV},Symbol.toStringTag,{value:"Module"}));function sf(e){"@babel/helpers - typeof";return sf=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},sf(e)}function RV(e,t){if(sf(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(sf(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function OV(e){var t=RV(e,"string");return sf(t)==="symbol"?t:String(t)}function MV(e,t,n){return t=OV(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function t4(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 n4(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(En(1));return n(oh)(e,t)}if(typeof e!="function")throw new Error(En(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(En(3));return o}function d(m){if(typeof m!="function")throw new Error(En(4));if(l)throw new Error(En(5));var S=!0;return u(),a.push(m),function(){if(S){if(l)throw new Error(En(6));S=!1,u();var y=a.indexOf(m);a.splice(y,1),s=null}}}function f(m){if(!IV(m))throw new Error(En(7));if(typeof m.type>"u")throw new Error(En(8));if(l)throw new Error(En(9));try{l=!0,o=i(o,m)}finally{l=!1}for(var S=s=a,v=0;v"u")throw new Error(En(12));if(typeof n(void 0,{type:Wu.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(En(13))})}function pc(e){for(var t=Object.keys(e),n={},r=0;r"u")throw u&&u.type,new Error(En(14));d[h]=S,c=c||S!==m}return c=c||o.length!==Object.keys(l).length,c?d:l}}function i4(e,t){return function(){return t(e.apply(this,arguments))}}function gk(e,t){if(typeof e=="function")return i4(e,t);if(typeof e!="object"||e===null)throw new Error(En(16));var n={};for(var r in e){var i=e[r];typeof i=="function"&&(n[r]=i4(i,t))}return n}function Ku(){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 lm}function i(a,l){r(a)===lm&&(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 mk=function(t,n){return t===n};function FV(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(S,v){var y=t?t+"."+S:S;if(l){var g=i.some(function(b){return b instanceof RegExp?b.test(y):y===b});if(g)return"continue"}if(!n(v))return{value:{keyPath:y,value:v}};if(typeof v=="object"&&(s=Ck(v,y,n,r,i,o),s))return{value:s}},c=0,d=a;c-1}function ez(e){return""+e}function kk(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 tz(e){return typeof e=="function"}function Rk(e,t,n,r){n===void 0&&(n=[]);var i=typeof t=="function"?kk(t):[t,n,r],o=i[0],s=i[1],a=i[2],l;if(tz(e))l=function(){return b_(e())};else{var u=b_(e);l=function(){return u}}function c(d,f){d===void 0&&(d=l());var h=js([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(er(p)){var S=p,v=m(S,f);return v===void 0?p:v}else{if(yr(p))return Js(p,function(y){return m(y,f)});var v=m(p,f);if(v===void 0){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return v}return p},d)}return c.getInitialState=l,c}function nz(e,t){return e+"/"+t}function Pt(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:b_(e.initialState),r=e.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(c){var d=r[c],f=nz(t,c),h,p;"reducer"in d?(h=d.reducer,p=d.prepare):h=d,o[c]=h,s[f]=h,a[c]=p?ue(f,p):ue(f)});function l(){var c=typeof e.extraReducers=="function"?kk(e.extraReducers):[e.extraReducers],d=c[0],f=d===void 0?{}:d,h=c[1],p=h===void 0?[]:h,m=c[2],S=m===void 0?void 0:m,v=fr(fr({},f),s);return Rk(n,function(y){for(var g in v)y.addCase(g,v[g]);for(var b=0,_=p;b<_.length;b++){var w=_[b];y.addMatcher(w.matcher,w.reducer)}S&&y.addDefaultCase(S)})}var u;return{name:t,reducer:function(c,d){return u||(u=l()),u(c,d)},actions:a,caseReducers:o,getInitialState:function(){return u||(u=l()),u.getInitialState()}}}function rz(){return{ids:[],entities:{}}}function iz(){function e(t){return t===void 0&&(t={}),Object.assign(rz(),t)}return{getInitialState:e}}function oz(){function e(t){var n=function(u){return u.ids},r=function(u){return u.entities},i=yo(n,r,function(u,c){return u.map(function(d){return c[d]})}),o=function(u,c){return c},s=function(u,c){return u[c]},a=yo(n,function(u){return u.length});if(!t)return{selectIds:n,selectEntities:r,selectAll:i,selectTotal:a,selectById:yo(r,o,s)};var l=yo(t,r);return{selectIds:yo(t,n),selectEntities:l,selectAll:yo(t,i),selectTotal:yo(t,a),selectById:yo(l,o,s)}}return{getSelectors:e}}function sz(e){var t=Lt(function(n,r){return e(r)});return function(r){return t(r,void 0)}}function Lt(e){return function(n,r){function i(s){return Ak(s)}var o=function(s){i(r)?e(r.payload,s):e(r,s)};return er(n)?(o(n),n):Js(n,o)}}function Ed(e,t){var n=t(e);return n}function Fa(e){return Array.isArray(e)||(e=Object.values(e)),e}function Ok(e,t,n){e=Fa(e);for(var r=[],i=[],o=0,s=e;o0;if(y){var g=p.filter(function(b){return u(S,b,m)}).length>0;g&&(m.ids=Object.keys(m.entities))}}function f(p,m){return h([p],m)}function h(p,m){var S=Ok(p,e,m),v=S[0],y=S[1];d(y,m),n(v,m)}return{removeAll:sz(l),addOne:Lt(t),addMany:Lt(n),setOne:Lt(r),setMany:Lt(i),setAll:Lt(o),updateOne:Lt(c),updateMany:Lt(d),upsertOne:Lt(f),upsertMany:Lt(h),removeOne:Lt(s),removeMany:Lt(a)}}function az(e,t){var n=Mk(e),r=n.removeOne,i=n.removeMany,o=n.removeAll;function s(y,g){return a([y],g)}function a(y,g){y=Fa(y);var b=y.filter(function(_){return!(Ed(_,e)in g.entities)});b.length!==0&&S(b,g)}function l(y,g){return u([y],g)}function u(y,g){y=Fa(y),y.length!==0&&S(y,g)}function c(y,g){y=Fa(y),g.entities={},g.ids=[],a(y,g)}function d(y,g){return f([y],g)}function f(y,g){for(var b=!1,_=0,w=y;_-1;return n&&r}function lh(e){return typeof e[0]=="function"&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function u0(){for(var e=[],t=0;t0)for(var g=h.getState(),b=Array.from(n.values()),_=0,w=b;_Math.floor(e/t)*t,Ui=(e,t)=>Math.round(e/t)*t;var Tz=typeof global=="object"&&global&&global.Object===Object&&global;const Yk=Tz;var Ez=typeof self=="object"&&self&&self.Object===Object&&self,Pz=Yk||Ez||Function("return this")();const oo=Pz;var Az=oo.Symbol;const Zr=Az;var Qk=Object.prototype,kz=Qk.hasOwnProperty,Rz=Qk.toString,jc=Zr?Zr.toStringTag:void 0;function Oz(e){var t=kz.call(e,jc),n=e[jc];try{e[jc]=void 0;var r=!0}catch{}var i=Rz.call(e);return r&&(t?e[jc]=n:delete e[jc]),i}var Mz=Object.prototype,Iz=Mz.toString;function Nz(e){return Iz.call(e)}var Dz="[object Null]",Lz="[object Undefined]",f4=Zr?Zr.toStringTag:void 0;function ta(e){return e==null?e===void 0?Lz:Dz:f4&&f4 in Object(e)?Oz(e):Nz(e)}function Ci(e){return e!=null&&typeof e=="object"}var $z="[object Symbol]";function c0(e){return typeof e=="symbol"||Ci(e)&&ta(e)==$z}function Zk(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=gU)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function bU(e){return function(){return e}}var SU=function(){try{var e=fl(Object,"defineProperty");return e({},"",{}),e}catch{}}();const fm=SU;var _U=fm?function(e,t){return fm(e,"toString",{configurable:!0,enumerable:!1,value:bU(t),writable:!0})}:d0;const wU=_U;var xU=vU(wU);const nR=xU;function rR(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var kU=9007199254740991,RU=/^(?:0|[1-9]\d*)$/;function _x(e,t){var n=typeof e;return t=t??kU,!!t&&(n=="number"||n!="symbol"&&RU.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=IU}function mc(e){return e!=null&&xx(e.length)&&!Sx(e)}function aR(e,t,n){if(!vr(n))return!1;var r=typeof t;return(r=="number"?mc(n)&&_x(t,n.length):r=="string"&&t in n)?fh(n[t],e):!1}function lR(e){return sR(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&&aR(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r-1}function KG(e,t){var n=this.__data__,r=f0(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Ho(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?gR(a,t-1,n,r,i):Rx(i,a):r||(i[i.length]=a)}return i}function fH(e){var t=e==null?0:e.length;return t?gR(e,1):[]}function hH(e){return nR(oR(e,void 0,fH),e+"")}var pH=hR(Object.getPrototypeOf,Object);const Ox=pH;var gH="[object Object]",mH=Function.prototype,yH=Object.prototype,mR=mH.toString,vH=yH.hasOwnProperty,bH=mR.call(Object);function yR(e){if(!Ci(e)||ta(e)!=gH)return!1;var t=Ox(e);if(t===null)return!0;var n=vH.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&mR.call(n)==bH}function vR(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:vR(e,t,n)}var _H="\\ud800-\\udfff",wH="\\u0300-\\u036f",xH="\\ufe20-\\ufe2f",CH="\\u20d0-\\u20ff",TH=wH+xH+CH,EH="\\ufe0e\\ufe0f",PH="\\u200d",AH=RegExp("["+PH+_H+TH+EH+"]");function Mx(e){return AH.test(e)}function kH(e){return e.split("")}var bR="\\ud800-\\udfff",RH="\\u0300-\\u036f",OH="\\ufe20-\\ufe2f",MH="\\u20d0-\\u20ff",IH=RH+OH+MH,NH="\\ufe0e\\ufe0f",DH="["+bR+"]",x_="["+IH+"]",C_="\\ud83c[\\udffb-\\udfff]",LH="(?:"+x_+"|"+C_+")",SR="[^"+bR+"]",_R="(?:\\ud83c[\\udde6-\\uddff]){2}",wR="[\\ud800-\\udbff][\\udc00-\\udfff]",$H="\\u200d",xR=LH+"?",CR="["+NH+"]?",FH="(?:"+$H+"(?:"+[SR,_R,wR].join("|")+")"+CR+xR+")*",BH=CR+xR+FH,jH="(?:"+[SR+x_+"?",x_,_R,wR,DH].join("|")+")",VH=RegExp(C_+"(?="+C_+")|"+jH+BH,"g");function zH(e){return e.match(VH)||[]}function UH(e){return Mx(e)?zH(e):kH(e)}function GH(e){return function(t){t=p0(t);var n=Mx(t)?UH(t):void 0,r=n?n[0]:t.charAt(0),i=n?SH(n,1).join(""):t.slice(1);return r[e]()+i}}var HH=GH("toUpperCase");const qH=HH;function TR(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 Ss(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=hb(n),n=n===n?n:0),t!==void 0&&(t=hb(t),t=t===t?t:0),Lq(hb(e),t,n)}function $q(){this.__data__=new Ho,this.size=0}function Fq(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Bq(e){return this.__data__.get(e)}function jq(e){return this.__data__.has(e)}var Vq=200;function zq(e,t){var n=this.__data__;if(n instanceof Ho){var r=n.__data__;if(!cf||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&wK?new df:void 0;for(o.set(e,t),o.set(t,e);++d1),o}),gc(e,HR(e),n),r&&(n=Ad(n,EX|PX|AX,TX));for(var i=t.length;i--;)sO(n,t[i]);return n});const _0=kX;var RX=nO("length");const OX=RX;var aO="\\ud800-\\udfff",MX="\\u0300-\\u036f",IX="\\ufe20-\\ufe2f",NX="\\u20d0-\\u20ff",DX=MX+IX+NX,LX="\\ufe0e\\ufe0f",$X="["+aO+"]",R_="["+DX+"]",O_="\\ud83c[\\udffb-\\udfff]",FX="(?:"+R_+"|"+O_+")",lO="[^"+aO+"]",uO="(?:\\ud83c[\\udde6-\\uddff]){2}",cO="[\\ud800-\\udbff][\\udc00-\\udfff]",BX="\\u200d",dO=FX+"?",fO="["+LX+"]?",jX="(?:"+BX+"(?:"+[lO,uO,cO].join("|")+")"+fO+dO+")*",VX=fO+dO+jX,zX="(?:"+[lO+R_+"?",R_,uO,cO,$X].join("|")+")",H4=RegExp(O_+"(?="+O_+")|"+zX+VX,"g");function UX(e){for(var t=H4.lastIndex=0;H4.test(e);)++t;return t}function GX(e){return Mx(e)?UX(e):OX(e)}function HX(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)?TR:HX,i=arguments.length<3;return r(e,y0(t),n,i,v0)}var qX="[object Map]",WX="[object Set]";function hO(e){if(e==null)return 0;if(mc(e))return _X(e)?GX(e):e.length;var t=Qu(e);return t==qX||t==WX?e.size:pR(e).length}function KX(e,t){var n;return v0(e,function(r,i,o){return n=t(r,i,o),!n}),!!n}function Ea(e,t,n){var r=mn(e)?QR:KX;return n&&aR(e,t,n)&&(t=void 0),r(e,y0(t))}var XX=Dq(function(e,t,n){return e+(n?" ":"")+qH(t)});const YX=XX;var QX=1/0,ZX=Au&&1/Dx(new Au([,-0]))[1]==QX?function(e){return new Au(e)}:pU;const JX=ZX;var eY=200;function pO(e,t,n){var r=-1,i=AU,o=e.length,s=!0,a=[],l=a;if(n)s=!1,i=mX;else if(o>=eY){var u=t?null:JX(e);if(u)return Dx(u);s=!1,i=ZR,l=new df}else l=t?[]:a;e:for(;++r{CX(e,t.payload)}}}),{configChanged:iY}=mO.actions,oY=mO.reducer,pwe={"sd-1":"Stable Diffusion 1.x","sd-2":"Stable Diffusion 2.x",sdxl:"Stable Diffusion XL","sdxl-refiner":"Stable Diffusion XL Refiner"},gwe={"sd-1":"SD1","sd-2":"SD2",sdxl:"SDXL","sdxl-refiner":"SDXLR"},sY={"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]}},mwe={lycoris:"LyCORIS",diffusers:"Diffusers"},ywe=0,aY=4294967295;var Ve;(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})(Ve||(Ve={}));var M_;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(M_||(M_={}));const re=Ve.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),ms=e=>{switch(typeof e){case"undefined":return re.undefined;case"string":return re.string;case"number":return isNaN(e)?re.nan:re.number;case"boolean":return re.boolean;case"function":return re.function;case"bigint":return re.bigint;case"symbol":return re.symbol;case"object":return Array.isArray(e)?re.array:e===null?re.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?re.promise:typeof Map<"u"&&e instanceof Map?re.map:typeof Set<"u"&&e instanceof Set?re.set:typeof Date<"u"&&e instanceof Date?re.date:re.object;default:return re.unknown}},ee=Ve.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"]),lY=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class bi 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()}}bi.create=e=>new bi(e);const ff=(e,t)=>{let n;switch(e.code){case ee.invalid_type:e.received===re.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case ee.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Ve.jsonStringifyReplacer)}`;break;case ee.unrecognized_keys:n=`Unrecognized key(s) in object: ${Ve.joinValues(e.keys,", ")}`;break;case ee.invalid_union:n="Invalid input";break;case ee.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Ve.joinValues(e.options)}`;break;case ee.invalid_enum_value:n=`Invalid enum value. Expected ${Ve.joinValues(e.options)}, received '${e.received}'`;break;case ee.invalid_arguments:n="Invalid function arguments";break;case ee.invalid_return_type:n="Invalid function return type";break;case ee.invalid_date:n="Invalid date";break;case ee.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}"`:Ve.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case ee.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 ee.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 ee.custom:n="Invalid input";break;case ee.invalid_intersection_types:n="Intersection results could not be merged";break;case ee.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case ee.not_finite:n="Number must be finite";break;default:n=t.defaultError,Ve.assertNever(e)}return{message:n}};let yO=ff;function uY(e){yO=e}function pm(){return yO}const gm=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}},cY=[];function oe(e,t){const n=gm({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,pm(),ff].filter(r=>!!r)});e.common.issues.push(n)}class jn{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 be;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 jn.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 be;o.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const be=Object.freeze({status:"aborted"}),vO=e=>({status:"dirty",value:e}),tr=e=>({status:"valid",value:e}),I_=e=>e.status==="aborted",N_=e=>e.status==="dirty",mm=e=>e.status==="valid",ym=e=>typeof Promise<"u"&&e instanceof Promise;var ge;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(ge||(ge={}));class eo{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 q4=(e,t)=>{if(mm(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 bi(e.common.issues);return this._error=n,this._error}}};function we(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 Ce{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.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return ms(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:ms(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new jn,ctx:{common:t.parent.common,data:t.data,parsedType:ms(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(ym(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:ms(t)},o=this._parseSync({data:t,path:i.path,parent:i});return q4(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:ms(t)},i=this._parse({data:t,path:r.path,parent:r}),o=await(ym(i)?i:Promise.resolve(i));return q4(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:ee.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 Ti({schema:this,typeName:ye.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Ro.create(this,this._def)}nullable(){return el.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Si.create(this,this._def)}promise(){return Ju.create(this,this._def)}or(t){return mf.create([this,t],this._def)}and(t){return yf.create(this,t,this._def)}transform(t){return new Ti({...we(this._def),schema:this,typeName:ye.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new wf({...we(this._def),innerType:this,defaultValue:n,typeName:ye.ZodDefault})}brand(){return new SO({typeName:ye.ZodBranded,type:this,...we(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new _m({...we(this._def),innerType:this,catchValue:n,typeName:ye.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return mh.create(this,t)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const dY=/^c[^\s-]{8,}$/i,fY=/^[a-z][a-z0-9]*$/,hY=/[0-9A-HJKMNP-TV-Z]{26}/,pY=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,gY=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((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}))\])|(\[IPv6:(([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})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,mY=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,yY=/^(((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}))$/,vY=/^(([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})))$/,bY=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 SY(e,t){return!!((t==="v4"||!t)&&yY.test(e)||(t==="v6"||!t)&&vY.test(e))}class pi extends Ce{constructor(){super(...arguments),this._regex=(t,n,r)=>this.refinement(i=>t.test(i),{validation:n,code:ee.invalid_string,...ge.errToObj(r)}),this.nonempty=t=>this.min(1,ge.errToObj(t)),this.trim=()=>new pi({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new pi({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new pi({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==re.string){const o=this._getOrReturnCtx(t);return oe(o,{code:ee.invalid_type,expected:re.string,received:o.parsedType}),be}const r=new jn;let i;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(i=this._getOrReturnCtx(t,i),oe(i,{code:ee.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,...ge.errToObj(t==null?void 0:t.message)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...ge.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n==null?void 0:n.position,...ge.errToObj(n==null?void 0:n.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...ge.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...ge.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...ge.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...ge.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...ge.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 pi({checks:[],typeName:ye.ZodString,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...we(e)})};function _Y(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 zs extends Ce{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)!==re.number){const o=this._getOrReturnCtx(t);return oe(o,{code:ee.invalid_type,expected:re.number,received:o.parsedType}),be}let r;const i=new jn;for(const o of this._def.checks)o.kind==="int"?Ve.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),oe(r,{code:ee.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),oe(r,{code:ee.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?_Y(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),oe(r,{code:ee.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),oe(r,{code:ee.not_finite,message:o.message}),i.dirty()):Ve.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,ge.toString(n))}gt(t,n){return this.setLimit("min",t,!1,ge.toString(n))}lte(t,n){return this.setLimit("max",t,!0,ge.toString(n))}lt(t,n){return this.setLimit("max",t,!1,ge.toString(n))}setLimit(t,n,r,i){return new zs({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:ge.toString(i)}]})}_addCheck(t){return new zs({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:ge.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:ge.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:ge.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:ge.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:ge.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:ge.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:ge.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:ge.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:ge.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"&&Ve.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 zs({checks:[],typeName:ye.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...we(e)});class Us extends Ce{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)!==re.bigint){const o=this._getOrReturnCtx(t);return oe(o,{code:ee.invalid_type,expected:re.bigint,received:o.parsedType}),be}let r;const i=new jn;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),oe(r,{code:ee.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),oe(r,{code:ee.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):Ve.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,ge.toString(n))}gt(t,n){return this.setLimit("min",t,!1,ge.toString(n))}lte(t,n){return this.setLimit("max",t,!0,ge.toString(n))}lt(t,n){return this.setLimit("max",t,!1,ge.toString(n))}setLimit(t,n,r,i){return new Us({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:ge.toString(i)}]})}_addCheck(t){return new Us({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:ge.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:ge.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:ge.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:ge.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:ge.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 Us({checks:[],typeName:ye.ZodBigInt,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...we(e)})};class hf extends Ce{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==re.boolean){const r=this._getOrReturnCtx(t);return oe(r,{code:ee.invalid_type,expected:re.boolean,received:r.parsedType}),be}return tr(t.data)}}hf.create=e=>new hf({typeName:ye.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...we(e)});class Za extends Ce{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==re.date){const o=this._getOrReturnCtx(t);return oe(o,{code:ee.invalid_type,expected:re.date,received:o.parsedType}),be}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return oe(o,{code:ee.invalid_date}),be}const r=new jn;let i;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(i=this._getOrReturnCtx(t,i),oe(i,{code:ee.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Ve.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new Za({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:ge.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:ge.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 Za({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:ye.ZodDate,...we(e)});class vm extends Ce{_parse(t){if(this._getType(t)!==re.symbol){const r=this._getOrReturnCtx(t);return oe(r,{code:ee.invalid_type,expected:re.symbol,received:r.parsedType}),be}return tr(t.data)}}vm.create=e=>new vm({typeName:ye.ZodSymbol,...we(e)});class pf extends Ce{_parse(t){if(this._getType(t)!==re.undefined){const r=this._getOrReturnCtx(t);return oe(r,{code:ee.invalid_type,expected:re.undefined,received:r.parsedType}),be}return tr(t.data)}}pf.create=e=>new pf({typeName:ye.ZodUndefined,...we(e)});class gf extends Ce{_parse(t){if(this._getType(t)!==re.null){const r=this._getOrReturnCtx(t);return oe(r,{code:ee.invalid_type,expected:re.null,received:r.parsedType}),be}return tr(t.data)}}gf.create=e=>new gf({typeName:ye.ZodNull,...we(e)});class Zu extends Ce{constructor(){super(...arguments),this._any=!0}_parse(t){return tr(t.data)}}Zu.create=e=>new Zu({typeName:ye.ZodAny,...we(e)});class Ba extends Ce{constructor(){super(...arguments),this._unknown=!0}_parse(t){return tr(t.data)}}Ba.create=e=>new Ba({typeName:ye.ZodUnknown,...we(e)});class Vo extends Ce{_parse(t){const n=this._getOrReturnCtx(t);return oe(n,{code:ee.invalid_type,expected:re.never,received:n.parsedType}),be}}Vo.create=e=>new Vo({typeName:ye.ZodNever,...we(e)});class bm extends Ce{_parse(t){if(this._getType(t)!==re.undefined){const r=this._getOrReturnCtx(t);return oe(r,{code:ee.invalid_type,expected:re.void,received:r.parsedType}),be}return tr(t.data)}}bm.create=e=>new bm({typeName:ye.ZodVoid,...we(e)});class Si extends Ce{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),i=this._def;if(n.parsedType!==re.array)return oe(n,{code:ee.invalid_type,expected:re.array,received:n.parsedType}),be;if(i.exactLength!==null){const s=n.data.length>i.exactLength.value,a=n.data.lengthi.maxLength.value&&(oe(n,{code:ee.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 eo(n,s,n.path,a)))).then(s=>jn.mergeArray(r,s));const o=[...n.data].map((s,a)=>i.type._parseSync(new eo(n,s,n.path,a)));return jn.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new Si({...this._def,minLength:{value:t,message:ge.toString(n)}})}max(t,n){return new Si({...this._def,maxLength:{value:t,message:ge.toString(n)}})}length(t,n){return new Si({...this._def,exactLength:{value:t,message:ge.toString(n)}})}nonempty(t){return this.min(1,t)}}Si.create=(e,t)=>new Si({type:e,minLength:null,maxLength:null,exactLength:null,typeName:ye.ZodArray,...we(t)});function Wl(e){if(e instanceof Tt){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Ro.create(Wl(r))}return new Tt({...e._def,shape:()=>t})}else return e instanceof Si?new Si({...e._def,type:Wl(e.element)}):e instanceof Ro?Ro.create(Wl(e.unwrap())):e instanceof el?el.create(Wl(e.unwrap())):e instanceof to?to.create(e.items.map(t=>Wl(t))):e}class Tt extends Ce{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=Ve.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==re.object){const u=this._getOrReturnCtx(t);return oe(u,{code:ee.invalid_type,expected:re.object,received:u.parsedType}),be}const{status:r,ctx:i}=this._processInputParams(t),{shape:o,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof Vo&&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 eo(i,d,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof Vo){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&&(oe(i,{code:ee.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 eo(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=>jn.mergeObjectSync(r,u)):jn.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return ge.errToObj,new Tt({...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=ge.errToObj(t).message)!==null&&a!==void 0?a:l}:{message:l}}}:{}})}strip(){return new Tt({...this._def,unknownKeys:"strip"})}passthrough(){return new Tt({...this._def,unknownKeys:"passthrough"})}extend(t){return new Tt({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new Tt({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:ye.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new Tt({...this._def,catchall:t})}pick(t){const n={};return Ve.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new Tt({...this._def,shape:()=>n})}omit(t){const n={};return Ve.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new Tt({...this._def,shape:()=>n})}deepPartial(){return Wl(this)}partial(t){const n={};return Ve.objectKeys(this.shape).forEach(r=>{const i=this.shape[r];t&&!t[r]?n[r]=i:n[r]=i.optional()}),new Tt({...this._def,shape:()=>n})}required(t){const n={};return Ve.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof Ro;)o=o._def.innerType;n[r]=o}}),new Tt({...this._def,shape:()=>n})}keyof(){return bO(Ve.objectKeys(this.shape))}}Tt.create=(e,t)=>new Tt({shape:()=>e,unknownKeys:"strip",catchall:Vo.create(),typeName:ye.ZodObject,...we(t)});Tt.strictCreate=(e,t)=>new Tt({shape:()=>e,unknownKeys:"strict",catchall:Vo.create(),typeName:ye.ZodObject,...we(t)});Tt.lazycreate=(e,t)=>new Tt({shape:e,unknownKeys:"strip",catchall:Vo.create(),typeName:ye.ZodObject,...we(t)});class mf extends Ce{_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 bi(a.ctx.common.issues));return oe(n,{code:ee.invalid_union,unionErrors:s}),be}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 bi(l));return oe(n,{code:ee.invalid_union,unionErrors:a}),be}}get options(){return this._def.options}}mf.create=(e,t)=>new mf({options:e,typeName:ye.ZodUnion,...we(t)});const dg=e=>e instanceof bf?dg(e.schema):e instanceof Ti?dg(e.innerType()):e instanceof Sf?[e.value]:e instanceof Gs?e.options:e instanceof _f?Object.keys(e.enum):e instanceof wf?dg(e._def.innerType):e instanceof pf?[void 0]:e instanceof gf?[null]:null;class w0 extends Ce{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==re.object)return oe(n,{code:ee.invalid_type,expected:re.object,received:n.parsedType}),be;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}):(oe(n,{code:ee.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),be)}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=dg(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 w0({typeName:ye.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...we(r)})}}function D_(e,t){const n=ms(e),r=ms(t);if(e===t)return{valid:!0,data:e};if(n===re.object&&r===re.object){const i=Ve.objectKeys(t),o=Ve.objectKeys(e).filter(a=>i.indexOf(a)!==-1),s={...e,...t};for(const a of o){const l=D_(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}else if(n===re.array&&r===re.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{if(I_(o)||I_(s))return be;const a=D_(o.value,s.value);return a.valid?((N_(o)||N_(s))&&n.dirty(),{status:n.value,value:a.data}):(oe(r,{code:ee.invalid_intersection_types}),be)};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}))}}yf.create=(e,t,n)=>new yf({left:e,right:t,typeName:ye.ZodIntersection,...we(n)});class to extends Ce{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==re.array)return oe(r,{code:ee.invalid_type,expected:re.array,received:r.parsedType}),be;if(r.data.lengththis._def.items.length&&(oe(r,{code:ee.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 eo(r,s,r.path,a)):null}).filter(s=>!!s);return r.common.async?Promise.all(o).then(s=>jn.mergeArray(n,s)):jn.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new to({...this._def,rest:t})}}to.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new to({items:e,typeName:ye.ZodTuple,rest:null,...we(t)})};class vf extends Ce{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!==re.object)return oe(r,{code:ee.invalid_type,expected:re.object,received:r.parsedType}),be;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new eo(r,a,r.path,a)),value:s._parse(new eo(r,r.data[a],r.path,a))});return r.common.async?jn.mergeObjectAsync(n,i):jn.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof Ce?new vf({keyType:t,valueType:n,typeName:ye.ZodRecord,...we(r)}):new vf({keyType:pi.create(),valueType:t,typeName:ye.ZodRecord,...we(n)})}}class Sm extends Ce{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==re.map)return oe(r,{code:ee.invalid_type,expected:re.map,received:r.parsedType}),be;const i=this._def.keyType,o=this._def.valueType,s=[...r.data.entries()].map(([a,l],u)=>({key:i._parse(new eo(r,a,r.path,[u,"key"])),value:o._parse(new eo(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 be;(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 be;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}}}}Sm.create=(e,t,n)=>new Sm({valueType:t,keyType:e,typeName:ye.ZodMap,...we(n)});class Ja extends Ce{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==re.set)return oe(r,{code:ee.invalid_type,expected:re.set,received:r.parsedType}),be;const i=this._def;i.minSize!==null&&r.data.sizei.maxSize.value&&(oe(r,{code:ee.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 be;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 eo(r,l,r.path,u)));return r.common.async?Promise.all(a).then(l=>s(l)):s(a)}min(t,n){return new Ja({...this._def,minSize:{value:t,message:ge.toString(n)}})}max(t,n){return new Ja({...this._def,maxSize:{value:t,message:ge.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}Ja.create=(e,t)=>new Ja({valueType:e,minSize:null,maxSize:null,typeName:ye.ZodSet,...we(t)});class ku extends Ce{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==re.function)return oe(n,{code:ee.invalid_type,expected:re.function,received:n.parsedType}),be;function r(a,l){return gm({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,pm(),ff].filter(u=>!!u),issueData:{code:ee.invalid_arguments,argumentsError:l}})}function i(a,l){return gm({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,pm(),ff].filter(u=>!!u),issueData:{code:ee.invalid_return_type,returnTypeError:l}})}const o={errorMap:n.common.contextualErrorMap},s=n.data;return this._def.returns instanceof Ju?tr(async(...a)=>{const l=new bi([]),u=await this._def.args.parseAsync(a,o).catch(f=>{throw l.addIssue(r(a,f)),l}),c=await s(...u);return await this._def.returns._def.type.parseAsync(c,o).catch(f=>{throw l.addIssue(i(c,f)),l})}):tr((...a)=>{const l=this._def.args.safeParse(a,o);if(!l.success)throw new bi([r(a,l.error)]);const u=s(...l.data),c=this._def.returns.safeParse(u,o);if(!c.success)throw new bi([i(u,c.error)]);return c.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new ku({...this._def,args:to.create(t).rest(Ba.create())})}returns(t){return new ku({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new ku({args:t||to.create([]).rest(Ba.create()),returns:n||Ba.create(),typeName:ye.ZodFunction,...we(r)})}}class bf extends Ce{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})}}bf.create=(e,t)=>new bf({getter:e,typeName:ye.ZodLazy,...we(t)});class Sf extends Ce{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return oe(n,{received:n.data,code:ee.invalid_literal,expected:this._def.value}),be}return{status:"valid",value:t.data}}get value(){return this._def.value}}Sf.create=(e,t)=>new Sf({value:e,typeName:ye.ZodLiteral,...we(t)});function bO(e,t){return new Gs({values:e,typeName:ye.ZodEnum,...we(t)})}class Gs extends Ce{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return oe(n,{expected:Ve.joinValues(r),received:n.parsedType,code:ee.invalid_type}),be}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return oe(n,{received:n.data,code:ee.invalid_enum_value,options:r}),be}return tr(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 Gs.create(t)}exclude(t){return Gs.create(this.options.filter(n=>!t.includes(n)))}}Gs.create=bO;class _f extends Ce{_parse(t){const n=Ve.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==re.string&&r.parsedType!==re.number){const i=Ve.objectValues(n);return oe(r,{expected:Ve.joinValues(i),received:r.parsedType,code:ee.invalid_type}),be}if(n.indexOf(t.data)===-1){const i=Ve.objectValues(n);return oe(r,{received:r.data,code:ee.invalid_enum_value,options:i}),be}return tr(t.data)}get enum(){return this._def.values}}_f.create=(e,t)=>new _f({values:e,typeName:ye.ZodNativeEnum,...we(t)});class Ju extends Ce{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==re.promise&&n.common.async===!1)return oe(n,{code:ee.invalid_type,expected:re.promise,received:n.parsedType}),be;const r=n.parsedType===re.promise?n.data:Promise.resolve(n.data);return tr(r.then(i=>this._def.type.parseAsync(i,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Ju.create=(e,t)=>new Ju({type:e,typeName:ye.ZodPromise,...we(t)});class Ti extends Ce{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ye.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),i=this._def.effect||null;if(i.type==="preprocess"){const s=i.transform(r.data);return 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})}const o={addIssue:s=>{oe(r,s),s.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),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"?be:(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"?be:(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(!mm(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=>mm(s)?Promise.resolve(i.transform(s.value,o)).then(a=>({status:n.value,value:a})):s);Ve.assertNever(i)}}Ti.create=(e,t,n)=>new Ti({schema:e,typeName:ye.ZodEffects,effect:t,...we(n)});Ti.createWithPreprocess=(e,t,n)=>new Ti({schema:t,effect:{type:"preprocess",transform:e},typeName:ye.ZodEffects,...we(n)});class Ro extends Ce{_parse(t){return this._getType(t)===re.undefined?tr(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ro.create=(e,t)=>new Ro({innerType:e,typeName:ye.ZodOptional,...we(t)});class el extends Ce{_parse(t){return this._getType(t)===re.null?tr(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}el.create=(e,t)=>new el({innerType:e,typeName:ye.ZodNullable,...we(t)});class wf extends Ce{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===re.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}wf.create=(e,t)=>new wf({innerType:e,typeName:ye.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...we(t)});class _m extends Ce{_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 ym(i)?i.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new bi(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new bi(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}_m.create=(e,t)=>new _m({innerType:e,typeName:ye.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...we(t)});class wm extends Ce{_parse(t){if(this._getType(t)!==re.nan){const r=this._getOrReturnCtx(t);return oe(r,{code:ee.invalid_type,expected:re.nan,received:r.parsedType}),be}return{status:"valid",value:t.data}}}wm.create=e=>new wm({typeName:ye.ZodNaN,...we(e)});const wY=Symbol("zod_brand");class SO extends Ce{_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 mh extends Ce{_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"?be:o.status==="dirty"?(n.dirty(),vO(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"?be: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 mh({in:t,out:n,typeName:ye.ZodPipeline})}}const _O=(e,t={},n)=>e?Zu.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})}}):Zu.create(),xY={object:Tt.lazycreate};var ye;(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"})(ye||(ye={}));const CY=(e,t={message:`Input not instance of ${e.name}`})=>_O(n=>n instanceof e,t),wO=pi.create,xO=zs.create,TY=wm.create,EY=Us.create,CO=hf.create,PY=Za.create,AY=vm.create,kY=pf.create,RY=gf.create,OY=Zu.create,MY=Ba.create,IY=Vo.create,NY=bm.create,DY=Si.create,LY=Tt.create,$Y=Tt.strictCreate,FY=mf.create,BY=w0.create,jY=yf.create,VY=to.create,zY=vf.create,UY=Sm.create,GY=Ja.create,HY=ku.create,qY=bf.create,WY=Sf.create,KY=Gs.create,XY=_f.create,YY=Ju.create,W4=Ti.create,QY=Ro.create,ZY=el.create,JY=Ti.createWithPreprocess,eQ=mh.create,tQ=()=>wO().optional(),nQ=()=>xO().optional(),rQ=()=>CO().optional(),iQ={string:e=>pi.create({...e,coerce:!0}),number:e=>zs.create({...e,coerce:!0}),boolean:e=>hf.create({...e,coerce:!0}),bigint:e=>Us.create({...e,coerce:!0}),date:e=>Za.create({...e,coerce:!0})},oQ=be;var jt=Object.freeze({__proto__:null,defaultErrorMap:ff,setErrorMap:uY,getErrorMap:pm,makeIssue:gm,EMPTY_PATH:cY,addIssueToContext:oe,ParseStatus:jn,INVALID:be,DIRTY:vO,OK:tr,isAborted:I_,isDirty:N_,isValid:mm,isAsync:ym,get util(){return Ve},get objectUtil(){return M_},ZodParsedType:re,getParsedType:ms,ZodType:Ce,ZodString:pi,ZodNumber:zs,ZodBigInt:Us,ZodBoolean:hf,ZodDate:Za,ZodSymbol:vm,ZodUndefined:pf,ZodNull:gf,ZodAny:Zu,ZodUnknown:Ba,ZodNever:Vo,ZodVoid:bm,ZodArray:Si,ZodObject:Tt,ZodUnion:mf,ZodDiscriminatedUnion:w0,ZodIntersection:yf,ZodTuple:to,ZodRecord:vf,ZodMap:Sm,ZodSet:Ja,ZodFunction:ku,ZodLazy:bf,ZodLiteral:Sf,ZodEnum:Gs,ZodNativeEnum:_f,ZodPromise:Ju,ZodEffects:Ti,ZodTransformer:Ti,ZodOptional:Ro,ZodNullable:el,ZodDefault:wf,ZodCatch:_m,ZodNaN:wm,BRAND:wY,ZodBranded:SO,ZodPipeline:mh,custom:_O,Schema:Ce,ZodSchema:Ce,late:xY,get ZodFirstPartyTypeKind(){return ye},coerce:iQ,any:OY,array:DY,bigint:EY,boolean:CO,date:PY,discriminatedUnion:BY,effect:W4,enum:KY,function:HY,instanceof:CY,intersection:jY,lazy:qY,literal:WY,map:UY,nan:TY,nativeEnum:XY,never:IY,null:RY,nullable:ZY,number:xO,object:LY,oboolean:rQ,onumber:nQ,optional:QY,ostring:tQ,pipeline:eQ,preprocess:JY,promise:YY,record:zY,set:GY,strictObject:$Y,string:wO,symbol:AY,transformer:W4,tuple:VY,undefined:kY,union:FY,unknown:MY,void:NY,NEVER:oQ,ZodIssueCode:ee,quotelessJson:lY,ZodError:bi});const sQ=jt.string(),vwe=e=>sQ.safeParse(e).success,aQ=jt.string(),bwe=e=>aQ.safeParse(e).success;jt.string();jt.string();const lQ=jt.number().int().min(1),Swe=e=>lQ.safeParse(e).success,uQ=jt.number().min(1),_we=e=>uQ.safeParse(e).success,cQ=jt.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"]),wwe=e=>cQ.safeParse(e).success,xwe={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"},dQ=jt.number().int().min(0).max(aY),Cwe=e=>dQ.safeParse(e).success,fQ=jt.number().multipleOf(8).min(64),Twe=e=>fQ.safeParse(e).success,hQ=jt.number().multipleOf(8).min(64),Ewe=e=>hQ.safeParse(e).success,x0=jt.enum(["sd-1","sd-2","sdxl","sdxl-refiner"]),xf=jt.object({model_name:jt.string().min(1),base_model:x0}),Pwe=e=>xf.safeParse(e).success,pQ=jt.object({model_name:jt.string().min(1),base_model:x0}),Awe=jt.object({model_name:jt.string().min(1),base_model:x0}),kwe=jt.object({model_name:jt.string().min(1),base_model:x0}),gQ=jt.number().min(0).max(1),Rwe=e=>gQ.safeParse(e).success;jt.enum(["fp16","fp32"]);const Wo={cfgScale:7.5,height:512,img2imgStrength:.75,infillMethod:"patchmatch",iterations:1,perlin:0,positivePrompt:"",negativePrompt:"",scheduler:"euler",seamBlur:16,seamSize:96,seamSteps:30,seamStrength:.7,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},mQ=Wo,TO=Pt({name:"generation",initialState:mQ,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=Ss(e.horizontalSymmetrySteps,0,e.steps),e.verticalSymmetrySteps=Ss(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,...Wo}),setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setSeamSize:(e,t)=>{e.seamSize=t.payload},setSeamBlur:(e,t)=>{e.seamBlur=t.payload},setSeamStrength:(e,t)=>{e.seamStrength=t.payload},setSeamSteps:(e,t)=>{e.seamSteps=t.payload},setTileSize:(e,t)=>{e.tileSize=t.payload},setInfillMethod:(e,t)=>{e.infillMethod=t.payload},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}=sY[e.model.base_model];e.clipSkip=Ss(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=Ui(e.width/n,8))}},extraReducers:e=>{e.addCase(iY,(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=xf.safeParse({model_name:a,base_model:o});l.success&&(t.model=l.data)}}),e.addCase(vQ,(t,n)=>{n.payload||(t.clipSkip=0)})}}),{clampSymmetrySteps:Owe,clearInitialImage:EO,resetParametersState:Mwe,resetSeed:Iwe,setCfgScale:Nwe,setWidth:Dwe,setHeight:Lwe,toggleSize:$we,setImg2imgStrength:Fwe,setInfillMethod:yQ,setIterations:Bwe,setPerlin:jwe,setPositivePrompt:Vwe,setNegativePrompt:zwe,setScheduler:Uwe,setSeamBlur:Gwe,setSeamSize:Hwe,setSeamSteps:qwe,setSeamStrength:Wwe,setSeed:Kwe,setSeedWeights:Xwe,setShouldFitToWidthHeight:Ywe,setShouldGenerateVariations:Qwe,setShouldRandomizeSeed:Zwe,setSteps:Jwe,setThreshold:exe,setTileSize:txe,setVariationAmount:nxe,setShouldUseSymmetry:rxe,setHorizontalSymmetrySteps:ixe,setVerticalSymmetrySteps:oxe,initialImageChanged:C0,modelChanged:ja,vaeSelected:PO,setShouldUseNoiseSettings:sxe,setSeamlessXAxis:axe,setSeamlessYAxis:lxe,setClipSkip:uxe,shouldUseCpuNoiseChanged:cxe,setShouldShowAdvancedOptions:vQ,setAspectRatio:bQ,vaePrecisionChanged:dxe}=TO.actions,SQ=TO.reducer,AO=["txt2img","img2img","unifiedCanvas","nodes","modelManager","batch"],K4=(e,t)=>{typeof t=="number"?e.activeTab=t:e.activeTab=AO.indexOf(t)},kO={activeTab:0,shouldPinParametersPanel:!0,shouldShowParametersPanel:!0,shouldShowImageDetails:!1,shouldUseCanvasBetaLayout:!1,shouldShowExistingModelsInSearch:!1,shouldUseSliders:!1,shouldPinGallery:!0,shouldShowGallery:!0,shouldHidePreview:!1,shouldShowProgressInViewer:!0,shouldShowEmbeddingPicker:!1,favoriteSchedulers:[]},RO=Pt({name:"ui",initialState:kO,reducers:{setActiveTab:(e,t)=>{K4(e,t.payload)},setShouldPinParametersPanel:(e,t)=>{e.shouldPinParametersPanel=t.payload,e.shouldShowParametersPanel=!0},setShouldShowParametersPanel:(e,t)=>{e.shouldShowParametersPanel=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},setShouldShowGallery:(e,t)=>{e.shouldShowGallery=t.payload},togglePinGalleryPanel:e=>{e.shouldPinGallery=!e.shouldPinGallery,e.shouldPinGallery||(e.shouldShowGallery=!0)},togglePinParametersPanel:e=>{e.shouldPinParametersPanel=!e.shouldPinParametersPanel,e.shouldPinParametersPanel||(e.shouldShowParametersPanel=!0)},toggleParametersPanel:e=>{e.shouldShowParametersPanel=!e.shouldShowParametersPanel},toggleGalleryPanel:e=>{e.shouldShowGallery=!e.shouldShowGallery},togglePanels:e=>{e.shouldShowGallery||e.shouldShowParametersPanel?(e.shouldShowGallery=!1,e.shouldShowParametersPanel=!1):(e.shouldShowGallery=!0,e.shouldShowParametersPanel=!0)},setShouldShowProgressInViewer:(e,t)=>{e.shouldShowProgressInViewer=t.payload},favoriteSchedulersChanged:(e,t)=>{e.favoriteSchedulers=t.payload},toggleEmbeddingPicker:e=>{e.shouldShowEmbeddingPicker=!e.shouldShowEmbeddingPicker}},extraReducers(e){e.addCase(C0,t=>{K4(t,"img2img")})}}),{setActiveTab:OO,setShouldPinParametersPanel:fxe,setShouldShowParametersPanel:hxe,setShouldShowImageDetails:pxe,setShouldUseCanvasBetaLayout:_Q,setShouldShowExistingModelsInSearch:gxe,setShouldUseSliders:mxe,setShouldHidePreview:yxe,setShouldShowGallery:vxe,togglePanels:bxe,togglePinGalleryPanel:Sxe,togglePinParametersPanel:_xe,toggleParametersPanel:wxe,toggleGalleryPanel:xxe,setShouldShowProgressInViewer:Cxe,favoriteSchedulersChanged:Txe,toggleEmbeddingPicker:Exe}=RO.actions,wQ=RO.reducer;let Wn=[],T0=(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=!Wn.length;for(let s=0;s(e.events=e.events||{},e.events[n+mp]||(e.events[n+mp]=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+mp](),delete e.events[n+mp])}),TQ=1e3,EQ=(e,t)=>CQ(e,r=>{let i=t(r);i&&e.events[gp].push(i)},xQ,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[gp]=[],e.off=()=>{o(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let s of e.events[gp])s();e.events[gp]=[]}},TQ)},()=>{e.listen=i,e.off=o}}),PQ=(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=T0(void 0,Math.max(...e.map(o=>o.l))+1);return EQ(i,()=>{let o=e.map(s=>s.listen(r,i.l));return r(),()=>{for(let s of o)s()}}),i};const AQ={"Content-Type":"application/json"},kQ=/\/*$/;function RQ(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 OQ(e){return JSON.stringify(e)}function MQ(e,t){let n=`${t.baseUrl?t.baseUrl.replace(kQ,""):""}${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 IQ(e={}){const{fetch:t=globalThis.fetch,querySerializer:n,bodySerializer:r,...i}=e,o=new Headers({...AQ,...i.headers??{}});async function s(a,l){const{headers:u,body:c,params:d={},parseAs:f="json",querySerializer:h=n??RQ,bodySerializer:p=r??OQ,...m}=l||{},S=MQ(a,{baseUrl:i.baseUrl,params:d,querySerializer:h}),v=new Headers(o),y=new Headers(u);for(const[w,x]of y.entries())x==null?v.delete(w):v.set(w,x);const g={redirect:"follow",...i,...m,headers:v};c&&(g.body=p(c)),g.body instanceof FormData&&v.delete("Content-Type");const b=await t(S,g);if(b.status===204||b.headers.get("Content-Length")==="0")return b.ok?{data:{},response:b}:{error:{},response:b};if(b.ok){let w=b.body;if(f!=="stream"){const x=b.clone();w=typeof x[f]=="function"?await x[f]():await x.text()}return{data:w,response:b}}let _={};try{_=await b.clone().json()}catch{_=await b.clone().text()}return{error:_,response:b}}return{async get(a,l){return s(a,{...l,method:"GET"})},async put(a,l){return s(a,{...l,method:"PUT"})},async post(a,l){return s(a,{...l,method:"POST"})},async del(a,l){return s(a,{...l,method:"DELETE"})},async options(a,l){return s(a,{...l,method:"OPTIONS"})},async head(a,l){return s(a,{...l,method:"HEAD"})},async patch(a,l){return s(a,{...l,method:"PATCH"})},async trace(a,l){return s(a,{...l,method:"TRACE"})}}}const Cf=T0(),Tf=T0(),E0=PQ([Cf,Tf],(e,t)=>IQ({headers:e?{Authorization:`Bearer ${e}`}:{},baseUrl:`${t??""}`})),Rn=Vs("api/sessionCreated",async(e,{rejectWithValue:t})=>{const{graph:n}=e,{post:r}=E0.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}),NQ=e=>vr(e)&&"status"in e,yh=Vs("api/sessionInvoked",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{put:r}=E0.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/{session_id}/invoke",{params:{query:{all:!0},path:{session_id:n}}});if(o)return NQ(o)&&o.status===403?t({arg:e,status:s.status,error:o.body.detail}):t({arg:e,status:s.status,error:o})}),hl=Vs("api/sessionCanceled",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{del:r}=E0.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/{session_id}/invoke",{params:{path:{session_id:n}}});return o?t({arg:e,error:o}):i});Vs("api/listSessions",async(e,{rejectWithValue:t})=>{const{params:n}=e,{get:r}=E0.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/",{params:n});return o?t({arg:e,error:o}):i});const MO=ei(Rn.rejected,yh.rejected),Il=(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}},Nl=(e,t,n,r,i=.95)=>{const o=e*i/n,s=t*i/r;return Math.min(1,Math.min(o,s))},Pxe=.999,Axe=.1,kxe=20,Vc=.95,Rxe=30,Oxe=10,X4=e=>({x:Math.floor(e.x),y:Math.floor(e.y)}),pa=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=Ui(a/o,64)):o<1&&(r.height=a,r.width=Ui(a*o,64)),s=r.width*r.height;return r},DQ=e=>({width:Ui(e.width,64),height:Ui(e.height,64)}),Mxe=[{label:"Base",value:"base"},{label:"Mask",value:"mask"}],Ixe=[{label:"Auto",value:"auto"},{label:"Manual",value:"manual"},{label:"None",value:"none"}],IO=e=>e.kind==="line"&&e.layer==="mask",Nxe=e=>e.kind==="line"&&e.layer==="base",Y4=e=>e.kind==="image"&&e.layer==="base",Dxe=e=>e.kind==="fillRect"&&e.layer==="base",Lxe=e=>e.kind==="eraseRect"&&e.layer==="base",LQ=e=>e.kind==="line",Kl={objects:[],stagingArea:{images:[],selectedImageIndex:-1}},NO={boundingBoxCoordinates:{x:0,y:0},boundingBoxDimensions:{width:512,height:512},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},boundingBoxScaleMethod:"auto",brushColor:{r:90,g:90,b:255,a:1},brushSize:50,canvasContainerDimensions:{width:0,height:0},colorPickerColor:{r:90,g:90,b:255,a:1},cursorPosition:null,doesCanvasNeedScaling:!1,futureLayerStates:[],isCanvasInitialized:!1,isDrawing:!1,isMaskEnabled:!0,isMouseOverBoundingBox:!1,isMoveBoundingBoxKeyHeld:!1,isMoveStageKeyHeld:!1,isMovingBoundingBox:!1,isMovingStage:!1,isTransformingBoundingBox:!1,layer:"base",layerState:Kl,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"},DO=Pt({name:"canvas",initialState:NO,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(Ln(e.layerState)),e.layerState.objects=e.layerState.objects.filter(t=>!IO(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:hp(Ss(r,64,512),64),height:hp(Ss(i,64,512),64)},a={x:Ui(r/2-s.width/2,64),y:Ui(i/2-s.height/2,64)};if(e.boundingBoxScaleMethod==="auto"){const c=pa(s);e.scaledBoundingBoxDimensions=c}e.boundingBoxDimensions=s,e.boundingBoxCoordinates=a,e.pastLayerStates.push(Ln(e.layerState)),e.layerState={...Kl,objects:[{kind:"image",layer:"base",x:0,y:0,width:r,height:i,imageName:n.image_name}]},e.futureLayerStates=[],e.isCanvasInitialized=!1;const l=Nl(o.width,o.height,r,i,Vc),u=Il(o.width,o.height,0,0,r,i,l);e.stageScale=l,e.stageCoordinates=u,e.doesCanvasNeedScaling=!0},setBoundingBoxDimensions:(e,t)=>{const n=DQ(t.payload);if(e.boundingBoxDimensions=n,e.boundingBoxScaleMethod==="auto"){const r=pa(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=X4(t.payload)},setStageCoordinates:(e,t)=>{e.stageCoordinates=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=t.payload},setDoesCanvasNeedScaling:(e,t)=>{e.doesCanvasNeedScaling=t.payload},setStageScale:(e,t)=>{e.stageScale=t.payload},setShouldDarkenOutsideBoundingBox:(e,t)=>{e.shouldDarkenOutsideBoundingBox=t.payload},setIsDrawing:(e,t)=>{e.isDrawing=t.payload},clearCanvasHistory:e=>{e.pastLayerStates=[],e.futureLayerStates=[]},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(Ln(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(Ln(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea={...Kl.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingOutline=!0},addFillRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,brushColor:r}=e;e.pastLayerStates.push(Ln(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(Ln(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(Ln(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(LQ);n&&n.points.push(...t.payload)},undo:e=>{const t=e.pastLayerStates.pop();t&&(e.futureLayerStates.unshift(Ln(e.layerState)),e.futureLayerStates.length>e.maxHistory&&e.futureLayerStates.pop(),e.layerState=t)},redo:e=>{const t=e.futureLayerStates.shift();t&&(e.pastLayerStates.push(Ln(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(Ln(e.layerState)),e.layerState=Kl,e.futureLayerStates=[]},setCanvasContainerDimensions:(e,t)=>{e.canvasContainerDimensions=t.payload},resizeAndScaleCanvas:e=>{const{width:t,height:n}=e.canvasContainerDimensions,r=e.layerState.objects.find(Y4),i={width:Math.floor(t),height:Math.floor(n)};if(!r){const c=Nl(i.width,i.height,512,512,Vc),d=Il(i.width,i.height,0,0,512,512,c),f={width:512,height:512};if(e.stageScale=c,e.stageCoordinates=d,e.stageDimensions=i,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=f,e.boundingBoxScaleMethod==="auto"){const h=pa(f);e.scaledBoundingBoxDimensions=h}return}const{width:o,height:s}=r,l=Nl(t,n,o,s,.95),u=Il(i.width,i.height,0,0,o,s,l);e.minimumStageScale=l,e.stageScale=l,e.stageCoordinates=X4(u),e.stageDimensions=i,e.isCanvasInitialized=!0},resizeCanvas:e=>{const{width:t,height:n}=e.canvasContainerDimensions,r={width:Math.floor(t),height:Math.floor(n)};if(e.stageDimensions=r,!e.layerState.objects.find(Y4)){const i=Nl(r.width,r.height,512,512,Vc),o=Il(r.width,r.height,0,0,512,512,i),s={width:512,height:512};if(e.stageScale=i,e.stageCoordinates=o,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=s,e.boundingBoxScaleMethod==="auto"){const a=pa(s);e.scaledBoundingBoxDimensions=a}}},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:Nl(i,o,l,u,Vc),d=Il(i,o,s,a,l,u,c);e.stageScale=c,e.stageCoordinates=d}else{const c=Nl(i,o,512,512,Vc),d=Il(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=pa(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(Ln(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.objects.push({...n[r]}),e.layerState.stagingArea={...Kl.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:hp(Ss(o,64,512),64),height:hp(Ss(s,64,512),64)},l={x:Ui(o/2-a.width/2,64),y:Ui(s/2-a.height/2,64)};if(e.boundingBoxDimensions=a,e.boundingBoxCoordinates=l,e.boundingBoxScaleMethod==="auto"){const u=pa(a);e.scaledBoundingBoxDimensions=u}}},setBoundingBoxScaleMethod:(e,t)=>{if(e.boundingBoxScaleMethod=t.payload,t.payload==="auto"){const n=pa(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(Ln(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(hl.pending,t=>{t.layerState.stagingArea.images.length||(t.layerState.stagingArea=Kl.stagingArea)}),e.addCase(_Q,t=>{t.doesCanvasNeedScaling=!0}),e.addCase(OO,t=>{t.doesCanvasNeedScaling=!0}),e.addCase(bQ,(t,n)=>{const r=n.payload;r&&(t.boundingBoxDimensions.height=Ui(t.boundingBoxDimensions.width/r,64))})}}),{addEraseRect:$xe,addFillRect:Fxe,addImageToStagingArea:$Q,addLine:Bxe,addPointToCurrentLine:jxe,clearCanvasHistory:Vxe,clearMask:zxe,commitColorPickerColor:Uxe,commitStagingAreaImage:FQ,discardStagedImages:Gxe,fitBoundingBoxToStage:Hxe,mouseLeftCanvas:qxe,nextStagingAreaImage:Wxe,prevStagingAreaImage:Kxe,redo:Xxe,resetCanvas:LO,resetCanvasInteractionState:Yxe,resetCanvasView:Qxe,resizeAndScaleCanvas:Zxe,resizeCanvas:Jxe,setBoundingBoxCoordinates:eCe,setBoundingBoxDimensions:tCe,setBoundingBoxPreviewFill:nCe,setBoundingBoxScaleMethod:rCe,flipBoundingBoxAxes:iCe,setBrushColor:oCe,setBrushSize:sCe,setCanvasContainerDimensions:aCe,setColorPickerColor:lCe,setCursorPosition:uCe,setDoesCanvasNeedScaling:cCe,setInitialCanvasImage:$O,setIsDrawing:dCe,setIsMaskEnabled:fCe,setIsMouseOverBoundingBox:hCe,setIsMoveBoundingBoxKeyHeld:pCe,setIsMoveStageKeyHeld:gCe,setIsMovingBoundingBox:mCe,setIsMovingStage:yCe,setIsTransformingBoundingBox:vCe,setLayer:bCe,setMaskColor:SCe,setMergedCanvas:BQ,setShouldAutoSave:_Ce,setShouldCropToBoundingBoxOnSave:wCe,setShouldDarkenOutsideBoundingBox:xCe,setShouldLockBoundingBox:CCe,setShouldPreserveMaskedArea:TCe,setShouldShowBoundingBox:ECe,setShouldShowBrush:PCe,setShouldShowBrushPreview:ACe,setShouldShowCanvasDebugInfo:kCe,setShouldShowCheckboardTransparency:RCe,setShouldShowGrid:OCe,setShouldShowIntermediates:MCe,setShouldShowStagingImage:ICe,setShouldShowStagingOutline:NCe,setShouldSnapToGrid:DCe,setStageCoordinates:LCe,setStageScale:$Ce,setTool:FCe,toggleShouldLockBoundingBox:BCe,toggleTool:jCe,undo:VCe,setScaledBoundingBoxDimensions:zCe,setShouldRestrictStrokesToBox:UCe,stagingAreaInitialized:jQ,canvasSessionIdChanged:VQ,setShouldAntialias:GCe}=DO.actions,zQ=DO.reducer,UQ=(e,t)=>{const n=new Date(e),r=new Date(t);return n>r?1:ne==null,YQ=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),$_=Symbol("encodeFragmentIdentifier");function QQ(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,[qt(t,e),"[",i,"]"].join("")]:[...n,[qt(t,e),"[",qt(i,e),"]=",qt(r,e)].join("")]};case"bracket":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[qt(t,e),"[]"].join("")]:[...n,[qt(t,e),"[]=",qt(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,[qt(t,e),":list="].join("")]:[...n,[qt(t,e),":list=",qt(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?[[qt(n,e),t,qt(i,e)].join("")]:[[r,qt(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,qt(t,e)]:[...n,[qt(t,e),"=",qt(r,e)].join("")]}}function ZQ(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&&wo(r,e).includes(e.arrayFormatSeparator);r=s?wo(r,e):r;const a=o||s?r.split(e.arrayFormatSeparator).map(l=>wo(l,e)):r===null?r:wo(r,e);i[n]=a};case"bracket-separator":return(n,r,i)=>{const o=/(\[])$/.test(n);if(n=n.replace(/\[]$/,""),!o){i[n]=r&&wo(r,e);return}const s=r===null?[]:r.split(e.arrayFormatSeparator).map(a=>wo(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 jO(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function qt(e,t){return t.encode?t.strict?YQ(e):encodeURIComponent(e):e}function wo(e,t){return t.decode?WQ(e):e}function VO(e){return Array.isArray(e)?e.sort():typeof e=="object"?VO(Object.keys(e)).sort((t,n)=>Number(t)-Number(n)).map(t=>e[t]):e}function zO(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function JQ(e){let t="";const n=e.indexOf("#");return n!==-1&&(t=e.slice(n)),t}function J4(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 $x(e){e=zO(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function Fx(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t},jO(t.arrayFormatSeparator);const n=ZQ(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]=BO(o,"=");s===void 0&&(s=o),a=a===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:wo(a,t),n(wo(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]=J4(a,t);else r[i]=J4(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]=VO(s):i[o]=s,i},Object.create(null))}function UO(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},jO(t.arrayFormatSeparator);const n=s=>t.skipNull&&XQ(e[s])||t.skipEmptyString&&e[s]==="",r=QQ(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?qt(s,t):Array.isArray(a)?a.length===0&&t.arrayFormat==="bracket-separator"?qt(s,t)+"[]":a.reduce(r(s),[]).join("&"):qt(s,t)+"="+qt(a,t)}).filter(s=>s.length>0).join("&")}function GO(e,t){var i;t={decode:!0,...t};let[n,r]=BO(e,"#");return n===void 0&&(n=e),{url:((i=n==null?void 0:n.split("?"))==null?void 0:i[0])??"",query:Fx($x(e),t),...t&&t.parseFragmentIdentifier&&r?{fragmentIdentifier:wo(r,t)}:{}}}function HO(e,t){t={encode:!0,strict:!0,[$_]:!0,...t};const n=zO(e.url).split("?")[0]||"",r=$x(e.url),i={...Fx(r,{sort:!1}),...e.query};let o=UO(i,t);o&&(o=`?${o}`);let s=JQ(e.url);if(e.fragmentIdentifier){const a=new URL(n);a.hash=e.fragmentIdentifier,s=t[$_]?a.hash:`#${e.fragmentIdentifier}`}return`${n}${o}${s}`}function qO(e,t,n){n={parseFragmentIdentifier:!0,[$_]:!1,...n};const{url:r,query:i,fragmentIdentifier:o}=GO(e,n);return HO({url:r,query:KQ(i,t),fragmentIdentifier:o},n)}function eZ(e,t,n){const r=Array.isArray(t)?i=>!t.includes(i):(i,o)=>!t(i,o);return qO(e,r,n)}const F_=Object.freeze(Object.defineProperty({__proto__:null,exclude:eZ,extract:$x,parse:Fx,parseUrl:GO,pick:qO,stringify:UO,stringifyUrl:HO},Symbol.toStringTag,{value:"Module"}));var xm=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 cZ(){return typeof document>"u"?!0:document.visibilityState!=="hidden"}var rT=xi;function XO(e,t){if(e===t||!(rT(e)&&rT(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},fZ=function(e){return/ion\/(vnd\.api\+)?json/.test(e.get("content-type")||"")};function oT(e){if(!xi(e))return e;for(var t=$t({},e),n=0,r=Object.entries(t);n"u"&&a===iT&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(g,b){return Em(t,null,function(){var _,w,x,T,P,E,A,$,I,C,R,M,N,O,D,L,j,U,G,W,X,Y,B,H,Q,J,ne,te,xe,ve,ce,Ne,se,gt,vn,Mt;return xm(this,function(ut){switch(ut.label){case 0:return _=b.signal,w=b.getState,x=b.extra,T=b.endpoint,P=b.forced,E=b.type,$=typeof g=="string"?{url:g}:g,I=$.url,C=$.headers,R=C===void 0?new Headers(v.headers):C,M=$.params,N=M===void 0?void 0:M,O=$.responseHandler,D=O===void 0?m??"json":O,L=$.validateStatus,j=L===void 0?S??dZ:L,U=$.timeout,G=U===void 0?p:U,W=tT($,["url","headers","params","responseHandler","validateStatus","timeout"]),X=$t(Hi($t({},v),{signal:_}),W),R=new Headers(oT(R)),Y=X,[4,o(R,{getState:w,extra:x,endpoint:T,forced:P,type:E})];case 1:Y.headers=ut.sent()||R,B=function(tt){return typeof tt=="object"&&(xi(tt)||Array.isArray(tt)||typeof tt.toJSON=="function")},!X.headers.has("content-type")&&B(X.body)&&X.headers.set("content-type",f),B(X.body)&&c(X.headers)&&(X.body=JSON.stringify(X.body,h)),N&&(H=~I.indexOf("?")?"&":"?",Q=l?l(N):new URLSearchParams(oT(N)),I+=H+Q),I=lZ(r,I),J=new Request(I,X),ne=J.clone(),A={request:ne},xe=!1,ve=G&&setTimeout(function(){xe=!0,b.abort()},G),ut.label=2;case 2:return ut.trys.push([2,4,5,6]),[4,a(J)];case 3:return te=ut.sent(),[3,6];case 4:return ce=ut.sent(),[2,{error:{status:xe?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(ce)},meta:A}];case 5:return ve&&clearTimeout(ve),[7];case 6:Ne=te.clone(),A.response=Ne,gt="",ut.label=7;case 7:return ut.trys.push([7,9,,10]),[4,Promise.all([y(te,D).then(function(tt){return se=tt},function(tt){return vn=tt}),Ne.text().then(function(tt){return gt=tt},function(){})])];case 8:if(ut.sent(),vn)throw vn;return[3,10];case 9:return Mt=ut.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:te.status,data:gt,error:String(Mt)},meta:A}];case 10:return[2,j(te,se)?{data:se,meta:A}:{error:{status:te.status,data:se},meta:A}]}})})};function y(g,b){return Em(this,null,function(){var _;return xm(this,function(w){switch(w.label){case 0:return typeof b=="function"?[2,b(g)]:(b==="content-type"&&(b=c(g.headers)?"json":"text"),b!=="json"?[3,2]:[4,g.text()]);case 1:return _=w.sent(),[2,_.length?JSON.parse(_):null];case 2:return[2,g.text()]}})})}}var sT=function(){function e(t,n){n===void 0&&(n=void 0),this.value=t,this.meta=n}return e}(),Bx=ue("__rtkq/focused"),YO=ue("__rtkq/unfocused"),jx=ue("__rtkq/online"),QO=ue("__rtkq/offline"),no;(function(e){e.query="query",e.mutation="mutation"})(no||(no={}));function ZO(e){return e.type===no.query}function pZ(e){return e.type===no.mutation}function JO(e,t,n,r,i,o){return gZ(e)?e(t,n,r,i).map(B_).map(o):Array.isArray(e)?e.map(B_).map(o):[]}function gZ(e){return typeof e=="function"}function B_(e){return typeof e=="string"?{type:e}:e}function yb(e){return e!=null}var Ef=Symbol("forceQueryFn"),j_=function(e){return typeof e[Ef]=="function"};function mZ(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:S,getRunningMutationsThunk:v,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 b=function(_){return Array.from(_.values()).flatMap(function(w){return w?Object.values(w):[]})};return Cm(Cm([],b(s)),b(a)).filter(yb)}function p(b,_){return function(w){var x,T=o.endpointDefinitions[b],P=t({queryArgs:_,endpointDefinition:T,endpointName:b});return(x=s.get(w))==null?void 0:x[P]}}function m(b,_){return function(w){var x;return(x=a.get(w))==null?void 0:x[_]}}function S(){return function(b){return Object.values(s.get(b)||{}).filter(yb)}}function v(){return function(b){return Object.values(a.get(b)||{}).filter(yb)}}function y(b,_){var w=function(x,T){var P=T===void 0?{}:T,E=P.subscribe,A=E===void 0?!0:E,$=P.forceRefetch,I=P.subscriptionOptions,C=Ef,R=P[C];return function(M,N){var O,D,L=t({queryArgs:x,endpointDefinition:_,endpointName:b}),j=n((O={type:"query",subscribe:A,forceRefetch:$,subscriptionOptions:I,endpointName:b,originalArgs:x,queryCacheKey:L},O[Ef]=R,O)),U=i.endpoints[b].select(x),G=M(j),W=U(N()),X=G.requestId,Y=G.abort,B=W.requestId!==X,H=(D=s.get(M))==null?void 0:D[L],Q=function(){return U(N())},J=Object.assign(R?G.then(Q):B&&!H?Promise.resolve(W):Promise.all([H,G]).then(Q),{arg:x,requestId:X,subscriptionOptions:I,queryCacheKey:L,abort:Y,unwrap:function(){return Em(this,null,function(){var te;return xm(this,function(xe){switch(xe.label){case 0:return[4,J];case 1:if(te=xe.sent(),te.isError)throw te.error;return[2,te.data]}})})},refetch:function(){return M(w(x,{subscribe:!1,forceRefetch:!0}))},unsubscribe:function(){A&&M(u({queryCacheKey:L,requestId:X}))},updateSubscriptionOptions:function(te){J.subscriptionOptions=te,M(d({endpointName:b,requestId:X,queryCacheKey:L,options:te}))}});if(!H&&!B&&!R){var ne=s.get(M)||{};ne[L]=J,s.set(M,ne),J.then(function(){delete ne[L],Object.keys(ne).length||s.delete(M)})}return J}};return w}function g(b){return function(_,w){var x=w===void 0?{}:w,T=x.track,P=T===void 0?!0:T,E=x.fixedCacheKey;return function(A,$){var I=r({type:"mutation",endpointName:b,originalArgs:_,track:P,fixedCacheKey:E}),C=A(I),R=C.requestId,M=C.abort,N=C.unwrap,O=C.unwrap().then(function(U){return{data:U}}).catch(function(U){return{error:U}}),D=function(){A(c({requestId:R,fixedCacheKey:E}))},L=Object.assign(O,{arg:C.arg,requestId:R,abort:M,unwrap:N,unsubscribe:D,reset:D}),j=a.get(A)||{};return a.set(A,j),j[R]=L,L.then(function(){delete j[R],Object.keys(j).length||a.delete(A)}),E&&(j[E]=L,L.then(function(){j[E]===L&&(delete j[E],Object.keys(j).length||a.delete(A))})),L}}}}function aT(e){return e}function yZ(e){var t=this,n=e.reducerPath,r=e.baseQuery,i=e.context.endpointDefinitions,o=e.serializeQueryArgs,s=e.api,a=function(g,b,_){return function(w){var x=i[g];w(s.internalActions.queryResultPatched({queryCacheKey:o({queryArgs:b,endpointDefinition:x,endpointName:g}),patches:_}))}},l=function(g,b,_){return function(w,x){var T,P,E=s.endpoints[g].select(b)(x()),A={patches:[],inversePatches:[],undo:function(){return w(s.util.patchQueryData(g,b,A.inversePatches))}};if(E.status===vt.uninitialized)return A;if("data"in E)if(yr(E.data)){var $=gx(E.data,_),I=$[1],C=$[2];(T=A.patches).push.apply(T,I),(P=A.inversePatches).push.apply(P,C)}else{var R=_(E.data);A.patches.push({op:"replace",path:[],value:R}),A.inversePatches.push({op:"replace",path:[],value:E.data})}return w(s.util.patchQueryData(g,b,A.patches)),A}},u=function(g,b,_){return function(w){var x;return w(s.endpoints[g].initiate(b,(x={subscribe:!1,forceRefetch:!0},x[Ef]=function(){return{data:_}},x)))}},c=function(g,b){return Em(t,[g,b],function(_,w){var x,T,P,E,A,$,I,C,R,M,N,O,D,L,j,U,G,W,X=w.signal,Y=w.abort,B=w.rejectWithValue,H=w.fulfillWithValue,Q=w.dispatch,J=w.getState,ne=w.extra;return xm(this,function(te){switch(te.label){case 0:x=i[_.endpointName],te.label=1;case 1:return te.trys.push([1,8,,13]),T=aT,P=void 0,E={signal:X,abort:Y,dispatch:Q,getState:J,extra:ne,endpoint:_.endpointName,type:_.type,forced:_.type==="query"?d(_,J()):void 0},A=_.type==="query"?_[Ef]:void 0,A?(P=A(),[3,6]):[3,2];case 2:return x.query?[4,r(x.query(_.originalArgs),E,x.extraOptions)]:[3,4];case 3:return P=te.sent(),x.transformResponse&&(T=x.transformResponse),[3,6];case 4:return[4,x.queryFn(_.originalArgs,E,x.extraOptions,function(xe){return r(xe,E,x.extraOptions)})];case 5:P=te.sent(),te.label=6;case 6:if(typeof process<"u",P.error)throw new sT(P.error,P.meta);return N=H,[4,T(P.data,P.meta,_.originalArgs)];case 7:return[2,N.apply(void 0,[te.sent(),(G={fulfilledTimeStamp:Date.now(),baseQueryMeta:P.meta},G[Oa]=!0,G)])];case 8:if(O=te.sent(),D=O,!(D instanceof sT))return[3,12];L=aT,x.query&&x.transformErrorResponse&&(L=x.transformErrorResponse),te.label=9;case 9:return te.trys.push([9,11,,12]),j=B,[4,L(D.value,D.meta,_.originalArgs)];case 10:return[2,j.apply(void 0,[te.sent(),(W={baseQueryMeta:D.meta},W[Oa]=!0,W)])];case 11:return U=te.sent(),D=U,[3,12];case 12:throw typeof process<"u",console.error(D),D;case 13:return[2]}})})};function d(g,b){var _,w,x,T,P=(w=(_=b[n])==null?void 0:_.queries)==null?void 0:w[g.queryCacheKey],E=(x=b[n])==null?void 0:x.config.refetchOnMountOrArgChange,A=P==null?void 0:P.fulfilledTimeStamp,$=(T=g.forceRefetch)!=null?T:g.subscribe&&E;return $?$===!0||(Number(new Date)-Number(A))/1e3>=$:!1}var f=Vs(n+"/executeQuery",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[Oa]=!0,g},condition:function(g,b){var _=b.getState,w,x,T,P=_(),E=(x=(w=P[n])==null?void 0:w.queries)==null?void 0:x[g.queryCacheKey],A=E==null?void 0:E.fulfilledTimeStamp,$=g.originalArgs,I=E==null?void 0:E.originalArgs,C=i[g.endpointName];return j_(g)?!0:(E==null?void 0:E.status)==="pending"?!1:d(g,P)||ZO(C)&&((T=C==null?void 0:C.forceRefetch)!=null&&T.call(C,{currentArg:$,previousArg:I,endpointState:E,state:P}))?!0:!A},dispatchConditionRejection:!0}),h=Vs(n+"/executeMutation",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[Oa]=!0,g}}),p=function(g){return"force"in g},m=function(g){return"ifOlderThan"in g},S=function(g,b,_){return function(w,x){var T=p(_)&&_.force,P=m(_)&&_.ifOlderThan,E=function(C){return C===void 0&&(C=!0),s.endpoints[g].initiate(b,{forceRefetch:C})},A=s.endpoints[g].select(b)(x());if(T)w(E());else if(P){var $=A==null?void 0:A.fulfilledTimeStamp;if(!$){w(E());return}var I=(Number(new Date)-Number(new Date($)))/1e3>=P;I&&w(E())}else w(E(!1))}};function v(g){return function(b){var _,w;return((w=(_=b==null?void 0:b.meta)==null?void 0:_.arg)==null?void 0:w.endpointName)===g}}function y(g,b){return{matchPending:Tu(u0(g),v(b)),matchFulfilled:Tu(ea(g),v(b)),matchRejected:Tu(Xu(g),v(b))}}return{queryThunk:f,mutationThunk:h,prefetch:S,updateQueryData:l,upsertQueryData:u,patchQueryData:a,buildMatchThunkActions:y}}function e7(e,t,n,r){return JO(n[e.meta.arg.endpointName][t],ea(e)?e.payload:void 0,uh(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function yp(e,t,n){var r=e[t];r&&n(r)}function Pf(e){var t;return(t="arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)!=null?t:e.requestId}function lT(e,t,n){var r=e[Pf(t)];r&&n(r)}var zc={};function vZ(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=ue(t+"/resetApiState"),f=Pt({name:t+"/queries",initialState:zc,reducers:{removeQueryResult:{reducer:function(_,w){var x=w.payload.queryCacheKey;delete _[x]},prepare:cg()},queryResultPatched:function(_,w){var x=w.payload,T=x.queryCacheKey,P=x.patches;yp(_,T,function(E){E.data=v_(E.data,P.concat())})}},extraReducers:function(_){_.addCase(n.pending,function(w,x){var T=x.meta,P=x.meta.arg,E,A,$=j_(P);(P.subscribe||$)&&((A=w[E=P.queryCacheKey])!=null||(w[E]={status:vt.uninitialized,endpointName:P.endpointName})),yp(w,P.queryCacheKey,function(I){I.status=vt.pending,I.requestId=$&&I.requestId?I.requestId:T.requestId,P.originalArgs!==void 0&&(I.originalArgs=P.originalArgs),I.startedTimeStamp=T.startedTimeStamp})}).addCase(n.fulfilled,function(w,x){var T=x.meta,P=x.payload;yp(w,T.arg.queryCacheKey,function(E){var A;if(!(E.requestId!==T.requestId&&!j_(T.arg))){var $=o[T.arg.endpointName].merge;if(E.status=vt.fulfilled,$)if(E.data!==void 0){var I=T.fulfilledTimeStamp,C=T.arg,R=T.baseQueryMeta,M=T.requestId,N=Js(E.data,function(O){return $(O,P,{arg:C.originalArgs,baseQueryMeta:R,fulfilledTimeStamp:I,requestId:M})});E.data=N}else E.data=P;else E.data=(A=o[T.arg.endpointName].structuralSharing)==null||A?XO(er(E.data)?lx(E.data):E.data,P):P;delete E.error,E.fulfilledTimeStamp=T.fulfilledTimeStamp}})}).addCase(n.rejected,function(w,x){var T=x.meta,P=T.condition,E=T.arg,A=T.requestId,$=x.error,I=x.payload;yp(w,E.queryCacheKey,function(C){if(!P){if(C.requestId!==A)return;C.status=vt.rejected,C.error=I??$}})}).addMatcher(l,function(w,x){for(var T=a(x).queries,P=0,E=Object.entries(T);P{const r=Tf.get(),i=Cf.get();return hZ({baseUrl:`${r??""}/api/v1`,prepareHeaders:s=>(i&&s.set("Authorization",`Bearer ${i}`),s)})(e,t,n)},Hs=XZ({baseQuery:QZ,reducerPath:"api",tagTypes:YZ,endpoints:()=>({})}),_b=(e,t)=>{if(!e)return!1;const n=V_.selectAll(e);if(n.length>1){const r=new Date(t.created_at),i=new Date(n[n.length-1].created_at);return r>=i}else if([0,1].includes(n.length))return!0;return!1},Uc=e=>gi.includes(e.image_category)?gi:_s,Kn=cl({selectId:e=>e.image_name,sortComparer:(e,t)=>UQ(t.updated_at,e.updated_at)}),V_=Kn.getSelectors(),di=e=>`images/?${F_.stringify(e,{arrayFormat:"none"})}`,he=Hs.injectEndpoints({endpoints:e=>({listImages:e.query({query:t=>({url:di(t),method:"GET"}),providesTags:(t,n,{board_id:r,categories:i})=>[{type:"ImageList",id:di({board_id:r,categories:i})}],serializeQueryArgs:({queryArgs:t})=>{const{board_id:n,categories:r}=t;return di({board_id:n,categories:r})},transformResponse(t){const{total:n,items:r}=t;return Kn.addMany(Kn.getInitialState({total:n}),r)},merge:(t,n)=>{Kn.addMany(t,V_.selectAll(n)),t.total=n.total},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;V_.selectAll(i).forEach(o=>{n(he.util.upsertQueryData("getImageDTO",o.image_name,o))})}catch{}},keepUnusedDataFor:86400}),getIntermediatesCount:e.query({query:()=>({url:di({is_intermediate:!0})}),providesTags:["IntermediatesCount"],transformResponse:t=>t.total}),getImageDTO:e.query({query:t=>({url:`images/${t}`}),providesTags:(t,n,r)=>{const i=[{type:"Image",id:r}];return t!=null&&t.board_id&&i.push({type:"Board",id:t.board_id}),i},keepUnusedDataFor:86400}),getImageMetadata:e.query({query:t=>({url:`images/${t}/metadata`}),providesTags:(t,n,r)=>[{type:"ImageMetadata",id:r}],keepUnusedDataFor:86400}),getBoardImagesTotal:e.query({query:t=>({url:di({board_id:t??"none",categories:gi,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:di({board_id:t??"none",categories:_s,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardAssetsTotal",id:r??"none"}],transformResponse:t=>t.total}),clearIntermediates:e.mutation({query:()=>({url:"images/clear-intermediates",method:"POST"}),invalidatesTags:["IntermediatesCount"]}),deleteImage:e.mutation({query:({image_name:t})=>({url:`images/${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=[],a=Uc(t);s.push(n(he.util.updateQueryData("listImages",{board_id:o??"none",categories:a},l=>{const u=l.total,d=Kn.removeOne(l,i).total-u;l.total=l.total+d})));try{await r}catch{s.forEach(l=>l.undo())}}}),changeImageIsIntermediate:e.mutation({query:({imageDTO:t,is_intermediate:n})=>({url:`images/${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(he.util.updateQueryData("getImageDTO",t.image_name,l=>{Object.assign(l,{is_intermediate:n})})));const a=Uc(t);if(n)s.push(r(he.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:a},l=>{const u=l.total,d=Kn.removeOne(l,t.image_name).total-u;l.total=l.total+d})));else{console.log(t);const l={board_id:t.board_id??"none",categories:a},u=he.endpoints.listImages.select(l)(o()),c=u.data&&u.data.ids.length>=u.data.total,d=_b(u.data,t);(c||d)&&s.push(r(he.util.updateQueryData("listImages",l,f=>{const h=f.total,m=Kn.upsertOne(f,t).total-h;f.total=f.total+m})))}try{await i}catch{s.forEach(l=>l.undo())}}}),changeImageSessionId:e.mutation({query:({imageDTO:t,session_id:n})=>({url:`images/${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,getState:o}){const s=[];s.push(r(he.util.updateQueryData("getImageDTO",t.image_name,a=>{Object.assign(a,{session_id:n})})));try{await i}catch{s.forEach(a=>a.undo())}}}),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/",method:"POST",body:a,params:{image_category:n,is_intermediate:r,session_id:i,board_id:o,crop_visible:s}}},async onQueryStarted({file:t,image_category:n,is_intermediate:r,postUploadAction:i,session_id:o,board_id:s},{dispatch:a,queryFulfilled:l}){try{const{data:u}=await l;if(u.is_intermediate)return;a(he.util.upsertQueryData("getImageDTO",u.image_name,u));const c=Uc(u);a(he.util.updateQueryData("listImages",{board_id:u.board_id??"none",categories:c},d=>{const f=d.total,p=Kn.addOne(d,u).total-f;d.total=d.total+p})),a(he.util.invalidateTags([{type:"BoardImagesTotal",id:u.board_id??"none"},{type:"BoardAssetsTotal",id:u.board_id??"none"}]))}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:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:r},{type:"BoardAssetsTotal",id:i.board_id??"none"}],async onQueryStarted({board_id:t,imageDTO:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[],a=Uc(n);if(s.push(r(he.util.updateQueryData("getImageDTO",n.image_name,l=>{Object.assign(l,{board_id:t})}))),!n.is_intermediate){s.push(r(he.util.updateQueryData("listImages",{board_id:n.board_id??"none",categories:a},f=>{const h=f.total,m=Kn.removeOne(f,n.image_name).total-h;f.total=f.total+m})));const l={board_id:t??"none",categories:a},u=he.endpoints.listImages.select(l)(o()),c=u.data&&u.data.ids.length>=u.data.total,d=_b(u.data,n);(c||d)&&s.push(r(he.util.updateQueryData("listImages",l,f=>{const h=f.total,m=Kn.addOne(f,n).total-h;f.total=f.total+m})))}try{await i}catch{s.forEach(l=>l.undo())}}}),removeImageFromBoard:e.mutation({query:({imageDTO:t})=>{const{board_id:n,image_name:r}=t;return{url:"board_images/",method:"DELETE",body:{board_id:n,image_name:r}}},invalidatesTags:(t,n,{imageDTO:r})=>[{type:"Board",id:r.board_id},{type:"BoardImagesTotal",id:r.board_id},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:r.board_id},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted({imageDTO:t},{dispatch:n,queryFulfilled:r,getState:i}){const o=Uc(t),s=[];s.push(n(he.util.updateQueryData("getImageDTO",t.image_name,d=>{Object.assign(d,{board_id:void 0})}))),s.push(n(he.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:o},d=>{const f=d.total,p=Kn.removeOne(d,t.image_name).total-f;d.total=d.total+p})));const a={board_id:"none",categories:o},l=he.endpoints.listImages.select(a)(i()),u=l.data&&l.data.ids.length>=l.data.total,c=_b(l.data,t);(u||c)&&s.push(n(he.util.updateQueryData("listImages",a,d=>{const f=d.total,p=Kn.upsertOne(d,t).total-f;d.total=d.total+p})));try{await r}catch{s.forEach(d=>d.undo())}}})})}),{useGetIntermediatesCountQuery:qCe,useListImagesQuery:WCe,useLazyListImagesQuery:KCe,useGetImageDTOQuery:XCe,useGetImageMetadataQuery:YCe,useDeleteImageMutation:QCe,useGetBoardImagesTotalQuery:ZCe,useGetBoardAssetsTotalQuery:JCe,useUploadImageMutation:e3e,useAddImageToBoardMutation:t3e,useRemoveImageFromBoardMutation:n3e,useClearIntermediatesMutation:r3e}=he,n7=ue("socket/socketConnected"),r7=ue("socket/appSocketConnected"),i7=ue("socket/socketDisconnected"),o7=ue("socket/appSocketDisconnected"),Vx=ue("socket/socketSubscribed"),s7=ue("socket/appSocketSubscribed"),a7=ue("socket/socketUnsubscribed"),l7=ue("socket/appSocketUnsubscribed"),u7=ue("socket/socketInvocationStarted"),c7=ue("socket/appSocketInvocationStarted"),zx=ue("socket/socketInvocationComplete"),d7=ue("socket/appSocketInvocationComplete"),f7=ue("socket/socketInvocationError"),Ux=ue("socket/appSocketInvocationError"),h7=ue("socket/socketGraphExecutionStateComplete"),p7=ue("socket/appSocketGraphExecutionStateComplete"),g7=ue("socket/socketGeneratorProgress"),m7=ue("socket/appSocketGeneratorProgress"),y7=ue("socket/socketModelLoadStarted"),ZZ=ue("socket/appSocketModelLoadStarted"),v7=ue("socket/socketModelLoadCompleted"),JZ=ue("socket/appSocketModelLoadCompleted"),b7=ue("socket/socketSessionRetrievalError"),S7=ue("socket/appSocketSessionRetrievalError"),_7=ue("socket/socketInvocationRetrievalError"),w7=ue("socket/appSocketInvocationRetrievalError"),Gx=ue("controlNet/imageProcessed"),Xl={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"}}},_p={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"},vT={isEnabled:!0,model:null,weight:1,beginStepPct:0,endStepPct:1,controlMode:"balanced",resizeMode:"just_resize",controlImage:null,processedControlImage:null,processorType:"canny_image_processor",processorNode:Xl.canny_image_processor.default,shouldAutoConfig:!0},z_={controlNets:{},isEnabled:!1,pendingControlImages:[]},x7=Pt({name:"controlNet",initialState:z_,reducers:{isControlNetEnabledToggled:e=>{e.isEnabled=!e.isEnabled},controlNetAdded:(e,t)=>{const{controlNetId:n,controlNet:r}=t.payload;e.controlNets[n]={...r??vT,controlNetId:n}},controlNetDuplicated:(e,t)=>{const{sourceControlNetId:n,newControlNetId:r}=t.payload,i=Ln(e.controlNets[n]);i.controlNetId=r,e.controlNets[r]=i},controlNetAddedFromImage:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n]={...vT,controlNetId:n,controlImage:r}},controlNetRemoved:(e,t)=>{const{controlNetId:n}=t.payload;delete e.controlNets[n]},controlNetToggled:(e,t)=>{const{controlNetId:n}=t.payload;e.controlNets[n].isEnabled=!e.controlNets[n].isEnabled},controlNetImageChanged:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n].controlImage=r,e.controlNets[n].processedControlImage=null,r!==null&&e.controlNets[n].processorType!=="none"&&e.pendingControlImages.push(n)},controlNetProcessedImageChanged:(e,t)=>{const{controlNetId:n,processedControlImage:r}=t.payload;e.controlNets[n].processedControlImage=r,e.pendingControlImages=e.pendingControlImages.filter(i=>i!==n)},controlNetModelChanged:(e,t)=>{const{controlNetId:n,model:r}=t.payload;if(e.controlNets[n].model=r,e.controlNets[n].processedControlImage=null,e.controlNets[n].shouldAutoConfig){let i;for(const o in _p)if(r.model_name.includes(o)){i=_p[o];break}i?(e.controlNets[n].processorType=i,e.controlNets[n].processorNode=Xl[i].default):(e.controlNets[n].processorType="none",e.controlNets[n].processorNode=Xl.none.default)}},controlNetWeightChanged:(e,t)=>{const{controlNetId:n,weight:r}=t.payload;e.controlNets[n].weight=r},controlNetBeginStepPctChanged:(e,t)=>{const{controlNetId:n,beginStepPct:r}=t.payload;e.controlNets[n].beginStepPct=r},controlNetEndStepPctChanged:(e,t)=>{const{controlNetId:n,endStepPct:r}=t.payload;e.controlNets[n].endStepPct=r},controlNetControlModeChanged:(e,t)=>{const{controlNetId:n,controlMode:r}=t.payload;e.controlNets[n].controlMode=r},controlNetResizeModeChanged:(e,t)=>{const{controlNetId:n,resizeMode:r}=t.payload;e.controlNets[n].resizeMode=r},controlNetProcessorParamsChanged:(e,t)=>{const{controlNetId:n,changes:r}=t.payload,i=e.controlNets[n].processorNode;e.controlNets[n].processorNode={...i,...r},e.controlNets[n].shouldAutoConfig=!1},controlNetProcessorTypeChanged:(e,t)=>{const{controlNetId:n,processorType:r}=t.payload;e.controlNets[n].processedControlImage=null,e.controlNets[n].processorType=r,e.controlNets[n].processorNode=Xl[r].default,e.controlNets[n].shouldAutoConfig=!1},controlNetAutoConfigToggled:(e,t)=>{var i;const{controlNetId:n}=t.payload,r=!e.controlNets[n].shouldAutoConfig;if(r){let o;for(const s in _p)if((i=e.controlNets[n].model)!=null&&i.model_name.includes(s)){o=_p[s];break}o?(e.controlNets[n].processorType=o,e.controlNets[n].processorNode=Xl[o].default):(e.controlNets[n].processorType="none",e.controlNets[n].processorNode=Xl.none.default)}e.controlNets[n].shouldAutoConfig=r},controlNetReset:()=>({...z_})},extraReducers:e=>{e.addCase(Gx,(t,n)=>{t.controlNets[n.payload.controlNetId].controlImage!==null&&t.pendingControlImages.push(n.payload.controlNetId)}),e.addCase(Ux,t=>{t.pendingControlImages=[]}),e.addMatcher(MO,t=>{t.pendingControlImages=[]}),e.addMatcher(he.endpoints.deleteImage.matchFulfilled,(t,n)=>{const{image_name:r}=n.meta.arg.originalArgs;Qa(t.controlNets,i=>{i.controlImage===r&&(i.controlImage=null,i.processedControlImage=null),i.processedControlImage===r&&(i.processedControlImage=null)})})}}),{isControlNetEnabledToggled:i3e,controlNetAdded:o3e,controlNetDuplicated:s3e,controlNetAddedFromImage:a3e,controlNetRemoved:C7,controlNetImageChanged:Hx,controlNetProcessedImageChanged:eJ,controlNetToggled:l3e,controlNetModelChanged:bT,controlNetWeightChanged:u3e,controlNetBeginStepPctChanged:c3e,controlNetEndStepPctChanged:d3e,controlNetControlModeChanged:f3e,controlNetResizeModeChanged:h3e,controlNetProcessorParamsChanged:tJ,controlNetProcessorTypeChanged:nJ,controlNetReset:T7,controlNetAutoConfigToggled:ST}=x7.actions,rJ=x7.reducer,E7={isEnabled:!1,maxPrompts:100,combinatorial:!0},iJ=E7,P7=Pt({name:"dynamicPrompts",initialState:iJ,reducers:{maxPromptsChanged:(e,t)=>{e.maxPrompts=t.payload},maxPromptsReset:e=>{e.maxPrompts=E7.maxPrompts},combinatorialToggled:e=>{e.combinatorial=!e.combinatorial},isEnabledToggled:e=>{e.isEnabled=!e.isEnabled}}}),{isEnabledToggled:p3e,maxPromptsChanged:g3e,maxPromptsReset:m3e,combinatorialToggled:y3e}=P7.actions,oJ=P7.reducer,sJ={updateBoardModalOpen:!1,searchText:""},A7=Pt({name:"boards",initialState:sJ,reducers:{setBoardSearchText:(e,t)=>{e.searchText=t.payload},setUpdateBoardModalOpen:(e,t)=>{e.updateBoardModalOpen=t.payload}}}),{setBoardSearchText:v3e,setUpdateBoardModalOpen:b3e}=A7.actions,aJ=A7.reducer,ec=Hs.injectEndpoints({endpoints:e=>({listBoards:e.query({query:t=>({url:"boards/",params:t}),providesTags:(t,n,r)=>{const i=[{type:"Board",id:Le}];return t&&i.push(...t.items.map(({board_id:o})=>({type:"Board",id:o}))),i}}),listAllBoards:e.query({query:()=>({url:"boards/",params:{all:!0}}),providesTags:(t,n,r)=>{const i=[{type:"Board",id:Le}];return t&&i.push(...t.map(({board_id:o})=>({type:"Board",id:o}))),i}}),listAllImageNamesForBoard:e.query({query:t=>({url:`boards/${t}/image_names`}),providesTags:(t,n,r)=>[{type:"ImageNameList",id:r}],keepUnusedDataFor:0}),createBoard:e.mutation({query:t=>({url:"boards/",method:"POST",params:{board_name:t}}),invalidatesTags:[{type:"Board",id:Le}]}),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}]}),deleteBoard:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE"}),invalidatesTags:(t,n,r)=>[{type:"Board",id:Le},{type:"ImageList",id:di({board_id:"none",categories:gi})},{type:"ImageList",id:di({board_id:"none",categories:_s})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{deleted_board_images:s}=o;s.forEach(u=>{n(he.util.updateQueryData("getImageDTO",u,c=>{c.board_id=void 0}))});const a=[{categories:gi},{categories:_s}],l=s.map(u=>({id:u,changes:{board_id:void 0}}));a.forEach(u=>{n(he.util.updateQueryData("listImages",u,c=>{const d=c.total,h=Kn.updateMany(c,l).total-d;c.total=c.total+h}))})}catch{}}}),deleteBoardAndImages:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE",params:{include_images:!0}}),invalidatesTags:(t,n,r)=>[{type:"Board",id:Le},{type:"ImageList",id:di({board_id:"none",categories:gi})},{type:"ImageList",id:di({board_id:"none",categories:_s})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{deleted_images:s}=o;[{categories:gi},{categories:_s}].forEach(l=>{n(he.util.updateQueryData("listImages",l,u=>{const c=u.total,f=Kn.removeMany(u,s).total-c;u.total=u.total+f}))})}catch{}}})})}),{useListBoardsQuery:S3e,useListAllBoardsQuery:_3e,useCreateBoardMutation:w3e,useUpdateBoardMutation:x3e,useDeleteBoardMutation:C3e,useDeleteBoardAndImagesMutation:T3e,useListAllImageNamesForBoardQuery:E3e}=ec,k7={selection:[],shouldAutoSwitch:!0,autoAddBoardId:void 0,galleryImageMinimumWidth:96,selectedBoardId:void 0,galleryView:"images",batchImageNames:[],isBatchEnabled:!1},R7=Pt({name:"gallery",initialState:k7,reducers:{imageRangeEndSelected:()=>{},imageSelectionToggled:()=>{},imageSelected:(e,t)=>{e.selection=t.payload?[t.payload]:[]},shouldAutoSwitchChanged:(e,t)=>{e.shouldAutoSwitch=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},boardIdSelected:(e,t)=>{e.selectedBoardId=t.payload,e.galleryView="images"},isBatchEnabledChanged:(e,t)=>{e.isBatchEnabled=t.payload},imagesAddedToBatch:(e,t)=>{e.batchImageNames=tY(e.batchImageNames.concat(t.payload))},imagesRemovedFromBatch:(e,t)=>{e.batchImageNames=e.batchImageNames.filter(r=>!t.payload.includes(r));const n=e.selection.filter(r=>!t.payload.includes(r));if(n.length){e.selection=n;return}e.selection=[e.batchImageNames[0]]},batchReset:e=>{e.batchImageNames=[],e.selection=[]},autoAddBoardIdChanged:(e,t)=>{e.autoAddBoardId=t.payload},galleryViewChanged:(e,t)=>{e.galleryView=t.payload}},extraReducers:e=>{e.addMatcher(uJ,(t,n)=>{const r=n.meta.arg.originalArgs;r===t.selectedBoardId&&(t.selectedBoardId=void 0,t.galleryView="images"),r===t.autoAddBoardId&&(t.autoAddBoardId=void 0)}),e.addMatcher(ec.endpoints.listAllBoards.matchFulfilled,(t,n)=>{const r=n.payload;t.autoAddBoardId&&(r.map(i=>i.board_id).includes(t.autoAddBoardId)||(t.autoAddBoardId=void 0))})}}),{imageRangeEndSelected:P3e,imageSelectionToggled:A3e,imageSelected:Os,shouldAutoSwitchChanged:k3e,setGalleryImageMinimumWidth:R3e,boardIdSelected:U_,isBatchEnabledChanged:O3e,imagesAddedToBatch:G_,imagesRemovedFromBatch:M3e,autoAddBoardIdChanged:I3e,galleryViewChanged:Am}=R7.actions,lJ=R7.reducer,uJ=ei(ec.endpoints.deleteBoard.matchFulfilled,ec.endpoints.deleteBoardAndImages.matchFulfilled),cJ={imageToDelete:null,isModalOpen:!1},O7=Pt({name:"imageDeletion",initialState:cJ,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imageToDeleteSelected:(e,t)=>{e.imageToDelete=t.payload},imageToDeleteCleared:e=>{e.imageToDelete=null,e.isModalOpen=!1}}}),{isModalOpenChanged:M7,imageToDeleteSelected:dJ,imageToDeleteCleared:N3e}=O7.actions,fJ=O7.reducer,_T={weight:.75},hJ={loras:{}},I7=Pt({name:"lora",initialState:hJ,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,..._T}},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;e.loras[n].weight=r},loraWeightReset:(e,t)=>{const n=t.payload;e.loras[n].weight=_T.weight}}}),{loraAdded:D3e,loraRemoved:N7,loraWeightChanged:L3e,loraWeightReset:$3e,lorasCleared:F3e}=I7.actions,pJ=I7.reducer;function ti(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},gJ=e=>e?wT(e):wT,{useSyncExternalStoreWithSelector:mJ}=Wj;function yJ(e,t=e.getState,n){const r=mJ(e.subscribe,e.getState,e.getServerState||e.getState,t,n);return k.useDebugValue(r),r}function br(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 P0(){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}})}hg.prototype=P0.prototype={constructor:hg,on:function(e,t){var n=this._,r=bJ(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)),CT.hasOwnProperty(t)?{space:CT[t],local:e}:e}function _J(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===H_&&t.documentElement.namespaceURI===H_?t.createElement(e):t.createElementNS(n,e)}}function wJ(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function D7(e){var t=A0(e);return(t.local?wJ:_J)(t)}function xJ(){}function qx(e){return e==null?xJ:function(){return this.querySelector(e)}}function CJ(e){typeof e!="function"&&(e=qx(e));for(var t=this._groups,n=t.length,r=new Array(n),i=0;i=g&&(g=y+1);!(_=S[g])&&++g=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function XJ(e){e||(e=YJ);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 QJ(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ZJ(){return Array.from(this)}function JJ(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?cee:typeof t=="function"?fee:dee)(e,t,n??"")):tc(this.node(),e)}function tc(e,t){return e.style.getPropertyValue(t)||j7(e).getComputedStyle(e,null).getPropertyValue(t)}function pee(e){return function(){delete this[e]}}function gee(e,t){return function(){this[e]=t}}function mee(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function yee(e,t){return arguments.length>1?this.each((t==null?pee:typeof t=="function"?mee:gee)(e,t)):this.node()[e]}function V7(e){return e.trim().split(/^|\s+/)}function Wx(e){return e.classList||new z7(e)}function z7(e){this._node=e,this._names=V7(e.getAttribute("class")||"")}z7.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 U7(e,t){for(var n=Wx(e),r=-1,i=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Hee(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,o;n()=>e;function q_(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}})}q_.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function tte(e){return!e.ctrlKey&&!e.button}function nte(){return this.parentNode}function rte(e,t){return t??{x:e.x,y:e.y}}function ite(){return navigator.maxTouchPoints||"ontouchstart"in this}function ote(){var e=tte,t=nte,n=rte,r=ite,i={},o=P0("start","drag","end"),s=0,a,l,u,c,d=0;function f(b){b.on("mousedown.drag",h).filter(r).on("touchstart.drag",S).on("touchmove.drag",v,ete).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(b,_){if(!(c||!e.call(this,b,_))){var w=g(this,t.call(this,b,_),b,_,"mouse");w&&(fi(b.view).on("mousemove.drag",p,Af).on("mouseup.drag",m,Af),W7(b.view),wb(b),u=!1,a=b.clientX,l=b.clientY,w("start",b))}}function p(b){if(Ru(b),!u){var _=b.clientX-a,w=b.clientY-l;u=_*_+w*w>d}i.mouse("drag",b)}function m(b){fi(b.view).on("mousemove.drag mouseup.drag",null),K7(b.view,u),Ru(b),i.mouse("end",b)}function S(b,_){if(e.call(this,b,_)){var w=b.changedTouches,x=t.call(this,b,_),T=w.length,P,E;for(P=0;P>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?xp(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?xp(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=ate.exec(e))?new hr(t[1],t[2],t[3],1):(t=lte.exec(e))?new hr(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ute.exec(e))?xp(t[1],t[2],t[3],t[4]):(t=cte.exec(e))?xp(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=dte.exec(e))?OT(t[1],t[2]/100,t[3]/100,1):(t=fte.exec(e))?OT(t[1],t[2]/100,t[3]/100,t[4]):TT.hasOwnProperty(e)?AT(TT[e]):e==="transparent"?new hr(NaN,NaN,NaN,0):null}function AT(e){return new hr(e>>16&255,e>>8&255,e&255,1)}function xp(e,t,n,r){return r<=0&&(e=t=n=NaN),new hr(e,t,n,r)}function gte(e){return e instanceof bh||(e=Of(e)),e?(e=e.rgb(),new hr(e.r,e.g,e.b,e.opacity)):new hr}function W_(e,t,n,r){return arguments.length===1?gte(e):new hr(e,t,n,r??1)}function hr(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Kx(hr,W_,X7(bh,{brighter(e){return e=e==null?Rm:Math.pow(Rm,e),new hr(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?kf:Math.pow(kf,e),new hr(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new hr(Va(this.r),Va(this.g),Va(this.b),Om(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:kT,formatHex:kT,formatHex8:mte,formatRgb:RT,toString:RT}));function kT(){return`#${Ia(this.r)}${Ia(this.g)}${Ia(this.b)}`}function mte(){return`#${Ia(this.r)}${Ia(this.g)}${Ia(this.b)}${Ia((isNaN(this.opacity)?1:this.opacity)*255)}`}function RT(){const e=Om(this.opacity);return`${e===1?"rgb(":"rgba("}${Va(this.r)}, ${Va(this.g)}, ${Va(this.b)}${e===1?")":`, ${e})`}`}function Om(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Va(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ia(e){return e=Va(e),(e<16?"0":"")+e.toString(16)}function OT(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new hi(e,t,n,r)}function Y7(e){if(e instanceof hi)return new hi(e.h,e.s,e.l,e.opacity);if(e instanceof bh||(e=Of(e)),!e)return new hi;if(e instanceof hi)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 hi(s,a,l,e.opacity)}function yte(e,t,n,r){return arguments.length===1?Y7(e):new hi(e,t,n,r??1)}function hi(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Kx(hi,yte,X7(bh,{brighter(e){return e=e==null?Rm:Math.pow(Rm,e),new hi(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?kf:Math.pow(kf,e),new hi(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 hr(xb(e>=240?e-240:e+120,i,r),xb(e,i,r),xb(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new hi(MT(this.h),Cp(this.s),Cp(this.l),Om(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=Om(this.opacity);return`${e===1?"hsl(":"hsla("}${MT(this.h)}, ${Cp(this.s)*100}%, ${Cp(this.l)*100}%${e===1?")":`, ${e})`}`}}));function MT(e){return e=(e||0)%360,e<0?e+360:e}function Cp(e){return Math.max(0,Math.min(1,e||0))}function xb(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 Q7=e=>()=>e;function vte(e,t){return function(n){return e+n*t}}function bte(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 Ste(e){return(e=+e)==1?Z7:function(t,n){return n-t?bte(t,n,e):Q7(isNaN(t)?n:t)}}function Z7(e,t){var n=t-e;return n?vte(e,n):Q7(isNaN(e)?t:e)}const IT=function e(t){var n=Ste(t);function r(i,o){var s=n((i=W_(i)).r,(o=W_(o)).r),a=n(i.g,o.g),l=n(i.b,o.b),u=Z7(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 cs(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var K_=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Cb=new RegExp(K_.source,"g");function _te(e){return function(){return e}}function wte(e){return function(t){return e(t)+""}}function xte(e,t){var n=K_.lastIndex=Cb.lastIndex=0,r,i,o,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=K_.exec(e))&&(i=Cb.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:cs(r,i)})),n=Cb.lastIndex;return n180?c+=360:c-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:cs(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:cs(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:cs(u,d)},{i:m-2,x:cs(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,S;++p=0&&e._call.call(void 0,t),e=e._next;--nc}function LT(){tl=(Im=Mf.now())+k0,nc=fd=0;try{Ite()}finally{nc=0,Dte(),tl=0}}function Nte(){var e=Mf.now(),t=e-Im;t>tM&&(k0-=t,Im=e)}function Dte(){for(var e,t=Mm,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:Mm=n);hd=e,Y_(r)}function Y_(e){if(!nc){fd&&(fd=clearTimeout(fd));var t=e-tl;t>24?(e<1/0&&(fd=setTimeout(LT,e-Mf.now()-k0)),Gc&&(Gc=clearInterval(Gc))):(Gc||(Im=Mf.now(),Gc=setInterval(Nte,tM)),nc=1,nM(LT))}}function $T(e,t,n){var r=new Nm;return t=t==null?0:+t,r.restart(i=>{r.stop(),e(i+t)},t,n),r}var Lte=P0("start","end","cancel","interrupt"),$te=[],iM=0,FT=1,Q_=2,pg=3,BT=4,Z_=5,gg=6;function R0(e,t,n,r,i,o){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Fte(e,n,{name:t,index:r,group:i,on:Lte,tween:$te,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:iM})}function Yx(e,t){var n=Pi(e,t);if(n.state>iM)throw new Error("too late; already scheduled");return n}function so(e,t){var n=Pi(e,t);if(n.state>pg)throw new Error("too late; already running");return n}function Pi(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Fte(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=rM(o,0,n.time);function o(u){n.state=FT,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!==FT)return l();for(c in r)if(h=r[c],h.name===n.name){if(h.state===pg)return $T(s);h.state===BT?(h.state=gg,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[c]):+cQ_&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function pne(e,t,n){var r,i,o=hne(t)?Yx:so;return function(){var s=o(this,e),a=s.on;a!==r&&(i=(r=a).copy()).on(t,n),s.on=i}}function gne(e,t){var n=this._id;return arguments.length<2?Pi(this.node(),n).on.on(e):this.each(pne(n,e,t))}function mne(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function yne(){return this.on("end.remove",mne(this._id))}function vne(e){var t=this._name,n=this._id;typeof e!="function"&&(e=qx(e));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s()=>e;function Une(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 Po(e,t,n){this.k=e,this.x=t,this.y=n}Po.prototype={constructor:Po,scale:function(e){return e===1?this:new Po(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Po(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 Ms=new Po(1,0,0);Po.prototype;function Tb(e){e.stopImmediatePropagation()}function Hc(e){e.preventDefault(),e.stopImmediatePropagation()}function Gne(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Hne(){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 jT(){return this.__zoom||Ms}function qne(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Wne(){return navigator.maxTouchPoints||"ontouchstart"in this}function Kne(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 Xne(){var e=Gne,t=Hne,n=Kne,r=qne,i=Wne,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Ote,u=P0("start","zoom","end"),c,d,f,h=500,p=150,m=0,S=10;function v(C){C.property("__zoom",jT).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",P).on("dblclick.zoom",E).filter(i).on("touchstart.zoom",A).on("touchmove.zoom",$).on("touchend.zoom touchcancel.zoom",I).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}v.transform=function(C,R,M,N){var O=C.selection?C.selection():C;O.property("__zoom",jT),C!==O?_(C,R,M,N):O.interrupt().each(function(){w(this,arguments).event(N).start().zoom(null,typeof R=="function"?R.apply(this,arguments):R).end()})},v.scaleBy=function(C,R,M,N){v.scaleTo(C,function(){var O=this.__zoom.k,D=typeof R=="function"?R.apply(this,arguments):R;return O*D},M,N)},v.scaleTo=function(C,R,M,N){v.transform(C,function(){var O=t.apply(this,arguments),D=this.__zoom,L=M==null?b(O):typeof M=="function"?M.apply(this,arguments):M,j=D.invert(L),U=typeof R=="function"?R.apply(this,arguments):R;return n(g(y(D,U),L,j),O,s)},M,N)},v.translateBy=function(C,R,M,N){v.transform(C,function(){return n(this.__zoom.translate(typeof R=="function"?R.apply(this,arguments):R,typeof M=="function"?M.apply(this,arguments):M),t.apply(this,arguments),s)},null,N)},v.translateTo=function(C,R,M,N,O){v.transform(C,function(){var D=t.apply(this,arguments),L=this.__zoom,j=N==null?b(D):typeof N=="function"?N.apply(this,arguments):N;return n(Ms.translate(j[0],j[1]).scale(L.k).translate(typeof R=="function"?-R.apply(this,arguments):-R,typeof M=="function"?-M.apply(this,arguments):-M),D,s)},N,O)};function y(C,R){return R=Math.max(o[0],Math.min(o[1],R)),R===C.k?C:new Po(R,C.x,C.y)}function g(C,R,M){var N=R[0]-M[0]*C.k,O=R[1]-M[1]*C.k;return N===C.x&&O===C.y?C:new Po(C.k,N,O)}function b(C){return[(+C[0][0]+ +C[1][0])/2,(+C[0][1]+ +C[1][1])/2]}function _(C,R,M,N){C.on("start.zoom",function(){w(this,arguments).event(N).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event(N).end()}).tween("zoom",function(){var O=this,D=arguments,L=w(O,D).event(N),j=t.apply(O,D),U=M==null?b(j):typeof M=="function"?M.apply(O,D):M,G=Math.max(j[1][0]-j[0][0],j[1][1]-j[0][1]),W=O.__zoom,X=typeof R=="function"?R.apply(O,D):R,Y=l(W.invert(U).concat(G/W.k),X.invert(U).concat(G/X.k));return function(B){if(B===1)B=X;else{var H=Y(B),Q=G/H[2];B=new Po(Q,U[0]-H[0]*Q,U[1]-H[1]*Q)}L.zoom(null,B)}})}function w(C,R,M){return!M&&C.__zooming||new x(C,R)}function x(C,R){this.that=C,this.args=R,this.active=0,this.sourceEvent=null,this.extent=t.apply(C,R),this.taps=0}x.prototype={event:function(C){return C&&(this.sourceEvent=C),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(C,R){return this.mouse&&C!=="mouse"&&(this.mouse[1]=R.invert(this.mouse[0])),this.touch0&&C!=="touch"&&(this.touch0[1]=R.invert(this.touch0[0])),this.touch1&&C!=="touch"&&(this.touch1[1]=R.invert(this.touch1[0])),this.that.__zoom=R,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(C){var R=fi(this.that).datum();u.call(C,this.that,new Une(C,{sourceEvent:this.sourceEvent,target:v,type:C,transform:this.that.__zoom,dispatch:u}),R)}};function T(C,...R){if(!e.apply(this,arguments))return;var M=w(this,R).event(C),N=this.__zoom,O=Math.max(o[0],Math.min(o[1],N.k*Math.pow(2,r.apply(this,arguments)))),D=$i(C);if(M.wheel)(M.mouse[0][0]!==D[0]||M.mouse[0][1]!==D[1])&&(M.mouse[1]=N.invert(M.mouse[0]=D)),clearTimeout(M.wheel);else{if(N.k===O)return;M.mouse=[D,N.invert(D)],mg(this),M.start()}Hc(C),M.wheel=setTimeout(L,p),M.zoom("mouse",n(g(y(N,O),M.mouse[0],M.mouse[1]),M.extent,s));function L(){M.wheel=null,M.end()}}function P(C,...R){if(f||!e.apply(this,arguments))return;var M=C.currentTarget,N=w(this,R,!0).event(C),O=fi(C.view).on("mousemove.zoom",U,!0).on("mouseup.zoom",G,!0),D=$i(C,M),L=C.clientX,j=C.clientY;W7(C.view),Tb(C),N.mouse=[D,this.__zoom.invert(D)],mg(this),N.start();function U(W){if(Hc(W),!N.moved){var X=W.clientX-L,Y=W.clientY-j;N.moved=X*X+Y*Y>m}N.event(W).zoom("mouse",n(g(N.that.__zoom,N.mouse[0]=$i(W,M),N.mouse[1]),N.extent,s))}function G(W){O.on("mousemove.zoom mouseup.zoom",null),K7(W.view,N.moved),Hc(W),N.event(W).end()}}function E(C,...R){if(e.apply(this,arguments)){var M=this.__zoom,N=$i(C.changedTouches?C.changedTouches[0]:C,this),O=M.invert(N),D=M.k*(C.shiftKey?.5:2),L=n(g(y(M,D),N,O),t.apply(this,R),s);Hc(C),a>0?fi(this).transition().duration(a).call(_,L,N,C):fi(this).call(v.transform,L,N,C)}}function A(C,...R){if(e.apply(this,arguments)){var M=C.touches,N=M.length,O=w(this,R,C.changedTouches.length===N).event(C),D,L,j,U;for(Tb(C),L=0;L"[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".`},lM=qs.error001();function Vt(e,t){const n=k.useContext(O0);if(n===null)throw new Error(lM);return yJ(n,e,t)}const Vn=()=>{const e=k.useContext(O0);if(e===null)throw new Error(lM);return k.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Qne=e=>e.userSelectionActive?"none":"all";function Zne({position:e,children:t,className:n,style:r,...i}){const o=Vt(Qne),s=`${e}`.split("-");return K.jsx("div",{className:ti(["react-flow__panel",n,...s]),style:{...r,pointerEvents:o},...i,children:t})}function Jne({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:K.jsx(Zne,{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:K.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const ere=({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=k.useRef(null),[f,h]=k.useState({x:0,y:0,width:0,height:0}),p=ti(["react-flow__edge-textwrapper",u]);return k.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:K.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:p,visibility:f.width?"visible":"hidden",...c,children:[i&&K.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}),K.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:d,style:r,children:n}),l]})};var tre=k.memo(ere);const Zx=e=>({width:e.offsetWidth,height:e.offsetHeight}),rc=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Jx=(e={x:0,y:0},t)=>({x:rc(e.x,t[0][0],t[1][0]),y:rc(e.y,t[0][1],t[1][1])}),VT=(e,t,n)=>en?-rc(Math.abs(e-n),1,50)/50:0,uM=(e,t)=>{const n=VT(e.x,35,t.width-35)*20,r=VT(e.y,35,t.height-35)*20;return[n,r]},cM=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},dM=(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)}),Dm=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),fM=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),zT=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),B3e=(e,t)=>fM(dM(Dm(e),Dm(t))),J_=(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)},nre=e=>Kr(e.width)&&Kr(e.height)&&Kr(e.x)&&Kr(e.y),Kr=e=>!isNaN(e)&&isFinite(e),on=Symbol.for("internals"),hM=["Enter"," ","Escape"],rre=(e,t)=>{},ire=e=>"nativeEvent"in e;function e2(e){var i,o;const t=ire(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 pM=e=>"clientX"in e,Is=(e,t)=>{var o,s;const n=pM(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)}},Sh=({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})=>K.jsxs(K.Fragment,{children:[K.jsx("path",{id:e,style:c,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:f}),h&&K.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),i&&Kr(n)&&Kr(r)?K.jsx(tre,{x:n,y:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u}):null]});Sh.displayName="BaseEdge";function qc(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(o=>o.id===e);i&&n(r,{...i})}}function gM({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(n-e)/2,o=n{const[S,v,y]=yM({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o});return K.jsx(Sh,{path:S,labelX:v,labelY:y,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:m})});eC.displayName="SimpleBezierEdge";const GT={[pe.Left]:{x:-1,y:0},[pe.Right]:{x:1,y:0},[pe.Top]:{x:0,y:-1},[pe.Bottom]:{x:0,y:1}},ore=({source:e,sourcePosition:t=pe.Bottom,target:n})=>t===pe.Left||t===pe.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function sre({source:e,sourcePosition:t=pe.Bottom,target:n,targetPosition:r=pe.Top,center:i,offset:o}){const s=GT[t],a=GT[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=ore({source:l,sourcePosition:t,target:u}),d=c.x!==0?"x":"y",f=c[d];let h=[],p,m;const[S,v,y,g]=gM({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[d]*a[d]===-1){p=i.x||S,m=i.y||v;const _=[{x:p,y:l.y},{x:p,y:u.y}],w=[{x:l.x,y:m},{x:u.x,y:m}];s[d]===f?h=d==="x"?_:w:h=d==="x"?w:_}else{const _=[{x:l.x,y:u.y}],w=[{x:u.x,y:l.y}];if(d==="x"?h=s.x===f?w:_:h=s.y===f?_:w,t!==r){const x=d==="x"?"y":"x",T=s[d]===a[x],P=l[x]>u[x],E=l[x]{let g="";return y>0&&y{const[v,y,g]=t2({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 K.jsx(Sh,{path:v,labelX:y,labelY:g,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:h,markerStart:p,interactionWidth:S})});M0.displayName="SmoothStepEdge";const tC=k.memo(e=>{var t;return K.jsx(M0,{...e,pathOptions:k.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});tC.displayName="StepEdge";function lre({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,o,s,a]=gM({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,o,s,a]}const nC=k.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,S]=lre({sourceX:e,sourceY:t,targetX:n,targetY:r});return K.jsx(Sh,{path:p,labelX:m,labelY:S,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})});nC.displayName="StraightEdge";function Pp(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function qT({pos:e,x1:t,y1:n,x2:r,y2:i,c:o}){switch(e){case pe.Left:return[t-Pp(t-r,o),n];case pe.Right:return[t+Pp(r-t,o),n];case pe.Top:return[t,n-Pp(n-i,o)];case pe.Bottom:return[t,n+Pp(i-n,o)]}}function vM({sourceX:e,sourceY:t,sourcePosition:n=pe.Bottom,targetX:r,targetY:i,targetPosition:o=pe.Top,curvature:s=.25}){const[a,l]=qT({pos:n,x1:e,y1:t,x2:r,y2:i,c:s}),[u,c]=qT({pos:o,x1:r,y1:i,x2:e,y2:t,c:s}),[d,f,h,p]=mM({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 $m=k.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i=pe.Bottom,targetPosition:o=pe.Top,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,pathOptions:m,interactionWidth:S})=>{const[v,y,g]=vM({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o,curvature:m==null?void 0:m.curvature});return K.jsx(Sh,{path:v,labelX:y,labelY:g,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:S})});$m.displayName="BezierEdge";const rC=k.createContext(null),ure=rC.Provider;rC.Consumer;const cre=()=>k.useContext(rC),dre=e=>"id"in e&&"source"in e&&"target"in e,fre=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,n2=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,hre=(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)),bM=(e,t)=>{if(!e.source||!e.target)return t;let n;return dre(e)?n={...e}:n={...e,id:fre(e)},hre(n,t)?t:t.concat(n)},SM=({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},pre=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r}),Iu=(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}},_M=(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}=Iu(i,t).positionAbsolute;return dM(r,Dm({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 fM(n)},wM=(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}=Iu(c,a),S={x:m.x,y:m.y,width:d||0,height:f||0},v=J_(l,S),y=typeof d>"u"||typeof f>"u"||d===null||f===null,g=o&&v>0,b=(d||0)*(f||0);(y||g||v>=b||c.dragging)&&u.push(c)}),u},xM=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},CM=(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=rc(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]},xa=(e,t=0)=>e.transition().duration(t);function WT(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 gre(e,t,n,r,i,o){const{x:s,y:a}=Is(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=iC(void 0,u),S=u.getAttribute("data-handleid"),v=o({nodeId:p,id:S,type:m});if(v)return{handle:{id:S,type:m,nodeId:p,x:n.x,y:n.y},validHandleResult:v}}}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 S=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 mre={source:null,target:null,sourceHandle:null,targetHandle:null},TM=()=>({handleDomNode:null,isValid:!1,connection:mre,endHandle:null});function EM(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={...TM(),handleDomNode:l};if(l){const c=iC(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===nl.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 yre({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((i,o)=>{if(o[on]){const{handleBounds:s}=o[on];let a=[],l=[];s&&(a=WT(o,s,"source",`${t}-${n}-${r}`),l=WT(o,s,"target",`${t}-${n}-${r}`)),i.push(...a,...l)}return i},[])}function iC(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function Eb(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function vre(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function PM({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState:o,setState:s,isValidConnection:a,edgeUpdaterType:l,onEdgeUpdateEnd:u}){const c=cM(e.target),{connectionMode:d,domNode:f,autoPanOnConnect:h,connectionRadius:p,onConnectStart:m,panBy:S,getNodes:v,cancelConnection:y}=o();let g=0,b;const{x:_,y:w}=Is(e),x=c==null?void 0:c.elementFromPoint(_,w),T=iC(l,x),P=f==null?void 0:f.getBoundingClientRect();if(!P||!T)return;let E,A=Is(e,P),$=!1,I=null,C=!1,R=null;const M=yre({nodes:v(),nodeId:n,handleId:t,handleType:T}),N=()=>{if(!h)return;const[L,j]=uM(A,P);S({x:L,y:j}),g=requestAnimationFrame(N)};s({connectionPosition:A,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:T,connectionStartHandle:{nodeId:n,handleId:t,type:T},connectionEndHandle:null}),m==null||m(e,{nodeId:n,handleId:t,handleType:T});function O(L){const{transform:j}=o();A=Is(L,P);const{handle:U,validHandleResult:G}=gre(L,c,SM(A,j,!1,[1,1]),p,M,W=>EM(W,d,n,t,i?"target":"source",a,c));if(b=U,$||(N(),$=!0),R=G.handleDomNode,I=G.connection,C=G.isValid,s({connectionPosition:b&&C?pre({x:b.x,y:b.y},j):A,connectionStatus:vre(!!b,C),connectionEndHandle:G.endHandle}),!b&&!C&&!R)return Eb(E);I.source!==I.target&&R&&(Eb(E),E=R,R.classList.add("connecting","react-flow__handle-connecting"),R.classList.toggle("valid",C),R.classList.toggle("react-flow__handle-valid",C))}function D(L){var j,U;(b||R)&&I&&C&&(r==null||r(I)),(U=(j=o()).onConnectEnd)==null||U.call(j,L),l&&(u==null||u(L)),Eb(E),y(),cancelAnimationFrame(g),$=!1,C=!1,I=null,R=null,c.removeEventListener("mousemove",O),c.removeEventListener("mouseup",D),c.removeEventListener("touchmove",O),c.removeEventListener("touchend",D)}c.addEventListener("mousemove",O),c.addEventListener("mouseup",D),c.addEventListener("touchmove",O),c.addEventListener("touchend",D)}const KT=()=>!0,bre=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),Sre=(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}},AM=k.forwardRef(({type:e="source",position:t=pe.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 P,E;const p=s||null,m=e==="target",S=Vn(),v=cre(),{connectOnClick:y,noPanClassName:g}=Vt(bre,br),{connecting:b,clickConnecting:_}=Vt(Sre(v,p,e),br);v||(E=(P=S.getState()).onError)==null||E.call(P,"010",qs.error010());const w=A=>{const{defaultEdgeOptions:$,onConnect:I,hasDefaultEdges:C}=S.getState(),R={...$,...A};if(C){const{edges:M,setEdges:N}=S.getState();N(bM(R,M))}I==null||I(R),a==null||a(R)},x=A=>{if(!v)return;const $=pM(A);i&&($&&A.button===0||!$)&&PM({event:A,handleId:p,nodeId:v,onConnect:w,isTarget:m,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||KT}),$?c==null||c(A):d==null||d(A)},T=A=>{const{onClickConnectStart:$,onClickConnectEnd:I,connectionClickStartHandle:C,connectionMode:R,isValidConnection:M}=S.getState();if(!v||!C&&!i)return;if(!C){$==null||$(A,{nodeId:v,handleId:p,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:v,type:e,handleId:p}});return}const N=cM(A.target),O=n||M||KT,{connection:D,isValid:L}=EM({nodeId:v,id:p,type:e},R,C.nodeId,C.handleId||null,C.type,O,N);L&&w(D),I==null||I(A),S.setState({connectionClickStartHandle:null})};return K.jsx("div",{"data-handleid":p,"data-nodeid":v,"data-handlepos":t,"data-id":`${v}-${p}-${e}`,className:ti(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,u,{source:!m,target:m,connectable:r,connectablestart:i,connectableend:o,connecting:_,connectionindicator:r&&(i&&!b||o&&b)}]),onMouseDown:x,onTouchStart:x,onClick:y?T:void 0,ref:h,...f,children:l})});AM.displayName="Handle";var Fm=k.memo(AM);const kM=({data:e,isConnectable:t,targetPosition:n=pe.Top,sourcePosition:r=pe.Bottom})=>K.jsxs(K.Fragment,{children:[K.jsx(Fm,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,K.jsx(Fm,{type:"source",position:r,isConnectable:t})]});kM.displayName="DefaultNode";var r2=k.memo(kM);const RM=({data:e,isConnectable:t,sourcePosition:n=pe.Bottom})=>K.jsxs(K.Fragment,{children:[e==null?void 0:e.label,K.jsx(Fm,{type:"source",position:n,isConnectable:t})]});RM.displayName="InputNode";var OM=k.memo(RM);const MM=({data:e,isConnectable:t,targetPosition:n=pe.Top})=>K.jsxs(K.Fragment,{children:[K.jsx(Fm,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]});MM.displayName="OutputNode";var IM=k.memo(MM);const oC=()=>null;oC.displayName="GroupNode";const _re=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected)}),Ap=e=>e.id;function wre(e,t){return br(e.selectedNodes.map(Ap),t.selectedNodes.map(Ap))&&br(e.selectedEdges.map(Ap),t.selectedEdges.map(Ap))}const NM=k.memo(({onSelectionChange:e})=>{const t=Vn(),{selectedNodes:n,selectedEdges:r}=Vt(_re,wre);return k.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});NM.displayName="SelectionListener";const xre=e=>!!e.onSelectionChange;function Cre({onSelectionChange:e}){const t=Vt(xre);return e||t?K.jsx(NM,{onSelectionChange:e}):null}const Tre=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 Dl(e,t){k.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function Ae(e,t,n){k.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const Ere=({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:S,nodeExtent:v,onNodesChange:y,onEdgesChange:g,elementsSelectable:b,connectionMode:_,snapGrid:w,snapToGrid:x,translateExtent:T,connectOnClick:P,defaultEdgeOptions:E,fitView:A,fitViewOptions:$,onNodesDelete:I,onEdgesDelete:C,onNodeDrag:R,onNodeDragStart:M,onNodeDragStop:N,onSelectionDrag:O,onSelectionDragStart:D,onSelectionDragStop:L,noPanClassName:j,nodeOrigin:U,rfId:G,autoPanOnConnect:W,autoPanOnNodeDrag:X,onError:Y,connectionRadius:B,isValidConnection:H})=>{const{setNodes:Q,setEdges:J,setDefaultNodesAndEdges:ne,setMinZoom:te,setMaxZoom:xe,setTranslateExtent:ve,setNodeExtent:ce,reset:Ne}=Vt(Tre,br),se=Vn();return k.useEffect(()=>{const gt=r==null?void 0:r.map(vn=>({...vn,...E}));return ne(n,gt),()=>{Ne()}},[]),Ae("defaultEdgeOptions",E,se.setState),Ae("connectionMode",_,se.setState),Ae("onConnect",i,se.setState),Ae("onConnectStart",o,se.setState),Ae("onConnectEnd",s,se.setState),Ae("onClickConnectStart",a,se.setState),Ae("onClickConnectEnd",l,se.setState),Ae("nodesDraggable",u,se.setState),Ae("nodesConnectable",c,se.setState),Ae("nodesFocusable",d,se.setState),Ae("edgesFocusable",f,se.setState),Ae("edgesUpdatable",h,se.setState),Ae("elementsSelectable",b,se.setState),Ae("elevateNodesOnSelect",p,se.setState),Ae("snapToGrid",x,se.setState),Ae("snapGrid",w,se.setState),Ae("onNodesChange",y,se.setState),Ae("onEdgesChange",g,se.setState),Ae("connectOnClick",P,se.setState),Ae("fitViewOnInit",A,se.setState),Ae("fitViewOnInitOptions",$,se.setState),Ae("onNodesDelete",I,se.setState),Ae("onEdgesDelete",C,se.setState),Ae("onNodeDrag",R,se.setState),Ae("onNodeDragStart",M,se.setState),Ae("onNodeDragStop",N,se.setState),Ae("onSelectionDrag",O,se.setState),Ae("onSelectionDragStart",D,se.setState),Ae("onSelectionDragStop",L,se.setState),Ae("noPanClassName",j,se.setState),Ae("nodeOrigin",U,se.setState),Ae("rfId",G,se.setState),Ae("autoPanOnConnect",W,se.setState),Ae("autoPanOnNodeDrag",X,se.setState),Ae("onError",Y,se.setState),Ae("connectionRadius",B,se.setState),Ae("isValidConnection",H,se.setState),Dl(e,Q),Dl(t,J),Dl(m,te),Dl(S,xe),Dl(T,ve),Dl(v,ce),null},XT={display:"none"},Pre={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},DM="react-flow__node-desc",LM="react-flow__edge-desc",Are="react-flow__aria-live",kre=e=>e.ariaLiveMessage;function Rre({rfId:e}){const t=Vt(kre);return K.jsx("div",{id:`${Are}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Pre,children:t})}function Ore({rfId:e,disableKeyboardA11y:t}){return K.jsxs(K.Fragment,{children:[K.jsxs("div",{id:`${DM}-${e}`,style:XT,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."," "]}),K.jsx("div",{id:`${LM}-${e}`,style:XT,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&K.jsx(Rre,{rfId:e})]})}const Mre=(e,t,n)=>n===pe.Left?e-t:n===pe.Right?e+t:e,Ire=(e,t,n)=>n===pe.Top?e-t:n===pe.Bottom?e+t:e,YT="react-flow__edgeupdater",QT=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:o,onMouseOut:s,type:a})=>K.jsx("circle",{onMouseDown:i,onMouseEnter:o,onMouseOut:s,className:ti([YT,`${YT}-${a}`]),cx:Mre(t,r,e),cy:Ire(n,r,e),r,stroke:"transparent",fill:"transparent"}),Nre=()=>!0;var Ll=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:S,source:v,target:y,sourceX:g,sourceY:b,targetX:_,targetY:w,sourcePosition:x,targetPosition:T,elementsSelectable:P,hidden:E,sourceHandleId:A,targetHandleId:$,onContextMenu:I,onMouseEnter:C,onMouseMove:R,onMouseLeave:M,edgeUpdaterRadius:N,onEdgeUpdate:O,onEdgeUpdateStart:D,onEdgeUpdateEnd:L,markerEnd:j,markerStart:U,rfId:G,ariaLabel:W,isFocusable:X,isUpdatable:Y,pathOptions:B,interactionWidth:H})=>{const Q=k.useRef(null),[J,ne]=k.useState(!1),[te,xe]=k.useState(!1),ve=Vn(),ce=k.useMemo(()=>`url(#${n2(U,G)})`,[U,G]),Ne=k.useMemo(()=>`url(#${n2(j,G)})`,[j,G]);if(E)return null;const se=Ht=>{const{edges:xt,addSelectedEdges:wr}=ve.getState();if(P&&(ve.setState({nodesSelectionActive:!1}),wr([n])),s){const $r=xt.find(ri=>ri.id===n);s(Ht,$r)}},gt=qc(n,ve.getState,a),vn=qc(n,ve.getState,I),Mt=qc(n,ve.getState,C),ut=qc(n,ve.getState,R),tt=qc(n,ve.getState,M),Gt=(Ht,xt)=>{if(Ht.button!==0)return;const{edges:wr,isValidConnection:$r}=ve.getState(),ri=xt?y:v,uo=(xt?$:A)||null,Sn=xt?"target":"source",ii=$r||Nre,ca=xt,ki=wr.find(nt=>nt.id===n);xe(!0),D==null||D(Ht,ki,Sn);const da=nt=>{xe(!1),L==null||L(nt,ki,Sn)};PM({event:Ht,handleId:uo,nodeId:ri,onConnect:nt=>O==null?void 0:O(ki,nt),isTarget:ca,getState:ve.getState,setState:ve.setState,isValidConnection:ii,edgeUpdaterType:Sn,onEdgeUpdateEnd:da})},sr=Ht=>Gt(Ht,!0),ni=Ht=>Gt(Ht,!1),Lr=()=>ne(!0),On=()=>ne(!1),bn=!P&&!s,Un=Ht=>{var xt;if(hM.includes(Ht.key)&&P){const{unselectNodesAndEdges:wr,addSelectedEdges:$r,edges:ri}=ve.getState();Ht.key==="Escape"?((xt=Q.current)==null||xt.blur(),wr({edges:[ri.find(Sn=>Sn.id===n)]})):$r([n])}};return K.jsxs("g",{className:ti(["react-flow__edge",`react-flow__edge-${i}`,r,{selected:l,animated:u,inactive:bn,updating:J}]),onClick:se,onDoubleClick:gt,onContextMenu:vn,onMouseEnter:Mt,onMouseMove:ut,onMouseLeave:tt,onKeyDown:X?Un:void 0,tabIndex:X?0:void 0,role:X?"button":void 0,"data-testid":`rf__edge-${n}`,"aria-label":W===null?void 0:W||`Edge from ${v} to ${y}`,"aria-describedby":X?`${LM}-${G}`:void 0,ref:Q,children:[!te&&K.jsx(e,{id:n,source:v,target:y,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,data:o,style:S,sourceX:g,sourceY:b,targetX:_,targetY:w,sourcePosition:x,targetPosition:T,sourceHandleId:A,targetHandleId:$,markerStart:ce,markerEnd:Ne,pathOptions:B,interactionWidth:H}),Y&&K.jsxs(K.Fragment,{children:[(Y==="source"||Y===!0)&&K.jsx(QT,{position:x,centerX:g,centerY:b,radius:N,onMouseDown:sr,onMouseEnter:Lr,onMouseOut:On,type:"source"}),(Y==="target"||Y===!0)&&K.jsx(QT,{position:T,centerX:_,centerY:w,radius:N,onMouseDown:ni,onMouseEnter:Lr,onMouseOut:On,type:"target"})]})]})};return t.displayName="EdgeWrapper",k.memo(t)};function Dre(e){const t={default:Ll(e.default||$m),straight:Ll(e.bezier||nC),step:Ll(e.step||tC),smoothstep:Ll(e.step||M0),simplebezier:Ll(e.simplebezier||eC)},n={},r=Object.keys(e).filter(i=>!["default","bezier"].includes(i)).reduce((i,o)=>(i[o]=Ll(e[o]||$m),i),n);return{...t,...r}}function ZT(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 pe.Top:return{x:r+o/2,y:i};case pe.Right:return{x:r+o,y:i+s/2};case pe.Bottom:return{x:r+o/2,y:i+s};case pe.Left:return{x:r,y:i+s/2}}}function JT(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Lre=(e,t,n,r,i,o)=>{const s=ZT(n,e,t),a=ZT(o,r,i);return{sourceX:s.x,sourceY:s.y,targetX:a.x,targetY:a.y}};function $re({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=Dm({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 eE(e){var r,i,o,s,a;const t=((r=e==null?void 0:e[on])==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]}function $M(e,t){if(!e.parentNode)return!1;const n=t.get(e.parentNode);return n?n.selected?!0:$M(n,t):!1}function tE(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 Fre(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected||i.id===r)&&(!i.parentNode||!$M(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 Bre(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function FM(e,t,n,r,i=[0,0],o){const s=Bre(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}=Iu(c,i).positionAbsolute;a=c&&Kr(d)&&Kr(f)&&Kr(c.width)&&Kr(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",qs.error005()),a=s;else if(e.extent&&e.parentNode){const c=n.get(e.parentNode),{x:d,y:f}=Iu(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=Iu(c,i).positionAbsolute}const u=a?Jx(t,a):t;return{position:{x:u.x-l.x,y:u.y-l.y},positionAbsolute:u}}function Pb({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 nE=(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,...Zx(l)}})};function Wc(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get(e);n(r,{...i})}}function i2({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:i,unselectNodesAndEdges:o,multiSelectionActive:s,nodeInternals:a}=t.getState(),l=a.get(e);t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&s)&&(o({nodes:[l]}),requestAnimationFrame(()=>{var u;return(u=r==null?void 0:r.current)==null?void 0:u.blur()})):i([e])}function jre(){const e=Vn();return k.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 Ab(e){return(t,n,r)=>e==null?void 0:e(t,r)}function BM({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:o,selectNodesOnDrag:s}){const a=Vn(),[l,u]=k.useState(!1),c=k.useRef([]),d=k.useRef({x:null,y:null}),f=k.useRef(0),h=k.useRef(null),p=k.useRef({x:0,y:0}),m=k.useRef(null),S=k.useRef(!1),v=jre();return k.useEffect(()=>{if(e!=null&&e.current){const y=fi(e.current),g=({x:_,y:w})=>{const{nodeInternals:x,onNodeDrag:T,onSelectionDrag:P,updateNodePositions:E,nodeExtent:A,snapGrid:$,snapToGrid:I,nodeOrigin:C,onError:R}=a.getState();d.current={x:_,y:w};let M=!1;if(c.current=c.current.map(O=>{const D={x:_-O.distance.x,y:w-O.distance.y};I&&(D.x=$[0]*Math.round(D.x/$[0]),D.y=$[1]*Math.round(D.y/$[1]));const L=FM(O,D,x,A,C,R);return M=M||O.position.x!==L.position.x||O.position.y!==L.position.y,O.position=L.position,O.positionAbsolute=L.positionAbsolute,O}),!M)return;E(c.current,!0,!0),u(!0);const N=i?T:Ab(P);if(N&&m.current){const[O,D]=Pb({nodeId:i,dragItems:c.current,nodeInternals:x});N(m.current,O,D)}},b=()=>{if(!h.current)return;const[_,w]=uM(p.current,h.current);if(_!==0||w!==0){const{transform:x,panBy:T}=a.getState();d.current.x=(d.current.x??0)-_/x[2],d.current.y=(d.current.y??0)-w/x[2],T({x:_,y:w})&&g(d.current)}f.current=requestAnimationFrame(b)};if(t)y.on(".drag",null);else{const _=ote().on("start",w=>{var M;const{nodeInternals:x,multiSelectionActive:T,domNode:P,nodesDraggable:E,unselectNodesAndEdges:A,onNodeDragStart:$,onSelectionDragStart:I}=a.getState(),C=i?$:Ab(I);!s&&!T&&i&&((M=x.get(i))!=null&&M.selected||A()),i&&o&&s&&i2({id:i,store:a,nodeRef:e});const R=v(w);if(d.current=R,c.current=Fre(x,E,R,i),C&&c.current){const[N,O]=Pb({nodeId:i,dragItems:c.current,nodeInternals:x});C(w.sourceEvent,N,O)}h.current=(P==null?void 0:P.getBoundingClientRect())||null,p.current=Is(w.sourceEvent,h.current)}).on("drag",w=>{const x=v(w),{autoPanOnNodeDrag:T}=a.getState();!S.current&&T&&(S.current=!0,b()),(d.current.x!==x.xSnapped||d.current.y!==x.ySnapped)&&c.current&&(m.current=w.sourceEvent,p.current=Is(w.sourceEvent,h.current),g(x))}).on("end",w=>{if(u(!1),S.current=!1,cancelAnimationFrame(f.current),c.current){const{updateNodePositions:x,nodeInternals:T,onNodeDragStop:P,onSelectionDragStop:E}=a.getState(),A=i?P:Ab(E);if(x(c.current,!1,!1),A){const[$,I]=Pb({nodeId:i,dragItems:c.current,nodeInternals:T});A(w.sourceEvent,$,I)}}}).filter(w=>{const x=w.target;return!w.button&&(!n||!tE(x,`.${n}`,e))&&(!r||tE(x,r,e))});return y.call(_),()=>{y.on(".drag",null)}}}},[e,t,n,r,o,a,i,s,v]),l}function jM(){const e=Vn();return k.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,S=n.y*h*p,v=d.map(y=>{if(y.positionAbsolute){const g={x:y.positionAbsolute.x+m,y:y.positionAbsolute.y+S};a&&(g.x=l[0]*Math.round(g.x/l[0]),g.y=l[1]*Math.round(g.y/l[1]));const{positionAbsolute:b,position:_}=FM(y,g,r,i,void 0,u);y.position=_,y.positionAbsolute=b}return y});o(v,!0,!1)},[])}const Nu={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var Kc=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:S,className:v,isDraggable:y,isSelectable:g,isConnectable:b,isFocusable:_,selectNodesOnDrag:w,sourcePosition:x,targetPosition:T,hidden:P,resizeObserver:E,dragHandle:A,zIndex:$,isParent:I,noDragClassName:C,noPanClassName:R,initialized:M,disableKeyboardA11y:N,ariaLabel:O,rfId:D})=>{const L=Vn(),j=k.useRef(null),U=k.useRef(x),G=k.useRef(T),W=k.useRef(r),X=g||y||c||d||f||h,Y=jM(),B=Wc(n,L.getState,d),H=Wc(n,L.getState,f),Q=Wc(n,L.getState,h),J=Wc(n,L.getState,p),ne=Wc(n,L.getState,m),te=ce=>{if(g&&(!w||!y)&&i2({id:n,store:L,nodeRef:j}),c){const Ne=L.getState().nodeInternals.get(n);c(ce,{...Ne})}},xe=ce=>{if(!e2(ce))if(hM.includes(ce.key)&&g){const Ne=ce.key==="Escape";i2({id:n,store:L,unselect:Ne,nodeRef:j})}else!N&&y&&u&&Object.prototype.hasOwnProperty.call(Nu,ce.key)&&(L.setState({ariaLiveMessage:`Moved selected node ${ce.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~o}, y: ${~~s}`}),Y({x:Nu[ce.key].x,y:Nu[ce.key].y,isShiftPressed:ce.shiftKey}))};k.useEffect(()=>{if(j.current&&!P){const ce=j.current;return E==null||E.observe(ce),()=>E==null?void 0:E.unobserve(ce)}},[P]),k.useEffect(()=>{const ce=W.current!==r,Ne=U.current!==x,se=G.current!==T;j.current&&(ce||Ne||se)&&(ce&&(W.current=r),Ne&&(U.current=x),se&&(G.current=T),L.getState().updateNodeDimensions([{id:n,nodeElement:j.current,forceUpdate:!0}]))},[n,r,x,T]);const ve=BM({nodeRef:j,disabled:P||!y,noDragClassName:C,handleSelector:A,nodeId:n,isSelectable:g,selectNodesOnDrag:w});return P?null:K.jsx("div",{className:ti(["react-flow__node",`react-flow__node-${r}`,{[R]:y},v,{selected:u,selectable:g,parent:I,dragging:ve}]),ref:j,style:{zIndex:$,transform:`translate(${a}px,${l}px)`,pointerEvents:X?"all":"none",visibility:M?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:B,onMouseMove:H,onMouseLeave:Q,onContextMenu:J,onClick:te,onDoubleClick:ne,onKeyDown:_?xe:void 0,tabIndex:_?0:void 0,role:_?"button":void 0,"aria-describedby":N?void 0:`${DM}-${D}`,"aria-label":O,children:K.jsx(ure,{value:n,children:K.jsx(e,{id:n,data:i,type:r,xPos:o,yPos:s,selected:u,isConnectable:b,sourcePosition:x,targetPosition:T,dragging:ve,dragHandle:A,zIndex:$})})})};return t.displayName="NodeWrapper",k.memo(t)};function Vre(e){const t={input:Kc(e.input||OM),default:Kc(e.default||r2),output:Kc(e.output||IM),group:Kc(e.group||oC)},n={},r=Object.keys(e).filter(i=>!["input","default","output","group"].includes(i)).reduce((i,o)=>(i[o]=Kc(e[o]||r2),i),n);return{...t,...r}}const zre=({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]},Ure=typeof document<"u"?document:null;var Nf=(e=null,t={target:Ure})=>{const[n,r]=k.useState(!1),i=k.useRef(!1),o=k.useRef(new Set([])),[s,a]=k.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 k.useEffect(()=>{var l,u;if(e!==null){const c=h=>{if(i.current=h.ctrlKey||h.metaKey||h.shiftKey,!i.current&&e2(h))return!1;const p=iE(h.code,a);o.current.add(h[p]),rE(s,o.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if(!i.current&&e2(h))return!1;const p=iE(h.code,a);rE(s,o.current,!0)?(r(!1),o.current.clear()):o.current.delete(h[p]),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 rE(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(i=>t.has(i)))}function iE(e,t){return t.includes(e)?"code":"key"}function VM(e,t,n,r){var s,a;if(!e.parentNode)return n;const i=t.get(e.parentNode),o=Iu(i,r);return VM(i,t,{x:(n.x??0)+o.x,y:(n.y??0)+o.y,z:(((s=i[on])==null?void 0:s.z)??0)>(n.z??0)?((a=i[on])==null?void 0:a.z)??0:n.z??0},r)}function zM(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}=VM(r,e,{...r.position,z:((i=r[on])==null?void 0:i.z)??0},t);r.positionAbsolute={x:o,y:s},r[on].z=a,n!=null&&n[r.id]&&(r[on].isParent=!0)}})}function kb(e,t,n,r){const i=new Map,o={},s=r?1e3:0;return e.forEach(a=>{var d;const l=(Kr(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,on,{enumerable:!1,value:{handleBounds:(d=u==null?void 0:u[on])==null?void 0:d.handleBounds,z:l}}),i.set(a.id,c)}),zM(i,n,o),i}function UM(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(S=>{var y;const v=t.includeHiddenNodes?S.width&&S.height:!S.hidden;return(y=t.nodes)!=null&&y.length?v&&t.nodes.some(g=>g.id===S.id):v}),m=p.every(S=>S.width&&S.height);if(p.length>0&&m){const S=_M(p,d),[v,y,g]=CM(S,r,i,t.minZoom??o,t.maxZoom??s,t.padding??.1),b=Ms.translate(v,y).scale(g);return typeof t.duration=="number"&&t.duration>0?a.transform(xa(l,t.duration),b):a.transform(l,b),!0}}return!1}function Gre(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[on]:r[on],selected:n.selected})}),new Map(t)}function Hre(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return r&&(n.selected=r.selected),n})}function kp({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:Gre(e,i)}),s==null||s(e)),t!=null&&t.length&&(u&&r({edges:Hre(t,o)}),a==null||a(t))}const $l=()=>{},qre={zoomIn:$l,zoomOut:$l,zoomTo:$l,getZoom:()=>1,setViewport:$l,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:$l,fitBounds:$l,project:e=>e,viewportInitialized:!1},Wre=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),Kre=()=>{const e=Vn(),{d3Zoom:t,d3Selection:n}=Vt(Wre,br);return k.useMemo(()=>n&&t?{zoomIn:i=>t.scaleBy(xa(n,i==null?void 0:i.duration),1.2),zoomOut:i=>t.scaleBy(xa(n,i==null?void 0:i.duration),1/1.2),zoomTo:(i,o)=>t.scaleTo(xa(n,o==null?void 0:o.duration),i),getZoom:()=>e.getState().transform[2],setViewport:(i,o)=>{const[s,a,l]=e.getState().transform,u=Ms.translate(i.x??s,i.y??a).scale(i.zoom??l);t.transform(xa(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=>UM(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=Ms.translate(d,f).scale(c);t.transform(xa(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]=CM(i,s,a,l,u,(o==null?void 0:o.padding)??.1),h=Ms.translate(c,d).scale(f);t.transform(xa(n,o==null?void 0:o.duration),h)},project:i=>{const{transform:o,snapToGrid:s,snapGrid:a}=e.getState();return SM(i,o,s,a)},viewportInitialized:!0}:qre,[t,n])};function GM(){const e=Kre(),t=Vn(),n=k.useCallback(()=>t.getState().getNodes().map(m=>({...m})),[]),r=k.useCallback(m=>t.getState().nodeInternals.get(m),[]),i=k.useCallback(()=>{const{edges:m=[]}=t.getState();return m.map(S=>({...S}))},[]),o=k.useCallback(m=>{const{edges:S=[]}=t.getState();return S.find(v=>v.id===m)},[]),s=k.useCallback(m=>{const{getNodes:S,setNodes:v,hasDefaultNodes:y,onNodesChange:g}=t.getState(),b=S(),_=typeof m=="function"?m(b):m;if(y)v(_);else if(g){const w=_.length===0?b.map(x=>({type:"remove",id:x.id})):_.map(x=>({item:x,type:"reset"}));g(w)}},[]),a=k.useCallback(m=>{const{edges:S=[],setEdges:v,hasDefaultEdges:y,onEdgesChange:g}=t.getState(),b=typeof m=="function"?m(S):m;if(y)v(b);else if(g){const _=b.length===0?S.map(w=>({type:"remove",id:w.id})):b.map(w=>({item:w,type:"reset"}));g(_)}},[]),l=k.useCallback(m=>{const S=Array.isArray(m)?m:[m],{getNodes:v,setNodes:y,hasDefaultNodes:g,onNodesChange:b}=t.getState();if(g){const w=[...v(),...S];y(w)}else if(b){const _=S.map(w=>({item:w,type:"add"}));b(_)}},[]),u=k.useCallback(m=>{const S=Array.isArray(m)?m:[m],{edges:v=[],setEdges:y,hasDefaultEdges:g,onEdgesChange:b}=t.getState();if(g)y([...v,...S]);else if(b){const _=S.map(w=>({item:w,type:"add"}));b(_)}},[]),c=k.useCallback(()=>{const{getNodes:m,edges:S=[],transform:v}=t.getState(),[y,g,b]=v;return{nodes:m().map(_=>({..._})),edges:S.map(_=>({..._})),viewport:{x:y,y:g,zoom:b}}},[]),d=k.useCallback(({nodes:m,edges:S})=>{const{nodeInternals:v,getNodes:y,edges:g,hasDefaultNodes:b,hasDefaultEdges:_,onNodesDelete:w,onEdgesDelete:x,onNodesChange:T,onEdgesChange:P}=t.getState(),E=(m||[]).map(R=>R.id),A=(S||[]).map(R=>R.id),$=y().reduce((R,M)=>{const N=!E.includes(M.id)&&M.parentNode&&R.find(D=>D.id===M.parentNode);return(typeof M.deletable=="boolean"?M.deletable:!0)&&(E.includes(M.id)||N)&&R.push(M),R},[]),I=g.filter(R=>typeof R.deletable=="boolean"?R.deletable:!0),C=I.filter(R=>A.includes(R.id));if($||C){const R=xM($,I),M=[...C,...R],N=M.reduce((O,D)=>(O.includes(D.id)||O.push(D.id),O),[]);if((_||b)&&(_&&t.setState({edges:g.filter(O=>!N.includes(O.id))}),b&&($.forEach(O=>{v.delete(O.id)}),t.setState({nodeInternals:new Map(v)}))),N.length>0&&(x==null||x(M),P&&P(N.map(O=>({id:O,type:"remove"})))),$.length>0&&(w==null||w($),T)){const O=$.map(D=>({id:D.id,type:"remove"}));T(O)}}},[]),f=k.useCallback(m=>{const S=nre(m),v=S?null:t.getState().nodeInternals.get(m.id);return[S?m:zT(v),v,S]},[]),h=k.useCallback((m,S=!0,v)=>{const[y,g,b]=f(m);return y?(v||t.getState().getNodes()).filter(_=>{if(!b&&(_.id===g.id||!_.positionAbsolute))return!1;const w=zT(_),x=J_(w,y);return S&&x>0||x>=m.width*m.height}):[]},[]),p=k.useCallback((m,S,v=!0)=>{const[y]=f(m);if(!y)return!1;const g=J_(y,S);return v&&g>0||g>=m.width*m.height},[]);return k.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 Xre=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=Vn(),{deleteElements:r}=GM(),i=Nf(e),o=Nf(t);k.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]),k.useEffect(()=>{n.setState({multiSelectionActive:o})},[o])};function Yre(e){const t=Vn();k.useEffect(()=>{let n;const r=()=>{var o,s;if(!e.current)return;const i=Zx(e.current);(i.height===0||i.width===0)&&((s=(o=t.getState()).onError)==null||s.call(o,"004",qs.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 sC={position:"absolute",width:"100%",height:"100%",top:0,left:0},Qre=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,Rb=e=>({x:e.x,y:e.y,zoom:e.k}),Fl=(e,t)=>e.target.closest(`.${t}`),oE=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Zre=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),Jre=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:i=!0,zoomOnPinch:o=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=Mu.Free,zoomOnDoubleClick:u=!0,elementsSelectable:c,panOnDrag:d=!0,defaultViewport:f,translateExtent:h,minZoom:p,maxZoom:m,zoomActivationKeyCode:S,preventScrolling:v=!0,children:y,noWheelClassName:g,noPanClassName:b})=>{const _=k.useRef(),w=Vn(),x=k.useRef(!1),T=k.useRef(!1),P=k.useRef(null),E=k.useRef({x:0,y:0,zoom:0}),{d3Zoom:A,d3Selection:$,d3ZoomHandler:I,userSelectionActive:C}=Vt(Zre,br),R=Nf(S),M=k.useRef(0);return Yre(P),k.useEffect(()=>{if(P.current){const N=P.current.getBoundingClientRect(),O=Xne().scaleExtent([p,m]).translateExtent(h),D=fi(P.current).call(O),L=Ms.translate(f.x,f.y).scale(rc(f.zoom,p,m)),j=[[0,0],[N.width,N.height]],U=O.constrain()(L,j,h);O.transform(D,U),w.setState({d3Zoom:O,d3Selection:D,d3ZoomHandler:D.on("wheel.zoom"),transform:[U.x,U.y,U.k],domNode:P.current.closest(".react-flow")})}},[]),k.useEffect(()=>{$&&A&&(s&&!R&&!C?$.on("wheel.zoom",N=>{if(Fl(N,g))return!1;N.preventDefault(),N.stopImmediatePropagation();const O=$.property("__zoom").k||1;if(N.ctrlKey&&o){const U=$i(N),G=-N.deltaY*(N.deltaMode===1?.05:N.deltaMode?1:.002)*10,W=O*Math.pow(2,G);A.scaleTo($,W,U);return}const D=N.deltaMode===1?20:1,L=l===Mu.Vertical?0:N.deltaX*D,j=l===Mu.Horizontal?0:N.deltaY*D;A.translateBy($,-(L/O)*a,-(j/O)*a)},{passive:!1}):typeof I<"u"&&$.on("wheel.zoom",function(N,O){if(!v||Fl(N,g))return null;N.preventDefault(),I.call(this,N,O)},{passive:!1}))},[C,s,l,$,A,I,R,o,v,g]),k.useEffect(()=>{A&&A.on("start",N=>{var D;if(!N.sourceEvent)return null;M.current=N.sourceEvent.button;const{onViewportChangeStart:O}=w.getState();if(x.current=!0,((D=N.sourceEvent)==null?void 0:D.type)==="mousedown"&&w.setState({paneDragging:!0}),t||O){const L=Rb(N.transform);E.current=L,O==null||O(L),t==null||t(N.sourceEvent,L)}})},[A,t]),k.useEffect(()=>{A&&(C&&!x.current?A.on("zoom",null):C||A.on("zoom",N=>{const{onViewportChange:O}=w.getState();if(w.setState({transform:[N.transform.x,N.transform.y,N.transform.k]}),T.current=!!(r&&oE(d,M.current??0)),e||O){const D=Rb(N.transform);O==null||O(D),e==null||e(N.sourceEvent,D)}}))},[C,A,e,d,r]),k.useEffect(()=>{A&&A.on("end",N=>{if(!N.sourceEvent)return null;const{onViewportChangeEnd:O}=w.getState();if(x.current=!1,w.setState({paneDragging:!1}),r&&oE(d,M.current??0)&&!T.current&&r(N.sourceEvent),T.current=!1,(n||O)&&Qre(E.current,N.transform)){const D=Rb(N.transform);E.current=D,clearTimeout(_.current),_.current=setTimeout(()=>{O==null||O(D),n==null||n(N.sourceEvent,D)},s?150:0)}})},[A,s,d,n,r]),k.useEffect(()=>{A&&A.filter(N=>{const O=R||i,D=o&&N.ctrlKey;if(N.button===1&&N.type==="mousedown"&&(Fl(N,"react-flow__node")||Fl(N,"react-flow__edge")))return!0;if(!d&&!O&&!s&&!u&&!o||C||!u&&N.type==="dblclick"||Fl(N,g)&&N.type==="wheel"||Fl(N,b)&&N.type!=="wheel"||!o&&N.ctrlKey&&N.type==="wheel"||!O&&!s&&!D&&N.type==="wheel"||!d&&(N.type==="mousedown"||N.type==="touchstart")||Array.isArray(d)&&!d.includes(N.button)&&(N.type==="mousedown"||N.type==="touchstart"))return!1;const L=Array.isArray(d)&&d.includes(N.button)||!N.button||N.button<=1;return(!N.ctrlKey||N.type==="wheel")&&L})},[C,A,i,o,s,u,d,c,R]),K.jsx("div",{className:"react-flow__renderer",ref:P,style:sC,children:y})},eie=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function tie(){const{userSelectionActive:e,userSelectionRect:t}=Vt(eie,br);return e&&t?K.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 sE(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 HM(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&&sE(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&&sE(r,s);break}case"remove":return r}return r.push(s),r},n)}function qM(e,t){return HM(e,t)}function nie(e,t){return HM(e,t)}const ds=(e,t)=>({id:e,type:"select",selected:t});function du(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return!r.selected&&i?(r.selected=!0,n.push(ds(r.id,!0))):r.selected&&!i&&(r.selected=!1,n.push(ds(r.id,!1))),n},[])}const Ob=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},rie=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),WM=k.memo(({isSelecting:e,selectionMode:t=If.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:i,onPaneClick:o,onPaneContextMenu:s,onPaneScroll:a,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:c,children:d})=>{const f=k.useRef(null),h=Vn(),p=k.useRef(0),m=k.useRef(0),S=k.useRef(),{userSelectionActive:v,elementsSelectable:y,dragging:g}=Vt(rie,br),b=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),p.current=0,m.current=0},_=I=>{o==null||o(I),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},w=I=>{if(Array.isArray(n)&&(n!=null&&n.includes(2))){I.preventDefault();return}s==null||s(I)},x=a?I=>a(I):void 0,T=I=>{const{resetSelectedElements:C,domNode:R}=h.getState();if(S.current=R==null?void 0:R.getBoundingClientRect(),!y||!e||I.button!==0||I.target!==f.current||!S.current)return;const{x:M,y:N}=Is(I,S.current);C(),h.setState({userSelectionRect:{width:0,height:0,startX:M,startY:N,x:M,y:N}}),r==null||r(I)},P=I=>{const{userSelectionRect:C,nodeInternals:R,edges:M,transform:N,onNodesChange:O,onEdgesChange:D,nodeOrigin:L,getNodes:j}=h.getState();if(!e||!S.current||!C)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const U=Is(I,S.current),G=C.startX??0,W=C.startY??0,X={...C,x:U.xJ.id),Q=B.map(J=>J.id);if(p.current!==Q.length){p.current=Q.length;const J=du(Y,Q);J.length&&(O==null||O(J))}if(m.current!==H.length){m.current=H.length;const J=du(M,H);J.length&&(D==null||D(J))}h.setState({userSelectionRect:X})},E=I=>{if(I.button!==0)return;const{userSelectionRect:C}=h.getState();!v&&C&&I.target===f.current&&(_==null||_(I)),h.setState({nodesSelectionActive:p.current>0}),b(),i==null||i(I)},A=I=>{v&&(h.setState({nodesSelectionActive:p.current>0}),i==null||i(I)),b()},$=y&&(e||v);return K.jsxs("div",{className:ti(["react-flow__pane",{dragging:g,selection:e}]),onClick:$?void 0:Ob(_,f),onContextMenu:Ob(w,f),onWheel:Ob(x,f),onMouseEnter:$?void 0:l,onMouseDown:$?T:void 0,onMouseMove:$?P:u,onMouseUp:$?E:void 0,onMouseLeave:$?A:c,ref:f,style:sC,children:[d,K.jsx(tie,{})]})});WM.displayName="Pane";const iie=e=>{const t=e.getNodes().filter(n=>n.selected);return{..._M(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function oie({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=Vn(),{width:i,height:o,x:s,y:a,transformString:l,userSelectionActive:u}=Vt(iie,br),c=jM(),d=k.useRef(null);if(k.useEffect(()=>{var p;n||(p=d.current)==null||p.focus({preventScroll:!0})},[n]),BM({nodeRef:d}),u||!i||!o)return null;const f=e?p=>{const m=r.getState().getNodes().filter(S=>S.selected);e(p,m)}:void 0,h=p=>{Object.prototype.hasOwnProperty.call(Nu,p.key)&&c({x:Nu[p.key].x,y:Nu[p.key].y,isShiftPressed:p.shiftKey})};return K.jsx("div",{className:ti(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l},children:K.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 sie=k.memo(oie);const aie=e=>e.nodesSelectionActive,KM=({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:S,panActivationKeyCode:v,zoomActivationKeyCode:y,elementsSelectable:g,zoomOnScroll:b,zoomOnPinch:_,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:T,zoomOnDoubleClick:P,panOnDrag:E,defaultViewport:A,translateExtent:$,minZoom:I,maxZoom:C,preventScrolling:R,onSelectionContextMenu:M,noWheelClassName:N,noPanClassName:O,disableKeyboardA11y:D})=>{const L=Vt(aie),j=Nf(d),G=Nf(v)||E,W=j||f&&G!==!0;return Xre({deleteKeyCode:a,multiSelectionKeyCode:S}),K.jsx(Jre,{onMove:l,onMoveStart:u,onMoveEnd:c,onPaneContextMenu:o,elementsSelectable:g,zoomOnScroll:b,zoomOnPinch:_,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:T,zoomOnDoubleClick:P,panOnDrag:!j&&G,defaultViewport:A,translateExtent:$,minZoom:I,maxZoom:C,zoomActivationKeyCode:y,preventScrolling:R,noWheelClassName:N,noPanClassName:O,children:K.jsxs(WM,{onSelectionStart:p,onSelectionEnd:m,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,panOnDrag:G,isSelecting:!!W,selectionMode:h,children:[e,L&&K.jsx(sie,{onSelectionContextMenu:M,noPanClassName:O,disableKeyboardA11y:D})]})})};KM.displayName="FlowRenderer";var lie=k.memo(KM);function uie(e){return Vt(k.useCallback(n=>e?wM(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}const cie=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),XM=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,updateNodeDimensions:o,onError:s}=Vt(cie,br),a=uie(e.onlyRenderVisibleElements),l=k.useRef(),u=k.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 k.useEffect(()=>()=>{var c;(c=l==null?void 0:l.current)==null||c.disconnect()},[]),K.jsx("div",{className:"react-flow__nodes",style:sC,children:a.map(c=>{var _,w;let d=c.type||"default";e.nodeTypes[d]||(s==null||s("003",qs.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"),S=!!(c.focusable||r&&typeof c.focusable>"u"),v=e.nodeExtent?Jx(c.positionAbsolute,e.nodeExtent):c.positionAbsolute,y=(v==null?void 0:v.x)??0,g=(v==null?void 0:v.y)??0,b=zre({x:y,y:g,width:c.width??0,height:c.height??0,origin:e.nodeOrigin});return K.jsx(f,{id:c.id,className:c.className,style:c.style,type:d,data:c.data,sourcePosition:c.sourcePosition||pe.Bottom,targetPosition:c.targetPosition||pe.Top,hidden:c.hidden,xPos:y,yPos:g,xPosOrigin:b.x,yPosOrigin:b.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:S,resizeObserver:u,dragHandle:c.dragHandle,zIndex:((_=c[on])==null?void 0:_.z)??0,isParent:!!((w=c[on])!=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)})})};XM.displayName="NodeRenderer";var die=k.memo(XM);const fie=[{level:0,isMaxLevel:!0,edges:[]}];function hie(e,t,n=!1){let r=-1;const i=e.reduce((s,a)=>{var c,d;const l=Kr(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[on])==null?void 0:c.z)||0,((d=f==null?void 0:f[on])==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?fie:o}function pie(e,t,n){const r=Vt(k.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)&&$re({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 hie(r,t,n)}const gie=({color:e="none",strokeWidth:t=1})=>K.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:"none",points:"-5,-4 0,0 -5,4"}),mie=({color:e="none",strokeWidth:t=1})=>K.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:e,points:"-5,-4 0,0 -5,4 -5,-4"}),aE={[Lm.Arrow]:gie,[Lm.ArrowClosed]:mie};function yie(e){const t=Vn();return k.useMemo(()=>{var i,o;return Object.prototype.hasOwnProperty.call(aE,e)?aE[e]:((o=(i=t.getState()).onError)==null||o.call(i,"009",qs.error009(e)),null)},[e])}const vie=({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=yie(t);return l?K.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:K.jsx(l,{color:n,strokeWidth:s})}):null},bie=({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=n2(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))},YM=({defaultColor:e,rfId:t})=>{const n=Vt(k.useCallback(bie({defaultColor:e,rfId:t}),[e,t]),(r,i)=>!(r.length!==i.length||r.some((o,s)=>o.id!==i[s].id)));return K.jsx("defs",{children:n.map(r=>K.jsx(vie,{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))})};YM.displayName="MarkerDefinitions";var Sie=k.memo(YM);const _ie=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}),QM=({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:S})=>{const{edgesFocusable:v,edgesUpdatable:y,elementsSelectable:g,width:b,height:_,connectionMode:w,nodeInternals:x,onError:T}=Vt(_ie,br),P=pie(t,x,n);return b?K.jsxs(K.Fragment,{children:[P.map(({level:E,edges:A,isMaxLevel:$})=>K.jsxs("svg",{style:{zIndex:E},width:b,height:_,className:"react-flow__edges react-flow__container",children:[$&&K.jsx(Sie,{defaultColor:e,rfId:r}),K.jsx("g",{children:A.map(I=>{const[C,R,M]=eE(x.get(I.source)),[N,O,D]=eE(x.get(I.target));if(!M||!D)return null;let L=I.type||"default";i[L]||(T==null||T("011",qs.error011(L)),L="default");const j=i[L]||i.default,U=w===nl.Strict?O.target:(O.target??[]).concat(O.source??[]),G=JT(R.source,I.sourceHandle),W=JT(U,I.targetHandle),X=(G==null?void 0:G.position)||pe.Bottom,Y=(W==null?void 0:W.position)||pe.Top,B=!!(I.focusable||v&&typeof I.focusable>"u"),H=typeof s<"u"&&(I.updatable||y&&typeof I.updatable>"u");if(!G||!W)return T==null||T("008",qs.error008(G,I)),null;const{sourceX:Q,sourceY:J,targetX:ne,targetY:te}=Lre(C,G,X,N,W,Y);return K.jsx(j,{id:I.id,className:ti([I.className,o]),type:L,data:I.data,selected:!!I.selected,animated:!!I.animated,hidden:!!I.hidden,label:I.label,labelStyle:I.labelStyle,labelShowBg:I.labelShowBg,labelBgStyle:I.labelBgStyle,labelBgPadding:I.labelBgPadding,labelBgBorderRadius:I.labelBgBorderRadius,style:I.style,source:I.source,target:I.target,sourceHandleId:I.sourceHandle,targetHandleId:I.targetHandle,markerEnd:I.markerEnd,markerStart:I.markerStart,sourceX:Q,sourceY:J,targetX:ne,targetY:te,sourcePosition:X,targetPosition:Y,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:I.ariaLabel,isFocusable:B,isUpdatable:H,pathOptions:"pathOptions"in I?I.pathOptions:void 0,interactionWidth:I.interactionWidth},I.id)})})]},E)),S]}):null};QM.displayName="EdgeRenderer";var wie=k.memo(QM);const xie=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Cie({children:e}){const t=Vt(xie);return K.jsx("div",{className:"react-flow__viewport react-flow__container",style:{transform:t},children:e})}function Tie(e){const t=GM(),n=k.useRef(!1);k.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const Eie={[pe.Left]:pe.Right,[pe.Right]:pe.Left,[pe.Top]:pe.Bottom,[pe.Bottom]:pe.Top},ZM=({nodeId:e,handleType:t,style:n,type:r=ys.Bezier,CustomComponent:i,connectionStatus:o})=>{var w,x,T;const{fromNode:s,handleId:a,toX:l,toY:u,connectionMode:c}=Vt(k.useCallback(P=>({fromNode:P.nodeInternals.get(e),handleId:P.connectionHandleId,toX:(P.connectionPosition.x-P.transform[0])/P.transform[2],toY:(P.connectionPosition.y-P.transform[1])/P.transform[2],connectionMode:P.connectionMode}),[e]),br),d=(w=s==null?void 0:s[on])==null?void 0:w.handleBounds;let f=d==null?void 0:d[t];if(c===nl.Loose&&(f=f||(d==null?void 0:d[t==="source"?"target":"source"])),!s||!f)return null;const h=a?f.find(P=>P.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,S=(((x=s.positionAbsolute)==null?void 0:x.x)??0)+p,v=(((T=s.positionAbsolute)==null?void 0:T.y)??0)+m,y=h==null?void 0:h.position,g=y?Eie[y]:null;if(!y||!g)return null;if(i)return K.jsx(i,{connectionLineType:r,connectionLineStyle:n,fromNode:s,fromHandle:h,fromX:S,fromY:v,toX:l,toY:u,fromPosition:y,toPosition:g,connectionStatus:o});let b="";const _={sourceX:S,sourceY:v,sourcePosition:y,targetX:l,targetY:u,targetPosition:g};return r===ys.Bezier?[b]=vM(_):r===ys.Step?[b]=t2({..._,borderRadius:0}):r===ys.SmoothStep?[b]=t2(_):r===ys.SimpleBezier?[b]=yM(_):b=`M${S},${v} ${l},${u}`,K.jsx("path",{d:b,fill:"none",className:"react-flow__connection-path",style:n})};ZM.displayName="ConnectionLine";const Pie=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function Aie({containerStyle:e,style:t,type:n,component:r}){const{nodeId:i,handleType:o,nodesConnectable:s,width:a,height:l,connectionStatus:u}=Vt(Pie,br);return!(i&&o&&a&&s)?null:K.jsx("svg",{style:e,width:a,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container",children:K.jsx("g",{className:ti(["react-flow__connection",u]),children:K.jsx(ZM,{nodeId:i,handleType:o,style:t,type:n,CustomComponent:r,connectionStatus:u})})})}const JM=({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:S,connectionLineType:v,connectionLineStyle:y,connectionLineComponent:g,connectionLineContainerStyle:b,selectionKeyCode:_,selectionOnDrag:w,selectionMode:x,multiSelectionKeyCode:T,panActivationKeyCode:P,zoomActivationKeyCode:E,deleteKeyCode:A,onlyRenderVisibleElements:$,elementsSelectable:I,selectNodesOnDrag:C,defaultViewport:R,translateExtent:M,minZoom:N,maxZoom:O,preventScrolling:D,defaultMarkerColor:L,zoomOnScroll:j,zoomOnPinch:U,panOnScroll:G,panOnScrollSpeed:W,panOnScrollMode:X,zoomOnDoubleClick:Y,panOnDrag:B,onPaneClick:H,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:te,onPaneContextMenu:xe,onEdgeUpdate:ve,onEdgeContextMenu:ce,onEdgeMouseEnter:Ne,onEdgeMouseMove:se,onEdgeMouseLeave:gt,edgeUpdaterRadius:vn,onEdgeUpdateStart:Mt,onEdgeUpdateEnd:ut,noDragClassName:tt,noWheelClassName:Gt,noPanClassName:sr,elevateEdgesOnSelect:ni,disableKeyboardA11y:Lr,nodeOrigin:On,nodeExtent:bn,rfId:Un})=>(Tie(o),K.jsx(lie,{onPaneClick:H,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:xe,onPaneScroll:te,deleteKeyCode:A,selectionKeyCode:_,selectionOnDrag:w,selectionMode:x,onSelectionStart:m,onSelectionEnd:S,multiSelectionKeyCode:T,panActivationKeyCode:P,zoomActivationKeyCode:E,elementsSelectable:I,onMove:n,onMoveStart:r,onMoveEnd:i,zoomOnScroll:j,zoomOnPinch:U,zoomOnDoubleClick:Y,panOnScroll:G,panOnScrollSpeed:W,panOnScrollMode:X,panOnDrag:B,defaultViewport:R,translateExtent:M,minZoom:N,maxZoom:O,onSelectionContextMenu:p,preventScrolling:D,noDragClassName:tt,noWheelClassName:Gt,noPanClassName:sr,disableKeyboardA11y:Lr,children:K.jsxs(Cie,{children:[K.jsx(wie,{edgeTypes:t,onEdgeClick:a,onEdgeDoubleClick:u,onEdgeUpdate:ve,onlyRenderVisibleElements:$,onEdgeContextMenu:ce,onEdgeMouseEnter:Ne,onEdgeMouseMove:se,onEdgeMouseLeave:gt,onEdgeUpdateStart:Mt,onEdgeUpdateEnd:ut,edgeUpdaterRadius:vn,defaultMarkerColor:L,noPanClassName:sr,elevateEdgesOnSelect:!!ni,disableKeyboardA11y:Lr,rfId:Un,children:K.jsx(Aie,{style:y,type:v,component:g,containerStyle:b})}),K.jsx("div",{className:"react-flow__edgelabel-renderer"}),K.jsx(die,{nodeTypes:e,onNodeClick:s,onNodeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,selectNodesOnDrag:C,onlyRenderVisibleElements:$,noPanClassName:sr,noDragClassName:tt,disableKeyboardA11y:Lr,nodeOrigin:On,nodeExtent:bn,rfId:Un})]})}));JM.displayName="GraphView";var kie=k.memo(JM);const o2=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],rs={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:o2,nodeExtent:o2,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:nl.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:rre,isValidConnection:void 0},Rie=()=>gJ((e,t)=>({...rs,setNodes:n=>{const{nodeInternals:r,nodeOrigin:i,elevateNodesOnSelect:o}=t();e({nodeInternals:kb(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?kb(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,S)=>{const v=i.get(S.id);if(v){const y=Zx(S.nodeElement);!!(y.width&&y.height&&(v.width!==y.width||v.height!==y.height||S.forceUpdate))&&(i.set(v.id,{...v,[on]:{...v[on],handleBounds:{source:nE(".source",S.nodeElement,f,u),target:nE(".target",S.nodeElement,f,u)}},...y}),m.push({id:v.id,type:"dimensions",dimensions:y}))}return m},[]);zM(i,u);const p=s||o&&!s&&UM(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=qM(n,a()),c=kb(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=>ds(l,!0)):(s=du(o(),n),a=du(i,[])),kp({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=>ds(l,!0)):(s=du(i,n),a=du(o(),[])),kp({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,ds(c.id,!1))),u=a.map(c=>ds(c.id,!1));kp({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=>ds(a.id,!1)),s=n.filter(a=>a.selected).map(a=>ds(a.id,!1));kp({changedNodes:o,changedEdges:s,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(i=>{i.positionAbsolute=Jx(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=Ms.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:rs.connectionNodeId,connectionHandleId:rs.connectionHandleId,connectionHandleType:rs.connectionHandleType,connectionStatus:rs.connectionStatus,connectionStartHandle:rs.connectionStartHandle,connectionEndHandle:rs.connectionEndHandle}),reset:()=>e({...rs})})),eI=({children:e})=>{const t=k.useRef(null);return t.current||(t.current=Rie()),K.jsx(Yne,{value:t.current,children:e})};eI.displayName="ReactFlowProvider";const tI=({children:e})=>k.useContext(O0)?K.jsx(K.Fragment,{children:e}):K.jsx(eI,{children:e});tI.displayName="ReactFlowWrapper";function lE(e,t){return k.useRef(null),k.useMemo(()=>t(e),[e])}const Oie={input:OM,default:r2,output:IM,group:oC},Mie={default:$m,straight:nC,step:tC,smoothstep:M0,simplebezier:eC},Iie=[0,0],Nie=[15,15],Die={x:0,y:0,zoom:1},Lie={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},$ie=k.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:o=Oie,edgeTypes:s=Mie,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:S,onClickConnectEnd:v,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:b,onNodeContextMenu:_,onNodeDoubleClick:w,onNodeDragStart:x,onNodeDrag:T,onNodeDragStop:P,onNodesDelete:E,onEdgesDelete:A,onSelectionChange:$,onSelectionDragStart:I,onSelectionDrag:C,onSelectionDragStop:R,onSelectionContextMenu:M,onSelectionStart:N,onSelectionEnd:O,connectionMode:D=nl.Strict,connectionLineType:L=ys.Bezier,connectionLineStyle:j,connectionLineComponent:U,connectionLineContainerStyle:G,deleteKeyCode:W="Backspace",selectionKeyCode:X="Shift",selectionOnDrag:Y=!1,selectionMode:B=If.Full,panActivationKeyCode:H="Space",multiSelectionKeyCode:Q="Meta",zoomActivationKeyCode:J="Meta",snapToGrid:ne=!1,snapGrid:te=Nie,onlyRenderVisibleElements:xe=!1,selectNodesOnDrag:ve=!0,nodesDraggable:ce,nodesConnectable:Ne,nodesFocusable:se,nodeOrigin:gt=Iie,edgesFocusable:vn,edgesUpdatable:Mt,elementsSelectable:ut,defaultViewport:tt=Die,minZoom:Gt=.5,maxZoom:sr=2,translateExtent:ni=o2,preventScrolling:Lr=!0,nodeExtent:On,defaultMarkerColor:bn="#b1b1b7",zoomOnScroll:Un=!0,zoomOnPinch:Ht=!0,panOnScroll:xt=!1,panOnScrollSpeed:wr=.5,panOnScrollMode:$r=Mu.Free,zoomOnDoubleClick:ri=!0,panOnDrag:uo=!0,onPaneClick:Sn,onPaneMouseEnter:ii,onPaneMouseMove:ca,onPaneMouseLeave:ki,onPaneScroll:da,onPaneContextMenu:Ct,children:nt,onEdgeUpdate:_n,onEdgeContextMenu:ln,onEdgeDoubleClick:Mn,onEdgeMouseEnter:Gn,onEdgeMouseMove:ar,onEdgeMouseLeave:Ri,onEdgeUpdateStart:Hn,onEdgeUpdateEnd:wn,edgeUpdaterRadius:co=10,onNodesChange:Zo,onEdgesChange:Jo,noDragClassName:Al="nodrag",noWheelClassName:fo="nowheel",noPanClassName:qn="nopan",fitView:fa=!1,fitViewOptions:h1,connectOnClick:p1=!0,attributionPosition:g1,proOptions:m1,defaultEdgeOptions:es,elevateNodesOnSelect:y1=!0,elevateEdgesOnSelect:v1=!1,disableKeyboardA11y:Hh=!1,autoPanOnConnect:b1=!0,autoPanOnNodeDrag:S1=!0,connectionRadius:_1=20,isValidConnection:Ac,onError:w1,style:kl,id:Rl,...x1},Ol)=>{const qh=lE(o,Vre),C1=lE(s,Dre),kc=Rl||"1";return K.jsx("div",{...x1,style:{...kl,...Lie},ref:Ol,className:ti(["react-flow",i]),"data-testid":"rf__wrapper",id:Rl,children:K.jsxs(tI,{children:[K.jsx(kie,{onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:b,onNodeContextMenu:_,onNodeDoubleClick:w,nodeTypes:qh,edgeTypes:C1,connectionLineType:L,connectionLineStyle:j,connectionLineComponent:U,connectionLineContainerStyle:G,selectionKeyCode:X,selectionOnDrag:Y,selectionMode:B,deleteKeyCode:W,multiSelectionKeyCode:Q,panActivationKeyCode:H,zoomActivationKeyCode:J,onlyRenderVisibleElements:xe,selectNodesOnDrag:ve,defaultViewport:tt,translateExtent:ni,minZoom:Gt,maxZoom:sr,preventScrolling:Lr,zoomOnScroll:Un,zoomOnPinch:Ht,zoomOnDoubleClick:ri,panOnScroll:xt,panOnScrollSpeed:wr,panOnScrollMode:$r,panOnDrag:uo,onPaneClick:Sn,onPaneMouseEnter:ii,onPaneMouseMove:ca,onPaneMouseLeave:ki,onPaneScroll:da,onPaneContextMenu:Ct,onSelectionContextMenu:M,onSelectionStart:N,onSelectionEnd:O,onEdgeUpdate:_n,onEdgeContextMenu:ln,onEdgeDoubleClick:Mn,onEdgeMouseEnter:Gn,onEdgeMouseMove:ar,onEdgeMouseLeave:Ri,onEdgeUpdateStart:Hn,onEdgeUpdateEnd:wn,edgeUpdaterRadius:co,defaultMarkerColor:bn,noDragClassName:Al,noWheelClassName:fo,noPanClassName:qn,elevateEdgesOnSelect:v1,rfId:kc,disableKeyboardA11y:Hh,nodeOrigin:gt,nodeExtent:On}),K.jsx(Ere,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:S,onClickConnectEnd:v,nodesDraggable:ce,nodesConnectable:Ne,nodesFocusable:se,edgesFocusable:vn,edgesUpdatable:Mt,elementsSelectable:ut,elevateNodesOnSelect:y1,minZoom:Gt,maxZoom:sr,nodeExtent:On,onNodesChange:Zo,onEdgesChange:Jo,snapToGrid:ne,snapGrid:te,connectionMode:D,translateExtent:ni,connectOnClick:p1,defaultEdgeOptions:es,fitView:fa,fitViewOptions:h1,onNodesDelete:E,onEdgesDelete:A,onNodeDragStart:x,onNodeDrag:T,onNodeDragStop:P,onSelectionDrag:C,onSelectionDragStart:I,onSelectionDragStop:R,noPanClassName:qn,nodeOrigin:gt,rfId:kc,autoPanOnConnect:b1,autoPanOnNodeDrag:S1,onError:w1,connectionRadius:_1,isValidConnection:Ac}),K.jsx(Cre,{onSelectionChange:$}),nt,K.jsx(Jne,{proOptions:m1,position:g1}),K.jsx(Ore,{rfId:kc,disableKeyboardA11y:Hh})]})})});$ie.displayName="ReactFlow";var nI={},I0={},N0={};Object.defineProperty(N0,"__esModule",{value:!0});N0.createLogMethods=void 0;var Fie=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)}};N0.createLogMethods=Fie;var aC={},D0={};Object.defineProperty(D0,"__esModule",{value:!0});D0.boolean=void 0;const Bie=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}};D0.boolean=Bie;var L0={};Object.defineProperty(L0,"__esModule",{value:!0});L0.isBooleanable=void 0;const jie=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}};L0.isBooleanable=jie;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isBooleanable=e.boolean=void 0;const t=D0;Object.defineProperty(e,"boolean",{enumerable:!0,get:function(){return t.boolean}});const n=L0;Object.defineProperty(e,"isBooleanable",{enumerable:!0,get:function(){return n.isBooleanable}})})(aC);var uE=Object.prototype.toString,rI=function(t){var n=uE.call(t),r=n==="[object Arguments]";return r||(r=n!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&uE.call(t.callee)==="[object Function]"),r},Mb,cE;function Vie(){if(cE)return Mb;cE=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=rI,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]",S=r(h),v=p&&n.call(h)==="[object String]",y=[];if(!p&&!m&&!S)throw new TypeError("Object.keys called on a non-object");var g=s&&m;if(v&&h.length>0&&!t.call(h,0))for(var b=0;b0)for(var _=0;_"u"||!cn?Re:cn(Uint8Array),Ua={"%AggregateError%":typeof AggregateError>"u"?Re:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Re:ArrayBuffer,"%ArrayIteratorPrototype%":Bl&&cn?cn([][Symbol.iterator]()):Re,"%AsyncFromSyncIteratorPrototype%":Re,"%AsyncFunction%":Yl,"%AsyncGenerator%":Yl,"%AsyncGeneratorFunction%":Yl,"%AsyncIteratorPrototype%":Yl,"%Atomics%":typeof Atomics>"u"?Re:Atomics,"%BigInt%":typeof BigInt>"u"?Re:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Re:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Re:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Re:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?Re:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Re:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Re:FinalizationRegistry,"%Function%":oI,"%GeneratorFunction%":Yl,"%Int8Array%":typeof Int8Array>"u"?Re:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Re:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Re:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Bl&&cn?cn(cn([][Symbol.iterator]())):Re,"%JSON%":typeof JSON=="object"?JSON:Re,"%Map%":typeof Map>"u"?Re:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Bl||!cn?Re:cn(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Re:Promise,"%Proxy%":typeof Proxy>"u"?Re:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?Re:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Re:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Bl||!cn?Re:cn(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Re:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Bl&&cn?cn(""[Symbol.iterator]()):Re,"%Symbol%":Bl?Symbol:Re,"%SyntaxError%":ic,"%ThrowTypeError%":roe,"%TypedArray%":ooe,"%TypeError%":Du,"%Uint8Array%":typeof Uint8Array>"u"?Re:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Re:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Re:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Re:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?Re:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Re:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Re:WeakSet};if(cn)try{null.error}catch(e){var soe=cn(cn(e));Ua["%Error.prototype%"]=soe}var aoe=function e(t){var n;if(t==="%AsyncFunction%")n=Nb("async function () {}");else if(t==="%GeneratorFunction%")n=Nb("function* () {}");else if(t==="%AsyncGeneratorFunction%")n=Nb("async function* () {}");else if(t==="%AsyncGenerator%"){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&cn&&(n=cn(i.prototype))}return Ua[t]=n,n},gE={"%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"]},_h=iI,Bm=noe,loe=_h.call(Function.call,Array.prototype.concat),uoe=_h.call(Function.apply,Array.prototype.splice),mE=_h.call(Function.call,String.prototype.replace),jm=_h.call(Function.call,String.prototype.slice),coe=_h.call(Function.call,RegExp.prototype.exec),doe=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,foe=/\\(\\)?/g,hoe=function(t){var n=jm(t,0,1),r=jm(t,-1);if(n==="%"&&r!=="%")throw new ic("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new ic("invalid intrinsic syntax, expected opening `%`");var i=[];return mE(t,doe,function(o,s,a,l){i[i.length]=a?mE(l,foe,"$1"):s||o}),i},poe=function(t,n){var r=t,i;if(Bm(gE,r)&&(i=gE[r],r="%"+i[0]+"%"),Bm(Ua,r)){var o=Ua[r];if(o===Yl&&(o=aoe(r)),typeof o>"u"&&!n)throw new Du("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:r,value:o}}throw new ic("intrinsic "+t+" does not exist!")},goe=function(t,n){if(typeof t!="string"||t.length===0)throw new Du("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new Du('"allowMissing" argument must be a boolean');if(coe(/^%?[^%]*%?$/,t)===null)throw new ic("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=hoe(t),i=r.length>0?r[0]:"",o=poe("%"+i+"%",n),s=o.name,a=o.value,l=!1,u=o.alias;u&&(i=u[0],uoe(r,loe([0,1],u)));for(var c=1,d=!0;c=r.length){var m=za(a,f);d=!!m,d&&"get"in m&&!("originalValue"in m.get)?a=m.get:a=a[f]}else d=Bm(a,f),a=a[f];d&&!l&&(Ua[s]=a)}}return a},moe=goe,s2=moe("%Object.defineProperty%",!0),a2=function(){if(s2)try{return s2({},"a",{value:1}),!0}catch{return!1}return!1};a2.hasArrayLengthDefineBug=function(){if(!a2())return null;try{return s2([],"length",{value:1}).length!==1}catch{return!0}};var yoe=a2,voe=Gie,boe=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",Soe=Object.prototype.toString,_oe=Array.prototype.concat,sI=Object.defineProperty,woe=function(e){return typeof e=="function"&&Soe.call(e)==="[object Function]"},xoe=yoe(),aI=sI&&xoe,Coe=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!woe(r)||!r())return}aI?sI(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n},lI=function(e,t){var n=arguments.length>2?arguments[2]:{},r=voe(t);boe&&(r=_oe.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))}};j0.testComparisonRange=Hoe;var V0={};Object.defineProperty(V0,"__esModule",{value:!0});V0.testRange=void 0;var qoe=function(e,t){return typeof e=="number"?!(et.max||e===t.max&&!t.maxInclusive):!1};V0.testRange=qoe;(function(e){var t=Ee&&Ee.__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,Xoe.escapeRegexString)(u.trim())}).join("|")+")")}:{path:l.path}})};z0.highlight=Qoe;var U0={},gI={exports:{}};(function(e){(function(t,n){e.exports?e.exports=n():t.nearley=n()})(Ee,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}})})(gI);var Zoe=gI.exports,rl={},mI={},na={};na.__esModule=void 0;na.__esModule=!0;var Joe=typeof Object.setPrototypeOf=="function",ese=typeof Object.getPrototypeOf=="function",tse=typeof Object.defineProperty=="function",nse=typeof Object.create=="function",rse=typeof Object.prototype.hasOwnProperty=="function",ise=function(t,n){Joe?Object.setPrototypeOf(t,n):t.__proto__=n};na.setPrototypeOf=ise;var ose=function(t){return ese?Object.getPrototypeOf(t):t.__proto__||t.prototype};na.getPrototypeOf=ose;var yE=!1,sse=function e(t,n,r){if(tse&&!yE)try{Object.defineProperty(t,n,r)}catch{yE=!0,e(t,n,r)}else t[n]=r.value};na.defineProperty=sse;var yI=function(t,n){return rse?t.hasOwnProperty(t,n):t[n]===void 0};na.hasOwnProperty=yI;var ase=function(t,n){if(nse)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)yI(n,o)&&(i[o]=n[o].value);return i};na.objectCreate=ase;(function(e){e.__esModule=void 0,e.__esModule=!0;var t=na,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 S=c.toString().match(/^function\s*([^\s(]+)/);return S===null?a||"Error":S[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})(mI);var vI=Ee&&Ee.__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(rl,"__esModule",{value:!0});rl.SyntaxError=rl.LiqeError=void 0;var lse=mI,bI=function(e){vI(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(lse.ExtendableError);rl.LiqeError=bI;var use=function(e){vI(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}(bI);rl.SyntaxError=use;var cC={},Vm=Ee&&Ee.__assign||function(){return Vm=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:po},{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"};cC.default=cse;var SI={},G0={},Ch={};Object.defineProperty(Ch,"__esModule",{value:!0});Ch.isSafePath=void 0;var dse=/^(\.(?:[_a-zA-Z][a-zA-Z\d_]*|\0|[1-9]\d*))+$/u,fse=function(e){return dse.test(e)};Ch.isSafePath=fse;Object.defineProperty(G0,"__esModule",{value:!0});G0.createGetValueFunctionBody=void 0;var hse=Ch,pse=function(e){if(!(0,hse.isSafePath)(e))throw new Error("Unsafe path.");var t="return subject"+e;return t.replace(/(\.(\d+))/g,".[$2]").replace(/\./g,"?.")};G0.createGetValueFunctionBody=pse;(function(e){var t=Ee&&Ee.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,l=arguments.length;a\d+) col (?\d+)/,Sse=function(e){if(e.trim()==="")return{location:{end:0,start:0},type:"EmptyExpression"};var t=new wI.default.Parser(vse),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(bse);throw r?new gse.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,yse.hydrateAst)(n[0]);return i};U0.parse=Sse;var H0={};Object.defineProperty(H0,"__esModule",{value:!0});H0.test=void 0;var _se=wh,wse=function(e,t){return(0,_se.filter)(e,[t]).length===1};H0.test=wse;var xI={};(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})(xI);var q0={};Object.defineProperty(q0,"__esModule",{value:!0});q0.isSafeUnquotedExpression=void 0;var xse=function(e){return/^[#$*@A-Z_a-z][#$*.@A-Z_a-z-]*$/.test(e)};q0.isSafeUnquotedExpression=xse;(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=wh;Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return t.filter}});var n=z0;Object.defineProperty(e,"highlight",{enumerable:!0,get:function(){return n.highlight}});var r=U0;Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return r.parse}});var i=H0;Object.defineProperty(e,"test",{enumerable:!0,get:function(){return i.test}});var o=rl;Object.defineProperty(e,"LiqeError",{enumerable:!0,get:function(){return o.LiqeError}}),Object.defineProperty(e,"SyntaxError",{enumerable:!0,get:function(){return o.SyntaxError}});var s=xI;Object.defineProperty(e,"serialize",{enumerable:!0,get:function(){return s.serialize}});var a=q0;Object.defineProperty(e,"isSafeUnquotedExpression",{enumerable:!0,get:function(){return a.isSafeUnquotedExpression}})})(pI);var Th={},CI={},il={};Object.defineProperty(il,"__esModule",{value:!0});il.ROARR_LOG_FORMAT_VERSION=il.ROARR_VERSION=void 0;il.ROARR_VERSION="5.0.0";il.ROARR_LOG_FORMAT_VERSION="2.0.0";var Eh={};Object.defineProperty(Eh,"__esModule",{value:!0});Eh.logLevels=void 0;Eh.logLevels={debug:20,error:50,fatal:60,info:30,trace:10,warn:40};var TI={},W0={};Object.defineProperty(W0,"__esModule",{value:!0});W0.hasOwnProperty=void 0;const Cse=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);W0.hasOwnProperty=Cse;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hasOwnProperty=void 0;var t=W0;Object.defineProperty(e,"hasOwnProperty",{enumerable:!0,get:function(){return t.hasOwnProperty}})})(TI);var EI={},K0={},X0={};Object.defineProperty(X0,"__esModule",{value:!0});X0.tokenize=void 0;const Tse=/(?:%(?([+0-]|-\+))?(?\d+)?(?\d+\$)?(?\.\d+)?(?[%BCESb-iosux]))|(\\%)/g,Ese=e=>{let t;const n=[];let r=0,i=0,o=null;for(;(t=Tse.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};X0.tokenize=Ese;Object.defineProperty(K0,"__esModule",{value:!0});K0.createPrintf=void 0;const vE=aC,Pse=X0,Ase=(e,t)=>t.placeholder,kse=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:Ase,i={};return(o,...s)=>{let a=i[o];a||(a=i[o]=Pse.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+=vE.boolean(c)?"true":"false";else if(u.conversion==="B")l+=vE.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}};K0.createPrintf=kse;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.printf=e.createPrintf=void 0;const t=K0;Object.defineProperty(e,"createPrintf",{enumerable:!0,get:function(){return t.createPrintf}}),e.printf=t.createPrintf()})(EI);var l2={exports:{}};(function(e,t){const{hasOwnProperty:n}=Object.prototype,r=S();r.configure=S,r.stringify=r,r.default=r,t.stringify=r,t.configure=S,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function o(v){return v.length<5e3&&!i.test(v)?`"${v}"`:JSON.stringify(v)}function s(v){if(v.length>200)return v.sort();for(let y=1;yg;)v[b]=v[b-1],b--;v[b]=g}return v}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function l(v){return a.call(v)!==void 0&&v.length!==0}function u(v,y,g){v.length= 1`)}return g===void 0?1/0:g}function h(v){return v===1?"1 item":`${v} items`}function p(v){const y=new Set;for(const g of v)(typeof g=="string"||typeof g=="number")&&y.add(String(g));return y}function m(v){if(n.call(v,"strict")){const y=v.strict;if(typeof y!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(y)return g=>{let b=`Object can not safely be stringified. Received type ${typeof g}`;throw typeof g!="function"&&(b+=` (${g.toString()})`),new Error(b)}}}function S(v){v={...v};const y=m(v);y&&(v.bigint===void 0&&(v.bigint=!1),"circularValue"in v||(v.circularValue=Error));const g=c(v),b=d(v,"bigint"),_=d(v,"deterministic"),w=f(v,"maximumDepth"),x=f(v,"maximumBreadth");function T(I,C,R,M,N,O){let D=C[I];switch(typeof D=="object"&&D!==null&&typeof D.toJSON=="function"&&(D=D.toJSON(I)),D=M.call(C,I,D),typeof D){case"string":return o(D);case"object":{if(D===null)return"null";if(R.indexOf(D)!==-1)return g;let L="",j=",";const U=O;if(Array.isArray(D)){if(D.length===0)return"[]";if(wx){const ne=D.length-x-1;L+=`${j}"... ${h(ne)} not stringified"`}return N!==""&&(L+=` +${U}`),R.pop(),`[${L}]`}let G=Object.keys(D);const W=G.length;if(W===0)return"{}";if(wx){const H=W-x;L+=`${Y}"...":${X}"${h(H)} not stringified"`,Y=j}return N!==""&&Y.length>1&&(L=` +${O}${L} +${U}`),R.pop(),`{${L}}`}case"number":return isFinite(D)?String(D):y?y(D):"null";case"boolean":return D===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(D);default:return y?y(D):void 0}}function P(I,C,R,M,N,O){switch(typeof C=="object"&&C!==null&&typeof C.toJSON=="function"&&(C=C.toJSON(I)),typeof C){case"string":return o(C);case"object":{if(C===null)return"null";if(R.indexOf(C)!==-1)return g;const D=O;let L="",j=",";if(Array.isArray(C)){if(C.length===0)return"[]";if(wx){const B=C.length-x-1;L+=`${j}"... ${h(B)} not stringified"`}return N!==""&&(L+=` +${D}`),R.pop(),`[${L}]`}R.push(C);let U="";N!==""&&(O+=N,j=`, +${O}`,U=" ");let G="";for(const W of M){const X=P(W,C[W],R,M,N,O);X!==void 0&&(L+=`${G}${o(W)}:${U}${X}`,G=j)}return N!==""&&G.length>1&&(L=` +${O}${L} +${D}`),R.pop(),`{${L}}`}case"number":return isFinite(C)?String(C):y?y(C):"null";case"boolean":return C===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(C);default:return y?y(C):void 0}}function E(I,C,R,M,N){switch(typeof C){case"string":return o(C);case"object":{if(C===null)return"null";if(typeof C.toJSON=="function"){if(C=C.toJSON(I),typeof C!="object")return E(I,C,R,M,N);if(C===null)return"null"}if(R.indexOf(C)!==-1)return g;const O=N;if(Array.isArray(C)){if(C.length===0)return"[]";if(wx){const J=C.length-x-1;X+=`${Y}"... ${h(J)} not stringified"`}return X+=` +${O}`,R.pop(),`[${X}]`}let D=Object.keys(C);const L=D.length;if(L===0)return"{}";if(wx){const X=L-x;U+=`${G}"...": "${h(X)} not stringified"`,G=j}return G!==""&&(U=` +${N}${U} +${O}`),R.pop(),`{${U}}`}case"number":return isFinite(C)?String(C):y?y(C):"null";case"boolean":return C===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(C);default:return y?y(C):void 0}}function A(I,C,R){switch(typeof C){case"string":return o(C);case"object":{if(C===null)return"null";if(typeof C.toJSON=="function"){if(C=C.toJSON(I),typeof C!="object")return A(I,C,R);if(C===null)return"null"}if(R.indexOf(C)!==-1)return g;let M="";if(Array.isArray(C)){if(C.length===0)return"[]";if(wx){const W=C.length-x-1;M+=`,"... ${h(W)} not stringified"`}return R.pop(),`[${M}]`}let N=Object.keys(C);const O=N.length;if(O===0)return"{}";if(wx){const j=O-x;M+=`${D}"...":"${h(j)} not stringified"`}return R.pop(),`{${M}}`}case"number":return isFinite(C)?String(C):y?y(C):"null";case"boolean":return C===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(C);default:return y?y(C):void 0}}function $(I,C,R){if(arguments.length>1){let M="";if(typeof R=="number"?M=" ".repeat(Math.min(R,10)):typeof R=="string"&&(M=R.slice(0,10)),C!=null){if(typeof C=="function")return T("",{"":I},[],C,M,"");if(Array.isArray(C))return P("",I,[],p(C),M,"")}if(M.length!==0)return E("",I,[],M,"")}return A("",I,[])}return $}})(l2,l2.exports);var Rse=l2.exports;(function(e){var t=Ee&&Ee.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(e,"__esModule",{value:!0}),e.createLogger=void 0;const n=il,r=Eh,i=TI,o=EI,s=t(lC),a=t(Rse);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 b=g.getStore();return b||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,b)=>(_,w,x,T,P,E,A,$,I,C)=>{g.child({logLevel:b})(_,w,x,T,P,E,A,$,I,C)},S=1e3,v=(g,b)=>(_,w,x,T,P,E,A,$,I,C)=>{const R=(0,a.default)({a:_,b:w,c:x,d:T,e:P,f:E,g:A,h:$,i:I,j:C,logLevel:b});if(!R)throw new Error("Expected key to be a string");const M=c().onceLog;M.has(R)||(M.add(R),M.size>S&&M.clear(),g.child({logLevel:b})(_,w,x,T,P,E,A,$,I,C))},y=(g,b={},_=[])=>{const w=(x,T,P,E,A,$,I,C,R,M)=>{const N=Date.now(),O=p();let D;h()?D=f():D=d();let L,j;if(typeof x=="string"?L={...D.messageContext,...b}:L={...D.messageContext,...b,...x},typeof x=="string"&&T===void 0)j=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.");j=(0,o.printf)(x,T,P,E,A,$,I,C,R,M)}else{let G=T;if(typeof T!="string")if(T===void 0)G="";else throw new TypeError("Message must be a string. Received "+typeof T+".");j=(0,o.printf)(G,P,E,A,$,I,C,R,M)}let U={context:L,message:j,sequence:O,time:N,version:n.ROARR_LOG_FORMAT_VERSION};for(const G of[...D.transforms,..._])if(U=G(U),typeof U!="object"||U===null)throw new Error("Message transform function must return a message object.");g(U)};return w.child=x=>{let T;return h()?T=f():T=d(),typeof x=="function"?(0,e.createLogger)(g,{...T.messageContext,...b,...x},[x,..._]):(0,e.createLogger)(g,{...T.messageContext,...b,...x},_)},w.getContext=()=>{let x;return h()?x=f():x=d(),{...x.messageContext,...b}},w.adopt=async(x,T)=>{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 P=f();let E;(0,i.hasOwnProperty)(P,"sequenceRoot")&&(0,i.hasOwnProperty)(P,"sequence")&&typeof P.sequence=="number"?E=P.sequenceRoot+"."+String(P.sequence++):E=String(c().sequence++);let A={...P.messageContext};const $=[...P.transforms];typeof T=="function"?$.push(T):A={...A,...T};const I=c().asyncLocalStorage;if(!I)throw new Error("Async local context unavailable.");return I.run({messageContext:A,sequence:0,sequenceRoot:E,transforms:$},()=>x())},w.debug=m(w,r.logLevels.debug),w.debugOnce=v(w,r.logLevels.debug),w.error=m(w,r.logLevels.error),w.errorOnce=v(w,r.logLevels.error),w.fatal=m(w,r.logLevels.fatal),w.fatalOnce=v(w,r.logLevels.fatal),w.info=m(w,r.logLevels.info),w.infoOnce=v(w,r.logLevels.info),w.trace=m(w,r.logLevels.trace),w.traceOnce=v(w,r.logLevels.trace),w.warn=m(w,r.logLevels.warn),w.warnOnce=v(w,r.logLevels.warn),w};e.createLogger=y})(CI);var Y0={},Ose=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},Mse=Ee&&Ee.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Y0,"__esModule",{value:!0});Y0.createRoarrInitialGlobalStateBrowser=void 0;const bE=il,SE=Mse(Ose),Ise=e=>{const t=(e.versions||[]).concat();return t.length>1&&t.sort(SE.default),t.includes(bE.ROARR_VERSION)||t.push(bE.ROARR_VERSION),t.sort(SE.default),{sequence:0,...e,versions:t}};Y0.createRoarrInitialGlobalStateBrowser=Ise;var Q0={};Object.defineProperty(Q0,"__esModule",{value:!0});Q0.getLogLevelName=void 0;const Nse=e=>e<=10?"trace":e<=20?"debug":e<=30?"info":e<=40?"warn":e<=50?"error":"fatal";Q0.getLogLevelName=Nse;(function(e){var t=Ee&&Ee.__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=CI,r=Y0,o=(0,t(lC).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=Eh;Object.defineProperty(e,"logLevels",{enumerable:!0,get:function(){return u.logLevels}});var c=Q0;Object.defineProperty(e,"getLogLevelName",{enumerable:!0,get:function(){return c.getLogLevelName}})})(Th);var Dse=Ee&&Ee.__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,S,v,d):h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message),m,S,v)}}};I0.createLogWriter=Gse;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createLogWriter=void 0;var t=I0;Object.defineProperty(e,"createLogWriter",{enumerable:!0,get:function(){return t.createLogWriter}})})(nI);Th.ROARR.write=nI.createLogWriter();const AI={};Th.Roarr.child(AI);const Z0=T0(Th.Roarr.child(AI)),fe=e=>Z0.get().child({namespace:e}),j3e=["trace","debug","info","warn","error","fatal"],V3e={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function Hse(){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 Df=Vs("nodes/receivedOpenAPISchema",async(e,{dispatch:t,rejectWithValue:n})=>{const r=fe("system");try{const o=await(await fetch("openapi.json")).json();return r.info({openAPISchema:o},"Received OpenAPI schema"),JSON.parse(JSON.stringify(o,Hse()))}catch(i){return n({error:i})}}),kI={nodes:[],edges:[],schema:null,invocationTemplates:{},connectionStartParams:null,shouldShowGraphOverlay:!1,shouldShowFieldTypeLegend:!1,shouldShowMinimapPanel:!0,editorInstance:void 0,progressNodeSize:{width:512,height:512}},RI=Pt({name:"nodes",initialState:kI,reducers:{nodesChanged:(e,t)=>{e.nodes=qM(t.payload,e.nodes)},nodeAdded:(e,t)=>{e.nodes.push(t.payload)},edgesChanged:(e,t)=>{e.edges=nie(t.payload,e.edges)},connectionStarted:(e,t)=>{e.connectionStartParams=t.payload},connectionMade:(e,t)=>{e.edges=bM(t.payload,e.edges)},connectionEnded:e=>{e.connectionStartParams=null},fieldValueChanged:(e,t)=>{const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(s=>s.id===n);o>-1&&(e.nodes[o].data.inputs[r].value=i)},imageCollectionFieldValueChanged:(e,t)=>{const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(a=>a.id===n);if(o===-1)return;const s=Ln(e.nodes[o].data.inputs[r].value);if(!s){e.nodes[o].data.inputs[r].value=i;return}e.nodes[o].data.inputs[r].value=nY(s.concat(i),"image_name")},shouldShowGraphOverlayChanged:(e,t)=>{e.shouldShowGraphOverlay=t.payload},shouldShowFieldTypeLegendChanged:(e,t)=>{e.shouldShowFieldTypeLegend=t.payload},shouldShowMinimapPanelChanged:(e,t)=>{e.shouldShowMinimapPanel=t.payload},nodeTemplatesBuilt:(e,t)=>{e.invocationTemplates=t.payload},nodeEditorReset:e=>{e.nodes=[],e.edges=[]},setEditorInstance:(e,t)=>{e.editorInstance=t.payload},loadFileNodes:(e,t)=>{e.nodes=t.payload},loadFileEdges:(e,t)=>{e.edges=t.payload},setProgressNodeSize:(e,t)=>{e.progressNodeSize=t.payload}},extraReducers:e=>{e.addCase(Df.fulfilled,(t,n)=>{t.schema=n.payload})}}),{nodesChanged:z3e,edgesChanged:U3e,nodeAdded:G3e,fieldValueChanged:u2,connectionMade:H3e,connectionStarted:q3e,connectionEnded:W3e,shouldShowGraphOverlayChanged:K3e,shouldShowFieldTypeLegendChanged:X3e,shouldShowMinimapPanelChanged:Y3e,nodeTemplatesBuilt:dC,nodeEditorReset:OI,imageCollectionFieldValueChanged:Q3e,setEditorInstance:Z3e,loadFileNodes:J3e,loadFileEdges:e5e,setProgressNodeSize:t5e}=RI.actions,qse=RI.reducer,MI={esrganModelName:"RealESRGAN_x4plus.pth"},II=Pt({name:"postprocessing",initialState:MI,reducers:{esrganModelNameChanged:(e,t)=>{e.esrganModelName=t.payload}}}),{esrganModelNameChanged:n5e}=II.actions,Wse=II.reducer,Kse={positiveStylePrompt:"",negativeStylePrompt:"",shouldConcatSDXLStylePrompt:!0,shouldUseSDXLRefiner:!1,sdxlImg2ImgDenoisingStrength:.7,refinerModel:null,refinerSteps:20,refinerCFGScale:7.5,refinerScheduler:"euler",refinerAestheticScore:6,refinerStart:.7},NI=Pt({name:"sdxl",initialState:Kse,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},setRefinerAestheticScore:(e,t)=>{e.refinerAestheticScore=t.payload},setRefinerStart:(e,t)=>{e.refinerStart=t.payload}}}),{setPositiveStylePromptSDXL:r5e,setNegativeStylePromptSDXL:i5e,setShouldConcatSDXLStylePrompt:o5e,setShouldUseSDXLRefiner:Xse,setSDXLImg2ImgDenoisingStrength:s5e,refinerModelChanged:wE,setRefinerSteps:a5e,setRefinerCFGScale:l5e,setRefinerScheduler:u5e,setRefinerAestheticScore:c5e,setRefinerStart:d5e}=NI.actions,Yse=NI.reducer,Ph=ue("app/userInvoked"),Qse={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 zm{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||Qse,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 Xc(){let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n}function xE(e){return e==null?"":""+e}function Zse(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}function fC(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 CE(e,t,n){const{obj:r,k:i}=fC(e,t,Object);r[i]=n}function Jse(e,t,n,r){const{obj:i,k:o}=fC(e,t,Object);i[o]=i[o]||[],r&&(i[o]=i[o].concat(n)),r||i[o].push(n)}function Um(e,t){const{obj:n,k:r}=fC(e,t);if(n)return n[r]}function eae(e,t,n){const r=Um(e,n);return r!==void 0?r:Um(t,n)}function DI(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]):DI(e[r],t[r],n):e[r]=t[r]);return e}function jl(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var tae={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function nae(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>tae[t]):e}const rae=[" ",",","?","!",";"];function iae(e,t,n){t=t||"",n=n||"";const r=rae.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 Gm(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?Gm(l,u,n):void 0}i=i[r[o]]}return i}function Hm(e){return e&&e.indexOf("_")>0?e.replace("_","-"):e}class TE extends J0{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=Um(this.data,a);return l||!s||typeof r!="string"?l:Gm(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),CE(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=Um(this.data,a)||{};i?DI(l,r,o):l={...l,...r},CE(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 LI={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 EE={};class qm extends J0{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Zse(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=qi.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&&!iae(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 b=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${b}${s}`,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:`${l}${b}${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),S=["[object Number]","[object Function]","[object RegExp]"],v=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")&&S.indexOf(m)<0&&!(typeof v=="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 b=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=b,d):b}if(o){const b=m==="[object Array]",_=b?[]:{},w=b?p:h;for(const x in f)if(Object.prototype.hasOwnProperty.call(f,x)){const T=`${w}${o}${x}`;_[x]=this.translate(T,{...n,joinArrays:!1,ns:a}),_[x]===T&&(_[x]=f[x])}f=_}}else if(y&&typeof v=="string"&&m==="[object Array]")f=f.join(v),f&&(f=this.extendTranslation(f,t,n,r));else{let b=!1,_=!1;const w=n.count!==void 0&&typeof n.count!="string",x=qm.hasDefaultValue(n),T=w?this.pluralResolver.getSuffix(u,n.count,n):"",P=n.ordinal&&w?this.pluralResolver.getSuffix(u,n.count,{ordinal:!1}):"",E=n[`defaultValue${T}`]||n[`defaultValue${P}`]||n.defaultValue;!this.isValidLookup(f)&&x&&(b=!0,f=E),this.isValidLookup(f)||(_=!0,f=s);const $=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&_?void 0:f,I=x&&E!==f&&this.options.updateMissing;if(_||b||I){if(this.logger.log(I?"updateKey":"missingKey",u,l,s,I?E:f),o){const N=this.resolve(s,{...n,keySeparator:!1});N&&N.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 C=[];const R=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&R&&R[0])for(let N=0;N{const L=x&&D!==f?D:$;this.options.missingKeyHandler?this.options.missingKeyHandler(N,l,O,L,I,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(N,l,O,L,I,n),this.emit("missingKey",N,l,O,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?C.forEach(N=>{this.pluralResolver.getSuffixes(N,n).forEach(O=>{M([N],s+O,n[`defaultValue${O}`]||E)})}):M(C,s,E))}f=this.extendTranslation(f,t,n,d,r),_&&f===s&&this.options.appendNamespaceToMissingKey&&(f=`${l}:${s}`),(_||b)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${s}`:s,b?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(S=>{this.isValidLookup(r)||(a=S,!EE[`${m[0]}-${S}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(a)&&(EE[`${m[0]}-${S}`]=!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(v=>{if(this.isValidLookup(r))return;s=v;const y=[c];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(y,c,v,S,n);else{let b;f&&(b=this.pluralResolver.getSuffix(v,n.count,n));const _=`${this.options.pluralSeparator}zero`,w=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(f&&(y.push(c+b),n.ordinal&&b.indexOf(w)===0&&y.push(c+b.replace(w,this.options.pluralSeparator)),h&&y.push(c+_)),p){const x=`${c}${this.options.contextSeparator}${n.context}`;y.push(x),f&&(y.push(x+b),n.ordinal&&b.indexOf(w)===0&&y.push(x+b.replace(w,this.options.pluralSeparator)),h&&y.push(x+_))}}let g;for(;g=y.pop();)this.isValidLookup(r)||(o=g,r=this.getResource(v,S,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 $b(e){return e.charAt(0).toUpperCase()+e.slice(1)}class PE{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=qi.create("languageUtils")}getScriptPartFromCode(t){if(t=Hm(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=Hm(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]=$b(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]=$b(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=$b(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 oae=[{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}],sae={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 aae=["v1","v2","v3"],lae=["v4"],AE={zero:0,one:1,two:2,few:3,many:4,other:5};function uae(){const e={};return oae.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:sae[t.fc]}})}),e}class cae{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=qi.create("pluralResolver"),(!this.options.compatibilityJSON||lae.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=uae()}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(Hm(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)=>AE[i]-AE[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!aae.includes(this.options.compatibilityJSON)}}function kE(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=eae(e,t,n);return!o&&i&&typeof n=="string"&&(o=Gm(e,n,r),o===void 0&&(o=Gm(t,n,r))),o}class dae{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=qi.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:nae,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?jl(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?jl(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?jl(n.nestingPrefix):n.nestingPrefixEscaped||jl("$t("),this.nestingSuffix=n.nestingSuffix?jl(n.nestingSuffix):n.nestingSuffixEscaped||jl(")"),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=kE(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),S=m.shift().trim(),v=m.join(this.formatSeparator).trim();return this.format(kE(n,l,S,this.options.keySeparator,this.options.ignoreJSONStructure),v,r,{...i,...n,interpolationkey:S})};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 v=d(t,o,i);s=typeof v=="string"?v:""}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=xE(s));const S=p.safeValue(s);if(t=t.replace(o[0],S),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=xE(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 fae(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 Vl(e){const t={};return function(r,i,o){const s=i+JSON.stringify(o);let a=t[s];return a||(a=e(Hm(i),o),t[s]=a),a(r)}}class hae{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=qi.create("formatter"),this.options=t,this.formats={number:Vl((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return o=>i.format(o)}),currency:Vl((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>i.format(o)}),datetime:Vl((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return o=>i.format(o)}),relativetime:Vl((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return o=>i.format(o,r.range||"day")}),list:Vl((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()]=Vl(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}=fae(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 pae(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class gae extends J0{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=qi.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=>{Jse(l.loaded,[o],s),pae(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 RE(){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 OE(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 Rp(){}function mae(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}class Lf extends J0{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=OE(t),this.services={},this.logger=qi,this.modules={external:[]},mae(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=RE();this.options={...i,...this.options,...OE(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?qi.init(o(this.modules.logger),this.options):qi.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:typeof Intl<"u"&&(c=hae);const d=new PE(this.options);this.store=new TE(this.options.resources,this.options);const f=this.services;f.logger=qi,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new cae(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 dae(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new gae(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),S=1;S1?p-1:0),S=1;S{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Rp),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=Xc(),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]:Rp;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=Xc();return t||(t=this.languages),n||(n=this.options.ns),r||(r=Rp),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"&&LI.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=Xc();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=Xc();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=Xc();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 PE(RE());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 Lf(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Rp;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},o=new Lf(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 TE(this.store.data,i),o.services.resourceStore=o.store),o.translator=new qm(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},$I={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,wasSchemaParsed:!1,consoleLogLevel:"debug",shouldLogToConsole:!0,statusTranslationKey:"common.statusDisconnected",canceledSession:"",isPersisted:!1,language:"en",isUploading:!1,isNodesEnabled:!1,shouldUseNSFWChecker:!1,shouldUseWatermarker:!1},FI=Pt({name:"system",initialState:$I,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},setIsNodesEnabled(e,t){e.isNodesEnabled=t.payload},shouldUseNSFWCheckerChanged(e,t){e.shouldUseNSFWChecker=t.payload},shouldUseWatermarkerChanged(e,t){e.shouldUseWatermarker=t.payload}},extraReducers(e){e.addCase(s7,(t,n)=>{t.sessionId=n.payload.sessionId,t.canceledSession=""}),e.addCase(l7,t=>{t.sessionId=null}),e.addCase(r7,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(o7,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(c7,t=>{t.isCancelable=!0,t.isProcessing=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusGenerating"}),e.addCase(m7,(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(d7,(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(p7,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(Ph,t=>{t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.statusTranslationKey="common.statusPreparing"}),e.addCase(hl.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(Ga({title:kd("toast.canceled"),status:"warning"}))}),e.addCase(dC,t=>{t.wasSchemaParsed=!0}),e.addMatcher(MO,(t,n)=>{var r;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(Ga({title:kd("toast.serverError"),status:"error",description:((r=n.payload)==null?void 0:r.status)===422?"Validation Error":void 0}))}),e.addMatcher(_ae,(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(Ga({title:kd("toast.serverError"),status:"error",description:YX(n.payload.data.error_type)}))})}}),{setIsProcessing:f5e,setShouldConfirmOnDelete:h5e,setCurrentStatus:p5e,setIsCancelable:g5e,setEnableImageDebugging:m5e,addToast:Ft,clearToastQueue:y5e,cancelScheduled:v5e,scheduledCancelAborted:b5e,cancelTypeChanged:S5e,subscribedNodeIdsSet:_5e,consoleLogLevelChanged:w5e,shouldLogToConsoleChanged:x5e,isPersistedChanged:C5e,shouldAntialiasProgressImageChanged:T5e,languageChanged:E5e,progressImageSet:yae,setIsNodesEnabled:P5e,shouldUseNSFWCheckerChanged:vae,shouldUseWatermarkerChanged:bae}=FI.actions,Sae=FI.reducer,_ae=ei(Ux,S7,w7),wae={searchFolder:null,advancedAddScanModel:null},BI=Pt({name:"modelmanager",initialState:wae,reducers:{setSearchFolder:(e,t)=>{e.searchFolder=t.payload},setAdvancedAddScanModel:(e,t)=>{e.advancedAddScanModel=t.payload}}}),{setSearchFolder:A5e,setAdvancedAddScanModel:k5e}=BI.actions,xae=BI.reducer,jI={shift:!1},VI=Pt({name:"hotkeys",initialState:jI,reducers:{shiftKeyPressed:(e,t)=>{e.shift=t.payload}}}),{shiftKeyPressed:R5e}=VI.actions,Cae=VI.reducer,Tae=nF(DV);zI=c2=void 0;var Eae=Tae,Pae=function(){var t=[],n=[],r=void 0,i=function(u){return r=u,function(c){return function(d){return Eae.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 GI(e,t){if(e){if(typeof e=="string")return IE(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 IE(e,t)}}function IE(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?Vae:zae;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 $E(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 FE(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){$E(o,r,i,s,a,"next",l)}function a(l){$E(o,r,i,s,a,"throw",l)}s(void 0)})}}var Gae=function(){var e=FE(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 Lae(t,n,{prefix:i,driver:o,unserialize:a,persistWholeStore:c});var d={},f=function(){var h=FE(function*(){var p=UI(t.getState(),n);yield Uae(p,d,{prefix:i,driver:o,serialize:s,persistWholeStore:c}),pC(p,d)||t.dispatch({type:Oae,payload:p}),d=p});return function(){return h.apply(this,arguments)}}();u&&u>0?t.subscribe(Iae(f,u)):t.subscribe(Mae(f,l))});return function(n,r,i){return e.apply(this,arguments)}}();const Hae=Gae;function $f(e){"@babel/helpers - typeof";return $f=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},$f(e)}function BE(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 jb(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=jb({},r));var o=typeof t=="function"?t:pc(t);switch(i.type){case d2:return n.state=o(jb(jb({},n.state),i.payload||{}),{type:d2}),n.state;default:return o(r,i)}}},Yae=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(S,v){return JSON.stringify(S)}:s,l=r.unserialize,u=l===void 0?function(S,v){return JSON.parse(S)}: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(v){return function(y,g,b){var _=v(y,g,b);return Hae(_,n,{driver:t,prefix:o,serialize:a,unserialize:u,persistThrottle:d,persistDebounce:f,persistWholeStore:p}),_}};return m};const O5e=["chakra-ui-color-mode","i18nextLng","ROARR_FILTER","ROARR_LOG"],Qae="@@invokeai-",Zae=["cursorPosition","isCanvasInitialized","doesCanvasNeedScaling"],Jae=["pendingControlImages"],ele=["selection","selectedBoardId","galleryView"],tle=["schema","invocationTemplates"],nle=[],rle=[],ile=["currentIteration","currentStep","isCancelable","isConnected","isESRGANAvailable","isGFPGANAvailable","isProcessing","totalIterations","totalSteps","isCancelScheduled","progressImage","wereModelsReceived","wasSchemaParsed","isPersisted","isUploading"],ole=["shouldShowImageDetails"],sle={canvas:Zae,gallery:ele,generation:nle,nodes:tle,postprocessing:rle,system:ile,ui:ole,controlNet:Jae},ale=(e,t)=>{const n=_0(e,sle[t]);return JSON.stringify(n)},lle={canvas:NO,gallery:k7,generation:Wo,nodes:kI,postprocessing:MI,system:$I,config:gO,ui:kO,hotkeys:jI,controlNet:z_},ule=(e,t)=>gX(JSON.parse(e),lle[t]),qI=ue("nodes/textToImageGraphBuilt"),WI=ue("nodes/imageToImageGraphBuilt"),KI=ue("nodes/canvasGraphBuilt"),XI=ue("nodes/nodesGraphBuilt"),cle=ei(qI,WI,KI,XI),dle=e=>{if(cle(e)&&e.payload.nodes){const t={};return{...e,payload:{...e.payload,nodes:t}}}return Df.fulfilled.match(e)?{...e,payload:""}:dC.match(e)?{...e,payload:""}:e},fle=["canvas/setCursorPosition","canvas/setStageCoordinates","canvas/setStageScale","canvas/setIsDrawing","canvas/setBoundingBoxCoordinates","canvas/setBoundingBoxDimensions","canvas/setIsDrawing","canvas/addPointToCurrentLine","socket/socketGeneratorProgress","socket/appSocketGeneratorProgress","hotkeys/shiftKeyPressed","@@REMEMBER_PERSISTED"],hle=e=>e,ple=()=>{le({actionCreator:FQ,effect:async(e,{dispatch:t,getState:n})=>{const r=fe("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(hl({session_id:o}))}}})};ue("app/appStarted");const gle=()=>{le({matcher:he.endpoints.listImages.matchFulfilled,effect:async(e,{dispatch:t,unsubscribe:n,cancelActiveListeners:r})=>{if(e.meta.arg.queryCacheKey!==di({board_id:"none",categories:gi}))return;r(),n();const i=e.payload;i.ids.length>0&&t(Os(i.ids[0]))}})},gC=Hs.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:M5e,useGetAppConfigQuery:I5e}=gC,mle=()=>{le({matcher:gC.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(yQ(r[0])),i.includes("nsfw_checker")||n(vae(!1)),o.includes("invisible_watermark")||n(bae(!1))}})},yle=ue("app/appStarted"),vle=()=>{le({actionCreator:yle,effect:async(e,{unsubscribe:t,cancelActiveListeners:n})=>{n(),t()}})},mC={memoizeOptions:{resultEqualityCheck:S0}},YI=(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.some(f=>Ea(f.data.inputs,h=>{var p;return h.type==="image"&&((p=h.value)==null?void 0:p.image_name)===t})),u=Ea(o.controlNets,f=>f.controlImage===t||f.processedControlImage===t);return{isInitialImage:s,isCanvasImage:a,isNodesImage:l,isControlNetImage:u}},ble=Jn([e=>e],e=>{const{imageToDelete:t}=e.imageDeletion;if(!t)return;const{image_name:n}=t;return YI(e,n)},mC),Sle=()=>{le({matcher:ec.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=YI(l,u);c.isInitialImage&&!i&&(t(EO()),i=!0),c.isCanvasImage&&!o&&(t(LO()),o=!0),c.isNodesImage&&!s&&(t(OI()),s=!0),c.isControlNetImage&&!a&&(t(T7()),a=!0)})}})},_le=()=>{le({matcher:ei(U_,Am),effect:async(e,{getState:t,dispatch:n,condition:r,cancelActiveListeners:i})=>{i();const o=t(),s=U_.match(e)?e.payload:o.gallery.selectedBoardId,l=(Am.match(e)?e.payload:o.gallery.galleryView)==="images"?gi:_s,u={board_id:s??"none",categories:l};if(await r(()=>he.endpoints.listImages.select(u)(t()).isSuccess,5e3)){const{data:d}=he.endpoints.listImages.select(u)(t());d!=null&&d.ids.length?n(Os(d.ids[0]??null)):n(Os(null))}else n(Os(null))}})},wle=ue("canvas/canvasSavedToGallery"),xle=ue("canvas/canvasCopiedToClipboard"),Cle=ue("canvas/canvasDownloadedAsImage"),Tle=ue("canvas/canvasMerged"),Ele=ue("canvas/stagingAreaImageSaved");let QI=null,ZI=null;const N5e=e=>{QI=e},tv=()=>QI,D5e=e=>{ZI=e},Ple=()=>ZI,Ale=async e=>new Promise((t,n)=>{e.toBlob(r=>{if(r){t(r);return}n("Unable to create Blob")})}),Km=async(e,t)=>await Ale(e.toCanvas(t)),yC=async e=>{const t=tv();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 Km(o,a)},kle=e=>{navigator.clipboard.write([new ClipboardItem({[e.type]:e})])},Rle=()=>{le({actionCreator:xle,effect:async(e,{dispatch:t,getState:n})=>{const r=Z0.get().child({namespace:"canvasCopiedToClipboardListener"}),i=n(),o=await yC(i);if(!o){r.error("Problem getting base layer blob"),t(Ft({title:"Problem Copying Canvas",description:"Unable to export base layer",status:"error"}));return}kle(o),t(Ft({title:"Canvas Copied to Clipboard",status:"success"}))}})},Ole=(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()},Mle=()=>{le({actionCreator:Cle,effect:async(e,{dispatch:t,getState:n})=>{const r=Z0.get().child({namespace:"canvasSavedToGalleryListener"}),i=n(),o=await yC(i);if(!o){r.error("Problem getting base layer blob"),t(Ft({title:"Problem Downloading Canvas",description:"Unable to export base layer",status:"error"}));return}Ole(o,"canvas.png"),t(Ft({title:"Canvas Downloaded",status:"success"}))}})},Ile=async()=>{const e=tv();if(!e)return;const t=e.clone();return t.scale({x:1,y:1}),Km(t,t.getClientRect())},Nle=()=>{le({actionCreator:Tle,effect:async(e,{dispatch:t})=>{const n=Z0.get().child({namespace:"canvasCopiedToClipboardListener"}),r=await Ile();if(!r){n.error("Problem getting base layer blob"),t(Ft({title:"Problem Merging Canvas",description:"Unable to export base layer",status:"error"}));return}const i=tv();if(!i){n.error("Problem getting canvas base layer"),t(Ft({title:"Problem Merging Canvas",description:"Unable to export base layer",status:"error"}));return}const o=i.getClientRect({relativeTo:i.getParent()}),s=await t(he.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(BQ({kind:"image",layer:"base",imageName:a,...o}))}})},Dle=()=>{le({actionCreator:wle,effect:async(e,{dispatch:t,getState:n})=>{const r=fe("canvas"),i=n(),o=await yC(i);if(!o){r.error("Problem getting base layer blob"),t(Ft({title:"Problem Saving Canvas",description:"Unable to export base layer",status:"error"}));return}t(he.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!1,board_id:i.gallery.autoAddBoardId,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Saved to Gallery"}}}))}})},Lle=(e,t,n)=>{if(!(tJ.match(e)||bT.match(e)||Hx.match(e)||nJ.match(e)||ST.match(e))||ST.match(e)&&n.controlNet.controlNets[e.payload.controlNetId].shouldAutoConfig===!0)return!1;const{controlImage:i,processorType:o,shouldAutoConfig:s}=t.controlNet.controlNets[e.payload.controlNetId];if(bT.match(e)&&!s)return!1;const a=o!=="none",l=t.system.isProcessing;return a&&!l&&!!i},$le=()=>{le({predicate:Lle,effect:async(e,{dispatch:t,cancelActiveListeners:n,delay:r})=>{const i=fe("session"),{controlNetId:o}=e.payload;n(),i.trace("ControlNet auto-process triggered"),await r(300),t(Gx({controlNetId:o}))}})},pl=ue("system/sessionReadyToInvoke"),JI=e=>(e==null?void 0:e.type)==="image_output",Fle=()=>{le({actionCreator:Gx,effect:async(e,{dispatch:t,getState:n,take:r})=>{const i=fe("session"),{controlNetId:o}=e.payload,s=n().controlNet.controlNets[o];if(!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(Rn({graph:a})),[u]=await r(f=>Rn.fulfilled.match(f)&&f.meta.requestId===l.requestId),c=u.payload.id;t(pl());const[d]=await r(f=>zx.match(f)&&f.payload.data.graph_execution_state_id===c);if(JI(d.payload.data.result)){const{image_name:f}=d.payload.data.result.image,[{payload:h}]=await r(m=>he.endpoints.getImageDTO.matchFulfilled(m)&&m.payload.image_name===f),p=h;i.debug({controlNetId:e.payload,processedControlImage:p},"ControlNet image processed"),t(eJ({controlNetId:o,processedControlImage:p.image_name}))}}})},Ble=()=>{le({matcher:he.endpoints.addImageToBoard.matchFulfilled,effect:e=>{const t=fe("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Image added to board")}})},jle=()=>{le({matcher:he.endpoints.addImageToBoard.matchRejected,effect:e=>{const t=fe("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Problem adding image to board")}})},L5e=e=>e.gallery,$5e=Jn(e=>e,e=>e.gallery.selection[e.gallery.selection.length-1],mC),Vle=Jn([e=>e],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{board_id:t??"none",categories:n==="images"?gi:_s,offset:0,limit:GQ,is_intermediate:!1}},mC),eN=ue("imageDeletion/imageDeletionConfirmed"),zle=()=>{le({actionCreator:eN,effect:async(e,{dispatch:t,getState:n,condition:r})=>{const{imageDTO:i,imageUsage:o}=e.payload;t(M7(!1));const{image_name:s}=i,a=n();if(a.gallery.selection[a.gallery.selection.length-1]===s){const d=Vle(a),{data:f}=he.endpoints.listImages.select(d)(a),h=(f==null?void 0:f.ids)??[],p=h.findIndex(y=>y.toString()===s),m=h.filter(y=>y.toString()!==s),S=Ss(p,0,m.length-1),v=m[S];t(Os(v||null))}o.isCanvasImage&&t(LO()),o.isControlNetImage&&t(T7()),o.isInitialImage&&t(EO()),o.isNodesImage&&t(OI());const{requestId:u}=t(he.endpoints.deleteImage.initiate(i));await r(d=>he.endpoints.deleteImage.matchFulfilled(d)&&d.meta.requestId===u,3e4)&&t(Hs.util.invalidateTags([{type:"Board",id:i.board_id}]))}})},Ule=()=>{le({matcher:he.endpoints.deleteImage.matchPending,effect:()=>{}})},Gle=()=>{le({matcher:he.endpoints.deleteImage.matchFulfilled,effect:e=>{fe("images").debug({imageDTO:e.meta.arg.originalArgs},"Image deleted")}})},Hle=()=>{le({matcher:he.endpoints.deleteImage.matchRejected,effect:e=>{fe("images").debug({imageDTO:e.meta.arg.originalArgs},"Unable to delete image")}})},tN=ue("dnd/dndDropped"),qle=()=>{le({actionCreator:tN,effect:async(e,{dispatch:t})=>{const n=fe("images"),{activeData:r,overData:i}=e.payload;if(n.debug({activeData:r,overData:i},"Image or selection dropped"),i.actionType==="SET_CURRENT_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(Os(r.payload.imageDTO.image_name));return}if(i.actionType==="SET_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(C0(r.payload.imageDTO));return}if(i.actionType==="ADD_TO_BATCH"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(G_([r.payload.imageDTO.image_name]));return}if(i.actionType==="ADD_TO_BATCH"&&r.payloadType==="IMAGE_NAMES"){t(G_(r.payload.image_names));return}if(i.actionType==="SET_CONTROLNET_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{controlNetId:o}=i.context;t(Hx({controlImage:r.payload.imageDTO.image_name,controlNetId:o}));return}if(i.actionType==="SET_CANVAS_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t($O(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(u2({nodeId:s,fieldName:o,value:r.payload.imageDTO}));return}if(i.actionType==="SET_MULTI_NODES_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{fieldName:o,nodeId:s}=i.context;t(u2({nodeId:s,fieldName:o,value:[r.payload.imageDTO]}));return}if(i.actionType==="MOVE_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload,{boardId:s}=i.context;if(!s){t(he.endpoints.removeImageFromBoard.initiate({imageDTO:o}));return}t(he.endpoints.addImageToBoard.initiate({imageDTO:o,board_id:s}));return}}})},Wle=()=>{le({matcher:he.endpoints.removeImageFromBoard.matchFulfilled,effect:e=>{const t=fe("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Image removed from board")}})},Kle=()=>{le({matcher:he.endpoints.removeImageFromBoard.matchRejected,effect:e=>{const t=fe("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Problem removing image from board")}})},Xle=()=>{le({actionCreator:dJ,effect:async(e,{dispatch:t,getState:n})=>{const r=e.payload,i=n(),{shouldConfirmOnDelete:o}=i.system,s=ble(n());if(!s)return;const a=s.isCanvasImage||s.isInitialImage||s.isControlNetImage||s.isNodesImage;if(o||a){t(M7(!0));return}t(eN({imageDTO:r,imageUsage:s}))}})},ga={title:"Image Uploaded",status:"success"},Yle=()=>{le({matcher:he.endpoints.uploadImage.matchFulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=fe("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)t(Ft({...ga,...l}));else{t(he.endpoints.addImageToBoard.initiate({board_id:s,imageDTO:i}));const{data:u}=ec.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(Ft({...ga,description:d}))}return}if((a==null?void 0:a.type)==="SET_CANVAS_INITIAL_IMAGE"){t($O(i)),t(Ft({...ga,description:"Set as canvas initial image"}));return}if((a==null?void 0:a.type)==="SET_CONTROLNET_IMAGE"){const{controlNetId:l}=a;t(Hx({controlNetId:l,controlImage:i.image_name})),t(Ft({...ga,description:"Set as control image"}));return}if((a==null?void 0:a.type)==="SET_INITIAL_IMAGE"){t(C0(i)),t(Ft({...ga,description:"Set as initial image"}));return}if((a==null?void 0:a.type)==="SET_NODES_IMAGE"){const{nodeId:l,fieldName:u}=a;t(u2({nodeId:l,fieldName:u,value:i})),t(Ft({...ga,description:`Set as node field ${u}`}));return}if((a==null?void 0:a.type)==="ADD_TO_BATCH"){t(G_([i.image_name])),t(Ft({...ga,description:"Added to batch"}));return}}}})},Qle=()=>{le({matcher:he.endpoints.uploadImage.matchRejected,effect:(e,{dispatch:t})=>{const n=fe("images"),r={arg:{..._0(e.meta.arg.originalArgs,["file","postUploadAction"]),file:""}};n.error({...r},"Image upload failed"),t(Ft({title:"Image Upload Failed",description:e.error.message,status:"error"}))}})},Zle=ue("generation/initialImageSelected"),Jle=ue("generation/modelSelected"),eue=()=>{le({actionCreator:Zle,effect:(e,{dispatch:t})=>{if(!e.payload){t(Ft(Ga({title:kd("toast.imageNotLoadedDesc"),status:"error"})));return}t(C0(e.payload)),t(Ft(Ga(kd("toast.sentToImageToImage"))))}})},tue=()=>{le({actionCreator:Jle,effect:(e,{getState:t,dispatch:n})=>{var l;const r=fe("models"),i=t(),o=xf.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 u=0;Qa(i.lora.loras,(f,h)=>{f.base_model!==a&&(n(N7(h)),u+=1)});const{vae:c}=i.generation;c&&c.base_model!==a&&(n(PO(null)),u+=1);const{controlNets:d}=i.controlNet;Qa(d,(f,h)=>{var p;((p=f.model)==null?void 0:p.base_model)!==a&&(n(C7({controlNetId:h})),u+=1)}),u>0&&n(Ft(Ga({title:`Base model changed, cleared ${u} incompatible submodel${u===1?"":"s"}`,status:"warning"})))}n(ja(s))}})},jE=cl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),VE=cl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),zE=cl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),UE=cl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),GE=cl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),nue=({base_model:e,model_type:t,model_name:n})=>`${e}/${t}/${n}`,Yc=e=>{const t=[];return e.forEach(n=>{const r={...Ln(n),id:nue(n)};t.push(r)}),t},xo=Hs.injectEndpoints({endpoints:e=>({getMainModels:e.query({query:t=>{const n={model_type:"main",base_models:t};return`models/?${F_.stringify(n,{arrayFormat:"none"})}`},providesTags:(t,n,r)=>{const i=[{type:"MainModel",id:Le}];return t&&i.push(...t.ids.map(o=>({type:"MainModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Yc(t.models);return jE.setAll(jE.getInitialState(),i)}}),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:Le},{type:"SDXLRefinerModel",id:Le}]}),importMainModels:e.mutation({query:({body:t})=>({url:"models/import",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:Le},{type:"SDXLRefinerModel",id:Le}]}),addMainModels:e.mutation({query:({body:t})=>({url:"models/add",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:Le},{type:"SDXLRefinerModel",id:Le}]}),deleteMainModels:e.mutation({query:({base_model:t,model_name:n})=>({url:`models/${t}/main/${n}`,method:"DELETE"}),invalidatesTags:[{type:"MainModel",id:Le},{type:"SDXLRefinerModel",id:Le}]}),convertMainModels:e.mutation({query:({base_model:t,model_name:n,params:r})=>({url:`models/convert/${t}/main/${n}`,method:"PUT",params:r}),invalidatesTags:[{type:"MainModel",id:Le},{type:"SDXLRefinerModel",id:Le}]}),mergeMainModels:e.mutation({query:({base_model:t,body:n})=>({url:`models/merge/${t}`,method:"PUT",body:n}),invalidatesTags:[{type:"MainModel",id:Le},{type:"SDXLRefinerModel",id:Le}]}),syncModels:e.mutation({query:()=>({url:"models/sync",method:"POST"}),invalidatesTags:[{type:"MainModel",id:Le},{type:"SDXLRefinerModel",id:Le}]}),getLoRAModels:e.query({query:()=>({url:"models/",params:{model_type:"lora"}}),providesTags:(t,n,r)=>{const i=[{type:"LoRAModel",id:Le}];return t&&i.push(...t.ids.map(o=>({type:"LoRAModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Yc(t.models);return VE.setAll(VE.getInitialState(),i)}}),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:Le}]}),deleteLoRAModels:e.mutation({query:({base_model:t,model_name:n})=>({url:`models/${t}/lora/${n}`,method:"DELETE"}),invalidatesTags:[{type:"LoRAModel",id:Le}]}),getControlNetModels:e.query({query:()=>({url:"models/",params:{model_type:"controlnet"}}),providesTags:(t,n,r)=>{const i=[{type:"ControlNetModel",id:Le}];return t&&i.push(...t.ids.map(o=>({type:"ControlNetModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Yc(t.models);return zE.setAll(zE.getInitialState(),i)}}),getVaeModels:e.query({query:()=>({url:"models/",params:{model_type:"vae"}}),providesTags:(t,n,r)=>{const i=[{type:"VaeModel",id:Le}];return t&&i.push(...t.ids.map(o=>({type:"VaeModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Yc(t.models);return GE.setAll(GE.getInitialState(),i)}}),getTextualInversionModels:e.query({query:()=>({url:"models/",params:{model_type:"embedding"}}),providesTags:(t,n,r)=>{const i=[{type:"TextualInversionModel",id:Le}];return t&&i.push(...t.ids.map(o=>({type:"TextualInversionModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Yc(t.models);return UE.setAll(UE.getInitialState(),i)}}),getModelsInFolder:e.query({query:t=>({url:`/models/search?${F_.stringify(t,{})}`}),providesTags:(t,n,r)=>{const i=[{type:"ScannedModels",id:Le}];return t&&i.push(...t.map(o=>({type:"ScannedModels",id:o}))),i}}),getCheckpointConfigs:e.query({query:()=>({url:"/models/ckpt_confs"})})})}),{useGetMainModelsQuery:F5e,useGetControlNetModelsQuery:B5e,useGetLoRAModelsQuery:j5e,useGetTextualInversionModelsQuery:V5e,useGetVaeModelsQuery:z5e,useUpdateMainModelsMutation:U5e,useDeleteMainModelsMutation:G5e,useImportMainModelsMutation:H5e,useAddMainModelsMutation:q5e,useConvertMainModelsMutation:W5e,useMergeMainModelsMutation:K5e,useDeleteLoRAModelsMutation:X5e,useUpdateLoRAModelsMutation:Y5e,useSyncModelsMutation:Q5e,useGetModelsInFolderQuery:Z5e,useGetCheckpointConfigsQuery:J5e}=xo,rue=()=>{le({predicate:(e,t)=>xo.endpoints.getMainModels.matchFulfilled(t)&&!t.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=fe("models");r.info({models:e.payload.entities},`Main models loaded (${e.payload.ids.length})`);const i=t().generation.model;if(Ea(e.payload.entities,u=>(u==null?void 0:u.model_name)===(i==null?void 0:i.model_name)&&(u==null?void 0:u.base_model)===(i==null?void 0:i.base_model)))return;const s=e.payload.ids[0],a=e.payload.entities[s];if(!a){n(ja(null));return}const l=xf.safeParse(a);if(!l.success){r.error({error:l.error.format()},"Failed to parse main model");return}n(ja(l.data))}}),le({predicate:(e,t)=>xo.endpoints.getMainModels.matchFulfilled(t)&&t.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=fe("models");r.info({models:e.payload.entities},`SDXL Refiner models loaded (${e.payload.ids.length})`);const i=t().sdxl.refinerModel;if(Ea(e.payload.entities,u=>(u==null?void 0:u.model_name)===(i==null?void 0:i.model_name)&&(u==null?void 0:u.base_model)===(i==null?void 0:i.base_model)))return;const s=e.payload.ids[0],a=e.payload.entities[s];if(!a){n(wE(null)),n(Xse(!1));return}const l=xf.safeParse(a);if(!l.success){r.error({error:l.error.format()},"Failed to parse SDXL Refiner Model");return}n(wE(l.data))}}),le({matcher:xo.endpoints.getVaeModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=fe("models");r.info({models:e.payload.entities},`VAEs loaded (${e.payload.ids.length})`);const i=t().generation.vae;if(i===null||Ea(e.payload.entities,u=>(u==null?void 0:u.model_name)===(i==null?void 0:i.model_name)&&(u==null?void 0:u.base_model)===(i==null?void 0:i.base_model)))return;const s=e.payload.ids[0],a=e.payload.entities[s];if(!a){n(ja(null));return}const l=pQ.safeParse(a);if(!l.success){r.error({error:l.error.format()},"Failed to parse VAE model");return}n(PO(l.data))}}),le({matcher:xo.endpoints.getLoRAModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{fe("models").info({models:e.payload.entities},`LoRAs loaded (${e.payload.ids.length})`);const i=t().lora.loras;Qa(i,(o,s)=>{Ea(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(N7(s))})}}),le({matcher:xo.endpoints.getControlNetModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{fe("models").info({models:e.payload.entities},`ControlNet models loaded (${e.payload.ids.length})`);const i=t().controlNet.controlNets;Qa(i,(o,s)=>{Ea(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(C7({controlNetId:s}))})}}),le({matcher:xo.endpoints.getTextualInversionModels.matchFulfilled,effect:async e=>{fe("models").info({models:e.payload.entities},`Embeddings loaded (${e.payload.ids.length})`)}})},ra=e=>JSON.parse(JSON.stringify(e)),h2=e=>!("$ref"in e),iue=e=>!("$ref"in e),e4e=500,oue={integer:"integer",float:"float",number:"float",string:"string",boolean:"boolean",enum:"enum",ImageField:"image",image_collection:"image_collection",LatentsField:"latents",ConditioningField:"conditioning",UNetField:"unet",ClipField:"clip",VaeField:"vae",model:"model",refiner_model:"refiner_model",vae_model:"vae_model",lora_model:"lora_model",controlnet_model:"controlnet_model",ControlNetModelField:"controlnet_model",array:"array",item:"item",ColorField:"color",ControlField:"control",control:"control",cfg_scale:"float",control_weight:"float"},sue=500,Dt=e=>`var(--invokeai-colors-${e}-${sue})`,t4e={integer:{color:"red",colorCssVar:Dt("red"),title:"Integer",description:"Integers are whole numbers, without a decimal point."},float:{color:"orange",colorCssVar:Dt("orange"),title:"Float",description:"Floats are numbers with a decimal point."},string:{color:"yellow",colorCssVar:Dt("yellow"),title:"String",description:"Strings are text."},boolean:{color:"green",colorCssVar:Dt("green"),title:"Boolean",description:"Booleans are true or false."},enum:{color:"blue",colorCssVar:Dt("blue"),title:"Enum",description:"Enums are values that may be one of a number of options."},image:{color:"purple",colorCssVar:Dt("purple"),title:"Image",description:"Images may be passed between nodes."},image_collection:{color:"purple",colorCssVar:Dt("purple"),title:"Image Collection",description:"A collection of images."},latents:{color:"pink",colorCssVar:Dt("pink"),title:"Latents",description:"Latents may be passed between nodes."},conditioning:{color:"cyan",colorCssVar:Dt("cyan"),title:"Conditioning",description:"Conditioning may be passed between nodes."},unet:{color:"red",colorCssVar:Dt("red"),title:"UNet",description:"UNet submodel."},clip:{color:"green",colorCssVar:Dt("green"),title:"Clip",description:"Tokenizer and text_encoder submodels."},vae:{color:"blue",colorCssVar:Dt("blue"),title:"Vae",description:"Vae submodel."},control:{color:"cyan",colorCssVar:Dt("cyan"),title:"Control",description:"Control info passed between nodes."},model:{color:"teal",colorCssVar:Dt("teal"),title:"Model",description:"Models are models."},refiner_model:{color:"teal",colorCssVar:Dt("teal"),title:"Refiner Model",description:"Models are models."},vae_model:{color:"teal",colorCssVar:Dt("teal"),title:"VAE",description:"Models are models."},lora_model:{color:"teal",colorCssVar:Dt("teal"),title:"LoRA",description:"Models are models."},controlnet_model:{color:"teal",colorCssVar:Dt("teal"),title:"ControlNet",description:"Models are models."},array:{color:"gray",colorCssVar:Dt("gray"),title:"Array",description:"TODO: Array type description."},item:{color:"gray",colorCssVar:Dt("gray"),title:"Collection Item",description:"TODO: Collection Item type description."},color:{color:"gray",colorCssVar:Dt("gray"),title:"Color",description:"A RGBA color."}},n4e=250,Vb=e=>e.$ref.split("/").slice(-1)[0],aue=({schemaObject:e,baseField:t})=>{const n={...t,type:"integer",inputRequirement:"always",inputKind:"any",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},lue=({schemaObject:e,baseField:t})=>{const n={...t,type:"float",inputRequirement:"always",inputKind:"any",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},uue=({schemaObject:e,baseField:t})=>{const n={...t,type:"string",inputRequirement:"always",inputKind:"any",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},cue=({schemaObject:e,baseField:t})=>({...t,type:"boolean",inputRequirement:"always",inputKind:"any",default:e.default??!1}),due=({schemaObject:e,baseField:t})=>({...t,type:"model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),fue=({schemaObject:e,baseField:t})=>({...t,type:"refiner_model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),hue=({schemaObject:e,baseField:t})=>({...t,type:"vae_model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),pue=({schemaObject:e,baseField:t})=>({...t,type:"lora_model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),gue=({schemaObject:e,baseField:t})=>({...t,type:"controlnet_model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),mue=({schemaObject:e,baseField:t})=>({...t,type:"image",inputRequirement:"always",inputKind:"any",default:e.default??void 0}),yue=({schemaObject:e,baseField:t})=>({...t,type:"image_collection",inputRequirement:"always",inputKind:"any",default:e.default??void 0}),vue=({schemaObject:e,baseField:t})=>({...t,type:"latents",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),bue=({schemaObject:e,baseField:t})=>({...t,type:"conditioning",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),Sue=({schemaObject:e,baseField:t})=>({...t,type:"unet",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),_ue=({schemaObject:e,baseField:t})=>({...t,type:"clip",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),wue=({schemaObject:e,baseField:t})=>({...t,type:"vae",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),xue=({schemaObject:e,baseField:t})=>({...t,type:"control",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),Cue=({schemaObject:e,baseField:t})=>{const n=e.enum??[];return{...t,type:"enum",enumType:e.type??"string",options:n,inputRequirement:"always",inputKind:"direct",default:e.default??n[0]}},HE=({baseField:e})=>({...e,type:"array",inputRequirement:"always",inputKind:"direct",default:[]}),qE=({baseField:e})=>({...e,type:"item",inputRequirement:"always",inputKind:"direct",default:void 0}),Tue=({schemaObject:e,baseField:t})=>({...t,type:"color",inputRequirement:"always",inputKind:"direct",default:e.default??{r:127,g:127,b:127,a:255}}),nN=(e,t,n)=>{let r="";n&&t in n?r=n[t]:e.type?e.enum?r="enum":e.type&&(r=e.type):e.allOf?r=Vb(e.allOf[0]):e.anyOf?r=Vb(e.anyOf[0]):e.oneOf&&(r=Vb(e.oneOf[0]));const i=oue[r];if(!i)throw`Field type "${r}" is unknown!`;return i},Eue=(e,t,n)=>{const r=nN(e,t,n),i={name:t,title:e.title??"",description:e.description??""};if(["image"].includes(r))return mue({schemaObject:e,baseField:i});if(["image_collection"].includes(r))return yue({schemaObject:e,baseField:i});if(["latents"].includes(r))return vue({schemaObject:e,baseField:i});if(["conditioning"].includes(r))return bue({schemaObject:e,baseField:i});if(["unet"].includes(r))return Sue({schemaObject:e,baseField:i});if(["clip"].includes(r))return _ue({schemaObject:e,baseField:i});if(["vae"].includes(r))return wue({schemaObject:e,baseField:i});if(["control"].includes(r))return xue({schemaObject:e,baseField:i});if(["model"].includes(r))return due({schemaObject:e,baseField:i});if(["refiner_model"].includes(r))return fue({schemaObject:e,baseField:i});if(["vae_model"].includes(r))return hue({schemaObject:e,baseField:i});if(["lora_model"].includes(r))return pue({schemaObject:e,baseField:i});if(["controlnet_model"].includes(r))return gue({schemaObject:e,baseField:i});if(["enum"].includes(r))return Cue({schemaObject:e,baseField:i});if(["integer"].includes(r))return aue({schemaObject:e,baseField:i});if(["number","float"].includes(r))return lue({schemaObject:e,baseField:i});if(["string"].includes(r))return uue({schemaObject:e,baseField:i});if(["boolean"].includes(r))return cue({schemaObject:e,baseField:i});if(["array"].includes(r))return HE({schemaObject:e,baseField:i});if(["item"].includes(r))return qE({schemaObject:e,baseField:i});if(["color"].includes(r))return Tue({schemaObject:e,baseField:i});if(["array"].includes(r))return HE({schemaObject:e,baseField:i});if(["item"].includes(r))return qE({schemaObject:e,baseField:i})},Pue=(e,t,n)=>{const r=e.$ref.split("/").slice(-1)[0],i=t.components.schemas[r];return h2(i)?Lx(i.properties,(s,a,l)=>{if(!["type","id"].includes(l)&&!["object"].includes(a.type)&&h2(a)){const u=nN(a,l,n);s[l]={name:l,title:a.title??"",description:a.description??"",type:u}}return s},{}):{}},Aue=e=>e==="l2i"?["id","type","metadata"]:["id","type","is_intermediate","metadata"],kue=["Graph","InvocationMeta","MetadataAccumulatorInvocation"],Rue=e=>{var r;return oO((r=e.components)==null?void 0:r.schemas,(i,o)=>o.includes("Invocation")&&!o.includes("InvocationOutput")&&!kue.some(s=>o.includes(s))).reduce((i,o)=>{var s,a,l,u,c;if(iue(o)){const d=o.properties.type.default,f=Aue(d),h=((s=o.ui)==null?void 0:s.title)??o.title.replace("Invocation",""),p=(a=o.ui)==null?void 0:a.type_hints,m={};if(d==="collect"){const g=o.properties.item;m.item={type:"item",name:"item",description:g.description??"",title:"Collection Item",inputKind:"connection",inputRequirement:"always",default:void 0}}else if(d==="iterate"){const g=o.properties.collection;m.collection={type:"array",name:"collection",title:g.title??"",default:[],description:g.description??"",inputRequirement:"always",inputKind:"connection"}}else Lx(o.properties,(g,b,_)=>{if(!f.includes(_)&&h2(b)){const w=Eue(b,_,p);w&&(g[_]=w)}return g},m);const S=o.output;let v;if(d==="iterate"){const g=(u=(l=e.components)==null?void 0:l.schemas)==null?void 0:u.IterateInvocationOutput;v={item:{name:"item",title:(g==null?void 0:g.title)??"",description:(g==null?void 0:g.description)??"",type:"array"}}}else v=Pue(S,e,p);const y={title:h,type:d,tags:((c=o.ui)==null?void 0:c.tags)??[],description:o.description??"",inputs:m,outputs:v};Object.assign(i,{[d]:y})}return i},{})},Oue=()=>{le({actionCreator:Df.fulfilled,effect:(e,{dispatch:t})=>{const n=fe("system"),r=e.payload;n.debug({schemaJSON:r},"Dereferenced OpenAPI schema");const i=Rue(r);n.debug({nodeTemplates:ra(i)},`Built ${hO(i)} node templates`),t(dC(i))}}),le({actionCreator:Df.rejected,effect:()=>{fe("system").error("Problem dereferencing OpenAPI Schema")}})},Mue=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),Iue=new Map(Mue),Nue=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],p2=Symbol(".toJSON was called"),Due=e=>{e[p2]=!0;const t=e.toJSON();return delete e[p2],t},Lue=e=>Iue.get(e)??Error,rN=({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&&WE(e)){const u=Lue(e.name);n=new u}else n={};if(t.push(e),o>=i)return n;if(s&&typeof e.toJSON=="function"&&e[p2]!==!0)return Due(e);const l=u=>rN({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 Nue)typeof e[u]<"u"&&e[u]!==null&&Object.defineProperty(n,u,{value:WE(e[u])?l(e[u]):e[u],enumerable:r?!0:c,configurable:!0,writable:!0});return n};function vC(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return typeof e=="object"&&e!==null?rN({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):typeof e=="function"?`[Function: ${e.name??"anonymous"}]`:e}function WE(e){return!!e&&typeof e=="object"&&"name"in e&&"message"in e&&"stack"in e}const $ue=()=>{le({actionCreator:hl.pending,effect:()=>{}})},Fue=()=>{le({actionCreator:hl.fulfilled,effect:e=>{const t=fe("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session canceled (${n})`)}})},Bue=()=>{le({actionCreator:hl.rejected,effect:e=>{const t=fe("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:vC(r)},"Problem canceling session")}}})},jue=()=>{le({actionCreator:Rn.pending,effect:()=>{}})},Vue=()=>{le({actionCreator:Rn.fulfilled,effect:e=>{const t=fe("session"),n=e.payload;t.debug({session:ra(n)},`Session created (${n.id})`)}})},zue=()=>{le({actionCreator:Rn.rejected,effect:e=>{const t=fe("session");if(e.payload){const{error:n,status:r}=e.payload,i=ra(e.meta.arg);t.error({graph:i,status:r,error:vC(n)},"Problem creating session")}}})},Uue=()=>{le({actionCreator:yh.pending,effect:()=>{}})},Gue=()=>{le({actionCreator:yh.fulfilled,effect:e=>{const t=fe("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session invoked (${n})`)}})},Hue=()=>{le({actionCreator:yh.rejected,effect:e=>{const t=fe("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:vC(r)},"Problem invoking session")}}})},que=()=>{le({actionCreator:pl,effect:(e,{getState:t,dispatch:n})=>{const r=fe("session"),{sessionId:i}=t().system;i&&(r.debug({session_id:i},`Session ready to invoke (${i})})`),n(yh({session_id:i})))}})},Wue=()=>{le({actionCreator:n7,effect:(e,{dispatch:t,getState:n})=>{fe("socketio").debug("Connected");const{nodes:i,config:o}=n(),{disabledTabs:s}=o;!i.schema&&!s.includes("nodes")&&t(Df()),t(r7(e.payload)),t(xo.util.invalidateTags([{type:"MainModel",id:Le},{type:"SDXLRefinerModel",id:Le},{type:"LoRAModel",id:Le},{type:"ControlNetModel",id:Le},{type:"VaeModel",id:Le},{type:"TextualInversionModel",id:Le},{type:"ScannedModels",id:Le}])),t(gC.util.invalidateTags(["AppConfig","AppVersion"]))}})},Kue=()=>{le({actionCreator:i7,effect:(e,{dispatch:t})=>{fe("socketio").debug("Disconnected"),t(o7(e.payload))}})},Xue=()=>{le({actionCreator:g7,effect:(e,{dispatch:t,getState:n})=>{const r=fe("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(m7(e.payload))}})},Yue=()=>{le({actionCreator:h7,effect:(e,{dispatch:t})=>{fe("socketio").debug(e.payload,"Session complete"),t(p7(e.payload))}})},Que=["dataURL_image"],Zue=()=>{le({actionCreator:zx,effect:async(e,{dispatch:t,getState:n})=>{const r=fe("socketio"),{data:i}=e.payload;r.debug({data:ra(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(hl({session_id:o}));const{result:l,node:u,graph_execution_state_id:c}=i;if(JI(l)&&!Que.includes(u.type)){const{image_name:d}=l.image,{canvas:f,gallery:h}=n(),p=await t(he.endpoints.getImageDTO.initiate(d)).unwrap();if(c===f.layerState.stagingArea.sessionId&&t($Q(p)),!p.is_intermediate){const{autoAddBoardId:m}=h;t(m?he.endpoints.addImageToBoard.initiate({board_id:m,imageDTO:p}):he.util.updateQueryData("listImages",{board_id:"none",categories:gi},y=>{const g=y.total,_=Kn.addOne(y,p).total-g;y.total=y.total+_})),t(he.util.invalidateTags([{type:"BoardImagesTotal",id:m??"none"},{type:"BoardAssetsTotal",id:m??"none"}]));const{selectedBoardId:S,shouldAutoSwitch:v}=h;v&&(m&&m!==S?(t(U_(m)),t(Am("images"))):m||t(Am("images")),t(Os(p.image_name)))}t(yae(null))}t(d7(e.payload))}})},Jue=()=>{le({actionCreator:f7,effect:(e,{dispatch:t})=>{fe("socketio").error(e.payload,`Invocation error (${e.payload.data.node.type})`),t(Ux(e.payload))}})},ece=()=>{le({actionCreator:_7,effect:(e,{dispatch:t})=>{fe("socketio").error(e.payload,`Invocation retrieval error (${e.payload.data.graph_execution_state_id})`),t(w7(e.payload))}})},tce=()=>{le({actionCreator:u7,effect:(e,{dispatch:t,getState:n})=>{const r=fe("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(c7(e.payload))}})},nce=()=>{le({actionCreator:y7,effect:(e,{dispatch:t})=>{const n=fe("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(ZZ(e.payload))}}),le({actionCreator:v7,effect:(e,{dispatch:t})=>{const n=fe("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(JZ(e.payload))}})},rce=()=>{le({actionCreator:b7,effect:(e,{dispatch:t})=>{fe("socketio").error(e.payload,`Session retrieval error (${e.payload.data.graph_execution_state_id})`),t(S7(e.payload))}})},ice=()=>{le({actionCreator:Vx,effect:(e,{dispatch:t})=>{fe("socketio").debug(e.payload,"Subscribed"),t(s7(e.payload))}})},oce=()=>{le({actionCreator:a7,effect:(e,{dispatch:t})=>{fe("socketio").debug(e.payload,"Unsubscribed"),t(l7(e.payload))}})},sce=()=>{le({actionCreator:Ele,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTO:r}=e.payload;try{const i=await t(he.endpoints.changeImageIsIntermediate.initiate({imageDTO:r,is_intermediate:!1})).unwrap(),{autoAddBoardId:o}=n().gallery;o&&await t(he.endpoints.addImageToBoard.initiate({imageDTO:i,board_id:o})),t(Ft({title:"Image Saved",status:"success"}))}catch(i){t(Ft({title:"Image Saving Failed",description:i==null?void 0:i.message,status:"error"}))}}})},r4e=["sd-1","sd-2","sdxl","sdxl-refiner"],ace=["sd-1","sd-2","sdxl"],i4e=["sdxl-refiner"],lce=()=>{le({actionCreator:OO,effect:(e,{getState:t,dispatch:n})=>{if(e.payload==="unifiedCanvas"){const{data:i}=xo.endpoints.getMainModels.select(ace)(t());if(!i){n(ja(null));return}const o=[];Qa(i.entities,u=>{u&&["sd-1","sd-2"].includes(u.base_model)&&o.push(u)});const s=o[0];if(!s){n(ja(null));return}const{base_model:a,model_name:l}=s;n(ja({base_model:a,model_name:l}))}}})},Be="positive_conditioning",qe="negative_conditioning",dn="text_to_latents",We="latents_to_image",fu="nsfw_checker",Qc="invisible_watermark",$e="noise",Fi="rand_int",Co="range_of_size",lr="iterate",pt="main_model_loader",Zc="vae_loader",uce="lora_loader",it="clip_skip",bt="image_to_latents",Kt="latents_to_latents",Qn="resize_image",Ii="inpaint",Op="control_net_collect",zb="dynamic_prompt",Ke="metadata_accumulator",KE="esrgan",en="sdxl_model_loader",is="t2l_sdxl",Ni="l2l_sdxl",zl="sdxl_refiner_model_loader",Mp="sdxl_refiner_positive_conditioning",Ip="sdxl_refiner_negative_conditioning",ma="l2l_sdxl_refiner",bC="text_to_image_graph",cce="sdxl_text_to_image_graph",dce="sxdl_image_to_image_graph",Xm="image_to_image_graph",iN="inpaint_graph",fce=({image_name:e,esrganModelName:t})=>{const n={id:KE,type:"esrgan",image:{image_name:e},model_name:t,is_intermediate:!1};return{id:"adhoc-esrgan-graph",nodes:{[KE]:n},edges:[]}},hce=ue("upscale/upscaleRequested"),pce=()=>{le({actionCreator:hce,effect:async(e,{dispatch:t,getState:n,take:r})=>{const{image_name:i}=e.payload,{esrganModelName:o}=n().postprocessing,s=fce({image_name:i,esrganModelName:o});t(Rn({graph:s})),await r(Rn.fulfilled.match),t(pl())}})},gce=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("

")})},XE=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)});var SC={exports:{}},nv={},oN={},Pe={};(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 Ee<"u"?Ee: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)})(Pe);var Ot={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Util=e.Transform=void 0;const t=Pe;class n{constructor(b=[1,0,0,1,0,0]){this.dirty=!1,this.m=b&&b.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(b){b.m[0]=this.m[0],b.m[1]=this.m[1],b.m[2]=this.m[2],b.m[3]=this.m[3],b.m[4]=this.m[4],b.m[5]=this.m[5]}point(b){var _=this.m;return{x:_[0]*b.x+_[2]*b.y+_[4],y:_[1]*b.x+_[3]*b.y+_[5]}}translate(b,_){return this.m[4]+=this.m[0]*b+this.m[2]*_,this.m[5]+=this.m[1]*b+this.m[3]*_,this}scale(b,_){return this.m[0]*=b,this.m[1]*=b,this.m[2]*=_,this.m[3]*=_,this}rotate(b){var _=Math.cos(b),w=Math.sin(b),x=this.m[0]*_+this.m[2]*w,T=this.m[1]*_+this.m[3]*w,P=this.m[0]*-w+this.m[2]*_,E=this.m[1]*-w+this.m[3]*_;return this.m[0]=x,this.m[1]=T,this.m[2]=P,this.m[3]=E,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(b,_){var w=this.m[0]+this.m[2]*_,x=this.m[1]+this.m[3]*_,T=this.m[2]+this.m[0]*b,P=this.m[3]+this.m[1]*b;return this.m[0]=w,this.m[1]=x,this.m[2]=T,this.m[3]=P,this}multiply(b){var _=this.m[0]*b.m[0]+this.m[2]*b.m[1],w=this.m[1]*b.m[0]+this.m[3]*b.m[1],x=this.m[0]*b.m[2]+this.m[2]*b.m[3],T=this.m[1]*b.m[2]+this.m[3]*b.m[3],P=this.m[0]*b.m[4]+this.m[2]*b.m[5]+this.m[4],E=this.m[1]*b.m[4]+this.m[3]*b.m[5]+this.m[5];return this.m[0]=_,this.m[1]=w,this.m[2]=x,this.m[3]=T,this.m[4]=P,this.m[5]=E,this}invert(){var b=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),_=this.m[3]*b,w=-this.m[1]*b,x=-this.m[2]*b,T=this.m[0]*b,P=b*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),E=b*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=_,this.m[1]=w,this.m[2]=x,this.m[3]=T,this.m[4]=P,this.m[5]=E,this}getMatrix(){return this.m}decompose(){var b=this.m[0],_=this.m[1],w=this.m[2],x=this.m[3],T=this.m[4],P=this.m[5],E=b*x-_*w;let A={x:T,y:P,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(b!=0||_!=0){var $=Math.sqrt(b*b+_*_);A.rotation=_>0?Math.acos(b/$):-Math.acos(b/$),A.scaleX=$,A.scaleY=E/$,A.skewX=(b*w+_*x)/E,A.skewY=0}else if(w!=0||x!=0){var I=Math.sqrt(w*w+x*x);A.rotation=Math.PI/2-(x>0?Math.acos(-w/I):-Math.acos(w/I)),A.scaleX=E/I,A.scaleY=I,A.skewX=0,A.skewY=(b*w+_*x)/E}return A.rotation=e.Util._getRotation(A.rotation),A}}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]},S=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,v=[];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 b=g[0];return b==="#"||b==="."||b===b.toUpperCase()},_sign(g){return g===0||g>0?1:-1},requestAnimFrame(g){v.push(g),v.length===1&&y(function(){const b=v;v=[],b.forEach(function(_){_()})})},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,b){var _=e.Util.createImageElement();_.onload=function(){b(_)},_.src=g},_rgbToHex(g,b,_){return((1<<24)+(g<<16)+(b<<8)+_).toString(16).slice(1)},_hexToRgb(g){g=g.replace(u,c);var b=parseInt(g,16);return{r:b>>16&255,g:b>>8&255,b:b&255}},getRandomColor(){for(var g=(Math.random()*16777215<<0).toString(16);g.length<6;)g=d+g;return u+g},getRGB(g){var b;return g in m?(b=m[g],{r:b[0],g:b[1],b:b[2]}):g[0]===u?this._hexToRgb(g.substring(1)):g.substr(0,4)===p?(b=S.exec(g.replace(/ /g,"")),{r:parseInt(b[1],10),g:parseInt(b[2],10),b:parseInt(b[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 b=m[g.toLowerCase()];return b?{r:b[0],g:b[1],b:b[2],a:1}:null},_rgbColorToRGBA(g){if(g.indexOf("rgb(")===0){g=g.match(/rgb\(([^)]+)\)/)[1];var b=g.split(/ *, */).map(Number);return{r:b[0],g:b[1],b:b[2],a:1}}},_rgbaColorToRGBA(g){if(g.indexOf("rgba(")===0){g=g.match(/rgba\(([^)]+)\)/)[1];var b=g.split(/ *, */).map((_,w)=>_.slice(-1)==="%"?w===3?parseInt(_)/100:parseInt(_)/100*255:Number(_));return{r:b[0],g:b[1],b:b[2],a:b[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[b,..._]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(g),w=Number(_[0])/360,x=Number(_[1])/100,T=Number(_[2])/100;let P,E,A;if(x===0)return A=T*255,{r:Math.round(A),g:Math.round(A),b:Math.round(A),a:1};T<.5?P=T*(1+x):P=T+x-T*x;const $=2*T-P,I=[0,0,0];for(let C=0;C<3;C++)E=w+1/3*-(C-1),E<0&&E++,E>1&&E--,6*E<1?A=$+(P-$)*6*E:2*E<1?A=P:3*E<2?A=$+(P-$)*(2/3-E)*6:A=$,I[C]=A*255;return{r:Math.round(I[0]),g:Math.round(I[1]),b:Math.round(I[2]),a:1}}},haveIntersection(g,b){return!(b.x>g.x+g.width||b.x+b.widthg.y+g.height||b.y+b.height1?(P=_,E=w,A=(_-x)*(_-x)+(w-T)*(w-T)):(P=g+I*(_-g),E=b+I*(w-b),A=(P-x)*(P-x)+(E-T)*(E-T))}return[P,E,A]},_getProjectionToLine(g,b,_){var w=e.Util.cloneObject(g),x=Number.MAX_VALUE;return b.forEach(function(T,P){if(!(!_&&P===b.length-1)){var E=b[(P+1)%b.length],A=e.Util._getProjectionToSegment(T.x,T.y,E.x,E.y,g.x,g.y),$=A[0],I=A[1],C=A[2];Cb.length){var P=b;b=g,g=P}for(w=0;w{b.width=0,b.height=0})},drawRoundedRectPath(g,b,_,w){let x=0,T=0,P=0,E=0;typeof w=="number"?x=T=P=E=Math.min(w,b/2,_/2):(x=Math.min(w[0]||0,b/2,_/2),T=Math.min(w[1]||0,b/2,_/2),E=Math.min(w[2]||0,b/2,_/2),P=Math.min(w[3]||0,b/2,_/2)),g.moveTo(x,0),g.lineTo(b-T,0),g.arc(b-T,T,T,Math.PI*3/2,0,!1),g.lineTo(b,_-E),g.arc(b-E,_-E,E,0,Math.PI/2,!1),g.lineTo(P,_),g.arc(P,_-P,P,Math.PI/2,Math.PI,!1),g.lineTo(0,x),g.arc(x,x,x,Math.PI,Math.PI*3/2,!1)}}})(Ot);var wt={},Te={},de={};Object.defineProperty(de,"__esModule",{value:!0});de.getComponentValidator=de.getBooleanValidator=de.getNumberArrayValidator=de.getFunctionValidator=de.getStringOrGradientValidator=de.getStringValidator=de.getNumberOrAutoValidator=de.getNumberOrArrayOfNumbersValidator=de.getNumberValidator=de.alphaComponent=de.RGBComponent=void 0;const Ko=Pe,Nt=Ot;function Xo(e){return Nt.Util._isString(e)?'"'+e+'"':Object.prototype.toString.call(e)==="[object Number]"||Nt.Util._isBoolean(e)?e:Object.prototype.toString.call(e)}function mce(e){return e>255?255:e<0?0:Math.round(e)}de.RGBComponent=mce;function yce(e){return e>1?1:e<1e-4?1e-4:e}de.alphaComponent=yce;function vce(){if(Ko.Konva.isUnminified)return function(e,t){return Nt.Util._isNumber(e)||Nt.Util.warn(Xo(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}de.getNumberValidator=vce;function bce(e){if(Ko.Konva.isUnminified)return function(t,n){let r=Nt.Util._isNumber(t),i=Nt.Util._isArray(t)&&t.length==e;return!r&&!i&&Nt.Util.warn(Xo(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}de.getNumberOrArrayOfNumbersValidator=bce;function Sce(){if(Ko.Konva.isUnminified)return function(e,t){var n=Nt.Util._isNumber(e),r=e==="auto";return n||r||Nt.Util.warn(Xo(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}de.getNumberOrAutoValidator=Sce;function _ce(){if(Ko.Konva.isUnminified)return function(e,t){return Nt.Util._isString(e)||Nt.Util.warn(Xo(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}de.getStringValidator=_ce;function wce(){if(Ko.Konva.isUnminified)return function(e,t){const n=Nt.Util._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||Nt.Util.warn(Xo(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}de.getStringOrGradientValidator=wce;function xce(){if(Ko.Konva.isUnminified)return function(e,t){return Nt.Util._isFunction(e)||Nt.Util.warn(Xo(e)+' is a not valid value for "'+t+'" attribute. The value should be a function.'),e}}de.getFunctionValidator=xce;function Cce(){if(Ko.Konva.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(Nt.Util._isArray(e)?e.forEach(function(r){Nt.Util._isNumber(r)||Nt.Util.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):Nt.Util.warn(Xo(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}de.getNumberArrayValidator=Cce;function Tce(){if(Ko.Konva.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||Nt.Util.warn(Xo(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}de.getBooleanValidator=Tce;function Ece(e){if(Ko.Konva.isUnminified)return function(t,n){return t==null||Nt.Util.isObject(t)||Nt.Util.warn(Xo(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}de.getComponentValidator=Ece;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Factory=void 0;const t=Ot,n=de;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 v={};for(p=0;p{this._setAttr(s+d(b),void 0)}),this._fireChangeEvent(s,y,v),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}}})(Te);var _i={},Oo={};Object.defineProperty(Oo,"__esModule",{value:!0});Oo.HitContext=Oo.SceneContext=Oo.Context=void 0;const sN=Ot,Pce=Pe;function Ace(e){var t=[],n=e.length,r=sN.Util,i,o;for(i=0;itypeof c=="number"?Math.floor(c):c)),o+=kce+u.join(YE)+Rce)):(o+=a.property,t||(o+=Dce+a.val)),o+=Ice;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=$ce&&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=QE.length,r=this.setAttr,i,o,s=function(a){var l=t[a],u;t[a]=function(){return o=Ace(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))})(ov);Object.defineProperty(wt,"__esModule",{value:!0});wt.Node=void 0;const ke=Ot,Ah=Te,Dp=_i,ya=Pe,Br=ov,zt=de;var bg="absoluteOpacity",Lp="allEventListeners",bo="absoluteTransform",ZE="absoluteScale",va="canvas",Hce="Change",qce="children",Wce="konva",g2="listening",JE="mouseenter",e6="mouseleave",t6="set",n6="Shape",Sg=" ",r6="stage",ss="transform",Kce="Stage",m2="visible",Xce=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(Sg);let Yce=1,Se=class y2{constructor(t){this._id=Yce++,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===ss||t===bo)&&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===ss||t===bo,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(Sg);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(va)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===bo&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(va)){const{scene:t,filter:n,hit:r}=this._cache.get(va);ke.Util.releaseCanvas(t,n,r),this._cache.delete(va)}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){ke.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 Dp.SceneCanvas({pixelRatio:s,width:i,height:o}),h=new Dp.SceneCanvas({pixelRatio:s,width:0,height:0,willReadFrequently:!0}),p=new Dp.HitCanvas({pixelRatio:d,width:i,height:o}),m=f.getContext(),S=p.getContext();return p.isCache=!0,f.isCache=!0,this._cache.delete(va),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(f.getContext()._context.imageSmoothingEnabled=!1,h.getContext()._context.imageSmoothingEnabled=!1),m.save(),S.save(),m.translate(-a,-l),S.translate(-a,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(bg),this._clearSelfAndDescendantCache(ZE),this.drawScene(f,this),this.drawHit(p,this),this._isUnderCache=!1,m.restore(),S.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(va,{scene:f,filter:h,hit:p,x:a,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(va)}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!==qce&&(r=t6+ke.Util._capitalize(n),ke.Util._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(g2,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(m2,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;Br.DD._dragElements.forEach(s=>{s.dragStatus==="dragging"&&(s.node.nodeType==="Stage"||s.node.getLayer()===r)&&(i=!0)});var o=!n&&!ya.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!==Kce&&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(ss),this._clearSelfAndDescendantCache(bo)),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 ke.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(ss);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(ss),this._clearSelfAndDescendantCache(bo),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 ke.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 ke.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&ke.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(bg,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=ke.Util.isObject(i)&&!ke.Util._isPlainObject(i)&&!ke.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(),ke.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,ke.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():ya.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;Br.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=Br.DD._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&Br.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 ke.Util.haveIntersection(r,this.getClientRect())}static create(t,n){return ke.Util._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=y2.prototype.getClassName.call(t),i=t.children,o,s,a;n&&(t.attrs.container=n),ya.Konva[r]||(ke.Util.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=ya.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=Ub.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=Ub.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 S;if(l)S=l.call(this,o,this);else{var h=this.clipX(),p=this.clipY();o.rect(h,p,s,a)}o.clip.apply(o,S),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(S){S[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 S=m.getClientRect({relativeTo:c,skipShadow:t.skipShadow,skipStroke:t.skipStroke});S.width===0&&S.height===0||(o===void 0?(o=S.x,s=S.y,a=S.x+S.width,l=S.y+S.height):(o=Math.min(o,S.x),s=Math.min(s,S.y),a=Math.max(a,S.x+S.width),l=Math.max(l,S.y+S.height)))}});for(var d=this.find("Shape"),f=!1,h=0;hY.indexOf("pointer")>=0?"pointer":Y.indexOf("touch")>=0?"touch":"mouse",U=Y=>{const B=j(Y);if(B==="pointer")return i.Konva.pointerEventsEnabled&&L.pointer;if(B==="touch")return L.touch;if(B==="mouse")return L.mouse};function G(Y={}){return(Y.clipFunc||Y.clipWidth||Y.clipHeight)&&t.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),Y}const W="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(B){super(G(B)),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",()=>{G(this.attrs)}),this._checkVisibility()}_validateAdd(B){const H=B.getType()==="Layer",Q=B.getType()==="FastLayer";H||Q||t.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const B=this.visible()?"":"none";this.content.style.display=B}setContainer(B){if(typeof B===c){if(B.charAt(0)==="."){var H=B.slice(1);B=document.getElementsByClassName(H)[0]}else{var Q;B.charAt(0)!=="#"?Q=B:Q=B.slice(1),B=document.getElementById(Q)}if(!B)throw"Can not find container in document with id "+Q}return this._setAttr("container",B),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),B.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var B=this.children,H=B.length,Q;for(Q=0;Q-1&&e.stages.splice(H,1),t.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const B=this._pointerPositions[0]||this._changedPointerPositions[0];return B?{x:B.x,y:B.y}:(t.Util.warn(W),null)}_getPointerById(B){return this._pointerPositions.find(H=>H.id===B)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(B){B=B||{},B.x=B.x||0,B.y=B.y||0,B.width=B.width||this.width(),B.height=B.height||this.height();var H=new o.SceneCanvas({width:B.width,height:B.height,pixelRatio:B.pixelRatio||1}),Q=H.getContext()._context,J=this.children;return(B.x||B.y)&&Q.translate(-1*B.x,-1*B.y),J.forEach(function(ne){if(ne.isVisible()){var te=ne._toKonvaCanvas(B);Q.drawImage(te._canvas,B.x,B.y,te.getWidth()/te.getPixelRatio(),te.getHeight()/te.getPixelRatio())}}),H}getIntersection(B){if(!B)return null;var H=this.children,Q=H.length,J=Q-1,ne;for(ne=J;ne>=0;ne--){const te=H[ne].getIntersection(B);if(te)return te}return null}_resizeDOM(){var B=this.width(),H=this.height();this.content&&(this.content.style.width=B+d,this.content.style.height=H+d),this.bufferCanvas.setSize(B,H),this.bufferHitCanvas.setSize(B,H),this.children.forEach(Q=>{Q.setSize({width:B,height:H}),Q.draw()})}add(B,...H){if(arguments.length>1){for(var Q=0;QO&&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."),B.setSize({width:this.width(),height:this.height()}),B.draw(),i.Konva.isBrowser&&this.content.appendChild(B.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(B){return l.hasPointerCapture(B,this)}setPointerCapture(B){l.setPointerCapture(B,this)}releaseCapture(B){l.releaseCapture(B,this)}getLayers(){return this.children}_bindContentEvents(){i.Konva.isBrowser&&D.forEach(([B,H])=>{this.content.addEventListener(B,Q=>{this[H](Q)},{passive:!1})})}_pointerenter(B){this.setPointersPositions(B);const H=U(B.type);this._fire(H.pointerenter,{evt:B,target:this,currentTarget:this})}_pointerover(B){this.setPointersPositions(B);const H=U(B.type);this._fire(H.pointerover,{evt:B,target:this,currentTarget:this})}_getTargetShape(B){let H=this[B+"targetShape"];return H&&!H.getStage()&&(H=null),H}_pointerleave(B){const H=U(B.type),Q=j(B.type);if(H){this.setPointersPositions(B);var J=this._getTargetShape(Q),ne=!s.DD.isDragging||i.Konva.hitOnDragEnabled;J&&ne?(J._fireAndBubble(H.pointerout,{evt:B}),J._fireAndBubble(H.pointerleave,{evt:B}),this._fire(H.pointerleave,{evt:B,target:this,currentTarget:this}),this[Q+"targetShape"]=null):ne&&(this._fire(H.pointerleave,{evt:B,target:this,currentTarget:this}),this._fire(H.pointerout,{evt:B,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(B){const H=U(B.type),Q=j(B.type);if(H){this.setPointersPositions(B);var J=!1;this._changedPointerPositions.forEach(ne=>{var te=this.getIntersection(ne);if(s.DD.justDragged=!1,i.Konva["_"+Q+"ListenClick"]=!0,!(te&&te.isListening()))return;i.Konva.capturePointerEventsEnabled&&te.setPointerCapture(ne.id),this[Q+"ClickStartShape"]=te,te._fireAndBubble(H.pointerdown,{evt:B,pointerId:ne.id}),J=!0;const ve=B.type.indexOf("touch")>=0;te.preventDefault()&&B.cancelable&&ve&&B.preventDefault()}),J||this._fire(H.pointerdown,{evt:B,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(B){const H=U(B.type),Q=j(B.type);if(!H)return;s.DD.isDragging&&s.DD.node.preventDefault()&&B.cancelable&&B.preventDefault(),this.setPointersPositions(B);var J=!s.DD.isDragging||i.Konva.hitOnDragEnabled;if(!J)return;var ne={};let te=!1;var xe=this._getTargetShape(Q);this._changedPointerPositions.forEach(ve=>{const ce=l.getCapturedShape(ve.id)||this.getIntersection(ve),Ne=ve.id,se={evt:B,pointerId:Ne};var gt=xe!==ce;if(gt&&xe&&(xe._fireAndBubble(H.pointerout,Object.assign({},se),ce),xe._fireAndBubble(H.pointerleave,Object.assign({},se),ce)),ce){if(ne[ce._id])return;ne[ce._id]=!0}ce&&ce.isListening()?(te=!0,gt&&(ce._fireAndBubble(H.pointerover,Object.assign({},se),xe),ce._fireAndBubble(H.pointerenter,Object.assign({},se),xe),this[Q+"targetShape"]=ce),ce._fireAndBubble(H.pointermove,Object.assign({},se))):xe&&(this._fire(H.pointerover,{evt:B,target:this,currentTarget:this,pointerId:Ne}),this[Q+"targetShape"]=null)}),te||this._fire(H.pointermove,{evt:B,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(B){const H=U(B.type),Q=j(B.type);if(!H)return;this.setPointersPositions(B);const J=this[Q+"ClickStartShape"],ne=this[Q+"ClickEndShape"];var te={};let xe=!1;this._changedPointerPositions.forEach(ve=>{const ce=l.getCapturedShape(ve.id)||this.getIntersection(ve);if(ce){if(ce.releaseCapture(ve.id),te[ce._id])return;te[ce._id]=!0}const Ne=ve.id,se={evt:B,pointerId:Ne};let gt=!1;i.Konva["_"+Q+"InDblClickWindow"]?(gt=!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),ce&&ce.isListening()?(xe=!0,this[Q+"ClickEndShape"]=ce,ce._fireAndBubble(H.pointerup,Object.assign({},se)),i.Konva["_"+Q+"ListenClick"]&&J&&J===ce&&(ce._fireAndBubble(H.pointerclick,Object.assign({},se)),gt&&ne&&ne===ce&&ce._fireAndBubble(H.pointerdblclick,Object.assign({},se)))):(this[Q+"ClickEndShape"]=null,i.Konva["_"+Q+"ListenClick"]&&this._fire(H.pointerclick,{evt:B,target:this,currentTarget:this,pointerId:Ne}),gt&&this._fire(H.pointerdblclick,{evt:B,target:this,currentTarget:this,pointerId:Ne}))}),xe||this._fire(H.pointerup,{evt:B,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),i.Konva["_"+Q+"ListenClick"]=!1,B.cancelable&&Q!=="touch"&&B.preventDefault()}_contextmenu(B){this.setPointersPositions(B);var H=this.getIntersection(this.getPointerPosition());H&&H.isListening()?H._fireAndBubble($,{evt:B}):this._fire($,{evt:B,target:this,currentTarget:this})}_wheel(B){this.setPointersPositions(B);var H=this.getIntersection(this.getPointerPosition());H&&H.isListening()?H._fireAndBubble(N,{evt:B}):this._fire(N,{evt:B,target:this,currentTarget:this})}_pointercancel(B){this.setPointersPositions(B);const H=l.getCapturedShape(B.pointerId)||this.getIntersection(this.getPointerPosition());H&&H._fireAndBubble(_,l.createEvent(B)),l.releaseCapture(B.pointerId)}_lostpointercapture(B){l.releaseCapture(B.pointerId)}setPointersPositions(B){var H=this._getContentPosition(),Q=null,J=null;B=B||window.event,B.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(B.touches,ne=>{this._pointerPositions.push({id:ne.identifier,x:(ne.clientX-H.left)/H.scaleX,y:(ne.clientY-H.top)/H.scaleY})}),Array.prototype.forEach.call(B.changedTouches||B.touches,ne=>{this._changedPointerPositions.push({id:ne.identifier,x:(ne.clientX-H.left)/H.scaleX,y:(ne.clientY-H.top)/H.scaleY})})):(Q=(B.clientX-H.left)/H.scaleX,J=(B.clientY-H.top)/H.scaleY,this.pointerPos={x:Q,y:J},this._pointerPositions=[{x:Q,y:J,id:t.Util._getFirstPointerId(B)}],this._changedPointerPositions=[{x:Q,y:J,id:t.Util._getFirstPointerId(B)}])}_setPointerPosition(B){t.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(B)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var B=this.content.getBoundingClientRect();return{top:B.top,left:B.left,scaleX:B.width/this.content.clientWidth||1,scaleY:B.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 B=this.container();if(!B)throw"Stage has no container. A container is required.";B.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"),B.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(B){B.batchDraw()}),this}}e.Stage=X,X.prototype.nodeType=u,(0,a._registerNode)(X),n.Factory.addGetterSetter(X,"container")})(uN);var kh={},sn={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.shapes=void 0;const t=Pe,n=Ot,r=Te,i=wt,o=de,s=Pe,a=Tr;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(P){const E=this.attrs.fillRule;E?P.fill(E):P.fill()}function S(P){P.stroke()}function v(P){P.fill()}function y(P){P.stroke()}function g(){this._clearCache(l)}function b(){this._clearCache(u)}function _(){this._clearCache(c)}function w(){this._clearCache(d)}function x(){this._clearCache(f)}class T extends i.Node{constructor(E){super(E);let A;for(;A=n.Util.getRandomColor(),!(A&&!(A in e.shapes)););this.colorKey=A,e.shapes[A]=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 E=p();const A=E.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(A&&A.setTransform){const $=new n.Transform;$.translate(this.fillPatternX(),this.fillPatternY()),$.rotate(t.Konva.getAngle(this.fillPatternRotation())),$.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),$.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const I=$.getMatrix(),C=typeof DOMMatrix>"u"?{a:I[0],b:I[1],c:I[2],d:I[3],e:I[4],f:I[5]}:new DOMMatrix(I);A.setTransform(C)}return A}}_getLinearGradient(){return this._getCache(d,this.__getLinearGradient)}__getLinearGradient(){var E=this.fillLinearGradientColorStops();if(E){for(var A=p(),$=this.fillLinearGradientStartPoint(),I=this.fillLinearGradientEndPoint(),C=A.createLinearGradient($.x,$.y,I.x,I.y),R=0;Rthis.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 E=this.hitStrokeWidth();return E==="auto"?this.hasStroke():this.strokeEnabled()&&!!E}intersects(E){var A=this.getStage(),$=A.bufferHitCanvas,I;return $.getContext().clear(),this.drawHit($,null,!0),I=$.context.getImageData(Math.round(E.x),Math.round(E.y),1,1).data,I[3]>0}destroy(){return i.Node.prototype.destroy.call(this),delete e.shapes[this.colorKey],delete this.colorKey,this}_useBufferCanvas(E){var A;if(!this.getStage()||!((A=this.attrs.perfectDrawEnabled)!==null&&A!==void 0?A:!0))return!1;const I=E||this.hasFill(),C=this.hasStroke(),R=this.getAbsoluteOpacity()!==1;if(I&&C&&R)return!0;const M=this.hasShadow(),N=this.shadowForStrokeEnabled();return!!(I&&C&&M&&N)}setStrokeHitEnabled(E){n.Util.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),E?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var E=this.size();return{x:this._centroid?-E.width/2:0,y:this._centroid?-E.height/2:0,width:E.width,height:E.height}}getClientRect(E={}){const A=E.skipTransform,$=E.relativeTo,I=this.getSelfRect(),R=!E.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,M=I.width+R,N=I.height+R,O=!E.skipShadow&&this.hasShadow(),D=O?this.shadowOffsetX():0,L=O?this.shadowOffsetY():0,j=M+Math.abs(D),U=N+Math.abs(L),G=O&&this.shadowBlur()||0,W=j+G*2,X=U+G*2,Y={width:W,height:X,x:-(R/2+G)+Math.min(D,0)+I.x,y:-(R/2+G)+Math.min(L,0)+I.y};return A?Y:this._transformedRect(Y,$)}drawScene(E,A){var $=this.getLayer(),I=E||$.getCanvas(),C=I.getContext(),R=this._getCanvasCache(),M=this.getSceneFunc(),N=this.hasShadow(),O,D,L,j=I.isCache,U=A===this;if(!this.isVisible()&&!U)return this;if(R){C.save();var G=this.getAbsoluteTransform(A).getMatrix();return C.transform(G[0],G[1],G[2],G[3],G[4],G[5]),this._drawCachedSceneCanvas(C),C.restore(),this}if(!M)return this;if(C.save(),this._useBufferCanvas()&&!j){O=this.getStage(),D=O.bufferCanvas,L=D.getContext(),L.clear(),L.save(),L._applyLineJoin(this);var W=this.getAbsoluteTransform(A).getMatrix();L.transform(W[0],W[1],W[2],W[3],W[4],W[5]),M.call(this,L,this),L.restore();var X=D.pixelRatio;N&&C._applyShadow(this),C._applyOpacity(this),C._applyGlobalCompositeOperation(this),C.drawImage(D._canvas,0,0,D.width/X,D.height/X)}else{if(C._applyLineJoin(this),!U){var W=this.getAbsoluteTransform(A).getMatrix();C.transform(W[0],W[1],W[2],W[3],W[4],W[5]),C._applyOpacity(this),C._applyGlobalCompositeOperation(this)}N&&C._applyShadow(this),M.call(this,C,this)}return C.restore(),this}drawHit(E,A,$=!1){if(!this.shouldDrawHit(A,$))return this;var I=this.getLayer(),C=E||I.hitCanvas,R=C&&C.getContext(),M=this.hitFunc()||this.sceneFunc(),N=this._getCanvasCache(),O=N&&N.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()"),O){R.save();var D=this.getAbsoluteTransform(A).getMatrix();return R.transform(D[0],D[1],D[2],D[3],D[4],D[5]),this._drawCachedHitCanvas(R),R.restore(),this}if(!M)return this;if(R.save(),R._applyLineJoin(this),!(this===A)){var j=this.getAbsoluteTransform(A).getMatrix();R.transform(j[0],j[1],j[2],j[3],j[4],j[5])}return M.call(this,R,this),R.restore(),this}drawHitFromCache(E=0){var A=this._getCanvasCache(),$=this._getCachedSceneCanvas(),I=A.hit,C=I.getContext(),R=I.getWidth(),M=I.getHeight(),N,O,D,L,j,U;C.clear(),C.drawImage($._canvas,0,0,R,M);try{for(N=C.getImageData(0,0,R,M),O=N.data,D=O.length,L=n.Util._hexToRgb(this.colorKey),j=0;jE?(O[j]=L.r,O[j+1]=L.g,O[j+2]=L.b,O[j+3]=255):O[j+3]=0;C.putImageData(N,0,0)}catch(G){n.Util.error("Unable to draw hit graph from cached scene canvas. "+G.message)}return this}hasPointerCapture(E){return a.hasPointerCapture(E,this)}setPointerCapture(E){a.setPointerCapture(E,this)}releaseCapture(E){a.releaseCapture(E,this)}}e.Shape=T,T.prototype._fillFunc=m,T.prototype._strokeFunc=S,T.prototype._fillFuncHit=v,T.prototype._strokeFuncHit=y,T.prototype._centroid=!1,T.prototype.nodeType="Shape",(0,s._registerNode)(T),T.prototype.eventListeners={},T.prototype.on.call(T.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",g),T.prototype.on.call(T.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",b),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",_),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",w),T.prototype.on.call(T.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",x),r.Factory.addGetterSetter(T,"stroke",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(T,"strokeWidth",2,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillAfterStrokeEnabled",!1),r.Factory.addGetterSetter(T,"hitStrokeWidth","auto",(0,o.getNumberOrAutoValidator)()),r.Factory.addGetterSetter(T,"strokeHitEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"perfectDrawEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"shadowForStrokeEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(T,"lineJoin"),r.Factory.addGetterSetter(T,"lineCap"),r.Factory.addGetterSetter(T,"sceneFunc"),r.Factory.addGetterSetter(T,"hitFunc"),r.Factory.addGetterSetter(T,"dash"),r.Factory.addGetterSetter(T,"dashOffset",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowColor",void 0,(0,o.getStringValidator)()),r.Factory.addGetterSetter(T,"shadowBlur",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowOpacity",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"shadowOffset",["x","y"]),r.Factory.addGetterSetter(T,"shadowOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"shadowOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternImage"),r.Factory.addGetterSetter(T,"fill",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(T,"fillPatternX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillLinearGradientColorStops"),r.Factory.addGetterSetter(T,"strokeLinearGradientColorStops"),r.Factory.addGetterSetter(T,"fillRadialGradientStartRadius",0),r.Factory.addGetterSetter(T,"fillRadialGradientEndRadius",0),r.Factory.addGetterSetter(T,"fillRadialGradientColorStops"),r.Factory.addGetterSetter(T,"fillPatternRepeat","repeat"),r.Factory.addGetterSetter(T,"fillEnabled",!0),r.Factory.addGetterSetter(T,"strokeEnabled",!0),r.Factory.addGetterSetter(T,"shadowEnabled",!0),r.Factory.addGetterSetter(T,"dashEnabled",!0),r.Factory.addGetterSetter(T,"strokeScaleEnabled",!0),r.Factory.addGetterSetter(T,"fillPriority","color"),r.Factory.addComponentsGetterSetter(T,"fillPatternOffset",["x","y"]),r.Factory.addGetterSetter(T,"fillPatternOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"fillPatternScale",["x","y"]),r.Factory.addGetterSetter(T,"fillPatternScaleX",1,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(T,"fillPatternScaleY",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(T,"fillLinearGradientStartPoint",["x","y"]),r.Factory.addComponentsGetterSetter(T,"strokeLinearGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillLinearGradientStartPointX",0),r.Factory.addGetterSetter(T,"strokeLinearGradientStartPointX",0),r.Factory.addGetterSetter(T,"fillLinearGradientStartPointY",0),r.Factory.addGetterSetter(T,"strokeLinearGradientStartPointY",0),r.Factory.addComponentsGetterSetter(T,"fillLinearGradientEndPoint",["x","y"]),r.Factory.addComponentsGetterSetter(T,"strokeLinearGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillLinearGradientEndPointX",0),r.Factory.addGetterSetter(T,"strokeLinearGradientEndPointX",0),r.Factory.addGetterSetter(T,"fillLinearGradientEndPointY",0),r.Factory.addGetterSetter(T,"strokeLinearGradientEndPointY",0),r.Factory.addComponentsGetterSetter(T,"fillRadialGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillRadialGradientStartPointX",0),r.Factory.addGetterSetter(T,"fillRadialGradientStartPointY",0),r.Factory.addComponentsGetterSetter(T,"fillRadialGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(T,"fillRadialGradientEndPointX",0),r.Factory.addGetterSetter(T,"fillRadialGradientEndPointY",0),r.Factory.addGetterSetter(T,"fillPatternRotation",0),r.Factory.addGetterSetter(T,"fillRule",void 0,(0,o.getStringValidator)()),r.Factory.backCompat(T,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"})})(sn);Object.defineProperty(kh,"__esModule",{value:!0});kh.Layer=void 0;const go=Ot,Gb=gl,Ul=wt,wC=Te,i6=_i,tde=de,nde=sn,rde=Pe;var ide="#",ode="beforeDraw",sde="draw",fN=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],ade=fN.length;class vc extends Gb.Container{constructor(t){super(t),this.canvas=new i6.SceneCanvas,this.hitCanvas=new i6.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(ode,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),Gb.Container.prototype.drawScene.call(this,i,n),this._fire(sde,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),Gb.Container.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){go.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return go.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 go.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}kh.Layer=vc;vc.prototype.nodeType="Layer";(0,rde._registerNode)(vc);wC.Factory.addGetterSetter(vc,"imageSmoothingEnabled",!0);wC.Factory.addGetterSetter(vc,"clearBeforeDraw",!0);wC.Factory.addGetterSetter(vc,"hitGraphEnabled",!0,(0,tde.getBooleanValidator)());var av={};Object.defineProperty(av,"__esModule",{value:!0});av.FastLayer=void 0;const lde=Ot,ude=kh,cde=Pe;class xC extends ude.Layer{constructor(t){super(t),this.listening(!1),lde.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}av.FastLayer=xC;xC.prototype.nodeType="FastLayer";(0,cde._registerNode)(xC);var bc={};Object.defineProperty(bc,"__esModule",{value:!0});bc.Group=void 0;const dde=Ot,fde=gl,hde=Pe;class CC extends fde.Container{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&dde.Util.throw("You may only add groups and shapes to groups.")}}bc.Group=CC;CC.prototype.nodeType="Group";(0,hde._registerNode)(CC);var Sc={};Object.defineProperty(Sc,"__esModule",{value:!0});Sc.Animation=void 0;const Hb=Pe,o6=Ot;var qb=function(){return Hb.glob.performance&&Hb.glob.performance.now?function(){return Hb.glob.performance.now()}:function(){return new Date().getTime()}}();class Gi{constructor(t,n){this.id=Gi.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:qb(),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,S=p.node,v=S._id,y,g=p.easing||e.Easings.Linear,b=!!p.yoyo,_;typeof p.duration>"u"?y=.3:p.duration===0?y=.001:y=p.duration,this.node=S,this._id=u++;var w=S.getLayer()||(S instanceof i.Konva.Stage?S.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(_,function(x){m._tweenFunc(x)},g,0,1,y*1e3,b),this._addListeners(),f.attrs[v]||(f.attrs[v]={}),f.attrs[v][this._id]||(f.attrs[v][this._id]={}),f.tweens[v]||(f.tweens[v]={});for(_ in p)o[_]===void 0&&this._addAttr(_,p[_]);this.reset(),this.onFinish=p.onFinish,this.onReset=p.onReset,this.onUpdate=p.onUpdate}_addAttr(p,m){var S=this.node,v=S._id,y,g,b,_,w,x,T,P;if(b=f.tweens[v][p],b&&delete f.attrs[v][b][p],y=S.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?(T=y,y=t.Util._prepareArrayForTween(y,m,S.closed())):(x=m,m=t.Util._prepareArrayForTween(m,y,S.closed()))),p.indexOf("fill")===0)for(_=0;_{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,S=f.tweens[p],v;this.pause();for(v in S)delete f.tweens[p][v];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,S){var v=1.70158;return m*(h/=S)*h*((v+1)*h-v)+p},BackEaseOut(h,p,m,S){var v=1.70158;return m*((h=h/S-1)*h*((v+1)*h+v)+1)+p},BackEaseInOut(h,p,m,S){var v=1.70158;return(h/=S/2)<1?m/2*(h*h*(((v*=1.525)+1)*h-v))+p:m/2*((h-=2)*h*(((v*=1.525)+1)*h+v)+2)+p},ElasticEaseIn(h,p,m,S,v,y){var g=0;return h===0?p:(h/=S)===1?p+m:(y||(y=S*.3),!v||v0?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}}}lv.Arc=Yo;Yo.prototype._centroid=!0;Yo.prototype.className="Arc";Yo.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,gde._registerNode)(Yo);uv.Factory.addGetterSetter(Yo,"innerRadius",0,(0,cv.getNumberValidator)());uv.Factory.addGetterSetter(Yo,"outerRadius",0,(0,cv.getNumberValidator)());uv.Factory.addGetterSetter(Yo,"angle",0,(0,cv.getNumberValidator)());uv.Factory.addGetterSetter(Yo,"clockwise",!1,(0,cv.getBooleanValidator)());var dv={},Rh={};Object.defineProperty(Rh,"__esModule",{value:!0});Rh.Line=void 0;const fv=Te,mde=sn,pN=de,yde=Pe;function v2(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 a6(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 S=p/(2*h),v=m/h,y=l+S,g=v-S*S,b=y*y+g>0?Math.sqrt(y*y+g):0,_=S*S+g>0?Math.sqrt(S*S+g):0,w=S+Math.sqrt(S*S+g)!==0?g*Math.log(Math.abs((y+b)/(S+_))):0;return Math.sqrt(h)/2*(y*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})(gN);Object.defineProperty(_c,"__esModule",{value:!0});_c.Path=void 0;const vde=Te,bde=sn,Sde=Pe,Gl=gN;class Jt extends bde.Shape{constructor(t){super(t),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=Jt.parsePathData(this.data()),this.pathLength=Jt.getPathLength(this.dataArray)}_sceneFunc(t){var n=this.dataArray;t.beginPath();for(var r=!1,i=0;ic?u:c,S=u>c?1:u/c,v=u>c?c/u:1;t.translate(a,l),t.rotate(h),t.scale(S,v),t.arc(0,0,m,d,d+f,1-p),t.scale(1/S,1/v),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=Jt.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 Jt.getPointOnLine(t,s.start.x,s.start.y,a[0],a[1]);case"C":return Jt.getPointOnCubicBezier((0,Gl.t2length)(t,Jt.getPathLength(n),m=>(0,Gl.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 Jt.getPointOnQuadraticBezier((0,Gl.t2length)(t,Jt.getPathLength(n),m=>(0,Gl.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,Jt.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=[],b=l,_=u,w,x,T,P,E,A,$,I,C,R;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 M=p.shift(),N=p.shift();if(l+=M,u+=N,y="M",s.length>2&&s[s.length-1].command==="z"){for(var O=s.length-2;O>=0;O--)if(s[O].command==="M"){l=s[O].points[0]+M,u=s[O].points[1]+N;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,T=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),T=u+(u-w.points[3])),g.push(x,T,p.shift(),p.shift()),l=p.shift(),u=p.shift(),y="C",g.push(l,u);break;case"s":x=l,T=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),T=u+(u-w.points[3])),g.push(x,T,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,T=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),T=u+(u-w.points[1])),l=p.shift(),u=p.shift(),y="Q",g.push(x,T,l,u);break;case"t":x=l,T=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),T=u+(u-w.points[1])),l+=p.shift(),u+=p.shift(),y="Q",g.push(x,T,l,u);break;case"A":P=p.shift(),E=p.shift(),A=p.shift(),$=p.shift(),I=p.shift(),C=l,R=u,l=p.shift(),u=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(C,R,l,u,$,I,P,E,A);break;case"a":P=p.shift(),E=p.shift(),A=p.shift(),$=p.shift(),I=p.shift(),C=l,R=u,l+=p.shift(),u+=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(C,R,l,u,$,I,P,E,A);break}s.push({command:y||h,points:g,start:{x:b,y:_},pathLength:this.calcLength(b,_,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=Jt;switch(r){case"L":return u.getLineLength(t,n,i[0],i[1]);case"C":return(0,Gl.getCubicArcLength)([t,i[0],i[2],i[4]],[n,i[1],i[3],i[5]],1);case"Q":return(0,Gl.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,S=p*-l*d/a,v=(t+r)/2+Math.cos(c)*m-Math.sin(c)*S,y=(n+i)/2+Math.sin(c)*m+Math.cos(c)*S,g=function(E){return Math.sqrt(E[0]*E[0]+E[1]*E[1])},b=function(E,A){return(E[0]*A[0]+E[1]*A[1])/(g(E)*g(A))},_=function(E,A){return(E[0]*A[1]=1&&(P=0),s===0&&P>0&&(P=P-2*Math.PI),s===1&&P<0&&(P=P+2*Math.PI),[v,y,a,l,w,P,c,s]}}_c.Path=Jt;Jt.prototype.className="Path";Jt.prototype._attrsAffectingSize=["data"];(0,Sde._registerNode)(Jt);vde.Factory.addGetterSetter(Jt,"data");Object.defineProperty(dv,"__esModule",{value:!0});dv.Arrow=void 0;const hv=Te,_de=Rh,mN=de,wde=Pe,l6=_c;class yl extends _de.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=l6.Path.calcLength(i[i.length-4],i[i.length-3],"C",f),p=l6.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}}}dv.Arrow=yl;yl.prototype.className="Arrow";(0,wde._registerNode)(yl);hv.Factory.addGetterSetter(yl,"pointerLength",10,(0,mN.getNumberValidator)());hv.Factory.addGetterSetter(yl,"pointerWidth",10,(0,mN.getNumberValidator)());hv.Factory.addGetterSetter(yl,"pointerAtBeginning",!1);hv.Factory.addGetterSetter(yl,"pointerAtEnding",!0);var pv={};Object.defineProperty(pv,"__esModule",{value:!0});pv.Circle=void 0;const xde=Te,Cde=sn,Tde=de,Ede=Pe;let wc=class extends Cde.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)}};pv.Circle=wc;wc.prototype._centroid=!0;wc.prototype.className="Circle";wc.prototype._attrsAffectingSize=["radius"];(0,Ede._registerNode)(wc);xde.Factory.addGetterSetter(wc,"radius",0,(0,Tde.getNumberValidator)());var gv={};Object.defineProperty(gv,"__esModule",{value:!0});gv.Ellipse=void 0;const TC=Te,Pde=sn,yN=de,Ade=Pe;class oa extends Pde.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)}}gv.Ellipse=oa;oa.prototype.className="Ellipse";oa.prototype._centroid=!0;oa.prototype._attrsAffectingSize=["radiusX","radiusY"];(0,Ade._registerNode)(oa);TC.Factory.addComponentsGetterSetter(oa,"radius",["x","y"]);TC.Factory.addGetterSetter(oa,"radiusX",0,(0,yN.getNumberValidator)());TC.Factory.addGetterSetter(oa,"radiusY",0,(0,yN.getNumberValidator)());var mv={};Object.defineProperty(mv,"__esModule",{value:!0});mv.Image=void 0;const Wb=Ot,vl=Te,kde=sn,Rde=Pe,Oh=de;let ao=class vN extends kde.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?Wb.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?Wb.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=Wb.Util.createImageElement();i.onload=function(){var o=new vN({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}};mv.Image=ao;ao.prototype.className="Image";(0,Rde._registerNode)(ao);vl.Factory.addGetterSetter(ao,"cornerRadius",0,(0,Oh.getNumberOrArrayOfNumbersValidator)(4));vl.Factory.addGetterSetter(ao,"image");vl.Factory.addComponentsGetterSetter(ao,"crop",["x","y","width","height"]);vl.Factory.addGetterSetter(ao,"cropX",0,(0,Oh.getNumberValidator)());vl.Factory.addGetterSetter(ao,"cropY",0,(0,Oh.getNumberValidator)());vl.Factory.addGetterSetter(ao,"cropWidth",0,(0,Oh.getNumberValidator)());vl.Factory.addGetterSetter(ao,"cropHeight",0,(0,Oh.getNumberValidator)());var oc={};Object.defineProperty(oc,"__esModule",{value:!0});oc.Tag=oc.Label=void 0;const yv=Te,Ode=sn,Mde=bc,EC=de,bN=Pe;var SN=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],Ide="Change.konva",Nde="none",b2="up",S2="right",_2="down",w2="left",Dde=SN.length;class PC extends Mde.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)}}bv.RegularPolygon=Sl;Sl.prototype.className="RegularPolygon";Sl.prototype._centroid=!0;Sl.prototype._attrsAffectingSize=["radius"];(0,zde._registerNode)(Sl);_N.Factory.addGetterSetter(Sl,"radius",0,(0,wN.getNumberValidator)());_N.Factory.addGetterSetter(Sl,"sides",0,(0,wN.getNumberValidator)());var Sv={};Object.defineProperty(Sv,"__esModule",{value:!0});Sv.Ring=void 0;const xN=Te,Ude=sn,CN=de,Gde=Pe;var u6=Math.PI*2;class _l extends Ude.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,u6,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),u6,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)}}Sv.Ring=_l;_l.prototype.className="Ring";_l.prototype._centroid=!0;_l.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,Gde._registerNode)(_l);xN.Factory.addGetterSetter(_l,"innerRadius",0,(0,CN.getNumberValidator)());xN.Factory.addGetterSetter(_l,"outerRadius",0,(0,CN.getNumberValidator)());var _v={};Object.defineProperty(_v,"__esModule",{value:!0});_v.Sprite=void 0;const wl=Te,Hde=sn,qde=Sc,TN=de,Wde=Pe;class lo extends Hde.Shape{constructor(t){super(t),this._updated=!0,this.anim=new qde.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 Fp;function Xb(){return Fp||(Fp=x2.Util.createCanvasElement().getContext(efe),Fp)}function dfe(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function ffe(e){e.setAttr("miterLimit",2),e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function hfe(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}class Ut extends Yde.Shape{constructor(t){super(hfe(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(v+=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=x2.Util._isString(t)?t:t==null?"":t+"";return this._setAttr(tfe,n),this}getWidth(){var t=this.attrs.width===Hl||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===Hl||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 x2.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=Xb(),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()+$p+this.fontVariant()+$p+(this.fontSize()+ofe)+cfe(this.fontFamily())}_addTextLine(t){this.align()===Jc&&(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 Xb().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!==Hl&&o!==void 0,l=s!==Hl&&s!==void 0,u=this.padding(),c=o-u*2,d=s-u*2,f=0,h=this.wrap(),p=h!==f6,m=h!==lfe&&p,S=this.ellipsis();this.textArr=[],Xb().font=this._getContextFont();for(var v=S?this._getTextWidth(Kb):0,y=0,g=t.length;yc)for(;b.length>0;){for(var w=0,x=b.length,T="",P=0;w>>1,A=b.slice(0,E+1),$=this._getTextWidth(A)+v;$<=c?(w=E+1,T=A,P=$):x=E}if(T){if(m){var I,C=b[T.length],R=C===$p||C===c6;R&&P<=c?I=T.length:I=Math.max(T.lastIndexOf($p),T.lastIndexOf(c6))+1,I>0&&(w=I,T=T.slice(0,w),P=this._getTextWidth(T))}T=T.trimRight(),this._addTextLine(T),r=Math.max(r,P),f+=i;var M=this._shouldHandleEllipsis(f);if(M){this._tryToAddEllipsisToLastLine();break}if(b=b.slice(w),b=b.trimLeft(),b.length>0&&(_=this._getTextWidth(b),_<=c)){this._addTextLine(b),f+=i,r=Math.max(r,_);break}}else break}else this._addTextLine(b),f+=i,r=Math.max(r,_),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!==Hl&&i!==void 0,s=this.padding(),a=i-s*2,l=this.wrap(),u=l!==f6;return!u||o&&t+r>a}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==Hl&&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+Kb)n?null:ed.Path.getPointAtLengthOfDataArray(t,this.dataArray)}_readDataAttribute(){this.dataArray=ed.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+`.${NN}`).join(" "),g6="nodesRect",_fe=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],wfe={"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 xfe="ontouchstart"in si.Konva._global;function Cfe(e,t){if(e==="rotater")return"crosshair";t+=Je.Util.degToRad(wfe[e]||0);var n=(Je.Util.radToDeg(t)%360+360)%360;return Je.Util._inRange(n,315+22.5,360)||Je.Util._inRange(n,0,22.5)?"ns-resize":Je.Util._inRange(n,45-22.5,45+22.5)?"nesw-resize":Je.Util._inRange(n,90-22.5,90+22.5)?"ew-resize":Je.Util._inRange(n,135-22.5,135+22.5)?"nwse-resize":Je.Util._inRange(n,180-22.5,180+22.5)?"ns-resize":Je.Util._inRange(n,225-22.5,225+22.5)?"nesw-resize":Je.Util._inRange(n,270-22.5,270+22.5)?"ew-resize":Je.Util._inRange(n,315-22.5,315+22.5)?"nwse-resize":(Je.Util.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var Qm=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],m6=1e8;function Tfe(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 DN(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 Efe(e,t){const n=Tfe(e);return DN(e,t,n)}function Pfe(e,t,n){let r=t;for(let i=0;ii.isAncestorOf(this)?(Je.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(_fe.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(g6),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(g6,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=(si.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 DN(c,-si.Konva.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-m6,y:-m6,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 Je.Transform;r.rotate(-si.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:si.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(),Qm.forEach((function(t){this._createAnchor(t)}).bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new vfe.Rect({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:xfe?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=si.Konva.getAngle(this.rotation()),o=Cfe(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 yfe.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()*Je.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 I=Math.atan2(-r,n)+Math.PI/2;d.height<0&&(I-=Math.PI);var f=si.Konva.getAngle(this.rotation());const C=f+I,R=si.Konva.getAngle(this.rotationSnapTolerance()),N=Pfe(this.rotationSnaps(),C,R)-d.rotation,O=Efe(d,N);this._fitNodesInto(O,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 S=this.findOne(".top-left").x()>m.x?-1:1,v=this.findOne(".top-left").y()>m.y?-1:1;n=i*this.cos*S,r=i*this.sin*v,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 S=this.findOne(".top-right").x()m.y?-1:1;n=i*this.cos*S,r=i*this.sin*v,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 S=m.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(Je.Util._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(Je.Util._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var s=new Je.Transform;if(s.rotate(si.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:Je.Util.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const a=1e7,l=new Je.Transform;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/a,r.height/a);const u=new Je.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 Je.Transform;m.multiply(h.copy().invert()).multiply(c).multiply(h).multiply(p);const S=m.decompose();d.setAttrs(S),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(Je.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(Je.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()*Je.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=""),p6.Group.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return h6.Node.prototype.toObject.call(this)}clone(t){var n=h6.Node.prototype.clone.call(this,t);return n}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}Cv.Transformer=ze;function Afe(e){return e instanceof Array||Je.Util.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){Qm.indexOf(t)===-1&&Je.Util.warn("Unknown anchor name: "+t+". Available names are: "+Qm.join(", "))}),e||[]}ze.prototype.className="Transformer";(0,bfe._registerNode)(ze);Ze.Factory.addGetterSetter(ze,"enabledAnchors",Qm,Afe);Ze.Factory.addGetterSetter(ze,"flipEnabled",!0,(0,la.getBooleanValidator)());Ze.Factory.addGetterSetter(ze,"resizeEnabled",!0);Ze.Factory.addGetterSetter(ze,"anchorSize",10,(0,la.getNumberValidator)());Ze.Factory.addGetterSetter(ze,"rotateEnabled",!0);Ze.Factory.addGetterSetter(ze,"rotationSnaps",[]);Ze.Factory.addGetterSetter(ze,"rotateAnchorOffset",50,(0,la.getNumberValidator)());Ze.Factory.addGetterSetter(ze,"rotationSnapTolerance",5,(0,la.getNumberValidator)());Ze.Factory.addGetterSetter(ze,"borderEnabled",!0);Ze.Factory.addGetterSetter(ze,"anchorStroke","rgb(0, 161, 255)");Ze.Factory.addGetterSetter(ze,"anchorStrokeWidth",1,(0,la.getNumberValidator)());Ze.Factory.addGetterSetter(ze,"anchorFill","white");Ze.Factory.addGetterSetter(ze,"anchorCornerRadius",0,(0,la.getNumberValidator)());Ze.Factory.addGetterSetter(ze,"borderStroke","rgb(0, 161, 255)");Ze.Factory.addGetterSetter(ze,"borderStrokeWidth",1,(0,la.getNumberValidator)());Ze.Factory.addGetterSetter(ze,"borderDash");Ze.Factory.addGetterSetter(ze,"keepRatio",!0);Ze.Factory.addGetterSetter(ze,"shiftBehavior","default");Ze.Factory.addGetterSetter(ze,"centeredScaling",!1);Ze.Factory.addGetterSetter(ze,"ignoreStroke",!1);Ze.Factory.addGetterSetter(ze,"padding",0,(0,la.getNumberValidator)());Ze.Factory.addGetterSetter(ze,"node");Ze.Factory.addGetterSetter(ze,"nodes");Ze.Factory.addGetterSetter(ze,"boundBoxFunc");Ze.Factory.addGetterSetter(ze,"anchorDragBoundFunc");Ze.Factory.addGetterSetter(ze,"anchorStyleFunc");Ze.Factory.addGetterSetter(ze,"shouldOverdrawWholeArea",!1);Ze.Factory.addGetterSetter(ze,"useSingleNodeRotation",!0);Ze.Factory.backCompat(ze,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});var Tv={};Object.defineProperty(Tv,"__esModule",{value:!0});Tv.Wedge=void 0;const Ev=Te,kfe=sn,Rfe=Pe,LN=de,Ofe=Pe;class Qo extends kfe.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,Rfe.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)}}Tv.Wedge=Qo;Qo.prototype.className="Wedge";Qo.prototype._centroid=!0;Qo.prototype._attrsAffectingSize=["radius"];(0,Ofe._registerNode)(Qo);Ev.Factory.addGetterSetter(Qo,"radius",0,(0,LN.getNumberValidator)());Ev.Factory.addGetterSetter(Qo,"angle",0,(0,LN.getNumberValidator)());Ev.Factory.addGetterSetter(Qo,"clockwise",!1);Ev.Factory.backCompat(Qo,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0});Pv.Blur=void 0;const y6=Te,Mfe=wt,Ife=de;function v6(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var Nfe=[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],Dfe=[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 Lfe(e,t){var n=e.data,r=e.width,i=e.height,o,s,a,l,u,c,d,f,h,p,m,S,v,y,g,b,_,w,x,T,P,E,A,$,I=t+t+1,C=r-1,R=i-1,M=t+1,N=M*(M+1)/2,O=new v6,D=null,L=O,j=null,U=null,G=Nfe[t],W=Dfe[t];for(a=1;a>W,A!==0?(A=255/A,n[c]=(f*G>>W)*A,n[c+1]=(h*G>>W)*A,n[c+2]=(p*G>>W)*A):n[c]=n[c+1]=n[c+2]=0,f-=S,h-=v,p-=y,m-=g,S-=j.r,v-=j.g,y-=j.b,g-=j.a,l=d+((l=o+t+1)>W,A>0?(A=255/A,n[l]=(f*G>>W)*A,n[l+1]=(h*G>>W)*A,n[l+2]=(p*G>>W)*A):n[l]=n[l+1]=n[l+2]=0,f-=S,h-=v,p-=y,m-=g,S-=j.r,v-=j.g,y-=j.b,g-=j.a,l=o+((l=s+M)0&&Lfe(t,n)};Pv.Blur=$fe;y6.Factory.addGetterSetter(Mfe.Node,"blurRadius",0,(0,Ife.getNumberValidator)(),y6.Factory.afterSetFilter);var Av={};Object.defineProperty(Av,"__esModule",{value:!0});Av.Brighten=void 0;const b6=Te,Ffe=wt,Bfe=de,jfe=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};kv.Contrast=Ufe;S6.Factory.addGetterSetter(Vfe.Node,"contrast",0,(0,zfe.getNumberValidator)(),S6.Factory.afterSetFilter);var Rv={};Object.defineProperty(Rv,"__esModule",{value:!0});Rv.Emboss=void 0;const Ws=Te,Ov=wt,Gfe=Ot,$N=de,Hfe=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:Gfe.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 S=f+(m-1)*4,v=s;m+v<1&&(v=0),m+v>l&&(v=0);var y=p+(m-1+v)*4,g=a[S]-a[y],b=a[S+1]-a[y+1],_=a[S+2]-a[y+2],w=g,x=w>0?w:-w,T=b>0?b:-b,P=_>0?_:-_;if(T>x&&(w=b),P>x&&(w=_),w*=t,i){var E=a[S]+w,A=a[S+1]+w,$=a[S+2]+w;a[S]=E>255?255:E<0?0:E,a[S+1]=A>255?255:A<0?0:A,a[S+2]=$>255?255:$<0?0:$}else{var I=n-w;I<0?I=0:I>255&&(I=255),a[S]=a[S+1]=a[S+2]=I}}while(--m)}while(--d)};Rv.Emboss=Hfe;Ws.Factory.addGetterSetter(Ov.Node,"embossStrength",.5,(0,$N.getNumberValidator)(),Ws.Factory.afterSetFilter);Ws.Factory.addGetterSetter(Ov.Node,"embossWhiteLevel",.5,(0,$N.getNumberValidator)(),Ws.Factory.afterSetFilter);Ws.Factory.addGetterSetter(Ov.Node,"embossDirection","top-left",null,Ws.Factory.afterSetFilter);Ws.Factory.addGetterSetter(Ov.Node,"embossBlend",!1,null,Ws.Factory.afterSetFilter);var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0});Mv.Enhance=void 0;const _6=Te,qfe=wt,Wfe=de;function Zb(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 Kfe=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,S,v,y,g,b,_,w;for(h>0?(m=i+h*(255-i),S=r-h*(r-0),y=a+h*(255-a),g=s-h*(s-0),_=c+h*(255-c),w=u-h*(u-0)):(p=(i+r)*.5,m=i+h*(i-p),S=r+h*(r-p),v=(a+s)*.5,y=a+h*(a-v),g=s+h*(s-v),b=(c+u)*.5,_=c+h*(c-b),w=u+h*(u-b)),f=0;fv?S:v;var y=s,g=o,b,_,w=360/g*Math.PI/180,x,T;for(_=0;_g?y:g;var b=s,_=o,w,x,T=n.polarRotation||0,P,E;for(c=0;ct&&(b=g,_=0,w=-1),i=0;i=0&&h=0&&p=0&&h=0&&p=255*4?255:0}return s}function uhe(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+=b[s+0],l+=b[s+1],u+=b[s+2],c+=b[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,b[s+0]=a,b[s+1]=l,b[s+2]=u,b[s+3]=c)}};jv.Pixelate=yhe;T6.Factory.addGetterSetter(ghe.Node,"pixelSize",8,(0,mhe.getNumberValidator)(),T6.Factory.afterSetFilter);var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0});Vv.Posterize=void 0;const E6=Te,vhe=wt,bhe=de,She=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)});Jm.Factory.addGetterSetter(NC.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});Jm.Factory.addGetterSetter(NC.Node,"blue",0,_he.RGBComponent,Jm.Factory.afterSetFilter);var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0});Uv.RGBA=void 0;const Bf=Te,Gv=wt,xhe=de,Che=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)});Bf.Factory.addGetterSetter(Gv.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});Bf.Factory.addGetterSetter(Gv.Node,"blue",0,xhe.RGBComponent,Bf.Factory.afterSetFilter);Bf.Factory.addGetterSetter(Gv.Node,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0});Hv.Sepia=void 0;const The=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)};qv.Solarize=Ehe;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0});Wv.Threshold=void 0;const P6=Te,Phe=wt,Ahe=de,khe=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 nd.Stage({container:o,width:r,height:i}),a=new nd.Layer,l=new nd.Layer;return a.add(new nd.Rect({...t,fill:n?"black":"white"})),e.forEach(u=>l.add(new nd.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},gpe=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}),R6=async(e,t)=>{const n=e.toDataURL(t);return await gpe(n,t.width,t.height)},mpe=async(e,t,n,r,i)=>{const o=fe("canvas"),s=tv(),a=Ple();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 Km(u,d),h=await R6(u,d),p=await ppe(r?e.objects.filter(IO):[],l,i),m=await Km(p,l),S=await R6(p,l);return{baseBlob:f,baseImageData:h,maskBlob:m,maskImageData:S}},ype=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}=ype(e.data),i=vpe(t.data);return n?r?"txt2img":"outpaint":i?"inpaint":"img2img"},Spe=e=>oO(e,n=>n.isEnabled&&(!!n.processedControlImage||n.processorType==="none"&&!!n.controlImage)),Kv=(e,t,n)=>{const{isEnabled:r,controlNets:i}=e.controlNet,o=Spe(i),s=t.nodes[Ke];if(r&&o.length&&o.length){const a={id:Op,type:"collect",is_intermediate:!0};t.nodes[Op]=a,t.edges.push({source:{node_id:Op,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:S,processorType:v,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:S,control_weight:y};if(d&&v!=="none")g.image={image_name:d};else if(c)g.image={image_name:c};else return;if(t.nodes[g.id]=g,s){const b=_0(g,["id","type"]);s.controlnets.push(b)}t.edges.push({source:{node_id:g.id,field:"control"},destination:{node_id:Op,field:"item"}})})}},xc=(e,t)=>{const{positivePrompt:n,iterations:r,seed:i,shouldRandomizeSeed:o}=e.generation,{combinatorial:s,isEnabled:a,maxPrompts:l}=e.dynamicPrompts,u=t.nodes[Ke];if(a){rY(t.nodes[Be],"prompt");const c={id:zb,type:"dynamic_prompt",is_intermediate:!0,max_prompts:s?l:r,combinatorial:s,prompt:n},d={id:lr,type:"iterate",is_intermediate:!0};if(t.nodes[zb]=c,t.nodes[lr]=d,t.edges.push({source:{node_id:zb,field:"prompt_collection"},destination:{node_id:lr,field:"collection"}},{source:{node_id:lr,field:"item"},destination:{node_id:Be,field:"prompt"}}),u&&t.edges.push({source:{node_id:lr,field:"item"},destination:{node_id:Ke,field:"positive_prompt"}}),o){const f={id:Fi,type:"rand_int",is_intermediate:!0};t.nodes[Fi]=f,t.edges.push({source:{node_id:Fi,field:"a"},destination:{node_id:$e,field:"seed"}}),u&&t.edges.push({source:{node_id:Fi,field:"a"},destination:{node_id:Ke,field:"seed"}})}else t.nodes[$e].seed=i,u&&(u.seed=i)}else{u&&(u.positive_prompt=n);const c={id:Co,type:"range_of_size",is_intermediate:!0,size:r,step:1},d={id:lr,type:"iterate",is_intermediate:!0};if(t.nodes[lr]=d,t.nodes[Co]=c,t.edges.push({source:{node_id:Co,field:"collection"},destination:{node_id:lr,field:"collection"}}),t.edges.push({source:{node_id:lr,field:"item"},destination:{node_id:$e,field:"seed"}}),u&&t.edges.push({source:{node_id:lr,field:"item"},destination:{node_id:Ke,field:"seed"}}),o){const f={id:Fi,type:"rand_int",is_intermediate:!0};t.nodes[Fi]=f,t.edges.push({source:{node_id:Fi,field:"a"},destination:{node_id:Co,field:"start"}})}else c.start=i}},Ih=(e,t,n)=>{const{loras:r}=e.lora,i=hO(r),o=t.nodes[Ke];i>0&&(t.edges=t.edges.filter(l=>!(l.source.node_id===pt&&["unet"].includes(l.source.field))),t.edges=t.edges.filter(l=>!(l.source.node_id===it&&["clip"].includes(l.source.field))));let s="",a=0;Qa(r,l=>{const{model_name:u,base_model:c,weight:d}=l,f=`${uce}_${u.replace(".","_")}`,h={type:"lora_loader",id:f,is_intermediate:!0,lora:{model_name:u,base_model:c},weight:d};o&&o.loras.push({lora:{model_name:u,base_model:c},weight:d}),t.nodes[f]=h,a===0?(t.edges.push({source:{node_id:pt,field:"unet"},destination:{node_id:f,field:"unet"}}),t.edges.push({source:{node_id:it,field:"clip"},destination:{node_id:f,field:"clip"}})):(t.edges.push({source:{node_id:s,field:"unet"},destination:{node_id:f,field:"unet"}}),t.edges.push({source:{node_id:s,field:"clip"},destination:{node_id:f,field:"clip"}})),a===i-1&&(t.edges.push({source:{node_id:f,field:"unet"},destination:{node_id:n,field:"unet"}}),t.edges.push({source:{node_id:f,field:"clip"},destination:{node_id:Be,field:"clip"}}),t.edges.push({source:{node_id:f,field:"clip"},destination:{node_id:qe,field:"clip"}})),s=f,a+=1})},jN=Jn(e=>e.ui,e=>AO[e.activeTab],{memoizeOptions:{equalityCheck:S0}}),a4e=Jn(e=>e.ui,e=>e.activeTab,{memoizeOptions:{equalityCheck:S0}}),l4e=Jn(e=>e.ui,e=>e,{memoizeOptions:{equalityCheck:S0}}),xl=(e,t,n=We)=>{const i=jN(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Ke];if(!o)return;o.is_intermediate=!0;const a={id:fu,type:"img_nsfw",is_intermediate:i};t.nodes[fu]=a,t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:fu,field:"image"}}),s&&t.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:fu,field:"metadata"}})},Nh=(e,t)=>{const{vae:n}=e.generation,r=!n,i=t.nodes[Ke];r||(t.nodes[Zc]={type:"vae_loader",id:Zc,is_intermediate:!0,vae_model:n}),(t.id===bC||t.id===Xm)&&t.edges.push({source:{node_id:r?pt:Zc,field:"vae"},destination:{node_id:We,field:"vae"}}),t.id===Xm&&t.edges.push({source:{node_id:r?pt:Zc,field:"vae"},destination:{node_id:bt,field:"vae"}}),t.id===iN&&t.edges.push({source:{node_id:r?pt:Zc,field:"vae"},destination:{node_id:Ii,field:"vae"}}),n&&i&&(i.vae=n)},Cl=(e,t,n=We)=>{const i=jN(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[fu],a=t.nodes[Ke];if(!o)return;const l={id:Qc,type:"img_watermark",is_intermediate:i};t.nodes[Qc]=l,o.is_intermediate=!0,s?(s.is_intermediate=!0,t.edges.push({source:{node_id:fu,field:"image"},destination:{node_id:Qc,field:"image"}})):t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Qc,field:"image"}}),a&&t.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:Qc,field:"metadata"}})},_pe=(e,t)=>{const n=fe("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,img2imgStrength:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f}=e.generation,{width:h,height:p}=e.canvas.boundingBoxDimensions,{shouldAutoSave:m}=e.canvas;if(!o)throw n.error("No model found in state"),new Error("No model found in state");const S=f?d:Wo.shouldUseCpuNoise,v={id:Xm,nodes:{[Be]:{type:"compel",id:Be,is_intermediate:!0,prompt:r},[qe]:{type:"compel",id:qe,is_intermediate:!0,prompt:i},[$e]:{type:"noise",id:$e,is_intermediate:!0,use_cpu:S},[pt]:{type:"main_model_loader",id:pt,is_intermediate:!0,model:o},[it]:{type:"clip_skip",id:it,is_intermediate:!0,skipped_layers:c},[Kt]:{type:"l2l",id:Kt,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,strength:u},[bt]:{type:"i2l",id:bt,is_intermediate:!0},[We]:{type:"l2i",id:We,is_intermediate:!m}},edges:[{source:{node_id:pt,field:"clip"},destination:{node_id:it,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:qe,field:"clip"}},{source:{node_id:Kt,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:bt,field:"latents"},destination:{node_id:Kt,field:"latents"}},{source:{node_id:$e,field:"noise"},destination:{node_id:Kt,field:"noise"}},{source:{node_id:pt,field:"unet"},destination:{node_id:Kt,field:"unet"}},{source:{node_id:qe,field:"conditioning"},destination:{node_id:Kt,field:"negative_conditioning"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Kt,field:"positive_conditioning"}}]};if(t.width!==h||t.height!==p){const y={id:Qn,type:"img_resize",image:{image_name:t.image_name},is_intermediate:!0,width:h,height:p};v.nodes[Qn]=y,v.edges.push({source:{node_id:Qn,field:"image"},destination:{node_id:bt,field:"image"}}),v.edges.push({source:{node_id:Qn,field:"width"},destination:{node_id:$e,field:"width"}}),v.edges.push({source:{node_id:Qn,field:"height"},destination:{node_id:$e,field:"height"}})}else v.nodes[bt].image={image_name:t.image_name},v.edges.push({source:{node_id:bt,field:"width"},destination:{node_id:$e,field:"width"}}),v.edges.push({source:{node_id:bt,field:"height"},destination:{node_id:$e,field:"height"}});return v.nodes[Ke]={id:Ke,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,height:p,width:h,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:S?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:c,strength:u,init_image:t.image_name},v.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:We,field:"metadata"}}),Ih(e,v,Kt),Nh(e,v),xc(e,v),Kv(e,v,Kt),e.system.shouldUseNSFWChecker&&xl(e,v),e.system.shouldUseWatermarker&&Cl(e,v),v},wpe=(e,t,n)=>{const r=fe("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,shouldFitToWidthHeight:d,iterations:f,seed:h,shouldRandomizeSeed:p,seamSize:m,seamBlur:S,seamSteps:v,seamStrength:y,tileSize:g,infillMethod:b,clipSkip:_}=e.generation;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:w,height:x}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:T,boundingBoxScaleMethod:P,shouldAutoSave:E}=e.canvas,A={id:iN,nodes:{[Ii]:{is_intermediate:!E,type:"inpaint",id:Ii,steps:u,width:w,height:x,cfg_scale:a,scheduler:l,image:{image_name:t.image_name},strength:c,fit:d,mask:{image_name:n.image_name},seam_size:m,seam_blur:S,seam_strength:y,seam_steps:v,tile_size:b==="tile"?g:void 0,infill_method:b,inpaint_width:P!=="none"?T.width:void 0,inpaint_height:P!=="none"?T.height:void 0},[Be]:{type:"compel",id:Be,is_intermediate:!0,prompt:i},[qe]:{type:"compel",id:qe,is_intermediate:!0,prompt:o},[pt]:{type:"main_model_loader",id:pt,is_intermediate:!0,model:s},[it]:{type:"clip_skip",id:it,is_intermediate:!0,skipped_layers:_},[Co]:{type:"range_of_size",id:Co,is_intermediate:!0,size:f,step:1},[lr]:{type:"iterate",id:lr,is_intermediate:!0}},edges:[{source:{node_id:pt,field:"unet"},destination:{node_id:Ii,field:"unet"}},{source:{node_id:pt,field:"clip"},destination:{node_id:it,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:qe,field:"clip"}},{source:{node_id:qe,field:"conditioning"},destination:{node_id:Ii,field:"negative_conditioning"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Ii,field:"positive_conditioning"}},{source:{node_id:Co,field:"collection"},destination:{node_id:lr,field:"collection"}},{source:{node_id:lr,field:"item"},destination:{node_id:Ii,field:"seed"}}]};if(Ih(e,A,Ii),Nh(e,A),p){const $={id:Fi,type:"rand_int"};A.nodes[Fi]=$,A.edges.push({source:{node_id:Fi,field:"a"},destination:{node_id:Co,field:"start"}})}else A.nodes[Co].start=h;return e.system.shouldUseNSFWChecker&&xl(e,A,Ii),e.system.shouldUseWatermarker&&Cl(e,A,Ii),A},xpe=e=>{const t=fe("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,clipSkip:l,shouldUseCpuNoise:u,shouldUseNoiseSettings:c}=e.generation,{width:d,height:f}=e.canvas.boundingBoxDimensions,{shouldAutoSave:h}=e.canvas;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const p=c?u:Wo.shouldUseCpuNoise,m={id:bC,nodes:{[Be]:{type:"compel",id:Be,is_intermediate:!0,prompt:n},[qe]:{type:"compel",id:qe,is_intermediate:!0,prompt:r},[$e]:{type:"noise",id:$e,is_intermediate:!0,width:d,height:f,use_cpu:p},[dn]:{type:"t2l",id:dn,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a},[pt]:{type:"main_model_loader",id:pt,is_intermediate:!0,model:i},[it]:{type:"clip_skip",id:it,is_intermediate:!0,skipped_layers:l},[We]:{type:"l2i",id:We,is_intermediate:!h}},edges:[{source:{node_id:qe,field:"conditioning"},destination:{node_id:dn,field:"negative_conditioning"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:dn,field:"positive_conditioning"}},{source:{node_id:pt,field:"clip"},destination:{node_id:it,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:qe,field:"clip"}},{source:{node_id:pt,field:"unet"},destination:{node_id:dn,field:"unet"}},{source:{node_id:dn,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:$e,field:"noise"},destination:{node_id:dn,field:"noise"}}]};return m.nodes[Ke]={id:Ke,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,height:f,width:d,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:p?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:l},m.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:We,field:"metadata"}}),Ih(e,m,dn),Nh(e,m),xc(e,m),Kv(e,m,dn),e.system.shouldUseNSFWChecker&&xl(e,m),e.system.shouldUseWatermarker&&Cl(e,m),m},Cpe=(e,t,n,r)=>{let i;if(t==="txt2img")i=xpe(e);else if(t==="img2img"){if(!n)throw new Error("Missing canvas init image");i=_pe(e,n)}else{if(!n||!r)throw new Error("Missing canvas init and mask images");i=wpe(e,n,r)}return i},Tpe=()=>{le({predicate:e=>Ph.match(e)&&e.payload==="unifiedCanvas",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=fe("session"),o=t(),{layerState:s,boundingBoxCoordinates:a,boundingBoxDimensions:l,isMaskEnabled:u,shouldPreserveMaskedArea:c}=o.canvas,d=await mpe(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,S=bpe(h,m);if(o.system.enableImageDebugging){const x=await XE(f),T=await XE(p);gce([{base64:T,caption:"mask b64"},{base64:x,caption:"image b64"}])}i.debug(`Generation mode: ${S}`);let v,y;["img2img","inpaint","outpaint"].includes(S)&&(v=await n(he.endpoints.uploadImage.initiate({file:new File([f],"canvasInitImage.png",{type:"image/png"}),image_category:"general",is_intermediate:!0})).unwrap()),["inpaint","outpaint"].includes(S)&&(y=await n(he.endpoints.uploadImage.initiate({file:new File([p],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!0})).unwrap());const g=Cpe(o,S,v,y);i.debug({graph:ra(g)},"Canvas graph built"),n(KI(g));const{requestId:b}=n(Rn({graph:g})),[_]=await r(x=>Rn.fulfilled.match(x)&&x.meta.requestId===b),w=_.payload.id;["img2img","inpaint"].includes(S)&&v&&n(he.endpoints.changeImageSessionId.initiate({imageDTO:v,session_id:w})),["inpaint"].includes(S)&&y&&n(he.endpoints.changeImageSessionId.initiate({imageDTO:y,session_id:w})),o.canvas.layerState.stagingArea.boundingBox||n(jQ({sessionId:w,boundingBox:{...o.canvas.boundingBoxCoordinates,...o.canvas.boundingBoxDimensions}})),n(VQ(w)),n(pl())}})},Epe=e=>{const t=fe("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:S}=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 v=m?p:Wo.shouldUseCpuNoise,y={id:Xm,nodes:{[pt]:{type:"main_model_loader",id:pt,model:i},[it]:{type:"clip_skip",id:it,skipped_layers:h},[Be]:{type:"compel",id:Be,prompt:n},[qe]:{type:"compel",id:qe,prompt:r},[$e]:{type:"noise",id:$e,use_cpu:v},[We]:{type:"l2i",id:We,fp32:S==="fp32"},[Kt]:{type:"l2l",id:Kt,cfg_scale:o,scheduler:s,steps:a,strength:u},[bt]:{type:"i2l",id:bt,fp32:S==="fp32"}},edges:[{source:{node_id:pt,field:"unet"},destination:{node_id:Kt,field:"unet"}},{source:{node_id:pt,field:"clip"},destination:{node_id:it,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:qe,field:"clip"}},{source:{node_id:Kt,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:bt,field:"latents"},destination:{node_id:Kt,field:"latents"}},{source:{node_id:$e,field:"noise"},destination:{node_id:Kt,field:"noise"}},{source:{node_id:qe,field:"conditioning"},destination:{node_id:Kt,field:"negative_conditioning"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Kt,field:"positive_conditioning"}}]};if(c&&(l.width!==d||l.height!==f)){const g={id:Qn,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:d,height:f};y.nodes[Qn]=g,y.edges.push({source:{node_id:Qn,field:"image"},destination:{node_id:bt,field:"image"}}),y.edges.push({source:{node_id:Qn,field:"width"},destination:{node_id:$e,field:"width"}}),y.edges.push({source:{node_id:Qn,field:"height"},destination:{node_id:$e,field:"height"}})}else y.nodes[bt].image={image_name:l.imageName},y.edges.push({source:{node_id:bt,field:"width"},destination:{node_id:$e,field:"width"}}),y.edges.push({source:{node_id:bt,field:"height"},destination:{node_id:$e,field:"height"}});return y.nodes[Ke]={id:Ke,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},y.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:We,field:"metadata"}}),Ih(e,y,Kt),Nh(e,y),xc(e,y),Kv(e,y,Kt),e.system.shouldUseNSFWChecker&&xl(e,y),e.system.shouldUseWatermarker&&Cl(e,y),y},VN=(e,t,n)=>{const{positivePrompt:r,negativePrompt:i}=e.generation,{refinerModel:o,refinerAestheticScore:s,positiveStylePrompt:a,negativeStylePrompt:l,refinerSteps:u,refinerScheduler:c,refinerCFGScale:d,refinerStart:f}=e.sdxl;if(!o)return;const h=t.nodes[Ke];h&&(h.refiner_model=o,h.refiner_aesthetic_store=s,h.refiner_cfg_scale=d,h.refiner_scheduler=c,h.refiner_start=f,h.refiner_steps=u),t.edges=t.edges.filter(p=>!(p.source.node_id===n&&["latents"].includes(p.source.field))),t.edges=t.edges.filter(p=>!(p.source.node_id===en&&["vae"].includes(p.source.field))),n===Ni&&t.edges.push({source:{node_id:en,field:"vae"},destination:{node_id:bt,field:"vae"}}),t.nodes[zl]={type:"sdxl_refiner_model_loader",id:zl,model:o},t.nodes[Mp]={type:"sdxl_refiner_compel_prompt",id:Mp,style:`${r} ${a}`,aesthetic_score:s},t.nodes[Ip]={type:"sdxl_refiner_compel_prompt",id:Ip,style:`${i} ${l}`,aesthetic_score:s},t.nodes[ma]={type:"l2l_sdxl",id:ma,cfg_scale:d,steps:u/(1-Math.min(f,.99)),scheduler:c,denoising_start:f,denoising_end:1},t.edges.push({source:{node_id:zl,field:"unet"},destination:{node_id:ma,field:"unet"}},{source:{node_id:zl,field:"vae"},destination:{node_id:We,field:"vae"}},{source:{node_id:zl,field:"clip2"},destination:{node_id:Mp,field:"clip2"}},{source:{node_id:zl,field:"clip2"},destination:{node_id:Ip,field:"clip2"}},{source:{node_id:Mp,field:"conditioning"},destination:{node_id:ma,field:"positive_conditioning"}},{source:{node_id:Ip,field:"conditioning"},destination:{node_id:ma,field:"negative_conditioning"}},{source:{node_id:n,field:"latents"},destination:{node_id:ma,field:"latents"}},{source:{node_id:ma,field:"latents"},destination:{node_id:We,field:"latents"}})},Ppe=e=>{const t=fe("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}=e.generation,{positiveStylePrompt:S,negativeStylePrompt:v,shouldConcatSDXLStylePrompt:y,shouldUseSDXLRefiner:g,refinerStart:b,sdxlImg2ImgDenoisingStrength:_}=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 w=p?h:Wo.shouldUseCpuNoise,x={id:dce,nodes:{[en]:{type:"sdxl_model_loader",id:en,model:i},[Be]:{type:"sdxl_compel_prompt",id:Be,prompt:n,style:y?`${n} ${S}`:S},[qe]:{type:"sdxl_compel_prompt",id:qe,prompt:r,style:y?`${r} ${v}`:v},[$e]:{type:"noise",id:$e,use_cpu:w},[We]:{type:"l2i",id:We,fp32:m==="fp32"},[Ni]:{type:"l2l_sdxl",id:Ni,cfg_scale:o,scheduler:s,steps:a,denoising_start:g?Math.min(b,1-_):1-_,denoising_end:g?b:1},[bt]:{type:"i2l",id:bt,fp32:m==="fp32"}},edges:[{source:{node_id:en,field:"unet"},destination:{node_id:Ni,field:"unet"}},{source:{node_id:en,field:"vae"},destination:{node_id:We,field:"vae"}},{source:{node_id:en,field:"vae"},destination:{node_id:bt,field:"vae"}},{source:{node_id:en,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:en,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:en,field:"clip"},destination:{node_id:qe,field:"clip"}},{source:{node_id:en,field:"clip2"},destination:{node_id:qe,field:"clip2"}},{source:{node_id:Ni,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:bt,field:"latents"},destination:{node_id:Ni,field:"latents"}},{source:{node_id:$e,field:"noise"},destination:{node_id:Ni,field:"noise"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Ni,field:"positive_conditioning"}},{source:{node_id:qe,field:"conditioning"},destination:{node_id:Ni,field:"negative_conditioning"}}]};if(u&&(l.width!==c||l.height!==d)){const T={id:Qn,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:c,height:d};x.nodes[Qn]=T,x.edges.push({source:{node_id:Qn,field:"image"},destination:{node_id:bt,field:"image"}}),x.edges.push({source:{node_id:Qn,field:"width"},destination:{node_id:$e,field:"width"}}),x.edges.push({source:{node_id:Qn,field:"height"},destination:{node_id:$e,field:"height"}})}else x.nodes[bt].image={image_name:l.imageName},x.edges.push({source:{node_id:bt,field:"width"},destination:{node_id:$e,field:"width"}}),x.edges.push({source:{node_id:bt,field:"height"},destination:{node_id:$e,field:"height"}});return x.nodes[Ke]={id:Ke,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:w?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:f,strength:_,init_image:l.imageName,positive_style_prompt:S,negative_style_prompt:v},x.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:We,field:"metadata"}}),g&&VN(e,x,Ni),xc(e,x),e.system.shouldUseNSFWChecker&&xl(e,x),e.system.shouldUseWatermarker&&Cl(e,x),x},Ape=()=>{le({predicate:e=>Ph.match(e)&&e.payload==="img2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=fe("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=Ppe(o):a=Epe(o),n(WI(a)),i.debug({graph:ra(a)},"Image to Image graph built"),n(Rn({graph:a})),await r(Rn.fulfilled.match),n(pl())}})};let jp;const kpe=new Uint8Array(16);function Rpe(){if(!jp&&(jp=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!jp))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return jp(kpe)}const Cn=[];for(let e=0;e<256;++e)Cn.push((e+256).toString(16).slice(1));function Ope(e,t=0){return(Cn[e[t+0]]+Cn[e[t+1]]+Cn[e[t+2]]+Cn[e[t+3]]+"-"+Cn[e[t+4]]+Cn[e[t+5]]+"-"+Cn[e[t+6]]+Cn[e[t+7]]+"-"+Cn[e[t+8]]+Cn[e[t+9]]+"-"+Cn[e[t+10]]+Cn[e[t+11]]+Cn[e[t+12]]+Cn[e[t+13]]+Cn[e[t+14]]+Cn[e[t+15]]).toLowerCase()}const Mpe=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),O6={randomUUID:Mpe};function Ipe(e,t,n){if(O6.randomUUID&&!t&&!e)return O6.randomUUID();e=e||{};const r=e.random||(e.rng||Rpe)();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 Ope(r)}const Npe=e=>{if(e.type==="color"&&e.value){const t=Ln(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},Dpe=e=>{const{nodes:t,edges:n}=e.nodes,i=t.filter(a=>a.type!=="progress_image").reduce((a,l)=>{const{id:u,data:c}=l,{type:d,inputs:f}=c,h=Lx(f,(m,S,v)=>{const y=Npe(S);return m[v]=y,m},{}),p={type:d,id:u,...h};return Object.assign(a,{[u]:p}),a},{}),o=n.reduce((a,l)=>{const{source:u,target:c,sourceHandle:d,targetHandle:f}=l;return a.push({source:{node_id:u,field:d},destination:{node_id:c,field:f}}),a},[]);return o.forEach(a=>{const l=i[a.destination.node_id],u=a.destination.field;i[a.destination.node_id]=_0(l,u)}),{id:Ipe(),nodes:i,edges:o}},Lpe=()=>{le({predicate:e=>Ph.match(e)&&e.payload==="nodes",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=fe("session"),o=t(),s=Dpe(o);n(XI(s)),i.debug({graph:ra(s)},"Nodes graph built"),n(Rn({graph:s})),await r(Rn.fulfilled.match),n(pl())}})},$pe=e=>{const t=fe("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}=e.generation,{positiveStylePrompt:p,negativeStylePrompt:m,shouldConcatSDXLStylePrompt:S,shouldUseSDXLRefiner:v,refinerStart:y}=e.sdxl,g=f?d:Wo.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const b={id:cce,nodes:{[en]:{type:"sdxl_model_loader",id:en,model:i},[Be]:{type:"sdxl_compel_prompt",id:Be,prompt:n,style:S?`${n} ${p}`:p},[qe]:{type:"sdxl_compel_prompt",id:qe,prompt:r,style:S?`${r} ${m}`:m},[$e]:{type:"noise",id:$e,width:l,height:u,use_cpu:g},[is]:{type:"t2l_sdxl",id:is,cfg_scale:o,scheduler:s,steps:a,denoising_end:v?y:1},[We]:{type:"l2i",id:We,fp32:h==="fp32"}},edges:[{source:{node_id:en,field:"unet"},destination:{node_id:is,field:"unet"}},{source:{node_id:en,field:"vae"},destination:{node_id:We,field:"vae"}},{source:{node_id:en,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:en,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:en,field:"clip"},destination:{node_id:qe,field:"clip"}},{source:{node_id:en,field:"clip2"},destination:{node_id:qe,field:"clip2"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:is,field:"positive_conditioning"}},{source:{node_id:qe,field:"conditioning"},destination:{node_id:is,field:"negative_conditioning"}},{source:{node_id:$e,field:"noise"},destination:{node_id:is,field:"noise"}},{source:{node_id:is,field:"latents"},destination:{node_id:We,field:"latents"}}]};return b.nodes[Ke]={id:Ke,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:g?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c,positive_style_prompt:p,negative_style_prompt:m},b.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:We,field:"metadata"}}),v&&VN(e,b,is),xc(e,b),e.system.shouldUseNSFWChecker&&xl(e,b),e.system.shouldUseWatermarker&&Cl(e,b),b},Fpe=e=>{const t=fe("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}=e.generation,p=f?d:Wo.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const m={id:bC,nodes:{[pt]:{type:"main_model_loader",id:pt,model:i},[it]:{type:"clip_skip",id:it,skipped_layers:c},[Be]:{type:"compel",id:Be,prompt:n},[qe]:{type:"compel",id:qe,prompt:r},[$e]:{type:"noise",id:$e,width:l,height:u,use_cpu:p},[dn]:{type:"t2l",id:dn,cfg_scale:o,scheduler:s,steps:a},[We]:{type:"l2i",id:We,fp32:h==="fp32"}},edges:[{source:{node_id:pt,field:"clip"},destination:{node_id:it,field:"clip"}},{source:{node_id:pt,field:"unet"},destination:{node_id:dn,field:"unet"}},{source:{node_id:it,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:it,field:"clip"},destination:{node_id:qe,field:"clip"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:dn,field:"positive_conditioning"}},{source:{node_id:qe,field:"conditioning"},destination:{node_id:dn,field:"negative_conditioning"}},{source:{node_id:dn,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:$e,field:"noise"},destination:{node_id:dn,field:"noise"}}]};return m.nodes[Ke]={id:Ke,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:p?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c},m.edges.push({source:{node_id:Ke,field:"metadata"},destination:{node_id:We,field:"metadata"}}),Ih(e,m,dn),Nh(e,m),xc(e,m),Kv(e,m,dn),e.system.shouldUseNSFWChecker&&xl(e,m),e.system.shouldUseWatermarker&&Cl(e,m),m},Bpe=()=>{le({predicate:e=>Ph.match(e)&&e.payload==="txt2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=fe("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=$pe(o):a=Fpe(o),n(qI(a)),i.debug({graph:ra(a)},"Text to Image graph built"),n(Rn({graph:a})),await r(Rn.fulfilled.match),n(pl())}})},zN=Wk(),le=zN.startListening;Yle();Qle();eue();zle();Ule();Gle();Hle();Sle();Xle();Tpe();Lpe();Bpe();Ape();que();Dle();Mle();Rle();Nle();sce();ple();Xue();Yue();Zue();Jue();tce();Wue();Kue();ice();oce();nce();rce();ece();jue();Vue();zue();Uue();Gue();Hue();$ue();Fue();Bue();Fle();$le();Ble();jle();Wle();Kle();_le();Oue();qle();tue();vle();rue();mle();gle();pce();lce();const jpe={canvas:zQ,gallery:lJ,generation:SQ,nodes:qse,postprocessing:Wse,system:Sae,config:oY,ui:wQ,hotkeys:Cae,controlNet:rJ,boards:aJ,dynamicPrompts:oJ,imageDeletion:fJ,lora:pJ,modelmanager:xae,sdxl:Yse,[Hs.reducerPath]:Hs.reducer},Vpe=pc(jpe),zpe=Xae(Vpe),Upe=["canvas","gallery","generation","sdxl","nodes","postprocessing","system","ui","controlNet","dynamicPrompts","lora","modelmanager"],Gpe=Pk({reducer:zpe,enhancers:e=>e.concat(Yae(window.localStorage,Upe,{persistDebounce:300,serialize:ale,unserialize:ule,prefix:Qae})).concat(Xk()),middleware:e=>e({immutableCheck:!1,serializableCheck:!1}).concat(Hs.middleware).concat(Aae).prepend(zN.middleware),devTools:{actionSanitizer:dle,stateSanitizer:hle,trace:!0,predicate:(e,t)=>!fle.includes(t.type)}}),u4e=e=>e;function Hpe(e){if(e.sheet)return e.sheet;for(var t=0;t0?Pn(Cc,--Sr):0,lc--,Xt===10&&(lc=1,Yv--),Xt}function Ar(){return Xt=Sr2||Vf(Xt)>3?"":" "}function ige(e,t){for(;--t&&Ar()&&!(Xt<48||Xt>102||Xt>57&&Xt<65||Xt>70&&Xt<97););return Dh(e,_g()+(t<6&&Zi()==32&&Ar()==32))}function T2(e){for(;Ar();)switch(Xt){case e:return Sr;case 34:case 39:e!==34&&e!==39&&T2(Xt);break;case 40:e===41&&T2(e);break;case 92:Ar();break}return Sr}function oge(e,t){for(;Ar()&&e+Xt!==47+10;)if(e+Xt===42+42&&Zi()===47)break;return"/*"+Dh(t,Sr-1)+"*"+Xv(e===47?e:Ar())}function sge(e){for(;!Vf(Zi());)Ar();return Dh(e,Sr)}function age(e){return KN(xg("",null,null,null,[""],e=WN(e),0,[0],e))}function xg(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,S=1,v=1,y=0,g="",b=i,_=o,w=r,x=g;S;)switch(p=y,y=Ar()){case 40:if(p!=108&&Pn(x,d-1)==58){C2(x+=He(wg(y),"&","&\f"),"&\f")!=-1&&(v=-1);break}case 34:case 39:case 91:x+=wg(y);break;case 9:case 10:case 13:case 32:x+=rge(p);break;case 92:x+=ige(_g()-1,7);continue;case 47:switch(Zi()){case 42:case 47:Vp(lge(oge(Ar(),_g()),t,n),l);break;default:x+="/"}break;case 123*m:a[u++]=Bi(x)*v;case 125*m:case 59:case 0:switch(y){case 0:case 125:S=0;case 59+c:v==-1&&(x=He(x,/\f/g,"")),h>0&&Bi(x)-d&&Vp(h>32?I6(x+";",r,n,d-1):I6(He(x," ","")+";",r,n,d-2),l);break;case 59:x+=";";default:if(Vp(w=M6(x,t,n,u,c,i,a,g,b=[],_=[],d),o),y===123)if(c===0)xg(x,t,w,w,b,o,d,a,_);else switch(f===99&&Pn(x,3)===110?100:f){case 100:case 108:case 109:case 115:xg(e,w,w,r&&Vp(M6(e,w,w,0,0,i,a,g,i,b=[],d),_),i,_,d,a,r?b:_);break;default:xg(x,w,w,w,[""],_,0,a,_)}}u=c=h=0,m=v=1,g=x="",d=s;break;case 58:d=1+Bi(x),h=p;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&nge()==125)continue}switch(x+=Xv(y),y*m){case 38:v=c>0?1:(x+="\f",-1);break;case 44:a[u++]=(Bi(x)-1)*v,v=1;break;case 64:Zi()===45&&(x+=wg(Ar())),f=Zi(),c=d=Bi(g=x+=sge(_g())),y++;break;case 45:p===45&&Bi(x)==2&&(m=0)}}return o}function M6(e,t,n,r,i,o,s,a,l,u,c){for(var d=i-1,f=i===0?o:[""],h=$C(f),p=0,m=0,S=0;p0?f[v]+" "+y:He(y,/&\f/g,f[v])))&&(l[S++]=g);return Qv(e,t,n,i===0?DC:a,l,u,c)}function lge(e,t,n){return Qv(e,t,n,UN,Xv(tge()),jf(e,2,-2),0)}function I6(e,t,n,r){return Qv(e,t,n,LC,jf(e,0,r),jf(e,r+1,-1),r)}function Lu(e,t){for(var n="",r=$C(e),i=0;i6)switch(Pn(e,t+1)){case 109:if(Pn(e,t+4)!==45)break;case 102:return He(e,/(.+:)(.+)-([^]+)/,"$1"+Ge+"$2-$3$1"+ey+(Pn(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~C2(e,"stretch")?YN(He(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Pn(e,t+1)!==115)break;case 6444:switch(Pn(e,Bi(e)-3-(~C2(e,"!important")&&10))){case 107:return He(e,":",":"+Ge)+e;case 101:return He(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Ge+(Pn(e,14)===45?"inline-":"")+"box$3$1"+Ge+"$2$3$1"+Dn+"$2box$3")+e}break;case 5936:switch(Pn(e,t+11)){case 114:return Ge+e+Dn+He(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Ge+e+Dn+He(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Ge+e+Dn+He(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Ge+e+Dn+e+e}return e}var yge=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case LC:t.return=YN(t.value,t.length);break;case GN:return Lu([rd(t,{value:He(t.value,"@","@"+Ge)})],i);case DC:if(t.length)return ege(t.props,function(o){switch(Jpe(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Lu([rd(t,{props:[He(o,/:(read-\w+)/,":"+ey+"$1")]})],i);case"::placeholder":return Lu([rd(t,{props:[He(o,/:(plac\w+)/,":"+Ge+"input-$1")]}),rd(t,{props:[He(o,/:(plac\w+)/,":"+ey+"$1")]}),rd(t,{props:[He(o,/:(plac\w+)/,Dn+"input-$1")]})],i)}return""})}},vge=[yge],bge=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 S=m.getAttribute("data-emotion");S.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||vge,o={},s,a=[];s=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var S=m.getAttribute("data-emotion").split(" "),v=1;v=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 xge={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},Cge=/[A-Z]|^ms/g,Tge=/_EMO_([^_]+?)_([^]*?)_EMO_/g,JN=function(t){return t.charCodeAt(1)===45},L6=function(t){return t!=null&&typeof t!="boolean"},Jb=XN(function(e){return JN(e)?e:e.replace(Cge,"-$&").toLowerCase()}),$6=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(Tge,function(r,i,o){return ji={name:i,styles:o,next:ji},i})}return xge[t]!==1&&!JN(t)&&typeof n=="number"&&n!==0?n+"px":n};function zf(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 ji={name:n.name,styles:n.styles,next:ji},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)ji={name:r.name,styles:r.styles,next:ji},r=r.next;var i=n.styles+";";return i}return Ege(e,t,n)}case"function":{if(e!==void 0){var o=ji,s=n(e);return ji=o,zf(e,t,s)}break}}if(t==null)return n;var a=t[n];return a!==void 0?a:n}function Ege(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i` or ``");return e}var iD=k.createContext({});iD.displayName="ColorModeContext";function BC(){const e=k.useContext(iD);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}function f4e(e,t){const{colorMode:n}=BC();return n==="dark"?t:e}function Nge(){const e=BC(),t=rD();return{...e,theme:t}}function Dge(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 Lge(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 h4e(e,t,n){const r=rD();return $ge(e,t,n)(r)}function $ge(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 Dge(o,l,(c=s[u])!=null?c:l);const f=`${e}.${l}`;return Lge(o,f,(d=s[u])!=null?d:l)});return Array.isArray(t)?a:a[0]}}var oD=(...e)=>e.filter(Boolean).join(" ");function Fge(){return!1}function Mo(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}var p4e=e=>{const{condition:t,message:n}=e;t&&Fge()&&console.warn(n)};function Na(e,...t){return Bge(e)?e(...t):e}var Bge=e=>typeof e=="function",g4e=e=>e?"":void 0,m4e=e=>e?!0:void 0;function y4e(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function v4e(...e){return function(n){e.forEach(r=>{r==null||r(n)})}}var ty={exports:{}};ty.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]",S="[object Number]",v="[object Null]",y="[object Object]",g="[object Proxy]",b="[object RegExp]",_="[object Set]",w="[object String]",x="[object Undefined]",T="[object WeakMap]",P="[object ArrayBuffer]",E="[object DataView]",A="[object Float32Array]",$="[object Float64Array]",I="[object Int8Array]",C="[object Int16Array]",R="[object Int32Array]",M="[object Uint8Array]",N="[object Uint8ClampedArray]",O="[object Uint16Array]",D="[object Uint32Array]",L=/[\\^$.*+?()[\]{}|]/g,j=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,G={};G[A]=G[$]=G[I]=G[C]=G[R]=G[M]=G[N]=G[O]=G[D]=!0,G[a]=G[l]=G[P]=G[c]=G[E]=G[d]=G[f]=G[h]=G[m]=G[S]=G[y]=G[b]=G[_]=G[w]=G[T]=!1;var W=typeof Ee=="object"&&Ee&&Ee.Object===Object&&Ee,X=typeof self=="object"&&self&&self.Object===Object&&self,Y=W||X||Function("return this")(),B=t&&!t.nodeType&&t,H=B&&!0&&e&&!e.nodeType&&e,Q=H&&H.exports===B,J=Q&&W.process,ne=function(){try{var F=H&&H.require&&H.require("util").types;return F||J&&J.binding&&J.binding("util")}catch{}}(),te=ne&&ne.isTypedArray;function xe(F,V,q){switch(q.length){case 0:return F.call(V);case 1:return F.call(V,q[0]);case 2:return F.call(V,q[0],q[1]);case 3:return F.call(V,q[0],q[1],q[2])}return F.apply(V,q)}function ve(F,V){for(var q=-1,ie=Array(F);++q-1}function fo(F,V){var q=this.__data__,ie=kl(q,F);return ie<0?(++this.size,q.push([F,V])):q[ie][1]=V,this}wn.prototype.clear=co,wn.prototype.delete=Zo,wn.prototype.get=Jo,wn.prototype.has=Al,wn.prototype.set=fo;function qn(F){var V=-1,q=F==null?0:F.length;for(this.clear();++V1?q[De-1]:void 0,mt=De>2?q[2]:void 0;for(rt=F.length>3&&typeof rt=="function"?(De--,rt):void 0,mt&&V$(q[0],q[1],mt)&&(rt=De<3?void 0:rt,De=1),V=Object(V);++ie-1&&F%1==0&&F0){if(++V>=i)return arguments[0]}else V=0;return F.apply(void 0,arguments)}}function X$(F){if(F!=null){try{return tt.call(F)}catch{}try{return F+""}catch{}}return""}function Kh(F,V){return F===V||F!==F&&V!==V}var P1=qh(function(){return arguments}())?qh:function(F){return Rc(F)&&Gt.call(F,"callee")&&!ri.call(F,"callee")},A1=Array.isArray;function k1(F){return F!=null&&k3(F.length)&&!R1(F)}function Y$(F){return Rc(F)&&k1(F)}var A3=ca||tF;function R1(F){if(!ha(F))return!1;var V=Ol(F);return V==h||V==p||V==u||V==g}function k3(F){return typeof F=="number"&&F>-1&&F%1==0&&F<=s}function ha(F){var V=typeof F;return F!=null&&(V=="object"||V=="function")}function Rc(F){return F!=null&&typeof F=="object"}function Q$(F){if(!Rc(F)||Ol(F)!=y)return!1;var V=wr(F);if(V===null)return!0;var q=Gt.call(V,"constructor")&&V.constructor;return typeof q=="function"&&q instanceof q&&tt.call(q)==Lr}var R3=te?ce(te):kc;function Z$(F){return L$(F,O3(F))}function O3(F){return k1(F)?_1(F,!0):A$(F)}var J$=$$(function(F,V,q,ie){T3(F,V,q,ie)});function eF(F){return function(){return F}}function M3(F){return F}function tF(){return!1}e.exports=J$})(ty,ty.exports);var jge=ty.exports;const Wi=al(jge);var Vge=e=>/!(important)?$/.test(e),j6=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,zge=(e,t)=>n=>{const r=String(t),i=Vge(r),o=j6(r),s=e?`${e}.${o}`:o;let a=Mo(n.__cssMap)&&s in n.__cssMap?n.__cssMap[s].varRef:t;return a=j6(a),i?`${a} !important`:a};function jC(e){const{scale:t,transform:n,compose:r}=e;return(o,s)=>{var a;const l=zge(t,o)(s);let u=(a=n==null?void 0:n(l,s))!=null?a:l;return r&&(u=r(u,s)),u}}var zp=(...e)=>t=>e.reduce((n,r)=>r(n),t);function jr(e,t){return n=>{const r={property:n,scale:e};return r.transform=jC({scale:e,transform:t}),r}}var Uge=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function Gge(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:Uge(t),transform:n?jC({scale:n,compose:r}):r}}var sD=["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 Hge(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...sD].join(" ")}function qge(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...sD].join(" ")}var Wge={"--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(" ")},Kge={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 Xge(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 Yge={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},E2={"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"},Qge=new Set(Object.values(E2)),P2=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),Zge=e=>e.trim();function Jge(e,t){if(e==null||P2.has(e))return e;if(!(A2(e)||P2.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(Zge).filter(Boolean);if((u==null?void 0:u.length)===0)return e;const c=l in E2?E2[l]:l;u.unshift(c);const d=u.map(f=>{if(Qge.has(f))return f;const h=f.indexOf(" "),[p,m]=h!==-1?[f.substr(0,h),f.substr(h+1)]:[f],S=A2(m)?m:m&&m.split(" "),v=`colors.${p}`,y=v in t.__cssMap?t.__cssMap[v].varRef:p;return S?[y,...Array.isArray(S)?S:[S]].join(" "):y});return`${a}(${d.join(", ")})`}var A2=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),eme=(e,t)=>Jge(e,t??{});function tme(e){return/^var\(--.+\)$/.test(e)}var nme=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},Mi=e=>t=>`${e}(${t})`,je={filter(e){return e!=="auto"?e:Wge},backdropFilter(e){return e!=="auto"?e:Kge},ring(e){return Xge(je.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?Hge():e==="auto-gpu"?qge():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=nme(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(tme(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:eme,blur:Mi("blur"),opacity:Mi("opacity"),brightness:Mi("brightness"),contrast:Mi("contrast"),dropShadow:Mi("drop-shadow"),grayscale:Mi("grayscale"),hueRotate:Mi("hue-rotate"),invert:Mi("invert"),saturate:Mi("saturate"),sepia:Mi("sepia"),bgImage(e){return e==null||A2(e)||P2.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=Yge[e])!=null?t:{},i={flexDirection:e};return n&&(i[n]=1),r&&(i[r]=1),i}},z={borderWidths:jr("borderWidths"),borderStyles:jr("borderStyles"),colors:jr("colors"),borders:jr("borders"),gradients:jr("gradients",je.gradient),radii:jr("radii",je.px),space:jr("space",zp(je.vh,je.px)),spaceT:jr("space",zp(je.vh,je.px)),degreeT(e){return{property:e,transform:je.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:jC({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:jr("sizes",zp(je.vh,je.px)),sizesT:jr("sizes",zp(je.vh,je.fraction)),shadows:jr("shadows"),logical:Gge,blur:jr("blur",je.blur)},Cg={background:z.colors("background"),backgroundColor:z.colors("backgroundColor"),backgroundImage:z.gradients("backgroundImage"),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:je.bgClip},bgSize:z.prop("backgroundSize"),bgPosition:z.prop("backgroundPosition"),bg:z.colors("background"),bgColor:z.colors("backgroundColor"),bgPos:z.prop("backgroundPosition"),bgRepeat:z.prop("backgroundRepeat"),bgAttachment:z.prop("backgroundAttachment"),bgGradient:z.gradients("backgroundImage"),bgClip:{transform:je.bgClip}};Object.assign(Cg,{bgImage:Cg.backgroundImage,bgImg:Cg.backgroundImage});var Ue={border:z.borders("border"),borderWidth:z.borderWidths("borderWidth"),borderStyle:z.borderStyles("borderStyle"),borderColor:z.colors("borderColor"),borderRadius:z.radii("borderRadius"),borderTop:z.borders("borderTop"),borderBlockStart:z.borders("borderBlockStart"),borderTopLeftRadius:z.radii("borderTopLeftRadius"),borderStartStartRadius:z.logical({scale:"radii",property:{ltr:"borderTopLeftRadius",rtl:"borderTopRightRadius"}}),borderEndStartRadius:z.logical({scale:"radii",property:{ltr:"borderBottomLeftRadius",rtl:"borderBottomRightRadius"}}),borderTopRightRadius:z.radii("borderTopRightRadius"),borderStartEndRadius:z.logical({scale:"radii",property:{ltr:"borderTopRightRadius",rtl:"borderTopLeftRadius"}}),borderEndEndRadius:z.logical({scale:"radii",property:{ltr:"borderBottomRightRadius",rtl:"borderBottomLeftRadius"}}),borderRight:z.borders("borderRight"),borderInlineEnd:z.borders("borderInlineEnd"),borderBottom:z.borders("borderBottom"),borderBlockEnd:z.borders("borderBlockEnd"),borderBottomLeftRadius:z.radii("borderBottomLeftRadius"),borderBottomRightRadius:z.radii("borderBottomRightRadius"),borderLeft:z.borders("borderLeft"),borderInlineStart:{property:"borderInlineStart",scale:"borders"},borderInlineStartRadius:z.logical({scale:"radii",property:{ltr:["borderTopLeftRadius","borderBottomLeftRadius"],rtl:["borderTopRightRadius","borderBottomRightRadius"]}}),borderInlineEndRadius:z.logical({scale:"radii",property:{ltr:["borderTopRightRadius","borderBottomRightRadius"],rtl:["borderTopLeftRadius","borderBottomLeftRadius"]}}),borderX:z.borders(["borderLeft","borderRight"]),borderInline:z.borders("borderInline"),borderY:z.borders(["borderTop","borderBottom"]),borderBlock:z.borders("borderBlock"),borderTopWidth:z.borderWidths("borderTopWidth"),borderBlockStartWidth:z.borderWidths("borderBlockStartWidth"),borderTopColor:z.colors("borderTopColor"),borderBlockStartColor:z.colors("borderBlockStartColor"),borderTopStyle:z.borderStyles("borderTopStyle"),borderBlockStartStyle:z.borderStyles("borderBlockStartStyle"),borderBottomWidth:z.borderWidths("borderBottomWidth"),borderBlockEndWidth:z.borderWidths("borderBlockEndWidth"),borderBottomColor:z.colors("borderBottomColor"),borderBlockEndColor:z.colors("borderBlockEndColor"),borderBottomStyle:z.borderStyles("borderBottomStyle"),borderBlockEndStyle:z.borderStyles("borderBlockEndStyle"),borderLeftWidth:z.borderWidths("borderLeftWidth"),borderInlineStartWidth:z.borderWidths("borderInlineStartWidth"),borderLeftColor:z.colors("borderLeftColor"),borderInlineStartColor:z.colors("borderInlineStartColor"),borderLeftStyle:z.borderStyles("borderLeftStyle"),borderInlineStartStyle:z.borderStyles("borderInlineStartStyle"),borderRightWidth:z.borderWidths("borderRightWidth"),borderInlineEndWidth:z.borderWidths("borderInlineEndWidth"),borderRightColor:z.colors("borderRightColor"),borderInlineEndColor:z.colors("borderInlineEndColor"),borderRightStyle:z.borderStyles("borderRightStyle"),borderInlineEndStyle:z.borderStyles("borderInlineEndStyle"),borderTopRadius:z.radii(["borderTopLeftRadius","borderTopRightRadius"]),borderBottomRadius:z.radii(["borderBottomLeftRadius","borderBottomRightRadius"]),borderLeftRadius:z.radii(["borderTopLeftRadius","borderBottomLeftRadius"]),borderRightRadius:z.radii(["borderTopRightRadius","borderBottomRightRadius"])};Object.assign(Ue,{rounded:Ue.borderRadius,roundedTop:Ue.borderTopRadius,roundedTopLeft:Ue.borderTopLeftRadius,roundedTopRight:Ue.borderTopRightRadius,roundedTopStart:Ue.borderStartStartRadius,roundedTopEnd:Ue.borderStartEndRadius,roundedBottom:Ue.borderBottomRadius,roundedBottomLeft:Ue.borderBottomLeftRadius,roundedBottomRight:Ue.borderBottomRightRadius,roundedBottomStart:Ue.borderEndStartRadius,roundedBottomEnd:Ue.borderEndEndRadius,roundedLeft:Ue.borderLeftRadius,roundedRight:Ue.borderRightRadius,roundedStart:Ue.borderInlineStartRadius,roundedEnd:Ue.borderInlineEndRadius,borderStart:Ue.borderInlineStart,borderEnd:Ue.borderInlineEnd,borderTopStartRadius:Ue.borderStartStartRadius,borderTopEndRadius:Ue.borderStartEndRadius,borderBottomStartRadius:Ue.borderEndStartRadius,borderBottomEndRadius:Ue.borderEndEndRadius,borderStartRadius:Ue.borderInlineStartRadius,borderEndRadius:Ue.borderInlineEndRadius,borderStartWidth:Ue.borderInlineStartWidth,borderEndWidth:Ue.borderInlineEndWidth,borderStartColor:Ue.borderInlineStartColor,borderEndColor:Ue.borderInlineEndColor,borderStartStyle:Ue.borderInlineStartStyle,borderEndStyle:Ue.borderInlineEndStyle});var rme={color:z.colors("color"),textColor:z.colors("color"),fill:z.colors("fill"),stroke:z.colors("stroke")},k2={boxShadow:z.shadows("boxShadow"),mixBlendMode:!0,blendMode:z.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:z.prop("backgroundBlendMode"),opacity:!0};Object.assign(k2,{shadow:k2.boxShadow});var ime={filter:{transform:je.filter},blur:z.blur("--chakra-blur"),brightness:z.propT("--chakra-brightness",je.brightness),contrast:z.propT("--chakra-contrast",je.contrast),hueRotate:z.degreeT("--chakra-hue-rotate"),invert:z.propT("--chakra-invert",je.invert),saturate:z.propT("--chakra-saturate",je.saturate),dropShadow:z.propT("--chakra-drop-shadow",je.dropShadow),backdropFilter:{transform:je.backdropFilter},backdropBlur:z.blur("--chakra-backdrop-blur"),backdropBrightness:z.propT("--chakra-backdrop-brightness",je.brightness),backdropContrast:z.propT("--chakra-backdrop-contrast",je.contrast),backdropHueRotate:z.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:z.propT("--chakra-backdrop-invert",je.invert),backdropSaturate:z.propT("--chakra-backdrop-saturate",je.saturate)},ny={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:je.flexDirection},flex:!0,flexFlow:!0,flexGrow:!0,flexShrink:!0,flexBasis:z.sizes("flexBasis"),justifySelf:!0,alignSelf:!0,order:!0,placeItems:!0,placeContent:!0,placeSelf:!0,gap:z.space("gap"),rowGap:z.space("rowGap"),columnGap:z.space("columnGap")};Object.assign(ny,{flexDir:ny.flexDirection});var aD={gridGap:z.space("gridGap"),gridColumnGap:z.space("gridColumnGap"),gridRowGap:z.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},ome={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:je.outline},outlineOffset:!0,outlineColor:z.colors("outlineColor")},zr={width:z.sizesT("width"),inlineSize:z.sizesT("inlineSize"),height:z.sizes("height"),blockSize:z.sizes("blockSize"),boxSize:z.sizes(["width","height"]),minWidth:z.sizes("minWidth"),minInlineSize:z.sizes("minInlineSize"),minHeight:z.sizes("minHeight"),minBlockSize:z.sizes("minBlockSize"),maxWidth:z.sizes("maxWidth"),maxInlineSize:z.sizes("maxInlineSize"),maxHeight:z.sizes("maxHeight"),maxBlockSize:z.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:z.propT("float",je.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(zr,{w:zr.width,h:zr.height,minW:zr.minWidth,maxW:zr.maxWidth,minH:zr.minHeight,maxH:zr.maxHeight,overscroll:zr.overscrollBehavior,overscrollX:zr.overscrollBehaviorX,overscrollY:zr.overscrollBehaviorY});var sme={listStyleType:!0,listStylePosition:!0,listStylePos:z.prop("listStylePosition"),listStyleImage:!0,listStyleImg:z.prop("listStyleImage")};function ame(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}},ume=lme(ame),cme={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},dme={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},eS=(e,t,n)=>{const r={},i=ume(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},fme={srOnly:{transform(e){return e===!0?cme:e==="focusable"?dme:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>eS(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>eS(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>eS(t,e,n)}},Rd={position:!0,pos:z.prop("position"),zIndex:z.prop("zIndex","zIndices"),inset:z.spaceT("inset"),insetX:z.spaceT(["left","right"]),insetInline:z.spaceT("insetInline"),insetY:z.spaceT(["top","bottom"]),insetBlock:z.spaceT("insetBlock"),top:z.spaceT("top"),insetBlockStart:z.spaceT("insetBlockStart"),bottom:z.spaceT("bottom"),insetBlockEnd:z.spaceT("insetBlockEnd"),left:z.spaceT("left"),insetInlineStart:z.logical({scale:"space",property:{ltr:"left",rtl:"right"}}),right:z.spaceT("right"),insetInlineEnd:z.logical({scale:"space",property:{ltr:"right",rtl:"left"}})};Object.assign(Rd,{insetStart:Rd.insetInlineStart,insetEnd:Rd.insetInlineEnd});var hme={ring:{transform:je.ring},ringColor:z.colors("--chakra-ring-color"),ringOffset:z.prop("--chakra-ring-offset-width"),ringOffsetColor:z.colors("--chakra-ring-offset-color"),ringInset:z.prop("--chakra-ring-inset")},dt={margin:z.spaceT("margin"),marginTop:z.spaceT("marginTop"),marginBlockStart:z.spaceT("marginBlockStart"),marginRight:z.spaceT("marginRight"),marginInlineEnd:z.spaceT("marginInlineEnd"),marginBottom:z.spaceT("marginBottom"),marginBlockEnd:z.spaceT("marginBlockEnd"),marginLeft:z.spaceT("marginLeft"),marginInlineStart:z.spaceT("marginInlineStart"),marginX:z.spaceT(["marginInlineStart","marginInlineEnd"]),marginInline:z.spaceT("marginInline"),marginY:z.spaceT(["marginTop","marginBottom"]),marginBlock:z.spaceT("marginBlock"),padding:z.space("padding"),paddingTop:z.space("paddingTop"),paddingBlockStart:z.space("paddingBlockStart"),paddingRight:z.space("paddingRight"),paddingBottom:z.space("paddingBottom"),paddingBlockEnd:z.space("paddingBlockEnd"),paddingLeft:z.space("paddingLeft"),paddingInlineStart:z.space("paddingInlineStart"),paddingInlineEnd:z.space("paddingInlineEnd"),paddingX:z.space(["paddingInlineStart","paddingInlineEnd"]),paddingInline:z.space("paddingInline"),paddingY:z.space(["paddingTop","paddingBottom"]),paddingBlock:z.space("paddingBlock")};Object.assign(dt,{m:dt.margin,mt:dt.marginTop,mr:dt.marginRight,me:dt.marginInlineEnd,marginEnd:dt.marginInlineEnd,mb:dt.marginBottom,ml:dt.marginLeft,ms:dt.marginInlineStart,marginStart:dt.marginInlineStart,mx:dt.marginX,my:dt.marginY,p:dt.padding,pt:dt.paddingTop,py:dt.paddingY,px:dt.paddingX,pb:dt.paddingBottom,pl:dt.paddingLeft,ps:dt.paddingInlineStart,paddingStart:dt.paddingInlineStart,pr:dt.paddingRight,pe:dt.paddingInlineEnd,paddingEnd:dt.paddingInlineEnd});var pme={textDecorationColor:z.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:z.shadows("textShadow")},gme={clipPath:!0,transform:z.propT("transform",je.transform),transformOrigin:!0,translateX:z.spaceT("--chakra-translate-x"),translateY:z.spaceT("--chakra-translate-y"),skewX:z.degreeT("--chakra-skew-x"),skewY:z.degreeT("--chakra-skew-y"),scaleX:z.prop("--chakra-scale-x"),scaleY:z.prop("--chakra-scale-y"),scale:z.prop(["--chakra-scale-x","--chakra-scale-y"]),rotate:z.degreeT("--chakra-rotate")},mme={transition:!0,transitionDelay:!0,animation:!0,willChange:!0,transitionDuration:z.prop("transitionDuration","transition.duration"),transitionProperty:z.prop("transitionProperty","transition.property"),transitionTimingFunction:z.prop("transitionTimingFunction","transition.easing")},yme={fontFamily:z.prop("fontFamily","fonts"),fontSize:z.prop("fontSize","fontSizes",je.px),fontWeight:z.prop("fontWeight","fontWeights"),lineHeight:z.prop("lineHeight","lineHeights"),letterSpacing:z.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"}},vme={scrollBehavior:!0,scrollSnapAlign:!0,scrollSnapStop:!0,scrollSnapType:!0,scrollMargin:z.spaceT("scrollMargin"),scrollMarginTop:z.spaceT("scrollMarginTop"),scrollMarginBottom:z.spaceT("scrollMarginBottom"),scrollMarginLeft:z.spaceT("scrollMarginLeft"),scrollMarginRight:z.spaceT("scrollMarginRight"),scrollMarginX:z.spaceT(["scrollMarginLeft","scrollMarginRight"]),scrollMarginY:z.spaceT(["scrollMarginTop","scrollMarginBottom"]),scrollPadding:z.spaceT("scrollPadding"),scrollPaddingTop:z.spaceT("scrollPaddingTop"),scrollPaddingBottom:z.spaceT("scrollPaddingBottom"),scrollPaddingLeft:z.spaceT("scrollPaddingLeft"),scrollPaddingRight:z.spaceT("scrollPaddingRight"),scrollPaddingX:z.spaceT(["scrollPaddingLeft","scrollPaddingRight"]),scrollPaddingY:z.spaceT(["scrollPaddingTop","scrollPaddingBottom"])};function lD(e){return Mo(e)&&e.reference?e.reference:String(e)}var Zv=(e,...t)=>t.map(lD).join(` ${e} `).replace(/calc/g,""),V6=(...e)=>`calc(${Zv("+",...e)})`,z6=(...e)=>`calc(${Zv("-",...e)})`,R2=(...e)=>`calc(${Zv("*",...e)})`,U6=(...e)=>`calc(${Zv("/",...e)})`,G6=e=>{const t=lD(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:R2(t,-1)},Pa=Object.assign(e=>({add:(...t)=>Pa(V6(e,...t)),subtract:(...t)=>Pa(z6(e,...t)),multiply:(...t)=>Pa(R2(e,...t)),divide:(...t)=>Pa(U6(e,...t)),negate:()=>Pa(G6(e)),toString:()=>e.toString()}),{add:V6,subtract:z6,multiply:R2,divide:U6,negate:G6});function bme(e,t="-"){return e.replace(/\s+/g,t)}function Sme(e){const t=bme(e.toString());return wme(_me(t))}function _me(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function wme(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function xme(e,t=""){return[t,e].filter(Boolean).join("-")}function Cme(e,t){return`var(${e}${t?`, ${t}`:""})`}function Tme(e,t=""){return Sme(`--${xme(e,t)}`)}function O2(e,t,n){const r=Tme(e,n);return{variable:r,reference:Cme(r,t)}}function b4e(e,t){const n={};for(const r of t){if(Array.isArray(r)){const[i,o]=r;n[i]=O2(`${e}-${i}`,o);continue}n[r]=O2(`${e}-${r}`)}return n}function Eme(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function Pme(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function M2(e){if(e==null)return e;const{unitless:t}=Pme(e);return t||typeof e=="number"?`${e}px`:e}var uD=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,VC=e=>Object.fromEntries(Object.entries(e).sort(uD));function H6(e){const t=VC(e);return Object.assign(Object.values(t),t)}function Ame(e){const t=Object.keys(VC(e));return new Set(t)}function q6(e){var t;if(!e)return e;e=(t=M2(e))!=null?t:e;const n=-.02;return typeof e=="number"?`${e+n}`:e.replace(/(\d+\.?\d*)/u,r=>`${parseFloat(r)+n}`)}function pd(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${M2(e)})`),t&&n.push("and",`(max-width: ${M2(t)})`),n.join(" ")}function kme(e){var t;if(!e)return null;e.base=(t=e.base)!=null?t:"0px";const n=H6(e),r=Object.entries(e).sort(uD).map(([s,a],l,u)=>{var c;let[,d]=(c=u[l+1])!=null?c:[];return d=parseFloat(d)>0?q6(d):void 0,{_minW:q6(a),breakpoint:s,minW:a,maxW:d,maxWQuery:pd(null,d),minWQuery:pd(a),minMaxQuery:pd(a,d)}}),i=Ame(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:VC(e),asArray:H6(e),details:r,get(s){return r.find(a=>a.breakpoint===s)},media:[null,...n.map(s=>pd(s)).slice(1)],toArrayValue(s){if(!Mo(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(;Eme(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 xn={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}`},os=e=>cD(t=>e(t,"&"),"[role=group]","[data-group]",".group"),mo=e=>cD(t=>e(t,"~ &"),"[data-peer]",".peer"),cD=(e,...t)=>t.map(e).join(", "),Jv={_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:os(xn.hover),_peerHover:mo(xn.hover),_groupFocus:os(xn.focus),_peerFocus:mo(xn.focus),_groupFocusVisible:os(xn.focusVisible),_peerFocusVisible:mo(xn.focusVisible),_groupActive:os(xn.active),_peerActive:mo(xn.active),_groupDisabled:os(xn.disabled),_peerDisabled:mo(xn.disabled),_groupInvalid:os(xn.invalid),_peerInvalid:mo(xn.invalid),_groupChecked:os(xn.checked),_peerChecked:mo(xn.checked),_groupFocusWithin:os(xn.focusWithin),_peerFocusWithin:mo(xn.focusWithin),_peerPlaceholderShown:mo(xn.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]"},dD=Object.keys(Jv);function W6(e,t){return O2(String(e).replace(/\./g,"-"),void 0,t)}function Rme(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:s,value:a}=o,{variable:l,reference:u}=W6(i,t==null?void 0:t.cssVarPrefix);if(!s){if(i.startsWith("space")){const f=i.split("."),[h,...p]=f,m=`${h}.-${p.join(".")}`,S=Pa.negate(a),v=Pa.negate(u);r[m]={value:S,var:l,varRef:v}}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:S}=W6(p,t==null?void 0:t.cssVarPrefix);return S},d=Mo(a)?a:{default:a};n=Wi(n,Object.entries(d).reduce((f,[h,p])=>{var m,S;if(!p)return f;const v=c(`${p}`);if(h==="default")return f[l]=v,f;const y=(S=(m=Jv)==null?void 0:m[h])!=null?S:h;return f[y]={[l]:v},f},{})),r[i]={value:u,var:l,varRef:u}}return{cssVars:n,cssMap:r}}function Ome(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function Mme(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Ime(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function K6(e,t,n={}){const{stop:r,getKey:i}=n;function o(s,a=[]){var l;if(Ime(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 Nme=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","gradients","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur","breakpoints"];function Dme(e){return Mme(e,Nme)}function Lme(e){return e.semanticTokens}function $me(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}var Fme=e=>dD.includes(e)||e==="default";function Bme({tokens:e,semanticTokens:t}){const n={};return K6(e,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!1,value:r})}),K6(t,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!0,value:r})},{stop:r=>Object.keys(r).every(Fme)}),n}function S4e(e){var t;const n=$me(e),r=Dme(n),i=Lme(n),o=Bme({tokens:r,semanticTokens:i}),s=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:a,cssVars:l}=Rme(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:kme(n.breakpoints)}),n}var zC=Wi({},Cg,Ue,rme,ny,zr,ime,hme,ome,aD,fme,Rd,k2,dt,vme,yme,pme,gme,sme,mme),jme=Object.assign({},dt,zr,ny,aD,Rd),_4e=Object.keys(jme),Vme=[...Object.keys(zC),...dD],zme={...zC,...Jv},Ume=e=>e in zme,Gme=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const s in e){let a=Na(e[s],t);if(a==null)continue;if(a=Mo(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"&&!qme(t),Kme=(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]=Hme(t);return t=(r=(n=i(s))!=null?n:o(a))!=null?r:o(t),t};function Xme(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,s=!1)=>{var a,l,u;const c=Na(o,r),d=Gme(c)(r);let f={};for(let h in d){const p=d[h];let m=Na(p,r);h in n&&(h=n[h]),Wme(h,m)&&(m=Kme(r,m));let S=t[h];if(S===!0&&(S={property:h}),Mo(m)){f[h]=(a=f[h])!=null?a:{},f[h]=Wi({},f[h],i(m,!0));continue}let v=(u=(l=S==null?void 0:S.transform)==null?void 0:l.call(S,m,r,c))!=null?u:m;v=S!=null&&S.processResult?i(v,!0):v;const y=Na(S==null?void 0:S.property,r);if(!s&&(S!=null&&S.static)){const g=Na(S.static,r);f=Wi({},f,g)}if(y&&Array.isArray(y)){for(const g of y)f[g]=v;continue}if(y){y==="&"&&Mo(v)?f=Wi({},f,v):f[y]=v;continue}if(Mo(v)){f=Wi({},f,v);continue}f[h]=v}return f};return i}var Yme=e=>t=>Xme({theme:t,pseudos:Jv,configs:zC})(e);function w4e(e){return e}function x4e(e){return e}function C4e(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function Qme(e,t){if(Array.isArray(e))return e;if(Mo(e))return t(e);if(e!=null)return[e]}function Zme(e,t){for(let n=t+1;n{Wi(u,{[g]:f?y[g]:{[v]:y[g]}})});continue}if(!h){f?Wi(u,y):u[v]=y;continue}u[v]=y}}return u}}function eye(e){return t=>{var n;const{variant:r,size:i,theme:o}=t,s=Jme(o);return Wi({},Na((n=e.baseStyle)!=null?n:{},t),s(e,"sizes",i,t),s(e,"variants",r,t))}}function T4e(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 fD(e){return Ome(e,["styleConfig","size","variant","colorScheme"])}function tye(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function E4e(e){var t;return tye(e)&&(t=e.ownerDocument)!=null?t:document}function nye(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var rye=nye();function iye(e,t){const n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n}function oye(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}},aye=sye(oye);function hD(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var pD=e=>hD(e,t=>t!=null);function lye(e){return typeof e=="function"}function uye(e,...t){return lye(e)?e(...t):e}function cye(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}var dye=typeof Element<"u",fye=typeof Map=="function",hye=typeof Set=="function",pye=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Tg(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(!Tg(e[r],t[r]))return!1;return!0}var o;if(fye&&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(!Tg(r.value[1],t.get(r.value[0])))return!1;return!0}if(hye&&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(pye&&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(dye&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!Tg(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var gye=function(t,n){try{return Tg(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 mye=al(gye);function gD(e,t={}){var n;const{styleConfig:r,...i}=t,{theme:o,colorMode:s}=Nge(),a=e?aye(o,`components.${e}`):void 0,l=r||a,u=Wi({theme:o,colorMode:s},(n=l==null?void 0:l.defaultProps)!=null?n:{},pD(iye(i,["children"]))),c=k.useRef({});if(l){const f=eye(l)(u);mye(c.current,f)||(c.current=f)}return c.current}function mD(e,t={}){return gD(e,t)}function P4e(e,t={}){return gD(e,t)}var yye=new Set([...Vme,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),vye=new Set(["htmlWidth","htmlHeight","htmlSize","htmlTranslate"]);function bye(e){return vye.has(e)||!yye.has(e)}function Sye(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}var _ye=/^((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)-.*))$/,wye=XN(function(e){return _ye.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),xye=wye,Cye=function(t){return t!=="theme"},X6=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?xye:Cye},Y6=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},Tye=function(t){var n=t.cache,r=t.serialized,i=t.isStringTag;return QN(n,r,i),Age(function(){return ZN(n,r,i)}),null},Eye=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=Y6(t,n,r),l=a||X6(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=hD(s,(d,f)=>Ume(f)),l=uye(e,t),u=Sye({},i,l,pD(a),o),c=Yme(u)(t.theme);return r?[c,r]:c};function tS(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=bye);const i=kye({baseStyle:n}),o=Aye(e,r)(i);return Xe.forwardRef(function(l,u){const{colorMode:c,forced:d}=BC();return Xe.createElement(o,{ref:u,"data-theme":d?c:void 0,...l})})}function Rye(){const e=new Map;return new Proxy(tS,{apply(t,n,r){return tS(...r)},get(t,n){return e.has(n)||e.set(n,tS(n)),e.get(n)}})}var sl=Rye();function Tl(e){return k.forwardRef(e)}const yD=k.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),e1=k.createContext({}),Lh=k.createContext(null),t1=typeof document<"u",iy=t1?k.useLayoutEffect:k.useEffect,vD=k.createContext({strict:!1});function Oye(e,t,n,r){const{visualElement:i}=k.useContext(e1),o=k.useContext(vD),s=k.useContext(Lh),a=k.useContext(yD).reducedMotion,l=k.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;return k.useInsertionEffect(()=>{u&&u.update(n,s)}),iy(()=>{u&&u.render()}),k.useEffect(()=>{u&&u.updateFeatures()}),(window.HandoffAppearAnimations?iy:k.useEffect)(()=>{u&&u.animationState&&u.animationState.animateChanges()}),u}function hu(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function Mye(e,t,n){return k.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):hu(n)&&(n.current=r))},[t])}function Gf(e){return typeof e=="string"||Array.isArray(e)}function n1(e){return typeof e=="object"&&typeof e.start=="function"}const UC=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],GC=["initial",...UC];function r1(e){return n1(e.animate)||GC.some(t=>Gf(e[t]))}function bD(e){return!!(r1(e)||e.variants)}function Iye(e,t){if(r1(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Gf(n)?n:void 0,animate:Gf(r)?r:void 0}}return e.inherit!==!1?t:{}}function Nye(e){const{initial:t,animate:n}=Iye(e,k.useContext(e1));return k.useMemo(()=>({initial:t,animate:n}),[Z6(t),Z6(n)])}function Z6(e){return Array.isArray(e)?e.join(" "):e}const J6={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"]},Hf={};for(const e in J6)Hf[e]={isEnabled:t=>J6[e].some(n=>!!t[n])};function Dye(e){for(const t in e)Hf[t]={...Hf[t],...e[t]}}const HC=k.createContext({}),SD=k.createContext({}),Lye=Symbol.for("motionComponentSymbol");function $ye({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:r,Component:i}){e&&Dye(e);function o(a,l){let u;const c={...k.useContext(yD),...a,layoutId:Fye(a)},{isStatic:d}=c,f=Nye(a),h=r(a,d);if(!d&&t1){f.visualElement=Oye(i,h,c,t);const p=k.useContext(SD),m=k.useContext(vD).strict;f.visualElement&&(u=f.visualElement.loadFeatures(c,m,e,p))}return k.createElement(e1.Provider,{value:f},u&&f.visualElement?k.createElement(u,{visualElement:f.visualElement,...c}):null,n(i,a,Mye(h,f.visualElement,l),h,d,f.visualElement))}const s=k.forwardRef(o);return s[Lye]=i,s}function Fye({layoutId:e}){const t=k.useContext(HC).id;return t&&e!==void 0?t+"-"+e:e}function Bye(e){function t(r,i={}){return $ye(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 jye=["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 qC(e){return typeof e!="string"||e.includes("-")?!1:!!(jye.indexOf(e)>-1||/[A-Z]/.test(e))}const oy={};function Vye(e){Object.assign(oy,e)}const $h=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],El=new Set($h);function _D(e,{layout:t,layoutId:n}){return El.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!oy[e]||e==="opacity")}const _r=e=>!!(e&&e.getVelocity),zye={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},Uye=$h.length;function Gye(e,{enableHardwareAcceleration:t=!0,allowTransformNone:n=!0},r,i){let o="";for(let s=0;st=>typeof t=="string"&&t.startsWith(e),xD=wD("--"),I2=wD("var(--"),Hye=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,qye=(e,t)=>t&&typeof e=="number"?t.transform(e):e,Ks=(e,t,n)=>Math.min(Math.max(n,e),t),Pl={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Od={...Pl,transform:e=>Ks(0,1,e)},Up={...Pl,default:1},Md=e=>Math.round(e*1e5)/1e5,i1=/(-)?([\d]*\.?[\d])+/g,CD=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,Wye=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function Fh(e){return typeof e=="string"}const Bh=e=>({test:t=>Fh(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),as=Bh("deg"),Ji=Bh("%"),me=Bh("px"),Kye=Bh("vh"),Xye=Bh("vw"),eP={...Ji,parse:e=>Ji.parse(e)/100,transform:e=>Ji.transform(e*100)},tP={...Pl,transform:Math.round},TD={borderWidth:me,borderTopWidth:me,borderRightWidth:me,borderBottomWidth:me,borderLeftWidth:me,borderRadius:me,radius:me,borderTopLeftRadius:me,borderTopRightRadius:me,borderBottomRightRadius:me,borderBottomLeftRadius:me,width:me,maxWidth:me,height:me,maxHeight:me,size:me,top:me,right:me,bottom:me,left:me,padding:me,paddingTop:me,paddingRight:me,paddingBottom:me,paddingLeft:me,margin:me,marginTop:me,marginRight:me,marginBottom:me,marginLeft:me,rotate:as,rotateX:as,rotateY:as,rotateZ:as,scale:Up,scaleX:Up,scaleY:Up,scaleZ:Up,skew:as,skewX:as,skewY:as,distance:me,translateX:me,translateY:me,translateZ:me,x:me,y:me,z:me,perspective:me,transformPerspective:me,opacity:Od,originX:eP,originY:eP,originZ:me,zIndex:tP,fillOpacity:Od,strokeOpacity:Od,numOctaves:tP};function WC(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(xD(d)){o[d]=f;continue}const h=TD[d],p=qye(f,h);if(El.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=Gye(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 KC=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function ED(e,t,n){for(const r in t)!_r(t[r])&&!_D(r,n)&&(e[r]=t[r])}function Yye({transformTemplate:e},t,n){return k.useMemo(()=>{const r=KC();return WC(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function Qye(e,t,n){const r=e.style||{},i={};return ED(i,r,e),Object.assign(i,Yye(e,t,n)),e.transformValues?e.transformValues(i):i}function Zye(e,t,n){const r={},i=Qye(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 Jye=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 sy(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||Jye.has(e)}let PD=e=>!sy(e);function e0e(e){e&&(PD=t=>t.startsWith("on")?!sy(t):e(t))}try{e0e(require("@emotion/is-prop-valid").default)}catch{}function t0e(e,t,n){const r={};for(const i in e)i==="values"&&typeof e.values=="object"||(PD(i)||n===!0&&sy(i)||!t&&!sy(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function nP(e,t,n){return typeof e=="string"?e:me.transform(t+n*e)}function n0e(e,t,n){const r=nP(t,e.x,e.width),i=nP(n,e.y,e.height);return`${r} ${i}`}const r0e={offset:"stroke-dashoffset",array:"stroke-dasharray"},i0e={offset:"strokeDashoffset",array:"strokeDasharray"};function o0e(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?r0e:i0e;e[o.offset]=me.transform(-r);const s=me.transform(t),a=me.transform(n);e[o.array]=`${s} ${a}`}function XC(e,{attrX:t,attrY:n,attrScale:r,originX:i,originY:o,pathLength:s,pathSpacing:a=1,pathOffset:l=0,...u},c,d,f){if(WC(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=n0e(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&&o0e(h,s,a,l,!1)}const AD=()=>({...KC(),attrs:{}}),YC=e=>typeof e=="string"&&e.toLowerCase()==="svg";function s0e(e,t,n,r){const i=k.useMemo(()=>{const o=AD();return XC(o,t,{enableHardwareAcceleration:!1},YC(r),e.transformTemplate),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};ED(o,e.style,e),i.style={...o,...i.style}}return i}function a0e(e=!1){return(n,r,i,{latestValues:o},s)=>{const l=(qC(n)?s0e:Zye)(r,o,s,n),c={...t0e(r,typeof n=="string",e),...l,ref:i},{children:d}=r,f=k.useMemo(()=>_r(d)?d.get():d,[d]);return k.createElement(n,{...c,children:f})}}const QC=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function kD(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 RD=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 OD(e,t,n,r){kD(e,t,void 0,r);for(const i in t.attrs)e.setAttribute(RD.has(i)?i:QC(i),t.attrs[i])}function ZC(e,t){const{style:n}=e,r={};for(const i in n)(_r(n[i])||t.style&&_r(t.style[i])||_D(i,e))&&(r[i]=n[i]);return r}function MD(e,t){const n=ZC(e,t);for(const r in e)if(_r(e[r])||_r(t[r])){const i=$h.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;n[i]=e[r]}return n}function JC(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 ID(e){const t=k.useRef(null);return t.current===null&&(t.current=e()),t.current}const ay=e=>Array.isArray(e),l0e=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),u0e=e=>ay(e)?e[e.length-1]||0:e;function Eg(e){const t=_r(e)?e.get():e;return l0e(t)?t.toValue():t}function c0e({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const s={latestValues:d0e(r,i,o,e),renderState:t()};return n&&(s.mount=a=>n(r,a,s)),s}const ND=e=>(t,n)=>{const r=k.useContext(e1),i=k.useContext(Lh),o=()=>c0e(e,t,r,i);return n?o():ID(o)};function d0e(e,t,n,r){const i={},o=r(e,{});for(const f in o)i[f]=Eg(o[f]);let{initial:s,animate:a}=e;const l=r1(e),u=bD(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"&&!n1(d)&&(Array.isArray(d)?d:[d]).forEach(h=>{const p=JC(e,h);if(!p)return;const{transitionEnd:m,transition:S,...v}=p;for(const y in v){let g=v[y];if(Array.isArray(g)){const b=c?g.length-1:0;g=g[b]}g!==null&&(i[y]=g)}for(const y in m)i[y]=m[y]}),i}const f0e={useVisualState:ND({scrapeMotionValuesFromProps:MD,createRenderState:AD,onMount:(e,t,{renderState:n,latestValues:r})=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}XC(n,r,{enableHardwareAcceleration:!1},YC(t.tagName),e.transformTemplate),OD(t,n)}})},h0e={useVisualState:ND({scrapeMotionValuesFromProps:ZC,createRenderState:KC})};function p0e(e,{forwardMotionProps:t=!1},n,r){return{...qC(e)?f0e:h0e,preloadedFeatures:n,useRender:a0e(t),createVisualElement:r,Component:e}}function Ao(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}const DD=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function o1(e,t="page"){return{point:{x:e[t+"X"],y:e[t+"Y"]}}}const g0e=e=>t=>DD(t)&&e(t,o1(t));function Io(e,t,n,r){return Ao(e,t,g0e(n),r)}const m0e=(e,t)=>n=>t(e(n)),Ns=(...e)=>e.reduce(m0e);function LD(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const rP=LD("dragHorizontal"),iP=LD("dragVertical");function $D(e){let t=!1;if(e==="y")t=iP();else if(e==="x")t=rP();else{const n=rP(),r=iP();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function FD(){const e=$D(!0);return e?(e(),!1):!0}class ua{constructor(t){this.isMounted=!1,this.node=t}update(){}}const Qt=e=>e;function y0e(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]=y0e(()=>n=!0),d),{}),s=d=>o[d].process(i),a=d=>{n=!1,i.delta=r?1e3/60:Math.max(Math.min(d-i.timestamp,v0e),1),i.timestamp=d,i.isProcessing=!0,Gp.forEach(s),i.isProcessing=!1,n&&t&&(r=!1,e(a))},l=()=>{n=!0,r=!0,i.isProcessing||e(a)};return{schedule:Gp.reduce((d,f)=>{const h=o[f];return d[f]=(p,m=!1,S=!1)=>(n||l(),h.schedule(p,m,S)),d},{}),cancel:d=>Gp.forEach(f=>o[f].cancel(d)),state:i,steps:o}}const{schedule:_t,cancel:Uo,state:$n,steps:nS}=b0e(typeof requestAnimationFrame<"u"?requestAnimationFrame:Qt,!0);function oP(e,t){const n="pointer"+(t?"enter":"leave"),r="onHover"+(t?"Start":"End"),i=(o,s)=>{if(o.type==="touch"||FD())return;const a=e.getProps();e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",t),a[r]&&_t.update(()=>a[r](o,s))};return Io(e.current,n,i,{passive:!e.getProps()[r]})}class S0e extends ua{mount(){this.unmount=Ns(oP(this.node,!0),oP(this.node,!1))}unmount(){}}class _0e extends ua{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=Ns(Ao(this.node.current,"focus",()=>this.onFocus()),Ao(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const BD=(e,t)=>t?e===t?!0:BD(e,t.parentElement):!1;function rS(e,t){if(!t)return;const n=new PointerEvent("pointer"+e);t(n,o1(n))}class w0e extends ua{constructor(){super(...arguments),this.removeStartListeners=Qt,this.removeEndListeners=Qt,this.removeAccessibleListeners=Qt,this.startPointerPress=(t,n)=>{if(this.removeEndListeners(),this.isPressing)return;const r=this.node.getProps(),o=Io(window,"pointerup",(a,l)=>{if(!this.checkPressEnd())return;const{onTap:u,onTapCancel:c}=this.node.getProps();_t.update(()=>{BD(this.node.current,a.target)?u&&u(a,l):c&&c(a,l)})},{passive:!(r.onTap||r.onPointerUp)}),s=Io(window,"pointercancel",(a,l)=>this.cancelPress(a,l),{passive:!(r.onTapCancel||r.onPointerCancel)});this.removeEndListeners=Ns(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()||rS("up",(l,u)=>{const{onTap:c}=this.node.getProps();c&&_t.update(()=>c(l,u))})};this.removeEndListeners(),this.removeEndListeners=Ao(this.node.current,"keyup",s),rS("down",(a,l)=>{this.startPress(a,l)})},n=Ao(this.node.current,"keydown",t),r=()=>{this.isPressing&&rS("cancel",(o,s)=>this.cancelPress(o,s))},i=Ao(this.node.current,"blur",r);this.removeAccessibleListeners=Ns(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&&_t.update(()=>r(t,n))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!FD()}cancelPress(t,n){if(!this.checkPressEnd())return;const{onTapCancel:r}=this.node.getProps();r&&_t.update(()=>r(t,n))}mount(){const t=this.node.getProps(),n=Io(this.node.current,"pointerdown",this.startPointerPress,{passive:!(t.onTapStart||t.onPointerStart)}),r=Ao(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=Ns(n,r)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const N2=new WeakMap,iS=new WeakMap,x0e=e=>{const t=N2.get(e.target);t&&t(e)},C0e=e=>{e.forEach(x0e)};function T0e({root:e,...t}){const n=e||document;iS.has(n)||iS.set(n,{});const r=iS.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(C0e,{root:e,...t})),r[i]}function E0e(e,t,n){const r=T0e(t);return N2.set(e,n),r.observe(e),()=>{N2.delete(e),r.unobserve(e)}}const P0e={some:0,all:1};class A0e extends ua{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:P0e[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 E0e(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(k0e(t,n))&&this.startObserver()}unmount(){}}function k0e({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const R0e={inView:{Feature:A0e},tap:{Feature:w0e},focus:{Feature:_0e},hover:{Feature:S0e}};function jD(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 M0e(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVelocity()),t}function s1(e,t,n){const r=e.getProps();return JC(r,t,n!==void 0?n:r.custom,O0e(e),M0e(e))}const I0e="framerAppearId",N0e="data-"+QC(I0e);let D0e=Qt,e3=Qt;const Ds=e=>e*1e3,No=e=>e/1e3,L0e={current:!1},VD=e=>Array.isArray(e)&&typeof e[0]=="number";function zD(e){return!!(!e||typeof e=="string"&&UD[e]||VD(e)||Array.isArray(e)&&e.every(zD))}const gd=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,UD={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:gd([0,.65,.55,1]),circOut:gd([.55,0,1,.45]),backIn:gd([.31,.01,.66,-.59]),backOut:gd([.33,1.53,.69,.99])};function GD(e){if(e)return VD(e)?gd(e):Array.isArray(e)?e.map(GD):UD[e]}function $0e(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=GD(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"})}const sP={waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate")},oS={},HD={};for(const e in sP)HD[e]=()=>(oS[e]===void 0&&(oS[e]=sP[e]()),oS[e]);function F0e(e,{repeat:t,repeatType:n="loop"}){const r=t&&n!=="loop"&&t%2===1?0:e.length-1;return e[r]}const qD=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,B0e=1e-7,j0e=12;function V0e(e,t,n,r,i){let o,s,a=0;do s=t+(n-t)/2,o=qD(s,r,i)-e,o>0?n=s:t=s;while(Math.abs(o)>B0e&&++aV0e(o,0,1,e,n);return o=>o===0||o===1?o:qD(i(o),t,r)}const z0e=jh(.42,0,1,1),U0e=jh(0,0,.58,1),WD=jh(.42,0,.58,1),G0e=e=>Array.isArray(e)&&typeof e[0]!="number",KD=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,XD=e=>t=>1-e(1-t),YD=e=>1-Math.sin(Math.acos(e)),t3=XD(YD),H0e=KD(t3),QD=jh(.33,1.53,.69,.99),n3=XD(QD),q0e=KD(n3),W0e=e=>(e*=2)<1?.5*n3(e):.5*(2-Math.pow(2,-10*(e-1))),K0e={linear:Qt,easeIn:z0e,easeInOut:WD,easeOut:U0e,circIn:YD,circInOut:H0e,circOut:t3,backIn:n3,backInOut:q0e,backOut:QD,anticipate:W0e},aP=e=>{if(Array.isArray(e)){e3(e.length===4);const[t,n,r,i]=e;return jh(t,n,r,i)}else if(typeof e=="string")return K0e[e];return e},r3=(e,t)=>n=>!!(Fh(n)&&Wye.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),ZD=(e,t,n)=>r=>{if(!Fh(r))return r;const[i,o,s,a]=r.match(i1);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(s),alpha:a!==void 0?parseFloat(a):1}},X0e=e=>Ks(0,255,e),sS={...Pl,transform:e=>Math.round(X0e(e))},Da={test:r3("rgb","red"),parse:ZD("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+sS.transform(e)+", "+sS.transform(t)+", "+sS.transform(n)+", "+Md(Od.transform(r))+")"};function Y0e(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 D2={test:r3("#"),parse:Y0e,transform:Da.transform},pu={test:r3("hsl","hue"),parse:ZD("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+Ji.transform(Md(t))+", "+Ji.transform(Md(n))+", "+Md(Od.transform(r))+")"},Xn={test:e=>Da.test(e)||D2.test(e)||pu.test(e),parse:e=>Da.test(e)?Da.parse(e):pu.test(e)?pu.parse(e):D2.parse(e),transform:e=>Fh(e)?e:e.hasOwnProperty("red")?Da.transform(e):pu.transform(e)},At=(e,t,n)=>-n*e+n*t+e;function aS(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 Q0e({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=aS(l,a,e+1/3),o=aS(l,a,e),s=aS(l,a,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(s*255),alpha:r}}const lS=(e,t,n)=>{const r=e*e;return Math.sqrt(Math.max(0,n*(t*t-r)+r))},Z0e=[D2,Da,pu],J0e=e=>Z0e.find(t=>t.test(e));function lP(e){const t=J0e(e);let n=t.parse(e);return t===pu&&(n=Q0e(n)),n}const JD=(e,t)=>{const n=lP(e),r=lP(t),i={...n};return o=>(i.red=lS(n.red,r.red,o),i.green=lS(n.green,r.green,o),i.blue=lS(n.blue,r.blue,o),i.alpha=At(n.alpha,r.alpha,o),Da.transform(i))};function eve(e){var t,n;return isNaN(e)&&Fh(e)&&(((t=e.match(i1))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(CD))===null||n===void 0?void 0:n.length)||0)>0}const eL={regex:Hye,countKey:"Vars",token:"${v}",parse:Qt},tL={regex:CD,countKey:"Colors",token:"${c}",parse:Xn.parse},nL={regex:i1,countKey:"Numbers",token:"${n}",parse:Pl.parse};function uS(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 ly(e){const t=e.toString(),n={value:t,tokenised:t,values:[],numVars:0,numColors:0,numNumbers:0};return n.value.includes("var(--")&&uS(n,eL),uS(n,tL),uS(n,nL),n}function rL(e){return ly(e).values}function iL(e){const{values:t,numColors:n,numVars:r,tokenised:i}=ly(e),o=t.length;return s=>{let a=i;for(let l=0;ltypeof e=="number"?0:e;function nve(e){const t=rL(e);return iL(e)(t.map(tve))}const Xs={test:eve,parse:rL,createTransformer:iL,getAnimatableNone:nve},oL=(e,t)=>n=>`${n>0?t:e}`;function sL(e,t){return typeof e=="number"?n=>At(e,t,n):Xn.test(e)?JD(e,t):e.startsWith("var(")?oL(e,t):lL(e,t)}const aL=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,s)=>sL(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]=sL(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}},lL=(e,t)=>{const n=Xs.createTransformer(t),r=ly(e),i=ly(t);return r.numVars===i.numVars&&r.numColors===i.numColors&&r.numNumbers>=i.numNumbers?Ns(aL(r.values,i.values),n):oL(e,t)},qf=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},uP=(e,t)=>n=>At(e,t,n);function ive(e){return typeof e=="number"?uP:typeof e=="string"?Xn.test(e)?JD:lL:Array.isArray(e)?aL:typeof e=="object"?rve:uP}function ove(e,t,n){const r=[],i=n||ive(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=ove(t,r,i),a=s.length,l=u=>{let c=0;if(a>1)for(;cl(Ks(e[0],e[o-1],u)):l}function sve(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const i=qf(0,t,r);e.push(At(n,1,i))}}function ave(e){const t=[0];return sve(t,e.length-1),t}function lve(e,t){return e.map(n=>n*t)}function uve(e,t){return e.map(()=>t||WD).splice(0,e.length-1)}function uy({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const i=G0e(r)?r.map(aP):aP(r),o={done:!1,value:t[0]},s=lve(n&&n.length===t.length?n:ave(t),e),a=uL(s,t,{ease:Array.isArray(i)?i:uve(t,i)});return{calculatedDuration:e,next:l=>(o.value=a(l),o.done=l>=e,o)}}function cL(e,t){return t?e*(1e3/t):0}const cve=5;function dL(e,t,n){const r=Math.max(t-cve,0);return cL(n-e(r),t-r)}const cS=.001,dve=.01,cP=10,fve=.05,hve=1;function pve({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;D0e(e<=Ds(cP));let s=1-t;s=Ks(fve,hve,s),e=Ks(dve,cP,No(e)),s<1?(i=u=>{const c=u*s,d=c*e,f=c-n,h=L2(u,s),p=Math.exp(-d);return cS-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=L2(Math.pow(u,2),s);return(-i(u)+cS>0?-1:1)*((f-h)*p)/m}):(i=u=>{const c=Math.exp(-u*e),d=(u-n)*e+1;return-cS+c*d},o=u=>{const c=Math.exp(-u*e),d=(n-u)*(e*e);return c*d});const a=5/e,l=mve(i,o,a);if(e=Ds(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 gve=12;function mve(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function bve(e){let t={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...e};if(!dP(e,vve)&&dP(e,yve)){const n=pve(e);t={...t,...n,velocity:0,mass:1},t.isResolvedFromDuration=!0}return t}function fL({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}=bve(r),h=c?-No(c):0,p=l/(2*Math.sqrt(a*u)),m=o-i,S=No(Math.sqrt(a/u)),v=Math.abs(m)<5;n||(n=v?.01:2),t||(t=v?.005:.5);let y;if(p<1){const g=L2(S,p);y=b=>{const _=Math.exp(-p*S*b);return o-_*((h+p*S*m)/g*Math.sin(g*b)+m*Math.cos(g*b))}}else if(p===1)y=g=>o-Math.exp(-S*g)*(m+(h+S*m)*g);else{const g=S*Math.sqrt(p*p-1);y=b=>{const _=Math.exp(-p*S*b),w=Math.min(g*b,300);return o-_*((h+p*S*m)*Math.sinh(w)+g*m*Math.cosh(w))/g}}return{calculatedDuration:f&&d||null,next:g=>{const b=y(g);if(f)s.done=g>=d;else{let _=h;g!==0&&(p<1?_=dL(y,g,b):_=0);const w=Math.abs(_)<=n,x=Math.abs(o-b)<=t;s.done=w&&x}return s.value=s.done?o:b,s}}}function fP({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=T=>a!==void 0&&Tl,p=T=>a===void 0?l:l===void 0||Math.abs(a-T)-m*Math.exp(-T/r),g=T=>v+y(T),b=T=>{const P=y(T),E=g(T);f.done=Math.abs(P)<=u,f.value=f.done?v:E};let _,w;const x=T=>{h(f.value)&&(_=T,w=fL({keyframes:[f.value,p(f.value)],velocity:dL(g,T,f.value),damping:i,stiffness:o,restDelta:u,restSpeed:c}))};return x(0),{calculatedDuration:null,next:T=>{let P=!1;return!w&&_===void 0&&(P=!0,b(T),x(T)),_!==void 0&&T>_?w.next(T-_):(!P&&b(T),f)}}}const Sve=e=>{const t=({timestamp:n})=>e(n);return{start:()=>_t.update(t,!0),stop:()=>Uo(t),now:()=>$n.isProcessing?$n.timestamp:performance.now()}},hP=2e4;function pP(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t=hP?1/0:t}const _ve={decay:fP,inertia:fP,tween:uy,keyframes:uy,spring:fL};function cy({autoplay:e=!0,delay:t=0,driver:n=Sve,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,S;const v=()=>{S=new Promise(j=>{m=j})};v();let y;const g=_ve[i]||uy;let b;g!==uy&&typeof r[0]!="number"&&(b=uL([0,100],r,{clamp:!1}),r=[0,100]);const _=g({...f,keyframes:r});let w;a==="mirror"&&(w=g({...f,keyframes:[...r].reverse(),velocity:-(f.velocity||0)}));let x="idle",T=null,P=null,E=null;_.calculatedDuration===null&&o&&(_.calculatedDuration=pP(_));const{calculatedDuration:A}=_;let $=1/0,I=1/0;A!==null&&($=A+s,I=$*(o+1)-s);let C=0;const R=j=>{if(P===null)return;h>0&&(P=Math.min(P,j)),h<0&&(P=Math.min(j-I/h,P)),T!==null?C=T:C=Math.round(j-P)*h;const U=C-t*(h>=0?1:-1),G=h>=0?U<0:U>I;C=Math.max(U,0),x==="finished"&&T===null&&(C=I);let W=C,X=_;if(o){const Q=C/$;let J=Math.floor(Q),ne=Q%1;!ne&&Q>=1&&(ne=1),ne===1&&J--,J=Math.min(J,o+1);const te=!!(J%2);te&&(a==="reverse"?(ne=1-ne,s&&(ne-=s/$)):a==="mirror"&&(X=w));let xe=Ks(0,1,ne);C>I&&(xe=a==="reverse"&&te?1:0),W=xe*$}const Y=G?{done:!1,value:r[0]}:X.next(W);b&&(Y.value=b(Y.value));let{done:B}=Y;!G&&A!==null&&(B=h>=0?C>=I:C<=0);const H=T===null&&(x==="finished"||x==="running"&&B);return d&&d(Y.value),H&&O(),Y},M=()=>{y&&y.stop(),y=void 0},N=()=>{x="idle",M(),m(),v(),P=E=null},O=()=>{x="finished",c&&c(),M(),m()},D=()=>{if(p)return;y||(y=n(R));const j=y.now();l&&l(),T!==null?P=j-T:(!P||x==="finished")&&(P=j),x==="finished"&&v(),E=P,T=null,x="running",y.start()};e&&D();const L={then(j,U){return S.then(j,U)},get time(){return No(C)},set time(j){j=Ds(j),C=j,T!==null||!y||h===0?T=j:P=y.now()-j/h},get duration(){const j=_.calculatedDuration===null?pP(_):_.calculatedDuration;return No(j)},get speed(){return h},set speed(j){j===h||!y||(h=j,L.time=No(C))},get state(){return x},play:D,pause:()=>{x="paused",T=C},stop:()=>{p=!0,x!=="idle"&&(x="idle",u&&u(),N())},cancel:()=>{E!==null&&R(E),N()},complete:()=>{x="finished"},sample:j=>(P=0,R(j))};return L}const wve=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),Hp=10,xve=2e4,Cve=(e,t)=>t.type==="spring"||e==="backgroundColor"||!zD(t.ease);function Tve(e,t,{onUpdate:n,onComplete:r,...i}){if(!(HD.waapi()&&wve.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(v=>{a=v})};u();let{keyframes:c,duration:d=300,ease:f,times:h}=i;if(Cve(t,i)){const v=cy({...i,repeat:0,delay:0});let y={done:!1,value:c[0]};const g=[];let b=0;for(;!y.done&&bp.cancel(),S=()=>{_t.update(m),a(),u()};return p.onfinish=()=>{e.set(F0e(c,i)),r&&r(),S()},{then(v,y){return l.then(v,y)},get time(){return No(p.currentTime||0)},set time(v){p.currentTime=Ds(v)},get speed(){return p.playbackRate},set speed(v){p.playbackRate=v},get duration(){return No(d)},play:()=>{s||(p.play(),Uo(m))},pause:()=>p.pause(),stop:()=>{if(s=!0,p.playState==="idle")return;const{currentTime:v}=p;if(v){const y=cy({...i,autoplay:!1});e.setWithVelocity(y.sample(v-Hp).value,y.sample(v).value,Hp)}S()},complete:()=>p.finish(),cancel:S}}function Eve({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:Qt,pause:Qt,stop:Qt,then:o=>(o(),Promise.resolve()),cancel:Qt,complete:Qt});return t?cy({keyframes:[0,1],duration:0,delay:t,onComplete:i}):i()}const Pve={type:"spring",stiffness:500,damping:25,restSpeed:10},Ave=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),kve={type:"keyframes",duration:.8},Rve={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},Ove=(e,{keyframes:t})=>t.length>2?kve:El.has(e)?e.startsWith("scale")?Ave(t[1]):Pve:Rve,$2=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Xs.test(t)||t==="0")&&!t.startsWith("url(")),Mve=new Set(["brightness","contrast","saturate","opacity"]);function Ive(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(i1)||[];if(!r)return e;const i=n.replace(r,"");let o=Mve.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const Nve=/([a-z-]*)\(.*?\)/g,F2={...Xs,getAnimatableNone:e=>{const t=e.match(Nve);return t?t.map(Ive).join(" "):e}},Dve={...TD,color:Xn,backgroundColor:Xn,outlineColor:Xn,fill:Xn,stroke:Xn,borderColor:Xn,borderTopColor:Xn,borderRightColor:Xn,borderBottomColor:Xn,borderLeftColor:Xn,filter:F2,WebkitFilter:F2},i3=e=>Dve[e];function hL(e,t){let n=i3(e);return n!==F2&&(n=Xs),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const pL=e=>/^0[^.\s]+$/.test(e);function Lve(e){if(typeof e=="number")return e===0;if(e!==null)return e==="none"||e==="0"||pL(e)}function $ve(e,t,n,r){const i=$2(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=gL(r,e)||{},s=o.delay||r.delay||0;let{elapsed:a=0}=r;a=a-Ds(s);const l=$ve(t,e,n,o),u=l[0],c=l[l.length-1],d=$2(e,u),f=$2(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(Fve(o)||(h={...h,...Ove(e,h)}),h.duration&&(h.duration=Ds(h.duration)),h.repeatDelay&&(h.repeatDelay=Ds(h.repeatDelay)),!d||!f||L0e.current||o.type===!1)return Eve(h);if(t.owner&&t.owner.current instanceof HTMLElement&&!t.owner.getProps().onUpdate){const p=Tve(t,e,h);if(p)return p}return cy(h)};function dy(e){return!!(_r(e)&&e.add)}const Bve=e=>/^\-?\d*\.?\d+$/.test(e);function s3(e,t){e.indexOf(t)===-1&&e.push(t)}function a3(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class l3{constructor(){this.subscriptions=[]}add(t){return s3(this.subscriptions,t),()=>a3(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 Vve{constructor(t,n={}){this.version="10.12.22",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}=$n;this.lastUpdated!==s&&(this.timeDelta=o,this.lastUpdated=s,_t.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=()=>_t.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=jve(this.current),this.owner=n.owner}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new l3);const r=this.events[t].add(n);return t==="change"?()=>{r(),_t.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?cL(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 uc(e,t){return new Vve(e,t)}const mL=e=>t=>t.test(e),zve={test:e=>e==="auto",parse:e=>e},yL=[Pl,me,Ji,as,Xye,Kye,zve],id=e=>yL.find(mL(e)),Uve=[...yL,Xn,Xs],Gve=e=>Uve.find(mL(e));function Hve(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,uc(n))}function qve(e,t){const n=s1(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const s in o){const a=u0e(o[s]);Hve(e,s,a)}}function Wve(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&&qve(e,s)}),u}function B2(e,t,n={}){const r=s1(e,t,n.custom);let{transition:i=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(i=n.transitionOverride);const o=r?()=>Promise.all(vL(e,r,n)):()=>Promise.resolve(),s=e.variantChildren&&e.variantChildren.size?(l=0)=>{const{delayChildren:u=0,staggerChildren:c,staggerDirection:d}=i;return Qve(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 Qve(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(Zve).forEach((u,c)=>{u.notify("AnimationStart",t),s.push(B2(u,t,{...o,delay:n+l(c)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(s)}function Zve(e,t){return e.sortNodePosition(t)}function Jve(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const i=t.map(o=>B2(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=B2(e,t,n);else{const i=typeof t=="function"?s1(e,t,n.custom):t;r=Promise.all(vL(e,i,n))}return r.then(()=>e.notify("AnimationComplete",t))}const e1e=[...UC].reverse(),t1e=UC.length;function n1e(e){return t=>Promise.all(t.map(({animation:n,options:r})=>Jve(e,n,r)))}function r1e(e){let t=n1e(e);const n=o1e();let r=!0;const i=(l,u)=>{const c=s1(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 v=0;vm&&_;const E=Array.isArray(b)?b:[b];let A=E.reduce(i,{});w===!1&&(A={});const{prevResolvedValues:$={}}=g,I={...$,...A},C=R=>{P=!0,h.delete(R),g.needsAnimating[R]=!0};for(const R in I){const M=A[R],N=$[R];p.hasOwnProperty(R)||(M!==N?ay(M)&&ay(N)?!jD(M,N)||T?C(R):g.protectedKeys[R]=!0:M!==void 0?C(R):h.add(R):M!==void 0&&h.has(R)?C(R):g.protectedKeys[R]=!0)}g.prevProp=b,g.prevResolvedValues=A,g.isActive&&(p={...p,...A}),r&&e.blockInitialAnimation&&(P=!1),P&&!x&&f.push(...E.map(R=>({animation:R,options:{type:y,...l}})))}if(h.size){const v={};h.forEach(y=>{const g=e.getBaseTarget(y);g!==void 0&&(v[y]=g)}),f.push({animation:v})}let S=!!f.length;return r&&c.initial===!1&&!e.manuallyAnimateOnMount&&(S=!1),r=!1,S?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 i1e(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!jD(t,e):!1}function ba(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function o1e(){return{animate:ba(!0),whileInView:ba(),whileHover:ba(),whileTap:ba(),whileDrag:ba(),whileFocus:ba(),exit:ba()}}class s1e extends ua{constructor(t){super(t),t.animationState||(t.animationState=r1e(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();this.unmount(),n1(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 a1e=0;class l1e extends ua{constructor(){super(...arguments),this.id=a1e++}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 u1e={animation:{Feature:s1e},exit:{Feature:l1e}},gP=(e,t)=>Math.abs(e-t);function c1e(e,t){const n=gP(e.x,t.x),r=gP(e.y,t.y);return Math.sqrt(n**2+r**2)}class bL{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=fS(this.lastMoveEventInfo,this.history),c=this.startEvent!==null,d=c1e(u.offset,{x:0,y:0})>=3;if(!c&&!d)return;const{point:f}=u,{timestamp:h}=$n;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=dS(c,this.transformPagePoint),_t.update(this.updatePoint,!0)},this.handlePointerUp=(u,c)=>{if(this.end(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const{onEnd:d,onSessionEnd:f}=this.handlers,h=fS(u.type==="pointercancel"?this.lastMoveEventInfo:dS(c,this.transformPagePoint),this.history);this.startEvent&&d&&d(u,h),f&&f(u,h)},!DD(t))return;this.handlers=n,this.transformPagePoint=r;const i=o1(t),o=dS(i,this.transformPagePoint),{point:s}=o,{timestamp:a}=$n;this.history=[{...s,timestamp:a}];const{onSessionStart:l}=n;l&&l(t,fS(o,this.history)),this.removeListeners=Ns(Io(window,"pointermove",this.handlePointerMove),Io(window,"pointerup",this.handlePointerUp),Io(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),Uo(this.updatePoint)}}function dS(e,t){return t?{point:t(e.point)}:e}function mP(e,t){return{x:e.x-t.x,y:e.y-t.y}}function fS({point:e},t){return{point:e,delta:mP(e,SL(t)),offset:mP(e,d1e(t)),velocity:f1e(t,.1)}}function d1e(e){return e[0]}function SL(e){return e[e.length-1]}function f1e(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=SL(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>Ds(t)));)n--;if(!r)return{x:0,y:0};const o=No(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 Mr(e){return e.max-e.min}function j2(e,t=0,n=.01){return Math.abs(e-t)<=n}function yP(e,t,n,r=.5){e.origin=r,e.originPoint=At(t.min,t.max,e.origin),e.scale=Mr(n)/Mr(t),(j2(e.scale,1,1e-4)||isNaN(e.scale))&&(e.scale=1),e.translate=At(n.min,n.max,e.origin)-e.originPoint,(j2(e.translate)||isNaN(e.translate))&&(e.translate=0)}function Id(e,t,n,r){yP(e.x,t.x,n.x,r?r.originX:void 0),yP(e.y,t.y,n.y,r?r.originY:void 0)}function vP(e,t,n){e.min=n.min+t.min,e.max=e.min+Mr(t)}function h1e(e,t,n){vP(e.x,t.x,n.x),vP(e.y,t.y,n.y)}function bP(e,t,n){e.min=t.min-n.min,e.max=e.min+Mr(t)}function Nd(e,t,n){bP(e.x,t.x,n.x),bP(e.y,t.y,n.y)}function p1e(e,{min:t,max:n},r){return t!==void 0&&en&&(e=r?At(n,e,r.max):Math.min(e,n)),e}function SP(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 g1e(e,{top:t,left:n,bottom:r,right:i}){return{x:SP(e.x,n,i),y:SP(e.y,t,r)}}function _P(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=qf(t.min,t.max-r,e.min):r>i&&(n=qf(e.min,e.max-i,t.min)),Ks(0,1,n)}function v1e(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 V2=.35;function b1e(e=V2){return e===!1?e=0:e===!0&&(e=V2),{x:wP(e,"left","right"),y:wP(e,"top","bottom")}}function wP(e,t,n){return{min:xP(e,t),max:xP(e,n)}}function xP(e,t){return typeof e=="number"?e:e[t]||0}const CP=()=>({translate:0,scale:1,origin:0,originPoint:0}),gu=()=>({x:CP(),y:CP()}),TP=()=>({min:0,max:0}),Wt=()=>({x:TP(),y:TP()});function Li(e){return[e("x"),e("y")]}function _L({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function S1e({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function _1e(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 hS(e){return e===void 0||e===1}function z2({scale:e,scaleX:t,scaleY:n}){return!hS(e)||!hS(t)||!hS(n)}function Ca(e){return z2(e)||wL(e)||e.z||e.rotate||e.rotateX||e.rotateY}function wL(e){return EP(e.x)||EP(e.y)}function EP(e){return e&&e!=="0%"}function fy(e,t,n){const r=e-n,i=t*r;return n+i}function PP(e,t,n,r,i){return i!==void 0&&(e=fy(e,i,r)),fy(e,n,r)+t}function U2(e,t=0,n=1,r,i){e.min=PP(e.min,t,n,r,i),e.max=PP(e.max,t,n,r,i)}function xL(e,{x:t,y:n}){U2(e.x,t.translate,t.scale,t.originPoint),U2(e.y,n.translate,n.scale,n.originPoint)}function w1e(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 fs(e,t){e.min=e.min+t,e.max=e.max+t}function kP(e,t,[n,r,i]){const o=t[i]!==void 0?t[i]:.5,s=At(e.min,e.max,o);U2(e,t[n],t[r],s,t.scale)}const x1e=["x","scaleX","originX"],C1e=["y","scaleY","originY"];function mu(e,t){kP(e.x,t,x1e),kP(e.y,t,C1e)}function CL(e,t){return _L(_1e(e.getBoundingClientRect(),t))}function T1e(e,t,n){const r=CL(e,n),{scroll:i}=t;return i&&(fs(r.x,i.offset.x),fs(r.y,i.offset.y)),r}const E1e=new WeakMap;class P1e{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=Wt(),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(o1(l,"page").point)},o=(l,u)=>{const{drag:c,dragPropagation:d,onDragStart:f}=this.getProps();if(c&&!d&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=$D(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),Li(p=>{let m=this.getAxisMotionValue(p).get()||0;if(Ji.test(m)){const{projection:S}=this.visualElement;if(S&&S.layout){const v=S.layout.layoutBox[p];v&&(m=Mr(v)*(parseFloat(m)/100))}}this.originPoint[p]=m}),f&&_t.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=A1e(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 bL(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&&_t.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||!qp(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let s=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(s=p1e(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&&hu(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=g1e(r.layoutBox,t):this.constraints=!1,this.elastic=b1e(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&Li(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=v1e(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!hu(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=T1e(r,i.root,this.visualElement.getTransformPagePoint());let s=m1e(i.layout.layoutBox,o);if(n){const a=n(S1e(s));this.hasMutatedConstraints=!!a,a&&(s=_L(a))}return s}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:s,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},u=Li(c=>{if(!qp(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(o3(t,r,0,n))}stopAnimation(){Li(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){Li(n=>{const{drag:r}=this.getProps();if(!qp(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]-At(s,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!hu(n)||!r||!this.constraints)return;this.stopAnimation();const i={x:0,y:0};Li(s=>{const a=this.getAxisMotionValue(s);if(a){const l=a.get();i[s]=y1e({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(),Li(s=>{if(!qp(s,t,null))return;const a=this.getAxisMotionValue(s),{min:l,max:u}=this.constraints[s];a.set(At(l,u,i[s]))})}addListeners(){if(!this.visualElement.current)return;E1e.set(this.visualElement,this);const t=this.visualElement.current,n=Io(t,"pointerdown",l=>{const{drag:u,dragListener:c=!0}=this.getProps();u&&c&&this.start(l)}),r=()=>{const{dragConstraints:l}=this.getProps();hu(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=Ao(window,"resize",()=>this.scalePositionWithinConstraints()),a=i.addEventListener("didUpdate",({delta:l,hasLayoutChanged:u})=>{this.isDragging&&u&&(Li(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=V2,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:s,dragMomentum:a}}}function qp(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function A1e(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class k1e extends ua{constructor(t){super(t),this.removeGroupControls=Qt,this.removeListeners=Qt,this.controls=new P1e(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Qt}unmount(){this.removeGroupControls(),this.removeListeners()}}const RP=e=>(t,n)=>{e&&_t.update(()=>e(t,n))};class R1e extends ua{constructor(){super(...arguments),this.removePointerDownListener=Qt}onPointerDown(t){this.session=new bL(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint()})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:i}=this.node.getProps();return{onSessionStart:RP(t),onStart:RP(n),onMove:r,onEnd:(o,s)=>{delete this.session,i&&_t.update(()=>i(o,s))}}}mount(){this.removePointerDownListener=Io(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 O1e(){const e=k.useContext(Lh);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=k.useId();return k.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function A4e(){return M1e(k.useContext(Lh))}function M1e(e){return e===null?!0:e.isPresent}const Pg={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function OP(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const od={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(me.test(e))e=parseFloat(e);else return e;const n=OP(e,t.target.x),r=OP(e,t.target.y);return`${n}% ${r}%`}},I1e={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=Xs.parse(e);if(i.length>5)return r;const o=Xs.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=At(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 N1e extends Xe.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;Vye(D1e),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()})),Pg.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()||_t.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 TL(e){const[t,n]=O1e(),r=k.useContext(HC);return Xe.createElement(N1e,{...e,layoutGroup:r,switchLayoutGroup:k.useContext(SD),isPresent:t,safeToRemove:n})}const D1e={borderRadius:{...od,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:od,borderTopRightRadius:od,borderBottomLeftRadius:od,borderBottomRightRadius:od,boxShadow:I1e},EL=["TopLeft","TopRight","BottomLeft","BottomRight"],L1e=EL.length,MP=e=>typeof e=="string"?parseFloat(e):e,IP=e=>typeof e=="number"||me.test(e);function $1e(e,t,n,r,i,o){i?(e.opacity=At(0,n.opacity!==void 0?n.opacity:1,F1e(r)),e.opacityExit=At(t.opacity!==void 0?t.opacity:1,0,B1e(r))):o&&(e.opacity=At(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,r));for(let s=0;srt?1:n(qf(e,t,r))}function DP(e,t){e.min=t.min,e.max=t.max}function Vr(e,t){DP(e.x,t.x),DP(e.y,t.y)}function LP(e,t,n,r,i){return e-=t,e=fy(e,1/n,r),i!==void 0&&(e=fy(e,1/i,r)),e}function j1e(e,t=0,n=1,r=.5,i,o=e,s=e){if(Ji.test(t)&&(t=parseFloat(t),t=At(s.min,s.max,t/100)-s.min),typeof t!="number")return;let a=At(o.min,o.max,r);e===o&&(a-=t),e.min=LP(e.min,t,n,a,i),e.max=LP(e.max,t,n,a,i)}function $P(e,t,[n,r,i],o,s){j1e(e,t[n],t[r],t[i],t.scale,o,s)}const V1e=["x","scaleX","originX"],z1e=["y","scaleY","originY"];function FP(e,t,n,r){$P(e.x,t,V1e,n?n.x:void 0,r?r.x:void 0),$P(e.y,t,z1e,n?n.y:void 0,r?r.y:void 0)}function BP(e){return e.translate===0&&e.scale===1}function AL(e){return BP(e.x)&&BP(e.y)}function G2(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 jP(e){return Mr(e.x)/Mr(e.y)}class U1e{constructor(){this.members=[]}add(t){s3(this.members,t),t.scheduleRender()}remove(t){if(a3(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 VP(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 G1e=(e,t)=>e.depth-t.depth;class H1e{constructor(){this.children=[],this.isDirty=!1}add(t){s3(this.children,t),this.isDirty=!0}remove(t){a3(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(G1e),this.isDirty=!1,this.children.forEach(t)}}function q1e(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(Uo(r),e(o-t))};return _t.read(r,!0),()=>Uo(r)}function W1e(e){window.MotionDebug&&window.MotionDebug.record(e)}function K1e(e){return e instanceof SVGElement&&e.tagName!=="svg"}function X1e(e,t,n){const r=_r(e)?e:uc(e);return r.start(o3("",r,t,n)),r.animation}const zP=["","X","Y","Z"],UP=1e3;let Y1e=0;const Ta={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function kL({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(s={},a=t==null?void 0:t()){this.id=Y1e++,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=()=>{Ta.totalNodes=Ta.resolvedTargetDeltas=Ta.recalculatedProjection=0,this.nodes.forEach(J1e),this.nodes.forEach(ibe),this.nodes.forEach(obe),this.nodes.forEach(ebe),W1e(Ta)},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=q1e(f,250),Pg.hasAnimatedSinceResize&&(Pg.hasAnimatedSinceResize=!1,this.nodes.forEach(HP))})}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()||cbe,{onLayoutAnimationStart:S,onLayoutAnimationComplete:v}=c.getProps(),y=!this.targetLayout||!G2(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 b={...gL(m,"layout"),onPlay:S,onComplete:v};(c.shouldReduceMotion||this.options.layoutRoot)&&(b.delay=0,b.type=!1),this.startAnimation(b)}else f||HP(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,Uo(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(sbe),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(tbe),this.sharedNodes.forEach(abe)}scheduleUpdateProjection(){_t.preRender(this.updateProjection,!1,!0)}scheduleCheckAfterUnmount(){_t.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 _=b/1e3;qP(d.x,s.x,_),qP(d.y,s.y,_),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Nd(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox),lbe(this.relativeTarget,this.relativeTargetOrigin,f,_),g&&G2(this.relativeTarget,g)&&(this.isProjectionDirty=!1),g||(g=Wt()),Vr(g,this.relativeTarget)),m&&(this.animationValues=c,$1e(c,u,this.latestValues,_,y,v)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=_},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&&(Uo(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=_t.update(()=>{Pg.hasAnimatedSinceResize=!0,this.currentAnimation=X1e(0,UP,{...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(UP),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&&RL(this.options.animationType,this.layout.layoutBox,u.layoutBox)){l=this.target||Wt();const d=Mr(this.layout.layoutBox.x);l.x.min=s.target.x.min,l.x.max=l.x.min+d;const f=Mr(this.layout.layoutBox.y);l.y.min=s.target.y.min,l.y.max=l.y.min+f}Vr(a,l),mu(a,c),Id(this.projectionDeltaWithTransform,this.layoutCorrected,a,c)}}registerSharedNode(s,a){this.sharedNodes.has(s)||this.sharedNodes.set(s,new U1e),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(GP),this.root.sharedNodes.clear()}}}function Q1e(e){e.updateLayout()}function Z1e(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"?Li(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Mr(f);f.min=r[d].min,f.max=f.min+h}):RL(o,n.layoutBox,r)&&Li(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Mr(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=gu();Id(a,r,n.layoutBox);const l=gu();s?Id(l,e.applyTransform(i,!0),n.measuredBox):Id(l,r,n.layoutBox);const u=!AL(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=Wt();Nd(p,n.layoutBox,f.layoutBox);const m=Wt();Nd(m,r,h.layoutBox),G2(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 J1e(e){Ta.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 ebe(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function tbe(e){e.clearSnapshot()}function GP(e){e.clearMeasurements()}function nbe(e){e.isLayoutDirty=!1}function rbe(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function HP(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function ibe(e){e.resolveTargetDelta()}function obe(e){e.calcProjection()}function sbe(e){e.resetRotation()}function abe(e){e.removeLeadSnapshot()}function qP(e,t,n){e.translate=At(t.translate,0,n),e.scale=At(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function WP(e,t,n,r){e.min=At(t.min,n.min,r),e.max=At(t.max,n.max,r)}function lbe(e,t,n,r){WP(e.x,t.x,n.x,r),WP(e.y,t.y,n.y,r)}function ube(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const cbe={duration:.45,ease:[.4,0,.1,1]};function KP(e){e.min=Math.round(e.min*2)/2,e.max=Math.round(e.max*2)/2}function dbe(e){KP(e.x),KP(e.y)}function RL(e,t,n){return e==="position"||e==="preserve-aspect"&&!j2(jP(t),jP(n),.2)}const fbe=kL({attachResizeListener:(e,t)=>Ao(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),pS={current:void 0},OL=kL({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!pS.current){const e=new fbe({});e.mount(window),e.setOptions({layoutScroll:!0}),pS.current=e}return pS.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),hbe={pan:{Feature:R1e},drag:{Feature:k1e,ProjectionNode:OL,MeasureLayout:TL}},pbe=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function gbe(e){const t=pbe.exec(e);if(!t)return[,];const[,n,r]=t;return[n,r]}function H2(e,t,n=1){const[r,i]=gbe(e);if(!r)return;const o=window.getComputedStyle(t).getPropertyValue(r);return o?o.trim():I2(i)?H2(i,t,n+1):i}function mbe(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(!I2(o))return;const s=H2(o,r);s&&i.set(s)});for(const i in t){const o=t[i];if(!I2(o))continue;const s=H2(o,r);s&&(t[i]=s,n||(n={}),n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const ybe=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),ML=e=>ybe.has(e),vbe=e=>Object.keys(e).some(ML),XP=e=>e===Pl||e===me,YP=(e,t)=>parseFloat(e.split(", ")[t]),QP=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return YP(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?YP(o[1],e):0}},bbe=new Set(["x","y","z"]),Sbe=$h.filter(e=>!bbe.has(e));function _be(e){const t=[];return Sbe.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 cc={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:QP(4,13),y:QP(5,14)};cc.translateX=cc.x;cc.translateY=cc.y;const wbe=(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]=cc[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]=cc[u](l,o)}),e},xbe=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(ML);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=id(c);const f=t[l];let h;if(ay(f)){const p=f.length,m=f[0]===null?1:0;c=f[m],d=id(c);for(let S=m;S=0?window.pageYOffset:null,u=wbe(t,e,a);return o.length&&o.forEach(([c,d])=>{e.getValue(c).set(d)}),e.render(),t1&&l!==null&&window.scrollTo({top:l}),{target:u,transitionEnd:r}}else return{target:t,transitionEnd:r}};function Cbe(e,t,n,r){return vbe(t)?xbe(e,t,n,r):{target:t,transitionEnd:r}}const Tbe=(e,t,n,r)=>{const i=mbe(e,t,r);return t=i.target,r=i.transitionEnd,Cbe(e,t,n,r)},q2={current:null},IL={current:!1};function Ebe(){if(IL.current=!0,!!t1)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>q2.current=e.matches;e.addListener(t),t()}else q2.current=!1}function Pbe(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],s=n[i];if(_r(o))e.addValue(i,o),dy(r)&&r.add(i);else if(_r(s))e.addValue(i,uc(o,{owner:e})),dy(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,uc(a!==void 0?a:o,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const ZP=new WeakMap,NL=Object.keys(Hf),Abe=NL.length,JP=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],kbe=GC.length;class Rbe{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=()=>_t.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=r1(n),this.isVariantNode=bD(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&&_r(f)&&(f.set(a[d],!1),dy(u)&&u.add(d))}}scrapeMotionValuesFromProps(t,n){return{}}mount(t){this.current=t,ZP.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)),IL.current||Ebe(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:q2.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){ZP.delete(this.current),this.projection&&this.projection.unmount(),Uo(this.notifyUpdate),Uo(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=El.has(t),i=n.on("change",s=>{this.latestValues[t]=s,this.props.onUpdate&&_t.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):Wt()}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=uc(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=JC(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&&!_r(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 l3),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class DL extends Rbe{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=Xve(r,t||{},this);if(i&&(n&&(n=i(n)),r&&(r=i(r)),s&&(s=i(s))),o){Wve(this,r,s);const a=Tbe(this,r,s,n);n=a.transitionEnd,r=a.target}return{transition:t,transitionEnd:n,...r}}}function Obe(e){return window.getComputedStyle(e)}class Mbe extends DL{readValueFromInstance(t,n){if(El.has(n)){const r=i3(n);return r&&r.default||0}else{const r=Obe(t),i=(xD(n)?r.getPropertyValue(n):r[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return CL(t,n)}build(t,n,r,i){WC(t,n,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,n){return ZC(t,n)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;_r(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}renderInstance(t,n,r,i){kD(t,n,r,i)}}class Ibe extends DL{constructor(){super(...arguments),this.isSVGTag=!1}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(El.has(n)){const r=i3(n);return r&&r.default||0}return n=RD.has(n)?n:QC(n),t.getAttribute(n)}measureInstanceViewportBox(){return Wt()}scrapeMotionValuesFromProps(t,n){return MD(t,n)}build(t,n,r,i){XC(t,n,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,r,i){OD(t,n,r,i)}mount(t){this.isSVGTag=YC(t.tagName),super.mount(t)}}const Nbe=(e,t)=>qC(e)?new Ibe(t,{enableHardwareAcceleration:!1}):new Mbe(t,{enableHardwareAcceleration:!0}),Dbe={layout:{ProjectionNode:OL,MeasureLayout:TL}},Lbe={...u1e,...R0e,...hbe,...Dbe},$be=Bye((e,t)=>p0e(e,t,Lbe,Nbe));function LL(){const e=k.useRef(!1);return iy(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function Fbe(){const e=LL(),[t,n]=k.useState(0),r=k.useCallback(()=>{e.current&&n(t+1)},[t]);return[k.useCallback(()=>_t.postRender(r),[r]),t]}class Bbe extends k.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 jbe({children:e,isPresent:t}){const n=k.useId(),r=k.useRef(null),i=k.useRef({width:0,height:0,top:0,left:0});return k.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]),k.createElement(Bbe,{isPresent:t,childRef:r,sizeRef:i},k.cloneElement(e,{ref:r}))}const gS=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:s})=>{const a=ID(Vbe),l=k.useId(),u=k.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 k.useMemo(()=>{a.forEach((c,d)=>a.set(d,!1))},[n]),k.useEffect(()=>{!n&&!a.size&&r&&r()},[n]),s==="popLayout"&&(e=k.createElement(jbe,{isPresent:n},e)),k.createElement(Lh.Provider,{value:u},e)};function Vbe(){return new Map}function zbe(e){return k.useEffect(()=>()=>e(),[])}const Ql=e=>e.key||"";function Ube(e,t){e.forEach(n=>{const r=Ql(n);t.set(r,n)})}function Gbe(e){const t=[];return k.Children.forEach(e,n=>{k.isValidElement(n)&&t.push(n)}),t}const Hbe=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:s="sync"})=>{const a=k.useContext(HC).forceRender||Fbe()[0],l=LL(),u=Gbe(e);let c=u;const d=k.useRef(new Map).current,f=k.useRef(c),h=k.useRef(new Map).current,p=k.useRef(!0);if(iy(()=>{p.current=!1,Ube(u,h),f.current=c}),zbe(()=>{p.current=!0,h.clear(),d.clear()}),p.current)return k.createElement(k.Fragment,null,c.map(y=>k.createElement(gS,{key:Ql(y),isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:s},y)));c=[...c];const m=f.current.map(Ql),S=u.map(Ql),v=m.length;for(let y=0;y{if(S.indexOf(g)!==-1)return;const b=h.get(g);if(!b)return;const _=m.indexOf(g);let w=y;if(!w){const x=()=>{h.delete(g),d.delete(g);const T=f.current.findIndex(P=>P.key===g);if(f.current.splice(T,1),!d.size){if(f.current=u,l.current===!1)return;a(),r&&r()}};w=k.createElement(gS,{key:Ql(b),isPresent:!1,onExitComplete:x,custom:t,presenceAffectsLayout:o,mode:s},b),d.set(g,w)}c.splice(_,0,w)}),c=c.map(y=>{const g=y.key;return d.has(g)?y:k.createElement(gS,{key:Ql(y),isPresent:!0,presenceAffectsLayout:o,mode:s},y)}),k.createElement(k.Fragment,null,d.size?c:c.map(y=>k.cloneElement(y)))};var qbe=Mge({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),$L=Tl((e,t)=>{const n=mD("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:s="transparent",className:a,...l}=fD(e),u=oD("chakra-spinner",a),c={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:s,borderLeftColor:s,animation:`${qbe} ${o} linear infinite`,...n};return K.jsx(sl.div,{ref:t,__css:c,className:u,...l,children:r&&K.jsx(sl.span,{srOnly:!0,children:r})})});$L.displayName="Spinner";var W2=Tl(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...s}=t;return K.jsx("img",{width:r,height:i,ref:n,alt:o,...s})});W2.displayName="NativeImage";function Wbe(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:s,sizes:a,ignoreFallback:l}=e,[u,c]=k.useState("pending");k.useEffect(()=>{c(n?"loading":"pending")},[n]);const d=k.useRef(),f=k.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 Ige(()=>{if(!l)return u==="loading"&&f(),()=>{h()}},[u,f,l]),l?"loaded":u}var Kbe=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError";function Xbe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var u3=Tl(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,S=u!=null||c||!m,v=Wbe({...t,crossOrigin:d,ignoreFallback:S}),y=Kbe(v,f),g={ref:n,objectFit:l,objectPosition:a,...S?p:Xbe(p,["onError","onLoad"])};return y?i||K.jsx(sl.img,{as:W2,className:"chakra-image__placeholder",src:r,...g}):K.jsx(sl.img,{as:W2,src:o,srcSet:s,crossOrigin:d,loading:u,referrerPolicy:h,className:"chakra-image",...g})});u3.displayName="Image";var Ybe=rye?k.useLayoutEffect:k.useEffect;function e8(e,t=[]){const n=k.useRef(e);return Ybe(()=>{n.current=e}),k.useCallback((...r)=>{var i;return(i=n.current)==null?void 0:i.call(n,...r)},t)}function Qbe(e,t){const n=k.useId();return k.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function Zbe(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function Jbe(e={}){const{onClose:t,onOpen:n,isOpen:r,id:i}=e,o=e8(n),s=e8(t),[a,l]=k.useState(e.defaultIsOpen||!1),[u,c]=Zbe(r,a),d=Qbe(i,"disclosure"),f=k.useCallback(()=>{u||l(!1),s==null||s()},[u,s]),h=k.useCallback(()=>{u||l(!0),o==null||o()},[u,o]),p=k.useCallback(()=>{(c?f:h)()},[c,h,f]);return{isOpen:!!c,onOpen:h,onClose:f,onToggle:p,isControlled:u,getButtonProps:(m={})=>({...m,"aria-expanded":c,"aria-controls":d,onClick:cye(m.onClick,p)}),getDisclosureProps:(m={})=>({...m,hidden:!c,id:d})}}var K2=Tl(function(t,n){const r=mD("Heading",t),{className:i,...o}=fD(t);return K.jsx(sl.h2,{ref:n,className:oD("chakra-heading",t.className),...o,__css:r})});K2.displayName="Heading";var c3=sl("div");c3.displayName="Box";var FL=Tl(function(t,n){const{size:r,centerContent:i=!0,...o}=t,s=i?{display:"flex",alignItems:"center",justifyContent:"center"}:{};return K.jsx(c3,{ref:n,boxSize:r,__css:{...s,flexShrink:0,flexGrow:0},...o})});FL.displayName="Square";var eSe=Tl(function(t,n){const{size:r,...i}=t;return K.jsx(FL,{size:r,ref:n,borderRadius:"9999px",...i})});eSe.displayName="Circle";var d3=Tl(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 K.jsx(sl.div,{ref:n,__css:d,...c})});d3.displayName="Flex";const tSe=""+new URL("logo-13003d72.png",import.meta.url).href,nSe=()=>K.jsxs(d3,{position:"relative",width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",bg:"#151519",children:[K.jsx(u3,{src:tSe,w:"8rem",h:"8rem"}),K.jsx($L,{label:"Loading",color:"grey",position:"absolute",size:"sm",width:"24px !important",height:"24px !important",right:"1.5rem",bottom:"1.5rem"})]}),rSe=k.memo(nSe);function X2(e){"@babel/helpers - typeof";return X2=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},X2(e)}var BL=[],iSe=BL.forEach,oSe=BL.slice;function Y2(e){return iSe.call(oSe.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function jL(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":X2(XMLHttpRequest))==="object"}function sSe(e){return!!e&&typeof e.then=="function"}function aSe(e){return sSe(e)?e:Promise.resolve(e)}function lSe(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 Q2={exports:{}},Wp={exports:{}},t8;function uSe(){return t8||(t8=1,function(e,t){var n=typeof self<"u"?self:Ee,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(C){return C&&DataView.prototype.isPrototypeOf(C)}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(C){return C&&u.indexOf(Object.prototype.toString.call(C))>-1};function d(C){if(typeof C!="string"&&(C=String(C)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(C))throw new TypeError("Invalid character in header field name");return C.toLowerCase()}function f(C){return typeof C!="string"&&(C=String(C)),C}function h(C){var R={next:function(){var M=C.shift();return{done:M===void 0,value:M}}};return a.iterable&&(R[Symbol.iterator]=function(){return R}),R}function p(C){this.map={},C instanceof p?C.forEach(function(R,M){this.append(M,R)},this):Array.isArray(C)?C.forEach(function(R){this.append(R[0],R[1])},this):C&&Object.getOwnPropertyNames(C).forEach(function(R){this.append(R,C[R])},this)}p.prototype.append=function(C,R){C=d(C),R=f(R);var M=this.map[C];this.map[C]=M?M+", "+R:R},p.prototype.delete=function(C){delete this.map[d(C)]},p.prototype.get=function(C){return C=d(C),this.has(C)?this.map[C]:null},p.prototype.has=function(C){return this.map.hasOwnProperty(d(C))},p.prototype.set=function(C,R){this.map[d(C)]=f(R)},p.prototype.forEach=function(C,R){for(var M in this.map)this.map.hasOwnProperty(M)&&C.call(R,this.map[M],M,this)},p.prototype.keys=function(){var C=[];return this.forEach(function(R,M){C.push(M)}),h(C)},p.prototype.values=function(){var C=[];return this.forEach(function(R){C.push(R)}),h(C)},p.prototype.entries=function(){var C=[];return this.forEach(function(R,M){C.push([M,R])}),h(C)},a.iterable&&(p.prototype[Symbol.iterator]=p.prototype.entries);function m(C){if(C.bodyUsed)return Promise.reject(new TypeError("Already read"));C.bodyUsed=!0}function S(C){return new Promise(function(R,M){C.onload=function(){R(C.result)},C.onerror=function(){M(C.error)}})}function v(C){var R=new FileReader,M=S(R);return R.readAsArrayBuffer(C),M}function y(C){var R=new FileReader,M=S(R);return R.readAsText(C),M}function g(C){for(var R=new Uint8Array(C),M=new Array(R.length),N=0;N-1?R:C}function T(C,R){R=R||{};var M=R.body;if(C instanceof T){if(C.bodyUsed)throw new TypeError("Already read");this.url=C.url,this.credentials=C.credentials,R.headers||(this.headers=new p(C.headers)),this.method=C.method,this.mode=C.mode,this.signal=C.signal,!M&&C._bodyInit!=null&&(M=C._bodyInit,C.bodyUsed=!0)}else this.url=String(C);if(this.credentials=R.credentials||this.credentials||"same-origin",(R.headers||!this.headers)&&(this.headers=new p(R.headers)),this.method=x(R.method||this.method||"GET"),this.mode=R.mode||this.mode||null,this.signal=R.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&M)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(M)}T.prototype.clone=function(){return new T(this,{body:this._bodyInit})};function P(C){var R=new FormData;return C.trim().split("&").forEach(function(M){if(M){var N=M.split("="),O=N.shift().replace(/\+/g," "),D=N.join("=").replace(/\+/g," ");R.append(decodeURIComponent(O),decodeURIComponent(D))}}),R}function E(C){var R=new p,M=C.replace(/\r?\n[\t ]+/g," ");return M.split(/\r?\n/).forEach(function(N){var O=N.split(":"),D=O.shift().trim();if(D){var L=O.join(":").trim();R.append(D,L)}}),R}_.call(T.prototype);function A(C,R){R||(R={}),this.type="default",this.status=R.status===void 0?200:R.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in R?R.statusText:"OK",this.headers=new p(R.headers),this.url=R.url||"",this._initBody(C)}_.call(A.prototype),A.prototype.clone=function(){return new A(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},A.error=function(){var C=new A(null,{status:0,statusText:""});return C.type="error",C};var $=[301,302,303,307,308];A.redirect=function(C,R){if($.indexOf(R)===-1)throw new RangeError("Invalid status code");return new A(null,{status:R,headers:{location:C}})},s.DOMException=o.DOMException;try{new s.DOMException}catch{s.DOMException=function(R,M){this.message=R,this.name=M;var N=Error(R);this.stack=N.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function I(C,R){return new Promise(function(M,N){var O=new T(C,R);if(O.signal&&O.signal.aborted)return N(new s.DOMException("Aborted","AbortError"));var D=new XMLHttpRequest;function L(){D.abort()}D.onload=function(){var j={status:D.status,statusText:D.statusText,headers:E(D.getAllResponseHeaders()||"")};j.url="responseURL"in D?D.responseURL:j.headers.get("X-Request-URL");var U="response"in D?D.response:D.responseText;M(new A(U,j))},D.onerror=function(){N(new TypeError("Network request failed"))},D.ontimeout=function(){N(new TypeError("Network request failed"))},D.onabort=function(){N(new s.DOMException("Aborted","AbortError"))},D.open(O.method,O.url,!0),O.credentials==="include"?D.withCredentials=!0:O.credentials==="omit"&&(D.withCredentials=!1),"responseType"in D&&a.blob&&(D.responseType="blob"),O.headers.forEach(function(j,U){D.setRequestHeader(U,j)}),O.signal&&(O.signal.addEventListener("abort",L),D.onreadystatechange=function(){D.readyState===4&&O.signal.removeEventListener("abort",L)}),D.send(typeof O._bodyInit>"u"?null:O._bodyInit)})}return I.polyfill=!0,o.fetch||(o.fetch=I,o.Headers=p,o.Request=T,o.Response=A),s.Headers=p,s.Request=T,s.Response=A,s.fetch=I,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}(Wp,Wp.exports)),Wp.exports}(function(e,t){var n;if(typeof fetch=="function"&&(typeof Ee<"u"&&Ee.fetch?n=Ee.fetch:typeof window<"u"&&window.fetch?n=window.fetch:n=fetch),typeof lSe<"u"&&(typeof window>"u"||typeof window.document>"u")){var r=n||uSe();r.default&&(r=r.default),t.default=r,e.exports=t.default}})(Q2,Q2.exports);var VL=Q2.exports;const zL=al(VL),n8=R8({__proto__:null,default:zL},[VL]);function hy(e){"@babel/helpers - typeof";return hy=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},hy(e)}var Do;typeof fetch=="function"&&(typeof global<"u"&&global.fetch?Do=global.fetch:typeof window<"u"&&window.fetch?Do=window.fetch:Do=fetch);var Wf;jL()&&(typeof global<"u"&&global.XMLHttpRequest?Wf=global.XMLHttpRequest:typeof window<"u"&&window.XMLHttpRequest&&(Wf=window.XMLHttpRequest));var py;typeof ActiveXObject=="function"&&(typeof global<"u"&&global.ActiveXObject?py=global.ActiveXObject:typeof window<"u"&&window.ActiveXObject&&(py=window.ActiveXObject));!Do&&n8&&!Wf&&!py&&(Do=zL||n8);typeof Do!="function"&&(Do=void 0);var Z2=function(t,n){if(n&&hy(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},r8=function(t,n,r){Do(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)},i8=!1,cSe=function(t,n,r,i){t.queryStringParams&&(n=Z2(n,t.queryStringParams));var o=Y2({},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=Y2({method:r?"POST":"GET",body:r?t.stringify(r):void 0,headers:o},i8?{}:s);try{r8(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]}),r8(n,a,i),i8=!0}catch(u){i(u)}}},dSe=function(t,n,r,i){r&&hy(r)==="object"&&(r=Z2("",r).slice(1)),t.queryStringParams&&(n=Z2(n,t.queryStringParams));try{var o;Wf?o=new Wf:o=new py("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)}},fSe=function(t,n,r,i){if(typeof r=="function"&&(i=r,r=void 0),i=i||function(){},Do&&n.indexOf("file:")!==0)return cSe(t,n,r,i);if(jL()||typeof ActiveXObject=="function")return dSe(t,n,r,i);i(new Error("No fetch and no xhr implementation found!"))};function Kf(e){"@babel/helpers - typeof";return Kf=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},Kf(e)}function hSe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o8(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};hSe(this,e),this.services=t,this.options=n,this.allOptions=r,this.type="backend",this.init(t,n,r)}return pSe(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=Y2(i,this.options||{},ySe()),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=aSe(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,S){u+=1,c.push(m),d.push(S),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}();GL.type="backend";const vSe=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,bSe={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},SSe=e=>bSe[e],_Se=e=>e.replace(vSe,SSe);let J2={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:_Se};function wSe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};J2={...J2,...e}}function R4e(){return J2}let HL;function xSe(e){HL=e}function O4e(){return HL}const CSe={type:"3rdParty",init(e){wSe(e.options.react),xSe(e)}};zn.use(GL).use(CSe).init({fallbackLng:"en",debug:!1,backend:{loadPath:"/locales/{{lng}}.json"},interpolation:{escapeValue:!1},returnNull:!1});const TSe=e=>{const{socket:t,storeApi:n}=e,{dispatch:r,getState:i}=n;t.on("connect",()=>{fe("socketio").debug("Connected"),r(n7());const{sessionId:s}=i().system;s&&(t.emit("subscribe",{session:s}),r(Vx({sessionId:s})))}),t.on("connect_error",o=>{o&&o.message&&o.data==="ERR_UNAUTHENTICATED"&&r(Ft(Ga({title:o.message,status:"error",duration:1e4})))}),t.on("disconnect",()=>{r(i7())}),t.on("invocation_started",o=>{r(u7({data:o}))}),t.on("generator_progress",o=>{r(g7({data:o}))}),t.on("invocation_error",o=>{r(f7({data:o}))}),t.on("invocation_complete",o=>{r(zx({data:o}))}),t.on("graph_execution_state_complete",o=>{r(h7({data:o}))}),t.on("model_load_started",o=>{r(y7({data:o}))}),t.on("model_load_completed",o=>{r(v7({data:o}))}),t.on("session_retrieval_error",o=>{r(b7({data:o}))}),t.on("invocation_retrieval_error",o=>{r(_7({data:o}))})},ro=Object.create(null);ro.open="0";ro.close="1";ro.ping="2";ro.pong="3";ro.message="4";ro.upgrade="5";ro.noop="6";const Ag=Object.create(null);Object.keys(ro).forEach(e=>{Ag[ro[e]]=e});const ESe={type:"error",data:"parser error"},qL=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",WL=typeof ArrayBuffer=="function",KL=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,f3=({type:e,data:t},n,r)=>qL&&t instanceof Blob?n?r(t):s8(t,r):WL&&(t instanceof ArrayBuffer||KL(t))?n?r(t):s8(new Blob([t]),r):r(ro[e]+(t||"")),s8=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function a8(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let mS;function PSe(e,t){if(qL&&e.data instanceof Blob)return e.data.arrayBuffer().then(a8).then(t);if(WL&&(e.data instanceof ArrayBuffer||KL(e.data)))return t(a8(e.data));f3(e,!1,n=>{mS||(mS=new TextEncoder),t(mS.encode(n))})}const l8="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",md=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},kSe=typeof ArrayBuffer=="function",h3=(e,t)=>{if(typeof e!="string")return{type:"message",data:XL(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:RSe(e.substring(1),t)}:Ag[n]?e.length>1?{type:Ag[n],data:e.substring(1)}:{type:Ag[n]}:ESe},RSe=(e,t)=>{if(kSe){const n=ASe(e);return XL(n,t)}else return{base64:!0,data:e}},XL=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},YL=String.fromCharCode(30),OSe=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,s)=>{f3(o,!1,a=>{r[s]=a,++i===n&&t(r.join(YL))})})},MSe=(e,t)=>{const n=e.split(YL),r=[];for(let i=0;i54;return h3(r?e:yS.decode(e),n)}const QL=4;function Zt(e){if(e)return NSe(e)}function NSe(e){for(var t in Zt.prototype)e[t]=Zt.prototype[t];return e}Zt.prototype.on=Zt.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Zt.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Zt.prototype.off=Zt.prototype.removeListener=Zt.prototype.removeAllListeners=Zt.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 ZL(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const DSe=qr.setTimeout,LSe=qr.clearTimeout;function a1(e,t){t.useNativeTimers?(e.setTimeoutFn=DSe.bind(qr),e.clearTimeoutFn=LSe.bind(qr)):(e.setTimeoutFn=qr.setTimeout.bind(qr),e.clearTimeoutFn=qr.clearTimeout.bind(qr))}const $Se=1.33;function FSe(e){return typeof e=="string"?BSe(e):Math.ceil((e.byteLength||e.size)*$Se)}function BSe(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}function jSe(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function VSe(e){let t={},n=e.split("&");for(let r=0,i=n.length;r0);return t}function e$(){const e=d8(+new Date);return e!==c8?(u8=0,c8=e):e+"."+d8(u8++)}for(;Kp{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)};MSe(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,OSe(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]=e$()),!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 $u(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 $u=class kg extends Zt{constructor(t,n){super(),a1(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=ZL(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;const r=this.xhr=new n$(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=kg.requestsCount++,kg.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=HSe,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete kg.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()}};$u.requestsCount=0;$u.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",f8);else if(typeof addEventListener=="function"){const e="onpagehide"in qr?"pagehide":"unload";addEventListener(e,f8,!1)}}function f8(){for(let e in $u.requests)$u.requests.hasOwnProperty(e)&&$u.requests[e].abort()}const g3=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),Xp=qr.WebSocket||qr.MozWebSocket,h8=!0,KSe="arraybuffer",p8=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class XSe extends p3{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=p8?{}:ZL(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=h8&&!p8?n?new Xp(t,n):new Xp(t):new Xp(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType||KSe,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{h8&&this.ws.send(o)}catch{}i&&g3(()=>{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]=e$()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}check(){return!!Xp}}function YSe(e,t){return e.type==="message"&&typeof e.data!="string"&&t[0]>=48&&t[0]<=54}class QSe extends p3{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=t.readable.getReader();this.writer=t.writable.getWriter();let r;const i=()=>{n.read().then(({done:s,value:a})=>{s||(!r&&a.byteLength===1&&a[0]===54?r=!0:(this.onPacket(ISe(a,r,"arraybuffer")),r=!1),i())}).catch(s=>{})};i();const o=this.query.sid?`0{"sid":"${this.query.sid}"}`:"0";this.writer.write(new TextEncoder().encode(o)).then(()=>this.onOpen())})}))}write(t){this.writable=!1;for(let n=0;n{YSe(r,o)&&this.writer.write(Uint8Array.of(54)),this.writer.write(o).then(()=>{i&&g3(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})})}}doClose(){var t;(t=this.transport)===null||t===void 0||t.close()}}const ZSe={websocket:XSe,webtransport:QSe,polling:WSe},JSe=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,e_e=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function tw(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=JSe.exec(e||""),o={},s=14;for(;s--;)o[e_e[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=t_e(o,o.path),o.queryKey=n_e(o,o.query),o}function t_e(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 n_e(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}let r$=class Zl extends Zt{constructor(t,n={}){super(),this.writeBuffer=[],t&&typeof t=="object"&&(n=t,t=null),t?(t=tw(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=tw(n.host).host),a1(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=VSe(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=QL,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 ZSe[t](r)}open(){let t;if(this.opts.rememberUpgrade&&Zl.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;Zl.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;Zl.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",Zl.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){Zl.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,i$=Object.prototype.toString,s_e=typeof Blob=="function"||typeof Blob<"u"&&i$.call(Blob)==="[object BlobConstructor]",a_e=typeof File=="function"||typeof File<"u"&&i$.call(File)==="[object FileConstructor]";function m3(e){return i_e&&(e instanceof ArrayBuffer||o_e(e))||s_e&&e instanceof Blob||a_e&&e instanceof File}function Rg(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:Ie.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 Ie.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 Ie.EVENT:case Ie.BINARY_EVENT:this.onevent(t);break;case Ie.ACK:case Ie.BINARY_ACK:this.onack(t);break;case Ie.DISCONNECT:this.ondisconnect();break;case Ie.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:Ie.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:Ie.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}Tc.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};Tc.prototype.reset=function(){this.attempts=0};Tc.prototype.setMin=function(e){this.ms=e};Tc.prototype.setMax=function(e){this.max=e};Tc.prototype.setJitter=function(e){this.jitter=e};class iw extends Zt{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,a1(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 Tc({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||p_e;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 r$(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=ui(n,"open",function(){r.onopen(),t&&t()}),o=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),t?t(a):this.maybeReconnectOnOpen()},s=ui(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(ui(t,"ping",this.onping.bind(this)),ui(t,"data",this.ondata.bind(this)),ui(t,"error",this.onerror.bind(this)),ui(t,"close",this.onclose.bind(this)),ui(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){g3(()=>{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 o$(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 sd={};function Og(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=r_e(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,s=sd[i]&&o in sd[i].nsps,a=t.forceNew||t["force new connection"]||t.multiplex===!1||s;let l;return a?l=new iw(r,t):(sd[i]||(sd[i]=new iw(r,t)),l=sd[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(Og,{Manager:iw,Socket:o$,io:Og,connect:Og});const m8=()=>{let e=!1,t=`ws://${window.location.host}`;const n={timeout:6e4,path:"/ws/socket.io",autoConnect:!1};if(["nodes","package"].includes("production")){const o=Tf.get();o&&(t=o.replace(/^https?\:\/\//i,""));const s=Cf.get();s&&(n.auth={token:s}),n.transports=["websocket","polling"]}const r=Og(t,n);return o=>s=>a=>{const{dispatch:l,getState:u}=o;if(e||(TSe({storeApi:o,socket:r}),e=!0,r.connect()),Rn.fulfilled.match(a)){const c=a.payload.id,d=u().system.sessionId;d&&(r.emit("unsubscribe",{session:d}),l(a7({sessionId:d}))),r.emit("subscribe",{session:c}),l(Vx({sessionId:c}))}s(a)}},l1=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ec(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function v3(e){return"nodeType"in e}function or(e){var t,n;return e?Ec(e)?e:v3(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function b3(e){const{Document:t}=or(e);return e instanceof t}function Vh(e){return Ec(e)?!1:e instanceof or(e).HTMLElement}function m_e(e){return e instanceof or(e).SVGElement}function Pc(e){return e?Ec(e)?e.document:v3(e)?b3(e)?e:Vh(e)?e.ownerDocument:document:document:document}const io=l1?k.useLayoutEffect:k.useEffect;function u1(e){const t=k.useRef(e);return io(()=>{t.current=e}),k.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i{e.current=setInterval(r,i)},[]),n=k.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Xf(e,t){t===void 0&&(t=[e]);const n=k.useRef(e);return io(()=>{n.current!==e&&(n.current=e)},t),n}function zh(e,t){const n=k.useRef();return k.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function gy(e){const t=u1(e),n=k.useRef(null),r=k.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function my(e){const t=k.useRef();return k.useEffect(()=>{t.current=e},[e]),t.current}let vS={};function c1(e,t){return k.useMemo(()=>{if(t)return t;const n=vS[e]==null?0:vS[e]+1;return vS[e]=n,e+"-"+n},[e,t])}function s$(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 Fu=s$(1),yy=s$(-1);function v_e(e){return"clientX"in e&&"clientY"in e}function S3(e){if(!e)return!1;const{KeyboardEvent:t}=or(e.target);return t&&e instanceof t}function b_e(e){if(!e)return!1;const{TouchEvent:t}=or(e.target);return t&&e instanceof t}function Yf(e){if(b_e(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 v_e(e)?{x:e.clientX,y:e.clientY}:null}const Qf=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[Qf.Translate.toString(e),Qf.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),y8="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function S_e(e){return e.matches(y8)?e:e.querySelector(y8)}const __e={display:"none"};function w_e(e){let{id:t,value:n}=e;return Xe.createElement("div",{id:t,style:__e},n)}const x_e={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 C_e(e){let{id:t,announcement:n}=e;return Xe.createElement("div",{id:t,style:x_e,role:"status","aria-live":"assertive","aria-atomic":!0},n)}function T_e(){const[e,t]=k.useState("");return{announce:k.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const a$=k.createContext(null);function E_e(e){const t=k.useContext(a$);k.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function P_e(){const[e]=k.useState(()=>new Set),t=k.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[k.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 A_e={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. + `},k_e={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 R_e(e){let{announcements:t=k_e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=A_e}=e;const{announce:o,announcement:s}=T_e(),a=c1("DndLiveRegion"),[l,u]=k.useState(!1);if(k.useEffect(()=>{u(!0)},[]),E_e(k.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=Xe.createElement(Xe.Fragment,null,Xe.createElement(w_e,{id:r,value:i.draggable}),Xe.createElement(C_e,{id:a,announcement:s}));return n?zi.createPortal(c,n):c}var nn;(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"})(nn||(nn={}));function vy(){}function v8(e,t){return k.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function O_e(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const Ei=Object.freeze({x:0,y:0});function M_e(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function I_e(e,t){const n=Yf(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 N_e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function D_e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function L_e(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 $_e(e,t){if(!e||e.length===0)return null;const[n]=e;return t?n[t]:n}function F_e(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=F_e(a,t);l>0&&i.push({id:s,data:{droppableContainer:o,value:l}})}}return i.sort(D_e)};function j_e(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 V_e=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&&j_e(r,a)){const u=L_e(a).reduce((d,f)=>d+M_e(r,f),0),c=Number((u/4).toFixed(4));i.push({id:s,data:{droppableContainer:o,value:c}})}}return i.sort(N_e)};function z_e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function l$(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Ei}function U_e(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 G_e=U_e(1);function u$(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 H_e(e,t,n){const r=u$(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 q_e={ignoreTransform:!1};function Uh(e,t){t===void 0&&(t=q_e);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:c}=or(e).getComputedStyle(e);u&&(n=H_e(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 b8(e){return Uh(e,{ignoreTransform:!0})}function W_e(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function K_e(e,t){return t===void 0&&(t=or(e).getComputedStyle(e)),t.position==="fixed"}function X_e(e,t){t===void 0&&(t=or(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 _3(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(b3(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Vh(i)||m_e(i)||n.includes(i))return n;const o=or(e).getComputedStyle(i);return i!==e&&X_e(i,o)&&n.push(i),K_e(i,o)?n:r(i.parentNode)}return e?r(e):n}function c$(e){const[t]=_3(e,1);return t??null}function bS(e){return!l1||!e?null:Ec(e)?e:v3(e)?b3(e)||e===Pc(e).scrollingElement?window:Vh(e)?e:null:null}function d$(e){return Ec(e)?e.scrollX:e.scrollLeft}function f$(e){return Ec(e)?e.scrollY:e.scrollTop}function ow(e){return{x:d$(e),y:f$(e)}}var hn;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(hn||(hn={}));function h$(e){return!l1||!e?!1:e===document.scrollingElement}function p$(e){const t={x:0,y:0},n=h$(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 Y_e={x:.2,y:.2};function Q_e(e,t,n,r,i){let{top:o,left:s,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=Y_e);const{isTop:u,isBottom:c,isLeft:d,isRight:f}=p$(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=hn.Backward,p.y=r*Math.abs((t.top+m.height-o)/m.height)):!c&&l>=t.bottom-m.height&&(h.y=hn.Forward,p.y=r*Math.abs((t.bottom-m.height-l)/m.height)),!f&&a>=t.right-m.width?(h.x=hn.Forward,p.x=r*Math.abs((t.right-m.width-a)/m.width)):!d&&s<=t.left+m.width&&(h.x=hn.Backward,p.x=r*Math.abs((t.left+m.width-s)/m.width)),{direction:h,speed:p}}function Z_e(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 g$(e){return e.reduce((t,n)=>Fu(t,ow(n)),Ei)}function J_e(e){return e.reduce((t,n)=>t+d$(n),0)}function e2e(e){return e.reduce((t,n)=>t+f$(n),0)}function m$(e,t){if(t===void 0&&(t=Uh),!e)return;const{top:n,left:r,bottom:i,right:o}=t(e);c$(e)&&(i<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const t2e=[["x",["left","right"],J_e],["y",["top","bottom"],e2e]];class w3{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=_3(n),i=g$(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,s,a]of t2e)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 Dd{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 n2e(e){const{EventTarget:t}=or(e);return e instanceof t?e:Pc(e)}function SS(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 Ur;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(Ur||(Ur={}));function S8(e){e.preventDefault()}function r2e(e){e.stopPropagation()}var at;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"})(at||(at={}));const y$={start:[at.Space,at.Enter],cancel:[at.Esc],end:[at.Space,at.Enter]},i2e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case at.Right:return{...n,x:n.x+25};case at.Left:return{...n,x:n.x-25};case at.Down:return{...n,y:n.y+25};case at.Up:return{...n,y:n.y-25}}};class v${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 Dd(Pc(n)),this.windowListeners=new Dd(or(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Ur.Resize,this.handleCancel),this.windowListeners.add(Ur.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Ur.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&m$(r),n(Ei)}handleKeyDown(t){if(S3(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:o=y$,coordinateGetter:s=i2e,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}:Ei;this.referenceCoordinates||(this.referenceCoordinates=c);const d=s(t,{active:n,context:r.current,currentCoordinates:c});if(d){const f=yy(d,c),h={x:0,y:0},{scrollableAncestors:p}=r.current;for(const m of p){const S=t.code,{isTop:v,isRight:y,isLeft:g,isBottom:b,maxScroll:_,minScroll:w}=p$(m),x=Z_e(m),T={x:Math.min(S===at.Right?x.right-x.width/2:x.right,Math.max(S===at.Right?x.left:x.left+x.width/2,d.x)),y:Math.min(S===at.Down?x.bottom-x.height/2:x.bottom,Math.max(S===at.Down?x.top:x.top+x.height/2,d.y))},P=S===at.Right&&!y||S===at.Left&&!g,E=S===at.Down&&!b||S===at.Up&&!v;if(P&&T.x!==d.x){const A=m.scrollLeft+f.x,$=S===at.Right&&A<=_.x||S===at.Left&&A>=w.x;if($&&!f.y){m.scrollTo({left:A,behavior:a});return}$?h.x=m.scrollLeft-A:h.x=S===at.Right?m.scrollLeft-_.x:m.scrollLeft-w.x,h.x&&m.scrollBy({left:-h.x,behavior:a});break}else if(E&&T.y!==d.y){const A=m.scrollTop+f.y,$=S===at.Down&&A<=_.y||S===at.Up&&A>=w.y;if($&&!f.x){m.scrollTo({top:A,behavior:a});return}$?h.y=m.scrollTop-A:h.y=S===at.Down?m.scrollTop-_.y:m.scrollTop-w.y,h.y&&m.scrollBy({top:-h.y,behavior:a});break}}this.handleMove(t,Fu(yy(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()}}v$.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=y$,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 _8(e){return!!(e&&"distance"in e)}function w8(e){return!!(e&&"delay"in e)}class x3{constructor(t,n,r){var i;r===void 0&&(r=n2e(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=Pc(s),this.documentListeners=new Dd(this.document),this.listeners=new Dd(r),this.windowListeners=new Dd(or(s)),this.initialCoordinates=(i=Yf(o))!=null?i:Ei,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(Ur.Resize,this.handleCancel),this.windowListeners.add(Ur.DragStart,S8),this.windowListeners.add(Ur.VisibilityChange,this.handleCancel),this.windowListeners.add(Ur.ContextMenu,S8),this.documentListeners.add(Ur.Keydown,this.handleKeydown),n){if(_8(n))return;if(w8(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(Ur.Click,r2e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Ur.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=Yf(t))!=null?n:Ei,u=yy(i,l);if(!r&&a){if(w8(a))return SS(u,a.tolerance)?this.handleCancel():void 0;if(_8(a))return a.tolerance!=null&&SS(u,a.tolerance)?this.handleCancel():SS(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===at.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const o2e={move:{name:"pointermove"},end:{name:"pointerup"}};class b$ extends x3{constructor(t){const{event:n}=t,r=Pc(n.target);super(t,o2e,r)}}b$.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 s2e={move:{name:"mousemove"},end:{name:"mouseup"}};var sw;(function(e){e[e.RightClick=2]="RightClick"})(sw||(sw={}));class S$ extends x3{constructor(t){super(t,s2e,Pc(t.event.target))}}S$.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===sw.RightClick?!1:(r==null||r({event:n}),!0)}}];const _S={move:{name:"touchmove"},end:{name:"touchend"}};class _$ extends x3{constructor(t){super(t,_S)}static setup(){return window.addEventListener(_S.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(_S.move.name,t)};function t(){}}}_$.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 Ld;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(Ld||(Ld={}));var by;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(by||(by={}));function a2e(e){let{acceleration:t,activator:n=Ld.Pointer,canScroll:r,draggingRect:i,enabled:o,interval:s=5,order:a=by.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:c,delta:d,threshold:f}=e;const h=u2e({delta:d,disabled:!o}),[p,m]=y_e(),S=k.useRef({x:0,y:0}),v=k.useRef({x:0,y:0}),y=k.useMemo(()=>{switch(n){case Ld.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case Ld.DraggableRect:return i}},[n,i,l]),g=k.useRef(null),b=k.useCallback(()=>{const w=g.current;if(!w)return;const x=S.current.x*v.current.x,T=S.current.y*v.current.y;w.scrollBy(x,T)},[]),_=k.useMemo(()=>a===by.TreeOrder?[...u].reverse():u,[a,u]);k.useEffect(()=>{if(!o||!u.length||!y){m();return}for(const w of _){if((r==null?void 0:r(w))===!1)continue;const x=u.indexOf(w),T=c[x];if(!T)continue;const{direction:P,speed:E}=Q_e(w,T,y,t,f);for(const A of["x","y"])h[A][P[A]]||(E[A]=0,P[A]=0);if(E.x>0||E.y>0){m(),g.current=w,p(b,s),S.current=E,v.current=P;return}}S.current={x:0,y:0},v.current={x:0,y:0},m()},[t,b,r,m,o,s,JSON.stringify(y),JSON.stringify(h),p,u,_,c,JSON.stringify(f)])}const l2e={x:{[hn.Backward]:!1,[hn.Forward]:!1},y:{[hn.Backward]:!1,[hn.Forward]:!1}};function u2e(e){let{delta:t,disabled:n}=e;const r=my(t);return zh(i=>{if(n||!r||!i)return l2e;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[hn.Backward]:i.x[hn.Backward]||o.x===-1,[hn.Forward]:i.x[hn.Forward]||o.x===1},y:{[hn.Backward]:i.y[hn.Backward]||o.y===-1,[hn.Forward]:i.y[hn.Forward]||o.y===1}}},[n,t,r])}function c2e(e,t){const n=t!==null?e.get(t):void 0,r=n?n.node.current:null;return zh(i=>{var o;return t===null?null:(o=r??i)!=null?o:null},[r,t])}function d2e(e,t){return k.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 Zf;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Zf||(Zf={}));var aw;(function(e){e.Optimized="optimized"})(aw||(aw={}));const x8=new Map;function f2e(e,t){let{dragging:n,dependencies:r,config:i}=t;const[o,s]=k.useState(null),{frequency:a,measure:l,strategy:u}=i,c=k.useRef(e),d=S(),f=Xf(d),h=k.useCallback(function(v){v===void 0&&(v=[]),!f.current&&s(y=>y===null?v:y.concat(v.filter(g=>!y.includes(g))))},[f]),p=k.useRef(null),m=zh(v=>{if(d&&!n)return x8;if(!v||v===x8||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 b=g.node.current,_=b?new w3(l(b),b):null;g.rect.current=_,_&&y.set(g.id,_)}return y}return v},[e,o,n,d,l]);return k.useEffect(()=>{c.current=e},[e]),k.useEffect(()=>{d||h()},[n,d]),k.useEffect(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),k.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 S(){switch(u){case Zf.Always:return!1;case Zf.BeforeDragging:return n;default:return!n}}}function C3(e,t){return zh(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function h2e(e,t){return C3(e,t)}function p2e(e){let{callback:t,disabled:n}=e;const r=u1(t),i=k.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return k.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function d1(e){let{callback:t,disabled:n}=e;const r=u1(t),i=k.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return k.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function g2e(e){return new w3(Uh(e),e)}function C8(e,t,n){t===void 0&&(t=g2e);const[r,i]=k.useReducer(a,null),o=p2e({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=d1({callback:i});return io(()=>{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 m2e(e){const t=C3(e);return l$(e,t)}const T8=[];function y2e(e){const t=k.useRef(e),n=zh(r=>e?r&&r!==T8&&e&&t.current&&e.parentNode===t.current.parentNode?r:_3(e):T8,[e]);return k.useEffect(()=>{t.current=e},[e]),n}function v2e(e){const[t,n]=k.useState(null),r=k.useRef(e),i=k.useCallback(o=>{const s=bS(o.target);s&&n(a=>a?(a.set(s,ow(s)),new Map(a)):null)},[]);return k.useEffect(()=>{const o=r.current;if(e!==o){s(o);const a=e.map(l=>{const u=bS(l);return u?(u.addEventListener("scroll",i,{passive:!0}),[u,ow(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=bS(l);u==null||u.removeEventListener("scroll",i)})}},[i,e]),k.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,s)=>Fu(o,s),Ei):g$(e):Ei,[e,t])}function E8(e,t){t===void 0&&(t=[]);const n=k.useRef(null);return k.useEffect(()=>{n.current=null},t),k.useEffect(()=>{const r=e!==Ei;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?yy(e,n.current):Ei}function b2e(e){k.useEffect(()=>{if(!l1)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 S2e(e,t){return k.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:o}=r;return n[i]=s=>{o(s,t)},n},{}),[e,t])}function w$(e){return k.useMemo(()=>e?W_e(e):null,[e])}const wS=[];function _2e(e,t){t===void 0&&(t=Uh);const[n]=e,r=w$(n?or(n):null),[i,o]=k.useReducer(a,wS),s=d1({callback:o});return e.length>0&&i===wS&&o(),io(()=>{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=>h$(l)?r:new w3(t(l),l)):wS}}function x$(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Vh(t)?t:e}function w2e(e){let{measure:t}=e;const[n,r]=k.useState(null),i=k.useCallback(u=>{for(const{target:c}of u)if(Vh(c)){r(d=>{const f=t(c);return d?{...d,width:f.width,height:f.height}:f});break}},[t]),o=d1({callback:i}),s=k.useCallback(u=>{const c=x$(u);o==null||o.disconnect(),c&&(o==null||o.observe(c)),r(c?t(c):null)},[t,o]),[a,l]=gy(s);return k.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const x2e=[{sensor:b$,options:{}},{sensor:v$,options:{}}],C2e={current:{}},Mg={draggable:{measure:b8},droppable:{measure:b8,strategy:Zf.WhileDragging,frequency:aw.Optimized},dragOverlay:{measure:Uh}};class $d 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 T2e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new $d,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:vy},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Mg,measureDroppableContainers:vy,windowRect:null,measuringScheduled:!1},C$={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:vy,draggableNodes:new Map,over:null,measureDroppableContainers:vy},Gh=k.createContext(C$),T$=k.createContext(T2e);function E2e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new $d}}}function P2e(e,t){switch(t.type){case nn.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case nn.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 nn.DragEnd:case nn.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case nn.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new $d(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case nn.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 $d(e.droppable.containers);return s.set(n,{...o,disabled:i}),{...e,droppable:{...e.droppable,containers:s}}}case nn.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const o=new $d(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function A2e(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=k.useContext(Gh),o=my(r),s=my(n==null?void 0:n.id);return k.useEffect(()=>{if(!t&&!r&&o&&s!=null){if(!S3(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=S_e(c);if(d){d.focus();break}}})}},[r,t,i,s,o]),null}function E$(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,o)=>o({transform:i,...r}),n):n}function k2e(e){return k.useMemo(()=>({draggable:{...Mg.draggable,...e==null?void 0:e.draggable},droppable:{...Mg.droppable,...e==null?void 0:e.droppable},dragOverlay:{...Mg.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 R2e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const o=k.useRef(!1),{x:s,y:a}=typeof i=="boolean"?{x:i,y:i}:i;io(()=>{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=l$(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=c$(u);f&&f.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const f1=k.createContext({...Ei,scaleX:1,scaleY:1});var hs;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(hs||(hs={}));const O2e=k.memo(function(t){var n,r,i,o;let{id:s,accessibility:a,autoScroll:l=!0,children:u,sensors:c=x2e,collisionDetection:d=B_e,measuring:f,modifiers:h,...p}=t;const m=k.useReducer(P2e,void 0,E2e),[S,v]=m,[y,g]=P_e(),[b,_]=k.useState(hs.Uninitialized),w=b===hs.Initialized,{draggable:{active:x,nodes:T,translate:P},droppable:{containers:E}}=S,A=x?T.get(x):null,$=k.useRef({initial:null,translated:null}),I=k.useMemo(()=>{var Ct;return x!=null?{id:x,data:(Ct=A==null?void 0:A.data)!=null?Ct:C2e,rect:$}:null},[x,A]),C=k.useRef(null),[R,M]=k.useState(null),[N,O]=k.useState(null),D=Xf(p,Object.values(p)),L=c1("DndDescribedBy",s),j=k.useMemo(()=>E.getEnabled(),[E]),U=k2e(f),{droppableRects:G,measureDroppableContainers:W,measuringScheduled:X}=f2e(j,{dragging:w,dependencies:[P.x,P.y],config:U.droppable}),Y=c2e(T,x),B=k.useMemo(()=>N?Yf(N):null,[N]),H=da(),Q=h2e(Y,U.draggable.measure);R2e({activeNode:x?T.get(x):null,config:H.layoutShiftCompensation,initialRect:Q,measure:U.draggable.measure});const J=C8(Y,U.draggable.measure,Q),ne=C8(Y?Y.parentElement:null),te=k.useRef({activatorEvent:null,active:null,activeNode:Y,collisionRect:null,collisions:null,droppableRects:G,draggableNodes:T,draggingNode:null,draggingNodeRect:null,droppableContainers:E,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),xe=E.getNodeFor((n=te.current.over)==null?void 0:n.id),ve=w2e({measure:U.dragOverlay.measure}),ce=(r=ve.nodeRef.current)!=null?r:Y,Ne=w?(i=ve.rect)!=null?i:J:null,se=!!(ve.nodeRef.current&&ve.rect),gt=m2e(se?null:J),vn=w$(ce?or(ce):null),Mt=y2e(w?xe??Y:null),ut=_2e(Mt),tt=E$(h,{transform:{x:P.x-gt.x,y:P.y-gt.y,scaleX:1,scaleY:1},activatorEvent:N,active:I,activeNodeRect:J,containerNodeRect:ne,draggingNodeRect:Ne,over:te.current.over,overlayNodeRect:ve.rect,scrollableAncestors:Mt,scrollableAncestorRects:ut,windowRect:vn}),Gt=B?Fu(B,P):null,sr=v2e(Mt),ni=E8(sr),Lr=E8(sr,[J]),On=Fu(tt,ni),bn=Ne?G_e(Ne,tt):null,Un=I&&bn?d({active:I,collisionRect:bn,droppableRects:G,droppableContainers:j,pointerCoordinates:Gt}):null,Ht=$_e(Un,"id"),[xt,wr]=k.useState(null),$r=se?tt:Fu(tt,Lr),ri=z_e($r,(o=xt==null?void 0:xt.rect)!=null?o:null,J),uo=k.useCallback((Ct,nt)=>{let{sensor:_n,options:ln}=nt;if(C.current==null)return;const Mn=T.get(C.current);if(!Mn)return;const Gn=Ct.nativeEvent,ar=new _n({active:C.current,activeNode:Mn,event:Gn,options:ln,context:te,onStart(Hn){const wn=C.current;if(wn==null)return;const co=T.get(wn);if(!co)return;const{onDragStart:Zo}=D.current,Jo={active:{id:wn,data:co.data,rect:$}};zi.unstable_batchedUpdates(()=>{Zo==null||Zo(Jo),_(hs.Initializing),v({type:nn.DragStart,initialCoordinates:Hn,active:wn}),y({type:"onDragStart",event:Jo})})},onMove(Hn){v({type:nn.DragMove,coordinates:Hn})},onEnd:Ri(nn.DragEnd),onCancel:Ri(nn.DragCancel)});zi.unstable_batchedUpdates(()=>{M(ar),O(Ct.nativeEvent)});function Ri(Hn){return async function(){const{active:co,collisions:Zo,over:Jo,scrollAdjustedTranslate:Al}=te.current;let fo=null;if(co&&Al){const{cancelDrop:qn}=D.current;fo={activatorEvent:Gn,active:co,collisions:Zo,delta:Al,over:Jo},Hn===nn.DragEnd&&typeof qn=="function"&&await Promise.resolve(qn(fo))&&(Hn=nn.DragCancel)}C.current=null,zi.unstable_batchedUpdates(()=>{v({type:Hn}),_(hs.Uninitialized),wr(null),M(null),O(null);const qn=Hn===nn.DragEnd?"onDragEnd":"onDragCancel";if(fo){const fa=D.current[qn];fa==null||fa(fo),y({type:qn,event:fo})}})}}},[T]),Sn=k.useCallback((Ct,nt)=>(_n,ln)=>{const Mn=_n.nativeEvent,Gn=T.get(ln);if(C.current!==null||!Gn||Mn.dndKit||Mn.defaultPrevented)return;const ar={active:Gn};Ct(_n,nt.options,ar)===!0&&(Mn.dndKit={capturedBy:nt.sensor},C.current=ln,uo(_n,nt))},[T,uo]),ii=d2e(c,Sn);b2e(c),io(()=>{J&&b===hs.Initializing&&_(hs.Initialized)},[J,b]),k.useEffect(()=>{const{onDragMove:Ct}=D.current,{active:nt,activatorEvent:_n,collisions:ln,over:Mn}=te.current;if(!nt||!_n)return;const Gn={active:nt,activatorEvent:_n,collisions:ln,delta:{x:On.x,y:On.y},over:Mn};zi.unstable_batchedUpdates(()=>{Ct==null||Ct(Gn),y({type:"onDragMove",event:Gn})})},[On.x,On.y]),k.useEffect(()=>{const{active:Ct,activatorEvent:nt,collisions:_n,droppableContainers:ln,scrollAdjustedTranslate:Mn}=te.current;if(!Ct||C.current==null||!nt||!Mn)return;const{onDragOver:Gn}=D.current,ar=ln.get(Ht),Ri=ar&&ar.rect.current?{id:ar.id,rect:ar.rect.current,data:ar.data,disabled:ar.disabled}:null,Hn={active:Ct,activatorEvent:nt,collisions:_n,delta:{x:Mn.x,y:Mn.y},over:Ri};zi.unstable_batchedUpdates(()=>{wr(Ri),Gn==null||Gn(Hn),y({type:"onDragOver",event:Hn})})},[Ht]),io(()=>{te.current={activatorEvent:N,active:I,activeNode:Y,collisionRect:bn,collisions:Un,droppableRects:G,draggableNodes:T,draggingNode:ce,draggingNodeRect:Ne,droppableContainers:E,over:xt,scrollableAncestors:Mt,scrollAdjustedTranslate:On},$.current={initial:Ne,translated:bn}},[I,Y,Un,bn,T,ce,Ne,G,E,xt,Mt,On]),a2e({...H,delta:P,draggingRect:bn,pointerCoordinates:Gt,scrollableAncestors:Mt,scrollableAncestorRects:ut});const ca=k.useMemo(()=>({active:I,activeNode:Y,activeNodeRect:J,activatorEvent:N,collisions:Un,containerNodeRect:ne,dragOverlay:ve,draggableNodes:T,droppableContainers:E,droppableRects:G,over:xt,measureDroppableContainers:W,scrollableAncestors:Mt,scrollableAncestorRects:ut,measuringConfiguration:U,measuringScheduled:X,windowRect:vn}),[I,Y,J,N,Un,ne,ve,T,E,G,xt,W,Mt,ut,U,X,vn]),ki=k.useMemo(()=>({activatorEvent:N,activators:ii,active:I,activeNodeRect:J,ariaDescribedById:{draggable:L},dispatch:v,draggableNodes:T,over:xt,measureDroppableContainers:W}),[N,ii,I,J,v,L,T,xt,W]);return Xe.createElement(a$.Provider,{value:g},Xe.createElement(Gh.Provider,{value:ki},Xe.createElement(T$.Provider,{value:ca},Xe.createElement(f1.Provider,{value:ri},u)),Xe.createElement(A2e,{disabled:(a==null?void 0:a.restoreFocus)===!1})),Xe.createElement(R_e,{...a,hiddenTextDescribedById:L}));function da(){const Ct=(R==null?void 0:R.autoScrollEnabled)===!1,nt=typeof l=="object"?l.enabled===!1:l===!1,_n=w&&!Ct&&!nt;return typeof l=="object"?{...l,enabled:_n}:{enabled:_n}}}),M2e=k.createContext(null),P8="button",I2e="Droppable";function N2e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const o=c1(I2e),{activators:s,activatorEvent:a,active:l,activeNodeRect:u,ariaDescribedById:c,draggableNodes:d,over:f}=k.useContext(Gh),{role:h=P8,roleDescription:p="draggable",tabIndex:m=0}=i??{},S=(l==null?void 0:l.id)===t,v=k.useContext(S?f1:M2e),[y,g]=gy(),[b,_]=gy(),w=S2e(s,t),x=Xf(n);io(()=>(d.set(t,{id:t,key:o,node:y,activatorNode:b,data:x}),()=>{const P=d.get(t);P&&P.key===o&&d.delete(t)}),[d,t]);const T=k.useMemo(()=>({role:h,tabIndex:m,"aria-disabled":r,"aria-pressed":S&&h===P8?!0:void 0,"aria-roledescription":p,"aria-describedby":c.draggable}),[r,h,m,S,p,c.draggable]);return{active:l,activatorEvent:a,activeNodeRect:u,attributes:T,isDragging:S,listeners:r?void 0:w,node:y,over:f,setNodeRef:g,setActivatorNodeRef:_,transform:v}}function D2e(){return k.useContext(T$)}const L2e="Droppable",$2e={timeout:25};function F2e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const o=c1(L2e),{active:s,dispatch:a,over:l,measureDroppableContainers:u}=k.useContext(Gh),c=k.useRef({disabled:n}),d=k.useRef(!1),f=k.useRef(null),h=k.useRef(null),{disabled:p,updateMeasurementsFor:m,timeout:S}={...$2e,...i},v=Xf(m??r),y=k.useCallback(()=>{if(!d.current){d.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{u(Array.isArray(v.current)?v.current:[v.current]),h.current=null},S)},[S]),g=d1({callback:y,disabled:p||!s}),b=k.useCallback((T,P)=>{g&&(P&&(g.unobserve(P),d.current=!1),T&&g.observe(T))},[g]),[_,w]=gy(b),x=Xf(t);return k.useEffect(()=>{!g||!_.current||(g.disconnect(),d.current=!1,g.observe(_.current))},[_,g]),io(()=>(a({type:nn.RegisterDroppable,element:{id:r,key:o,disabled:n,node:_,rect:f,data:x}}),()=>a({type:nn.UnregisterDroppable,key:o,id:r})),[r]),k.useEffect(()=>{n!==c.current.disabled&&(a({type:nn.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:_,over:l,setNodeRef:w}}function B2e(e){let{animation:t,children:n}=e;const[r,i]=k.useState(null),[o,s]=k.useState(null),a=my(n);return!n&&!r&&a&&i(a),io(()=>{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]),Xe.createElement(Xe.Fragment,null,n,r?k.cloneElement(r,{ref:s}):null)}const j2e={x:0,y:0,scaleX:1,scaleY:1};function V2e(e){let{children:t}=e;return Xe.createElement(Gh.Provider,{value:C$},Xe.createElement(f1.Provider,{value:j2e},t))}const z2e={position:"fixed",touchAction:"none"},U2e=e=>S3(e)?"transform 250ms ease":void 0,G2e=k.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:o,className:s,rect:a,style:l,transform:u,transition:c=U2e}=e;if(!a)return null;const d=i?u:{...u,scaleX:1,scaleY:1},f={...z2e,width:a.width,height:a.height,top:a.top,left:a.left,transform:Qf.Transform.toString(d),transformOrigin:i&&r?I_e(r,a):void 0,transition:typeof c=="function"?c(r):c,...l};return Xe.createElement(n,{className:s,style:f,ref:t},o)}),H2e=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)}},q2e=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:Qf.Transform.toString(t)},{transform:Qf.Transform.toString(n)}]},W2e={duration:250,easing:"ease",keyframes:q2e,sideEffects:H2e({styles:{active:{opacity:"0"}}})};function K2e(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return u1((o,s)=>{if(t===null)return;const a=n.get(o);if(!a)return;const l=a.node.current;if(!l)return;const u=x$(s);if(!u)return;const{transform:c}=or(s).getComputedStyle(s),d=u$(c);if(!d)return;const f=typeof t=="function"?t:X2e(t);return m$(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 X2e(e){const{duration:t,easing:n,sideEffects:r,keyframes:i}={...W2e,...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 S=r==null?void 0:r({active:s,dragOverlay:a,...u}),v=a.node.animate(h,{duration:t,easing:n,fill:"forwards"});return new Promise(y=>{v.onfinish=()=>{S==null||S(),y()}})}}let A8=0;function Y2e(e){return k.useMemo(()=>{if(e!=null)return A8++,A8},[e])}const Q2e=Xe.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:S,over:v,measuringConfiguration:y,scrollableAncestors:g,scrollableAncestorRects:b,windowRect:_}=D2e(),w=k.useContext(f1),x=Y2e(d==null?void 0:d.id),T=E$(s,{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggingNodeRect:S.rect,over:v,overlayNodeRect:S.rect,scrollableAncestors:g,scrollableAncestorRects:b,transform:w,windowRect:_}),P=C3(f),E=K2e({config:r,draggableNodes:p,droppableContainers:m,measuringConfiguration:y}),A=P?S.setRef:void 0;return Xe.createElement(V2e,null,Xe.createElement(B2e,{animation:E},d&&x?Xe.createElement(G2e,{key:x,id:d.id,ref:A,as:a,activatorEvent:c,adjustScale:t,className:l,transition:o,rect:P,style:{zIndex:u,...i},transform:T},n):null))}),Z2e=e=>{let{activatorEvent:t,draggingNodeRect:n,transform:r}=e;if(n&&t){const i=Yf(t);if(!i)return r;const o=i.x-n.left,s=i.y-n.top;return{...r,x:r.x+o-n.width/2,y:r.y+s-n.height/2}}return r},P$=()=>ak(),M4e=J9,Yp=28,k8={w:Yp,h:Yp,maxW:Yp,maxH:Yp,shadow:"dark-lg",borderRadius:"lg",opacity:.3,bg:"base.800",color:"base.50",_dark:{borderColor:"base.200",bg:"base.900",color:"base.100"}},J2e=e=>{if(!e.dragData)return null;if(e.dragData.payloadType==="IMAGE_DTO"){const{thumbnail_url:t,width:n,height:r}=e.dragData.payload.imageDTO;return K.jsx(c3,{sx:{position:"relative",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",userSelect:"none",cursor:"none"},children:K.jsx(u3,{sx:{...k8},objectFit:"contain",src:t,width:n,height:r})})}return e.dragData.payloadType==="IMAGE_NAMES"?K.jsxs(d3,{sx:{cursor:"none",userSelect:"none",position:"relative",alignItems:"center",justifyContent:"center",flexDir:"column",...k8},children:[K.jsx(K2,{children:e.dragData.payload.image_names.length}),K.jsx(K2,{size:"sm",children:"Images"})]}):null},ewe=k.memo(J2e);function I4e(e){return F2e(e)}function N4e(e){return N2e(e)}const D4e=(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"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_NAMES";case"ADD_TO_BATCH":return r==="IMAGE_DTO"||"IMAGE_NAMES";case"MOVE_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_NAMES"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:o}=t.data.current.payload,s=o.board_id,a=e.context.boardId;return!(s===a)&&(s?!0:a)}return r!=="IMAGE_NAMES"}default:return!1}};function twe(e){return K.jsx(O2e,{...e})}const nwe=e=>{const[t,n]=k.useState(null),r=P$(),i=k.useCallback(u=>{console.log("dragStart",u.active.data.current);const c=u.active.data.current;c&&n(c)},[]),o=k.useCallback(u=>{var d;console.log("dragEnd",u.active.data.current);const c=(d=u.over)==null?void 0:d.data.current;!t||!c||(r(tN({overData:c,activeData:t})),n(null))},[t,r]),s=v8(S$,{activationConstraint:{distance:10}}),a=v8(_$,{activationConstraint:{distance:10}}),l=O_e(s,a);return K.jsxs(twe,{onDragStart:i,onDragEnd:o,sensors:l,collisionDetection:V_e,children:[e.children,K.jsx(Q2e,{dropAnimation:null,modifiers:[Z2e],children:K.jsx(Hbe,{children:t&&K.jsx($be.div,{layout:!0,initial:{opacity:0,scale:.7},animate:{opacity:1,scale:1,transition:{duration:.1}},children:K.jsx(ewe,{dragData:t})},"overlay-drag-image")})})]})},rwe=k.memo(nwe),iwe=k.createContext({isOpen:!1,onClose:()=>{},onClickAddToBoard:()=>{},handleAddToBoard:()=>{}}),owe=e=>{const[t,n]=k.useState(),{isOpen:r,onOpen:i,onClose:o}=Jbe(),s=P$(),a=k.useCallback(()=>{n(void 0),o()},[o]),l=k.useCallback(c=>{c&&(n(c),i())},[n,i]),u=k.useCallback(c=>{t&&(s(he.endpoints.addImageToBoard.initiate({imageDTO:t,board_id:c})),a())},[s,a,t]);return K.jsx(iwe.Provider,{value:{isOpen:r,image:t,onClose:a,onClickAddToBoard:l,handleAddToBoard:u},children:e.children})},swe=k.lazy(()=>G9(()=>import("./App-d6f88f50.js"),["./App-d6f88f50.js","./MantineProvider-c592f969.js","./App-6125620a.css"],import.meta.url)),awe=k.lazy(()=>G9(()=>import("./ThemeLocaleProvider-94e0a1e5.js"),["./ThemeLocaleProvider-94e0a1e5.js","./MantineProvider-c592f969.js","./ThemeLocaleProvider-5b992bc7.css"],import.meta.url)),lwe=({apiUrl:e,token:t,config:n,headerComponent:r,middleware:i})=>(k.useEffect(()=>(t&&Cf.set(t),e&&Tf.set(e),zI(),i&&i.length>0?c2(m8(),...i):c2(m8()),()=>{Tf.set(void 0),Cf.set(void 0)}),[e,t,i]),K.jsx(Xe.StrictMode,{children:K.jsx(mV,{store:Gpe,children:K.jsx(Xe.Suspense,{fallback:K.jsx(rSe,{}),children:K.jsx(awe,{children:K.jsx(rwe,{children:K.jsx(owe,{children:K.jsx(swe,{config:n,headerComponent:r})})})})})})})),uwe=k.memo(lwe);xS.createRoot(document.getElementById("root")).render(K.jsx(uwe,{}));export{fD as $,K as A,ti as B,Vt as C,Iu as D,Vn as E,fi as F,Xne as G,br as H,Ms as I,$i as J,B3e as K,_M as L,cre as M,jre as N,ote as O,Zne as P,rc as Q,Nge as R,df as S,Tl as T,sl as U,oD as V,y4e as W,p4e as X,Hbe as Y,$be as Z,P4e as _,Zk as a,U_ as a$,$L as a0,mD as a1,g4e as a2,m4e as a3,Ige as a4,Mge as a5,v4e as a6,Na as a7,al as a8,rm as a9,d3 as aA,K2 as aB,u4e as aC,jN as aD,e3e as aE,Y4 as aF,cCe as aG,zi as aH,BC as aI,nF as aJ,hwe as aK,dwe as aL,fwe as aM,Ee as aN,Ea as aO,E3e as aP,YI as aQ,C3e as aR,T3e as aS,w3e as aT,v3e as aU,Ipe as aV,I4e as aW,D4e as aX,_3e as aY,I3e as aZ,XCe as a_,MV as aa,Xe as ab,e8 as ac,uye as ad,E4e as ae,Mo as af,rD as ag,O1e as ah,_4e as ai,O2 as aj,h4e as ak,T4e as al,Jn as am,mC as an,S0 as ao,M4e as ap,V3e as aq,Th as ar,nI as as,AI as at,Z0 as au,P$ as av,y5e as aw,Ft as ax,Ga as ay,c3 as az,Tx as b,M7 as b$,x3e as b0,u3 as b1,tSe as b2,Sxe as b3,Ss as b4,R5e as b5,hp as b6,bge as b7,FC as b8,ZN as b9,ue as bA,iwe as bB,YCe as bC,dJ as bD,n3e as bE,$O as bF,Zxe as bG,OO as bH,G_ as bI,N4e as bJ,f4e as bK,M3e as bL,ZCe as bM,JCe as bN,Os as bO,Vle as bP,WCe as bQ,KCe as bR,HCe as bS,Jbe as bT,Am as bU,l4e as bV,L5e as bW,vxe as bX,ble as bY,h5e as bZ,N3e as b_,_ge as ba,$3 as bb,R3e as bc,k3e as bd,cwe as be,vwe as bf,bwe as bg,Vwe as bh,zwe as bi,Cwe as bj,Kwe as bk,_we as bl,Nwe as bm,Pwe as bn,Jle as bo,wwe as bp,Uwe as bq,Swe as br,Jwe as bs,Twe as bt,Dwe as bu,Ewe as bv,Lwe as bw,Rwe as bx,Fwe as by,Zle as bz,AU as c,dxe as c$,eN as c0,M5e as c1,qCe as c2,r3e as c3,T7 as c4,LO as c5,xwe as c6,Txe as c7,zn as c8,x5e as c9,S5e as cA,xo as cB,ace as cC,Qa as cD,Owe as cE,Ph as cF,V5e as cG,pwe as cH,o5e as cI,i5e as cJ,r5e as cK,F5e as cL,i4e as cM,c5e as cN,l5e as cO,fe as cP,xf as cQ,Q5e as cR,wE as cS,u5e as cT,d5e as cU,a5e as cV,Xse as cW,Bwe as cX,pQ as cY,z5e as cZ,PO as c_,I5e as ca,O5e as cb,Qae as cc,w5e as cd,E5e as ce,P5e as cf,vQ as cg,vae as ch,bae as ci,mxe as cj,Cxe as ck,T5e as cl,_Q as cm,j3e as cn,m5e as co,EO as cp,y3e as cq,p3e as cr,g3e as cs,m3e as ct,cxe as cu,exe as cv,sxe as cw,jwe as cx,v5e as cy,hl as cz,mX as d,GM as d$,bQ as d0,Ui as d1,$we as d2,Ywe as d3,ywe as d4,aY as d5,Zwe as d6,s5e as d7,fxe as d8,n5e as d9,h3e as dA,C7 as dB,s3e as dC,l3e as dD,i3e as dE,Spe as dF,o3e as dG,axe as dH,lxe as dI,ixe as dJ,oxe as dK,rxe as dL,J5e as dM,q5e as dN,k5e as dO,H5e as dP,r4e as dQ,Z5e as dR,A5e as dS,K5e as dT,W5e as dU,U5e as dV,Y5e as dW,mwe as dX,G5e as dY,X5e as dZ,gwe as d_,hce as da,pxe as db,he as dc,Kn as dd,$5e as de,L3e as df,$3e as dg,N7 as dh,j5e as di,D3e as dj,hO as dk,uxe as dl,sY as dm,kwe as dn,B5e as dp,bT as dq,u3e as dr,Hx as ds,tJ as dt,Xl as du,ST as dv,c3e as dw,d3e as dx,f3e as dy,nJ as dz,ZR as e,ICe as e$,Lx as e0,e4e as e1,Fm as e2,pe as e3,t4e as e4,u2 as e5,Awe as e6,n4e as e7,J9 as e8,ak as e9,ECe as eA,FCe as eB,Ple as eC,zxe as eD,fCe as eE,nd as eF,lCe as eG,Uxe as eH,tv as eI,dCe as eJ,Bxe as eK,uCe as eL,jxe as eM,qxe as eN,kxe as eO,Axe as eP,Pxe as eQ,$Ce as eR,IO as eS,Cf as eT,Nxe as eU,Dxe as eV,Lxe as eW,NCe as eX,Kxe as eY,Wxe as eZ,FQ as e_,t5e as ea,K3e as eb,X3e as ec,Y3e as ed,OI as ee,J3e as ef,e5e as eg,Df as eh,_0 as ei,G3e as ej,Dpe as ek,z3e as el,U3e as em,q3e as en,H3e as eo,W3e as ep,Z3e as eq,$ie as er,eI as es,oN as et,CF as eu,Pe as ev,yCe as ew,LCe as ex,DCe as ey,Yxe as ez,sR as f,x4e as f$,Ele as f0,Gxe as f1,mpe as f2,bpe as f3,eCe as f4,tCe as f5,vCe as f6,mCe as f7,hCe as f8,Rxe as f9,xle as fA,Cle as fB,Mxe as fC,hxe as fD,yQ as fE,txe as fF,Ixe as fG,rCe as fH,zCe as fI,Gwe as fJ,Hwe as fK,qwe as fL,Wwe as fM,iCe as fN,a4e as fO,bxe as fP,AO as fQ,wxe as fR,_xe as fS,xxe as fT,iY as fU,yle as fV,d4e as fW,iD as fX,C4e as fY,w4e as fZ,b4e as f_,Oxe as fa,N5e as fb,D5e as fc,aCe as fd,Jxe as fe,bCe as ff,TCe as fg,SCe as fh,Xxe as fi,Vxe as fj,MCe as fk,OCe as fl,xCe as fm,_Ce as fn,wCe as fo,UCe as fp,kCe as fq,GCe as fr,sCe as fs,oCe as ft,Fxe as fu,$xe as fv,VCe as fw,Qxe as fx,Tle as fy,wle as fz,uX as g,Wi as g0,S4e as g1,c4e as g2,aye as g3,Yme as g4,A4e as g5,R4e as g6,O4e as g7,gR as h,vr as i,mc as j,v0 as k,mn as l,y0 as m,hh as n,Ci as o,ta as p,g0 as q,oo as r,gh as s,hb as t,_x as u,iR as v,kx as w,HR as x,aR as y,k as z}; diff --git a/invokeai/frontend/web/dist/assets/index-e2437518.js b/invokeai/frontend/web/dist/assets/index-e2437518.js deleted file mode 100644 index cf22438196..0000000000 --- a/invokeai/frontend/web/dist/assets/index-e2437518.js +++ /dev/null @@ -1,125 +0,0 @@ -function qA(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 Cl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Hj(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){if(this instanceof r){var i=[null];i.push.apply(i,arguments);var o=Function.bind.apply(t,i);return new o}return 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 WA={exports:{}},v0={},KA={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 $h=Symbol.for("react.element"),qj=Symbol.for("react.portal"),Wj=Symbol.for("react.fragment"),Kj=Symbol.for("react.strict_mode"),Yj=Symbol.for("react.profiler"),Xj=Symbol.for("react.provider"),Qj=Symbol.for("react.context"),Zj=Symbol.for("react.forward_ref"),Jj=Symbol.for("react.suspense"),eV=Symbol.for("react.memo"),tV=Symbol.for("react.lazy"),m4=Symbol.iterator;function nV(e){return e===null||typeof e!="object"?null:(e=m4&&e[m4]||e["@@iterator"],typeof e=="function"?e:null)}var YA={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},XA=Object.assign,QA={};function Fc(e,t,n){this.props=e,this.context=t,this.refs=QA,this.updater=n||YA}Fc.prototype.isReactComponent={};Fc.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")};Fc.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ZA(){}ZA.prototype=Fc.prototype;function Ax(e,t,n){this.props=e,this.context=t,this.refs=QA,this.updater=n||YA}var Ox=Ax.prototype=new ZA;Ox.constructor=Ax;XA(Ox,Fc.prototype);Ox.isPureReactComponent=!0;var y4=Array.isArray,JA=Object.prototype.hasOwnProperty,Rx={current:null},e9={key:!0,ref:!0,__self:!0,__source:!0};function t9(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)JA.call(t,r)&&!e9.hasOwnProperty(r)&&(i[r]=t[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,z=R[V];if(0>>1;Vi(W,L))Xi(F,W)?(R[V]=F,R[X]=L,V=X):(R[V]=W,R[K]=L,V=K);else if(Xi(F,L))R[V]=F,R[X]=L,V=X;else break e}}return D}function i(R,D){var L=R.sortIndex-D.sortIndex;return L!==0?L:R.id-D.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,S=typeof setTimeout=="function"?setTimeout:null,v=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 D=n(u);D!==null;){if(D.callback===null)r(u);else if(D.startTime<=R)r(u),D.sortIndex=D.expirationTime,t(l,D);else break;D=n(u)}}function b(R){if(m=!1,g(R),!p)if(n(l)!==null)p=!0,I(_);else{var D=n(u);D!==null&&M(b,D.startTime-R)}}function _(R,D){p=!1,m&&(m=!1,v(C),C=-1),h=!0;var L=f;try{for(g(D),d=n(l);d!==null&&(!(d.expirationTime>D)||R&&!A());){var V=d.callback;if(typeof V=="function"){d.callback=null,f=d.priorityLevel;var z=V(d.expirationTime<=D);D=e.unstable_now(),typeof z=="function"?d.callback=z:d===n(l)&&r(l),g(D)}else r(l);d=n(l)}if(d!==null)var U=!0;else{var K=n(u);K!==null&&M(b,K.startTime-D),U=!1}return U}finally{d=null,f=L,h=!1}}var w=!1,x=null,C=-1,k=5,P=-1;function A(){return!(e.unstable_now()-PR||125V?(R.sortIndex=L,t(u,R),n(l)===null&&R===n(u)&&(m?(v(C),C=-1):m=!0,M(b,L-V))):(R.sortIndex=z,t(l,R),p||h||(p=!0,I(_))),R},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(R){var D=f;return function(){var L=f;f=D;try{return R.apply(this,arguments)}finally{f=L}}}})(o9);i9.exports=o9;var hV=i9.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 s9=E,Ur=hV;function te(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"),B_=Object.prototype.hasOwnProperty,pV=/^[: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]*$/,S4={},_4={};function gV(e){return B_.call(_4,e)?!0:B_.call(S4,e)?!1:pV.test(e)?_4[e]=!0:(S4[e]=!0,!1)}function mV(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 yV(e,t,n,r){if(t===null||typeof t>"u"||mV(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 mr(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 zn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){zn[e]=new mr(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];zn[t]=new mr(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){zn[e]=new mr(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){zn[e]=new mr(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){zn[e]=new mr(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){zn[e]=new mr(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){zn[e]=new mr(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){zn[e]=new mr(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){zn[e]=new mr(e,5,!1,e.toLowerCase(),null,!1,!1)});var Mx=/[\-:]([a-z])/g;function Nx(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(Mx,Nx);zn[t]=new mr(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(Mx,Nx);zn[t]=new mr(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(Mx,Nx);zn[t]=new mr(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){zn[e]=new mr(e,1,!1,e.toLowerCase(),null,!1,!1)});zn.xlinkHref=new mr("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){zn[e]=new mr(e,1,!1,e.toLowerCase(),null,!0,!0)});function Dx(e,t,n,r){var i=zn.hasOwnProperty(t)?zn[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:"")?$d(e):""}function vV(e){switch(e.tag){case 5:return $d(e.type);case 16:return $d("Lazy");case 13:return $d("Suspense");case 19:return $d("SuspenseList");case 0:case 2:case 15:return e=Ub(e.type,!1),e;case 11:return e=Ub(e.type.render,!1),e;case 1:return e=Ub(e.type,!0),e;default:return""}}function U_(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 vu:return"Fragment";case yu:return"Portal";case j_:return"Profiler";case Lx:return"StrictMode";case V_:return"Suspense";case z_:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case u9:return(e.displayName||"Context")+".Consumer";case l9:return(e._context.displayName||"Context")+".Provider";case $x:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Fx:return t=e.displayName||null,t!==null?t:U_(e.type)||"Memo";case Is:t=e._payload,e=e._init;try{return U_(e(t))}catch{}}return null}function bV(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 U_(t);case 8:return t===Lx?"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 aa(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function d9(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function SV(e){var t=d9(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 Bp(e){e._valueTracker||(e._valueTracker=SV(e))}function f9(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=d9(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function km(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 G_(e,t){var n=t.checked;return Ft({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function x4(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=aa(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 h9(e,t){t=t.checked,t!=null&&Dx(e,"checked",t,!1)}function H_(e,t){h9(e,t);var n=aa(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")?q_(e,t.type,n):t.hasOwnProperty("defaultValue")&&q_(e,t.type,aa(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function C4(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 q_(e,t,n){(t!=="number"||km(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Fd=Array.isArray;function Lu(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=jp.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Sf(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Yd={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},_V=["Webkit","ms","Moz","O"];Object.keys(Yd).forEach(function(e){_V.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Yd[t]=Yd[e]})});function y9(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Yd.hasOwnProperty(e)&&Yd[e]?(""+t).trim():t+"px"}function v9(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=y9(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var wV=Ft({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 Y_(e,t){if(t){if(wV[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(te(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(te(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(te(61))}if(t.style!=null&&typeof t.style!="object")throw Error(te(62))}}function X_(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 Q_=null;function Bx(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Z_=null,$u=null,Fu=null;function P4(e){if(e=jh(e)){if(typeof Z_!="function")throw Error(te(280));var t=e.stateNode;t&&(t=x0(t),Z_(e.stateNode,e.type,t))}}function b9(e){$u?Fu?Fu.push(e):Fu=[e]:$u=e}function S9(){if($u){var e=$u,t=Fu;if(Fu=$u=null,P4(e),t)for(e=0;e>>=0,e===0?32:31-(MV(e)/NV|0)|0}var Vp=64,zp=4194304;function Bd(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 Im(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=Bd(a):(o&=s,o!==0&&(r=Bd(o)))}else s=n&~i,s!==0?r=Bd(s):o!==0&&(r=Bd(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 Fh(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ni(t),e[t]=n}function FV(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=Qd),L4=String.fromCharCode(32),$4=!1;function j9(e,t){switch(e){case"keyup":return fz.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function V9(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var bu=!1;function pz(e,t){switch(e){case"compositionend":return V9(t);case"keypress":return t.which!==32?null:($4=!0,L4);case"textInput":return e=t.data,e===L4&&$4?null:e;default:return null}}function gz(e,t){if(bu)return e==="compositionend"||!Wx&&j9(e,t)?(e=F9(),zg=Gx=zs=null,bu=!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=V4(n)}}function H9(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?H9(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function q9(){for(var e=window,t=km();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=km(e.document)}return t}function Kx(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 Cz(e){var t=q9(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&H9(n.ownerDocument.documentElement,n)){if(r!==null&&Kx(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=z4(n,o);var s=z4(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,Su=null,i2=null,Jd=null,o2=!1;function U4(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;o2||Su==null||Su!==km(r)||(r=Su,"selectionStart"in r&&Kx(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}),Jd&&Ef(Jd,r)||(Jd=r,r=Dm(i2,"onSelect"),0xu||(e.current=d2[xu],d2[xu]=null,xu--)}function mt(e,t){xu++,d2[xu]=e.current,e.current=t}var la={},Zn=_a(la),Pr=_a(!1),ul=la;function ac(e,t){var n=e.type.contextTypes;if(!n)return la;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 kr(e){return e=e.childContextTypes,e!=null}function $m(){_t(Pr),_t(Zn)}function X4(e,t,n){if(Zn.current!==la)throw Error(te(168));mt(Zn,t),mt(Pr,n)}function tO(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(te(108,bV(e)||"Unknown",i));return Ft({},n,r)}function Fm(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||la,ul=Zn.current,mt(Zn,e),mt(Pr,Pr.current),!0}function Q4(e,t,n){var r=e.stateNode;if(!r)throw Error(te(169));n?(e=tO(e,t,ul),r.__reactInternalMemoizedMergedChildContext=e,_t(Pr),_t(Zn),mt(Zn,e)):_t(Pr),mt(Pr,n)}var Ho=null,C0=!1,rS=!1;function nO(e){Ho===null?Ho=[e]:Ho.push(e)}function Lz(e){C0=!0,nO(e)}function wa(){if(!rS&&Ho!==null){rS=!0;var e=0,t=it;try{var n=Ho;for(it=1;e>=s,i-=s,Ko=1<<32-Ni(t)+i|n<C?(k=x,x=null):k=x.sibling;var P=f(v,x,g[C],b);if(P===null){x===null&&(x=k);break}e&&x&&P.alternate===null&&t(v,x),y=o(P,y,C),w===null?_=P:w.sibling=P,w=P,x=k}if(C===g.length)return n(v,x),Pt&&Va(v,C),_;if(x===null){for(;CC?(k=x,x=null):k=x.sibling;var A=f(v,x,P.value,b);if(A===null){x===null&&(x=k);break}e&&x&&A.alternate===null&&t(v,x),y=o(A,y,C),w===null?_=A:w.sibling=A,w=A,x=k}if(P.done)return n(v,x),Pt&&Va(v,C),_;if(x===null){for(;!P.done;C++,P=g.next())P=d(v,P.value,b),P!==null&&(y=o(P,y,C),w===null?_=P:w.sibling=P,w=P);return Pt&&Va(v,C),_}for(x=r(v,x);!P.done;C++,P=g.next())P=h(x,v,C,P.value,b),P!==null&&(e&&P.alternate!==null&&x.delete(P.key===null?C:P.key),y=o(P,y,C),w===null?_=P:w.sibling=P,w=P);return e&&x.forEach(function($){return t(v,$)}),Pt&&Va(v,C),_}function S(v,y,g,b){if(typeof g=="object"&&g!==null&&g.type===vu&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Fp:e:{for(var _=g.key,w=y;w!==null;){if(w.key===_){if(_=g.type,_===vu){if(w.tag===7){n(v,w.sibling),y=i(w,g.props.children),y.return=v,v=y;break e}}else if(w.elementType===_||typeof _=="object"&&_!==null&&_.$$typeof===Is&&iT(_)===w.type){n(v,w.sibling),y=i(w,g.props),y.ref=hd(v,w,g),y.return=v,v=y;break e}n(v,w);break}else t(v,w);w=w.sibling}g.type===vu?(y=nl(g.props.children,v.mode,b,g.key),y.return=v,v=y):(b=Xg(g.type,g.key,g.props,null,v.mode,b),b.ref=hd(v,y,g),b.return=v,v=b)}return s(v);case yu: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(v,y.sibling),y=i(y,g.children||[]),y.return=v,v=y;break e}else{n(v,y);break}else t(v,y);y=y.sibling}y=dS(g,v.mode,b),y.return=v,v=y}return s(v);case Is:return w=g._init,S(v,y,w(g._payload),b)}if(Fd(g))return p(v,y,g,b);if(ld(g))return m(v,y,g,b);Yp(v,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,y!==null&&y.tag===6?(n(v,y.sibling),y=i(y,g),y.return=v,v=y):(n(v,y),y=cS(g,v.mode,b),y.return=v,v=y),s(v)):n(v,y)}return S}var uc=cO(!0),dO=cO(!1),Vh={},go=_a(Vh),Of=_a(Vh),Rf=_a(Vh);function Xa(e){if(e===Vh)throw Error(te(174));return e}function rC(e,t){switch(mt(Rf,t),mt(Of,e),mt(go,Vh),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:K_(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=K_(t,e)}_t(go),mt(go,t)}function cc(){_t(go),_t(Of),_t(Rf)}function fO(e){Xa(Rf.current);var t=Xa(go.current),n=K_(t,e.type);t!==n&&(mt(Of,e),mt(go,n))}function iC(e){Of.current===e&&(_t(go),_t(Of))}var Mt=_a(0);function Gm(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 iS=[];function oC(){for(var e=0;en?n:4,e(!0);var r=oS.transition;oS.transition={};try{e(!1),t()}finally{it=n,oS.transition=r}}function kO(){return gi().memoizedState}function jz(e,t,n){var r=Qs(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},AO(e))OO(t,n);else if(n=sO(e,t,n,r),n!==null){var i=fr();Di(n,e,r,i),RO(n,t,r)}}function Vz(e,t,n){var r=Qs(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(AO(e))OO(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,ji(a,s)){var l=t.interleaved;l===null?(i.next=i,tC(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=sO(e,t,i,r),n!==null&&(i=fr(),Di(n,e,r,i),RO(n,t,r))}}function AO(e){var t=e.alternate;return e===$t||t!==null&&t===$t}function OO(e,t){ef=Hm=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function RO(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Vx(e,n)}}var qm={readContext:pi,useCallback:qn,useContext:qn,useEffect:qn,useImperativeHandle:qn,useInsertionEffect:qn,useLayoutEffect:qn,useMemo:qn,useReducer:qn,useRef:qn,useState:qn,useDebugValue:qn,useDeferredValue:qn,useTransition:qn,useMutableSource:qn,useSyncExternalStore:qn,useId:qn,unstable_isNewReconciler:!1},zz={readContext:pi,useCallback:function(e,t){return Qi().memoizedState=[e,t===void 0?null:t],e},useContext:pi,useEffect:sT,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,qg(4194308,4,xO.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qg(4194308,4,e,t)},useInsertionEffect:function(e,t){return qg(4,2,e,t)},useMemo:function(e,t){var n=Qi();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Qi();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=jz.bind(null,$t,e),[r.memoizedState,e]},useRef:function(e){var t=Qi();return e={current:e},t.memoizedState=e},useState:oT,useDebugValue:cC,useDeferredValue:function(e){return Qi().memoizedState=e},useTransition:function(){var e=oT(!1),t=e[0];return e=Bz.bind(null,e[1]),Qi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=$t,i=Qi();if(Pt){if(n===void 0)throw Error(te(407));n=n()}else{if(n=t(),Tn===null)throw Error(te(349));dl&30||gO(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,sT(yO.bind(null,r,o,e),[e]),r.flags|=2048,Nf(9,mO.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Qi(),t=Tn.identifierPrefix;if(Pt){var n=Yo,r=Ko;n=(r&~(1<<32-Ni(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=If++,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[ro]=t,e[Af]=r,jO(e,t,!1,!1),t.stateNode=e;e:{switch(s=X_(n,r),n){case"dialog":vt("cancel",e),vt("close",e),i=r;break;case"iframe":case"object":case"embed":vt("load",e),i=r;break;case"video":case"audio":for(i=0;ifc&&(t.flags|=128,r=!0,pd(o,!1),t.lanes=4194304)}else{if(!r)if(e=Gm(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),pd(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Pt)return Wn(t),null}else 2*qt()-o.renderingStartTime>fc&&n!==1073741824&&(t.flags|=128,r=!0,pd(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=qt(),t.sibling=null,n=Mt.current,mt(Mt,r?n&1|2:n&1),t):(Wn(t),null);case 22:case 23:return mC(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Fr&1073741824&&(Wn(t),t.subtreeFlags&6&&(t.flags|=8192)):Wn(t),null;case 24:return null;case 25:return null}throw Error(te(156,t.tag))}function Xz(e,t){switch(Xx(t),t.tag){case 1:return kr(t.type)&&$m(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return cc(),_t(Pr),_t(Zn),oC(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return iC(t),null;case 13:if(_t(Mt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(te(340));lc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return _t(Mt),null;case 4:return cc(),null;case 10:return eC(t.type._context),null;case 22:case 23:return mC(),null;case 24:return null;default:return null}}var Qp=!1,Qn=!1,Qz=typeof WeakSet=="function"?WeakSet:Set,de=null;function Pu(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){jt(e,t,r)}else n.current=null}function x2(e,t,n){try{n()}catch(r){jt(e,t,r)}}var gT=!1;function Zz(e,t){if(s2=Mm,e=q9(),Kx(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(a2={focusedElem:e,selectionRange:n},Mm=!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,S=p.memoizedState,v=t.stateNode,y=v.getSnapshotBeforeUpdate(t.elementType===t.type?m:Ti(t.type,m),S);v.__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(te(163))}}catch(b){jt(t,t.return,b)}if(e=t.sibling,e!==null){e.return=t.return,de=e;break}de=t.return}return p=gT,gT=!1,p}function tf(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&&x2(t,n,o)}i=i.next}while(i!==r)}}function P0(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 C2(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 UO(e){var t=e.alternate;t!==null&&(e.alternate=null,UO(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ro],delete t[Af],delete t[c2],delete t[Nz],delete t[Dz])),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 GO(e){return e.tag===5||e.tag===3||e.tag===4}function mT(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||GO(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 T2(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=Lm));else if(r!==4&&(e=e.child,e!==null))for(T2(e,t,n),e=e.sibling;e!==null;)T2(e,t,n),e=e.sibling}function E2(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(E2(e,t,n),e=e.sibling;e!==null;)E2(e,t,n),e=e.sibling}var Mn=null,Ei=!1;function Cs(e,t,n){for(n=n.child;n!==null;)HO(e,t,n),n=n.sibling}function HO(e,t,n){if(po&&typeof po.onCommitFiberUnmount=="function")try{po.onCommitFiberUnmount(b0,n)}catch{}switch(n.tag){case 5:Qn||Pu(n,t);case 6:var r=Mn,i=Ei;Mn=null,Cs(e,t,n),Mn=r,Ei=i,Mn!==null&&(Ei?(e=Mn,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Mn.removeChild(n.stateNode));break;case 18:Mn!==null&&(Ei?(e=Mn,n=n.stateNode,e.nodeType===8?nS(e.parentNode,n):e.nodeType===1&&nS(e,n),Cf(e)):nS(Mn,n.stateNode));break;case 4:r=Mn,i=Ei,Mn=n.stateNode.containerInfo,Ei=!0,Cs(e,t,n),Mn=r,Ei=i;break;case 0:case 11:case 14:case 15:if(!Qn&&(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)&&x2(n,t,s),i=i.next}while(i!==r)}Cs(e,t,n);break;case 1:if(!Qn&&(Pu(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){jt(n,t,a)}Cs(e,t,n);break;case 21:Cs(e,t,n);break;case 22:n.mode&1?(Qn=(r=Qn)||n.memoizedState!==null,Cs(e,t,n),Qn=r):Cs(e,t,n);break;default:Cs(e,t,n)}}function yT(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Qz),t.forEach(function(r){var i=aU.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function wi(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=s),r&=~o}if(r=i,r=qt()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*eU(r/1960))-r,10e?16:e,Us===null)var r=!1;else{if(e=Us,Us=null,Ym=0,Ye&6)throw Error(te(331));var i=Ye;for(Ye|=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;lqt()-pC?tl(e,0):hC|=n),Ar(e,t)}function JO(e,t){t===0&&(e.mode&1?(t=zp,zp<<=1,!(zp&130023424)&&(zp=4194304)):t=1);var n=fr();e=as(e,t),e!==null&&(Fh(e,t,n),Ar(e,n))}function sU(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),JO(e,n)}function aU(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(te(314))}r!==null&&r.delete(t),JO(e,n)}var eR;eR=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Pr.current)Cr=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Cr=!1,Kz(e,t,n);Cr=!!(e.flags&131072)}else Cr=!1,Pt&&t.flags&1048576&&rO(t,jm,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Wg(e,t),e=t.pendingProps;var i=ac(t,Zn.current);ju(t,n),i=aC(null,t,r,e,i,n);var o=lC();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,kr(r)?(o=!0,Fm(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,nC(t),i.updater=T0,t.stateNode=i,i._reactInternals=t,m2(t,r,e,n),t=b2(null,t,r,!0,o,n)):(t.tag=0,Pt&&o&&Yx(t),cr(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Wg(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=uU(r),e=Ti(r,e),i){case 0:t=v2(null,t,r,e,n);break e;case 1:t=fT(null,t,r,e,n);break e;case 11:t=cT(null,t,r,e,n);break e;case 14:t=dT(null,t,r,Ti(r.type,e),n);break e}throw Error(te(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ti(r,i),v2(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ti(r,i),fT(e,t,r,i,n);case 3:e:{if($O(t),e===null)throw Error(te(387));r=t.pendingProps,o=t.memoizedState,i=o.element,aO(e,t),Um(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=dc(Error(te(423)),t),t=hT(e,t,r,n,i);break e}else if(r!==i){i=dc(Error(te(424)),t),t=hT(e,t,r,n,i);break e}else for(jr=Ks(t.stateNode.containerInfo.firstChild),Vr=t,Pt=!0,ki=null,n=dO(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(lc(),r===i){t=ls(e,t,n);break e}cr(e,t,r,n)}t=t.child}return t;case 5:return fO(t),e===null&&h2(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,s=i.children,l2(r,i)?s=null:o!==null&&l2(r,o)&&(t.flags|=32),LO(e,t),cr(e,t,s,n),t.child;case 6:return e===null&&h2(t),null;case 13:return FO(e,t,n);case 4:return rC(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=uc(t,null,r,n):cr(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ti(r,i),cT(e,t,r,i,n);case 7:return cr(e,t,t.pendingProps,n),t.child;case 8:return cr(e,t,t.pendingProps.children,n),t.child;case 12:return cr(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,mt(Vm,r._currentValue),r._currentValue=s,o!==null)if(ji(o.value,s)){if(o.children===i.children&&!Pr.current){t=ls(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=Jo(-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),p2(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(te(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),p2(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}cr(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,ju(t,n),i=pi(i),r=r(i),t.flags|=1,cr(e,t,r,n),t.child;case 14:return r=t.type,i=Ti(r,t.pendingProps),i=Ti(r.type,i),dT(e,t,r,i,n);case 15:return NO(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:Ti(r,i),Wg(e,t),t.tag=1,kr(r)?(e=!0,Fm(t)):e=!1,ju(t,n),uO(t,r,i),m2(t,r,i,n),b2(null,t,r,!0,e,n);case 19:return BO(e,t,n);case 22:return DO(e,t,n)}throw Error(te(156,t.tag))};function tR(e,t){return P9(e,t)}function lU(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 ui(e,t,n,r){return new lU(e,t,n,r)}function vC(e){return e=e.prototype,!(!e||!e.isReactComponent)}function uU(e){if(typeof e=="function")return vC(e)?1:0;if(e!=null){if(e=e.$$typeof,e===$x)return 11;if(e===Fx)return 14}return 2}function Zs(e,t){var n=e.alternate;return n===null?(n=ui(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 Xg(e,t,n,r,i,o){var s=2;if(r=e,typeof e=="function")vC(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case vu:return nl(n.children,i,o,t);case Lx:s=8,i|=8;break;case j_:return e=ui(12,n,t,i|2),e.elementType=j_,e.lanes=o,e;case V_:return e=ui(13,n,t,i),e.elementType=V_,e.lanes=o,e;case z_:return e=ui(19,n,t,i),e.elementType=z_,e.lanes=o,e;case c9:return A0(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case l9:s=10;break e;case u9:s=9;break e;case $x:s=11;break e;case Fx:s=14;break e;case Is:s=16,r=null;break e}throw Error(te(130,e==null?e:typeof e,""))}return t=ui(s,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function nl(e,t,n,r){return e=ui(7,e,r,t),e.lanes=n,e}function A0(e,t,n,r){return e=ui(22,e,r,t),e.elementType=c9,e.lanes=n,e.stateNode={isHidden:!1},e}function cS(e,t,n){return e=ui(6,e,null,t),e.lanes=n,e}function dS(e,t,n){return t=ui(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function cU(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=Hb(0),this.expirationTimes=Hb(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Hb(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function bC(e,t,n,r,i,o,s,a,l){return e=new cU(e,t,n,a,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=ui(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},nC(o),e}function dU(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(oR)}catch(e){console.error(e)}}oR(),r9.exports=Kr;var li=r9.exports;const W4e=Cl(li);var TT=li;F_.createRoot=TT.createRoot,F_.hydrateRoot=TT.hydrateRoot;const mU="modulepreload",yU=function(e,t){return new URL(e,t).href},ET={},sR=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=yU(o,r),o in ET)return;ET[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":mU,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})};var aR={exports:{}},lR={};/** - * @license React - * use-sync-external-store-shim.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 hc=E;function vU(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var bU=typeof Object.is=="function"?Object.is:vU,SU=hc.useState,_U=hc.useEffect,wU=hc.useLayoutEffect,xU=hc.useDebugValue;function CU(e,t){var n=t(),r=SU({inst:{value:n,getSnapshot:t}}),i=r[0].inst,o=r[1];return wU(function(){i.value=n,i.getSnapshot=t,fS(i)&&o({inst:i})},[e,n,t]),_U(function(){return fS(i)&&o({inst:i}),e(function(){fS(i)&&o({inst:i})})},[e]),xU(n),n}function fS(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!bU(e,n)}catch{return!0}}function TU(e,t){return t()}var EU=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?TU:CU;lR.useSyncExternalStore=hc.useSyncExternalStore!==void 0?hc.useSyncExternalStore:EU;aR.exports=lR;var PU=aR.exports,uR={exports:{}},cR={};/** - * @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 N0=E,kU=PU;function AU(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var OU=typeof Object.is=="function"?Object.is:AU,RU=kU.useSyncExternalStore,IU=N0.useRef,MU=N0.useEffect,NU=N0.useMemo,DU=N0.useDebugValue;cR.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=IU(null);if(o.current===null){var s={hasValue:!1,value:null};o.current=s}else s=o.current;o=NU(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,OU(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=RU(e,o[0],o[1]);return MU(function(){s.hasValue=!0,s.value=a},[a]),DU(a),a};uR.exports=cR;var dR=uR.exports;const LU=Cl(dR);function $U(e){e()}let fR=$U;const FU=e=>fR=e,BU=()=>fR,PT=Symbol.for(`react-redux-context-${E.version}`),kT=globalThis;function jU(){let e=kT[PT];return e||(e=E.createContext(null),kT[PT]=e),e}const ua=new Proxy({},new Proxy({},{get(e,t){const n=jU();return(r,...i)=>Reflect[t](n,...i)}}));function xC(e=ua){return function(){return E.useContext(e)}}const hR=xC(),VU=()=>{throw new Error("uSES not initialized!")};let pR=VU;const zU=e=>{pR=e},UU=(e,t)=>e===t;function GU(e=ua){const t=e===ua?hR:xC(e);return function(r,i={}){const{equalityFn:o=UU,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();E.useRef(!0);const h=E.useCallback({[r.name](m){return r(m)}}[r.name],[r,d,s]),p=pR(u.addNestedSub,l.getState,c||l.getState,h,o);return E.useDebugValue(p),p}}const gR=GU();function Zm(){return Zm=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 AT={notify(){},get:()=>[]};function nG(e,t){let n,r=AT;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=tG())}function u(){n&&(n(),n=void 0,r.clear(),r=AT)}const c={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:s,isSubscribed:a,trySubscribe:l,tryUnsubscribe:u,getListeners:()=>r};return c}const rG=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",iG=rG?E.useLayoutEffect:E.useEffect;function OT(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function Jm(e,t){if(OT(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=nG(e);return{store:e,subscription:u,getServerState:r?()=>r:void 0,stabilityCheck:i,noopCheck:o}},[e,r,i,o]),a=E.useMemo(()=>e.getState(),[e]);iG(()=>{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||ua;return ze.createElement(l.Provider,{value:s},n)}function _R(e=ua){const t=e===ua?hR:xC(e);return function(){const{store:r}=t();return r}}const wR=_R();function sG(e=ua){const t=e===ua?wR:_R(e);return function(){return t().dispatch}}const xR=sG();zU(dR.useSyncExternalStoreWithSelector);FU(li.unstable_batchedUpdates);function Cn(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:tv(e)?2:nv(e)?3:0}function Js(e,t){return ca(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Qg(e,t){return ca(e)===2?e.get(t):e[t]}function CR(e,t,n){var r=ca(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function TR(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function tv(e){return fG&&e instanceof Map}function nv(e){return hG&&e instanceof Set}function bn(e){return e.o||e.t}function OC(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=PR(e);delete t[ke];for(var n=Uu(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=aG),Object.freeze(e),t&&us(e,function(n,r){return zh(r,!0)},!0)),e}function aG(){Cn(2)}function RC(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function mo(e){var t=I2[e];return t||Cn(18,e),t}function IC(e,t){I2[e]||(I2[e]=t)}function Lf(){return Ff}function hS(e,t){t&&(mo("Patches"),e.u=[],e.s=[],e.v=t)}function ey(e){R2(e),e.p.forEach(lG),e.p=null}function R2(e){e===Ff&&(Ff=e.l)}function RT(e){return Ff={p:[],l:Ff,h:e,m:!0,_:0}}function lG(e){var t=e[ke];t.i===0||t.i===1?t.j():t.g=!0}function pS(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.O||mo("ES5").S(t,e,r),r?(n[ke].P&&(ey(t),Cn(4)),Ir(e)&&(e=ty(t,e),t.l||ny(t,e)),t.u&&mo("Patches").M(n[ke].t,e,t.u,t.s)):e=ty(t,n,[]),ey(t),t.u&&t.v(t.u,t.s),e!==iv?e:void 0}function ty(e,t,n){if(RC(t))return t;var r=t[ke];if(!r)return us(t,function(a,l){return IT(e,r,t,a,l,n)},!0),t;if(r.A!==e)return t;if(!r.P)return ny(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=OC(r.k):r.o,o=i,s=!1;r.i===3&&(o=new Set(i),i.clear(),s=!0),us(o,function(a,l){return IT(e,r,i,a,l,n,s)}),ny(e,i,!1),n&&e.u&&mo("Patches").N(r,n,e.u,e.s)}return r.o}function IT(e,t,n,r,i,o,s){if(hr(i)){var a=ty(e,i,o&&t&&t.i!==3&&!Js(t.R,r)?o.concat(r):void 0);if(CR(n,r,a),!hr(a))return;e.m=!1}else s&&n.add(i);if(Ir(i)&&!RC(i)){if(!e.h.D&&e._<1)return;ty(e,i),t&&t.A.l||ny(e,i)}}function ny(e,t,n){n===void 0&&(n=!1),!e.l&&e.h.D&&e.m&&zh(t,n)}function gS(e,t){var n=e[ke];return(n?bn(n):e)[t]}function MT(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 xr(e){e.P||(e.P=!0,e.l&&xr(e.l))}function mS(e){e.o||(e.o=OC(e.t))}function $f(e,t,n){var r=tv(t)?mo("MapSet").F(t,n):nv(t)?mo("MapSet").T(t,n):e.O?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Lf(),P:!1,I:!1,R:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=a,u=Bf;s&&(l=[a],u=Vd);var c=Proxy.revocable(l,u),d=c.revoke,f=c.proxy;return a.k=f,a.j=d,f}(t,n):mo("ES5").J(t,n);return(n?n.A:Lf()).p.push(r),r}function rv(e){return hr(e)||Cn(22,e),function t(n){if(!Ir(n))return n;var r,i=n[ke],o=ca(n);if(i){if(!i.P&&(i.i<4||!mo("ES5").K(i)))return i.t;i.I=!0,r=NT(n,o),i.I=!1}else r=NT(n,o);return us(r,function(s,a){i&&Qg(i.t,s)===a||CR(r,s,t(a))}),o===3?new Set(r):r}(e)}function NT(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return OC(e)}function MC(){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[ke];return Bf.get(l,o)},set:function(l){var u=this[ke];Bf.set(u,o,l)}},a}function t(o){for(var s=o.length-1;s>=0;s--){var a=o[s][ke];if(!a.P)switch(a.i){case 5:r(a)&&xr(a);break;case 4:n(a)&&xr(a)}}}function n(o){for(var s=o.t,a=o.k,l=Uu(a),u=l.length-1;u>=0;u--){var c=l[u];if(c!==ke){var d=s[c];if(d===void 0&&!Js(s,c))return!0;var f=a[c],h=f&&f[ke];if(h?h.t!==d:!TR(f,d))return!0}}var p=!!s[ke];return l.length!==Uu(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?v-1:0),g=1;g1?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=mo("Patches").$;return hr(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},e}(),Gr=new kR,AR=Gr.produce,LC=Gr.produceWithPatches.bind(Gr),gG=Gr.setAutoFreeze.bind(Gr),mG=Gr.setUseProxies.bind(Gr),M2=Gr.applyPatches.bind(Gr),yG=Gr.createDraft.bind(Gr),vG=Gr.finishDraft.bind(Gr);const xa=AR,K4e=Object.freeze(Object.defineProperty({__proto__:null,Immer:kR,applyPatches:M2,castDraft:cG,castImmutable:dG,createDraft:yG,current:rv,default:xa,enableAllPlugins:uG,enableES5:MC,enableMapSet:ER,enablePatches:NC,finishDraft:vG,freeze:zh,immerable:zu,isDraft:hr,isDraftable:Ir,nothing:iv,original:AC,produce:AR,produceWithPatches:LC,setAutoFreeze:gG,setUseProxies:mG},Symbol.toStringTag,{value:"Module"}));function jf(e){"@babel/helpers - typeof";return jf=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},jf(e)}function bG(e,t){if(jf(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(jf(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function SG(e){var t=bG(e,"string");return jf(t)==="symbol"?t:String(t)}function _G(e,t,n){return t=SG(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $T(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 FT(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(Nn(1));return n(Uh)(e,t)}if(typeof e!="function")throw new Error(Nn(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(Nn(3));return o}function d(m){if(typeof m!="function")throw new Error(Nn(4));if(l)throw new Error(Nn(5));var S=!0;return u(),a.push(m),function(){if(S){if(l)throw new Error(Nn(6));S=!1,u();var y=a.indexOf(m);a.splice(y,1),s=null}}}function f(m){if(!wG(m))throw new Error(Nn(7));if(typeof m.type>"u")throw new Error(Nn(8));if(l)throw new Error(Nn(9));try{l=!0,o=i(o,m)}finally{l=!1}for(var S=s=a,v=0;v"u")throw new Error(Nn(12));if(typeof n(void 0,{type:pc.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Nn(13))})}function Vc(e){for(var t=Object.keys(e),n={},r=0;r"u")throw u&&u.type,new Error(Nn(14));d[h]=S,c=c||S!==m}return c=c||o.length!==Object.keys(l).length,c?d:l}}function jT(e,t){return function(){return t(e.apply(this,arguments))}}function RR(e,t){if(typeof e=="function")return jT(e,t);if(typeof e!="object"||e===null)throw new Error(Nn(16));var n={};for(var r in e){var i=e[r];typeof i=="function"&&(n[r]=jT(i,t))}return n}function gc(){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 ry}function i(a,l){r(a)===ry&&(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 IR=function(t,n){return t===n};function PG(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(S,v){var y=t?t+"."+S:S;if(l){var g=i.some(function(b){return b instanceof RegExp?b.test(y):y===b});if(g)return"continue"}if(!n(v))return{value:{keyPath:y,value:v}};if(typeof v=="object"&&(s=jR(v,y,n,r,i,o),s))return{value:s}},c=0,d=a;c-1}function UG(e){return""+e}function HR(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 GG(e){return typeof e=="function"}function qR(e,t,n,r){n===void 0&&(n=[]);var i=typeof t=="function"?HR(t):[t,n,r],o=i[0],s=i[1],a=i[2],l;if(GG(e))l=function(){return N2(e())};else{var u=N2(e);l=function(){return u}}function c(d,f){d===void 0&&(d=l());var h=da([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(hr(p)){var S=p,v=m(S,f);return v===void 0?p:v}else{if(Ir(p))return xa(p,function(y){return m(y,f)});var v=m(p,f);if(v===void 0){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return v}return p},d)}return c.getInitialState=l,c}function HG(e,t){return e+"/"+t}function zt(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:N2(e.initialState),r=e.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(c){var d=r[c],f=HG(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"?HR(e.extraReducers):[e.extraReducers],d=c[0],f=d===void 0?{}:d,h=c[1],p=h===void 0?[]:h,m=c[2],S=m===void 0?void 0:m,v=Tr(Tr({},f),s);return qR(n,function(y){for(var g in v)y.addCase(g,v[g]);for(var b=0,_=p;b<_.length;b++){var w=_[b];y.addMatcher(w.matcher,w.reducer)}S&&y.addDefaultCase(S)})}var u;return{name:t,reducer:function(c,d){return u||(u=l()),u(c,d)},actions:a,caseReducers:o,getInitialState:function(){return u||(u=l()),u.getInitialState()}}}function qG(){return{ids:[],entities:{}}}function WG(){function e(t){return t===void 0&&(t={}),Object.assign(qG(),t)}return{getInitialState:e}}function KG(){function e(t){var n=function(u){return u.ids},r=function(u){return u.entities},i=Vo(n,r,function(u,c){return u.map(function(d){return c[d]})}),o=function(u,c){return c},s=function(u,c){return u[c]},a=Vo(n,function(u){return u.length});if(!t)return{selectIds:n,selectEntities:r,selectAll:i,selectTotal:a,selectById:Vo(r,o,s)};var l=Vo(t,r);return{selectIds:Vo(t,n),selectEntities:l,selectAll:Vo(t,i),selectTotal:Vo(t,a),selectById:Vo(l,o,s)}}return{getSelectors:e}}function YG(e){var t=Gt(function(n,r){return e(r)});return function(r){return t(r,void 0)}}function Gt(e){return function(n,r){function i(s){return GR(s)}var o=function(s){i(r)?e(r.payload,s):e(r,s)};return hr(n)?(o(n),n):xa(n,o)}}function of(e,t){var n=t(e);return n}function rl(e){return Array.isArray(e)||(e=Object.values(e)),e}function WR(e,t,n){e=rl(e);for(var r=[],i=[],o=0,s=e;o0;if(y){var g=p.filter(function(b){return u(S,b,m)}).length>0;g&&(m.ids=Object.keys(m.entities))}}function f(p,m){return h([p],m)}function h(p,m){var S=WR(p,e,m),v=S[0],y=S[1];d(y,m),n(v,m)}return{removeAll:YG(l),addOne:Gt(t),addMany:Gt(n),setOne:Gt(r),setMany:Gt(i),setAll:Gt(o),updateOne:Gt(c),updateMany:Gt(d),upsertOne:Gt(f),upsertMany:Gt(h),removeOne:Gt(s),removeMany:Gt(a)}}function XG(e,t){var n=KR(e),r=n.removeOne,i=n.removeMany,o=n.removeAll;function s(y,g){return a([y],g)}function a(y,g){y=rl(y);var b=y.filter(function(_){return!(of(_,e)in g.entities)});b.length!==0&&S(b,g)}function l(y,g){return u([y],g)}function u(y,g){y=rl(y),y.length!==0&&S(y,g)}function c(y,g){y=rl(y),g.entities={},g.ids=[],a(y,g)}function d(y,g){return f([y],g)}function f(y,g){for(var b=!1,_=0,w=y;_-1;return n&&r}function qh(e){return typeof e[0]=="function"&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function av(){for(var e=[],t=0;t0)for(var g=h.getState(),b=Array.from(n.values()),_=0,w=b;_=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 pI(e,t){if(e){if(typeof e=="string")return YT(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 YT(e,t)}}function YT(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?OH:RH;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 JT(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 eE(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){JT(o,r,i,s,a,"next",l)}function a(l){JT(o,r,i,s,a,"throw",l)}s(void 0)})}}var MH=function(){var e=eE(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 TH(t,n,{prefix:i,driver:o,unserialize:a,persistWholeStore:c});var d={},f=function(){var h=eE(function*(){var p=hI(t.getState(),n);yield IH(p,d,{prefix:i,driver:o,serialize:s,persistWholeStore:c}),zC(p,d)||t.dispatch({type:SH,payload:p}),d=p});return function(){return h.apply(this,arguments)}}();u&&u>0?t.subscribe(wH(f,u)):t.subscribe(_H(f,l))});return function(n,r,i){return e.apply(this,arguments)}}();const NH=MH;function zf(e){"@babel/helpers - typeof";return zf=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},zf(e)}function tE(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 wS(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=wS({},r));var o=typeof t=="function"?t:Vc(t);switch(i.type){case F2:return n.state=o(wS(wS({},n.state),i.payload||{}),{type:F2}),n.state;default:return o(r,i)}}},BH=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(S,v){return JSON.stringify(S)}:s,l=r.unserialize,u=l===void 0?function(S,v){return JSON.parse(S)}: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(v){return function(y,g,b){var _=v(y,g,b);return NH(_,n,{driver:t,prefix:o,serialize:a,unserialize:u,persistThrottle:d,persistDebounce:f,persistWholeStore:p}),_}};return m};const zd=(e,t)=>Math.floor(e/t)*t,io=(e,t)=>Math.round(e/t)*t;var jH=typeof global=="object"&&global&&global.Object===Object&&global;const mI=jH;var VH=typeof self=="object"&&self&&self.Object===Object&&self,zH=mI||VH||Function("return this")();const ko=zH;var UH=ko.Symbol;const mi=UH;var yI=Object.prototype,GH=yI.hasOwnProperty,HH=yI.toString,md=mi?mi.toStringTag:void 0;function qH(e){var t=GH.call(e,md),n=e[md];try{e[md]=void 0;var r=!0}catch{}var i=HH.call(e);return r&&(t?e[md]=n:delete e[md]),i}var WH=Object.prototype,KH=WH.toString;function YH(e){return KH.call(e)}var XH="[object Null]",QH="[object Undefined]",nE=mi?mi.toStringTag:void 0;function Ta(e){return e==null?e===void 0?QH:XH:nE&&nE in Object(e)?qH(e):YH(e)}function zi(e){return e!=null&&typeof e=="object"}var ZH="[object Symbol]";function uv(e){return typeof e=="symbol"||zi(e)&&Ta(e)==ZH}function UC(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=Oq)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Nq(e){return function(){return e}}var Dq=function(){try{var e=Al(Object,"defineProperty");return e({},"",{}),e}catch{}}();const ly=Dq;var Lq=ly?function(e,t){return ly(e,"toString",{configurable:!0,enumerable:!1,value:Nq(t),writable:!0})}:cv;const $q=Lq;var Fq=Mq($q);const _I=Fq;function wI(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Gq=9007199254740991,Hq=/^(?:0|[1-9]\d*)$/;function dv(e,t){var n=typeof e;return t=t??Gq,!!t&&(n=="number"||n!="symbol"&&Hq.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=Kq}function Uc(e){return e!=null&&WC(e.length)&&!GC(e)}function TI(e,t,n){if(!Jn(n))return!1;var r=typeof t;return(r=="number"?Uc(n)&&dv(t,n.length):r=="string"&&t in n)?Xh(n[t],e):!1}function EI(e){return CI(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&&TI(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r-1}function uK(e,t){var n=this.__data__,r=fv(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function gs(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?MI(a,t-1,n,r,i):JC(i,a):r||(i[i.length]=a)}return i}function kK(e){var t=e==null?0:e.length;return t?MI(e,1):[]}function AK(e){return _I(xI(e,void 0,kK),e+"")}var OK=RI(Object.getPrototypeOf,Object);const e5=OK;var RK="[object Object]",IK=Function.prototype,MK=Object.prototype,NI=IK.toString,NK=MK.hasOwnProperty,DK=NI.call(Object);function DI(e){if(!zi(e)||Ta(e)!=RK)return!1;var t=e5(e);if(t===null)return!0;var n=NK.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&NI.call(n)==DK}function LK(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=t?e:t)),e}function Xo(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=xS(n),n=n===n?n:0),t!==void 0&&(t=xS(t),t=t===t?t:0),WK(xS(e),t,n)}function KK(){this.__data__=new gs,this.size=0}function YK(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function XK(e){return this.__data__.get(e)}function QK(e){return this.__data__.has(e)}var ZK=200;function JK(e,t){var n=this.__data__;if(n instanceof gs){var r=n.__data__;if(!qf||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&MX?new Wf:void 0;for(o.set(e,t),o.set(t,e);++d1),o}),zc(e,n5(e),n),r&&(n=af(n,$Q|FQ|BQ,LQ));for(var i=t.length;i--;)r7(n,t[i]);return n});const o5=jQ;function VQ(e,t,n,r){if(!Jn(e))return e;t=Gc(t,e);for(var i=-1,o=t.length,s=o-1,a=e;a!=null&&++i=fZ){var u=t?null:dZ(e);if(u)return i5(u);s=!1,i=KI,l=new Wf}else l=t?[]:a;e:for(;++r{DQ(e,t.payload)}}}),{configChanged:vZ}=p7.actions,bZ=p7.reducer,qc=()=>xR(),cy=gR;function SZ(e){if(e.sheet)return e.sheet;for(var t=0;t0?Ln(Wc,--Mr):0,Sc--,nn===10&&(Sc=1,Sv--),nn}function zr(){return nn=Mr2||Yf(nn)>3?"":" "}function MZ(e,t){for(;--t&&zr()&&!(nn<48||nn>102||nn>57&&nn<65||nn>70&&nn<97););return ep(e,Jg()+(t<6&&yo()==32&&zr()==32))}function Y2(e){for(;zr();)switch(nn){case e:return Mr;case 34:case 39:e!==34&&e!==39&&Y2(nn);break;case 40:e===41&&Y2(e);break;case 92:zr();break}return Mr}function NZ(e,t){for(;zr()&&e+nn!==47+10;)if(e+nn===42+42&&yo()===47)break;return"/*"+ep(t,Mr-1)+"*"+bv(e===47?e:zr())}function DZ(e){for(;!Yf(yo());)zr();return ep(e,Mr)}function LZ(e){return S7(tm("",null,null,null,[""],e=b7(e),0,[0],e))}function tm(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,S=1,v=1,y=0,g="",b=i,_=o,w=r,x=g;S;)switch(p=y,y=zr()){case 40:if(p!=108&&Ln(x,d-1)==58){K2(x+=nt(em(y),"&","&\f"),"&\f")!=-1&&(v=-1);break}case 34:case 39:case 91:x+=em(y);break;case 9:case 10:case 13:case 32:x+=IZ(p);break;case 92:x+=MZ(Jg()-1,7);continue;case 47:switch(yo()){case 42:case 47:ng($Z(NZ(zr(),Jg()),t,n),l);break;default:x+="/"}break;case 123*m:a[u++]=to(x)*v;case 125*m:case 59:case 0:switch(y){case 0:case 125:S=0;case 59+c:v==-1&&(x=nt(x,/\f/g,"")),h>0&&to(x)-d&&ng(h>32?ME(x+";",r,n,d-1):ME(nt(x," ","")+";",r,n,d-2),l);break;case 59:x+=";";default:if(ng(w=IE(x,t,n,u,c,i,a,g,b=[],_=[],d),o),y===123)if(c===0)tm(x,t,w,w,b,o,d,a,_);else switch(f===99&&Ln(x,3)===110?100:f){case 100:case 108:case 109:case 115:tm(e,w,w,r&&ng(IE(e,w,w,0,0,i,a,g,i,b=[],d),_),i,_,d,a,r?b:_);break;default:tm(x,w,w,w,[""],_,0,a,_)}}u=c=h=0,m=v=1,g=x="",d=s;break;case 58:d=1+to(x),h=p;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&RZ()==125)continue}switch(x+=bv(y),y*m){case 38:v=c>0?1:(x+="\f",-1);break;case 44:a[u++]=(to(x)-1)*v,v=1;break;case 64:yo()===45&&(x+=em(zr())),f=yo(),c=d=to(g=x+=DZ(Jg())),y++;break;case 45:p===45&&to(x)==2&&(m=0)}}return o}function IE(e,t,n,r,i,o,s,a,l,u,c){for(var d=i-1,f=i===0?o:[""],h=l5(f),p=0,m=0,S=0;p0?f[v]+" "+y:nt(y,/&\f/g,f[v])))&&(l[S++]=g);return _v(e,t,n,i===0?s5:a,l,u,c)}function $Z(e,t,n){return _v(e,t,n,g7,bv(OZ()),Kf(e,2,-2),0)}function ME(e,t,n,r){return _v(e,t,n,a5,Kf(e,0,r),Kf(e,r+1,-1),r)}function Ku(e,t){for(var n="",r=l5(e),i=0;i6)switch(Ln(e,t+1)){case 109:if(Ln(e,t+4)!==45)break;case 102:return nt(e,/(.+:)(.+)-([^]+)/,"$1"+tt+"$2-$3$1"+dy+(Ln(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~K2(e,"stretch")?w7(nt(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Ln(e,t+1)!==115)break;case 6444:switch(Ln(e,to(e)-3-(~K2(e,"!important")&&10))){case 107:return nt(e,":",":"+tt)+e;case 101:return nt(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+tt+(Ln(e,14)===45?"inline-":"")+"box$3$1"+tt+"$2$3$1"+Kn+"$2box$3")+e}break;case 5936:switch(Ln(e,t+11)){case 114:return tt+e+Kn+nt(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return tt+e+Kn+nt(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return tt+e+Kn+nt(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return tt+e+Kn+e+e}return e}var qZ=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case a5:t.return=w7(t.value,t.length);break;case m7:return Ku([yd(t,{value:nt(t.value,"@","@"+tt)})],i);case s5:if(t.length)return AZ(t.props,function(o){switch(kZ(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Ku([yd(t,{props:[nt(o,/:(read-\w+)/,":"+dy+"$1")]})],i);case"::placeholder":return Ku([yd(t,{props:[nt(o,/:(plac\w+)/,":"+tt+"input-$1")]}),yd(t,{props:[nt(o,/:(plac\w+)/,":"+dy+"$1")]}),yd(t,{props:[nt(o,/:(plac\w+)/,Kn+"input-$1")]})],i)}return""})}},WZ=[qZ],KZ=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 S=m.getAttribute("data-emotion");S.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||WZ,o={},s,a=[];s=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var S=m.getAttribute("data-emotion").split(" "),v=1;v=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 ZZ={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},JZ=/[A-Z]|^ms/g,eJ=/_EMO_([^_]+?)_([^]*?)_EMO_/g,T7=function(t){return t.charCodeAt(1)===45},LE=function(t){return t!=null&&typeof t!="boolean"},PS=_7(function(e){return T7(e)?e:e.replace(JZ,"-$&").toLowerCase()}),$E=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(eJ,function(r,i,o){return no={name:i,styles:o,next:no},i})}return ZZ[t]!==1&&!T7(t)&&typeof n=="number"&&n!==0?n+"px":n};function Xf(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 no={name:n.name,styles:n.styles,next:no},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)no={name:r.name,styles:r.styles,next:no},r=r.next;var i=n.styles+";";return i}return tJ(e,t,n)}case"function":{if(e!==void 0){var o=no,s=n(e);return no=o,Xf(e,t,s)}break}}if(t==null)return n;var a=t[n];return a!==void 0?a:n}function tJ(e,t,n){var r="";if(Array.isArray(n))for(var i=0;ij.jsx("div",{className:"chakra-portal-zIndex",style:{position:"absolute",zIndex:e.zIndex,top:0,left:0,right:0},children:e.children}),gJ=e=>{const{appendToParentPortal:t,children:n}=e,[r,i]=E.useState(null),o=E.useRef(null),[,s]=E.useState({});E.useEffect(()=>s({}),[]);const a=fJ(),l=cJ();Zf(()=>{if(!r)return;const c=r.ownerDocument,d=t?a??c.body:c.body;if(!d)return;o.current=c.createElement("div"),o.current.className=c5,d.appendChild(o.current),s({});const f=o.current;return()=>{d.contains(f)&&d.removeChild(f)}},[r]);const u=l!=null&&l.zIndex?j.jsx(pJ,{zIndex:l==null?void 0:l.zIndex,children:n}):n;return o.current?li.createPortal(j.jsx(A7,{value:o.current,children:u}),o.current):j.jsx("span",{ref:c=>{c&&i(c)}})},mJ=e=>{const{children:t,containerRef:n,appendToParentPortal:r}=e,i=n.current,o=i??(typeof window<"u"?document.body:void 0),s=E.useMemo(()=>{const l=i==null?void 0:i.ownerDocument.createElement("div");return l&&(l.className=c5),l},[i]),[,a]=E.useState({});return Zf(()=>a({}),[]),Zf(()=>{if(!(!s||!o))return o.appendChild(s),()=>{o.removeChild(s)}},[s,o]),o&&s?li.createPortal(j.jsx(A7,{value:r?s:null,children:t}),s):null};function tp(e){const t={appendToParentPortal:!0,...e},{containerRef:n,...r}=t;return n?j.jsx(mJ,{containerRef:n,...r}):j.jsx(gJ,{...r})}tp.className=c5;tp.selector=hJ;tp.displayName="Portal";function wv(){const e=E.useContext(Qf);if(!e)throw Error("useTheme: `theme` is undefined. Seems you forgot to wrap your app in `` or ``");return e}var O7=E.createContext({});O7.displayName="ColorModeContext";function d5(){const e=E.useContext(O7);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}function rTe(e,t){const{colorMode:n}=d5();return n==="dark"?t:e}function R7(){const e=d5(),t=wv();return{...e,theme:t}}function yJ(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 vJ(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 iTe(e,t,n){const r=wv();return bJ(e,t,n)(r)}function bJ(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 yJ(o,l,(c=s[u])!=null?c:l);const f=`${e}.${l}`;return vJ(o,f,(d=s[u])!=null?d:l)});return Array.isArray(t)?a:a[0]}}var Gn=(...e)=>e.filter(Boolean).join(" ");function SJ(){return!1}function vo(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}var oTe=e=>{const{condition:t,message:n}=e;t&&SJ()&&console.warn(n)};function uo(e,...t){return _J(e)?e(...t):e}var _J=e=>typeof e=="function",Ou=e=>e?"":void 0,Yu=e=>e?!0:void 0;function Dn(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function sTe(...e){return function(n){e.forEach(r=>{r==null||r(n)})}}var fy={exports:{}};fy.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]",S="[object Number]",v="[object Null]",y="[object Object]",g="[object Proxy]",b="[object RegExp]",_="[object Set]",w="[object String]",x="[object Undefined]",C="[object WeakMap]",k="[object ArrayBuffer]",P="[object DataView]",A="[object Float32Array]",$="[object Float64Array]",N="[object Int8Array]",T="[object Int16Array]",O="[object Int32Array]",I="[object Uint8Array]",M="[object Uint8ClampedArray]",R="[object Uint16Array]",D="[object Uint32Array]",L=/[\\^$.*+?()[\]{}|]/g,V=/^\[object .+?Constructor\]$/,z=/^(?:0|[1-9]\d*)$/,U={};U[A]=U[$]=U[N]=U[T]=U[O]=U[I]=U[M]=U[R]=U[D]=!0,U[a]=U[l]=U[k]=U[c]=U[P]=U[d]=U[f]=U[h]=U[m]=U[S]=U[y]=U[b]=U[_]=U[w]=U[C]=!1;var K=typeof De=="object"&&De&&De.Object===Object&&De,W=typeof self=="object"&&self&&self.Object===Object&&self,X=K||W||Function("return this")(),F=t&&!t.nodeType&&t,q=F&&!0&&e&&!e.nodeType&&e,Q=q&&q.exports===F,J=Q&&K.process,ne=function(){try{var B=q&&q.require&&q.require("util").types;return B||J&&J.binding&&J.binding("util")}catch{}}(),Z=ne&&ne.isTypedArray;function ge(B,G,Y){switch(Y.length){case 0:return B.call(G);case 1:return B.call(G,Y[0]);case 2:return B.call(G,Y[0],Y[1]);case 3:return B.call(G,Y[0],Y[1],Y[2])}return B.apply(G,Y)}function ae(B,G){for(var Y=-1,ue=Array(B);++Y-1}function Lo(B,G){var Y=this.__data__,ue=ql(Y,B);return ue<0?(++this.size,Y.push([B,G])):Y[ue][1]=G,this}On.prototype.clear=Do,On.prototype.delete=_s,On.prototype.get=ws,On.prototype.has=Hl,On.prototype.set=Lo;function sr(B){var G=-1,Y=B==null?0:B.length;for(this.clear();++G1?Y[qe-1]:void 0,Ct=qe>2?Y[2]:void 0;for(dt=B.length>3&&typeof dt=="function"?(qe--,dt):void 0,Ct&&Oj(Y[0],Y[1],Ct)&&(dt=qe<3?void 0:dt,qe=1),G=Object(G);++ue-1&&B%1==0&&B0){if(++G>=i)return arguments[0]}else G=0;return B.apply(void 0,arguments)}}function Fj(B){if(B!=null){try{return Me.call(B)}catch{}try{return B+""}catch{}}return""}function Lp(B,G){return B===G||B!==B&&G!==G}var Nb=Np(function(){return arguments}())?Np:function(B){return sd(B)&&rt.call(B,"callee")&&!Qt.call(B,"callee")},Db=Array.isArray;function Lb(B){return B!=null&&d4(B.length)&&!$b(B)}function Bj(B){return sd(B)&&Lb(B)}var c4=Mo||Gj;function $b(B){if(!Da(B))return!1;var G=Kl(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 Da(B){var G=typeof B;return B!=null&&(G=="object"||G=="function")}function sd(B){return B!=null&&typeof B=="object"}function jj(B){if(!sd(B)||Kl(B)!=y)return!1;var G=ie(B);if(G===null)return!0;var Y=rt.call(G,"constructor")&&G.constructor;return typeof Y=="function"&&Y instanceof Y&&Me.call(Y)==an}var f4=Z?oe(Z):od;function Vj(B){return Tj(B,h4(B))}function h4(B){return Lb(B)?kb(B,!0):yj(B)}var zj=Ej(function(B,G,Y,ue){a4(B,G,Y,ue)});function Uj(B){return function(){return B}}function p4(B){return B}function Gj(){return!1}e.exports=zj})(fy,fy.exports);var wJ=fy.exports;const co=Cl(wJ);var xJ=e=>/!(important)?$/.test(e),jE=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,CJ=(e,t)=>n=>{const r=String(t),i=xJ(r),o=jE(r),s=e?`${e}.${o}`:o;let a=vo(n.__cssMap)&&s in n.__cssMap?n.__cssMap[s].varRef:t;return a=jE(a),i?`${a} !important`:a};function f5(e){const{scale:t,transform:n,compose:r}=e;return(o,s)=>{var a;const l=CJ(t,o)(s);let u=(a=n==null?void 0:n(l,s))!=null?a:l;return r&&(u=r(u,s)),u}}var rg=(...e)=>t=>e.reduce((n,r)=>r(n),t);function Jr(e,t){return n=>{const r={property:n,scale:e};return r.transform=f5({scale:e,transform:t}),r}}var TJ=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function EJ(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:TJ(t),transform:n?f5({scale:n,compose:r}):r}}var I7=["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 PJ(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...I7].join(" ")}function kJ(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...I7].join(" ")}var AJ={"--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(" ")},OJ={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 RJ(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 IJ={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},X2={"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"},MJ=new Set(Object.values(X2)),Q2=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),NJ=e=>e.trim();function DJ(e,t){if(e==null||Q2.has(e))return e;if(!(Z2(e)||Q2.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(NJ).filter(Boolean);if((u==null?void 0:u.length)===0)return e;const c=l in X2?X2[l]:l;u.unshift(c);const d=u.map(f=>{if(MJ.has(f))return f;const h=f.indexOf(" "),[p,m]=h!==-1?[f.substr(0,h),f.substr(h+1)]:[f],S=Z2(m)?m:m&&m.split(" "),v=`colors.${p}`,y=v in t.__cssMap?t.__cssMap[v].varRef:p;return S?[y,...Array.isArray(S)?S:[S]].join(" "):y});return`${a}(${d.join(", ")})`}var Z2=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),LJ=(e,t)=>DJ(e,t??{});function $J(e){return/^var\(--.+\)$/.test(e)}var FJ=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},Xi=e=>t=>`${e}(${t})`,Xe={filter(e){return e!=="auto"?e:AJ},backdropFilter(e){return e!=="auto"?e:OJ},ring(e){return RJ(Xe.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?PJ():e==="auto-gpu"?kJ():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=FJ(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($J(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:LJ,blur:Xi("blur"),opacity:Xi("opacity"),brightness:Xi("brightness"),contrast:Xi("contrast"),dropShadow:Xi("drop-shadow"),grayscale:Xi("grayscale"),hueRotate:Xi("hue-rotate"),invert:Xi("invert"),saturate:Xi("saturate"),sepia:Xi("sepia"),bgImage(e){return e==null||Z2(e)||Q2.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=IJ[e])!=null?t:{},i={flexDirection:e};return n&&(i[n]=1),r&&(i[r]=1),i}},H={borderWidths:Jr("borderWidths"),borderStyles:Jr("borderStyles"),colors:Jr("colors"),borders:Jr("borders"),gradients:Jr("gradients",Xe.gradient),radii:Jr("radii",Xe.px),space:Jr("space",rg(Xe.vh,Xe.px)),spaceT:Jr("space",rg(Xe.vh,Xe.px)),degreeT(e){return{property:e,transform:Xe.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:f5({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:Jr("sizes",rg(Xe.vh,Xe.px)),sizesT:Jr("sizes",rg(Xe.vh,Xe.fraction)),shadows:Jr("shadows"),logical:EJ,blur:Jr("blur",Xe.blur)},nm={background:H.colors("background"),backgroundColor:H.colors("backgroundColor"),backgroundImage:H.gradients("backgroundImage"),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:Xe.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:Xe.bgClip}};Object.assign(nm,{bgImage:nm.backgroundImage,bgImg:nm.backgroundImage});var et={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(et,{rounded:et.borderRadius,roundedTop:et.borderTopRadius,roundedTopLeft:et.borderTopLeftRadius,roundedTopRight:et.borderTopRightRadius,roundedTopStart:et.borderStartStartRadius,roundedTopEnd:et.borderStartEndRadius,roundedBottom:et.borderBottomRadius,roundedBottomLeft:et.borderBottomLeftRadius,roundedBottomRight:et.borderBottomRightRadius,roundedBottomStart:et.borderEndStartRadius,roundedBottomEnd:et.borderEndEndRadius,roundedLeft:et.borderLeftRadius,roundedRight:et.borderRightRadius,roundedStart:et.borderInlineStartRadius,roundedEnd:et.borderInlineEndRadius,borderStart:et.borderInlineStart,borderEnd:et.borderInlineEnd,borderTopStartRadius:et.borderStartStartRadius,borderTopEndRadius:et.borderStartEndRadius,borderBottomStartRadius:et.borderEndStartRadius,borderBottomEndRadius:et.borderEndEndRadius,borderStartRadius:et.borderInlineStartRadius,borderEndRadius:et.borderInlineEndRadius,borderStartWidth:et.borderInlineStartWidth,borderEndWidth:et.borderInlineEndWidth,borderStartColor:et.borderInlineStartColor,borderEndColor:et.borderInlineEndColor,borderStartStyle:et.borderInlineStartStyle,borderEndStyle:et.borderInlineEndStyle});var BJ={color:H.colors("color"),textColor:H.colors("color"),fill:H.colors("fill"),stroke:H.colors("stroke")},J2={boxShadow:H.shadows("boxShadow"),mixBlendMode:!0,blendMode:H.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:H.prop("backgroundBlendMode"),opacity:!0};Object.assign(J2,{shadow:J2.boxShadow});var jJ={filter:{transform:Xe.filter},blur:H.blur("--chakra-blur"),brightness:H.propT("--chakra-brightness",Xe.brightness),contrast:H.propT("--chakra-contrast",Xe.contrast),hueRotate:H.degreeT("--chakra-hue-rotate"),invert:H.propT("--chakra-invert",Xe.invert),saturate:H.propT("--chakra-saturate",Xe.saturate),dropShadow:H.propT("--chakra-drop-shadow",Xe.dropShadow),backdropFilter:{transform:Xe.backdropFilter},backdropBlur:H.blur("--chakra-backdrop-blur"),backdropBrightness:H.propT("--chakra-backdrop-brightness",Xe.brightness),backdropContrast:H.propT("--chakra-backdrop-contrast",Xe.contrast),backdropHueRotate:H.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:H.propT("--chakra-backdrop-invert",Xe.invert),backdropSaturate:H.propT("--chakra-backdrop-saturate",Xe.saturate)},hy={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:Xe.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(hy,{flexDir:hy.flexDirection});var M7={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},VJ={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:Xe.outline},outlineOffset:!0,outlineColor:H.colors("outlineColor")},ni={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",Xe.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(ni,{w:ni.width,h:ni.height,minW:ni.minWidth,maxW:ni.maxWidth,minH:ni.minHeight,maxH:ni.maxHeight,overscroll:ni.overscrollBehavior,overscrollX:ni.overscrollBehaviorX,overscrollY:ni.overscrollBehaviorY});var zJ={listStyleType:!0,listStylePosition:!0,listStylePos:H.prop("listStylePosition"),listStyleImage:!0,listStyleImg:H.prop("listStyleImage")};function UJ(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,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}},HJ=GJ(UJ),qJ={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},WJ={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},kS=(e,t,n)=>{const r={},i=HJ(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},KJ={srOnly:{transform(e){return e===!0?qJ:e==="focusable"?WJ:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>kS(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>kS(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>kS(t,e,n)}},lf={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(lf,{insetStart:lf.insetInlineStart,insetEnd:lf.insetInlineEnd});var YJ={ring:{transform:Xe.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")},bt={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(bt,{m:bt.margin,mt:bt.marginTop,mr:bt.marginRight,me:bt.marginInlineEnd,marginEnd:bt.marginInlineEnd,mb:bt.marginBottom,ml:bt.marginLeft,ms:bt.marginInlineStart,marginStart:bt.marginInlineStart,mx:bt.marginX,my:bt.marginY,p:bt.padding,pt:bt.paddingTop,py:bt.paddingY,px:bt.paddingX,pb:bt.paddingBottom,pl:bt.paddingLeft,ps:bt.paddingInlineStart,paddingStart:bt.paddingInlineStart,pr:bt.paddingRight,pe:bt.paddingInlineEnd,paddingEnd:bt.paddingInlineEnd});var XJ={textDecorationColor:H.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:H.shadows("textShadow")},QJ={clipPath:!0,transform:H.propT("transform",Xe.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")},ZJ={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")},JJ={fontFamily:H.prop("fontFamily","fonts"),fontSize:H.prop("fontSize","fontSizes",Xe.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"}},eee={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 N7(e){return vo(e)&&e.reference?e.reference:String(e)}var xv=(e,...t)=>t.map(N7).join(` ${e} `).replace(/calc/g,""),VE=(...e)=>`calc(${xv("+",...e)})`,zE=(...e)=>`calc(${xv("-",...e)})`,ew=(...e)=>`calc(${xv("*",...e)})`,UE=(...e)=>`calc(${xv("/",...e)})`,GE=e=>{const t=N7(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:ew(t,-1)},Wa=Object.assign(e=>({add:(...t)=>Wa(VE(e,...t)),subtract:(...t)=>Wa(zE(e,...t)),multiply:(...t)=>Wa(ew(e,...t)),divide:(...t)=>Wa(UE(e,...t)),negate:()=>Wa(GE(e)),toString:()=>e.toString()}),{add:VE,subtract:zE,multiply:ew,divide:UE,negate:GE});function tee(e,t="-"){return e.replace(/\s+/g,t)}function nee(e){const t=tee(e.toString());return iee(ree(t))}function ree(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function iee(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function oee(e,t=""){return[t,e].filter(Boolean).join("-")}function see(e,t){return`var(${e}${t?`, ${t}`:""})`}function aee(e,t=""){return nee(`--${oee(e,t)}`)}function tw(e,t,n){const r=aee(e,n);return{variable:r,reference:see(r,t)}}function aTe(e,t){const n={};for(const r of t){if(Array.isArray(r)){const[i,o]=r;n[i]=tw(`${e}-${i}`,o);continue}n[r]=tw(`${e}-${r}`)}return n}function lee(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function uee(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function nw(e){if(e==null)return e;const{unitless:t}=uee(e);return t||typeof e=="number"?`${e}px`:e}var D7=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,h5=e=>Object.fromEntries(Object.entries(e).sort(D7));function HE(e){const t=h5(e);return Object.assign(Object.values(t),t)}function cee(e){const t=Object.keys(h5(e));return new Set(t)}function qE(e){var t;if(!e)return e;e=(t=nw(e))!=null?t:e;const n=-.02;return typeof e=="number"?`${e+n}`:e.replace(/(\d+\.?\d*)/u,r=>`${parseFloat(r)+n}`)}function Ud(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${nw(e)})`),t&&n.push("and",`(max-width: ${nw(t)})`),n.join(" ")}function dee(e){var t;if(!e)return null;e.base=(t=e.base)!=null?t:"0px";const n=HE(e),r=Object.entries(e).sort(D7).map(([s,a],l,u)=>{var c;let[,d]=(c=u[l+1])!=null?c:[];return d=parseFloat(d)>0?qE(d):void 0,{_minW:qE(a),breakpoint:s,minW:a,maxW:d,maxWQuery:Ud(null,d),minWQuery:Ud(a),minMaxQuery:Ud(a,d)}}),i=cee(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:h5(e),asArray:HE(e),details:r,get(s){return r.find(a=>a.breakpoint===s)},media:[null,...n.map(s=>Ud(s)).slice(1)],toArrayValue(s){if(!vo(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(;lee(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 Rn={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}`},Ts=e=>L7(t=>e(t,"&"),"[role=group]","[data-group]",".group"),$o=e=>L7(t=>e(t,"~ &"),"[data-peer]",".peer"),L7=(e,...t)=>t.map(e).join(", "),Cv={_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:Ts(Rn.hover),_peerHover:$o(Rn.hover),_groupFocus:Ts(Rn.focus),_peerFocus:$o(Rn.focus),_groupFocusVisible:Ts(Rn.focusVisible),_peerFocusVisible:$o(Rn.focusVisible),_groupActive:Ts(Rn.active),_peerActive:$o(Rn.active),_groupDisabled:Ts(Rn.disabled),_peerDisabled:$o(Rn.disabled),_groupInvalid:Ts(Rn.invalid),_peerInvalid:$o(Rn.invalid),_groupChecked:Ts(Rn.checked),_peerChecked:$o(Rn.checked),_groupFocusWithin:Ts(Rn.focusWithin),_peerFocusWithin:$o(Rn.focusWithin),_peerPlaceholderShown:$o(Rn.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]"},$7=Object.keys(Cv);function WE(e,t){return tw(String(e).replace(/\./g,"-"),void 0,t)}function fee(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:s,value:a}=o,{variable:l,reference:u}=WE(i,t==null?void 0:t.cssVarPrefix);if(!s){if(i.startsWith("space")){const f=i.split("."),[h,...p]=f,m=`${h}.-${p.join(".")}`,S=Wa.negate(a),v=Wa.negate(u);r[m]={value:S,var:l,varRef:v}}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:S}=WE(p,t==null?void 0:t.cssVarPrefix);return S},d=vo(a)?a:{default:a};n=co(n,Object.entries(d).reduce((f,[h,p])=>{var m,S;if(!p)return f;const v=c(`${p}`);if(h==="default")return f[l]=v,f;const y=(S=(m=Cv)==null?void 0:m[h])!=null?S:h;return f[y]={[l]:v},f},{})),r[i]={value:u,var:l,varRef:u}}return{cssVars:n,cssMap:r}}function hee(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function pee(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function gee(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function KE(e,t,n={}){const{stop:r,getKey:i}=n;function o(s,a=[]){var l;if(gee(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 mee=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","gradients","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur","breakpoints"];function yee(e){return pee(e,mee)}function vee(e){return e.semanticTokens}function bee(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}var See=e=>$7.includes(e)||e==="default";function _ee({tokens:e,semanticTokens:t}){const n={};return KE(e,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!1,value:r})}),KE(t,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!0,value:r})},{stop:r=>Object.keys(r).every(See)}),n}function lTe(e){var t;const n=bee(e),r=yee(n),i=vee(n),o=_ee({tokens:r,semanticTokens:i}),s=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:a,cssVars:l}=fee(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:dee(n.breakpoints)}),n}var p5=co({},nm,et,BJ,hy,ni,jJ,YJ,VJ,M7,KJ,lf,J2,bt,eee,JJ,XJ,QJ,zJ,ZJ),wee=Object.assign({},bt,ni,hy,M7,lf),uTe=Object.keys(wee),xee=[...Object.keys(p5),...$7],Cee={...p5,...Cv},Tee=e=>e in Cee,Eee=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const s in e){let a=uo(e[s],t);if(a==null)continue;if(a=vo(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"&&!kee(t),Oee=(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]=Pee(t);return t=(r=(n=i(s))!=null?n:o(a))!=null?r:o(t),t};function Ree(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,s=!1)=>{var a,l,u;const c=uo(o,r),d=Eee(c)(r);let f={};for(let h in d){const p=d[h];let m=uo(p,r);h in n&&(h=n[h]),Aee(h,m)&&(m=Oee(r,m));let S=t[h];if(S===!0&&(S={property:h}),vo(m)){f[h]=(a=f[h])!=null?a:{},f[h]=co({},f[h],i(m,!0));continue}let v=(u=(l=S==null?void 0:S.transform)==null?void 0:l.call(S,m,r,c))!=null?u:m;v=S!=null&&S.processResult?i(v,!0):v;const y=uo(S==null?void 0:S.property,r);if(!s&&(S!=null&&S.static)){const g=uo(S.static,r);f=co({},f,g)}if(y&&Array.isArray(y)){for(const g of y)f[g]=v;continue}if(y){y==="&"&&vo(v)?f=co({},f,v):f[y]=v;continue}if(vo(v)){f=co({},f,v);continue}f[h]=v}return f};return i}var Iee=e=>t=>Ree({theme:t,pseudos:Cv,configs:p5})(e);function cTe(e){return e}function dTe(e){return e}function fTe(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function Mee(e,t){if(Array.isArray(e))return e;if(vo(e))return t(e);if(e!=null)return[e]}function Nee(e,t){for(let n=t+1;n{co(u,{[g]:f?y[g]:{[v]:y[g]}})});continue}if(!h){f?co(u,y):u[v]=y;continue}u[v]=y}}return u}}function Lee(e){return t=>{var n;const{variant:r,size:i,theme:o}=t,s=Dee(o);return co({},uo((n=e.baseStyle)!=null?n:{},t),s(e,"sizes",i,t),s(e,"variants",r,t))}}function $ee(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 Ao(e){return hee(e,["styleConfig","size","variant","colorScheme"])}function Fee(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function hTe(e){var t;return Fee(e)&&(t=e.ownerDocument)!=null?t:document}function Bee(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var jee=Bee();function Vee(e,t){const n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n}function zee(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}},Gee=Uee(zee);function F7(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var B7=e=>F7(e,t=>t!=null);function Hee(e){return typeof e=="function"}function qee(e,...t){return Hee(e)?e(...t):e}function Wee(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}const j7=1/60*1e3,Kee=typeof performance<"u"?()=>performance.now():()=>Date.now(),V7=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(Kee()),j7);function Yee(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(e[t]=Yee(()=>Jf=!0),e),{}),Qee=np.reduce((e,t)=>{const n=Tv[t];return e[t]=(r,i=!1,o=!1)=>(Jf||ete(),n.schedule(r,i,o)),e},{}),Zee=np.reduce((e,t)=>(e[t]=Tv[t].cancel,e),{});np.reduce((e,t)=>(e[t]=()=>Tv[t].process(Xu),e),{});const Jee=e=>Tv[e].process(Xu),z7=e=>{Jf=!1,Xu.delta=rw?j7:Math.max(Math.min(e-Xu.timestamp,Xee),1),Xu.timestamp=e,iw=!0,np.forEach(Jee),iw=!1,Jf&&(rw=!1,V7(z7))},ete=()=>{Jf=!0,rw=!0,iw||V7(z7)},YE=()=>Xu;var tte=typeof Element<"u",nte=typeof Map=="function",rte=typeof Set=="function",ite=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function rm(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(!rm(e[r],t[r]))return!1;return!0}var o;if(nte&&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(!rm(r.value[1],t.get(r.value[0])))return!1;return!0}if(rte&&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(ite&&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(tte&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!rm(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var ote=function(t,n){try{return rm(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 ste=Cl(ote);function U7(e,t={}){var n;const{styleConfig:r,...i}=t,{theme:o,colorMode:s}=R7(),a=e?Gee(o,`components.${e}`):void 0,l=r||a,u=co({theme:o,colorMode:s},(n=l==null?void 0:l.defaultProps)!=null?n:{},B7(Vee(i,["children"]))),c=E.useRef({});if(l){const f=Lee(l)(u);ste(c.current,f)||(c.current=f)}return c.current}function Ol(e,t={}){return U7(e,t)}function Ev(e,t={}){return U7(e,t)}var ate=new Set([...xee,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),lte=new Set(["htmlWidth","htmlHeight","htmlSize","htmlTranslate"]);function ute(e){return lte.has(e)||!ate.has(e)}function cte(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}var dte=/^((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)-.*))$/,fte=_7(function(e){return dte.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),hte=fte,pte=function(t){return t!=="theme"},XE=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?hte:pte},QE=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},gte=function(t){var n=t.cache,r=t.serialized,i=t.isStringTag;return x7(n,r,i),rJ(function(){return C7(n,r,i)}),null},mte=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=QE(t,n,r),l=a||XE(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=F7(s,(d,f)=>Tee(f)),l=qee(e,t),u=cte({},i,l,B7(a),o),c=Iee(u)(t.theme);return r?[c,r]:c};function AS(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=ute);const i=bte({baseStyle:n}),o=vte(e,r)(i);return ze.forwardRef(function(l,u){const{colorMode:c,forced:d}=d5();return ze.createElement(o,{ref:u,"data-theme":d?c:void 0,...l})})}function Ste(){const e=new Map;return new Proxy(AS,{apply(t,n,r){return AS(...r)},get(t,n){return e.has(n)||e.set(n,AS(n)),e.get(n)}})}var Ae=Ste();function Ze(e){return E.forwardRef(e)}var _te=(e,t)=>e.find(n=>n.id===t);function JE(e,t){const n=G7(e,t),r=n?e[n].findIndex(i=>i.id===t):-1;return{position:n,index:r}}function G7(e,t){for(const[n,r]of Object.entries(e))if(_te(r,t))return n}function wte(e){const t=e.includes("right"),n=e.includes("left");let r="center";return t&&(r="flex-end"),n&&(r="flex-start"),{display:"flex",flexDirection:"column",alignItems:r}}function xte(e){const n=e==="top"||e==="bottom"?"0 auto":void 0,r=e.includes("top")?"env(safe-area-inset-top, 0px)":void 0,i=e.includes("bottom")?"env(safe-area-inset-bottom, 0px)":void 0,o=e.includes("left")?void 0:"env(safe-area-inset-right, 0px)",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:n,top:r,bottom:i,right:o,left:s}}function Fn(e,t=[]){const n=E.useRef(e);return E.useEffect(()=>{n.current=e}),E.useCallback((...r)=>{var i;return(i=n.current)==null?void 0:i.call(n,...r)},t)}function Cte(e,t){const n=Fn(e);E.useEffect(()=>{if(t==null)return;let r=null;return r=window.setTimeout(()=>{n()},t),()=>{r&&window.clearTimeout(r)}},[t,n])}function gy(e,t){const n=E.useRef(!1),r=E.useRef(!1);E.useEffect(()=>{if(n.current&&r.current)return e();r.current=!0},t),E.useEffect(()=>(n.current=!0,()=>{n.current=!1}),[])}const H7=E.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),Pv=E.createContext({}),rp=E.createContext(null),kv=typeof document<"u",my=kv?E.useLayoutEffect:E.useEffect,q7=E.createContext({strict:!1});function Tte(e,t,n,r){const{visualElement:i}=E.useContext(Pv),o=E.useContext(q7),s=E.useContext(rp),a=E.useContext(H7).reducedMotion,l=E.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;return E.useInsertionEffect(()=>{u&&u.update(n,s)}),my(()=>{u&&u.render()}),E.useEffect(()=>{u&&u.updateFeatures()}),(window.HandoffAppearAnimations?my:E.useEffect)(()=>{u&&u.animationState&&u.animationState.animateChanges()}),u}function Ru(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function Ete(e,t,n){return E.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):Ru(n)&&(n.current=r))},[t])}function eh(e){return typeof e=="string"||Array.isArray(e)}function Av(e){return typeof e=="object"&&typeof e.start=="function"}const g5=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],m5=["initial",...g5];function Ov(e){return Av(e.animate)||m5.some(t=>eh(e[t]))}function W7(e){return!!(Ov(e)||e.variants)}function Pte(e,t){if(Ov(e)){const{initial:n,animate:r}=e;return{initial:n===!1||eh(n)?n:void 0,animate:eh(r)?r:void 0}}return e.inherit!==!1?t:{}}function kte(e){const{initial:t,animate:n}=Pte(e,E.useContext(Pv));return E.useMemo(()=>({initial:t,animate:n}),[eP(t),eP(n)])}function eP(e){return Array.isArray(e)?e.join(" "):e}const tP={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"]},th={};for(const e in tP)th[e]={isEnabled:t=>tP[e].some(n=>!!t[n])};function Ate(e){for(const t in e)th[t]={...th[t],...e[t]}}const y5=E.createContext({}),K7=E.createContext({}),Ote=Symbol.for("motionComponentSymbol");function Rte({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:r,Component:i}){e&&Ate(e);function o(a,l){let u;const c={...E.useContext(H7),...a,layoutId:Ite(a)},{isStatic:d}=c,f=kte(a),h=r(a,d);if(!d&&kv){f.visualElement=Tte(i,h,c,t);const p=E.useContext(K7),m=E.useContext(q7).strict;f.visualElement&&(u=f.visualElement.loadFeatures(c,m,e,p))}return E.createElement(Pv.Provider,{value:f},u&&f.visualElement?E.createElement(u,{visualElement:f.visualElement,...c}):null,n(i,a,Ete(h,f.visualElement,l),h,d,f.visualElement))}const s=E.forwardRef(o);return s[Ote]=i,s}function Ite({layoutId:e}){const t=E.useContext(y5).id;return t&&e!==void 0?t+"-"+e:e}function Mte(e){function t(r,i={}){return Rte(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 Nte=["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 v5(e){return typeof e!="string"||e.includes("-")?!1:!!(Nte.indexOf(e)>-1||/[A-Z]/.test(e))}const yy={};function Dte(e){Object.assign(yy,e)}const ip=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Rl=new Set(ip);function Y7(e,{layout:t,layoutId:n}){return Rl.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!yy[e]||e==="opacity")}const Nr=e=>!!(e&&e.getVelocity),Lte={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},$te=ip.length;function Fte(e,{enableHardwareAcceleration:t=!0,allowTransformNone:n=!0},r,i){let o="";for(let s=0;s<$te;s++){const a=ip[s];if(e[a]!==void 0){const l=Lte[a]||a;o+=`${l}(${e[a]}) `}}return t&&!e.z&&(o+="translateZ(0)"),o=o.trim(),i?o=i(e,r?"":o):n&&r&&(o="none"),o}const X7=e=>t=>typeof t=="string"&&t.startsWith(e),Q7=X7("--"),ow=X7("var(--"),Bte=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,jte=(e,t)=>t&&typeof e=="number"?t.transform(e):e,fa=(e,t,n)=>Math.min(Math.max(n,e),t),Il={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},uf={...Il,transform:e=>fa(0,1,e)},ig={...Il,default:1},cf=e=>Math.round(e*1e5)/1e5,Rv=/(-)?([\d]*\.?[\d])+/g,Z7=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,Vte=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function op(e){return typeof e=="string"}const sp=e=>({test:t=>op(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),ks=sp("deg"),bo=sp("%"),we=sp("px"),zte=sp("vh"),Ute=sp("vw"),nP={...bo,parse:e=>bo.parse(e)/100,transform:e=>bo.transform(e*100)},rP={...Il,transform:Math.round},J7={borderWidth:we,borderTopWidth:we,borderRightWidth:we,borderBottomWidth:we,borderLeftWidth:we,borderRadius:we,radius:we,borderTopLeftRadius:we,borderTopRightRadius:we,borderBottomRightRadius:we,borderBottomLeftRadius:we,width:we,maxWidth:we,height:we,maxHeight:we,size:we,top:we,right:we,bottom:we,left:we,padding:we,paddingTop:we,paddingRight:we,paddingBottom:we,paddingLeft:we,margin:we,marginTop:we,marginRight:we,marginBottom:we,marginLeft:we,rotate:ks,rotateX:ks,rotateY:ks,rotateZ:ks,scale:ig,scaleX:ig,scaleY:ig,scaleZ:ig,skew:ks,skewX:ks,skewY:ks,distance:we,translateX:we,translateY:we,translateZ:we,x:we,y:we,z:we,perspective:we,transformPerspective:we,opacity:uf,originX:nP,originY:nP,originZ:we,zIndex:rP,fillOpacity:uf,strokeOpacity:uf,numOctaves:rP};function b5(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(Q7(d)){o[d]=f;continue}const h=J7[d],p=jte(f,h);if(Rl.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=Fte(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 S5=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function eM(e,t,n){for(const r in t)!Nr(t[r])&&!Y7(r,n)&&(e[r]=t[r])}function Gte({transformTemplate:e},t,n){return E.useMemo(()=>{const r=S5();return b5(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function Hte(e,t,n){const r=e.style||{},i={};return eM(i,r,e),Object.assign(i,Gte(e,t,n)),e.transformValues?e.transformValues(i):i}function qte(e,t,n){const r={},i=Hte(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 Wte=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 vy(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||Wte.has(e)}let tM=e=>!vy(e);function Kte(e){e&&(tM=t=>t.startsWith("on")?!vy(t):e(t))}try{Kte(require("@emotion/is-prop-valid").default)}catch{}function Yte(e,t,n){const r={};for(const i in e)i==="values"&&typeof e.values=="object"||(tM(i)||n===!0&&vy(i)||!t&&!vy(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function iP(e,t,n){return typeof e=="string"?e:we.transform(t+n*e)}function Xte(e,t,n){const r=iP(t,e.x,e.width),i=iP(n,e.y,e.height);return`${r} ${i}`}const Qte={offset:"stroke-dashoffset",array:"stroke-dasharray"},Zte={offset:"strokeDashoffset",array:"strokeDasharray"};function Jte(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?Qte:Zte;e[o.offset]=we.transform(-r);const s=we.transform(t),a=we.transform(n);e[o.array]=`${s} ${a}`}function _5(e,{attrX:t,attrY:n,attrScale:r,originX:i,originY:o,pathLength:s,pathSpacing:a=1,pathOffset:l=0,...u},c,d,f){if(b5(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=Xte(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&&Jte(h,s,a,l,!1)}const nM=()=>({...S5(),attrs:{}}),w5=e=>typeof e=="string"&&e.toLowerCase()==="svg";function ene(e,t,n,r){const i=E.useMemo(()=>{const o=nM();return _5(o,t,{enableHardwareAcceleration:!1},w5(r),e.transformTemplate),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};eM(o,e.style,e),i.style={...o,...i.style}}return i}function tne(e=!1){return(n,r,i,{latestValues:o},s)=>{const l=(v5(n)?ene:qte)(r,o,s,n),c={...Yte(r,typeof n=="string",e),...l,ref:i},{children:d}=r,f=E.useMemo(()=>Nr(d)?d.get():d,[d]);return E.createElement(n,{...c,children:f})}}const x5=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function rM(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 iM=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 oM(e,t,n,r){rM(e,t,void 0,r);for(const i in t.attrs)e.setAttribute(iM.has(i)?i:x5(i),t.attrs[i])}function C5(e,t){const{style:n}=e,r={};for(const i in n)(Nr(n[i])||t.style&&Nr(t.style[i])||Y7(i,e))&&(r[i]=n[i]);return r}function sM(e,t){const n=C5(e,t);for(const r in e)if(Nr(e[r])||Nr(t[r])){const i=ip.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;n[i]=e[r]}return n}function T5(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 aM(e){const t=E.useRef(null);return t.current===null&&(t.current=e()),t.current}const by=e=>Array.isArray(e),nne=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),rne=e=>by(e)?e[e.length-1]||0:e;function im(e){const t=Nr(e)?e.get():e;return nne(t)?t.toValue():t}function ine({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const s={latestValues:one(r,i,o,e),renderState:t()};return n&&(s.mount=a=>n(r,a,s)),s}const lM=e=>(t,n)=>{const r=E.useContext(Pv),i=E.useContext(rp),o=()=>ine(e,t,r,i);return n?o():aM(o)};function one(e,t,n,r){const i={},o=r(e,{});for(const f in o)i[f]=im(o[f]);let{initial:s,animate:a}=e;const l=Ov(e),u=W7(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"&&!Av(d)&&(Array.isArray(d)?d:[d]).forEach(h=>{const p=T5(e,h);if(!p)return;const{transitionEnd:m,transition:S,...v}=p;for(const y in v){let g=v[y];if(Array.isArray(g)){const b=c?g.length-1:0;g=g[b]}g!==null&&(i[y]=g)}for(const y in m)i[y]=m[y]}),i}const sne={useVisualState:lM({scrapeMotionValuesFromProps:sM,createRenderState:nM,onMount:(e,t,{renderState:n,latestValues:r})=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}_5(n,r,{enableHardwareAcceleration:!1},w5(t.tagName),e.transformTemplate),oM(t,n)}})},ane={useVisualState:lM({scrapeMotionValuesFromProps:C5,createRenderState:S5})};function lne(e,{forwardMotionProps:t=!1},n,r){return{...v5(e)?sne:ane,preloadedFeatures:n,useRender:tne(t),createVisualElement:r,Component:e}}function Qo(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}const uM=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function Iv(e,t="page"){return{point:{x:e[t+"X"],y:e[t+"Y"]}}}const une=e=>t=>uM(t)&&e(t,Iv(t));function es(e,t,n,r){return Qo(e,t,une(n),r)}const cne=(e,t)=>n=>t(e(n)),ea=(...e)=>e.reduce(cne);function cM(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const oP=cM("dragHorizontal"),sP=cM("dragVertical");function dM(e){let t=!1;if(e==="y")t=sP();else if(e==="x")t=oP();else{const n=oP(),r=sP();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function fM(){const e=dM(!0);return e?(e(),!1):!0}class Ea{constructor(t){this.isMounted=!1,this.node=t}update(){}}const on=e=>e;function dne(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]=dne(()=>n=!0),d),{}),s=d=>o[d].process(i),a=d=>{n=!1,i.delta=r?1e3/60:Math.max(Math.min(d-i.timestamp,fne),1),i.timestamp=d,i.isProcessing=!0,og.forEach(s),i.isProcessing=!1,n&&t&&(r=!1,e(a))},l=()=>{n=!0,r=!0,i.isProcessing||e(a)};return{schedule:og.reduce((d,f)=>{const h=o[f];return d[f]=(p,m=!1,S=!1)=>(n||l(),h.schedule(p,m,S)),d},{}),cancel:d=>og.forEach(f=>o[f].cancel(d)),state:i,steps:o}}const{schedule:kt,cancel:cs,state:Xn,steps:OS}=hne(typeof requestAnimationFrame<"u"?requestAnimationFrame:on,!0);function aP(e,t){const n="pointer"+(t?"enter":"leave"),r="onHover"+(t?"Start":"End"),i=(o,s)=>{if(o.type==="touch"||fM())return;const a=e.getProps();e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",t),a[r]&&kt.update(()=>a[r](o,s))};return es(e.current,n,i,{passive:!e.getProps()[r]})}class pne extends Ea{mount(){this.unmount=ea(aP(this.node,!0),aP(this.node,!1))}unmount(){}}class gne extends Ea{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=ea(Qo(this.node.current,"focus",()=>this.onFocus()),Qo(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const hM=(e,t)=>t?e===t?!0:hM(e,t.parentElement):!1;function RS(e,t){if(!t)return;const n=new PointerEvent("pointer"+e);t(n,Iv(n))}class mne extends Ea{constructor(){super(...arguments),this.removeStartListeners=on,this.removeEndListeners=on,this.removeAccessibleListeners=on,this.startPointerPress=(t,n)=>{if(this.removeEndListeners(),this.isPressing)return;const r=this.node.getProps(),o=es(window,"pointerup",(a,l)=>{if(!this.checkPressEnd())return;const{onTap:u,onTapCancel:c}=this.node.getProps();kt.update(()=>{hM(this.node.current,a.target)?u&&u(a,l):c&&c(a,l)})},{passive:!(r.onTap||r.onPointerUp)}),s=es(window,"pointercancel",(a,l)=>this.cancelPress(a,l),{passive:!(r.onTapCancel||r.onPointerCancel)});this.removeEndListeners=ea(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()||RS("up",(l,u)=>{const{onTap:c}=this.node.getProps();c&&kt.update(()=>c(l,u))})};this.removeEndListeners(),this.removeEndListeners=Qo(this.node.current,"keyup",s),RS("down",(a,l)=>{this.startPress(a,l)})},n=Qo(this.node.current,"keydown",t),r=()=>{this.isPressing&&RS("cancel",(o,s)=>this.cancelPress(o,s))},i=Qo(this.node.current,"blur",r);this.removeAccessibleListeners=ea(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&&kt.update(()=>r(t,n))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!fM()}cancelPress(t,n){if(!this.checkPressEnd())return;const{onTapCancel:r}=this.node.getProps();r&&kt.update(()=>r(t,n))}mount(){const t=this.node.getProps(),n=es(this.node.current,"pointerdown",this.startPointerPress,{passive:!(t.onTapStart||t.onPointerStart)}),r=Qo(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=ea(n,r)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const sw=new WeakMap,IS=new WeakMap,yne=e=>{const t=sw.get(e.target);t&&t(e)},vne=e=>{e.forEach(yne)};function bne({root:e,...t}){const n=e||document;IS.has(n)||IS.set(n,{});const r=IS.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(vne,{root:e,...t})),r[i]}function Sne(e,t,n){const r=bne(t);return sw.set(e,n),r.observe(e),()=>{sw.delete(e),r.unobserve(e)}}const _ne={some:0,all:1};class wne extends Ea{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:_ne[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 Sne(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(xne(t,n))&&this.startObserver()}unmount(){}}function xne({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const Cne={inView:{Feature:wne},tap:{Feature:mne},focus:{Feature:gne},hover:{Feature:pne}};function pM(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 Ene(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVelocity()),t}function Mv(e,t,n){const r=e.getProps();return T5(r,t,n!==void 0?n:r.custom,Tne(e),Ene(e))}const Pne="framerAppearId",kne="data-"+x5(Pne);let Ane=on,E5=on;const ta=e=>e*1e3,ts=e=>e/1e3,One={current:!1},gM=e=>Array.isArray(e)&&typeof e[0]=="number";function mM(e){return!!(!e||typeof e=="string"&&yM[e]||gM(e)||Array.isArray(e)&&e.every(mM))}const Gd=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,yM={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Gd([0,.65,.55,1]),circOut:Gd([.55,0,1,.45]),backIn:Gd([.31,.01,.66,-.59]),backOut:Gd([.33,1.53,.69,.99])};function vM(e){if(e)return gM(e)?Gd(e):Array.isArray(e)?e.map(vM):yM[e]}function Rne(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=vM(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"})}const lP={waapi:()=>Object.hasOwnProperty.call(Element.prototype,"animate")},MS={},bM={};for(const e in lP)bM[e]=()=>(MS[e]===void 0&&(MS[e]=lP[e]()),MS[e]);function Ine(e,{repeat:t,repeatType:n="loop"}){const r=t&&n!=="loop"&&t%2===1?0:e.length-1;return e[r]}const SM=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,Mne=1e-7,Nne=12;function Dne(e,t,n,r,i){let o,s,a=0;do s=t+(n-t)/2,o=SM(s,r,i)-e,o>0?n=s:t=s;while(Math.abs(o)>Mne&&++aDne(o,0,1,e,n);return o=>o===0||o===1?o:SM(i(o),t,r)}const Lne=ap(.42,0,1,1),$ne=ap(0,0,.58,1),_M=ap(.42,0,.58,1),Fne=e=>Array.isArray(e)&&typeof e[0]!="number",wM=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,xM=e=>t=>1-e(1-t),CM=e=>1-Math.sin(Math.acos(e)),P5=xM(CM),Bne=wM(P5),TM=ap(.33,1.53,.69,.99),k5=xM(TM),jne=wM(k5),Vne=e=>(e*=2)<1?.5*k5(e):.5*(2-Math.pow(2,-10*(e-1))),zne={linear:on,easeIn:Lne,easeInOut:_M,easeOut:$ne,circIn:CM,circInOut:Bne,circOut:P5,backIn:k5,backInOut:jne,backOut:TM,anticipate:Vne},uP=e=>{if(Array.isArray(e)){E5(e.length===4);const[t,n,r,i]=e;return ap(t,n,r,i)}else if(typeof e=="string")return zne[e];return e},A5=(e,t)=>n=>!!(op(n)&&Vte.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),EM=(e,t,n)=>r=>{if(!op(r))return r;const[i,o,s,a]=r.match(Rv);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(s),alpha:a!==void 0?parseFloat(a):1}},Une=e=>fa(0,255,e),NS={...Il,transform:e=>Math.round(Une(e))},Za={test:A5("rgb","red"),parse:EM("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+NS.transform(e)+", "+NS.transform(t)+", "+NS.transform(n)+", "+cf(uf.transform(r))+")"};function Gne(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 aw={test:A5("#"),parse:Gne,transform:Za.transform},Iu={test:A5("hsl","hue"),parse:EM("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+bo.transform(cf(t))+", "+bo.transform(cf(n))+", "+cf(uf.transform(r))+")"},ur={test:e=>Za.test(e)||aw.test(e)||Iu.test(e),parse:e=>Za.test(e)?Za.parse(e):Iu.test(e)?Iu.parse(e):aw.parse(e),transform:e=>op(e)?e:e.hasOwnProperty("red")?Za.transform(e):Iu.transform(e)},Dt=(e,t,n)=>-n*e+n*t+e;function DS(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 Hne({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=DS(l,a,e+1/3),o=DS(l,a,e),s=DS(l,a,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(s*255),alpha:r}}const LS=(e,t,n)=>{const r=e*e;return Math.sqrt(Math.max(0,n*(t*t-r)+r))},qne=[aw,Za,Iu],Wne=e=>qne.find(t=>t.test(e));function cP(e){const t=Wne(e);let n=t.parse(e);return t===Iu&&(n=Hne(n)),n}const PM=(e,t)=>{const n=cP(e),r=cP(t),i={...n};return o=>(i.red=LS(n.red,r.red,o),i.green=LS(n.green,r.green,o),i.blue=LS(n.blue,r.blue,o),i.alpha=Dt(n.alpha,r.alpha,o),Za.transform(i))};function Kne(e){var t,n;return isNaN(e)&&op(e)&&(((t=e.match(Rv))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(Z7))===null||n===void 0?void 0:n.length)||0)>0}const kM={regex:Bte,countKey:"Vars",token:"${v}",parse:on},AM={regex:Z7,countKey:"Colors",token:"${c}",parse:ur.parse},OM={regex:Rv,countKey:"Numbers",token:"${n}",parse:Il.parse};function $S(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 Sy(e){const t=e.toString(),n={value:t,tokenised:t,values:[],numVars:0,numColors:0,numNumbers:0};return n.value.includes("var(--")&&$S(n,kM),$S(n,AM),$S(n,OM),n}function RM(e){return Sy(e).values}function IM(e){const{values:t,numColors:n,numVars:r,tokenised:i}=Sy(e),o=t.length;return s=>{let a=i;for(let l=0;ltypeof e=="number"?0:e;function Xne(e){const t=RM(e);return IM(e)(t.map(Yne))}const ha={test:Kne,parse:RM,createTransformer:IM,getAnimatableNone:Xne},MM=(e,t)=>n=>`${n>0?t:e}`;function NM(e,t){return typeof e=="number"?n=>Dt(e,t,n):ur.test(e)?PM(e,t):e.startsWith("var(")?MM(e,t):LM(e,t)}const DM=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,s)=>NM(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]=NM(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}},LM=(e,t)=>{const n=ha.createTransformer(t),r=Sy(e),i=Sy(t);return r.numVars===i.numVars&&r.numColors===i.numColors&&r.numNumbers>=i.numNumbers?ea(DM(r.values,i.values),n):MM(e,t)},nh=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},dP=(e,t)=>n=>Dt(e,t,n);function Zne(e){return typeof e=="number"?dP:typeof e=="string"?ur.test(e)?PM:LM:Array.isArray(e)?DM:typeof e=="object"?Qne:dP}function Jne(e,t,n){const r=[],i=n||Zne(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=Jne(t,r,i),a=s.length,l=u=>{let c=0;if(a>1)for(;cl(fa(e[0],e[o-1],u)):l}function ere(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const i=nh(0,t,r);e.push(Dt(n,1,i))}}function tre(e){const t=[0];return ere(t,e.length-1),t}function nre(e,t){return e.map(n=>n*t)}function rre(e,t){return e.map(()=>t||_M).splice(0,e.length-1)}function _y({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const i=Fne(r)?r.map(uP):uP(r),o={done:!1,value:t[0]},s=nre(n&&n.length===t.length?n:tre(t),e),a=$M(s,t,{ease:Array.isArray(i)?i:rre(t,i)});return{calculatedDuration:e,next:l=>(o.value=a(l),o.done=l>=e,o)}}function FM(e,t){return t?e*(1e3/t):0}const ire=5;function BM(e,t,n){const r=Math.max(t-ire,0);return FM(n-e(r),t-r)}const FS=.001,ore=.01,fP=10,sre=.05,are=1;function lre({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;Ane(e<=ta(fP));let s=1-t;s=fa(sre,are,s),e=fa(ore,fP,ts(e)),s<1?(i=u=>{const c=u*s,d=c*e,f=c-n,h=lw(u,s),p=Math.exp(-d);return FS-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=lw(Math.pow(u,2),s);return(-i(u)+FS>0?-1:1)*((f-h)*p)/m}):(i=u=>{const c=Math.exp(-u*e),d=(u-n)*e+1;return-FS+c*d},o=u=>{const c=Math.exp(-u*e),d=(n-u)*(e*e);return c*d});const a=5/e,l=cre(i,o,a);if(e=ta(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 ure=12;function cre(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function hre(e){let t={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...e};if(!hP(e,fre)&&hP(e,dre)){const n=lre(e);t={...t,...n,velocity:0,mass:1},t.isResolvedFromDuration=!0}return t}function jM({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}=hre(r),h=c?-ts(c):0,p=l/(2*Math.sqrt(a*u)),m=o-i,S=ts(Math.sqrt(a/u)),v=Math.abs(m)<5;n||(n=v?.01:2),t||(t=v?.005:.5);let y;if(p<1){const g=lw(S,p);y=b=>{const _=Math.exp(-p*S*b);return o-_*((h+p*S*m)/g*Math.sin(g*b)+m*Math.cos(g*b))}}else if(p===1)y=g=>o-Math.exp(-S*g)*(m+(h+S*m)*g);else{const g=S*Math.sqrt(p*p-1);y=b=>{const _=Math.exp(-p*S*b),w=Math.min(g*b,300);return o-_*((h+p*S*m)*Math.sinh(w)+g*m*Math.cosh(w))/g}}return{calculatedDuration:f&&d||null,next:g=>{const b=y(g);if(f)s.done=g>=d;else{let _=h;g!==0&&(p<1?_=BM(y,g,b):_=0);const w=Math.abs(_)<=n,x=Math.abs(o-b)<=t;s.done=w&&x}return s.value=s.done?o:b,s}}}function pP({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=>v+y(C),b=C=>{const k=y(C),P=g(C);f.done=Math.abs(k)<=u,f.value=f.done?v:P};let _,w;const x=C=>{h(f.value)&&(_=C,w=jM({keyframes:[f.value,p(f.value)],velocity:BM(g,C,f.value),damping:i,stiffness:o,restDelta:u,restSpeed:c}))};return x(0),{calculatedDuration:null,next:C=>{let k=!1;return!w&&_===void 0&&(k=!0,b(C),x(C)),_!==void 0&&C>_?w.next(C-_):(!k&&b(C),f)}}}const pre=e=>{const t=({timestamp:n})=>e(n);return{start:()=>kt.update(t,!0),stop:()=>cs(t),now:()=>Xn.isProcessing?Xn.timestamp:performance.now()}},gP=2e4;function mP(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t=gP?1/0:t}const gre={decay:pP,inertia:pP,tween:_y,keyframes:_y,spring:jM};function wy({autoplay:e=!0,delay:t=0,driver:n=pre,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,S;const v=()=>{S=new Promise(V=>{m=V})};v();let y;const g=gre[i]||_y;let b;g!==_y&&typeof r[0]!="number"&&(b=$M([0,100],r,{clamp:!1}),r=[0,100]);const _=g({...f,keyframes:r});let w;a==="mirror"&&(w=g({...f,keyframes:[...r].reverse(),velocity:-(f.velocity||0)}));let x="idle",C=null,k=null,P=null;_.calculatedDuration===null&&o&&(_.calculatedDuration=mP(_));const{calculatedDuration:A}=_;let $=1/0,N=1/0;A!==null&&($=A+s,N=$*(o+1)-s);let T=0;const O=V=>{if(k===null)return;h>0&&(k=Math.min(k,V)),h<0&&(k=Math.min(V-N/h,k)),C!==null?T=C:T=Math.round(V-k)*h;const z=T-t*(h>=0?1:-1),U=h>=0?z<0:z>N;T=Math.max(z,0),x==="finished"&&C===null&&(T=N);let K=T,W=_;if(o){const Q=T/$;let J=Math.floor(Q),ne=Q%1;!ne&&Q>=1&&(ne=1),ne===1&&J--,J=Math.min(J,o+1);const Z=!!(J%2);Z&&(a==="reverse"?(ne=1-ne,s&&(ne-=s/$)):a==="mirror"&&(W=w));let ge=fa(0,1,ne);T>N&&(ge=a==="reverse"&&Z?1:0),K=ge*$}const X=U?{done:!1,value:r[0]}:W.next(K);b&&(X.value=b(X.value));let{done:F}=X;!U&&A!==null&&(F=h>=0?T>=N:T<=0);const q=C===null&&(x==="finished"||x==="running"&&F);return d&&d(X.value),q&&R(),X},I=()=>{y&&y.stop(),y=void 0},M=()=>{x="idle",I(),m(),v(),k=P=null},R=()=>{x="finished",c&&c(),I(),m()},D=()=>{if(p)return;y||(y=n(O));const V=y.now();l&&l(),C!==null?k=V-C:(!k||x==="finished")&&(k=V),x==="finished"&&v(),P=k,C=null,x="running",y.start()};e&&D();const L={then(V,z){return S.then(V,z)},get time(){return ts(T)},set time(V){V=ta(V),T=V,C!==null||!y||h===0?C=V:k=y.now()-V/h},get duration(){const V=_.calculatedDuration===null?mP(_):_.calculatedDuration;return ts(V)},get speed(){return h},set speed(V){V===h||!y||(h=V,L.time=ts(T))},get state(){return x},play:D,pause:()=>{x="paused",C=T},stop:()=>{p=!0,x!=="idle"&&(x="idle",u&&u(),M())},cancel:()=>{P!==null&&O(P),M()},complete:()=>{x="finished"},sample:V=>(k=0,O(V))};return L}const mre=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),sg=10,yre=2e4,vre=(e,t)=>t.type==="spring"||e==="backgroundColor"||!mM(t.ease);function bre(e,t,{onUpdate:n,onComplete:r,...i}){if(!(bM.waapi()&&mre.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(v=>{a=v})};u();let{keyframes:c,duration:d=300,ease:f,times:h}=i;if(vre(t,i)){const v=wy({...i,repeat:0,delay:0});let y={done:!1,value:c[0]};const g=[];let b=0;for(;!y.done&&bp.cancel(),S=()=>{kt.update(m),a(),u()};return p.onfinish=()=>{e.set(Ine(c,i)),r&&r(),S()},{then(v,y){return l.then(v,y)},get time(){return ts(p.currentTime||0)},set time(v){p.currentTime=ta(v)},get speed(){return p.playbackRate},set speed(v){p.playbackRate=v},get duration(){return ts(d)},play:()=>{s||(p.play(),cs(m))},pause:()=>p.pause(),stop:()=>{if(s=!0,p.playState==="idle")return;const{currentTime:v}=p;if(v){const y=wy({...i,autoplay:!1});e.setWithVelocity(y.sample(v-sg).value,y.sample(v).value,sg)}S()},complete:()=>p.finish(),cancel:S}}function Sre({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:on,pause:on,stop:on,then:o=>(o(),Promise.resolve()),cancel:on,complete:on});return t?wy({keyframes:[0,1],duration:0,delay:t,onComplete:i}):i()}const _re={type:"spring",stiffness:500,damping:25,restSpeed:10},wre=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),xre={type:"keyframes",duration:.8},Cre={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},Tre=(e,{keyframes:t})=>t.length>2?xre:Rl.has(e)?e.startsWith("scale")?wre(t[1]):_re:Cre,uw=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(ha.test(t)||t==="0")&&!t.startsWith("url(")),Ere=new Set(["brightness","contrast","saturate","opacity"]);function Pre(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(Rv)||[];if(!r)return e;const i=n.replace(r,"");let o=Ere.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const kre=/([a-z-]*)\(.*?\)/g,cw={...ha,getAnimatableNone:e=>{const t=e.match(kre);return t?t.map(Pre).join(" "):e}},Are={...J7,color:ur,backgroundColor:ur,outlineColor:ur,fill:ur,stroke:ur,borderColor:ur,borderTopColor:ur,borderRightColor:ur,borderBottomColor:ur,borderLeftColor:ur,filter:cw,WebkitFilter:cw},O5=e=>Are[e];function VM(e,t){let n=O5(e);return n!==cw&&(n=ha),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const zM=e=>/^0[^.\s]+$/.test(e);function Ore(e){if(typeof e=="number")return e===0;if(e!==null)return e==="none"||e==="0"||zM(e)}function Rre(e,t,n,r){const i=uw(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=UM(r,e)||{},s=o.delay||r.delay||0;let{elapsed:a=0}=r;a=a-ta(s);const l=Rre(t,e,n,o),u=l[0],c=l[l.length-1],d=uw(e,u),f=uw(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(Ire(o)||(h={...h,...Tre(e,h)}),h.duration&&(h.duration=ta(h.duration)),h.repeatDelay&&(h.repeatDelay=ta(h.repeatDelay)),!d||!f||One.current||o.type===!1)return Sre(h);if(t.owner&&t.owner.current instanceof HTMLElement&&!t.owner.getProps().onUpdate){const p=bre(t,e,h);if(p)return p}return wy(h)};function xy(e){return!!(Nr(e)&&e.add)}const Mre=e=>/^\-?\d*\.?\d+$/.test(e);function I5(e,t){e.indexOf(t)===-1&&e.push(t)}function M5(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class N5{constructor(){this.subscriptions=[]}add(t){return I5(this.subscriptions,t),()=>M5(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 Dre{constructor(t,n={}){this.version="10.12.22",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}=Xn;this.lastUpdated!==s&&(this.timeDelta=o,this.lastUpdated=s,kt.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=()=>kt.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=Nre(this.current),this.owner=n.owner}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new N5);const r=this.events[t].add(n);return t==="change"?()=>{r(),kt.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?FM(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 _c(e,t){return new Dre(e,t)}const GM=e=>t=>t.test(e),Lre={test:e=>e==="auto",parse:e=>e},HM=[Il,we,bo,ks,Ute,zte,Lre],vd=e=>HM.find(GM(e)),$re=[...HM,ur,ha],Fre=e=>$re.find(GM(e));function Bre(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,_c(n))}function jre(e,t){const n=Mv(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const s in o){const a=rne(o[s]);Bre(e,s,a)}}function Vre(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&&jre(e,s)}),u}function dw(e,t,n={}){const r=Mv(e,t,n.custom);let{transition:i=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(i=n.transitionOverride);const o=r?()=>Promise.all(qM(e,r,n)):()=>Promise.resolve(),s=e.variantChildren&&e.variantChildren.size?(l=0)=>{const{delayChildren:u=0,staggerChildren:c,staggerDirection:d}=i;return Hre(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 Hre(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(qre).forEach((u,c)=>{u.notify("AnimationStart",t),s.push(dw(u,t,{...o,delay:n+l(c)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(s)}function qre(e,t){return e.sortNodePosition(t)}function Wre(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const i=t.map(o=>dw(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=dw(e,t,n);else{const i=typeof t=="function"?Mv(e,t,n.custom):t;r=Promise.all(qM(e,i,n))}return r.then(()=>e.notify("AnimationComplete",t))}const Kre=[...g5].reverse(),Yre=g5.length;function Xre(e){return t=>Promise.all(t.map(({animation:n,options:r})=>Wre(e,n,r)))}function Qre(e){let t=Xre(e);const n=Jre();let r=!0;const i=(l,u)=>{const c=Mv(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 v=0;vm&&_;const P=Array.isArray(b)?b:[b];let A=P.reduce(i,{});w===!1&&(A={});const{prevResolvedValues:$={}}=g,N={...$,...A},T=O=>{k=!0,h.delete(O),g.needsAnimating[O]=!0};for(const O in N){const I=A[O],M=$[O];p.hasOwnProperty(O)||(I!==M?by(I)&&by(M)?!pM(I,M)||C?T(O):g.protectedKeys[O]=!0:I!==void 0?T(O):h.add(O):I!==void 0&&h.has(O)?T(O):g.protectedKeys[O]=!0)}g.prevProp=b,g.prevResolvedValues=A,g.isActive&&(p={...p,...A}),r&&e.blockInitialAnimation&&(k=!1),k&&!x&&f.push(...P.map(O=>({animation:O,options:{type:y,...l}})))}if(h.size){const v={};h.forEach(y=>{const g=e.getBaseTarget(y);g!==void 0&&(v[y]=g)}),f.push({animation:v})}let S=!!f.length;return r&&c.initial===!1&&!e.manuallyAnimateOnMount&&(S=!1),r=!1,S?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 Zre(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!pM(t,e):!1}function La(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Jre(){return{animate:La(!0),whileInView:La(),whileHover:La(),whileTap:La(),whileDrag:La(),whileFocus:La(),exit:La()}}class eie extends Ea{constructor(t){super(t),t.animationState||(t.animationState=Qre(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();this.unmount(),Av(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 tie=0;class nie extends Ea{constructor(){super(...arguments),this.id=tie++}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 rie={animation:{Feature:eie},exit:{Feature:nie}},yP=(e,t)=>Math.abs(e-t);function iie(e,t){const n=yP(e.x,t.x),r=yP(e.y,t.y);return Math.sqrt(n**2+r**2)}class WM{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=jS(this.lastMoveEventInfo,this.history),c=this.startEvent!==null,d=iie(u.offset,{x:0,y:0})>=3;if(!c&&!d)return;const{point:f}=u,{timestamp:h}=Xn;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=BS(c,this.transformPagePoint),kt.update(this.updatePoint,!0)},this.handlePointerUp=(u,c)=>{if(this.end(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const{onEnd:d,onSessionEnd:f}=this.handlers,h=jS(u.type==="pointercancel"?this.lastMoveEventInfo:BS(c,this.transformPagePoint),this.history);this.startEvent&&d&&d(u,h),f&&f(u,h)},!uM(t))return;this.handlers=n,this.transformPagePoint=r;const i=Iv(t),o=BS(i,this.transformPagePoint),{point:s}=o,{timestamp:a}=Xn;this.history=[{...s,timestamp:a}];const{onSessionStart:l}=n;l&&l(t,jS(o,this.history)),this.removeListeners=ea(es(window,"pointermove",this.handlePointerMove),es(window,"pointerup",this.handlePointerUp),es(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),cs(this.updatePoint)}}function BS(e,t){return t?{point:t(e.point)}:e}function vP(e,t){return{x:e.x-t.x,y:e.y-t.y}}function jS({point:e},t){return{point:e,delta:vP(e,KM(t)),offset:vP(e,oie(t)),velocity:sie(t,.1)}}function oie(e){return e[0]}function KM(e){return e[e.length-1]}function sie(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=KM(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>ta(t)));)n--;if(!r)return{x:0,y:0};const o=ts(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 Hr(e){return e.max-e.min}function fw(e,t=0,n=.01){return Math.abs(e-t)<=n}function bP(e,t,n,r=.5){e.origin=r,e.originPoint=Dt(t.min,t.max,e.origin),e.scale=Hr(n)/Hr(t),(fw(e.scale,1,1e-4)||isNaN(e.scale))&&(e.scale=1),e.translate=Dt(n.min,n.max,e.origin)-e.originPoint,(fw(e.translate)||isNaN(e.translate))&&(e.translate=0)}function df(e,t,n,r){bP(e.x,t.x,n.x,r?r.originX:void 0),bP(e.y,t.y,n.y,r?r.originY:void 0)}function SP(e,t,n){e.min=n.min+t.min,e.max=e.min+Hr(t)}function aie(e,t,n){SP(e.x,t.x,n.x),SP(e.y,t.y,n.y)}function _P(e,t,n){e.min=t.min-n.min,e.max=e.min+Hr(t)}function ff(e,t,n){_P(e.x,t.x,n.x),_P(e.y,t.y,n.y)}function lie(e,{min:t,max:n},r){return t!==void 0&&en&&(e=r?Dt(n,e,r.max):Math.min(e,n)),e}function wP(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 uie(e,{top:t,left:n,bottom:r,right:i}){return{x:wP(e.x,n,i),y:wP(e.y,t,r)}}function xP(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=nh(t.min,t.max-r,e.min):r>i&&(n=nh(e.min,e.max-i,t.min)),fa(0,1,n)}function fie(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 hw=.35;function hie(e=hw){return e===!1?e=0:e===!0&&(e=hw),{x:CP(e,"left","right"),y:CP(e,"top","bottom")}}function CP(e,t,n){return{min:TP(e,t),max:TP(e,n)}}function TP(e,t){return typeof e=="number"?e:e[t]||0}const EP=()=>({translate:0,scale:1,origin:0,originPoint:0}),Mu=()=>({x:EP(),y:EP()}),PP=()=>({min:0,max:0}),en=()=>({x:PP(),y:PP()});function Zi(e){return[e("x"),e("y")]}function YM({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function pie({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function gie(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 VS(e){return e===void 0||e===1}function pw({scale:e,scaleX:t,scaleY:n}){return!VS(e)||!VS(t)||!VS(n)}function Ga(e){return pw(e)||XM(e)||e.z||e.rotate||e.rotateX||e.rotateY}function XM(e){return kP(e.x)||kP(e.y)}function kP(e){return e&&e!=="0%"}function Cy(e,t,n){const r=e-n,i=t*r;return n+i}function AP(e,t,n,r,i){return i!==void 0&&(e=Cy(e,i,r)),Cy(e,n,r)+t}function gw(e,t=0,n=1,r,i){e.min=AP(e.min,t,n,r,i),e.max=AP(e.max,t,n,r,i)}function QM(e,{x:t,y:n}){gw(e.x,t.translate,t.scale,t.originPoint),gw(e.y,n.translate,n.scale,n.originPoint)}function mie(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 Ns(e,t){e.min=e.min+t,e.max=e.max+t}function RP(e,t,[n,r,i]){const o=t[i]!==void 0?t[i]:.5,s=Dt(e.min,e.max,o);gw(e,t[n],t[r],s,t.scale)}const yie=["x","scaleX","originX"],vie=["y","scaleY","originY"];function Nu(e,t){RP(e.x,t,yie),RP(e.y,t,vie)}function ZM(e,t){return YM(gie(e.getBoundingClientRect(),t))}function bie(e,t,n){const r=ZM(e,n),{scroll:i}=t;return i&&(Ns(r.x,i.offset.x),Ns(r.y,i.offset.y)),r}const Sie=new WeakMap;class _ie{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=en(),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(Iv(l,"page").point)},o=(l,u)=>{const{drag:c,dragPropagation:d,onDragStart:f}=this.getProps();if(c&&!d&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=dM(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),Zi(p=>{let m=this.getAxisMotionValue(p).get()||0;if(bo.test(m)){const{projection:S}=this.visualElement;if(S&&S.layout){const v=S.layout.layoutBox[p];v&&(m=Hr(v)*(parseFloat(m)/100))}}this.originPoint[p]=m}),f&&kt.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=wie(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 WM(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&&kt.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||!ag(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let s=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(s=lie(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&&Ru(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=uie(r.layoutBox,t):this.constraints=!1,this.elastic=hie(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&Zi(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=fie(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Ru(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=bie(r,i.root,this.visualElement.getTransformPagePoint());let s=cie(i.layout.layoutBox,o);if(n){const a=n(pie(s));this.hasMutatedConstraints=!!a,a&&(s=YM(a))}return s}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:s,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},u=Zi(c=>{if(!ag(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(R5(t,r,0,n))}stopAnimation(){Zi(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){Zi(n=>{const{drag:r}=this.getProps();if(!ag(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]-Dt(s,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!Ru(n)||!r||!this.constraints)return;this.stopAnimation();const i={x:0,y:0};Zi(s=>{const a=this.getAxisMotionValue(s);if(a){const l=a.get();i[s]=die({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(),Zi(s=>{if(!ag(s,t,null))return;const a=this.getAxisMotionValue(s),{min:l,max:u}=this.constraints[s];a.set(Dt(l,u,i[s]))})}addListeners(){if(!this.visualElement.current)return;Sie.set(this.visualElement,this);const t=this.visualElement.current,n=es(t,"pointerdown",l=>{const{drag:u,dragListener:c=!0}=this.getProps();u&&c&&this.start(l)}),r=()=>{const{dragConstraints:l}=this.getProps();Ru(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=Qo(window,"resize",()=>this.scalePositionWithinConstraints()),a=i.addEventListener("didUpdate",({delta:l,hasLayoutChanged:u})=>{this.isDragging&&u&&(Zi(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=hw,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:s,dragMomentum:a}}}function ag(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function wie(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class xie extends Ea{constructor(t){super(t),this.removeGroupControls=on,this.removeListeners=on,this.controls=new _ie(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||on}unmount(){this.removeGroupControls(),this.removeListeners()}}const IP=e=>(t,n)=>{e&&kt.update(()=>e(t,n))};class Cie extends Ea{constructor(){super(...arguments),this.removePointerDownListener=on}onPointerDown(t){this.session=new WM(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint()})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:i}=this.node.getProps();return{onSessionStart:IP(t),onStart:IP(n),onMove:r,onEnd:(o,s)=>{delete this.session,i&&kt.update(()=>i(o,s))}}}mount(){this.removePointerDownListener=es(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 Tie(){const e=E.useContext(rp);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=E.useId();return E.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function Eie(){return Pie(E.useContext(rp))}function Pie(e){return e===null?!0:e.isPresent}const om={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function MP(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const bd={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(we.test(e))e=parseFloat(e);else return e;const n=MP(e,t.target.x),r=MP(e,t.target.y);return`${n}% ${r}%`}},kie={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=ha.parse(e);if(i.length>5)return r;const o=ha.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=Dt(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 Aie extends ze.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;Dte(Oie),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()})),om.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()||kt.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 JM(e){const[t,n]=Tie(),r=E.useContext(y5);return ze.createElement(Aie,{...e,layoutGroup:r,switchLayoutGroup:E.useContext(K7),isPresent:t,safeToRemove:n})}const Oie={borderRadius:{...bd,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:bd,borderTopRightRadius:bd,borderBottomLeftRadius:bd,borderBottomRightRadius:bd,boxShadow:kie},eN=["TopLeft","TopRight","BottomLeft","BottomRight"],Rie=eN.length,NP=e=>typeof e=="string"?parseFloat(e):e,DP=e=>typeof e=="number"||we.test(e);function Iie(e,t,n,r,i,o){i?(e.opacity=Dt(0,n.opacity!==void 0?n.opacity:1,Mie(r)),e.opacityExit=Dt(t.opacity!==void 0?t.opacity:1,0,Nie(r))):o&&(e.opacity=Dt(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,r));for(let s=0;srt?1:n(nh(e,t,r))}function $P(e,t){e.min=t.min,e.max=t.max}function ei(e,t){$P(e.x,t.x),$P(e.y,t.y)}function FP(e,t,n,r,i){return e-=t,e=Cy(e,1/n,r),i!==void 0&&(e=Cy(e,1/i,r)),e}function Die(e,t=0,n=1,r=.5,i,o=e,s=e){if(bo.test(t)&&(t=parseFloat(t),t=Dt(s.min,s.max,t/100)-s.min),typeof t!="number")return;let a=Dt(o.min,o.max,r);e===o&&(a-=t),e.min=FP(e.min,t,n,a,i),e.max=FP(e.max,t,n,a,i)}function BP(e,t,[n,r,i],o,s){Die(e,t[n],t[r],t[i],t.scale,o,s)}const Lie=["x","scaleX","originX"],$ie=["y","scaleY","originY"];function jP(e,t,n,r){BP(e.x,t,Lie,n?n.x:void 0,r?r.x:void 0),BP(e.y,t,$ie,n?n.y:void 0,r?r.y:void 0)}function VP(e){return e.translate===0&&e.scale===1}function nN(e){return VP(e.x)&&VP(e.y)}function mw(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 zP(e){return Hr(e.x)/Hr(e.y)}class Fie{constructor(){this.members=[]}add(t){I5(this.members,t),t.scheduleRender()}remove(t){if(M5(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 UP(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 Bie=(e,t)=>e.depth-t.depth;class jie{constructor(){this.children=[],this.isDirty=!1}add(t){I5(this.children,t),this.isDirty=!0}remove(t){M5(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(Bie),this.isDirty=!1,this.children.forEach(t)}}function Vie(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(cs(r),e(o-t))};return kt.read(r,!0),()=>cs(r)}function zie(e){window.MotionDebug&&window.MotionDebug.record(e)}function Uie(e){return e instanceof SVGElement&&e.tagName!=="svg"}function Gie(e,t,n){const r=Nr(e)?e:_c(e);return r.start(R5("",r,t,n)),r.animation}const GP=["","X","Y","Z"],HP=1e3;let Hie=0;const Ha={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function rN({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(s={},a=t==null?void 0:t()){this.id=Hie++,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=()=>{Ha.totalNodes=Ha.resolvedTargetDeltas=Ha.recalculatedProjection=0,this.nodes.forEach(Kie),this.nodes.forEach(Jie),this.nodes.forEach(eoe),this.nodes.forEach(Yie),zie(Ha)},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=Vie(f,250),om.hasAnimatedSinceResize&&(om.hasAnimatedSinceResize=!1,this.nodes.forEach(WP))})}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()||ooe,{onLayoutAnimationStart:S,onLayoutAnimationComplete:v}=c.getProps(),y=!this.targetLayout||!mw(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 b={...UM(m,"layout"),onPlay:S,onComplete:v};(c.shouldReduceMotion||this.options.layoutRoot)&&(b.delay=0,b.type=!1),this.startAnimation(b)}else f||WP(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,cs(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(toe),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(Xie),this.sharedNodes.forEach(noe)}scheduleUpdateProjection(){kt.preRender(this.updateProjection,!1,!0)}scheduleCheckAfterUnmount(){kt.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 _=b/1e3;KP(d.x,s.x,_),KP(d.y,s.y,_),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(ff(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox),roe(this.relativeTarget,this.relativeTargetOrigin,f,_),g&&mw(this.relativeTarget,g)&&(this.isProjectionDirty=!1),g||(g=en()),ei(g,this.relativeTarget)),m&&(this.animationValues=c,Iie(c,u,this.latestValues,_,y,v)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=_},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&&(cs(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=kt.update(()=>{om.hasAnimatedSinceResize=!0,this.currentAnimation=Gie(0,HP,{...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(HP),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&&iN(this.options.animationType,this.layout.layoutBox,u.layoutBox)){l=this.target||en();const d=Hr(this.layout.layoutBox.x);l.x.min=s.target.x.min,l.x.max=l.x.min+d;const f=Hr(this.layout.layoutBox.y);l.y.min=s.target.y.min,l.y.max=l.y.min+f}ei(a,l),Nu(a,c),df(this.projectionDeltaWithTransform,this.layoutCorrected,a,c)}}registerSharedNode(s,a){this.sharedNodes.has(s)||this.sharedNodes.set(s,new Fie),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(qP),this.root.sharedNodes.clear()}}}function qie(e){e.updateLayout()}function Wie(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"?Zi(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Hr(f);f.min=r[d].min,f.max=f.min+h}):iN(o,n.layoutBox,r)&&Zi(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Hr(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=Mu();df(a,r,n.layoutBox);const l=Mu();s?df(l,e.applyTransform(i,!0),n.measuredBox):df(l,r,n.layoutBox);const u=!nN(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=en();ff(p,n.layoutBox,f.layoutBox);const m=en();ff(m,r,h.layoutBox),mw(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 Kie(e){Ha.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 Yie(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function Xie(e){e.clearSnapshot()}function qP(e){e.clearMeasurements()}function Qie(e){e.isLayoutDirty=!1}function Zie(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function WP(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function Jie(e){e.resolveTargetDelta()}function eoe(e){e.calcProjection()}function toe(e){e.resetRotation()}function noe(e){e.removeLeadSnapshot()}function KP(e,t,n){e.translate=Dt(t.translate,0,n),e.scale=Dt(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function YP(e,t,n,r){e.min=Dt(t.min,n.min,r),e.max=Dt(t.max,n.max,r)}function roe(e,t,n,r){YP(e.x,t.x,n.x,r),YP(e.y,t.y,n.y,r)}function ioe(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const ooe={duration:.45,ease:[.4,0,.1,1]};function XP(e){e.min=Math.round(e.min*2)/2,e.max=Math.round(e.max*2)/2}function soe(e){XP(e.x),XP(e.y)}function iN(e,t,n){return e==="position"||e==="preserve-aspect"&&!fw(zP(t),zP(n),.2)}const aoe=rN({attachResizeListener:(e,t)=>Qo(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),zS={current:void 0},oN=rN({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!zS.current){const e=new aoe({});e.mount(window),e.setOptions({layoutScroll:!0}),zS.current=e}return zS.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),loe={pan:{Feature:Cie},drag:{Feature:xie,ProjectionNode:oN,MeasureLayout:JM}},uoe=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function coe(e){const t=uoe.exec(e);if(!t)return[,];const[,n,r]=t;return[n,r]}function yw(e,t,n=1){const[r,i]=coe(e);if(!r)return;const o=window.getComputedStyle(t).getPropertyValue(r);return o?o.trim():ow(i)?yw(i,t,n+1):i}function doe(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(!ow(o))return;const s=yw(o,r);s&&i.set(s)});for(const i in t){const o=t[i];if(!ow(o))continue;const s=yw(o,r);s&&(t[i]=s,n||(n={}),n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const foe=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),sN=e=>foe.has(e),hoe=e=>Object.keys(e).some(sN),QP=e=>e===Il||e===we,ZP=(e,t)=>parseFloat(e.split(", ")[t]),JP=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return ZP(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?ZP(o[1],e):0}},poe=new Set(["x","y","z"]),goe=ip.filter(e=>!poe.has(e));function moe(e){const t=[];return goe.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 wc={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:JP(4,13),y:JP(5,14)};wc.translateX=wc.x;wc.translateY=wc.y;const yoe=(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]=wc[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]=wc[u](l,o)}),e},voe=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(sN);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=vd(c);const f=t[l];let h;if(by(f)){const p=f.length,m=f[0]===null?1:0;c=f[m],d=vd(c);for(let S=m;S=0?window.pageYOffset:null,u=yoe(t,e,a);return o.length&&o.forEach(([c,d])=>{e.getValue(c).set(d)}),e.render(),kv&&l!==null&&window.scrollTo({top:l}),{target:u,transitionEnd:r}}else return{target:t,transitionEnd:r}};function boe(e,t,n,r){return hoe(t)?voe(e,t,n,r):{target:t,transitionEnd:r}}const Soe=(e,t,n,r)=>{const i=doe(e,t,r);return t=i.target,r=i.transitionEnd,boe(e,t,n,r)},vw={current:null},aN={current:!1};function _oe(){if(aN.current=!0,!!kv)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>vw.current=e.matches;e.addListener(t),t()}else vw.current=!1}function woe(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],s=n[i];if(Nr(o))e.addValue(i,o),xy(r)&&r.add(i);else if(Nr(s))e.addValue(i,_c(o,{owner:e})),xy(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,_c(a!==void 0?a:o,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const e6=new WeakMap,lN=Object.keys(th),xoe=lN.length,t6=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],Coe=m5.length;class Toe{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=()=>kt.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=Ov(n),this.isVariantNode=W7(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&&Nr(f)&&(f.set(a[d],!1),xy(u)&&u.add(d))}}scrapeMotionValuesFromProps(t,n){return{}}mount(t){this.current=t,e6.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)),aN.current||_oe(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:vw.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){e6.delete(this.current),this.projection&&this.projection.unmount(),cs(this.notifyUpdate),cs(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=Rl.has(t),i=n.on("change",s=>{this.latestValues[t]=s,this.props.onUpdate&&kt.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):en()}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=_c(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=T5(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&&!Nr(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 N5),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class uN extends Toe{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=Ure(r,t||{},this);if(i&&(n&&(n=i(n)),r&&(r=i(r)),s&&(s=i(s))),o){Vre(this,r,s);const a=Soe(this,r,s,n);n=a.transitionEnd,r=a.target}return{transition:t,transitionEnd:n,...r}}}function Eoe(e){return window.getComputedStyle(e)}class Poe extends uN{readValueFromInstance(t,n){if(Rl.has(n)){const r=O5(n);return r&&r.default||0}else{const r=Eoe(t),i=(Q7(n)?r.getPropertyValue(n):r[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return ZM(t,n)}build(t,n,r,i){b5(t,n,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,n){return C5(t,n)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;Nr(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}renderInstance(t,n,r,i){rM(t,n,r,i)}}class koe extends uN{constructor(){super(...arguments),this.isSVGTag=!1}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Rl.has(n)){const r=O5(n);return r&&r.default||0}return n=iM.has(n)?n:x5(n),t.getAttribute(n)}measureInstanceViewportBox(){return en()}scrapeMotionValuesFromProps(t,n){return sM(t,n)}build(t,n,r,i){_5(t,n,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,r,i){oM(t,n,r,i)}mount(t){this.isSVGTag=w5(t.tagName),super.mount(t)}}const Aoe=(e,t)=>v5(e)?new koe(t,{enableHardwareAcceleration:!1}):new Poe(t,{enableHardwareAcceleration:!0}),Ooe={layout:{ProjectionNode:oN,MeasureLayout:JM}},Roe={...rie,...Cne,...loe,...Ooe},D5=Mte((e,t)=>lne(e,t,Roe,Aoe));function cN(){const e=E.useRef(!1);return my(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function Ioe(){const e=cN(),[t,n]=E.useState(0),r=E.useCallback(()=>{e.current&&n(t+1)},[t]);return[E.useCallback(()=>kt.postRender(r),[r]),t]}class Moe extends E.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 Noe({children:e,isPresent:t}){const n=E.useId(),r=E.useRef(null),i=E.useRef({width:0,height:0,top:0,left:0});return E.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]),E.createElement(Moe,{isPresent:t,childRef:r,sizeRef:i},E.cloneElement(e,{ref:r}))}const US=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:s})=>{const a=aM(Doe),l=E.useId(),u=E.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 E.useMemo(()=>{a.forEach((c,d)=>a.set(d,!1))},[n]),E.useEffect(()=>{!n&&!a.size&&r&&r()},[n]),s==="popLayout"&&(e=E.createElement(Noe,{isPresent:n},e)),E.createElement(rp.Provider,{value:u},e)};function Doe(){return new Map}function Loe(e){return E.useEffect(()=>()=>e(),[])}const cu=e=>e.key||"";function $oe(e,t){e.forEach(n=>{const r=cu(n);t.set(r,n)})}function Foe(e){const t=[];return E.Children.forEach(e,n=>{E.isValidElement(n)&&t.push(n)}),t}const L5=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:s="sync"})=>{const a=E.useContext(y5).forceRender||Ioe()[0],l=cN(),u=Foe(e);let c=u;const d=E.useRef(new Map).current,f=E.useRef(c),h=E.useRef(new Map).current,p=E.useRef(!0);if(my(()=>{p.current=!1,$oe(u,h),f.current=c}),Loe(()=>{p.current=!0,h.clear(),d.clear()}),p.current)return E.createElement(E.Fragment,null,c.map(y=>E.createElement(US,{key:cu(y),isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:s},y)));c=[...c];const m=f.current.map(cu),S=u.map(cu),v=m.length;for(let y=0;y{if(S.indexOf(g)!==-1)return;const b=h.get(g);if(!b)return;const _=m.indexOf(g);let w=y;if(!w){const x=()=>{h.delete(g),d.delete(g);const C=f.current.findIndex(k=>k.key===g);if(f.current.splice(C,1),!d.size){if(f.current=u,l.current===!1)return;a(),r&&r()}};w=E.createElement(US,{key:cu(b),isPresent:!1,onExitComplete:x,custom:t,presenceAffectsLayout:o,mode:s},b),d.set(g,w)}c.splice(_,0,w)}),c=c.map(y=>{const g=y.key;return d.has(g)?y:E.createElement(US,{key:cu(y),isPresent:!0,presenceAffectsLayout:o,mode:s},y)}),E.createElement(E.Fragment,null,d.size?c:c.map(y=>E.cloneElement(y)))};var Boe={initial:e=>{const{position:t}=e,n=["top","bottom"].includes(t)?"y":"x";let r=["top-right","bottom-right"].includes(t)?1:-1;return t==="bottom"&&(r=1),{opacity:0,[n]:r*24}},animate:{opacity:1,y:0,x:0,scale:1,transition:{duration:.4,ease:[.4,0,.2,1]}},exit:{opacity:0,scale:.85,transition:{duration:.2,ease:[.4,0,1,1]}}},dN=E.memo(e=>{const{id:t,message:n,onCloseComplete:r,onRequestRemove:i,requestClose:o=!1,position:s="bottom",duration:a=5e3,containerStyle:l,motionVariants:u=Boe,toastSpacing:c="0.5rem"}=e,[d,f]=E.useState(a),h=Eie();gy(()=>{h||r==null||r()},[h]),gy(()=>{f(a)},[a]);const p=()=>f(null),m=()=>f(a),S=()=>{h&&i()};E.useEffect(()=>{h&&o&&i()},[h,o,i]),Cte(S,d);const v=E.useMemo(()=>({pointerEvents:"auto",maxWidth:560,minWidth:300,margin:c,...l}),[l,c]),y=E.useMemo(()=>wte(s),[s]);return j.jsx(D5.div,{layout:!0,className:"chakra-toast",variants:u,initial:"initial",animate:"animate",exit:"exit",onHoverStart:p,onHoverEnd:m,custom:{position:s},style:y,children:j.jsx(Ae.div,{role:"status","aria-atomic":"true",className:"chakra-toast__inner",__css:v,children:uo(n,{id:t,onClose:S})})})});dN.displayName="ToastComponent";function joe(e,t){var n;const r=e??"bottom",o={"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"}}[r];return(n=o==null?void 0:o[t])!=null?n:r}var n6={path:j.jsxs("g",{stroke:"currentColor",strokeWidth:"1.5",children:[j.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"}),j.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"}),j.jsx("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},Ml=Ze((e,t)=>{const{as:n,viewBox:r,color:i="currentColor",focusable:o=!1,children:s,className:a,__css:l,...u}=e,c=Gn("chakra-icon",a),d=Ol("Icon",e),f={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:i,...l,...d},h={ref:t,focusable:o,className:c,__css:f},p=r??n6.viewBox;if(n&&typeof n!="string")return j.jsx(Ae.svg,{as:n,...h,...u});const m=s??n6.path;return j.jsx(Ae.svg,{verticalAlign:"middle",viewBox:p,...h,...u,children:m})});Ml.displayName="Icon";function Voe(e){return j.jsx(Ml,{viewBox:"0 0 24 24",...e,children:j.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 zoe(e){return j.jsx(Ml,{viewBox:"0 0 24 24",...e,children:j.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 r6(e){return j.jsx(Ml,{viewBox:"0 0 24 24",...e,children:j.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 Uoe=aJ({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Nv=Ze((e,t)=>{const n=Ol("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:s="transparent",className:a,...l}=Ao(e),u=Gn("chakra-spinner",a),c={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:s,borderLeftColor:s,animation:`${Uoe} ${o} linear infinite`,...n};return j.jsx(Ae.div,{ref:t,__css:c,className:u,...l,children:r&&j.jsx(Ae.span,{srOnly:!0,children:r})})});Nv.displayName="Spinner";var[Goe,$5]=Si({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[Hoe,F5]=Si({name:"AlertStylesContext",hookName:"useAlertStyles",providerName:""}),fN={info:{icon:zoe,colorScheme:"blue"},warning:{icon:r6,colorScheme:"orange"},success:{icon:Voe,colorScheme:"green"},error:{icon:r6,colorScheme:"red"},loading:{icon:Nv,colorScheme:"blue"}};function qoe(e){return fN[e].colorScheme}function Woe(e){return fN[e].icon}var hN=Ze(function(t,n){const r=F5(),{status:i}=$5(),o={display:"inline",...r.description};return j.jsx(Ae.div,{ref:n,"data-status":i,...t,className:Gn("chakra-alert__desc",t.className),__css:o})});hN.displayName="AlertDescription";function pN(e){const{status:t}=$5(),n=Woe(t),r=F5(),i=t==="loading"?r.spinner:r.icon;return j.jsx(Ae.span,{display:"inherit","data-status":t,...e,className:Gn("chakra-alert__icon",e.className),__css:i,children:e.children||j.jsx(n,{h:"100%",w:"100%"})})}pN.displayName="AlertIcon";var gN=Ze(function(t,n){const r=F5(),{status:i}=$5();return j.jsx(Ae.div,{ref:n,"data-status":i,...t,className:Gn("chakra-alert__title",t.className),__css:r.title})});gN.displayName="AlertTitle";var mN=Ze(function(t,n){var r;const{status:i="info",addRole:o=!0,...s}=Ao(t),a=(r=t.colorScheme)!=null?r:qoe(i),l=Ev("Alert",{...t,colorScheme:a}),u={width:"100%",display:"flex",alignItems:"center",position:"relative",overflow:"hidden",...l.container};return j.jsx(Goe,{value:{status:i},children:j.jsx(Hoe,{value:l,children:j.jsx(Ae.div,{"data-status":i,role:o?"alert":void 0,ref:n,...s,className:Gn("chakra-alert",t.className),__css:u})})})});mN.displayName="Alert";function Koe(e){return j.jsx(Ml,{focusable:"false","aria-hidden":!0,...e,children:j.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 yN=Ze(function(t,n){const r=Ol("CloseButton",t),{children:i,isDisabled:o,__css:s,...a}=Ao(t),l={outline:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0};return j.jsx(Ae.button,{type:"button","aria-label":"Close",ref:n,disabled:o,__css:{...l,...r,...s},...a,children:i||j.jsx(Koe,{width:"1em",height:"1em"})})});yN.displayName="CloseButton";var Yoe={top:[],"top-left":[],"top-right":[],"bottom-left":[],bottom:[],"bottom-right":[]},oo=Xoe(Yoe);function Xoe(e){let t=e;const n=new Set,r=i=>{t=i(t),n.forEach(o=>o())};return{getState:()=>t,subscribe:i=>(n.add(i),()=>{r(()=>e),n.delete(i)}),removeToast:(i,o)=>{r(s=>({...s,[o]:s[o].filter(a=>a.id!=i)}))},notify:(i,o)=>{const s=Qoe(i,o),{position:a,id:l}=s;return r(u=>{var c,d;const h=a.includes("top")?[s,...(c=u[a])!=null?c:[]]:[...(d=u[a])!=null?d:[],s];return{...u,[a]:h}}),l},update:(i,o)=>{i&&r(s=>{const a={...s},{position:l,index:u}=JE(a,i);return l&&u!==-1&&(a[l][u]={...a[l][u],...o,message:vN(o)}),a})},closeAll:({positions:i}={})=>{r(o=>(i??["bottom","bottom-right","bottom-left","top","top-left","top-right"]).reduce((l,u)=>(l[u]=o[u].map(c=>({...c,requestClose:!0})),l),{...o}))},close:i=>{r(o=>{const s=G7(o,i);return s?{...o,[s]:o[s].map(a=>a.id==i?{...a,requestClose:!0}:a)}:o})},isActive:i=>!!JE(oo.getState(),i).position}}var i6=0;function Qoe(e,t={}){var n,r;i6+=1;const i=(n=t.id)!=null?n:i6,o=(r=t.position)!=null?r:"bottom";return{id:i,message:e,position:o,duration:t.duration,onCloseComplete:t.onCloseComplete,onRequestRemove:()=>oo.removeToast(String(i),o),status:t.status,requestClose:!1,containerStyle:t.containerStyle}}var Zoe=e=>{const{status:t,variant:n="solid",id:r,title:i,isClosable:o,onClose:s,description:a,colorScheme:l,icon:u}=e,c=r?{root:`toast-${r}`,title:`toast-${r}-title`,description:`toast-${r}-description`}:void 0;return j.jsxs(mN,{addRole:!1,status:t,variant:n,id:c==null?void 0:c.root,alignItems:"start",borderRadius:"md",boxShadow:"lg",paddingEnd:8,textAlign:"start",width:"auto",colorScheme:l,children:[j.jsx(pN,{children:u}),j.jsxs(Ae.div,{flex:"1",maxWidth:"100%",children:[i&&j.jsx(gN,{id:c==null?void 0:c.title,children:i}),a&&j.jsx(hN,{id:c==null?void 0:c.description,display:"block",children:a})]}),o&&j.jsx(yN,{size:"sm",onClick:s,position:"absolute",insetEnd:1,top:1})]})};function vN(e={}){const{render:t,toastComponent:n=Zoe}=e;return i=>typeof t=="function"?t({...i,...e}):j.jsx(n,{...i,...e})}function Joe(e,t){const n=i=>{var o;return{...t,...i,position:joe((o=i==null?void 0:i.position)!=null?o:t==null?void 0:t.position,e)}},r=i=>{const o=n(i),s=vN(o);return oo.notify(s,o)};return r.update=(i,o)=>{oo.update(i,n(o))},r.promise=(i,o)=>{const s=r({...o.loading,status:"loading",duration:null});i.then(a=>r.update(s,{status:"success",duration:5e3,...uo(o.success,a)})).catch(a=>r.update(s,{status:"error",duration:5e3,...uo(o.error,a)}))},r.closeAll=oo.closeAll,r.close=oo.close,r.isActive=oo.isActive,r}var[gTe,ese]=Si({name:"ToastOptionsContext",strict:!1}),mTe=e=>{const t=E.useSyncExternalStore(oo.subscribe,oo.getState,oo.getState),{motionVariants:n,component:r=dN,portalProps:i}=e,s=Object.keys(t).map(a=>{const l=t[a];return j.jsx("div",{role:"region","aria-live":"polite",id:`chakra-toast-manager-${a}`,style:xte(a),children:j.jsx(L5,{initial:!1,children:l.map(u=>j.jsx(r,{motionVariants:n,...u},u.id))})},a)});return j.jsx(tp,{...i,children:s})};function tse(e){const{theme:t}=R7(),n=ese();return E.useMemo(()=>Joe(t.direction,{...n,...e}),[e,t.direction,n])}function nse(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 fi(...e){return t=>{e.forEach(n=>{nse(n,t)})}}function rse(...e){return E.useMemo(()=>fi(...e),e)}function ise(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:i=(f,h)=>f!==h}=e,o=Fn(r),s=Fn(i),[a,l]=E.useState(n),u=t!==void 0,c=u?t:a,d=Fn(f=>{const p=typeof f=="function"?f(c):f;s(c,p)&&(u||l(p),o(p))},[u,o,c,s]);return[c,d]}var bw=Ze(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...s}=t;return j.jsx("img",{width:r,height:i,ref:n,alt:o,...s})});bw.displayName="NativeImage";function ose(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:s,sizes:a,ignoreFallback:l}=e,[u,c]=E.useState("pending");E.useEffect(()=>{c(n?"loading":"pending")},[n]);const d=E.useRef(),f=E.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 Zf(()=>{if(!l)return u==="loading"&&f(),()=>{h()}},[u,f,l]),l?"loaded":u}var sse=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError";function ase(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var B5=Ze(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,S=u!=null||c||!m,v=ose({...t,crossOrigin:d,ignoreFallback:S}),y=sse(v,f),g={ref:n,objectFit:l,objectPosition:a,...S?p:ase(p,["onError","onLoad"])};return y?i||j.jsx(Ae.img,{as:bw,className:"chakra-image__placeholder",src:r,...g}):j.jsx(Ae.img,{as:bw,src:o,srcSet:s,crossOrigin:d,loading:u,referrerPolicy:h,className:"chakra-image",...g})});B5.displayName="Image";function lse(e){return E.Children.toArray(e).filter(t=>E.isValidElement(t))}var[yTe,use]=Si({strict:!1,name:"ButtonGroupContext"});function cse(e){const[t,n]=E.useState(!e);return{ref:E.useCallback(o=>{o&&n(o.tagName==="BUTTON")},[]),type:t?"button":void 0}}function Sw(e){const{children:t,className:n,...r}=e,i=E.isValidElement(t)?E.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,o=Gn("chakra-button__icon",n);return j.jsx(Ae.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:o,children:i})}Sw.displayName="ButtonIcon";function _w(e){const{label:t,placement:n,spacing:r="0.5rem",children:i=j.jsx(Nv,{color:"currentColor",width:"1em",height:"1em"}),className:o,__css:s,...a}=e,l=Gn("chakra-button__spinner",o),u=n==="start"?"marginEnd":"marginStart",c=E.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[u]:t?r:0,fontSize:"1em",lineHeight:"normal",...s}),[s,t,u,r]);return j.jsx(Ae.div,{className:l,...a,__css:c,children:i})}_w.displayName="ButtonSpinner";var bN=Ze((e,t)=>{const n=use(),r=Ol("Button",{...n,...e}),{isDisabled:i=n==null?void 0:n.isDisabled,isLoading:o,isActive:s,children:a,leftIcon:l,rightIcon:u,loadingText:c,iconSpacing:d="0.5rem",type:f,spinner:h,spinnerPlacement:p="start",className:m,as:S,...v}=Ao(e),y=E.useMemo(()=>{const w={...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:w}}},[r,n]),{ref:g,type:b}=cse(S),_={rightIcon:u,leftIcon:l,iconSpacing:d,children:a};return j.jsxs(Ae.button,{ref:rse(t,g),as:S,type:f??b,"data-active":Ou(s),"data-loading":Ou(o),__css:y,className:Gn("chakra-button",m),...v,disabled:i||o,children:[o&&p==="start"&&j.jsx(_w,{className:"chakra-button__spinner--start",label:c,placement:"start",spacing:d,children:h}),o?c||j.jsx(Ae.span,{opacity:0,children:j.jsx(o6,{..._})}):j.jsx(o6,{..._}),o&&p==="end"&&j.jsx(_w,{className:"chakra-button__spinner--end",label:c,placement:"end",spacing:d,children:h})]})});bN.displayName="Button";function o6(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:i}=e;return j.jsxs(j.Fragment,{children:[t&&j.jsx(Sw,{marginEnd:i,children:t}),r,n&&j.jsx(Sw,{marginStart:i,children:n})]})}var SN=Ze((e,t)=>{const{icon:n,children:r,isRound:i,"aria-label":o,...s}=e,a=n||r,l=E.isValidElement(a)?E.cloneElement(a,{"aria-hidden":!0,focusable:!1}):null;return j.jsx(bN,{padding:"0",borderRadius:i?"full":void 0,ref:t,"aria-label":o,...s,children:l})});SN.displayName="IconButton";var[dse,_N]=Si({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[fse,Dv]=Si({strict:!1,name:"FormControlContext"});function hse(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:i,isReadOnly:o,...s}=e,a=E.useId(),l=t||`field-${a}`,u=`${l}-label`,c=`${l}-feedback`,d=`${l}-helptext`,[f,h]=E.useState(!1),[p,m]=E.useState(!1),[S,v]=E.useState(!1),y=E.useCallback((x={},C=null)=>({id:d,...x,ref:fi(C,k=>{k&&m(!0)})}),[d]),g=E.useCallback((x={},C=null)=>({...x,ref:C,"data-focus":Ou(S),"data-disabled":Ou(i),"data-invalid":Ou(r),"data-readonly":Ou(o),id:x.id!==void 0?x.id:u,htmlFor:x.htmlFor!==void 0?x.htmlFor:l}),[l,i,S,r,o,u]),b=E.useCallback((x={},C=null)=>({id:c,...x,ref:fi(C,k=>{k&&h(!0)}),"aria-live":"polite"}),[c]),_=E.useCallback((x={},C=null)=>({...x,...s,ref:C,role:"group"}),[s]),w=E.useCallback((x={},C=null)=>({...x,ref:C,role:"presentation","aria-hidden":!0,children:x.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!o,isDisabled:!!i,isFocused:!!S,onFocus:()=>v(!0),onBlur:()=>v(!1),hasFeedbackText:f,setHasFeedbackText:h,hasHelpText:p,setHasHelpText:m,id:l,labelId:u,feedbackId:c,helpTextId:d,htmlProps:s,getHelpTextProps:y,getErrorMessageProps:b,getRootProps:_,getLabelProps:g,getRequiredIndicatorProps:w}}var wN=Ze(function(t,n){const r=Ev("Form",t),i=Ao(t),{getRootProps:o,htmlProps:s,...a}=hse(i),l=Gn("chakra-form-control",t.className);return j.jsx(fse,{value:a,children:j.jsx(dse,{value:r,children:j.jsx(Ae.div,{...o({},n),className:l,__css:r.container})})})});wN.displayName="FormControl";var pse=Ze(function(t,n){const r=Dv(),i=_N(),o=Gn("chakra-form__helper-text",t.className);return j.jsx(Ae.div,{...r==null?void 0:r.getHelpTextProps(t,n),__css:i.helperText,className:o})});pse.displayName="FormHelperText";var xN=Ze(function(t,n){var r;const i=Ol("FormLabel",t),o=Ao(t),{className:s,children:a,requiredIndicator:l=j.jsx(CN,{}),optionalIndicator:u=null,...c}=o,d=Dv(),f=(r=d==null?void 0:d.getLabelProps(c,n))!=null?r:{ref:n,...c};return j.jsxs(Ae.label,{...f,className:Gn("chakra-form__label",o.className),__css:{display:"block",textAlign:"start",...i},children:[a,d!=null&&d.isRequired?l:u]})});xN.displayName="FormLabel";var CN=Ze(function(t,n){const r=Dv(),i=_N();if(!(r!=null&&r.isRequired))return null;const o=Gn("chakra-form__required-indicator",t.className);return j.jsx(Ae.span,{...r==null?void 0:r.getRequiredIndicatorProps(t,n),__css:i.requiredIndicator,className:o})});CN.displayName="RequiredIndicator";function vTe(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:i,...o}=TN(e);return{...o,disabled:t,readOnly:r,required:i,"aria-invalid":Yu(n),"aria-required":Yu(i),"aria-readonly":Yu(r)}}function TN(e){var t,n,r;const i=Dv(),{id:o,disabled:s,readOnly:a,required:l,isRequired:u,isInvalid:c,isReadOnly:d,isDisabled:f,onFocus:h,onBlur:p,...m}=e,S=e["aria-describedby"]?[e["aria-describedby"]]:[];return i!=null&&i.hasFeedbackText&&(i!=null&&i.isInvalid)&&S.push(i.feedbackId),i!=null&&i.hasHelpText&&S.push(i.helpTextId),{...m,"aria-describedby":S.join(" ")||void 0,id:o??(i==null?void 0:i.id),isDisabled:(t=s??f)!=null?t:i==null?void 0:i.isDisabled,isReadOnly:(n=a??d)!=null?n:i==null?void 0:i.isReadOnly,isRequired:(r=l??u)!=null?r:i==null?void 0:i.isRequired,isInvalid:c??(i==null?void 0:i.isInvalid),onFocus:Dn(i==null?void 0:i.onFocus,h),onBlur:Dn(i==null?void 0:i.onBlur,p)}}function gse(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function j5(e,t){let n=gse(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function ww(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 s6(e,t,n){return(e-t)*100/(n-t)}function mse(e,t,n){return(n-t)*e+t}function a6(e,t,n){const r=Math.round((e-t)/n)*n+t,i=ww(n);return j5(r,i)}function sm(e,t,n){return e==null?e:(n{var P;return r==null?"":(P=GS(r,o,n))!=null?P:""}),f=typeof i<"u",h=f?i:c,p=EN(As(h),o),m=n??p,S=E.useCallback(P=>{P!==h&&(f||d(P.toString()),u==null||u(P.toString(),As(P)))},[u,f,h]),v=E.useCallback(P=>{let A=P;return l&&(A=sm(A,s,a)),j5(A,m)},[m,l,a,s]),y=E.useCallback((P=o)=>{let A;h===""?A=As(P):A=As(h)+P,A=v(A),S(A)},[v,o,S,h]),g=E.useCallback((P=o)=>{let A;h===""?A=As(-P):A=As(h)-P,A=v(A),S(A)},[v,o,S,h]),b=E.useCallback(()=>{var P;let A;r==null?A="":A=(P=GS(r,o,n))!=null?P:s,S(A)},[r,n,o,S,s]),_=E.useCallback(P=>{var A;const $=(A=GS(P,o,m))!=null?A:s;S($)},[m,o,S,s]),w=As(h);return{isOutOfRange:w>a||w{const o=typeof e=="function"?e():e??document;if(!(!n||!o))return o.addEventListener(t,i,r),()=>{o.removeEventListener(t,i,r)}},[t,e,r,i,n]),()=>{const o=typeof e=="function"?e():e??document;o==null||o.removeEventListener(t,i,r)}}function PN(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function vse(e){var t;if(!PN(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function bTe(e){var t,n;return(n=(t=kN(e))==null?void 0:t.defaultView)!=null?n:window}function kN(e){return PN(e)?e.ownerDocument:document}function STe(e){return kN(e).activeElement}function bse(e){const t=e.ownerDocument.defaultView||window,{overflow:n,overflowX:r,overflowY:i}=t.getComputedStyle(e);return/auto|scroll|overlay|hidden/.test(n+i+r)}function Sse(e){return e.localName==="html"?e:e.assignedSlot||e.parentElement||e.ownerDocument.documentElement}function AN(e){return["html","body","#document"].includes(e.localName)?e.ownerDocument.body:vse(e)&&bse(e)?e:AN(Sse(e))}var _se=jee?E.useLayoutEffect:E.useEffect;function l6(e,t=[]){const n=E.useRef(e);return _se(()=>{n.current=e}),E.useCallback((...r)=>{var i;return(i=n.current)==null?void 0:i.call(n,...r)},t)}function wse(e,t){const n=E.useId();return E.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function xse(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function Cse(e={}){const{onClose:t,onOpen:n,isOpen:r,id:i}=e,o=l6(n),s=l6(t),[a,l]=E.useState(e.defaultIsOpen||!1),[u,c]=xse(r,a),d=wse(i,"disclosure"),f=E.useCallback(()=>{u||l(!1),s==null||s()},[u,s]),h=E.useCallback(()=>{u||l(!0),o==null||o()},[u,o]),p=E.useCallback(()=>{(c?f:h)()},[c,h,f]);return{isOpen:!!c,onOpen:h,onClose:f,onToggle:p,isControlled:u,getButtonProps:(m={})=>({...m,"aria-expanded":c,"aria-controls":d,onClick:Wee(m.onClick,p)}),getDisclosureProps:(m={})=>({...m,hidden:!c,id:d})}}function Tse(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):vo(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var ON=e=>j.jsx(Ae.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});ON.displayName="StackItem";function Ese(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{"&":Tse(n,i=>r[i])}}var RN=Ze((e,t)=>{const{isInline:n,direction:r,align:i,justify:o,spacing:s="0.5rem",wrap:a,children:l,divider:u,className:c,shouldWrapChildren:d,...f}=e,h=n?"row":r??"column",p=E.useMemo(()=>Ese({spacing:s,direction:h}),[s,h]),m=!!u,S=!d&&!m,v=E.useMemo(()=>{const g=lse(l);return S?g:g.map((b,_)=>{const w=typeof b.key<"u"?b.key:_,x=_+1===g.length,k=d?j.jsx(ON,{children:b},w):b;if(!m)return k;const P=E.cloneElement(u,{__css:p}),A=x?null:P;return j.jsxs(E.Fragment,{children:[k,A]},w)})},[u,p,m,S,d,l]),y=Gn("chakra-stack",c);return j.jsx(Ae.div,{ref:t,display:"flex",alignItems:i,justifyContent:o,flexDirection:h,flexWrap:a,gap:m?void 0:s,className:y,...f,children:v})});RN.displayName="Stack";var IN=Ze((e,t)=>j.jsx(RN,{align:"center",...e,direction:"row",ref:t}));IN.displayName="HStack";var xw=Ze(function(t,n){const r=Ol("Heading",t),{className:i,...o}=Ao(t);return j.jsx(Ae.h2,{ref:n,className:Gn("chakra-heading",t.className),...o,__css:r})});xw.displayName="Heading";var V5=Ae("div");V5.displayName="Box";var MN=Ze(function(t,n){const{size:r,centerContent:i=!0,...o}=t,s=i?{display:"flex",alignItems:"center",justifyContent:"center"}:{};return j.jsx(V5,{ref:n,boxSize:r,__css:{...s,flexShrink:0,flexGrow:0},...o})});MN.displayName="Square";var Pse=Ze(function(t,n){const{size:r,...i}=t;return j.jsx(MN,{size:r,ref:n,borderRadius:"9999px",...i})});Pse.displayName="Circle";var z5=Ze(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 j.jsx(Ae.div,{ref:n,__css:d,...c})});z5.displayName="Flex";var Xl=(e,t)=>({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),$n={arrowShadowColor:Xl("--popper-arrow-shadow-color"),arrowSize:Xl("--popper-arrow-size","8px"),arrowSizeHalf:Xl("--popper-arrow-size-half"),arrowBg:Xl("--popper-arrow-bg"),transformOrigin:Xl("--popper-transform-origin"),arrowOffset:Xl("--popper-arrow-offset")};function kse(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 Ase={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"},Ose=e=>Ase[e],u6={scroll:!0,resize:!0};function Rse(e){let t;return typeof e=="object"?t={enabled:!0,options:{...u6,...e}}:t={enabled:e,options:u6},t}var Ise={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`}},Mse={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{c6(e)},effect:({state:e})=>()=>{c6(e)}},c6=e=>{e.elements.popper.style.setProperty($n.transformOrigin.var,Ose(e.placement))},Nse={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{Dse(e)}},Dse=e=>{var t;if(!e.placement)return;const n=Lse(e.placement);if((t=e.elements)!=null&&t.arrow&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:$n.arrowSize.varRef,height:$n.arrowSize.varRef,zIndex:-1});const r={[$n.arrowSizeHalf.var]:`calc(${$n.arrowSize.varRef} / 2 - 1px)`,[$n.arrowOffset.var]:`calc(${$n.arrowSizeHalf.varRef} * -1)`};for(const i in r)e.elements.arrow.style.setProperty(i,r[i])}},Lse=e=>{if(e.startsWith("top"))return{property:"bottom",value:$n.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:$n.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:$n.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:$n.arrowOffset.varRef}},$se={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{d6(e)},effect:({state:e})=>()=>{d6(e)}},d6=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");if(!t)return;const n=kse(e.placement);n&&t.style.setProperty("--popper-arrow-default-shadow",n),Object.assign(t.style,{transform:"rotate(45deg)",background:$n.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:"var(--popper-arrow-shadow, var(--popper-arrow-default-shadow))"})},Fse={"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"}},Bse={"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 jse(e,t="ltr"){var n,r;const i=((n=Fse[e])==null?void 0:n[t])||e;return t==="ltr"?i:(r=Bse[e])!=null?r:i}var Or="top",yi="bottom",vi="right",Rr="left",U5="auto",lp=[Or,yi,vi,Rr],xc="start",rh="end",Vse="clippingParents",NN="viewport",Sd="popper",zse="reference",f6=lp.reduce(function(e,t){return e.concat([t+"-"+xc,t+"-"+rh])},[]),DN=[].concat(lp,[U5]).reduce(function(e,t){return e.concat([t,t+"-"+xc,t+"-"+rh])},[]),Use="beforeRead",Gse="read",Hse="afterRead",qse="beforeMain",Wse="main",Kse="afterMain",Yse="beforeWrite",Xse="write",Qse="afterWrite",Zse=[Use,Gse,Hse,qse,Wse,Kse,Yse,Xse,Qse];function wo(e){return e?(e.nodeName||"").toLowerCase():null}function qr(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function gl(e){var t=qr(e).Element;return e instanceof t||e instanceof Element}function hi(e){var t=qr(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function G5(e){if(typeof ShadowRoot>"u")return!1;var t=qr(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Jse(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},i=t.attributes[n]||{},o=t.elements[n];!hi(o)||!wo(o)||(Object.assign(o.style,r),Object.keys(i).forEach(function(s){var a=i[s];a===!1?o.removeAttribute(s):o.setAttribute(s,a===!0?"":a)}))})}function eae(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var i=t.elements[r],o=t.attributes[r]||{},s=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),a=s.reduce(function(l,u){return l[u]="",l},{});!hi(i)||!wo(i)||(Object.assign(i.style,a),Object.keys(o).forEach(function(l){i.removeAttribute(l)}))})}}const tae={name:"applyStyles",enabled:!0,phase:"write",fn:Jse,effect:eae,requires:["computeStyles"]};function So(e){return e.split("-")[0]}var il=Math.max,Ty=Math.min,Cc=Math.round;function Cw(){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 LN(){return!/^((?!chrome|android).)*safari/i.test(Cw())}function Tc(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&hi(e)&&(i=e.offsetWidth>0&&Cc(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Cc(r.height)/e.offsetHeight||1);var s=gl(e)?qr(e):window,a=s.visualViewport,l=!LN()&&n,u=(r.left+(l&&a?a.offsetLeft:0))/i,c=(r.top+(l&&a?a.offsetTop:0))/o,d=r.width/i,f=r.height/o;return{width:d,height:f,top:c,right:u+d,bottom:c+f,left:u,x:u,y:c}}function H5(e){var t=Tc(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 $N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&G5(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function ds(e){return qr(e).getComputedStyle(e)}function nae(e){return["table","td","th"].indexOf(wo(e))>=0}function Pa(e){return((gl(e)?e.ownerDocument:e.document)||window.document).documentElement}function Lv(e){return wo(e)==="html"?e:e.assignedSlot||e.parentNode||(G5(e)?e.host:null)||Pa(e)}function h6(e){return!hi(e)||ds(e).position==="fixed"?null:e.offsetParent}function rae(e){var t=/firefox/i.test(Cw()),n=/Trident/i.test(Cw());if(n&&hi(e)){var r=ds(e);if(r.position==="fixed")return null}var i=Lv(e);for(G5(i)&&(i=i.host);hi(i)&&["html","body"].indexOf(wo(i))<0;){var o=ds(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function up(e){for(var t=qr(e),n=h6(e);n&&nae(n)&&ds(n).position==="static";)n=h6(n);return n&&(wo(n)==="html"||wo(n)==="body"&&ds(n).position==="static")?t:n||rae(e)||t}function q5(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function hf(e,t,n){return il(e,Ty(t,n))}function iae(e,t,n){var r=hf(e,t,n);return r>n?n:r}function FN(){return{top:0,right:0,bottom:0,left:0}}function BN(e){return Object.assign({},FN(),e)}function jN(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var oae=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,BN(typeof t!="number"?t:jN(t,lp))};function sae(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,s=n.modifiersData.popperOffsets,a=So(n.placement),l=q5(a),u=[Rr,vi].indexOf(a)>=0,c=u?"height":"width";if(!(!o||!s)){var d=oae(i.padding,n),f=H5(o),h=l==="y"?Or:Rr,p=l==="y"?yi:vi,m=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],S=s[l]-n.rects.reference[l],v=up(o),y=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,g=m/2-S/2,b=d[h],_=y-f[c]-d[p],w=y/2-f[c]/2+g,x=hf(b,w,_),C=l;n.modifiersData[r]=(t={},t[C]=x,t.centerOffset=x-w,t)}}function aae(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||$N(t.elements.popper,i)&&(t.elements.arrow=i))}const lae={name:"arrow",enabled:!0,phase:"main",fn:sae,effect:aae,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ec(e){return e.split("-")[1]}var uae={top:"auto",right:"auto",bottom:"auto",left:"auto"};function cae(e,t){var n=e.x,r=e.y,i=t.devicePixelRatio||1;return{x:Cc(n*i)/i||0,y:Cc(r*i)/i||0}}function p6(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,f=s.x,h=f===void 0?0:f,p=s.y,m=p===void 0?0:p,S=typeof c=="function"?c({x:h,y:m}):{x:h,y:m};h=S.x,m=S.y;var v=s.hasOwnProperty("x"),y=s.hasOwnProperty("y"),g=Rr,b=Or,_=window;if(u){var w=up(n),x="clientHeight",C="clientWidth";if(w===qr(n)&&(w=Pa(n),ds(w).position!=="static"&&a==="absolute"&&(x="scrollHeight",C="scrollWidth")),w=w,i===Or||(i===Rr||i===vi)&&o===rh){b=yi;var k=d&&w===_&&_.visualViewport?_.visualViewport.height:w[x];m-=k-r.height,m*=l?1:-1}if(i===Rr||(i===Or||i===yi)&&o===rh){g=vi;var P=d&&w===_&&_.visualViewport?_.visualViewport.width:w[C];h-=P-r.width,h*=l?1:-1}}var A=Object.assign({position:a},u&&uae),$=c===!0?cae({x:h,y:m},qr(n)):{x:h,y:m};if(h=$.x,m=$.y,l){var N;return Object.assign({},A,(N={},N[b]=y?"0":"",N[g]=v?"0":"",N.transform=(_.devicePixelRatio||1)<=1?"translate("+h+"px, "+m+"px)":"translate3d("+h+"px, "+m+"px, 0)",N))}return Object.assign({},A,(t={},t[b]=y?m+"px":"",t[g]=v?h+"px":"",t.transform="",t))}function dae(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,o=n.adaptive,s=o===void 0?!0:o,a=n.roundOffsets,l=a===void 0?!0:a,u={placement:So(t.placement),variation:Ec(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,p6(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,p6(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const fae={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:dae,data:{}};var lg={passive:!0};function hae(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,s=r.resize,a=s===void 0?!0:s,l=qr(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&u.forEach(function(c){c.addEventListener("scroll",n.update,lg)}),a&&l.addEventListener("resize",n.update,lg),function(){o&&u.forEach(function(c){c.removeEventListener("scroll",n.update,lg)}),a&&l.removeEventListener("resize",n.update,lg)}}const pae={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:hae,data:{}};var gae={left:"right",right:"left",bottom:"top",top:"bottom"};function lm(e){return e.replace(/left|right|bottom|top/g,function(t){return gae[t]})}var mae={start:"end",end:"start"};function g6(e){return e.replace(/start|end/g,function(t){return mae[t]})}function W5(e){var t=qr(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function K5(e){return Tc(Pa(e)).left+W5(e).scrollLeft}function yae(e,t){var n=qr(e),r=Pa(e),i=n.visualViewport,o=r.clientWidth,s=r.clientHeight,a=0,l=0;if(i){o=i.width,s=i.height;var u=LN();(u||!u&&t==="fixed")&&(a=i.offsetLeft,l=i.offsetTop)}return{width:o,height:s,x:a+K5(e),y:l}}function vae(e){var t,n=Pa(e),r=W5(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=il(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=il(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+K5(e),l=-r.scrollTop;return ds(i||n).direction==="rtl"&&(a+=il(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:a,y:l}}function Y5(e){var t=ds(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function VN(e){return["html","body","#document"].indexOf(wo(e))>=0?e.ownerDocument.body:hi(e)&&Y5(e)?e:VN(Lv(e))}function pf(e,t){var n;t===void 0&&(t=[]);var r=VN(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=qr(r),s=i?[o].concat(o.visualViewport||[],Y5(r)?r:[]):r,a=t.concat(s);return i?a:a.concat(pf(Lv(s)))}function Tw(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function bae(e,t){var n=Tc(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 m6(e,t,n){return t===NN?Tw(yae(e,n)):gl(t)?bae(t,n):Tw(vae(Pa(e)))}function Sae(e){var t=pf(Lv(e)),n=["absolute","fixed"].indexOf(ds(e).position)>=0,r=n&&hi(e)?up(e):e;return gl(r)?t.filter(function(i){return gl(i)&&$N(i,r)&&wo(i)!=="body"}):[]}function _ae(e,t,n,r){var i=t==="clippingParents"?Sae(e):[].concat(t),o=[].concat(i,[n]),s=o[0],a=o.reduce(function(l,u){var c=m6(e,u,r);return l.top=il(c.top,l.top),l.right=Ty(c.right,l.right),l.bottom=Ty(c.bottom,l.bottom),l.left=il(c.left,l.left),l},m6(e,s,r));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function zN(e){var t=e.reference,n=e.element,r=e.placement,i=r?So(r):null,o=r?Ec(r):null,s=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,l;switch(i){case Or:l={x:s,y:t.y-n.height};break;case yi:l={x:s,y:t.y+t.height};break;case vi:l={x:t.x+t.width,y:a};break;case Rr:l={x:t.x-n.width,y:a};break;default:l={x:t.x,y:t.y}}var u=i?q5(i):null;if(u!=null){var c=u==="y"?"height":"width";switch(o){case xc:l[u]=l[u]-(t[c]/2-n[c]/2);break;case rh:l[u]=l[u]+(t[c]/2-n[c]/2);break}}return l}function ih(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,o=n.strategy,s=o===void 0?e.strategy:o,a=n.boundary,l=a===void 0?Vse:a,u=n.rootBoundary,c=u===void 0?NN:u,d=n.elementContext,f=d===void 0?Sd:d,h=n.altBoundary,p=h===void 0?!1:h,m=n.padding,S=m===void 0?0:m,v=BN(typeof S!="number"?S:jN(S,lp)),y=f===Sd?zse:Sd,g=e.rects.popper,b=e.elements[p?y:f],_=_ae(gl(b)?b:b.contextElement||Pa(e.elements.popper),l,c,s),w=Tc(e.elements.reference),x=zN({reference:w,element:g,strategy:"absolute",placement:i}),C=Tw(Object.assign({},g,x)),k=f===Sd?C:w,P={top:_.top-k.top+v.top,bottom:k.bottom-_.bottom+v.bottom,left:_.left-k.left+v.left,right:k.right-_.right+v.right},A=e.modifiersData.offset;if(f===Sd&&A){var $=A[i];Object.keys(P).forEach(function(N){var T=[vi,yi].indexOf(N)>=0?1:-1,O=[Or,yi].indexOf(N)>=0?"y":"x";P[N]+=$[O]*T})}return P}function wae(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,u=l===void 0?DN:l,c=Ec(r),d=c?a?f6:f6.filter(function(p){return Ec(p)===c}):lp,f=d.filter(function(p){return u.indexOf(p)>=0});f.length===0&&(f=d);var h=f.reduce(function(p,m){return p[m]=ih(e,{placement:m,boundary:i,rootBoundary:o,padding:s})[So(m)],p},{});return Object.keys(h).sort(function(p,m){return h[p]-h[m]})}function xae(e){if(So(e)===U5)return[];var t=lm(e);return[g6(e),t,g6(t)]}function Cae(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=i===void 0?!0:i,s=n.altAxis,a=s===void 0?!0:s,l=n.fallbackPlacements,u=n.padding,c=n.boundary,d=n.rootBoundary,f=n.altBoundary,h=n.flipVariations,p=h===void 0?!0:h,m=n.allowedAutoPlacements,S=t.options.placement,v=So(S),y=v===S,g=l||(y||!p?[lm(S)]:xae(S)),b=[S].concat(g).reduce(function(K,W){return K.concat(So(W)===U5?wae(t,{placement:W,boundary:c,rootBoundary:d,padding:u,flipVariations:p,allowedAutoPlacements:m}):W)},[]),_=t.rects.reference,w=t.rects.popper,x=new Map,C=!0,k=b[0],P=0;P=0,O=T?"width":"height",I=ih(t,{placement:A,boundary:c,rootBoundary:d,altBoundary:f,padding:u}),M=T?N?vi:Rr:N?yi:Or;_[O]>w[O]&&(M=lm(M));var R=lm(M),D=[];if(o&&D.push(I[$]<=0),a&&D.push(I[M]<=0,I[R]<=0),D.every(function(K){return K})){k=A,C=!1;break}x.set(A,D)}if(C)for(var L=p?3:1,V=function(W){var X=b.find(function(F){var q=x.get(F);if(q)return q.slice(0,W).every(function(Q){return Q})});if(X)return k=X,"break"},z=L;z>0;z--){var U=V(z);if(U==="break")break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}}const Tae={name:"flip",enabled:!0,phase:"main",fn:Cae,requiresIfExists:["offset"],data:{_skip:!1}};function y6(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 v6(e){return[Or,vi,yi,Rr].some(function(t){return e[t]>=0})}function Eae(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,s=ih(t,{elementContext:"reference"}),a=ih(t,{altBoundary:!0}),l=y6(s,r),u=y6(a,i,o),c=v6(l),d=v6(u);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}const Pae={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Eae};function kae(e,t,n){var r=So(e),i=[Rr,Or].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,s=o[0],a=o[1];return s=s||0,a=(a||0)*i,[Rr,vi].indexOf(r)>=0?{x:a,y:s}:{x:s,y:a}}function Aae(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=i===void 0?[0,0]:i,s=DN.reduce(function(c,d){return c[d]=kae(d,t.rects,o),c},{}),a=s[t.placement],l=a.x,u=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=s}const Oae={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Aae};function Rae(e){var t=e.state,n=e.name;t.modifiersData[n]=zN({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Iae={name:"popperOffsets",enabled:!0,phase:"read",fn:Rae,data:{}};function Mae(e){return e==="x"?"y":"x"}function Nae(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=i===void 0?!0:i,s=n.altAxis,a=s===void 0?!1:s,l=n.boundary,u=n.rootBoundary,c=n.altBoundary,d=n.padding,f=n.tether,h=f===void 0?!0:f,p=n.tetherOffset,m=p===void 0?0:p,S=ih(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:c}),v=So(t.placement),y=Ec(t.placement),g=!y,b=q5(v),_=Mae(b),w=t.modifiersData.popperOffsets,x=t.rects.reference,C=t.rects.popper,k=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,P=typeof k=="number"?{mainAxis:k,altAxis:k}:Object.assign({mainAxis:0,altAxis:0},k),A=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,$={x:0,y:0};if(w){if(o){var N,T=b==="y"?Or:Rr,O=b==="y"?yi:vi,I=b==="y"?"height":"width",M=w[b],R=M+S[T],D=M-S[O],L=h?-C[I]/2:0,V=y===xc?x[I]:C[I],z=y===xc?-C[I]:-x[I],U=t.elements.arrow,K=h&&U?H5(U):{width:0,height:0},W=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:FN(),X=W[T],F=W[O],q=hf(0,x[I],K[I]),Q=g?x[I]/2-L-q-X-P.mainAxis:V-q-X-P.mainAxis,J=g?-x[I]/2+L+q+F+P.mainAxis:z+q+F+P.mainAxis,ne=t.elements.arrow&&up(t.elements.arrow),Z=ne?b==="y"?ne.clientTop||0:ne.clientLeft||0:0,ge=(N=A==null?void 0:A[b])!=null?N:0,ae=M+Q-ge-Z,oe=M+J-ge,Te=hf(h?Ty(R,ae):R,M,h?il(D,oe):D);w[b]=Te,$[b]=Te-M}if(a){var se,We=b==="x"?Or:Rr,yt=b==="x"?yi:vi,Fe=w[_],Be=_==="y"?"height":"width",Me=Fe+S[We],rt=Fe-S[yt],xt=[Or,Rr].indexOf(v)!==-1,mn=(se=A==null?void 0:A[_])!=null?se:0,an=xt?Me:Fe-x[Be]-C[Be]-mn+P.altAxis,Ot=xt?Fe+x[Be]+C[Be]-mn-P.altAxis:rt,ee=h&&xt?iae(an,Fe,Ot):hf(h?an:Me,Fe,h?Ot:rt);w[_]=ee,$[_]=ee-Fe}t.modifiersData[r]=$}}const Dae={name:"preventOverflow",enabled:!0,phase:"main",fn:Nae,requiresIfExists:["offset"]};function Lae(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function $ae(e){return e===qr(e)||!hi(e)?W5(e):Lae(e)}function Fae(e){var t=e.getBoundingClientRect(),n=Cc(t.width)/e.offsetWidth||1,r=Cc(t.height)/e.offsetHeight||1;return n!==1||r!==1}function Bae(e,t,n){n===void 0&&(n=!1);var r=hi(t),i=hi(t)&&Fae(t),o=Pa(t),s=Tc(e,i,n),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((wo(t)!=="body"||Y5(o))&&(a=$ae(t)),hi(t)?(l=Tc(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=K5(o))),{x:s.left+a.scrollLeft-l.x,y:s.top+a.scrollTop-l.y,width:s.width,height:s.height}}function jae(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function i(o){n.add(o.name);var s=[].concat(o.requires||[],o.requiresIfExists||[]);s.forEach(function(a){if(!n.has(a)){var l=t.get(a);l&&i(l)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||i(o)}),r}function Vae(e){var t=jae(e);return Zse.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function zae(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function Uae(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var b6={placement:"bottom",modifiers:[],strategy:"absolute"};function S6(){for(var e=arguments.length,t=new Array(e),n=0;n{}),g=E.useCallback(()=>{var P;!t||!p.current||!m.current||((P=y.current)==null||P.call(y),S.current=qae(p.current,m.current,{placement:v,modifiers:[$se,Nse,Mse,{...Ise,enabled:!!f},{name:"eventListeners",...Rse(s)},{name:"arrow",options:{padding:o}},{name:"offset",options:{offset:a??[0,l]}},{name:"flip",enabled:!!u,options:{padding:8}},{name:"preventOverflow",enabled:!!d,options:{boundary:c}},...n??[]],strategy:i}),S.current.forceUpdate(),y.current=S.current.destroy)},[v,t,n,f,s,o,a,l,u,d,c,i]);E.useEffect(()=>()=>{var P;!p.current&&!m.current&&((P=S.current)==null||P.destroy(),S.current=null)},[]);const b=E.useCallback(P=>{p.current=P,g()},[g]),_=E.useCallback((P={},A=null)=>({...P,ref:fi(b,A)}),[b]),w=E.useCallback(P=>{m.current=P,g()},[g]),x=E.useCallback((P={},A=null)=>({...P,ref:fi(w,A),style:{...P.style,position:i,minWidth:f?void 0:"max-content",inset:"0 auto auto 0"}}),[i,w,f]),C=E.useCallback((P={},A=null)=>{const{size:$,shadowColor:N,bg:T,style:O,...I}=P;return{...I,ref:A,"data-popper-arrow":"",style:Kae(P)}},[]),k=E.useCallback((P={},A=null)=>({...P,ref:A,"data-popper-arrow-inner":""}),[]);return{update(){var P;(P=S.current)==null||P.update()},forceUpdate(){var P;(P=S.current)==null||P.forceUpdate()},transformOrigin:$n.transformOrigin.varRef,referenceRef:b,popperRef:w,getPopperProps:x,getArrowProps:C,getArrowInnerProps:k,getReferenceProps:_}}function Kae(e){const{size:t,shadowColor:n,bg:r,style:i}=e,o={...i,position:"absolute"};return t&&(o["--popper-arrow-size"]=t),n&&(o["--popper-arrow-shadow-color"]=n),r&&(o["--popper-arrow-bg"]=r),o}function Yae(e={}){const{onClose:t,onOpen:n,isOpen:r,id:i}=e,o=Fn(n),s=Fn(t),[a,l]=E.useState(e.defaultIsOpen||!1),u=r!==void 0?r:a,c=r!==void 0,d=E.useId(),f=i??`disclosure-${d}`,h=E.useCallback(()=>{c||l(!1),s==null||s()},[c,s]),p=E.useCallback(()=>{c||l(!0),o==null||o()},[c,o]),m=E.useCallback(()=>{u?h():p()},[u,p,h]);function S(y={}){return{...y,"aria-expanded":u,"aria-controls":f,onClick(g){var b;(b=y.onClick)==null||b.call(y,g),m()}}}function v(y={}){return{...y,hidden:!u,id:f}}return{isOpen:u,onOpen:p,onClose:h,onToggle:m,isControlled:c,getButtonProps:S,getDisclosureProps:v}}var Xae=e=>j.jsx(Ml,{viewBox:"0 0 24 24",...e,children:j.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"})}),Qae=e=>j.jsx(Ml,{viewBox:"0 0 24 24",...e,children:j.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 _6(e,t,n,r){E.useEffect(()=>{var i;if(!e.current||!r)return;const o=(i=e.current.ownerDocument.defaultView)!=null?i:window,s=Array.isArray(t)?t:[t],a=new o.MutationObserver(l=>{for(const u of l)u.type==="attributes"&&u.attributeName&&s.includes(u.attributeName)&&n(u)});return a.observe(e.current,{attributes:!0,attributeFilter:s}),()=>a.disconnect()})}function Zae(e,t){const n=Fn(e);E.useEffect(()=>{let r=null;const i=()=>n();return t!==null&&(r=window.setInterval(i,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var Jae=50,w6=300;function ele(e,t){const[n,r]=E.useState(!1),[i,o]=E.useState(null),[s,a]=E.useState(!0),l=E.useRef(null),u=()=>clearTimeout(l.current);Zae(()=>{i==="increment"&&e(),i==="decrement"&&t()},n?Jae:null);const c=E.useCallback(()=>{s&&e(),l.current=setTimeout(()=>{a(!1),r(!0),o("increment")},w6)},[e,s]),d=E.useCallback(()=>{s&&t(),l.current=setTimeout(()=>{a(!1),r(!0),o("decrement")},w6)},[t,s]),f=E.useCallback(()=>{a(!0),r(!1),u()},[]);return E.useEffect(()=>()=>u(),[]),{up:c,down:d,stop:f,isSpinning:n}}var tle=/^[Ee0-9+\-.]$/;function nle(e){return tle.test(e)}function rle(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 ile(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:i=Number.MIN_SAFE_INTEGER,max:o=Number.MAX_SAFE_INTEGER,step:s=1,isReadOnly:a,isDisabled:l,isRequired:u,isInvalid:c,pattern:d="[0-9]*(.[0-9]+)?",inputMode:f="decimal",allowMouseWheel:h,id:p,onChange:m,precision:S,name:v,"aria-describedby":y,"aria-label":g,"aria-labelledby":b,onFocus:_,onBlur:w,onInvalid:x,getAriaValueText:C,isValidCharacter:k,format:P,parse:A,...$}=e,N=Fn(_),T=Fn(w),O=Fn(x),I=Fn(k??nle),M=Fn(C),R=yse(e),{update:D,increment:L,decrement:V}=R,[z,U]=E.useState(!1),K=!(a||l),W=E.useRef(null),X=E.useRef(null),F=E.useRef(null),q=E.useRef(null),Q=E.useCallback(ee=>ee.split("").filter(I).join(""),[I]),J=E.useCallback(ee=>{var _e;return(_e=A==null?void 0:A(ee))!=null?_e:ee},[A]),ne=E.useCallback(ee=>{var _e;return((_e=P==null?void 0:P(ee))!=null?_e:ee).toString()},[P]);gy(()=>{(R.valueAsNumber>o||R.valueAsNumber{if(!W.current)return;if(W.current.value!=R.value){const _e=J(W.current.value);R.setValue(Q(_e))}},[J,Q]);const Z=E.useCallback((ee=s)=>{K&&L(ee)},[L,K,s]),ge=E.useCallback((ee=s)=>{K&&V(ee)},[V,K,s]),ae=ele(Z,ge);_6(F,"disabled",ae.stop,ae.isSpinning),_6(q,"disabled",ae.stop,ae.isSpinning);const oe=E.useCallback(ee=>{if(ee.nativeEvent.isComposing)return;const Ee=J(ee.currentTarget.value);D(Q(Ee)),X.current={start:ee.currentTarget.selectionStart,end:ee.currentTarget.selectionEnd}},[D,Q,J]),Te=E.useCallback(ee=>{var _e,Ee,Ne;N==null||N(ee),X.current&&(ee.target.selectionStart=(Ee=X.current.start)!=null?Ee:(_e=ee.currentTarget.value)==null?void 0:_e.length,ee.currentTarget.selectionEnd=(Ne=X.current.end)!=null?Ne:ee.currentTarget.selectionStart)},[N]),se=E.useCallback(ee=>{if(ee.nativeEvent.isComposing)return;rle(ee,I)||ee.preventDefault();const _e=We(ee)*s,Ee=ee.key,ie={ArrowUp:()=>Z(_e),ArrowDown:()=>ge(_e),Home:()=>D(i),End:()=>D(o)}[Ee];ie&&(ee.preventDefault(),ie(ee))},[I,s,Z,ge,D,i,o]),We=ee=>{let _e=1;return(ee.metaKey||ee.ctrlKey)&&(_e=.1),ee.shiftKey&&(_e=10),_e},yt=E.useMemo(()=>{const ee=M==null?void 0:M(R.value);if(ee!=null)return ee;const _e=R.value.toString();return _e||void 0},[R.value,M]),Fe=E.useCallback(()=>{let ee=R.value;if(R.value==="")return;/^[eE]/.test(R.value.toString())?R.setValue(""):(R.valueAsNumbero&&(ee=o),R.cast(ee))},[R,o,i]),Be=E.useCallback(()=>{U(!1),n&&Fe()},[n,U,Fe]),Me=E.useCallback(()=>{t&&requestAnimationFrame(()=>{var ee;(ee=W.current)==null||ee.focus()})},[t]),rt=E.useCallback(ee=>{ee.preventDefault(),ae.up(),Me()},[Me,ae]),xt=E.useCallback(ee=>{ee.preventDefault(),ae.down(),Me()},[Me,ae]);am(()=>W.current,"wheel",ee=>{var _e,Ee;const ie=((Ee=(_e=W.current)==null?void 0:_e.ownerDocument)!=null?Ee:document).activeElement===W.current;if(!h||!ie)return;ee.preventDefault();const he=We(ee)*s,Qt=Math.sign(ee.deltaY);Qt===-1?Z(he):Qt===1&&ge(he)},{passive:!1});const mn=E.useCallback((ee={},_e=null)=>{const Ee=l||r&&R.isAtMax;return{...ee,ref:fi(_e,F),role:"button",tabIndex:-1,onPointerDown:Dn(ee.onPointerDown,Ne=>{Ne.button!==0||Ee||rt(Ne)}),onPointerLeave:Dn(ee.onPointerLeave,ae.stop),onPointerUp:Dn(ee.onPointerUp,ae.stop),disabled:Ee,"aria-disabled":Yu(Ee)}},[R.isAtMax,r,rt,ae.stop,l]),an=E.useCallback((ee={},_e=null)=>{const Ee=l||r&&R.isAtMin;return{...ee,ref:fi(_e,q),role:"button",tabIndex:-1,onPointerDown:Dn(ee.onPointerDown,Ne=>{Ne.button!==0||Ee||xt(Ne)}),onPointerLeave:Dn(ee.onPointerLeave,ae.stop),onPointerUp:Dn(ee.onPointerUp,ae.stop),disabled:Ee,"aria-disabled":Yu(Ee)}},[R.isAtMin,r,xt,ae.stop,l]),Ot=E.useCallback((ee={},_e=null)=>{var Ee,Ne,ie,he;return{name:v,inputMode:f,type:"text",pattern:d,"aria-labelledby":b,"aria-label":g,"aria-describedby":y,id:p,disabled:l,...ee,readOnly:(Ee=ee.readOnly)!=null?Ee:a,"aria-readonly":(Ne=ee.readOnly)!=null?Ne:a,"aria-required":(ie=ee.required)!=null?ie:u,required:(he=ee.required)!=null?he:u,ref:fi(W,_e),value:ne(R.value),role:"spinbutton","aria-valuemin":i,"aria-valuemax":o,"aria-valuenow":Number.isNaN(R.valueAsNumber)?void 0:R.valueAsNumber,"aria-invalid":Yu(c??R.isOutOfRange),"aria-valuetext":yt,autoComplete:"off",autoCorrect:"off",onChange:Dn(ee.onChange,oe),onKeyDown:Dn(ee.onKeyDown,se),onFocus:Dn(ee.onFocus,Te,()=>U(!0)),onBlur:Dn(ee.onBlur,T,Be)}},[v,f,d,b,g,ne,y,p,l,u,a,c,R.value,R.valueAsNumber,R.isOutOfRange,i,o,yt,oe,se,Te,T,Be]);return{value:ne(R.value),valueAsNumber:R.valueAsNumber,isFocused:z,isDisabled:l,isReadOnly:a,getIncrementButtonProps:mn,getDecrementButtonProps:an,getInputProps:Ot,htmlProps:$}}var[ole,$v]=Si({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[sle,X5]=Si({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),UN=Ze(function(t,n){const r=Ev("NumberInput",t),i=Ao(t),o=TN(i),{htmlProps:s,...a}=ile(o),l=E.useMemo(()=>a,[a]);return j.jsx(sle,{value:l,children:j.jsx(ole,{value:r,children:j.jsx(Ae.div,{...s,ref:n,className:Gn("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})})})});UN.displayName="NumberInput";var GN=Ze(function(t,n){const r=$v();return j.jsx(Ae.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}})});GN.displayName="NumberInputStepper";var HN=Ze(function(t,n){const{getInputProps:r}=X5(),i=r(t,n),o=$v();return j.jsx(Ae.input,{...i,className:Gn("chakra-numberinput__field",t.className),__css:{width:"100%",...o.field}})});HN.displayName="NumberInputField";var qN=Ae("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),WN=Ze(function(t,n){var r;const i=$v(),{getDecrementButtonProps:o}=X5(),s=o(t,n);return j.jsx(qN,{...s,__css:i.stepper,children:(r=t.children)!=null?r:j.jsx(Xae,{})})});WN.displayName="NumberDecrementStepper";var KN=Ze(function(t,n){var r;const{getIncrementButtonProps:i}=X5(),o=i(t,n),s=$v();return j.jsx(qN,{...o,__css:s.stepper,children:(r=t.children)!=null?r:j.jsx(Qae,{})})});KN.displayName="NumberIncrementStepper";var Ql=e=>e?"":void 0,HS=e=>e?!0:void 0,cp=(...e)=>e.filter(Boolean).join(" ");function qS(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function _Te(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 ug(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var um={width:0,height:0},cg=e=>e||um;function ale(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:i}=e,o=m=>{var S;const v=(S=r[m])!=null?S:um;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...ug({orientation:t,vertical:{bottom:`calc(${n[m]}% - ${v.height/2}px)`},horizontal:{left:`calc(${n[m]}% - ${v.width/2}px)`}})}},s=t==="vertical"?r.reduce((m,S)=>cg(m).height>cg(S).height?m:S,um):r.reduce((m,S)=>cg(m).width>cg(S).width?m:S,um),a={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...ug({orientation:t,vertical:s?{paddingLeft:s.width/2,paddingRight:s.width/2}:{},horizontal:s?{paddingTop:s.height/2,paddingBottom:s.height/2}:{}})},l={position:"absolute",...ug({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",height:"100%"},horizontal:{top:"50%",transform:"translateY(-50%)",width:"100%"}})},u=n.length===1,c=[0,i?100-n[0]:n[0]],d=u?c:n;let f=d[0];!u&&i&&(f=100-f);const h=Math.abs(d[d.length-1]-d[0]),p={...l,...ug({orientation:t,vertical:i?{height:`${h}%`,top:`${f}%`}:{height:`${h}%`,bottom:`${f}%`},horizontal:i?{width:`${h}%`,right:`${f}%`}:{width:`${h}%`,left:`${f}%`}})};return{trackStyle:l,innerTrackStyle:p,rootStyle:a,getThumbStyle:o}}function lle(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function ule(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function cle(e){const t=fle(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function YN(e){return!!e.touches}function dle(e){return YN(e)&&e.touches.length>1}function fle(e){var t;return(t=e.view)!=null?t:window}function hle(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function ple(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function XN(e,t="page"){return YN(e)?hle(e,t):ple(e,t)}function gle(e){return t=>{const n=cle(t);(!n||n&&t.button===0)&&e(t)}}function mle(e,t=!1){function n(i){e(i,{point:XN(i)})}return t?gle(n):n}function cm(e,t,n,r){return ule(e,t,mle(n,t==="pointerdown"),r)}var yle=Object.defineProperty,vle=(e,t,n)=>t in e?yle(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xi=(e,t,n)=>(vle(e,typeof t!="symbol"?t+"":t,n),n),ble=class{constructor(e,t,n){xi(this,"history",[]),xi(this,"startEvent",null),xi(this,"lastEvent",null),xi(this,"lastEventInfo",null),xi(this,"handlers",{}),xi(this,"removeListeners",()=>{}),xi(this,"threshold",3),xi(this,"win"),xi(this,"updatePoint",()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const a=WS(this.lastEventInfo,this.history),l=this.startEvent!==null,u=xle(a.offset,{x:0,y:0})>=this.threshold;if(!l&&!u)return;const{timestamp:c}=YE();this.history.push({...a.point,timestamp:c});const{onStart:d,onMove:f}=this.handlers;l||(d==null||d(this.lastEvent,a),this.startEvent=this.lastEvent),f==null||f(this.lastEvent,a)}),xi(this,"onPointerMove",(a,l)=>{this.lastEvent=a,this.lastEventInfo=l,Qee.update(this.updatePoint,!0)}),xi(this,"onPointerUp",(a,l)=>{const u=WS(l,this.history),{onEnd:c,onSessionEnd:d}=this.handlers;d==null||d(a,u),this.end(),!(!c||!this.startEvent)&&(c==null||c(a,u))});var r;if(this.win=(r=e.view)!=null?r:window,dle(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const i={point:XN(e)},{timestamp:o}=YE();this.history=[{...i.point,timestamp:o}];const{onSessionStart:s}=t;s==null||s(e,WS(i,this.history)),this.removeListeners=wle(cm(this.win,"pointermove",this.onPointerMove),cm(this.win,"pointerup",this.onPointerUp),cm(this.win,"pointercancel",this.onPointerUp))}updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),Zee.update(this.updatePoint)}};function x6(e,t){return{x:e.x-t.x,y:e.y-t.y}}function WS(e,t){return{point:e.point,delta:x6(e.point,t[t.length-1]),offset:x6(e.point,t[0]),velocity:_le(t,.1)}}var Sle=e=>e*1e3;function _le(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=e[e.length-1];for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>Sle(t)));)n--;if(!r)return{x:0,y:0};const o=(i.timestamp-r.timestamp)/1e3;if(o===0)return{x:0,y:0};const 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 wle(...e){return t=>e.reduce((n,r)=>r(n),t)}function KS(e,t){return Math.abs(e-t)}function C6(e){return"x"in e&&"y"in e}function xle(e,t){if(typeof e=="number"&&typeof t=="number")return KS(e,t);if(C6(e)&&C6(t)){const n=KS(e.x,t.x),r=KS(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function QN(e){const t=E.useRef(null);return t.current=e,t}function Cle(e,t){const{onPan:n,onPanStart:r,onPanEnd:i,onPanSessionStart:o,onPanSessionEnd:s,threshold:a}=t,l=!!(n||r||i||o||s),u=E.useRef(null),c=QN({onSessionStart:o,onSessionEnd:s,onStart:r,onMove:n,onEnd(d,f){u.current=null,i==null||i(d,f)}});E.useEffect(()=>{var d;(d=u.current)==null||d.updateHandlers(c.current)}),E.useEffect(()=>{const d=e.current;if(!d||!l)return;function f(h){u.current=new ble(h,c.current,a)}return cm(d,"pointerdown",f)},[e,l,c,a]),E.useEffect(()=>()=>{var d;(d=u.current)==null||d.end(),u.current=null},[])}function Tle(e,t){if(!e){t(void 0);return}t({width:e.offsetWidth,height:e.offsetHeight});const n=e.ownerDocument.defaultView??window,r=new n.ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const[o]=i;let s,a;if("borderBoxSize"in o){const l=o.borderBoxSize,u=Array.isArray(l)?l[0]:l;s=u.inlineSize,a=u.blockSize}else s=e.offsetWidth,a=e.offsetHeight;t({width:s,height:a})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var Ele=globalThis!=null&&globalThis.document?E.useLayoutEffect:E.useEffect;function Ple(e,t){var n,r;if(!e||!e.parentElement)return;const i=(r=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?r:window,o=new i.MutationObserver(()=>{t()});return o.observe(e.parentElement,{childList:!0}),()=>{o.disconnect()}}function kle({getNodes:e,observeMutation:t=!0}){const[n,r]=E.useState([]),[i,o]=E.useState(0);return Ele(()=>{const s=e(),a=s.map((l,u)=>Tle(l,c=>{r(d=>[...d.slice(0,u),c,...d.slice(u+1)])}));if(t){const l=s[0];a.push(Ple(l,()=>{o(u=>u+1)}))}return()=>{a.forEach(l=>{l==null||l()})}},[i]),n}function Ale(e){return typeof e=="object"&&e!==null&&"current"in e}function Ole(e){const[t]=kle({observeMutation:!1,getNodes(){return[Ale(e)?e.current:e]}});return t}function Rle(e){var t;const{min:n=0,max:r=100,onChange:i,value:o,defaultValue:s,isReversed:a,direction:l="ltr",orientation:u="horizontal",id:c,isDisabled:d,isReadOnly:f,onChangeStart:h,onChangeEnd:p,step:m=1,getAriaValueText:S,"aria-valuetext":v,"aria-label":y,"aria-labelledby":g,name:b,focusThumbOnChange:_=!0,...w}=e,x=Fn(h),C=Fn(p),k=Fn(S),P=lle({isReversed:a,direction:l,orientation:u}),[A,$]=ise({value:o,defaultValue:s??Mle(n,r),onChange:i}),[N,T]=E.useState(!1),[O,I]=E.useState(!1),M=!(d||f),R=(r-n)/10,D=m||(r-n)/100,L=sm(A,n,r),V=r-L+n,U=s6(P?V:L,n,r),K=u==="vertical",W=QN({min:n,max:r,step:m,isDisabled:d,value:L,isInteractive:M,isReversed:P,isVertical:K,eventSource:null,focusThumbOnChange:_,orientation:u}),X=E.useRef(null),F=E.useRef(null),q=E.useRef(null),Q=E.useId(),J=c??Q,[ne,Z]=[`slider-thumb-${J}`,`slider-track-${J}`],ge=E.useCallback(ie=>{var he,Qt;if(!X.current)return;const Rt=W.current;Rt.eventSource="pointer";const ut=X.current.getBoundingClientRect(),{clientX:rr,clientY:Mo}=(Qt=(he=ie.touches)==null?void 0:he[0])!=null?Qt:ie,Qr=K?ut.bottom-Mo:rr-ut.left,No=K?ut.height:ut.width;let ct=Qr/No;P&&(ct=1-ct);let Ke=mse(ct,Rt.min,Rt.max);return Rt.step&&(Ke=parseFloat(a6(Ke,Rt.min,Rt.step))),Ke=sm(Ke,Rt.min,Rt.max),Ke},[K,P,W]),ae=E.useCallback(ie=>{const he=W.current;he.isInteractive&&(ie=parseFloat(a6(ie,he.min,D)),ie=sm(ie,he.min,he.max),$(ie))},[D,$,W]),oe=E.useMemo(()=>({stepUp(ie=D){const he=P?L-ie:L+ie;ae(he)},stepDown(ie=D){const he=P?L+ie:L-ie;ae(he)},reset(){ae(s||0)},stepTo(ie){ae(ie)}}),[ae,P,L,D,s]),Te=E.useCallback(ie=>{const he=W.current,Rt={ArrowRight:()=>oe.stepUp(),ArrowUp:()=>oe.stepUp(),ArrowLeft:()=>oe.stepDown(),ArrowDown:()=>oe.stepDown(),PageUp:()=>oe.stepUp(R),PageDown:()=>oe.stepDown(R),Home:()=>ae(he.min),End:()=>ae(he.max)}[ie.key];Rt&&(ie.preventDefault(),ie.stopPropagation(),Rt(ie),he.eventSource="keyboard")},[oe,ae,R,W]),se=(t=k==null?void 0:k(L))!=null?t:v,We=Ole(F),{getThumbStyle:yt,rootStyle:Fe,trackStyle:Be,innerTrackStyle:Me}=E.useMemo(()=>{const ie=W.current,he=We??{width:0,height:0};return ale({isReversed:P,orientation:ie.orientation,thumbRects:[he],thumbPercents:[U]})},[P,We,U,W]),rt=E.useCallback(()=>{W.current.focusThumbOnChange&&setTimeout(()=>{var he;return(he=F.current)==null?void 0:he.focus()})},[W]);gy(()=>{const ie=W.current;rt(),ie.eventSource==="keyboard"&&(C==null||C(ie.value))},[L,C]);function xt(ie){const he=ge(ie);he!=null&&he!==W.current.value&&$(he)}Cle(q,{onPanSessionStart(ie){const he=W.current;he.isInteractive&&(T(!0),rt(),xt(ie),x==null||x(he.value))},onPanSessionEnd(){const ie=W.current;ie.isInteractive&&(T(!1),C==null||C(ie.value))},onPan(ie){W.current.isInteractive&&xt(ie)}});const mn=E.useCallback((ie={},he=null)=>({...ie,...w,ref:fi(he,q),tabIndex:-1,"aria-disabled":HS(d),"data-focused":Ql(O),style:{...ie.style,...Fe}}),[w,d,O,Fe]),an=E.useCallback((ie={},he=null)=>({...ie,ref:fi(he,X),id:Z,"data-disabled":Ql(d),style:{...ie.style,...Be}}),[d,Z,Be]),Ot=E.useCallback((ie={},he=null)=>({...ie,ref:he,style:{...ie.style,...Me}}),[Me]),ee=E.useCallback((ie={},he=null)=>({...ie,ref:fi(he,F),role:"slider",tabIndex:M?0:void 0,id:ne,"data-active":Ql(N),"aria-valuetext":se,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":L,"aria-orientation":u,"aria-disabled":HS(d),"aria-readonly":HS(f),"aria-label":y,"aria-labelledby":y?void 0:g,style:{...ie.style,...yt(0)},onKeyDown:qS(ie.onKeyDown,Te),onFocus:qS(ie.onFocus,()=>I(!0)),onBlur:qS(ie.onBlur,()=>I(!1))}),[M,ne,N,se,n,r,L,u,d,f,y,g,yt,Te]),_e=E.useCallback((ie,he=null)=>{const Qt=!(ie.valuer),Rt=L>=ie.value,ut=s6(ie.value,n,r),rr={position:"absolute",pointerEvents:"none",...Ile({orientation:u,vertical:{bottom:P?`${100-ut}%`:`${ut}%`},horizontal:{left:P?`${100-ut}%`:`${ut}%`}})};return{...ie,ref:he,role:"presentation","aria-hidden":!0,"data-disabled":Ql(d),"data-invalid":Ql(!Qt),"data-highlighted":Ql(Rt),style:{...ie.style,...rr}}},[d,P,r,n,u,L]),Ee=E.useCallback((ie={},he=null)=>({...ie,ref:he,type:"hidden",value:L,name:b}),[b,L]);return{state:{value:L,isFocused:O,isDragging:N},actions:oe,getRootProps:mn,getTrackProps:an,getInnerTrackProps:Ot,getThumbProps:ee,getMarkerProps:_e,getInputProps:Ee}}function Ile(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function Mle(e,t){return t"}),[Dle,Bv]=Si({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),ZN=Ze((e,t)=>{var n;const r={...e,orientation:(n=e==null?void 0:e.orientation)!=null?n:"horizontal"},i=Ev("Slider",r),o=Ao(r),{direction:s}=wv();o.direction=s;const{getInputProps:a,getRootProps:l,...u}=Rle(o),c=l(),d=a({},t);return j.jsx(Nle,{value:u,children:j.jsx(Dle,{value:i,children:j.jsxs(Ae.div,{...c,className:cp("chakra-slider",r.className),__css:i.container,children:[r.children,j.jsx("input",{...d})]})})})});ZN.displayName="Slider";var JN=Ze((e,t)=>{const{getThumbProps:n}=Fv(),r=Bv(),i=n(e,t);return j.jsx(Ae.div,{...i,className:cp("chakra-slider__thumb",e.className),__css:r.thumb})});JN.displayName="SliderThumb";var eD=Ze((e,t)=>{const{getTrackProps:n}=Fv(),r=Bv(),i=n(e,t);return j.jsx(Ae.div,{...i,className:cp("chakra-slider__track",e.className),__css:r.track})});eD.displayName="SliderTrack";var tD=Ze((e,t)=>{const{getInnerTrackProps:n}=Fv(),r=Bv(),i=n(e,t);return j.jsx(Ae.div,{...i,className:cp("chakra-slider__filled-track",e.className),__css:r.filledTrack})});tD.displayName="SliderFilledTrack";var du=Ze((e,t)=>{const{getMarkerProps:n}=Fv(),r=Bv(),i=n(e,t);return j.jsx(Ae.div,{...i,className:cp("chakra-slider__marker",e.className),__css:r.mark})});du.displayName="SliderMark";var Lle={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]}}}},Ew=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},dm=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function $le(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:i,closeOnScroll:o,closeOnPointerDown:s=i,closeOnEsc:a=!0,onOpen:l,onClose:u,placement:c,id:d,isOpen:f,defaultIsOpen:h,arrowSize:p=10,arrowShadowColor:m,arrowPadding:S,modifiers:v,isDisabled:y,gutter:g,offset:b,direction:_,...w}=e,{isOpen:x,onOpen:C,onClose:k}=Yae({isOpen:f,defaultIsOpen:h,onOpen:l,onClose:u}),{referenceRef:P,getPopperProps:A,getArrowInnerProps:$,getArrowProps:N}=Wae({enabled:x,placement:c,arrowPadding:S,modifiers:v,gutter:g,offset:b,direction:_}),T=E.useId(),I=`tooltip-${d??T}`,M=E.useRef(null),R=E.useRef(),D=E.useCallback(()=>{R.current&&(clearTimeout(R.current),R.current=void 0)},[]),L=E.useRef(),V=E.useCallback(()=>{L.current&&(clearTimeout(L.current),L.current=void 0)},[]),z=E.useCallback(()=>{V(),k()},[k,V]),U=Fle(M,z),K=E.useCallback(()=>{if(!y&&!R.current){U();const Z=dm(M);R.current=Z.setTimeout(C,t)}},[U,y,C,t]),W=E.useCallback(()=>{D();const Z=dm(M);L.current=Z.setTimeout(z,n)},[n,z,D]),X=E.useCallback(()=>{x&&r&&W()},[r,W,x]),F=E.useCallback(()=>{x&&s&&W()},[s,W,x]),q=E.useCallback(Z=>{x&&Z.key==="Escape"&&W()},[x,W]);am(()=>Ew(M),"keydown",a?q:void 0),am(()=>{const Z=M.current;if(!Z)return null;const ge=AN(Z);return ge.localName==="body"?dm(M):ge},"scroll",()=>{x&&o&&z()},{passive:!0,capture:!0}),E.useEffect(()=>{y&&(D(),x&&k())},[y,x,k,D]),E.useEffect(()=>()=>{D(),V()},[D,V]),am(()=>M.current,"pointerleave",W);const Q=E.useCallback((Z={},ge=null)=>({...Z,ref:fi(M,ge,P),onPointerEnter:Dn(Z.onPointerEnter,oe=>{oe.pointerType!=="touch"&&K()}),onClick:Dn(Z.onClick,X),onPointerDown:Dn(Z.onPointerDown,F),onFocus:Dn(Z.onFocus,K),onBlur:Dn(Z.onBlur,W),"aria-describedby":x?I:void 0}),[K,W,F,x,I,X,P]),J=E.useCallback((Z={},ge=null)=>A({...Z,style:{...Z.style,[$n.arrowSize.var]:p?`${p}px`:void 0,[$n.arrowShadowColor.var]:m}},ge),[A,p,m]),ne=E.useCallback((Z={},ge=null)=>{const ae={...Z.style,position:"relative",transformOrigin:$n.transformOrigin.varRef};return{ref:ge,...w,...Z,id:I,role:"tooltip",style:ae}},[w,I]);return{isOpen:x,show:K,hide:W,getTriggerProps:Q,getTooltipProps:ne,getTooltipPositionerProps:J,getArrowProps:N,getArrowInnerProps:$}}var YS="chakra-ui:close-tooltip";function Fle(e,t){return E.useEffect(()=>{const n=Ew(e);return n.addEventListener(YS,t),()=>n.removeEventListener(YS,t)},[t,e]),()=>{const n=Ew(e),r=dm(e);n.dispatchEvent(new r.CustomEvent(YS))}}function Ble(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function jle(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var Vle=Ae(D5.div),Q5=Ze((e,t)=>{var n,r;const i=Ol("Tooltip",e),o=Ao(e),s=wv(),{children:a,label:l,shouldWrapChildren:u,"aria-label":c,hasArrow:d,bg:f,portalProps:h,background:p,backgroundColor:m,bgColor:S,motionProps:v,...y}=o,g=(r=(n=p??m)!=null?n:f)!=null?r:S;if(g){i.bg=g;const A=$ee(s,"colors",g);i[$n.arrowBg.var]=A}const b=$le({...y,direction:s.direction}),_=typeof a=="string"||u;let w;if(_)w=j.jsx(Ae.span,{display:"inline-block",tabIndex:0,...b.getTriggerProps(),children:a});else{const A=E.Children.only(a);w=E.cloneElement(A,b.getTriggerProps(A.props,A.ref))}const x=!!c,C=b.getTooltipProps({},t),k=x?Ble(C,["role","id"]):C,P=jle(C,["role","id"]);return l?j.jsxs(j.Fragment,{children:[w,j.jsx(L5,{children:b.isOpen&&j.jsx(tp,{...h,children:j.jsx(Ae.div,{...b.getTooltipPositionerProps(),__css:{zIndex:i.zIndex,pointerEvents:"none"},children:j.jsxs(Vle,{variants:Lle,initial:"exit",animate:"enter",exit:"exit",...v,...k,__css:i,children:[l,x&&j.jsx(Ae.span,{srOnly:!0,...P,children:c}),d&&j.jsx(Ae.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper",children:j.jsx(Ae.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:i.bg}})})]})})})})]}):j.jsx(j.Fragment,{children:a})});Q5.displayName="Tooltip";const nD={shift:!1},rD=zt({name:"hotkeys",initialState:nD,reducers:{shiftKeyPressed:(e,t)=>{e.shift=t.payload}}}),{shiftKeyPressed:T6}=rD.actions,zle=rD.reducer,wTe=e=>e.hotkeys;function Ule(){if(console&&console.warn){for(var e=arguments.length,t=new Array(e),n=0;n()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}};function P6(e,t,n){e.loadNamespaces(t,iD(e,n))}function k6(e,t,n,r){typeof n=="string"&&(n=[n]),n.forEach(i=>{e.options.ns.indexOf(i)<0&&e.options.ns.push(i)}),e.loadLanguages(t,iD(e,r))}function Gle(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const r=t.languages[0],i=t.options?t.options.fallbackLng:!1,o=t.languages[t.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const s=(a,l)=>{const u=t.services.backendConnector.state[`${a}|${l}`];return u===-1||u===2};return n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!s(t.isLanguageChangingTo,e)?!1:!!(t.hasResourceBundle(r,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||s(r,e)&&(!i||s(o,e)))}function Hle(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return!t.languages||!t.languages.length?(Pw("i18n.languages were undefined or empty",t.languages),!0):t.options.ignoreJSONStructure!==void 0?t.hasLoadedNamespace(e,{lng:n.lng,precheck:(i,o)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!o(i.isLanguageChangingTo,e))return!1}}):Gle(e,t,n)}const qle=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Wle={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},Kle=e=>Wle[e],Yle=e=>e.replace(qle,Kle);let kw={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Yle};function Xle(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};kw={...kw,...e}}function Qle(){return kw}let oD;function Zle(e){oD=e}function Jle(){return oD}const eue={type:"3rdParty",init(e){Xle(e.options.react),Zle(e)}},tue=E.createContext();class nue{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const rue=(e,t)=>{const n=E.useRef();return E.useEffect(()=>{n.current=t?n.current:e},[e,t]),n.current};function sD(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{i18n:n}=t,{i18n:r,defaultNS:i}=E.useContext(tue)||{},o=n||r||Jle();if(o&&!o.reportNamespaces&&(o.reportNamespaces=new nue),!o){Pw("You will need to pass in an i18next instance by using initReactI18next");const g=(_,w)=>typeof w=="string"?w:w&&typeof w=="object"&&typeof w.defaultValue=="string"?w.defaultValue:Array.isArray(_)?_[_.length-1]:_,b=[g,{},!1];return b.t=g,b.i18n={},b.ready=!1,b}o.options.react&&o.options.react.wait!==void 0&&Pw("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const s={...Qle(),...o.options.react,...t},{useSuspense:a,keyPrefix:l}=s;let u=e||i||o.options&&o.options.defaultNS;u=typeof u=="string"?[u]:u||["translation"],o.reportNamespaces.addUsedNamespaces&&o.reportNamespaces.addUsedNamespaces(u);const c=(o.isInitialized||o.initializedStoreOnce)&&u.every(g=>Hle(g,o,s));function d(){return o.getFixedT(t.lng||null,s.nsMode==="fallback"?u:u[0],l)}const[f,h]=E.useState(d);let p=u.join();t.lng&&(p=`${t.lng}${p}`);const m=rue(p),S=E.useRef(!0);E.useEffect(()=>{const{bindI18n:g,bindI18nStore:b}=s;S.current=!0,!c&&!a&&(t.lng?k6(o,t.lng,u,()=>{S.current&&h(d)}):P6(o,u,()=>{S.current&&h(d)})),c&&m&&m!==p&&S.current&&h(d);function _(){S.current&&h(d)}return g&&o&&o.on(g,_),b&&o&&o.store.on(b,_),()=>{S.current=!1,g&&o&&g.split(" ").forEach(w=>o.off(w,_)),b&&o&&b.split(" ").forEach(w=>o.store.off(w,_))}},[o,p]);const v=E.useRef(!0);E.useEffect(()=>{S.current&&!v.current&&h(d),v.current=!1},[o,l]);const y=[f,o,c];if(y.t=f,y.i18n=o,y.ready=c,c||!c&&!a)return y;throw new Promise(g=>{t.lng?k6(o,t.lng,u,()=>g()):P6(o,u,()=>g())})}var aD={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},A6=ze.createContext&&ze.createContext(aD),na=globalThis&&globalThis.__assign||function(){return na=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const{role:n,tooltip:r="",tooltipProps:i,isChecked:o,...s}=e;return j.jsx(Q5,{label:r,hasArrow:!0,...i,...i!=null&&i.placement?{placement:i.placement}:{placement:"top"},children:j.jsx(SN,{ref:t,role:n,colorScheme:o?"accent":"base",...s})})});uD.displayName="IAIIconButton";const lue=E.memo(uD),uue=e=>{const[t,n]=E.useState(!1),{label:r,value:i,min:o=1,max:s=100,step:a=1,onChange:l,tooltipSuffix:u="",withSliderMarks:c=!1,withInput:d=!1,isInteger:f=!1,inputWidth:h=16,withReset:p=!1,hideTooltip:m=!1,isCompact:S=!1,isDisabled:v=!1,sliderMarks:y,handleReset:g,sliderFormControlProps:b,sliderFormLabelProps:_,sliderMarkProps:w,sliderTrackProps:x,sliderThumbProps:C,sliderNumberInputProps:k,sliderNumberInputFieldProps:P,sliderNumberInputStepperProps:A,sliderTooltipProps:$,sliderIAIIconButtonProps:N,...T}=e,O=qc(),{t:I}=sD(),[M,R]=E.useState(String(i));E.useEffect(()=>{R(i)},[i]);const D=E.useMemo(()=>k!=null&&k.max?k.max:s,[s,k==null?void 0:k.max]),L=E.useCallback(F=>{l(F)},[l]),V=E.useCallback(F=>{F.target.value===""&&(F.target.value=String(o));const q=Xo(f?Math.floor(Number(F.target.value)):Number(M),o,D),Q=zd(q,a);l(Q),R(Q)},[f,M,o,D,l,a]),z=E.useCallback(F=>{console.log("input"),R(F)},[]),U=E.useCallback(()=>{g&&g()},[g]),K=E.useCallback(F=>{F.target instanceof HTMLDivElement&&F.target.focus()},[]),W=E.useCallback(F=>{F.shiftKey&&O(T6(!0))},[O]),X=E.useCallback(F=>{F.shiftKey||O(T6(!1))},[O]);return j.jsxs(wN,{onClick:K,sx:S?{display:"flex",flexDirection:"row",alignItems:"center",columnGap:4,margin:0,padding:0}:{},isDisabled:v,...b,children:[r&&j.jsx(xN,{sx:d?{mb:-1.5}:{},..._,children:r}),j.jsxs(IN,{w:"100%",gap:2,alignItems:"center",children:[j.jsxs(ZN,{"aria-label":r,value:i,min:o,max:s,step:a,onChange:L,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),focusThumbOnChange:!1,isDisabled:v,...T,children:[c&&!y&&j.jsxs(j.Fragment,{children:[j.jsx(du,{value:o,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...w,children:o}),j.jsx(du,{value:s,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...w,children:s})]}),c&&y&&j.jsx(j.Fragment,{children:y.map((F,q)=>q===0?j.jsx(du,{value:F,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...w,children:F},F):q===y.length-1?j.jsx(du,{value:F,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...w,children:F},F):j.jsx(du,{value:F,sx:{transform:"translateX(-50%)"},...w,children:F},F))}),j.jsx(eD,{...x,children:j.jsx(tD,{})}),j.jsx(Q5,{hasArrow:!0,placement:"top",isOpen:t,label:`${i}${u}`,hidden:m,...$,children:j.jsx(JN,{...C,zIndex:0})})]}),d&&j.jsxs(UN,{min:o,max:D,step:a,value:M,onChange:z,onBlur:V,focusInputOnChange:!1,...k,children:[j.jsx(HN,{onKeyDown:W,onKeyUp:X,minWidth:h,...P}),j.jsxs(GN,{...A,children:[j.jsx(KN,{onClick:()=>l(Number(M))}),j.jsx(WN,{onClick:()=>l(Number(M))})]})]}),p&&j.jsx(lue,{size:"sm","aria-label":I("accessibility.reset"),tooltip:I("accessibility.reset"),icon:j.jsx(aue,{}),isDisabled:v,onClick:U,...N})]})]})},cue=E.memo(uue),Hd={"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]}};function xTe(){const e=cy(l=>l.generation.clipSkip),{model:t}=cy(l=>l.generation),n=qc(),{t:r}=sD(),i=E.useCallback(l=>{n(I6(l))},[n]),o=E.useCallback(()=>{n(I6(0))},[n]),s=E.useMemo(()=>t?Hd[t.base_model].maxClip:Hd["sd-1"].maxClip,[t]),a=E.useMemo(()=>t?Hd[t.base_model].markers:Hd["sd-1"].markers,[t]);return j.jsx(cue,{label:r("parameters.clipSkip"),"aria-label":r("parameters.clipSkip"),min:0,max:s,step:1,value:e,onChange:i,withSliderMarks:!0,sliderMarks:a,withInput:!0,withReset:!0,handleReset:o})}var Qe;(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})(Qe||(Qe={}));var Aw;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(Aw||(Aw={}));const le=Qe.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),js=e=>{switch(typeof e){case"undefined":return le.undefined;case"string":return le.string;case"number":return isNaN(e)?le.nan:le.number;case"boolean":return le.boolean;case"function":return le.function;case"bigint":return le.bigint;case"symbol":return le.symbol;case"object":return Array.isArray(e)?le.array:e===null?le.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?le.promise:typeof Map<"u"&&e instanceof Map?le.map:typeof Set<"u"&&e instanceof Set?le.set:typeof Date<"u"&&e instanceof Date?le.date:le.object;default:return le.unknown}},re=Qe.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"]),due=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class $i 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()}}$i.create=e=>new $i(e);const oh=(e,t)=>{let n;switch(e.code){case re.invalid_type:e.received===le.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case re.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Qe.jsonStringifyReplacer)}`;break;case re.unrecognized_keys:n=`Unrecognized key(s) in object: ${Qe.joinValues(e.keys,", ")}`;break;case re.invalid_union:n="Invalid input";break;case re.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Qe.joinValues(e.options)}`;break;case re.invalid_enum_value:n=`Invalid enum value. Expected ${Qe.joinValues(e.options)}, received '${e.received}'`;break;case re.invalid_arguments:n="Invalid function arguments";break;case re.invalid_return_type:n="Invalid function return type";break;case re.invalid_date:n="Invalid date";break;case re.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}"`:Qe.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case re.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 re.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 re.custom:n="Invalid input";break;case re.invalid_intersection_types:n="Intersection results could not be merged";break;case re.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case re.not_finite:n="Number must be finite";break;default:n=t.defaultError,Qe.assertNever(e)}return{message:n}};let cD=oh;function fue(e){cD=e}function Ey(){return cD}const Py=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}},hue=[];function ce(e,t){const n=Py({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,Ey(),oh].filter(r=>!!r)});e.common.issues.push(n)}class er{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 Ce;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 er.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 Ce;o.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const Ce=Object.freeze({status:"aborted"}),dD=e=>({status:"dirty",value:e}),pr=e=>({status:"valid",value:e}),Ow=e=>e.status==="aborted",Rw=e=>e.status==="dirty",ky=e=>e.status==="valid",Ay=e=>typeof Promise<"u"&&e instanceof Promise;var be;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(be||(be={}));class xo{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 O6=(e,t)=>{if(ky(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 $i(e.common.issues);return this._error=n,this._error}}};function Oe(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 Re{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.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return js(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:js(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new er,ctx:{common:t.parent.common,data:t.data,parsedType:js(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(Ay(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:js(t)},o=this._parseSync({data:t,path:i.path,parent:i});return O6(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:js(t)},i=this._parse({data:t,path:r.path,parent:r}),o=await(Ay(i)?i:Promise.resolve(i));return O6(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:re.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 Ui({schema:this,typeName:xe.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return ns.create(this,this._def)}nullable(){return vl.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Fi.create(this,this._def)}promise(){return kc.create(this,this._def)}or(t){return uh.create([this,t],this._def)}and(t){return ch.create(this,t,this._def)}transform(t){return new Ui({...Oe(this._def),schema:this,typeName:xe.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new gh({...Oe(this._def),innerType:this,defaultValue:n,typeName:xe.ZodDefault})}brand(){return new hD({typeName:xe.ZodBranded,type:this,...Oe(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new My({...Oe(this._def),innerType:this,catchValue:n,typeName:xe.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return dp.create(this,t)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const pue=/^c[^\s-]{8,}$/i,gue=/^[a-z][a-z0-9]*$/,mue=/[0-9A-HJKMNP-TV-Z]{26}/,yue=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,vue=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((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}))\])|(\[IPv6:(([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})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,bue=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,Sue=/^(((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}))$/,_ue=/^(([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})))$/,wue=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 xue(e,t){return!!((t==="v4"||!t)&&Sue.test(e)||(t==="v6"||!t)&&_ue.test(e))}class Ii extends Re{constructor(){super(...arguments),this._regex=(t,n,r)=>this.refinement(i=>t.test(i),{validation:n,code:re.invalid_string,...be.errToObj(r)}),this.nonempty=t=>this.min(1,be.errToObj(t)),this.trim=()=>new Ii({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new Ii({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new Ii({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==le.string){const o=this._getOrReturnCtx(t);return ce(o,{code:re.invalid_type,expected:le.string,received:o.parsedType}),Ce}const r=new er;let i;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(i=this._getOrReturnCtx(t,i),ce(i,{code:re.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,...be.errToObj(t==null?void 0:t.message)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...be.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n==null?void 0:n.position,...be.errToObj(n==null?void 0:n.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...be.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...be.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...be.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...be.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...be.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 Ii({checks:[],typeName:xe.ZodString,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...Oe(e)})};function Cue(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 pa extends Re{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)!==le.number){const o=this._getOrReturnCtx(t);return ce(o,{code:re.invalid_type,expected:le.number,received:o.parsedType}),Ce}let r;const i=new er;for(const o of this._def.checks)o.kind==="int"?Qe.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),ce(r,{code:re.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),ce(r,{code:re.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?Cue(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),ce(r,{code:re.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),ce(r,{code:re.not_finite,message:o.message}),i.dirty()):Qe.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,be.toString(n))}gt(t,n){return this.setLimit("min",t,!1,be.toString(n))}lte(t,n){return this.setLimit("max",t,!0,be.toString(n))}lt(t,n){return this.setLimit("max",t,!1,be.toString(n))}setLimit(t,n,r,i){return new pa({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:be.toString(i)}]})}_addCheck(t){return new pa({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:be.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:be.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:be.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:be.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:be.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:be.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:be.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:be.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:be.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"&&Qe.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 pa({checks:[],typeName:xe.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...Oe(e)});class ga extends Re{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)!==le.bigint){const o=this._getOrReturnCtx(t);return ce(o,{code:re.invalid_type,expected:le.bigint,received:o.parsedType}),Ce}let r;const i=new er;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),ce(r,{code:re.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),ce(r,{code:re.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):Qe.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,be.toString(n))}gt(t,n){return this.setLimit("min",t,!1,be.toString(n))}lte(t,n){return this.setLimit("max",t,!0,be.toString(n))}lt(t,n){return this.setLimit("max",t,!1,be.toString(n))}setLimit(t,n,r,i){return new ga({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:be.toString(i)}]})}_addCheck(t){return new ga({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:be.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:be.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:be.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:be.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:be.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 ga({checks:[],typeName:xe.ZodBigInt,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...Oe(e)})};class sh extends Re{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==le.boolean){const r=this._getOrReturnCtx(t);return ce(r,{code:re.invalid_type,expected:le.boolean,received:r.parsedType}),Ce}return pr(t.data)}}sh.create=e=>new sh({typeName:xe.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...Oe(e)});class ml extends Re{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==le.date){const o=this._getOrReturnCtx(t);return ce(o,{code:re.invalid_type,expected:le.date,received:o.parsedType}),Ce}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return ce(o,{code:re.invalid_date}),Ce}const r=new er;let i;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(i=this._getOrReturnCtx(t,i),ce(i,{code:re.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Qe.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new ml({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:be.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:be.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 ml({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:xe.ZodDate,...Oe(e)});class Oy extends Re{_parse(t){if(this._getType(t)!==le.symbol){const r=this._getOrReturnCtx(t);return ce(r,{code:re.invalid_type,expected:le.symbol,received:r.parsedType}),Ce}return pr(t.data)}}Oy.create=e=>new Oy({typeName:xe.ZodSymbol,...Oe(e)});class ah extends Re{_parse(t){if(this._getType(t)!==le.undefined){const r=this._getOrReturnCtx(t);return ce(r,{code:re.invalid_type,expected:le.undefined,received:r.parsedType}),Ce}return pr(t.data)}}ah.create=e=>new ah({typeName:xe.ZodUndefined,...Oe(e)});class lh extends Re{_parse(t){if(this._getType(t)!==le.null){const r=this._getOrReturnCtx(t);return ce(r,{code:re.invalid_type,expected:le.null,received:r.parsedType}),Ce}return pr(t.data)}}lh.create=e=>new lh({typeName:xe.ZodNull,...Oe(e)});class Pc extends Re{constructor(){super(...arguments),this._any=!0}_parse(t){return pr(t.data)}}Pc.create=e=>new Pc({typeName:xe.ZodAny,...Oe(e)});class ol extends Re{constructor(){super(...arguments),this._unknown=!0}_parse(t){return pr(t.data)}}ol.create=e=>new ol({typeName:xe.ZodUnknown,...Oe(e)});class fs extends Re{_parse(t){const n=this._getOrReturnCtx(t);return ce(n,{code:re.invalid_type,expected:le.never,received:n.parsedType}),Ce}}fs.create=e=>new fs({typeName:xe.ZodNever,...Oe(e)});class Ry extends Re{_parse(t){if(this._getType(t)!==le.undefined){const r=this._getOrReturnCtx(t);return ce(r,{code:re.invalid_type,expected:le.void,received:r.parsedType}),Ce}return pr(t.data)}}Ry.create=e=>new Ry({typeName:xe.ZodVoid,...Oe(e)});class Fi extends Re{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),i=this._def;if(n.parsedType!==le.array)return ce(n,{code:re.invalid_type,expected:le.array,received:n.parsedType}),Ce;if(i.exactLength!==null){const s=n.data.length>i.exactLength.value,a=n.data.lengthi.maxLength.value&&(ce(n,{code:re.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 xo(n,s,n.path,a)))).then(s=>er.mergeArray(r,s));const o=[...n.data].map((s,a)=>i.type._parseSync(new xo(n,s,n.path,a)));return er.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new Fi({...this._def,minLength:{value:t,message:be.toString(n)}})}max(t,n){return new Fi({...this._def,maxLength:{value:t,message:be.toString(n)}})}length(t,n){return new Fi({...this._def,exactLength:{value:t,message:be.toString(n)}})}nonempty(t){return this.min(1,t)}}Fi.create=(e,t)=>new Fi({type:e,minLength:null,maxLength:null,exactLength:null,typeName:xe.ZodArray,...Oe(t)});function fu(e){if(e instanceof It){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=ns.create(fu(r))}return new It({...e._def,shape:()=>t})}else return e instanceof Fi?new Fi({...e._def,type:fu(e.element)}):e instanceof ns?ns.create(fu(e.unwrap())):e instanceof vl?vl.create(fu(e.unwrap())):e instanceof Co?Co.create(e.items.map(t=>fu(t))):e}class It extends Re{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=Qe.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==le.object){const u=this._getOrReturnCtx(t);return ce(u,{code:re.invalid_type,expected:le.object,received:u.parsedType}),Ce}const{status:r,ctx:i}=this._processInputParams(t),{shape:o,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof fs&&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 xo(i,d,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof fs){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&&(ce(i,{code:re.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 xo(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=>er.mergeObjectSync(r,u)):er.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return be.errToObj,new It({...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=be.errToObj(t).message)!==null&&a!==void 0?a:l}:{message:l}}}:{}})}strip(){return new It({...this._def,unknownKeys:"strip"})}passthrough(){return new It({...this._def,unknownKeys:"passthrough"})}extend(t){return new It({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new It({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:xe.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new It({...this._def,catchall:t})}pick(t){const n={};return Qe.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new It({...this._def,shape:()=>n})}omit(t){const n={};return Qe.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new It({...this._def,shape:()=>n})}deepPartial(){return fu(this)}partial(t){const n={};return Qe.objectKeys(this.shape).forEach(r=>{const i=this.shape[r];t&&!t[r]?n[r]=i:n[r]=i.optional()}),new It({...this._def,shape:()=>n})}required(t){const n={};return Qe.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof ns;)o=o._def.innerType;n[r]=o}}),new It({...this._def,shape:()=>n})}keyof(){return fD(Qe.objectKeys(this.shape))}}It.create=(e,t)=>new It({shape:()=>e,unknownKeys:"strip",catchall:fs.create(),typeName:xe.ZodObject,...Oe(t)});It.strictCreate=(e,t)=>new It({shape:()=>e,unknownKeys:"strict",catchall:fs.create(),typeName:xe.ZodObject,...Oe(t)});It.lazycreate=(e,t)=>new It({shape:e,unknownKeys:"strip",catchall:fs.create(),typeName:xe.ZodObject,...Oe(t)});class uh extends Re{_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 $i(a.ctx.common.issues));return ce(n,{code:re.invalid_union,unionErrors:s}),Ce}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 $i(l));return ce(n,{code:re.invalid_union,unionErrors:a}),Ce}}get options(){return this._def.options}}uh.create=(e,t)=>new uh({options:e,typeName:xe.ZodUnion,...Oe(t)});const fm=e=>e instanceof fh?fm(e.schema):e instanceof Ui?fm(e.innerType()):e instanceof hh?[e.value]:e instanceof ma?e.options:e instanceof ph?Object.keys(e.enum):e instanceof gh?fm(e._def.innerType):e instanceof ah?[void 0]:e instanceof lh?[null]:null;class jv extends Re{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==le.object)return ce(n,{code:re.invalid_type,expected:le.object,received:n.parsedType}),Ce;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}):(ce(n,{code:re.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),Ce)}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=fm(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 jv({typeName:xe.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...Oe(r)})}}function Iw(e,t){const n=js(e),r=js(t);if(e===t)return{valid:!0,data:e};if(n===le.object&&r===le.object){const i=Qe.objectKeys(t),o=Qe.objectKeys(e).filter(a=>i.indexOf(a)!==-1),s={...e,...t};for(const a of o){const l=Iw(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}else if(n===le.array&&r===le.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{if(Ow(o)||Ow(s))return Ce;const a=Iw(o.value,s.value);return a.valid?((Rw(o)||Rw(s))&&n.dirty(),{status:n.value,value:a.data}):(ce(r,{code:re.invalid_intersection_types}),Ce)};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}))}}ch.create=(e,t,n)=>new ch({left:e,right:t,typeName:xe.ZodIntersection,...Oe(n)});class Co extends Re{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==le.array)return ce(r,{code:re.invalid_type,expected:le.array,received:r.parsedType}),Ce;if(r.data.lengththis._def.items.length&&(ce(r,{code:re.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 xo(r,s,r.path,a)):null}).filter(s=>!!s);return r.common.async?Promise.all(o).then(s=>er.mergeArray(n,s)):er.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new Co({...this._def,rest:t})}}Co.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Co({items:e,typeName:xe.ZodTuple,rest:null,...Oe(t)})};class dh extends Re{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!==le.object)return ce(r,{code:re.invalid_type,expected:le.object,received:r.parsedType}),Ce;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new xo(r,a,r.path,a)),value:s._parse(new xo(r,r.data[a],r.path,a))});return r.common.async?er.mergeObjectAsync(n,i):er.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof Re?new dh({keyType:t,valueType:n,typeName:xe.ZodRecord,...Oe(r)}):new dh({keyType:Ii.create(),valueType:t,typeName:xe.ZodRecord,...Oe(n)})}}class Iy extends Re{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==le.map)return ce(r,{code:re.invalid_type,expected:le.map,received:r.parsedType}),Ce;const i=this._def.keyType,o=this._def.valueType,s=[...r.data.entries()].map(([a,l],u)=>({key:i._parse(new xo(r,a,r.path,[u,"key"])),value:o._parse(new xo(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 Ce;(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 Ce;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}}}}Iy.create=(e,t,n)=>new Iy({valueType:t,keyType:e,typeName:xe.ZodMap,...Oe(n)});class yl extends Re{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==le.set)return ce(r,{code:re.invalid_type,expected:le.set,received:r.parsedType}),Ce;const i=this._def;i.minSize!==null&&r.data.sizei.maxSize.value&&(ce(r,{code:re.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 Ce;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 xo(r,l,r.path,u)));return r.common.async?Promise.all(a).then(l=>s(l)):s(a)}min(t,n){return new yl({...this._def,minSize:{value:t,message:be.toString(n)}})}max(t,n){return new yl({...this._def,maxSize:{value:t,message:be.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}yl.create=(e,t)=>new yl({valueType:e,minSize:null,maxSize:null,typeName:xe.ZodSet,...Oe(t)});class Qu extends Re{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==le.function)return ce(n,{code:re.invalid_type,expected:le.function,received:n.parsedType}),Ce;function r(a,l){return Py({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Ey(),oh].filter(u=>!!u),issueData:{code:re.invalid_arguments,argumentsError:l}})}function i(a,l){return Py({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Ey(),oh].filter(u=>!!u),issueData:{code:re.invalid_return_type,returnTypeError:l}})}const o={errorMap:n.common.contextualErrorMap},s=n.data;return this._def.returns instanceof kc?pr(async(...a)=>{const l=new $i([]),u=await this._def.args.parseAsync(a,o).catch(f=>{throw l.addIssue(r(a,f)),l}),c=await s(...u);return await this._def.returns._def.type.parseAsync(c,o).catch(f=>{throw l.addIssue(i(c,f)),l})}):pr((...a)=>{const l=this._def.args.safeParse(a,o);if(!l.success)throw new $i([r(a,l.error)]);const u=s(...l.data),c=this._def.returns.safeParse(u,o);if(!c.success)throw new $i([i(u,c.error)]);return c.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new Qu({...this._def,args:Co.create(t).rest(ol.create())})}returns(t){return new Qu({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new Qu({args:t||Co.create([]).rest(ol.create()),returns:n||ol.create(),typeName:xe.ZodFunction,...Oe(r)})}}class fh extends Re{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})}}fh.create=(e,t)=>new fh({getter:e,typeName:xe.ZodLazy,...Oe(t)});class hh extends Re{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return ce(n,{received:n.data,code:re.invalid_literal,expected:this._def.value}),Ce}return{status:"valid",value:t.data}}get value(){return this._def.value}}hh.create=(e,t)=>new hh({value:e,typeName:xe.ZodLiteral,...Oe(t)});function fD(e,t){return new ma({values:e,typeName:xe.ZodEnum,...Oe(t)})}class ma extends Re{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return ce(n,{expected:Qe.joinValues(r),received:n.parsedType,code:re.invalid_type}),Ce}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return ce(n,{received:n.data,code:re.invalid_enum_value,options:r}),Ce}return pr(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 ma.create(t)}exclude(t){return ma.create(this.options.filter(n=>!t.includes(n)))}}ma.create=fD;class ph extends Re{_parse(t){const n=Qe.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==le.string&&r.parsedType!==le.number){const i=Qe.objectValues(n);return ce(r,{expected:Qe.joinValues(i),received:r.parsedType,code:re.invalid_type}),Ce}if(n.indexOf(t.data)===-1){const i=Qe.objectValues(n);return ce(r,{received:r.data,code:re.invalid_enum_value,options:i}),Ce}return pr(t.data)}get enum(){return this._def.values}}ph.create=(e,t)=>new ph({values:e,typeName:xe.ZodNativeEnum,...Oe(t)});class kc extends Re{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==le.promise&&n.common.async===!1)return ce(n,{code:re.invalid_type,expected:le.promise,received:n.parsedType}),Ce;const r=n.parsedType===le.promise?n.data:Promise.resolve(n.data);return pr(r.then(i=>this._def.type.parseAsync(i,{path:n.path,errorMap:n.common.contextualErrorMap})))}}kc.create=(e,t)=>new kc({type:e,typeName:xe.ZodPromise,...Oe(t)});class Ui extends Re{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===xe.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),i=this._def.effect||null;if(i.type==="preprocess"){const s=i.transform(r.data);return 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})}const o={addIssue:s=>{ce(r,s),s.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),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"?Ce:(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"?Ce:(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(!ky(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=>ky(s)?Promise.resolve(i.transform(s.value,o)).then(a=>({status:n.value,value:a})):s);Qe.assertNever(i)}}Ui.create=(e,t,n)=>new Ui({schema:e,typeName:xe.ZodEffects,effect:t,...Oe(n)});Ui.createWithPreprocess=(e,t,n)=>new Ui({schema:t,effect:{type:"preprocess",transform:e},typeName:xe.ZodEffects,...Oe(n)});class ns extends Re{_parse(t){return this._getType(t)===le.undefined?pr(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}ns.create=(e,t)=>new ns({innerType:e,typeName:xe.ZodOptional,...Oe(t)});class vl extends Re{_parse(t){return this._getType(t)===le.null?pr(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}vl.create=(e,t)=>new vl({innerType:e,typeName:xe.ZodNullable,...Oe(t)});class gh extends Re{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===le.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}gh.create=(e,t)=>new gh({innerType:e,typeName:xe.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...Oe(t)});class My extends Re{_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 Ay(i)?i.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new $i(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new $i(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}My.create=(e,t)=>new My({innerType:e,typeName:xe.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...Oe(t)});class Ny extends Re{_parse(t){if(this._getType(t)!==le.nan){const r=this._getOrReturnCtx(t);return ce(r,{code:re.invalid_type,expected:le.nan,received:r.parsedType}),Ce}return{status:"valid",value:t.data}}}Ny.create=e=>new Ny({typeName:xe.ZodNaN,...Oe(e)});const Tue=Symbol("zod_brand");class hD extends Re{_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 dp extends Re{_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"?Ce:o.status==="dirty"?(n.dirty(),dD(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"?Ce: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 dp({in:t,out:n,typeName:xe.ZodPipeline})}}const pD=(e,t={},n)=>e?Pc.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})}}):Pc.create(),Eue={object:It.lazycreate};var xe;(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"})(xe||(xe={}));const Pue=(e,t={message:`Input not instance of ${e.name}`})=>pD(n=>n instanceof e,t),gD=Ii.create,mD=pa.create,kue=Ny.create,Aue=ga.create,yD=sh.create,Oue=ml.create,Rue=Oy.create,Iue=ah.create,Mue=lh.create,Nue=Pc.create,Due=ol.create,Lue=fs.create,$ue=Ry.create,Fue=Fi.create,Bue=It.create,jue=It.strictCreate,Vue=uh.create,zue=jv.create,Uue=ch.create,Gue=Co.create,Hue=dh.create,que=Iy.create,Wue=yl.create,Kue=Qu.create,Yue=fh.create,Xue=hh.create,Que=ma.create,Zue=ph.create,Jue=kc.create,R6=Ui.create,ece=ns.create,tce=vl.create,nce=Ui.createWithPreprocess,rce=dp.create,ice=()=>gD().optional(),oce=()=>mD().optional(),sce=()=>yD().optional(),ace={string:e=>Ii.create({...e,coerce:!0}),number:e=>pa.create({...e,coerce:!0}),boolean:e=>sh.create({...e,coerce:!0}),bigint:e=>ga.create({...e,coerce:!0}),date:e=>ml.create({...e,coerce:!0})},lce=Ce;var Pn=Object.freeze({__proto__:null,defaultErrorMap:oh,setErrorMap:fue,getErrorMap:Ey,makeIssue:Py,EMPTY_PATH:hue,addIssueToContext:ce,ParseStatus:er,INVALID:Ce,DIRTY:dD,OK:pr,isAborted:Ow,isDirty:Rw,isValid:ky,isAsync:Ay,get util(){return Qe},get objectUtil(){return Aw},ZodParsedType:le,getParsedType:js,ZodType:Re,ZodString:Ii,ZodNumber:pa,ZodBigInt:ga,ZodBoolean:sh,ZodDate:ml,ZodSymbol:Oy,ZodUndefined:ah,ZodNull:lh,ZodAny:Pc,ZodUnknown:ol,ZodNever:fs,ZodVoid:Ry,ZodArray:Fi,ZodObject:It,ZodUnion:uh,ZodDiscriminatedUnion:jv,ZodIntersection:ch,ZodTuple:Co,ZodRecord:dh,ZodMap:Iy,ZodSet:yl,ZodFunction:Qu,ZodLazy:fh,ZodLiteral:hh,ZodEnum:ma,ZodNativeEnum:ph,ZodPromise:kc,ZodEffects:Ui,ZodTransformer:Ui,ZodOptional:ns,ZodNullable:vl,ZodDefault:gh,ZodCatch:My,ZodNaN:Ny,BRAND:Tue,ZodBranded:hD,ZodPipeline:dp,custom:pD,Schema:Re,ZodSchema:Re,late:Eue,get ZodFirstPartyTypeKind(){return xe},coerce:ace,any:Nue,array:Fue,bigint:Aue,boolean:yD,date:Oue,discriminatedUnion:zue,effect:R6,enum:Que,function:Kue,instanceof:Pue,intersection:Uue,lazy:Yue,literal:Xue,map:que,nan:kue,nativeEnum:Zue,never:Lue,null:Mue,nullable:tce,number:mD,object:Bue,oboolean:sce,onumber:oce,optional:ece,ostring:ice,pipeline:rce,preprocess:nce,promise:Jue,record:Hue,set:Wue,strictObject:jue,string:gD,symbol:Rue,transformer:R6,tuple:Gue,undefined:Iue,union:Vue,unknown:Due,void:$ue,NEVER:lce,ZodIssueCode:re,quotelessJson:due,ZodError:$i});const uce=Pn.string(),CTe=e=>uce.safeParse(e).success,cce=Pn.string(),TTe=e=>cce.safeParse(e).success,dce=Pn.number().int().min(1),ETe=e=>dce.safeParse(e).success,fce=Pn.number().min(1),PTe=e=>fce.safeParse(e).success,hce=Pn.enum(f7),kTe=e=>hce.safeParse(e).success,pce=Pn.number().int().min(0).max(yZ),ATe=e=>pce.safeParse(e).success,gce=Pn.number().multipleOf(8).min(64),OTe=e=>gce.safeParse(e).success,mce=Pn.number().multipleOf(8).min(64),RTe=e=>mce.safeParse(e).success,Vv=Pn.enum(["sd-1","sd-2","sdxl","sdxl-refiner"]),zv=Pn.object({model_name:Pn.string().min(1),base_model:Vv}),ITe=e=>zv.safeParse(e).success,yce=Pn.object({model_name:Pn.string().min(1),base_model:Vv}),MTe=Pn.object({model_name:Pn.string().min(1),base_model:Vv}),NTe=Pn.object({model_name:Pn.string().min(1),base_model:Vv}),vce=Pn.number().min(0).max(1),DTe=e=>vce.safeParse(e).success,Nl={cfgScale:7.5,height:512,img2imgStrength:.75,infillMethod:"patchmatch",iterations:1,perlin:0,positivePrompt:"",negativePrompt:"",scheduler:mZ,seamBlur:16,seamSize:96,seamSteps:30,seamStrength:.7,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,seamlessXAxis:!1,seamlessYAxis:!1,clipSkip:0,shouldUseCpuNoise:!0},bce=Nl,vD=zt({name:"generation",initialState:bce,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=Xo(e.horizontalSymmetrySteps,0,e.steps),e.verticalSymmetrySteps=Xo(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,...Nl}),setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setSeamSize:(e,t)=>{e.seamSize=t.payload},setSeamBlur:(e,t)=>{e.seamBlur=t.payload},setSeamStrength:(e,t)=>{e.seamStrength=t.payload},setSeamSteps:(e,t)=>{e.seamSteps=t.payload},setTileSize:(e,t)=>{e.tileSize=t.payload},setInfillMethod:(e,t)=>{e.infillMethod=t.payload},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}=Hd[e.model.base_model];e.clipSkip=Xo(e.clipSkip,0,n)},vaeSelected:(e,t)=>{e.vae=t.payload},setClipSkip:(e,t)=>{e.clipSkip=t.payload},shouldUseCpuNoiseChanged:(e,t)=>{e.shouldUseCpuNoise=t.payload}},extraReducers:e=>{e.addCase(vZ,(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=zv.safeParse({model_name:a,base_model:o});l.success&&(t.model=l.data)}}),e.addCase(Tce,(t,n)=>{n.payload||(t.clipSkip=0)}),e.addCase(xD,(t,n)=>{const r=n.payload;r&&(t.height=io(t.width/r,8))})}}),{clampSymmetrySteps:LTe,clearInitialImage:bD,resetParametersState:$Te,resetSeed:FTe,setCfgScale:BTe,setWidth:jTe,setHeight:VTe,toggleSize:zTe,setImg2imgStrength:UTe,setInfillMethod:Sce,setIterations:GTe,setPerlin:HTe,setPositivePrompt:qTe,setNegativePrompt:WTe,setScheduler:KTe,setSeamBlur:YTe,setSeamSize:XTe,setSeamSteps:QTe,setSeamStrength:ZTe,setSeed:JTe,setSeedWeights:eEe,setShouldFitToWidthHeight:tEe,setShouldGenerateVariations:nEe,setShouldRandomizeSeed:rEe,setSteps:iEe,setThreshold:oEe,setTileSize:sEe,setVariationAmount:aEe,setShouldUseSymmetry:lEe,setHorizontalSymmetrySteps:uEe,setVerticalSymmetrySteps:cEe,initialImageChanged:Uv,modelChanged:hm,vaeSelected:SD,setShouldUseNoiseSettings:dEe,setSeamlessXAxis:fEe,setSeamlessYAxis:hEe,setClipSkip:I6,shouldUseCpuNoiseChanged:pEe}=vD.actions,_ce=vD.reducer,wce=["txt2img","img2img","unifiedCanvas","nodes","modelManager","batch"],M6=(e,t)=>{typeof t=="number"?e.activeTab=t:e.activeTab=wce.indexOf(t)},_D={activeTab:0,shouldPinParametersPanel:!0,shouldShowParametersPanel:!0,shouldShowImageDetails:!1,shouldUseCanvasBetaLayout:!1,shouldShowExistingModelsInSearch:!1,shouldUseSliders:!1,addNewModelUIOption:null,shouldPinGallery:!0,shouldShowGallery:!0,shouldHidePreview:!1,shouldShowProgressInViewer:!0,shouldShowEmbeddingPicker:!1,shouldShowAdvancedOptions:!1,aspectRatio:null,favoriteSchedulers:[]},wD=zt({name:"ui",initialState:_D,reducers:{setActiveTab:(e,t)=>{M6(e,t.payload)},setShouldPinParametersPanel:(e,t)=>{e.shouldPinParametersPanel=t.payload,e.shouldShowParametersPanel=!0},setShouldShowParametersPanel:(e,t)=>{e.shouldShowParametersPanel=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},setAddNewModelUIOption:(e,t)=>{e.addNewModelUIOption=t.payload},setShouldShowGallery:(e,t)=>{e.shouldShowGallery=t.payload},togglePinGalleryPanel:e=>{e.shouldPinGallery=!e.shouldPinGallery,e.shouldPinGallery||(e.shouldShowGallery=!0)},togglePinParametersPanel:e=>{e.shouldPinParametersPanel=!e.shouldPinParametersPanel,e.shouldPinParametersPanel||(e.shouldShowParametersPanel=!0)},toggleParametersPanel:e=>{e.shouldShowParametersPanel=!e.shouldShowParametersPanel},toggleGalleryPanel:e=>{e.shouldShowGallery=!e.shouldShowGallery},togglePanels:e=>{e.shouldShowGallery||e.shouldShowParametersPanel?(e.shouldShowGallery=!1,e.shouldShowParametersPanel=!1):(e.shouldShowGallery=!0,e.shouldShowParametersPanel=!0)},setShouldShowProgressInViewer:(e,t)=>{e.shouldShowProgressInViewer=t.payload},favoriteSchedulersChanged:(e,t)=>{e.favoriteSchedulers=t.payload},toggleEmbeddingPicker:e=>{e.shouldShowEmbeddingPicker=!e.shouldShowEmbeddingPicker},setShouldShowAdvancedOptions:(e,t)=>{e.shouldShowAdvancedOptions=t.payload},setAspectRatio:(e,t)=>{e.aspectRatio=t.payload}},extraReducers(e){e.addCase(Uv,t=>{M6(t,"img2img")})}}),{setActiveTab:xce,setShouldPinParametersPanel:gEe,setShouldShowParametersPanel:mEe,setShouldShowImageDetails:yEe,setShouldUseCanvasBetaLayout:Cce,setShouldShowExistingModelsInSearch:vEe,setShouldUseSliders:bEe,setAddNewModelUIOption:SEe,setShouldHidePreview:_Ee,setShouldShowGallery:wEe,togglePanels:xEe,togglePinGalleryPanel:CEe,togglePinParametersPanel:TEe,toggleParametersPanel:EEe,toggleGalleryPanel:PEe,setShouldShowProgressInViewer:kEe,favoriteSchedulersChanged:AEe,toggleEmbeddingPicker:OEe,setShouldShowAdvancedOptions:Tce,setAspectRatio:xD}=wD.actions,Ece=wD.reducer,Gv=Vf.withTypes(),Kc={memoizeOptions:{resultEqualityCheck:n7}},Hv=e=>e.system,Pce=e=>e.system.toastQueue;Vn(Hv,e=>{const{model_list:t}=e,n=vv(t,(r,i,o)=>(i.status==="active"&&(r=o),r),"");return{...t[n],name:n}},Kc);Vn(Hv,e=>{const{model_list:t}=e;return UQ(t,(r,i)=>{if(r.format==="diffusers")return{name:i,...r}})},Kc);const REe=Vn(Hv,e=>e.language,Kc),IEe=Vn(e=>e,e=>e.system.isProcessing||!e.system.isConnected);var Ac={},CD={},bl={};Object.defineProperty(bl,"__esModule",{value:!0});bl.ROARR_LOG_FORMAT_VERSION=bl.ROARR_VERSION=void 0;bl.ROARR_VERSION="5.0.0";bl.ROARR_LOG_FORMAT_VERSION="2.0.0";var fp={};Object.defineProperty(fp,"__esModule",{value:!0});fp.logLevels=void 0;fp.logLevels={debug:20,error:50,fatal:60,info:30,trace:10,warn:40};var TD={},qv={};Object.defineProperty(qv,"__esModule",{value:!0});qv.hasOwnProperty=void 0;const kce=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);qv.hasOwnProperty=kce;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hasOwnProperty=void 0;var t=qv;Object.defineProperty(e,"hasOwnProperty",{enumerable:!0,get:function(){return t.hasOwnProperty}})})(TD);var ED={},Wv={},Z5={},Kv={};Object.defineProperty(Kv,"__esModule",{value:!0});Kv.boolean=void 0;const Ace=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}};Kv.boolean=Ace;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0});Yv.isBooleanable=void 0;const Oce=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}};Yv.isBooleanable=Oce;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isBooleanable=e.boolean=void 0;const t=Kv;Object.defineProperty(e,"boolean",{enumerable:!0,get:function(){return t.boolean}});const n=Yv;Object.defineProperty(e,"isBooleanable",{enumerable:!0,get:function(){return n.isBooleanable}})})(Z5);var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0});Xv.tokenize=void 0;const Rce=/(?:%(?([+0-]|-\+))?(?\d+)?(?\d+\$)?(?\.\d+)?(?[%BCESb-iosux]))|(\\%)/g,Ice=e=>{let t;const n=[];let r=0,i=0,o=null;for(;(t=Rce.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};Xv.tokenize=Ice;Object.defineProperty(Wv,"__esModule",{value:!0});Wv.createPrintf=void 0;const N6=Z5,Mce=Xv,Nce=(e,t)=>t.placeholder,Dce=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:Nce,i={};return(o,...s)=>{let a=i[o];a||(a=i[o]=Mce.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+=N6.boolean(c)?"true":"false";else if(u.conversion==="B")l+=N6.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}};Wv.createPrintf=Dce;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.printf=e.createPrintf=void 0;const t=Wv;Object.defineProperty(e,"createPrintf",{enumerable:!0,get:function(){return t.createPrintf}}),e.printf=t.createPrintf()})(ED);var D6=Object.prototype.toString,PD=function(t){var n=D6.call(t),r=n==="[object Arguments]";return r||(r=n!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&D6.call(t.callee)==="[object Function]"),r},XS,L6;function Lce(){if(L6)return XS;L6=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=PD,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]",S=r(h),v=p&&n.call(h)==="[object String]",y=[];if(!p&&!m&&!S)throw new TypeError("Object.keys called on a non-object");var g=s&&m;if(v&&h.length>0&&!t.call(h,0))for(var b=0;b0)for(var _=0;_"u"||!Sn?Ve:Sn(Uint8Array),al={"%AggregateError%":typeof AggregateError>"u"?Ve:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ve:ArrayBuffer,"%ArrayIteratorPrototype%":Zl&&Sn?Sn([][Symbol.iterator]()):Ve,"%AsyncFromSyncIteratorPrototype%":Ve,"%AsyncFunction%":hu,"%AsyncGenerator%":hu,"%AsyncGeneratorFunction%":hu,"%AsyncIteratorPrototype%":hu,"%Atomics%":typeof Atomics>"u"?Ve:Atomics,"%BigInt%":typeof BigInt>"u"?Ve:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ve:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ve:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ve:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?Ve:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ve:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ve:FinalizationRegistry,"%Function%":AD,"%GeneratorFunction%":hu,"%Int8Array%":typeof Int8Array>"u"?Ve:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ve:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ve:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Zl&&Sn?Sn(Sn([][Symbol.iterator]())):Ve,"%JSON%":typeof JSON=="object"?JSON:Ve,"%Map%":typeof Map>"u"?Ve:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Zl||!Sn?Ve:Sn(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ve:Promise,"%Proxy%":typeof Proxy>"u"?Ve:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?Ve:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ve:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Zl||!Sn?Ve:Sn(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ve:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Zl&&Sn?Sn(""[Symbol.iterator]()):Ve,"%Symbol%":Zl?Symbol:Ve,"%SyntaxError%":Oc,"%ThrowTypeError%":Zce,"%TypedArray%":ede,"%TypeError%":Zu,"%Uint8Array%":typeof Uint8Array>"u"?Ve:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ve:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ve:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ve:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?Ve:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ve:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ve:WeakSet};if(Sn)try{null.error}catch(e){var tde=Sn(Sn(e));al["%Error.prototype%"]=tde}var nde=function e(t){var n;if(t==="%AsyncFunction%")n=ZS("async function () {}");else if(t==="%GeneratorFunction%")n=ZS("function* () {}");else if(t==="%AsyncGeneratorFunction%")n=ZS("async function* () {}");else if(t==="%AsyncGenerator%"){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Sn&&(n=Sn(i.prototype))}return al[t]=n,n},V6={"%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"]},hp=kD,Dy=Qce,rde=hp.call(Function.call,Array.prototype.concat),ide=hp.call(Function.apply,Array.prototype.splice),z6=hp.call(Function.call,String.prototype.replace),Ly=hp.call(Function.call,String.prototype.slice),ode=hp.call(Function.call,RegExp.prototype.exec),sde=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ade=/\\(\\)?/g,lde=function(t){var n=Ly(t,0,1),r=Ly(t,-1);if(n==="%"&&r!=="%")throw new Oc("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new Oc("invalid intrinsic syntax, expected opening `%`");var i=[];return z6(t,sde,function(o,s,a,l){i[i.length]=a?z6(l,ade,"$1"):s||o}),i},ude=function(t,n){var r=t,i;if(Dy(V6,r)&&(i=V6[r],r="%"+i[0]+"%"),Dy(al,r)){var o=al[r];if(o===hu&&(o=nde(r)),typeof o>"u"&&!n)throw new Zu("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:r,value:o}}throw new Oc("intrinsic "+t+" does not exist!")},cde=function(t,n){if(typeof t!="string"||t.length===0)throw new Zu("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new Zu('"allowMissing" argument must be a boolean');if(ode(/^%?[^%]*%?$/,t)===null)throw new Oc("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=lde(t),i=r.length>0?r[0]:"",o=ude("%"+i+"%",n),s=o.name,a=o.value,l=!1,u=o.alias;u&&(i=u[0],ide(r,rde([0,1],u)));for(var c=1,d=!0;c=r.length){var m=sl(a,f);d=!!m,d&&"get"in m&&!("originalValue"in m.get)?a=m.get:a=a[f]}else d=Dy(a,f),a=a[f];d&&!l&&(al[s]=a)}}return a},dde=cde,Mw=dde("%Object.defineProperty%",!0),Nw=function(){if(Mw)try{return Mw({},"a",{value:1}),!0}catch{return!1}return!1};Nw.hasArrayLengthDefineBug=function(){if(!Nw())return null;try{return Mw([],"length",{value:1}).length!==1}catch{return!0}};var fde=Nw,hde=Bce,pde=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",gde=Object.prototype.toString,mde=Array.prototype.concat,OD=Object.defineProperty,yde=function(e){return typeof e=="function"&&gde.call(e)==="[object Function]"},vde=fde(),RD=OD&&vde,bde=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!yde(r)||!r())return}RD?OD(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n},ID=function(e,t){var n=arguments.length>2?arguments[2]:{},r=hde(t);pde&&(r=mde.call(r,Object.getOwnPropertySymbols(t)));for(var i=0;i200)return v.sort();for(let y=1;yg;)v[b]=v[b-1],b--;v[b]=g}return v}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function l(v){return a.call(v)!==void 0&&v.length!==0}function u(v,y,g){v.length= 1`)}return g===void 0?1/0:g}function h(v){return v===1?"1 item":`${v} items`}function p(v){const y=new Set;for(const g of v)(typeof g=="string"||typeof g=="number")&&y.add(String(g));return y}function m(v){if(n.call(v,"strict")){const y=v.strict;if(typeof y!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(y)return g=>{let b=`Object can not safely be stringified. Received type ${typeof g}`;throw typeof g!="function"&&(b+=` (${g.toString()})`),new Error(b)}}}function S(v){v={...v};const y=m(v);y&&(v.bigint===void 0&&(v.bigint=!1),"circularValue"in v||(v.circularValue=Error));const g=c(v),b=d(v,"bigint"),_=d(v,"deterministic"),w=f(v,"maximumDepth"),x=f(v,"maximumBreadth");function C(N,T,O,I,M,R){let D=T[N];switch(typeof D=="object"&&D!==null&&typeof D.toJSON=="function"&&(D=D.toJSON(N)),D=I.call(T,N,D),typeof D){case"string":return o(D);case"object":{if(D===null)return"null";if(O.indexOf(D)!==-1)return g;let L="",V=",";const z=R;if(Array.isArray(D)){if(D.length===0)return"[]";if(wx){const ne=D.length-x-1;L+=`${V}"... ${h(ne)} not stringified"`}return M!==""&&(L+=` -${z}`),O.pop(),`[${L}]`}let U=Object.keys(D);const K=U.length;if(K===0)return"{}";if(wx){const q=K-x;L+=`${X}"...":${W}"${h(q)} not stringified"`,X=V}return M!==""&&X.length>1&&(L=` -${R}${L} -${z}`),O.pop(),`{${L}}`}case"number":return isFinite(D)?String(D):y?y(D):"null";case"boolean":return D===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(D);default:return y?y(D):void 0}}function k(N,T,O,I,M,R){switch(typeof T=="object"&&T!==null&&typeof T.toJSON=="function"&&(T=T.toJSON(N)),typeof T){case"string":return o(T);case"object":{if(T===null)return"null";if(O.indexOf(T)!==-1)return g;const D=R;let L="",V=",";if(Array.isArray(T)){if(T.length===0)return"[]";if(wx){const F=T.length-x-1;L+=`${V}"... ${h(F)} not stringified"`}return M!==""&&(L+=` -${D}`),O.pop(),`[${L}]`}O.push(T);let z="";M!==""&&(R+=M,V=`, -${R}`,z=" ");let U="";for(const K of I){const W=k(K,T[K],O,I,M,R);W!==void 0&&(L+=`${U}${o(K)}:${z}${W}`,U=V)}return M!==""&&U.length>1&&(L=` -${R}${L} -${D}`),O.pop(),`{${L}}`}case"number":return isFinite(T)?String(T):y?y(T):"null";case"boolean":return T===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(T);default:return y?y(T):void 0}}function P(N,T,O,I,M){switch(typeof T){case"string":return o(T);case"object":{if(T===null)return"null";if(typeof T.toJSON=="function"){if(T=T.toJSON(N),typeof T!="object")return P(N,T,O,I,M);if(T===null)return"null"}if(O.indexOf(T)!==-1)return g;const R=M;if(Array.isArray(T)){if(T.length===0)return"[]";if(wx){const J=T.length-x-1;W+=`${X}"... ${h(J)} not stringified"`}return W+=` -${R}`,O.pop(),`[${W}]`}let D=Object.keys(T);const L=D.length;if(L===0)return"{}";if(wx){const W=L-x;z+=`${U}"...": "${h(W)} not stringified"`,U=V}return U!==""&&(z=` -${M}${z} -${R}`),O.pop(),`{${z}}`}case"number":return isFinite(T)?String(T):y?y(T):"null";case"boolean":return T===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(T);default:return y?y(T):void 0}}function A(N,T,O){switch(typeof T){case"string":return o(T);case"object":{if(T===null)return"null";if(typeof T.toJSON=="function"){if(T=T.toJSON(N),typeof T!="object")return A(N,T,O);if(T===null)return"null"}if(O.indexOf(T)!==-1)return g;let I="";if(Array.isArray(T)){if(T.length===0)return"[]";if(wx){const K=T.length-x-1;I+=`,"... ${h(K)} not stringified"`}return O.pop(),`[${I}]`}let M=Object.keys(T);const R=M.length;if(R===0)return"{}";if(wx){const V=R-x;I+=`${D}"...":"${h(V)} not stringified"`}return O.pop(),`{${I}}`}case"number":return isFinite(T)?String(T):y?y(T):"null";case"boolean":return T===!0?"true":"false";case"undefined":return;case"bigint":if(b)return String(T);default:return y?y(T):void 0}}function $(N,T,O){if(arguments.length>1){let I="";if(typeof O=="number"?I=" ".repeat(Math.min(O,10)):typeof O=="string"&&(I=O.slice(0,10)),T!=null){if(typeof T=="function")return C("",{"":N},[],T,I,"");if(Array.isArray(T))return k("",N,[],p(T),I,"")}if(I.length!==0)return P("",N,[],I,"")}return A("",N,[])}return $}})(Dw,Dw.exports);var kde=Dw.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=bl,r=fp,i=TD,o=ED,s=t(J5),a=t(kde);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 b=g.getStore();return b||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,b)=>(_,w,x,C,k,P,A,$,N,T)=>{g.child({logLevel:b})(_,w,x,C,k,P,A,$,N,T)},S=1e3,v=(g,b)=>(_,w,x,C,k,P,A,$,N,T)=>{const O=(0,a.default)({a:_,b:w,c:x,d:C,e:k,f:P,g:A,h:$,i:N,j:T,logLevel:b});if(!O)throw new Error("Expected key to be a string");const I=c().onceLog;I.has(O)||(I.add(O),I.size>S&&I.clear(),g.child({logLevel:b})(_,w,x,C,k,P,A,$,N,T))},y=(g,b={},_=[])=>{const w=(x,C,k,P,A,$,N,T,O,I)=>{const M=Date.now(),R=p();let D;h()?D=f():D=d();let L,V;if(typeof x=="string"?L={...D.messageContext,...b}:L={...D.messageContext,...b,...x},typeof x=="string"&&C===void 0)V=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.");V=(0,o.printf)(x,C,k,P,A,$,N,T,O,I)}else{let U=C;if(typeof C!="string")if(C===void 0)U="";else throw new TypeError("Message must be a string. Received "+typeof C+".");V=(0,o.printf)(U,k,P,A,$,N,T,O,I)}let z={context:L,message:V,sequence:R,time:M,version:n.ROARR_LOG_FORMAT_VERSION};for(const U of[...D.transforms,..._])if(z=U(z),typeof z!="object"||z===null)throw new Error("Message transform function must return a message object.");g(z)};return w.child=x=>{let C;return h()?C=f():C=d(),typeof x=="function"?(0,e.createLogger)(g,{...C.messageContext,...b,...x},[x,..._]):(0,e.createLogger)(g,{...C.messageContext,...b,...x},_)},w.getContext=()=>{let x;return h()?x=f():x=d(),{...x.messageContext,...b}},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 k=f();let P;(0,i.hasOwnProperty)(k,"sequenceRoot")&&(0,i.hasOwnProperty)(k,"sequence")&&typeof k.sequence=="number"?P=k.sequenceRoot+"."+String(k.sequence++):P=String(c().sequence++);let A={...k.messageContext};const $=[...k.transforms];typeof C=="function"?$.push(C):A={...A,...C};const N=c().asyncLocalStorage;if(!N)throw new Error("Async local context unavailable.");return N.run({messageContext:A,sequence:0,sequenceRoot:P,transforms:$},()=>x())},w.debug=m(w,r.logLevels.debug),w.debugOnce=v(w,r.logLevels.debug),w.error=m(w,r.logLevels.error),w.errorOnce=v(w,r.logLevels.error),w.fatal=m(w,r.logLevels.fatal),w.fatalOnce=v(w,r.logLevels.fatal),w.info=m(w,r.logLevels.info),w.infoOnce=v(w,r.logLevels.info),w.trace=m(w,r.logLevels.trace),w.traceOnce=v(w,r.logLevels.trace),w.warn=m(w,r.logLevels.warn),w.warnOnce=v(w,r.logLevels.warn),w};e.createLogger=y})(CD);var Qv={},Ade=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},Ode=De&&De.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Qv,"__esModule",{value:!0});Qv.createRoarrInitialGlobalStateBrowser=void 0;const U6=bl,G6=Ode(Ade),Rde=e=>{const t=(e.versions||[]).concat();return t.length>1&&t.sort(G6.default),t.includes(U6.ROARR_VERSION)||t.push(U6.ROARR_VERSION),t.sort(G6.default),{sequence:0,...e,versions:t}};Qv.createRoarrInitialGlobalStateBrowser=Rde;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0});Zv.getLogLevelName=void 0;const Ide=e=>e<=10?"trace":e<=20?"debug":e<=30?"info":e<=40?"warn":e<=50?"error":"fatal";Zv.getLogLevelName=Ide;(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=CD,r=Qv,o=(0,t(J5).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=fp;Object.defineProperty(e,"logLevels",{enumerable:!0,get:function(){return u.logLevels}});var c=Zv;Object.defineProperty(e,"getLogLevelName",{enumerable:!0,get:function(){return c.getLogLevelName}})})(Ac);var e3={},Jv={},e1={};Object.defineProperty(e1,"__esModule",{value:!0});e1.createLogMethods=void 0;var Mde=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)}};e1.createLogMethods=Mde;var FD={},pp={},t3={},t1={},n1={};Object.defineProperty(n1,"__esModule",{value:!0});n1.convertWildcardToRegex=void 0;var Nde=/\*+/g,Dde=function(e){return new RegExp(e.replace(Nde,"(.+?)"))};n1.convertWildcardToRegex=Dde;var gp={};Object.defineProperty(gp,"__esModule",{value:!0});gp.escapeRegexString=void 0;var Lde=/[$()*+.?[\\\]^{|}]/g,$de=/-/g,Fde=function(e){return e.replace(Lde,"\\$&").replace($de,"\\x2d")};gp.escapeRegexString=Fde;var r1={};Object.defineProperty(r1,"__esModule",{value:!0});r1.parseRegex=void 0;var Bde=/(\/?)(.+)\1([a-z]*)/,jde=/^(?!.*?(.).*?\1)[AJUXgimsux]+$/,Vde=function(e){var t=Bde.exec(e);if(!t)throw new Error("Invalid RegExp.");return t[3]&&!jde.test(t[3])?new RegExp(e):new RegExp(t[2],t[3])};r1.parseRegex=Vde;Object.defineProperty(t1,"__esModule",{value:!0});t1.createStringTest=void 0;var zde=n1,Ude=gp,Gde=r1,e_=function(e,t){var n;return e[t]?n=e[t]:n=e[t]=(0,Gde.parseRegex)(t),function(r){var i,o;return(o=(i=r.match(n))===null||i===void 0?void 0:i[0])!==null&&o!==void 0?o:!1}},Hde=function(e,t){if(t.type!=="Tag")throw new Error("Expected a tag expression.");var n=t.expression;if(n.type==="RangeExpression")throw new Error("Unexpected range expression.");if(n.type==="RegexExpression")return e_(e,n.value);if(n.type!=="LiteralExpression")throw new Error("Expected a literal expression.");var r=String(n.value);return r.includes("*")&&n.quoted===!1?e_(e,String((0,zde.convertWildcardToRegex)(r))+(n.quoted?"u":"ui")):e_(e,"/("+(0,Ude.escapeRegexString)(r)+")/"+(n.quoted?"u":"ui"))};t1.createStringTest=Hde;var i1={};Object.defineProperty(i1,"__esModule",{value:!0});i1.testComparisonRange=void 0;var qde=function(e,t,n){switch(n){case":=":return t===e;case":>":return t>e;case":<":return t=":return t>=e;case":<=":return t<=e;default:throw new Error("Unimplemented comparison operator: ".concat(n))}};i1.testComparisonRange=qde;var o1={};Object.defineProperty(o1,"__esModule",{value:!0});o1.testRange=void 0;var Wde=function(e,t){return typeof e=="number"?!(et.max||e===t.max&&!t.maxInclusive):!1};o1.testRange=Wde;(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,Xde.escapeRegexString)(u.trim())}).join("|")+")")}:{path:l.path}})};s1.highlight=Zde;var a1={},BD={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}})})(BD);var Jde=BD.exports,Sl={},jD={},ka={};ka.__esModule=void 0;ka.__esModule=!0;var efe=typeof Object.setPrototypeOf=="function",tfe=typeof Object.getPrototypeOf=="function",nfe=typeof Object.defineProperty=="function",rfe=typeof Object.create=="function",ife=typeof Object.prototype.hasOwnProperty=="function",ofe=function(t,n){efe?Object.setPrototypeOf(t,n):t.__proto__=n};ka.setPrototypeOf=ofe;var sfe=function(t){return tfe?Object.getPrototypeOf(t):t.__proto__||t.prototype};ka.getPrototypeOf=sfe;var H6=!1,afe=function e(t,n,r){if(nfe&&!H6)try{Object.defineProperty(t,n,r)}catch{H6=!0,e(t,n,r)}else t[n]=r.value};ka.defineProperty=afe;var VD=function(t,n){return ife?t.hasOwnProperty(t,n):t[n]===void 0};ka.hasOwnProperty=VD;var lfe=function(t,n){if(rfe)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)VD(n,o)&&(i[o]=n[o].value);return i};ka.objectCreate=lfe;(function(e){e.__esModule=void 0,e.__esModule=!0;var t=ka,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 S=c.toString().match(/^function\s*([^\s(]+)/);return S===null?a||"Error":S[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})(jD);var zD=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(Sl,"__esModule",{value:!0});Sl.SyntaxError=Sl.LiqeError=void 0;var ufe=jD,UD=function(e){zD(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(ufe.ExtendableError);Sl.LiqeError=UD;var cfe=function(e){zD(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}(UD);Sl.SyntaxError=cfe;var n3={},$y=De&&De.__assign||function(){return $y=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:Fo},{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"};n3.default=dfe;var GD={},l1={},mp={};Object.defineProperty(mp,"__esModule",{value:!0});mp.isSafePath=void 0;var ffe=/^(\.(?:[_a-zA-Z][a-zA-Z\d_]*|\0|[1-9]\d*))+$/u,hfe=function(e){return ffe.test(e)};mp.isSafePath=hfe;Object.defineProperty(l1,"__esModule",{value:!0});l1.createGetValueFunctionBody=void 0;var pfe=mp,gfe=function(e){if(!(0,pfe.isSafePath)(e))throw new Error("Unsafe path.");var t="return subject"+e;return t.replace(/(\.(\d+))/g,".[$2]").replace(/\./g,"?.")};l1.createGetValueFunctionBody=gfe;(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+)/,_fe=function(e){if(e.trim()==="")return{location:{end:0,start:0},type:"EmptyExpression"};var t=new qD.default.Parser(bfe),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(Sfe);throw r?new mfe.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,vfe.hydrateAst)(n[0]);return i};a1.parse=_fe;var u1={};Object.defineProperty(u1,"__esModule",{value:!0});u1.test=void 0;var wfe=pp,xfe=function(e,t){return(0,wfe.filter)(e,[t]).length===1};u1.test=xfe;var WD={};(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})(WD);var c1={};Object.defineProperty(c1,"__esModule",{value:!0});c1.isSafeUnquotedExpression=void 0;var Cfe=function(e){return/^[#$*@A-Z_a-z][#$*.@A-Z_a-z-]*$/.test(e)};c1.isSafeUnquotedExpression=Cfe;(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=pp;Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return t.filter}});var n=s1;Object.defineProperty(e,"highlight",{enumerable:!0,get:function(){return n.highlight}});var r=a1;Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return r.parse}});var i=u1;Object.defineProperty(e,"test",{enumerable:!0,get:function(){return i.test}});var o=Sl;Object.defineProperty(e,"LiqeError",{enumerable:!0,get:function(){return o.LiqeError}}),Object.defineProperty(e,"SyntaxError",{enumerable:!0,get:function(){return o.SyntaxError}});var s=WD;Object.defineProperty(e,"serialize",{enumerable:!0,get:function(){return s.serialize}});var a=c1;Object.defineProperty(e,"isSafeUnquotedExpression",{enumerable:!0,get:function(){return a.isSafeUnquotedExpression}})})(FD);var Tfe=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,S,v,d):h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message),m,S,v)}}};Jv.createLogWriter=Nfe;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createLogWriter=void 0;var t=Jv;Object.defineProperty(e,"createLogWriter",{enumerable:!0,get:function(){return t.createLogWriter}})})(e3);const YD={package:"@invoke-ai/invoke-ai-ui"};Ac.ROARR.write=e3.createLogWriter();let Se=Ac.Roarr.child(YD);const Dfe={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},MEe=["trace","debug","info","warn","error","fatal"],Lfe=Vn(Hv,e=>{const{app_version:t,consoleLogLevel:n,shouldLogToConsole:r}=e;return{version:t,consoleLogLevel:n,shouldLogToConsole:r}},{memoizeOptions:{resultEqualityCheck:n7}}),NEe=()=>{const{version:e,consoleLogLevel:t,shouldLogToConsole:n}=cy(Lfe);return E.useEffect(()=>{n?(localStorage.setItem("ROARR_LOG","true"),localStorage.setItem("ROARR_FILTER",`context.logLevel:>=${Dfe[t]}`)):localStorage.setItem("ROARR_LOG","false"),Ac.ROARR.write=e3.createLogWriter()},[t,n]),E.useEffect(()=>{const r={...YD};e&&(r.version=e),Se=Ac.Roarr.child(r)},[e]),Se};let ar=[],r3=(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=!ar.length;for(let s=0;s(e.events=e.events||{},e.events[n+fg]||(e.events[n+fg]=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+fg](),delete e.events[n+fg])}),Bfe=1e3,jfe=(e,t)=>Ffe(e,r=>{let i=t(r);i&&e.events[dg].push(i)},$fe,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[dg]=[],e.off=()=>{o(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let s of e.events[dg])s();e.events[dg]=[]}},Bfe)},()=>{e.listen=i,e.off=o}}),Vfe=(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=r3(void 0,Math.max(...e.map(o=>o.l))+1);return jfe(i,()=>{let o=e.map(s=>s.listen(r,i.l));return r(),()=>{for(let s of o)s()}}),i};const zfe={"Content-Type":"application/json"},Ufe=/\/*$/;function Gfe(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 Hfe(e){return JSON.stringify(e)}function qfe(e,t){let n=`${t.baseUrl?t.baseUrl.replace(Ufe,""):""}${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 Wfe(e={}){const{fetch:t=globalThis.fetch,querySerializer:n,bodySerializer:r,...i}=e,o=new Headers({...zfe,...i.headers??{}});async function s(a,l){const{headers:u,body:c,params:d={},parseAs:f="json",querySerializer:h=n??Gfe,bodySerializer:p=r??Hfe,...m}=l||{},S=qfe(a,{baseUrl:i.baseUrl,params:d,querySerializer:h}),v=new Headers(o),y=new Headers(u);for(const[w,x]of y.entries())x==null?v.delete(w):v.set(w,x);const g={redirect:"follow",...i,...m,headers:v};c&&(g.body=p(c)),g.body instanceof FormData&&v.delete("Content-Type");const b=await t(S,g);if(b.status===204||b.headers.get("Content-Length")==="0")return b.ok?{data:{},response:b}:{error:{},response:b};if(b.ok){let w=b.body;if(f!=="stream"){const x=b.clone();w=typeof x[f]=="function"?await x[f]():await x.text()}return{data:w,response:b}}let _={};try{_=await b.clone().json()}catch{_=await b.clone().text()}return{error:_,response:b}}return{async get(a,l){return s(a,{...l,method:"GET"})},async put(a,l){return s(a,{...l,method:"PUT"})},async post(a,l){return s(a,{...l,method:"POST"})},async del(a,l){return s(a,{...l,method:"DELETE"})},async options(a,l){return s(a,{...l,method:"OPTIONS"})},async head(a,l){return s(a,{...l,method:"HEAD"})},async patch(a,l){return s(a,{...l,method:"PATCH"})},async trace(a,l){return s(a,{...l,method:"TRACE"})}}}const mh=r3(),yh=r3(),d1=Vfe([mh,yh],(e,t)=>Wfe({headers:e?{Authorization:`Bearer ${e}`}:{},baseUrl:`${t??""}`}));Se.child({namespace:"session"});const Un=Gv("api/sessionCreated",async(e,{rejectWithValue:t})=>{const{graph:n}=e,{post:r}=d1.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/",{body:n});return o?t({arg:e,error:o}):i}),Kfe=e=>Jn(e)&&"status"in e,yp=Gv("api/sessionInvoked",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{put:r}=d1.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/{session_id}/invoke",{params:{query:{all:!0},path:{session_id:n}}});if(o)return Kfe(o)&&o.status===403?t({arg:e,error:o.body.detail}):t({arg:e,error:o})}),Dl=Gv("api/sessionCanceled",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{del:r}=d1.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/{session_id}/invoke",{params:{path:{session_id:n}}});return o?t({arg:e,error:o}):i});Gv("api/listSessions",async(e,{rejectWithValue:t})=>{const{params:n}=e,{get:r}=d1.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/",{params:n});return o?t({arg:e,error:o}):i});const XD=Hi(Un.rejected,yp.rejected),Jl=(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}},eu=(e,t,n,r,i=.95)=>{const o=e*i/n,s=t*i/r;return Math.min(1,Math.min(o,s))},DEe=.999,LEe=.1,$Ee=20,_d=.95,FEe=30,BEe=10,W6=e=>({x:Math.floor(e.x),y:Math.floor(e.y)}),$a=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=io(a/o,64)):o<1&&(r.height=a,r.width=io(a*o,64)),s=r.width*r.height;return r},Yfe=e=>({width:io(e.width,64),height:io(e.height,64)}),jEe=[{label:"Base",value:"base"},{label:"Mask",value:"mask"}],VEe=[{label:"Auto",value:"auto"},{label:"Manual",value:"manual"},{label:"None",value:"none"}],QD=e=>e.kind==="line"&&e.layer==="mask",zEe=e=>e.kind==="line"&&e.layer==="base",K6=e=>e.kind==="image"&&e.layer==="base",UEe=e=>e.kind==="fillRect"&&e.layer==="base",GEe=e=>e.kind==="eraseRect"&&e.layer==="base",Xfe=e=>e.kind==="line",pu={objects:[],stagingArea:{images:[],selectedImageIndex:-1}},ZD={boundingBoxCoordinates:{x:0,y:0},boundingBoxDimensions:{width:512,height:512},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},boundingBoxScaleMethod:"auto",brushColor:{r:90,g:90,b:255,a:1},brushSize:50,canvasContainerDimensions:{width:0,height:0},colorPickerColor:{r:90,g:90,b:255,a:1},cursorPosition:null,doesCanvasNeedScaling:!1,futureLayerStates:[],isCanvasInitialized:!1,isDrawing:!1,isMaskEnabled:!0,isMouseOverBoundingBox:!1,isMoveBoundingBoxKeyHeld:!1,isMoveStageKeyHeld:!1,isMovingBoundingBox:!1,isMovingStage:!1,isTransformingBoundingBox:!1,layer:"base",layerState:pu,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"},JD=zt({name:"canvas",initialState:ZD,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(Yn(e.layerState)),e.layerState.objects=e.layerState.objects.filter(t=>!QD(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:zd(Xo(r,64,512),64),height:zd(Xo(i,64,512),64)},a={x:io(r/2-s.width/2,64),y:io(i/2-s.height/2,64)};if(e.boundingBoxScaleMethod==="auto"){const c=$a(s);e.scaledBoundingBoxDimensions=c}e.boundingBoxDimensions=s,e.boundingBoxCoordinates=a,e.pastLayerStates.push(Yn(e.layerState)),e.layerState={...pu,objects:[{kind:"image",layer:"base",x:0,y:0,width:r,height:i,imageName:n.image_name}]},e.futureLayerStates=[],e.isCanvasInitialized=!1;const l=eu(o.width,o.height,r,i,_d),u=Jl(o.width,o.height,0,0,r,i,l);e.stageScale=l,e.stageCoordinates=u,e.doesCanvasNeedScaling=!0},setBoundingBoxDimensions:(e,t)=>{const n=Yfe(t.payload);if(e.boundingBoxDimensions=n,e.boundingBoxScaleMethod==="auto"){const r=$a(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=W6(t.payload)},setStageCoordinates:(e,t)=>{e.stageCoordinates=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=t.payload},setDoesCanvasNeedScaling:(e,t)=>{e.doesCanvasNeedScaling=t.payload},setStageScale:(e,t)=>{e.stageScale=t.payload},setShouldDarkenOutsideBoundingBox:(e,t)=>{e.shouldDarkenOutsideBoundingBox=t.payload},setIsDrawing:(e,t)=>{e.isDrawing=t.payload},clearCanvasHistory:e=>{e.pastLayerStates=[],e.futureLayerStates=[]},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(Yn(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(Yn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea={...pu.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingOutline=!0},addFillRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,brushColor:r}=e;e.pastLayerStates.push(Yn(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(Yn(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(Yn(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(Xfe);n&&n.points.push(...t.payload)},undo:e=>{const t=e.pastLayerStates.pop();t&&(e.futureLayerStates.unshift(Yn(e.layerState)),e.futureLayerStates.length>e.maxHistory&&e.futureLayerStates.pop(),e.layerState=t)},redo:e=>{const t=e.futureLayerStates.shift();t&&(e.pastLayerStates.push(Yn(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(Yn(e.layerState)),e.layerState=pu,e.futureLayerStates=[]},setCanvasContainerDimensions:(e,t)=>{e.canvasContainerDimensions=t.payload},resizeAndScaleCanvas:e=>{const{width:t,height:n}=e.canvasContainerDimensions,r=e.layerState.objects.find(K6),i={width:Math.floor(t),height:Math.floor(n)};if(!r){const c=eu(i.width,i.height,512,512,_d),d=Jl(i.width,i.height,0,0,512,512,c),f={width:512,height:512};if(e.stageScale=c,e.stageCoordinates=d,e.stageDimensions=i,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=f,e.boundingBoxScaleMethod==="auto"){const h=$a(f);e.scaledBoundingBoxDimensions=h}return}const{width:o,height:s}=r,l=eu(t,n,o,s,.95),u=Jl(i.width,i.height,0,0,o,s,l);e.minimumStageScale=l,e.stageScale=l,e.stageCoordinates=W6(u),e.stageDimensions=i,e.isCanvasInitialized=!0},resizeCanvas:e=>{const{width:t,height:n}=e.canvasContainerDimensions,r={width:Math.floor(t),height:Math.floor(n)};if(e.stageDimensions=r,!e.layerState.objects.find(K6)){const i=eu(r.width,r.height,512,512,_d),o=Jl(r.width,r.height,0,0,512,512,i),s={width:512,height:512};if(e.stageScale=i,e.stageCoordinates=o,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=s,e.boundingBoxScaleMethod==="auto"){const a=$a(s);e.scaledBoundingBoxDimensions=a}}},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:eu(i,o,l,u,_d),d=Jl(i,o,s,a,l,u,c);e.stageScale=c,e.stageCoordinates=d}else{const c=eu(i,o,512,512,_d),d=Jl(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=$a(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(Yn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.objects.push({...n[r]}),e.layerState.stagingArea={...pu.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:zd(Xo(o,64,512),64),height:zd(Xo(s,64,512),64)},l={x:io(o/2-a.width/2,64),y:io(s/2-a.height/2,64)};if(e.boundingBoxDimensions=a,e.boundingBoxCoordinates=l,e.boundingBoxScaleMethod==="auto"){const u=$a(a);e.scaledBoundingBoxDimensions=u}}},setBoundingBoxScaleMethod:(e,t)=>{if(e.boundingBoxScaleMethod=t.payload,t.payload==="auto"){const n=$a(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(Yn(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(Dl.pending,t=>{t.layerState.stagingArea.images.length||(t.layerState.stagingArea=pu.stagingArea)}),e.addCase(Cce,(t,n)=>{t.doesCanvasNeedScaling=!0}),e.addCase(xce,(t,n)=>{t.doesCanvasNeedScaling=!0}),e.addCase(xD,(t,n)=>{const r=n.payload;r&&(t.boundingBoxDimensions.height=io(t.boundingBoxDimensions.width/r,64))})}}),{addEraseRect:HEe,addFillRect:qEe,addImageToStagingArea:Qfe,addLine:WEe,addPointToCurrentLine:KEe,clearCanvasHistory:YEe,clearMask:XEe,commitColorPickerColor:QEe,commitStagingAreaImage:Zfe,discardStagedImages:ZEe,fitBoundingBoxToStage:JEe,mouseLeftCanvas:ePe,nextStagingAreaImage:tPe,prevStagingAreaImage:nPe,redo:rPe,resetCanvas:eL,resetCanvasInteractionState:iPe,resetCanvasView:oPe,resizeAndScaleCanvas:sPe,resizeCanvas:aPe,setBoundingBoxCoordinates:lPe,setBoundingBoxDimensions:uPe,setBoundingBoxPreviewFill:cPe,setBoundingBoxScaleMethod:dPe,flipBoundingBoxAxes:fPe,setBrushColor:hPe,setBrushSize:pPe,setCanvasContainerDimensions:gPe,setColorPickerColor:mPe,setCursorPosition:yPe,setDoesCanvasNeedScaling:vPe,setInitialCanvasImage:tL,setIsDrawing:bPe,setIsMaskEnabled:SPe,setIsMouseOverBoundingBox:_Pe,setIsMoveBoundingBoxKeyHeld:wPe,setIsMoveStageKeyHeld:xPe,setIsMovingBoundingBox:CPe,setIsMovingStage:TPe,setIsTransformingBoundingBox:EPe,setLayer:PPe,setMaskColor:kPe,setMergedCanvas:Jfe,setShouldAutoSave:APe,setShouldCropToBoundingBoxOnSave:OPe,setShouldDarkenOutsideBoundingBox:RPe,setShouldLockBoundingBox:IPe,setShouldPreserveMaskedArea:MPe,setShouldShowBoundingBox:NPe,setShouldShowBrush:DPe,setShouldShowBrushPreview:LPe,setShouldShowCanvasDebugInfo:$Pe,setShouldShowCheckboardTransparency:FPe,setShouldShowGrid:BPe,setShouldShowIntermediates:jPe,setShouldShowStagingImage:VPe,setShouldShowStagingOutline:zPe,setShouldSnapToGrid:UPe,setStageCoordinates:GPe,setStageScale:HPe,setTool:qPe,toggleShouldLockBoundingBox:WPe,toggleTool:KPe,undo:YPe,setScaledBoundingBoxDimensions:XPe,setShouldRestrictStrokesToBox:QPe,stagingAreaInitialized:ehe,canvasSessionIdChanged:the,setShouldAntialias:ZPe}=JD.actions,nhe=JD.reducer,rhe=(e,t)=>{const n=new Date(e),r=new Date(t);return n>r?1:n0&&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 hhe(){return typeof document>"u"?!0:document.visibilityState!=="hidden"}var Z6=Vi;function iL(e,t){if(e===t||!(Z6(e)&&Z6(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},ghe=function(e){return/ion\/(vnd\.api\+)?json/.test(e.get("content-type")||"")};function e8(e){if(!Vi(e))return e;for(var t=Ht({},e),n=0,r=Object.entries(t);n"u"&&a===J6&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(g,b){return Vy(t,null,function(){var _,w,x,C,k,P,A,$,N,T,O,I,M,R,D,L,V,z,U,K,W,X,F,q,Q,J,ne,Z,ge,ae,oe,Te,se,We,yt,Fe;return Fy(this,function(Be){switch(Be.label){case 0:return _=b.signal,w=b.getState,x=b.extra,C=b.endpoint,k=b.forced,P=b.type,$=typeof g=="string"?{url:g}:g,N=$.url,T=$.headers,O=T===void 0?new Headers(v.headers):T,I=$.params,M=I===void 0?void 0:I,R=$.responseHandler,D=R===void 0?m??"json":R,L=$.validateStatus,V=L===void 0?S??phe:L,z=$.timeout,U=z===void 0?p:z,K=X6($,["url","headers","params","responseHandler","validateStatus","timeout"]),W=Ht(fo(Ht({},v),{signal:_}),K),O=new Headers(e8(O)),X=W,[4,o(O,{getState:w,extra:x,endpoint:C,forced:k,type:P})];case 1:X.headers=Be.sent()||O,F=function(Me){return typeof Me=="object"&&(Vi(Me)||Array.isArray(Me)||typeof Me.toJSON=="function")},!W.headers.has("content-type")&&F(W.body)&&W.headers.set("content-type",f),F(W.body)&&c(W.headers)&&(W.body=JSON.stringify(W.body,h)),M&&(q=~N.indexOf("?")?"&":"?",Q=l?l(M):new URLSearchParams(e8(M)),N+=q+Q),N=dhe(r,N),J=new Request(N,W),ne=J.clone(),A={request:ne},ge=!1,ae=U&&setTimeout(function(){ge=!0,b.abort()},U),Be.label=2;case 2:return Be.trys.push([2,4,5,6]),[4,a(J)];case 3:return Z=Be.sent(),[3,6];case 4:return oe=Be.sent(),[2,{error:{status:ge?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(oe)},meta:A}];case 5:return ae&&clearTimeout(ae),[7];case 6:Te=Z.clone(),A.response=Te,We="",Be.label=7;case 7:return Be.trys.push([7,9,,10]),[4,Promise.all([y(Z,D).then(function(Me){return se=Me},function(Me){return yt=Me}),Te.text().then(function(Me){return We=Me},function(){})])];case 8:if(Be.sent(),yt)throw yt;return[3,10];case 9:return Fe=Be.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:Z.status,data:We,error:String(Fe)},meta:A}];case 10:return[2,V(Z,se)?{data:se,meta:A}:{error:{status:Z.status,data:se},meta:A}]}})})};function y(g,b){return Vy(this,null,function(){var _;return Fy(this,function(w){switch(w.label){case 0:return typeof b=="function"?[2,b(g)]:(b==="content-type"&&(b=c(g.headers)?"json":"text"),b!=="json"?[3,2]:[4,g.text()]);case 1:return _=w.sent(),[2,_.length?JSON.parse(_):null];case 2:return[2,g.text()]}})})}}var t8=function(){function e(t,n){n===void 0&&(n=void 0),this.value=t,this.meta=n}return e}(),i3=me("__rtkq/focused"),oL=me("__rtkq/unfocused"),o3=me("__rtkq/online"),sL=me("__rtkq/offline"),To;(function(e){e.query="query",e.mutation="mutation"})(To||(To={}));function aL(e){return e.type===To.query}function yhe(e){return e.type===To.mutation}function lL(e,t,n,r,i,o){return vhe(e)?e(t,n,r,i).map(Lw).map(o):Array.isArray(e)?e.map(Lw).map(o):[]}function vhe(e){return typeof e=="function"}function Lw(e){return typeof e=="string"?{type:e}:e}function t_(e){return e!=null}var vh=Symbol("forceQueryFn"),$w=function(e){return typeof e[vh]=="function"};function bhe(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:S,getRunningMutationsThunk:v,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 b=function(_){return Array.from(_.values()).flatMap(function(w){return w?Object.values(w):[]})};return By(By([],b(s)),b(a)).filter(t_)}function p(b,_){return function(w){var x,C=o.endpointDefinitions[b],k=t({queryArgs:_,endpointDefinition:C,endpointName:b});return(x=s.get(w))==null?void 0:x[k]}}function m(b,_){return function(w){var x;return(x=a.get(w))==null?void 0:x[_]}}function S(){return function(b){return Object.values(s.get(b)||{}).filter(t_)}}function v(){return function(b){return Object.values(a.get(b)||{}).filter(t_)}}function y(b,_){var w=function(x,C){var k=C===void 0?{}:C,P=k.subscribe,A=P===void 0?!0:P,$=k.forceRefetch,N=k.subscriptionOptions,T=vh,O=k[T];return function(I,M){var R,D,L=t({queryArgs:x,endpointDefinition:_,endpointName:b}),V=n((R={type:"query",subscribe:A,forceRefetch:$,subscriptionOptions:N,endpointName:b,originalArgs:x,queryCacheKey:L},R[vh]=O,R)),z=i.endpoints[b].select(x),U=I(V),K=z(M()),W=U.requestId,X=U.abort,F=K.requestId!==W,q=(D=s.get(I))==null?void 0:D[L],Q=function(){return z(M())},J=Object.assign(O?U.then(Q):F&&!q?Promise.resolve(K):Promise.all([q,U]).then(Q),{arg:x,requestId:W,subscriptionOptions:N,queryCacheKey:L,abort:X,unwrap:function(){return Vy(this,null,function(){var Z;return Fy(this,function(ge){switch(ge.label){case 0:return[4,J];case 1:if(Z=ge.sent(),Z.isError)throw Z.error;return[2,Z.data]}})})},refetch:function(){return I(w(x,{subscribe:!1,forceRefetch:!0}))},unsubscribe:function(){A&&I(u({queryCacheKey:L,requestId:W}))},updateSubscriptionOptions:function(Z){J.subscriptionOptions=Z,I(d({endpointName:b,requestId:W,queryCacheKey:L,options:Z}))}});if(!q&&!F&&!O){var ne=s.get(I)||{};ne[L]=J,s.set(I,ne),J.then(function(){delete ne[L],Object.keys(ne).length||s.delete(I)})}return J}};return w}function g(b){return function(_,w){var x=w===void 0?{}:w,C=x.track,k=C===void 0?!0:C,P=x.fixedCacheKey;return function(A,$){var N=r({type:"mutation",endpointName:b,originalArgs:_,track:k,fixedCacheKey:P}),T=A(N),O=T.requestId,I=T.abort,M=T.unwrap,R=T.unwrap().then(function(z){return{data:z}}).catch(function(z){return{error:z}}),D=function(){A(c({requestId:O,fixedCacheKey:P}))},L=Object.assign(R,{arg:T.arg,requestId:O,abort:I,unwrap:M,unsubscribe:D,reset:D}),V=a.get(A)||{};return a.set(A,V),V[O]=L,L.then(function(){delete V[O],Object.keys(V).length||a.delete(A)}),P&&(V[P]=L,L.then(function(){V[P]===L&&(delete V[P],Object.keys(V).length||a.delete(A))})),L}}}}function n8(e){return e}function She(e){var t=this,n=e.reducerPath,r=e.baseQuery,i=e.context.endpointDefinitions,o=e.serializeQueryArgs,s=e.api,a=function(g,b,_){return function(w){var x=i[g];w(s.internalActions.queryResultPatched({queryCacheKey:o({queryArgs:b,endpointDefinition:x,endpointName:g}),patches:_}))}},l=function(g,b,_){return function(w,x){var C,k,P=s.endpoints[g].select(b)(x()),A={patches:[],inversePatches:[],undo:function(){return w(s.util.patchQueryData(g,b,A.inversePatches))}};if(P.status===Et.uninitialized)return A;if("data"in P)if(Ir(P.data)){var $=LC(P.data,_),N=$[1],T=$[2];(C=A.patches).push.apply(C,N),(k=A.inversePatches).push.apply(k,T)}else{var O=_(P.data);A.patches.push({op:"replace",path:[],value:O}),A.inversePatches.push({op:"replace",path:[],value:P.data})}return w(s.util.patchQueryData(g,b,A.patches)),A}},u=function(g,b,_){return function(w){var x;return w(s.endpoints[g].initiate(b,(x={subscribe:!1,forceRefetch:!0},x[vh]=function(){return{data:_}},x)))}},c=function(g,b){return Vy(t,[g,b],function(_,w){var x,C,k,P,A,$,N,T,O,I,M,R,D,L,V,z,U,K,W=w.signal,X=w.abort,F=w.rejectWithValue,q=w.fulfillWithValue,Q=w.dispatch,J=w.getState,ne=w.extra;return Fy(this,function(Z){switch(Z.label){case 0:x=i[_.endpointName],Z.label=1;case 1:return Z.trys.push([1,8,,13]),C=n8,k=void 0,P={signal:W,abort:X,dispatch:Q,getState:J,extra:ne,endpoint:_.endpointName,type:_.type,forced:_.type==="query"?d(_,J()):void 0},A=_.type==="query"?_[vh]:void 0,A?(k=A(),[3,6]):[3,2];case 2:return x.query?[4,r(x.query(_.originalArgs),P,x.extraOptions)]:[3,4];case 3:return k=Z.sent(),x.transformResponse&&(C=x.transformResponse),[3,6];case 4:return[4,x.queryFn(_.originalArgs,P,x.extraOptions,function(ge){return r(ge,P,x.extraOptions)})];case 5:k=Z.sent(),Z.label=6;case 6:if(typeof process<"u",k.error)throw new t8(k.error,k.meta);return M=q,[4,C(k.data,k.meta,_.originalArgs)];case 7:return[2,M.apply(void 0,[Z.sent(),(U={fulfilledTimeStamp:Date.now(),baseQueryMeta:k.meta},U[Qa]=!0,U)])];case 8:if(R=Z.sent(),D=R,!(D instanceof t8))return[3,12];L=n8,x.query&&x.transformErrorResponse&&(L=x.transformErrorResponse),Z.label=9;case 9:return Z.trys.push([9,11,,12]),V=F,[4,L(D.value,D.meta,_.originalArgs)];case 10:return[2,V.apply(void 0,[Z.sent(),(K={baseQueryMeta:D.meta},K[Qa]=!0,K)])];case 11:return z=Z.sent(),D=z,[3,12];case 12:throw typeof process<"u",console.error(D),D;case 13:return[2]}})})};function d(g,b){var _,w,x,C,k=(w=(_=b[n])==null?void 0:_.queries)==null?void 0:w[g.queryCacheKey],P=(x=b[n])==null?void 0:x.config.refetchOnMountOrArgChange,A=k==null?void 0:k.fulfilledTimeStamp,$=(C=g.forceRefetch)!=null?C:g.subscribe&&P;return $?$===!0||(Number(new Date)-Number(A))/1e3>=$:!1}var f=Vf(n+"/executeQuery",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[Qa]=!0,g},condition:function(g,b){var _=b.getState,w,x,C,k=_(),P=(x=(w=k[n])==null?void 0:w.queries)==null?void 0:x[g.queryCacheKey],A=P==null?void 0:P.fulfilledTimeStamp,$=g.originalArgs,N=P==null?void 0:P.originalArgs,T=i[g.endpointName];return $w(g)?!0:(P==null?void 0:P.status)==="pending"?!1:d(g,k)||aL(T)&&((C=T==null?void 0:T.forceRefetch)!=null&&C.call(T,{currentArg:$,previousArg:N,endpointState:P,state:k}))?!0:!A},dispatchConditionRejection:!0}),h=Vf(n+"/executeMutation",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[Qa]=!0,g}}),p=function(g){return"force"in g},m=function(g){return"ifOlderThan"in g},S=function(g,b,_){return function(w,x){var C=p(_)&&_.force,k=m(_)&&_.ifOlderThan,P=function(T){return T===void 0&&(T=!0),s.endpoints[g].initiate(b,{forceRefetch:T})},A=s.endpoints[g].select(b)(x());if(C)w(P());else if(k){var $=A==null?void 0:A.fulfilledTimeStamp;if(!$){w(P());return}var N=(Number(new Date)-Number(new Date($)))/1e3>=k;N&&w(P())}else w(P(!1))}};function v(g){return function(b){var _,w;return((w=(_=b==null?void 0:b.meta)==null?void 0:_.arg)==null?void 0:w.endpointName)===g}}function y(g,b){return{matchPending:Gu(av(g),v(b)),matchFulfilled:Gu(Ca(g),v(b)),matchRejected:Gu(mc(g),v(b))}}return{queryThunk:f,mutationThunk:h,prefetch:S,updateQueryData:l,upsertQueryData:u,patchQueryData:a,buildMatchThunkActions:y}}function uL(e,t,n,r){return lL(n[e.meta.arg.endpointName][t],Ca(e)?e.payload:void 0,Wh(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function hg(e,t,n){var r=e[t];r&&n(r)}function bh(e){var t;return(t="arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)!=null?t:e.requestId}function r8(e,t,n){var r=e[bh(t)];r&&n(r)}var wd={};function _he(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=zt({name:t+"/queries",initialState:wd,reducers:{removeQueryResult:{reducer:function(_,w){var x=w.payload.queryCacheKey;delete _[x]},prepare:Zg()},queryResultPatched:function(_,w){var x=w.payload,C=x.queryCacheKey,k=x.patches;hg(_,C,function(P){P.data=M2(P.data,k.concat())})}},extraReducers:function(_){_.addCase(n.pending,function(w,x){var C=x.meta,k=x.meta.arg,P,A,$=$w(k);(k.subscribe||$)&&((A=w[P=k.queryCacheKey])!=null||(w[P]={status:Et.uninitialized,endpointName:k.endpointName})),hg(w,k.queryCacheKey,function(N){N.status=Et.pending,N.requestId=$&&N.requestId?N.requestId:C.requestId,k.originalArgs!==void 0&&(N.originalArgs=k.originalArgs),N.startedTimeStamp=C.startedTimeStamp})}).addCase(n.fulfilled,function(w,x){var C=x.meta,k=x.payload;hg(w,C.arg.queryCacheKey,function(P){var A;if(!(P.requestId!==C.requestId&&!$w(C.arg))){var $=o[C.arg.endpointName].merge;if(P.status=Et.fulfilled,$)if(P.data!==void 0){var N=C.fulfilledTimeStamp,T=C.arg,O=C.baseQueryMeta,I=C.requestId,M=xa(P.data,function(R){return $(R,k,{arg:T.originalArgs,baseQueryMeta:O,fulfilledTimeStamp:N,requestId:I})});P.data=M}else P.data=k;else P.data=(A=o[C.arg.endpointName].structuralSharing)==null||A?iL(hr(P.data)?AC(P.data):P.data,k):k;delete P.error,P.fulfilledTimeStamp=C.fulfilledTimeStamp}})}).addCase(n.rejected,function(w,x){var C=x.meta,k=C.condition,P=C.arg,A=C.requestId,$=x.error,N=x.payload;hg(w,P.queryCacheKey,function(T){if(!k){if(T.requestId!==A)return;T.status=Et.rejected,T.error=N??$}})}).addMatcher(l,function(w,x){for(var C=a(x).queries,k=0,P=Object.entries(C);k{const r=yh.get(),i=mh.get();return mhe({baseUrl:`${r??""}/api/v1`,prepareHeaders:s=>(i&&s.set("Authorization",`Bearer ${i}`),s)})(e,t,n)},ya=Zhe({baseQuery:epe,reducerPath:"api",tagTypes:Jhe,endpoints:()=>({})}),Rc=ya.injectEndpoints({endpoints:e=>({listBoards:e.query({query:t=>({url:"boards/",params:t}),providesTags:(t,n,r)=>{const i=[{type:"Board",id:vn}];return t&&i.push(...t.items.map(({board_id:o})=>({type:"Board",id:o}))),i}}),listAllBoards:e.query({query:()=>({url:"boards/",params:{all:!0}}),providesTags:(t,n,r)=>{const i=[{type:"Board",id:vn}];return t&&i.push(...t.map(({board_id:o})=>({type:"Board",id:o}))),i}}),listAllImageNamesForBoard:e.query({query:t=>({url:`boards/${t}/image_names`}),providesTags:(t,n,r)=>[{type:"ImageNameList",id:r}],keepUnusedDataFor:0}),createBoard:e.mutation({query:t=>({url:"boards/",method:"POST",params:{board_name:t}}),invalidatesTags:[{type:"Board",id:vn}]}),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}]}),deleteBoard:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE"}),invalidatesTags:(t,n,r)=>[{type:"Board",id:vn},{type:"ImageList",id:Ai({board_id:"none",categories:Mi})},{type:"ImageList",id:Ai({board_id:"none",categories:Gs})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{deleted_board_images:s}=o;s.forEach(u=>{n(ye.util.updateQueryData("getImageDTO",u,c=>{c.board_id=void 0}))});const a=[{categories:Mi},{categories:Gs}],l=s.map(u=>({id:u,changes:{board_id:void 0}}));a.forEach(u=>{n(ye.util.updateQueryData("listImages",u,c=>{const d=c.total,h=lr.updateMany(c,l).total-d;c.total=c.total+h}))})}catch{}}}),deleteBoardAndImages:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE",params:{include_images:!0}}),invalidatesTags:(t,n,r)=>[{type:"Board",id:vn},{type:"ImageList",id:Ai({board_id:"none",categories:Mi})},{type:"ImageList",id:Ai({board_id:"none",categories:Gs})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{deleted_images:s}=o;[{categories:Mi},{categories:Gs}].forEach(l=>{n(ye.util.updateQueryData("listImages",l,u=>{const c=u.total,f=lr.removeMany(u,s).total-c;u.total=u.total+f}))})}catch{}}})})}),{useListBoardsQuery:JPe,useListAllBoardsQuery:e6e,useCreateBoardMutation:t6e,useUpdateBoardMutation:n6e,useDeleteBoardMutation:r6e,useDeleteBoardAndImagesMutation:i6e,useListAllImageNamesForBoardQuery:o6e}=Rc,Mi=["general"],Gs=["control","mask","user","other"],tpe=100,s6e=20,dL={selection:[],shouldAutoSwitch:!0,autoAddBoardId:void 0,galleryImageMinimumWidth:96,selectedBoardId:void 0,galleryView:"images",batchImageNames:[],isBatchEnabled:!1},fL=zt({name:"gallery",initialState:dL,reducers:{imageRangeEndSelected:(e,t)=>{},imageSelectionToggled:(e,t)=>{},imageSelected:(e,t)=>{e.selection=t.payload?[t.payload]:[]},shouldAutoSwitchChanged:(e,t)=>{e.shouldAutoSwitch=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},boardIdSelected:(e,t)=>{e.selectedBoardId=t.payload,e.galleryView="images"},isBatchEnabledChanged:(e,t)=>{e.isBatchEnabled=t.payload},imagesAddedToBatch:(e,t)=>{e.batchImageNames=hZ(e.batchImageNames.concat(t.payload))},imagesRemovedFromBatch:(e,t)=>{e.batchImageNames=e.batchImageNames.filter(r=>!t.payload.includes(r));const n=e.selection.filter(r=>!t.payload.includes(r));if(n.length){e.selection=n;return}e.selection=[e.batchImageNames[0]]},batchReset:e=>{e.batchImageNames=[],e.selection=[]},autoAddBoardIdChanged:(e,t)=>{e.autoAddBoardId=t.payload},galleryViewChanged:(e,t)=>{e.galleryView=t.payload}},extraReducers:e=>{e.addMatcher(rpe,(t,n)=>{const r=n.meta.arg.originalArgs;r===t.selectedBoardId&&(t.selectedBoardId=void 0,t.galleryView="images"),r===t.autoAddBoardId&&(t.autoAddBoardId=void 0)}),e.addMatcher(Rc.endpoints.listAllBoards.matchFulfilled,(t,n)=>{const r=n.payload;t.autoAddBoardId&&(r.map(i=>i.board_id).includes(t.autoAddBoardId)||(t.autoAddBoardId=void 0))})}}),{imagesRemoved:a6e,imageRangeEndSelected:l6e,imageSelectionToggled:u6e,imageSelected:ra,shouldAutoSwitchChanged:c6e,setGalleryImageMinimumWidth:d6e,boardIdSelected:Fw,isBatchEnabledChanged:f6e,imagesAddedToBatch:Bw,imagesRemovedFromBatch:h6e,autoAddBoardIdChanged:p6e,galleryViewChanged:Uy}=fL.actions,npe=fL.reducer,rpe=Hi(Rc.endpoints.deleteBoard.matchFulfilled,Rc.endpoints.deleteBoardAndImages.matchFulfilled),xd=e=>Mi.includes(e.image_category)?Mi:Gs,hL="%[a-f0-9]{2}",h8=new RegExp("("+hL+")|([^%]+?)","gi"),p8=new RegExp("("+hL+")+","gi");function jw(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(e.length===1)return e;t=t||1;const n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],jw(n),jw(r))}function ipe(e){try{return decodeURIComponent(e)}catch{let t=e.match(h8)||[];for(let n=1;ne==null,upe=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),Vw=Symbol("encodeFragmentIdentifier");function cpe(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,[Jt(t,e),"[",i,"]"].join("")]:[...n,[Jt(t,e),"[",Jt(i,e),"]=",Jt(r,e)].join("")]};case"bracket":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Jt(t,e),"[]"].join("")]:[...n,[Jt(t,e),"[]=",Jt(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,[Jt(t,e),":list="].join("")]:[...n,[Jt(t,e),":list=",Jt(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?[[Jt(n,e),t,Jt(i,e)].join("")]:[[r,Jt(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,Jt(t,e)]:[...n,[Jt(t,e),"=",Jt(r,e)].join("")]}}function dpe(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&&qo(r,e).includes(e.arrayFormatSeparator);r=s?qo(r,e):r;const a=o||s?r.split(e.arrayFormatSeparator).map(l=>qo(l,e)):r===null?r:qo(r,e);i[n]=a};case"bracket-separator":return(n,r,i)=>{const o=/(\[])$/.test(n);if(n=n.replace(/\[]$/,""),!o){i[n]=r&&qo(r,e);return}const s=r===null?[]:r.split(e.arrayFormatSeparator).map(a=>qo(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 gL(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Jt(e,t){return t.encode?t.strict?upe(e):encodeURIComponent(e):e}function qo(e,t){return t.decode?spe(e):e}function mL(e){return Array.isArray(e)?e.sort():typeof e=="object"?mL(Object.keys(e)).sort((t,n)=>Number(t)-Number(n)).map(t=>e[t]):e}function yL(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function fpe(e){let t="";const n=e.indexOf("#");return n!==-1&&(t=e.slice(n)),t}function g8(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 s3(e){e=yL(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function a3(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t},gL(t.arrayFormatSeparator);const n=dpe(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]=pL(o,"=");s===void 0&&(s=o),a=a===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:qo(a,t),n(qo(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]=g8(a,t);else r[i]=g8(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]=mL(s):i[o]=s,i},Object.create(null))}function vL(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},gL(t.arrayFormatSeparator);const n=s=>t.skipNull&&lpe(e[s])||t.skipEmptyString&&e[s]==="",r=cpe(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?Jt(s,t):Array.isArray(a)?a.length===0&&t.arrayFormat==="bracket-separator"?Jt(s,t)+"[]":a.reduce(r(s),[]).join("&"):Jt(s,t)+"="+Jt(a,t)}).filter(s=>s.length>0).join("&")}function bL(e,t){var i;t={decode:!0,...t};let[n,r]=pL(e,"#");return n===void 0&&(n=e),{url:((i=n==null?void 0:n.split("?"))==null?void 0:i[0])??"",query:a3(s3(e),t),...t&&t.parseFragmentIdentifier&&r?{fragmentIdentifier:qo(r,t)}:{}}}function SL(e,t){t={encode:!0,strict:!0,[Vw]:!0,...t};const n=yL(e.url).split("?")[0]||"",r=s3(e.url),i={...a3(r,{sort:!1}),...e.query};let o=vL(i,t);o&&(o=`?${o}`);let s=fpe(e.url);if(e.fragmentIdentifier){const a=new URL(n);a.hash=e.fragmentIdentifier,s=t[Vw]?a.hash:`#${e.fragmentIdentifier}`}return`${n}${o}${s}`}function _L(e,t,n){n={parseFragmentIdentifier:!0,[Vw]:!1,...n};const{url:r,query:i,fragmentIdentifier:o}=bL(e,n);return SL({url:r,query:ape(i,t),fragmentIdentifier:o},n)}function hpe(e,t,n){const r=Array.isArray(t)?i=>!t.includes(i):(i,o)=>!t(i,o);return _L(e,r,n)}const wL=Object.freeze(Object.defineProperty({__proto__:null,exclude:hpe,extract:s3,parse:a3,parseUrl:bL,pick:_L,stringify:vL,stringifyUrl:SL},Symbol.toStringTag,{value:"Module"})),o_=(e,t)=>{if(!e)return!1;const n=zw.selectAll(e);if(n.length>1){const r=new Date(t.created_at),i=new Date(n[n.length-1].created_at);return r>=i}else if([0,1].includes(n.length))return!0;return!1},lr=Pl({selectId:e=>e.image_name,sortComparer:(e,t)=>rhe(t.updated_at,e.updated_at)}),zw=lr.getSelectors(),Ai=e=>`images/?${wL.stringify(e,{arrayFormat:"none"})}`,ye=ya.injectEndpoints({endpoints:e=>({listImages:e.query({query:t=>({url:Ai(t),method:"GET"}),providesTags:(t,n,{board_id:r,categories:i})=>[{type:"ImageList",id:Ai({board_id:r,categories:i})}],serializeQueryArgs:({queryArgs:t})=>{const{board_id:n,categories:r}=t;return Ai({board_id:n,categories:r})},transformResponse(t){const{total:n,items:r}=t;return lr.addMany(lr.getInitialState({total:n}),r)},merge:(t,n)=>{lr.addMany(t,zw.selectAll(n)),t.total=n.total},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;zw.selectAll(i).forEach(o=>{n(ye.util.upsertQueryData("getImageDTO",o.image_name,o))})}catch{}},keepUnusedDataFor:86400}),getIntermediatesCount:e.query({query:()=>({url:Ai({is_intermediate:!0})}),providesTags:["IntermediatesCount"],transformResponse:t=>t.total}),getImageDTO:e.query({query:t=>({url:`images/${t}`}),providesTags:(t,n,r)=>{const i=[{type:"Image",id:r}];return t!=null&&t.board_id&&i.push({type:"Board",id:t.board_id}),i},keepUnusedDataFor:86400}),getImageMetadata:e.query({query:t=>({url:`images/${t}/metadata`}),providesTags:(t,n,r)=>[{type:"ImageMetadata",id:r}],keepUnusedDataFor:86400}),getBoardImagesTotal:e.query({query:t=>({url:Ai({board_id:t??"none",categories:Mi,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:Ai({board_id:t??"none",categories:Gs,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardAssetsTotal",id:r??"none"}],transformResponse:t=>t.total}),clearIntermediates:e.mutation({query:()=>({url:"images/clear-intermediates",method:"POST"}),invalidatesTags:["IntermediatesCount"]}),deleteImage:e.mutation({query:({image_name:t})=>({url:`images/${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=[],a=xd(t);s.push(n(ye.util.updateQueryData("listImages",{board_id:o??"none",categories:a},l=>{const u=l.total,d=lr.removeOne(l,i).total-u;l.total=l.total+d})));try{await r}catch{s.forEach(l=>l.undo())}}}),changeImageIsIntermediate:e.mutation({query:({imageDTO:t,is_intermediate:n})=>({url:`images/${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(ye.util.updateQueryData("getImageDTO",t.image_name,l=>{Object.assign(l,{is_intermediate:n})})));const a=xd(t);if(n)s.push(r(ye.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:a},l=>{const u=l.total,d=lr.removeOne(l,t.image_name).total-u;l.total=l.total+d})));else{console.log(t);const l={board_id:t.board_id??"none",categories:a},u=ye.endpoints.listImages.select(l)(o()),c=u.data&&u.data.ids.length>=u.data.total,d=o_(u.data,t);(c||d)&&s.push(r(ye.util.updateQueryData("listImages",l,f=>{const h=f.total,m=lr.upsertOne(f,t).total-h;f.total=f.total+m})))}try{await i}catch{s.forEach(l=>l.undo())}}}),changeImageSessionId:e.mutation({query:({imageDTO:t,session_id:n})=>({url:`images/${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,getState:o}){const s=[];s.push(r(ye.util.updateQueryData("getImageDTO",t.image_name,a=>{Object.assign(a,{session_id:n})})));try{await i}catch{s.forEach(a=>a.undo())}}}),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/",method:"POST",body:a,params:{image_category:n,is_intermediate:r,session_id:i,board_id:o,crop_visible:s}}},async onQueryStarted({file:t,image_category:n,is_intermediate:r,postUploadAction:i,session_id:o,board_id:s},{dispatch:a,queryFulfilled:l}){try{const{data:u}=await l;if(u.is_intermediate)return;a(ye.util.upsertQueryData("getImageDTO",u.image_name,u));const c=xd(u);a(ye.util.updateQueryData("listImages",{board_id:u.board_id??"none",categories:c},d=>{const f=d.total,p=lr.addOne(d,u).total-f;d.total=d.total+p})),a(ye.util.invalidateTags([{type:"BoardImagesTotal",id:u.board_id??"none"},{type:"BoardAssetsTotal",id:u.board_id??"none"}]))}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:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:r},{type:"BoardAssetsTotal",id:i.board_id??"none"}],async onQueryStarted({board_id:t,imageDTO:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[],a=xd(n);if(s.push(r(ye.util.updateQueryData("getImageDTO",n.image_name,l=>{Object.assign(l,{board_id:t})}))),!n.is_intermediate){s.push(r(ye.util.updateQueryData("listImages",{board_id:n.board_id??"none",categories:a},f=>{const h=f.total,m=lr.removeOne(f,n.image_name).total-h;f.total=f.total+m})));const l={board_id:t??"none",categories:a},u=ye.endpoints.listImages.select(l)(o()),c=u.data&&u.data.ids.length>=u.data.total,d=o_(u.data,n);(c||d)&&s.push(r(ye.util.updateQueryData("listImages",l,f=>{const h=f.total,m=lr.addOne(f,n).total-h;f.total=f.total+m})))}try{await i}catch{s.forEach(l=>l.undo())}}}),removeImageFromBoard:e.mutation({query:({imageDTO:t})=>{const{board_id:n,image_name:r}=t;return{url:"board_images/",method:"DELETE",body:{board_id:n,image_name:r}}},invalidatesTags:(t,n,{imageDTO:r})=>[{type:"Board",id:r.board_id},{type:"BoardImagesTotal",id:r.board_id},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:r.board_id},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted({imageDTO:t},{dispatch:n,queryFulfilled:r,getState:i}){const o=xd(t),s=[];s.push(n(ye.util.updateQueryData("getImageDTO",t.image_name,d=>{Object.assign(d,{board_id:void 0})}))),s.push(n(ye.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:o},d=>{const f=d.total,p=lr.removeOne(d,t.image_name).total-f;d.total=d.total+p})));const a={board_id:"none",categories:o},l=ye.endpoints.listImages.select(a)(i()),u=l.data&&l.data.ids.length>=l.data.total,c=o_(l.data,t);(u||c)&&s.push(n(ye.util.updateQueryData("listImages",a,d=>{const f=d.total,p=lr.upsertOne(d,t).total-f;d.total=d.total+p})));try{await r}catch{s.forEach(d=>d.undo())}}})})}),{useGetIntermediatesCountQuery:g6e,useListImagesQuery:m6e,useLazyListImagesQuery:y6e,useGetImageDTOQuery:v6e,useGetImageMetadataQuery:b6e,useDeleteImageMutation:S6e,useGetBoardImagesTotalQuery:_6e,useGetBoardAssetsTotalQuery:w6e,useUploadImageMutation:x6e,useAddImageToBoardMutation:C6e,useRemoveImageFromBoardMutation:T6e,useClearIntermediatesMutation:E6e}=ye,xL=me("socket/socketConnected"),CL=me("socket/appSocketConnected"),TL=me("socket/socketDisconnected"),EL=me("socket/appSocketDisconnected"),l3=me("socket/socketSubscribed"),PL=me("socket/appSocketSubscribed"),kL=me("socket/socketUnsubscribed"),AL=me("socket/appSocketUnsubscribed"),OL=me("socket/socketInvocationStarted"),RL=me("socket/appSocketInvocationStarted"),u3=me("socket/socketInvocationComplete"),IL=me("socket/appSocketInvocationComplete"),ML=me("socket/socketInvocationError"),c3=me("socket/appSocketInvocationError"),NL=me("socket/socketGraphExecutionStateComplete"),DL=me("socket/appSocketGraphExecutionStateComplete"),LL=me("socket/socketGeneratorProgress"),$L=me("socket/appSocketGeneratorProgress"),FL=me("socket/socketModelLoadStarted"),ppe=me("socket/appSocketModelLoadStarted"),BL=me("socket/socketModelLoadCompleted"),gpe=me("socket/appSocketModelLoadCompleted"),d3=me("controlNet/imageProcessed"),gu={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"}}},yg={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"},m8={isEnabled:!0,model:null,weight:1,beginStepPct:0,endStepPct:1,controlMode:"balanced",resizeMode:"just_resize",controlImage:null,processedControlImage:null,processorType:"canny_image_processor",processorNode:gu.canny_image_processor.default,shouldAutoConfig:!0},Uw={controlNets:{},isEnabled:!1,pendingControlImages:[]},jL=zt({name:"controlNet",initialState:Uw,reducers:{isControlNetEnabledToggled:e=>{e.isEnabled=!e.isEnabled},controlNetAdded:(e,t)=>{const{controlNetId:n,controlNet:r}=t.payload;e.controlNets[n]={...r??m8,controlNetId:n}},controlNetDuplicated:(e,t)=>{const{sourceControlNetId:n,newControlNetId:r}=t.payload,i=Yn(e.controlNets[n]);i.controlNetId=r,e.controlNets[r]=i},controlNetAddedFromImage:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n]={...m8,controlNetId:n,controlImage:r}},controlNetRemoved:(e,t)=>{const{controlNetId:n}=t.payload;delete e.controlNets[n]},controlNetToggled:(e,t)=>{const{controlNetId:n}=t.payload;e.controlNets[n].isEnabled=!e.controlNets[n].isEnabled},controlNetImageChanged:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n].controlImage=r,e.controlNets[n].processedControlImage=null,r!==null&&e.controlNets[n].processorType!=="none"&&e.pendingControlImages.push(n)},controlNetProcessedImageChanged:(e,t)=>{const{controlNetId:n,processedControlImage:r}=t.payload;e.controlNets[n].processedControlImage=r,e.pendingControlImages=e.pendingControlImages.filter(i=>i!==n)},controlNetModelChanged:(e,t)=>{const{controlNetId:n,model:r}=t.payload;if(e.controlNets[n].model=r,e.controlNets[n].processedControlImage=null,e.controlNets[n].shouldAutoConfig){let i;for(const o in yg)if(r.model_name.includes(o)){i=yg[o];break}i?(e.controlNets[n].processorType=i,e.controlNets[n].processorNode=gu[i].default):(e.controlNets[n].processorType="none",e.controlNets[n].processorNode=gu.none.default)}},controlNetWeightChanged:(e,t)=>{const{controlNetId:n,weight:r}=t.payload;e.controlNets[n].weight=r},controlNetBeginStepPctChanged:(e,t)=>{const{controlNetId:n,beginStepPct:r}=t.payload;e.controlNets[n].beginStepPct=r},controlNetEndStepPctChanged:(e,t)=>{const{controlNetId:n,endStepPct:r}=t.payload;e.controlNets[n].endStepPct=r},controlNetControlModeChanged:(e,t)=>{const{controlNetId:n,controlMode:r}=t.payload;e.controlNets[n].controlMode=r},controlNetResizeModeChanged:(e,t)=>{const{controlNetId:n,resizeMode:r}=t.payload;e.controlNets[n].resizeMode=r},controlNetProcessorParamsChanged:(e,t)=>{const{controlNetId:n,changes:r}=t.payload,i=e.controlNets[n].processorNode;e.controlNets[n].processorNode={...i,...r},e.controlNets[n].shouldAutoConfig=!1},controlNetProcessorTypeChanged:(e,t)=>{const{controlNetId:n,processorType:r}=t.payload;e.controlNets[n].processedControlImage=null,e.controlNets[n].processorType=r,e.controlNets[n].processorNode=gu[r].default,e.controlNets[n].shouldAutoConfig=!1},controlNetAutoConfigToggled:(e,t)=>{var i;const{controlNetId:n}=t.payload,r=!e.controlNets[n].shouldAutoConfig;if(r){let o;for(const s in yg)if((i=e.controlNets[n].model)!=null&&i.model_name.includes(s)){o=yg[s];break}o?(e.controlNets[n].processorType=o,e.controlNets[n].processorNode=gu[o].default):(e.controlNets[n].processorType="none",e.controlNets[n].processorNode=gu.none.default)}e.controlNets[n].shouldAutoConfig=r},controlNetReset:()=>({...Uw})},extraReducers:e=>{e.addCase(d3,(t,n)=>{t.controlNets[n.payload.controlNetId].controlImage!==null&&t.pendingControlImages.push(n.payload.controlNetId)}),e.addCase(c3,(t,n)=>{t.pendingControlImages=[]}),e.addMatcher(XD,(t,n)=>{t.pendingControlImages=[]}),e.addMatcher(ye.endpoints.deleteImage.matchFulfilled,(t,n)=>{const{image_name:r}=n.meta.arg.originalArgs;bc(t.controlNets,i=>{i.controlImage===r&&(i.controlImage=null,i.processedControlImage=null),i.processedControlImage===r&&(i.processedControlImage=null)})})}}),{isControlNetEnabledToggled:P6e,controlNetAdded:k6e,controlNetDuplicated:A6e,controlNetAddedFromImage:O6e,controlNetRemoved:VL,controlNetImageChanged:f3,controlNetProcessedImageChanged:mpe,controlNetToggled:R6e,controlNetModelChanged:y8,controlNetWeightChanged:I6e,controlNetBeginStepPctChanged:M6e,controlNetEndStepPctChanged:N6e,controlNetControlModeChanged:D6e,controlNetResizeModeChanged:L6e,controlNetProcessorParamsChanged:ype,controlNetProcessorTypeChanged:vpe,controlNetReset:zL,controlNetAutoConfigToggled:v8}=jL.actions,bpe=jL.reducer,$6e=e=>e.controlNet,UL={isEnabled:!1,maxPrompts:100,combinatorial:!0},Spe=UL,GL=zt({name:"dynamicPrompts",initialState:Spe,reducers:{maxPromptsChanged:(e,t)=>{e.maxPrompts=t.payload},maxPromptsReset:e=>{e.maxPrompts=UL.maxPrompts},combinatorialToggled:e=>{e.combinatorial=!e.combinatorial},isEnabledToggled:e=>{e.isEnabled=!e.isEnabled}},extraReducers:e=>{}}),{isEnabledToggled:F6e,maxPromptsChanged:B6e,maxPromptsReset:j6e,combinatorialToggled:V6e}=GL.actions,_pe=GL.reducer,wpe={updateBoardModalOpen:!1,searchText:""},HL=zt({name:"boards",initialState:wpe,reducers:{setBoardSearchText:(e,t)=>{e.searchText=t.payload},setUpdateBoardModalOpen:(e,t)=>{e.updateBoardModalOpen=t.payload}}}),{setBoardSearchText:z6e,setUpdateBoardModalOpen:U6e}=HL.actions,xpe=HL.reducer,Cpe={imageToDelete:null,isModalOpen:!1},qL=zt({name:"imageDeletion",initialState:Cpe,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imageToDeleteSelected:(e,t)=>{e.imageToDelete=t.payload},imageToDeleteCleared:e=>{e.imageToDelete=null,e.isModalOpen=!1}}}),{isModalOpenChanged:WL,imageToDeleteSelected:Tpe,imageToDeleteCleared:G6e}=qL.actions,Epe=qL.reducer,KL=(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.some(f=>Au(f.data.inputs,h=>{var p;return h.type==="image"&&((p=h.value)==null?void 0:p.image_name)===t})),u=Au(o.controlNets,f=>f.controlImage===t||f.processedControlImage===t);return{isInitialImage:s,isCanvasImage:a,isNodesImage:l,isControlNetImage:u}},Ppe=Vn([e=>e],e=>{const{imageToDelete:t}=e.imageDeletion;if(!t)return;const{image_name:n}=t;return KL(e,n)},Kc),YL=me("imageDeletion/imageDeletionConfirmed"),b8={weight:.75},kpe={loras:{}},XL=zt({name:"lora",initialState:kpe,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,...b8}},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;e.loras[n].weight=r},loraWeightReset:(e,t)=>{const n=t.payload;e.loras[n].weight=b8.weight}}}),{loraAdded:H6e,loraRemoved:QL,loraWeightChanged:q6e,loraWeightReset:W6e,lorasCleared:K6e}=XL.actions,Ape=XL.reducer;function _i(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},Ope=e=>e?S8(e):S8,{useSyncExternalStoreWithSelector:Rpe}=LU;function Ipe(e,t=e.getState,n){const r=Rpe(e.subscribe,e.getState,e.getServerState||e.getState,t,n);return E.useDebugValue(r),r}function Dr(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}})}ym.prototype=f1.prototype={constructor:ym,on:function(e,t){var n=this._,r=Npe(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)),w8.hasOwnProperty(t)?{space:w8[t],local:e}:e}function Lpe(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Gw&&t.documentElement.namespaceURI===Gw?t.createElement(e):t.createElementNS(n,e)}}function $pe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function ZL(e){var t=h1(e);return(t.local?$pe:Lpe)(t)}function Fpe(){}function h3(e){return e==null?Fpe:function(){return this.querySelector(e)}}function Bpe(e){typeof e!="function"&&(e=h3(e));for(var t=this._groups,n=t.length,r=new Array(n),i=0;i=g&&(g=y+1);!(_=S[g])&&++g=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function cge(e){e||(e=dge);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 fge(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function hge(){return Array.from(this)}function pge(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?Tge:typeof t=="function"?Pge:Ege)(e,t,n??"")):Ic(this.node(),e)}function Ic(e,t){return e.style.getPropertyValue(t)||r$(e).getComputedStyle(e,null).getPropertyValue(t)}function Age(e){return function(){delete this[e]}}function Oge(e,t){return function(){this[e]=t}}function Rge(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Ige(e,t){return arguments.length>1?this.each((t==null?Age:typeof t=="function"?Rge:Oge)(e,t)):this.node()[e]}function i$(e){return e.trim().split(/^|\s+/)}function p3(e){return e.classList||new o$(e)}function o$(e){this._node=e,this._names=i$(e.getAttribute("class")||"")}o$.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 s$(e,t){for(var n=p3(e),r=-1,i=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function sme(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,o;n()=>e;function Hw(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}})}Hw.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function mme(e){return!e.ctrlKey&&!e.button}function yme(){return this.parentNode}function vme(e,t){return t??{x:e.x,y:e.y}}function bme(){return navigator.maxTouchPoints||"ontouchstart"in this}function Sme(){var e=mme,t=yme,n=vme,r=bme,i={},o=f1("start","drag","end"),s=0,a,l,u,c,d=0;function f(b){b.on("mousedown.drag",h).filter(r).on("touchstart.drag",S).on("touchmove.drag",v,gme).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(b,_){if(!(c||!e.call(this,b,_))){var w=g(this,t.call(this,b,_),b,_,"mouse");w&&(Oi(b.view).on("mousemove.drag",p,Sh).on("mouseup.drag",m,Sh),c$(b.view),s_(b),u=!1,a=b.clientX,l=b.clientY,w("start",b))}}function p(b){if(Ju(b),!u){var _=b.clientX-a,w=b.clientY-l;u=_*_+w*w>d}i.mouse("drag",b)}function m(b){Oi(b.view).on("mousemove.drag mouseup.drag",null),d$(b.view,u),Ju(b),i.mouse("end",b)}function S(b,_){if(e.call(this,b,_)){var w=b.changedTouches,x=t.call(this,b,_),C=w.length,k,P;for(k=0;k>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?bg(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?bg(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=wme.exec(e))?new Er(t[1],t[2],t[3],1):(t=xme.exec(e))?new Er(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Cme.exec(e))?bg(t[1],t[2],t[3],t[4]):(t=Tme.exec(e))?bg(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Eme.exec(e))?A8(t[1],t[2]/100,t[3]/100,1):(t=Pme.exec(e))?A8(t[1],t[2]/100,t[3]/100,t[4]):x8.hasOwnProperty(e)?E8(x8[e]):e==="transparent"?new Er(NaN,NaN,NaN,0):null}function E8(e){return new Er(e>>16&255,e>>8&255,e&255,1)}function bg(e,t,n,r){return r<=0&&(e=t=n=NaN),new Er(e,t,n,r)}function Ome(e){return e instanceof bp||(e=xh(e)),e?(e=e.rgb(),new Er(e.r,e.g,e.b,e.opacity)):new Er}function qw(e,t,n,r){return arguments.length===1?Ome(e):new Er(e,t,n,r??1)}function Er(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}g3(Er,qw,f$(bp,{brighter(e){return e=e==null?Hy:Math.pow(Hy,e),new Er(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?_h:Math.pow(_h,e),new Er(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Er(ll(this.r),ll(this.g),ll(this.b),qy(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:P8,formatHex:P8,formatHex8:Rme,formatRgb:k8,toString:k8}));function P8(){return`#${el(this.r)}${el(this.g)}${el(this.b)}`}function Rme(){return`#${el(this.r)}${el(this.g)}${el(this.b)}${el((isNaN(this.opacity)?1:this.opacity)*255)}`}function k8(){const e=qy(this.opacity);return`${e===1?"rgb(":"rgba("}${ll(this.r)}, ${ll(this.g)}, ${ll(this.b)}${e===1?")":`, ${e})`}`}function qy(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ll(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function el(e){return e=ll(e),(e<16?"0":"")+e.toString(16)}function A8(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ri(e,t,n,r)}function h$(e){if(e instanceof Ri)return new Ri(e.h,e.s,e.l,e.opacity);if(e instanceof bp||(e=xh(e)),!e)return new Ri;if(e instanceof Ri)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 Ri(s,a,l,e.opacity)}function Ime(e,t,n,r){return arguments.length===1?h$(e):new Ri(e,t,n,r??1)}function Ri(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}g3(Ri,Ime,f$(bp,{brighter(e){return e=e==null?Hy:Math.pow(Hy,e),new Ri(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?_h:Math.pow(_h,e),new Ri(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 Er(a_(e>=240?e-240:e+120,i,r),a_(e,i,r),a_(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ri(O8(this.h),Sg(this.s),Sg(this.l),qy(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=qy(this.opacity);return`${e===1?"hsl(":"hsla("}${O8(this.h)}, ${Sg(this.s)*100}%, ${Sg(this.l)*100}%${e===1?")":`, ${e})`}`}}));function O8(e){return e=(e||0)%360,e<0?e+360:e}function Sg(e){return Math.max(0,Math.min(1,e||0))}function a_(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 p$=e=>()=>e;function Mme(e,t){return function(n){return e+n*t}}function Nme(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 Dme(e){return(e=+e)==1?g$:function(t,n){return n-t?Nme(t,n,e):p$(isNaN(t)?n:t)}}function g$(e,t){var n=t-e;return n?Mme(e,n):p$(isNaN(e)?t:e)}const R8=function e(t){var n=Dme(t);function r(i,o){var s=n((i=qw(i)).r,(o=qw(o)).r),a=n(i.g,o.g),l=n(i.b,o.b),u=g$(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 Ds(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var Ww=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,l_=new RegExp(Ww.source,"g");function Lme(e){return function(){return e}}function $me(e){return function(t){return e(t)+""}}function Fme(e,t){var n=Ww.lastIndex=l_.lastIndex=0,r,i,o,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=Ww.exec(e))&&(i=l_.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:Ds(r,i)})),n=l_.lastIndex;return n180?c+=360:c-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:Ds(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:Ds(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:Ds(u,d)},{i:m-2,x:Ds(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,S;++p=0&&e._call.call(void 0,t),e=e._next;--Mc}function N8(){_l=(Ky=Ch.now())+p1,Mc=qd=0;try{Kme()}finally{Mc=0,Xme(),_l=0}}function Yme(){var e=Ch.now(),t=e-Ky;t>v$&&(p1-=t,Ky=e)}function Xme(){for(var e,t=Wy,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:Wy=n);Wd=e,Yw(r)}function Yw(e){if(!Mc){qd&&(qd=clearTimeout(qd));var t=e-_l;t>24?(e<1/0&&(qd=setTimeout(N8,e-Ch.now()-p1)),Cd&&(Cd=clearInterval(Cd))):(Cd||(Ky=Ch.now(),Cd=setInterval(Yme,v$)),Mc=1,b$(N8))}}function D8(e,t,n){var r=new Yy;return t=t==null?0:+t,r.restart(i=>{r.stop(),e(i+t)},t,n),r}var Qme=f1("start","end","cancel","interrupt"),Zme=[],_$=0,L8=1,Xw=2,vm=3,$8=4,Qw=5,bm=6;function g1(e,t,n,r,i,o){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Jme(e,n,{name:t,index:r,group:i,on:Qme,tween:Zme,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:_$})}function y3(e,t){var n=qi(e,t);if(n.state>_$)throw new Error("too late; already scheduled");return n}function Oo(e,t){var n=qi(e,t);if(n.state>vm)throw new Error("too late; already running");return n}function qi(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Jme(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=S$(o,0,n.time);function o(u){n.state=L8,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!==L8)return l();for(c in r)if(h=r[c],h.name===n.name){if(h.state===vm)return D8(s);h.state===$8?(h.state=bm,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[c]):+cXw&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function Aye(e,t,n){var r,i,o=kye(t)?y3:Oo;return function(){var s=o(this,e),a=s.on;a!==r&&(i=(r=a).copy()).on(t,n),s.on=i}}function Oye(e,t){var n=this._id;return arguments.length<2?qi(this.node(),n).on.on(e):this.each(Aye(n,e,t))}function Rye(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Iye(){return this.on("end.remove",Rye(this._id))}function Mye(e){var t=this._name,n=this._id;typeof e!="function"&&(e=h3(e));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s()=>e;function i0e(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 Zo(e,t,n){this.k=e,this.x=t,this.y=n}Zo.prototype={constructor:Zo,scale:function(e){return e===1?this:new Zo(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Zo(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 ia=new Zo(1,0,0);Zo.prototype;function u_(e){e.stopImmediatePropagation()}function Td(e){e.preventDefault(),e.stopImmediatePropagation()}function o0e(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function s0e(){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 F8(){return this.__zoom||ia}function a0e(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function l0e(){return navigator.maxTouchPoints||"ontouchstart"in this}function u0e(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 c0e(){var e=o0e,t=s0e,n=u0e,r=a0e,i=l0e,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=qme,u=f1("start","zoom","end"),c,d,f,h=500,p=150,m=0,S=10;function v(T){T.property("__zoom",F8).on("wheel.zoom",C,{passive:!1}).on("mousedown.zoom",k).on("dblclick.zoom",P).filter(i).on("touchstart.zoom",A).on("touchmove.zoom",$).on("touchend.zoom touchcancel.zoom",N).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}v.transform=function(T,O,I,M){var R=T.selection?T.selection():T;R.property("__zoom",F8),T!==R?_(T,O,I,M):R.interrupt().each(function(){w(this,arguments).event(M).start().zoom(null,typeof O=="function"?O.apply(this,arguments):O).end()})},v.scaleBy=function(T,O,I,M){v.scaleTo(T,function(){var R=this.__zoom.k,D=typeof O=="function"?O.apply(this,arguments):O;return R*D},I,M)},v.scaleTo=function(T,O,I,M){v.transform(T,function(){var R=t.apply(this,arguments),D=this.__zoom,L=I==null?b(R):typeof I=="function"?I.apply(this,arguments):I,V=D.invert(L),z=typeof O=="function"?O.apply(this,arguments):O;return n(g(y(D,z),L,V),R,s)},I,M)},v.translateBy=function(T,O,I,M){v.transform(T,function(){return n(this.__zoom.translate(typeof O=="function"?O.apply(this,arguments):O,typeof I=="function"?I.apply(this,arguments):I),t.apply(this,arguments),s)},null,M)},v.translateTo=function(T,O,I,M,R){v.transform(T,function(){var D=t.apply(this,arguments),L=this.__zoom,V=M==null?b(D):typeof M=="function"?M.apply(this,arguments):M;return n(ia.translate(V[0],V[1]).scale(L.k).translate(typeof O=="function"?-O.apply(this,arguments):-O,typeof I=="function"?-I.apply(this,arguments):-I),D,s)},M,R)};function y(T,O){return O=Math.max(o[0],Math.min(o[1],O)),O===T.k?T:new Zo(O,T.x,T.y)}function g(T,O,I){var M=O[0]-I[0]*T.k,R=O[1]-I[1]*T.k;return M===T.x&&R===T.y?T:new Zo(T.k,M,R)}function b(T){return[(+T[0][0]+ +T[1][0])/2,(+T[0][1]+ +T[1][1])/2]}function _(T,O,I,M){T.on("start.zoom",function(){w(this,arguments).event(M).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event(M).end()}).tween("zoom",function(){var R=this,D=arguments,L=w(R,D).event(M),V=t.apply(R,D),z=I==null?b(V):typeof I=="function"?I.apply(R,D):I,U=Math.max(V[1][0]-V[0][0],V[1][1]-V[0][1]),K=R.__zoom,W=typeof O=="function"?O.apply(R,D):O,X=l(K.invert(z).concat(U/K.k),W.invert(z).concat(U/W.k));return function(F){if(F===1)F=W;else{var q=X(F),Q=U/q[2];F=new Zo(Q,z[0]-q[0]*Q,z[1]-q[1]*Q)}L.zoom(null,F)}})}function w(T,O,I){return!I&&T.__zooming||new x(T,O)}function x(T,O){this.that=T,this.args=O,this.active=0,this.sourceEvent=null,this.extent=t.apply(T,O),this.taps=0}x.prototype={event:function(T){return T&&(this.sourceEvent=T),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(T,O){return this.mouse&&T!=="mouse"&&(this.mouse[1]=O.invert(this.mouse[0])),this.touch0&&T!=="touch"&&(this.touch0[1]=O.invert(this.touch0[0])),this.touch1&&T!=="touch"&&(this.touch1[1]=O.invert(this.touch1[0])),this.that.__zoom=O,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(T){var O=Oi(this.that).datum();u.call(T,this.that,new i0e(T,{sourceEvent:this.sourceEvent,target:v,type:T,transform:this.that.__zoom,dispatch:u}),O)}};function C(T,...O){if(!e.apply(this,arguments))return;var I=w(this,O).event(T),M=this.__zoom,R=Math.max(o[0],Math.min(o[1],M.k*Math.pow(2,r.apply(this,arguments)))),D=Ji(T);if(I.wheel)(I.mouse[0][0]!==D[0]||I.mouse[0][1]!==D[1])&&(I.mouse[1]=M.invert(I.mouse[0]=D)),clearTimeout(I.wheel);else{if(M.k===R)return;I.mouse=[D,M.invert(D)],Sm(this),I.start()}Td(T),I.wheel=setTimeout(L,p),I.zoom("mouse",n(g(y(M,R),I.mouse[0],I.mouse[1]),I.extent,s));function L(){I.wheel=null,I.end()}}function k(T,...O){if(f||!e.apply(this,arguments))return;var I=T.currentTarget,M=w(this,O,!0).event(T),R=Oi(T.view).on("mousemove.zoom",z,!0).on("mouseup.zoom",U,!0),D=Ji(T,I),L=T.clientX,V=T.clientY;c$(T.view),u_(T),M.mouse=[D,this.__zoom.invert(D)],Sm(this),M.start();function z(K){if(Td(K),!M.moved){var W=K.clientX-L,X=K.clientY-V;M.moved=W*W+X*X>m}M.event(K).zoom("mouse",n(g(M.that.__zoom,M.mouse[0]=Ji(K,I),M.mouse[1]),M.extent,s))}function U(K){R.on("mousemove.zoom mouseup.zoom",null),d$(K.view,M.moved),Td(K),M.event(K).end()}}function P(T,...O){if(e.apply(this,arguments)){var I=this.__zoom,M=Ji(T.changedTouches?T.changedTouches[0]:T,this),R=I.invert(M),D=I.k*(T.shiftKey?.5:2),L=n(g(y(I,D),M,R),t.apply(this,O),s);Td(T),a>0?Oi(this).transition().duration(a).call(_,L,M,T):Oi(this).call(v.transform,L,M,T)}}function A(T,...O){if(e.apply(this,arguments)){var I=T.touches,M=I.length,R=w(this,O,T.changedTouches.length===M).event(T),D,L,V,z;for(u_(T),L=0;L"[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".`},T$=va.error001();function Kt(e,t){const n=E.useContext(m1);if(n===null)throw new Error(T$);return Ipe(n,e,t)}const tr=()=>{const e=E.useContext(m1);if(e===null)throw new Error(T$);return E.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},f0e=e=>e.userSelectionActive?"none":"all";function h0e({position:e,children:t,className:n,style:r,...i}){const o=Kt(f0e),s=`${e}`.split("-");return j.jsx("div",{className:_i(["react-flow__panel",n,...s]),style:{...r,pointerEvents:o},...i,children:t})}function p0e({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:j.jsx(h0e,{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:j.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const g0e=({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=E.useRef(null),[f,h]=E.useState({x:0,y:0,width:0,height:0}),p=_i(["react-flow__edge-textwrapper",u]);return E.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:j.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:p,visibility:f.width?"visible":"hidden",...c,children:[i&&j.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}),j.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:d,style:r,children:n}),l]})};var m0e=E.memo(g0e);const b3=e=>({width:e.offsetWidth,height:e.offsetHeight}),Nc=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),S3=(e={x:0,y:0},t)=>({x:Nc(e.x,t[0][0],t[1][0]),y:Nc(e.y,t[0][1],t[1][1])}),B8=(e,t,n)=>en?-Nc(Math.abs(e-n),1,50)/50:0,E$=(e,t)=>{const n=B8(e.x,35,t.width-35)*20,r=B8(e.y,35,t.height-35)*20;return[n,r]},P$=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},k$=(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)}),Xy=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),A$=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),j8=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),Y6e=(e,t)=>A$(k$(Xy(e),Xy(t))),Zw=(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)},y0e=e=>ci(e.width)&&ci(e.height)&&ci(e.x)&&ci(e.y),ci=e=>!isNaN(e)&&isFinite(e),hn=Symbol.for("internals"),O$=["Enter"," ","Escape"],v0e=(e,t)=>{},b0e=e=>"nativeEvent"in e;function Jw(e){var i,o;const t=b0e(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 R$=e=>"clientX"in e,oa=(e,t)=>{var o,s;const n=R$(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)}},Sp=({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})=>j.jsxs(j.Fragment,{children:[j.jsx("path",{id:e,style:c,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:f}),h&&j.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),i&&ci(n)&&ci(r)?j.jsx(m0e,{x:n,y:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u}):null]});Sp.displayName="BaseEdge";function Ed(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(o=>o.id===e);i&&n(r,{...i})}}function I$({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(n-e)/2,o=n{const[S,v,y]=N$({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o});return j.jsx(Sp,{path:S,labelX:v,labelY:y,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:m})});_3.displayName="SimpleBezierEdge";const z8={[ve.Left]:{x:-1,y:0},[ve.Right]:{x:1,y:0},[ve.Top]:{x:0,y:-1},[ve.Bottom]:{x:0,y:1}},S0e=({source:e,sourcePosition:t=ve.Bottom,target:n})=>t===ve.Left||t===ve.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function _0e({source:e,sourcePosition:t=ve.Bottom,target:n,targetPosition:r=ve.Top,center:i,offset:o}){const s=z8[t],a=z8[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=S0e({source:l,sourcePosition:t,target:u}),d=c.x!==0?"x":"y",f=c[d];let h=[],p,m;const[S,v,y,g]=I$({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[d]*a[d]===-1){p=i.x||S,m=i.y||v;const _=[{x:p,y:l.y},{x:p,y:u.y}],w=[{x:l.x,y:m},{x:u.x,y:m}];s[d]===f?h=d==="x"?_:w:h=d==="x"?w:_}else{const _=[{x:l.x,y:u.y}],w=[{x:u.x,y:l.y}];if(d==="x"?h=s.x===f?w:_:h=s.y===f?_:w,t!==r){const x=d==="x"?"y":"x",C=s[d]===a[x],k=l[x]>u[x],P=l[x]{let g="";return y>0&&y{const[v,y,g]=ex({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 j.jsx(Sp,{path:v,labelX:y,labelY:g,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:h,markerStart:p,interactionWidth:S})});y1.displayName="SmoothStepEdge";const w3=E.memo(e=>{var t;return j.jsx(y1,{...e,pathOptions:E.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});w3.displayName="StepEdge";function x0e({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,o,s,a]=I$({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,o,s,a]}const x3=E.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,S]=x0e({sourceX:e,sourceY:t,targetX:n,targetY:r});return j.jsx(Sp,{path:p,labelX:m,labelY:S,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})});x3.displayName="StraightEdge";function xg(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function G8({pos:e,x1:t,y1:n,x2:r,y2:i,c:o}){switch(e){case ve.Left:return[t-xg(t-r,o),n];case ve.Right:return[t+xg(r-t,o),n];case ve.Top:return[t,n-xg(n-i,o)];case ve.Bottom:return[t,n+xg(i-n,o)]}}function D$({sourceX:e,sourceY:t,sourcePosition:n=ve.Bottom,targetX:r,targetY:i,targetPosition:o=ve.Top,curvature:s=.25}){const[a,l]=G8({pos:n,x1:e,y1:t,x2:r,y2:i,c:s}),[u,c]=G8({pos:o,x1:r,y1:i,x2:e,y2:t,c:s}),[d,f,h,p]=M$({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 Zy=E.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i=ve.Bottom,targetPosition:o=ve.Top,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,pathOptions:m,interactionWidth:S})=>{const[v,y,g]=D$({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o,curvature:m==null?void 0:m.curvature});return j.jsx(Sp,{path:v,labelX:y,labelY:g,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:S})});Zy.displayName="BezierEdge";const C3=E.createContext(null),C0e=C3.Provider;C3.Consumer;const T0e=()=>E.useContext(C3),E0e=e=>"id"in e&&"source"in e&&"target"in e,P0e=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,tx=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,k0e=(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)),L$=(e,t)=>{if(!e.source||!e.target)return t;let n;return E0e(e)?n={...e}:n={...e,id:P0e(e)},k0e(n,t)?t:t.concat(n)},$$=({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},A0e=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r}),nc=(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}},F$=(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}=nc(i,t).positionAbsolute;return k$(r,Xy({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 A$(n)},B$=(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}=nc(c,a),S={x:m.x,y:m.y,width:d||0,height:f||0},v=Zw(l,S),y=typeof d>"u"||typeof f>"u"||d===null||f===null,g=o&&v>0,b=(d||0)*(f||0);(y||g||v>=b||c.dragging)&&u.push(c)}),u},j$=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},V$=(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=Nc(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]},qa=(e,t=0)=>e.transition().duration(t);function H8(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 O0e(e,t,n,r,i,o){const{x:s,y:a}=oa(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=T3(void 0,u),S=u.getAttribute("data-handleid"),v=o({nodeId:p,id:S,type:m});if(v)return{handle:{id:S,type:m,nodeId:p,x:n.x,y:n.y},validHandleResult:v}}}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 S=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 R0e={source:null,target:null,sourceHandle:null,targetHandle:null},z$=()=>({handleDomNode:null,isValid:!1,connection:R0e,endHandle:null});function U$(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={...z$(),handleDomNode:l};if(l){const c=T3(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===wl.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 I0e({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((i,o)=>{if(o[hn]){const{handleBounds:s}=o[hn];let a=[],l=[];s&&(a=H8(o,s,"source",`${t}-${n}-${r}`),l=H8(o,s,"target",`${t}-${n}-${r}`)),i.push(...a,...l)}return i},[])}function T3(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function c_(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function M0e(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function G$({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState:o,setState:s,isValidConnection:a,edgeUpdaterType:l,onEdgeUpdateEnd:u}){const c=P$(e.target),{connectionMode:d,domNode:f,autoPanOnConnect:h,connectionRadius:p,onConnectStart:m,panBy:S,getNodes:v,cancelConnection:y}=o();let g=0,b;const{x:_,y:w}=oa(e),x=c==null?void 0:c.elementFromPoint(_,w),C=T3(l,x),k=f==null?void 0:f.getBoundingClientRect();if(!k||!C)return;let P,A=oa(e,k),$=!1,N=null,T=!1,O=null;const I=I0e({nodes:v(),nodeId:n,handleId:t,handleType:C}),M=()=>{if(!h)return;const[L,V]=E$(A,k);S({x:L,y:V}),g=requestAnimationFrame(M)};s({connectionPosition:A,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(L){const{transform:V}=o();A=oa(L,k);const{handle:z,validHandleResult:U}=O0e(L,c,$$(A,V,!1,[1,1]),p,I,K=>U$(K,d,n,t,i?"target":"source",a,c));if(b=z,$||(M(),$=!0),O=U.handleDomNode,N=U.connection,T=U.isValid,s({connectionPosition:b&&T?A0e({x:b.x,y:b.y},V):A,connectionStatus:M0e(!!b,T),connectionEndHandle:U.endHandle}),!b&&!T&&!O)return c_(P);N.source!==N.target&&O&&(c_(P),P=O,O.classList.add("connecting","react-flow__handle-connecting"),O.classList.toggle("valid",T),O.classList.toggle("react-flow__handle-valid",T))}function D(L){var V,z;(b||O)&&N&&T&&(r==null||r(N)),(z=(V=o()).onConnectEnd)==null||z.call(V,L),l&&(u==null||u(L)),c_(P),y(),cancelAnimationFrame(g),$=!1,T=!1,N=null,O=null,c.removeEventListener("mousemove",R),c.removeEventListener("mouseup",D),c.removeEventListener("touchmove",R),c.removeEventListener("touchend",D)}c.addEventListener("mousemove",R),c.addEventListener("mouseup",D),c.addEventListener("touchmove",R),c.addEventListener("touchend",D)}const q8=()=>!0,N0e=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),D0e=(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}},H$=E.forwardRef(({type:e="source",position:t=ve.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 k,P;const p=s||null,m=e==="target",S=tr(),v=T0e(),{connectOnClick:y,noPanClassName:g}=Kt(N0e,Dr),{connecting:b,clickConnecting:_}=Kt(D0e(v,p,e),Dr);v||(P=(k=S.getState()).onError)==null||P.call(k,"010",va.error010());const w=A=>{const{defaultEdgeOptions:$,onConnect:N,hasDefaultEdges:T}=S.getState(),O={...$,...A};if(T){const{edges:I,setEdges:M}=S.getState();M(L$(O,I))}N==null||N(O),a==null||a(O)},x=A=>{if(!v)return;const $=R$(A);i&&($&&A.button===0||!$)&&G$({event:A,handleId:p,nodeId:v,onConnect:w,isTarget:m,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||q8}),$?c==null||c(A):d==null||d(A)},C=A=>{const{onClickConnectStart:$,onClickConnectEnd:N,connectionClickStartHandle:T,connectionMode:O,isValidConnection:I}=S.getState();if(!v||!T&&!i)return;if(!T){$==null||$(A,{nodeId:v,handleId:p,handleType:e}),S.setState({connectionClickStartHandle:{nodeId:v,type:e,handleId:p}});return}const M=P$(A.target),R=n||I||q8,{connection:D,isValid:L}=U$({nodeId:v,id:p,type:e},O,T.nodeId,T.handleId||null,T.type,R,M);L&&w(D),N==null||N(A),S.setState({connectionClickStartHandle:null})};return j.jsx("div",{"data-handleid":p,"data-nodeid":v,"data-handlepos":t,"data-id":`${v}-${p}-${e}`,className:_i(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,u,{source:!m,target:m,connectable:r,connectablestart:i,connectableend:o,connecting:_,connectionindicator:r&&(i&&!b||o&&b)}]),onMouseDown:x,onTouchStart:x,onClick:y?C:void 0,ref:h,...f,children:l})});H$.displayName="Handle";var Jy=E.memo(H$);const q$=({data:e,isConnectable:t,targetPosition:n=ve.Top,sourcePosition:r=ve.Bottom})=>j.jsxs(j.Fragment,{children:[j.jsx(Jy,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,j.jsx(Jy,{type:"source",position:r,isConnectable:t})]});q$.displayName="DefaultNode";var nx=E.memo(q$);const W$=({data:e,isConnectable:t,sourcePosition:n=ve.Bottom})=>j.jsxs(j.Fragment,{children:[e==null?void 0:e.label,j.jsx(Jy,{type:"source",position:n,isConnectable:t})]});W$.displayName="InputNode";var K$=E.memo(W$);const Y$=({data:e,isConnectable:t,targetPosition:n=ve.Top})=>j.jsxs(j.Fragment,{children:[j.jsx(Jy,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]});Y$.displayName="OutputNode";var X$=E.memo(Y$);const E3=()=>null;E3.displayName="GroupNode";const L0e=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected)}),Cg=e=>e.id;function $0e(e,t){return Dr(e.selectedNodes.map(Cg),t.selectedNodes.map(Cg))&&Dr(e.selectedEdges.map(Cg),t.selectedEdges.map(Cg))}const Q$=E.memo(({onSelectionChange:e})=>{const t=tr(),{selectedNodes:n,selectedEdges:r}=Kt(L0e,$0e);return E.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});Q$.displayName="SelectionListener";const F0e=e=>!!e.onSelectionChange;function B0e({onSelectionChange:e}){const t=Kt(F0e);return e||t?j.jsx(Q$,{onSelectionChange:e}):null}const j0e=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 tu(e,t){E.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function $e(e,t,n){E.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const V0e=({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:S,nodeExtent:v,onNodesChange:y,onEdgesChange:g,elementsSelectable:b,connectionMode:_,snapGrid:w,snapToGrid:x,translateExtent:C,connectOnClick:k,defaultEdgeOptions:P,fitView:A,fitViewOptions:$,onNodesDelete:N,onEdgesDelete:T,onNodeDrag:O,onNodeDragStart:I,onNodeDragStop:M,onSelectionDrag:R,onSelectionDragStart:D,onSelectionDragStop:L,noPanClassName:V,nodeOrigin:z,rfId:U,autoPanOnConnect:K,autoPanOnNodeDrag:W,onError:X,connectionRadius:F,isValidConnection:q})=>{const{setNodes:Q,setEdges:J,setDefaultNodesAndEdges:ne,setMinZoom:Z,setMaxZoom:ge,setTranslateExtent:ae,setNodeExtent:oe,reset:Te}=Kt(j0e,Dr),se=tr();return E.useEffect(()=>{const We=r==null?void 0:r.map(yt=>({...yt,...P}));return ne(n,We),()=>{Te()}},[]),$e("defaultEdgeOptions",P,se.setState),$e("connectionMode",_,se.setState),$e("onConnect",i,se.setState),$e("onConnectStart",o,se.setState),$e("onConnectEnd",s,se.setState),$e("onClickConnectStart",a,se.setState),$e("onClickConnectEnd",l,se.setState),$e("nodesDraggable",u,se.setState),$e("nodesConnectable",c,se.setState),$e("nodesFocusable",d,se.setState),$e("edgesFocusable",f,se.setState),$e("edgesUpdatable",h,se.setState),$e("elementsSelectable",b,se.setState),$e("elevateNodesOnSelect",p,se.setState),$e("snapToGrid",x,se.setState),$e("snapGrid",w,se.setState),$e("onNodesChange",y,se.setState),$e("onEdgesChange",g,se.setState),$e("connectOnClick",k,se.setState),$e("fitViewOnInit",A,se.setState),$e("fitViewOnInitOptions",$,se.setState),$e("onNodesDelete",N,se.setState),$e("onEdgesDelete",T,se.setState),$e("onNodeDrag",O,se.setState),$e("onNodeDragStart",I,se.setState),$e("onNodeDragStop",M,se.setState),$e("onSelectionDrag",R,se.setState),$e("onSelectionDragStart",D,se.setState),$e("onSelectionDragStop",L,se.setState),$e("noPanClassName",V,se.setState),$e("nodeOrigin",z,se.setState),$e("rfId",U,se.setState),$e("autoPanOnConnect",K,se.setState),$e("autoPanOnNodeDrag",W,se.setState),$e("onError",X,se.setState),$e("connectionRadius",F,se.setState),$e("isValidConnection",q,se.setState),tu(e,Q),tu(t,J),tu(m,Z),tu(S,ge),tu(C,ae),tu(v,oe),null},W8={display:"none"},z0e={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},Z$="react-flow__node-desc",J$="react-flow__edge-desc",U0e="react-flow__aria-live",G0e=e=>e.ariaLiveMessage;function H0e({rfId:e}){const t=Kt(G0e);return j.jsx("div",{id:`${U0e}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:z0e,children:t})}function q0e({rfId:e,disableKeyboardA11y:t}){return j.jsxs(j.Fragment,{children:[j.jsxs("div",{id:`${Z$}-${e}`,style:W8,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."," "]}),j.jsx("div",{id:`${J$}-${e}`,style:W8,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&j.jsx(H0e,{rfId:e})]})}const W0e=(e,t,n)=>n===ve.Left?e-t:n===ve.Right?e+t:e,K0e=(e,t,n)=>n===ve.Top?e-t:n===ve.Bottom?e+t:e,K8="react-flow__edgeupdater",Y8=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:o,onMouseOut:s,type:a})=>j.jsx("circle",{onMouseDown:i,onMouseEnter:o,onMouseOut:s,className:_i([K8,`${K8}-${a}`]),cx:W0e(t,r,e),cy:K0e(n,r,e),r,stroke:"transparent",fill:"transparent"}),Y0e=()=>!0;var nu=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:S,source:v,target:y,sourceX:g,sourceY:b,targetX:_,targetY:w,sourcePosition:x,targetPosition:C,elementsSelectable:k,hidden:P,sourceHandleId:A,targetHandleId:$,onContextMenu:N,onMouseEnter:T,onMouseMove:O,onMouseLeave:I,edgeUpdaterRadius:M,onEdgeUpdate:R,onEdgeUpdateStart:D,onEdgeUpdateEnd:L,markerEnd:V,markerStart:z,rfId:U,ariaLabel:K,isFocusable:W,isUpdatable:X,pathOptions:F,interactionWidth:q})=>{const Q=E.useRef(null),[J,ne]=E.useState(!1),[Z,ge]=E.useState(!1),ae=tr(),oe=E.useMemo(()=>`url(#${tx(z,U)})`,[z,U]),Te=E.useMemo(()=>`url(#${tx(V,U)})`,[V,U]);if(P)return null;const se=Ee=>{const{edges:Ne,addSelectedEdges:ie}=ae.getState();if(k&&(ae.setState({nodesSelectionActive:!1}),ie([n])),s){const he=Ne.find(Qt=>Qt.id===n);s(Ee,he)}},We=Ed(n,ae.getState,a),yt=Ed(n,ae.getState,N),Fe=Ed(n,ae.getState,T),Be=Ed(n,ae.getState,O),Me=Ed(n,ae.getState,I),rt=(Ee,Ne)=>{if(Ee.button!==0)return;const{edges:ie,isValidConnection:he}=ae.getState(),Qt=Ne?y:v,Rt=(Ne?$:A)||null,ut=Ne?"target":"source",rr=he||Y0e,Mo=Ne,Qr=ie.find(Ke=>Ke.id===n);ge(!0),D==null||D(Ee,Qr,ut);const No=Ke=>{ge(!1),L==null||L(Ke,Qr,ut)};G$({event:Ee,handleId:Rt,nodeId:Qt,onConnect:Ke=>R==null?void 0:R(Qr,Ke),isTarget:Mo,getState:ae.getState,setState:ae.setState,isValidConnection:rr,edgeUpdaterType:ut,onEdgeUpdateEnd:No})},xt=Ee=>rt(Ee,!0),mn=Ee=>rt(Ee,!1),an=()=>ne(!0),Ot=()=>ne(!1),ee=!k&&!s,_e=Ee=>{var Ne;if(O$.includes(Ee.key)&&k){const{unselectNodesAndEdges:ie,addSelectedEdges:he,edges:Qt}=ae.getState();Ee.key==="Escape"?((Ne=Q.current)==null||Ne.blur(),ie({edges:[Qt.find(ut=>ut.id===n)]})):he([n])}};return j.jsxs("g",{className:_i(["react-flow__edge",`react-flow__edge-${i}`,r,{selected:l,animated:u,inactive:ee,updating:J}]),onClick:se,onDoubleClick:We,onContextMenu:yt,onMouseEnter:Fe,onMouseMove:Be,onMouseLeave:Me,onKeyDown:W?_e:void 0,tabIndex:W?0:void 0,role:W?"button":void 0,"data-testid":`rf__edge-${n}`,"aria-label":K===null?void 0:K||`Edge from ${v} to ${y}`,"aria-describedby":W?`${J$}-${U}`:void 0,ref:Q,children:[!Z&&j.jsx(e,{id:n,source:v,target:y,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,data:o,style:S,sourceX:g,sourceY:b,targetX:_,targetY:w,sourcePosition:x,targetPosition:C,sourceHandleId:A,targetHandleId:$,markerStart:oe,markerEnd:Te,pathOptions:F,interactionWidth:q}),X&&j.jsxs(j.Fragment,{children:[(X==="source"||X===!0)&&j.jsx(Y8,{position:x,centerX:g,centerY:b,radius:M,onMouseDown:xt,onMouseEnter:an,onMouseOut:Ot,type:"source"}),(X==="target"||X===!0)&&j.jsx(Y8,{position:C,centerX:_,centerY:w,radius:M,onMouseDown:mn,onMouseEnter:an,onMouseOut:Ot,type:"target"})]})]})};return t.displayName="EdgeWrapper",E.memo(t)};function X0e(e){const t={default:nu(e.default||Zy),straight:nu(e.bezier||x3),step:nu(e.step||w3),smoothstep:nu(e.step||y1),simplebezier:nu(e.simplebezier||_3)},n={},r=Object.keys(e).filter(i=>!["default","bezier"].includes(i)).reduce((i,o)=>(i[o]=nu(e[o]||Zy),i),n);return{...t,...r}}function X8(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 ve.Top:return{x:r+o/2,y:i};case ve.Right:return{x:r+o,y:i+s/2};case ve.Bottom:return{x:r+o/2,y:i+s};case ve.Left:return{x:r,y:i+s/2}}}function Q8(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Q0e=(e,t,n,r,i,o)=>{const s=X8(n,e,t),a=X8(o,r,i);return{sourceX:s.x,sourceY:s.y,targetX:a.x,targetY:a.y}};function Z0e({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=Xy({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 Z8(e){var r,i,o,s,a;const t=((r=e==null?void 0:e[hn])==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]}function eF(e,t){if(!e.parentNode)return!1;const n=t.get(e.parentNode);return n?n.selected?!0:eF(n,t):!1}function J8(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 J0e(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected||i.id===r)&&(!i.parentNode||!eF(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 eve(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function tF(e,t,n,r,i=[0,0],o){const s=eve(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}=nc(c,i).positionAbsolute;a=c&&ci(d)&&ci(f)&&ci(c.width)&&ci(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",va.error005()),a=s;else if(e.extent&&e.parentNode){const c=n.get(e.parentNode),{x:d,y:f}=nc(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=nc(c,i).positionAbsolute}const u=a?S3(t,a):t;return{position:{x:u.x-l.x,y:u.y-l.y},positionAbsolute:u}}function d_({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 ek=(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,...b3(l)}})};function Pd(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get(e);n(r,{...i})}}function rx({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:i,unselectNodesAndEdges:o,multiSelectionActive:s,nodeInternals:a}=t.getState(),l=a.get(e);t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&s)&&(o({nodes:[l]}),requestAnimationFrame(()=>{var u;return(u=r==null?void 0:r.current)==null?void 0:u.blur()})):i([e])}function tve(){const e=tr();return E.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 f_(e){return(t,n,r)=>e==null?void 0:e(t,r)}function nF({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:o,selectNodesOnDrag:s}){const a=tr(),[l,u]=E.useState(!1),c=E.useRef([]),d=E.useRef({x:null,y:null}),f=E.useRef(0),h=E.useRef(null),p=E.useRef({x:0,y:0}),m=E.useRef(null),S=E.useRef(!1),v=tve();return E.useEffect(()=>{if(e!=null&&e.current){const y=Oi(e.current),g=({x:_,y:w})=>{const{nodeInternals:x,onNodeDrag:C,onSelectionDrag:k,updateNodePositions:P,nodeExtent:A,snapGrid:$,snapToGrid:N,nodeOrigin:T,onError:O}=a.getState();d.current={x:_,y:w};let I=!1;if(c.current=c.current.map(R=>{const D={x:_-R.distance.x,y:w-R.distance.y};N&&(D.x=$[0]*Math.round(D.x/$[0]),D.y=$[1]*Math.round(D.y/$[1]));const L=tF(R,D,x,A,T,O);return I=I||R.position.x!==L.position.x||R.position.y!==L.position.y,R.position=L.position,R.positionAbsolute=L.positionAbsolute,R}),!I)return;P(c.current,!0,!0),u(!0);const M=i?C:f_(k);if(M&&m.current){const[R,D]=d_({nodeId:i,dragItems:c.current,nodeInternals:x});M(m.current,R,D)}},b=()=>{if(!h.current)return;const[_,w]=E$(p.current,h.current);if(_!==0||w!==0){const{transform:x,panBy:C}=a.getState();d.current.x=(d.current.x??0)-_/x[2],d.current.y=(d.current.y??0)-w/x[2],C({x:_,y:w})&&g(d.current)}f.current=requestAnimationFrame(b)};if(t)y.on(".drag",null);else{const _=Sme().on("start",w=>{var I;const{nodeInternals:x,multiSelectionActive:C,domNode:k,nodesDraggable:P,unselectNodesAndEdges:A,onNodeDragStart:$,onSelectionDragStart:N}=a.getState(),T=i?$:f_(N);!s&&!C&&i&&((I=x.get(i))!=null&&I.selected||A()),i&&o&&s&&rx({id:i,store:a,nodeRef:e});const O=v(w);if(d.current=O,c.current=J0e(x,P,O,i),T&&c.current){const[M,R]=d_({nodeId:i,dragItems:c.current,nodeInternals:x});T(w.sourceEvent,M,R)}h.current=(k==null?void 0:k.getBoundingClientRect())||null,p.current=oa(w.sourceEvent,h.current)}).on("drag",w=>{const x=v(w),{autoPanOnNodeDrag:C}=a.getState();!S.current&&C&&(S.current=!0,b()),(d.current.x!==x.xSnapped||d.current.y!==x.ySnapped)&&c.current&&(m.current=w.sourceEvent,p.current=oa(w.sourceEvent,h.current),g(x))}).on("end",w=>{if(u(!1),S.current=!1,cancelAnimationFrame(f.current),c.current){const{updateNodePositions:x,nodeInternals:C,onNodeDragStop:k,onSelectionDragStop:P}=a.getState(),A=i?k:f_(P);if(x(c.current,!1,!1),A){const[$,N]=d_({nodeId:i,dragItems:c.current,nodeInternals:C});A(w.sourceEvent,$,N)}}}).filter(w=>{const x=w.target;return!w.button&&(!n||!J8(x,`.${n}`,e))&&(!r||J8(x,r,e))});return y.call(_),()=>{y.on(".drag",null)}}}},[e,t,n,r,o,a,i,s,v]),l}function rF(){const e=tr();return E.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,S=n.y*h*p,v=d.map(y=>{if(y.positionAbsolute){const g={x:y.positionAbsolute.x+m,y:y.positionAbsolute.y+S};a&&(g.x=l[0]*Math.round(g.x/l[0]),g.y=l[1]*Math.round(g.y/l[1]));const{positionAbsolute:b,position:_}=tF(y,g,r,i,void 0,u);y.position=_,y.positionAbsolute=b}return y});o(v,!0,!1)},[])}const rc={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var kd=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:S,className:v,isDraggable:y,isSelectable:g,isConnectable:b,isFocusable:_,selectNodesOnDrag:w,sourcePosition:x,targetPosition:C,hidden:k,resizeObserver:P,dragHandle:A,zIndex:$,isParent:N,noDragClassName:T,noPanClassName:O,initialized:I,disableKeyboardA11y:M,ariaLabel:R,rfId:D})=>{const L=tr(),V=E.useRef(null),z=E.useRef(x),U=E.useRef(C),K=E.useRef(r),W=g||y||c||d||f||h,X=rF(),F=Pd(n,L.getState,d),q=Pd(n,L.getState,f),Q=Pd(n,L.getState,h),J=Pd(n,L.getState,p),ne=Pd(n,L.getState,m),Z=oe=>{if(g&&(!w||!y)&&rx({id:n,store:L,nodeRef:V}),c){const Te=L.getState().nodeInternals.get(n);c(oe,{...Te})}},ge=oe=>{if(!Jw(oe))if(O$.includes(oe.key)&&g){const Te=oe.key==="Escape";rx({id:n,store:L,unselect:Te,nodeRef:V})}else!M&&y&&u&&Object.prototype.hasOwnProperty.call(rc,oe.key)&&(L.setState({ariaLiveMessage:`Moved selected node ${oe.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~o}, y: ${~~s}`}),X({x:rc[oe.key].x,y:rc[oe.key].y,isShiftPressed:oe.shiftKey}))};E.useEffect(()=>{if(V.current&&!k){const oe=V.current;return P==null||P.observe(oe),()=>P==null?void 0:P.unobserve(oe)}},[k]),E.useEffect(()=>{const oe=K.current!==r,Te=z.current!==x,se=U.current!==C;V.current&&(oe||Te||se)&&(oe&&(K.current=r),Te&&(z.current=x),se&&(U.current=C),L.getState().updateNodeDimensions([{id:n,nodeElement:V.current,forceUpdate:!0}]))},[n,r,x,C]);const ae=nF({nodeRef:V,disabled:k||!y,noDragClassName:T,handleSelector:A,nodeId:n,isSelectable:g,selectNodesOnDrag:w});return k?null:j.jsx("div",{className:_i(["react-flow__node",`react-flow__node-${r}`,{[O]:y},v,{selected:u,selectable:g,parent:N,dragging:ae}]),ref:V,style:{zIndex:$,transform:`translate(${a}px,${l}px)`,pointerEvents:W?"all":"none",visibility:I?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:F,onMouseMove:q,onMouseLeave:Q,onContextMenu:J,onClick:Z,onDoubleClick:ne,onKeyDown:_?ge:void 0,tabIndex:_?0:void 0,role:_?"button":void 0,"aria-describedby":M?void 0:`${Z$}-${D}`,"aria-label":R,children:j.jsx(C0e,{value:n,children:j.jsx(e,{id:n,data:i,type:r,xPos:o,yPos:s,selected:u,isConnectable:b,sourcePosition:x,targetPosition:C,dragging:ae,dragHandle:A,zIndex:$})})})};return t.displayName="NodeWrapper",E.memo(t)};function nve(e){const t={input:kd(e.input||K$),default:kd(e.default||nx),output:kd(e.output||X$),group:kd(e.group||E3)},n={},r=Object.keys(e).filter(i=>!["input","default","output","group"].includes(i)).reduce((i,o)=>(i[o]=kd(e[o]||nx),i),n);return{...t,...r}}const rve=({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]},ive=typeof document<"u"?document:null;var Eh=(e=null,t={target:ive})=>{const[n,r]=E.useState(!1),i=E.useRef(!1),o=E.useRef(new Set([])),[s,a]=E.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 E.useEffect(()=>{var l,u;if(e!==null){const c=h=>{if(i.current=h.ctrlKey||h.metaKey||h.shiftKey,!i.current&&Jw(h))return!1;const p=nk(h.code,a);o.current.add(h[p]),tk(s,o.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if(!i.current&&Jw(h))return!1;const p=nk(h.code,a);tk(s,o.current,!0)?(r(!1),o.current.clear()):o.current.delete(h[p]),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 tk(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(i=>t.has(i)))}function nk(e,t){return t.includes(e)?"code":"key"}function iF(e,t,n,r){var s,a;if(!e.parentNode)return n;const i=t.get(e.parentNode),o=nc(i,r);return iF(i,t,{x:(n.x??0)+o.x,y:(n.y??0)+o.y,z:(((s=i[hn])==null?void 0:s.z)??0)>(n.z??0)?((a=i[hn])==null?void 0:a.z)??0:n.z??0},r)}function oF(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}=iF(r,e,{...r.position,z:((i=r[hn])==null?void 0:i.z)??0},t);r.positionAbsolute={x:o,y:s},r[hn].z=a,n!=null&&n[r.id]&&(r[hn].isParent=!0)}})}function h_(e,t,n,r){const i=new Map,o={},s=r?1e3:0;return e.forEach(a=>{var d;const l=(ci(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,hn,{enumerable:!1,value:{handleBounds:(d=u==null?void 0:u[hn])==null?void 0:d.handleBounds,z:l}}),i.set(a.id,c)}),oF(i,n,o),i}function sF(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(S=>{var y;const v=t.includeHiddenNodes?S.width&&S.height:!S.hidden;return(y=t.nodes)!=null&&y.length?v&&t.nodes.some(g=>g.id===S.id):v}),m=p.every(S=>S.width&&S.height);if(p.length>0&&m){const S=F$(p,d),[v,y,g]=V$(S,r,i,t.minZoom??o,t.maxZoom??s,t.padding??.1),b=ia.translate(v,y).scale(g);return typeof t.duration=="number"&&t.duration>0?a.transform(qa(l,t.duration),b):a.transform(l,b),!0}}return!1}function ove(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[hn]:r[hn],selected:n.selected})}),new Map(t)}function sve(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return r&&(n.selected=r.selected),n})}function Tg({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:ove(e,i)}),s==null||s(e)),t!=null&&t.length&&(u&&r({edges:sve(t,o)}),a==null||a(t))}const ru=()=>{},ave={zoomIn:ru,zoomOut:ru,zoomTo:ru,getZoom:()=>1,setViewport:ru,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:ru,fitBounds:ru,project:e=>e,viewportInitialized:!1},lve=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),uve=()=>{const e=tr(),{d3Zoom:t,d3Selection:n}=Kt(lve,Dr);return E.useMemo(()=>n&&t?{zoomIn:i=>t.scaleBy(qa(n,i==null?void 0:i.duration),1.2),zoomOut:i=>t.scaleBy(qa(n,i==null?void 0:i.duration),1/1.2),zoomTo:(i,o)=>t.scaleTo(qa(n,o==null?void 0:o.duration),i),getZoom:()=>e.getState().transform[2],setViewport:(i,o)=>{const[s,a,l]=e.getState().transform,u=ia.translate(i.x??s,i.y??a).scale(i.zoom??l);t.transform(qa(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=>sF(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=ia.translate(d,f).scale(c);t.transform(qa(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]=V$(i,s,a,l,u,(o==null?void 0:o.padding)??.1),h=ia.translate(c,d).scale(f);t.transform(qa(n,o==null?void 0:o.duration),h)},project:i=>{const{transform:o,snapToGrid:s,snapGrid:a}=e.getState();return $$(i,o,s,a)},viewportInitialized:!0}:ave,[t,n])};function aF(){const e=uve(),t=tr(),n=E.useCallback(()=>t.getState().getNodes().map(m=>({...m})),[]),r=E.useCallback(m=>t.getState().nodeInternals.get(m),[]),i=E.useCallback(()=>{const{edges:m=[]}=t.getState();return m.map(S=>({...S}))},[]),o=E.useCallback(m=>{const{edges:S=[]}=t.getState();return S.find(v=>v.id===m)},[]),s=E.useCallback(m=>{const{getNodes:S,setNodes:v,hasDefaultNodes:y,onNodesChange:g}=t.getState(),b=S(),_=typeof m=="function"?m(b):m;if(y)v(_);else if(g){const w=_.length===0?b.map(x=>({type:"remove",id:x.id})):_.map(x=>({item:x,type:"reset"}));g(w)}},[]),a=E.useCallback(m=>{const{edges:S=[],setEdges:v,hasDefaultEdges:y,onEdgesChange:g}=t.getState(),b=typeof m=="function"?m(S):m;if(y)v(b);else if(g){const _=b.length===0?S.map(w=>({type:"remove",id:w.id})):b.map(w=>({item:w,type:"reset"}));g(_)}},[]),l=E.useCallback(m=>{const S=Array.isArray(m)?m:[m],{getNodes:v,setNodes:y,hasDefaultNodes:g,onNodesChange:b}=t.getState();if(g){const w=[...v(),...S];y(w)}else if(b){const _=S.map(w=>({item:w,type:"add"}));b(_)}},[]),u=E.useCallback(m=>{const S=Array.isArray(m)?m:[m],{edges:v=[],setEdges:y,hasDefaultEdges:g,onEdgesChange:b}=t.getState();if(g)y([...v,...S]);else if(b){const _=S.map(w=>({item:w,type:"add"}));b(_)}},[]),c=E.useCallback(()=>{const{getNodes:m,edges:S=[],transform:v}=t.getState(),[y,g,b]=v;return{nodes:m().map(_=>({..._})),edges:S.map(_=>({..._})),viewport:{x:y,y:g,zoom:b}}},[]),d=E.useCallback(({nodes:m,edges:S})=>{const{nodeInternals:v,getNodes:y,edges:g,hasDefaultNodes:b,hasDefaultEdges:_,onNodesDelete:w,onEdgesDelete:x,onNodesChange:C,onEdgesChange:k}=t.getState(),P=(m||[]).map(O=>O.id),A=(S||[]).map(O=>O.id),$=y().reduce((O,I)=>{const M=!P.includes(I.id)&&I.parentNode&&O.find(D=>D.id===I.parentNode);return(typeof I.deletable=="boolean"?I.deletable:!0)&&(P.includes(I.id)||M)&&O.push(I),O},[]),N=g.filter(O=>typeof O.deletable=="boolean"?O.deletable:!0),T=N.filter(O=>A.includes(O.id));if($||T){const O=j$($,N),I=[...T,...O],M=I.reduce((R,D)=>(R.includes(D.id)||R.push(D.id),R),[]);if((_||b)&&(_&&t.setState({edges:g.filter(R=>!M.includes(R.id))}),b&&($.forEach(R=>{v.delete(R.id)}),t.setState({nodeInternals:new Map(v)}))),M.length>0&&(x==null||x(I),k&&k(M.map(R=>({id:R,type:"remove"})))),$.length>0&&(w==null||w($),C)){const R=$.map(D=>({id:D.id,type:"remove"}));C(R)}}},[]),f=E.useCallback(m=>{const S=y0e(m),v=S?null:t.getState().nodeInternals.get(m.id);return[S?m:j8(v),v,S]},[]),h=E.useCallback((m,S=!0,v)=>{const[y,g,b]=f(m);return y?(v||t.getState().getNodes()).filter(_=>{if(!b&&(_.id===g.id||!_.positionAbsolute))return!1;const w=j8(_),x=Zw(w,y);return S&&x>0||x>=m.width*m.height}):[]},[]),p=E.useCallback((m,S,v=!0)=>{const[y]=f(m);if(!y)return!1;const g=Zw(y,S);return v&&g>0||g>=m.width*m.height},[]);return E.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 cve=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=tr(),{deleteElements:r}=aF(),i=Eh(e),o=Eh(t);E.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]),E.useEffect(()=>{n.setState({multiSelectionActive:o})},[o])};function dve(e){const t=tr();E.useEffect(()=>{let n;const r=()=>{var o,s;if(!e.current)return;const i=b3(e.current);(i.height===0||i.width===0)&&((s=(o=t.getState()).onError)==null||s.call(o,"004",va.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 P3={position:"absolute",width:"100%",height:"100%",top:0,left:0},fve=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,p_=e=>({x:e.x,y:e.y,zoom:e.k}),iu=(e,t)=>e.target.closest(`.${t}`),rk=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),hve=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),pve=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:i=!0,zoomOnPinch:o=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=tc.Free,zoomOnDoubleClick:u=!0,elementsSelectable:c,panOnDrag:d=!0,defaultViewport:f,translateExtent:h,minZoom:p,maxZoom:m,zoomActivationKeyCode:S,preventScrolling:v=!0,children:y,noWheelClassName:g,noPanClassName:b})=>{const _=E.useRef(),w=tr(),x=E.useRef(!1),C=E.useRef(!1),k=E.useRef(null),P=E.useRef({x:0,y:0,zoom:0}),{d3Zoom:A,d3Selection:$,d3ZoomHandler:N,userSelectionActive:T}=Kt(hve,Dr),O=Eh(S),I=E.useRef(0);return dve(k),E.useEffect(()=>{if(k.current){const M=k.current.getBoundingClientRect(),R=c0e().scaleExtent([p,m]).translateExtent(h),D=Oi(k.current).call(R),L=ia.translate(f.x,f.y).scale(Nc(f.zoom,p,m)),V=[[0,0],[M.width,M.height]],z=R.constrain()(L,V,h);R.transform(D,z),w.setState({d3Zoom:R,d3Selection:D,d3ZoomHandler:D.on("wheel.zoom"),transform:[z.x,z.y,z.k],domNode:k.current.closest(".react-flow")})}},[]),E.useEffect(()=>{$&&A&&(s&&!O&&!T?$.on("wheel.zoom",M=>{if(iu(M,g))return!1;M.preventDefault(),M.stopImmediatePropagation();const R=$.property("__zoom").k||1;if(M.ctrlKey&&o){const z=Ji(M),U=-M.deltaY*(M.deltaMode===1?.05:M.deltaMode?1:.002)*10,K=R*Math.pow(2,U);A.scaleTo($,K,z);return}const D=M.deltaMode===1?20:1,L=l===tc.Vertical?0:M.deltaX*D,V=l===tc.Horizontal?0:M.deltaY*D;A.translateBy($,-(L/R)*a,-(V/R)*a)},{passive:!1}):typeof N<"u"&&$.on("wheel.zoom",function(M,R){if(!v||iu(M,g))return null;M.preventDefault(),N.call(this,M,R)},{passive:!1}))},[T,s,l,$,A,N,O,o,v,g]),E.useEffect(()=>{A&&A.on("start",M=>{var D;if(!M.sourceEvent)return null;I.current=M.sourceEvent.button;const{onViewportChangeStart:R}=w.getState();if(x.current=!0,((D=M.sourceEvent)==null?void 0:D.type)==="mousedown"&&w.setState({paneDragging:!0}),t||R){const L=p_(M.transform);P.current=L,R==null||R(L),t==null||t(M.sourceEvent,L)}})},[A,t]),E.useEffect(()=>{A&&(T&&!x.current?A.on("zoom",null):T||A.on("zoom",M=>{const{onViewportChange:R}=w.getState();if(w.setState({transform:[M.transform.x,M.transform.y,M.transform.k]}),C.current=!!(r&&rk(d,I.current??0)),e||R){const D=p_(M.transform);R==null||R(D),e==null||e(M.sourceEvent,D)}}))},[T,A,e,d,r]),E.useEffect(()=>{A&&A.on("end",M=>{if(!M.sourceEvent)return null;const{onViewportChangeEnd:R}=w.getState();if(x.current=!1,w.setState({paneDragging:!1}),r&&rk(d,I.current??0)&&!C.current&&r(M.sourceEvent),C.current=!1,(n||R)&&fve(P.current,M.transform)){const D=p_(M.transform);P.current=D,clearTimeout(_.current),_.current=setTimeout(()=>{R==null||R(D),n==null||n(M.sourceEvent,D)},s?150:0)}})},[A,s,d,n,r]),E.useEffect(()=>{A&&A.filter(M=>{const R=O||i,D=o&&M.ctrlKey;if(M.button===1&&M.type==="mousedown"&&(iu(M,"react-flow__node")||iu(M,"react-flow__edge")))return!0;if(!d&&!R&&!s&&!u&&!o||T||!u&&M.type==="dblclick"||iu(M,g)&&M.type==="wheel"||iu(M,b)&&M.type!=="wheel"||!o&&M.ctrlKey&&M.type==="wheel"||!R&&!s&&!D&&M.type==="wheel"||!d&&(M.type==="mousedown"||M.type==="touchstart")||Array.isArray(d)&&!d.includes(M.button)&&(M.type==="mousedown"||M.type==="touchstart"))return!1;const L=Array.isArray(d)&&d.includes(M.button)||!M.button||M.button<=1;return(!M.ctrlKey||M.type==="wheel")&&L})},[T,A,i,o,s,u,d,c,O]),j.jsx("div",{className:"react-flow__renderer",ref:k,style:P3,children:y})},gve=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function mve(){const{userSelectionActive:e,userSelectionRect:t}=Kt(gve,Dr);return e&&t?j.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 ik(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 lF(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&&ik(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&&ik(r,s);break}case"remove":return r}return r.push(s),r},n)}function uF(e,t){return lF(e,t)}function yve(e,t){return lF(e,t)}const Ls=(e,t)=>({id:e,type:"select",selected:t});function Du(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return!r.selected&&i?(r.selected=!0,n.push(Ls(r.id,!0))):r.selected&&!i&&(r.selected=!1,n.push(Ls(r.id,!1))),n},[])}const g_=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},vve=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),cF=E.memo(({isSelecting:e,selectionMode:t=Th.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:i,onPaneClick:o,onPaneContextMenu:s,onPaneScroll:a,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:c,children:d})=>{const f=E.useRef(null),h=tr(),p=E.useRef(0),m=E.useRef(0),S=E.useRef(),{userSelectionActive:v,elementsSelectable:y,dragging:g}=Kt(vve,Dr),b=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),p.current=0,m.current=0},_=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:T,domNode:O}=h.getState();if(S.current=O==null?void 0:O.getBoundingClientRect(),!y||!e||N.button!==0||N.target!==f.current||!S.current)return;const{x:I,y:M}=oa(N,S.current);T(),h.setState({userSelectionRect:{width:0,height:0,startX:I,startY:M,x:I,y:M}}),r==null||r(N)},k=N=>{const{userSelectionRect:T,nodeInternals:O,edges:I,transform:M,onNodesChange:R,onEdgesChange:D,nodeOrigin:L,getNodes:V}=h.getState();if(!e||!S.current||!T)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const z=oa(N,S.current),U=T.startX??0,K=T.startY??0,W={...T,x:z.xJ.id),Q=F.map(J=>J.id);if(p.current!==Q.length){p.current=Q.length;const J=Du(X,Q);J.length&&(R==null||R(J))}if(m.current!==q.length){m.current=q.length;const J=Du(I,q);J.length&&(D==null||D(J))}h.setState({userSelectionRect:W})},P=N=>{if(N.button!==0)return;const{userSelectionRect:T}=h.getState();!v&&T&&N.target===f.current&&(_==null||_(N)),h.setState({nodesSelectionActive:p.current>0}),b(),i==null||i(N)},A=N=>{v&&(h.setState({nodesSelectionActive:p.current>0}),i==null||i(N)),b()},$=y&&(e||v);return j.jsxs("div",{className:_i(["react-flow__pane",{dragging:g,selection:e}]),onClick:$?void 0:g_(_,f),onContextMenu:g_(w,f),onWheel:g_(x,f),onMouseEnter:$?void 0:l,onMouseDown:$?C:void 0,onMouseMove:$?k:u,onMouseUp:$?P:void 0,onMouseLeave:$?A:c,ref:f,style:P3,children:[d,j.jsx(mve,{})]})});cF.displayName="Pane";const bve=e=>{const t=e.getNodes().filter(n=>n.selected);return{...F$(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function Sve({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=tr(),{width:i,height:o,x:s,y:a,transformString:l,userSelectionActive:u}=Kt(bve,Dr),c=rF(),d=E.useRef(null);if(E.useEffect(()=>{var p;n||(p=d.current)==null||p.focus({preventScroll:!0})},[n]),nF({nodeRef:d}),u||!i||!o)return null;const f=e?p=>{const m=r.getState().getNodes().filter(S=>S.selected);e(p,m)}:void 0,h=p=>{Object.prototype.hasOwnProperty.call(rc,p.key)&&c({x:rc[p.key].x,y:rc[p.key].y,isShiftPressed:p.shiftKey})};return j.jsx("div",{className:_i(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l},children:j.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 _ve=E.memo(Sve);const wve=e=>e.nodesSelectionActive,dF=({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:S,panActivationKeyCode:v,zoomActivationKeyCode:y,elementsSelectable:g,zoomOnScroll:b,zoomOnPinch:_,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:C,zoomOnDoubleClick:k,panOnDrag:P,defaultViewport:A,translateExtent:$,minZoom:N,maxZoom:T,preventScrolling:O,onSelectionContextMenu:I,noWheelClassName:M,noPanClassName:R,disableKeyboardA11y:D})=>{const L=Kt(wve),V=Eh(d),U=Eh(v)||P,K=V||f&&U!==!0;return cve({deleteKeyCode:a,multiSelectionKeyCode:S}),j.jsx(pve,{onMove:l,onMoveStart:u,onMoveEnd:c,onPaneContextMenu:o,elementsSelectable:g,zoomOnScroll:b,zoomOnPinch:_,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:C,zoomOnDoubleClick:k,panOnDrag:!V&&U,defaultViewport:A,translateExtent:$,minZoom:N,maxZoom:T,zoomActivationKeyCode:y,preventScrolling:O,noWheelClassName:M,noPanClassName:R,children:j.jsxs(cF,{onSelectionStart:p,onSelectionEnd:m,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,panOnDrag:U,isSelecting:!!K,selectionMode:h,children:[e,L&&j.jsx(_ve,{onSelectionContextMenu:I,noPanClassName:R,disableKeyboardA11y:D})]})})};dF.displayName="FlowRenderer";var xve=E.memo(dF);function Cve(e){return Kt(E.useCallback(n=>e?B$(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}const Tve=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),fF=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,updateNodeDimensions:o,onError:s}=Kt(Tve,Dr),a=Cve(e.onlyRenderVisibleElements),l=E.useRef(),u=E.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 E.useEffect(()=>()=>{var c;(c=l==null?void 0:l.current)==null||c.disconnect()},[]),j.jsx("div",{className:"react-flow__nodes",style:P3,children:a.map(c=>{var _,w;let d=c.type||"default";e.nodeTypes[d]||(s==null||s("003",va.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"),S=!!(c.focusable||r&&typeof c.focusable>"u"),v=e.nodeExtent?S3(c.positionAbsolute,e.nodeExtent):c.positionAbsolute,y=(v==null?void 0:v.x)??0,g=(v==null?void 0:v.y)??0,b=rve({x:y,y:g,width:c.width??0,height:c.height??0,origin:e.nodeOrigin});return j.jsx(f,{id:c.id,className:c.className,style:c.style,type:d,data:c.data,sourcePosition:c.sourcePosition||ve.Bottom,targetPosition:c.targetPosition||ve.Top,hidden:c.hidden,xPos:y,yPos:g,xPosOrigin:b.x,yPosOrigin:b.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:S,resizeObserver:u,dragHandle:c.dragHandle,zIndex:((_=c[hn])==null?void 0:_.z)??0,isParent:!!((w=c[hn])!=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)})})};fF.displayName="NodeRenderer";var Eve=E.memo(fF);const Pve=[{level:0,isMaxLevel:!0,edges:[]}];function kve(e,t,n=!1){let r=-1;const i=e.reduce((s,a)=>{var c,d;const l=ci(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[hn])==null?void 0:c.z)||0,((d=f==null?void 0:f[hn])==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?Pve:o}function Ave(e,t,n){const r=Kt(E.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)&&Z0e({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 kve(r,t,n)}const Ove=({color:e="none",strokeWidth:t=1})=>j.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:"none",points:"-5,-4 0,0 -5,4"}),Rve=({color:e="none",strokeWidth:t=1})=>j.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:e,points:"-5,-4 0,0 -5,4 -5,-4"}),ok={[Qy.Arrow]:Ove,[Qy.ArrowClosed]:Rve};function Ive(e){const t=tr();return E.useMemo(()=>{var i,o;return Object.prototype.hasOwnProperty.call(ok,e)?ok[e]:((o=(i=t.getState()).onError)==null||o.call(i,"009",va.error009(e)),null)},[e])}const Mve=({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=Ive(t);return l?j.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:j.jsx(l,{color:n,strokeWidth:s})}):null},Nve=({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=tx(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))},hF=({defaultColor:e,rfId:t})=>{const n=Kt(E.useCallback(Nve({defaultColor:e,rfId:t}),[e,t]),(r,i)=>!(r.length!==i.length||r.some((o,s)=>o.id!==i[s].id)));return j.jsx("defs",{children:n.map(r=>j.jsx(Mve,{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))})};hF.displayName="MarkerDefinitions";var Dve=E.memo(hF);const Lve=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}),pF=({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:S})=>{const{edgesFocusable:v,edgesUpdatable:y,elementsSelectable:g,width:b,height:_,connectionMode:w,nodeInternals:x,onError:C}=Kt(Lve,Dr),k=Ave(t,x,n);return b?j.jsxs(j.Fragment,{children:[k.map(({level:P,edges:A,isMaxLevel:$})=>j.jsxs("svg",{style:{zIndex:P},width:b,height:_,className:"react-flow__edges react-flow__container",children:[$&&j.jsx(Dve,{defaultColor:e,rfId:r}),j.jsx("g",{children:A.map(N=>{const[T,O,I]=Z8(x.get(N.source)),[M,R,D]=Z8(x.get(N.target));if(!I||!D)return null;let L=N.type||"default";i[L]||(C==null||C("011",va.error011(L)),L="default");const V=i[L]||i.default,z=w===wl.Strict?R.target:(R.target??[]).concat(R.source??[]),U=Q8(O.source,N.sourceHandle),K=Q8(z,N.targetHandle),W=(U==null?void 0:U.position)||ve.Bottom,X=(K==null?void 0:K.position)||ve.Top,F=!!(N.focusable||v&&typeof N.focusable>"u"),q=typeof s<"u"&&(N.updatable||y&&typeof N.updatable>"u");if(!U||!K)return C==null||C("008",va.error008(U,N)),null;const{sourceX:Q,sourceY:J,targetX:ne,targetY:Z}=Q0e(T,U,W,M,K,X);return j.jsx(V,{id:N.id,className:_i([N.className,o]),type:L,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:Q,sourceY:J,targetX:ne,targetY:Z,sourcePosition:W,targetPosition:X,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:F,isUpdatable:q,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth},N.id)})})]},P)),S]}):null};pF.displayName="EdgeRenderer";var $ve=E.memo(pF);const Fve=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Bve({children:e}){const t=Kt(Fve);return j.jsx("div",{className:"react-flow__viewport react-flow__container",style:{transform:t},children:e})}function jve(e){const t=aF(),n=E.useRef(!1);E.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const Vve={[ve.Left]:ve.Right,[ve.Right]:ve.Left,[ve.Top]:ve.Bottom,[ve.Bottom]:ve.Top},gF=({nodeId:e,handleType:t,style:n,type:r=Vs.Bezier,CustomComponent:i,connectionStatus:o})=>{var w,x,C;const{fromNode:s,handleId:a,toX:l,toY:u,connectionMode:c}=Kt(E.useCallback(k=>({fromNode:k.nodeInternals.get(e),handleId:k.connectionHandleId,toX:(k.connectionPosition.x-k.transform[0])/k.transform[2],toY:(k.connectionPosition.y-k.transform[1])/k.transform[2],connectionMode:k.connectionMode}),[e]),Dr),d=(w=s==null?void 0:s[hn])==null?void 0:w.handleBounds;let f=d==null?void 0:d[t];if(c===wl.Loose&&(f=f||(d==null?void 0:d[t==="source"?"target":"source"])),!s||!f)return null;const h=a?f.find(k=>k.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,S=(((x=s.positionAbsolute)==null?void 0:x.x)??0)+p,v=(((C=s.positionAbsolute)==null?void 0:C.y)??0)+m,y=h==null?void 0:h.position,g=y?Vve[y]:null;if(!y||!g)return null;if(i)return j.jsx(i,{connectionLineType:r,connectionLineStyle:n,fromNode:s,fromHandle:h,fromX:S,fromY:v,toX:l,toY:u,fromPosition:y,toPosition:g,connectionStatus:o});let b="";const _={sourceX:S,sourceY:v,sourcePosition:y,targetX:l,targetY:u,targetPosition:g};return r===Vs.Bezier?[b]=D$(_):r===Vs.Step?[b]=ex({..._,borderRadius:0}):r===Vs.SmoothStep?[b]=ex(_):r===Vs.SimpleBezier?[b]=N$(_):b=`M${S},${v} ${l},${u}`,j.jsx("path",{d:b,fill:"none",className:"react-flow__connection-path",style:n})};gF.displayName="ConnectionLine";const zve=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function Uve({containerStyle:e,style:t,type:n,component:r}){const{nodeId:i,handleType:o,nodesConnectable:s,width:a,height:l,connectionStatus:u}=Kt(zve,Dr);return!(i&&o&&a&&s)?null:j.jsx("svg",{style:e,width:a,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container",children:j.jsx("g",{className:_i(["react-flow__connection",u]),children:j.jsx(gF,{nodeId:i,handleType:o,style:t,type:n,CustomComponent:r,connectionStatus:u})})})}const mF=({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:S,connectionLineType:v,connectionLineStyle:y,connectionLineComponent:g,connectionLineContainerStyle:b,selectionKeyCode:_,selectionOnDrag:w,selectionMode:x,multiSelectionKeyCode:C,panActivationKeyCode:k,zoomActivationKeyCode:P,deleteKeyCode:A,onlyRenderVisibleElements:$,elementsSelectable:N,selectNodesOnDrag:T,defaultViewport:O,translateExtent:I,minZoom:M,maxZoom:R,preventScrolling:D,defaultMarkerColor:L,zoomOnScroll:V,zoomOnPinch:z,panOnScroll:U,panOnScrollSpeed:K,panOnScrollMode:W,zoomOnDoubleClick:X,panOnDrag:F,onPaneClick:q,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:Z,onPaneContextMenu:ge,onEdgeUpdate:ae,onEdgeContextMenu:oe,onEdgeMouseEnter:Te,onEdgeMouseMove:se,onEdgeMouseLeave:We,edgeUpdaterRadius:yt,onEdgeUpdateStart:Fe,onEdgeUpdateEnd:Be,noDragClassName:Me,noWheelClassName:rt,noPanClassName:xt,elevateEdgesOnSelect:mn,disableKeyboardA11y:an,nodeOrigin:Ot,nodeExtent:ee,rfId:_e})=>(jve(o),j.jsx(xve,{onPaneClick:q,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:ge,onPaneScroll:Z,deleteKeyCode:A,selectionKeyCode:_,selectionOnDrag:w,selectionMode:x,onSelectionStart:m,onSelectionEnd:S,multiSelectionKeyCode:C,panActivationKeyCode:k,zoomActivationKeyCode:P,elementsSelectable:N,onMove:n,onMoveStart:r,onMoveEnd:i,zoomOnScroll:V,zoomOnPinch:z,zoomOnDoubleClick:X,panOnScroll:U,panOnScrollSpeed:K,panOnScrollMode:W,panOnDrag:F,defaultViewport:O,translateExtent:I,minZoom:M,maxZoom:R,onSelectionContextMenu:p,preventScrolling:D,noDragClassName:Me,noWheelClassName:rt,noPanClassName:xt,disableKeyboardA11y:an,children:j.jsxs(Bve,{children:[j.jsx($ve,{edgeTypes:t,onEdgeClick:a,onEdgeDoubleClick:u,onEdgeUpdate:ae,onlyRenderVisibleElements:$,onEdgeContextMenu:oe,onEdgeMouseEnter:Te,onEdgeMouseMove:se,onEdgeMouseLeave:We,onEdgeUpdateStart:Fe,onEdgeUpdateEnd:Be,edgeUpdaterRadius:yt,defaultMarkerColor:L,noPanClassName:xt,elevateEdgesOnSelect:!!mn,disableKeyboardA11y:an,rfId:_e,children:j.jsx(Uve,{style:y,type:v,component:g,containerStyle:b})}),j.jsx("div",{className:"react-flow__edgelabel-renderer"}),j.jsx(Eve,{nodeTypes:e,onNodeClick:s,onNodeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,selectNodesOnDrag:T,onlyRenderVisibleElements:$,noPanClassName:xt,noDragClassName:Me,disableKeyboardA11y:an,nodeOrigin:Ot,nodeExtent:ee,rfId:_e})]})}));mF.displayName="GraphView";var Gve=E.memo(mF);const ix=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Ps={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:ix,nodeExtent:ix,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:wl.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:v0e,isValidConnection:void 0},Hve=()=>Ope((e,t)=>({...Ps,setNodes:n=>{const{nodeInternals:r,nodeOrigin:i,elevateNodesOnSelect:o}=t();e({nodeInternals:h_(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?h_(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,S)=>{const v=i.get(S.id);if(v){const y=b3(S.nodeElement);!!(y.width&&y.height&&(v.width!==y.width||v.height!==y.height||S.forceUpdate))&&(i.set(v.id,{...v,[hn]:{...v[hn],handleBounds:{source:ek(".source",S.nodeElement,f,u),target:ek(".target",S.nodeElement,f,u)}},...y}),m.push({id:v.id,type:"dimensions",dimensions:y}))}return m},[]);oF(i,u);const p=s||o&&!s&&sF(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=uF(n,a()),c=h_(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=>Ls(l,!0)):(s=Du(o(),n),a=Du(i,[])),Tg({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=>Ls(l,!0)):(s=Du(i,n),a=Du(o(),[])),Tg({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,Ls(c.id,!1))),u=a.map(c=>Ls(c.id,!1));Tg({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=>Ls(a.id,!1)),s=n.filter(a=>a.selected).map(a=>Ls(a.id,!1));Tg({changedNodes:o,changedEdges:s,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(i=>{i.positionAbsolute=S3(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=ia.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:Ps.connectionNodeId,connectionHandleId:Ps.connectionHandleId,connectionHandleType:Ps.connectionHandleType,connectionStatus:Ps.connectionStatus,connectionStartHandle:Ps.connectionStartHandle,connectionEndHandle:Ps.connectionEndHandle}),reset:()=>e({...Ps})})),yF=({children:e})=>{const t=E.useRef(null);return t.current||(t.current=Hve()),j.jsx(d0e,{value:t.current,children:e})};yF.displayName="ReactFlowProvider";const vF=({children:e})=>E.useContext(m1)?j.jsx(j.Fragment,{children:e}):j.jsx(yF,{children:e});vF.displayName="ReactFlowWrapper";function sk(e,t){return E.useRef(null),E.useMemo(()=>t(e),[e])}const qve={input:K$,default:nx,output:X$,group:E3},Wve={default:Zy,straight:x3,step:w3,smoothstep:y1,simplebezier:_3},Kve=[0,0],Yve=[15,15],Xve={x:0,y:0,zoom:1},Qve={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},Zve=E.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:o=qve,edgeTypes:s=Wve,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:S,onClickConnectEnd:v,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:b,onNodeContextMenu:_,onNodeDoubleClick:w,onNodeDragStart:x,onNodeDrag:C,onNodeDragStop:k,onNodesDelete:P,onEdgesDelete:A,onSelectionChange:$,onSelectionDragStart:N,onSelectionDrag:T,onSelectionDragStop:O,onSelectionContextMenu:I,onSelectionStart:M,onSelectionEnd:R,connectionMode:D=wl.Strict,connectionLineType:L=Vs.Bezier,connectionLineStyle:V,connectionLineComponent:z,connectionLineContainerStyle:U,deleteKeyCode:K="Backspace",selectionKeyCode:W="Shift",selectionOnDrag:X=!1,selectionMode:F=Th.Full,panActivationKeyCode:q="Space",multiSelectionKeyCode:Q="Meta",zoomActivationKeyCode:J="Meta",snapToGrid:ne=!1,snapGrid:Z=Yve,onlyRenderVisibleElements:ge=!1,selectNodesOnDrag:ae=!0,nodesDraggable:oe,nodesConnectable:Te,nodesFocusable:se,nodeOrigin:We=Kve,edgesFocusable:yt,edgesUpdatable:Fe,elementsSelectable:Be,defaultViewport:Me=Xve,minZoom:rt=.5,maxZoom:xt=2,translateExtent:mn=ix,preventScrolling:an=!0,nodeExtent:Ot,defaultMarkerColor:ee="#b1b1b7",zoomOnScroll:_e=!0,zoomOnPinch:Ee=!0,panOnScroll:Ne=!1,panOnScrollSpeed:ie=.5,panOnScrollMode:he=tc.Free,zoomOnDoubleClick:Qt=!0,panOnDrag:Rt=!0,onPaneClick:ut,onPaneMouseEnter:rr,onPaneMouseMove:Mo,onPaneMouseLeave:Qr,onPaneScroll:No,onPaneContextMenu:ct,children:Ke,onEdgeUpdate:An,onEdgeContextMenu:yn,onEdgeDoubleClick:Hn,onEdgeMouseEnter:ir,onEdgeMouseMove:br,onEdgeMouseLeave:Ki,onEdgeUpdateStart:or,onEdgeUpdateEnd:On,edgeUpdaterRadius:Do=10,onNodesChange:_s,onEdgesChange:ws,noDragClassName:Hl="nodrag",noWheelClassName:Lo="nowheel",noPanClassName:sr="nopan",fitView:Na=!1,fitViewOptions:Sb,connectOnClick:_b=!0,attributionPosition:wb,proOptions:xb,defaultEdgeOptions:xs,elevateNodesOnSelect:Cb=!0,elevateEdgesOnSelect:Tb=!1,disableKeyboardA11y:Mp=!1,autoPanOnConnect:Eb=!0,autoPanOnNodeDrag:Pb=!0,connectionRadius:kb=20,isValidConnection:id,onError:Ab,style:ql,id:Wl,...Ob},Kl)=>{const Np=sk(o,nve),Rb=sk(s,X0e),od=Wl||"1";return j.jsx("div",{...Ob,style:{...ql,...Qve},ref:Kl,className:_i(["react-flow",i]),"data-testid":"rf__wrapper",id:Wl,children:j.jsxs(vF,{children:[j.jsx(Gve,{onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:b,onNodeContextMenu:_,onNodeDoubleClick:w,nodeTypes:Np,edgeTypes:Rb,connectionLineType:L,connectionLineStyle:V,connectionLineComponent:z,connectionLineContainerStyle:U,selectionKeyCode:W,selectionOnDrag:X,selectionMode:F,deleteKeyCode:K,multiSelectionKeyCode:Q,panActivationKeyCode:q,zoomActivationKeyCode:J,onlyRenderVisibleElements:ge,selectNodesOnDrag:ae,defaultViewport:Me,translateExtent:mn,minZoom:rt,maxZoom:xt,preventScrolling:an,zoomOnScroll:_e,zoomOnPinch:Ee,zoomOnDoubleClick:Qt,panOnScroll:Ne,panOnScrollSpeed:ie,panOnScrollMode:he,panOnDrag:Rt,onPaneClick:ut,onPaneMouseEnter:rr,onPaneMouseMove:Mo,onPaneMouseLeave:Qr,onPaneScroll:No,onPaneContextMenu:ct,onSelectionContextMenu:I,onSelectionStart:M,onSelectionEnd:R,onEdgeUpdate:An,onEdgeContextMenu:yn,onEdgeDoubleClick:Hn,onEdgeMouseEnter:ir,onEdgeMouseMove:br,onEdgeMouseLeave:Ki,onEdgeUpdateStart:or,onEdgeUpdateEnd:On,edgeUpdaterRadius:Do,defaultMarkerColor:ee,noDragClassName:Hl,noWheelClassName:Lo,noPanClassName:sr,elevateEdgesOnSelect:Tb,rfId:od,disableKeyboardA11y:Mp,nodeOrigin:We,nodeExtent:Ot}),j.jsx(V0e,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:S,onClickConnectEnd:v,nodesDraggable:oe,nodesConnectable:Te,nodesFocusable:se,edgesFocusable:yt,edgesUpdatable:Fe,elementsSelectable:Be,elevateNodesOnSelect:Cb,minZoom:rt,maxZoom:xt,nodeExtent:Ot,onNodesChange:_s,onEdgesChange:ws,snapToGrid:ne,snapGrid:Z,connectionMode:D,translateExtent:mn,connectOnClick:_b,defaultEdgeOptions:xs,fitView:Na,fitViewOptions:Sb,onNodesDelete:P,onEdgesDelete:A,onNodeDragStart:x,onNodeDrag:C,onNodeDragStop:k,onSelectionDrag:T,onSelectionDragStart:N,onSelectionDragStop:O,noPanClassName:sr,nodeOrigin:We,rfId:od,autoPanOnConnect:Eb,autoPanOnNodeDrag:Pb,onError:Ab,connectionRadius:kb,isValidConnection:id}),j.jsx(B0e,{onSelectionChange:$}),Ke,j.jsx(p0e,{proOptions:xb,position:wb}),j.jsx(q0e,{rfId:od,disableKeyboardA11y:Mp})]})})});Zve.displayName="ReactFlow";const Jve=Se.child({namespace:"schema"});function e1e(){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 Ph=Vf("nodes/receivedOpenAPISchema",async(e,{dispatch:t,rejectWithValue:n})=>{try{const i=await(await fetch("openapi.json")).json();return Jve.info({openAPISchema:i},"Received OpenAPI schema"),JSON.parse(JSON.stringify(i,e1e()))}catch(r){return n({error:r})}}),bF={nodes:[],edges:[],schema:null,invocationTemplates:{},connectionStartParams:null,shouldShowGraphOverlay:!1,shouldShowFieldTypeLegend:!1,shouldShowMinimapPanel:!0,editorInstance:void 0,progressNodeSize:{width:512,height:512}},SF=zt({name:"nodes",initialState:bF,reducers:{nodesChanged:(e,t)=>{e.nodes=uF(t.payload,e.nodes)},nodeAdded:(e,t)=>{e.nodes.push(t.payload)},edgesChanged:(e,t)=>{e.edges=yve(t.payload,e.edges)},connectionStarted:(e,t)=>{e.connectionStartParams=t.payload},connectionMade:(e,t)=>{e.edges=L$(t.payload,e.edges)},connectionEnded:e=>{e.connectionStartParams=null},fieldValueChanged:(e,t)=>{const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(s=>s.id===n);o>-1&&(e.nodes[o].data.inputs[r].value=i)},imageCollectionFieldValueChanged:(e,t)=>{const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(a=>a.id===n);if(o===-1)return;const s=Yn(e.nodes[o].data.inputs[r].value);if(!s){e.nodes[o].data.inputs[r].value=i;return}e.nodes[o].data.inputs[r].value=pZ(s.concat(i),"image_name")},shouldShowGraphOverlayChanged:(e,t)=>{e.shouldShowGraphOverlay=t.payload},shouldShowFieldTypeLegendChanged:(e,t)=>{e.shouldShowFieldTypeLegend=t.payload},shouldShowMinimapPanelChanged:(e,t)=>{e.shouldShowMinimapPanel=t.payload},nodeTemplatesBuilt:(e,t)=>{e.invocationTemplates=t.payload},nodeEditorReset:e=>{e.nodes=[],e.edges=[]},setEditorInstance:(e,t)=>{e.editorInstance=t.payload},loadFileNodes:(e,t)=>{e.nodes=t.payload},loadFileEdges:(e,t)=>{e.edges=t.payload},setProgressNodeSize:(e,t)=>{e.progressNodeSize=t.payload}},extraReducers:e=>{e.addCase(Ph.fulfilled,(t,n)=>{t.schema=n.payload})}}),{nodesChanged:X6e,edgesChanged:Q6e,nodeAdded:Z6e,fieldValueChanged:ox,connectionMade:J6e,connectionStarted:e8e,connectionEnded:t8e,shouldShowGraphOverlayChanged:n8e,shouldShowFieldTypeLegendChanged:r8e,shouldShowMinimapPanelChanged:i8e,nodeTemplatesBuilt:k3,nodeEditorReset:_F,imageCollectionFieldValueChanged:o8e,setEditorInstance:s8e,loadFileNodes:a8e,loadFileEdges:l8e,setProgressNodeSize:u8e}=SF.actions,t1e=SF.reducer,c8e=e=>e.nodes,wF={esrganModelName:"RealESRGAN_x4plus.pth"},xF=zt({name:"postprocessing",initialState:wF,reducers:{esrganModelNameChanged:(e,t)=>{e.esrganModelName=t.payload}}}),{esrganModelNameChanged:d8e}=xF.actions,n1e=xF.reducer,_p=me("app/userInvoked"),r1e={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 e0{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||r1e,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 Ad(){let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n}function ak(e){return e==null?"":""+e}function i1e(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}function A3(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 lk(e,t,n){const{obj:r,k:i}=A3(e,t,Object);r[i]=n}function o1e(e,t,n,r){const{obj:i,k:o}=A3(e,t,Object);i[o]=i[o]||[],r&&(i[o]=i[o].concat(n)),r||i[o].push(n)}function t0(e,t){const{obj:n,k:r}=A3(e,t);if(n)return n[r]}function s1e(e,t,n){const r=t0(e,n);return r!==void 0?r:t0(t,n)}function CF(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]):CF(e[r],t[r],n):e[r]=t[r]);return e}function ou(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var a1e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function l1e(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>a1e[t]):e}const u1e=[" ",",","?","!",";"];function c1e(e,t,n){t=t||"",n=n||"";const r=u1e.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 n0(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?n0(l,u,n):void 0}i=i[r[o]]}return i}function r0(e){return e&&e.indexOf("_")>0?e.replace("_","-"):e}class uk extends v1{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=t0(this.data,a);return l||!s||typeof r!="string"?l:n0(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),lk(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=t0(this.data,a)||{};i?CF(l,r,o):l={...l,...r},lk(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 TF={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 ck={};class i0 extends v1{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),i1e(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ho.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&&!c1e(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 b=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${b}${s}`,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:`${l}${b}${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),S=["[object Number]","[object Function]","[object RegExp]"],v=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")&&S.indexOf(m)<0&&!(typeof v=="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 b=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=b,d):b}if(o){const b=m==="[object Array]",_=b?[]:{},w=b?p:h;for(const x in f)if(Object.prototype.hasOwnProperty.call(f,x)){const C=`${w}${o}${x}`;_[x]=this.translate(C,{...n,joinArrays:!1,ns:a}),_[x]===C&&(_[x]=f[x])}f=_}}else if(y&&typeof v=="string"&&m==="[object Array]")f=f.join(v),f&&(f=this.extendTranslation(f,t,n,r));else{let b=!1,_=!1;const w=n.count!==void 0&&typeof n.count!="string",x=i0.hasDefaultValue(n),C=w?this.pluralResolver.getSuffix(u,n.count,n):"",k=n.ordinal&&w?this.pluralResolver.getSuffix(u,n.count,{ordinal:!1}):"",P=n[`defaultValue${C}`]||n[`defaultValue${k}`]||n.defaultValue;!this.isValidLookup(f)&&x&&(b=!0,f=P),this.isValidLookup(f)||(_=!0,f=s);const $=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&_?void 0:f,N=x&&P!==f&&this.options.updateMissing;if(_||b||N){if(this.logger.log(N?"updateKey":"missingKey",u,l,s,N?P:f),o){const M=this.resolve(s,{...n,keySeparator:!1});M&&M.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 T=[];const O=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&O&&O[0])for(let M=0;M{const L=x&&D!==f?D:$;this.options.missingKeyHandler?this.options.missingKeyHandler(M,l,R,L,N,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(M,l,R,L,N,n),this.emit("missingKey",M,l,R,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?T.forEach(M=>{this.pluralResolver.getSuffixes(M,n).forEach(R=>{I([M],s+R,n[`defaultValue${R}`]||P)})}):I(T,s,P))}f=this.extendTranslation(f,t,n,d,r),_&&f===s&&this.options.appendNamespaceToMissingKey&&(f=`${l}:${s}`),(_||b)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${s}`:s,b?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(S=>{this.isValidLookup(r)||(a=S,!ck[`${m[0]}-${S}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(a)&&(ck[`${m[0]}-${S}`]=!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(v=>{if(this.isValidLookup(r))return;s=v;const y=[c];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(y,c,v,S,n);else{let b;f&&(b=this.pluralResolver.getSuffix(v,n.count,n));const _=`${this.options.pluralSeparator}zero`,w=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(f&&(y.push(c+b),n.ordinal&&b.indexOf(w)===0&&y.push(c+b.replace(w,this.options.pluralSeparator)),h&&y.push(c+_)),p){const x=`${c}${this.options.contextSeparator}${n.context}`;y.push(x),f&&(y.push(x+b),n.ordinal&&b.indexOf(w)===0&&y.push(x+b.replace(w,this.options.pluralSeparator)),h&&y.push(x+_))}}let g;for(;g=y.pop();)this.isValidLookup(r)||(o=g,r=this.getResource(v,S,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 m_(e){return e.charAt(0).toUpperCase()+e.slice(1)}class dk{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ho.create("languageUtils")}getScriptPartFromCode(t){if(t=r0(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=r0(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]=m_(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]=m_(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=m_(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 d1e=[{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}],f1e={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 h1e=["v1","v2","v3"],p1e=["v4"],fk={zero:0,one:1,two:2,few:3,many:4,other:5};function g1e(){const e={};return d1e.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:f1e[t.fc]}})}),e}class m1e{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=ho.create("pluralResolver"),(!this.options.compatibilityJSON||p1e.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=g1e()}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(r0(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)=>fk[i]-fk[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!h1e.includes(this.options.compatibilityJSON)}}function hk(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=s1e(e,t,n);return!o&&i&&typeof n=="string"&&(o=n0(e,n,r),o===void 0&&(o=n0(t,n,r))),o}class y1e{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ho.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:l1e,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?ou(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?ou(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?ou(n.nestingPrefix):n.nestingPrefixEscaped||ou("$t("),this.nestingSuffix=n.nestingSuffix?ou(n.nestingSuffix):n.nestingSuffixEscaped||ou(")"),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=hk(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),S=m.shift().trim(),v=m.join(this.formatSeparator).trim();return this.format(hk(n,l,S,this.options.keySeparator,this.options.ignoreJSONStructure),v,r,{...i,...n,interpolationkey:S})};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 v=d(t,o,i);s=typeof v=="string"?v:""}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=ak(s));const S=p.safeValue(s);if(t=t.replace(o[0],S),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=ak(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 v1e(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 su(e){const t={};return function(r,i,o){const s=i+JSON.stringify(o);let a=t[s];return a||(a=e(r0(i),o),t[s]=a),a(r)}}class b1e{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ho.create("formatter"),this.options=t,this.formats={number:su((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return o=>i.format(o)}),currency:su((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>i.format(o)}),datetime:su((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return o=>i.format(o)}),relativetime:su((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return o=>i.format(o,r.range||"day")}),list:su((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()]=su(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}=v1e(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 S1e(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class _1e extends v1{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=ho.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=>{o1e(l.loaded,[o],s),S1e(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 pk(){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 gk(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 Eg(){}function w1e(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}class kh extends v1{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=gk(t),this.services={},this.logger=ho,this.modules={external:[]},w1e(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=pk();this.options={...i,...this.options,...gk(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?ho.init(o(this.modules.logger),this.options):ho.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:typeof Intl<"u"&&(c=b1e);const d=new dk(this.options);this.store=new uk(this.options.resources,this.options);const f=this.services;f.logger=ho,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new m1e(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 y1e(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new _1e(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),S=1;S1?p-1:0),S=1;S{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Eg),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=Ad(),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]:Eg;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=Ad();return t||(t=this.languages),n||(n=this.options.ns),r||(r=Eg),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"&&TF.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=Ad();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=Ad();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=Ad();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 dk(pk());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 kh(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Eg;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},o=new kh(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 uk(this.store.data,i),o.services.resourceStore=o.store),o.translator=new i0(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},f8e=()=>{const e=qc(),t=cy(Pce),n=tse();return E.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(x1e())},[e,n,t]),null},h8e=()=>{const e=qc();return E.useCallback(n=>e(Vt(sa(n))),[e])},EF={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,wasSchemaParsed:!1,consoleLogLevel:"debug",shouldLogToConsole:!0,statusTranslationKey:"common.statusDisconnected",canceledSession:"",isPersisted:!1,language:"en",isUploading:!1,isNodesEnabled:!1},PF=zt({name:"system",initialState:EF,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},setIsNodesEnabled(e,t){e.isNodesEnabled=t.payload}},extraReducers(e){e.addCase(PL,(t,n)=>{t.sessionId=n.payload.sessionId,t.canceledSession=""}),e.addCase(AL,t=>{t.sessionId=null}),e.addCase(CL,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(EL,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(RL,t=>{t.isCancelable=!0,t.isProcessing=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusGenerating"}),e.addCase($L,(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(IL,(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(c3,t=>{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:gf("toast.serverError"),status:"error"}))}),e.addCase(DL,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(_p,t=>{t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.statusTranslationKey="common.statusPreparing"}),e.addCase(Dl.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:gf("toast.canceled"),status:"warning"}))}),e.addCase(k3,t=>{t.wasSchemaParsed=!0}),e.addMatcher(XD,(t,n)=>{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:gf("toast.serverError"),status:"error"}))})}}),{setIsProcessing:p8e,setShouldConfirmOnDelete:g8e,setCurrentStatus:m8e,setIsCancelable:y8e,setEnableImageDebugging:v8e,addToast:Vt,clearToastQueue:x1e,cancelScheduled:b8e,scheduledCancelAborted:S8e,cancelTypeChanged:_8e,subscribedNodeIdsSet:w8e,consoleLogLevelChanged:x8e,shouldLogToConsoleChanged:C8e,isPersistedChanged:T8e,shouldAntialiasProgressImageChanged:E8e,languageChanged:P8e,progressImageSet:C1e,setIsNodesEnabled:k8e}=PF.actions,T1e=PF.reducer,E1e={searchFolder:null,advancedAddScanModel:null},kF=zt({name:"modelmanager",initialState:E1e,reducers:{setSearchFolder:(e,t)=>{e.searchFolder=t.payload},setAdvancedAddScanModel:(e,t)=>{e.advancedAddScanModel=t.payload}}}),{setSearchFolder:A8e,setAdvancedAddScanModel:O8e}=kF.actions,P1e=kF.reducer,mk=Se.child({namespace:"canvas"}),k1e=()=>{pe({actionCreator:Zfe,effect:async(e,{dispatch:t,getState:n})=>{const r=n(),{sessionId:i,isProcessing:o}=r.system,s=e.payload;if(o){if(!s){mk.debug("No canvas session, skipping cancel");return}if(s!==i){mk.debug({data:{canvasSessionId:s,session_id:i}},"Canvas session does not match global session, skipping cancel");return}t(Dl({session_id:i}))}}})},AF=ya.injectEndpoints({endpoints:e=>({getAppVersion:e.query({query:()=>({url:"app/version",method:"GET"}),keepUnusedDataFor:864e5}),getAppConfig:e.query({query:()=>({url:"app/config",method:"GET"}),keepUnusedDataFor:864e5})})}),{useGetAppVersionQuery:R8e,useGetAppConfigQuery:I8e}=AF,A1e=()=>{pe({matcher:AF.endpoints.getAppConfig.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const{infill_methods:r}=e.payload,i=t().generation.infillMethod;r.includes(i)||n(Sce(r[0]))}})},O1e=me("app/appStarted"),R1e=()=>{pe({actionCreator:O1e,effect:async(e,{getState:t,dispatch:n,unsubscribe:r,cancelActiveListeners:i})=>{i(),r()}})};Se.child({namespace:"boards"});const I1e=()=>{pe({matcher:Hi(Fw,Uy),effect:async(e,{getState:t,dispatch:n,condition:r,cancelActiveListeners:i})=>{i();const o=t(),s=Fw.match(e)?e.payload:o.gallery.selectedBoardId,l=(Uy.match(e)?e.payload:o.gallery.galleryView)==="images"?Mi:Gs,u={board_id:s??"none",categories:l};if(await r(()=>ye.endpoints.listImages.select(u)(t()).isSuccess,5e3)){const{data:d}=ye.endpoints.listImages.select(u)(t());d!=null&&d.ids.length?n(ra(d.ids[0]??null)):n(ra(null))}else n(ra(null))}})},M1e=()=>{pe({matcher:Rc.endpoints.deleteBoardAndImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n,condition:r})=>{const{board_id:i,deleted_board_images:o,deleted_images:s}=e.payload;let a=!1,l=!1,u=!1,c=!1;const d=n();s.forEach(f=>{const h=KL(d,f);h.isInitialImage&&!a&&(t(bD()),a=!0),h.isCanvasImage&&!l&&(t(eL()),l=!0),h.isNodesImage&&!u&&(t(_F()),u=!0),h.isControlNetImage&&!c&&(t(zL()),c=!0)})}})},N1e=me("canvas/canvasSavedToGallery"),D1e=me("canvas/canvasCopiedToClipboard"),L1e=me("canvas/canvasDownloadedAsImage"),$1e=me("canvas/canvasMerged"),F1e=me("canvas/stagingAreaImageSaved");let OF=null,RF=null;const M8e=e=>{OF=e},b1=()=>OF,N8e=e=>{RF=e},B1e=()=>RF,j1e=async e=>new Promise((t,n)=>{e.toBlob(r=>{if(r){t(r);return}n("Unable to create Blob")})}),o0=async(e,t)=>await j1e(e.toCanvas(t)),O3=async e=>{const t=b1();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 o0(o,a)},V1e=e=>{navigator.clipboard.write([new ClipboardItem({[e.type]:e})])},z1e=Se.child({namespace:"canvasCopiedToClipboardListener"}),U1e=()=>{pe({actionCreator:D1e,effect:async(e,{dispatch:t,getState:n})=>{const r=n(),i=await O3(r);if(!i){z1e.error("Problem getting base layer blob"),t(Vt({title:"Problem Copying Canvas",description:"Unable to export base layer",status:"error"}));return}V1e(i),t(Vt({title:"Canvas Copied to Clipboard",status:"success"}))}})},G1e=(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()},H1e=Se.child({namespace:"canvasSavedToGalleryListener"}),q1e=()=>{pe({actionCreator:L1e,effect:async(e,{dispatch:t,getState:n})=>{const r=n(),i=await O3(r);if(!i){H1e.error("Problem getting base layer blob"),t(Vt({title:"Problem Downloading Canvas",description:"Unable to export base layer",status:"error"}));return}G1e(i,"canvas.png"),t(Vt({title:"Canvas Downloaded",status:"success"}))}})},W1e=async()=>{const e=b1();if(!e)return;const t=e.clone();return t.scale({x:1,y:1}),o0(t,t.getClientRect())},yk=Se.child({namespace:"canvasCopiedToClipboardListener"}),K1e=()=>{pe({actionCreator:$1e,effect:async(e,{dispatch:t,getState:n,take:r})=>{const i=await W1e();if(!i){yk.error("Problem getting base layer blob"),t(Vt({title:"Problem Merging Canvas",description:"Unable to export base layer",status:"error"}));return}const o=b1();if(!o){yk.error("Problem getting canvas base layer"),t(Vt({title:"Problem Merging Canvas",description:"Unable to export base layer",status:"error"}));return}const s=o.getClientRect({relativeTo:o.getParent()}),a=await t(ye.endpoints.uploadImage.initiate({file:new File([i],"mergedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Merged"}}})).unwrap(),{image_name:l}=a;t(Jfe({kind:"image",layer:"base",imageName:l,...s}))}})},Y1e=Se.child({namespace:"canvasSavedToGalleryListener"}),X1e=()=>{pe({actionCreator:N1e,effect:async(e,{dispatch:t,getState:n,take:r})=>{const i=n(),o=await O3(i);if(!o){Y1e.error("Problem getting base layer blob"),t(Vt({title:"Problem Saving Canvas",description:"Unable to export base layer",status:"error"}));return}t(ye.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!1,board_id:i.gallery.autoAddBoardId,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Saved to Gallery"}}}))}})},Q1e=Se.child({namespace:"controlNet"}),Z1e=(e,t,n)=>{if(!(ype.match(e)||y8.match(e)||f3.match(e)||vpe.match(e)||v8.match(e))||v8.match(e)&&n.controlNet.controlNets[e.payload.controlNetId].shouldAutoConfig===!0)return!1;const{controlImage:i,processorType:o,shouldAutoConfig:s}=t.controlNet.controlNets[e.payload.controlNetId];if(y8.match(e)&&!s)return!1;const a=o!=="none",l=t.system.isProcessing;return a&&!l&&!!i},J1e=()=>{pe({predicate:Z1e,effect:async(e,{dispatch:t,getState:n,cancelActiveListeners:r,delay:i})=>{const{controlNetId:o}=e.payload;r(),Q1e.trace({data:e.payload},"ControlNet auto-process triggered"),await i(300),t(d3({controlNetId:o}))}})},Ll=me("system/sessionReadyToInvoke"),IF=e=>(e==null?void 0:e.type)==="image_output",vk=Se.child({namespace:"controlNet"}),ebe=()=>{pe({actionCreator:d3,effect:async(e,{dispatch:t,getState:n,take:r,unsubscribe:i,subscribe:o})=>{const{controlNetId:s}=e.payload,a=n().controlNet.controlNets[s];if(!a.controlImage){vk.error("Unable to process ControlNet image");return}const l={nodes:{[a.processorNode.id]:{...a.processorNode,is_intermediate:!0,image:{image_name:a.controlImage}}}},u=t(Un({graph:l})),[c]=await r(h=>Un.fulfilled.match(h)&&h.meta.requestId===u.requestId),d=c.payload.id;t(Ll());const[f]=await r(h=>u3.match(h)&&h.payload.data.graph_execution_state_id===d);if(IF(f.payload.data.result)){const{image_name:h}=f.payload.data.result.image,[{payload:p}]=await r(S=>ye.endpoints.getImageDTO.matchFulfilled(S)&&S.payload.image_name===h),m=p;vk.debug({data:{arg:e.payload,processedControlImage:m}},"ControlNet image processed"),t(mpe({controlNetId:s,processedControlImage:m.image_name}))}}})},MF=Se.child({namespace:"boards"}),tbe=()=>{pe({matcher:ye.endpoints.addImageToBoard.matchFulfilled,effect:(e,{getState:t,dispatch:n})=>{const{board_id:r,imageDTO:i}=e.meta.arg.originalArgs;MF.debug({data:{board_id:r,imageDTO:i}},"Image added to board")}})},nbe=()=>{pe({matcher:ye.endpoints.addImageToBoard.matchRejected,effect:(e,{getState:t,dispatch:n})=>{const{board_id:r,imageDTO:i}=e.meta.arg.originalArgs;MF.debug({data:{board_id:r,imageDTO:i}},"Problem adding image to board")}})},D8e=e=>e.gallery,L8e=Vn(e=>e,e=>e.gallery.selection[e.gallery.selection.length-1],Kc),rbe=Vn([e=>e],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{board_id:t??"none",categories:n==="images"?Mi:Gs,offset:0,limit:tpe,is_intermediate:!1}},Kc),NF=Se.child({namespace:"image"}),ibe=()=>{pe({actionCreator:YL,effect:async(e,{dispatch:t,getState:n,condition:r})=>{const{imageDTO:i,imageUsage:o}=e.payload;t(WL(!1));const{image_name:s}=i,a=n();if(a.gallery.selection[a.gallery.selection.length-1]===s){const d=rbe(a),{data:f}=ye.endpoints.listImages.select(d)(a),h=(f==null?void 0:f.ids)??[],p=h.findIndex(y=>y.toString()===s),m=h.filter(y=>y.toString()!==s),S=Xo(p,0,m.length-1),v=m[S];t(ra(v||null))}o.isCanvasImage&&t(eL()),o.isControlNetImage&&t(zL()),o.isInitialImage&&t(bD()),o.isNodesImage&&t(_F());const{requestId:u}=t(ye.endpoints.deleteImage.initiate(i));await r(d=>ye.endpoints.deleteImage.matchFulfilled(d)&&d.meta.requestId===u,3e4)&&t(ya.util.invalidateTags([{type:"Board",id:i.board_id}]))}})},obe=()=>{pe({matcher:ye.endpoints.deleteImage.matchPending,effect:(e,{dispatch:t,getState:n})=>{}})},sbe=()=>{pe({matcher:ye.endpoints.deleteImage.matchFulfilled,effect:(e,{dispatch:t,getState:n})=>{NF.debug({data:{image:e.meta.arg.originalArgs}},"Image deleted")}})},abe=()=>{pe({matcher:ye.endpoints.deleteImage.matchRejected,effect:(e,{dispatch:t,getState:n})=>{NF.debug({data:{image:e.meta.arg.originalArgs}},"Unable to delete image")}})},lbe=Se.child({namespace:"dnd"}),DF=me("dnd/dndDropped"),ube=()=>{pe({actionCreator:DF,effect:async(e,{dispatch:t,getState:n,take:r})=>{const{activeData:i,overData:o}=e.payload;if(n(),lbe.debug({data:{activeData:i,overData:o}},"Image or selection dropped"),o.actionType==="SET_CURRENT_IMAGE"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){t(ra(i.payload.imageDTO.image_name));return}if(o.actionType==="SET_INITIAL_IMAGE"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){t(Uv(i.payload.imageDTO));return}if(o.actionType==="ADD_TO_BATCH"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){t(Bw([i.payload.imageDTO.image_name]));return}if(o.actionType==="ADD_TO_BATCH"&&i.payloadType==="IMAGE_NAMES"){t(Bw(i.payload.image_names));return}if(o.actionType==="SET_CONTROLNET_IMAGE"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){const{controlNetId:s}=o.context;t(f3({controlImage:i.payload.imageDTO.image_name,controlNetId:s}));return}if(o.actionType==="SET_CANVAS_INITIAL_IMAGE"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){t(tL(i.payload.imageDTO));return}if(o.actionType==="SET_NODES_IMAGE"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){const{fieldName:s,nodeId:a}=o.context;t(ox({nodeId:a,fieldName:s,value:i.payload.imageDTO}));return}if(o.actionType==="SET_MULTI_NODES_IMAGE"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){const{fieldName:s,nodeId:a}=o.context;t(ox({nodeId:a,fieldName:s,value:[i.payload.imageDTO]}));return}if(o.actionType==="MOVE_BOARD"&&i.payloadType==="IMAGE_DTO"&&i.payload.imageDTO){const{imageDTO:s}=i.payload,{boardId:a}=o.context;if(!a){t(ye.endpoints.removeImageFromBoard.initiate({imageDTO:s}));return}t(ye.endpoints.addImageToBoard.initiate({imageDTO:s,board_id:a}));return}}})},LF=Se.child({namespace:"boards"}),cbe=()=>{pe({matcher:ye.endpoints.removeImageFromBoard.matchFulfilled,effect:(e,{getState:t,dispatch:n})=>{const{board_id:r,image_name:i}=e.meta.arg.originalArgs;LF.debug({data:{board_id:r,image_name:i}},"Image added to board")}})},dbe=()=>{pe({matcher:ye.endpoints.removeImageFromBoard.matchRejected,effect:(e,{getState:t,dispatch:n})=>{const{board_id:r,image_name:i}=e.meta.arg.originalArgs;LF.debug({data:{board_id:r,image_name:i}},"Problem adding image to board")}})};Se.child({namespace:"image"});const fbe=()=>{pe({actionCreator:Tpe,effect:async(e,{dispatch:t,getState:n,condition:r})=>{const i=e.payload,o=n(),{shouldConfirmOnDelete:s}=o.system,a=Ppe(n());if(!a)return;const l=a.isCanvasImage||a.isInitialImage||a.isControlNetImage||a.isNodesImage;if(s||l){t(WL(!0));return}t(YL({imageDTO:i,imageUsage:a}))}})};Se.child({namespace:"image"});const $F=Se.child({namespace:"image"}),Fa={title:"Image Uploaded",status:"success"},hbe=()=>{pe({matcher:ye.endpoints.uploadImage.matchFulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=e.payload,i=n(),{selectedBoardId:o,autoAddBoardId:s}=i.gallery;$F.debug({arg:"",imageDTO:r},"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)t(Vt({...Fa,...l}));else{t(ye.endpoints.addImageToBoard.initiate({board_id:s,imageDTO:r}));const{data:u}=Rc.endpoints.listAllBoards.select()(i),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(Vt({...Fa,description:d}))}return}if((a==null?void 0:a.type)==="SET_CANVAS_INITIAL_IMAGE"){t(tL(r)),t(Vt({...Fa,description:"Set as canvas initial image"}));return}if((a==null?void 0:a.type)==="SET_CONTROLNET_IMAGE"){const{controlNetId:l}=a;t(f3({controlNetId:l,controlImage:r.image_name})),t(Vt({...Fa,description:"Set as control image"}));return}if((a==null?void 0:a.type)==="SET_INITIAL_IMAGE"){t(Uv(r)),t(Vt({...Fa,description:"Set as initial image"}));return}if((a==null?void 0:a.type)==="SET_NODES_IMAGE"){const{nodeId:l,fieldName:u}=a;t(ox({nodeId:l,fieldName:u,value:r})),t(Vt({...Fa,description:`Set as node field ${u}`}));return}if((a==null?void 0:a.type)==="ADD_TO_BATCH"){t(Bw([r.image_name])),t(Vt({...Fa,description:"Added to batch"}));return}}}})},pbe=()=>{pe({matcher:ye.endpoints.uploadImage.matchRejected,effect:(e,{dispatch:t})=>{const{file:n,postUploadAction:r,...i}=e.meta.arg.originalArgs,o={arg:{...i,file:""}};$F.error({data:o},"Image upload failed"),t(Vt({title:"Image Upload Failed",description:e.error.message,status:"error"}))}})},gbe=me("generation/initialImageSelected"),mbe=me("generation/modelSelected"),ybe=()=>{pe({actionCreator:gbe,effect:(e,{getState:t,dispatch:n})=>{if(!e.payload){n(Vt(sa({title:gf("toast.imageNotLoadedDesc"),status:"error"})));return}n(Uv(e.payload)),n(Vt(sa(gf("toast.sentToImageToImage"))))}})},vbe=Se.child({module:"models"}),bbe=()=>{pe({actionCreator:mbe,effect:(e,{getState:t,dispatch:n})=>{var a;const r=t(),i=zv.safeParse(e.payload);if(!i.success){vbe.error({error:i.error.format()},"Failed to parse main model");return}const o=i.data,{base_model:s}=o;if(((a=r.generation.model)==null?void 0:a.base_model)!==s){let l=0;bc(r.lora.loras,(d,f)=>{d.base_model!==s&&(n(QL(f)),l+=1)});const{vae:u}=r.generation;u&&u.base_model!==s&&(n(SD(null)),l+=1);const{controlNets:c}=r.controlNet;bc(c,(d,f)=>{var h;((h=d.model)==null?void 0:h.base_model)!==s&&(n(VL({controlNetId:f})),l+=1)}),l>0&&n(Vt(sa({title:`Base model changed, cleared ${l} incompatible submodel${l===1?"":"s"}`,status:"warning"})))}n(hm(o))}})},bk=Pl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),Sk=Pl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),_k=Pl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),wk=Pl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),xk=Pl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),Sbe=({base_model:e,model_type:t,model_name:n})=>`${e}/${t}/${n}`,Od=e=>{const t=[];return e.forEach(n=>{const r={...Yn(n),id:Sbe(n)};t.push(r)}),t},so=ya.injectEndpoints({endpoints:e=>({getMainModels:e.query({query:()=>({url:"models/",params:{model_type:"main"}}),providesTags:(t,n,r)=>{const i=[{type:"MainModel",id:vn}];return t&&i.push(...t.ids.map(o=>({type:"MainModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Od(t.models);return bk.setAll(bk.getInitialState(),i)}}),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:vn}]}),importMainModels:e.mutation({query:({body:t})=>({url:"models/import",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:vn}]}),addMainModels:e.mutation({query:({body:t})=>({url:"models/add",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:vn}]}),deleteMainModels:e.mutation({query:({base_model:t,model_name:n})=>({url:`models/${t}/main/${n}`,method:"DELETE"}),invalidatesTags:[{type:"MainModel",id:vn}]}),convertMainModels:e.mutation({query:({base_model:t,model_name:n,params:r})=>({url:`models/convert/${t}/main/${n}`,method:"PUT",params:r}),invalidatesTags:[{type:"MainModel",id:vn}]}),mergeMainModels:e.mutation({query:({base_model:t,body:n})=>({url:`models/merge/${t}`,method:"PUT",body:n}),invalidatesTags:[{type:"MainModel",id:vn}]}),syncModels:e.mutation({query:()=>({url:"models/sync",method:"POST"}),invalidatesTags:[{type:"MainModel",id:vn}]}),getLoRAModels:e.query({query:()=>({url:"models/",params:{model_type:"lora"}}),providesTags:(t,n,r)=>{const i=[{type:"LoRAModel",id:vn}];return t&&i.push(...t.ids.map(o=>({type:"LoRAModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Od(t.models);return Sk.setAll(Sk.getInitialState(),i)}}),getControlNetModels:e.query({query:()=>({url:"models/",params:{model_type:"controlnet"}}),providesTags:(t,n,r)=>{const i=[{type:"ControlNetModel",id:vn}];return t&&i.push(...t.ids.map(o=>({type:"ControlNetModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Od(t.models);return _k.setAll(_k.getInitialState(),i)}}),getVaeModels:e.query({query:()=>({url:"models/",params:{model_type:"vae"}}),providesTags:(t,n,r)=>{const i=[{type:"VaeModel",id:vn}];return t&&i.push(...t.ids.map(o=>({type:"VaeModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Od(t.models);return xk.setAll(xk.getInitialState(),i)}}),getTextualInversionModels:e.query({query:()=>({url:"models/",params:{model_type:"embedding"}}),providesTags:(t,n,r)=>{const i=[{type:"TextualInversionModel",id:vn}];return t&&i.push(...t.ids.map(o=>({type:"TextualInversionModel",id:o}))),i},transformResponse:(t,n,r)=>{const i=Od(t.models);return wk.setAll(wk.getInitialState(),i)}}),getModelsInFolder:e.query({query:t=>({url:`/models/search?${wL.stringify(t,{})}`}),providesTags:(t,n,r)=>{const i=[{type:"ScannedModels",id:vn}];return t&&i.push(...t.map(o=>({type:"ScannedModels",id:o}))),i}}),getCheckpointConfigs:e.query({query:()=>({url:"/models/ckpt_confs"})})})}),{useGetMainModelsQuery:$8e,useGetControlNetModelsQuery:F8e,useGetLoRAModelsQuery:B8e,useGetTextualInversionModelsQuery:j8e,useGetVaeModelsQuery:V8e,useUpdateMainModelsMutation:z8e,useDeleteMainModelsMutation:U8e,useImportMainModelsMutation:G8e,useAddMainModelsMutation:H8e,useConvertMainModelsMutation:q8e,useMergeMainModelsMutation:W8e,useSyncModelsMutation:K8e,useGetModelsInFolderQuery:Y8e,useGetCheckpointConfigsQuery:X8e}=so,Ck=Se.child({module:"models"}),_be=()=>{pe({matcher:so.endpoints.getMainModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=t().generation.model;if(Au(e.payload.entities,l=>(l==null?void 0:l.model_name)===(r==null?void 0:r.model_name)&&(l==null?void 0:l.base_model)===(r==null?void 0:r.base_model)))return;const o=e.payload.ids[0],s=e.payload.entities[o];if(!s){n(hm(null));return}const a=zv.safeParse(s);if(!a.success){Ck.error({error:a.error.format()},"Failed to parse main model");return}n(hm(a.data))}}),pe({matcher:so.endpoints.getVaeModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=t().generation.vae;if(r===null||Au(e.payload.entities,l=>(l==null?void 0:l.model_name)===(r==null?void 0:r.model_name)&&(l==null?void 0:l.base_model)===(r==null?void 0:r.base_model)))return;const o=e.payload.ids[0],s=e.payload.entities[o];if(!s){n(hm(null));return}const a=yce.safeParse(s);if(!a.success){Ck.error({error:a.error.format()},"Failed to parse VAE model");return}n(SD(a.data))}}),pe({matcher:so.endpoints.getLoRAModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=t().lora.loras;bc(r,(i,o)=>{Au(e.payload.entities,a=>(a==null?void 0:a.model_name)===(i==null?void 0:i.model_name)&&(a==null?void 0:a.base_model)===(i==null?void 0:i.base_model))||n(QL(o))})}}),pe({matcher:so.endpoints.getControlNetModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=t().controlNet.controlNets;bc(r,(i,o)=>{Au(e.payload.entities,a=>{var l,u;return(a==null?void 0:a.model_name)===((l=i==null?void 0:i.model)==null?void 0:l.model_name)&&(a==null?void 0:a.base_model)===((u=i==null?void 0:i.model)==null?void 0:u.base_model)})||n(VL({controlNetId:o}))})}})},sx=e=>!("$ref"in e),wbe=e=>!("$ref"in e),Q8e=500,xbe={integer:"integer",float:"float",number:"float",string:"string",boolean:"boolean",enum:"enum",ImageField:"image",image_collection:"image_collection",LatentsField:"latents",ConditioningField:"conditioning",UNetField:"unet",ClipField:"clip",VaeField:"vae",model:"model",vae_model:"vae_model",lora_model:"lora_model",controlnet_model:"controlnet_model",ControlNetModelField:"controlnet_model",array:"array",item:"item",ColorField:"color",ControlField:"control",control:"control",cfg_scale:"float",control_weight:"float"},Cbe=500,Zt=e=>`var(--invokeai-colors-${e}-${Cbe})`,Z8e={integer:{color:"red",colorCssVar:Zt("red"),title:"Integer",description:"Integers are whole numbers, without a decimal point."},float:{color:"orange",colorCssVar:Zt("orange"),title:"Float",description:"Floats are numbers with a decimal point."},string:{color:"yellow",colorCssVar:Zt("yellow"),title:"String",description:"Strings are text."},boolean:{color:"green",colorCssVar:Zt("green"),title:"Boolean",description:"Booleans are true or false."},enum:{color:"blue",colorCssVar:Zt("blue"),title:"Enum",description:"Enums are values that may be one of a number of options."},image:{color:"purple",colorCssVar:Zt("purple"),title:"Image",description:"Images may be passed between nodes."},image_collection:{color:"purple",colorCssVar:Zt("purple"),title:"Image Collection",description:"A collection of images."},latents:{color:"pink",colorCssVar:Zt("pink"),title:"Latents",description:"Latents may be passed between nodes."},conditioning:{color:"cyan",colorCssVar:Zt("cyan"),title:"Conditioning",description:"Conditioning may be passed between nodes."},unet:{color:"red",colorCssVar:Zt("red"),title:"UNet",description:"UNet submodel."},clip:{color:"green",colorCssVar:Zt("green"),title:"Clip",description:"Tokenizer and text_encoder submodels."},vae:{color:"blue",colorCssVar:Zt("blue"),title:"Vae",description:"Vae submodel."},control:{color:"cyan",colorCssVar:Zt("cyan"),title:"Control",description:"Control info passed between nodes."},model:{color:"teal",colorCssVar:Zt("teal"),title:"Model",description:"Models are models."},vae_model:{color:"teal",colorCssVar:Zt("teal"),title:"VAE",description:"Models are models."},lora_model:{color:"teal",colorCssVar:Zt("teal"),title:"LoRA",description:"Models are models."},controlnet_model:{color:"teal",colorCssVar:Zt("teal"),title:"ControlNet",description:"Models are models."},array:{color:"gray",colorCssVar:Zt("gray"),title:"Array",description:"TODO: Array type description."},item:{color:"gray",colorCssVar:Zt("gray"),title:"Collection Item",description:"TODO: Collection Item type description."},color:{color:"gray",colorCssVar:Zt("gray"),title:"Color",description:"A RGBA color."}},y_=e=>e.$ref.split("/").slice(-1)[0],Tbe=({schemaObject:e,baseField:t})=>{const n={...t,type:"integer",inputRequirement:"always",inputKind:"any",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},Ebe=({schemaObject:e,baseField:t})=>{const n={...t,type:"float",inputRequirement:"always",inputKind:"any",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},Pbe=({schemaObject:e,baseField:t})=>{const n={...t,type:"string",inputRequirement:"always",inputKind:"any",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},kbe=({schemaObject:e,baseField:t})=>({...t,type:"boolean",inputRequirement:"always",inputKind:"any",default:e.default??!1}),Abe=({schemaObject:e,baseField:t})=>({...t,type:"model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),Obe=({schemaObject:e,baseField:t})=>({...t,type:"vae_model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),Rbe=({schemaObject:e,baseField:t})=>({...t,type:"lora_model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),Ibe=({schemaObject:e,baseField:t})=>({...t,type:"controlnet_model",inputRequirement:"always",inputKind:"direct",default:e.default??void 0}),Mbe=({schemaObject:e,baseField:t})=>({...t,type:"image",inputRequirement:"always",inputKind:"any",default:e.default??void 0}),Nbe=({schemaObject:e,baseField:t})=>({...t,type:"image_collection",inputRequirement:"always",inputKind:"any",default:e.default??void 0}),Dbe=({schemaObject:e,baseField:t})=>({...t,type:"latents",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),Lbe=({schemaObject:e,baseField:t})=>({...t,type:"conditioning",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),$be=({schemaObject:e,baseField:t})=>({...t,type:"unet",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),Fbe=({schemaObject:e,baseField:t})=>({...t,type:"clip",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),Bbe=({schemaObject:e,baseField:t})=>({...t,type:"vae",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),jbe=({schemaObject:e,baseField:t})=>({...t,type:"control",inputRequirement:"always",inputKind:"connection",default:e.default??void 0}),Vbe=({schemaObject:e,baseField:t})=>{const n=e.enum??[];return{...t,type:"enum",enumType:e.type??"string",options:n,inputRequirement:"always",inputKind:"direct",default:e.default??n[0]}},Tk=({baseField:e})=>({...e,type:"array",inputRequirement:"always",inputKind:"direct",default:[]}),Ek=({baseField:e})=>({...e,type:"item",inputRequirement:"always",inputKind:"direct",default:void 0}),zbe=({schemaObject:e,baseField:t})=>({...t,type:"color",inputRequirement:"always",inputKind:"direct",default:e.default??{r:127,g:127,b:127,a:255}}),FF=(e,t,n)=>{let r="";n&&t in n?r=n[t]:e.type?e.enum?r="enum":e.type&&(r=e.type):e.allOf?r=y_(e.allOf[0]):e.anyOf?r=y_(e.anyOf[0]):e.oneOf&&(r=y_(e.oneOf[0]));const i=xbe[r];if(!i)throw`Field type "${r}" is unknown!`;return i},Ube=(e,t,n)=>{const r=FF(e,t,n),i={name:t,title:e.title??"",description:e.description??""};if(["image"].includes(r))return Mbe({schemaObject:e,baseField:i});if(["image_collection"].includes(r))return Nbe({schemaObject:e,baseField:i});if(["latents"].includes(r))return Dbe({schemaObject:e,baseField:i});if(["conditioning"].includes(r))return Lbe({schemaObject:e,baseField:i});if(["unet"].includes(r))return $be({schemaObject:e,baseField:i});if(["clip"].includes(r))return Fbe({schemaObject:e,baseField:i});if(["vae"].includes(r))return Bbe({schemaObject:e,baseField:i});if(["control"].includes(r))return jbe({schemaObject:e,baseField:i});if(["model"].includes(r))return Abe({schemaObject:e,baseField:i});if(["vae_model"].includes(r))return Obe({schemaObject:e,baseField:i});if(["lora_model"].includes(r))return Rbe({schemaObject:e,baseField:i});if(["controlnet_model"].includes(r))return Ibe({schemaObject:e,baseField:i});if(["enum"].includes(r))return Vbe({schemaObject:e,baseField:i});if(["integer"].includes(r))return Tbe({schemaObject:e,baseField:i});if(["number","float"].includes(r))return Ebe({schemaObject:e,baseField:i});if(["string"].includes(r))return Pbe({schemaObject:e,baseField:i});if(["boolean"].includes(r))return kbe({schemaObject:e,baseField:i});if(["array"].includes(r))return Tk({schemaObject:e,baseField:i});if(["item"].includes(r))return Ek({schemaObject:e,baseField:i});if(["color"].includes(r))return zbe({schemaObject:e,baseField:i});if(["array"].includes(r))return Tk({schemaObject:e,baseField:i});if(["item"].includes(r))return Ek({schemaObject:e,baseField:i})},Gbe=(e,t,n)=>{const r=e.$ref.split("/").slice(-1)[0],i=t.components.schemas[r];return sx(i)?vv(i.properties,(s,a,l)=>{if(!["type","id"].includes(l)&&!["object"].includes(a.type)&&sx(a)){const u=FF(a,l,n);s[l]={name:l,title:a.title??"",description:a.description??"",type:u}}return s},{}):{}},Hbe=["id","type","is_intermediate","metadata"],qbe=["Graph","InvocationMeta","MetadataAccumulatorInvocation"],Wbe=e=>t7(e.components.schemas,(r,i)=>i.includes("Invocation")&&!i.includes("InvocationOutput")&&!qbe.some(o=>i.includes(o))).reduce((r,i)=>{var o,s,a;if(wbe(i)){const l=i.properties.type.default,u=((o=i.ui)==null?void 0:o.title)??i.title.replace("Invocation",""),c=(s=i.ui)==null?void 0:s.type_hints,d={};if(l==="collect"){const m=i.properties.item;d.item={type:"item",name:"item",description:m.description??"",title:"Collection Item",inputKind:"connection",inputRequirement:"always",default:void 0}}else if(l==="iterate"){const m=i.properties.collection;d.collection={type:"array",name:"collection",title:m.title??"",default:[],description:m.description??"",inputRequirement:"always",inputKind:"connection"}}else vv(i.properties,(m,S,v)=>{if(!Hbe.includes(v)&&sx(S)){const y=Ube(S,v,c);y&&(m[v]=y)}return m},d);const f=i.output;let h;if(l==="iterate"){const m=e.components.schemas.IterateInvocationOutput;h={item:{name:"item",title:m.title??"",description:m.description??"",type:"array"}}}else h=Gbe(f,e,c);const p={title:u,type:l,tags:((a=i.ui)==null?void 0:a.tags)??[],description:i.description??"",inputs:d,outputs:h};Object.assign(r,{[l]:p})}return r},{}),v_=Se.child({namespace:"schema"}),Kbe=()=>{pe({actionCreator:Ph.fulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=e.payload;v_.info({data:{schemaJSON:r}},"Dereferenced OpenAPI schema");const i=Wbe(r);v_.info({data:{nodeTemplates:i}},`Built ${c7(i)} node templates`),t(k3(i))}}),pe({actionCreator:Ph.rejected,effect:(e,{dispatch:t,getState:n})=>{v_.error("Problem dereferencing OpenAPI Schema")}})},Ybe=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),Xbe=new Map(Ybe),Qbe=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],ax=Symbol(".toJSON was called"),Zbe=e=>{e[ax]=!0;const t=e.toJSON();return delete e[ax],t},Jbe=e=>Xbe.get(e)??Error,BF=({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&&Pk(e)){const u=Jbe(e.name);n=new u}else n={};if(t.push(e),o>=i)return n;if(s&&typeof e.toJSON=="function"&&e[ax]!==!0)return Zbe(e);const l=u=>BF({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 Qbe)typeof e[u]<"u"&&e[u]!==null&&Object.defineProperty(n,u,{value:Pk(e[u])?l(e[u]):e[u],enumerable:r?!0:c,configurable:!0,writable:!0});return n};function R3(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return typeof e=="object"&&e!==null?BF({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):typeof e=="function"?`[Function: ${e.name??"anonymous"}]`:e}function Pk(e){return!!e&&typeof e=="object"&&"name"in e&&"message"in e&&"stack"in e}const jF=Se.child({namespace:"session"}),eSe=()=>{pe({actionCreator:Dl.pending,effect:(e,{getState:t,dispatch:n})=>{}})},tSe=()=>{pe({actionCreator:Dl.fulfilled,effect:(e,{getState:t,dispatch:n})=>{const{session_id:r}=e.meta.arg;jF.debug({data:{session_id:r}},`Session canceled (${r})`)}})},nSe=()=>{pe({actionCreator:Dl.rejected,effect:(e,{getState:t,dispatch:n})=>{if(e.payload){const{arg:r,error:i}=e.payload;jF.error({data:{arg:r,error:R3(i)}},"Problem canceling session")}}})},VF=Se.child({namespace:"session"}),rSe=()=>{pe({actionCreator:Un.pending,effect:(e,{getState:t,dispatch:n})=>{}})},iSe=()=>{pe({actionCreator:Un.fulfilled,effect:(e,{getState:t,dispatch:n})=>{const r=e.payload;VF.debug({data:{session:r}},`Session created (${r.id})`)}})},oSe=()=>{pe({actionCreator:Un.rejected,effect:(e,{getState:t,dispatch:n})=>{if(e.payload){const{arg:r,error:i}=e.payload,o=JSON.stringify(i);VF.error({data:{arg:r,error:R3(i)}},`Problem creating session: ${o}`)}}})},zF=Se.child({namespace:"session"}),sSe=()=>{pe({actionCreator:yp.pending,effect:(e,{getState:t,dispatch:n})=>{}})},aSe=()=>{pe({actionCreator:yp.fulfilled,effect:(e,{getState:t,dispatch:n})=>{const{session_id:r}=e.meta.arg;zF.debug({data:{session_id:r}},`Session invoked (${r})`)}})},lSe=()=>{pe({actionCreator:yp.rejected,effect:(e,{getState:t,dispatch:n})=>{if(e.payload){const{arg:r,error:i}=e.payload,o=JSON.stringify(i);zF.error({data:{arg:r,error:R3(i)}},`Problem invoking session: ${o}`)}}})},uSe=Se.child({namespace:"session"}),cSe=()=>{pe({actionCreator:Ll,effect:(e,{getState:t,dispatch:n})=>{const{sessionId:r}=t().system;r&&(uSe.debug({session_id:r},`Session ready to invoke (${r})})`),n(yp({session_id:r})))}})},dSe=Se.child({namespace:"socketio"}),fSe=()=>{pe({actionCreator:xL,effect:(e,{dispatch:t,getState:n})=>{const{timestamp:r}=e.payload;dSe.debug({timestamp:r},"Connected");const{nodes:i,config:o}=n(),{disabledTabs:s}=o;!i.schema&&!s.includes("nodes")&&t(Ph()),t(CL(e.payload)),t(so.endpoints.getMainModels.initiate()),t(so.endpoints.getControlNetModels.initiate()),t(so.endpoints.getLoRAModels.initiate()),t(so.endpoints.getTextualInversionModels.initiate()),t(so.endpoints.getVaeModels.initiate())}})},hSe=Se.child({namespace:"socketio"}),pSe=()=>{pe({actionCreator:TL,effect:(e,{dispatch:t,getState:n})=>{hSe.debug(e.payload,"Disconnected"),t(EL(e.payload))}})},kk=Se.child({namespace:"socketio"}),gSe=()=>{pe({actionCreator:LL,effect:(e,{dispatch:t,getState:n})=>{if(n().system.canceledSession===e.payload.data.graph_execution_state_id){kk.trace(e.payload,"Ignored generator progress for canceled session");return}kk.trace(e.payload,`Generator progress (${e.payload.data.node.type})`),t($L(e.payload))}})},mSe=Se.child({namespace:"socketio"}),ySe=()=>{pe({actionCreator:NL,effect:(e,{dispatch:t,getState:n})=>{mSe.debug(e.payload,`Session invocation complete (${e.payload.data.graph_execution_state_id})`),t(DL(e.payload))}})},vSe=Se.child({namespace:"socketio"}),bSe=["dataURL_image"],SSe=()=>{pe({actionCreator:u3,effect:async(e,{dispatch:t,getState:n,take:r})=>{vSe.debug({data:e.payload},`Invocation complete (${e.payload.data.node.type})`);const i=e.payload.data.graph_execution_state_id,{cancelType:o,isCancelScheduled:s}=n().system;o==="scheduled"&&s&&t(Dl({session_id:i}));const{data:a}=e.payload,{result:l,node:u,graph_execution_state_id:c}=a;if(IF(l)&&!bSe.includes(u.type)){const{image_name:d}=l.image,{canvas:f,gallery:h}=n(),p=await t(ye.endpoints.getImageDTO.initiate(d)).unwrap();if(c===f.layerState.stagingArea.sessionId&&t(Qfe(p)),!p.is_intermediate){const{autoAddBoardId:m}=h;t(m?ye.endpoints.addImageToBoard.initiate({board_id:m,imageDTO:p}):ye.util.updateQueryData("listImages",{board_id:"none",categories:Mi},y=>{const g=y.total,_=lr.addOne(y,p).total-g;y.total=y.total+_})),t(ye.util.invalidateTags([{type:"BoardImagesTotal",id:m??"none"},{type:"BoardAssetsTotal",id:m??"none"}]));const{selectedBoardId:S,shouldAutoSwitch:v}=h;v&&(m&&m!==S?(t(Fw(m)),t(Uy("images"))):m||t(Uy("images")),t(ra(p.image_name)))}t(C1e(null))}t(IL(e.payload))}})},_Se=Se.child({namespace:"socketio"}),wSe=()=>{pe({actionCreator:ML,effect:(e,{dispatch:t,getState:n})=>{_Se.error(e.payload,`Invocation error (${e.payload.data.node.type}): ${e.payload.data.error}`),t(c3(e.payload))}})},Ak=Se.child({namespace:"socketio"}),xSe=()=>{pe({actionCreator:OL,effect:(e,{dispatch:t,getState:n})=>{if(n().system.canceledSession===e.payload.data.graph_execution_state_id){Ak.trace(e.payload,"Ignored invocation started for canceled session");return}Ak.debug(e.payload,`Invocation started (${e.payload.data.node.type})`),t(RL(e.payload))}})},CSe=Se.child({namespace:"socketio"}),TSe=()=>{pe({actionCreator:l3,effect:(e,{dispatch:t,getState:n})=>{CSe.debug(e.payload,`Subscribed (${e.payload.sessionId}))`),t(PL(e.payload))}})},ESe=Se.child({namespace:"socketio"}),PSe=()=>{pe({actionCreator:kL,effect:(e,{dispatch:t,getState:n})=>{ESe.debug(e.payload,`Unsubscribed (${e.payload.sessionId})`),t(AL(e.payload))}})};Se.child({namespace:"canvas"});const kSe=()=>{pe({actionCreator:F1e,effect:async(e,{dispatch:t,getState:n,take:r})=>{const{imageDTO:i}=e.payload;try{const o=await t(ye.endpoints.changeImageIsIntermediate.initiate({imageDTO:i,is_intermediate:!1})).unwrap(),{autoAddBoardId:s}=n().gallery;s&&await t(ye.endpoints.addImageToBoard.initiate({imageDTO:o,board_id:s})),t(Vt({title:"Image Saved",status:"success"}))}catch(o){t(Vt({title:"Image Saving Failed",description:o==null?void 0:o.message,status:"error"}))}}})},ASe=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("

")})},Ok=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)});var I3={exports:{}},S1={},UF={},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 Bt={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Util=e.Transform=void 0;const t=Le;class n{constructor(b=[1,0,0,1,0,0]){this.dirty=!1,this.m=b&&b.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(b){b.m[0]=this.m[0],b.m[1]=this.m[1],b.m[2]=this.m[2],b.m[3]=this.m[3],b.m[4]=this.m[4],b.m[5]=this.m[5]}point(b){var _=this.m;return{x:_[0]*b.x+_[2]*b.y+_[4],y:_[1]*b.x+_[3]*b.y+_[5]}}translate(b,_){return this.m[4]+=this.m[0]*b+this.m[2]*_,this.m[5]+=this.m[1]*b+this.m[3]*_,this}scale(b,_){return this.m[0]*=b,this.m[1]*=b,this.m[2]*=_,this.m[3]*=_,this}rotate(b){var _=Math.cos(b),w=Math.sin(b),x=this.m[0]*_+this.m[2]*w,C=this.m[1]*_+this.m[3]*w,k=this.m[0]*-w+this.m[2]*_,P=this.m[1]*-w+this.m[3]*_;return this.m[0]=x,this.m[1]=C,this.m[2]=k,this.m[3]=P,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(b,_){var w=this.m[0]+this.m[2]*_,x=this.m[1]+this.m[3]*_,C=this.m[2]+this.m[0]*b,k=this.m[3]+this.m[1]*b;return this.m[0]=w,this.m[1]=x,this.m[2]=C,this.m[3]=k,this}multiply(b){var _=this.m[0]*b.m[0]+this.m[2]*b.m[1],w=this.m[1]*b.m[0]+this.m[3]*b.m[1],x=this.m[0]*b.m[2]+this.m[2]*b.m[3],C=this.m[1]*b.m[2]+this.m[3]*b.m[3],k=this.m[0]*b.m[4]+this.m[2]*b.m[5]+this.m[4],P=this.m[1]*b.m[4]+this.m[3]*b.m[5]+this.m[5];return this.m[0]=_,this.m[1]=w,this.m[2]=x,this.m[3]=C,this.m[4]=k,this.m[5]=P,this}invert(){var b=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),_=this.m[3]*b,w=-this.m[1]*b,x=-this.m[2]*b,C=this.m[0]*b,k=b*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),P=b*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=_,this.m[1]=w,this.m[2]=x,this.m[3]=C,this.m[4]=k,this.m[5]=P,this}getMatrix(){return this.m}decompose(){var b=this.m[0],_=this.m[1],w=this.m[2],x=this.m[3],C=this.m[4],k=this.m[5],P=b*x-_*w;let A={x:C,y:k,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(b!=0||_!=0){var $=Math.sqrt(b*b+_*_);A.rotation=_>0?Math.acos(b/$):-Math.acos(b/$),A.scaleX=$,A.scaleY=P/$,A.skewX=(b*w+_*x)/P,A.skewY=0}else if(w!=0||x!=0){var N=Math.sqrt(w*w+x*x);A.rotation=Math.PI/2-(x>0?Math.acos(-w/N):-Math.acos(w/N)),A.scaleX=P/N,A.scaleY=N,A.skewX=0,A.skewY=(b*w+_*x)/P}return A.rotation=e.Util._getRotation(A.rotation),A}}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]},S=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,v=[];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 b=g[0];return b==="#"||b==="."||b===b.toUpperCase()},_sign(g){return g===0||g>0?1:-1},requestAnimFrame(g){v.push(g),v.length===1&&y(function(){const b=v;v=[],b.forEach(function(_){_()})})},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,b){var _=e.Util.createImageElement();_.onload=function(){b(_)},_.src=g},_rgbToHex(g,b,_){return((1<<24)+(g<<16)+(b<<8)+_).toString(16).slice(1)},_hexToRgb(g){g=g.replace(u,c);var b=parseInt(g,16);return{r:b>>16&255,g:b>>8&255,b:b&255}},getRandomColor(){for(var g=(Math.random()*16777215<<0).toString(16);g.length<6;)g=d+g;return u+g},getRGB(g){var b;return g in m?(b=m[g],{r:b[0],g:b[1],b:b[2]}):g[0]===u?this._hexToRgb(g.substring(1)):g.substr(0,4)===p?(b=S.exec(g.replace(/ /g,"")),{r:parseInt(b[1],10),g:parseInt(b[2],10),b:parseInt(b[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 b=m[g.toLowerCase()];return b?{r:b[0],g:b[1],b:b[2],a:1}:null},_rgbColorToRGBA(g){if(g.indexOf("rgb(")===0){g=g.match(/rgb\(([^)]+)\)/)[1];var b=g.split(/ *, */).map(Number);return{r:b[0],g:b[1],b:b[2],a:1}}},_rgbaColorToRGBA(g){if(g.indexOf("rgba(")===0){g=g.match(/rgba\(([^)]+)\)/)[1];var b=g.split(/ *, */).map((_,w)=>_.slice(-1)==="%"?w===3?parseInt(_)/100:parseInt(_)/100*255:Number(_));return{r:b[0],g:b[1],b:b[2],a:b[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[b,..._]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(g),w=Number(_[0])/360,x=Number(_[1])/100,C=Number(_[2])/100;let k,P,A;if(x===0)return A=C*255,{r:Math.round(A),g:Math.round(A),b:Math.round(A),a:1};C<.5?k=C*(1+x):k=C+x-C*x;const $=2*C-k,N=[0,0,0];for(let T=0;T<3;T++)P=w+1/3*-(T-1),P<0&&P++,P>1&&P--,6*P<1?A=$+(k-$)*6*P:2*P<1?A=k:3*P<2?A=$+(k-$)*(2/3-P)*6:A=$,N[T]=A*255;return{r:Math.round(N[0]),g:Math.round(N[1]),b:Math.round(N[2]),a:1}}},haveIntersection(g,b){return!(b.x>g.x+g.width||b.x+b.widthg.y+g.height||b.y+b.height1?(k=_,P=w,A=(_-x)*(_-x)+(w-C)*(w-C)):(k=g+N*(_-g),P=b+N*(w-b),A=(k-x)*(k-x)+(P-C)*(P-C))}return[k,P,A]},_getProjectionToLine(g,b,_){var w=e.Util.cloneObject(g),x=Number.MAX_VALUE;return b.forEach(function(C,k){if(!(!_&&k===b.length-1)){var P=b[(k+1)%b.length],A=e.Util._getProjectionToSegment(C.x,C.y,P.x,P.y,g.x,g.y),$=A[0],N=A[1],T=A[2];Tb.length){var k=b;b=g,g=k}for(w=0;w{b.width=0,b.height=0})},drawRoundedRectPath(g,b,_,w){let x=0,C=0,k=0,P=0;typeof w=="number"?x=C=k=P=Math.min(w,b/2,_/2):(x=Math.min(w[0]||0,b/2,_/2),C=Math.min(w[1]||0,b/2,_/2),P=Math.min(w[2]||0,b/2,_/2),k=Math.min(w[3]||0,b/2,_/2)),g.moveTo(x,0),g.lineTo(b-C,0),g.arc(b-C,C,C,Math.PI*3/2,0,!1),g.lineTo(b,_-P),g.arc(b-P,_-P,P,0,Math.PI/2,!1),g.lineTo(k,_),g.arc(k,_-k,k,Math.PI/2,Math.PI,!1),g.lineTo(0,x),g.arc(x,x,x,Math.PI,Math.PI*3/2,!1)}}})(Bt);var At={},Ie={},fe={};Object.defineProperty(fe,"__esModule",{value:!0});fe.getComponentValidator=fe.getBooleanValidator=fe.getNumberArrayValidator=fe.getFunctionValidator=fe.getStringOrGradientValidator=fe.getStringValidator=fe.getNumberOrAutoValidator=fe.getNumberOrArrayOfNumbersValidator=fe.getNumberValidator=fe.alphaComponent=fe.RGBComponent=void 0;const ys=Le,Ut=Bt;function vs(e){return Ut.Util._isString(e)?'"'+e+'"':Object.prototype.toString.call(e)==="[object Number]"||Ut.Util._isBoolean(e)?e:Object.prototype.toString.call(e)}function OSe(e){return e>255?255:e<0?0:Math.round(e)}fe.RGBComponent=OSe;function RSe(e){return e>1?1:e<1e-4?1e-4:e}fe.alphaComponent=RSe;function ISe(){if(ys.Konva.isUnminified)return function(e,t){return Ut.Util._isNumber(e)||Ut.Util.warn(vs(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}fe.getNumberValidator=ISe;function MSe(e){if(ys.Konva.isUnminified)return function(t,n){let r=Ut.Util._isNumber(t),i=Ut.Util._isArray(t)&&t.length==e;return!r&&!i&&Ut.Util.warn(vs(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}fe.getNumberOrArrayOfNumbersValidator=MSe;function NSe(){if(ys.Konva.isUnminified)return function(e,t){var n=Ut.Util._isNumber(e),r=e==="auto";return n||r||Ut.Util.warn(vs(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}fe.getNumberOrAutoValidator=NSe;function DSe(){if(ys.Konva.isUnminified)return function(e,t){return Ut.Util._isString(e)||Ut.Util.warn(vs(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}fe.getStringValidator=DSe;function LSe(){if(ys.Konva.isUnminified)return function(e,t){const n=Ut.Util._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||Ut.Util.warn(vs(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}fe.getStringOrGradientValidator=LSe;function $Se(){if(ys.Konva.isUnminified)return function(e,t){return Ut.Util._isFunction(e)||Ut.Util.warn(vs(e)+' is a not valid value for "'+t+'" attribute. The value should be a function.'),e}}fe.getFunctionValidator=$Se;function FSe(){if(ys.Konva.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(Ut.Util._isArray(e)?e.forEach(function(r){Ut.Util._isNumber(r)||Ut.Util.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):Ut.Util.warn(vs(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}fe.getNumberArrayValidator=FSe;function BSe(){if(ys.Konva.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||Ut.Util.warn(vs(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}fe.getBooleanValidator=BSe;function jSe(e){if(ys.Konva.isUnminified)return function(t,n){return t==null||Ut.Util.isObject(t)||Ut.Util.warn(vs(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}fe.getComponentValidator=jSe;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Factory=void 0;const t=Bt,n=fe;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 v={};for(p=0;p{this._setAttr(s+d(b),void 0)}),this._fireChangeEvent(s,y,v),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}}})(Ie);var Bi={},rs={};Object.defineProperty(rs,"__esModule",{value:!0});rs.HitContext=rs.SceneContext=rs.Context=void 0;const GF=Bt,VSe=Le;function zSe(e){var t=[],n=e.length,r=GF.Util,i,o;for(i=0;itypeof c=="number"?Math.floor(c):c)),o+=USe+u.join(Rk)+GSe)):(o+=a.property,t||(o+=YSe+a.val)),o+=WSe;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=QSe&&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=Ik.length,r=this.setAttr,i,o,s=function(a){var l=t[a],u;t[a]=function(){return o=zSe(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))})(x1);Object.defineProperty(At,"__esModule",{value:!0});At.Node=void 0;const je=Bt,wp=Ie,kg=Bi,Ba=Le,ti=x1,Yt=fe;var _m="absoluteOpacity",Ag="allEventListeners",Uo="absoluteTransform",Mk="absoluteScale",ja="canvas",o_e="Change",s_e="children",a_e="konva",lx="listening",Nk="mouseenter",Dk="mouseleave",Lk="set",$k="Shape",wm=" ",Fk="stage",Os="transform",l_e="Stage",ux="visible",u_e=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(wm);let c_e=1,Pe=class cx{constructor(t){this._id=c_e++,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===Os||t===Uo)&&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===Os||t===Uo,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(wm);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(ja)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===Uo&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(ja)){const{scene:t,filter:n,hit:r}=this._cache.get(ja);je.Util.releaseCanvas(t,n,r),this._cache.delete(ja)}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){je.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 kg.SceneCanvas({pixelRatio:s,width:i,height:o}),h=new kg.SceneCanvas({pixelRatio:s,width:0,height:0,willReadFrequently:!0}),p=new kg.HitCanvas({pixelRatio:d,width:i,height:o}),m=f.getContext(),S=p.getContext();return p.isCache=!0,f.isCache=!0,this._cache.delete(ja),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(f.getContext()._context.imageSmoothingEnabled=!1,h.getContext()._context.imageSmoothingEnabled=!1),m.save(),S.save(),m.translate(-a,-l),S.translate(-a,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(_m),this._clearSelfAndDescendantCache(Mk),this.drawScene(f,this),this.drawHit(p,this),this._isUnderCache=!1,m.restore(),S.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(ja,{scene:f,filter:h,hit:p,x:a,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(ja)}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!==s_e&&(r=Lk+je.Util._capitalize(n),je.Util._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(lx,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(ux,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;ti.DD._dragElements.forEach(s=>{s.dragStatus==="dragging"&&(s.node.nodeType==="Stage"||s.node.getLayer()===r)&&(i=!0)});var o=!n&&!Ba.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!==l_e&&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(Os),this._clearSelfAndDescendantCache(Uo)),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 je.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(Os);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(Os),this._clearSelfAndDescendantCache(Uo),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 je.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 je.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&je.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(_m,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=je.Util.isObject(i)&&!je.Util._isPlainObject(i)&&!je.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(),je.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,je.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():Ba.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;ti.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=ti.DD._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&ti.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 je.Util.haveIntersection(r,this.getClientRect())}static create(t,n){return je.Util._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=cx.prototype.getClassName.call(t),i=t.children,o,s,a;n&&(t.attrs.container=n),Ba.Konva[r]||(je.Util.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=Ba.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=b_.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=b_.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 S;if(l)S=l.call(this,o,this);else{var h=this.clipX(),p=this.clipY();o.rect(h,p,s,a)}o.clip.apply(o,S),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(S){S[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 S=m.getClientRect({relativeTo:c,skipShadow:t.skipShadow,skipStroke:t.skipStroke});S.width===0&&S.height===0||(o===void 0?(o=S.x,s=S.y,a=S.x+S.width,l=S.y+S.height):(o=Math.min(o,S.x),s=Math.min(s,S.y),a=Math.max(a,S.x+S.width),l=Math.max(l,S.y+S.height)))}});for(var d=this.find("Shape"),f=!1,h=0;hX.indexOf("pointer")>=0?"pointer":X.indexOf("touch")>=0?"touch":"mouse",z=X=>{const F=V(X);if(F==="pointer")return i.Konva.pointerEventsEnabled&&L.pointer;if(F==="touch")return L.touch;if(F==="mouse")return L.mouse};function U(X={}){return(X.clipFunc||X.clipWidth||X.clipHeight)&&t.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),X}const K="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 W extends r.Container{constructor(F){super(U(F)),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",()=>{U(this.attrs)}),this._checkVisibility()}_validateAdd(F){const q=F.getType()==="Layer",Q=F.getType()==="FastLayer";q||Q||t.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const F=this.visible()?"":"none";this.content.style.display=F}setContainer(F){if(typeof F===c){if(F.charAt(0)==="."){var q=F.slice(1);F=document.getElementsByClassName(q)[0]}else{var Q;F.charAt(0)!=="#"?Q=F:Q=F.slice(1),F=document.getElementById(Q)}if(!F)throw"Can not find container in document with id "+Q}return this._setAttr("container",F),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),F.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var F=this.children,q=F.length,Q;for(Q=0;Q-1&&e.stages.splice(q,1),t.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const F=this._pointerPositions[0]||this._changedPointerPositions[0];return F?{x:F.x,y:F.y}:(t.Util.warn(K),null)}_getPointerById(F){return this._pointerPositions.find(q=>q.id===F)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(F){F=F||{},F.x=F.x||0,F.y=F.y||0,F.width=F.width||this.width(),F.height=F.height||this.height();var q=new o.SceneCanvas({width:F.width,height:F.height,pixelRatio:F.pixelRatio||1}),Q=q.getContext()._context,J=this.children;return(F.x||F.y)&&Q.translate(-1*F.x,-1*F.y),J.forEach(function(ne){if(ne.isVisible()){var Z=ne._toKonvaCanvas(F);Q.drawImage(Z._canvas,F.x,F.y,Z.getWidth()/Z.getPixelRatio(),Z.getHeight()/Z.getPixelRatio())}}),q}getIntersection(F){if(!F)return null;var q=this.children,Q=q.length,J=Q-1,ne;for(ne=J;ne>=0;ne--){const Z=q[ne].getIntersection(F);if(Z)return Z}return null}_resizeDOM(){var F=this.width(),q=this.height();this.content&&(this.content.style.width=F+d,this.content.style.height=q+d),this.bufferCanvas.setSize(F,q),this.bufferHitCanvas.setSize(F,q),this.children.forEach(Q=>{Q.setSize({width:F,height:q}),Q.draw()})}add(F,...q){if(arguments.length>1){for(var Q=0;QR&&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."),F.setSize({width:this.width(),height:this.height()}),F.draw(),i.Konva.isBrowser&&this.content.appendChild(F.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(F){return l.hasPointerCapture(F,this)}setPointerCapture(F){l.setPointerCapture(F,this)}releaseCapture(F){l.releaseCapture(F,this)}getLayers(){return this.children}_bindContentEvents(){i.Konva.isBrowser&&D.forEach(([F,q])=>{this.content.addEventListener(F,Q=>{this[q](Q)},{passive:!1})})}_pointerenter(F){this.setPointersPositions(F);const q=z(F.type);this._fire(q.pointerenter,{evt:F,target:this,currentTarget:this})}_pointerover(F){this.setPointersPositions(F);const q=z(F.type);this._fire(q.pointerover,{evt:F,target:this,currentTarget:this})}_getTargetShape(F){let q=this[F+"targetShape"];return q&&!q.getStage()&&(q=null),q}_pointerleave(F){const q=z(F.type),Q=V(F.type);if(q){this.setPointersPositions(F);var J=this._getTargetShape(Q),ne=!s.DD.isDragging||i.Konva.hitOnDragEnabled;J&&ne?(J._fireAndBubble(q.pointerout,{evt:F}),J._fireAndBubble(q.pointerleave,{evt:F}),this._fire(q.pointerleave,{evt:F,target:this,currentTarget:this}),this[Q+"targetShape"]=null):ne&&(this._fire(q.pointerleave,{evt:F,target:this,currentTarget:this}),this._fire(q.pointerout,{evt:F,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(F){const q=z(F.type),Q=V(F.type);if(q){this.setPointersPositions(F);var J=!1;this._changedPointerPositions.forEach(ne=>{var Z=this.getIntersection(ne);if(s.DD.justDragged=!1,i.Konva["_"+Q+"ListenClick"]=!0,!(Z&&Z.isListening()))return;i.Konva.capturePointerEventsEnabled&&Z.setPointerCapture(ne.id),this[Q+"ClickStartShape"]=Z,Z._fireAndBubble(q.pointerdown,{evt:F,pointerId:ne.id}),J=!0;const ae=F.type.indexOf("touch")>=0;Z.preventDefault()&&F.cancelable&&ae&&F.preventDefault()}),J||this._fire(q.pointerdown,{evt:F,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(F){const q=z(F.type),Q=V(F.type);if(!q)return;s.DD.isDragging&&s.DD.node.preventDefault()&&F.cancelable&&F.preventDefault(),this.setPointersPositions(F);var J=!s.DD.isDragging||i.Konva.hitOnDragEnabled;if(!J)return;var ne={};let Z=!1;var ge=this._getTargetShape(Q);this._changedPointerPositions.forEach(ae=>{const oe=l.getCapturedShape(ae.id)||this.getIntersection(ae),Te=ae.id,se={evt:F,pointerId:Te};var We=ge!==oe;if(We&&ge&&(ge._fireAndBubble(q.pointerout,Object.assign({},se),oe),ge._fireAndBubble(q.pointerleave,Object.assign({},se),oe)),oe){if(ne[oe._id])return;ne[oe._id]=!0}oe&&oe.isListening()?(Z=!0,We&&(oe._fireAndBubble(q.pointerover,Object.assign({},se),ge),oe._fireAndBubble(q.pointerenter,Object.assign({},se),ge),this[Q+"targetShape"]=oe),oe._fireAndBubble(q.pointermove,Object.assign({},se))):ge&&(this._fire(q.pointerover,{evt:F,target:this,currentTarget:this,pointerId:Te}),this[Q+"targetShape"]=null)}),Z||this._fire(q.pointermove,{evt:F,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(F){const q=z(F.type),Q=V(F.type);if(!q)return;this.setPointersPositions(F);const J=this[Q+"ClickStartShape"],ne=this[Q+"ClickEndShape"];var Z={};let ge=!1;this._changedPointerPositions.forEach(ae=>{const oe=l.getCapturedShape(ae.id)||this.getIntersection(ae);if(oe){if(oe.releaseCapture(ae.id),Z[oe._id])return;Z[oe._id]=!0}const Te=ae.id,se={evt:F,pointerId:Te};let We=!1;i.Konva["_"+Q+"InDblClickWindow"]?(We=!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),oe&&oe.isListening()?(ge=!0,this[Q+"ClickEndShape"]=oe,oe._fireAndBubble(q.pointerup,Object.assign({},se)),i.Konva["_"+Q+"ListenClick"]&&J&&J===oe&&(oe._fireAndBubble(q.pointerclick,Object.assign({},se)),We&&ne&&ne===oe&&oe._fireAndBubble(q.pointerdblclick,Object.assign({},se)))):(this[Q+"ClickEndShape"]=null,i.Konva["_"+Q+"ListenClick"]&&this._fire(q.pointerclick,{evt:F,target:this,currentTarget:this,pointerId:Te}),We&&this._fire(q.pointerdblclick,{evt:F,target:this,currentTarget:this,pointerId:Te}))}),ge||this._fire(q.pointerup,{evt:F,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),i.Konva["_"+Q+"ListenClick"]=!1,F.cancelable&&Q!=="touch"&&F.preventDefault()}_contextmenu(F){this.setPointersPositions(F);var q=this.getIntersection(this.getPointerPosition());q&&q.isListening()?q._fireAndBubble($,{evt:F}):this._fire($,{evt:F,target:this,currentTarget:this})}_wheel(F){this.setPointersPositions(F);var q=this.getIntersection(this.getPointerPosition());q&&q.isListening()?q._fireAndBubble(M,{evt:F}):this._fire(M,{evt:F,target:this,currentTarget:this})}_pointercancel(F){this.setPointersPositions(F);const q=l.getCapturedShape(F.pointerId)||this.getIntersection(this.getPointerPosition());q&&q._fireAndBubble(_,l.createEvent(F)),l.releaseCapture(F.pointerId)}_lostpointercapture(F){l.releaseCapture(F.pointerId)}setPointersPositions(F){var q=this._getContentPosition(),Q=null,J=null;F=F||window.event,F.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(F.touches,ne=>{this._pointerPositions.push({id:ne.identifier,x:(ne.clientX-q.left)/q.scaleX,y:(ne.clientY-q.top)/q.scaleY})}),Array.prototype.forEach.call(F.changedTouches||F.touches,ne=>{this._changedPointerPositions.push({id:ne.identifier,x:(ne.clientX-q.left)/q.scaleX,y:(ne.clientY-q.top)/q.scaleY})})):(Q=(F.clientX-q.left)/q.scaleX,J=(F.clientY-q.top)/q.scaleY,this.pointerPos={x:Q,y:J},this._pointerPositions=[{x:Q,y:J,id:t.Util._getFirstPointerId(F)}],this._changedPointerPositions=[{x:Q,y:J,id:t.Util._getFirstPointerId(F)}])}_setPointerPosition(F){t.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(F)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var F=this.content.getBoundingClientRect();return{top:F.top,left:F.left,scaleX:F.width/this.content.clientWidth||1,scaleY:F.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 F=this.container();if(!F)throw"Stage has no container. A container is required.";F.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"),F.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(F){F.batchDraw()}),this}}e.Stage=W,W.prototype.nodeType=u,(0,a._registerNode)(W),n.Factory.addGetterSetter(W,"container")})(WF);var xp={},pn={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.shapes=void 0;const t=Le,n=Bt,r=Ie,i=At,o=fe,s=Le,a=Br;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(k){const P=this.attrs.fillRule;P?k.fill(P):k.fill()}function S(k){k.stroke()}function v(k){k.fill()}function y(k){k.stroke()}function g(){this._clearCache(l)}function b(){this._clearCache(u)}function _(){this._clearCache(c)}function w(){this._clearCache(d)}function x(){this._clearCache(f)}class C extends i.Node{constructor(P){super(P);let A;for(;A=n.Util.getRandomColor(),!(A&&!(A in e.shapes)););this.colorKey=A,e.shapes[A]=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 P=p();const A=P.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(A&&A.setTransform){const $=new n.Transform;$.translate(this.fillPatternX(),this.fillPatternY()),$.rotate(t.Konva.getAngle(this.fillPatternRotation())),$.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),$.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const N=$.getMatrix(),T=typeof DOMMatrix>"u"?{a:N[0],b:N[1],c:N[2],d:N[3],e:N[4],f:N[5]}:new DOMMatrix(N);A.setTransform(T)}return A}}_getLinearGradient(){return this._getCache(d,this.__getLinearGradient)}__getLinearGradient(){var P=this.fillLinearGradientColorStops();if(P){for(var A=p(),$=this.fillLinearGradientStartPoint(),N=this.fillLinearGradientEndPoint(),T=A.createLinearGradient($.x,$.y,N.x,N.y),O=0;Othis.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 P=this.hitStrokeWidth();return P==="auto"?this.hasStroke():this.strokeEnabled()&&!!P}intersects(P){var A=this.getStage(),$=A.bufferHitCanvas,N;return $.getContext().clear(),this.drawHit($,null,!0),N=$.context.getImageData(Math.round(P.x),Math.round(P.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(P){var A;if(!this.getStage()||!((A=this.attrs.perfectDrawEnabled)!==null&&A!==void 0?A:!0))return!1;const N=P||this.hasFill(),T=this.hasStroke(),O=this.getAbsoluteOpacity()!==1;if(N&&T&&O)return!0;const I=this.hasShadow(),M=this.shadowForStrokeEnabled();return!!(N&&T&&I&&M)}setStrokeHitEnabled(P){n.Util.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),P?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var P=this.size();return{x:this._centroid?-P.width/2:0,y:this._centroid?-P.height/2:0,width:P.width,height:P.height}}getClientRect(P={}){const A=P.skipTransform,$=P.relativeTo,N=this.getSelfRect(),O=!P.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,I=N.width+O,M=N.height+O,R=!P.skipShadow&&this.hasShadow(),D=R?this.shadowOffsetX():0,L=R?this.shadowOffsetY():0,V=I+Math.abs(D),z=M+Math.abs(L),U=R&&this.shadowBlur()||0,K=V+U*2,W=z+U*2,X={width:K,height:W,x:-(O/2+U)+Math.min(D,0)+N.x,y:-(O/2+U)+Math.min(L,0)+N.y};return A?X:this._transformedRect(X,$)}drawScene(P,A){var $=this.getLayer(),N=P||$.getCanvas(),T=N.getContext(),O=this._getCanvasCache(),I=this.getSceneFunc(),M=this.hasShadow(),R,D,L,V=N.isCache,z=A===this;if(!this.isVisible()&&!z)return this;if(O){T.save();var U=this.getAbsoluteTransform(A).getMatrix();return T.transform(U[0],U[1],U[2],U[3],U[4],U[5]),this._drawCachedSceneCanvas(T),T.restore(),this}if(!I)return this;if(T.save(),this._useBufferCanvas()&&!V){R=this.getStage(),D=R.bufferCanvas,L=D.getContext(),L.clear(),L.save(),L._applyLineJoin(this);var K=this.getAbsoluteTransform(A).getMatrix();L.transform(K[0],K[1],K[2],K[3],K[4],K[5]),I.call(this,L,this),L.restore();var W=D.pixelRatio;M&&T._applyShadow(this),T._applyOpacity(this),T._applyGlobalCompositeOperation(this),T.drawImage(D._canvas,0,0,D.width/W,D.height/W)}else{if(T._applyLineJoin(this),!z){var K=this.getAbsoluteTransform(A).getMatrix();T.transform(K[0],K[1],K[2],K[3],K[4],K[5]),T._applyOpacity(this),T._applyGlobalCompositeOperation(this)}M&&T._applyShadow(this),I.call(this,T,this)}return T.restore(),this}drawHit(P,A,$=!1){if(!this.shouldDrawHit(A,$))return this;var N=this.getLayer(),T=P||N.hitCanvas,O=T&&T.getContext(),I=this.hitFunc()||this.sceneFunc(),M=this._getCanvasCache(),R=M&&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()"),R){O.save();var D=this.getAbsoluteTransform(A).getMatrix();return O.transform(D[0],D[1],D[2],D[3],D[4],D[5]),this._drawCachedHitCanvas(O),O.restore(),this}if(!I)return this;if(O.save(),O._applyLineJoin(this),!(this===A)){var V=this.getAbsoluteTransform(A).getMatrix();O.transform(V[0],V[1],V[2],V[3],V[4],V[5])}return I.call(this,O,this),O.restore(),this}drawHitFromCache(P=0){var A=this._getCanvasCache(),$=this._getCachedSceneCanvas(),N=A.hit,T=N.getContext(),O=N.getWidth(),I=N.getHeight(),M,R,D,L,V,z;T.clear(),T.drawImage($._canvas,0,0,O,I);try{for(M=T.getImageData(0,0,O,I),R=M.data,D=R.length,L=n.Util._hexToRgb(this.colorKey),V=0;VP?(R[V]=L.r,R[V+1]=L.g,R[V+2]=L.b,R[V+3]=255):R[V+3]=0;T.putImageData(M,0,0)}catch(U){n.Util.error("Unable to draw hit graph from cached scene canvas. "+U.message)}return this}hasPointerCapture(P){return a.hasPointerCapture(P,this)}setPointerCapture(P){a.setPointerCapture(P,this)}releaseCapture(P){a.releaseCapture(P,this)}}e.Shape=C,C.prototype._fillFunc=m,C.prototype._strokeFunc=S,C.prototype._fillFuncHit=v,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",b),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",_),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"})})(pn);Object.defineProperty(xp,"__esModule",{value:!0});xp.Layer=void 0;const jo=Bt,S_=$l,au=At,N3=Ie,Bk=Bi,g_e=fe,m_e=pn,y_e=Le;var v_e="#",b_e="beforeDraw",S_e="draw",XF=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],__e=XF.length;class Xc extends S_.Container{constructor(t){super(t),this.canvas=new Bk.SceneCanvas,this.hitCanvas=new Bk.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;i<__e;i++){const o=XF[i],s=this._getIntersection({x:t.x+o.x*n,y:t.y+o.y*n}),a=s.shape;if(a)return a;if(r=!!s.antialiased,!s.antialiased)break}if(r)n+=1;else return null}}_getIntersection(t){const n=this.hitCanvas.pixelRatio,r=this.hitCanvas.context.getImageData(Math.round(t.x*n),Math.round(t.y*n),1,1).data,i=r[3];if(i===255){const o=jo.Util._rgbToHex(r[0],r[1],r[2]),s=m_e.shapes[v_e+o];return s?{shape:s}:{antialiased:!0}}else if(i>0)return{antialiased:!0};return{}}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas();return this._fire(b_e,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),S_.Container.prototype.drawScene.call(this,i,n),this._fire(S_e,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),S_.Container.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){jo.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return jo.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 jo.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}xp.Layer=Xc;Xc.prototype.nodeType="Layer";(0,y_e._registerNode)(Xc);N3.Factory.addGetterSetter(Xc,"imageSmoothingEnabled",!0);N3.Factory.addGetterSetter(Xc,"clearBeforeDraw",!0);N3.Factory.addGetterSetter(Xc,"hitGraphEnabled",!0,(0,g_e.getBooleanValidator)());var T1={};Object.defineProperty(T1,"__esModule",{value:!0});T1.FastLayer=void 0;const w_e=Bt,x_e=xp,C_e=Le;class D3 extends x_e.Layer{constructor(t){super(t),this.listening(!1),w_e.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}T1.FastLayer=D3;D3.prototype.nodeType="FastLayer";(0,C_e._registerNode)(D3);var Qc={};Object.defineProperty(Qc,"__esModule",{value:!0});Qc.Group=void 0;const T_e=Bt,E_e=$l,P_e=Le;class L3 extends E_e.Container{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&T_e.Util.throw("You may only add groups and shapes to groups.")}}Qc.Group=L3;L3.prototype.nodeType="Group";(0,P_e._registerNode)(L3);var Zc={};Object.defineProperty(Zc,"__esModule",{value:!0});Zc.Animation=void 0;const __=Le,jk=Bt;var w_=function(){return __.glob.performance&&__.glob.performance.now?function(){return __.glob.performance.now()}:function(){return new Date().getTime()}}();class ao{constructor(t,n){this.id=ao.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:w_(),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,S=p.node,v=S._id,y,g=p.easing||e.Easings.Linear,b=!!p.yoyo,_;typeof p.duration>"u"?y=.3:p.duration===0?y=.001:y=p.duration,this.node=S,this._id=u++;var w=S.getLayer()||(S instanceof i.Konva.Stage?S.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(_,function(x){m._tweenFunc(x)},g,0,1,y*1e3,b),this._addListeners(),f.attrs[v]||(f.attrs[v]={}),f.attrs[v][this._id]||(f.attrs[v][this._id]={}),f.tweens[v]||(f.tweens[v]={});for(_ in p)o[_]===void 0&&this._addAttr(_,p[_]);this.reset(),this.onFinish=p.onFinish,this.onReset=p.onReset,this.onUpdate=p.onUpdate}_addAttr(p,m){var S=this.node,v=S._id,y,g,b,_,w,x,C,k;if(b=f.tweens[v][p],b&&delete f.attrs[v][b][p],y=S.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,S.closed())):(x=m,m=t.Util._prepareArrayForTween(m,y,S.closed()))),p.indexOf("fill")===0)for(_=0;_{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,S=f.tweens[p],v;this.pause();for(v in S)delete f.tweens[p][v];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,S){var v=1.70158;return m*(h/=S)*h*((v+1)*h-v)+p},BackEaseOut(h,p,m,S){var v=1.70158;return m*((h=h/S-1)*h*((v+1)*h+v)+1)+p},BackEaseInOut(h,p,m,S){var v=1.70158;return(h/=S/2)<1?m/2*(h*h*(((v*=1.525)+1)*h-v))+p:m/2*((h-=2)*h*(((v*=1.525)+1)*h+v)+2)+p},ElasticEaseIn(h,p,m,S,v,y){var g=0;return h===0?p:(h/=S)===1?p+m:(y||(y=S*.3),!v||v0?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}}}E1.Arc=bs;bs.prototype._centroid=!0;bs.prototype.className="Arc";bs.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,A_e._registerNode)(bs);P1.Factory.addGetterSetter(bs,"innerRadius",0,(0,k1.getNumberValidator)());P1.Factory.addGetterSetter(bs,"outerRadius",0,(0,k1.getNumberValidator)());P1.Factory.addGetterSetter(bs,"angle",0,(0,k1.getNumberValidator)());P1.Factory.addGetterSetter(bs,"clockwise",!1,(0,k1.getBooleanValidator)());var A1={},Cp={};Object.defineProperty(Cp,"__esModule",{value:!0});Cp.Line=void 0;const O1=Ie,O_e=pn,ZF=fe,R_e=Le;function dx(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 zk(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 S=p/(2*h),v=m/h,y=l+S,g=v-S*S,b=y*y+g>0?Math.sqrt(y*y+g):0,_=S*S+g>0?Math.sqrt(S*S+g):0,w=S+Math.sqrt(S*S+g)!==0?g*Math.log(Math.abs((y+b)/(S+_))):0;return Math.sqrt(h)/2*(y*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})(JF);Object.defineProperty(Jc,"__esModule",{value:!0});Jc.Path=void 0;const I_e=Ie,M_e=pn,N_e=Le,lu=JF;class ln extends M_e.Shape{constructor(t){super(t),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=ln.parsePathData(this.data()),this.pathLength=ln.getPathLength(this.dataArray)}_sceneFunc(t){var n=this.dataArray;t.beginPath();for(var r=!1,i=0;ic?u:c,S=u>c?1:u/c,v=u>c?c/u:1;t.translate(a,l),t.rotate(h),t.scale(S,v),t.arc(0,0,m,d,d+f,1-p),t.scale(1/S,1/v),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=ln.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 ln.getPointOnLine(t,s.start.x,s.start.y,a[0],a[1]);case"C":return ln.getPointOnCubicBezier((0,lu.t2length)(t,ln.getPathLength(n),m=>(0,lu.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 ln.getPointOnQuadraticBezier((0,lu.t2length)(t,ln.getPathLength(n),m=>(0,lu.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,ln.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=[],b=l,_=u,w,x,C,k,P,A,$,N,T,O;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 I=p.shift(),M=p.shift();if(l+=I,u+=M,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]+I,u=s[R].points[1]+M;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":k=p.shift(),P=p.shift(),A=p.shift(),$=p.shift(),N=p.shift(),T=l,O=u,l=p.shift(),u=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(T,O,l,u,$,N,k,P,A);break;case"a":k=p.shift(),P=p.shift(),A=p.shift(),$=p.shift(),N=p.shift(),T=l,O=u,l+=p.shift(),u+=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(T,O,l,u,$,N,k,P,A);break}s.push({command:y||h,points:g,start:{x:b,y:_},pathLength:this.calcLength(b,_,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=ln;switch(r){case"L":return u.getLineLength(t,n,i[0],i[1]);case"C":return(0,lu.getCubicArcLength)([t,i[0],i[2],i[4]],[n,i[1],i[3],i[5]],1);case"Q":return(0,lu.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,S=p*-l*d/a,v=(t+r)/2+Math.cos(c)*m-Math.sin(c)*S,y=(n+i)/2+Math.sin(c)*m+Math.cos(c)*S,g=function(P){return Math.sqrt(P[0]*P[0]+P[1]*P[1])},b=function(P,A){return(P[0]*A[0]+P[1]*A[1])/(g(P)*g(A))},_=function(P,A){return(P[0]*A[1]=1&&(k=0),s===0&&k>0&&(k=k-2*Math.PI),s===1&&k<0&&(k=k+2*Math.PI),[v,y,a,l,w,k,c,s]}}Jc.Path=ln;ln.prototype.className="Path";ln.prototype._attrsAffectingSize=["data"];(0,N_e._registerNode)(ln);I_e.Factory.addGetterSetter(ln,"data");Object.defineProperty(A1,"__esModule",{value:!0});A1.Arrow=void 0;const R1=Ie,D_e=Cp,eB=fe,L_e=Le,Uk=Jc;class Bl extends D_e.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=Uk.Path.calcLength(i[i.length-4],i[i.length-3],"C",f),p=Uk.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}}}A1.Arrow=Bl;Bl.prototype.className="Arrow";(0,L_e._registerNode)(Bl);R1.Factory.addGetterSetter(Bl,"pointerLength",10,(0,eB.getNumberValidator)());R1.Factory.addGetterSetter(Bl,"pointerWidth",10,(0,eB.getNumberValidator)());R1.Factory.addGetterSetter(Bl,"pointerAtBeginning",!1);R1.Factory.addGetterSetter(Bl,"pointerAtEnding",!0);var I1={};Object.defineProperty(I1,"__esModule",{value:!0});I1.Circle=void 0;const $_e=Ie,F_e=pn,B_e=fe,j_e=Le;class ed extends F_e.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)}}I1.Circle=ed;ed.prototype._centroid=!0;ed.prototype.className="Circle";ed.prototype._attrsAffectingSize=["radius"];(0,j_e._registerNode)(ed);$_e.Factory.addGetterSetter(ed,"radius",0,(0,B_e.getNumberValidator)());var M1={};Object.defineProperty(M1,"__esModule",{value:!0});M1.Ellipse=void 0;const $3=Ie,V_e=pn,tB=fe,z_e=Le;class Oa extends V_e.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)}}M1.Ellipse=Oa;Oa.prototype.className="Ellipse";Oa.prototype._centroid=!0;Oa.prototype._attrsAffectingSize=["radiusX","radiusY"];(0,z_e._registerNode)(Oa);$3.Factory.addComponentsGetterSetter(Oa,"radius",["x","y"]);$3.Factory.addGetterSetter(Oa,"radiusX",0,(0,tB.getNumberValidator)());$3.Factory.addGetterSetter(Oa,"radiusY",0,(0,tB.getNumberValidator)());var N1={};Object.defineProperty(N1,"__esModule",{value:!0});N1.Image=void 0;const x_=Bt,jl=Ie,U_e=pn,G_e=Le,Tp=fe;let Ro=class nB extends U_e.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?x_.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?x_.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=x_.Util.createImageElement();i.onload=function(){var o=new nB({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}};N1.Image=Ro;Ro.prototype.className="Image";(0,G_e._registerNode)(Ro);jl.Factory.addGetterSetter(Ro,"cornerRadius",0,(0,Tp.getNumberOrArrayOfNumbersValidator)(4));jl.Factory.addGetterSetter(Ro,"image");jl.Factory.addComponentsGetterSetter(Ro,"crop",["x","y","width","height"]);jl.Factory.addGetterSetter(Ro,"cropX",0,(0,Tp.getNumberValidator)());jl.Factory.addGetterSetter(Ro,"cropY",0,(0,Tp.getNumberValidator)());jl.Factory.addGetterSetter(Ro,"cropWidth",0,(0,Tp.getNumberValidator)());jl.Factory.addGetterSetter(Ro,"cropHeight",0,(0,Tp.getNumberValidator)());var Dc={};Object.defineProperty(Dc,"__esModule",{value:!0});Dc.Tag=Dc.Label=void 0;const D1=Ie,H_e=pn,q_e=Qc,F3=fe,rB=Le;var iB=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],W_e="Change.konva",K_e="none",fx="up",hx="right",px="down",gx="left",Y_e=iB.length;class B3 extends q_e.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)}}$1.RegularPolygon=zl;zl.prototype.className="RegularPolygon";zl.prototype._centroid=!0;zl.prototype._attrsAffectingSize=["radius"];(0,n2e._registerNode)(zl);oB.Factory.addGetterSetter(zl,"radius",0,(0,sB.getNumberValidator)());oB.Factory.addGetterSetter(zl,"sides",0,(0,sB.getNumberValidator)());var F1={};Object.defineProperty(F1,"__esModule",{value:!0});F1.Ring=void 0;const aB=Ie,r2e=pn,lB=fe,i2e=Le;var Gk=Math.PI*2;class Ul extends r2e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,Gk,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),Gk,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)}}F1.Ring=Ul;Ul.prototype.className="Ring";Ul.prototype._centroid=!0;Ul.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,i2e._registerNode)(Ul);aB.Factory.addGetterSetter(Ul,"innerRadius",0,(0,lB.getNumberValidator)());aB.Factory.addGetterSetter(Ul,"outerRadius",0,(0,lB.getNumberValidator)());var B1={};Object.defineProperty(B1,"__esModule",{value:!0});B1.Sprite=void 0;const Gl=Ie,o2e=pn,s2e=Zc,uB=fe,a2e=Le;class Io extends o2e.Shape{constructor(t){super(t),this._updated=!0,this.anim=new s2e.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 Rg;function T_(){return Rg||(Rg=mx.Util.createCanvasElement().getContext(p2e),Rg)}function T2e(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function E2e(e){e.setAttr("miterLimit",2),e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function P2e(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}class Xt extends c2e.Shape{constructor(t){super(P2e(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(v+=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=mx.Util._isString(t)?t:t==null?"":t+"";return this._setAttr(g2e,n),this}getWidth(){var t=this.attrs.width===uu||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===uu||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 mx.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=T_(),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()+Og+this.fontVariant()+Og+(this.fontSize()+b2e)+C2e(this.fontFamily())}_addTextLine(t){this.align()===Rd&&(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 T_().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!==uu&&o!==void 0,l=s!==uu&&s!==void 0,u=this.padding(),c=o-u*2,d=s-u*2,f=0,h=this.wrap(),p=h!==Wk,m=h!==w2e&&p,S=this.ellipsis();this.textArr=[],T_().font=this._getContextFont();for(var v=S?this._getTextWidth(C_):0,y=0,g=t.length;yc)for(;b.length>0;){for(var w=0,x=b.length,C="",k=0;w>>1,A=b.slice(0,P+1),$=this._getTextWidth(A)+v;$<=c?(w=P+1,C=A,k=$):x=P}if(C){if(m){var N,T=b[C.length],O=T===Og||T===Hk;O&&k<=c?N=C.length:N=Math.max(C.lastIndexOf(Og),C.lastIndexOf(Hk))+1,N>0&&(w=N,C=C.slice(0,w),k=this._getTextWidth(C))}C=C.trimRight(),this._addTextLine(C),r=Math.max(r,k),f+=i;var I=this._shouldHandleEllipsis(f);if(I){this._tryToAddEllipsisToLastLine();break}if(b=b.slice(w),b=b.trimLeft(),b.length>0&&(_=this._getTextWidth(b),_<=c)){this._addTextLine(b),f+=i,r=Math.max(r,_);break}}else break}else this._addTextLine(b),f+=i,r=Math.max(r,_),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!==uu&&i!==void 0,s=this.padding(),a=i-s*2,l=this.wrap(),u=l!==Wk;return!u||o&&t+r>a}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==uu&&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+C_)n?null:Id.Path.getPointAtLengthOfDataArray(t,this.dataArray)}_readDataAttribute(){this.dataArray=Id.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+`.${vB}`).join(" "),Xk="nodesRect",D2e=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],L2e={"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 $2e="ontouchstart"in Ci.Konva._global;function F2e(e,t){if(e==="rotater")return"crosshair";t+=at.Util.degToRad(L2e[e]||0);var n=(at.Util.radToDeg(t)%360+360)%360;return at.Util._inRange(n,315+22.5,360)||at.Util._inRange(n,0,22.5)?"ns-resize":at.Util._inRange(n,45-22.5,45+22.5)?"nesw-resize":at.Util._inRange(n,90-22.5,90+22.5)?"ew-resize":at.Util._inRange(n,135-22.5,135+22.5)?"nwse-resize":at.Util._inRange(n,180-22.5,180+22.5)?"ns-resize":at.Util._inRange(n,225-22.5,225+22.5)?"nesw-resize":at.Util._inRange(n,270-22.5,270+22.5)?"ew-resize":at.Util._inRange(n,315-22.5,315+22.5)?"nwse-resize":(at.Util.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var a0=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],Qk=1e8;function B2e(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 bB(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 j2e(e,t){const n=B2e(e);return bB(e,t,n)}function V2e(e,t,n){let r=t;for(let i=0;ii.isAncestorOf(this)?(at.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(D2e.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(Xk),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(Xk,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=(Ci.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 bB(c,-Ci.Konva.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-Qk,y:-Qk,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 at.Transform;r.rotate(-Ci.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:Ci.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(),a0.forEach((function(t){this._createAnchor(t)}).bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new I2e.Rect({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:$2e?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=Ci.Konva.getAngle(this.rotation()),o=F2e(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 R2e.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()*at.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=Ci.Konva.getAngle(this.rotation());const T=f+N,O=Ci.Konva.getAngle(this.rotationSnapTolerance()),M=V2e(this.rotationSnaps(),T,O)-d.rotation,R=j2e(d,M);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 S=this.findOne(".top-left").x()>m.x?-1:1,v=this.findOne(".top-left").y()>m.y?-1:1;n=i*this.cos*S,r=i*this.sin*v,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 S=this.findOne(".top-right").x()m.y?-1:1;n=i*this.cos*S,r=i*this.sin*v,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 S=m.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(at.Util._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(at.Util._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var s=new at.Transform;if(s.rotate(Ci.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:at.Util.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const a=1e7,l=new at.Transform;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/a,r.height/a);const u=new at.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 at.Transform;m.multiply(h.copy().invert()).multiply(c).multiply(h).multiply(p);const S=m.decompose();d.setAttrs(S),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(at.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(at.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()*at.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=""),Yk.Group.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return Kk.Node.prototype.toObject.call(this)}clone(t){var n=Kk.Node.prototype.clone.call(this,t);return n}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}z1.Transformer=Je;function z2e(e){return e instanceof Array||at.Util.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){a0.indexOf(t)===-1&&at.Util.warn("Unknown anchor name: "+t+". Available names are: "+a0.join(", "))}),e||[]}Je.prototype.className="Transformer";(0,M2e._registerNode)(Je);st.Factory.addGetterSetter(Je,"enabledAnchors",a0,z2e);st.Factory.addGetterSetter(Je,"flipEnabled",!0,(0,Ma.getBooleanValidator)());st.Factory.addGetterSetter(Je,"resizeEnabled",!0);st.Factory.addGetterSetter(Je,"anchorSize",10,(0,Ma.getNumberValidator)());st.Factory.addGetterSetter(Je,"rotateEnabled",!0);st.Factory.addGetterSetter(Je,"rotationSnaps",[]);st.Factory.addGetterSetter(Je,"rotateAnchorOffset",50,(0,Ma.getNumberValidator)());st.Factory.addGetterSetter(Je,"rotationSnapTolerance",5,(0,Ma.getNumberValidator)());st.Factory.addGetterSetter(Je,"borderEnabled",!0);st.Factory.addGetterSetter(Je,"anchorStroke","rgb(0, 161, 255)");st.Factory.addGetterSetter(Je,"anchorStrokeWidth",1,(0,Ma.getNumberValidator)());st.Factory.addGetterSetter(Je,"anchorFill","white");st.Factory.addGetterSetter(Je,"anchorCornerRadius",0,(0,Ma.getNumberValidator)());st.Factory.addGetterSetter(Je,"borderStroke","rgb(0, 161, 255)");st.Factory.addGetterSetter(Je,"borderStrokeWidth",1,(0,Ma.getNumberValidator)());st.Factory.addGetterSetter(Je,"borderDash");st.Factory.addGetterSetter(Je,"keepRatio",!0);st.Factory.addGetterSetter(Je,"shiftBehavior","default");st.Factory.addGetterSetter(Je,"centeredScaling",!1);st.Factory.addGetterSetter(Je,"ignoreStroke",!1);st.Factory.addGetterSetter(Je,"padding",0,(0,Ma.getNumberValidator)());st.Factory.addGetterSetter(Je,"node");st.Factory.addGetterSetter(Je,"nodes");st.Factory.addGetterSetter(Je,"boundBoxFunc");st.Factory.addGetterSetter(Je,"anchorDragBoundFunc");st.Factory.addGetterSetter(Je,"anchorStyleFunc");st.Factory.addGetterSetter(Je,"shouldOverdrawWholeArea",!1);st.Factory.addGetterSetter(Je,"useSingleNodeRotation",!0);st.Factory.backCompat(Je,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});var U1={};Object.defineProperty(U1,"__esModule",{value:!0});U1.Wedge=void 0;const G1=Ie,U2e=pn,G2e=Le,SB=fe,H2e=Le;class Ss extends U2e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,G2e.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)}}U1.Wedge=Ss;Ss.prototype.className="Wedge";Ss.prototype._centroid=!0;Ss.prototype._attrsAffectingSize=["radius"];(0,H2e._registerNode)(Ss);G1.Factory.addGetterSetter(Ss,"radius",0,(0,SB.getNumberValidator)());G1.Factory.addGetterSetter(Ss,"angle",0,(0,SB.getNumberValidator)());G1.Factory.addGetterSetter(Ss,"clockwise",!1);G1.Factory.backCompat(Ss,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});var H1={};Object.defineProperty(H1,"__esModule",{value:!0});H1.Blur=void 0;const Zk=Ie,q2e=At,W2e=fe;function Jk(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var K2e=[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],Y2e=[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 X2e(e,t){var n=e.data,r=e.width,i=e.height,o,s,a,l,u,c,d,f,h,p,m,S,v,y,g,b,_,w,x,C,k,P,A,$,N=t+t+1,T=r-1,O=i-1,I=t+1,M=I*(I+1)/2,R=new Jk,D=null,L=R,V=null,z=null,U=K2e[t],K=Y2e[t];for(a=1;a>K,A!==0?(A=255/A,n[c]=(f*U>>K)*A,n[c+1]=(h*U>>K)*A,n[c+2]=(p*U>>K)*A):n[c]=n[c+1]=n[c+2]=0,f-=S,h-=v,p-=y,m-=g,S-=V.r,v-=V.g,y-=V.b,g-=V.a,l=d+((l=o+t+1)>K,A>0?(A=255/A,n[l]=(f*U>>K)*A,n[l+1]=(h*U>>K)*A,n[l+2]=(p*U>>K)*A):n[l]=n[l+1]=n[l+2]=0,f-=S,h-=v,p-=y,m-=g,S-=V.r,v-=V.g,y-=V.b,g-=V.a,l=o+((l=s+I)0&&X2e(t,n)};H1.Blur=Q2e;Zk.Factory.addGetterSetter(q2e.Node,"blurRadius",0,(0,W2e.getNumberValidator)(),Zk.Factory.afterSetFilter);var q1={};Object.defineProperty(q1,"__esModule",{value:!0});q1.Brighten=void 0;const eA=Ie,Z2e=At,J2e=fe,ewe=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};W1.Contrast=rwe;tA.Factory.addGetterSetter(twe.Node,"contrast",0,(0,nwe.getNumberValidator)(),tA.Factory.afterSetFilter);var K1={};Object.defineProperty(K1,"__esModule",{value:!0});K1.Emboss=void 0;const ba=Ie,Y1=At,iwe=Bt,_B=fe,owe=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:iwe.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 S=f+(m-1)*4,v=s;m+v<1&&(v=0),m+v>l&&(v=0);var y=p+(m-1+v)*4,g=a[S]-a[y],b=a[S+1]-a[y+1],_=a[S+2]-a[y+2],w=g,x=w>0?w:-w,C=b>0?b:-b,k=_>0?_:-_;if(C>x&&(w=b),k>x&&(w=_),w*=t,i){var P=a[S]+w,A=a[S+1]+w,$=a[S+2]+w;a[S]=P>255?255:P<0?0:P,a[S+1]=A>255?255:A<0?0:A,a[S+2]=$>255?255:$<0?0:$}else{var N=n-w;N<0?N=0:N>255&&(N=255),a[S]=a[S+1]=a[S+2]=N}}while(--m)}while(--d)};K1.Emboss=owe;ba.Factory.addGetterSetter(Y1.Node,"embossStrength",.5,(0,_B.getNumberValidator)(),ba.Factory.afterSetFilter);ba.Factory.addGetterSetter(Y1.Node,"embossWhiteLevel",.5,(0,_B.getNumberValidator)(),ba.Factory.afterSetFilter);ba.Factory.addGetterSetter(Y1.Node,"embossDirection","top-left",null,ba.Factory.afterSetFilter);ba.Factory.addGetterSetter(Y1.Node,"embossBlend",!1,null,ba.Factory.afterSetFilter);var X1={};Object.defineProperty(X1,"__esModule",{value:!0});X1.Enhance=void 0;const nA=Ie,swe=At,awe=fe;function k_(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 lwe=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,S,v,y,g,b,_,w;for(h>0?(m=i+h*(255-i),S=r-h*(r-0),y=a+h*(255-a),g=s-h*(s-0),_=c+h*(255-c),w=u-h*(u-0)):(p=(i+r)*.5,m=i+h*(i-p),S=r+h*(r-p),v=(a+s)*.5,y=a+h*(a-v),g=s+h*(s-v),b=(c+u)*.5,_=c+h*(c-b),w=u+h*(u-b)),f=0;fv?S:v;var y=s,g=o,b,_,w=360/g*Math.PI/180,x,C;for(_=0;_g?y:g;var b=s,_=o,w,x,C=n.polarRotation||0,k,P;for(c=0;ct&&(b=g,_=0,w=-1),i=0;i=0&&h=0&&p=0&&h=0&&p=255*4?255:0}return s}function xwe(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+=b[s+0],l+=b[s+1],u+=b[s+2],c+=b[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,b[s+0]=a,b[s+1]=l,b[s+2]=u,b[s+3]=c)}};ib.Pixelate=Rwe;sA.Factory.addGetterSetter(Awe.Node,"pixelSize",8,(0,Owe.getNumberValidator)(),sA.Factory.afterSetFilter);var ob={};Object.defineProperty(ob,"__esModule",{value:!0});ob.Posterize=void 0;const aA=Ie,Iwe=At,Mwe=fe,Nwe=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)});u0.Factory.addGetterSetter(q3.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});u0.Factory.addGetterSetter(q3.Node,"blue",0,Dwe.RGBComponent,u0.Factory.afterSetFilter);var ab={};Object.defineProperty(ab,"__esModule",{value:!0});ab.RGBA=void 0;const Oh=Ie,lb=At,$we=fe,Fwe=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)});Oh.Factory.addGetterSetter(lb.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});Oh.Factory.addGetterSetter(lb.Node,"blue",0,$we.RGBComponent,Oh.Factory.afterSetFilter);Oh.Factory.addGetterSetter(lb.Node,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});var ub={};Object.defineProperty(ub,"__esModule",{value:!0});ub.Sepia=void 0;const Bwe=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)};cb.Solarize=jwe;var db={};Object.defineProperty(db,"__esModule",{value:!0});db.Threshold=void 0;const lA=Ie,Vwe=At,zwe=fe,Uwe=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 Nd.Stage({container:o,width:r,height:i}),a=new Nd.Layer,l=new Nd.Layer;return a.add(new Nd.Rect({...t,fill:n?"black":"white"})),e.forEach(u=>l.add(new Nd.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},Axe=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}),dA=async(e,t)=>{const n=e.toDataURL(t);return await Axe(n,t.width,t.height)},Oxe=Se.child({namespace:"getCanvasDataURLs"}),Rxe=async e=>{const t=b1(),n=B1e();if(!t||!n){Oxe.error("Unable to find canvas / stage");return}const{layerState:{objects:r},boundingBoxCoordinates:i,boundingBoxDimensions:o,isMaskEnabled:s,shouldPreserveMaskedArea:a}=e.canvas,l={...i,...o},u=t.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 o0(u,d),h=await dA(u,d),p=await kxe(s?r.filter(QD):[],l,a),m=await o0(p,l),S=await dA(p,l);return{baseBlob:f,baseImageData:h,maskBlob:m,maskImageData:S}},Ixe=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}=Ixe(e.data),i=Mxe(t.data);return n?r?"txt2img":"outpaint":i?"inpaint":"img2img"},CB=me("nodes/textToImageGraphBuilt"),TB=me("nodes/imageToImageGraphBuilt"),EB=me("nodes/canvasGraphBuilt"),PB=me("nodes/nodesGraphBuilt"),Dxe=Hi(CB,TB,EB,PB),Lxe=e=>t7(e,n=>n.isEnabled&&(!!n.processedControlImage||n.processorType==="none"&&!!n.controlImage)),Lt="positive_conditioning",Wt="negative_conditioning",_n="text_to_latents",Bn="latents_to_image",Nt="noise",eo="rand_int",Wo="range_of_size",_r="iterate",wt="main_model_loader",Dd="vae_loader",$xe="lora_loader",ft="clip_skip",dr="image_to_latents",tn="latents_to_latents",lo="resize_image",Rs="inpaint",Mg="control_net_collect",A_="dynamic_prompt",fn="metadata_accumulator",fA="esrgan",W3="text_to_image_graph",c0="image_to_image_graph",kB="inpaint_graph",fb=(e,t,n)=>{const{isEnabled:r,controlNets:i}=e.controlNet,o=Lxe(i),s=t.nodes[fn];if(r&&o.length&&o.length){const a={id:Mg,type:"collect",is_intermediate:!0};t.nodes[Mg]=a,t.edges.push({source:{node_id:Mg,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:S,processorType:v,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:S,control_weight:y};if(d&&v!=="none")g.image={image_name:d};else if(c)g.image={image_name:c};else return;if(t.nodes[g.id]=g,s){const b=o5(g,["id","type"]);s.controlnets.push(b)}t.edges.push({source:{node_id:g.id,field:"control"},destination:{node_id:Mg,field:"item"}})})}},hb=(e,t)=>{const{positivePrompt:n,iterations:r,seed:i,shouldRandomizeSeed:o}=e.generation,{combinatorial:s,isEnabled:a,maxPrompts:l}=e.dynamicPrompts,u=t.nodes[fn];if(a){gZ(t.nodes[Lt],"prompt");const c={id:A_,type:"dynamic_prompt",is_intermediate:!0,max_prompts:s?l:r,combinatorial:s,prompt:n},d={id:_r,type:"iterate",is_intermediate:!0};if(t.nodes[A_]=c,t.nodes[_r]=d,t.edges.push({source:{node_id:A_,field:"prompt_collection"},destination:{node_id:_r,field:"collection"}},{source:{node_id:_r,field:"item"},destination:{node_id:Lt,field:"prompt"}}),u&&t.edges.push({source:{node_id:_r,field:"item"},destination:{node_id:fn,field:"positive_prompt"}}),o){const f={id:eo,type:"rand_int",is_intermediate:!0};t.nodes[eo]=f,t.edges.push({source:{node_id:eo,field:"a"},destination:{node_id:Nt,field:"seed"}}),u&&t.edges.push({source:{node_id:eo,field:"a"},destination:{node_id:fn,field:"seed"}})}else t.nodes[Nt].seed=i,u&&(u.seed=i)}else{u&&(u.positive_prompt=n);const c={id:Wo,type:"range_of_size",is_intermediate:!0,size:r,step:1},d={id:_r,type:"iterate",is_intermediate:!0};if(t.nodes[_r]=d,t.nodes[Wo]=c,t.edges.push({source:{node_id:Wo,field:"collection"},destination:{node_id:_r,field:"collection"}}),t.edges.push({source:{node_id:_r,field:"item"},destination:{node_id:Nt,field:"seed"}}),u&&t.edges.push({source:{node_id:_r,field:"item"},destination:{node_id:fn,field:"seed"}}),o){const f={id:eo,type:"rand_int",is_intermediate:!0};t.nodes[eo]=f,t.edges.push({source:{node_id:eo,field:"a"},destination:{node_id:Wo,field:"start"}})}else c.start=i}},Pp=(e,t,n)=>{const{loras:r}=e.lora,i=c7(r),o=t.nodes[fn];i>0&&(t.edges=t.edges.filter(l=>!(l.source.node_id===wt&&["unet"].includes(l.source.field))),t.edges=t.edges.filter(l=>!(l.source.node_id===ft&&["clip"].includes(l.source.field))));let s="",a=0;bc(r,l=>{const{model_name:u,base_model:c,weight:d}=l,f=`${$xe}_${u.replace(".","_")}`,h={type:"lora_loader",id:f,is_intermediate:!0,lora:{model_name:u,base_model:c},weight:d};o&&o.loras.push({lora:{model_name:u,base_model:c},weight:d}),t.nodes[f]=h,a===0?(t.edges.push({source:{node_id:wt,field:"unet"},destination:{node_id:f,field:"unet"}}),t.edges.push({source:{node_id:ft,field:"clip"},destination:{node_id:f,field:"clip"}})):(t.edges.push({source:{node_id:s,field:"unet"},destination:{node_id:f,field:"unet"}}),t.edges.push({source:{node_id:s,field:"clip"},destination:{node_id:f,field:"clip"}})),a===i-1&&(t.edges.push({source:{node_id:f,field:"unet"},destination:{node_id:n,field:"unet"}}),t.edges.push({source:{node_id:f,field:"clip"},destination:{node_id:Lt,field:"clip"}}),t.edges.push({source:{node_id:f,field:"clip"},destination:{node_id:Wt,field:"clip"}})),s=f,a+=1})},kp=(e,t)=>{const{vae:n}=e.generation,r=!n,i=t.nodes[fn];r||(t.nodes[Dd]={type:"vae_loader",id:Dd,is_intermediate:!0,vae_model:n}),(t.id===W3||t.id===c0)&&t.edges.push({source:{node_id:r?wt:Dd,field:"vae"},destination:{node_id:Bn,field:"vae"}}),t.id===c0&&t.edges.push({source:{node_id:r?wt:Dd,field:"vae"},destination:{node_id:dr,field:"vae"}}),t.id===kB&&t.edges.push({source:{node_id:r?wt:Dd,field:"vae"},destination:{node_id:Rs,field:"vae"}}),n&&i&&(i.vae=n)},Fxe=Se.child({namespace:"nodes"}),Bxe=(e,t)=>{const{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,img2imgStrength:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d}=e.generation,{width:f,height:h}=e.canvas.boundingBoxDimensions,{shouldAutoSave:p}=e.canvas;if(!i)throw Fxe.error("No model found in state"),new Error("No model found in state");const m=d?c:Nl.shouldUseCpuNoise,S={id:c0,nodes:{[Lt]:{type:"compel",id:Lt,is_intermediate:!0,prompt:n},[Wt]:{type:"compel",id:Wt,is_intermediate:!0,prompt:r},[Nt]:{type:"noise",id:Nt,is_intermediate:!0,use_cpu:m},[wt]:{type:"main_model_loader",id:wt,is_intermediate:!0,model:i},[ft]:{type:"clip_skip",id:ft,is_intermediate:!0,skipped_layers:u},[Bn]:{is_intermediate:!p,type:"l2i",id:Bn},[tn]:{type:"l2l",id:tn,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,strength:l},[dr]:{type:"i2l",id:dr,is_intermediate:!0}},edges:[{source:{node_id:wt,field:"clip"},destination:{node_id:ft,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Lt,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Wt,field:"clip"}},{source:{node_id:tn,field:"latents"},destination:{node_id:Bn,field:"latents"}},{source:{node_id:dr,field:"latents"},destination:{node_id:tn,field:"latents"}},{source:{node_id:Nt,field:"noise"},destination:{node_id:tn,field:"noise"}},{source:{node_id:wt,field:"unet"},destination:{node_id:tn,field:"unet"}},{source:{node_id:Wt,field:"conditioning"},destination:{node_id:tn,field:"negative_conditioning"}},{source:{node_id:Lt,field:"conditioning"},destination:{node_id:tn,field:"positive_conditioning"}}]};if(t.width!==f||t.height!==h){const v={id:lo,type:"img_resize",image:{image_name:t.image_name},is_intermediate:!0,width:f,height:h};S.nodes[lo]=v,S.edges.push({source:{node_id:lo,field:"image"},destination:{node_id:dr,field:"image"}}),S.edges.push({source:{node_id:lo,field:"width"},destination:{node_id:Nt,field:"width"}}),S.edges.push({source:{node_id:lo,field:"height"},destination:{node_id:Nt,field:"height"}})}else S.nodes[dr].image={image_name:t.image_name},S.edges.push({source:{node_id:dr,field:"width"},destination:{node_id:Nt,field:"width"}}),S.edges.push({source:{node_id:dr,field:"height"},destination:{node_id:Nt,field:"height"}});return S.nodes[fn]={id:fn,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:o,height:h,width:f,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:m?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u,strength:l,init_image:t.image_name},S.edges.push({source:{node_id:fn,field:"metadata"},destination:{node_id:Bn,field:"metadata"}}),Pp(e,S,tn),kp(e,S),hb(e,S),fb(e,S,tn),S},jxe=Se.child({namespace:"nodes"}),Vxe=(e,t,n)=>{const{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,img2imgStrength:u,shouldFitToWidthHeight:c,iterations:d,seed:f,shouldRandomizeSeed:h,seamSize:p,seamBlur:m,seamSteps:S,seamStrength:v,tileSize:y,infillMethod:g,clipSkip:b}=e.generation;if(!o)throw jxe.error("No model found in state"),new Error("No model found in state");const{width:_,height:w}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:x,boundingBoxScaleMethod:C,shouldAutoSave:k}=e.canvas,P={id:kB,nodes:{[Rs]:{is_intermediate:!k,type:"inpaint",id:Rs,steps:l,width:_,height:w,cfg_scale:s,scheduler:a,image:{image_name:t.image_name},strength:u,fit:c,mask:{image_name:n.image_name},seam_size:p,seam_blur:m,seam_strength:v,seam_steps:S,tile_size:g==="tile"?y:void 0,infill_method:g,inpaint_width:C!=="none"?x.width:void 0,inpaint_height:C!=="none"?x.height:void 0},[Lt]:{type:"compel",id:Lt,is_intermediate:!0,prompt:r},[Wt]:{type:"compel",id:Wt,is_intermediate:!0,prompt:i},[wt]:{type:"main_model_loader",id:wt,is_intermediate:!0,model:o},[ft]:{type:"clip_skip",id:ft,is_intermediate:!0,skipped_layers:b},[Wo]:{type:"range_of_size",id:Wo,is_intermediate:!0,size:d,step:1},[_r]:{type:"iterate",id:_r,is_intermediate:!0}},edges:[{source:{node_id:wt,field:"unet"},destination:{node_id:Rs,field:"unet"}},{source:{node_id:wt,field:"clip"},destination:{node_id:ft,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Lt,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Wt,field:"clip"}},{source:{node_id:Wt,field:"conditioning"},destination:{node_id:Rs,field:"negative_conditioning"}},{source:{node_id:Lt,field:"conditioning"},destination:{node_id:Rs,field:"positive_conditioning"}},{source:{node_id:Wo,field:"collection"},destination:{node_id:_r,field:"collection"}},{source:{node_id:_r,field:"item"},destination:{node_id:Rs,field:"seed"}}]};if(Pp(e,P,Rs),kp(e,P),h){const A={id:eo,type:"rand_int"};P.nodes[eo]=A,P.edges.push({source:{node_id:eo,field:"a"},destination:{node_id:Wo,field:"start"}})}else P.nodes[Wo].start=f;return P},zxe=Se.child({namespace:"nodes"}),Uxe=e=>{const{positivePrompt:t,negativePrompt:n,model:r,cfgScale:i,scheduler:o,steps:s,clipSkip:a,shouldUseCpuNoise:l,shouldUseNoiseSettings:u}=e.generation,{width:c,height:d}=e.canvas.boundingBoxDimensions,{shouldAutoSave:f}=e.canvas;if(!r)throw zxe.error("No model found in state"),new Error("No model found in state");const h=u?l:Nl.shouldUseCpuNoise,p={id:W3,nodes:{[Lt]:{type:"compel",id:Lt,is_intermediate:!0,prompt:t},[Wt]:{type:"compel",id:Wt,is_intermediate:!0,prompt:n},[Nt]:{type:"noise",id:Nt,is_intermediate:!0,width:c,height:d,use_cpu:h},[_n]:{type:"t2l",id:_n,is_intermediate:!0,cfg_scale:i,scheduler:o,steps:s},[wt]:{type:"main_model_loader",id:wt,is_intermediate:!0,model:r},[ft]:{type:"clip_skip",id:ft,is_intermediate:!0,skipped_layers:a},[Bn]:{type:"l2i",id:Bn,is_intermediate:!f}},edges:[{source:{node_id:Wt,field:"conditioning"},destination:{node_id:_n,field:"negative_conditioning"}},{source:{node_id:Lt,field:"conditioning"},destination:{node_id:_n,field:"positive_conditioning"}},{source:{node_id:wt,field:"clip"},destination:{node_id:ft,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Lt,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Wt,field:"clip"}},{source:{node_id:wt,field:"unet"},destination:{node_id:_n,field:"unet"}},{source:{node_id:_n,field:"latents"},destination:{node_id:Bn,field:"latents"}},{source:{node_id:Nt,field:"noise"},destination:{node_id:_n,field:"noise"}}]};return p.nodes[fn]={id:fn,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:i,height:d,width:c,positive_prompt:"",negative_prompt:n,model:r,seed:0,steps:s,rand_device:h?"cpu":"cuda",scheduler:o,vae:void 0,controlnets:[],loras:[],clip_skip:a},p.edges.push({source:{node_id:fn,field:"metadata"},destination:{node_id:Bn,field:"metadata"}}),Pp(e,p,_n),kp(e,p),hb(e,p),fb(e,p,_n),p};Se.child({namespace:"nodes"});const Gxe=(e,t,n,r)=>{let i;if(t==="txt2img")i=Uxe(e);else if(t==="img2img"){if(!n)throw new Error("Missing canvas init image");i=Bxe(e,n)}else{if(!n||!r)throw new Error("Missing canvas init and mask images");i=Vxe(e,n,r)}return i},O_=Se.child({namespace:"invoke"}),Hxe=()=>{pe({predicate:e=>_p.match(e)&&e.payload==="unifiedCanvas",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=t(),o=await Rxe(i);if(!o){O_.error("Unable to create canvas data");return}const{baseBlob:s,baseImageData:a,maskBlob:l,maskImageData:u}=o,c=Nxe(a,u);if(i.system.enableImageDebugging){const v=await Ok(s),y=await Ok(l);ASe([{base64:y,caption:"mask b64"},{base64:v,caption:"image b64"}])}O_.debug(`Generation mode: ${c}`);let d,f;["img2img","inpaint","outpaint"].includes(c)&&(d=await n(ye.endpoints.uploadImage.initiate({file:new File([s],"canvasInitImage.png",{type:"image/png"}),image_category:"general",is_intermediate:!0})).unwrap()),["inpaint","outpaint"].includes(c)&&(f=await n(ye.endpoints.uploadImage.initiate({file:new File([l],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!0})).unwrap());const h=Gxe(i,c,d,f);O_.debug({graph:h},"Canvas graph built"),n(EB(h));const{requestId:p}=n(Un({graph:h})),[m]=await r(v=>Un.fulfilled.match(v)&&v.meta.requestId===p),S=m.payload.id;["img2img","inpaint"].includes(c)&&d&&n(ye.endpoints.changeImageSessionId.initiate({imageDTO:d,session_id:S})),["inpaint"].includes(c)&&f&&n(ye.endpoints.changeImageSessionId.initiate({imageDTO:f,session_id:S})),i.canvas.layerState.stagingArea.boundingBox||n(ehe({sessionId:S,boundingBox:{...i.canvas.boundingBoxCoordinates,...i.canvas.boundingBoxDimensions}})),n(the(S)),n(Ll())}})},hA=Se.child({namespace:"nodes"}),qxe=e=>{const{positivePrompt:t,negativePrompt:n,model:r,cfgScale:i,scheduler:o,steps:s,initialImage:a,img2imgStrength:l,shouldFitToWidthHeight:u,width:c,height:d,clipSkip:f,shouldUseCpuNoise:h,shouldUseNoiseSettings:p}=e.generation;if(!a)throw hA.error("No initial image found in state"),new Error("No initial image found in state");if(!r)throw hA.error("No model found in state"),new Error("No model found in state");const m=p?h:Nl.shouldUseCpuNoise,S={id:c0,nodes:{[wt]:{type:"main_model_loader",id:wt,model:r},[ft]:{type:"clip_skip",id:ft,skipped_layers:f},[Lt]:{type:"compel",id:Lt,prompt:t},[Wt]:{type:"compel",id:Wt,prompt:n},[Nt]:{type:"noise",id:Nt,use_cpu:m},[Bn]:{type:"l2i",id:Bn},[tn]:{type:"l2l",id:tn,cfg_scale:i,scheduler:o,steps:s,strength:l},[dr]:{type:"i2l",id:dr}},edges:[{source:{node_id:wt,field:"unet"},destination:{node_id:tn,field:"unet"}},{source:{node_id:wt,field:"clip"},destination:{node_id:ft,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Lt,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Wt,field:"clip"}},{source:{node_id:tn,field:"latents"},destination:{node_id:Bn,field:"latents"}},{source:{node_id:dr,field:"latents"},destination:{node_id:tn,field:"latents"}},{source:{node_id:Nt,field:"noise"},destination:{node_id:tn,field:"noise"}},{source:{node_id:Wt,field:"conditioning"},destination:{node_id:tn,field:"negative_conditioning"}},{source:{node_id:Lt,field:"conditioning"},destination:{node_id:tn,field:"positive_conditioning"}}]};if(u&&(a.width!==c||a.height!==d)){const v={id:lo,type:"img_resize",image:{image_name:a.imageName},is_intermediate:!0,width:c,height:d};S.nodes[lo]=v,S.edges.push({source:{node_id:lo,field:"image"},destination:{node_id:dr,field:"image"}}),S.edges.push({source:{node_id:lo,field:"width"},destination:{node_id:Nt,field:"width"}}),S.edges.push({source:{node_id:lo,field:"height"},destination:{node_id:Nt,field:"height"}})}else S.nodes[dr].image={image_name:a.imageName},S.edges.push({source:{node_id:dr,field:"width"},destination:{node_id:Nt,field:"width"}}),S.edges.push({source:{node_id:dr,field:"height"},destination:{node_id:Nt,field:"height"}});return S.nodes[fn]={id:fn,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:i,height:d,width:c,positive_prompt:"",negative_prompt:n,model:r,seed:0,steps:s,rand_device:m?"cpu":"cuda",scheduler:o,vae:void 0,controlnets:[],loras:[],clip_skip:f,strength:l,init_image:a.imageName},S.edges.push({source:{node_id:fn,field:"metadata"},destination:{node_id:Bn,field:"metadata"}}),Pp(e,S,tn),kp(e,S),hb(e,S),fb(e,S,tn),S},Wxe=Se.child({namespace:"invoke"}),Kxe=()=>{pe({predicate:e=>_p.match(e)&&e.payload==="img2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=t(),o=qxe(i);n(TB(o)),Wxe.debug({data:o},"Image to Image graph built"),n(Un({graph:o})),await r(Un.fulfilled.match),n(Ll())}})};let Ng;const Yxe=new Uint8Array(16);function Xxe(){if(!Ng&&(Ng=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ng))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ng(Yxe)}const In=[];for(let e=0;e<256;++e)In.push((e+256).toString(16).slice(1));function Qxe(e,t=0){return(In[e[t+0]]+In[e[t+1]]+In[e[t+2]]+In[e[t+3]]+"-"+In[e[t+4]]+In[e[t+5]]+"-"+In[e[t+6]]+In[e[t+7]]+"-"+In[e[t+8]]+In[e[t+9]]+"-"+In[e[t+10]]+In[e[t+11]]+In[e[t+12]]+In[e[t+13]]+In[e[t+14]]+In[e[t+15]]).toLowerCase()}const Zxe=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),pA={randomUUID:Zxe};function Jxe(e,t,n){if(pA.randomUUID&&!t&&!e)return pA.randomUUID();e=e||{};const r=e.random||(e.rng||Xxe)();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 Qxe(r)}const eCe=e=>{if(e.type==="color"&&e.value){const t=Yn(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},tCe=e=>{const{nodes:t,edges:n}=e.nodes,i=t.filter(a=>a.type!=="progress_image").reduce((a,l,u)=>{const{id:c,data:d}=l,{type:f,inputs:h}=d,p=vv(h,(S,v,y)=>{const g=eCe(v);return S[y]=g,S},{}),m={type:f,id:c,...p};return Object.assign(a,{[c]:m}),a},{}),o=n.reduce((a,l,u)=>{const{source:c,target:d,sourceHandle:f,targetHandle:h}=l;return a.push({source:{node_id:c,field:f},destination:{node_id:d,field:h}}),a},[]);return o.forEach(a=>{const l=i[a.destination.node_id],u=a.destination.field;i[a.destination.node_id]=o5(l,u)}),{id:Jxe(),nodes:i,edges:o}},nCe=Se.child({namespace:"invoke"}),rCe=()=>{pe({predicate:e=>_p.match(e)&&e.payload==="nodes",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=t(),o=tCe(i);n(PB(o)),nCe.debug({data:o},"Nodes graph built"),n(Un({graph:o})),await r(Un.fulfilled.match),n(Ll())}})},iCe=Se.child({namespace:"nodes"}),oCe=e=>{const{positivePrompt:t,negativePrompt:n,model:r,cfgScale:i,scheduler:o,steps:s,width:a,height:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d}=e.generation,f=d?c:Nl.shouldUseCpuNoise;if(!r)throw iCe.error("No model found in state"),new Error("No model found in state");const h={id:W3,nodes:{[wt]:{type:"main_model_loader",id:wt,model:r},[ft]:{type:"clip_skip",id:ft,skipped_layers:u},[Lt]:{type:"compel",id:Lt,prompt:t},[Wt]:{type:"compel",id:Wt,prompt:n},[Nt]:{type:"noise",id:Nt,width:a,height:l,use_cpu:f},[_n]:{type:"t2l",id:_n,cfg_scale:i,scheduler:o,steps:s},[Bn]:{type:"l2i",id:Bn}},edges:[{source:{node_id:wt,field:"clip"},destination:{node_id:ft,field:"clip"}},{source:{node_id:wt,field:"unet"},destination:{node_id:_n,field:"unet"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Lt,field:"clip"}},{source:{node_id:ft,field:"clip"},destination:{node_id:Wt,field:"clip"}},{source:{node_id:Lt,field:"conditioning"},destination:{node_id:_n,field:"positive_conditioning"}},{source:{node_id:Wt,field:"conditioning"},destination:{node_id:_n,field:"negative_conditioning"}},{source:{node_id:_n,field:"latents"},destination:{node_id:Bn,field:"latents"}},{source:{node_id:Nt,field:"noise"},destination:{node_id:_n,field:"noise"}}]};return h.nodes[fn]={id:fn,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:i,height:l,width:a,positive_prompt:"",negative_prompt:n,model:r,seed:0,steps:s,rand_device:f?"cpu":"cuda",scheduler:o,vae:void 0,controlnets:[],loras:[],clip_skip:u},h.edges.push({source:{node_id:fn,field:"metadata"},destination:{node_id:Bn,field:"metadata"}}),Pp(e,h,_n),kp(e,h),hb(e,h),fb(e,h,_n),h},sCe=Se.child({namespace:"invoke"}),aCe=()=>{pe({predicate:e=>_p.match(e)&&e.payload==="txt2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=t(),o=oCe(i);n(CB(o)),sCe.debug({data:o},"Text to Image graph built"),n(Un({graph:o})),await r(Un.fulfilled.match),n(Ll())}})},lCe=Se.child({namespace:"socketio"}),uCe=()=>{pe({actionCreator:FL,effect:(e,{dispatch:t,getState:n})=>{const{model_name:r,model_type:i,submodel:o}=e.payload.data;let s=`${i} model: ${r}`;o&&(s=s.concat(`, submodel: ${o}`)),lCe.debug(e.payload,`Model load started (${s})`),t(ppe(e.payload))}})},cCe=Se.child({namespace:"socketio"}),dCe=()=>{pe({actionCreator:BL,effect:(e,{dispatch:t,getState:n})=>{const{model_name:r,model_type:i,submodel:o}=e.payload.data;let s=`${i} model: ${r}`;o&&(s=s.concat(`, submodel: ${o}`)),cCe.debug(e.payload,`Model load completed (${s})`),t(gpe(e.payload))}})},fCe=({image_name:e,esrganModelName:t})=>{const n={id:fA,type:"esrgan",image:{image_name:e},model_name:t,is_intermediate:!1};return{id:"adhoc-esrgan-graph",nodes:{[fA]:n},edges:[]}};Se.child({namespace:"upscale"});const hCe=me("upscale/upscaleRequested"),pCe=()=>{pe({actionCreator:hCe,effect:async(e,{dispatch:t,getState:n,take:r,unsubscribe:i,subscribe:o})=>{const{image_name:s}=e.payload,{esrganModelName:a}=n().postprocessing,l=fCe({image_name:s,esrganModelName:a});t(Un({graph:l})),await r(Un.fulfilled.match),t(Ll())}})};me("app/appStarted");const gCe=()=>{pe({matcher:ye.endpoints.listImages.matchFulfilled,effect:async(e,{getState:t,dispatch:n,unsubscribe:r,cancelActiveListeners:i})=>{if(e.meta.arg.queryCacheKey!==Ai({board_id:"none",categories:Mi}))return;i(),r();const o=e.payload;o.ids.length>0&&n(ra(o.ids[0]))}})},AB=uI(),pe=AB.startListening;hbe();pbe();ybe();ibe();obe();sbe();abe();M1e();fbe();Hxe();rCe();aCe();Kxe();cSe();X1e();q1e();U1e();K1e();kSe();k1e();gSe();ySe();SSe();wSe();xSe();fSe();pSe();TSe();PSe();uCe();dCe();rSe();iSe();oSe();sSe();aSe();lSe();eSe();tSe();nSe();ebe();J1e();tbe();nbe();cbe();dbe();I1e();Kbe();ube();bbe();R1e();_be();A1e();gCe();pCe();const eke=["chakra-ui-color-mode","i18nextLng","ROARR_FILTER","ROARR_LOG"],mCe="@@invokeai-",yCe=["cursorPosition","isCanvasInitialized","doesCanvasNeedScaling"],vCe=["pendingControlImages"],bCe=["selection","entities","ids","isLoading","limit","offset","selectedBoardId","galleryView","total","isInitialized"],SCe=["schema","invocationTemplates"],_Ce=[],wCe=[],xCe=["currentIteration","currentStep","isCancelable","isConnected","isESRGANAvailable","isGFPGANAvailable","isProcessing","totalIterations","totalSteps","isCancelScheduled","progressImage","wereModelsReceived","wasSchemaParsed","isPersisted","isUploading"],CCe=["shouldShowImageDetails"],TCe={canvas:yCe,gallery:bCe,generation:_Ce,nodes:SCe,postprocessing:wCe,system:xCe,ui:CCe,controlNet:vCe},ECe=(e,t)=>{const n=o5(e,TCe[t]);return JSON.stringify(n)},PCe={canvas:ZD,gallery:dL,generation:Nl,nodes:bF,postprocessing:wF,system:EF,config:h7,ui:_D,hotkeys:nD,controlNet:Uw},kCe=(e,t)=>EQ(JSON.parse(e),PCe[t]),ACe=e=>{if(Dxe(e)&&e.payload.nodes){const t={};return{...e,payload:{...e.payload,nodes:t}}}return Ph.fulfilled.match(e)?{...e,payload:""}:k3.match(e)?{...e,payload:""}:e},OCe=["canvas/setCursorPosition","canvas/setStageCoordinates","canvas/setStageScale","canvas/setIsDrawing","canvas/setBoundingBoxCoordinates","canvas/setBoundingBoxDimensions","canvas/setIsDrawing","canvas/addPointToCurrentLine","socket/socketGeneratorProgress","socket/appSocketGeneratorProgress","hotkeys/shiftKeyPressed","@@REMEMBER_PERSISTED"],RCe=e=>e,ICe={canvas:nhe,gallery:npe,generation:_ce,nodes:t1e,postprocessing:n1e,system:T1e,config:bZ,ui:Ece,hotkeys:zle,controlNet:bpe,boards:xpe,dynamicPrompts:_pe,imageDeletion:Epe,lora:Ape,modelmanager:P1e,[ya.reducerPath]:ya.reducer},MCe=Vc(ICe),NCe=FH(MCe),DCe=["canvas","gallery","generation","nodes","postprocessing","system","ui","controlNet","dynamicPrompts","lora","modelmanager"],LCe=UR({reducer:NCe,enhancers:e=>e.concat(BH(window.localStorage,DCe,{persistDebounce:300,serialize:ECe,unserialize:kCe,prefix:mCe})).concat(dI()),middleware:e=>e({immutableCheck:!1,serializableCheck:!1}).concat(ya.middleware).concat(yH).prepend(AB.middleware),devTools:{actionSanitizer:ACe,stateSanitizer:RCe,trace:!0,predicate:(e,t)=>!OCe.includes(t.type)}}),tke=e=>e,$Ce=""+new URL("logo-13003d72.png",import.meta.url).href,FCe=()=>j.jsxs(z5,{position:"relative",width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",bg:"#151519",children:[j.jsx(B5,{src:$Ce,w:"8rem",h:"8rem"}),j.jsx(Nv,{label:"Loading",color:"grey",position:"absolute",size:"sm",width:"24px !important",height:"24px !important",right:"1.5rem",bottom:"1.5rem"})]}),BCe=E.memo(FCe);function yx(e){"@babel/helpers - typeof";return yx=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},yx(e)}var OB=[],jCe=OB.forEach,VCe=OB.slice;function vx(e){return jCe.call(VCe.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function RB(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":yx(XMLHttpRequest))==="object"}function zCe(e){return!!e&&typeof e.then=="function"}function UCe(e){return zCe(e)?e:Promise.resolve(e)}function GCe(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 bx={exports:{}},Dg={exports:{}},gA;function HCe(){return gA||(gA=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(T){return T&&DataView.prototype.isPrototypeOf(T)}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(T){return T&&u.indexOf(Object.prototype.toString.call(T))>-1};function d(T){if(typeof T!="string"&&(T=String(T)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(T))throw new TypeError("Invalid character in header field name");return T.toLowerCase()}function f(T){return typeof T!="string"&&(T=String(T)),T}function h(T){var O={next:function(){var I=T.shift();return{done:I===void 0,value:I}}};return a.iterable&&(O[Symbol.iterator]=function(){return O}),O}function p(T){this.map={},T instanceof p?T.forEach(function(O,I){this.append(I,O)},this):Array.isArray(T)?T.forEach(function(O){this.append(O[0],O[1])},this):T&&Object.getOwnPropertyNames(T).forEach(function(O){this.append(O,T[O])},this)}p.prototype.append=function(T,O){T=d(T),O=f(O);var I=this.map[T];this.map[T]=I?I+", "+O:O},p.prototype.delete=function(T){delete this.map[d(T)]},p.prototype.get=function(T){return T=d(T),this.has(T)?this.map[T]:null},p.prototype.has=function(T){return this.map.hasOwnProperty(d(T))},p.prototype.set=function(T,O){this.map[d(T)]=f(O)},p.prototype.forEach=function(T,O){for(var I in this.map)this.map.hasOwnProperty(I)&&T.call(O,this.map[I],I,this)},p.prototype.keys=function(){var T=[];return this.forEach(function(O,I){T.push(I)}),h(T)},p.prototype.values=function(){var T=[];return this.forEach(function(O){T.push(O)}),h(T)},p.prototype.entries=function(){var T=[];return this.forEach(function(O,I){T.push([I,O])}),h(T)},a.iterable&&(p.prototype[Symbol.iterator]=p.prototype.entries);function m(T){if(T.bodyUsed)return Promise.reject(new TypeError("Already read"));T.bodyUsed=!0}function S(T){return new Promise(function(O,I){T.onload=function(){O(T.result)},T.onerror=function(){I(T.error)}})}function v(T){var O=new FileReader,I=S(O);return O.readAsArrayBuffer(T),I}function y(T){var O=new FileReader,I=S(O);return O.readAsText(T),I}function g(T){for(var O=new Uint8Array(T),I=new Array(O.length),M=0;M-1?O:T}function C(T,O){O=O||{};var I=O.body;if(T instanceof C){if(T.bodyUsed)throw new TypeError("Already read");this.url=T.url,this.credentials=T.credentials,O.headers||(this.headers=new p(T.headers)),this.method=T.method,this.mode=T.mode,this.signal=T.signal,!I&&T._bodyInit!=null&&(I=T._bodyInit,T.bodyUsed=!0)}else this.url=String(T);if(this.credentials=O.credentials||this.credentials||"same-origin",(O.headers||!this.headers)&&(this.headers=new p(O.headers)),this.method=x(O.method||this.method||"GET"),this.mode=O.mode||this.mode||null,this.signal=O.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&I)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(I)}C.prototype.clone=function(){return new C(this,{body:this._bodyInit})};function k(T){var O=new FormData;return T.trim().split("&").forEach(function(I){if(I){var M=I.split("="),R=M.shift().replace(/\+/g," "),D=M.join("=").replace(/\+/g," ");O.append(decodeURIComponent(R),decodeURIComponent(D))}}),O}function P(T){var O=new p,I=T.replace(/\r?\n[\t ]+/g," ");return I.split(/\r?\n/).forEach(function(M){var R=M.split(":"),D=R.shift().trim();if(D){var L=R.join(":").trim();O.append(D,L)}}),O}_.call(C.prototype);function A(T,O){O||(O={}),this.type="default",this.status=O.status===void 0?200:O.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in O?O.statusText:"OK",this.headers=new p(O.headers),this.url=O.url||"",this._initBody(T)}_.call(A.prototype),A.prototype.clone=function(){return new A(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},A.error=function(){var T=new A(null,{status:0,statusText:""});return T.type="error",T};var $=[301,302,303,307,308];A.redirect=function(T,O){if($.indexOf(O)===-1)throw new RangeError("Invalid status code");return new A(null,{status:O,headers:{location:T}})},s.DOMException=o.DOMException;try{new s.DOMException}catch{s.DOMException=function(O,I){this.message=O,this.name=I;var M=Error(O);this.stack=M.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function N(T,O){return new Promise(function(I,M){var R=new C(T,O);if(R.signal&&R.signal.aborted)return M(new s.DOMException("Aborted","AbortError"));var D=new XMLHttpRequest;function L(){D.abort()}D.onload=function(){var V={status:D.status,statusText:D.statusText,headers:P(D.getAllResponseHeaders()||"")};V.url="responseURL"in D?D.responseURL:V.headers.get("X-Request-URL");var z="response"in D?D.response:D.responseText;I(new A(z,V))},D.onerror=function(){M(new TypeError("Network request failed"))},D.ontimeout=function(){M(new TypeError("Network request failed"))},D.onabort=function(){M(new s.DOMException("Aborted","AbortError"))},D.open(R.method,R.url,!0),R.credentials==="include"?D.withCredentials=!0:R.credentials==="omit"&&(D.withCredentials=!1),"responseType"in D&&a.blob&&(D.responseType="blob"),R.headers.forEach(function(V,z){D.setRequestHeader(z,V)}),R.signal&&(R.signal.addEventListener("abort",L),D.onreadystatechange=function(){D.readyState===4&&R.signal.removeEventListener("abort",L)}),D.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=A),s.Headers=p,s.Request=C,s.Response=A,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}(Dg,Dg.exports)),Dg.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 GCe<"u"&&(typeof window>"u"||typeof window.document>"u")){var r=n||HCe();r.default&&(r=r.default),t.default=r,e.exports=t.default}})(bx,bx.exports);var IB=bx.exports;const MB=Cl(IB),mA=qA({__proto__:null,default:MB},[IB]);function d0(e){"@babel/helpers - typeof";return d0=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},d0(e)}var is;typeof fetch=="function"&&(typeof global<"u"&&global.fetch?is=global.fetch:typeof window<"u"&&window.fetch?is=window.fetch:is=fetch);var Rh;RB()&&(typeof global<"u"&&global.XMLHttpRequest?Rh=global.XMLHttpRequest:typeof window<"u"&&window.XMLHttpRequest&&(Rh=window.XMLHttpRequest));var f0;typeof ActiveXObject=="function"&&(typeof global<"u"&&global.ActiveXObject?f0=global.ActiveXObject:typeof window<"u"&&window.ActiveXObject&&(f0=window.ActiveXObject));!is&&mA&&!Rh&&!f0&&(is=MB||mA);typeof is!="function"&&(is=void 0);var Sx=function(t,n){if(n&&d0(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},yA=function(t,n,r){is(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)},vA=!1,qCe=function(t,n,r,i){t.queryStringParams&&(n=Sx(n,t.queryStringParams));var o=vx({},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=vx({method:r?"POST":"GET",body:r?t.stringify(r):void 0,headers:o},vA?{}:s);try{yA(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]}),yA(n,a,i),vA=!0}catch(u){i(u)}}},WCe=function(t,n,r,i){r&&d0(r)==="object"&&(r=Sx("",r).slice(1)),t.queryStringParams&&(n=Sx(n,t.queryStringParams));try{var o;Rh?o=new Rh:o=new f0("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)}},KCe=function(t,n,r,i){if(typeof r=="function"&&(i=r,r=void 0),i=i||function(){},is&&n.indexOf("file:")!==0)return qCe(t,n,r,i);if(RB()||typeof ActiveXObject=="function")return WCe(t,n,r,i);i(new Error("No fetch and no xhr implementation found!"))};function Ih(e){"@babel/helpers - typeof";return Ih=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},Ih(e)}function YCe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bA(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};YCe(this,e),this.services=t,this.options=n,this.allOptions=r,this.type="backend",this.init(t,n,r)}return XCe(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=vx(i,this.options||{},JCe()),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=UCe(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,S){u+=1,c.push(m),d.push(S),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}();DB.type="backend";nr.use(DB).use(eue).init({fallbackLng:"en",debug:!1,backend:{loadPath:"/locales/{{lng}}.json"},interpolation:{escapeValue:!1},returnNull:!1});const Eo=Object.create(null);Eo.open="0";Eo.close="1";Eo.ping="2";Eo.pong="3";Eo.message="4";Eo.upgrade="5";Eo.noop="6";const xm=Object.create(null);Object.keys(Eo).forEach(e=>{xm[Eo[e]]=e});const e5e={type:"error",data:"parser error"},LB=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",$B=typeof ArrayBuffer=="function",FB=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,K3=({type:e,data:t},n,r)=>LB&&t instanceof Blob?n?r(t):SA(t,r):$B&&(t instanceof ArrayBuffer||FB(t))?n?r(t):SA(new Blob([t]),r):r(Eo[e]+(t||"")),SA=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function _A(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let R_;function t5e(e,t){if(LB&&e.data instanceof Blob)return e.data.arrayBuffer().then(_A).then(t);if($B&&(e.data instanceof ArrayBuffer||FB(e.data)))return t(_A(e.data));K3(e,!1,n=>{R_||(R_=new TextEncoder),t(R_.encode(n))})}const wA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Kd=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},r5e=typeof ArrayBuffer=="function",Y3=(e,t)=>{if(typeof e!="string")return{type:"message",data:BB(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:i5e(e.substring(1),t)}:xm[n]?e.length>1?{type:xm[n],data:e.substring(1)}:{type:xm[n]}:e5e},i5e=(e,t)=>{if(r5e){const n=n5e(e);return BB(n,t)}else return{base64:!0,data:e}},BB=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},jB=String.fromCharCode(30),o5e=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,s)=>{K3(o,!1,a=>{r[s]=a,++i===n&&t(r.join(jB))})})},s5e=(e,t)=>{const n=e.split(jB),r=[];for(let i=0;i54;return Y3(r?e:I_.decode(e),n)}const VB=4;function sn(e){if(e)return l5e(e)}function l5e(e){for(var t in sn.prototype)e[t]=sn.prototype[t];return e}sn.prototype.on=sn.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};sn.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};sn.prototype.off=sn.prototype.removeListener=sn.prototype.removeAllListeners=sn.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 zB(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const u5e=ai.setTimeout,c5e=ai.clearTimeout;function pb(e,t){t.useNativeTimers?(e.setTimeoutFn=u5e.bind(ai),e.clearTimeoutFn=c5e.bind(ai)):(e.setTimeoutFn=ai.setTimeout.bind(ai),e.clearTimeoutFn=ai.clearTimeout.bind(ai))}const d5e=1.33;function f5e(e){return typeof e=="string"?h5e(e):Math.ceil((e.byteLength||e.size)*d5e)}function h5e(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}function p5e(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function g5e(e){let t={},n=e.split("&");for(let r=0,i=n.length;r0);return t}function GB(){const e=TA(+new Date);return e!==CA?(xA=0,CA=e):e+"."+TA(xA++)}for(;Lg<_x;Lg++)y5e[UB[Lg]]=Lg;let HB=!1;try{HB=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const v5e=HB;function qB(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||v5e))return new XMLHttpRequest}catch{}if(!t)try{return new ai[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}function b5e(){}const S5e=function(){return new qB({xdomain:!1}).responseType!=null}();class _5e extends X3{constructor(t){if(super(t),this.polling=!1,typeof location<"u"){const r=location.protocol==="https:";let i=location.port;i||(i=r?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||i!==t.port}const n=t&&t.forceBase64;this.supportsBinary=S5e&&!n,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(t){this.readyState="pausing";const n=()=>{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)};s5e(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,o5e(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]=GB()),!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 ic(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 ic=class Cm extends sn{constructor(t,n){super(),pb(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=zB(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;const r=this.xhr=new qB(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=Cm.requestsCount++,Cm.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=b5e,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete Cm.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()}};ic.requestsCount=0;ic.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",EA);else if(typeof addEventListener=="function"){const e="onpagehide"in ai?"pagehide":"unload";addEventListener(e,EA,!1)}}function EA(){for(let e in ic.requests)ic.requests.hasOwnProperty(e)&&ic.requests[e].abort()}const Q3=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),$g=ai.WebSocket||ai.MozWebSocket,PA=!0,w5e="arraybuffer",kA=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class x5e extends X3{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=kA?{}:zB(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=PA&&!kA?n?new $g(t,n):new $g(t):new $g(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType||w5e,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{PA&&this.ws.send(o)}catch{}i&&Q3(()=>{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]=GB()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}check(){return!!$g}}function C5e(e,t){return e.type==="message"&&typeof e.data!="string"&&t[0]>=48&&t[0]<=54}class T5e extends X3{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=t.readable.getReader();this.writer=t.writable.getWriter();let r;const i=()=>{n.read().then(({done:s,value:a})=>{s||(!r&&a.byteLength===1&&a[0]===54?r=!0:(this.onPacket(a5e(a,r,"arraybuffer")),r=!1),i())}).catch(s=>{})};i();const o=this.query.sid?`0{"sid":"${this.query.sid}"}`:"0";this.writer.write(new TextEncoder().encode(o)).then(()=>this.onOpen())})}))}write(t){this.writable=!1;for(let n=0;n{C5e(r,o)&&this.writer.write(Uint8Array.of(54)),this.writer.write(o).then(()=>{i&&Q3(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})})}}doClose(){var t;(t=this.transport)===null||t===void 0||t.close()}}const E5e={websocket:x5e,webtransport:T5e,polling:_5e},P5e=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,k5e=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function wx(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=P5e.exec(e||""),o={},s=14;for(;s--;)o[k5e[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=A5e(o,o.path),o.queryKey=O5e(o,o.query),o}function A5e(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 O5e(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}let WB=class mu extends sn{constructor(t,n={}){super(),this.writeBuffer=[],t&&typeof t=="object"&&(n=t,t=null),t?(t=wx(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=wx(n.host).host),pb(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=g5e(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=VB,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 E5e[t](r)}open(){let t;if(this.opts.rememberUpgrade&&mu.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;mu.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;mu.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",mu.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){mu.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,KB=Object.prototype.toString,N5e=typeof Blob=="function"||typeof Blob<"u"&&KB.call(Blob)==="[object BlobConstructor]",D5e=typeof File=="function"||typeof File<"u"&&KB.call(File)==="[object FileConstructor]";function Z3(e){return I5e&&(e instanceof ArrayBuffer||M5e(e))||N5e&&e instanceof Blob||D5e&&e instanceof File}function Tm(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:He.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 He.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 He.EVENT:case He.BINARY_EVENT:this.onevent(t);break;case He.ACK:case He.BINARY_ACK:this.onack(t);break;case He.DISCONNECT:this.ondisconnect();break;case He.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:He.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:He.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}td.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};td.prototype.reset=function(){this.attempts=0};td.prototype.setMin=function(e){this.ms=e};td.prototype.setMax=function(e){this.max=e};td.prototype.setJitter=function(e){this.jitter=e};class Tx extends sn{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,pb(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 td({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||z5e;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=Pi(n,"open",function(){r.onopen(),t&&t()}),o=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),t?t(a):this.maybeReconnectOnOpen()},s=Pi(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(Pi(t,"ping",this.onping.bind(this)),Pi(t,"data",this.ondata.bind(this)),Pi(t,"error",this.onerror.bind(this)),Pi(t,"close",this.onclose.bind(this)),Pi(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){Q3(()=>{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 YB(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 Ld={};function Em(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=R5e(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,s=Ld[i]&&o in Ld[i].nsps,a=t.forceNew||t["force new connection"]||t.multiplex===!1||s;let l;return a?l=new Tx(r,t):(Ld[i]||(Ld[i]=new Tx(r,t)),l=Ld[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(Em,{Manager:Tx,Socket:YB,io:Em,connect:Em});var G5e=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|W{1,2}|[LlopSZN]|"[^"]*"|'[^']*'/g,H5e=/\b(?:[A-Z]{1,3}[A-Z][TC])(?:[-+]\d{4})?|((?:Australian )?(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time)\b/g,q5e=/[^-+\dA-Z]/g;function W5e(e,t,n,r){if(arguments.length===1&&typeof e=="string"&&!/\d/.test(e)&&(t=e,e=void 0),e=e||e===0?e:new Date,e instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");t=String(OA[t]||t||OA.default);var i=t.slice(0,4);(i==="UTC:"||i==="GMT:")&&(t=t.slice(4),n=!0,i==="GMT:"&&(r=!0));var o=function(){return n?"getUTC":"get"},s=function(){return e[o()+"Date"]()},a=function(){return e[o()+"Day"]()},l=function(){return e[o()+"Month"]()},u=function(){return e[o()+"FullYear"]()},c=function(){return e[o()+"Hours"]()},d=function(){return e[o()+"Minutes"]()},f=function(){return e[o()+"Seconds"]()},h=function(){return e[o()+"Milliseconds"]()},p=function(){return n?0:e.getTimezoneOffset()},m=function(){return K5e(e)},S=function(){return Y5e(e)},v={d:function(){return s()},dd:function(){return $r(s())},ddd:function(){return Sr.dayNames[a()]},DDD:function(){return RA({y:u(),m:l(),d:s(),_:o(),dayName:Sr.dayNames[a()],short:!0})},dddd:function(){return Sr.dayNames[a()+7]},DDDD:function(){return RA({y:u(),m:l(),d:s(),_:o(),dayName:Sr.dayNames[a()+7]})},m:function(){return l()+1},mm:function(){return $r(l()+1)},mmm:function(){return Sr.monthNames[l()]},mmmm:function(){return Sr.monthNames[l()+12]},yy:function(){return String(u()).slice(2)},yyyy:function(){return $r(u(),4)},h:function(){return c()%12||12},hh:function(){return $r(c()%12||12)},H:function(){return c()},HH:function(){return $r(c())},M:function(){return d()},MM:function(){return $r(d())},s:function(){return f()},ss:function(){return $r(f())},l:function(){return $r(h(),3)},L:function(){return $r(Math.floor(h()/10))},t:function(){return c()<12?Sr.timeNames[0]:Sr.timeNames[1]},tt:function(){return c()<12?Sr.timeNames[2]:Sr.timeNames[3]},T:function(){return c()<12?Sr.timeNames[4]:Sr.timeNames[5]},TT:function(){return c()<12?Sr.timeNames[6]:Sr.timeNames[7]},Z:function(){return r?"GMT":n?"UTC":X5e(e)},o:function(){return(p()>0?"-":"+")+$r(Math.floor(Math.abs(p())/60)*100+Math.abs(p())%60,4)},p:function(){return(p()>0?"-":"+")+$r(Math.floor(Math.abs(p())/60),2)+":"+$r(Math.floor(Math.abs(p())%60),2)},S:function(){return["th","st","nd","rd"][s()%10>3?0:(s()%100-s()%10!=10)*s()%10]},W:function(){return m()},WW:function(){return $r(m())},N:function(){return S()}};return t.replace(G5e,function(y){return y in v?v[y]():y.slice(1,y.length-1)})}var OA={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"},Sr={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]},$r=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return String(t).padStart(n,"0")},RA=function(t){var n=t.y,r=t.m,i=t.d,o=t._,s=t.dayName,a=t.short,l=a===void 0?!1:a,u=new Date,c=new Date;c.setDate(c[o+"Date"]()-1);var d=new Date;d.setDate(d[o+"Date"]()+1);var f=function(){return u[o+"Date"]()},h=function(){return u[o+"Month"]()},p=function(){return u[o+"FullYear"]()},m=function(){return c[o+"Date"]()},S=function(){return c[o+"Month"]()},v=function(){return c[o+"FullYear"]()},y=function(){return d[o+"Date"]()},g=function(){return d[o+"Month"]()},b=function(){return d[o+"FullYear"]()};return p()===n&&h()===r&&f()===i?l?"Tdy":"Today":v()===n&&S()===r&&m()===i?l?"Ysd":"Yesterday":b()===n&&g()===r&&y()===i?l?"Tmw":"Tomorrow":s},K5e=function(t){var n=new Date(t.getFullYear(),t.getMonth(),t.getDate());n.setDate(n.getDate()-(n.getDay()+6)%7+3);var r=new Date(n.getFullYear(),0,4);r.setDate(r.getDate()-(r.getDay()+6)%7+3);var i=n.getTimezoneOffset()-r.getTimezoneOffset();n.setHours(n.getHours()-i);var o=(n-r)/(864e5*7);return 1+Math.floor(o)},Y5e=function(t){var n=t.getDay();return n===0&&(n=7),n},X5e=function(t){return(String(t).match(H5e)||[""]).pop().replace(q5e,"").replace(/GMT\+0000/g,"UTC")};const ri=()=>W5e(new Date,"yyyy-mm-dd'T'HH:MM:ss:lo"),Q5e=e=>{const{socket:t,storeApi:n,log:r}=e,{dispatch:i,getState:o}=n;t.on("connect",()=>{r.debug("Connected"),i(xL({timestamp:ri()}));const{sessionId:s}=o().system;s&&(t.emit("subscribe",{session:s}),i(l3({sessionId:s,timestamp:ri(),boardId:o().gallery.selectedBoardId})))}),t.on("connect_error",s=>{s&&s.message&&s.data==="ERR_UNAUTHENTICATED"&&i(Vt(sa({title:s.message,status:"error",duration:1e4})))}),t.on("disconnect",()=>{i(TL({timestamp:ri()}))}),t.on("invocation_started",s=>{i(OL({data:s,timestamp:ri()}))}),t.on("generator_progress",s=>{i(LL({data:s,timestamp:ri()}))}),t.on("invocation_error",s=>{i(ML({data:s,timestamp:ri()}))}),t.on("invocation_complete",s=>{i(u3({data:s,timestamp:ri()}))}),t.on("graph_execution_state_complete",s=>{i(NL({data:s,timestamp:ri()}))}),t.on("model_load_started",s=>{i(FL({data:s,timestamp:ri()}))}),t.on("model_load_completed",s=>{i(BL({data:s,timestamp:ri()}))})},Z5e=Se.child({namespace:"socketio"}),IA=()=>{let e=!1,t=`ws://${window.location.host}`;const n={timeout:6e4,path:"/ws/socket.io",autoConnect:!1};if(["nodes","package"].includes("production")){const o=yh.get();o&&(t=o.replace(/^https?\:\/\//i,""));const s=mh.get();s&&(n.auth={token:s}),n.transports=["websocket","polling"]}const r=Em(t,n);return o=>s=>a=>{const{dispatch:l,getState:u}=o;if(e||(Q5e({storeApi:o,socket:r,log:Z5e}),e=!0,r.connect()),Un.fulfilled.match(a)){const c=a.payload.id,d=u().system.sessionId;d&&(r.emit("unsubscribe",{session:d}),l(kL({sessionId:d,timestamp:ri()}))),r.emit("subscribe",{session:c}),l(l3({sessionId:c,timestamp:ri(),boardId:u().gallery.selectedBoardId}))}s(a)}},gb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function nd(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function e4(e){return"nodeType"in e}function vr(e){var t,n;return e?nd(e)?e:e4(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function t4(e){const{Document:t}=vr(e);return e instanceof t}function Ap(e){return nd(e)?!1:e instanceof vr(e).HTMLElement}function J5e(e){return e instanceof vr(e).SVGElement}function rd(e){return e?nd(e)?e.document:e4(e)?t4(e)?e:Ap(e)?e.ownerDocument:document:document:document}const Po=gb?E.useLayoutEffect:E.useEffect;function mb(e){const t=E.useRef(e);return Po(()=>{t.current=e}),E.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i{e.current=setInterval(r,i)},[]),n=E.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Mh(e,t){t===void 0&&(t=[e]);const n=E.useRef(e);return Po(()=>{n.current!==e&&(n.current=e)},t),n}function Op(e,t){const n=E.useRef();return E.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function h0(e){const t=mb(e),n=E.useRef(null),r=E.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function p0(e){const t=E.useRef();return E.useEffect(()=>{t.current=e},[e]),t.current}let M_={};function yb(e,t){return E.useMemo(()=>{if(t)return t;const n=M_[e]==null?0:M_[e]+1;return M_[e]=n,e+"-"+n},[e,t])}function XB(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 oc=XB(1),g0=XB(-1);function t3e(e){return"clientX"in e&&"clientY"in e}function n4(e){if(!e)return!1;const{KeyboardEvent:t}=vr(e.target);return t&&e instanceof t}function n3e(e){if(!e)return!1;const{TouchEvent:t}=vr(e.target);return t&&e instanceof t}function Nh(e){if(n3e(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 t3e(e)?{x:e.clientX,y:e.clientY}:null}const Dh=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[Dh.Translate.toString(e),Dh.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),MA="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function r3e(e){return e.matches(MA)?e:e.querySelector(MA)}const i3e={display:"none"};function o3e(e){let{id:t,value:n}=e;return ze.createElement("div",{id:t,style:i3e},n)}const s3e={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 a3e(e){let{id:t,announcement:n}=e;return ze.createElement("div",{id:t,style:s3e,role:"status","aria-live":"assertive","aria-atomic":!0},n)}function l3e(){const[e,t]=E.useState("");return{announce:E.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const QB=E.createContext(null);function u3e(e){const t=E.useContext(QB);E.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function c3e(){const[e]=E.useState(()=>new Set),t=E.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[E.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 d3e={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. - `},f3e={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 h3e(e){let{announcements:t=f3e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=d3e}=e;const{announce:o,announcement:s}=l3e(),a=yb("DndLiveRegion"),[l,u]=E.useState(!1);if(E.useEffect(()=>{u(!0)},[]),u3e(E.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=ze.createElement(ze.Fragment,null,ze.createElement(o3e,{id:r,value:i.draggable}),ze.createElement(a3e,{id:a,announcement:s}));return n?li.createPortal(c,n):c}var cn;(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"})(cn||(cn={}));function m0(){}function NA(e,t){return E.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function p3e(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const Gi=Object.freeze({x:0,y:0});function g3e(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function m3e(e,t){const n=Nh(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 y3e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function v3e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function b3e(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 S3e(e,t){if(!e||e.length===0)return null;const[n]=e;return t?n[t]:n}function _3e(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=_3e(a,t);l>0&&i.push({id:s,data:{droppableContainer:o,value:l}})}}return i.sort(v3e)};function x3e(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 C3e=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&&x3e(r,a)){const u=b3e(a).reduce((d,f)=>d+g3e(r,f),0),c=Number((u/4).toFixed(4));i.push({id:s,data:{droppableContainer:o,value:c}})}}return i.sort(y3e)};function T3e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function ZB(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Gi}function E3e(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 P3e=E3e(1);function JB(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 k3e(e,t,n){const r=JB(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 A3e={ignoreTransform:!1};function Rp(e,t){t===void 0&&(t=A3e);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:c}=vr(e).getComputedStyle(e);u&&(n=k3e(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 DA(e){return Rp(e,{ignoreTransform:!0})}function O3e(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function R3e(e,t){return t===void 0&&(t=vr(e).getComputedStyle(e)),t.position==="fixed"}function I3e(e,t){t===void 0&&(t=vr(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 r4(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(t4(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Ap(i)||J5e(i)||n.includes(i))return n;const o=vr(e).getComputedStyle(i);return i!==e&&I3e(i,o)&&n.push(i),R3e(i,o)?n:r(i.parentNode)}return e?r(e):n}function ej(e){const[t]=r4(e,1);return t??null}function N_(e){return!gb||!e?null:nd(e)?e:e4(e)?t4(e)||e===rd(e).scrollingElement?window:Ap(e)?e:null:null}function tj(e){return nd(e)?e.scrollX:e.scrollLeft}function nj(e){return nd(e)?e.scrollY:e.scrollTop}function Ex(e){return{x:tj(e),y:nj(e)}}var xn;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(xn||(xn={}));function rj(e){return!gb||!e?!1:e===document.scrollingElement}function ij(e){const t={x:0,y:0},n=rj(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 M3e={x:.2,y:.2};function N3e(e,t,n,r,i){let{top:o,left:s,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=M3e);const{isTop:u,isBottom:c,isLeft:d,isRight:f}=ij(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=xn.Backward,p.y=r*Math.abs((t.top+m.height-o)/m.height)):!c&&l>=t.bottom-m.height&&(h.y=xn.Forward,p.y=r*Math.abs((t.bottom-m.height-l)/m.height)),!f&&a>=t.right-m.width?(h.x=xn.Forward,p.x=r*Math.abs((t.right-m.width-a)/m.width)):!d&&s<=t.left+m.width&&(h.x=xn.Backward,p.x=r*Math.abs((t.left+m.width-s)/m.width)),{direction:h,speed:p}}function D3e(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 oj(e){return e.reduce((t,n)=>oc(t,Ex(n)),Gi)}function L3e(e){return e.reduce((t,n)=>t+tj(n),0)}function $3e(e){return e.reduce((t,n)=>t+nj(n),0)}function sj(e,t){if(t===void 0&&(t=Rp),!e)return;const{top:n,left:r,bottom:i,right:o}=t(e);ej(e)&&(i<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const F3e=[["x",["left","right"],L3e],["y",["top","bottom"],$3e]];class i4{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=r4(n),i=oj(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,s,a]of F3e)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 mf{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 B3e(e){const{EventTarget:t}=vr(e);return e instanceof t?e:rd(e)}function D_(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 ii;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(ii||(ii={}));function LA(e){e.preventDefault()}function j3e(e){e.stopPropagation()}var gt;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"})(gt||(gt={}));const aj={start:[gt.Space,gt.Enter],cancel:[gt.Esc],end:[gt.Space,gt.Enter]},V3e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case gt.Right:return{...n,x:n.x+25};case gt.Left:return{...n,x:n.x-25};case gt.Down:return{...n,y:n.y+25};case gt.Up:return{...n,y:n.y-25}}};class lj{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 mf(rd(n)),this.windowListeners=new mf(vr(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(ii.Resize,this.handleCancel),this.windowListeners.add(ii.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(ii.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&sj(r),n(Gi)}handleKeyDown(t){if(n4(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:o=aj,coordinateGetter:s=V3e,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}:Gi;this.referenceCoordinates||(this.referenceCoordinates=c);const d=s(t,{active:n,context:r.current,currentCoordinates:c});if(d){const f=g0(d,c),h={x:0,y:0},{scrollableAncestors:p}=r.current;for(const m of p){const S=t.code,{isTop:v,isRight:y,isLeft:g,isBottom:b,maxScroll:_,minScroll:w}=ij(m),x=D3e(m),C={x:Math.min(S===gt.Right?x.right-x.width/2:x.right,Math.max(S===gt.Right?x.left:x.left+x.width/2,d.x)),y:Math.min(S===gt.Down?x.bottom-x.height/2:x.bottom,Math.max(S===gt.Down?x.top:x.top+x.height/2,d.y))},k=S===gt.Right&&!y||S===gt.Left&&!g,P=S===gt.Down&&!b||S===gt.Up&&!v;if(k&&C.x!==d.x){const A=m.scrollLeft+f.x,$=S===gt.Right&&A<=_.x||S===gt.Left&&A>=w.x;if($&&!f.y){m.scrollTo({left:A,behavior:a});return}$?h.x=m.scrollLeft-A:h.x=S===gt.Right?m.scrollLeft-_.x:m.scrollLeft-w.x,h.x&&m.scrollBy({left:-h.x,behavior:a});break}else if(P&&C.y!==d.y){const A=m.scrollTop+f.y,$=S===gt.Down&&A<=_.y||S===gt.Up&&A>=w.y;if($&&!f.x){m.scrollTo({top:A,behavior:a});return}$?h.y=m.scrollTop-A:h.y=S===gt.Down?m.scrollTop-_.y:m.scrollTop-w.y,h.y&&m.scrollBy({top:-h.y,behavior:a});break}}this.handleMove(t,oc(g0(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()}}lj.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=aj,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 $A(e){return!!(e&&"distance"in e)}function FA(e){return!!(e&&"delay"in e)}class o4{constructor(t,n,r){var i;r===void 0&&(r=B3e(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=rd(s),this.documentListeners=new mf(this.document),this.listeners=new mf(r),this.windowListeners=new mf(vr(s)),this.initialCoordinates=(i=Nh(o))!=null?i:Gi,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(ii.Resize,this.handleCancel),this.windowListeners.add(ii.DragStart,LA),this.windowListeners.add(ii.VisibilityChange,this.handleCancel),this.windowListeners.add(ii.ContextMenu,LA),this.documentListeners.add(ii.Keydown,this.handleKeydown),n){if($A(n))return;if(FA(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(ii.Click,j3e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(ii.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=Nh(t))!=null?n:Gi,u=g0(i,l);if(!r&&a){if(FA(a))return D_(u,a.tolerance)?this.handleCancel():void 0;if($A(a))return a.tolerance!=null&&D_(u,a.tolerance)?this.handleCancel():D_(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===gt.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const z3e={move:{name:"pointermove"},end:{name:"pointerup"}};class uj extends o4{constructor(t){const{event:n}=t,r=rd(n.target);super(t,z3e,r)}}uj.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 U3e={move:{name:"mousemove"},end:{name:"mouseup"}};var Px;(function(e){e[e.RightClick=2]="RightClick"})(Px||(Px={}));class cj extends o4{constructor(t){super(t,U3e,rd(t.event.target))}}cj.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===Px.RightClick?!1:(r==null||r({event:n}),!0)}}];const L_={move:{name:"touchmove"},end:{name:"touchend"}};class dj extends o4{constructor(t){super(t,L_)}static setup(){return window.addEventListener(L_.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(L_.move.name,t)};function t(){}}}dj.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 yf;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(yf||(yf={}));var y0;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(y0||(y0={}));function G3e(e){let{acceleration:t,activator:n=yf.Pointer,canScroll:r,draggingRect:i,enabled:o,interval:s=5,order:a=y0.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:c,delta:d,threshold:f}=e;const h=q3e({delta:d,disabled:!o}),[p,m]=e3e(),S=E.useRef({x:0,y:0}),v=E.useRef({x:0,y:0}),y=E.useMemo(()=>{switch(n){case yf.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case yf.DraggableRect:return i}},[n,i,l]),g=E.useRef(null),b=E.useCallback(()=>{const w=g.current;if(!w)return;const x=S.current.x*v.current.x,C=S.current.y*v.current.y;w.scrollBy(x,C)},[]),_=E.useMemo(()=>a===y0.TreeOrder?[...u].reverse():u,[a,u]);E.useEffect(()=>{if(!o||!u.length||!y){m();return}for(const w of _){if((r==null?void 0:r(w))===!1)continue;const x=u.indexOf(w),C=c[x];if(!C)continue;const{direction:k,speed:P}=N3e(w,C,y,t,f);for(const A of["x","y"])h[A][k[A]]||(P[A]=0,k[A]=0);if(P.x>0||P.y>0){m(),g.current=w,p(b,s),S.current=P,v.current=k;return}}S.current={x:0,y:0},v.current={x:0,y:0},m()},[t,b,r,m,o,s,JSON.stringify(y),JSON.stringify(h),p,u,_,c,JSON.stringify(f)])}const H3e={x:{[xn.Backward]:!1,[xn.Forward]:!1},y:{[xn.Backward]:!1,[xn.Forward]:!1}};function q3e(e){let{delta:t,disabled:n}=e;const r=p0(t);return Op(i=>{if(n||!r||!i)return H3e;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[xn.Backward]:i.x[xn.Backward]||o.x===-1,[xn.Forward]:i.x[xn.Forward]||o.x===1},y:{[xn.Backward]:i.y[xn.Backward]||o.y===-1,[xn.Forward]:i.y[xn.Forward]||o.y===1}}},[n,t,r])}function W3e(e,t){const n=t!==null?e.get(t):void 0,r=n?n.node.current:null;return Op(i=>{var o;return t===null?null:(o=r??i)!=null?o:null},[r,t])}function K3e(e,t){return E.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 Lh;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Lh||(Lh={}));var kx;(function(e){e.Optimized="optimized"})(kx||(kx={}));const BA=new Map;function Y3e(e,t){let{dragging:n,dependencies:r,config:i}=t;const[o,s]=E.useState(null),{frequency:a,measure:l,strategy:u}=i,c=E.useRef(e),d=S(),f=Mh(d),h=E.useCallback(function(v){v===void 0&&(v=[]),!f.current&&s(y=>y===null?v:y.concat(v.filter(g=>!y.includes(g))))},[f]),p=E.useRef(null),m=Op(v=>{if(d&&!n)return BA;if(!v||v===BA||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 b=g.node.current,_=b?new i4(l(b),b):null;g.rect.current=_,_&&y.set(g.id,_)}return y}return v},[e,o,n,d,l]);return E.useEffect(()=>{c.current=e},[e]),E.useEffect(()=>{d||h()},[n,d]),E.useEffect(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),E.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 S(){switch(u){case Lh.Always:return!1;case Lh.BeforeDragging:return n;default:return!n}}}function s4(e,t){return Op(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function X3e(e,t){return s4(e,t)}function Q3e(e){let{callback:t,disabled:n}=e;const r=mb(t),i=E.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return E.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function vb(e){let{callback:t,disabled:n}=e;const r=mb(t),i=E.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return E.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function Z3e(e){return new i4(Rp(e),e)}function jA(e,t,n){t===void 0&&(t=Z3e);const[r,i]=E.useReducer(a,null),o=Q3e({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=vb({callback:i});return Po(()=>{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 J3e(e){const t=s4(e);return ZB(e,t)}const VA=[];function e4e(e){const t=E.useRef(e),n=Op(r=>e?r&&r!==VA&&e&&t.current&&e.parentNode===t.current.parentNode?r:r4(e):VA,[e]);return E.useEffect(()=>{t.current=e},[e]),n}function t4e(e){const[t,n]=E.useState(null),r=E.useRef(e),i=E.useCallback(o=>{const s=N_(o.target);s&&n(a=>a?(a.set(s,Ex(s)),new Map(a)):null)},[]);return E.useEffect(()=>{const o=r.current;if(e!==o){s(o);const a=e.map(l=>{const u=N_(l);return u?(u.addEventListener("scroll",i,{passive:!0}),[u,Ex(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=N_(l);u==null||u.removeEventListener("scroll",i)})}},[i,e]),E.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,s)=>oc(o,s),Gi):oj(e):Gi,[e,t])}function zA(e,t){t===void 0&&(t=[]);const n=E.useRef(null);return E.useEffect(()=>{n.current=null},t),E.useEffect(()=>{const r=e!==Gi;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?g0(e,n.current):Gi}function n4e(e){E.useEffect(()=>{if(!gb)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 r4e(e,t){return E.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:o}=r;return n[i]=s=>{o(s,t)},n},{}),[e,t])}function fj(e){return E.useMemo(()=>e?O3e(e):null,[e])}const $_=[];function i4e(e,t){t===void 0&&(t=Rp);const[n]=e,r=fj(n?vr(n):null),[i,o]=E.useReducer(a,$_),s=vb({callback:o});return e.length>0&&i===$_&&o(),Po(()=>{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=>rj(l)?r:new i4(t(l),l)):$_}}function hj(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Ap(t)?t:e}function o4e(e){let{measure:t}=e;const[n,r]=E.useState(null),i=E.useCallback(u=>{for(const{target:c}of u)if(Ap(c)){r(d=>{const f=t(c);return d?{...d,width:f.width,height:f.height}:f});break}},[t]),o=vb({callback:i}),s=E.useCallback(u=>{const c=hj(u);o==null||o.disconnect(),c&&(o==null||o.observe(c)),r(c?t(c):null)},[t,o]),[a,l]=h0(s);return E.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const s4e=[{sensor:uj,options:{}},{sensor:lj,options:{}}],a4e={current:{}},Pm={draggable:{measure:DA},droppable:{measure:DA,strategy:Lh.WhileDragging,frequency:kx.Optimized},dragOverlay:{measure:Rp}};class vf 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 l4e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new vf,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:m0},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Pm,measureDroppableContainers:m0,windowRect:null,measuringScheduled:!1},pj={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:m0,draggableNodes:new Map,over:null,measureDroppableContainers:m0},Ip=E.createContext(pj),gj=E.createContext(l4e);function u4e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new vf}}}function c4e(e,t){switch(t.type){case cn.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case cn.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 cn.DragEnd:case cn.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case cn.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new vf(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case cn.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 vf(e.droppable.containers);return s.set(n,{...o,disabled:i}),{...e,droppable:{...e.droppable,containers:s}}}case cn.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const o=new vf(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function d4e(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=E.useContext(Ip),o=p0(r),s=p0(n==null?void 0:n.id);return E.useEffect(()=>{if(!t&&!r&&o&&s!=null){if(!n4(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=r3e(c);if(d){d.focus();break}}})}},[r,t,i,s,o]),null}function mj(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,o)=>o({transform:i,...r}),n):n}function f4e(e){return E.useMemo(()=>({draggable:{...Pm.draggable,...e==null?void 0:e.draggable},droppable:{...Pm.droppable,...e==null?void 0:e.droppable},dragOverlay:{...Pm.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 h4e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const o=E.useRef(!1),{x:s,y:a}=typeof i=="boolean"?{x:i,y:i}:i;Po(()=>{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=ZB(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=ej(u);f&&f.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const bb=E.createContext({...Gi,scaleX:1,scaleY:1});var $s;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})($s||($s={}));const p4e=E.memo(function(t){var n,r,i,o;let{id:s,accessibility:a,autoScroll:l=!0,children:u,sensors:c=s4e,collisionDetection:d=w3e,measuring:f,modifiers:h,...p}=t;const m=E.useReducer(c4e,void 0,u4e),[S,v]=m,[y,g]=c3e(),[b,_]=E.useState($s.Uninitialized),w=b===$s.Initialized,{draggable:{active:x,nodes:C,translate:k},droppable:{containers:P}}=S,A=x?C.get(x):null,$=E.useRef({initial:null,translated:null}),N=E.useMemo(()=>{var ct;return x!=null?{id:x,data:(ct=A==null?void 0:A.data)!=null?ct:a4e,rect:$}:null},[x,A]),T=E.useRef(null),[O,I]=E.useState(null),[M,R]=E.useState(null),D=Mh(p,Object.values(p)),L=yb("DndDescribedBy",s),V=E.useMemo(()=>P.getEnabled(),[P]),z=f4e(f),{droppableRects:U,measureDroppableContainers:K,measuringScheduled:W}=Y3e(V,{dragging:w,dependencies:[k.x,k.y],config:z.droppable}),X=W3e(C,x),F=E.useMemo(()=>M?Nh(M):null,[M]),q=No(),Q=X3e(X,z.draggable.measure);h4e({activeNode:x?C.get(x):null,config:q.layoutShiftCompensation,initialRect:Q,measure:z.draggable.measure});const J=jA(X,z.draggable.measure,Q),ne=jA(X?X.parentElement:null),Z=E.useRef({activatorEvent:null,active:null,activeNode:X,collisionRect:null,collisions:null,droppableRects:U,draggableNodes:C,draggingNode:null,draggingNodeRect:null,droppableContainers:P,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ge=P.getNodeFor((n=Z.current.over)==null?void 0:n.id),ae=o4e({measure:z.dragOverlay.measure}),oe=(r=ae.nodeRef.current)!=null?r:X,Te=w?(i=ae.rect)!=null?i:J:null,se=!!(ae.nodeRef.current&&ae.rect),We=J3e(se?null:J),yt=fj(oe?vr(oe):null),Fe=e4e(w?ge??X:null),Be=i4e(Fe),Me=mj(h,{transform:{x:k.x-We.x,y:k.y-We.y,scaleX:1,scaleY:1},activatorEvent:M,active:N,activeNodeRect:J,containerNodeRect:ne,draggingNodeRect:Te,over:Z.current.over,overlayNodeRect:ae.rect,scrollableAncestors:Fe,scrollableAncestorRects:Be,windowRect:yt}),rt=F?oc(F,k):null,xt=t4e(Fe),mn=zA(xt),an=zA(xt,[J]),Ot=oc(Me,mn),ee=Te?P3e(Te,Me):null,_e=N&&ee?d({active:N,collisionRect:ee,droppableRects:U,droppableContainers:V,pointerCoordinates:rt}):null,Ee=S3e(_e,"id"),[Ne,ie]=E.useState(null),he=se?Me:oc(Me,an),Qt=T3e(he,(o=Ne==null?void 0:Ne.rect)!=null?o:null,J),Rt=E.useCallback((ct,Ke)=>{let{sensor:An,options:yn}=Ke;if(T.current==null)return;const Hn=C.get(T.current);if(!Hn)return;const ir=ct.nativeEvent,br=new An({active:T.current,activeNode:Hn,event:ir,options:yn,context:Z,onStart(or){const On=T.current;if(On==null)return;const Do=C.get(On);if(!Do)return;const{onDragStart:_s}=D.current,ws={active:{id:On,data:Do.data,rect:$}};li.unstable_batchedUpdates(()=>{_s==null||_s(ws),_($s.Initializing),v({type:cn.DragStart,initialCoordinates:or,active:On}),y({type:"onDragStart",event:ws})})},onMove(or){v({type:cn.DragMove,coordinates:or})},onEnd:Ki(cn.DragEnd),onCancel:Ki(cn.DragCancel)});li.unstable_batchedUpdates(()=>{I(br),R(ct.nativeEvent)});function Ki(or){return async function(){const{active:Do,collisions:_s,over:ws,scrollAdjustedTranslate:Hl}=Z.current;let Lo=null;if(Do&&Hl){const{cancelDrop:sr}=D.current;Lo={activatorEvent:ir,active:Do,collisions:_s,delta:Hl,over:ws},or===cn.DragEnd&&typeof sr=="function"&&await Promise.resolve(sr(Lo))&&(or=cn.DragCancel)}T.current=null,li.unstable_batchedUpdates(()=>{v({type:or}),_($s.Uninitialized),ie(null),I(null),R(null);const sr=or===cn.DragEnd?"onDragEnd":"onDragCancel";if(Lo){const Na=D.current[sr];Na==null||Na(Lo),y({type:sr,event:Lo})}})}}},[C]),ut=E.useCallback((ct,Ke)=>(An,yn)=>{const Hn=An.nativeEvent,ir=C.get(yn);if(T.current!==null||!ir||Hn.dndKit||Hn.defaultPrevented)return;const br={active:ir};ct(An,Ke.options,br)===!0&&(Hn.dndKit={capturedBy:Ke.sensor},T.current=yn,Rt(An,Ke))},[C,Rt]),rr=K3e(c,ut);n4e(c),Po(()=>{J&&b===$s.Initializing&&_($s.Initialized)},[J,b]),E.useEffect(()=>{const{onDragMove:ct}=D.current,{active:Ke,activatorEvent:An,collisions:yn,over:Hn}=Z.current;if(!Ke||!An)return;const ir={active:Ke,activatorEvent:An,collisions:yn,delta:{x:Ot.x,y:Ot.y},over:Hn};li.unstable_batchedUpdates(()=>{ct==null||ct(ir),y({type:"onDragMove",event:ir})})},[Ot.x,Ot.y]),E.useEffect(()=>{const{active:ct,activatorEvent:Ke,collisions:An,droppableContainers:yn,scrollAdjustedTranslate:Hn}=Z.current;if(!ct||T.current==null||!Ke||!Hn)return;const{onDragOver:ir}=D.current,br=yn.get(Ee),Ki=br&&br.rect.current?{id:br.id,rect:br.rect.current,data:br.data,disabled:br.disabled}:null,or={active:ct,activatorEvent:Ke,collisions:An,delta:{x:Hn.x,y:Hn.y},over:Ki};li.unstable_batchedUpdates(()=>{ie(Ki),ir==null||ir(or),y({type:"onDragOver",event:or})})},[Ee]),Po(()=>{Z.current={activatorEvent:M,active:N,activeNode:X,collisionRect:ee,collisions:_e,droppableRects:U,draggableNodes:C,draggingNode:oe,draggingNodeRect:Te,droppableContainers:P,over:Ne,scrollableAncestors:Fe,scrollAdjustedTranslate:Ot},$.current={initial:Te,translated:ee}},[N,X,_e,ee,C,oe,Te,U,P,Ne,Fe,Ot]),G3e({...q,delta:k,draggingRect:ee,pointerCoordinates:rt,scrollableAncestors:Fe,scrollableAncestorRects:Be});const Mo=E.useMemo(()=>({active:N,activeNode:X,activeNodeRect:J,activatorEvent:M,collisions:_e,containerNodeRect:ne,dragOverlay:ae,draggableNodes:C,droppableContainers:P,droppableRects:U,over:Ne,measureDroppableContainers:K,scrollableAncestors:Fe,scrollableAncestorRects:Be,measuringConfiguration:z,measuringScheduled:W,windowRect:yt}),[N,X,J,M,_e,ne,ae,C,P,U,Ne,K,Fe,Be,z,W,yt]),Qr=E.useMemo(()=>({activatorEvent:M,activators:rr,active:N,activeNodeRect:J,ariaDescribedById:{draggable:L},dispatch:v,draggableNodes:C,over:Ne,measureDroppableContainers:K}),[M,rr,N,J,v,L,C,Ne,K]);return ze.createElement(QB.Provider,{value:g},ze.createElement(Ip.Provider,{value:Qr},ze.createElement(gj.Provider,{value:Mo},ze.createElement(bb.Provider,{value:Qt},u)),ze.createElement(d4e,{disabled:(a==null?void 0:a.restoreFocus)===!1})),ze.createElement(h3e,{...a,hiddenTextDescribedById:L}));function No(){const ct=(O==null?void 0:O.autoScrollEnabled)===!1,Ke=typeof l=="object"?l.enabled===!1:l===!1,An=w&&!ct&&!Ke;return typeof l=="object"?{...l,enabled:An}:{enabled:An}}}),g4e=E.createContext(null),UA="button",m4e="Droppable";function y4e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const o=yb(m4e),{activators:s,activatorEvent:a,active:l,activeNodeRect:u,ariaDescribedById:c,draggableNodes:d,over:f}=E.useContext(Ip),{role:h=UA,roleDescription:p="draggable",tabIndex:m=0}=i??{},S=(l==null?void 0:l.id)===t,v=E.useContext(S?bb:g4e),[y,g]=h0(),[b,_]=h0(),w=r4e(s,t),x=Mh(n);Po(()=>(d.set(t,{id:t,key:o,node:y,activatorNode:b,data:x}),()=>{const k=d.get(t);k&&k.key===o&&d.delete(t)}),[d,t]);const C=E.useMemo(()=>({role:h,tabIndex:m,"aria-disabled":r,"aria-pressed":S&&h===UA?!0:void 0,"aria-roledescription":p,"aria-describedby":c.draggable}),[r,h,m,S,p,c.draggable]);return{active:l,activatorEvent:a,activeNodeRect:u,attributes:C,isDragging:S,listeners:r?void 0:w,node:y,over:f,setNodeRef:g,setActivatorNodeRef:_,transform:v}}function v4e(){return E.useContext(gj)}const b4e="Droppable",S4e={timeout:25};function _4e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const o=yb(b4e),{active:s,dispatch:a,over:l,measureDroppableContainers:u}=E.useContext(Ip),c=E.useRef({disabled:n}),d=E.useRef(!1),f=E.useRef(null),h=E.useRef(null),{disabled:p,updateMeasurementsFor:m,timeout:S}={...S4e,...i},v=Mh(m??r),y=E.useCallback(()=>{if(!d.current){d.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{u(Array.isArray(v.current)?v.current:[v.current]),h.current=null},S)},[S]),g=vb({callback:y,disabled:p||!s}),b=E.useCallback((C,k)=>{g&&(k&&(g.unobserve(k),d.current=!1),C&&g.observe(C))},[g]),[_,w]=h0(b),x=Mh(t);return E.useEffect(()=>{!g||!_.current||(g.disconnect(),d.current=!1,g.observe(_.current))},[_,g]),Po(()=>(a({type:cn.RegisterDroppable,element:{id:r,key:o,disabled:n,node:_,rect:f,data:x}}),()=>a({type:cn.UnregisterDroppable,key:o,id:r})),[r]),E.useEffect(()=>{n!==c.current.disabled&&(a({type:cn.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:_,over:l,setNodeRef:w}}function w4e(e){let{animation:t,children:n}=e;const[r,i]=E.useState(null),[o,s]=E.useState(null),a=p0(n);return!n&&!r&&a&&i(a),Po(()=>{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]),ze.createElement(ze.Fragment,null,n,r?E.cloneElement(r,{ref:s}):null)}const x4e={x:0,y:0,scaleX:1,scaleY:1};function C4e(e){let{children:t}=e;return ze.createElement(Ip.Provider,{value:pj},ze.createElement(bb.Provider,{value:x4e},t))}const T4e={position:"fixed",touchAction:"none"},E4e=e=>n4(e)?"transform 250ms ease":void 0,P4e=E.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:o,className:s,rect:a,style:l,transform:u,transition:c=E4e}=e;if(!a)return null;const d=i?u:{...u,scaleX:1,scaleY:1},f={...T4e,width:a.width,height:a.height,top:a.top,left:a.left,transform:Dh.Transform.toString(d),transformOrigin:i&&r?m3e(r,a):void 0,transition:typeof c=="function"?c(r):c,...l};return ze.createElement(n,{className:s,style:f,ref:t},o)}),k4e=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)}},A4e=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:Dh.Transform.toString(t)},{transform:Dh.Transform.toString(n)}]},O4e={duration:250,easing:"ease",keyframes:A4e,sideEffects:k4e({styles:{active:{opacity:"0"}}})};function R4e(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return mb((o,s)=>{if(t===null)return;const a=n.get(o);if(!a)return;const l=a.node.current;if(!l)return;const u=hj(s);if(!u)return;const{transform:c}=vr(s).getComputedStyle(s),d=JB(c);if(!d)return;const f=typeof t=="function"?t:I4e(t);return sj(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 I4e(e){const{duration:t,easing:n,sideEffects:r,keyframes:i}={...O4e,...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 S=r==null?void 0:r({active:s,dragOverlay:a,...u}),v=a.node.animate(h,{duration:t,easing:n,fill:"forwards"});return new Promise(y=>{v.onfinish=()=>{S==null||S(),y()}})}}let GA=0;function M4e(e){return E.useMemo(()=>{if(e!=null)return GA++,GA},[e])}const N4e=ze.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:S,over:v,measuringConfiguration:y,scrollableAncestors:g,scrollableAncestorRects:b,windowRect:_}=v4e(),w=E.useContext(bb),x=M4e(d==null?void 0:d.id),C=mj(s,{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggingNodeRect:S.rect,over:v,overlayNodeRect:S.rect,scrollableAncestors:g,scrollableAncestorRects:b,transform:w,windowRect:_}),k=s4(f),P=R4e({config:r,draggableNodes:p,droppableContainers:m,measuringConfiguration:y}),A=k?S.setRef:void 0;return ze.createElement(C4e,null,ze.createElement(w4e,{animation:P},d&&x?ze.createElement(P4e,{key:x,id:d.id,ref:A,as:a,activatorEvent:c,adjustScale:t,className:l,transition:o,rect:k,style:{zIndex:u,...i},transform:C},n):null))}),D4e=e=>{let{activatorEvent:t,draggingNodeRect:n,transform:r}=e;if(n&&t){const i=Nh(t);if(!i)return r;const o=i.x-n.left,s=i.y-n.top;return{...r,x:r.x+o-n.width/2,y:r.y+s-n.height/2}}return r},Fg=28,HA={w:Fg,h:Fg,maxW:Fg,maxH:Fg,shadow:"dark-lg",borderRadius:"lg",opacity:.3,bg:"base.800",color:"base.50",_dark:{borderColor:"base.200",bg:"base.900",color:"base.100"}},L4e=e=>{if(e.dragData){if(e.dragData.payloadType==="IMAGE_DTO"){const{thumbnail_url:t,width:n,height:r}=e.dragData.payload.imageDTO;return j.jsx(V5,{sx:{position:"relative",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",userSelect:"none",cursor:"none"},children:j.jsx(B5,{sx:{...HA},objectFit:"contain",src:t,width:n,height:r})})}return e.dragData.payloadType==="IMAGE_NAMES"?j.jsxs(z5,{sx:{cursor:"none",userSelect:"none",position:"relative",alignItems:"center",justifyContent:"center",flexDir:"column",...HA},children:[j.jsx(xw,{children:e.dragData.payload.image_names.length}),j.jsx(xw,{size:"sm",children:"Images"})]}):null}},$4e=E.memo(L4e);function nke(e){return _4e(e)}function rke(e){return y4e(e)}const ike=(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"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_NAMES";case"ADD_TO_BATCH":return r==="IMAGE_DTO"||"IMAGE_NAMES";case"MOVE_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_NAMES"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:o}=t.data.current.payload,s=o.board_id,a=e.context.boardId;return!(s===a)&&(s?!0:a)}return r!=="IMAGE_NAMES"}default:return!1}};function F4e(e){return j.jsx(p4e,{...e})}const B4e=e=>{const[t,n]=E.useState(null),r=qc(),i=E.useCallback(u=>{console.log("dragStart",u.active.data.current);const c=u.active.data.current;c&&n(c)},[]),o=E.useCallback(u=>{var d;console.log("dragEnd",u.active.data.current),u.active.data.current;const c=(d=u.over)==null?void 0:d.data.current;!t||!c||(r(DF({overData:c,activeData:t})),n(null))},[t,r]),s=NA(cj,{activationConstraint:{distance:10}}),a=NA(dj,{activationConstraint:{distance:10}}),l=p3e(s,a);return j.jsxs(F4e,{onDragStart:i,onDragEnd:o,sensors:l,collisionDetection:C3e,children:[e.children,j.jsx(N4e,{dropAnimation:null,modifiers:[D4e],children:j.jsx(L5,{children:t&&j.jsx(D5.div,{layout:!0,initial:{opacity:0,scale:.7},animate:{opacity:1,scale:1,transition:{duration:.1}},children:j.jsx($4e,{dragData:t})},"overlay-drag-image")})})]})},j4e=E.memo(B4e),V4e=E.createContext({isOpen:!1,onClose:()=>{},onClickAddToBoard:()=>{},handleAddToBoard:()=>{}}),z4e=e=>{const[t,n]=E.useState(),{isOpen:r,onOpen:i,onClose:o}=Cse(),s=qc(),a=E.useCallback(()=>{n(void 0),o()},[o]),l=E.useCallback(c=>{c&&(n(c),i())},[n,i]),u=E.useCallback(c=>{t&&(s(ye.endpoints.addImageToBoard.initiate({imageDTO:t,board_id:c})),a())},[s,a,t]);return j.jsx(V4e.Provider,{value:{isOpen:r,image:t,onClose:a,onClickAddToBoard:l,handleAddToBoard:u},children:e.children})},U4e=E.lazy(()=>sR(()=>import("./App-06ea4e5e.js"),["./App-06ea4e5e.js","./MantineProvider-b5842fc1.js","./App-6125620a.css"],import.meta.url)),G4e=E.lazy(()=>sR(()=>import("./ThemeLocaleProvider-a6269375.js"),["./ThemeLocaleProvider-a6269375.js","./MantineProvider-b5842fc1.js","./ThemeLocaleProvider-5b992bc7.css"],import.meta.url)),H4e=({apiUrl:e,token:t,config:n,headerComponent:r,middleware:i})=>(E.useEffect(()=>(t&&mh.set(t),e&&yh.set(e),fI(),i&&i.length>0?$2(IA(),...i):$2(IA()),()=>{yh.set(void 0),mh.set(void 0)}),[e,t,i]),j.jsx(ze.StrictMode,{children:j.jsx(oG,{store:LCe,children:j.jsx(ze.Suspense,{fallback:j.jsx(BCe,{}),children:j.jsx(G4e,{children:j.jsx(j4e,{children:j.jsx(z4e,{children:j.jsx(U4e,{config:n,headerComponent:r})})})})})})})),q4e=E.memo(H4e);F_.createRoot(document.getElementById("root")).render(j.jsx(q4e,{}));export{hTe as $,ise as A,Dn as B,oTe as C,L5 as D,D5 as E,Ev as F,Ao as G,yTe as H,Ml as I,TN as J,Fn as K,Zf as L,gy as M,Ou as N,aJ as O,sTe as P,am as Q,Yu as R,Wf as S,uo as T,Cl as U,_G as V,ze as W,vse as X,l6 as Y,qee as Z,Zm as _,UC as a,K6 as a$,lse as a0,vTe as a1,Ol as a2,RN as a3,Tse as a4,STe as a5,bTe as a6,Yae as a7,Wae as a8,wv as a9,tr as aA,Oi as aB,c0e as aC,h0e as aD,Dr as aE,ia as aF,Ji as aG,Y6e as aH,F$ as aI,T0e as aJ,tve as aK,Sme as aL,Nc as aM,Vn as aN,wce as aO,n7 as aP,V5 as aQ,z5 as aR,xw as aS,tke as aT,Kc as aU,cy as aV,IEe as aW,h8e as aX,sD as aY,x6e as aZ,Hv as a_,tp as aa,Tie as ab,yN as ac,$n as ad,vo as ae,Dv as af,uTe as ag,tw as ah,iTe as ai,sm as aj,s6 as ak,kle as al,mse as am,a6 as an,ale as ao,Cle as ap,HS as aq,Ql as ar,qS as as,ug as at,lle as au,_Te as av,cp as aw,_i as ax,Kt as ay,nc as az,YC as b,jTe as b$,vPe as b0,li as b1,d5 as b2,Hj as b3,X4e as b4,K4e as b5,Y4e as b6,De as b7,Q5 as b8,bN as b9,C7 as bA,XZ as bB,b4 as bC,T6 as bD,wN as bE,xN as bF,cue as bG,d6e as bH,c6e as bI,Nv as bJ,W4e as bK,IQ as bL,CTe as bM,TTe as bN,qTe as bO,WTe as bP,ATe as bQ,JTe as bR,PTe as bS,BTe as bT,ITe as bU,mbe as bV,kTe as bW,KTe as bX,ETe as bY,iEe as bZ,OTe as b_,Au as ba,o6e as bb,KL as bc,r6e as bd,i6e as be,oue as bf,t6e as bg,lue as bh,qc as bi,z6e as bj,SN as bk,Jxe as bl,nke as bm,ike as bn,_6e as bo,w6e as bp,p6e as bq,e6e as br,Fw as bs,v6e as bt,n6e as bu,B5 as bv,$Ce as bw,CEe as bx,KZ as by,u5 as bz,Uq as c,ye as c$,RTe as c0,VTe as c1,DTe as c2,UTe as c3,gbe as c4,me as c5,V4e as c6,b6e as c7,Tpe as c8,T6e as c9,REe as cA,P8e as cB,g6e as cC,E6e as cD,zL as cE,eL as cF,Vt as cG,Q4e as cH,Z4e as cI,AEe as cJ,C8e as cK,eke as cL,mCe as cM,x8e as cN,k8e as cO,Tce as cP,bEe as cQ,kEe as cR,E8e as cS,Cce as cT,MEe as cU,v8e as cV,bD as cW,gEe as cX,d8e as cY,hCe as cZ,yEe as c_,tL as ca,sPe as cb,xce as cc,Bw as cd,rke as ce,rTe as cf,h6e as cg,l6e as ch,u6e as ci,ra as cj,rbe as ck,m6e as cl,y6e as cm,s6e as cn,Cse as co,Uy as cp,D8e as cq,wEe as cr,Xo as cs,Ppe as ct,g8e as cu,G6e as cv,WL as cw,YL as cx,R8e as cy,nr as cz,PQ as d,GTe as d$,lr as d0,L8e as d1,V6e as d2,F6e as d3,B6e as d4,j6e as d5,q6e as d6,W6e as d7,QL as d8,B8e as d9,k6e as dA,j8e as dB,so as dC,LTe as dD,_p as dE,pEe as dF,oEe as dG,dEe as dH,HTe as dI,fEe as dJ,hEe as dK,uEe as dL,cEe as dM,lEe as dN,aEe as dO,nEe as dP,eEe as dQ,b8e as dR,Dl as dS,_8e as dT,_w as dU,UN as dV,HN as dW,GN as dX,KN as dY,WN as dZ,wTe as d_,bc as da,H6e as db,c7 as dc,xTe as dd,Se as de,NTe as df,F8e as dg,y8 as dh,I6e as di,f3 as dj,ype as dk,gu as dl,v8 as dm,M6e as dn,N6e as dp,IN as dq,D6e as dr,vpe as ds,L6e as dt,VL as du,A6e as dv,R6e as dw,P6e as dx,$6e as dy,Lxe as dz,KI as e,iPe as e$,zv as e0,K8e as e1,sa as e2,$8e as e3,yce as e4,V8e as e5,SD as e6,xD as e7,io as e8,zTe as e9,xR as eA,u8e as eB,n8e as eC,r8e as eD,i8e as eE,a8e as eF,l8e as eG,Ph as eH,o5 as eI,_F as eJ,c8e as eK,Z6e as eL,tCe as eM,X6e as eN,Q6e as eO,e8e as eP,J6e as eQ,t8e as eR,s8e as eS,Zve as eT,yF as eU,UF as eV,hV as eW,Le as eX,TPe as eY,GPe as eZ,UPe as e_,tEe as ea,J4e as eb,yZ as ec,rEe as ed,X8e as ee,H8e as ef,O8e as eg,G8e as eh,Y8e as ei,A8e as ej,W8e as ek,UQ as el,q8e as em,z8e as en,U8e as eo,aF as ep,vv as eq,Q8e as er,Jy as es,ve as et,Z8e as eu,ox as ev,pZ as ew,MTe as ex,eTe as ey,gR as ez,CI as f,D1e as f$,NPe as f0,qPe as f1,B1e as f2,XEe as f3,SPe as f4,Nd as f5,mPe as f6,QEe as f7,b1 as f8,bPe as f9,FEe as fA,BEe as fB,M8e as fC,N8e as fD,gPe as fE,aPe as fF,PPe as fG,MPe as fH,kPe as fI,rPe as fJ,YEe as fK,jPe as fL,BPe as fM,RPe as fN,APe as fO,OPe as fP,QPe as fQ,$Pe as fR,ZPe as fS,pPe as fT,hPe as fU,qEe as fV,HEe as fW,YPe as fX,oPe as fY,$1e as fZ,N1e as f_,WEe as fa,yPe as fb,KEe as fc,ePe as fd,$Ee as fe,LEe as ff,DEe as fg,HPe as fh,QD as fi,mh as fj,zEe as fk,UEe as fl,GEe as fm,zPe as fn,nPe as fo,tPe as fp,Zfe as fq,VPe as fr,F1e as fs,ZEe as ft,lPe as fu,uPe as fv,zd as fw,EPe as fx,CPe as fy,_Pe as fz,SQ as g,L1e as g0,jEe as g1,mEe as g2,I8e as g3,Sce as g4,sEe as g5,VEe as g6,dPe as g7,XPe as g8,YTe as g9,mTe as gA,XTe as ga,QTe as gb,ZTe as gc,fPe as gd,xEe as ge,EEe as gf,TEe as gg,PEe as gh,NEe as gi,vZ as gj,O1e as gk,f8e as gl,nTe as gm,O7 as gn,fTe as go,$ee as gp,cTe as gq,aTe as gr,dTe as gs,co as gt,lTe as gu,tTe as gv,Gee as gw,Iee as gx,dJ as gy,gTe as gz,MI as h,Jn as i,Uc as j,mv as k,En as l,Jh as m,Qh as n,zi as o,Ta as p,TI as q,ko as r,E as s,xS as t,Ze as u,j as v,Si as w,fi as x,Ae as y,Gn as z}; diff --git a/invokeai/frontend/web/dist/index.html b/invokeai/frontend/web/dist/index.html index 802c1f222f..01867d95bc 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 59cf87fbda..7c9f820729 100644 --- a/invokeai/frontend/web/dist/locales/en.json +++ b/invokeai/frontend/web/dist/locales/en.json @@ -23,6 +23,7 @@ "menu": "Menu" }, "common": { + "communityLabel": "Community", "hotkeysLabel": "Hotkeys", "darkMode": "Dark Mode", "lightMode": "Light Mode", @@ -102,8 +103,7 @@ "openInNewTab": "Open in New Tab", "dontAskMeAgain": "Don't ask me again", "areYouSure": "Are you sure?", - "imagePrompt": "Image Prompt", - "clearNodes": "Are you sure you want to clear all nodes?" + "imagePrompt": "Image Prompt" }, "gallery": { "generations": "Generations", @@ -340,6 +340,7 @@ "allModels": "All Models", "checkpointModels": "Checkpoints", "diffusersModels": "Diffusers", + "loraModels": "LoRAs", "safetensorModels": "SafeTensors", "modelAdded": "Model Added", "modelUpdated": "Model Updated", @@ -615,6 +616,11 @@ "initialImageNotSetDesc": "Could not load initial image", "nodesSaved": "Nodes Saved", "nodesLoaded": "Nodes Loaded", + "nodesNotValidGraph": "Not a valid InvokeAI Node Graph", + "nodesNotValidJSON": "Not a valid JSON", + "nodesCorruptedGraph": "Cannot load. Graph seems to be corrupted.", + "nodesUnrecognizedTypes": "Cannot load. Graph has unrecognized types", + "nodesBrokenConnections": "Cannot load. Some connections are broken.", "nodesLoadedFailed": "Failed To Load Nodes", "nodesCleared": "Nodes Cleared" }, @@ -700,9 +706,10 @@ }, "nodes": { "reloadSchema": "Reload Schema", - "saveNodes": "Save Nodes", - "loadNodes": "Load Nodes", - "clearNodes": "Clear Nodes", + "saveGraph": "Save Graph", + "loadGraph": "Load Graph (saved from Node Editor) (Do not copy-paste metadata)", + "clearGraph": "Clear Graph", + "clearGraphDesc": "Are you sure you want to clear all nodes?", "zoomInNodes": "Zoom In", "zoomOutNodes": "Zoom Out", "fitViewportNodes": "Fit View", diff --git a/invokeai/frontend/web/package.json b/invokeai/frontend/web/package.json index c58e7bdc97..481ee8f9e7 100644 --- a/invokeai/frontend/web/package.json +++ b/invokeai/frontend/web/package.json @@ -53,11 +53,11 @@ ] }, "dependencies": { - "@chakra-ui/anatomy": "^2.1.1", + "@chakra-ui/anatomy": "^2.2.0", "@chakra-ui/icons": "^2.0.19", - "@chakra-ui/react": "^2.7.1", + "@chakra-ui/react": "^2.8.0", "@chakra-ui/styled-system": "^2.9.1", - "@chakra-ui/theme-tools": "^2.0.18", + "@chakra-ui/theme-tools": "^2.1.0", "@dagrejs/graphlib": "^2.1.13", "@dnd-kit/core": "^6.0.8", "@dnd-kit/modifiers": "^6.0.1", diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 0640ab9ef0..7c9f820729 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -23,6 +23,7 @@ "menu": "Menu" }, "common": { + "communityLabel": "Community", "hotkeysLabel": "Hotkeys", "darkMode": "Dark Mode", "lightMode": "Light Mode", @@ -339,6 +340,7 @@ "allModels": "All Models", "checkpointModels": "Checkpoints", "diffusersModels": "Diffusers", + "loraModels": "LoRAs", "safetensorModels": "SafeTensors", "modelAdded": "Model Added", "modelUpdated": "Model Updated", diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/appConfigReceived.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/appConfigReceived.ts index 68148a192f..2d0ece3595 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/appConfigReceived.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/appConfigReceived.ts @@ -1,4 +1,8 @@ import { setInfillMethod } from 'features/parameters/store/generationSlice'; +import { + shouldUseNSFWCheckerChanged, + shouldUseWatermarkerChanged, +} from 'features/system/store/systemSlice'; import { appInfoApi } from 'services/api/endpoints/appInfo'; import { startAppListening } from '..'; @@ -6,12 +10,24 @@ export const addAppConfigReceivedListener = () => { startAppListening({ matcher: appInfoApi.endpoints.getAppConfig.matchFulfilled, effect: async (action, { getState, dispatch }) => { - const { infill_methods } = action.payload; + const { + infill_methods = [], + nsfw_methods = [], + watermarking_methods = [], + } = action.payload; const infillMethod = getState().generation.infillMethod; if (!infill_methods.includes(infillMethod)) { dispatch(setInfillMethod(infill_methods[0])); } + + if (!nsfw_methods.includes('nsfw_checker')) { + dispatch(shouldUseNSFWCheckerChanged(false)); + } + + if (!watermarking_methods.includes('invisible_watermark')) { + dispatch(shouldUseWatermarkerChanged(false)); + } }, }); }; 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 ec310eac4c..32a6cce203 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,13 +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 { receivedOpenAPISchema } from 'services/api/thunks/schema'; import { appSocketConnected, socketConnected } from 'services/events/actions'; import { startAppListening } from '../..'; -import { - ALL_BASE_MODELS, - NON_REFINER_BASE_MODELS, - REFINER_BASE_MODELS, -} from 'services/api/constants'; export const addSocketConnectedEventListener = () => { startAppListening({ @@ -29,15 +26,18 @@ export const addSocketConnectedEventListener = () => { dispatch(appSocketConnected(action.payload)); // update all server state - dispatch(modelsApi.endpoints.getMainModels.initiate(REFINER_BASE_MODELS)); dispatch( - modelsApi.endpoints.getMainModels.initiate(NON_REFINER_BASE_MODELS) + 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(modelsApi.endpoints.getMainModels.initiate(ALL_BASE_MODELS)); - dispatch(modelsApi.endpoints.getControlNetModels.initiate()); - dispatch(modelsApi.endpoints.getLoRAModels.initiate()); - dispatch(modelsApi.endpoints.getTextualInversionModels.initiate()); - dispatch(modelsApi.endpoints.getVaeModels.initiate()); + dispatch(appInfoApi.util.invalidateTags(['AppConfig', 'AppVersion'])); }, }); }; diff --git a/invokeai/frontend/web/src/common/components/IAISlider.tsx b/invokeai/frontend/web/src/common/components/IAISlider.tsx index 53a195c7b7..fd3eed754f 100644 --- a/invokeai/frontend/web/src/common/components/IAISlider.tsx +++ b/invokeai/frontend/web/src/common/components/IAISlider.tsx @@ -114,6 +114,11 @@ const IAISlider = (props: IAIFullSliderProps) => { setLocalInputValue(value); }, [value]); + const numberInputMin = useMemo( + () => (sliderNumberInputProps?.min ? sliderNumberInputProps.min : min), + [min, sliderNumberInputProps?.min] + ); + const numberInputMax = useMemo( () => (sliderNumberInputProps?.max ? sliderNumberInputProps.max : max), [max, sliderNumberInputProps?.max] @@ -129,24 +134,23 @@ const IAISlider = (props: IAIFullSliderProps) => { const handleInputBlur = useCallback( (e: FocusEvent) => { if (e.target.value === '') { - e.target.value = String(min); + e.target.value = String(numberInputMin); } const clamped = clamp( isInteger ? Math.floor(Number(e.target.value)) : Number(localInputValue), - min, + numberInputMin, numberInputMax ); const quantized = roundDownToMultiple(clamped, step); onChange(quantized); setLocalInputValue(quantized); }, - [isInteger, localInputValue, min, numberInputMax, onChange, step] + [isInteger, localInputValue, numberInputMin, numberInputMax, onChange, step] ); const handleInputChange = useCallback((v: number | string) => { - console.log('input'); setLocalInputValue(v); }, []); @@ -310,7 +314,7 @@ const IAISlider = (props: IAIFullSliderProps) => { {withInput && ( { }); }); + // Sort Alphabetically + data.sort((a, b) => + a.label && b.label ? (a.label?.localeCompare(b.label) ? -1 : 1) : -1 + ); + return data.sort((a, b) => (a.disabled && !b.disabled ? 1 : -1)); }, [embeddingQueryData, currentMainModel?.base_model]); 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 74fea27927..237a38ca33 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx @@ -1,5 +1,6 @@ -import { Link, MenuItem } from '@chakra-ui/react'; +import { MenuItem } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { skipToken } from '@reduxjs/toolkit/dist/query'; import { useAppToaster } from 'app/components/Toaster'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; @@ -33,10 +34,9 @@ import { useRemoveImageFromBoardMutation, } from 'services/api/endpoints/images'; import { ImageDTO } from 'services/api/types'; +import { useDebounce } from 'use-debounce'; import { AddImageToBoardContext } from '../../../../app/contexts/AddImageToBoardContext'; import { sentImageToCanvas, sentImageToImg2Img } from '../../store/actions'; -import { useDebounce } from 'use-debounce'; -import { skipToken } from '@reduxjs/toolkit/dist/query'; type SingleSelectionMenuItemsProps = { imageDTO: ImageDTO; @@ -154,21 +154,29 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { return ( <> - - }> - {t('common.openInNewTab')} - - + } + > + {t('common.openInNewTab')} + {isClipboardAPIAvailable && ( } onClickCapture={handleCopyImage}> {t('parameters.copyImage')} )} - - } w="100%"> - {t('parameters.downloadImage')} - - + } + w="100%" + > + {t('parameters.downloadImage')} + } onClickCapture={handleRecallPrompt} diff --git a/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx b/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx index a1584ca13a..3432838ec0 100644 --- a/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx +++ b/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx @@ -48,6 +48,7 @@ const ParamLora = (props: Props) => { handleReset={handleReset} withSliderMarks sliderMarks={[-1, 0, 1, 2]} + sliderNumberInputProps={{ min: -50, max: 50 }} /> { }); }); - return data.sort((a, b) => (a.disabled && !b.disabled ? 1 : -1)); + // Sort Alphabetically + data.sort((a, b) => + a.label && b.label ? (a.label?.localeCompare(b.label) ? 1 : -1) : -1 + ); + + return data.sort((a, b) => (a.disabled && !b.disabled ? -1 : 1)); }, [loras, loraModels, currentMainModel?.base_model]); const handleChange = useCallback( diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts new file mode 100644 index 0000000000..35e7f3ac38 --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts @@ -0,0 +1,70 @@ +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'; + +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; + + const nsfwCheckerNode: ImageNSFWBlurInvocation = { + id: NSFW_CHECKER, + type: 'img_nsfw', + is_intermediate, + }; + + graph.nodes[NSFW_CHECKER] = nsfwCheckerNode; + graph.edges.push({ + source: { + node_id: nodeIdToAddTo, + field: 'image', + }, + destination: { + node_id: NSFW_CHECKER, + 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/addWatermarkerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts new file mode 100644 index 0000000000..f2e8a0aeca --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts @@ -0,0 +1,95 @@ +import { RootState } from 'app/store/store'; +import { NonNullableGraph } from 'features/nodes/types/types'; +import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { + ImageNSFWBlurInvocation, + ImageWatermarkInvocation, + LatentsToImageInvocation, + MetadataAccumulatorInvocation, +} from 'services/api/types'; +import { + LATENTS_TO_IMAGE, + METADATA_ACCUMULATOR, + NSFW_CHECKER, + WATERMARKER, +} from './constants'; + +export const addWatermarkerToGraph = ( + 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 nsfwCheckerNode = graph.nodes[NSFW_CHECKER] as + | ImageNSFWBlurInvocation + | undefined; + + const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as + | MetadataAccumulatorInvocation + | undefined; + + if (!nodeToAddTo) { + // something has gone terribly awry + return; + } + + const watermarkerNode: ImageWatermarkInvocation = { + id: WATERMARKER, + type: 'img_watermark', + is_intermediate, + }; + + graph.nodes[WATERMARKER] = watermarkerNode; + + // no matter the situation, we want the l2i node to be intermediate + nodeToAddTo.is_intermediate = true; + + if (nsfwCheckerNode) { + // if we are using NSFW checker, we need to "disable" it output by marking it intermediate, + // then connect it to the watermark node + nsfwCheckerNode.is_intermediate = true; + graph.edges.push({ + source: { + node_id: NSFW_CHECKER, + field: 'image', + }, + destination: { + node_id: WATERMARKER, + field: 'image', + }, + }); + } else { + // otherwise we just connect to the watermark node + graph.edges.push({ + source: { + node_id: nodeIdToAddTo, + field: 'image', + }, + destination: { + node_id: WATERMARKER, + field: 'image', + }, + }); + } + + if (metadataAccumulator) { + graph.edges.push({ + source: { + node_id: METADATA_ACCUMULATOR, + field: 'metadata', + }, + destination: { + node_id: WATERMARKER, + field: 'metadata', + }, + }); + } +}; 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 4ef3ff77d2..42f768c107 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts @@ -10,7 +10,9 @@ import { import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; +import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addVAEToGraph } from './addVAEToGraph'; +import { addWatermarkerToGraph } from './addWatermarkerToGraph'; import { CLIP_SKIP, IMAGE_TO_IMAGE_GRAPH, @@ -103,11 +105,6 @@ export const buildCanvasImageToImageGraph = ( is_intermediate: true, skipped_layers: clipSkip, }, - [LATENTS_TO_IMAGE]: { - is_intermediate: !shouldAutoSave, - type: 'l2i', - id: LATENTS_TO_IMAGE, - }, [LATENTS_TO_LATENTS]: { type: 'l2l', id: LATENTS_TO_LATENTS, @@ -126,6 +123,11 @@ export const buildCanvasImageToImageGraph = ( // image_name: initialImage.image_name, // }, }, + [LATENTS_TO_IMAGE]: { + type: 'l2i', + id: LATENTS_TO_IMAGE, + is_intermediate: !shouldAutoSave, + }, }, edges: [ { @@ -333,5 +335,16 @@ export const buildCanvasImageToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, LATENTS_TO_LATENTS); + // NSFW & watermark - must be last thing added to graph + if (state.system.shouldUseNSFWChecker) { + // must add before watermarker! + addNSFWCheckerToGraph(state, graph); + } + + if (state.system.shouldUseWatermarker) { + // must add after nsfw checker! + addWatermarkerToGraph(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 fa6e20aaa4..3cec76757f 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts @@ -8,7 +8,9 @@ import { RangeOfSizeInvocation, } from 'services/api/types'; import { addLoRAsToGraph } from './addLoRAsToGraph'; +import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addVAEToGraph } from './addVAEToGraph'; +import { addWatermarkerToGraph } from './addWatermarkerToGraph'; import { CLIP_SKIP, INPAINT, @@ -249,5 +251,16 @@ export const buildCanvasInpaintGraph = ( (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; } + // NSFW & watermark - must be last thing added to graph + if (state.system.shouldUseNSFWChecker) { + // must add before watermarker! + addNSFWCheckerToGraph(state, graph, INPAINT); + } + + if (state.system.shouldUseWatermarker) { + // must add after nsfw checker! + addWatermarkerToGraph(state, graph, INPAINT); + } + 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 d0eabbc14b..13b27392ba 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts @@ -5,7 +5,9 @@ import { initialGenerationState } from 'features/parameters/store/generationSlic import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; +import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addVAEToGraph } from './addVAEToGraph'; +import { addWatermarkerToGraph } from './addWatermarkerToGraph'; import { CLIP_SKIP, LATENTS_TO_IMAGE, @@ -238,5 +240,16 @@ export const buildCanvasTextToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, TEXT_TO_LATENTS); + // NSFW & watermark - must be last thing added to graph + if (state.system.shouldUseNSFWChecker) { + // must add before watermarker! + addNSFWCheckerToGraph(state, graph); + } + + if (state.system.shouldUseWatermarker) { + // must add after nsfw checker! + addWatermarkerToGraph(state, graph); + } + return graph; }; 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 856ed89e5a..f264edc6be 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts @@ -9,7 +9,9 @@ import { import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; +import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addVAEToGraph } from './addVAEToGraph'; +import { addWatermarkerToGraph } from './addWatermarkerToGraph'; import { CLIP_SKIP, IMAGE_TO_IMAGE_GRAPH, @@ -297,42 +299,6 @@ export const buildLinearImageToImageGraph = ( }); } - // TODO: add batch functionality - // if (isBatchEnabled && asInitialImage && batchImageNames.length > 0) { - // // we are going to connect an iterate up to the init image - // delete (graph.nodes[IMAGE_TO_LATENTS] as ImageToLatentsInvocation).image; - - // const imageCollection: ImageCollectionInvocation = { - // id: IMAGE_COLLECTION, - // type: 'image_collection', - // images: batchImageNames.map((image_name) => ({ image_name })), - // }; - - // const imageCollectionIterate: IterateInvocation = { - // id: IMAGE_COLLECTION_ITERATE, - // type: 'iterate', - // }; - - // graph.nodes[IMAGE_COLLECTION] = imageCollection; - // graph.nodes[IMAGE_COLLECTION_ITERATE] = imageCollectionIterate; - - // graph.edges.push({ - // source: { node_id: IMAGE_COLLECTION, field: 'collection' }, - // destination: { - // node_id: IMAGE_COLLECTION_ITERATE, - // field: 'collection', - // }, - // }); - - // graph.edges.push({ - // source: { node_id: IMAGE_COLLECTION_ITERATE, field: 'item' }, - // destination: { - // node_id: IMAGE_TO_LATENTS, - // field: 'image', - // }, - // }); - // } - // add metadata accumulator, which is only mostly populated - some fields are added later graph.nodes[METADATA_ACCUMULATOR] = { id: METADATA_ACCUMULATOR, @@ -379,5 +345,16 @@ export const buildLinearImageToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, LATENTS_TO_LATENTS); + // NSFW & watermark - must be last thing added to graph + if (state.system.shouldUseNSFWChecker) { + // must add before watermarker! + addNSFWCheckerToGraph(state, graph); + } + + if (state.system.shouldUseWatermarker) { + // must add after nsfw checker! + addWatermarkerToGraph(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 e80821e060..a260dbc467 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts @@ -7,7 +7,9 @@ import { ImageToLatentsInvocation, } from 'services/api/types'; import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addWatermarkerToGraph } from './addWatermarkerToGraph'; import { IMAGE_TO_LATENTS, LATENTS_TO_IMAGE, @@ -48,6 +50,7 @@ export const buildLinearSDXLImageToImageGraph = ( const { positiveStylePrompt, negativeStylePrompt, + shouldConcatSDXLStylePrompt, shouldUseSDXLRefiner, refinerStart, sdxlImg2ImgDenoisingStrength: strength, @@ -89,13 +92,17 @@ export const buildLinearSDXLImageToImageGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: positiveStylePrompt, + style: shouldConcatSDXLStylePrompt + ? `${positivePrompt} ${positiveStylePrompt}` + : positiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: negativeStylePrompt, + style: shouldConcatSDXLStylePrompt + ? `${negativePrompt} ${negativeStylePrompt}` + : negativeStylePrompt, }, [NOISE]: { type: 'noise', @@ -365,5 +372,16 @@ export const buildLinearSDXLImageToImageGraph = ( // add dynamic prompts - also sets up core iteration and seed addDynamicPromptsToGraph(state, graph); + // NSFW & watermark - must be last thing added to graph + if (state.system.shouldUseNSFWChecker) { + // must add before watermarker! + addNSFWCheckerToGraph(state, graph); + } + + if (state.system.shouldUseWatermarker) { + // must add after nsfw checker! + addWatermarkerToGraph(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 8efcbf8876..c10e7831d3 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts @@ -3,7 +3,9 @@ import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addWatermarkerToGraph } from './addWatermarkerToGraph'; import { LATENTS_TO_IMAGE, METADATA_ACCUMULATOR, @@ -37,6 +39,7 @@ export const buildLinearSDXLTextToImageGraph = ( const { positiveStylePrompt, negativeStylePrompt, + shouldConcatSDXLStylePrompt, shouldUseSDXLRefiner, refinerStart, } = state.sdxl; @@ -72,13 +75,17 @@ export const buildLinearSDXLTextToImageGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: positiveStylePrompt, + style: shouldConcatSDXLStylePrompt + ? `${positivePrompt} ${positiveStylePrompt}` + : positiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: negativeStylePrompt, + style: shouldConcatSDXLStylePrompt + ? `${negativePrompt} ${negativeStylePrompt}` + : negativeStylePrompt, }, [NOISE]: { type: 'noise', @@ -247,5 +254,16 @@ export const buildLinearSDXLTextToImageGraph = ( // add dynamic prompts - also sets up core iteration and seed addDynamicPromptsToGraph(state, graph); + // NSFW & watermark - must be last thing added to graph + if (state.system.shouldUseNSFWChecker) { + // must add before watermarker! + addNSFWCheckerToGraph(state, graph); + } + + if (state.system.shouldUseWatermarker) { + // must add after nsfw checker! + addWatermarkerToGraph(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 7b36f6b391..3766ac1ee3 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts @@ -5,7 +5,9 @@ import { initialGenerationState } from 'features/parameters/store/generationSlic import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; +import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addVAEToGraph } from './addVAEToGraph'; +import { addWatermarkerToGraph } from './addWatermarkerToGraph'; import { CLIP_SKIP, LATENTS_TO_IMAGE, @@ -227,5 +229,16 @@ export const buildLinearTextToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, TEXT_TO_LATENTS); + // NSFW & watermark - must be last thing added to graph + if (state.system.shouldUseNSFWChecker) { + // must add before watermarker! + addNSFWCheckerToGraph(state, graph); + } + + if (state.system.shouldUseWatermarker) { + // must add after nsfw checker! + addWatermarkerToGraph(state, graph); + } + return graph; }; 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 f7d11d109c..8cb9c6d50d 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,8 @@ export const POSITIVE_CONDITIONING = 'positive_conditioning'; export const NEGATIVE_CONDITIONING = 'negative_conditioning'; export const TEXT_TO_LATENTS = 'text_to_latents'; export const LATENTS_TO_IMAGE = 'latents_to_image'; +export const NSFW_CHECKER = 'nsfw_checker'; +export const WATERMARKER = 'invisible_watermark'; export const NOISE = 'noise'; export const RANDOM_INT = 'rand_int'; export const RANGE_OF_SIZE = 'range_of_size'; 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 657034e362..41be41ec28 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 @@ -7,9 +7,9 @@ import { activeTabNameSelector } from '../../../../ui/store/uiSelectors'; const aspectRatios = [ { name: 'Free', value: null }, - { name: 'Portrait', value: 0.67 / 1 }, - { name: 'Wide', value: 16 / 9 }, - { name: 'Square', value: 1 / 1 }, + { name: '2:3', value: 2 / 3 }, + { name: '16:9', value: 16 / 9 }, + { name: '1:1', value: 1 / 1 }, ]; export default function ParamAspectRatio() { diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamPositiveConditioning.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamPositiveConditioning.tsx index 5a52358670..59b5138e3e 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamPositiveConditioning.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamPositiveConditioning.tsx @@ -148,7 +148,7 @@ const ParamPositiveConditioning = () => { diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Prompt/ParamPromptArea.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Prompt/ParamPromptArea.tsx new file mode 100644 index 0000000000..3066490847 --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Prompt/ParamPromptArea.tsx @@ -0,0 +1,17 @@ +import { Flex } from '@chakra-ui/react'; +import ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning'; +import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning'; + +export default function ParamPromptArea() { + return ( + + + + + ); +} diff --git a/invokeai/frontend/web/src/features/parameters/types/constants.ts b/invokeai/frontend/web/src/features/parameters/types/constants.ts index ca52bfb95a..dd0e738eeb 100644 --- a/invokeai/frontend/web/src/features/parameters/types/constants.ts +++ b/invokeai/frontend/web/src/features/parameters/types/constants.ts @@ -1,3 +1,5 @@ +import { components } from 'services/api/schema'; + export const MODEL_TYPE_MAP = { 'sd-1': 'Stable Diffusion 1.x', 'sd-2': 'Stable Diffusion 2.x', @@ -5,6 +7,13 @@ export const MODEL_TYPE_MAP = { 'sdxl-refiner': 'Stable Diffusion XL Refiner', }; +export const MODEL_TYPE_SHORT_MAP = { + 'sd-1': 'SD1', + 'sd-2': 'SD2', + sdxl: 'SDXL', + 'sdxl-refiner': 'SDXLR', +}; + export const clipSkipMap = { 'sd-1': { maxClip: 12, @@ -23,3 +32,12 @@ export const clipSkipMap = { markers: [0, 1, 2, 3, 5, 10, 15, 20, 24], }, }; + +type LoRAModelFormatMap = { + [key in components['schemas']['LoRAModelFormat']]: string; +}; + +export const LORA_MODEL_FORMAT_MAP: LoRAModelFormatMap = { + lycoris: 'LyCORIS', + diffusers: 'Diffusers', +}; diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatButton.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatButton.tsx new file mode 100644 index 0000000000..9393b245ef --- /dev/null +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatButton.tsx @@ -0,0 +1,43 @@ +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { FaLink } from 'react-icons/fa'; +import { setShouldConcatSDXLStylePrompt } from '../store/sdxlSlice'; + +export default function ParamSDXLConcatButton() { + const shouldConcatSDXLStylePrompt = useAppSelector( + (state: RootState) => state.sdxl.shouldConcatSDXLStylePrompt + ); + + const shouldPinParametersPanel = useAppSelector( + (state: RootState) => state.ui.shouldPinParametersPanel + ); + + const dispatch = useAppDispatch(); + + const handleShouldConcatPromptChange = () => { + dispatch(setShouldConcatSDXLStylePrompt(!shouldConcatSDXLStylePrompt)); + }; + + return ( + } + size="xs" + sx={{ + position: 'absolute', + insetInlineEnd: 1, + top: shouldPinParametersPanel ? 12 : 20, + border: 'none', + color: shouldConcatSDXLStylePrompt ? 'accent.500' : 'base.500', + _hover: { + bg: 'none', + }, + }} + > + ); +} diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx index e2d5c5b8e4..e1533bc886 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx @@ -13,15 +13,20 @@ 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 { flushSync } from 'react-dom'; import { setNegativeStylePromptSDXL } from '../store/sdxlSlice'; +import SDXLConcatLink from './SDXLConcatLink'; const promptInputSelector = createSelector( [stateSelector, activeTabNameSelector], ({ sdxl }, activeTabName) => { + const { negativeStylePrompt, shouldConcatSDXLStylePrompt } = sdxl; + return { - prompt: sdxl.negativeStylePrompt, + prompt: negativeStylePrompt, + shouldConcatSDXLStylePrompt, activeTabName, }; }, @@ -37,11 +42,13 @@ const promptInputSelector = createSelector( */ const ParamSDXLNegativeStyleConditioning = () => { const dispatch = useAppDispatch(); - const { prompt, activeTabName } = useAppSelector(promptInputSelector); const isReady = useIsReadyToInvoke(); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); + const { prompt, activeTabName, shouldConcatSDXLStylePrompt } = + useAppSelector(promptInputSelector); + const handleChangePrompt = useCallback( (e: ChangeEvent) => { dispatch(setNegativeStylePromptSDXL(e.target.value)); @@ -111,6 +118,20 @@ const ParamSDXLNegativeStyleConditioning = () => { return ( + + {shouldConcatSDXLStylePrompt && ( + + + + )} + { + const { positiveStylePrompt, shouldConcatSDXLStylePrompt } = sdxl; + return { - prompt: sdxl.positiveStylePrompt, + prompt: positiveStylePrompt, + shouldConcatSDXLStylePrompt, activeTabName, }; }, @@ -37,11 +42,13 @@ const promptInputSelector = createSelector( */ const ParamSDXLPositiveStyleConditioning = () => { const dispatch = useAppDispatch(); - const { prompt, activeTabName } = useAppSelector(promptInputSelector); const isReady = useIsReadyToInvoke(); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); + const { prompt, activeTabName, shouldConcatSDXLStylePrompt } = + useAppSelector(promptInputSelector); + const handleChangePrompt = useCallback( (e: ChangeEvent) => { dispatch(setPositiveStylePromptSDXL(e.target.value)); @@ -111,6 +118,20 @@ const ParamSDXLPositiveStyleConditioning = () => { return ( + + {shouldConcatSDXLStylePrompt && ( + + + + )} + + + + + + + + ); +} diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLConcatLink.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLConcatLink.tsx new file mode 100644 index 0000000000..e982598081 --- /dev/null +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLConcatLink.tsx @@ -0,0 +1,101 @@ +import { Box, Flex } from '@chakra-ui/react'; +import { CSSObject } from '@emotion/react'; +import { motion } from 'framer-motion'; +import { FaLink } from 'react-icons/fa'; + +const sharedConcatLinkStyle: CSSObject = { + 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)', +}; + +export default function SDXLConcatLink() { + return ( + + + + + + + + ); +} diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx index 778116eefe..c0b143a557 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx @@ -1,21 +1,14 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse'; -import ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning'; -import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning'; import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; -// import ParamVariationCollapse from 'features/parameters/components/Parameters/Variations/ParamVariationCollapse'; import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; -import ParamSDXLNegativeStyleConditioning from './ParamSDXLNegativeStyleConditioning'; -import ParamSDXLPositiveStyleConditioning from './ParamSDXLPositiveStyleConditioning'; +import ParamSDXLPromptArea from './ParamSDXLPromptArea'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; import SDXLImageToImageTabCoreParameters from './SDXLImageToImageTabCoreParameters'; const SDXLImageToImageTabParameters = () => { return ( <> - - - - + diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx index 2175fcc9e3..35bc0b4284 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx @@ -1,20 +1,14 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse'; -import ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning'; -import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning'; import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; import TextToImageTabCoreParameters from 'features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters'; -import ParamSDXLNegativeStyleConditioning from './ParamSDXLNegativeStyleConditioning'; -import ParamSDXLPositiveStyleConditioning from './ParamSDXLPositiveStyleConditioning'; +import ParamSDXLPromptArea from './ParamSDXLPromptArea'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; const SDXLTextToImageTabParameters = () => { return ( <> - - - - + diff --git a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts index 16bb806029..7a8ccffa97 100644 --- a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts +++ b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts @@ -10,6 +10,7 @@ import { MainModelField } from 'services/api/types'; type SDXLInitialState = { positiveStylePrompt: PositiveStylePromptSDXLParam; negativeStylePrompt: NegativeStylePromptSDXLParam; + shouldConcatSDXLStylePrompt: boolean; shouldUseSDXLRefiner: boolean; sdxlImg2ImgDenoisingStrength: number; refinerModel: MainModelField | null; @@ -23,6 +24,7 @@ type SDXLInitialState = { const sdxlInitialState: SDXLInitialState = { positiveStylePrompt: '', negativeStylePrompt: '', + shouldConcatSDXLStylePrompt: true, shouldUseSDXLRefiner: false, sdxlImg2ImgDenoisingStrength: 0.7, refinerModel: null, @@ -43,6 +45,9 @@ const sdxlSlice = createSlice({ setNegativeStylePromptSDXL: (state, action: PayloadAction) => { state.negativeStylePrompt = action.payload; }, + setShouldConcatSDXLStylePrompt: (state, action: PayloadAction) => { + state.shouldConcatSDXLStylePrompt = action.payload; + }, setShouldUseSDXLRefiner: (state, action: PayloadAction) => { state.shouldUseSDXLRefiner = action.payload; }, @@ -76,6 +81,7 @@ const sdxlSlice = createSlice({ export const { setPositiveStylePromptSDXL, setNegativeStylePromptSDXL, + setShouldConcatSDXLStylePrompt, setShouldUseSDXLRefiner, setSDXLImg2ImgDenoisingStrength, refinerModelChanged, diff --git a/invokeai/frontend/web/src/features/system/components/ColorModeButton.tsx b/invokeai/frontend/web/src/features/system/components/ColorModeButton.tsx deleted file mode 100644 index 9bf748146c..0000000000 --- a/invokeai/frontend/web/src/features/system/components/ColorModeButton.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { useColorMode } from '@chakra-ui/react'; -import IAIIconButton from 'common/components/IAIIconButton'; -import { useTranslation } from 'react-i18next'; -import { FaMoon, FaSun } from 'react-icons/fa'; - -const ColorModeButton = () => { - const { colorMode, toggleColorMode } = useColorMode(); - const { t } = useTranslation(); - - return ( - - ) : ( - - ) - } - onClick={toggleColorMode} - variant="link" - /> - ); -}; - -export default ColorModeButton; diff --git a/invokeai/frontend/web/src/features/system/components/LanguagePicker.tsx b/invokeai/frontend/web/src/features/system/components/LanguagePicker.tsx deleted file mode 100644 index 0a88ac9215..0000000000 --- a/invokeai/frontend/web/src/features/system/components/LanguagePicker.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { - IconButton, - Menu, - MenuButton, - MenuItemOption, - MenuList, - MenuOptionGroup, - Tooltip, -} from '@chakra-ui/react'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { map } from 'lodash-es'; -import { useTranslation } from 'react-i18next'; -import { IoLanguage } from 'react-icons/io5'; -import { LANGUAGES } from '../store/constants'; -import { languageSelector } from '../store/systemSelectors'; -import { languageChanged } from '../store/systemSlice'; - -export default function LanguagePicker() { - const { t } = useTranslation(); - const dispatch = useAppDispatch(); - const language = useAppSelector(languageSelector); - - return ( - - - } - variant="link" - aria-label={t('common.languagePickerLabel')} - fontSize={22} - minWidth={8} - /> - - - - {map(LANGUAGES, (languageName, l: keyof typeof LANGUAGES) => ( - dispatch(languageChanged(l))} - > - {languageName} - - ))} - - - - ); -} 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 2deccfa46d..af810f7836 100644 --- a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx +++ b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx @@ -10,6 +10,7 @@ import { ModalOverlay, Text, useDisclosure, + useColorMode, } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { VALID_LOG_LEVELS } from 'app/logging/logger'; @@ -26,6 +27,8 @@ import { setShouldConfirmOnDelete, shouldAntialiasProgressImageChanged, shouldLogToConsoleChanged, + shouldUseNSFWCheckerChanged, + shouldUseWatermarkerChanged, } from 'features/system/store/systemSlice'; import { setShouldShowProgressInViewer, @@ -42,10 +45,15 @@ import { } from 'react'; import { useTranslation } from 'react-i18next'; import { LogLevelName } from 'roarr'; +import { useGetAppConfigQuery } from 'services/api/endpoints/appInfo'; import SettingSwitch from './SettingSwitch'; import SettingsClearIntermediates from './SettingsClearIntermediates'; import SettingsSchedulers from './SettingsSchedulers'; import StyledFlex from './StyledFlex'; +import { useFeatureStatus } from '../../hooks/useFeatureStatus'; +import { LANGUAGES } from '../../store/constants'; +import { languageChanged } from '../../store/systemSlice'; +import { languageSelector } from '../../store/systemSelectors'; const selector = createSelector( [stateSelector], @@ -57,6 +65,8 @@ const selector = createSelector( shouldLogToConsole, shouldAntialiasProgressImage, isNodesEnabled, + shouldUseNSFWChecker, + shouldUseWatermarker, } = system; const { @@ -78,6 +88,8 @@ const selector = createSelector( shouldAntialiasProgressImage, shouldShowAdvancedOptions, isNodesEnabled, + shouldUseNSFWChecker, + shouldUseWatermarker, }; }, { @@ -92,6 +104,7 @@ type ConfigOptions = { shouldShowAdvancedOptionsSettings: boolean; shouldShowClearIntermediates: boolean; shouldShowNodesToggle: boolean; + shouldShowLocalizationToggle: boolean; }; type SettingsModalProps = { @@ -113,6 +126,8 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { const shouldShowClearIntermediates = config?.shouldShowClearIntermediates ?? true; const shouldShowNodesToggle = config?.shouldShowNodesToggle ?? true; + const shouldShowLocalizationToggle = + config?.shouldShowLocalizationToggle ?? true; useEffect(() => { if (!shouldShowDeveloperSettings) { @@ -120,6 +135,16 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { } }, [shouldShowDeveloperSettings, dispatch]); + const { isNSFWCheckerAvailable, isWatermarkerAvailable } = + useGetAppConfigQuery(undefined, { + selectFromResult: ({ data }) => ({ + isNSFWCheckerAvailable: + data?.nsfw_methods.includes('nsfw_checker') ?? false, + isWatermarkerAvailable: + data?.watermarking_methods.includes('invisible_watermark') ?? false, + }), + }); + const { isOpen: isSettingsModalOpen, onOpen: onSettingsModalOpen, @@ -143,6 +168,8 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { shouldAntialiasProgressImage, shouldShowAdvancedOptions, isNodesEnabled, + shouldUseNSFWChecker, + shouldUseWatermarker, } = useAppSelector(selector); const handleClickResetWebUI = useCallback(() => { @@ -166,6 +193,13 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { [dispatch] ); + const handleLanguageChanged = useCallback( + (l: string) => { + dispatch(languageChanged(l as keyof typeof LANGUAGES)); + }, + [dispatch] + ); + const handleLogToConsoleChanged = useCallback( (e: ChangeEvent) => { dispatch(shouldLogToConsoleChanged(e.target.checked)); @@ -180,6 +214,12 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { [dispatch] ); + const { colorMode, toggleColorMode } = useColorMode(); + + const isLocalizationEnabled = + useFeatureStatus('localization').isFeatureEnabled; + const language = useAppSelector(languageSelector); + return ( <> {cloneElement(children, { @@ -221,10 +261,31 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { {t('settings.generation')} + ) => + dispatch(shouldUseNSFWCheckerChanged(e.target.checked)) + } + /> + ) => + dispatch(shouldUseWatermarkerChanged(e.target.checked)) + } + /> {t('settings.ui')} + { onChange={handleToggleNodes} /> )} + {shouldShowLocalizationToggle && ( + ({ + value, + label, + }))} + onChange={handleLanguageChanged} + /> + )} {shouldShowDeveloperSettings && ( diff --git a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsSchedulers.tsx b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsSchedulers.tsx index 6d2e963b6a..0be58a8815 100644 --- a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsSchedulers.tsx +++ b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsSchedulers.tsx @@ -10,9 +10,9 @@ import { map } from 'lodash-es'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -const data = map(SCHEDULER_LABEL_MAP, (value, label) => ({ - value, - label, +const data = map(SCHEDULER_LABEL_MAP, (label, name) => ({ + value: name, + label: label, })).sort((a, b) => a.label.localeCompare(b.label)); export default function SettingsSchedulers() { diff --git a/invokeai/frontend/web/src/features/system/components/SiteHeader.tsx b/invokeai/frontend/web/src/features/system/components/SiteHeader.tsx index 758f03f19a..70f4b12859 100644 --- a/invokeai/frontend/web/src/features/system/components/SiteHeader.tsx +++ b/invokeai/frontend/web/src/features/system/components/SiteHeader.tsx @@ -1,28 +1,40 @@ -import { Flex, Spacer } from '@chakra-ui/react'; -import { memo } from 'react'; -import StatusIndicator from './StatusIndicator'; - -import { Link } from '@chakra-ui/react'; +import { + Flex, + Menu, + MenuButton, + MenuGroup, + MenuItem, + MenuList, + Spacer, +} from '@chakra-ui/react'; import IAIIconButton from 'common/components/IAIIconButton'; +import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaBug, FaDiscord, FaGithub, FaKeyboard } from 'react-icons/fa'; -import { MdSettings } from 'react-icons/md'; +import { + FaBars, + FaBug, + FaCog, + FaDiscord, + FaGithub, + FaKeyboard, +} from 'react-icons/fa'; +import { menuListMotionProps } from 'theme/components/menu'; import { useFeatureStatus } from '../hooks/useFeatureStatus'; -import ColorModeButton from './ColorModeButton'; import HotkeysModal from './HotkeysModal/HotkeysModal'; import InvokeAILogoComponent from './InvokeAILogoComponent'; -import LanguagePicker from './LanguagePicker'; import SettingsModal from './SettingsModal/SettingsModal'; +import StatusIndicator from './StatusIndicator'; const SiteHeader = () => { const { t } = useTranslation(); - const isLocalizationEnabled = - useFeatureStatus('localization').isFeatureEnabled; const isBugLinkEnabled = useFeatureStatus('bugLink').isFeatureEnabled; const isDiscordLinkEnabled = useFeatureStatus('discordLink').isFeatureEnabled; const isGithubLinkEnabled = useFeatureStatus('githubLink').isFeatureEnabled; + const githubLink = 'http://github.com/invoke-ai/InvokeAI'; + const discordLink = 'https://discord.gg/ZmtBAhwWhy'; + return ( { - - + } + aria-label={t('accessibility.menu')} + icon={} + sx={{ boxSize: 8 }} /> - - - {isLocalizationEnabled && } - - {isBugLinkEnabled && ( - - } - /> - - )} - - {isGithubLinkEnabled && ( - - } - /> - - )} - - {isDiscordLinkEnabled && ( - - } - /> - - )} - - - - - } - /> - + + + {isGithubLinkEnabled && ( + } + > + {t('common.githubLabel')} + + )} + {isBugLinkEnabled && ( + } + > + {t('common.reportBugLabel')} + + )} + {isDiscordLinkEnabled && ( + } + > + {t('common.discordLabel')} + + )} + + + + }> + {t('common.hotkeysLabel')} + + + + }> + {t('common.settingsLabel')} + + + + +
); }; diff --git a/invokeai/frontend/web/src/features/system/components/SiteHeaderMenu.tsx b/invokeai/frontend/web/src/features/system/components/SiteHeaderMenu.tsx deleted file mode 100644 index ba135be8d1..0000000000 --- a/invokeai/frontend/web/src/features/system/components/SiteHeaderMenu.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { Flex, Link } from '@chakra-ui/react'; -import { useTranslation } from 'react-i18next'; -import { FaBug, FaDiscord, FaGithub, FaKeyboard } from 'react-icons/fa'; -import { MdSettings } from 'react-icons/md'; -import HotkeysModal from './HotkeysModal/HotkeysModal'; -import LanguagePicker from './LanguagePicker'; -import SettingsModal from './SettingsModal/SettingsModal'; - -import IAIIconButton from 'common/components/IAIIconButton'; -import { useFeatureStatus } from '../hooks/useFeatureStatus'; - -const SiteHeaderMenu = () => { - const { t } = useTranslation(); - - const isLocalizationEnabled = - useFeatureStatus('localization').isFeatureEnabled; - const isBugLinkEnabled = useFeatureStatus('bugLink').isFeatureEnabled; - const isDiscordLinkEnabled = useFeatureStatus('discordLink').isFeatureEnabled; - const isGithubLinkEnabled = useFeatureStatus('githubLink').isFeatureEnabled; - - return ( - - - } - /> - - - {isLocalizationEnabled && } - - {isBugLinkEnabled && ( - - } - /> - - )} - - {isGithubLinkEnabled && ( - - } - /> - - )} - - {isDiscordLinkEnabled && ( - - } - /> - - )} - - - } - /> - - - ); -}; - -SiteHeaderMenu.displayName = 'SiteHeaderMenu'; -export default SiteHeaderMenu; diff --git a/invokeai/frontend/web/src/features/system/store/systemSlice.ts b/invokeai/frontend/web/src/features/system/store/systemSlice.ts index b7a5e606e2..fba980131e 100644 --- a/invokeai/frontend/web/src/features/system/store/systemSlice.ts +++ b/invokeai/frontend/web/src/features/system/store/systemSlice.ts @@ -87,6 +87,8 @@ export interface SystemState { language: keyof typeof LANGUAGES; isUploading: boolean; isNodesEnabled: boolean; + shouldUseNSFWChecker: boolean; + shouldUseWatermarker: boolean; } export const initialSystemState: SystemState = { @@ -119,6 +121,8 @@ export const initialSystemState: SystemState = { language: 'en', isUploading: false, isNodesEnabled: false, + shouldUseNSFWChecker: false, + shouldUseWatermarker: false, }; export const systemSlice = createSlice({ @@ -194,6 +198,12 @@ export const systemSlice = createSlice({ setIsNodesEnabled(state, action: PayloadAction) { state.isNodesEnabled = action.payload; }, + shouldUseNSFWCheckerChanged(state, action: PayloadAction) { + state.shouldUseNSFWChecker = action.payload; + }, + shouldUseWatermarkerChanged(state, action: PayloadAction) { + state.shouldUseWatermarker = action.payload; + }, }, extraReducers(builder) { /** @@ -409,6 +419,8 @@ export const { languageChanged, progressImageSet, setIsNodesEnabled, + shouldUseNSFWCheckerChanged, + shouldUseWatermarkerChanged, } = systemSlice.actions; export default systemSlice.reducer; diff --git a/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx b/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx index 26d06adfb3..87ce801ead 100644 --- a/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx +++ b/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx @@ -227,7 +227,8 @@ const InvokeTabs = () => { id="gallery" order={3} defaultSize={ - galleryMinSizePct > DEFAULT_GALLERY_PCT + galleryMinSizePct > DEFAULT_GALLERY_PCT && + galleryMinSizePct < 100 // prevent this error https://github.com/bvaughn/react-resizable-panels/blob/main/packages/react-resizable-panels/src/Panel.ts#L96 ? galleryMinSizePct : DEFAULT_GALLERY_PCT } diff --git a/invokeai/frontend/web/src/features/ui/components/ParametersDrawer.tsx b/invokeai/frontend/web/src/features/ui/components/ParametersDrawer.tsx index 89400c09e5..393cb5bb34 100644 --- a/invokeai/frontend/web/src/features/ui/components/ParametersDrawer.tsx +++ b/invokeai/frontend/web/src/features/ui/components/ParametersDrawer.tsx @@ -1,7 +1,10 @@ import { Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import SDXLImageToImageTabParameters from 'features/sdxl/components/SDXLImageToImageTabParameters'; +import SDXLTextToImageTabParameters from 'features/sdxl/components/SDXLTextToImageTabParameters'; import InvokeAILogoComponent from 'features/system/components/InvokeAILogoComponent'; import { activeTabNameSelector, @@ -39,13 +42,23 @@ const ParametersDrawer = () => { dispatch(setShouldShowParametersPanel(false)); }; + const model = useAppSelector((state: RootState) => state.generation.model); + const drawerContent = useMemo(() => { if (activeTabName === 'txt2img') { - return ; + return model && model.base_model === 'sdxl' ? ( + + ) : ( + + ); } if (activeTabName === 'img2img') { - return ; + return model && model.base_model === 'sdxl' ? ( + + ) : ( + + ); } if (activeTabName === 'unifiedCanvas') { @@ -53,7 +66,7 @@ const ParametersDrawer = () => { } return null; - }, [activeTabName]); + }, [activeTabName, model]); if (shouldPinParametersPanel) { return null; diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx index 9de6a74ec0..b8de2f8308 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx @@ -2,20 +2,18 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/Para 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 ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning'; -import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning'; import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; import ParamSeamlessCollapse from 'features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse'; import ParamSymmetryCollapse from 'features/parameters/components/Parameters/Symmetry/ParamSymmetryCollapse'; // import ParamVariationCollapse from 'features/parameters/components/Parameters/Variations/ParamVariationCollapse'; +import ParamPromptArea from 'features/parameters/components/Parameters/Prompt/ParamPromptArea'; import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; import ImageToImageTabCoreParameters from './ImageToImageTabCoreParameters'; const ImageToImageTabParameters = () => { return ( <> - - + diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel.tsx index 87eb918564..754c8822d1 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel.tsx @@ -3,20 +3,31 @@ import { Flex, Text } from '@chakra-ui/react'; import { useState } from 'react'; import { MainModelConfigEntity, + DiffusersModelConfigEntity, + LoRAModelConfigEntity, useGetMainModelsQuery, + useGetLoRAModelsQuery, } from 'services/api/endpoints/models'; import CheckpointModelEdit from './ModelManagerPanel/CheckpointModelEdit'; import DiffusersModelEdit from './ModelManagerPanel/DiffusersModelEdit'; +import LoRAModelEdit from './ModelManagerPanel/LoRAModelEdit'; import ModelList from './ModelManagerPanel/ModelList'; import { ALL_BASE_MODELS } from 'services/api/constants'; export default function ModelManagerPanel() { const [selectedModelId, setSelectedModelId] = useState(); - const { model } = useGetMainModelsQuery(ALL_BASE_MODELS, { + const { mainModel } = useGetMainModelsQuery(ALL_BASE_MODELS, { selectFromResult: ({ data }) => ({ - model: selectedModelId ? data?.entities[selectedModelId] : undefined, + mainModel: selectedModelId ? data?.entities[selectedModelId] : undefined, }), }); + const { loraModel } = useGetLoRAModelsQuery(undefined, { + selectFromResult: ({ data }) => ({ + loraModel: selectedModelId ? data?.entities[selectedModelId] : undefined, + }), + }); + + const model = mainModel ? mainModel : loraModel; return ( @@ -30,7 +41,7 @@ export default function ModelManagerPanel() { } type ModelEditProps = { - model: MainModelConfigEntity | undefined; + model: MainModelConfigEntity | LoRAModelConfigEntity | undefined; }; const ModelEdit = (props: ModelEditProps) => { @@ -41,7 +52,16 @@ const ModelEdit = (props: ModelEditProps) => { } if (model?.model_format === 'diffusers') { - return ; + return ( + + ); + } + + if (model?.model_type === 'lora') { + return ; } return ( 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 cb297d3afe..6c3ebf2530 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,6 +1,5 @@ import { Badge, 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 IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; @@ -8,6 +7,7 @@ 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'; import { useTranslation } from 'react-i18next'; import { @@ -115,7 +115,7 @@ export default function CheckpointModelEdit(props: CheckpointModelEditProps) { {MODEL_TYPE_MAP[model.base_model]} Model - {!['sdxl', 'sdxl-refiner'].includes(model.base_model) ? ( + {![''].includes(model.base_model) ? ( ) : ( ({ + initialValues: { + model_name: model.model_name ? model.model_name : '', + base_model: model.base_model, + model_type: 'lora', + path: model.path ? model.path : '', + description: model.description ? model.description : '', + model_format: model.model_format, + }, + validate: { + path: (value) => + value.trim().length === 0 ? 'Must provide a path' : null, + }, + }); + + const editModelFormSubmitHandler = useCallback( + (values: LoRAModelConfig) => { + const responseBody = { + base_model: model.base_model, + model_name: model.model_name, + body: values, + }; + + updateLoRAModel(responseBody) + .unwrap() + .then((payload) => { + loraEditForm.setValues(payload as LoRAModelConfig); + dispatch( + addToast( + makeToast({ + title: t('modelManager.modelUpdated'), + status: 'success', + }) + ) + ); + }) + .catch((_) => { + loraEditForm.reset(); + dispatch( + addToast( + makeToast({ + title: t('modelManager.modelUpdateFailed'), + status: 'error', + }) + ) + ); + }); + }, + [ + dispatch, + loraEditForm, + model.base_model, + model.model_name, + t, + updateLoRAModel, + ] + ); + + return ( + + + + {model.model_name} + + + {MODEL_TYPE_MAP[model.base_model]} Model ⋅{' '} + {LORA_MODEL_FORMAT_MAP[model.model_format]} format + + + + +
+ editModelFormSubmitHandler(values) + )} + > + + + + + + + {t('modelManager.updateModel')} + + +
+
+ ); +} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelList.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelList.tsx index f3d0eae495..e4d8a7b15a 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelList.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelList.tsx @@ -9,6 +9,8 @@ import { useTranslation } from 'react-i18next'; import { MainModelConfigEntity, useGetMainModelsQuery, + useGetLoRAModelsQuery, + LoRAModelConfigEntity, } from 'services/api/endpoints/models'; import ModelListItem from './ModelListItem'; import { ALL_BASE_MODELS } from 'services/api/constants'; @@ -20,22 +22,42 @@ type ModelListProps = { type ModelFormat = 'images' | 'checkpoint' | 'diffusers'; +type ModelType = 'main' | 'lora'; + +type CombinedModelFormat = ModelFormat | 'lora'; + const ModelList = (props: ModelListProps) => { const { selectedModelId, setSelectedModelId } = props; const { t } = useTranslation(); const [nameFilter, setNameFilter] = useState(''); const [modelFormatFilter, setModelFormatFilter] = - useState('images'); + useState('images'); const { filteredDiffusersModels } = useGetMainModelsQuery(ALL_BASE_MODELS, { selectFromResult: ({ data }) => ({ - filteredDiffusersModels: modelsFilter(data, 'diffusers', nameFilter), + filteredDiffusersModels: modelsFilter( + data, + 'main', + 'diffusers', + nameFilter + ), }), }); const { filteredCheckpointModels } = useGetMainModelsQuery(ALL_BASE_MODELS, { selectFromResult: ({ data }) => ({ - filteredCheckpointModels: modelsFilter(data, 'checkpoint', nameFilter), + filteredCheckpointModels: modelsFilter( + data, + 'main', + 'checkpoint', + nameFilter + ), + }), + }); + + const { filteredLoraModels } = useGetLoRAModelsQuery(undefined, { + selectFromResult: ({ data }) => ({ + filteredLoraModels: modelsFilter(data, 'lora', undefined, nameFilter), }), }); @@ -68,6 +90,13 @@ const ModelList = (props: ModelListProps) => { > {t('modelManager.checkpointModels')} + setModelFormatFilter('lora')} + isChecked={modelFormatFilter === 'lora'} + > + {t('modelManager.loraModels')} + { )} + {['images', 'lora'].includes(modelFormatFilter) && + filteredLoraModels.length > 0 && ( + + + + LoRAs + + {filteredLoraModels.map((model) => ( + + ))} + + + )} @@ -126,12 +173,13 @@ const ModelList = (props: ModelListProps) => { export default ModelList; -const modelsFilter = ( - data: EntityState | undefined, - model_format: ModelFormat, +const modelsFilter = ( + data: EntityState | undefined, + model_type: ModelType, + model_format: ModelFormat | undefined, nameFilter: string ) => { - const filteredModels: MainModelConfigEntity[] = []; + const filteredModels: T[] = []; forEach(data?.entities, (model) => { if (!model) { return; @@ -141,9 +189,11 @@ const modelsFilter = ( .toLowerCase() .includes(nameFilter.toLowerCase()); - const matchesFormat = model.model_format === model_format; + const matchesFormat = + model_format === undefined || model.model_format === model_format; + const matchesType = model.model_type === model_type; - if (matchesFilter && matchesFormat) { + if (matchesFilter && matchesFormat && matchesType) { filteredModels.push(model); } }); 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 7f4fb0c736..9380eed688 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 @@ -9,29 +9,26 @@ import { selectIsBusy } from 'features/system/store/systemSelectors'; import { addToast } from 'features/system/store/systemSlice'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; +import { MODEL_TYPE_SHORT_MAP } from 'features/parameters/types/constants'; import { MainModelConfigEntity, + LoRAModelConfigEntity, useDeleteMainModelsMutation, + useDeleteLoRAModelsMutation, } from 'services/api/endpoints/models'; type ModelListItemProps = { - model: MainModelConfigEntity; + model: MainModelConfigEntity | LoRAModelConfigEntity; isSelected: boolean; setSelectedModelId: (v: string | undefined) => void; }; -const modelBaseTypeMap = { - 'sd-1': 'SD1', - 'sd-2': 'SD2', - sdxl: 'SDXL', - 'sdxl-refiner': 'SDXLR', -}; - export default function ModelListItem(props: ModelListItemProps) { const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const dispatch = useAppDispatch(); const [deleteMainModel] = useDeleteMainModelsMutation(); + const [deleteLoRAModel] = useDeleteLoRAModelsMutation(); const { model, isSelected, setSelectedModelId } = props; @@ -40,7 +37,10 @@ export default function ModelListItem(props: ModelListItemProps) { }, [model.id, setSelectedModelId]); const handleModelDelete = useCallback(() => { - deleteMainModel(model) + const method = { main: deleteMainModel, lora: deleteLoRAModel }[ + model.model_type + ]; + method(model) .unwrap() .then((_) => { dispatch( @@ -60,14 +60,21 @@ export default function ModelListItem(props: ModelListItemProps) { title: `${t('modelManager.modelDeleteFailed')}: ${ model.model_name }`, - status: 'success', + status: 'error', }) ) ); } }); setSelectedModelId(undefined); - }, [deleteMainModel, model, setSelectedModelId, dispatch, t]); + }, [ + deleteMainModel, + deleteLoRAModel, + model, + setSelectedModelId, + dispatch, + t, + ]); return ( @@ -100,8 +107,8 @@ export default function ModelListItem(props: ModelListItemProps) { { - modelBaseTypeMap[ - model.base_model as keyof typeof modelBaseTypeMap + MODEL_TYPE_SHORT_MAP[ + model.base_model as keyof typeof MODEL_TYPE_SHORT_MAP ] } diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTab.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTab.tsx index 8c3add3d62..7e6e02ff5a 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTab.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTab.tsx @@ -1,7 +1,7 @@ import { Flex } from '@chakra-ui/react'; import { RootState } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import TextToImageSDXLTabParameters from 'features/sdxl/components/SDXLTextToImageTabParameters'; +import SDXLTextToImageTabParameters from 'features/sdxl/components/SDXLTextToImageTabParameters'; import { memo } from 'react'; import ParametersPinnedWrapper from '../../ParametersPinnedWrapper'; import TextToImageTabMain from './TextToImageTabMain'; @@ -13,7 +13,7 @@ const TextToImageTab = () => { {model && model.base_model === 'sdxl' ? ( - + ) : ( )} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx index 8b6fb6f46c..75fa063e17 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx @@ -2,20 +2,18 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/Para 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 ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning'; -import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning'; import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; import ParamSeamlessCollapse from 'features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse'; import ParamSymmetryCollapse from 'features/parameters/components/Parameters/Symmetry/ParamSymmetryCollapse'; // import ParamVariationCollapse from 'features/parameters/components/Parameters/Variations/ParamVariationCollapse'; import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; +import ParamPromptArea from '../../../../parameters/components/Parameters/Prompt/ParamPromptArea'; import TextToImageTabCoreParameters from './TextToImageTabCoreParameters'; const TextToImageTabParameters = () => { return ( <> - - + diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx index 95270c6bbc..de7ce3b084 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx @@ -4,18 +4,16 @@ import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Adv import ParamInfillAndScalingCollapse from 'features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillAndScalingCollapse'; import ParamSeamCorrectionCollapse from 'features/parameters/components/Parameters/Canvas/SeamCorrection/ParamSeamCorrectionCollapse'; import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse'; -import ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning'; -import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning'; import ParamSymmetryCollapse from 'features/parameters/components/Parameters/Symmetry/ParamSymmetryCollapse'; // import ParamVariationCollapse from 'features/parameters/components/Parameters/Variations/ParamVariationCollapse'; +import ParamPromptArea from 'features/parameters/components/Parameters/Prompt/ParamPromptArea'; import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; import UnifiedCanvasCoreParameters from './UnifiedCanvasCoreParameters'; const UnifiedCanvasParameters = () => { return ( <> - - + diff --git a/invokeai/frontend/web/src/index.ts b/invokeai/frontend/web/src/index.ts index add4999b6d..57dbeab0e5 100644 --- a/invokeai/frontend/web/src/index.ts +++ b/invokeai/frontend/web/src/index.ts @@ -3,7 +3,6 @@ export type { PartialAppConfig } from './app/types/invokeai'; export { default as IAIIconButton } from './common/components/IAIIconButton'; export { default as IAIPopover } from './common/components/IAIPopover'; export { default as ParamMainModelSelect } from './features/parameters/components/Parameters/MainModel/ParamMainModelSelect'; -export { default as ColorModeButton } from './features/system/components/ColorModeButton'; export { default as InvokeAiLogoComponent } from './features/system/components/InvokeAILogoComponent'; export { default as SettingsModal } from './features/system/components/SettingsModal/SettingsModal'; export { default as StatusIndicator } from './features/system/components/StatusIndicator'; diff --git a/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts b/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts index f76b56761c..2d3537998d 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts @@ -8,6 +8,7 @@ export const appInfoApi = api.injectEndpoints({ url: `app/version`, method: 'GET', }), + providesTags: ['AppVersion'], keepUnusedDataFor: 86400000, // 1 day }), getAppConfig: build.query({ @@ -15,6 +16,7 @@ export const appInfoApi = api.injectEndpoints({ url: `app/config`, method: 'GET', }), + providesTags: ['AppConfig'], keepUnusedDataFor: 86400000, // 1 day }), }), diff --git a/invokeai/frontend/web/src/services/api/endpoints/models.ts b/invokeai/frontend/web/src/services/api/endpoints/models.ts index 3d0013a62c..9cdded4f85 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/models.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/models.ts @@ -52,9 +52,17 @@ type UpdateMainModelArg = { body: MainModelConfig; }; +type UpdateLoRAModelArg = { + base_model: BaseModelType; + model_name: string; + body: LoRAModelConfig; +}; + type UpdateMainModelResponse = paths['/api/v1/models/{base_model}/{model_type}/{model_name}']['patch']['responses']['200']['content']['application/json']; +type UpdateLoRAModelResponse = UpdateMainModelResponse; + type DeleteMainModelArg = { base_model: BaseModelType; model_name: string; @@ -62,6 +70,10 @@ type DeleteMainModelArg = { type DeleteMainModelResponse = void; +type DeleteLoRAModelArg = DeleteMainModelArg; + +type DeleteLoRAModelResponse = void; + type ConvertMainModelArg = { base_model: BaseModelType; model_name: string; @@ -320,6 +332,31 @@ export const modelsApi = api.injectEndpoints({ ); }, }), + updateLoRAModels: build.mutation< + UpdateLoRAModelResponse, + UpdateLoRAModelArg + >({ + query: ({ base_model, model_name, body }) => { + return { + url: `models/${base_model}/lora/${model_name}`, + method: 'PATCH', + body: body, + }; + }, + invalidatesTags: [{ type: 'LoRAModel', id: LIST_TAG }], + }), + deleteLoRAModels: build.mutation< + DeleteLoRAModelResponse, + DeleteLoRAModelArg + >({ + query: ({ base_model, model_name }) => { + return { + url: `models/${base_model}/lora/${model_name}`, + method: 'DELETE', + }; + }, + invalidatesTags: [{ type: 'LoRAModel', id: LIST_TAG }], + }), getControlNetModels: build.query< EntityState, void @@ -467,6 +504,8 @@ export const { useAddMainModelsMutation, useConvertMainModelsMutation, useMergeMainModelsMutation, + useDeleteLoRAModelsMutation, + useUpdateLoRAModelsMutation, useSyncModelsMutation, useGetModelsInFolderQuery, useGetCheckpointConfigsQuery, diff --git a/invokeai/frontend/web/src/services/api/schema.d.ts b/invokeai/frontend/web/src/services/api/schema.d.ts index 5cbf1d9c00..dcffa4572b 100644 --- a/invokeai/frontend/web/src/services/api/schema.d.ts +++ b/invokeai/frontend/web/src/services/api/schema.d.ts @@ -318,6 +318,21 @@ export type components = { * @description List of available infill methods */ infill_methods: (string)[]; + /** + * Upscaling Methods + * @description List of upscaling methods + */ + upscaling_methods: (components["schemas"]["Upscaler"])[]; + /** + * Nsfw Methods + * @description List of NSFW checking methods + */ + nsfw_methods: (string)[]; + /** + * Watermarking Methods + * @description List of invisible watermark methods + */ + watermarking_methods: (string)[]; }; /** * AppVersion @@ -886,8 +901,8 @@ export type components = { */ resize_mode?: "just_resize" | "crop_resize" | "fill_resize" | "just_resize_simple"; }; - /** ControlNetModelConfig */ - ControlNetModelConfig: { + /** ControlNetModelCheckpointConfig */ + ControlNetModelCheckpointConfig: { /** Model Name */ model_name: string; base_model: components["schemas"]["BaseModelType"]; @@ -900,7 +915,34 @@ export type components = { path: string; /** Description */ description?: string; - model_format: components["schemas"]["ControlNetModelFormat"]; + /** + * Model Format + * @enum {string} + */ + model_format: "checkpoint"; + error?: components["schemas"]["ModelError"]; + /** Config */ + config: string; + }; + /** ControlNetModelDiffusersConfig */ + ControlNetModelDiffusersConfig: { + /** Model Name */ + model_name: string; + base_model: components["schemas"]["BaseModelType"]; + /** + * Model Type + * @enum {string} + */ + model_type: "controlnet"; + /** Path */ + path: string; + /** Description */ + description?: string; + /** + * Model Format + * @enum {string} + */ + model_format: "diffusers"; error?: components["schemas"]["ModelError"]; }; /** @@ -916,12 +958,6 @@ export type components = { /** @description Base model */ base_model: components["schemas"]["BaseModelType"]; }; - /** - * ControlNetModelFormat - * @description An enumeration. - * @enum {string} - */ - ControlNetModelFormat: "checkpoint" | "diffusers"; /** * ControlOutput * @description node output for ControlNet info @@ -1345,7 +1381,7 @@ export type components = { * @description The nodes in this graph */ nodes?: { - [key: string]: (components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | 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"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRawPromptInvocation"] | components["schemas"]["SDXLRefinerRawPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SDXLTextToLatentsInvocation"] | components["schemas"]["SDXLLatentsToLatentsInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["ParamStringInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | 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"]["LatentsToLatentsInvocation"]) | undefined; + [key: string]: (components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | 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"]["CvInpaintInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRawPromptInvocation"] | components["schemas"]["SDXLRefinerRawPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["ParamStringInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SDXLTextToLatentsInvocation"] | components["schemas"]["SDXLLatentsToLatentsInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | 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"]["LatentsToLatentsInvocation"]) | undefined; }; /** * Edges @@ -1388,7 +1424,7 @@ export type components = { * @description The results of node executions */ results: { - [key: string]: (components["schemas"]["ImageOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["MetadataAccumulatorOutput"] | components["schemas"]["CompelOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["PromptOutput"] | components["schemas"]["PromptCollectionOutput"] | components["schemas"]["IntOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["IntCollectionOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]) | undefined; + [key: string]: (components["schemas"]["ImageOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["MetadataAccumulatorOutput"] | components["schemas"]["CompelOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["IntOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["IntCollectionOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["PromptOutput"] | components["schemas"]["PromptCollectionOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]) | undefined; }; /** * Errors @@ -1935,6 +1971,39 @@ export type components = { */ image2?: components["schemas"]["ImageField"]; }; + /** + * ImageNSFWBlurInvocation + * @description Add blur to NSFW-flagged images + */ + ImageNSFWBlurInvocation: { + /** + * Id + * @description The id of this node. Must be unique among all nodes. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this node is an intermediate node. + * @default false + */ + is_intermediate?: boolean; + /** + * Type + * @default img_nsfw + * @enum {string} + */ + type?: "img_nsfw"; + /** + * Image + * @description The image to check + */ + image?: components["schemas"]["ImageField"]; + /** + * Metadata + * @description Optional core metadata to be written to the image + */ + metadata?: components["schemas"]["CoreMetadata"]; + }; /** * ImageOutput * @description Base class for invocations that output an image @@ -2215,6 +2284,45 @@ export type components = { */ thumbnail_url: string; }; + /** + * ImageWatermarkInvocation + * @description Add an invisible watermark to an image + */ + ImageWatermarkInvocation: { + /** + * Id + * @description The id of this node. Must be unique among all nodes. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this node is an intermediate node. + * @default false + */ + is_intermediate?: boolean; + /** + * Type + * @default img_watermark + * @enum {string} + */ + type?: "img_watermark"; + /** + * Image + * @description The image to check + */ + image?: components["schemas"]["ImageField"]; + /** + * Text + * @description Watermark text + * @default InvokeAI + */ + text?: string; + /** + * Metadata + * @description Optional core metadata to be written to the image + */ + metadata?: components["schemas"]["CoreMetadata"]; + }; /** * InfillColorInvocation * @description Infills transparent areas of an image with a solid color @@ -2644,7 +2752,7 @@ export type components = { vae?: components["schemas"]["VaeField"]; /** * Tiled - * @description Decode latents by overlaping tiles(less memory consumption) + * @description Decode latents by overlapping tiles(less memory consumption) * @default false */ tiled?: boolean; @@ -3520,7 +3628,7 @@ export type components = { /** ModelsList */ ModelsList: { /** Models */ - models: (components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"])[]; + models: (components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"])[]; }; /** * MultiplyInvocation @@ -5309,6 +5417,19 @@ export type components = { */ loras: (components["schemas"]["LoraInfo"])[]; }; + /** Upscaler */ + Upscaler: { + /** + * Upscaling Method + * @description Name of upscaling method + */ + upscaling_method: string; + /** + * Upscaling Models + * @description List of upscaling models for this method + */ + upscaling_models: (string)[]; + }; /** * VAEModelField * @description Vae model field @@ -5435,12 +5556,6 @@ export type components = { */ image?: components["schemas"]["ImageField"]; }; - /** - * StableDiffusion1ModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusion1ModelFormat: "checkpoint" | "diffusers"; /** * StableDiffusion2ModelFormat * @description An enumeration. @@ -5453,6 +5568,18 @@ export type components = { * @enum {string} */ StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; + /** + * ControlNetModelFormat + * @description An enumeration. + * @enum {string} + */ + ControlNetModelFormat: "checkpoint" | "diffusers"; + /** + * StableDiffusion1ModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusion1ModelFormat: "checkpoint" | "diffusers"; }; responses: never; parameters: never; @@ -5563,7 +5690,7 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | 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"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRawPromptInvocation"] | components["schemas"]["SDXLRefinerRawPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SDXLTextToLatentsInvocation"] | components["schemas"]["SDXLLatentsToLatentsInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["ParamStringInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | 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"]["LatentsToLatentsInvocation"]; + "application/json": components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | 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"]["CvInpaintInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRawPromptInvocation"] | components["schemas"]["SDXLRefinerRawPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["ParamStringInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SDXLTextToLatentsInvocation"] | components["schemas"]["SDXLLatentsToLatentsInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | 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"]["LatentsToLatentsInvocation"]; }; }; responses: { @@ -5600,7 +5727,7 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | 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"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRawPromptInvocation"] | components["schemas"]["SDXLRefinerRawPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SDXLTextToLatentsInvocation"] | components["schemas"]["SDXLLatentsToLatentsInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["ParamStringInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | 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"]["LatentsToLatentsInvocation"]; + "application/json": components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | 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"]["CvInpaintInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SDXLRawPromptInvocation"] | components["schemas"]["SDXLRefinerRawPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["ParamStringInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["SDXLTextToLatentsInvocation"] | components["schemas"]["SDXLLatentsToLatentsInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | 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"]["LatentsToLatentsInvocation"]; }; }; responses: { @@ -5864,14 +5991,14 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | 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"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Bad request */ @@ -5902,7 +6029,7 @@ export type operations = { /** @description The model imported successfully */ 201: { content: { - "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description The model could not be found */ @@ -5928,14 +6055,14 @@ export type operations = { add_model: { requestBody: { content: { - "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; responses: { /** @description The model added successfully */ 201: { content: { - "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description The model could not be found */ @@ -5975,7 +6102,7 @@ export type operations = { /** @description Model converted successfully */ 200: { content: { - "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Bad request */ @@ -6064,7 +6191,7 @@ export type operations = { /** @description Model converted successfully */ 200: { content: { - "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Incompatible models */ diff --git a/invokeai/frontend/web/src/services/api/types.d.ts b/invokeai/frontend/web/src/services/api/types.d.ts index 3e945691f1..17f20ca1ac 100644 --- a/invokeai/frontend/web/src/services/api/types.d.ts +++ b/invokeai/frontend/web/src/services/api/types.d.ts @@ -42,8 +42,13 @@ export type ControlField = components['schemas']['ControlField']; // Model Configs export type LoRAModelConfig = components['schemas']['LoRAModelConfig']; export type VaeModelConfig = components['schemas']['VaeModelConfig']; +export type ControlNetModelCheckpointConfig = + components['schemas']['ControlNetModelCheckpointConfig']; +export type ControlNetModelDiffusersConfig = + components['schemas']['ControlNetModelDiffusersConfig']; export type ControlNetModelConfig = - components['schemas']['ControlNetModelConfig']; + | ControlNetModelCheckpointConfig + | ControlNetModelDiffusersConfig; export type TextualInversionModelConfig = components['schemas']['TextualInversionModelConfig']; export type DiffusersModelConfig = @@ -134,6 +139,12 @@ export type ESRGANInvocation = TypeReq< export type DivideInvocation = TypeReq< components['schemas']['DivideInvocation'] >; +export type ImageNSFWBlurInvocation = TypeReq< + components['schemas']['ImageNSFWBlurInvocation'] +>; +export type ImageWatermarkInvocation = TypeReq< + components['schemas']['ImageWatermarkInvocation'] +>; // ControlNet Nodes export type ControlNetInvocation = TypeReq< diff --git a/invokeai/frontend/web/src/theme/components/menu.ts b/invokeai/frontend/web/src/theme/components/menu.ts index 563c5ce6a9..4ab323bdb5 100644 --- a/invokeai/frontend/web/src/theme/components/menu.ts +++ b/invokeai/frontend/web/src/theme/components/menu.ts @@ -33,12 +33,16 @@ const invokeAI = definePartsStyle((props) => ({ bg: mode('base.200', 'base.800')(props), _hover: { bg: mode('base.300', 'base.700')(props), + svg: { + opacity: 1, + }, }, _focus: { bg: mode('base.400', 'base.600')(props), }, svg: { - opacity: 0.5, + opacity: 0.7, + fontSize: 14, }, }, })); diff --git a/invokeai/frontend/web/src/theme/components/textarea.ts b/invokeai/frontend/web/src/theme/components/textarea.ts index b737cf5e57..8dd59c18e0 100644 --- a/invokeai/frontend/web/src/theme/components/textarea.ts +++ b/invokeai/frontend/web/src/theme/components/textarea.ts @@ -13,6 +13,15 @@ const invokeAI = defineStyle((props) => ({ var(--invokeai-colors-base-200) 70%, var(--invokeai-colors-base-200) 100%)`, }, + _disabled: { + '::-webkit-resizer': { + backgroundImage: `linear-gradient(135deg, + var(--invokeai-colors-base-50) 0%, + var(--invokeai-colors-base-50) 70%, + var(--invokeai-colors-base-200) 70%, + var(--invokeai-colors-base-200) 100%)`, + }, + }, _dark: { '::-webkit-resizer': { backgroundImage: `linear-gradient(135deg, @@ -21,6 +30,15 @@ const invokeAI = defineStyle((props) => ({ var(--invokeai-colors-base-800) 70%, var(--invokeai-colors-base-800) 100%)`, }, + _disabled: { + '::-webkit-resizer': { + backgroundImage: `linear-gradient(135deg, + var(--invokeai-colors-base-900) 0%, + var(--invokeai-colors-base-900) 70%, + var(--invokeai-colors-base-800) 70%, + var(--invokeai-colors-base-800) 100%)`, + }, + }, }, })); diff --git a/invokeai/frontend/web/yarn.lock b/invokeai/frontend/web/yarn.lock index 35208003d0..17517ce4e0 100644 --- a/invokeai/frontend/web/yarn.lock +++ b/invokeai/frontend/web/yarn.lock @@ -71,56 +71,51 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" -"@chakra-ui/accordion@2.2.0": +"@chakra-ui/accordion@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.3.0.tgz#2c85fd2d2734b176f019f8db9f4e075007b4e1fb" + integrity sha512-A4TkRw3Jnt+Fam6dSSJ62rskdrvjF3JGctYcfXlojfFIpHPuIw4pDwfZgNAxlaxWkcj0e7JJKlQ88dnZW+QfFg== + dependencies: + "@chakra-ui/descendant" "3.1.0" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/transition" "2.1.0" + +"@chakra-ui/alert@2.2.0": version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.2.0.tgz#a38ed8e7d0a7ccc6910282f913c42cf6deea7215" - integrity sha512-2IK1iLzTZ22u8GKPPPn65mqJdZidn4AvkgAbv17ISdKA07VHJ8jSd4QF1T5iCXjKfZ0XaXozmhP4kDhjwF2IbQ== + resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.2.0.tgz#b59eadca4f083674dfcd43651b6c47b953c2c984" + integrity sha512-De+BT88iYOu3Con7MxQeICb1SwgAdVdgpHIYjTh3qvGlNXAQjs81rhG0fONXvwW1FIYletvr9DY2Tlg8xJe7tQ== dependencies: - "@chakra-ui/descendant" "3.0.14" - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/transition" "2.0.16" + "@chakra-ui/spinner" "2.1.0" -"@chakra-ui/alert@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.1.0.tgz#7a234ac6426231b39243088648455cbcf1cbdf24" - integrity sha512-OcfHwoXI5VrmM+tHJTHT62Bx6TfyfCxSa0PWUOueJzSyhlUOKBND5we6UtrOB7D0jwX45qKKEDJOLG5yCG21jQ== +"@chakra-ui/anatomy@2.2.0", "@chakra-ui/anatomy@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.2.0.tgz#788229829f853dcd03314cd7ddd4f19f056ec24e" + integrity sha512-cD8Ms5C8+dFda0LrORMdxiFhAZwOIY1BSlCadz6/mHUIgNdQy13AHPrXiq6qWdMslqVHq10k5zH7xMPLt6kjFg== + +"@chakra-ui/avatar@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.3.0.tgz#f018a2714d1e3ba5970bcf66558887925fdfccf4" + integrity sha512-8gKSyLfygnaotbJbDMHDiJoF38OHXUYVme4gGxZ1fLnQEdPVEaIWfH+NndIjOM0z8S+YEFnT9KyGMUtvPrBk3g== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/spinner" "2.0.13" - -"@chakra-ui/anatomy@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.1.2.tgz#ea66b1841e7195da08ddc862daaa3f3e56e565f5" - integrity sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ== - -"@chakra-ui/anatomy@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.1.1.tgz#819a1458ff727157e5500a69fc26bfea6e944495" - integrity sha512-LUHAoqJAgxAqmyckG5bUpBrfEo1FleEyY+1A8hkWciy58gZ+h3GoY9oBpHcdo7XdHPpy3G+3hieK/7i9NLwxAw== - -"@chakra-ui/avatar@2.2.11": - version "2.2.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.2.11.tgz#1e5ded963ab3209fe1d16bba21f0aec616be56da" - integrity sha512-CJFkoWvlCTDJTUBrKA/aVyG5Zz6TBEIVmmsJtqC6VcQuVDTxkWod8ruXnjb0LT2DUveL7xR5qZM9a5IXcsH3zg== - dependencies: - "@chakra-ui/image" "2.0.16" + "@chakra-ui/image" "2.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/breadcrumb@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.1.5.tgz#a43b22cc8005291a615696a8c88efc37064562f3" - integrity sha512-p3eQQrHQBkRB69xOmNyBJqEdfCrMt+e0eOH+Pm/DjFWfIVIbnIaFbmDCeWClqlLa21Ypc6h1hR9jEmvg8kmOog== +"@chakra-ui/breadcrumb@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.2.0.tgz#751bc48498f3c403f97b5d9aae528ebfd405ef48" + integrity sha512-4cWCG24flYBxjruRi4RJREWTGF74L/KzI2CognAW/d/zWR0CjiScuJhf37Am3LFbCySP6WSoyBOtTIoTA4yLEA== dependencies: "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/breakpoint-utils@2.0.8": @@ -130,39 +125,39 @@ dependencies: "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/button@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.18.tgz#c13d2e404e22a9873ba5373fde494bedafe32fdd" - integrity sha512-E3c99+lOm6ou4nQVOTLkG+IdOPMjsQK+Qe7VyP8A/xeAMFONuibrWPRPpprr4ZkB4kEoLMfNuyH2+aEza3ScUA== +"@chakra-ui/button@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.1.0.tgz#623ed32cc92fc8e52492923e9924791fc6f25447" + integrity sha512-95CplwlRKmmUXkdEp/21VkEWgnwcx2TOBG6NfYlsuLBDHSLlo5FKIiE2oSi4zXc4TLcopGcWPNcm/NDaSC5pvA== dependencies: - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/spinner" "2.0.13" + "@chakra-ui/spinner" "2.1.0" -"@chakra-ui/card@2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.1.6.tgz#27176bdee363ecab7d563c4997c4b2fe9e835ecc" - integrity sha512-fFd/WAdRNVY/WOSQv4skpy0WeVhhI0f7dTY1Sm0jVl0KLmuP/GnpsWtKtqWjNcV00K963EXDyhlk6+9oxbP4gw== +"@chakra-ui/card@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.2.0.tgz#b5e59dc51c171fced76ea76bf26088803b8bc184" + integrity sha512-xUB/k5MURj4CtPAhdSoXZidUbm8j3hci9vnc+eZJVDqhDOShNlD6QeniQNRPRys4lWAQLCbFcrwL29C8naDi6g== dependencies: "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/checkbox@2.2.15": - version "2.2.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.2.15.tgz#e5ff65159f698d50edecee6b661b87e341eace70" - integrity sha512-Ju2yQjX8azgFa5f6VLPuwdGYobZ+rdbcYqjiks848JvPc75UsPhpS05cb4XlrKT7M16I8txDA5rPJdqqFicHCA== +"@chakra-ui/checkbox@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.3.0.tgz#6a103555100008fcde0b25a4f3f87267dd6ea073" + integrity sha512-fX7M5sQK27aFWoj7vqnPkf1Q3AHmML/5dIRYfm7HEIsZXYH2C1CkM6+dijeSWIk6a0mp0r3el6SNDUti2ehH8g== dependencies: - "@chakra-ui/form-control" "2.0.18" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/form-control" "2.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/visually-hidden" "2.0.15" - "@zag-js/focus-visible" "0.2.2" + "@chakra-ui/visually-hidden" "2.1.0" + "@zag-js/focus-visible" "0.10.5" "@chakra-ui/cli@^2.4.1": version "2.4.1" @@ -177,73 +172,73 @@ esbuild "^0.17.18" prettier "^2.8.8" -"@chakra-ui/clickable@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.14.tgz#88093008672a2a30bdd2a30ff815dcc2c88c01a5" - integrity sha512-jfsM1qaD74ZykLHmvmsKRhDyokLUxEfL8Il1VoZMNX5RBI0xW/56vKpLTFF/v/+vLPLS+Te2cZdD4+2O+G6ulA== +"@chakra-ui/clickable@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.1.0.tgz#800fa8d10cf45a41fc50a3df32c679a3ce1921c3" + integrity sha512-flRA/ClPUGPYabu+/GLREZVZr9j2uyyazCAUHAdrTUEdDYCr31SVGhgh7dgKdtq23bOvAQJpIJjw/0Bs0WvbXw== dependencies: - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/close-button@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.17.tgz#d43d3a2ea1f08250f8d0da7704baf0e1fbd91b4b" - integrity sha512-05YPXk456t1Xa3KpqTrvm+7smx+95dmaPiwjiBN3p7LHUQVHJd8ZXSDB0V+WKi419k3cVQeJUdU/azDO2f40sw== +"@chakra-ui/close-button@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.1.0.tgz#5af435a62919793dc713be321eaff1f61749b6d5" + integrity sha512-KfJcz6UAaR2dDWSIv6UrCGkZQS54Fjl+DEEVOUTJ7gf4KOP4FQZCkv8hqsAB9FeCtnwU43adq2oaw3aZH/Uzew== dependencies: - "@chakra-ui/icon" "3.0.16" + "@chakra-ui/icon" "3.1.0" -"@chakra-ui/color-mode@2.1.12": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.12.tgz#c0caeadd5f87fadbeefc6826beabac6c4a88d8f5" - integrity sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw== +"@chakra-ui/color-mode@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.2.0.tgz#828d47234c74ba2fb4c5dd63a63331aead20b9f6" + integrity sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg== dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" -"@chakra-ui/control-box@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.13.tgz#ffe9634d0c3aecb8e1eb7da19e64fb3d2b181d03" - integrity sha512-FEyrU4crxati80KUF/+1Z1CU3eZK6Sa0Yv7Z/ydtz9/tvGblXW9NFanoomXAOvcIFLbaLQPPATm9Gmpr7VG05A== +"@chakra-ui/control-box@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.1.0.tgz#0f4586797b3154c02463bc5c106782e70c88f04f" + integrity sha512-gVrRDyXFdMd8E7rulL0SKeoljkLQiPITFnsyMO8EFHNZ+AHt5wK4LIguYVEq88APqAGZGfHFWXr79RYrNiE3Mg== -"@chakra-ui/counter@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.14.tgz#6e37a863afd2e87d7c94208245e81777640e76e2" - integrity sha512-KxcSRfUbb94dP77xTip2myoE7P2HQQN4V5fRJmNAGbzcyLciJ+aDylUU/UxgNcEjawUp6Q242NbWb1TSbKoqog== +"@chakra-ui/counter@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.1.0.tgz#e413a2f1093a18f847bb7aa240117fde788a59e6" + integrity sha512-s6hZAEcWT5zzjNz2JIWUBzRubo9la/oof1W7EKZVVfPYHERnl5e16FmBC79Yfq8p09LQ+aqFKm/etYoJMMgghw== dependencies: "@chakra-ui/number-utils" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/css-reset@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.1.2.tgz#a4cd1601e8376a74b8dd62a9089cb8aaac1ee800" - integrity sha512-4ySTLd+3iRpp4lX0yI9Yo2uQm2f+qwYGNOZF0cNcfN+4UJCd3IsaWxYRR/Anz+M51NVldZbYzC+TEYC/kpJc4A== +"@chakra-ui/css-reset@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.2.0.tgz#7bd8da563941709cd68e2d1cf1e71279bec038ea" + integrity sha512-nn7hjquIrPwCzwI4d/Y4wzM5A5xAeswREOfT8gT0Yd+U+Qnw3pPT8NPLbNJ3DvuOfJaCV6/N5ld/6RRTgYF/sQ== -"@chakra-ui/descendant@3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.14.tgz#fe8bac3f0e1ffe562e3e73eac393dbf222d57e13" - integrity sha512-+Ahvp9H4HMpfScIv9w1vaecGz7qWAaK1YFHHolz/SIsGLaLGlbdp+5UNabQC7L6TUnzzJDQDxzwif78rTD7ang== +"@chakra-ui/descendant@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.1.0.tgz#f3b80ed13ffc4bf1d615b3ed5541bd0905375cca" + integrity sha512-VxCIAir08g5w27klLyi7PVo8BxhW4tgU/lxQyujkmi4zx7hT9ZdrcQLAted/dAa+aSIZ14S1oV0Q9lGjsAdxUQ== dependencies: - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/dom-utils@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz#d15df89e458ef19756db04c7cfd084eb552454f0" integrity sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ== -"@chakra-ui/editable@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-3.0.0.tgz#b61d4fba5a581b41856ebd85fd5d17c96a224323" - integrity sha512-q/7C/TM3iLaoQKlEiM8AY565i9NoaXtS6N6N4HWIEL5mZJPbMeHKxrCHUZlHxYuQJqFOGc09ZPD9fAFx1GkYwQ== +"@chakra-ui/editable@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-3.1.0.tgz#065783c2e3389c3bb9ab0582cb50d38e1dc00fa1" + integrity sha512-j2JLrUL9wgg4YA6jLlbU88370eCRyor7DZQD9lzpY95tSOXpTljeg3uF9eOmDnCs6fxp3zDWIfkgMm/ExhcGTg== dependencies: - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-focus-on-pointer-down" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/event-utils@2.0.8": @@ -251,23 +246,23 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz#e6439ba200825a2f15d8f1973d267d1c00a6d1b4" integrity sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw== -"@chakra-ui/focus-lock@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.17.tgz#c1896a80896e752b88e8681f9c9d626046de6dd5" - integrity sha512-V+m4Ml9E8QY66DUpHX/imInVvz5XJ5zx59Tl0aNancXgeVY1Rt/ZdxuZdPLCAmPC/MF3GUOgnEA+WU8i+VL6Gw== +"@chakra-ui/focus-lock@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.1.0.tgz#580e5450fe85356987b9a246abaff8333369c667" + integrity sha512-EmGx4PhWGjm4dpjRqM4Aa+rCWBxP+Rq8Uc/nAVnD4YVqkEhBkrPTpui2lnjsuxqNaZ24fIAZ10cF1hlpemte/w== dependencies: "@chakra-ui/dom-utils" "2.1.0" react-focus-lock "^2.9.4" -"@chakra-ui/form-control@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.18.tgz#1923f293afde70b2b07ca731d98fef3660098c56" - integrity sha512-I0a0jG01IAtRPccOXSNugyRdUAe8Dy40ctqedZvznMweOXzbMCF1m+sHPLdWeWC/VI13VoAispdPY0/zHOdjsQ== +"@chakra-ui/form-control@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.1.0.tgz#a48ad454428c03daaaf71671925becd02a2c3f66" + integrity sha512-3QmWG9v6Rx+JOwJP3Wt89+AWZxK0F1NkVAgXP3WVfE9VDXOKFRV/faLT0GEe2V+l7WZHF5PLdEBvKG8Cgw2mkA== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/hooks@2.2.0": @@ -287,6 +282,13 @@ dependencies: "@chakra-ui/shared-utils" "2.0.5" +"@chakra-ui/icon@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.1.0.tgz#48312c071b3a0ed20ce807c8bd24d5f3e9cfdb7f" + integrity sha512-t6v0lGCXRbwUJycN8A/nDTuLktMP+LRjKbYJnd2oL6Pm2vOl99XwEQ5cAEyEa4XoseYNEgXiLR+2TfvgfNFvcw== + dependencies: + "@chakra-ui/shared-utils" "2.0.5" + "@chakra-ui/icons@^2.0.19": version "2.0.19" resolved "https://registry.yarnpkg.com/@chakra-ui/icons/-/icons-2.0.19.tgz#b4581a59c2e2a2b95b01ab251eabb8cf984bb00f" @@ -294,35 +296,35 @@ dependencies: "@chakra-ui/icon" "3.0.16" -"@chakra-ui/image@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.16.tgz#0e3a48c3caa6dc1d340502ea96766d9ef31e27e8" - integrity sha512-iFypk1slgP3OK7VIPOtkB0UuiqVxNalgA59yoRM43xLIeZAEZpKngUVno4A2kFS61yKN0eIY4hXD3Xjm+25EJA== +"@chakra-ui/image@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.1.0.tgz#6c205f1ca148e3bf58345b0b5d4eb3d959eb9f87" + integrity sha512-bskumBYKLiLMySIWDGcz0+D9Th0jPvmX6xnRMs4o92tT3Od/bW26lahmV2a2Op2ItXeCmRMY+XxJH5Gy1i46VA== dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/input@2.0.22": - version "2.0.22" - resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.22.tgz#4c1f166f53555c698bb65950772314f78c147450" - integrity sha512-dCIC0/Q7mjZf17YqgoQsnXn0bus6vgriTRn8VmxOc+WcVl+KBSTBWujGrS5yu85WIFQ0aeqQvziDnDQybPqAbA== +"@chakra-ui/input@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.1.0.tgz#45a2e2ccdd65dc9f6dee11b6e3043438864bf806" + integrity sha512-HItI2vq6vupCuixdzof4sIanGdLlszhDtlR5be5z8Nrda1RkXVqI+9CTJPbNsx2nIKEfwPt01pnT9mozoOSMMw== dependencies: - "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/form-control" "2.1.0" "@chakra-ui/object-utils" "2.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/layout@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.2.0.tgz#a0832ba419743d8d7e442acfce59740626664d2f" - integrity sha512-WvfsWQjqzbCxv7pbpPGVKxj9eQr7MC2i37ag4Wn7ClIG7uPuwHYTUWOnjnu27O3H/zA4cRVZ4Hs3GpSPbojZFQ== +"@chakra-ui/layout@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.3.0.tgz#c53219235db737202006b8b0881b82fedcf3b225" + integrity sha512-tp1/Bn+cHn0Q4HWKY62HtOwzhpH1GUA3i5fvs23HEhOEryTps05hyuQVeJ71fLqSs6f1QEIdm+9It+5WCj64vQ== dependencies: "@chakra-ui/breakpoint-utils" "2.0.8" - "@chakra-ui/icon" "3.0.16" + "@chakra-ui/icon" "3.1.0" "@chakra-ui/object-utils" "2.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/lazy-utils@2.0.5": @@ -330,73 +332,73 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz#363c3fa1d421362790b416ffa595acb835e1ae5b" integrity sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg== -"@chakra-ui/live-region@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.13.tgz#1d00a637b74372d1ee0b215c649ebd4a33893e58" - integrity sha512-Ja+Slk6ZkxSA5oJzU2VuGU7TpZpbMb/4P4OUhIf2D30ctmIeXkxTWw1Bs1nGJAVtAPcGS5sKA+zb89i8g+0cTQ== +"@chakra-ui/live-region@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.1.0.tgz#02b4b1d997075f19a7a9a87187e08c72e82ef0dd" + integrity sha512-ZOxFXwtaLIsXjqnszYYrVuswBhnIHHP+XIgK1vC6DePKtyK590Wg+0J0slDwThUAd4MSSIUa/nNX84x1GMphWw== -"@chakra-ui/media-query@3.2.12": - version "3.2.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.12.tgz#75e31f3c88818e687a4d90a2993286c2c3ca2453" - integrity sha512-8pSLDf3oxxhFrhd40rs7vSeIBfvOmIKHA7DJlGUC/y+9irD24ZwgmCtFnn+y3gI47hTJsopbSX+wb8nr7XPswA== +"@chakra-ui/media-query@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.3.0.tgz#40f9151dedb6a7af9df3be0474b59a799c92c619" + integrity sha512-IsTGgFLoICVoPRp9ykOgqmdMotJG0CnPsKvGQeSFOB/dZfIujdVb14TYxDU4+MURXry1MhJ7LzZhv+Ml7cr8/g== dependencies: "@chakra-ui/breakpoint-utils" "2.0.8" - "@chakra-ui/react-env" "3.0.0" + "@chakra-ui/react-env" "3.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/menu@2.1.15": - version "2.1.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.1.15.tgz#116520a2746d848e2a44fdbf03d66353cd1e1b39" - integrity sha512-+1fh7KBKZyhy8wi7Q6nQAzrvjM6xggyhGMnSna0rt6FJVA2jlfkjb5FozyIVPnkfJKjkKd8THVhrs9E7pHNV/w== +"@chakra-ui/menu@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.2.0.tgz#ba74b538a3fa3dc46313368ed2878f92b479e6d7" + integrity sha512-l7HQjriW4JGeCyxDdguAzekwwB+kHGDLxACi0DJNp37sil51SRaN1S1OrneISbOHVpHuQB+KVNgU0rqhoglVew== dependencies: - "@chakra-ui/clickable" "2.0.14" - "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/clickable" "2.1.0" + "@chakra-ui/descendant" "3.1.0" "@chakra-ui/lazy-utils" "2.0.5" - "@chakra-ui/popper" "3.0.14" + "@chakra-ui/popper" "3.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-animation-state" "2.0.9" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-disclosure" "2.0.8" - "@chakra-ui/react-use-focus-effect" "2.0.11" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-outside-click" "2.1.0" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-animation-state" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-disclosure" "2.1.0" + "@chakra-ui/react-use-focus-effect" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-outside-click" "2.2.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/transition" "2.0.16" + "@chakra-ui/transition" "2.1.0" -"@chakra-ui/modal@2.2.12": - version "2.2.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.2.12.tgz#8c6dc66a6db4abdaf6f5e0dae70183ee41ce361a" - integrity sha512-F1nNmYGvyqlmxidbwaBM3y57NhZ/Qeyc8BE9tb1FL1v9nxQhkfrPvMQ9miK0O1syPN6aZ5MMj+uD3AsRFE+/tA== +"@chakra-ui/modal@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.3.0.tgz#f7c35bb457c3c4be391c9366f892a5a779af810a" + integrity sha512-S1sITrIeLSf21LJ0Vz8xZhj5fWEud5z5Dl2dmvOEv1ezypgOrCCBdOEnnqCkoEKZDbKvzZWZXWR5791ikLP6+g== dependencies: - "@chakra-ui/close-button" "2.0.17" - "@chakra-ui/focus-lock" "2.0.17" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/close-button" "2.1.0" + "@chakra-ui/focus-lock" "2.1.0" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/transition" "2.0.16" + "@chakra-ui/transition" "2.1.0" aria-hidden "^1.2.2" react-remove-scroll "^2.5.5" -"@chakra-ui/number-input@2.0.19": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.19.tgz#82d4522036904c04d07e7050822fc522f9b32233" - integrity sha512-HDaITvtMEqOauOrCPsARDxKD9PSHmhWywpcyCSOX0lMe4xx2aaGhU0QQFhsJsykj8Er6pytMv6t0KZksdDv3YA== +"@chakra-ui/number-input@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.1.0.tgz#7812a6602edbed26829a8f7defe8c4f9f175421a" + integrity sha512-/gEAzQHhrMA+1rzyCMaN8OkKtUPuER6iA+nloYEYBoT7dH/EoNlRtBkiIQhDp+E4VpgZJ0SK3OVrm9/eBbtHHg== dependencies: - "@chakra-ui/counter" "2.0.14" - "@chakra-ui/form-control" "2.0.18" - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/counter" "2.1.0" + "@chakra-ui/form-control" "2.1.0" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-event-listener" "2.0.7" - "@chakra-ui/react-use-interval" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" + "@chakra-ui/react-use-interval" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/number-utils@2.0.7": @@ -409,216 +411,216 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz#a4ecf9cea92f1de09f5531f53ffdc41e0b19b6c3" integrity sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ== -"@chakra-ui/pin-input@2.0.20": - version "2.0.20" - resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.20.tgz#5bf115bf4282b69fc6532a9c542cbf41f815d200" - integrity sha512-IHVmerrtHN8F+jRB3W1HnMir1S1TUCWhI7qDInxqPtoRffHt6mzZgLZ0izx8p1fD4HkW4c1d4/ZLEz9uH9bBRg== +"@chakra-ui/pin-input@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.1.0.tgz#61e6bbf909ec510634307b2861c4f1891a9f8d81" + integrity sha512-x4vBqLStDxJFMt+jdAHHS8jbh294O53CPQJoL4g228P513rHylV/uPscYUHrVJXRxsHfRztQO9k45jjTYaPRMw== dependencies: - "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/descendant" "3.1.0" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/popover@2.1.12": - version "2.1.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.1.12.tgz#093bb60f7c044f829e2acc3a93f0c1077ba58cfb" - integrity sha512-Corh8trA1f3ydcMQqomgSvYNNhAlpxiBpMY2sglwYazOJcueHA8CI05cJVD0T/wwoTob7BShabhCGFZThn61Ng== +"@chakra-ui/popover@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.2.0.tgz#470c4814447010a1b7db6839fcc3e8983cbabb60" + integrity sha512-cTqXdgkU0vgK82AR1nWcC2MJYhEL/y6uTeprvO2+j4o2D0yPrzVMuIZZRl0abrQwiravQyVGEMgA5y0ZLYwbiQ== dependencies: - "@chakra-ui/close-button" "2.0.17" + "@chakra-ui/close-button" "2.1.0" "@chakra-ui/lazy-utils" "2.0.5" - "@chakra-ui/popper" "3.0.14" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/popper" "3.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-animation-state" "2.0.9" - "@chakra-ui/react-use-disclosure" "2.0.8" - "@chakra-ui/react-use-focus-effect" "2.0.11" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.6" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-animation-state" "2.1.0" + "@chakra-ui/react-use-disclosure" "2.1.0" + "@chakra-ui/react-use-focus-effect" "2.1.0" + "@chakra-ui/react-use-focus-on-pointer-down" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/popper@3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.14.tgz#598feec8825df99270585319f7becbb6cf33558a" - integrity sha512-RDMmmSfjsmHJbVn2agDyoJpTbQK33fxx//njwJdeyM0zTG/3/4xjI/Cxru3acJ2Y+1jFGmPqhO81stFjnbtfIw== +"@chakra-ui/popper@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.1.0.tgz#92a9180c6894763af3b22a6003f9a9d958fe2659" + integrity sha512-ciDdpdYbeFG7og6/6J8lkTFxsSvwTdMLFkpVylAF6VNC22jssiWfquj2eyD4rJnzkRFPvIWJq8hvbfhsm+AjSg== dependencies: "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@popperjs/core" "^2.9.3" -"@chakra-ui/portal@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.16.tgz#e5ce3f9d9e559f17a95276e0c006d0e9b7703442" - integrity sha512-bVID0qbQ0l4xq38LdqAN4EKD4/uFkDnXzFwOlviC9sl0dNhzICDb1ltuH/Adl1d2HTMqyN60O3GO58eHy7plnQ== +"@chakra-ui/portal@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.1.0.tgz#9e7f57424d7041738b6563cac80134561080bd27" + integrity sha512-9q9KWf6SArEcIq1gGofNcFPSWEyl+MfJjEUg/un1SMlQjaROOh3zYr+6JAwvcORiX7tyHosnmWC3d3wI2aPSQg== dependencies: - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" -"@chakra-ui/progress@2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.1.6.tgz#398db20440979c37adb0a34821f805ae3471873b" - integrity sha512-hHh5Ysv4z6bK+j2GJbi/FT9CVyto2PtNUNwBmr3oNMVsoOUMoRjczfXvvYqp0EHr9PCpxqrq7sRwgQXUzhbDSw== +"@chakra-ui/progress@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.2.0.tgz#67444ea9779631d7c8395b2c9c78e5634f994999" + integrity sha512-qUXuKbuhN60EzDD9mHR7B67D7p/ZqNS2Aze4Pbl1qGGZfulPW0PY8Rof32qDtttDQBkzQIzFGE8d9QpAemToIQ== dependencies: - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" -"@chakra-ui/provider@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.3.0.tgz#18b3bdc3087e90569049832b2f0f4f8afd5cedf6" - integrity sha512-vKgmjoLVS3NnHW8RSYwmhhda2ZTi3fQc1egkYSVwngGky4CsN15I+XDhxJitVd66H41cjah/UNJyoeq7ACseLA== +"@chakra-ui/provider@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.4.0.tgz#1649e607b7dddd8dd160e624946769a29f67d9a3" + integrity sha512-KJ/TNczpY+EStQXa2Y5PZ+senlBHrY7P+RpBgJLBZLGkQUCS3APw5KvCwgpA0COb2M4AZXCjw+rm+Ko7ontlgA== dependencies: - "@chakra-ui/css-reset" "2.1.2" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/react-env" "3.0.0" - "@chakra-ui/system" "2.5.8" + "@chakra-ui/css-reset" "2.2.0" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/react-env" "3.1.0" + "@chakra-ui/system" "2.6.0" "@chakra-ui/utils" "2.0.15" -"@chakra-ui/radio@2.0.22": - version "2.0.22" - resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.22.tgz#fad0ce7c9ba4051991ed517cac4cfe526d6d47d9" - integrity sha512-GsQ5WAnLwivWl6gPk8P1x+tCcpVakCt5R5T0HumF7DGPXKdJbjS+RaFySrbETmyTJsKY4QrfXn+g8CWVrMjPjw== +"@chakra-ui/radio@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.1.0.tgz#68b2cb4193570369568052cb1254163224a1479c" + integrity sha512-WiRlSCqKWgy4m9106w4g77kcLYqBxqGhFRO1pTTJp99rxpM6jNadOeK+moEjqj64N9mSz3njEecMJftKKcOYdg== dependencies: - "@chakra-ui/form-control" "2.0.18" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/form-control" "2.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" - "@zag-js/focus-visible" "0.2.2" + "@zag-js/focus-visible" "0.10.5" "@chakra-ui/react-children-utils@2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz#6c480c6a60678fcb75cb7d57107c7a79e5179b92" integrity sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA== -"@chakra-ui/react-context@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.0.8.tgz#5e0ed33ac3995875a21dea0e12b0ee5fc4c2e3cc" - integrity sha512-tRTKdn6lCTXM6WPjSokAAKCw2ioih7Eg8cNgaYRSwKBck8nkz9YqxgIIEj3dJD7MGtpl24S/SNI98iRWkRwR/A== +"@chakra-ui/react-context@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.1.0.tgz#4858be1d5ff1c8ac0a0ec088d93a3b7f1cbbff99" + integrity sha512-iahyStvzQ4AOwKwdPReLGfDesGG+vWJfEsn0X/NoGph/SkN+HXtv2sCfYFFR9k7bb+Kvc6YfpLlSuLvKMHi2+w== -"@chakra-ui/react-env@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-3.0.0.tgz#2c3c9dc0e529b9b474a386a2b24988317b2a0811" - integrity sha512-tfMRO2v508HQWAqSADFrwZgR9oU10qC97oV6zGbjHh9ALP0/IcFR+Bi71KRTveDTm85fMeAzZYGj57P3Dsipkw== +"@chakra-ui/react-env@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-3.1.0.tgz#7d3c1c05a501bb369524d9f3d38c9325eb16ab50" + integrity sha512-Vr96GV2LNBth3+IKzr/rq1IcnkXv+MLmwjQH6C8BRtn3sNskgDFD5vLkVXcEhagzZMCh8FR3V/bzZPojBOyNhw== dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" "@chakra-ui/react-types@2.0.7": version "2.0.7" resolved "https://registry.yarnpkg.com/@chakra-ui/react-types/-/react-types-2.0.7.tgz#799c166a44882b23059c8f510eac9bd5d0869ac4" integrity sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ== -"@chakra-ui/react-use-animation-state@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.9.tgz#8e6377e7583cc80c649cdc443c90ab5b48a03e78" - integrity sha512-WFoD5OG03PBmzJCoRwM8rVfU442AvKBPPgA0yGGlKioH29OGuX7W78Ml+cYdXxonTiB03YSRZzUwaUnP4wAy1Q== - dependencies: - "@chakra-ui/dom-utils" "2.1.0" - "@chakra-ui/react-use-event-listener" "2.0.7" - -"@chakra-ui/react-use-callback-ref@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.7.tgz#9b844a81037d0ecaaa8031979fa050165635e211" - integrity sha512-YjT76nTpfHAK5NxplAlZsQwNju5KmQExnqsWNPFeOR6vvbC34+iPSTr+r91i1Hdy7gBSbevsOsd5Wm6RN3GuMw== - -"@chakra-ui/react-use-controllable-state@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.8.tgz#6b71187e03be632c244dde9f16ed685428087ec9" - integrity sha512-F7rdCbLEmRjwwODqWZ3y+mKgSSHPcLQxeUygwk1BkZPXbKkJJKymOIjIynil2cbH7ku3hcSIWRvuhpCcfQWJ7Q== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" - -"@chakra-ui/react-use-disclosure@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.8.tgz#e0e0445afc6d6d96bb262b99751e675034c31497" - integrity sha512-2ir/mHe1YND40e+FyLHnDsnDsBQPwzKDLzfe9GZri7y31oU83JSbHdlAXAhp3bpjohslwavtRCp+S/zRxfO9aQ== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" - -"@chakra-ui/react-use-event-listener@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.7.tgz#ed08164164e79183d876eeb71e12c6bfaca3ad17" - integrity sha512-4wvpx4yudIO3B31pOrXuTHDErawmwiXnvAN7gLEOVREi16+YGNcFnRJ5X5nRrmB7j2MDUtsEDpRBFfw5Z9xQ5g== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" - -"@chakra-ui/react-use-focus-effect@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.11.tgz#9a5c76981677fc356308526c7d2b3dc48101ea06" - integrity sha512-/zadgjaCWD50TfuYsO1vDS2zSBs2p/l8P2DPEIA8FuaowbBubKrk9shKQDWmbfDU7KArGxPxrvo+VXvskPPjHw== - dependencies: - "@chakra-ui/dom-utils" "2.1.0" - "@chakra-ui/react-use-event-listener" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" - -"@chakra-ui/react-use-focus-on-pointer-down@2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.6.tgz#13330eb518c17e591c908cb8f4a30d43a978e3f2" - integrity sha512-OigXiLRVySn3tyVqJ/rn57WGuukW8TQe8fJYiLwXbcNyAMuYYounvRxvCy2b53sQ7QIZamza0N0jhirbH5FNoQ== - dependencies: - "@chakra-ui/react-use-event-listener" "2.0.7" - -"@chakra-ui/react-use-interval@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.0.5.tgz#c1a0043bf188b19b790a27668f4e860391335a60" - integrity sha512-1nbdwMi2K87V6p5f5AseOKif2CkldLaJlq1TOqaPRwb7v3aU9rltBtYdf+fIyuHSToNJUV6wd9budCFdLCl3Fg== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" - -"@chakra-ui/react-use-latest-ref@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.5.tgz#b61dc4dadda340f7b14df0ec1d50ab2e507b3b3e" - integrity sha512-3mIuFzMyIo3Ok/D8uhV9voVg7KkrYVO/pwVvNPJOHsDQqCA6DpYE4WDsrIx+fVcwad3Ta7SupexR5PoI+kq6QQ== - -"@chakra-ui/react-use-merge-refs@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.7.tgz#1a1fe800fb5501ec3da4088fbac78c03bbad13a7" - integrity sha512-zds4Uhsc+AMzdH8JDDkLVet9baUBgtOjPbhC5r3A0ZXjZvGhCztFAVE3aExYiVoMPoHLKbLcqvCWE6ioFKz1lw== - -"@chakra-ui/react-use-outside-click@2.1.0": +"@chakra-ui/react-use-animation-state@2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.1.0.tgz#f7e27653c470e516c55d79df67ed8b0ba2c4ec8d" - integrity sha512-JanCo4QtWvMl9ZZUpKJKV62RlMWDFdPCE0Q64a7eWTOQgWWcpyBW7TOYRunQTqrK30FqkYFJCOlAWOtn+6Rw7A== + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.1.0.tgz#eab661fbafd96804fe867b0df0c27e78feefe6e2" + integrity sha512-CFZkQU3gmDBwhqy0vC1ryf90BVHxVN8cTLpSyCpdmExUEtSEInSCGMydj2fvn7QXsz/za8JNdO2xxgJwxpLMtg== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/dom-utils" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" -"@chakra-ui/react-use-pan-event@2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.9.tgz#0ff33a285e75a692d1ed52dbb9f3046a593b8004" - integrity sha512-xu35QXkiyrgsHUOnctl+SwNcwf9Rl62uYE5y8soKOZdBm8E+FvZIt2hxUzK1EoekbJCMzEZ0Yv1ZQCssVkSLaQ== +"@chakra-ui/react-use-callback-ref@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.1.0.tgz#a508085f4d9e7d84d4ceffdf5f41745c9ac451d7" + integrity sha512-efnJrBtGDa4YaxDzDE90EnKD3Vkh5a1t3w7PhnRQmsphLy3g2UieasoKTlT2Hn118TwDjIv5ZjHJW6HbzXA9wQ== + +"@chakra-ui/react-use-controllable-state@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.1.0.tgz#8fb6fa2f45d0c04173582ae8297e604ffdb9c7d9" + integrity sha512-QR/8fKNokxZUs4PfxjXuwl0fj/d71WPrmLJvEpCTkHjnzu7LnYvzoe2wB867IdooQJL0G1zBxl0Dq+6W1P3jpg== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.1.0" + +"@chakra-ui/react-use-disclosure@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.1.0.tgz#90093eaf45db1bea7a6851dd0ce5cdb3eb66f90a" + integrity sha512-Ax4pmxA9LBGMyEZJhhUZobg9C0t3qFE4jVF1tGBsrLDcdBeLR9fwOogIPY9Hf0/wqSlAryAimICbr5hkpa5GSw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.1.0" + +"@chakra-ui/react-use-event-listener@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.1.0.tgz#afea2645bd9b38f754fc2b8eb858f9bb22385ded" + integrity sha512-U5greryDLS8ISP69DKDsYcsXRtAdnTQT+jjIlRYZ49K/XhUR/AqVZCK5BkR1spTDmO9H8SPhgeNKI70ODuDU/Q== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.1.0" + +"@chakra-ui/react-use-focus-effect@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.1.0.tgz#963fb790370dfadd51d12666ff2da60706f53a2a" + integrity sha512-xzVboNy7J64xveLcxTIJ3jv+lUJKDwRM7Szwn9tNzUIPD94O3qwjV7DDCUzN2490nSYDF4OBMt/wuDBtaR3kUQ== + dependencies: + "@chakra-ui/dom-utils" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" + +"@chakra-ui/react-use-focus-on-pointer-down@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.1.0.tgz#2fbcf6bc7d06d97606747e231a908d5c387ca0cc" + integrity sha512-2jzrUZ+aiCG/cfanrolsnSMDykCAbv9EK/4iUyZno6BYb3vziucmvgKuoXbMPAzWNtwUwtuMhkby8rc61Ue+Lg== + dependencies: + "@chakra-ui/react-use-event-listener" "2.1.0" + +"@chakra-ui/react-use-interval@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.1.0.tgz#2602c097b3ab74b6644812e4f5efaad621218d98" + integrity sha512-8iWj+I/+A0J08pgEXP1J1flcvhLBHkk0ln7ZvGIyXiEyM6XagOTJpwNhiu+Bmk59t3HoV/VyvyJTa+44sEApuw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.1.0" + +"@chakra-ui/react-use-latest-ref@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.1.0.tgz#d1e926130102566ece1d39f8a48ed125e0c8441a" + integrity sha512-m0kxuIYqoYB0va9Z2aW4xP/5b7BzlDeWwyXCH6QpT2PpW3/281L3hLCm1G0eOUcdVlayqrQqOeD6Mglq+5/xoQ== + +"@chakra-ui/react-use-merge-refs@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.1.0.tgz#c0c233527abdbea9a1348269c192012205762314" + integrity sha512-lERa6AWF1cjEtWSGjxWTaSMvneccnAVH4V4ozh8SYiN9fSPZLlSG3kNxfNzdFvMEhM7dnP60vynF7WjGdTgQbQ== + +"@chakra-ui/react-use-outside-click@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.2.0.tgz#5570b772a255f6f02b69e967127397c1b5fa3d3c" + integrity sha512-PNX+s/JEaMneijbgAM4iFL+f3m1ga9+6QK0E5Yh4s8KZJQ/bLwZzdhMz8J/+mL+XEXQ5J0N8ivZN28B82N1kNw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.1.0" + +"@chakra-ui/react-use-pan-event@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.1.0.tgz#51c21bc3c0e9e73d1faef5ea4f7e3c3d071a2758" + integrity sha512-xmL2qOHiXqfcj0q7ZK5s9UjTh4Gz0/gL9jcWPA6GVf+A0Od5imEDa/Vz+533yQKWiNSm1QGrIj0eJAokc7O4fg== dependencies: "@chakra-ui/event-utils" "2.0.8" - "@chakra-ui/react-use-latest-ref" "2.0.5" + "@chakra-ui/react-use-latest-ref" "2.1.0" framesync "6.1.2" -"@chakra-ui/react-use-previous@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.0.5.tgz#65836cc81e3a1bf4252cd08a71094f1be827b56c" - integrity sha512-BIZgjycPE4Xr+MkhKe0h67uHXzQQkBX/u5rYPd65iMGdX1bCkbE0oorZNfOHLKdTmnEb4oVsNvfN6Rfr+Mnbxw== +"@chakra-ui/react-use-previous@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.1.0.tgz#f6046e6f7398b1e8d7e66ff7ebb8d61c92a2d3d0" + integrity sha512-pjxGwue1hX8AFcmjZ2XfrQtIJgqbTF3Qs1Dy3d1krC77dEsiCUbQ9GzOBfDc8pfd60DrB5N2tg5JyHbypqh0Sg== -"@chakra-ui/react-use-safe-layout-effect@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.5.tgz#6cf388c37fd2a42b5295a292e149b32f860a00a7" - integrity sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ== +"@chakra-ui/react-use-safe-layout-effect@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.1.0.tgz#3a95f0ba6fd5d2d0aa14919160f2c825f13e686f" + integrity sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw== -"@chakra-ui/react-use-size@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.0.10.tgz#6131950852490c06e5fb3760bf64097c8057391f" - integrity sha512-fdIkH14GDnKQrtQfxX8N3gxbXRPXEl67Y3zeD9z4bKKcQUAYIMqs0MsPZY+FMpGQw8QqafM44nXfL038aIrC5w== +"@chakra-ui/react-use-size@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.1.0.tgz#fcf3070eaade8b4a84af8ce5341c4d5ca0a42bec" + integrity sha512-tbLqrQhbnqOjzTaMlYytp7wY8BW1JpL78iG7Ru1DlV4EWGiAmXFGvtnEt9HftU0NJ0aJyjgymkxfVGI55/1Z4A== dependencies: - "@zag-js/element-size" "0.3.2" + "@zag-js/element-size" "0.10.5" -"@chakra-ui/react-use-timeout@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.5.tgz#13c4e48e48d4b84ce1e062f0f1c9ec401ece78c9" - integrity sha512-QqmB+jVphh3h/CS60PieorpY7UqSPkrQCB7f7F+i9vwwIjtP8fxVHMmkb64K7VlzQiMPzv12nlID5dqkzlv0mw== +"@chakra-ui/react-use-timeout@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.1.0.tgz#24415f54267d7241a3c1d36a5cae4d472834cef7" + integrity sha512-cFN0sobKMM9hXUhyCofx3/Mjlzah6ADaEl/AXl5Y+GawB5rgedgAcu2ErAgarEkwvsKdP6c68CKjQ9dmTQlJxQ== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" -"@chakra-ui/react-use-update-effect@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.7.tgz#f94b7975ebb150c03d410e754b54f0e9dd263134" - integrity sha512-vBM2bmmM83ZdDtasWv3PXPznpTUd+FvqBC8J8rxoRmvdMEfrxTiQRBJhiGHLpS9BPLLPQlosN6KdFU97csB6zg== +"@chakra-ui/react-use-update-effect@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.1.0.tgz#5c57cd1f50c2a6a8119e0f57f69510723d69884b" + integrity sha512-ND4Q23tETaR2Qd3zwCKYOOS1dfssojPLJMLvUtUbW5M9uW1ejYWgGUobeAiOVfSplownG8QYMmHTP86p/v0lbA== "@chakra-ui/react-utils@2.0.12": version "2.0.12" @@ -627,71 +629,71 @@ dependencies: "@chakra-ui/utils" "2.0.15" -"@chakra-ui/react@^2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.7.1.tgz#1419a4856b7dd74a558ced97f148a97d4953109e" - integrity sha512-uIYIAg+gnUoRbgdCfSEVvQnrEz0oWWXATGGSQpxmuJovNVyZKnX/Xug7NkWQfBUJPYRSG+VB69ZmsAFpyLSMtA== +"@chakra-ui/react@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.8.0.tgz#cc76a2448f9bc85f1645a1afb90d5756a5313ac3" + integrity sha512-tV82DaqE4fMbLIWq58BYh4Ol3gAlNEn+qYOzx8bPrZudboEDnboq8aVfSBwWOY++MLWz2Nn7CkT69YRm91e5sg== dependencies: - "@chakra-ui/accordion" "2.2.0" - "@chakra-ui/alert" "2.1.0" - "@chakra-ui/avatar" "2.2.11" - "@chakra-ui/breadcrumb" "2.1.5" - "@chakra-ui/button" "2.0.18" - "@chakra-ui/card" "2.1.6" - "@chakra-ui/checkbox" "2.2.15" - "@chakra-ui/close-button" "2.0.17" - "@chakra-ui/control-box" "2.0.13" - "@chakra-ui/counter" "2.0.14" - "@chakra-ui/css-reset" "2.1.2" - "@chakra-ui/editable" "3.0.0" - "@chakra-ui/focus-lock" "2.0.17" - "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/accordion" "2.3.0" + "@chakra-ui/alert" "2.2.0" + "@chakra-ui/avatar" "2.3.0" + "@chakra-ui/breadcrumb" "2.2.0" + "@chakra-ui/button" "2.1.0" + "@chakra-ui/card" "2.2.0" + "@chakra-ui/checkbox" "2.3.0" + "@chakra-ui/close-button" "2.1.0" + "@chakra-ui/control-box" "2.1.0" + "@chakra-ui/counter" "2.1.0" + "@chakra-ui/css-reset" "2.2.0" + "@chakra-ui/editable" "3.1.0" + "@chakra-ui/focus-lock" "2.1.0" + "@chakra-ui/form-control" "2.1.0" "@chakra-ui/hooks" "2.2.0" - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/image" "2.0.16" - "@chakra-ui/input" "2.0.22" - "@chakra-ui/layout" "2.2.0" - "@chakra-ui/live-region" "2.0.13" - "@chakra-ui/media-query" "3.2.12" - "@chakra-ui/menu" "2.1.15" - "@chakra-ui/modal" "2.2.12" - "@chakra-ui/number-input" "2.0.19" - "@chakra-ui/pin-input" "2.0.20" - "@chakra-ui/popover" "2.1.12" - "@chakra-ui/popper" "3.0.14" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/progress" "2.1.6" - "@chakra-ui/provider" "2.3.0" - "@chakra-ui/radio" "2.0.22" - "@chakra-ui/react-env" "3.0.0" - "@chakra-ui/select" "2.0.19" - "@chakra-ui/skeleton" "2.0.24" - "@chakra-ui/skip-nav" "2.0.15" - "@chakra-ui/slider" "2.0.25" - "@chakra-ui/spinner" "2.0.13" - "@chakra-ui/stat" "2.0.18" - "@chakra-ui/stepper" "2.2.0" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/image" "2.1.0" + "@chakra-ui/input" "2.1.0" + "@chakra-ui/layout" "2.3.0" + "@chakra-ui/live-region" "2.1.0" + "@chakra-ui/media-query" "3.3.0" + "@chakra-ui/menu" "2.2.0" + "@chakra-ui/modal" "2.3.0" + "@chakra-ui/number-input" "2.1.0" + "@chakra-ui/pin-input" "2.1.0" + "@chakra-ui/popover" "2.2.0" + "@chakra-ui/popper" "3.1.0" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/progress" "2.2.0" + "@chakra-ui/provider" "2.4.0" + "@chakra-ui/radio" "2.1.0" + "@chakra-ui/react-env" "3.1.0" + "@chakra-ui/select" "2.1.0" + "@chakra-ui/skeleton" "2.1.0" + "@chakra-ui/skip-nav" "2.1.0" + "@chakra-ui/slider" "2.1.0" + "@chakra-ui/spinner" "2.1.0" + "@chakra-ui/stat" "2.1.0" + "@chakra-ui/stepper" "2.3.0" "@chakra-ui/styled-system" "2.9.1" - "@chakra-ui/switch" "2.0.27" - "@chakra-ui/system" "2.5.8" - "@chakra-ui/table" "2.0.17" - "@chakra-ui/tabs" "2.1.9" - "@chakra-ui/tag" "3.0.0" - "@chakra-ui/textarea" "2.0.19" - "@chakra-ui/theme" "3.1.2" - "@chakra-ui/theme-utils" "2.0.18" - "@chakra-ui/toast" "6.1.4" - "@chakra-ui/tooltip" "2.2.9" - "@chakra-ui/transition" "2.0.16" + "@chakra-ui/switch" "2.1.0" + "@chakra-ui/system" "2.6.0" + "@chakra-ui/table" "2.1.0" + "@chakra-ui/tabs" "2.2.0" + "@chakra-ui/tag" "3.1.0" + "@chakra-ui/textarea" "2.1.0" + "@chakra-ui/theme" "3.2.0" + "@chakra-ui/theme-utils" "2.0.19" + "@chakra-ui/toast" "7.0.0" + "@chakra-ui/tooltip" "2.3.0" + "@chakra-ui/transition" "2.1.0" "@chakra-ui/utils" "2.0.15" - "@chakra-ui/visually-hidden" "2.0.15" + "@chakra-ui/visually-hidden" "2.1.0" -"@chakra-ui/select@2.0.19": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.19.tgz#957e95a17a890d8c0a851e2f00a8d8dd17932d66" - integrity sha512-eAlFh+JhwtJ17OrB6fO6gEAGOMH18ERNrXLqWbYLrs674Le7xuREgtuAYDoxUzvYXYYTTdOJtVbcHGriI3o6rA== +"@chakra-ui/select@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.1.0.tgz#4c9a6e881281e77ed35ba7a2e343f235b7e0b2fd" + integrity sha512-6GEjCJNOm1pS9E7XRvodoVOuSFl82Jio3MGWgmcQrLznjJAhIZVMq85vCQqzGpjjfbHys/UctfdJY75Ctas/Jg== dependencies: - "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/form-control" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/shared-utils@2.0.5": @@ -699,59 +701,59 @@ resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz#cb2b49705e113853647f1822142619570feba081" integrity sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q== -"@chakra-ui/skeleton@2.0.24": - version "2.0.24" - resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.24.tgz#dc9dcca6fc43005544fabfd38a444943b0a29cad" - integrity sha512-1jXtVKcl/jpbrJlc/TyMsFyI651GTXY5ma30kWyTXoby2E+cxbV6OR8GB/NMZdGxbQBax8/VdtYVjI0n+OBqWA== +"@chakra-ui/skeleton@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.1.0.tgz#e3b25dd3afa330029d6d63be0f7cb8d44ad25531" + integrity sha512-JNRuMPpdZGd6zFVKjVQ0iusu3tXAdI29n4ZENYwAJEMf/fN0l12sVeirOxkJ7oEL0yOx2AgEYFSKdbcAgfUsAQ== dependencies: - "@chakra-ui/media-query" "3.2.12" - "@chakra-ui/react-use-previous" "2.0.5" + "@chakra-ui/media-query" "3.3.0" + "@chakra-ui/react-use-previous" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/skip-nav@2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/skip-nav/-/skip-nav-2.0.15.tgz#cb3b2ffb9c1bc492e66d6b0a189253aa53014257" - integrity sha512-5UtmlnV4BmIgEk6lQ0h81JEYhPX04wJEk5ZMoilQ2zEQYL6TkVVHkhRXyc1Zfq76hmHuZPXZV/yJeTecj6jIrA== +"@chakra-ui/skip-nav@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/skip-nav/-/skip-nav-2.1.0.tgz#cac27eecc6eded1e83c8f0cf7445d727739cb325" + integrity sha512-Hk+FG+vadBSH0/7hwp9LJnLjkO0RPGnx7gBJWI4/SpoJf3e4tZlWYtwGj0toYY4aGKl93jVghuwGbDBEMoHDug== -"@chakra-ui/slider@2.0.25": - version "2.0.25" - resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.25.tgz#2d69af68f4afcc648d14603d7c3163660d35e9eb" - integrity sha512-FnWSi0AIXP+9sHMCPboOKGqm902k8dJtsJ7tu3D0AcKkE62WtYLZ2sTqvwJxCfSl4KqVI1i571SrF9WadnnJ8w== +"@chakra-ui/slider@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.1.0.tgz#1caeed18761ba2a390777418cc9389ba25e39bce" + integrity sha512-lUOBcLMCnFZiA/s2NONXhELJh6sY5WtbRykPtclGfynqqOo47lwWJx+VP7xaeuhDOPcWSSecWc9Y1BfPOCz9cQ== dependencies: "@chakra-ui/number-utils" "2.0.7" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-callback-ref" "2.0.7" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-latest-ref" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-pan-event" "2.0.9" - "@chakra-ui/react-use-size" "2.0.10" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/react-use-callback-ref" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-latest-ref" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-pan-event" "2.1.0" + "@chakra-ui/react-use-size" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" -"@chakra-ui/spinner@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.13.tgz#64fe919c18305c653ced046e25d5883ee4c1e7d7" - integrity sha512-T1/aSkVpUIuiYyrjfn1+LsQEG7Onbi1UE9ccS/evgf61Dzy4GgTXQUnDuWFSgpV58owqirqOu6jn/9eCwDlzlg== +"@chakra-ui/spinner@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.1.0.tgz#aa24a3d692c6ac90714e0f0f82c76c12c78c8e60" + integrity sha512-hczbnoXt+MMv/d3gE+hjQhmkzLiKuoTo42YhUG7Bs9OSv2lg1fZHW1fGNRFP3wTi6OIbD044U1P9HK+AOgFH3g== dependencies: "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/stat@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.18.tgz#9e5d21d162b7cf2cf92065c19291ead2d4660772" - integrity sha512-wKyfBqhVlIs9bkSerUc6F9KJMw0yTIEKArW7dejWwzToCLPr47u+CtYO6jlJHV6lRvkhi4K4Qc6pyvtJxZ3VpA== +"@chakra-ui/stat@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.1.0.tgz#6643b507358e9cacf008387b3f12b75899497369" + integrity sha512-sqx0/AdFFZ80dsiM5owmhtQyYl+zON1r+IY0m70I/ABRVy+I3br06xdUhoaxh3tcP7c0O/BQgb+VCfXa9Y34CA== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/stepper@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/stepper/-/stepper-2.2.0.tgz#c42562fd1b210595303f14970d9df6b32e1ad5a1" - integrity sha512-8ZLxV39oghSVtOUGK8dX8Z6sWVSQiKVmsK4c3OQDa8y2TvxP0VtFD0Z5U1xJlOjQMryZRWhGj9JBc3iQLukuGg== +"@chakra-ui/stepper@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/stepper/-/stepper-2.3.0.tgz#5714df429936839145a62b5c197cff26b872b660" + integrity sha512-q80QX/NLrjJQIlBP1N+Q8GVJb7/HiOpMoK1PlP4denB/KxkU2K8GEjss8U2vklR1XsWJy1fwfj03+66Q78Uk/Q== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/styled-system@2.9.1", "@chakra-ui/styled-system@^2.9.1": @@ -763,127 +765,127 @@ csstype "^3.0.11" lodash.mergewith "4.6.2" -"@chakra-ui/switch@2.0.27": - version "2.0.27" - resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.27.tgz#e76e5afdfc837c83fce34480de4431ff8c19fcb8" - integrity sha512-z76y2fxwMlvRBrC5W8xsZvo3gP+zAEbT3Nqy5P8uh/IPd5OvDsGeac90t5cgnQTyxMOpznUNNK+1eUZqtLxWnQ== +"@chakra-ui/switch@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.1.0.tgz#750474ef7f0a9854062e692cbbe9f3ed0cfbc4d8" + integrity sha512-uWHOaIDQdGh+mszxeppj5aYVepbkSK445KZlJJkfr9Bnr6sythTwM63HSufnVDiTEE4uRqegv9jEjZK2JKA+9A== dependencies: - "@chakra-ui/checkbox" "2.2.15" + "@chakra-ui/checkbox" "2.3.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/system@2.5.8": - version "2.5.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.5.8.tgz#9026090b792320683bf1cc3a8f04af7b10c947ce" - integrity sha512-Vy8UUaCxikOzOGE54IP8tKouvU38rEYU1HCSquU9+oe7Jd70HaiLa4vmUKvHyMUmxkOzDHIkgZLbVQCubSnN5w== +"@chakra-ui/system@2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.6.0.tgz#29f65bb0887ee0816bbb7b4b098ca5aa4918c409" + integrity sha512-MgAFRz9V1pW0dplwWsB99hx49LCC+LsrkMala7KXcP0OvWdrkjw+iu+voBksO3626+glzgIwlZW113Eja+7JEQ== dependencies: - "@chakra-ui/color-mode" "2.1.12" + "@chakra-ui/color-mode" "2.2.0" "@chakra-ui/object-utils" "2.1.0" "@chakra-ui/react-utils" "2.0.12" "@chakra-ui/styled-system" "2.9.1" - "@chakra-ui/theme-utils" "2.0.18" + "@chakra-ui/theme-utils" "2.0.19" "@chakra-ui/utils" "2.0.15" react-fast-compare "3.2.1" -"@chakra-ui/table@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.17.tgz#ad394dc6dcbe5a8a9e6d899997ecca3471603977" - integrity sha512-OScheTEp1LOYvTki2NFwnAYvac8siAhW9BI5RKm5f5ORL2gVJo4I72RUqE0aKe1oboxgm7CYt5afT5PS5cG61A== +"@chakra-ui/table@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.1.0.tgz#20dce14c5e4d70dc7c6c0e87cce9b05907ff8c50" + integrity sha512-o5OrjoHCh5uCLdiUb0Oc0vq9rIAeHSIRScc2ExTC9Qg/uVZl2ygLrjToCaKfaaKl1oQexIeAcZDKvPG8tVkHyQ== dependencies: - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/react-context" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/tabs@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.1.9.tgz#2e5214cb453c6cc0c240e82bd88af1042fc6fe0e" - integrity sha512-Yf8e0kRvaGM6jfkJum0aInQ0U3ZlCafmrYYni2lqjcTtThqu+Yosmo3iYlnullXxCw5MVznfrkb9ySvgQowuYg== +"@chakra-ui/tabs@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.2.0.tgz#72b6bf8bff3d3da3effb115991bf24e2157e29d2" + integrity sha512-ulN7McHZ322qlbJXg8S+IwdN8Axh8q0HzYBOHzSdcnVphEytfv9TsfJhN0Hx5yjkpekAzG5fewn33ZdIpIpKyQ== dependencies: - "@chakra-ui/clickable" "2.0.14" - "@chakra-ui/descendant" "3.0.14" + "@chakra-ui/clickable" "2.1.0" + "@chakra-ui/descendant" "3.1.0" "@chakra-ui/lazy-utils" "2.0.5" "@chakra-ui/react-children-utils" "2.0.6" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-controllable-state" "2.0.8" - "@chakra-ui/react-use-merge-refs" "2.0.7" - "@chakra-ui/react-use-safe-layout-effect" "2.0.5" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-controllable-state" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" + "@chakra-ui/react-use-safe-layout-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/tag@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-3.0.0.tgz#d86cdab59bb3ff7fc628c2dbe7a5ff1b36bd3e96" - integrity sha512-YWdMmw/1OWRwNkG9pX+wVtZio+B89odaPj6XeMn5nfNN8+jyhIEpouWv34+CO9G0m1lupJTxPSfgLAd7cqXZMA== +"@chakra-ui/tag@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-3.1.0.tgz#b2c06254e1d5aaaf77ff41e5d2e6548b404cabd7" + integrity sha512-Mn2u828z5HvqEBEG+tUJWe3al5tzN87bK2U0QfThx3+zqWbBCWBSCVfnWRtkNh80m+5a1TekexDAPZqu5G8zdw== dependencies: - "@chakra-ui/icon" "3.0.16" - "@chakra-ui/react-context" "2.0.8" + "@chakra-ui/icon" "3.1.0" + "@chakra-ui/react-context" "2.1.0" -"@chakra-ui/textarea@2.0.19": - version "2.0.19" - resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.19.tgz#470b459f9cb3255d2abbe07d46b0a5b60a6a32c5" - integrity sha512-adJk+qVGsFeJDvfn56CcJKKse8k7oMGlODrmpnpTdF+xvlsiTM+1GfaJvgNSpHHuQFdz/A0z1uJtfGefk0G2ZA== +"@chakra-ui/textarea@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.1.0.tgz#d0f157c9a09aea87c372409eead4292bd26999a0" + integrity sha512-4F7X/lPRsY+sPxYrWGrhh1pBtdnFvVllIOapzAwnjYwsflm+vf6c+9ZgoDWobXsNezJ9fcqN0FTPwaBnDvDQRQ== dependencies: - "@chakra-ui/form-control" "2.0.18" + "@chakra-ui/form-control" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/theme-tools@2.0.18", "@chakra-ui/theme-tools@^2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.18.tgz#8160f0abe331e60b56f77426c28ff9a605c1a5c4" - integrity sha512-MbiRuXb2tb41FbnW41zhsYYAU0znlpfYZnu0mxCf8U2otCwPekJCfESUGYypjq4JnydQ7TDOk+Kz/Wi974l4mw== +"@chakra-ui/theme-tools@2.1.0", "@chakra-ui/theme-tools@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.1.0.tgz#ad34f2fdda61305ac96f69ad9ce38ad12f8bfdbf" + integrity sha512-TKv4trAY8q8+DWdZrpSabTd3SZtZrnzFDwUdzhbWBhFEDEVR3fAkRTPpnPDtf1X9w1YErWn3QAcMACVFz4+vkw== dependencies: - "@chakra-ui/anatomy" "2.1.2" + "@chakra-ui/anatomy" "2.2.0" "@chakra-ui/shared-utils" "2.0.5" color2k "^2.0.0" -"@chakra-ui/theme-utils@2.0.18": - version "2.0.18" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.18.tgz#c240545d0f00b6cc059195a784683d1f143a44af" - integrity sha512-aSbkUUiFpc1NHC7lQdA6uYlr6EcZFXz6b4aJ7VRDpqTiywvqYnvfGzhmsB0z94vgtS9qXc6HoIwBp25jYGV2MA== +"@chakra-ui/theme-utils@2.0.19": + version "2.0.19" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.19.tgz#47e6af43f8ef22403686b779ca1a869ab1b7a5ec" + integrity sha512-UQ+KvozTN86+0oA80rdQd1a++4rm4ulo+DEabkgwNpkK3yaWsucOxkDQpi2sMIMvw5X0oaWvNBZJuVyK7HdOXg== dependencies: "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/styled-system" "2.9.1" - "@chakra-ui/theme" "3.1.2" + "@chakra-ui/theme" "3.2.0" lodash.mergewith "4.6.2" -"@chakra-ui/theme@3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-3.1.2.tgz#1e78a19083adecb38b884c1c2da6dee2c84c81f2" - integrity sha512-ebUXMS3LZw2OZxEQNYaFw3/XuA3jpyprhS/frjHMvZKSOaCjMW+c9z25S0jp1NnpQff08VGI8EWbyVZECXU1QA== +"@chakra-ui/theme@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-3.2.0.tgz#b8232d770e542895cf82535942a74ad803bb7133" + integrity sha512-q9mppdkhmaBnvOT8REr/lVNNBX/prwm50EzObJ+r+ErVhNQDc55gCFmtr+It3xlcCqmOteG6XUdwRCJz8qzOqg== dependencies: - "@chakra-ui/anatomy" "2.1.2" + "@chakra-ui/anatomy" "2.2.0" "@chakra-ui/shared-utils" "2.0.5" - "@chakra-ui/theme-tools" "2.0.18" + "@chakra-ui/theme-tools" "2.1.0" -"@chakra-ui/toast@6.1.4": - version "6.1.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-6.1.4.tgz#853a844408c0e22f15c66b4f2607b8416300c649" - integrity sha512-wAcPHq/N/ar4jQxkUGhnsbp+lx2eKOpHxn1KaWdHXUkqCNUA1z09fvBsoMyzObSiiwbDuQPZG5RxsOhzfPZX4Q== +"@chakra-ui/toast@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-7.0.0.tgz#6c6f1b7b8dc458ed0827b2edc47eb7d4075c95dc" + integrity sha512-XQgSnn4DYRgfOBzBvh8GI/AZ7SfrO8wlVSmChfp92Nfmqm7tRDUT9x8ws/iNKAvMRHkhl7fmRjJ39ipeXYrMvA== dependencies: - "@chakra-ui/alert" "2.1.0" - "@chakra-ui/close-button" "2.0.17" - "@chakra-ui/portal" "2.0.16" - "@chakra-ui/react-context" "2.0.8" - "@chakra-ui/react-use-timeout" "2.0.5" - "@chakra-ui/react-use-update-effect" "2.0.7" + "@chakra-ui/alert" "2.2.0" + "@chakra-ui/close-button" "2.1.0" + "@chakra-ui/portal" "2.1.0" + "@chakra-ui/react-context" "2.1.0" + "@chakra-ui/react-use-timeout" "2.1.0" + "@chakra-ui/react-use-update-effect" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" "@chakra-ui/styled-system" "2.9.1" - "@chakra-ui/theme" "3.1.2" + "@chakra-ui/theme" "3.2.0" -"@chakra-ui/tooltip@2.2.9": - version "2.2.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.2.9.tgz#a7f25f7e6d1304ea448a3420ed99f79a657537bd" - integrity sha512-ZoksllanqXRUyMDaiogvUVJ+RdFXwZrfrwx3RV22fejYZIQ602hZ3QHtHLB5ZnKFLbvXKMZKM23HxFTSb0Ytqg== +"@chakra-ui/tooltip@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.3.0.tgz#88e61a2c5a4d99af805840377dc940d3b17c806e" + integrity sha512-2s23f93YIij1qEDwIK//KtEu4LLYOslhR1cUhDBk/WUzyFR3Ez0Ee+HlqlGEGfGe9x77E6/UXPnSAKKdF/cpsg== dependencies: "@chakra-ui/dom-utils" "2.1.0" - "@chakra-ui/popper" "3.0.14" - "@chakra-ui/portal" "2.0.16" + "@chakra-ui/popper" "3.1.0" + "@chakra-ui/portal" "2.1.0" "@chakra-ui/react-types" "2.0.7" - "@chakra-ui/react-use-disclosure" "2.0.8" - "@chakra-ui/react-use-event-listener" "2.0.7" - "@chakra-ui/react-use-merge-refs" "2.0.7" + "@chakra-ui/react-use-disclosure" "2.1.0" + "@chakra-ui/react-use-event-listener" "2.1.0" + "@chakra-ui/react-use-merge-refs" "2.1.0" "@chakra-ui/shared-utils" "2.0.5" -"@chakra-ui/transition@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.16.tgz#498c91e6835bb5d950fd1d1402f483b85f7dcd87" - integrity sha512-E+RkwlPc3H7P1crEXmXwDXMB2lqY2LLia2P5siQ4IEnRWIgZXlIw+8Em+NtHNgusel2N+9yuB0wT9SeZZeZ3CQ== +"@chakra-ui/transition@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.1.0.tgz#c8e95564f7ab356e78119780037bae5ad150c7b3" + integrity sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ== dependencies: "@chakra-ui/shared-utils" "2.0.5" @@ -897,10 +899,10 @@ framesync "6.1.2" lodash.mergewith "4.6.2" -"@chakra-ui/visually-hidden@2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.15.tgz#60df64e0ab97d95fee4e6c61ccabd15fd5ace398" - integrity sha512-WWULIiucYRBIewHKFA7BssQ2ABLHLVd9lrUo3N3SZgR0u4ZRDDVEUNOy+r+9ruDze8+36dGbN9wsN1IdELtdOw== +"@chakra-ui/visually-hidden@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.1.0.tgz#9ec573964e5a07f8682574a060140d78e9f91c32" + integrity sha512-3OHKqTz78PX7V4qto+a5Y6VvH6TbU3Pg6Z0Z2KnDkOBP3Po8fiz0kk+/OSPzIwdcSsQKiocLi0c1pnnUPdMZPg== "@dagrejs/graphlib@^2.1.13": version "2.1.13" @@ -2328,15 +2330,22 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@zag-js/element-size@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.3.2.tgz#ebb76af2a024230482406db41344598d1a9f54f4" - integrity sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ== +"@zag-js/dom-query@0.10.5": + version "0.10.5" + resolved "https://registry.yarnpkg.com/@zag-js/dom-query/-/dom-query-0.10.5.tgz#9fc02a51383989667694d8747925e6d20294af9e" + integrity sha512-zm6wA5+kqU48it6afNjaUhjVSixKZruTKB23z0V1xBqKbuiLOMMOZ5oK26cTPSXtZ5CPhDNZ2Qk4pliS5n9SVw== -"@zag-js/focus-visible@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.2.2.tgz#56233480ca1275d3218fb2e10696a33d1a6b9e64" - integrity sha512-0j2gZq8HiZ51z4zNnSkF1iSkqlwRDvdH+son3wHdoz+7IUdMN/5Exd4TxMJ+gq2Of1DiXReYLL9qqh2PdQ4wgA== +"@zag-js/element-size@0.10.5": + version "0.10.5" + resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.10.5.tgz#a24bad2eeb7e2c8709e32be5336e158e1a1a174f" + integrity sha512-uQre5IidULANvVkNOBQ1tfgwTQcGl4hliPSe69Fct1VfYb2Fd0jdAcGzqQgPhfrXFpR62MxLPB7erxJ/ngtL8w== + +"@zag-js/focus-visible@0.10.5": + version "0.10.5" + resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.10.5.tgz#643e196ea768bea5ce54771102fae22f5e9ba3c7" + integrity sha512-EhDHKLutMtvLFCjBjyIY6h1JoJJNXG3KJz7Dj1sh4tj4LWAqo/TqLvgHyUTB29XMHwoslFHDJHKVWmLGMi+ULQ== + dependencies: + "@zag-js/dom-query" "0.10.5" acorn-jsx@^5.3.2: version "5.3.2" diff --git a/invokeai/version/__init__.py b/invokeai/version/__init__.py index 01ef84ea4d..21dfcad3ca 100644 --- a/invokeai/version/__init__.py +++ b/invokeai/version/__init__.py @@ -6,6 +6,7 @@ from .invokeai_version import __version__ __app_id__ = "invoke-ai/InvokeAI" __app_name__ = "InvokeAI" + def _ignore_xformers_triton_message_on_windows(): import logging diff --git a/invokeai/version/invokeai_version.py b/invokeai/version/invokeai_version.py index 528787cfc8..0552768781 100644 --- a/invokeai/version/invokeai_version.py +++ b/invokeai/version/invokeai_version.py @@ -1 +1 @@ -__version__ = "3.0.0" +__version__ = "3.0.1" diff --git a/notebooks/notebook_helpers.py b/notebooks/notebook_helpers.py index 663b212ac5..b87f18ba18 100644 --- a/notebooks/notebook_helpers.py +++ b/notebooks/notebook_helpers.py @@ -2,6 +2,7 @@ from torchvision.datasets.utils import download_url from ldm.util import instantiate_from_config import torch import os + # todo ? from google.colab import files from IPython.display import Image as ipyimg @@ -16,21 +17,21 @@ import time from omegaconf import OmegaConf from ldm.invoke.devices import choose_torch_device -def download_models(mode): +def download_models(mode): if mode == "superresolution": # this is the small bsr light model - url_conf = 'https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1' - url_ckpt = 'https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1' + url_conf = "https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1" + url_ckpt = "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1" - path_conf = 'logs/diffusion/superresolution_bsr/configs/project.yaml' - path_ckpt = 'logs/diffusion/superresolution_bsr/checkpoints/last.ckpt' + path_conf = "logs/diffusion/superresolution_bsr/configs/project.yaml" + path_ckpt = "logs/diffusion/superresolution_bsr/checkpoints/last.ckpt" download_url(url_conf, path_conf) download_url(url_ckpt, path_ckpt) - path_conf = path_conf + '/?dl=1' # fix it - path_ckpt = path_ckpt + '/?dl=1' # fix it + path_conf = path_conf + "/?dl=1" # fix it + path_ckpt = path_ckpt + "/?dl=1" # fix it return path_conf, path_ckpt else: @@ -62,20 +63,20 @@ def get_custom_cond(mode): if mode == "superresolution": uploaded_img = files.upload() filename = next(iter(uploaded_img)) - name, filetype = filename.split(".") # todo assumes just one dot in name ! + name, filetype = filename.split(".") # todo assumes just one dot in name ! os.rename(f"{filename}", f"{dest}/{mode}/custom_{name}.{filetype}") elif mode == "text_conditional": - w = widgets.Text(value='A cake with cream!', disabled=True) + w = widgets.Text(value="A cake with cream!", disabled=True) display(w) - with open(f"{dest}/{mode}/custom_{w.value[:20]}.txt", 'w') as f: + with open(f"{dest}/{mode}/custom_{w.value[:20]}.txt", "w") as f: f.write(w.value) elif mode == "class_conditional": w = widgets.IntSlider(min=0, max=1000) display(w) - with open(f"{dest}/{mode}/custom.txt", 'w') as f: + with open(f"{dest}/{mode}/custom.txt", "w") as f: f.write(w.value) else: @@ -94,11 +95,7 @@ def select_cond_path(mode): path = os.path.join(path, mode) onlyfiles = [f for f in sorted(os.listdir(path))] - selected = widgets.RadioButtons( - options=onlyfiles, - description='Select conditioning:', - disabled=False - ) + selected = widgets.RadioButtons(options=onlyfiles, description="Select conditioning:", disabled=False) display(selected) selected_path = os.path.join(path, selected.value) return selected_path @@ -113,9 +110,9 @@ def get_cond(mode, selected_path): c = Image.open(selected_path) c = torch.unsqueeze(torchvision.transforms.ToTensor()(c), 0) c_up = torchvision.transforms.functional.resize(c, size=[up_f * c.shape[2], up_f * c.shape[3]], antialias=True) - c_up = rearrange(c_up, '1 c h w -> 1 h w c') - c = rearrange(c, '1 c h w -> 1 h w c') - c = 2. * c - 1. + c_up = rearrange(c_up, "1 c h w -> 1 h w c") + c = rearrange(c, "1 c h w -> 1 h w c") + c = 2.0 * c - 1.0 device = choose_torch_device() c = c.to(device) @@ -130,7 +127,6 @@ def visualize_cond_img(path): def run(model, selected_path, task, custom_steps, resize_enabled=False, classifier_ckpt=None, global_step=None): - example = get_cond(task, selected_path) save_intermediate_vid = False @@ -138,10 +134,10 @@ def run(model, selected_path, task, custom_steps, resize_enabled=False, classifi masked = False guider = None ckwargs = None - mode = 'ddim' + mode = "ddim" ddim_use_x0_pred = False - temperature = 1. - eta = 1. + temperature = 1.0 + eta = 1.0 make_progrow = True custom_shape = None @@ -152,14 +148,17 @@ def run(model, selected_path, task, custom_steps, resize_enabled=False, classifi ks = 128 stride = 64 vqf = 4 # - model.split_input_params = {"ks": (ks, ks), "stride": (stride, stride), - "vqf": vqf, - "patch_distributed_vq": True, - "tie_braker": False, - "clip_max_weight": 0.5, - "clip_min_weight": 0.01, - "clip_max_tie_weight": 0.5, - "clip_min_tie_weight": 0.01} + model.split_input_params = { + "ks": (ks, ks), + "stride": (stride, stride), + "vqf": vqf, + "patch_distributed_vq": True, + "tie_braker": False, + "clip_max_weight": 0.5, + "clip_min_weight": 0.01, + "clip_max_tie_weight": 0.5, + "clip_min_tie_weight": 0.01, + } else: if hasattr(model, "split_input_params"): delattr(model, "split_input_params") @@ -170,53 +169,112 @@ def run(model, selected_path, task, custom_steps, resize_enabled=False, classifi for n in range(n_runs): if custom_shape is not None: x_T = torch.randn(1, custom_shape[1], custom_shape[2], custom_shape[3]).to(model.device) - x_T = repeat(x_T, '1 c h w -> b c h w', b=custom_shape[0]) + x_T = repeat(x_T, "1 c h w -> b c h w", b=custom_shape[0]) - logs = make_convolutional_sample(example, model, - mode=mode, custom_steps=custom_steps, - eta=eta, swap_mode=False , masked=masked, - invert_mask=invert_mask, quantize_x0=False, - custom_schedule=None, decode_interval=10, - resize_enabled=resize_enabled, custom_shape=custom_shape, - temperature=temperature, noise_dropout=0., - corrector=guider, corrector_kwargs=ckwargs, x_T=x_T, save_intermediate_vid=save_intermediate_vid, - make_progrow=make_progrow,ddim_use_x0_pred=ddim_use_x0_pred - ) + logs = make_convolutional_sample( + example, + model, + mode=mode, + custom_steps=custom_steps, + eta=eta, + swap_mode=False, + masked=masked, + invert_mask=invert_mask, + quantize_x0=False, + custom_schedule=None, + decode_interval=10, + resize_enabled=resize_enabled, + custom_shape=custom_shape, + temperature=temperature, + noise_dropout=0.0, + corrector=guider, + corrector_kwargs=ckwargs, + x_T=x_T, + save_intermediate_vid=save_intermediate_vid, + make_progrow=make_progrow, + ddim_use_x0_pred=ddim_use_x0_pred, + ) return logs @torch.no_grad() -def convsample_ddim(model, cond, steps, shape, eta=1.0, callback=None, normals_sequence=None, - mask=None, x0=None, quantize_x0=False, img_callback=None, - temperature=1., noise_dropout=0., score_corrector=None, - corrector_kwargs=None, x_T=None, log_every_t=None - ): - +def convsample_ddim( + model, + cond, + steps, + shape, + eta=1.0, + callback=None, + normals_sequence=None, + mask=None, + x0=None, + quantize_x0=False, + img_callback=None, + temperature=1.0, + noise_dropout=0.0, + score_corrector=None, + corrector_kwargs=None, + x_T=None, + log_every_t=None, +): ddim = DDIMSampler(model) bs = shape[0] # dont know where this comes from but wayne shape = shape[1:] # cut batch dim print(f"Sampling with eta = {eta}; steps: {steps}") - samples, intermediates = ddim.sample(steps, batch_size=bs, shape=shape, conditioning=cond, callback=callback, - normals_sequence=normals_sequence, quantize_x0=quantize_x0, eta=eta, - mask=mask, x0=x0, temperature=temperature, verbose=False, - score_corrector=score_corrector, - corrector_kwargs=corrector_kwargs, x_T=x_T) + samples, intermediates = ddim.sample( + steps, + batch_size=bs, + shape=shape, + conditioning=cond, + callback=callback, + normals_sequence=normals_sequence, + quantize_x0=quantize_x0, + eta=eta, + mask=mask, + x0=x0, + temperature=temperature, + verbose=False, + score_corrector=score_corrector, + corrector_kwargs=corrector_kwargs, + x_T=x_T, + ) return samples, intermediates @torch.no_grad() -def make_convolutional_sample(batch, model, mode="vanilla", custom_steps=None, eta=1.0, swap_mode=False, masked=False, - invert_mask=True, quantize_x0=False, custom_schedule=None, decode_interval=1000, - resize_enabled=False, custom_shape=None, temperature=1., noise_dropout=0., corrector=None, - corrector_kwargs=None, x_T=None, save_intermediate_vid=False, make_progrow=True,ddim_use_x0_pred=False): +def make_convolutional_sample( + batch, + model, + mode="vanilla", + custom_steps=None, + eta=1.0, + swap_mode=False, + masked=False, + invert_mask=True, + quantize_x0=False, + custom_schedule=None, + decode_interval=1000, + resize_enabled=False, + custom_shape=None, + temperature=1.0, + noise_dropout=0.0, + corrector=None, + corrector_kwargs=None, + x_T=None, + save_intermediate_vid=False, + make_progrow=True, + ddim_use_x0_pred=False, +): log = dict() - z, c, x, xrec, xc = model.get_input(batch, model.first_stage_key, - return_first_stage_outputs=True, - force_c_encode=not (hasattr(model, 'split_input_params') - and model.cond_stage_key == 'coordinates_bbox'), - return_original_cond=True) + z, c, x, xrec, xc = model.get_input( + batch, + model.first_stage_key, + return_first_stage_outputs=True, + force_c_encode=not (hasattr(model, "split_input_params") and model.cond_stage_key == "coordinates_bbox"), + return_original_cond=True, + ) log_every_t = 1 if save_intermediate_vid else None @@ -231,30 +289,41 @@ def make_convolutional_sample(batch, model, mode="vanilla", custom_steps=None, e if ismap(xc): log["original_conditioning"] = model.to_rgb(xc) - if hasattr(model, 'cond_stage_key'): + if hasattr(model, "cond_stage_key"): log[model.cond_stage_key] = model.to_rgb(xc) else: log["original_conditioning"] = xc if xc is not None else torch.zeros_like(x) if model.cond_stage_model: log[model.cond_stage_key] = xc if xc is not None else torch.zeros_like(x) - if model.cond_stage_key =='class_label': + if model.cond_stage_key == "class_label": log[model.cond_stage_key] = xc[model.cond_stage_key] with model.ema_scope("Plotting"): t0 = time.time() img_cb = None - sample, intermediates = convsample_ddim(model, c, steps=custom_steps, shape=z.shape, - eta=eta, - quantize_x0=quantize_x0, img_callback=img_cb, mask=None, x0=z0, - temperature=temperature, noise_dropout=noise_dropout, - score_corrector=corrector, corrector_kwargs=corrector_kwargs, - x_T=x_T, log_every_t=log_every_t) + sample, intermediates = convsample_ddim( + model, + c, + steps=custom_steps, + shape=z.shape, + eta=eta, + quantize_x0=quantize_x0, + img_callback=img_cb, + mask=None, + x0=z0, + temperature=temperature, + noise_dropout=noise_dropout, + score_corrector=corrector, + corrector_kwargs=corrector_kwargs, + x_T=x_T, + log_every_t=log_every_t, + ) t1 = time.time() if ddim_use_x0_pred: - sample = intermediates['pred_x0'][-1] + sample = intermediates["pred_x0"][-1] x_sample = model.decode_first_stage(sample) diff --git a/pyproject.toml b/pyproject.toml index 5cc6971df6..a97830c670 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "InvokeAI" description = "An implementation of Stable Diffusion which provides various new features and options to aid the image generation process" -requires-python = ">=3.9, <3.11" +requires-python = ">=3.9, <3.12" readme = { content-type = "text/markdown", file = "README.md" } keywords = ["stable-diffusion", "AI"] dynamic = ["version"] @@ -32,16 +32,16 @@ classifiers = [ 'Topic :: Scientific/Engineering :: Image Processing', ] dependencies = [ - "accelerate~=0.16", + "accelerate~=0.21.0", "albumentations", "click", - "clip_anytorch", # replacing "clip @ https://github.com/openai/CLIP/archive/eaa22acb90a5876642d0507623e859909230a52d.zip", - "compel==2.0.0", + "clip_anytorch", # replacing "clip @ https://github.com/openai/CLIP/archive/eaa22acb90a5876642d0507623e859909230a52d.zip", + "compel~=2.0.0", "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 + "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.18.1", - "dnspython==2.2.1", + "diffusers[torch]~=0.19.0", + "dnspython~=2.4.0", "dynamicprompts", "easing-functions", "einops", @@ -54,37 +54,37 @@ dependencies = [ "flask_cors==3.0.10", "flask_socketio==5.3.0", "flaskwebgui==1.0.3", - "gfpgan==1.3.8", "huggingface-hub>=0.11.1", - "invisible-watermark>=0.2.0", # needed to install SDXL base and refiner using their repo_ids + "invisible-watermark~=0.2.0", # needed to install SDXL base and refiner using their repo_ids "matplotlib", # needed for plotting of Penner easing functions "mediapipe", # needed for "mediapipeface" controlnet model "npyscreen", - "numpy<1.24", + "numpy==1.24.4", "omegaconf", "opencv-python", "picklescan", "pillow", "prompt-toolkit", - "pympler==1.0.1", + "pydantic==1.10.10", + "pympler~=1.0.1", "pypatchmatch", 'pyperclip', "pyreadline3", - "python-multipart==0.0.6", - "pytorch-lightning==1.7.7", + "python-multipart", + "pytorch-lightning", "realesrgan", - "requests==2.28.2", + "requests~=2.28.2", "rich~=13.3", "safetensors~=0.3.0", - "scikit-image>=0.19", + "scikit-image~=0.21.0", "send2trash", - "test-tube>=0.7.5", - "torch~=2.0.0", - "torchvision>=0.14.1", - "torchmetrics==0.11.4", - "torchsde==0.2.5", + "test-tube~=0.7.5", + "torch~=2.0.1", + "torchvision~=0.15.2", + "torchmetrics~=1.0.1", + "torchsde~=0.2.5", "transformers~=4.31.0", - "uvicorn[standard]==0.21.1", + "uvicorn[standard]~=0.21.1", "windows-curses; sys_platform=='win32'", ] @@ -98,7 +98,7 @@ dependencies = [ "dev" = [ "pudb", ] -"test" = ["pytest>6.0.0", "pytest-cov"] +"test" = ["pytest>6.0.0", "pytest-cov", "black"] "xformers" = [ "xformers~=0.0.19; sys_platform!='darwin'", "triton; sys_platform=='linux'", @@ -176,5 +176,8 @@ directory = "coverage/html" output = "coverage/index.xml" #=== End: PyTest and Coverage -[flake8] +[tool.flake8] max-line-length = 120 + +[tool.black] +line-length = 120 \ No newline at end of file diff --git a/scripts/configure_invokeai.py b/scripts/configure_invokeai.py index 0226fa1c2a..61d32b6df5 100755 --- a/scripts/configure_invokeai.py +++ b/scripts/configure_invokeai.py @@ -4,6 +4,6 @@ import warnings from invokeai.frontend.install import invokeai_configure as configure -if __name__ == '__main__': +if __name__ == "__main__": warnings.warn("configure_invokeai.py is deprecated, running 'invokeai-configure'...", DeprecationWarning) configure() diff --git a/scripts/controlnet_legacy_txt2img_example.py b/scripts/controlnet_legacy_txt2img_example.py index eb299c9d47..8400cc0290 100644 --- a/scripts/controlnet_legacy_txt2img_example.py +++ b/scripts/controlnet_legacy_txt2img_example.py @@ -28,11 +28,12 @@ canny_image.show() print("loading base model stable-diffusion-1.5") model_config_path = os.getcwd() + "/../configs/models.yaml" model_manager = ModelManager(model_config_path) -model = model_manager.get_model('stable-diffusion-1.5') +model = model_manager.get_model("stable-diffusion-1.5") print("loading control model lllyasviel/sd-controlnet-canny") -canny_controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny", - torch_dtype=torch.float16).to("cuda") +canny_controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny", torch_dtype=torch.float16).to( + "cuda" +) print("testing Txt2Img() constructor with control_model arg") txt2img_canny = Txt2Img(model, control_model=canny_controlnet) @@ -49,6 +50,3 @@ outputs = txt2img_canny.generate( generate_output = next(outputs) out_image = generate_output.image out_image.show() - - - diff --git a/scripts/dream.py b/scripts/dream.py index 66c7600c6f..12176db41e 100755 --- a/scripts/dream.py +++ b/scripts/dream.py @@ -3,8 +3,9 @@ import warnings from invokeai.frontend.CLI import invokeai_command_line_interface as main -warnings.warn("dream.py is being deprecated, please run invoke.py for the " - "new UI/API or legacy_api.py for the old API", - DeprecationWarning) -main() +warnings.warn( + "dream.py is being deprecated, please run invoke.py for the " "new UI/API or legacy_api.py for the old API", + DeprecationWarning, +) +main() diff --git a/scripts/images2prompt.py b/scripts/images2prompt.py index 625be83482..058fc0da40 100755 --- a/scripts/images2prompt.py +++ b/scripts/images2prompt.py @@ -1,12 +1,14 @@ #!/usr/bin/env python -'''This script reads the "Invoke" Stable Diffusion prompt embedded in files generated by invoke.py''' +"""This script reads the "Invoke" Stable Diffusion prompt embedded in files generated by invoke.py""" import sys -from PIL import Image,PngImagePlugin +from PIL import Image, PngImagePlugin if len(sys.argv) < 2: print("Usage: file2prompt.py ...") - print("This script opens up the indicated invoke.py-generated PNG file(s) and prints out the prompt used to generate them.") + print( + "This script opens up the indicated invoke.py-generated PNG file(s) and prints out the prompt used to generate them." + ) exit(-1) filenames = sys.argv[1:] @@ -14,17 +16,13 @@ for f in filenames: try: im = Image.open(f) try: - prompt = im.text['Dream'] + prompt = im.text["Dream"] except KeyError: - prompt = '' - print(f'{f}: {prompt}') + prompt = "" + print(f"{f}: {prompt}") except FileNotFoundError: - sys.stderr.write(f'{f} not found\n') + sys.stderr.write(f"{f} not found\n") continue except PermissionError: - sys.stderr.write(f'{f} could not be opened due to inadequate permissions\n') + sys.stderr.write(f"{f} could not be opened due to inadequate permissions\n") continue - - - - diff --git a/scripts/invokeai-cli.py b/scripts/invokeai-cli.py index bb67d9d540..b32a892261 100755 --- a/scripts/invokeai-cli.py +++ b/scripts/invokeai-cli.py @@ -3,18 +3,22 @@ # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) import logging -logging.getLogger("xformers").addFilter(lambda record: 'A matching Triton is not available' not in record.getMessage()) + +logging.getLogger("xformers").addFilter(lambda record: "A matching Triton is not available" not in record.getMessage()) import os import sys + def main(): # Change working directory to the repo root os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) # TODO: Parse some top-level args here. from invokeai.app.cli_app import invoke_cli + invoke_cli() -if __name__ == '__main__': + +if __name__ == "__main__": main() diff --git a/scripts/invokeai-model-install.py b/scripts/invokeai-model-install.py index 97bb499812..b4b0dbc8ef 100644 --- a/scripts/invokeai-model-install.py +++ b/scripts/invokeai-model-install.py @@ -1,3 +1,3 @@ from invokeai.frontend.install.model_install import main -main() +main() diff --git a/scripts/invokeai-web.py b/scripts/invokeai-web.py index 9ac7ee5cb9..829cc4b911 100755 --- a/scripts/invokeai-web.py +++ b/scripts/invokeai-web.py @@ -3,18 +3,21 @@ # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) import logging -logging.getLogger("xformers").addFilter(lambda record: 'A matching Triton is not available' not in record.getMessage()) + +logging.getLogger("xformers").addFilter(lambda record: "A matching Triton is not available" not in record.getMessage()) import os import sys + def main(): # Change working directory to the repo root os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from invokeai.app.api_app import invoke_api + invoke_api() -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/scripts/make_models_markdown_table.py b/scripts/make_models_markdown_table.py index 128ced371d..8e7c528a46 100755 --- a/scripts/make_models_markdown_table.py +++ b/scripts/make_models_markdown_table.py @@ -1,23 +1,24 @@ #!/usr/bin/env python -''' +""" 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 def main(): - initial_models_file = Path(__file__).parent / '../invokeai/configs/INITIAL_MODELS.yaml' + initial_models_file = Path(__file__).parent / "../invokeai/configs/INITIAL_MODELS.yaml" models = OmegaConf.load(initial_models_file) - print('|Model Name | HuggingFace Repo ID | Description | URL |') - print('|---------- | ---------- | ----------- | --- |') + print("|Model Name | HuggingFace Repo ID | Description | URL |") + print("|---------- | ---------- | ----------- | --- |") for model in models: repo_id = models[model].repo_id - url = f'https://huggingface.co/{repo_id}' - print(f'|{model}|{repo_id}|{models[model].description}|{url} |') + url = f"https://huggingface.co/{repo_id}" + print(f"|{model}|{repo_id}|{models[model].description}|{url} |") -if __name__ == '__main__': + +if __name__ == "__main__": main() diff --git a/scripts/orig_scripts/img2img.py b/scripts/orig_scripts/img2img.py index 9f74f25bf2..2601bc2562 100644 --- a/scripts/orig_scripts/img2img.py +++ b/scripts/orig_scripts/img2img.py @@ -18,7 +18,7 @@ from pytorch_lightning import seed_everything from ldm.util import instantiate_from_config from ldm.models.diffusion.ddim import DDIMSampler from ldm.models.diffusion.plms import PLMSSampler -from ldm.invoke.devices import choose_torch_device +from ldm.invoke.devices import choose_torch_device def chunk(it, size): @@ -55,7 +55,7 @@ def load_img(path): image = np.array(image).astype(np.float32) / 255.0 image = image[None].transpose(0, 3, 1, 2) image = torch.from_numpy(image) - return 2.*image - 1. + return 2.0 * image - 1.0 def main(): @@ -66,33 +66,24 @@ def main(): type=str, nargs="?", default="a painting of a virus monster playing guitar", - help="the prompt to render" + help="the prompt to render", ) - parser.add_argument( - "--init-img", - type=str, - nargs="?", - help="path to the input image" - ) + parser.add_argument("--init-img", type=str, nargs="?", help="path to the input image") parser.add_argument( - "--outdir", - type=str, - nargs="?", - help="dir to write results to", - default="outputs/img2img-samples" + "--outdir", type=str, nargs="?", help="dir to write results to", default="outputs/img2img-samples" ) parser.add_argument( "--skip_grid", - action='store_true', + action="store_true", help="do not save a grid, only individual samples. Helpful when evaluating lots of samples", ) parser.add_argument( "--skip_save", - action='store_true', + action="store_true", help="do not save indiviual samples. For speed measurements.", ) @@ -105,12 +96,12 @@ def main(): parser.add_argument( "--plms", - action='store_true', + action="store_true", help="use plms sampling", ) parser.add_argument( "--fixed_code", - action='store_true', + action="store_true", help="if enabled, uses the same starting code across all samples ", ) @@ -187,11 +178,7 @@ def main(): help="the seed (for reproducible sampling)", ) parser.add_argument( - "--precision", - type=str, - help="evaluate at this precision", - choices=["full", "autocast"], - default="autocast" + "--precision", type=str, help="evaluate at this precision", choices=["full", "autocast"], default="autocast" ) opt = parser.parse_args() @@ -232,18 +219,18 @@ def main(): assert os.path.isfile(opt.init_img) init_image = load_img(opt.init_img).to(device) - init_image = repeat(init_image, '1 ... -> b ...', b=batch_size) + init_image = repeat(init_image, "1 ... -> b ...", b=batch_size) init_latent = model.get_first_stage_encoding(model.encode_first_stage(init_image)) # move to latent space sampler.make_schedule(ddim_num_steps=opt.ddim_steps, ddim_eta=opt.ddim_eta, verbose=False) - assert 0. <= opt.strength <= 1., 'can only work with strength in [0.0, 1.0]' + assert 0.0 <= opt.strength <= 1.0, "can only work with strength in [0.0, 1.0]" t_enc = int(opt.strength * opt.ddim_steps) print(f"target t_enc is {t_enc} steps") precision_scope = autocast if opt.precision == "autocast" else nullcontext - if device.type in ['mps', 'cpu']: - precision_scope = nullcontext # have to use f32 on mps + if device.type in ["mps", "cpu"]: + precision_scope = nullcontext # have to use f32 on mps with torch.no_grad(): with precision_scope(device.type): with model.ema_scope(): @@ -259,37 +246,42 @@ def main(): c = model.get_learned_conditioning(prompts) # encode (scaled latent) - z_enc = sampler.stochastic_encode(init_latent, torch.tensor([t_enc]*batch_size).to(device)) + z_enc = sampler.stochastic_encode(init_latent, torch.tensor([t_enc] * batch_size).to(device)) # decode it - samples = sampler.decode(z_enc, c, t_enc, unconditional_guidance_scale=opt.scale, - unconditional_conditioning=uc,) + samples = sampler.decode( + z_enc, + c, + t_enc, + unconditional_guidance_scale=opt.scale, + unconditional_conditioning=uc, + ) x_samples = model.decode_first_stage(samples) x_samples = torch.clamp((x_samples + 1.0) / 2.0, min=0.0, max=1.0) if not opt.skip_save: for x_sample in x_samples: - x_sample = 255. * rearrange(x_sample.cpu().numpy(), 'c h w -> h w c') + x_sample = 255.0 * rearrange(x_sample.cpu().numpy(), "c h w -> h w c") Image.fromarray(x_sample.astype(np.uint8)).save( - os.path.join(sample_path, f"{base_count:05}.png")) + os.path.join(sample_path, f"{base_count:05}.png") + ) base_count += 1 all_samples.append(x_samples) if not opt.skip_grid: # additionally, save as grid grid = torch.stack(all_samples, 0) - grid = rearrange(grid, 'n b c h w -> (n b) c h w') + grid = rearrange(grid, "n b c h w -> (n b) c h w") grid = make_grid(grid, nrow=n_rows) # to image - grid = 255. * rearrange(grid, 'c h w -> h w c').cpu().numpy() - Image.fromarray(grid.astype(np.uint8)).save(os.path.join(outpath, f'grid-{grid_count:04}.png')) + grid = 255.0 * rearrange(grid, "c h w -> h w c").cpu().numpy() + Image.fromarray(grid.astype(np.uint8)).save(os.path.join(outpath, f"grid-{grid_count:04}.png")) grid_count += 1 toc = time.time() - print(f"Your samples are ready and waiting for you here: \n{outpath} \n" - f" \nEnjoy.") + print(f"Your samples are ready and waiting for you here: \n{outpath} \n" f" \nEnjoy.") if __name__ == "__main__": diff --git a/scripts/orig_scripts/inpaint.py b/scripts/orig_scripts/inpaint.py index b8245db322..8dfbbfb045 100644 --- a/scripts/orig_scripts/inpaint.py +++ b/scripts/orig_scripts/inpaint.py @@ -8,25 +8,26 @@ from main import instantiate_from_config from ldm.models.diffusion.ddim import DDIMSampler from ldm.invoke.devices import choose_torch_device + def make_batch(image, mask, device): image = np.array(Image.open(image).convert("RGB")) - image = image.astype(np.float32)/255.0 - image = image[None].transpose(0,3,1,2) + image = image.astype(np.float32) / 255.0 + image = image[None].transpose(0, 3, 1, 2) image = torch.from_numpy(image) mask = np.array(Image.open(mask).convert("L")) - mask = mask.astype(np.float32)/255.0 - mask = mask[None,None] + mask = mask.astype(np.float32) / 255.0 + mask = mask[None, None] mask[mask < 0.5] = 0 mask[mask >= 0.5] = 1 mask = torch.from_numpy(mask) - masked_image = (1-mask)*image + masked_image = (1 - mask) * image batch = {"image": image, "mask": mask, "masked_image": masked_image} for k in batch: batch[k] = batch[k].to(device=device) - batch[k] = batch[k]*2.0-1.0 + batch[k] = batch[k] * 2.0 - 1.0 return batch @@ -58,11 +59,10 @@ if __name__ == "__main__": config = OmegaConf.load("models/ldm/inpainting_big/config.yaml") model = instantiate_from_config(config.model) - model.load_state_dict(torch.load("models/ldm/inpainting_big/last.ckpt")["state_dict"], - strict=False) + model.load_state_dict(torch.load("models/ldm/inpainting_big/last.ckpt")["state_dict"], strict=False) - device = choose_torch_device() - model = model.to(device) + device = choose_torch_device() + model = model.to(device) sampler = DDIMSampler(model) os.makedirs(opt.outdir, exist_ok=True) @@ -74,25 +74,19 @@ if __name__ == "__main__": # encode masked image and concat downsampled mask c = model.cond_stage_model.encode(batch["masked_image"]) - cc = torch.nn.functional.interpolate(batch["mask"], - size=c.shape[-2:]) + cc = torch.nn.functional.interpolate(batch["mask"], size=c.shape[-2:]) c = torch.cat((c, cc), dim=1) - shape = (c.shape[1]-1,)+c.shape[2:] - samples_ddim, _ = sampler.sample(S=opt.steps, - conditioning=c, - batch_size=c.shape[0], - shape=shape, - verbose=False) + shape = (c.shape[1] - 1,) + c.shape[2:] + samples_ddim, _ = sampler.sample( + S=opt.steps, conditioning=c, batch_size=c.shape[0], shape=shape, verbose=False + ) x_samples_ddim = model.decode_first_stage(samples_ddim) - image = torch.clamp((batch["image"]+1.0)/2.0, - min=0.0, max=1.0) - mask = torch.clamp((batch["mask"]+1.0)/2.0, - min=0.0, max=1.0) - predicted_image = torch.clamp((x_samples_ddim+1.0)/2.0, - min=0.0, max=1.0) + image = torch.clamp((batch["image"] + 1.0) / 2.0, min=0.0, max=1.0) + mask = torch.clamp((batch["mask"] + 1.0) / 2.0, min=0.0, max=1.0) + predicted_image = torch.clamp((x_samples_ddim + 1.0) / 2.0, min=0.0, max=1.0) - inpainted = (1-mask)*image+mask*predicted_image - inpainted = inpainted.cpu().numpy().transpose(0,2,3,1)[0]*255 + inpainted = (1 - mask) * image + mask * predicted_image + inpainted = inpainted.cpu().numpy().transpose(0, 2, 3, 1)[0] * 255 Image.fromarray(inpainted.astype(np.uint8)).save(outpath) diff --git a/scripts/orig_scripts/knn2img.py b/scripts/orig_scripts/knn2img.py index e6eaaecab5..845613479b 100644 --- a/scripts/orig_scripts/knn2img.py +++ b/scripts/orig_scripts/knn2img.py @@ -59,29 +59,24 @@ def load_model_from_config(config, ckpt, verbose=False): class Searcher(object): - def __init__(self, database, retriever_version='ViT-L/14'): + def __init__(self, database, retriever_version="ViT-L/14"): assert database in DATABASES # self.database = self.load_database(database) self.database_name = database - self.searcher_savedir = f'data/rdm/searchers/{self.database_name}' - self.database_path = f'data/rdm/retrieval_databases/{self.database_name}' + self.searcher_savedir = f"data/rdm/searchers/{self.database_name}" + self.database_path = f"data/rdm/retrieval_databases/{self.database_name}" self.retriever = self.load_retriever(version=retriever_version) - self.database = {'embedding': [], - 'img_id': [], - 'patch_coords': []} + self.database = {"embedding": [], "img_id": [], "patch_coords": []} self.load_database() self.load_searcher() - def train_searcher(self, k, - metric='dot_product', - searcher_savedir=None): - - print('Start training searcher') - searcher = scann.scann_ops_pybind.builder(self.database['embedding'] / - np.linalg.norm(self.database['embedding'], axis=1)[:, np.newaxis], - k, metric) + def train_searcher(self, k, metric="dot_product", searcher_savedir=None): + print("Start training searcher") + searcher = scann.scann_ops_pybind.builder( + self.database["embedding"] / np.linalg.norm(self.database["embedding"], axis=1)[:, np.newaxis], k, metric + ) self.searcher = searcher.score_brute_force().build() - print('Finish training searcher') + print("Finish training searcher") if searcher_savedir is not None: print(f'Save trained searcher under "{searcher_savedir}"') @@ -91,36 +86,40 @@ class Searcher(object): def load_single_file(self, saved_embeddings): compressed = np.load(saved_embeddings) self.database = {key: compressed[key] for key in compressed.files} - print('Finished loading of clip embeddings.') + print("Finished loading of clip embeddings.") def load_multi_files(self, data_archive): out_data = {key: [] for key in self.database} - for d in tqdm(data_archive, desc=f'Loading datapool from {len(data_archive)} individual files.'): + for d in tqdm(data_archive, desc=f"Loading datapool from {len(data_archive)} individual files."): for key in d.files: out_data[key].append(d[key]) return out_data def load_database(self): - print(f'Load saved patch embedding from "{self.database_path}"') - file_content = glob.glob(os.path.join(self.database_path, '*.npz')) + file_content = glob.glob(os.path.join(self.database_path, "*.npz")) if len(file_content) == 1: self.load_single_file(file_content[0]) elif len(file_content) > 1: data = [np.load(f) for f in file_content] - prefetched_data = parallel_data_prefetch(self.load_multi_files, data, - n_proc=min(len(data), cpu_count()), target_data_type='dict') + prefetched_data = parallel_data_prefetch( + self.load_multi_files, data, n_proc=min(len(data), cpu_count()), target_data_type="dict" + ) - self.database = {key: np.concatenate([od[key] for od in prefetched_data], axis=1)[0] for key in - self.database} + self.database = { + key: np.concatenate([od[key] for od in prefetched_data], axis=1)[0] for key in self.database + } else: raise ValueError(f'No npz-files in specified path "{self.database_path}" is this directory existing?') print(f'Finished loading of retrieval database of length {self.database["embedding"].shape[0]}.') - def load_retriever(self, version='ViT-L/14', ): + def load_retriever( + self, + version="ViT-L/14", + ): model = FrozenClipImageEmbedder(model=version) if torch.cuda.is_available(): model.cuda() @@ -128,14 +127,14 @@ class Searcher(object): return model def load_searcher(self): - print(f'load searcher for database {self.database_name} from {self.searcher_savedir}') + print(f"load searcher for database {self.database_name} from {self.searcher_savedir}") self.searcher = scann.scann_ops_pybind.load_searcher(self.searcher_savedir) - print('Finished loading searcher.') + print("Finished loading searcher.") def search(self, x, k): - if self.searcher is None and self.database['embedding'].shape[0] < 2e4: - self.train_searcher(k) # quickly fit searcher on the fly for small databases - assert self.searcher is not None, 'Cannot search with uninitialized searcher' + if self.searcher is None and self.database["embedding"].shape[0] < 2e4: + self.train_searcher(k) # quickly fit searcher on the fly for small databases + assert self.searcher is not None, "Cannot search with uninitialized searcher" if isinstance(x, torch.Tensor): x = x.detach().cpu().numpy() if len(x.shape) == 3: @@ -146,17 +145,19 @@ class Searcher(object): nns, distances = self.searcher.search_batched(query_embeddings, final_num_neighbors=k) end = time.time() - out_embeddings = self.database['embedding'][nns] - out_img_ids = self.database['img_id'][nns] - out_pc = self.database['patch_coords'][nns] + out_embeddings = self.database["embedding"][nns] + out_img_ids = self.database["img_id"][nns] + out_pc = self.database["patch_coords"][nns] - out = {'nn_embeddings': out_embeddings / np.linalg.norm(out_embeddings, axis=-1)[..., np.newaxis], - 'img_ids': out_img_ids, - 'patch_coords': out_pc, - 'queries': x, - 'exec_time': end - start, - 'nns': nns, - 'q_embeddings': query_embeddings} + out = { + "nn_embeddings": out_embeddings / np.linalg.norm(out_embeddings, axis=-1)[..., np.newaxis], + "img_ids": out_img_ids, + "patch_coords": out_pc, + "queries": x, + "exec_time": end - start, + "nns": nns, + "q_embeddings": query_embeddings, + } return out @@ -173,20 +174,16 @@ if __name__ == "__main__": type=str, nargs="?", default="a painting of a virus monster playing guitar", - help="the prompt to render" + help="the prompt to render", ) parser.add_argument( - "--outdir", - type=str, - nargs="?", - help="dir to write results to", - default="outputs/txt2img-samples" + "--outdir", type=str, nargs="?", help="dir to write results to", default="outputs/txt2img-samples" ) parser.add_argument( "--skip_grid", - action='store_true', + action="store_true", help="do not save a grid, only individual samples. Helpful when evaluating lots of samples", ) @@ -206,7 +203,7 @@ if __name__ == "__main__": parser.add_argument( "--plms", - action='store_true', + action="store_true", help="use plms sampling", ) @@ -287,14 +284,14 @@ if __name__ == "__main__": parser.add_argument( "--database", type=str, - default='artbench-surrealism', + default="artbench-surrealism", choices=DATABASES, help="The database used for the search, only applied when --use_neighbors=True", ) parser.add_argument( "--use_neighbors", default=False, - action='store_true', + action="store_true", help="Include neighbors in addition to text prompt for conditioning", ) parser.add_argument( @@ -358,41 +355,43 @@ if __name__ == "__main__": uc = None if searcher is not None: nn_dict = searcher(c, opt.knn) - c = torch.cat([c, torch.from_numpy(nn_dict['nn_embeddings']).cuda()], dim=1) + c = torch.cat([c, torch.from_numpy(nn_dict["nn_embeddings"]).cuda()], dim=1) if opt.scale != 1.0: uc = torch.zeros_like(c) if isinstance(prompts, tuple): prompts = list(prompts) shape = [16, opt.H // 16, opt.W // 16] # note: currently hardcoded for f16 model - samples_ddim, _ = sampler.sample(S=opt.ddim_steps, - conditioning=c, - batch_size=c.shape[0], - shape=shape, - verbose=False, - unconditional_guidance_scale=opt.scale, - unconditional_conditioning=uc, - eta=opt.ddim_eta, - ) + samples_ddim, _ = sampler.sample( + S=opt.ddim_steps, + conditioning=c, + batch_size=c.shape[0], + shape=shape, + verbose=False, + unconditional_guidance_scale=opt.scale, + unconditional_conditioning=uc, + eta=opt.ddim_eta, + ) x_samples_ddim = model.decode_first_stage(samples_ddim) x_samples_ddim = torch.clamp((x_samples_ddim + 1.0) / 2.0, min=0.0, max=1.0) for x_sample in x_samples_ddim: - x_sample = 255. * rearrange(x_sample.cpu().numpy(), 'c h w -> h w c') + x_sample = 255.0 * rearrange(x_sample.cpu().numpy(), "c h w -> h w c") Image.fromarray(x_sample.astype(np.uint8)).save( - os.path.join(sample_path, f"{base_count:05}.png")) + os.path.join(sample_path, f"{base_count:05}.png") + ) base_count += 1 all_samples.append(x_samples_ddim) if not opt.skip_grid: # additionally, save as grid grid = torch.stack(all_samples, 0) - grid = rearrange(grid, 'n b c h w -> (n b) c h w') + grid = rearrange(grid, "n b c h w -> (n b) c h w") grid = make_grid(grid, nrow=n_rows) # to image - grid = 255. * rearrange(grid, 'c h w -> h w c').cpu().numpy() - Image.fromarray(grid.astype(np.uint8)).save(os.path.join(outpath, f'grid-{grid_count:04}.png')) + grid = 255.0 * rearrange(grid, "c h w -> h w c").cpu().numpy() + Image.fromarray(grid.astype(np.uint8)).save(os.path.join(outpath, f"grid-{grid_count:04}.png")) grid_count += 1 print(f"Your samples are ready and waiting for you here: \n{outpath} \nEnjoy.") diff --git a/scripts/orig_scripts/main.py b/scripts/orig_scripts/main.py index 6a88f84380..8269809fbc 100644 --- a/scripts/orig_scripts/main.py +++ b/scripts/orig_scripts/main.py @@ -25,15 +25,19 @@ from pytorch_lightning.utilities import rank_zero_info from ldm.data.base import Txt2ImgIterableBaseDataset from ldm.util import instantiate_from_config + def fix_func(orig): - if hasattr(torch.backends, 'mps') and torch.backends.mps.is_available(): + if hasattr(torch.backends, "mps") and torch.backends.mps.is_available(): + def new_func(*args, **kw): device = kw.get("device", "mps") - kw["device"]="cpu" + kw["device"] = "cpu" return orig(*args, **kw).to(device) + return new_func return orig + torch.rand = fix_func(torch.rand) torch.rand_like = fix_func(torch.rand_like) torch.randn = fix_func(torch.randn) @@ -43,18 +47,19 @@ torch.randint_like = fix_func(torch.randint_like) torch.bernoulli = fix_func(torch.bernoulli) torch.multinomial = fix_func(torch.multinomial) + def load_model_from_config(config, ckpt, verbose=False): - print(f'Loading model from {ckpt}') - pl_sd = torch.load(ckpt, map_location='cpu') - sd = pl_sd['state_dict'] + print(f"Loading model from {ckpt}") + pl_sd = torch.load(ckpt, map_location="cpu") + sd = pl_sd["state_dict"] config.model.params.ckpt_path = ckpt model = instantiate_from_config(config.model) m, u = model.load_state_dict(sd, strict=False) if len(m) > 0 and verbose: - print('missing keys:') + print("missing keys:") print(m) if len(u) > 0 and verbose: - print('unexpected keys:') + print("unexpected keys:") print(u) if torch.cuda.is_available(): @@ -66,132 +71,130 @@ def get_parser(**parser_kwargs): def str2bool(v): if isinstance(v, bool): return v - if v.lower() in ('yes', 'true', 't', 'y', '1'): + if v.lower() in ("yes", "true", "t", "y", "1"): return True - elif v.lower() in ('no', 'false', 'f', 'n', '0'): + elif v.lower() in ("no", "false", "f", "n", "0"): return False else: - raise argparse.ArgumentTypeError('Boolean value expected.') + raise argparse.ArgumentTypeError("Boolean value expected.") parser = argparse.ArgumentParser(**parser_kwargs) parser.add_argument( - '-n', - '--name', + "-n", + "--name", type=str, const=True, - default='', - nargs='?', - help='postfix for logdir', + default="", + nargs="?", + help="postfix for logdir", ) parser.add_argument( - '-r', - '--resume', + "-r", + "--resume", type=str, const=True, - default='', - nargs='?', - help='resume from logdir or checkpoint in logdir', + default="", + nargs="?", + help="resume from logdir or checkpoint in logdir", ) parser.add_argument( - '-b', - '--base', - nargs='*', - metavar='base_config.yaml', - help='paths to base configs. Loaded from left-to-right. ' - 'Parameters can be overwritten or added with command-line options of the form `--key value`.', + "-b", + "--base", + nargs="*", + metavar="base_config.yaml", + help="paths to base configs. Loaded from left-to-right. " + "Parameters can be overwritten or added with command-line options of the form `--key value`.", default=list(), ) parser.add_argument( - '-t', - '--train', + "-t", + "--train", type=str2bool, const=True, default=False, - nargs='?', - help='train', + nargs="?", + help="train", ) parser.add_argument( - '--no-test', + "--no-test", type=str2bool, const=True, default=False, - nargs='?', - help='disable test', + nargs="?", + help="disable test", ) + parser.add_argument("-p", "--project", help="name of new or path to existing project") parser.add_argument( - '-p', '--project', help='name of new or path to existing project' - ) - parser.add_argument( - '-d', - '--debug', + "-d", + "--debug", type=str2bool, - nargs='?', + nargs="?", const=True, default=False, - help='enable post-mortem debugging', + help="enable post-mortem debugging", ) parser.add_argument( - '-s', - '--seed', + "-s", + "--seed", type=int, default=23, - help='seed for seed_everything', + help="seed for seed_everything", ) parser.add_argument( - '-f', - '--postfix', + "-f", + "--postfix", type=str, - default='', - help='post-postfix for default name', + default="", + help="post-postfix for default name", ) parser.add_argument( - '-l', - '--logdir', + "-l", + "--logdir", type=str, - default='logs', - help='directory for logging dat shit', + default="logs", + help="directory for logging dat shit", ) parser.add_argument( - '--scale_lr', + "--scale_lr", type=str2bool, - nargs='?', + nargs="?", const=True, default=True, - help='scale base-lr by ngpu * batch_size * n_accumulate', + help="scale base-lr by ngpu * batch_size * n_accumulate", ) parser.add_argument( - '--datadir_in_name', + "--datadir_in_name", type=str2bool, - nargs='?', + nargs="?", const=True, default=True, - help='Prepend the final directory in the data_root to the output directory name', + help="Prepend the final directory in the data_root to the output directory name", ) parser.add_argument( - '--actual_resume', + "--actual_resume", type=str, - default='', - help='Path to model to actually resume from', + default="", + help="Path to model to actually resume from", ) parser.add_argument( - '--data_root', + "--data_root", type=str, required=True, - help='Path to directory with training images', + help="Path to directory with training images", ) parser.add_argument( - '--embedding_manager_ckpt', + "--embedding_manager_ckpt", type=str, - default='', - help='Initialize embedding manager from a checkpoint', + default="", + help="Initialize embedding manager from a checkpoint", ) parser.add_argument( - '--init_word', + "--init_word", type=str, - help='Word to use as source for initial token embedding.', + help="Word to use as source for initial token embedding.", ) return parser @@ -226,9 +229,7 @@ def worker_init_fn(_): if isinstance(dataset, Txt2ImgIterableBaseDataset): split_size = dataset.num_records // worker_info.num_workers # reset num_records to the true number to retain reliable length information - dataset.sample_ids = dataset.valid_ids[ - worker_id * split_size : (worker_id + 1) * split_size - ] + dataset.sample_ids = dataset.valid_ids[worker_id * split_size : (worker_id + 1) * split_size] current_id = np.random.choice(len(np.random.get_state()[1]), 1) return np.random.seed(np.random.get_state()[1][current_id] + worker_id) else: @@ -252,25 +253,19 @@ class DataModuleFromConfig(pl.LightningDataModule): super().__init__() self.batch_size = batch_size self.dataset_configs = dict() - self.num_workers = ( - num_workers if num_workers is not None else batch_size * 2 - ) + self.num_workers = num_workers if num_workers is not None else batch_size * 2 self.use_worker_init_fn = use_worker_init_fn if train is not None: - self.dataset_configs['train'] = train + self.dataset_configs["train"] = train self.train_dataloader = self._train_dataloader if validation is not None: - self.dataset_configs['validation'] = validation - self.val_dataloader = partial( - self._val_dataloader, shuffle=shuffle_val_dataloader - ) + self.dataset_configs["validation"] = validation + self.val_dataloader = partial(self._val_dataloader, shuffle=shuffle_val_dataloader) if test is not None: - self.dataset_configs['test'] = test - self.test_dataloader = partial( - self._test_dataloader, shuffle=shuffle_test_loader - ) + self.dataset_configs["test"] = test + self.test_dataloader = partial(self._test_dataloader, shuffle=shuffle_test_loader) if predict is not None: - self.dataset_configs['predict'] = predict + self.dataset_configs["predict"] = predict self.predict_dataloader = self._predict_dataloader self.wrap = wrap @@ -279,24 +274,19 @@ class DataModuleFromConfig(pl.LightningDataModule): instantiate_from_config(data_cfg) def setup(self, stage=None): - self.datasets = dict( - (k, instantiate_from_config(self.dataset_configs[k])) - for k in self.dataset_configs - ) + self.datasets = dict((k, instantiate_from_config(self.dataset_configs[k])) for k in self.dataset_configs) if self.wrap: for k in self.datasets: self.datasets[k] = WrappedDataset(self.datasets[k]) def _train_dataloader(self): - is_iterable_dataset = isinstance( - self.datasets['train'], Txt2ImgIterableBaseDataset - ) + is_iterable_dataset = isinstance(self.datasets["train"], Txt2ImgIterableBaseDataset) if is_iterable_dataset or self.use_worker_init_fn: init_fn = worker_init_fn else: init_fn = None return DataLoader( - self.datasets['train'], + self.datasets["train"], batch_size=self.batch_size, num_workers=self.num_workers, shuffle=False if is_iterable_dataset else True, @@ -304,15 +294,12 @@ class DataModuleFromConfig(pl.LightningDataModule): ) def _val_dataloader(self, shuffle=False): - if ( - isinstance(self.datasets['validation'], Txt2ImgIterableBaseDataset) - or self.use_worker_init_fn - ): + if isinstance(self.datasets["validation"], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn: init_fn = worker_init_fn else: init_fn = None return DataLoader( - self.datasets['validation'], + self.datasets["validation"], batch_size=self.batch_size, num_workers=self.num_workers, worker_init_fn=init_fn, @@ -320,9 +307,7 @@ class DataModuleFromConfig(pl.LightningDataModule): ) def _test_dataloader(self, shuffle=False): - is_iterable_dataset = isinstance( - self.datasets['train'], Txt2ImgIterableBaseDataset - ) + is_iterable_dataset = isinstance(self.datasets["train"], Txt2ImgIterableBaseDataset) if is_iterable_dataset or self.use_worker_init_fn: init_fn = worker_init_fn else: @@ -332,7 +317,7 @@ class DataModuleFromConfig(pl.LightningDataModule): shuffle = shuffle and (not is_iterable_dataset) return DataLoader( - self.datasets['test'], + self.datasets["test"], batch_size=self.batch_size, num_workers=self.num_workers, worker_init_fn=init_fn, @@ -340,15 +325,12 @@ class DataModuleFromConfig(pl.LightningDataModule): ) def _predict_dataloader(self, shuffle=False): - if ( - isinstance(self.datasets['predict'], Txt2ImgIterableBaseDataset) - or self.use_worker_init_fn - ): + if isinstance(self.datasets["predict"], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn: init_fn = worker_init_fn else: init_fn = None return DataLoader( - self.datasets['predict'], + self.datasets["predict"], batch_size=self.batch_size, num_workers=self.num_workers, worker_init_fn=init_fn, @@ -356,9 +338,7 @@ class DataModuleFromConfig(pl.LightningDataModule): class SetupCallback(Callback): - def __init__( - self, resume, now, logdir, ckptdir, cfgdir, config, lightning_config - ): + def __init__(self, resume, now, logdir, ckptdir, cfgdir, config, lightning_config): super().__init__() self.resume = resume self.now = now @@ -370,8 +350,8 @@ class SetupCallback(Callback): def on_keyboard_interrupt(self, trainer, pl_module): if trainer.global_rank == 0: - print('Summoning checkpoint.') - ckpt_path = os.path.join(self.ckptdir, 'last.ckpt') + print("Summoning checkpoint.") + ckpt_path = os.path.join(self.ckptdir, "last.ckpt") trainer.save_checkpoint(ckpt_path) def on_pretrain_routine_start(self, trainer, pl_module): @@ -381,36 +361,31 @@ class SetupCallback(Callback): os.makedirs(self.ckptdir, exist_ok=True) os.makedirs(self.cfgdir, exist_ok=True) - if 'callbacks' in self.lightning_config: - if ( - 'metrics_over_trainsteps_checkpoint' - in self.lightning_config['callbacks'] - ): + if "callbacks" in self.lightning_config: + if "metrics_over_trainsteps_checkpoint" in self.lightning_config["callbacks"]: os.makedirs( - os.path.join(self.ckptdir, 'trainstep_checkpoints'), + os.path.join(self.ckptdir, "trainstep_checkpoints"), exist_ok=True, ) - print('Project config') + print("Project config") print(OmegaConf.to_yaml(self.config)) OmegaConf.save( self.config, - os.path.join(self.cfgdir, '{}-project.yaml'.format(self.now)), + os.path.join(self.cfgdir, "{}-project.yaml".format(self.now)), ) - print('Lightning config') + print("Lightning config") print(OmegaConf.to_yaml(self.lightning_config)) OmegaConf.save( - OmegaConf.create({'lightning': self.lightning_config}), - os.path.join( - self.cfgdir, '{}-lightning.yaml'.format(self.now) - ), + OmegaConf.create({"lightning": self.lightning_config}), + os.path.join(self.cfgdir, "{}-lightning.yaml".format(self.now)), ) else: # ModelCheckpoint callback created log directory --- remove it if not self.resume and os.path.exists(self.logdir): dst, name = os.path.split(self.logdir) - dst = os.path.join(dst, 'child_runs', name) + dst = os.path.join(dst, "child_runs", name) os.makedirs(os.path.split(dst)[0], exist_ok=True) try: os.rename(self.logdir, dst) @@ -435,10 +410,8 @@ class ImageLogger(Callback): self.rescale = rescale self.batch_freq = batch_frequency self.max_images = max_images - self.logger_log_images = { } - self.log_steps = [ - 2**n for n in range(int(np.log2(self.batch_freq)) + 1) - ] + self.logger_log_images = {} + self.log_steps = [2**n for n in range(int(np.log2(self.batch_freq)) + 1)] if not increase_log_steps: self.log_steps = [self.batch_freq] self.clamp = clamp @@ -448,10 +421,8 @@ class ImageLogger(Callback): self.log_first_step = log_first_step @rank_zero_only - def log_local( - self, save_dir, split, images, global_step, current_epoch, batch_idx - ): - root = os.path.join(save_dir, 'images', split) + def log_local(self, save_dir, split, images, global_step, current_epoch, batch_idx): + root = os.path.join(save_dir, "images", split) for k in images: grid = torchvision.utils.make_grid(images[k], nrow=4) if self.rescale: @@ -459,22 +430,16 @@ class ImageLogger(Callback): grid = grid.transpose(0, 1).transpose(1, 2).squeeze(-1) grid = grid.numpy() grid = (grid * 255).astype(np.uint8) - filename = '{}_gs-{:06}_e-{:06}_b-{:06}.png'.format( - k, global_step, current_epoch, batch_idx - ) + filename = "{}_gs-{:06}_e-{:06}_b-{:06}.png".format(k, global_step, current_epoch, batch_idx) path = os.path.join(root, filename) os.makedirs(os.path.split(path)[0], exist_ok=True) Image.fromarray(grid).save(path) - def log_img(self, pl_module, batch, batch_idx, split='train'): - check_idx = ( - batch_idx if self.log_on_batch_idx else pl_module.global_step - ) + def log_img(self, pl_module, batch, batch_idx, split="train"): + check_idx = batch_idx if self.log_on_batch_idx else pl_module.global_step if ( self.check_frequency(check_idx) - and hasattr( # batch_idx % self.batch_freq == 0 - pl_module, 'log_images' - ) + and hasattr(pl_module, "log_images") # batch_idx % self.batch_freq == 0 and callable(pl_module.log_images) and self.max_images > 0 ): @@ -485,9 +450,7 @@ class ImageLogger(Callback): pl_module.eval() with torch.no_grad(): - images = pl_module.log_images( - batch, split=split, **self.log_images_kwargs - ) + images = pl_module.log_images(batch, split=split, **self.log_images_kwargs) for k in images: N = min(images[k].shape[0], self.max_images) @@ -506,18 +469,16 @@ class ImageLogger(Callback): batch_idx, ) - logger_log_images = self.logger_log_images.get( - logger, lambda *args, **kwargs: None - ) + logger_log_images = self.logger_log_images.get(logger, lambda *args, **kwargs: None) logger_log_images(pl_module, images, pl_module.global_step, split) if is_train: pl_module.train() def check_frequency(self, check_idx): - if ( - (check_idx % self.batch_freq) == 0 or (check_idx in self.log_steps) - ) and (check_idx > 0 or self.log_first_step): + if ((check_idx % self.batch_freq) == 0 or (check_idx in self.log_steps)) and ( + check_idx > 0 or self.log_first_step + ): try: self.log_steps.pop(0) except IndexError as e: @@ -526,23 +487,15 @@ class ImageLogger(Callback): return True return False - def on_train_batch_end( - self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx=None - ): - if not self.disabled and ( - pl_module.global_step > 0 or self.log_first_step - ): - self.log_img(pl_module, batch, batch_idx, split='train') + def on_train_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx=None): + if not self.disabled and (pl_module.global_step > 0 or self.log_first_step): + self.log_img(pl_module, batch, batch_idx, split="train") - def on_validation_batch_end( - self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx=None - ): + def on_validation_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx=None): if not self.disabled and pl_module.global_step > 0: - self.log_img(pl_module, batch, batch_idx, split='val') - if hasattr(pl_module, 'calibrate_grad_norm'): - if ( - pl_module.calibrate_grad_norm and batch_idx % 25 == 0 - ) and batch_idx > 0: + self.log_img(pl_module, batch, batch_idx, split="val") + if hasattr(pl_module, "calibrate_grad_norm"): + if (pl_module.calibrate_grad_norm and batch_idx % 25 == 0) and batch_idx > 0: self.log_gradients(trainer, pl_module, batch_idx=batch_idx) @@ -562,19 +515,17 @@ class CUDACallback(Callback): try: epoch_time = trainer.training_type_plugin.reduce(epoch_time) - rank_zero_info(f'Average Epoch time: {epoch_time:.2f} seconds') + rank_zero_info(f"Average Epoch time: {epoch_time:.2f} seconds") if torch.cuda.is_available(): - max_memory = ( - torch.cuda.max_memory_allocated(trainer.root_gpu) / 2**20 - ) + max_memory = torch.cuda.max_memory_allocated(trainer.root_gpu) / 2**20 max_memory = trainer.training_type_plugin.reduce(max_memory) - rank_zero_info(f'Average Peak memory {max_memory:.2f}MiB') + rank_zero_info(f"Average Peak memory {max_memory:.2f}MiB") except AttributeError: pass -class ModeSwapCallback(Callback): +class ModeSwapCallback(Callback): def __init__(self, swap_step=2000): super().__init__() self.is_frozen = False @@ -589,7 +540,8 @@ class ModeSwapCallback(Callback): self.is_frozen = False trainer.optimizers = [pl_module.configure_opt_model()] -if __name__ == '__main__': + +if __name__ == "__main__": # custom parser to specify config files, train, test and debug mode, # postfix, resume. # `--key value` arguments are interpreted as arguments to the trainer. @@ -631,7 +583,7 @@ if __name__ == '__main__': # params: # key: value - now = datetime.datetime.now().strftime('%Y-%m-%dT%H-%M-%S') + now = datetime.datetime.now().strftime("%Y-%m-%dT%H-%M-%S") # add cwd for convenience and to make classes in this file available when # running as `python main.py` @@ -644,50 +596,47 @@ if __name__ == '__main__': opt, unknown = parser.parse_known_args() if opt.name and opt.resume: raise ValueError( - '-n/--name and -r/--resume cannot be specified both.' - 'If you want to resume training in a new log folder, ' - 'use -n/--name in combination with --resume_from_checkpoint' + "-n/--name and -r/--resume cannot be specified both." + "If you want to resume training in a new log folder, " + "use -n/--name in combination with --resume_from_checkpoint" ) if opt.resume: if not os.path.exists(opt.resume): - raise ValueError('Cannot find {}'.format(opt.resume)) + raise ValueError("Cannot find {}".format(opt.resume)) if os.path.isfile(opt.resume): - paths = opt.resume.split('/') + paths = opt.resume.split("/") # idx = len(paths)-paths[::-1].index("logs")+1 # logdir = "/".join(paths[:idx]) - logdir = '/'.join(paths[:-2]) + logdir = "/".join(paths[:-2]) ckpt = opt.resume else: assert os.path.isdir(opt.resume), opt.resume - logdir = opt.resume.rstrip('/') - ckpt = os.path.join(logdir, 'checkpoints', 'last.ckpt') + logdir = opt.resume.rstrip("/") + ckpt = os.path.join(logdir, "checkpoints", "last.ckpt") opt.resume_from_checkpoint = ckpt - base_configs = sorted( - glob.glob(os.path.join(logdir, 'configs/*.yaml')) - ) + base_configs = sorted(glob.glob(os.path.join(logdir, "configs/*.yaml"))) opt.base = base_configs + opt.base - _tmp = logdir.split('/') + _tmp = logdir.split("/") nowname = _tmp[-1] else: if opt.name: - name = '_' + opt.name + name = "_" + opt.name elif opt.base: cfg_fname = os.path.split(opt.base[0])[-1] cfg_name = os.path.splitext(cfg_fname)[0] - name = '_' + cfg_name + name = "_" + cfg_name else: - name = '' + name = "" if opt.datadir_in_name: now = os.path.basename(os.path.normpath(opt.data_root)) + now - nowname = now + name + opt.postfix logdir = os.path.join(opt.logdir, nowname) - ckptdir = os.path.join(logdir, 'checkpoints') - cfgdir = os.path.join(logdir, 'configs') + ckptdir = os.path.join(logdir, "checkpoints") + cfgdir = os.path.join(logdir, "configs") seed_everything(opt.seed) try: @@ -695,19 +644,19 @@ if __name__ == '__main__': configs = [OmegaConf.load(cfg) for cfg in opt.base] cli = OmegaConf.from_dotlist(unknown) config = OmegaConf.merge(*configs, cli) - lightning_config = config.pop('lightning', OmegaConf.create()) + lightning_config = config.pop("lightning", OmegaConf.create()) # merge trainer cli with config - trainer_config = lightning_config.get('trainer', OmegaConf.create()) + trainer_config = lightning_config.get("trainer", OmegaConf.create()) # default to ddp - trainer_config['accelerator'] = 'auto' + trainer_config["accelerator"] = "auto" for k in nondefault_trainer_args(opt): trainer_config[k] = getattr(opt, k) - if not 'gpus' in trainer_config: - del trainer_config['accelerator'] + if not "gpus" in trainer_config: + del trainer_config["accelerator"] cpu = True else: - gpuinfo = trainer_config['gpus'] - print(f'Running on GPUs {gpuinfo}') + gpuinfo = trainer_config["gpus"] + print(f"Running on GPUs {gpuinfo}") cpu = False trainer_opt = argparse.Namespace(**trainer_config) lightning_config.trainer = trainer_config @@ -715,9 +664,7 @@ if __name__ == '__main__': # model # config.model.params.personalization_config.params.init_word = opt.init_word - config.model.params.personalization_config.params.embedding_manager_ckpt = ( - opt.embedding_manager_ckpt - ) + config.model.params.personalization_config.params.embedding_manager_ckpt = opt.embedding_manager_ckpt if opt.init_word: config.model.params.personalization_config.params.initializer_words = [opt.init_word] @@ -731,142 +678,128 @@ if __name__ == '__main__': trainer_kwargs = dict() # default logger configs - def_logger = 'csv' - def_logger_target = 'CSVLogger' + def_logger = "csv" + def_logger_target = "CSVLogger" default_logger_cfgs = { - 'wandb': { - 'target': 'pytorch_lightning.loggers.WandbLogger', - 'params': { - 'name': nowname, - 'save_dir': logdir, - 'offline': opt.debug, - 'id': nowname, + "wandb": { + "target": "pytorch_lightning.loggers.WandbLogger", + "params": { + "name": nowname, + "save_dir": logdir, + "offline": opt.debug, + "id": nowname, }, }, def_logger: { - 'target': 'pytorch_lightning.loggers.' + def_logger_target, - 'params': { - 'name': def_logger, - 'save_dir': logdir, + "target": "pytorch_lightning.loggers." + def_logger_target, + "params": { + "name": def_logger, + "save_dir": logdir, }, }, } default_logger_cfg = default_logger_cfgs[def_logger] - if 'logger' in lightning_config: + if "logger" in lightning_config: logger_cfg = lightning_config.logger else: logger_cfg = OmegaConf.create() logger_cfg = OmegaConf.merge(default_logger_cfg, logger_cfg) - trainer_kwargs['logger'] = instantiate_from_config(logger_cfg) + trainer_kwargs["logger"] = instantiate_from_config(logger_cfg) # modelcheckpoint - use TrainResult/EvalResult(checkpoint_on=metric) to # specify which metric is used to determine best models default_modelckpt_cfg = { - 'target': 'pytorch_lightning.callbacks.ModelCheckpoint', - 'params': { - 'dirpath': ckptdir, - 'filename': '{epoch:06}', - 'verbose': True, - 'save_last': True, + "target": "pytorch_lightning.callbacks.ModelCheckpoint", + "params": { + "dirpath": ckptdir, + "filename": "{epoch:06}", + "verbose": True, + "save_last": True, }, } - if hasattr(model, 'monitor'): - print(f'Monitoring {model.monitor} as checkpoint metric.') - default_modelckpt_cfg['params']['monitor'] = model.monitor - default_modelckpt_cfg['params']['save_top_k'] = 1 + if hasattr(model, "monitor"): + print(f"Monitoring {model.monitor} as checkpoint metric.") + default_modelckpt_cfg["params"]["monitor"] = model.monitor + default_modelckpt_cfg["params"]["save_top_k"] = 1 - if 'modelcheckpoint' in lightning_config: + if "modelcheckpoint" in lightning_config: modelckpt_cfg = lightning_config.modelcheckpoint else: modelckpt_cfg = OmegaConf.create() modelckpt_cfg = OmegaConf.merge(default_modelckpt_cfg, modelckpt_cfg) - print(f'Merged modelckpt-cfg: \n{modelckpt_cfg}') - if version.parse(pl.__version__) < version.parse('1.4.0'): - trainer_kwargs['checkpoint_callback'] = instantiate_from_config( - modelckpt_cfg - ) + print(f"Merged modelckpt-cfg: \n{modelckpt_cfg}") + if version.parse(pl.__version__) < version.parse("1.4.0"): + trainer_kwargs["checkpoint_callback"] = instantiate_from_config(modelckpt_cfg) # add callback which sets up log directory default_callbacks_cfg = { - 'setup_callback': { - 'target': 'main.SetupCallback', - 'params': { - 'resume': opt.resume, - 'now': now, - 'logdir': logdir, - 'ckptdir': ckptdir, - 'cfgdir': cfgdir, - 'config': config, - 'lightning_config': lightning_config, + "setup_callback": { + "target": "main.SetupCallback", + "params": { + "resume": opt.resume, + "now": now, + "logdir": logdir, + "ckptdir": ckptdir, + "cfgdir": cfgdir, + "config": config, + "lightning_config": lightning_config, }, }, - 'image_logger': { - 'target': 'main.ImageLogger', - 'params': { - 'batch_frequency': 750, - 'max_images': 4, - 'clamp': True, + "image_logger": { + "target": "main.ImageLogger", + "params": { + "batch_frequency": 750, + "max_images": 4, + "clamp": True, }, }, - 'learning_rate_logger': { - 'target': 'main.LearningRateMonitor', - 'params': { - 'logging_interval': 'step', + "learning_rate_logger": { + "target": "main.LearningRateMonitor", + "params": { + "logging_interval": "step", # "log_momentum": True }, }, - 'cuda_callback': {'target': 'main.CUDACallback'}, + "cuda_callback": {"target": "main.CUDACallback"}, } - if version.parse(pl.__version__) >= version.parse('1.4.0'): - default_callbacks_cfg.update( - {'checkpoint_callback': modelckpt_cfg} - ) + if version.parse(pl.__version__) >= version.parse("1.4.0"): + default_callbacks_cfg.update({"checkpoint_callback": modelckpt_cfg}) - if 'callbacks' in lightning_config: + if "callbacks" in lightning_config: callbacks_cfg = lightning_config.callbacks else: callbacks_cfg = OmegaConf.create() - if 'metrics_over_trainsteps_checkpoint' in callbacks_cfg: + if "metrics_over_trainsteps_checkpoint" in callbacks_cfg: print( - 'Caution: Saving checkpoints every n train steps without deleting. This might require some free space.' + "Caution: Saving checkpoints every n train steps without deleting. This might require some free space." ) default_metrics_over_trainsteps_ckpt_dict = { - 'metrics_over_trainsteps_checkpoint': { - 'target': 'pytorch_lightning.callbacks.ModelCheckpoint', - 'params': { - 'dirpath': os.path.join( - ckptdir, 'trainstep_checkpoints' - ), - 'filename': '{epoch:06}-{step:09}', - 'verbose': True, - 'save_top_k': -1, - 'every_n_train_steps': 10000, - 'save_weights_only': True, + "metrics_over_trainsteps_checkpoint": { + "target": "pytorch_lightning.callbacks.ModelCheckpoint", + "params": { + "dirpath": os.path.join(ckptdir, "trainstep_checkpoints"), + "filename": "{epoch:06}-{step:09}", + "verbose": True, + "save_top_k": -1, + "every_n_train_steps": 10000, + "save_weights_only": True, }, } } - default_callbacks_cfg.update( - default_metrics_over_trainsteps_ckpt_dict - ) + default_callbacks_cfg.update(default_metrics_over_trainsteps_ckpt_dict) callbacks_cfg = OmegaConf.merge(default_callbacks_cfg, callbacks_cfg) - if 'ignore_keys_callback' in callbacks_cfg and hasattr( - trainer_opt, 'resume_from_checkpoint' - ): - callbacks_cfg.ignore_keys_callback.params[ - 'ckpt_path' - ] = trainer_opt.resume_from_checkpoint - elif 'ignore_keys_callback' in callbacks_cfg: - del callbacks_cfg['ignore_keys_callback'] + if "ignore_keys_callback" in callbacks_cfg and hasattr(trainer_opt, "resume_from_checkpoint"): + callbacks_cfg.ignore_keys_callback.params["ckpt_path"] = trainer_opt.resume_from_checkpoint + elif "ignore_keys_callback" in callbacks_cfg: + del callbacks_cfg["ignore_keys_callback"] - trainer_kwargs['callbacks'] = [ - instantiate_from_config(callbacks_cfg[k]) for k in callbacks_cfg - ] - trainer_kwargs['max_steps'] = trainer_opt.max_steps + trainer_kwargs["callbacks"] = [instantiate_from_config(callbacks_cfg[k]) for k in callbacks_cfg] + trainer_kwargs["max_steps"] = trainer_opt.max_steps - if hasattr(torch.backends, 'mps') and torch.backends.mps.is_available(): - trainer_opt.accelerator = 'mps' + if hasattr(torch.backends, "mps") and torch.backends.mps.is_available(): + trainer_opt.accelerator = "mps" trainer_opt.detect_anomaly = False trainer = Trainer.from_argparse_args(trainer_opt, **trainer_kwargs) @@ -882,11 +815,9 @@ if __name__ == '__main__': # lightning still takes care of proper multiprocessing though data.prepare_data() data.setup() - print('#### Data #####') + print("#### Data #####") for k in data.datasets: - print( - f'{k}, {data.datasets[k].__class__.__name__}, {len(data.datasets[k])}' - ) + print(f"{k}, {data.datasets[k].__class__.__name__}, {len(data.datasets[k])}") # configure learning rate bs, base_lr = ( @@ -894,24 +825,20 @@ if __name__ == '__main__': config.model.base_learning_rate, ) if not cpu: - gpus = str(lightning_config.trainer.gpus).strip(', ').split(',') + gpus = str(lightning_config.trainer.gpus).strip(", ").split(",") ngpu = len(gpus) else: ngpu = 1 - if 'accumulate_grad_batches' in lightning_config.trainer: - accumulate_grad_batches = ( - lightning_config.trainer.accumulate_grad_batches - ) + if "accumulate_grad_batches" in lightning_config.trainer: + accumulate_grad_batches = lightning_config.trainer.accumulate_grad_batches else: accumulate_grad_batches = 1 - print(f'accumulate_grad_batches = {accumulate_grad_batches}') - lightning_config.trainer.accumulate_grad_batches = ( - accumulate_grad_batches - ) + print(f"accumulate_grad_batches = {accumulate_grad_batches}") + lightning_config.trainer.accumulate_grad_batches = accumulate_grad_batches if opt.scale_lr: model.learning_rate = accumulate_grad_batches * ngpu * bs * base_lr print( - 'Setting learning rate to {:.2e} = {} (accumulate_grad_batches) * {} (num_gpus) * {} (batchsize) * {:.2e} (base_lr)'.format( + "Setting learning rate to {:.2e} = {} (accumulate_grad_batches) * {} (num_gpus) * {} (batchsize) * {:.2e} (base_lr)".format( model.learning_rate, accumulate_grad_batches, ngpu, @@ -921,15 +848,15 @@ if __name__ == '__main__': ) else: model.learning_rate = base_lr - print('++++ NOT USING LR SCALING ++++') - print(f'Setting learning rate to {model.learning_rate:.2e}') + print("++++ NOT USING LR SCALING ++++") + print(f"Setting learning rate to {model.learning_rate:.2e}") # allow checkpointing via USR1 def melk(*args, **kwargs): # run all checkpoint hooks if trainer.global_rank == 0: - print('Summoning checkpoint.') - ckpt_path = os.path.join(ckptdir, 'last.ckpt') + print("Summoning checkpoint.") + ckpt_path = os.path.join(ckptdir, "last.ckpt") trainer.save_checkpoint(ckpt_path) def divein(*args, **kwargs): @@ -964,7 +891,7 @@ if __name__ == '__main__': # move newly created debug project to debug_runs if opt.debug and not opt.resume and trainer.global_rank == 0: dst, name = os.path.split(logdir) - dst = os.path.join(dst, 'debug_runs', name) + dst = os.path.join(dst, "debug_runs", name) os.makedirs(os.path.split(dst)[0], exist_ok=True) os.rename(logdir, dst) # if trainer.global_rank == 0: diff --git a/scripts/orig_scripts/merge_embeddings.py b/scripts/orig_scripts/merge_embeddings.py index 97e72f9128..c2cf1acb1a 100755 --- a/scripts/orig_scripts/merge_embeddings.py +++ b/scripts/orig_scripts/merge_embeddings.py @@ -7,21 +7,30 @@ from functools import partial import torch -def get_placeholder_loop(placeholder_string, embedder, use_bert): - new_placeholder = None +def get_placeholder_loop(placeholder_string, embedder, use_bert): + new_placeholder = None while True: if new_placeholder is None: - new_placeholder = input(f"Placeholder string {placeholder_string} was already used. Please enter a replacement string: ") + new_placeholder = input( + f"Placeholder string {placeholder_string} was already used. Please enter a replacement string: " + ) else: - new_placeholder = input(f"Placeholder string '{new_placeholder}' maps to more than a single token. Please enter another string: ") + new_placeholder = input( + f"Placeholder string '{new_placeholder}' maps to more than a single token. Please enter another string: " + ) - token = get_bert_token_for_string(embedder.tknz_fn, new_placeholder) if use_bert else get_clip_token_for_string(embedder.tokenizer, new_placeholder) + token = ( + get_bert_token_for_string(embedder.tknz_fn, new_placeholder) + if use_bert + else get_clip_token_for_string(embedder.tokenizer, new_placeholder) + ) if token is not None: return new_placeholder, token + def get_clip_token_for_string(tokenizer, string): batch_encoding = tokenizer( string, @@ -30,7 +39,7 @@ def get_clip_token_for_string(tokenizer, string): return_length=True, return_overflowing_tokens=False, padding="max_length", - return_tensors="pt" + return_tensors="pt", ) tokens = batch_encoding["input_ids"] @@ -40,6 +49,7 @@ def get_clip_token_for_string(tokenizer, string): return None + def get_bert_token_for_string(tokenizer, string): token = tokenizer(string) if torch.count_nonzero(token) == 3: @@ -49,22 +59,17 @@ def get_bert_token_for_string(tokenizer, string): if __name__ == "__main__": - parser = argparse.ArgumentParser() parser.add_argument( "--root_dir", type=str, - default='.', - help="Path to the InvokeAI install directory containing 'models', 'outputs' and 'configs'." + default=".", + help="Path to the InvokeAI install directory containing 'models', 'outputs' and 'configs'.", ) parser.add_argument( - "--manager_ckpts", - type=str, - nargs="+", - required=True, - help="Paths to a set of embedding managers to be merged." + "--manager_ckpts", type=str, nargs="+", required=True, help="Paths to a set of embedding managers to be merged." ) parser.add_argument( @@ -75,13 +80,14 @@ if __name__ == "__main__": ) parser.add_argument( - "-sd", "--use_bert", + "-sd", + "--use_bert", action="store_true", - help="Flag to denote that we are not merging stable diffusion embeddings" + help="Flag to denote that we are not merging stable diffusion embeddings", ) args = parser.parse_args() - Globals.root=args.root_dir + Globals.root = args.root_dir if args.use_bert: embedder = BERTEmbedder(n_embed=1280, n_layer=32).cuda() diff --git a/scripts/orig_scripts/sample_diffusion.py b/scripts/orig_scripts/sample_diffusion.py index 876fe3c364..9f08b6702a 100644 --- a/scripts/orig_scripts/sample_diffusion.py +++ b/scripts/orig_scripts/sample_diffusion.py @@ -10,12 +10,13 @@ from PIL import Image from ldm.models.diffusion.ddim import DDIMSampler from ldm.util import instantiate_from_config -rescale = lambda x: (x + 1.) / 2. +rescale = lambda x: (x + 1.0) / 2.0 + def custom_to_pil(x): x = x.detach().cpu() - x = torch.clamp(x, -1., 1.) - x = (x + 1.) / 2. + x = torch.clamp(x, -1.0, 1.0) + x = (x + 1.0) / 2.0 x = x.permute(1, 2, 0).numpy() x = (255 * x).astype(np.uint8) x = Image.fromarray(x) @@ -51,49 +52,51 @@ def logs2pil(logs, keys=["sample"]): @torch.no_grad() -def convsample(model, shape, return_intermediates=True, - verbose=True, - make_prog_row=False): - - +def convsample(model, shape, return_intermediates=True, verbose=True, make_prog_row=False): if not make_prog_row: - return model.p_sample_loop(None, shape, - return_intermediates=return_intermediates, verbose=verbose) + return model.p_sample_loop(None, shape, return_intermediates=return_intermediates, verbose=verbose) else: - return model.progressive_denoising( - None, shape, verbose=True - ) + return model.progressive_denoising(None, shape, verbose=True) @torch.no_grad() -def convsample_ddim(model, steps, shape, eta=1.0 - ): +def convsample_ddim(model, steps, shape, eta=1.0): ddim = DDIMSampler(model) bs = shape[0] shape = shape[1:] - samples, intermediates = ddim.sample(steps, batch_size=bs, shape=shape, eta=eta, verbose=False,) + samples, intermediates = ddim.sample( + steps, + batch_size=bs, + shape=shape, + eta=eta, + verbose=False, + ) return samples, intermediates @torch.no_grad() -def make_convolutional_sample(model, batch_size, vanilla=False, custom_steps=None, eta=1.0,): - - +def make_convolutional_sample( + model, + batch_size, + vanilla=False, + custom_steps=None, + eta=1.0, +): log = dict() - shape = [batch_size, - model.model.diffusion_model.in_channels, - model.model.diffusion_model.image_size, - model.model.diffusion_model.image_size] + shape = [ + batch_size, + model.model.diffusion_model.in_channels, + model.model.diffusion_model.image_size, + model.model.diffusion_model.image_size, + ] with model.ema_scope("Plotting"): t0 = time.time() if vanilla: - sample, progrow = convsample(model, shape, - make_prog_row=True) + sample, progrow = convsample(model, shape, make_prog_row=True) else: - sample, intermediates = convsample_ddim(model, steps=custom_steps, shape=shape, - eta=eta) + sample, intermediates = convsample_ddim(model, steps=custom_steps, shape=shape, eta=eta) t1 = time.time() @@ -101,32 +104,32 @@ def make_convolutional_sample(model, batch_size, vanilla=False, custom_steps=Non log["sample"] = x_sample log["time"] = t1 - t0 - log['throughput'] = sample.shape[0] / (t1 - t0) + log["throughput"] = sample.shape[0] / (t1 - t0) print(f'Throughput for this batch: {log["throughput"]}') return log + def run(model, logdir, batch_size=50, vanilla=False, custom_steps=None, eta=None, n_samples=50000, nplog=None): if vanilla: - print(f'Using Vanilla DDPM sampling with {model.num_timesteps} sampling steps.') + print(f"Using Vanilla DDPM sampling with {model.num_timesteps} sampling steps.") else: - print(f'Using DDIM sampling with {custom_steps} sampling steps and eta={eta}') - + print(f"Using DDIM sampling with {custom_steps} sampling steps and eta={eta}") tstart = time.time() - n_saved = len(glob.glob(os.path.join(logdir,'*.png')))-1 + n_saved = len(glob.glob(os.path.join(logdir, "*.png"))) - 1 # path = logdir if model.cond_stage_model is None: all_images = [] print(f"Running unconditional sampling for {n_samples} samples") for _ in trange(n_samples // batch_size, desc="Sampling Batches (unconditional)"): - logs = make_convolutional_sample(model, batch_size=batch_size, - vanilla=vanilla, custom_steps=custom_steps, - eta=eta) + logs = make_convolutional_sample( + model, batch_size=batch_size, vanilla=vanilla, custom_steps=custom_steps, eta=eta + ) n_saved = save_logs(logs, logdir, n_saved=n_saved, key="sample") all_images.extend([custom_to_np(logs["sample"])]) if n_saved >= n_samples: - print(f'Finish after generating {n_saved} samples') + print(f"Finish after generating {n_saved} samples") break all_img = np.concatenate(all_images, axis=0) all_img = all_img[:n_samples] @@ -135,7 +138,7 @@ def run(model, logdir, batch_size=50, vanilla=False, custom_steps=None, eta=None np.savez(nppath, all_img) else: - raise NotImplementedError('Currently only sampling for unconditional models supported.') + raise NotImplementedError("Currently only sampling for unconditional models supported.") print(f"sampling of {n_saved} images finished in {(time.time() - tstart) / 60.:.2f} minutes.") @@ -168,58 +171,33 @@ def get_parser(): nargs="?", help="load from logdir or checkpoint in logdir", ) - parser.add_argument( - "-n", - "--n_samples", - type=int, - nargs="?", - help="number of samples to draw", - default=50000 - ) + parser.add_argument("-n", "--n_samples", type=int, nargs="?", help="number of samples to draw", default=50000) parser.add_argument( "-e", "--eta", type=float, nargs="?", help="eta for ddim sampling (0.0 yields deterministic sampling)", - default=1.0 + default=1.0, ) parser.add_argument( "-v", "--vanilla_sample", default=False, - action='store_true', + action="store_true", help="vanilla sampling (default option is DDIM sampling)?", ) + parser.add_argument("-l", "--logdir", type=str, nargs="?", help="extra logdir", default="none") parser.add_argument( - "-l", - "--logdir", - type=str, - nargs="?", - help="extra logdir", - default="none" - ) - parser.add_argument( - "-c", - "--custom_steps", - type=int, - nargs="?", - help="number of steps for ddim and fastdpm sampling", - default=50 - ) - parser.add_argument( - "--batch_size", - type=int, - nargs="?", - help="the bs", - default=10 + "-c", "--custom_steps", type=int, nargs="?", help="number of steps for ddim and fastdpm sampling", default=50 ) + parser.add_argument("--batch_size", type=int, nargs="?", help="the bs", default=10) return parser def load_model_from_config(config, sd): model = instantiate_from_config(config) - model.load_state_dict(sd,strict=False) + model.load_state_dict(sd, strict=False) model.cuda() model.eval() return model @@ -233,8 +211,7 @@ def load_model(config, ckpt, gpu, eval_mode): else: pl_sd = {"state_dict": None} global_step = None - model = load_model_from_config(config.model, - pl_sd["state_dict"]) + model = load_model_from_config(config.model, pl_sd["state_dict"]) return model, global_step @@ -253,9 +230,9 @@ if __name__ == "__main__": if os.path.isfile(opt.resume): # paths = opt.resume.split("/") try: - logdir = '/'.join(opt.resume.split('/')[:-1]) + logdir = "/".join(opt.resume.split("/")[:-1]) # idx = len(paths)-paths[::-1].index("logs")+1 - print(f'Logdir is {logdir}') + print(f"Logdir is {logdir}") except ValueError: paths = opt.resume.split("/") idx = -2 # take a guess: path/to/logdir/checkpoints/model.ckpt @@ -278,7 +255,8 @@ if __name__ == "__main__": if opt.logdir != "none": locallog = logdir.split(os.sep)[-1] - if locallog == "": locallog = logdir.split(os.sep)[-2] + if locallog == "": + locallog = logdir.split(os.sep)[-2] print(f"Switching logdir from '{logdir}' to '{os.path.join(opt.logdir, locallog)}'") logdir = os.path.join(opt.logdir, locallog) @@ -301,13 +279,19 @@ if __name__ == "__main__": sampling_file = os.path.join(logdir, "sampling_config.yaml") sampling_conf = vars(opt) - with open(sampling_file, 'w') as f: + with open(sampling_file, "w") as f: yaml.dump(sampling_conf, f, default_flow_style=False) print(sampling_conf) - - run(model, imglogdir, eta=opt.eta, - vanilla=opt.vanilla_sample, n_samples=opt.n_samples, custom_steps=opt.custom_steps, - batch_size=opt.batch_size, nplog=numpylogdir) + run( + model, + imglogdir, + eta=opt.eta, + vanilla=opt.vanilla_sample, + n_samples=opt.n_samples, + custom_steps=opt.custom_steps, + batch_size=opt.batch_size, + nplog=numpylogdir, + ) print("done.") diff --git a/scripts/orig_scripts/train_searcher.py b/scripts/orig_scripts/train_searcher.py index 1e7904889c..7ba57f1165 100644 --- a/scripts/orig_scripts/train_searcher.py +++ b/scripts/orig_scripts/train_searcher.py @@ -13,21 +13,26 @@ def search_bruteforce(searcher): return searcher.score_brute_force().build() -def search_partioned_ah(searcher, dims_per_block, aiq_threshold, reorder_k, - partioning_trainsize, num_leaves, num_leaves_to_search): - return searcher.tree(num_leaves=num_leaves, - num_leaves_to_search=num_leaves_to_search, - training_sample_size=partioning_trainsize). \ - score_ah(dims_per_block, anisotropic_quantization_threshold=aiq_threshold).reorder(reorder_k).build() +def search_partioned_ah( + searcher, dims_per_block, aiq_threshold, reorder_k, partioning_trainsize, num_leaves, num_leaves_to_search +): + return ( + searcher.tree( + num_leaves=num_leaves, num_leaves_to_search=num_leaves_to_search, training_sample_size=partioning_trainsize + ) + .score_ah(dims_per_block, anisotropic_quantization_threshold=aiq_threshold) + .reorder(reorder_k) + .build() + ) def search_ah(searcher, dims_per_block, aiq_threshold, reorder_k): - return searcher.score_ah(dims_per_block, anisotropic_quantization_threshold=aiq_threshold).reorder( - reorder_k).build() + return ( + searcher.score_ah(dims_per_block, anisotropic_quantization_threshold=aiq_threshold).reorder(reorder_k).build() + ) + def load_datapool(dpath): - - def load_single_file(saved_embeddings): compressed = np.load(saved_embeddings) database = {key: compressed[key] for key in compressed.files} @@ -35,23 +40,26 @@ def load_datapool(dpath): def load_multi_files(data_archive): database = {key: [] for key in data_archive[0].files} - for d in tqdm(data_archive, desc=f'Loading datapool from {len(data_archive)} individual files.'): + for d in tqdm(data_archive, desc=f"Loading datapool from {len(data_archive)} individual files."): for key in d.files: database[key].append(d[key]) return database print(f'Load saved patch embedding from "{dpath}"') - file_content = glob.glob(os.path.join(dpath, '*.npz')) + file_content = glob.glob(os.path.join(dpath, "*.npz")) if len(file_content) == 1: data_pool = load_single_file(file_content[0]) elif len(file_content) > 1: data = [np.load(f) for f in file_content] - prefetched_data = parallel_data_prefetch(load_multi_files, data, - n_proc=min(len(data), cpu_count()), target_data_type='dict') + prefetched_data = parallel_data_prefetch( + load_multi_files, data, n_proc=min(len(data), cpu_count()), target_data_type="dict" + ) - data_pool = {key: np.concatenate([od[key] for od in prefetched_data], axis=1)[0] for key in prefetched_data[0].keys()} + data_pool = { + key: np.concatenate([od[key] for od in prefetched_data], axis=1)[0] for key in prefetched_data[0].keys() + } else: raise ValueError(f'No npz-files in specified path "{dpath}" is this directory existing?') @@ -59,16 +67,17 @@ def load_datapool(dpath): return data_pool -def train_searcher(opt, - metric='dot_product', - partioning_trainsize=None, - reorder_k=None, - # todo tune - aiq_thld=0.2, - dims_per_block=2, - num_leaves=None, - num_leaves_to_search=None,): - +def train_searcher( + opt, + metric="dot_product", + partioning_trainsize=None, + reorder_k=None, + # todo tune + aiq_thld=0.2, + dims_per_block=2, + num_leaves=None, + num_leaves_to_search=None, +): data_pool = load_datapool(opt.database) k = opt.knn @@ -77,71 +86,83 @@ def train_searcher(opt, # normalize # embeddings = - searcher = scann.scann_ops_pybind.builder(data_pool['embedding'] / np.linalg.norm(data_pool['embedding'], axis=1)[:, np.newaxis], k, metric) - pool_size = data_pool['embedding'].shape[0] + searcher = scann.scann_ops_pybind.builder( + data_pool["embedding"] / np.linalg.norm(data_pool["embedding"], axis=1)[:, np.newaxis], k, metric + ) + pool_size = data_pool["embedding"].shape[0] - print(*(['#'] * 100)) - print('Initializing scaNN searcher with the following values:') - print(f'k: {k}') - print(f'metric: {metric}') - print(f'reorder_k: {reorder_k}') - print(f'anisotropic_quantization_threshold: {aiq_thld}') - print(f'dims_per_block: {dims_per_block}') - print(*(['#'] * 100)) - print('Start training searcher....') - print(f'N samples in pool is {pool_size}') + print(*(["#"] * 100)) + print("Initializing scaNN searcher with the following values:") + print(f"k: {k}") + print(f"metric: {metric}") + print(f"reorder_k: {reorder_k}") + print(f"anisotropic_quantization_threshold: {aiq_thld}") + print(f"dims_per_block: {dims_per_block}") + print(*(["#"] * 100)) + print("Start training searcher....") + print(f"N samples in pool is {pool_size}") # this reflects the recommended design choices proposed at # https://github.com/google-research/google-research/blob/aca5f2e44e301af172590bb8e65711f0c9ee0cfd/scann/docs/algorithms.md if pool_size < 2e4: - print('Using brute force search.') + print("Using brute force search.") searcher = search_bruteforce(searcher) elif 2e4 <= pool_size and pool_size < 1e5: - print('Using asymmetric hashing search and reordering.') + print("Using asymmetric hashing search and reordering.") searcher = search_ah(searcher, dims_per_block, aiq_thld, reorder_k) else: - print('Using using partioning, asymmetric hashing search and reordering.') + print("Using using partioning, asymmetric hashing search and reordering.") if not partioning_trainsize: - partioning_trainsize = data_pool['embedding'].shape[0] // 10 + partioning_trainsize = data_pool["embedding"].shape[0] // 10 if not num_leaves: num_leaves = int(np.sqrt(pool_size)) if not num_leaves_to_search: num_leaves_to_search = max(num_leaves // 20, 1) - print('Partitioning params:') - print(f'num_leaves: {num_leaves}') - print(f'num_leaves_to_search: {num_leaves_to_search}') + print("Partitioning params:") + print(f"num_leaves: {num_leaves}") + print(f"num_leaves_to_search: {num_leaves_to_search}") # self.searcher = self.search_ah(searcher, dims_per_block, aiq_thld, reorder_k) - searcher = search_partioned_ah(searcher, dims_per_block, aiq_thld, reorder_k, - partioning_trainsize, num_leaves, num_leaves_to_search) + searcher = search_partioned_ah( + searcher, dims_per_block, aiq_thld, reorder_k, partioning_trainsize, num_leaves, num_leaves_to_search + ) - print('Finish training searcher') + print("Finish training searcher") searcher_savedir = opt.target_path os.makedirs(searcher_savedir, exist_ok=True) searcher.serialize(searcher_savedir) print(f'Saved trained searcher under "{searcher_savedir}"') -if __name__ == '__main__': + +if __name__ == "__main__": sys.path.append(os.getcwd()) parser = argparse.ArgumentParser() - parser.add_argument('--database', - '-d', - default='data/rdm/retrieval_databases/openimages', - type=str, - help='path to folder containing the clip feature of the database') - parser.add_argument('--target_path', - '-t', - default='data/rdm/searchers/openimages', - type=str, - help='path to the target folder where the searcher shall be stored.') - parser.add_argument('--knn', - '-k', - default=20, - type=int, - help='number of nearest neighbors, for which the searcher shall be optimized') + parser.add_argument( + "--database", + "-d", + default="data/rdm/retrieval_databases/openimages", + type=str, + help="path to folder containing the clip feature of the database", + ) + parser.add_argument( + "--target_path", + "-t", + default="data/rdm/searchers/openimages", + type=str, + help="path to the target folder where the searcher shall be stored.", + ) + parser.add_argument( + "--knn", + "-k", + default=20, + type=int, + help="number of nearest neighbors, for which the searcher shall be optimized", + ) - opt, _ = parser.parse_known_args() + opt, _ = parser.parse_known_args() - train_searcher(opt,) \ No newline at end of file + train_searcher( + opt, + ) diff --git a/scripts/orig_scripts/txt2img.py b/scripts/orig_scripts/txt2img.py index 0d350d2c73..58767c122d 100644 --- a/scripts/orig_scripts/txt2img.py +++ b/scripts/orig_scripts/txt2img.py @@ -15,10 +15,11 @@ from contextlib import contextmanager, nullcontext import k_diffusion as K import torch.nn as nn -from ldm.util import instantiate_from_config +from ldm.util import instantiate_from_config from ldm.models.diffusion.ddim import DDIMSampler from ldm.models.diffusion.plms import PLMSSampler -from ldm.invoke.devices import choose_torch_device +from ldm.invoke.devices import choose_torch_device + def chunk(it, size): it = iter(it) @@ -53,23 +54,19 @@ def main(): type=str, nargs="?", default="a painting of a virus monster playing guitar", - help="the prompt to render" + help="the prompt to render", ) parser.add_argument( - "--outdir", - type=str, - nargs="?", - help="dir to write results to", - default="outputs/txt2img-samples" + "--outdir", type=str, nargs="?", help="dir to write results to", default="outputs/txt2img-samples" ) parser.add_argument( "--skip_grid", - action='store_true', + action="store_true", help="do not save a grid, only individual samples. Helpful when evaluating lots of samples", ) parser.add_argument( "--skip_save", - action='store_true', + action="store_true", help="do not save individual samples. For speed measurements.", ) parser.add_argument( @@ -80,22 +77,22 @@ def main(): ) parser.add_argument( "--plms", - action='store_true', + action="store_true", help="use plms sampling", ) parser.add_argument( "--klms", - action='store_true', + action="store_true", help="use klms sampling", ) parser.add_argument( "--laion400m", - action='store_true', + action="store_true", help="uses the LAION400M model", ) parser.add_argument( "--fixed_code", - action='store_true', + action="store_true", help="if enabled, uses the same starting code across samples ", ) parser.add_argument( @@ -176,11 +173,7 @@ def main(): help="the seed (for reproducible sampling)", ) parser.add_argument( - "--precision", - type=str, - help="evaluate at this precision", - choices=["full", "autocast"], - default="autocast" + "--precision", type=str, help="evaluate at this precision", choices=["full", "autocast"], default="autocast" ) opt = parser.parse_args() @@ -190,17 +183,17 @@ def main(): opt.ckpt = "models/ldm/text2img-large/model.ckpt" opt.outdir = "outputs/txt2img-samples-laion400m" - config = OmegaConf.load(f"{opt.config}") model = load_model_from_config(config, f"{opt.ckpt}") seed_everything(opt.seed) device = torch.device(choose_torch_device()) - model = model.to(device) + model = model.to(device) - #for klms + # for klms model_wrap = K.external.CompVisDenoiser(model) + class CFGDenoiser(nn.Module): def __init__(self, model): super().__init__() @@ -232,10 +225,10 @@ def main(): print(f"reading prompts from {opt.from_file}") with open(opt.from_file, "r") as f: data = f.read().splitlines() - if (len(data) >= batch_size): + if len(data) >= batch_size: data = list(chunk(data, batch_size)) else: - while (len(data) < batch_size): + while len(data) < batch_size: data.append(data[-1]) data = [data] @@ -247,14 +240,14 @@ def main(): start_code = None if opt.fixed_code: shape = [opt.n_samples, opt.C, opt.H // opt.f, opt.W // opt.f] - if device.type == 'mps': - start_code = torch.randn(shape, device='cpu').to(device) + if device.type == "mps": + start_code = torch.randn(shape, device="cpu").to(device) else: torch.randn(shape, device=device) - precision_scope = autocast if opt.precision=="autocast" else nullcontext - if device.type in ['mps', 'cpu']: - precision_scope = nullcontext # have to use f32 on mps + precision_scope = autocast if opt.precision == "autocast" else nullcontext + if device.type in ["mps", "cpu"]: + precision_scope = nullcontext # have to use f32 on mps with torch.no_grad(): with precision_scope(device.type): with model.ema_scope(): @@ -271,23 +264,25 @@ def main(): shape = [opt.C, opt.H // opt.f, opt.W // opt.f] if not opt.klms: - samples_ddim, _ = sampler.sample(S=opt.ddim_steps, - conditioning=c, - batch_size=opt.n_samples, - shape=shape, - verbose=False, - unconditional_guidance_scale=opt.scale, - unconditional_conditioning=uc, - eta=opt.ddim_eta, - x_T=start_code) + samples_ddim, _ = sampler.sample( + S=opt.ddim_steps, + conditioning=c, + batch_size=opt.n_samples, + shape=shape, + verbose=False, + unconditional_guidance_scale=opt.scale, + unconditional_conditioning=uc, + eta=opt.ddim_eta, + x_T=start_code, + ) else: sigmas = model_wrap.get_sigmas(opt.ddim_steps) if start_code: x = start_code else: - x = torch.randn([opt.n_samples, *shape], device=device) * sigmas[0] # for GPU draw + x = torch.randn([opt.n_samples, *shape], device=device) * sigmas[0] # for GPU draw model_wrap_cfg = CFGDenoiser(model_wrap) - extra_args = {'cond': c, 'uncond': uc, 'cond_scale': opt.scale} + extra_args = {"cond": c, "uncond": uc, "cond_scale": opt.scale} samples_ddim = K.sampling.sample_lms(model_wrap_cfg, x, sigmas, extra_args=extra_args) x_samples_ddim = model.decode_first_stage(samples_ddim) @@ -295,9 +290,10 @@ def main(): if not opt.skip_save: for x_sample in x_samples_ddim: - x_sample = 255. * rearrange(x_sample.cpu().numpy(), 'c h w -> h w c') + x_sample = 255.0 * rearrange(x_sample.cpu().numpy(), "c h w -> h w c") Image.fromarray(x_sample.astype(np.uint8)).save( - os.path.join(sample_path, f"{base_count:05}.png")) + os.path.join(sample_path, f"{base_count:05}.png") + ) base_count += 1 if not opt.skip_grid: @@ -306,18 +302,17 @@ def main(): if not opt.skip_grid: # additionally, save as grid grid = torch.stack(all_samples, 0) - grid = rearrange(grid, 'n b c h w -> (n b) c h w') + grid = rearrange(grid, "n b c h w -> (n b) c h w") grid = make_grid(grid, nrow=n_rows) # to image - grid = 255. * rearrange(grid, 'c h w -> h w c').cpu().numpy() - Image.fromarray(grid.astype(np.uint8)).save(os.path.join(outpath, f'grid-{grid_count:04}.png')) + grid = 255.0 * rearrange(grid, "c h w -> h w c").cpu().numpy() + Image.fromarray(grid.astype(np.uint8)).save(os.path.join(outpath, f"grid-{grid_count:04}.png")) grid_count += 1 toc = time.time() - print(f"Your samples are ready and waiting for you here: \n{outpath} \n" - f" \nEnjoy.") + print(f"Your samples are ready and waiting for you here: \n{outpath} \n" f" \nEnjoy.") if __name__ == "__main__": diff --git a/scripts/probe-model.py b/scripts/probe-model.py new file mode 100755 index 0000000000..7281dafc3f --- /dev/null +++ b/scripts/probe-model.py @@ -0,0 +1,16 @@ +#!/bin/env python + +import argparse +import sys +from pathlib import Path +from invokeai.backend.model_management.model_probe import ModelProbe + +parser = argparse.ArgumentParser(description="Probe model type") +parser.add_argument( + "model_path", + type=Path, +) +args = parser.parse_args() + +info = ModelProbe().probe(args.model_path) +print(info) diff --git a/scripts/pypi_helper.py b/scripts/pypi_helper.py index 4dccd6383d..6c1f9b9033 100755 --- a/scripts/pypi_helper.py +++ b/scripts/pypi_helper.py @@ -5,7 +5,8 @@ import requests from invokeai.version import __version__ local_version = str(__version__).replace("-", "") -package_name = 'InvokeAI' +package_name = "InvokeAI" + def get_pypi_versions(package_name=package_name) -> list[str]: """Get the versions of the package from PyPI""" diff --git a/scripts/scan_models_directory.py b/scripts/scan_models_directory.py index 778a6c5ed5..de7278f5b7 100755 --- a/scripts/scan_models_directory.py +++ b/scripts/scan_models_directory.py @@ -1,8 +1,8 @@ #!/usr/bin/env python -''' +""" Scan the models directory and print out a new models.yaml -''' +""" import os import sys @@ -11,49 +11,51 @@ import argparse from pathlib import Path from omegaconf import OmegaConf + def main(): parser = argparse.ArgumentParser(description="Model directory scanner") - parser.add_argument('models_directory') - parser.add_argument('--all-models', - default=False, - action='store_true', - help='If true, then generates stanzas for all models; otherwise just diffusers' - ) - + parser.add_argument("models_directory") + parser.add_argument( + "--all-models", + default=False, + action="store_true", + help="If true, then generates stanzas for all models; otherwise just diffusers", + ) + args = parser.parse_args() directory = args.models_directory conf = OmegaConf.create() - conf['_version'] = '3.0.0' - + conf["_version"] = "3.0.0" + for root, dirs, files in os.walk(directory): - parents = root.split('/') - subpaths = parents[parents.index('models')+1:] + parents = root.split("/") + subpaths = parents[parents.index("models") + 1 :] if len(subpaths) < 2: continue base, model_type, *_ = subpaths - - if args.all_models or model_type=='diffusers': + + if args.all_models or model_type == "diffusers": for d in dirs: - conf[f'{base}/{model_type}/{d}'] = dict( - path = os.path.join(root,d), - description = f'{model_type} model {d}', - format = 'folder', - base = base, + conf[f"{base}/{model_type}/{d}"] = dict( + path=os.path.join(root, d), + description=f"{model_type} model {d}", + format="folder", + base=base, ) for f in files: basename = Path(f).stem format = Path(f).suffix[1:] - conf[f'{base}/{model_type}/{basename}'] = dict( - path = os.path.join(root,f), - description = f'{model_type} model {basename}', - format = format, - base = base, + conf[f"{base}/{model_type}/{basename}"] = dict( + path=os.path.join(root, f), + description=f"{model_type} model {basename}", + format=format, + base=base, ) - - OmegaConf.save(config=dict(sorted(conf.items())), f=sys.stdout) - -if __name__ == '__main__': + OmegaConf.save(config=dict(sorted(conf.items())), f=sys.stdout) + + +if __name__ == "__main__": main() diff --git a/scripts/sd-metadata.py b/scripts/sd-metadata.py index 6f9c73757d..1a27e73d95 100755 --- a/scripts/sd-metadata.py +++ b/scripts/sd-metadata.py @@ -13,10 +13,10 @@ filenames = sys.argv[1:] for f in filenames: try: metadata = retrieve_metadata(f) - print(f'{f}:\n',json.dumps(metadata['sd-metadata'], indent=4)) + print(f"{f}:\n", json.dumps(metadata["sd-metadata"], indent=4)) except FileNotFoundError: - sys.stderr.write(f'{f} not found\n') + sys.stderr.write(f"{f} not found\n") continue except PermissionError: - sys.stderr.write(f'{f} could not be opened due to inadequate permissions\n') + sys.stderr.write(f"{f} could not be opened due to inadequate permissions\n") continue diff --git a/tests/nodes/test_graph_execution_state.py b/tests/nodes/test_graph_execution_state.py index bc4a3f4176..e0ee120b54 100644 --- a/tests/nodes/test_graph_execution_state.py +++ b/tests/nodes/test_graph_execution_state.py @@ -42,26 +42,24 @@ def simple_graph(): def mock_services() -> InvocationServices: # NOTE: none of these are actually called by the test invocations return InvocationServices( - model_manager = None, # type: ignore - events = TestEventService(), - logger = None, # 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" + model_manager=None, # type: ignore + events=TestEventService(), + logger=None, # 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_execution_manager=SqliteItemStorage[GraphExecutionState]( + filename=sqlite_memory, table_name="graph_executions" ), - graph_execution_manager = SqliteItemStorage[GraphExecutionState](filename = sqlite_memory, table_name = 'graph_executions'), - processor = DefaultInvocationProcessor(), - configuration = None, # type: ignore + processor=DefaultInvocationProcessor(), + configuration=None, # type: ignore ) -def invoke_next( - g: GraphExecutionState, services: InvocationServices -) -> tuple[BaseInvocation, BaseInvocationOutput]: +def invoke_next(g: GraphExecutionState, services: InvocationServices) -> tuple[BaseInvocation, BaseInvocationOutput]: n = g.next() if n is None: return (None, None) @@ -130,9 +128,7 @@ def test_graph_state_expands_iterator(mock_services): def test_graph_state_collects(mock_services): graph = Graph() test_prompts = ["Banana sushi", "Cat sushi"] - graph.add_node( - PromptCollectionTestInvocation(id="1", collection=list(test_prompts)) - ) + graph.add_node(PromptCollectionTestInvocation(id="1", collection=list(test_prompts))) graph.add_node(IterateInvocation(id="2")) graph.add_node(PromptTestInvocation(id="3")) graph.add_node(CollectInvocation(id="4")) @@ -158,16 +154,10 @@ def test_graph_state_prepares_eagerly(mock_services): graph = Graph() test_prompts = ["Banana sushi", "Cat sushi"] - graph.add_node( - PromptCollectionTestInvocation( - id="prompt_collection", collection=list(test_prompts) - ) - ) + graph.add_node(PromptCollectionTestInvocation(id="prompt_collection", collection=list(test_prompts))) graph.add_node(IterateInvocation(id="iterate")) graph.add_node(PromptTestInvocation(id="prompt_iterated")) - graph.add_edge( - create_edge("prompt_collection", "collection", "iterate", "collection") - ) + graph.add_edge(create_edge("prompt_collection", "collection", "iterate", "collection")) graph.add_edge(create_edge("iterate", "item", "prompt_iterated", "prompt")) # separated, fully-preparable chain of nodes @@ -193,21 +183,13 @@ def test_graph_executes_depth_first(mock_services): graph = Graph() test_prompts = ["Banana sushi", "Cat sushi"] - graph.add_node( - PromptCollectionTestInvocation( - id="prompt_collection", collection=list(test_prompts) - ) - ) + graph.add_node(PromptCollectionTestInvocation(id="prompt_collection", collection=list(test_prompts))) graph.add_node(IterateInvocation(id="iterate")) graph.add_node(PromptTestInvocation(id="prompt_iterated")) graph.add_node(PromptTestInvocation(id="prompt_successor")) - graph.add_edge( - create_edge("prompt_collection", "collection", "iterate", "collection") - ) + graph.add_edge(create_edge("prompt_collection", "collection", "iterate", "collection")) graph.add_edge(create_edge("iterate", "item", "prompt_iterated", "prompt")) - graph.add_edge( - create_edge("prompt_iterated", "prompt", "prompt_successor", "prompt") - ) + graph.add_edge(create_edge("prompt_iterated", "prompt", "prompt_successor", "prompt")) g = GraphExecutionState(graph=graph) n1 = invoke_next(g, mock_services) diff --git a/tests/nodes/test_invoker.py b/tests/nodes/test_invoker.py index 4741e7f58b..8eba6d468f 100644 --- a/tests/nodes/test_invoker.py +++ b/tests/nodes/test_invoker.py @@ -35,20 +35,20 @@ def simple_graph(): def mock_services() -> InvocationServices: # NOTE: none of these are actually called by the test invocations return InvocationServices( - model_manager = None, # type: ignore - events = TestEventService(), - logger = None, # 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" + model_manager=None, # type: ignore + events=TestEventService(), + logger=None, # 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_execution_manager=SqliteItemStorage[GraphExecutionState]( + filename=sqlite_memory, table_name="graph_executions" ), - graph_execution_manager = SqliteItemStorage[GraphExecutionState](filename = sqlite_memory, table_name = 'graph_executions'), - processor = DefaultInvocationProcessor(), - configuration = None, # type: ignore + processor=DefaultInvocationProcessor(), + configuration=None, # type: ignore ) diff --git a/tests/nodes/test_node_graph.py b/tests/nodes/test_node_graph.py index cd995141ab..0f893cb14c 100644 --- a/tests/nodes/test_node_graph.py +++ b/tests/nodes/test_node_graph.py @@ -1,5 +1,21 @@ -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 .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 * from invokeai.app.invocations.math import AddInvocation, SubtractInvocation @@ -11,35 +27,38 @@ import pytest # Helpers def create_edge(from_id: str, from_field: str, to_id: str, to_field: str) -> Edge: return Edge( - source=EdgeConnection(node_id = from_id, field = from_field), - destination=EdgeConnection(node_id = to_id, field = to_field) + source=EdgeConnection(node_id=from_id, field=from_field), + destination=EdgeConnection(node_id=to_id, field=to_field), ) + # Tests def test_connections_are_compatible(): - from_node = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + from_node = TextToImageTestInvocation(id="1", prompt="Banana sushi") from_field = "image" - to_node = ESRGANInvocation(id = "2") + to_node = ESRGANInvocation(id="2") to_field = "image" result = are_connections_compatible(from_node, from_field, to_node, to_field) assert result == True + def test_connections_are_incompatible(): - from_node = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + from_node = TextToImageTestInvocation(id="1", prompt="Banana sushi") from_field = "image" - to_node = ESRGANInvocation(id = "2") + to_node = ESRGANInvocation(id="2") to_field = "strength" result = are_connections_compatible(from_node, from_field, to_node, to_field) assert result == False + def test_connections_incompatible_with_invalid_fields(): - from_node = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + from_node = TextToImageTestInvocation(id="1", prompt="Banana sushi") from_field = "invalid_field" - to_node = ESRGANInvocation(id = "2") + to_node = ESRGANInvocation(id="2") to_field = "image" # From field is invalid @@ -53,138 +72,152 @@ def test_connections_incompatible_with_invalid_fields(): result = are_connections_compatible(from_node, from_field, to_node, to_field) assert result == False + def test_graph_can_add_node(): g = Graph() - n = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n = TextToImageTestInvocation(id="1", prompt="Banana sushi") g.add_node(n) assert n.id in g.nodes + def test_graph_fails_to_add_node_with_duplicate_id(): g = Graph() - n = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n = TextToImageTestInvocation(id="1", prompt="Banana sushi") g.add_node(n) - n2 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi the second") + n2 = TextToImageTestInvocation(id="1", prompt="Banana sushi the second") with pytest.raises(NodeAlreadyInGraphError): g.add_node(n2) + def test_graph_updates_node(): g = Graph() - n = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n = TextToImageTestInvocation(id="1", prompt="Banana sushi") g.add_node(n) - n2 = TextToImageTestInvocation(id = "2", prompt = "Banana sushi the second") + n2 = TextToImageTestInvocation(id="2", prompt="Banana sushi the second") g.add_node(n2) - nu = TextToImageTestInvocation(id = "1", prompt = "Banana sushi updated") + nu = TextToImageTestInvocation(id="1", prompt="Banana sushi updated") g.update_node("1", nu) assert g.nodes["1"].prompt == "Banana sushi updated" + def test_graph_fails_to_update_node_if_type_changes(): g = Graph() - n = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n = TextToImageTestInvocation(id="1", prompt="Banana sushi") g.add_node(n) - n2 = ESRGANInvocation(id = "2") + n2 = ESRGANInvocation(id="2") g.add_node(n2) - nu = ESRGANInvocation(id = "1") + nu = ESRGANInvocation(id="1") with pytest.raises(TypeError): g.update_node("1", nu) + def test_graph_allows_non_conflicting_id_change(): g = Graph() - n = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n = TextToImageTestInvocation(id="1", prompt="Banana sushi") g.add_node(n) - n2 = ESRGANInvocation(id = "2") + n2 = ESRGANInvocation(id="2") g.add_node(n2) - e1 = create_edge(n.id,"image",n2.id,"image") + e1 = create_edge(n.id, "image", n2.id, "image") g.add_edge(e1) - - nu = TextToImageTestInvocation(id = "3", prompt = "Banana sushi") + + nu = TextToImageTestInvocation(id="3", prompt="Banana sushi") g.update_node("1", nu) with pytest.raises(NodeNotFoundError): g.get_node("1") - + assert g.get_node("3").prompt == "Banana sushi" assert len(g.edges) == 1 - assert Edge(source=EdgeConnection(node_id = "3", field = "image"), destination=EdgeConnection(node_id = "2", field = "image")) in g.edges + assert ( + Edge(source=EdgeConnection(node_id="3", field="image"), destination=EdgeConnection(node_id="2", field="image")) + in g.edges + ) + def test_graph_fails_to_update_node_id_if_conflict(): g = Graph() - n = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n = TextToImageTestInvocation(id="1", prompt="Banana sushi") g.add_node(n) - n2 = TextToImageTestInvocation(id = "2", prompt = "Banana sushi the second") + n2 = TextToImageTestInvocation(id="2", prompt="Banana sushi the second") g.add_node(n2) - - nu = TextToImageTestInvocation(id = "2", prompt = "Banana sushi") + + nu = TextToImageTestInvocation(id="2", prompt="Banana sushi") with pytest.raises(NodeAlreadyInGraphError): g.update_node("1", nu) + def test_graph_adds_edge(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.add_node(n1) g.add_node(n2) - e = create_edge(n1.id,"image",n2.id,"image") + e = create_edge(n1.id, "image", n2.id, "image") g.add_edge(e) assert e in g.edges + def test_graph_fails_to_add_edge_with_cycle(): g = Graph() - n1 = ESRGANInvocation(id = "1") + n1 = ESRGANInvocation(id="1") g.add_node(n1) - e = create_edge(n1.id,"image",n1.id,"image") + e = create_edge(n1.id, "image", n1.id, "image") with pytest.raises(InvalidEdgeError): g.add_edge(e) + def test_graph_fails_to_add_edge_with_long_cycle(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") - n3 = ESRGANInvocation(id = "3") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") + n3 = ESRGANInvocation(id="3") g.add_node(n1) g.add_node(n2) g.add_node(n3) - e1 = create_edge(n1.id,"image",n2.id,"image") - e2 = create_edge(n2.id,"image",n3.id,"image") - e3 = create_edge(n3.id,"image",n2.id,"image") + e1 = create_edge(n1.id, "image", n2.id, "image") + e2 = create_edge(n2.id, "image", n3.id, "image") + e3 = create_edge(n3.id, "image", n2.id, "image") g.add_edge(e1) g.add_edge(e2) with pytest.raises(InvalidEdgeError): g.add_edge(e3) + def test_graph_fails_to_add_edge_with_missing_node_id(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.add_node(n1) g.add_node(n2) - e1 = create_edge("1","image","3","image") - e2 = create_edge("3","image","1","image") + e1 = create_edge("1", "image", "3", "image") + e2 = create_edge("3", "image", "1", "image") with pytest.raises(InvalidEdgeError): g.add_edge(e1) with pytest.raises(InvalidEdgeError): g.add_edge(e2) + def test_graph_fails_to_add_edge_when_destination_exists(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") - n3 = ESRGANInvocation(id = "3") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") + n3 = ESRGANInvocation(id="3") g.add_node(n1) g.add_node(n2) g.add_node(n3) - e1 = create_edge(n1.id,"image",n2.id,"image") - e2 = create_edge(n1.id,"image",n3.id,"image") - e3 = create_edge(n2.id,"image",n3.id,"image") + e1 = create_edge(n1.id, "image", n2.id, "image") + e2 = create_edge(n1.id, "image", n3.id, "image") + e3 = create_edge(n2.id, "image", n3.id, "image") g.add_edge(e1) g.add_edge(e2) with pytest.raises(InvalidEdgeError): @@ -193,208 +226,223 @@ def test_graph_fails_to_add_edge_when_destination_exists(): def test_graph_fails_to_add_edge_with_mismatched_types(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.add_node(n1) g.add_node(n2) - e1 = create_edge("1","image","2","strength") + e1 = create_edge("1", "image", "2", "strength") with pytest.raises(InvalidEdgeError): g.add_edge(e1) + def test_graph_connects_collector(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = TextToImageTestInvocation(id = "2", prompt = "Banana sushi 2") - n3 = CollectInvocation(id = "3") - n4 = ListPassThroughInvocation(id = "4") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = TextToImageTestInvocation(id="2", prompt="Banana sushi 2") + n3 = CollectInvocation(id="3") + n4 = ListPassThroughInvocation(id="4") g.add_node(n1) g.add_node(n2) g.add_node(n3) g.add_node(n4) - e1 = create_edge("1","image","3","item") - e2 = create_edge("2","image","3","item") - e3 = create_edge("3","collection","4","collection") + e1 = create_edge("1", "image", "3", "item") + e2 = create_edge("2", "image", "3", "item") + e3 = create_edge("3", "collection", "4", "collection") g.add_edge(e1) g.add_edge(e2) g.add_edge(e3) + # TODO: test that derived types mixed with base types are compatible + def test_graph_collector_invalid_with_varying_input_types(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = PromptTestInvocation(id = "2", prompt = "banana sushi 2") - n3 = CollectInvocation(id = "3") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = PromptTestInvocation(id="2", prompt="banana sushi 2") + n3 = CollectInvocation(id="3") g.add_node(n1) g.add_node(n2) g.add_node(n3) - e1 = create_edge("1","image","3","item") - e2 = create_edge("2","prompt","3","item") + e1 = create_edge("1", "image", "3", "item") + e2 = create_edge("2", "prompt", "3", "item") g.add_edge(e1) - + with pytest.raises(InvalidEdgeError): g.add_edge(e2) + def test_graph_collector_invalid_with_varying_input_output(): g = Graph() - n1 = PromptTestInvocation(id = "1", prompt = "Banana sushi") - n2 = PromptTestInvocation(id = "2", prompt = "Banana sushi 2") - n3 = CollectInvocation(id = "3") - n4 = ListPassThroughInvocation(id = "4") + n1 = PromptTestInvocation(id="1", prompt="Banana sushi") + n2 = PromptTestInvocation(id="2", prompt="Banana sushi 2") + n3 = CollectInvocation(id="3") + n4 = ListPassThroughInvocation(id="4") g.add_node(n1) g.add_node(n2) g.add_node(n3) g.add_node(n4) - e1 = create_edge("1","prompt","3","item") - e2 = create_edge("2","prompt","3","item") - e3 = create_edge("3","collection","4","collection") + e1 = create_edge("1", "prompt", "3", "item") + e2 = create_edge("2", "prompt", "3", "item") + e3 = create_edge("3", "collection", "4", "collection") g.add_edge(e1) g.add_edge(e2) with pytest.raises(InvalidEdgeError): g.add_edge(e3) + def test_graph_collector_invalid_with_non_list_output(): g = Graph() - n1 = PromptTestInvocation(id = "1", prompt = "Banana sushi") - n2 = PromptTestInvocation(id = "2", prompt = "Banana sushi 2") - n3 = CollectInvocation(id = "3") - n4 = PromptTestInvocation(id = "4") + n1 = PromptTestInvocation(id="1", prompt="Banana sushi") + n2 = PromptTestInvocation(id="2", prompt="Banana sushi 2") + n3 = CollectInvocation(id="3") + n4 = PromptTestInvocation(id="4") g.add_node(n1) g.add_node(n2) g.add_node(n3) g.add_node(n4) - e1 = create_edge("1","prompt","3","item") - e2 = create_edge("2","prompt","3","item") - e3 = create_edge("3","collection","4","prompt") + e1 = create_edge("1", "prompt", "3", "item") + e2 = create_edge("2", "prompt", "3", "item") + e3 = create_edge("3", "collection", "4", "prompt") g.add_edge(e1) g.add_edge(e2) with pytest.raises(InvalidEdgeError): g.add_edge(e3) + def test_graph_connects_iterator(): g = Graph() - n1 = ListPassThroughInvocation(id = "1") - n2 = IterateInvocation(id = "2") - n3 = ImageToImageTestInvocation(id = "3", prompt = "Banana sushi") + n1 = ListPassThroughInvocation(id="1") + n2 = IterateInvocation(id="2") + n3 = ImageToImageTestInvocation(id="3", prompt="Banana sushi") g.add_node(n1) g.add_node(n2) g.add_node(n3) - e1 = create_edge("1","collection","2","collection") - e2 = create_edge("2","item","3","image") + e1 = create_edge("1", "collection", "2", "collection") + e2 = create_edge("2", "item", "3", "image") g.add_edge(e1) g.add_edge(e2) + # TODO: TEST INVALID ITERATOR SCENARIOS + def test_graph_iterator_invalid_if_multiple_inputs(): g = Graph() - n1 = ListPassThroughInvocation(id = "1") - n2 = IterateInvocation(id = "2") - n3 = ImageToImageTestInvocation(id = "3", prompt = "Banana sushi") - n4 = ListPassThroughInvocation(id = "4") + n1 = ListPassThroughInvocation(id="1") + n2 = IterateInvocation(id="2") + n3 = ImageToImageTestInvocation(id="3", prompt="Banana sushi") + n4 = ListPassThroughInvocation(id="4") g.add_node(n1) g.add_node(n2) g.add_node(n3) g.add_node(n4) - e1 = create_edge("1","collection","2","collection") - e2 = create_edge("2","item","3","image") - e3 = create_edge("4","collection","2","collection") + e1 = create_edge("1", "collection", "2", "collection") + e2 = create_edge("2", "item", "3", "image") + e3 = create_edge("4", "collection", "2", "collection") g.add_edge(e1) g.add_edge(e2) with pytest.raises(InvalidEdgeError): g.add_edge(e3) + def test_graph_iterator_invalid_if_input_not_list(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = IterateInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = IterateInvocation(id="2") g.add_node(n1) g.add_node(n2) - e1 = create_edge("1","collection","2","collection") + e1 = create_edge("1", "collection", "2", "collection") with pytest.raises(InvalidEdgeError): g.add_edge(e1) + def test_graph_iterator_invalid_if_output_and_input_types_different(): g = Graph() - n1 = ListPassThroughInvocation(id = "1") - n2 = IterateInvocation(id = "2") - n3 = PromptTestInvocation(id = "3", prompt = "Banana sushi") + n1 = ListPassThroughInvocation(id="1") + n2 = IterateInvocation(id="2") + n3 = PromptTestInvocation(id="3", prompt="Banana sushi") g.add_node(n1) g.add_node(n2) g.add_node(n3) - e1 = create_edge("1","collection","2","collection") - e2 = create_edge("2","item","3","prompt") + e1 = create_edge("1", "collection", "2", "collection") + e2 = create_edge("2", "item", "3", "prompt") g.add_edge(e1) with pytest.raises(InvalidEdgeError): g.add_edge(e2) + def test_graph_validates(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.add_node(n1) g.add_node(n2) - e1 = create_edge("1","image","2","image") + e1 = create_edge("1", "image", "2", "image") g.add_edge(e1) assert g.is_valid() == True + def test_graph_invalid_if_edges_reference_missing_nodes(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") g.nodes[n1.id] = n1 - e1 = create_edge("1","image","2","image") + e1 = create_edge("1", "image", "2", "image") g.edges.append(e1) assert g.is_valid() == False + def test_graph_invalid_if_subgraph_invalid(): g = Graph() - n1 = GraphInvocation(id = "1") + n1 = GraphInvocation(id="1") n1.graph = Graph() - n1_1 = TextToImageTestInvocation(id = "2", prompt = "Banana sushi") + n1_1 = TextToImageTestInvocation(id="2", prompt="Banana sushi") n1.graph.nodes[n1_1.id] = n1_1 - e1 = create_edge("1","image","2","image") + e1 = create_edge("1", "image", "2", "image") n1.graph.edges.append(e1) g.nodes[n1.id] = n1 assert g.is_valid() == False + def test_graph_invalid_if_has_cycle(): g = Graph() - n1 = ESRGANInvocation(id = "1") - n2 = ESRGANInvocation(id = "2") + n1 = ESRGANInvocation(id="1") + n2 = ESRGANInvocation(id="2") g.nodes[n1.id] = n1 g.nodes[n2.id] = n2 - e1 = create_edge("1","image","2","image") - e2 = create_edge("2","image","1","image") + e1 = create_edge("1", "image", "2", "image") + e2 = create_edge("2", "image", "1", "image") g.edges.append(e1) g.edges.append(e2) assert g.is_valid() == False + def test_graph_invalid_with_invalid_connection(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.nodes[n1.id] = n1 g.nodes[n2.id] = n2 - e1 = create_edge("1","image","2","strength") + e1 = create_edge("1", "image", "2", "strength") g.edges.append(e1) assert g.is_valid() == False @@ -403,47 +451,47 @@ def test_graph_invalid_with_invalid_connection(): # TODO: Subgraph operations def test_graph_gets_subgraph_node(): g = Graph() - n1 = GraphInvocation(id = "1") + n1 = GraphInvocation(id="1") n1.graph = Graph() n1.graph.add_node - n1_1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n1_1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") n1.graph.add_node(n1_1) g.add_node(n1) - result = g.get_node('1.1') + result = g.get_node("1.1") assert result is not None - assert result.id == '1' + assert result.id == "1" assert result == n1_1 def test_graph_expands_subgraph(): g = Graph() - n1 = GraphInvocation(id = "1") + n1 = GraphInvocation(id="1") n1.graph = Graph() - n1_1 = AddInvocation(id = "1", a = 1, b = 2) - n1_2 = SubtractInvocation(id = "2", b = 3) + n1_1 = AddInvocation(id="1", a=1, b=2) + n1_2 = SubtractInvocation(id="2", b=3) n1.graph.add_node(n1_1) n1.graph.add_node(n1_2) - n1.graph.add_edge(create_edge("1","a","2","a")) + n1.graph.add_edge(create_edge("1", "a", "2", "a")) g.add_node(n1) - n2 = AddInvocation(id = "2", b = 5) + n2 = AddInvocation(id="2", b=5) g.add_node(n2) - g.add_edge(create_edge("1.2","a","2","a")) + g.add_edge(create_edge("1.2", "a", "2", "a")) dg = g.nx_graph_flat() - assert set(dg.nodes) == set(['1.1', '1.2', '2']) - assert set(dg.edges) == set([('1.1', '1.2'), ('1.2', '2')]) + assert set(dg.nodes) == set(["1.1", "1.2", "2"]) + assert set(dg.edges) == set([("1.1", "1.2"), ("1.2", "2")]) def test_graph_subgraph_t2i(): g = Graph() - n1 = GraphInvocation(id = "1") + n1 = GraphInvocation(id="1") # Get text to image default graph lg = create_text_to_image() @@ -451,28 +499,26 @@ def test_graph_subgraph_t2i(): g.add_node(n1) - n2 = ParamIntInvocation(id = "2", a = 512) - n3 = ParamIntInvocation(id = "3", a = 256) + n2 = ParamIntInvocation(id="2", a=512) + n3 = ParamIntInvocation(id="3", a=256) g.add_node(n2) g.add_node(n3) - g.add_edge(create_edge("2","a","1.width","a")) - g.add_edge(create_edge("3","a","1.height","a")) - - n4 = ShowImageInvocation(id = "4") + g.add_edge(create_edge("2", "a", "1.width", "a")) + g.add_edge(create_edge("3", "a", "1.height", "a")) + + n4 = ShowImageInvocation(id="4") g.add_node(n4) - g.add_edge(create_edge("1.7","image","4","image")) + g.add_edge(create_edge("1.8", "image", "4", "image")) # Validate dg = g.nx_graph_flat() - assert set(dg.nodes) == set(['1.width', '1.height', '1.seed', '1.3', '1.4', '1.5', '1.6', '1.7', '2', '3', '4']) - expected_edges = [(f'1.{e.source.node_id}',f'1.{e.destination.node_id}') for e in lg.graph.edges] - expected_edges.extend([ - ('2','1.width'), - ('3','1.height'), - ('1.7','4') - ]) + assert set(dg.nodes) == set( + ["1.width", "1.height", "1.seed", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "2", "3", "4"] + ) + expected_edges = [(f"1.{e.source.node_id}", f"1.{e.destination.node_id}") for e in lg.graph.edges] + expected_edges.extend([("2", "1.width"), ("3", "1.height"), ("1.8", "4")]) print(expected_edges) print(list(dg.edges)) assert set(dg.edges) == set(expected_edges) @@ -480,86 +526,90 @@ def test_graph_subgraph_t2i(): def test_graph_fails_to_get_missing_subgraph_node(): g = Graph() - n1 = GraphInvocation(id = "1") + n1 = GraphInvocation(id="1") n1.graph = Graph() n1.graph.add_node - n1_1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n1_1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") n1.graph.add_node(n1_1) g.add_node(n1) with pytest.raises(NodeNotFoundError): - result = g.get_node('1.2') + result = g.get_node("1.2") + def test_graph_fails_to_enumerate_non_subgraph_node(): g = Graph() - n1 = GraphInvocation(id = "1") + n1 = GraphInvocation(id="1") n1.graph = Graph() n1.graph.add_node - n1_1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") + n1_1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") n1.graph.add_node(n1_1) g.add_node(n1) - - n2 = ESRGANInvocation(id = "2") + + n2 = ESRGANInvocation(id="2") g.add_node(n2) with pytest.raises(NodeNotFoundError): - result = g.get_node('2.1') + result = g.get_node("2.1") + def test_graph_gets_networkx_graph(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.add_node(n1) g.add_node(n2) - e = create_edge(n1.id,"image",n2.id,"image") + e = create_edge(n1.id, "image", n2.id, "image") g.add_edge(e) nxg = g.nx_graph() - assert '1' in nxg.nodes - assert '2' in nxg.nodes - assert ('1','2') in nxg.edges + assert "1" in nxg.nodes + assert "2" in nxg.nodes + assert ("1", "2") in nxg.edges # TODO: Graph serializes and deserializes def test_graph_can_serialize(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.add_node(n1) g.add_node(n2) - e = create_edge(n1.id,"image",n2.id,"image") + e = create_edge(n1.id, "image", n2.id, "image") g.add_edge(e) # Not throwing on this line is sufficient json = g.json() + def test_graph_can_deserialize(): g = Graph() - n1 = TextToImageTestInvocation(id = "1", prompt = "Banana sushi") - n2 = ESRGANInvocation(id = "2") + n1 = TextToImageTestInvocation(id="1", prompt="Banana sushi") + n2 = ESRGANInvocation(id="2") g.add_node(n1) g.add_node(n2) - e = create_edge(n1.id,"image",n2.id,"image") + e = create_edge(n1.id, "image", n2.id, "image") g.add_edge(e) json = g.json() g2 = Graph.parse_raw(json) assert g2 is not None - assert g2.nodes['1'] is not None - assert g2.nodes['2'] is not None + assert g2.nodes["1"] is not None + assert g2.nodes["2"] is not None assert len(g2.edges) == 1 - assert g2.edges[0].source.node_id == '1' - assert g2.edges[0].source.field == 'image' - assert g2.edges[0].destination.node_id == '2' - assert g2.edges[0].destination.field == 'image' + assert g2.edges[0].source.node_id == "1" + assert g2.edges[0].source.field == "image" + assert g2.edges[0].destination.node_id == "2" + assert g2.edges[0].destination.field == "image" + def test_graph_can_generate_schema(): # Not throwing on this line is sufficient # NOTE: if this test fails, it's PROBABLY because a new invocation type is breaking schema generation - schema = Graph.schema_json(indent = 2) + schema = Graph.schema_json(indent=2) diff --git a/tests/nodes/test_nodes.py b/tests/nodes/test_nodes.py index af011954c5..13338e9261 100644 --- a/tests/nodes/test_nodes.py +++ b/tests/nodes/test_nodes.py @@ -5,79 +5,92 @@ from invokeai.app.services.invocation_services import InvocationServices from pydantic import Field import pytest + # Define test invocations before importing anything that uses invocations class ListPassThroughInvocationOutput(BaseInvocationOutput): - type: Literal['test_list_output'] = 'test_list_output' + type: Literal["test_list_output"] = "test_list_output" collection: list[ImageField] = Field(default_factory=list) + class ListPassThroughInvocation(BaseInvocation): - type: Literal['test_list'] = 'test_list' + type: Literal["test_list"] = "test_list" collection: list[ImageField] = Field(default_factory=list) def invoke(self, context: InvocationContext) -> ListPassThroughInvocationOutput: - return ListPassThroughInvocationOutput(collection = self.collection) + return ListPassThroughInvocationOutput(collection=self.collection) + class PromptTestInvocationOutput(BaseInvocationOutput): - type: Literal['test_prompt_output'] = 'test_prompt_output' + type: Literal["test_prompt_output"] = "test_prompt_output" + + prompt: str = Field(default="") - prompt: str = Field(default = "") class PromptTestInvocation(BaseInvocation): - type: Literal['test_prompt'] = 'test_prompt' + type: Literal["test_prompt"] = "test_prompt" - prompt: str = Field(default = "") + prompt: str = Field(default="") def invoke(self, context: InvocationContext) -> PromptTestInvocationOutput: - return PromptTestInvocationOutput(prompt = self.prompt) + return PromptTestInvocationOutput(prompt=self.prompt) + class ErrorInvocation(BaseInvocation): - type: Literal['test_error'] = 'test_error' + type: Literal["test_error"] = "test_error" def invoke(self, context: InvocationContext) -> PromptTestInvocationOutput: raise Exception("This invocation is supposed to fail") + class ImageTestInvocationOutput(BaseInvocationOutput): - type: Literal['test_image_output'] = 'test_image_output' + type: Literal["test_image_output"] = "test_image_output" image: ImageField = Field() -class TextToImageTestInvocation(BaseInvocation): - type: Literal['test_text_to_image'] = 'test_text_to_image' - prompt: str = Field(default = "") +class TextToImageTestInvocation(BaseInvocation): + type: Literal["test_text_to_image"] = "test_text_to_image" + + prompt: str = Field(default="") def invoke(self, context: InvocationContext) -> ImageTestInvocationOutput: return ImageTestInvocationOutput(image=ImageField(image_name=self.id)) -class ImageToImageTestInvocation(BaseInvocation): - type: Literal['test_image_to_image'] = 'test_image_to_image' - prompt: str = Field(default = "") +class ImageToImageTestInvocation(BaseInvocation): + type: Literal["test_image_to_image"] = "test_image_to_image" + + prompt: str = Field(default="") image: Union[ImageField, None] = Field(default=None) def invoke(self, context: InvocationContext) -> ImageTestInvocationOutput: return ImageTestInvocationOutput(image=ImageField(image_name=self.id)) + class PromptCollectionTestInvocationOutput(BaseInvocationOutput): - type: Literal['test_prompt_collection_output'] = 'test_prompt_collection_output' + type: Literal["test_prompt_collection_output"] = "test_prompt_collection_output" collection: list[str] = Field(default_factory=list) + class PromptCollectionTestInvocation(BaseInvocation): - type: Literal['test_prompt_collection'] = 'test_prompt_collection' + type: Literal["test_prompt_collection"] = "test_prompt_collection" collection: list[str] = Field() def invoke(self, context: InvocationContext) -> PromptCollectionTestInvocationOutput: return PromptCollectionTestInvocationOutput(collection=self.collection.copy()) + from invokeai.app.services.events import EventServiceBase from invokeai.app.services.graph import Edge, EdgeConnection + def create_edge(from_id: str, from_field: str, to_id: str, to_field: str) -> Edge: return Edge( - source=EdgeConnection(node_id = from_id, field = from_field), - destination=EdgeConnection(node_id = to_id, field = to_field)) + source=EdgeConnection(node_id=from_id, field=from_field), + destination=EdgeConnection(node_id=to_id, field=to_field), + ) class TestEvent: @@ -88,6 +101,7 @@ class TestEvent: self.event_name = event_name self.payload = payload + class TestEventService(EventServiceBase): events: list @@ -98,8 +112,10 @@ class TestEventService(EventServiceBase): def dispatch(self, event_name: str, payload: Any) -> None: pass + def wait_until(condition: Callable[[], bool], timeout: int = 10, interval: float = 0.1) -> None: import time + start_time = time.time() while time.time() - start_time < timeout: if condition(): diff --git a/tests/nodes/test_sqlite.py b/tests/nodes/test_sqlite.py index a803af5635..a9eb542e44 100644 --- a/tests/nodes/test_sqlite.py +++ b/tests/nodes/test_sqlite.py @@ -3,110 +3,131 @@ from pydantic import BaseModel, Field class TestModel(BaseModel): - id: str = Field(description = "ID") - name: str = Field(description = "Name") + 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') - db.set(TestModel(id = '1', name = 'Test')) - assert db.get('1') == TestModel(id = '1', name = 'Test') + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + 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') - db.set(TestModel(id = '1', name = 'Test')) - db.set(TestModel(id = '2', name = 'Test')) - db.set(TestModel(id = '3', name = 'Test')) + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + db.set(TestModel(id="1", name="Test")) + db.set(TestModel(id="2", name="Test")) + db.set(TestModel(id="3", name="Test")) results = db.list() assert results.page == 0 assert results.pages == 1 assert results.per_page == 10 assert results.total == 3 - assert results.items == [TestModel(id = '1', name = 'Test'), TestModel(id = '2', name = 'Test'), TestModel(id = '3', name = 'Test')] + assert results.items == [ + TestModel(id="1", name="Test"), + TestModel(id="2", name="Test"), + TestModel(id="3", name="Test"), + ] + def test_sqlite_service_can_delete(): - db = SqliteItemStorage[TestModel](sqlite_memory, 'test', 'id') - db.set(TestModel(id = '1', name = 'Test')) - db.delete('1') - assert db.get('1') is None + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + 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') + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") called = False + def on_changed(item: TestModel): nonlocal called called = True + db.on_changed(on_changed) - db.set(TestModel(id = '1', name = 'Test')) + db.set(TestModel(id="1", name="Test")) assert called + def test_sqlite_service_calls_delete_callback(): - db = SqliteItemStorage[TestModel](sqlite_memory, 'test', 'id') + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") called = False + def on_deleted(item_id: str): nonlocal called called = True + db.on_deleted(on_deleted) - db.set(TestModel(id = '1', name = 'Test')) - db.delete('1') + db.set(TestModel(id="1", name="Test")) + db.delete("1") assert called + def test_sqlite_service_can_list_with_pagination(): - db = SqliteItemStorage[TestModel](sqlite_memory, 'test', 'id') - db.set(TestModel(id = '1', name = 'Test')) - db.set(TestModel(id = '2', name = 'Test')) - db.set(TestModel(id = '3', name = 'Test')) - results = db.list(page = 0, per_page = 2) + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + db.set(TestModel(id="1", name="Test")) + db.set(TestModel(id="2", name="Test")) + db.set(TestModel(id="3", name="Test")) + results = db.list(page=0, per_page=2) assert results.page == 0 assert results.pages == 2 assert results.per_page == 2 assert results.total == 3 - assert results.items == [TestModel(id = '1', name = 'Test'), TestModel(id = '2', name = 'Test')] + 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') - db.set(TestModel(id = '1', name = 'Test')) - db.set(TestModel(id = '2', name = 'Test')) - db.set(TestModel(id = '3', name = 'Test')) - results = db.list(page = 1, per_page = 2) + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + db.set(TestModel(id="1", name="Test")) + db.set(TestModel(id="2", name="Test")) + db.set(TestModel(id="3", name="Test")) + results = db.list(page=1, per_page=2) assert results.page == 1 assert results.pages == 2 assert results.per_page == 2 assert results.total == 3 - assert results.items == [TestModel(id = '3', name = 'Test')] + assert results.items == [TestModel(id="3", name="Test")] + def test_sqlite_service_can_search(): - db = SqliteItemStorage[TestModel](sqlite_memory, 'test', 'id') - db.set(TestModel(id = '1', name = 'Test')) - db.set(TestModel(id = '2', name = 'Test')) - db.set(TestModel(id = '3', name = 'Test')) - results = db.search(query = 'Test') + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + db.set(TestModel(id="1", name="Test")) + db.set(TestModel(id="2", name="Test")) + db.set(TestModel(id="3", name="Test")) + results = db.search(query="Test") assert results.page == 0 assert results.pages == 1 assert results.per_page == 10 assert results.total == 3 - assert results.items == [TestModel(id = '1', name = 'Test'), TestModel(id = '2', name = 'Test'), TestModel(id = '3', name = 'Test')] + assert results.items == [ + TestModel(id="1", name="Test"), + TestModel(id="2", name="Test"), + TestModel(id="3", name="Test"), + ] + def test_sqlite_service_can_search_with_pagination(): - db = SqliteItemStorage[TestModel](sqlite_memory, 'test', 'id') - db.set(TestModel(id = '1', name = 'Test')) - db.set(TestModel(id = '2', name = 'Test')) - db.set(TestModel(id = '3', name = 'Test')) - results = db.search(query = 'Test', page = 0, per_page = 2) + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + db.set(TestModel(id="1", name="Test")) + db.set(TestModel(id="2", name="Test")) + db.set(TestModel(id="3", name="Test")) + results = db.search(query="Test", page=0, per_page=2) assert results.page == 0 assert results.pages == 2 assert results.per_page == 2 assert results.total == 3 - assert results.items == [TestModel(id = '1', name = 'Test'), TestModel(id = '2', name = 'Test')] + 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') - db.set(TestModel(id = '1', name = 'Test')) - db.set(TestModel(id = '2', name = 'Test')) - db.set(TestModel(id = '3', name = 'Test')) - results = db.search(query = 'Test', page = 1, per_page = 2) + db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") + db.set(TestModel(id="1", name="Test")) + db.set(TestModel(id="2", name="Test")) + db.set(TestModel(id="3", name="Test")) + results = db.search(query="Test", page=1, per_page=2) assert results.page == 1 assert results.pages == 2 assert results.per_page == 2 assert results.total == 3 - assert results.items == [TestModel(id = '3', name = 'Test')] + assert results.items == [TestModel(id="3", name="Test")] diff --git a/tests/test_config.py b/tests/test_config.py index d6c9d95d7e..5d3dc46aa4 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -5,84 +5,91 @@ import sys from omegaconf import OmegaConf from pathlib import Path -os.environ['INVOKEAI_ROOT']='/tmp' +os.environ["INVOKEAI_ROOT"] = "/tmp" from invokeai.app.services.config import InvokeAIAppConfig init1 = OmegaConf.create( -''' + """ InvokeAI: Features: - nsfw_checker: False + always_use_cpu: false Memory/Performance: max_cache_size: 5 -''' + tiled_decode: false +""" ) init2 = OmegaConf.create( -''' + """ InvokeAI: Features: - nsfw_checker: true + always_use_cpu: true Memory/Performance: max_cache_size: 2 -''' + tiled_decode: true +""" ) + def test_use_init(): # note that we explicitly set omegaconf dict and argv here # so that the values aren't read from ~invokeai/invokeai.yaml and # sys.argv respectively. conf1 = InvokeAIAppConfig.get_config() assert conf1 - conf1.parse_args(conf=init1,argv=[]) - assert conf1.max_cache_size==5 - assert not conf1.nsfw_checker + conf1.parse_args(conf=init1, argv=[]) + assert not conf1.tiled_decode + assert conf1.max_cache_size == 5 + assert not conf1.always_use_cpu conf2 = InvokeAIAppConfig.get_config() assert conf2 - conf2.parse_args(conf=init2,argv=[]) - assert conf2.nsfw_checker - assert conf2.max_cache_size==2 - assert not hasattr(conf2,'invalid_attribute') - + conf2.parse_args(conf=init2, argv=[]) + assert conf2.tiled_decode + assert conf2.max_cache_size == 2 + assert not hasattr(conf2, "invalid_attribute") + + def test_argv_override(): conf = InvokeAIAppConfig.get_config() - conf.parse_args(conf=init1,argv=['--nsfw_checker','--max_cache=10']) - assert conf.nsfw_checker - assert conf.max_cache_size==10 - assert conf.outdir==Path('outputs') # this is the default - + conf.parse_args(conf=init1, argv=["--always_use_cpu", "--max_cache=10"]) + assert conf.always_use_cpu + assert conf.max_cache_size == 10 + assert conf.outdir == Path("outputs") # this is the default + + def test_env_override(): - # argv overrides + # argv overrides conf = InvokeAIAppConfig() - conf.parse_args(conf=init1,argv=['--max_cache=10']) - assert conf.nsfw_checker==False - os.environ['INVOKEAI_nsfw_checker'] = 'True' - conf.parse_args(conf=init1,argv=['--max_cache=10']) - assert conf.nsfw_checker==True + conf.parse_args(conf=init1, argv=["--max_cache=10"]) + assert conf.always_use_cpu == False + os.environ["INVOKEAI_always_use_cpu"] = "True" + conf.parse_args(conf=init1, argv=["--max_cache=10"]) + assert conf.always_use_cpu == True # environment variables should be case insensitive - os.environ['InvokeAI_Max_Cache_Size'] = '15' + os.environ["InvokeAI_Max_Cache_Size"] = "15" conf = InvokeAIAppConfig() - conf.parse_args(conf=init1,argv=[]) + conf.parse_args(conf=init1, argv=[]) assert conf.max_cache_size == 15 conf = InvokeAIAppConfig() - conf.parse_args(conf=init1,argv=['--no-nsfw_checker','--max_cache=10']) - assert conf.nsfw_checker==False - assert conf.max_cache_size==10 + conf.parse_args(conf=init1, argv=["--no-always_use_cpu", "--max_cache=10"]) + assert conf.always_use_cpu == False + assert conf.max_cache_size == 10 conf = InvokeAIAppConfig.get_config(max_cache_size=20) - conf.parse_args(conf=init1,argv=[]) - assert conf.max_cache_size==20 + conf.parse_args(conf=init1, argv=[]) + assert conf.max_cache_size == 20 + def test_type_coercion(): conf = InvokeAIAppConfig().get_config() - conf.parse_args(argv=['--root=/tmp/foobar']) - assert conf.root==Path('/tmp/foobar') - assert isinstance(conf.root,Path) - conf = InvokeAIAppConfig.get_config(root='/tmp/different') - conf.parse_args(argv=['--root=/tmp/foobar']) - assert conf.root==Path('/tmp/different') - assert isinstance(conf.root,Path) + conf.parse_args(argv=["--root=/tmp/foobar"]) + assert conf.root == Path("/tmp/foobar") + assert isinstance(conf.root, Path) + conf = InvokeAIAppConfig.get_config(root="/tmp/different") + conf.parse_args(argv=["--root=/tmp/foobar"]) + assert conf.root == Path("/tmp/different") + assert isinstance(conf.root, Path) diff --git a/tests/test_path.py b/tests/test_path.py index 6076c6554f..0da5f2f8dc 100644 --- a/tests/test_path.py +++ b/tests/test_path.py @@ -9,7 +9,8 @@ from PIL import Image import invokeai.frontend.web.dist as frontend import invokeai.configs as configs -import invokeai.assets.web as assets_web +import invokeai.app.assets.images as image_assets + class ConfigsTestCase(unittest.TestCase): """Test the configuration related imports and objects""" @@ -35,7 +36,7 @@ class ConfigsTestCase(unittest.TestCase): def test_caution_img(self): """Verify the caution image""" - caution_img = Image.open(osp.join(assets_web.__path__[0], "caution.png")) + caution_img = Image.open(osp.join(image_assets.__path__[0], "caution.png")) assert caution_img.width == int(500) assert caution_img.height == int(441) assert caution_img.format == str("PNG")