diff --git a/docs/nodes/communityNodes.md b/docs/nodes/communityNodes.md index c48c971098..2b30b9f0af 100644 --- a/docs/nodes/communityNodes.md +++ b/docs/nodes/communityNodes.md @@ -196,6 +196,40 @@ Results after using the depth controlnet -------------------------------- +### Prompt Tools + +**Description:** A set of InvokeAI nodes that add general prompt manipulation tools. These where written to accompany the PromptsFromFile node and other prompt generation nodes. + +1. PromptJoin - Joins to prompts into one. +2. PromptReplace - performs a search and replace on a prompt. With the option of using regex. +3. PromptSplitNeg - splits a prompt into positive and negative using the old V2 method of [] for negative. +4. PromptToFile - saves a prompt or collection of prompts to a file. one per line. There is an append/overwrite option. +5. PTFieldsCollect - Converts image generation fields into a Json format string that can be passed to Prompt to file. +6. PTFieldsExpand - Takes Json string and converts it to individual generation parameters This can be fed from the Prompts to file node. +7. PromptJoinThree - Joins 3 prompt together. +8. PromptStrength - This take a string and float and outputs another string in the format of (string)strength like the weighted format of compel. +9. PromptStrengthCombine - This takes a collection of prompt strength strings and outputs a string in the .and() or .blend() format that can be fed into a proper prompt node. + +See full docs here: https://github.com/skunkworxdark/Prompt-tools-nodes/edit/main/README.md + +**Node Link:** https://github.com/skunkworxdark/Prompt-tools-nodes + +-------------------------------- + +### XY Image to Grid and Images to Grids nodes + +**Description:** Image to grid nodes and supporting tools. + +1. "Images To Grids" node - Takes a collection of images and creates a grid(s) of images. If there are more images than the size of a single grid then mutilple grids will be created until it runs out of images. +2. "XYImage To Grid" node - Converts a collection of XYImages into a labeled Grid of images. The XYImages collection has to be built using the supporoting nodes. See example node setups for more details. + + +See full docs here: https://github.com/skunkworxdark/XYGrid_nodes/edit/main/README.md + +**Node Link:** https://github.com/skunkworxdark/XYGrid_nodes + +-------------------------------- + ### Example Node Template **Description:** This node allows you to do super cool things with InvokeAI. diff --git a/invokeai/app/api/dependencies.py b/invokeai/app/api/dependencies.py index 3a54280234..c2a32010c5 100644 --- a/invokeai/app/api/dependencies.py +++ b/invokeai/app/api/dependencies.py @@ -1,5 +1,6 @@ # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) +import sqlite3 from logging import Logger from invokeai.app.services.board_image_record_storage import SqliteBoardImageRecordStorage @@ -9,7 +10,10 @@ from invokeai.app.services.boards import BoardService, BoardServiceDependencies from invokeai.app.services.config import InvokeAIAppConfig from invokeai.app.services.image_record_storage import SqliteImageRecordStorage from invokeai.app.services.images import ImageService, ImageServiceDependencies +from invokeai.app.services.invocation_cache.invocation_cache_memory import MemoryInvocationCache from invokeai.app.services.resource_name import SimpleNameService +from invokeai.app.services.session_processor.session_processor_default import DefaultSessionProcessor +from invokeai.app.services.session_queue.session_queue_sqlite import SqliteSessionQueue from invokeai.app.services.urls import LocalUrlService from invokeai.backend.util.logging import InvokeAILogger from invokeai.version.invokeai_version import __version__ @@ -25,6 +29,7 @@ from ..services.latent_storage import DiskLatentsStorage, ForwardCacheLatentsSto from ..services.model_manager_service import ModelManagerService from ..services.processor import DefaultInvocationProcessor from ..services.sqlite import SqliteItemStorage +from ..services.thread import lock from .events import FastAPIEventService @@ -63,22 +68,32 @@ class ApiDependencies: output_folder = config.output_path # TODO: build a file/path manager? - db_path = config.db_path - db_path.parent.mkdir(parents=True, exist_ok=True) - db_location = str(db_path) + if config.use_memory_db: + db_location = ":memory:" + else: + db_path = config.db_path + db_path.parent.mkdir(parents=True, exist_ok=True) + db_location = str(db_path) + + logger.info(f"Using database at {db_location}") + db_conn = sqlite3.connect(db_location, check_same_thread=False) # TODO: figure out a better threading solution + + if config.log_sql: + db_conn.set_trace_callback(print) + db_conn.execute("PRAGMA foreign_keys = ON;") graph_execution_manager = SqliteItemStorage[GraphExecutionState]( - filename=db_location, table_name="graph_executions" + conn=db_conn, table_name="graph_executions", lock=lock ) urls = LocalUrlService() - image_record_storage = SqliteImageRecordStorage(db_location) + image_record_storage = SqliteImageRecordStorage(conn=db_conn, lock=lock) image_file_storage = DiskImageFileStorage(f"{output_folder}/images") names = SimpleNameService() latents = ForwardCacheLatentsStorage(DiskLatentsStorage(f"{output_folder}/latents")) - board_record_storage = SqliteBoardRecordStorage(db_location) - board_image_record_storage = SqliteBoardImageRecordStorage(db_location) + board_record_storage = SqliteBoardRecordStorage(conn=db_conn, lock=lock) + board_image_record_storage = SqliteBoardImageRecordStorage(conn=db_conn, lock=lock) boards = BoardService( services=BoardServiceDependencies( @@ -120,18 +135,29 @@ class ApiDependencies: boards=boards, board_images=board_images, queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph](filename=db_location, table_name="graphs"), + graph_library=SqliteItemStorage[LibraryGraph](conn=db_conn, lock=lock, table_name="graphs"), graph_execution_manager=graph_execution_manager, processor=DefaultInvocationProcessor(), configuration=config, performance_statistics=InvocationStatsService(graph_execution_manager), logger=logger, + session_queue=SqliteSessionQueue(conn=db_conn, lock=lock), + session_processor=DefaultSessionProcessor(), + invocation_cache=MemoryInvocationCache(max_cache_size=config.node_cache_size), ) create_system_graphs(services.graph_library) ApiDependencies.invoker = Invoker(services) + try: + lock.acquire() + db_conn.execute("VACUUM;") + db_conn.commit() + logger.info("Cleaned database") + finally: + lock.release() + @staticmethod def shutdown(): if ApiDependencies.invoker: diff --git a/invokeai/app/api/routers/app_info.py b/invokeai/app/api/routers/app_info.py index afa17d5bd7..a98c8edc6a 100644 --- a/invokeai/app/api/routers/app_info.py +++ b/invokeai/app/api/routers/app_info.py @@ -103,3 +103,13 @@ async def set_log_level( """Sets the log verbosity level""" ApiDependencies.invoker.services.logger.setLevel(level) return LogLevel(ApiDependencies.invoker.services.logger.level) + + +@app_router.delete( + "/invocation_cache", + operation_id="clear_invocation_cache", + responses={200: {"description": "The operation was successful"}}, +) +async def clear_invocation_cache() -> None: + """Clears the invocation cache""" + ApiDependencies.invoker.services.invocation_cache.clear() diff --git a/invokeai/app/api/routers/session_queue.py b/invokeai/app/api/routers/session_queue.py new file mode 100644 index 0000000000..fb2c98c9f1 --- /dev/null +++ b/invokeai/app/api/routers/session_queue.py @@ -0,0 +1,247 @@ +from typing import Optional + +from fastapi import Body, Path, Query +from fastapi.routing import APIRouter +from pydantic import BaseModel + +from invokeai.app.services.session_processor.session_processor_common import SessionProcessorStatus +from invokeai.app.services.session_queue.session_queue_common import ( + QUEUE_ITEM_STATUS, + Batch, + BatchStatus, + CancelByBatchIDsResult, + ClearResult, + EnqueueBatchResult, + EnqueueGraphResult, + PruneResult, + SessionQueueItem, + SessionQueueItemDTO, + SessionQueueStatus, +) +from invokeai.app.services.shared.models import CursorPaginatedResults + +from ...services.graph import Graph +from ..dependencies import ApiDependencies + +session_queue_router = APIRouter(prefix="/v1/queue", tags=["queue"]) + + +class SessionQueueAndProcessorStatus(BaseModel): + """The overall status of session queue and processor""" + + queue: SessionQueueStatus + processor: SessionProcessorStatus + + +@session_queue_router.post( + "/{queue_id}/enqueue_graph", + operation_id="enqueue_graph", + responses={ + 201: {"model": EnqueueGraphResult}, + }, +) +async def enqueue_graph( + queue_id: str = Path(description="The queue id to perform this operation on"), + graph: Graph = Body(description="The graph to enqueue"), + prepend: bool = Body(default=False, description="Whether or not to prepend this batch in the queue"), +) -> EnqueueGraphResult: + """Enqueues a graph for single execution.""" + + return ApiDependencies.invoker.services.session_queue.enqueue_graph(queue_id=queue_id, graph=graph, prepend=prepend) + + +@session_queue_router.post( + "/{queue_id}/enqueue_batch", + operation_id="enqueue_batch", + responses={ + 201: {"model": EnqueueBatchResult}, + }, +) +async def enqueue_batch( + queue_id: str = Path(description="The queue id to perform this operation on"), + batch: Batch = Body(description="Batch to process"), + prepend: bool = Body(default=False, description="Whether or not to prepend this batch in the queue"), +) -> EnqueueBatchResult: + """Processes a batch and enqueues the output graphs for execution.""" + + return ApiDependencies.invoker.services.session_queue.enqueue_batch(queue_id=queue_id, batch=batch, prepend=prepend) + + +@session_queue_router.get( + "/{queue_id}/list", + operation_id="list_queue_items", + responses={ + 200: {"model": CursorPaginatedResults[SessionQueueItemDTO]}, + }, +) +async def list_queue_items( + queue_id: str = Path(description="The queue id to perform this operation on"), + limit: int = Query(default=50, description="The number of items to fetch"), + status: Optional[QUEUE_ITEM_STATUS] = Query(default=None, description="The status of items to fetch"), + cursor: Optional[int] = Query(default=None, description="The pagination cursor"), + priority: int = Query(default=0, description="The pagination cursor priority"), +) -> CursorPaginatedResults[SessionQueueItemDTO]: + """Gets all queue items (without graphs)""" + + return ApiDependencies.invoker.services.session_queue.list_queue_items( + queue_id=queue_id, limit=limit, status=status, cursor=cursor, priority=priority + ) + + +@session_queue_router.put( + "/{queue_id}/processor/resume", + operation_id="resume", + responses={200: {"model": SessionProcessorStatus}}, +) +async def resume( + queue_id: str = Path(description="The queue id to perform this operation on"), +) -> SessionProcessorStatus: + """Resumes session processor""" + return ApiDependencies.invoker.services.session_processor.resume() + + +@session_queue_router.put( + "/{queue_id}/processor/pause", + operation_id="pause", + responses={200: {"model": SessionProcessorStatus}}, +) +async def Pause( + queue_id: str = Path(description="The queue id to perform this operation on"), +) -> SessionProcessorStatus: + """Pauses session processor""" + return ApiDependencies.invoker.services.session_processor.pause() + + +@session_queue_router.put( + "/{queue_id}/cancel_by_batch_ids", + operation_id="cancel_by_batch_ids", + responses={200: {"model": CancelByBatchIDsResult}}, +) +async def cancel_by_batch_ids( + queue_id: str = Path(description="The queue id to perform this operation on"), + batch_ids: list[str] = Body(description="The list of batch_ids to cancel all queue items for", embed=True), +) -> CancelByBatchIDsResult: + """Immediately cancels all queue items from the given batch ids""" + return ApiDependencies.invoker.services.session_queue.cancel_by_batch_ids(queue_id=queue_id, batch_ids=batch_ids) + + +@session_queue_router.put( + "/{queue_id}/clear", + operation_id="clear", + responses={ + 200: {"model": ClearResult}, + }, +) +async def clear( + queue_id: str = Path(description="The queue id to perform this operation on"), +) -> ClearResult: + """Clears the queue entirely, immediately canceling the currently-executing session""" + queue_item = ApiDependencies.invoker.services.session_queue.get_current(queue_id) + if queue_item is not None: + ApiDependencies.invoker.services.session_queue.cancel_queue_item(queue_item.item_id) + clear_result = ApiDependencies.invoker.services.session_queue.clear(queue_id) + return clear_result + + +@session_queue_router.put( + "/{queue_id}/prune", + operation_id="prune", + responses={ + 200: {"model": PruneResult}, + }, +) +async def prune( + queue_id: str = Path(description="The queue id to perform this operation on"), +) -> PruneResult: + """Prunes all completed or errored queue items""" + return ApiDependencies.invoker.services.session_queue.prune(queue_id) + + +@session_queue_router.get( + "/{queue_id}/current", + operation_id="get_current_queue_item", + responses={ + 200: {"model": Optional[SessionQueueItem]}, + }, +) +async def get_current_queue_item( + queue_id: str = Path(description="The queue id to perform this operation on"), +) -> Optional[SessionQueueItem]: + """Gets the currently execution queue item""" + return ApiDependencies.invoker.services.session_queue.get_current(queue_id) + + +@session_queue_router.get( + "/{queue_id}/next", + operation_id="get_next_queue_item", + responses={ + 200: {"model": Optional[SessionQueueItem]}, + }, +) +async def get_next_queue_item( + queue_id: str = Path(description="The queue id to perform this operation on"), +) -> Optional[SessionQueueItem]: + """Gets the next queue item, without executing it""" + return ApiDependencies.invoker.services.session_queue.get_next(queue_id) + + +@session_queue_router.get( + "/{queue_id}/status", + operation_id="get_queue_status", + responses={ + 200: {"model": SessionQueueAndProcessorStatus}, + }, +) +async def get_queue_status( + queue_id: str = Path(description="The queue id to perform this operation on"), +) -> SessionQueueAndProcessorStatus: + """Gets the status of the session queue""" + queue = ApiDependencies.invoker.services.session_queue.get_queue_status(queue_id) + processor = ApiDependencies.invoker.services.session_processor.get_status() + return SessionQueueAndProcessorStatus(queue=queue, processor=processor) + + +@session_queue_router.get( + "/{queue_id}/b/{batch_id}/status", + operation_id="get_batch_status", + responses={ + 200: {"model": BatchStatus}, + }, +) +async def get_batch_status( + queue_id: str = Path(description="The queue id to perform this operation on"), + batch_id: str = Path(description="The batch to get the status of"), +) -> BatchStatus: + """Gets the status of the session queue""" + return ApiDependencies.invoker.services.session_queue.get_batch_status(queue_id=queue_id, batch_id=batch_id) + + +@session_queue_router.get( + "/{queue_id}/i/{item_id}", + operation_id="get_queue_item", + responses={ + 200: {"model": SessionQueueItem}, + }, +) +async def get_queue_item( + queue_id: str = Path(description="The queue id to perform this operation on"), + item_id: int = Path(description="The queue item to get"), +) -> SessionQueueItem: + """Gets a queue item""" + return ApiDependencies.invoker.services.session_queue.get_queue_item(item_id) + + +@session_queue_router.put( + "/{queue_id}/i/{item_id}/cancel", + operation_id="cancel_queue_item", + responses={ + 200: {"model": SessionQueueItem}, + }, +) +async def cancel_queue_item( + queue_id: str = Path(description="The queue id to perform this operation on"), + item_id: int = Path(description="The queue item to cancel"), +) -> SessionQueueItem: + """Deletes a queue item""" + + return ApiDependencies.invoker.services.session_queue.cancel_queue_item(item_id) diff --git a/invokeai/app/api/routers/sessions.py b/invokeai/app/api/routers/sessions.py index e950e46e9f..ac6313edce 100644 --- a/invokeai/app/api/routers/sessions.py +++ b/invokeai/app/api/routers/sessions.py @@ -23,12 +23,14 @@ session_router = APIRouter(prefix="/v1/sessions", tags=["sessions"]) 200: {"model": GraphExecutionState}, 400: {"description": "Invalid json"}, }, + deprecated=True, ) async def create_session( - graph: Optional[Graph] = Body(default=None, description="The graph to initialize the session with") + queue_id: str = Query(default="", description="The id of the queue to associate 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) + session = ApiDependencies.invoker.create_execution_state(queue_id=queue_id, graph=graph) return session @@ -36,6 +38,7 @@ async def create_session( "/", operation_id="list_sessions", responses={200: {"model": PaginatedResults[GraphExecutionState]}}, + deprecated=True, ) async def list_sessions( page: int = Query(default=0, description="The page of results to get"), @@ -57,6 +60,7 @@ async def list_sessions( 200: {"model": GraphExecutionState}, 404: {"description": "Session not found"}, }, + deprecated=True, ) async def get_session( session_id: str = Path(description="The id of the session to get"), @@ -77,6 +81,7 @@ async def get_session( 400: {"description": "Invalid node or link"}, 404: {"description": "Session not found"}, }, + deprecated=True, ) async def add_node( session_id: str = Path(description="The id of the session"), @@ -109,6 +114,7 @@ async def add_node( 400: {"description": "Invalid node or link"}, 404: {"description": "Session not found"}, }, + deprecated=True, ) async def update_node( session_id: str = Path(description="The id of the session"), @@ -142,6 +148,7 @@ async def update_node( 400: {"description": "Invalid node or link"}, 404: {"description": "Session not found"}, }, + deprecated=True, ) async def delete_node( session_id: str = Path(description="The id of the session"), @@ -172,6 +179,7 @@ async def delete_node( 400: {"description": "Invalid node or link"}, 404: {"description": "Session not found"}, }, + deprecated=True, ) async def add_edge( session_id: str = Path(description="The id of the session"), @@ -203,6 +211,7 @@ async def add_edge( 400: {"description": "Invalid node or link"}, 404: {"description": "Session not found"}, }, + deprecated=True, ) async def delete_edge( session_id: str = Path(description="The id of the session"), @@ -241,8 +250,10 @@ async def delete_edge( 400: {"description": "The session has no invocations ready to invoke"}, 404: {"description": "Session not found"}, }, + deprecated=True, ) async def invoke_session( + queue_id: str = Query(description="The id of the queue to associate the session with"), 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"), ) -> Response: @@ -254,7 +265,7 @@ async def invoke_session( if session.is_complete(): raise HTTPException(status_code=400) - ApiDependencies.invoker.invoke(session, invoke_all=all) + ApiDependencies.invoker.invoke(queue_id, session, invoke_all=all) return Response(status_code=202) @@ -262,6 +273,7 @@ async def invoke_session( "/{session_id}/invoke", operation_id="cancel_session_invoke", responses={202: {"description": "The invocation is canceled"}}, + deprecated=True, ) async def cancel_session_invoke( session_id: str = Path(description="The id of the session to cancel"), diff --git a/invokeai/app/api/routers/utilities.py b/invokeai/app/api/routers/utilities.py new file mode 100644 index 0000000000..e664cb9070 --- /dev/null +++ b/invokeai/app/api/routers/utilities.py @@ -0,0 +1,41 @@ +from typing import Optional + +from dynamicprompts.generators import CombinatorialPromptGenerator, RandomPromptGenerator +from fastapi import Body +from fastapi.routing import APIRouter +from pydantic import BaseModel +from pyparsing import ParseException + +utilities_router = APIRouter(prefix="/v1/utilities", tags=["utilities"]) + + +class DynamicPromptsResponse(BaseModel): + prompts: list[str] + error: Optional[str] = None + + +@utilities_router.post( + "/dynamicprompts", + operation_id="parse_dynamicprompts", + responses={ + 200: {"model": DynamicPromptsResponse}, + }, +) +async def parse_dynamicprompts( + prompt: str = Body(description="The prompt to parse with dynamicprompts"), + max_prompts: int = Body(default=1000, description="The max number of prompts to generate"), + combinatorial: bool = Body(default=True, description="Whether to use the combinatorial generator"), +) -> DynamicPromptsResponse: + """Creates a batch process""" + try: + error: Optional[str] = None + if combinatorial: + generator = CombinatorialPromptGenerator() + prompts = generator.generate(prompt, max_prompts=max_prompts) + else: + generator = RandomPromptGenerator() + prompts = generator.generate(prompt, num_images=max_prompts) + except ParseException as e: + prompts = [prompt] + error = str(e) + return DynamicPromptsResponse(prompts=prompts if prompts else [""], error=error) diff --git a/invokeai/app/api/sockets.py b/invokeai/app/api/sockets.py index 4591bac540..20fa6606bd 100644 --- a/invokeai/app/api/sockets.py +++ b/invokeai/app/api/sockets.py @@ -13,24 +13,22 @@ class SocketIO: def __init__(self, app: FastAPI): self.__sio = SocketManager(app=app) - 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) + self.__sio.on("subscribe_queue", handler=self._handle_sub_queue) + self.__sio.on("unsubscribe_queue", handler=self._handle_unsub_queue) + local_handler.register(event_name=EventServiceBase.queue_event, _func=self._handle_queue_event) - async def _handle_session_event(self, event: Event): + async def _handle_queue_event(self, event: Event): await self.__sio.emit( event=event[1]["event"], data=event[1]["data"], - room=event[1]["data"]["graph_execution_state_id"], + room=event[1]["data"]["queue_id"], ) - async def _handle_sub(self, sid, data, *args, **kwargs): - if "session" in data: - self.__sio.enter_room(sid, data["session"]) + async def _handle_sub_queue(self, sid, data, *args, **kwargs): + if "queue_id" in data: + self.__sio.enter_room(sid, data["queue_id"]) - # @app.sio.on('unsubscribe') - - async def _handle_unsub(self, sid, data, *args, **kwargs): - if "session" in data: - self.__sio.leave_room(sid, data["session"]) + async def _handle_unsub_queue(self, sid, data, *args, **kwargs): + if "queue_id" in data: + self.__sio.enter_room(sid, data["queue_id"]) diff --git a/invokeai/app/api_app.py b/invokeai/app/api_app.py index 93f02b3446..c93197d1bf 100644 --- a/invokeai/app/api_app.py +++ b/invokeai/app/api_app.py @@ -1,4 +1,3 @@ -# Copyright (c) 2022-2023 Kyle Schouviller (https://github.com/kyle0654) and the InvokeAI Team from .services.config import InvokeAIAppConfig # parse_args() must be called before any other imports. if it is not called first, consumers of the config @@ -33,7 +32,7 @@ if True: # hack to make flake8 happy with imports coming after setting up the c from ..backend.util.logging import InvokeAILogger from .api.dependencies import ApiDependencies - from .api.routers import app_info, board_images, boards, images, models, sessions + from .api.routers import app_info, board_images, boards, images, models, session_queue, sessions, utilities from .api.sockets import SocketIO from .invocations.baseinvocation import BaseInvocation, UIConfigBase, _InputField, _OutputField @@ -92,6 +91,8 @@ async def shutdown_event(): app.include_router(sessions.session_router, prefix="/api") +app.include_router(utilities.utilities_router, prefix="/api") + app.include_router(models.models_router, prefix="/api") app.include_router(images.images_router, prefix="/api") @@ -102,6 +103,8 @@ app.include_router(board_images.board_images_router, prefix="/api") app.include_router(app_info.app_router, prefix="/api") +app.include_router(session_queue.session_queue_router, prefix="/api") + # Build a custom OpenAPI to include all outputs # TODO: can outputs be included on metadata of invocation schemas somehow? diff --git a/invokeai/app/cli_app.py b/invokeai/app/cli_app.py index 3b8410a88e..dc59954e9b 100644 --- a/invokeai/app/cli_app.py +++ b/invokeai/app/cli_app.py @@ -1,4 +1,6 @@ -# Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) +# Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) and the InvokeAI Team + +from invokeai.app.services.invocation_cache.invocation_cache_memory import MemoryInvocationCache from .services.config import InvokeAIAppConfig @@ -12,6 +14,7 @@ if True: # hack to make flake8 happy with imports coming after setting up the c import argparse import re import shlex + import sqlite3 import sys import time from typing import Optional, Union, get_type_hints @@ -249,19 +252,18 @@ def invoke_cli(): db_location = config.db_path db_location.parent.mkdir(parents=True, exist_ok=True) + db_conn = sqlite3.connect(db_location, check_same_thread=False) # TODO: figure out a better threading solution logger.info(f'InvokeAI database location is "{db_location}"') - graph_execution_manager = SqliteItemStorage[GraphExecutionState]( - filename=db_location, table_name="graph_executions" - ) + graph_execution_manager = SqliteItemStorage[GraphExecutionState](conn=db_conn, table_name="graph_executions") urls = LocalUrlService() - image_record_storage = SqliteImageRecordStorage(db_location) + image_record_storage = SqliteImageRecordStorage(conn=db_conn) image_file_storage = DiskImageFileStorage(f"{output_folder}/images") names = SimpleNameService() - board_record_storage = SqliteBoardRecordStorage(db_location) - board_image_record_storage = SqliteBoardImageRecordStorage(db_location) + board_record_storage = SqliteBoardRecordStorage(conn=db_conn) + board_image_record_storage = SqliteBoardImageRecordStorage(conn=db_conn) boards = BoardService( services=BoardServiceDependencies( @@ -303,12 +305,13 @@ def invoke_cli(): boards=boards, board_images=board_images, queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph](filename=db_location, table_name="graphs"), + graph_library=SqliteItemStorage[LibraryGraph](conn=db_conn, table_name="graphs"), graph_execution_manager=graph_execution_manager, processor=DefaultInvocationProcessor(), performance_statistics=InvocationStatsService(graph_execution_manager), logger=logger, configuration=config, + invocation_cache=MemoryInvocationCache(max_cache_size=config.node_cache_size), ) system_graphs = create_system_graphs(services.graph_library) diff --git a/invokeai/app/invocations/baseinvocation.py b/invokeai/app/invocations/baseinvocation.py index 9fbd920dd2..97bd29ff17 100644 --- a/invokeai/app/invocations/baseinvocation.py +++ b/invokeai/app/invocations/baseinvocation.py @@ -67,6 +67,7 @@ class FieldDescriptions: width = "Width of output (px)" height = "Height of output (px)" control = "ControlNet(s) to apply" + ip_adapter = "IP-Adapter to apply" denoised_latents = "Denoised latents tensor" latents = "Latents tensor" strength = "Strength of denoising (proportional to steps)" @@ -155,6 +156,7 @@ class UIType(str, Enum): VaeModel = "VaeModelField" LoRAModel = "LoRAModelField" ControlNetModel = "ControlNetModelField" + IPAdapterModel = "IPAdapterModelField" UNet = "UNetField" Vae = "VaeField" CLIP = "ClipField" @@ -417,12 +419,27 @@ class UIConfigBase(BaseModel): class InvocationContext: + """Initialized and provided to on execution of invocations.""" + services: InvocationServices graph_execution_state_id: str + queue_id: str + queue_item_id: int + queue_batch_id: str - def __init__(self, services: InvocationServices, graph_execution_state_id: str): + def __init__( + self, + services: InvocationServices, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, + graph_execution_state_id: str, + ): self.services = services self.graph_execution_state_id = graph_execution_state_id + self.queue_id = queue_id + self.queue_item_id = queue_item_id + self.queue_batch_id = queue_batch_id class BaseInvocationOutput(BaseModel): @@ -520,6 +537,9 @@ class BaseInvocation(ABC, BaseModel): return signature(cls.invoke).return_annotation class Config: + validate_assignment = True + validate_all = True + @staticmethod def schema_extra(schema: dict[str, Any], model_class: Type[BaseModel]) -> None: uiconfig = getattr(model_class, "UIConfig", None) @@ -568,7 +588,29 @@ class BaseInvocation(ABC, BaseModel): raise RequiredConnectionException(self.__fields__["type"].default, field_name) elif _input == Input.Any: raise MissingInputException(self.__fields__["type"].default, field_name) - return self.invoke(context) + + # skip node cache codepath if it's disabled + if context.services.configuration.node_cache_size == 0: + return self.invoke(context) + + output: BaseInvocationOutput + if self.use_cache: + key = context.services.invocation_cache.create_key(self) + cached_value = context.services.invocation_cache.get(key) + if cached_value is None: + context.services.logger.debug(f'Invocation cache miss for type "{self.get_type()}": {self.id}') + output = self.invoke(context) + context.services.invocation_cache.save(key, output) + return output + else: + context.services.logger.debug(f'Invocation cache hit for type "{self.get_type()}": {self.id}') + return cached_value + else: + context.services.logger.debug(f'Skipping invocation cache for "{self.get_type()}": {self.id}') + return self.invoke(context) + + def get_type(self) -> str: + return self.__fields__["type"].default id: str = Field( description="The id of this instance of an invocation. Must be unique among all instances of invocations." @@ -581,6 +623,7 @@ class BaseInvocation(ABC, BaseModel): description="The workflow to save with the image", ui_type=UIType.WorkflowField, ) + use_cache: bool = InputField(default=True, description="Whether or not to use the cache") @validator("workflow", pre=True) def validate_workflow_is_json(cls, v): @@ -604,6 +647,7 @@ def invocation( tags: Optional[list[str]] = None, category: Optional[str] = None, version: Optional[str] = None, + use_cache: Optional[bool] = True, ) -> Callable[[Type[GenericBaseInvocation]], Type[GenericBaseInvocation]]: """ Adds metadata to an invocation. @@ -636,6 +680,8 @@ def invocation( except ValueError as e: raise InvalidVersionError(f'Invalid version string for node "{invocation_type}": "{version}"') from e cls.UIConfig.version = version + if use_cache is not None: + cls.__fields__["use_cache"].default = use_cache # Add the invocation type to the pydantic model of the invocation invocation_type_annotation = Literal[invocation_type] # type: ignore diff --git a/invokeai/app/invocations/collections.py b/invokeai/app/invocations/collections.py index 702eb99831..83863422f8 100644 --- a/invokeai/app/invocations/collections.py +++ b/invokeai/app/invocations/collections.py @@ -56,6 +56,7 @@ class RangeOfSizeInvocation(BaseInvocation): tags=["range", "integer", "random", "collection"], category="collections", version="1.0.0", + use_cache=False, ) class RandomRangeInvocation(BaseInvocation): """Creates a collection of random numbers""" diff --git a/invokeai/app/invocations/compel.py b/invokeai/app/invocations/compel.py index 3fdbf9b6e9..b2634c2c56 100644 --- a/invokeai/app/invocations/compel.py +++ b/invokeai/app/invocations/compel.py @@ -7,14 +7,14 @@ from compel import Compel, ReturnedEmbeddingsType from compel.prompt_parser import Blend, Conjunction, CrossAttentionControlSubstitute, FlattenedPrompt, Fragment from invokeai.app.invocations.primitives import ConditioningField, ConditioningOutput -from invokeai.backend.stable_diffusion.diffusion.shared_invokeai_diffusion import ( +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ( BasicConditioningInfo, + ExtraConditioningInfo, SDXLConditioningInfo, ) from ...backend.model_management.lora import ModelPatcher from ...backend.model_management.models import ModelNotFoundException, ModelType -from ...backend.stable_diffusion.diffusion import InvokeAIDiffuserComponent from ...backend.util.devices import torch_dtype from .baseinvocation import ( BaseInvocation, @@ -99,14 +99,15 @@ class CompelInvocation(BaseInvocation): # 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: + 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, @@ -122,7 +123,7 @@ class CompelInvocation(BaseInvocation): c, options = compel.build_conditioning_tensor_for_conjunction(conjunction) - ec = InvokeAIDiffuserComponent.ExtraConditioningInfo( + ec = ExtraConditioningInfo( tokens_count_including_eos_bos=get_max_token_count(tokenizer, conjunction), cross_attention_control_args=options.get("cross_attention_control", None), ) @@ -213,14 +214,15 @@ class SDXLPromptInvocationBase: # print(traceback.format_exc()) print(f'Warn: trigger: "{trigger}" not found') - with ModelPatcher.apply_lora( - text_encoder_info.context.model, _lora_loader(), lora_prefix - ), 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: + with ( + ModelPatcher.apply_lora(text_encoder_info.context.model, _lora_loader(), lora_prefix), + 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, @@ -244,7 +246,7 @@ class SDXLPromptInvocationBase: else: c_pooled = None - ec = InvokeAIDiffuserComponent.ExtraConditioningInfo( + ec = ExtraConditioningInfo( tokens_count_including_eos_bos=get_max_token_count(tokenizer, conjunction), cross_attention_control_args=options.get("cross_attention_control", None), ) @@ -436,9 +438,11 @@ def get_tokens_for_prompt_object(tokenizer, parsed_prompt: FlattenedPrompt, trun 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)) + ( + x.text + if type(x) is Fragment + 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) diff --git a/invokeai/app/invocations/image.py b/invokeai/app/invocations/image.py index 11e5fc90a0..0403fa71e3 100644 --- a/invokeai/app/invocations/image.py +++ b/invokeai/app/invocations/image.py @@ -965,3 +965,42 @@ class ImageChannelMultiplyInvocation(BaseInvocation): width=image_dto.width, height=image_dto.height, ) + + +@invocation( + "save_image", + title="Save Image", + tags=["primitives", "image"], + category="primitives", + version="1.0.0", + use_cache=False, +) +class SaveImageInvocation(BaseInvocation): + """Saves an image. Unlike an image primitive, this invocation stores a copy of the image.""" + + image: ImageField = InputField(description="The image to load") + metadata: CoreMetadata = InputField( + default=None, + description=FieldDescriptions.core_metadata, + ui_hidden=True, + ) + + def invoke(self, context: InvocationContext) -> ImageOutput: + image = context.services.images.get_pil_image(self.image.image_name) + + 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, + workflow=self.workflow, + ) + + return ImageOutput( + image=ImageField(image_name=image_dto.image_name), + width=image_dto.width, + height=image_dto.height, + ) diff --git a/invokeai/app/invocations/ip_adapter.py b/invokeai/app/invocations/ip_adapter.py new file mode 100644 index 0000000000..0c5b858112 --- /dev/null +++ b/invokeai/app/invocations/ip_adapter.py @@ -0,0 +1,105 @@ +import os +from builtins import float +from typing import List, Union + +from pydantic import BaseModel, Field + +from invokeai.app.invocations.baseinvocation import ( + BaseInvocation, + BaseInvocationOutput, + FieldDescriptions, + Input, + InputField, + InvocationContext, + OutputField, + UIType, + invocation, + invocation_output, +) +from invokeai.app.invocations.primitives import ImageField +from invokeai.backend.model_management.models.base import BaseModelType, ModelType +from invokeai.backend.model_management.models.ip_adapter import get_ip_adapter_image_encoder_model_id + + +class IPAdapterModelField(BaseModel): + model_name: str = Field(description="Name of the IP-Adapter model") + base_model: BaseModelType = Field(description="Base model") + + +class CLIPVisionModelField(BaseModel): + model_name: str = Field(description="Name of the CLIP Vision image encoder model") + base_model: BaseModelType = Field(description="Base model (usually 'Any')") + + +class IPAdapterField(BaseModel): + image: ImageField = Field(description="The IP-Adapter image prompt.") + ip_adapter_model: IPAdapterModelField = Field(description="The IP-Adapter model to use.") + image_encoder_model: CLIPVisionModelField = Field(description="The name of the CLIP image encoder model.") + weight: Union[float, List[float]] = Field(default=1, description="The weight given to the ControlNet") + # weight: float = Field(default=1.0, ge=0, description="The weight of the IP-Adapter.") + begin_step_percent: float = Field( + default=0, ge=0, le=1, description="When the IP-Adapter is first applied (% of total steps)" + ) + end_step_percent: float = Field( + default=1, ge=0, le=1, description="When the IP-Adapter is last applied (% of total steps)" + ) + + +@invocation_output("ip_adapter_output") +class IPAdapterOutput(BaseInvocationOutput): + # Outputs + ip_adapter: IPAdapterField = OutputField(description=FieldDescriptions.ip_adapter, title="IP-Adapter") + + +@invocation("ip_adapter", title="IP-Adapter", tags=["ip_adapter", "control"], category="ip_adapter", version="1.0.0") +class IPAdapterInvocation(BaseInvocation): + """Collects IP-Adapter info to pass to other nodes.""" + + # Inputs + image: ImageField = InputField(description="The IP-Adapter image prompt.") + ip_adapter_model: IPAdapterModelField = InputField( + description="The IP-Adapter model.", + title="IP-Adapter Model", + input=Input.Direct, + ) + + # weight: float = InputField(default=1.0, description="The weight of the IP-Adapter.", ui_type=UIType.Float) + weight: Union[float, List[float]] = InputField( + default=1, ge=0, description="The weight given to the IP-Adapter", ui_type=UIType.Float, title="Weight" + ) + + begin_step_percent: float = InputField( + default=0, ge=-1, le=2, description="When the IP-Adapter is first applied (% of total steps)" + ) + end_step_percent: float = InputField( + default=1, ge=0, le=1, description="When the IP-Adapter is last applied (% of total steps)" + ) + + def invoke(self, context: InvocationContext) -> IPAdapterOutput: + # Lookup the CLIP Vision encoder that is intended to be used with the IP-Adapter model. + ip_adapter_info = context.services.model_manager.model_info( + self.ip_adapter_model.model_name, self.ip_adapter_model.base_model, ModelType.IPAdapter + ) + # HACK(ryand): This is bad for a couple of reasons: 1) we are bypassing the model manager to read the model + # directly, and 2) we are reading from disk every time this invocation is called without caching the result. + # A better solution would be to store the image encoder model reference in the IP-Adapter model info, but this + # is currently messy due to differences between how the model info is generated when installing a model from + # disk vs. downloading the model. + image_encoder_model_id = get_ip_adapter_image_encoder_model_id( + os.path.join(context.services.configuration.get_config().models_path, ip_adapter_info["path"]) + ) + image_encoder_model_name = image_encoder_model_id.split("/")[-1].strip() + image_encoder_model = CLIPVisionModelField( + model_name=image_encoder_model_name, + base_model=BaseModelType.Any, + ) + return IPAdapterOutput( + ip_adapter=IPAdapterField( + image=self.image, + ip_adapter_model=self.ip_adapter_model, + image_encoder_model=image_encoder_model, + weight=self.weight, + begin_step_percent=self.begin_step_percent, + end_step_percent=self.end_step_percent, + ), + ) diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index 5c7a9d1e7c..6c7f3da366 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -10,6 +10,7 @@ import torch import torchvision.transforms as T from diffusers import AutoencoderKL, AutoencoderTiny from diffusers.image_processor import VaeImageProcessor +from diffusers.models import UNet2DConditionModel from diffusers.models.attention_processor import ( AttnProcessor2_0, LoRAAttnProcessor2_0, @@ -21,6 +22,7 @@ from diffusers.schedulers import SchedulerMixin as Scheduler from pydantic import validator from torchvision.transforms.functional import resize as tv_resize +from invokeai.app.invocations.ip_adapter import IPAdapterField from invokeai.app.invocations.metadata import CoreMetadata from invokeai.app.invocations.primitives import ( DenoiseMaskField, @@ -33,15 +35,17 @@ from invokeai.app.invocations.primitives import ( ) from invokeai.app.util.controlnet_utils import prepare_control_image from invokeai.app.util.step_callback import stable_diffusion_step_callback +from invokeai.backend.ip_adapter.ip_adapter import IPAdapter, IPAdapterPlus from invokeai.backend.model_management.models import ModelType, SilenceWarnings +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningData, IPAdapterConditioningInfo from ...backend.model_management.lora import ModelPatcher from ...backend.model_management.models import BaseModelType from ...backend.model_management.seamless import set_seamless from ...backend.stable_diffusion import PipelineIntermediateState from ...backend.stable_diffusion.diffusers_pipeline import ( - ConditioningData, ControlNetData, + IPAdapterData, StableDiffusionGeneratorPipeline, image_resized_to_grid_as_tensor, ) @@ -70,7 +74,6 @@ if choose_torch_device() == torch.device("mps"): DEFAULT_PRECISION = choose_precision(choose_torch_device()) - SAMPLER_NAME_VALUES = Literal[tuple(list(SCHEDULER_MAP.keys()))] @@ -193,7 +196,7 @@ def get_scheduler( title="Denoise Latents", tags=["latents", "denoise", "txt2img", "t2i", "t2l", "img2img", "i2i", "l2l"], category="latents", - version="1.0.0", + version="1.1.0", ) class DenoiseLatentsInvocation(BaseInvocation): """Denoises noisy latents to decodable images""" @@ -221,9 +224,12 @@ class DenoiseLatentsInvocation(BaseInvocation): input=Input.Connection, ui_order=5, ) + ip_adapter: Optional[IPAdapterField] = InputField( + description=FieldDescriptions.ip_adapter, title="IP-Adapter", default=None, input=Input.Connection, ui_order=6 + ) latents: Optional[LatentsField] = InputField(description=FieldDescriptions.latents, input=Input.Connection) denoise_mask: Optional[DenoiseMaskField] = InputField( - default=None, description=FieldDescriptions.mask, input=Input.Connection, ui_order=6 + default=None, description=FieldDescriptions.mask, input=Input.Connection, ui_order=7 ) @validator("cfg_scale") @@ -325,8 +331,6 @@ class DenoiseLatentsInvocation(BaseInvocation): def prep_control_data( self, context: InvocationContext, - # really only need model for dtype and device - model: StableDiffusionGeneratorPipeline, control_input: Union[ControlField, List[ControlField]], latents_shape: List[int], exit_stack: ExitStack, @@ -346,57 +350,107 @@ class DenoiseLatentsInvocation(BaseInvocation): else: control_list = 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: - # FIXME: add checks to skip entry if model or image is None - # and if weight is None, populate with default 1.0? - control_data = [] - control_models = [] - for control_info in control_list: - control_model = exit_stack.enter_context( - context.services.model_manager.get_model( - model_name=control_info.control_model.model_name, - model_type=ModelType.ControlNet, - base_model=control_info.control_model.base_model, - context=context, - ) - ) + return None + # After above handling, any control that is not None should now be of type list[ControlField]. - control_models.append(control_model) - control_image_field = control_info.image - 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? - # and do real check for classifier_free_guidance? - # prepare_control_image should return torch.Tensor of shape(batch_size, 3, height, width) - control_image = prepare_control_image( - image=input_image, - do_classifier_free_guidance=do_classifier_free_guidance, - width=control_width_resize, - height=control_height_resize, - # batch_size=batch_size * num_images_per_prompt, - # num_images_per_prompt=num_images_per_prompt, - device=control_model.device, - dtype=control_model.dtype, - control_mode=control_info.control_mode, - resize_mode=control_info.resize_mode, + # FIXME: add checks to skip entry if model or image is None + # and if weight is None, populate with default 1.0? + controlnet_data = [] + for control_info in control_list: + control_model = exit_stack.enter_context( + context.services.model_manager.get_model( + model_name=control_info.control_model.model_name, + model_type=ModelType.ControlNet, + base_model=control_info.control_model.base_model, + context=context, ) - control_item = ControlNetData( - model=control_model, - image_tensor=control_image, - weight=control_info.control_weight, - begin_step_percent=control_info.begin_step_percent, - end_step_percent=control_info.end_step_percent, - control_mode=control_info.control_mode, - # any resizing needed should currently be happening in prepare_control_image(), - # but adding resize_mode to ControlNetData in case needed in the future - resize_mode=control_info.resize_mode, - ) - control_data.append(control_item) - # MultiControlNetModel has been refactored out, just need list[ControlNetData] - return control_data + ) + + # control_models.append(control_model) + control_image_field = control_info.image + 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? + # and do real check for classifier_free_guidance? + # prepare_control_image should return torch.Tensor of shape(batch_size, 3, height, width) + control_image = prepare_control_image( + image=input_image, + do_classifier_free_guidance=do_classifier_free_guidance, + width=control_width_resize, + height=control_height_resize, + # batch_size=batch_size * num_images_per_prompt, + # num_images_per_prompt=num_images_per_prompt, + device=control_model.device, + dtype=control_model.dtype, + control_mode=control_info.control_mode, + resize_mode=control_info.resize_mode, + ) + control_item = ControlNetData( + model=control_model, # model object + image_tensor=control_image, + weight=control_info.control_weight, + begin_step_percent=control_info.begin_step_percent, + end_step_percent=control_info.end_step_percent, + control_mode=control_info.control_mode, + # any resizing needed should currently be happening in prepare_control_image(), + # but adding resize_mode to ControlNetData in case needed in the future + resize_mode=control_info.resize_mode, + ) + controlnet_data.append(control_item) + # MultiControlNetModel has been refactored out, just need list[ControlNetData] + + return controlnet_data + + def prep_ip_adapter_data( + self, + context: InvocationContext, + ip_adapter: Optional[IPAdapterField], + conditioning_data: ConditioningData, + unet: UNet2DConditionModel, + exit_stack: ExitStack, + ) -> Optional[IPAdapterData]: + """If IP-Adapter is enabled, then this function loads the requisite models, and adds the image prompt embeddings + to the `conditioning_data` (in-place). + """ + if ip_adapter is None: + return None + + image_encoder_model_info = context.services.model_manager.get_model( + model_name=ip_adapter.image_encoder_model.model_name, + model_type=ModelType.CLIPVision, + base_model=ip_adapter.image_encoder_model.base_model, + context=context, + ) + + ip_adapter_model: Union[IPAdapter, IPAdapterPlus] = exit_stack.enter_context( + context.services.model_manager.get_model( + model_name=ip_adapter.ip_adapter_model.model_name, + model_type=ModelType.IPAdapter, + base_model=ip_adapter.ip_adapter_model.base_model, + context=context, + ) + ) + + input_image = context.services.images.get_pil_image(ip_adapter.image.image_name) + + # TODO(ryand): With some effort, the step of running the CLIP Vision encoder could be done before any other + # models are needed in memory. This would help to reduce peak memory utilization in low-memory environments. + with image_encoder_model_info as image_encoder_model: + # Get image embeddings from CLIP and ImageProjModel. + image_prompt_embeds, uncond_image_prompt_embeds = ip_adapter_model.get_image_embeds( + input_image, image_encoder_model + ) + conditioning_data.ip_adapter_conditioning = IPAdapterConditioningInfo( + image_prompt_embeds, uncond_image_prompt_embeds + ) + + return IPAdapterData( + ip_adapter_model=ip_adapter_model, + weight=ip_adapter.weight, + begin_step_percent=ip_adapter.begin_step_percent, + end_step_percent=ip_adapter.end_step_percent, + ) # original idea by https://github.com/AmericanPresidentJimmyCarter # TODO: research more for second order schedulers timesteps @@ -490,9 +544,12 @@ class DenoiseLatentsInvocation(BaseInvocation): **self.unet.unet.dict(), context=context, ) - with ExitStack() as exit_stack, ModelPatcher.apply_lora_unet( - unet_info.context.model, _lora_loader() - ), set_seamless(unet_info.context.model, self.unet.seamless_axes), unet_info as unet: + with ( + ExitStack() as exit_stack, + ModelPatcher.apply_lora_unet(unet_info.context.model, _lora_loader()), + set_seamless(unet_info.context.model, self.unet.seamless_axes), + unet_info as unet, + ): latents = latents.to(device=unet.device, dtype=unet.dtype) if noise is not None: noise = noise.to(device=unet.device, dtype=unet.dtype) @@ -511,8 +568,7 @@ class DenoiseLatentsInvocation(BaseInvocation): pipeline = self.create_pipeline(unet, scheduler) conditioning_data = self.get_conditioning_data(context, scheduler, unet, seed) - control_data = self.prep_control_data( - model=pipeline, + controlnet_data = self.prep_control_data( context=context, control_input=self.control, latents_shape=latents.shape, @@ -521,6 +577,14 @@ class DenoiseLatentsInvocation(BaseInvocation): exit_stack=exit_stack, ) + ip_adapter_data = self.prep_ip_adapter_data( + context=context, + ip_adapter=self.ip_adapter, + conditioning_data=conditioning_data, + unet=unet, + exit_stack=exit_stack, + ) + num_inference_steps, timesteps, init_timestep = self.init_scheduler( scheduler, device=unet.device, @@ -539,7 +603,8 @@ class DenoiseLatentsInvocation(BaseInvocation): masked_latents=masked_latents, num_inference_steps=num_inference_steps, conditioning_data=conditioning_data, - control_data=control_data, # list[ControlNetData] + control_data=controlnet_data, # list[ControlNetData], + ip_adapter_data=ip_adapter_data, # IPAdapterData, callback=step_callback, ) diff --git a/invokeai/app/invocations/math.py b/invokeai/app/invocations/math.py index ac15146478..3cdd43fb59 100644 --- a/invokeai/app/invocations/math.py +++ b/invokeai/app/invocations/math.py @@ -54,7 +54,14 @@ class DivideInvocation(BaseInvocation): return IntegerOutput(value=int(self.a / self.b)) -@invocation("rand_int", title="Random Integer", tags=["math", "random"], category="math", version="1.0.0") +@invocation( + "rand_int", + title="Random Integer", + tags=["math", "random"], + category="math", + version="1.0.0", + use_cache=False, +) class RandomIntInvocation(BaseInvocation): """Outputs a single random integer.""" diff --git a/invokeai/app/invocations/onnx.py b/invokeai/app/invocations/onnx.py index 213ce82a75..4c7fab44d8 100644 --- a/invokeai/app/invocations/onnx.py +++ b/invokeai/app/invocations/onnx.py @@ -95,9 +95,10 @@ class ONNXPromptInvocation(BaseInvocation): print(f'Warn: trigger: "{trigger}" not found') if loras or ti_list: text_encoder.release_session() - with ONNXModelPatcher.apply_lora_text_encoder(text_encoder, loras), ONNXModelPatcher.apply_ti( - orig_tokenizer, text_encoder, ti_list - ) as (tokenizer, ti_manager): + with ( + ONNXModelPatcher.apply_lora_text_encoder(text_encoder, loras), + ONNXModelPatcher.apply_ti(orig_tokenizer, text_encoder, ti_list) as (tokenizer, ti_manager), + ): text_encoder.create_session() # copy from diff --git a/invokeai/app/invocations/prompt.py b/invokeai/app/invocations/prompt.py index 69ce1dba49..b3d482b779 100644 --- a/invokeai/app/invocations/prompt.py +++ b/invokeai/app/invocations/prompt.py @@ -10,7 +10,14 @@ from invokeai.app.invocations.primitives import StringCollectionOutput from .baseinvocation import BaseInvocation, InputField, InvocationContext, UIComponent, invocation -@invocation("dynamic_prompt", title="Dynamic Prompt", tags=["prompt", "collection"], category="prompt", version="1.0.0") +@invocation( + "dynamic_prompt", + title="Dynamic Prompt", + tags=["prompt", "collection"], + category="prompt", + version="1.0.0", + use_cache=False, +) class DynamicPromptInvocation(BaseInvocation): """Parses a prompt using adieyal/dynamicprompts' random or combinatorial generator""" diff --git a/invokeai/app/services/board_image_record_storage.py b/invokeai/app/services/board_image_record_storage.py index d35f9f2179..c4d06ec131 100644 --- a/invokeai/app/services/board_image_record_storage.py +++ b/invokeai/app/services/board_image_record_storage.py @@ -53,24 +53,20 @@ class BoardImageRecordStorageBase(ABC): class SqliteBoardImageRecordStorage(BoardImageRecordStorageBase): - _filename: str _conn: sqlite3.Connection _cursor: sqlite3.Cursor _lock: threading.Lock - def __init__(self, filename: str) -> None: + def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None: super().__init__() - self._filename = filename - self._conn = sqlite3.connect(filename, check_same_thread=False) + self._conn = conn # Enable row factory to get rows as dictionaries (must be done before making the cursor!) self._conn.row_factory = sqlite3.Row self._cursor = self._conn.cursor() - self._lock = threading.Lock() + self._lock = lock try: self._lock.acquire() - # Enable foreign keys - self._conn.execute("PRAGMA foreign_keys = ON;") self._create_tables() self._conn.commit() finally: diff --git a/invokeai/app/services/board_record_storage.py b/invokeai/app/services/board_record_storage.py index f4876b6935..c12a9c8eea 100644 --- a/invokeai/app/services/board_record_storage.py +++ b/invokeai/app/services/board_record_storage.py @@ -1,6 +1,5 @@ import sqlite3 import threading -import uuid from abc import ABC, abstractmethod from typing import Optional, Union, cast @@ -8,6 +7,7 @@ from pydantic import BaseModel, Extra, Field from invokeai.app.services.image_record_storage import OffsetPaginatedResults from invokeai.app.services.models.board_record import BoardRecord, deserialize_board_record +from invokeai.app.util.misc import uuid_string class BoardChanges(BaseModel, extra=Extra.forbid): @@ -87,24 +87,20 @@ class BoardRecordStorageBase(ABC): class SqliteBoardRecordStorage(BoardRecordStorageBase): - _filename: str _conn: sqlite3.Connection _cursor: sqlite3.Cursor _lock: threading.Lock - def __init__(self, filename: str) -> None: + def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None: super().__init__() - self._filename = filename - self._conn = sqlite3.connect(filename, check_same_thread=False) + self._conn = conn # Enable row factory to get rows as dictionaries (must be done before making the cursor!) self._conn.row_factory = sqlite3.Row self._cursor = self._conn.cursor() - self._lock = threading.Lock() + self._lock = lock try: self._lock.acquire() - # Enable foreign keys - self._conn.execute("PRAGMA foreign_keys = ON;") self._create_tables() self._conn.commit() finally: @@ -174,7 +170,7 @@ class SqliteBoardRecordStorage(BoardRecordStorageBase): board_name: str, ) -> BoardRecord: try: - board_id = str(uuid.uuid4()) + board_id = uuid_string() self._lock.acquire() self._cursor.execute( """--sql diff --git a/invokeai/app/services/config/base.py b/invokeai/app/services/config/base.py index 02c6f15140..f24879af05 100644 --- a/invokeai/app/services/config/base.py +++ b/invokeai/app/services/config/base.py @@ -16,7 +16,7 @@ import pydoc import sys from argparse import ArgumentParser from pathlib import Path -from typing import ClassVar, Dict, List, Literal, Union, get_args, get_origin, get_type_hints +from typing import ClassVar, Dict, List, Literal, Optional, Union, get_args, get_origin, get_type_hints from omegaconf import DictConfig, ListConfig, OmegaConf from pydantic import BaseSettings @@ -39,10 +39,10 @@ class InvokeAISettings(BaseSettings): read from an omegaconf .yaml file. """ - initconf: ClassVar[DictConfig] = None + initconf: ClassVar[Optional[DictConfig]] = None argparse_groups: ClassVar[Dict] = {} - def parse_args(self, argv: list = sys.argv[1:]): + def parse_args(self, argv: Optional[list] = sys.argv[1:]): parser = self.get_parser() opt, unknown_opts = parser.parse_known_args(argv) if len(unknown_opts) > 0: @@ -83,7 +83,8 @@ class InvokeAISettings(BaseSettings): else: settings_stanza = "Uncategorized" - env_prefix = cls.Config.env_prefix if hasattr(cls.Config, "env_prefix") else settings_stanza.upper() + env_prefix = getattr(cls.Config, "env_prefix", None) + env_prefix = env_prefix if env_prefix is not None else settings_stanza.upper() initconf = ( cls.initconf.get(settings_stanza) @@ -116,8 +117,8 @@ class InvokeAISettings(BaseSettings): field.default = current_default @classmethod - def cmd_name(self, command_field: str = "type") -> str: - hints = get_type_hints(self) + def cmd_name(cls, command_field: str = "type") -> str: + hints = get_type_hints(cls) if command_field in hints: return get_args(hints[command_field])[0] else: @@ -133,16 +134,12 @@ class InvokeAISettings(BaseSettings): return parser @classmethod - def add_subparser(cls, parser: argparse.ArgumentParser): - parser.add_parser(cls.cmd_name(), help=cls.__doc__) - - @classmethod - def _excluded(self) -> List[str]: + def _excluded(cls) -> List[str]: # internal fields that shouldn't be exposed as command line options return ["type", "initconf"] @classmethod - def _excluded_from_yaml(self) -> List[str]: + def _excluded_from_yaml(cls) -> List[str]: # combination of deprecated parameters and internal ones that shouldn't be exposed as invokeai.yaml options return [ "type", diff --git a/invokeai/app/services/config/invokeai_config.py b/invokeai/app/services/config/invokeai_config.py index 237aec5205..65bf9b9eba 100644 --- a/invokeai/app/services/config/invokeai_config.py +++ b/invokeai/app/services/config/invokeai_config.py @@ -194,8 +194,8 @@ class InvokeAIAppConfig(InvokeAISettings): setting environment variables INVOKEAI_. """ - singleton_config: ClassVar[InvokeAIAppConfig] = None - singleton_init: ClassVar[Dict] = None + singleton_config: ClassVar[Optional[InvokeAIAppConfig]] = None + singleton_init: ClassVar[Optional[Dict]] = None # fmt: off type: Literal["InvokeAI"] = "InvokeAI" @@ -234,6 +234,7 @@ class InvokeAIAppConfig(InvokeAISettings): # note - would be better to read the log_format values from logging.py, but this creates circular dependencies issues log_format : Literal['plain', 'color', 'syslog', 'legacy'] = Field(default="color", description='Log format. Use "plain" for text-only, "color" for colorized output, "legacy" for 2.3-style logging and "syslog" for syslog-style', category="Logging") log_level : Literal["debug", "info", "warning", "error", "critical"] = Field(default="info", description="Emit logging messages at this level or higher", category="Logging") + log_sql : bool = Field(default=False, description="Log SQL queries", category="Logging") dev_reload : bool = Field(default=False, description="Automatically reload when Python sources are changed.", category="Development") @@ -245,18 +246,23 @@ class InvokeAIAppConfig(InvokeAISettings): lazy_offload : bool = Field(default=True, description="Keep models in VRAM until their space is needed", category="Model Cache", ) # DEVICE - device : Literal[tuple(["auto", "cpu", "cuda", "cuda:1", "mps"])] = Field(default="auto", description="Generation device", category="Device", ) - precision: Literal[tuple(["auto", "float16", "float32", "autocast"])] = Field(default="auto", description="Floating point precision", category="Device", ) + device : Literal["auto", "cpu", "cuda", "cuda:1", "mps"] = Field(default="auto", description="Generation device", category="Device", ) + precision : Literal["auto", "float16", "float32", "autocast"] = Field(default="auto", description="Floating point precision", category="Device", ) # GENERATION sequential_guidance : bool = Field(default=False, description="Whether to calculate guidance in serial instead of in parallel, lowering memory requirements", category="Generation", ) - attention_type : Literal[tuple(["auto", "normal", "xformers", "sliced", "torch-sdp"])] = Field(default="auto", description="Attention type", category="Generation", ) - attention_slice_size: Literal[tuple(["auto", "balanced", "max", 1, 2, 3, 4, 5, 6, 7, 8])] = Field(default="auto", description='Slice size, valid when attention_type=="sliced"', category="Generation", ) + attention_type : Literal["auto", "normal", "xformers", "sliced", "torch-sdp"] = Field(default="auto", description="Attention type", category="Generation", ) + attention_slice_size: Literal["auto", "balanced", "max", 1, 2, 3, 4, 5, 6, 7, 8] = Field(default="auto", description='Slice size, valid when attention_type=="sliced"', category="Generation", ) + force_tiled_decode : bool = Field(default=False, description="Whether to enable tiled VAE decode (reduces memory consumption with some performance penalty)", category="Generation",) force_tiled_decode: bool = Field(default=False, description="Whether to enable tiled VAE decode (reduces memory consumption with some performance penalty)", category="Generation",) + # QUEUE + max_queue_size : int = Field(default=10000, gt=0, description="Maximum number of items in the session queue", category="Queue", ) + # NODES allow_nodes : Optional[List[str]] = Field(default=None, description="List of nodes to allow. Omit to allow all.", category="Nodes") deny_nodes : Optional[List[str]] = Field(default=None, description="List of nodes to deny. Omit to deny none.", category="Nodes") + node_cache_size : int = Field(default=512, description="How many cached nodes to keep in memory", category="Nodes", ) # DEPRECATED FIELDS - STILL HERE IN ORDER TO OBTAN VALUES FROM PRE-3.1 CONFIG FILES always_use_cpu : bool = Field(default=False, description="If true, use the CPU for rendering even if a GPU is available.", category='Memory/Performance') @@ -272,7 +278,7 @@ class InvokeAIAppConfig(InvokeAISettings): class Config: validate_assignment = True - def parse_args(self, argv: List[str] = None, conf: DictConfig = None, clobber=False): + def parse_args(self, argv: Optional[list[str]] = None, conf: Optional[DictConfig] = None, clobber=False): """ Update settings with contents of init file, environment, and command-line settings. @@ -283,12 +289,16 @@ class InvokeAIAppConfig(InvokeAISettings): # Set the runtime root directory. We parse command-line switches here # in order to pick up the --root_dir option. super().parse_args(argv) + loaded_conf = None if conf is None: try: - conf = OmegaConf.load(self.root_dir / INIT_FILE) + loaded_conf = OmegaConf.load(self.root_dir / INIT_FILE) except Exception: pass - InvokeAISettings.initconf = conf + if isinstance(loaded_conf, DictConfig): + InvokeAISettings.initconf = loaded_conf + else: + InvokeAISettings.initconf = conf # parse args again in order to pick up settings in configuration file super().parse_args(argv) @@ -376,13 +386,6 @@ class InvokeAIAppConfig(InvokeAISettings): """ return self._resolve(self.models_dir) - @property - 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: @@ -405,11 +408,11 @@ class InvokeAIAppConfig(InvokeAISettings): return True @property - def ram_cache_size(self) -> float: + def ram_cache_size(self) -> Union[Literal["auto"], float]: return self.max_cache_size or self.ram @property - def vram_cache_size(self) -> float: + def vram_cache_size(self) -> Union[Literal["auto"], float]: return self.max_vram_cache_size or self.vram @property diff --git a/invokeai/app/services/default_graphs.py b/invokeai/app/services/default_graphs.py index 2677060655..ad8d220599 100644 --- a/invokeai/app/services/default_graphs.py +++ b/invokeai/app/services/default_graphs.py @@ -10,57 +10,58 @@ default_text_to_image_graph_id = "539b2af5-2b4d-4d8c-8071-e54a3255fc74" def create_text_to_image() -> LibraryGraph: + graph = Graph( + nodes={ + "width": IntegerInvocation(id="width", value=512), + "height": IntegerInvocation(id="height", value=512), + "seed": IntegerInvocation(id="seed", value=-1), + "3": NoiseInvocation(id="3"), + "4": CompelInvocation(id="4"), + "5": CompelInvocation(id="5"), + "6": DenoiseLatentsInvocation(id="6"), + "7": LatentsToImageInvocation(id="7"), + "8": ImageNSFWBlurInvocation(id="8"), + }, + edges=[ + Edge( + source=EdgeConnection(node_id="width", field="value"), + destination=EdgeConnection(node_id="3", field="width"), + ), + Edge( + source=EdgeConnection(node_id="height", field="value"), + destination=EdgeConnection(node_id="3", field="height"), + ), + Edge( + source=EdgeConnection(node_id="seed", field="value"), + 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"), + ), + ], + ) return LibraryGraph( id=default_text_to_image_graph_id, name="t2i", description="Converts text to an image", - graph=Graph( - nodes={ - "width": IntegerInvocation(id="width", value=512), - "height": IntegerInvocation(id="height", value=512), - "seed": IntegerInvocation(id="seed", value=-1), - "3": NoiseInvocation(id="3"), - "4": CompelInvocation(id="4"), - "5": CompelInvocation(id="5"), - "6": DenoiseLatentsInvocation(id="6"), - "7": LatentsToImageInvocation(id="7"), - "8": ImageNSFWBlurInvocation(id="8"), - }, - edges=[ - Edge( - source=EdgeConnection(node_id="width", field="value"), - destination=EdgeConnection(node_id="3", field="width"), - ), - Edge( - source=EdgeConnection(node_id="height", field="value"), - destination=EdgeConnection(node_id="3", field="height"), - ), - Edge( - source=EdgeConnection(node_id="seed", field="value"), - 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"), - ), - ], - ), + graph=graph, exposed_inputs=[ ExposedNodeInput(node_path="4", field="prompt", alias="positive_prompt"), ExposedNodeInput(node_path="5", field="prompt", alias="negative_prompt"), diff --git a/invokeai/app/services/events.py b/invokeai/app/services/events.py index 2bfe9b7c3d..3b36ffb917 100644 --- a/invokeai/app/services/events.py +++ b/invokeai/app/services/events.py @@ -4,21 +4,23 @@ from typing import Any, Optional from invokeai.app.models.image import ProgressImage from invokeai.app.services.model_manager_service import BaseModelType, ModelInfo, ModelType, SubModelType +from invokeai.app.services.session_queue.session_queue_common import EnqueueBatchResult, SessionQueueItem from invokeai.app.util.misc import get_timestamp class EventServiceBase: - session_event: str = "session_event" + queue_event: str = "queue_event" """Basic event bus, to have an empty stand-in when not needed""" def dispatch(self, event_name: str, payload: Any) -> None: pass - def __emit_session_event(self, event_name: str, payload: dict) -> None: + def __emit_queue_event(self, event_name: str, payload: dict) -> None: + """Queue events are emitted to a room with queue_id as the room name""" payload["timestamp"] = get_timestamp() self.dispatch( - event_name=EventServiceBase.session_event, + event_name=EventServiceBase.queue_event, payload=dict(event=event_name, data=payload), ) @@ -26,6 +28,9 @@ class EventServiceBase: # This will make them easier to integrate until we find a schema generator. def emit_generator_progress( self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, graph_execution_state_id: str, node: dict, source_node_id: str, @@ -35,11 +40,14 @@ class EventServiceBase: total_steps: int, ) -> None: """Emitted when there is generation progress""" - self.__emit_session_event( + self.__emit_queue_event( event_name="generator_progress", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, - node=node, + node_id=node.get("id"), source_node_id=source_node_id, progress_image=progress_image.dict() if progress_image is not None else None, step=step, @@ -50,15 +58,21 @@ class EventServiceBase: def emit_invocation_complete( self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, graph_execution_state_id: str, result: dict, node: dict, source_node_id: str, ) -> None: """Emitted when an invocation has completed""" - self.__emit_session_event( + self.__emit_queue_event( event_name="invocation_complete", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, node=node, source_node_id=source_node_id, @@ -68,6 +82,9 @@ class EventServiceBase: def emit_invocation_error( self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, graph_execution_state_id: str, node: dict, source_node_id: str, @@ -75,9 +92,12 @@ class EventServiceBase: error: str, ) -> None: """Emitted when an invocation has completed""" - self.__emit_session_event( + self.__emit_queue_event( event_name="invocation_error", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, node=node, source_node_id=source_node_id, @@ -86,28 +106,47 @@ class EventServiceBase: ), ) - def emit_invocation_started(self, graph_execution_state_id: str, node: dict, source_node_id: str) -> None: + def emit_invocation_started( + self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, + graph_execution_state_id: str, + node: dict, + source_node_id: str, + ) -> None: """Emitted when an invocation has started""" - self.__emit_session_event( + self.__emit_queue_event( event_name="invocation_started", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, node=node, source_node_id=source_node_id, ), ) - def emit_graph_execution_complete(self, graph_execution_state_id: str) -> None: + def emit_graph_execution_complete( + self, queue_id: str, queue_item_id: int, queue_batch_id: str, graph_execution_state_id: str + ) -> None: """Emitted when a session has completed all invocations""" - self.__emit_session_event( + self.__emit_queue_event( event_name="graph_execution_state_complete", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, ), ) def emit_model_load_started( self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, graph_execution_state_id: str, model_name: str, base_model: BaseModelType, @@ -115,9 +154,12 @@ class EventServiceBase: submodel: SubModelType, ) -> None: """Emitted when a model is requested""" - self.__emit_session_event( + self.__emit_queue_event( event_name="model_load_started", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, model_name=model_name, base_model=base_model, @@ -128,6 +170,9 @@ class EventServiceBase: def emit_model_load_completed( self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, graph_execution_state_id: str, model_name: str, base_model: BaseModelType, @@ -136,9 +181,12 @@ class EventServiceBase: model_info: ModelInfo, ) -> None: """Emitted when a model is correctly loaded (returns model info)""" - self.__emit_session_event( + self.__emit_queue_event( event_name="model_load_completed", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, model_name=model_name, base_model=base_model, @@ -152,14 +200,20 @@ class EventServiceBase: def emit_session_retrieval_error( self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, graph_execution_state_id: str, error_type: str, error: str, ) -> None: """Emitted when session retrieval fails""" - self.__emit_session_event( + self.__emit_queue_event( event_name="session_retrieval_error", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, error_type=error_type, error=error, @@ -168,18 +222,78 @@ class EventServiceBase: def emit_invocation_retrieval_error( self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, graph_execution_state_id: str, node_id: str, error_type: str, error: str, ) -> None: """Emitted when invocation retrieval fails""" - self.__emit_session_event( + self.__emit_queue_event( event_name="invocation_retrieval_error", payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, graph_execution_state_id=graph_execution_state_id, node_id=node_id, error_type=error_type, error=error, ), ) + + def emit_session_canceled( + self, + queue_id: str, + queue_item_id: int, + queue_batch_id: str, + graph_execution_state_id: str, + ) -> None: + """Emitted when a session is canceled""" + self.__emit_queue_event( + event_name="session_canceled", + payload=dict( + queue_id=queue_id, + queue_item_id=queue_item_id, + queue_batch_id=queue_batch_id, + graph_execution_state_id=graph_execution_state_id, + ), + ) + + def emit_queue_item_status_changed(self, session_queue_item: SessionQueueItem) -> None: + """Emitted when a queue item's status changes""" + self.__emit_queue_event( + event_name="queue_item_status_changed", + payload=dict( + queue_id=session_queue_item.queue_id, + queue_item_id=session_queue_item.item_id, + status=session_queue_item.status, + batch_id=session_queue_item.batch_id, + session_id=session_queue_item.session_id, + error=session_queue_item.error, + created_at=str(session_queue_item.created_at) if session_queue_item.created_at else None, + updated_at=str(session_queue_item.updated_at) if session_queue_item.updated_at else None, + started_at=str(session_queue_item.started_at) if session_queue_item.started_at else None, + completed_at=str(session_queue_item.completed_at) if session_queue_item.completed_at else None, + ), + ) + + def emit_batch_enqueued(self, enqueue_result: EnqueueBatchResult) -> None: + """Emitted when a batch is enqueued""" + self.__emit_queue_event( + event_name="batch_enqueued", + payload=dict( + queue_id=enqueue_result.queue_id, + batch_id=enqueue_result.batch.batch_id, + enqueued=enqueue_result.enqueued, + ), + ) + + def emit_queue_cleared(self, queue_id: str) -> None: + """Emitted when the queue is cleared""" + self.__emit_queue_event( + event_name="queue_cleared", + payload=dict(queue_id=queue_id), + ) diff --git a/invokeai/app/services/graph.py b/invokeai/app/services/graph.py index 90f0ec51d1..2a5fc4c441 100644 --- a/invokeai/app/services/graph.py +++ b/invokeai/app/services/graph.py @@ -2,13 +2,14 @@ import copy import itertools -import uuid -from typing import Annotated, Any, Optional, Union, get_args, get_origin, get_type_hints +from typing import Annotated, Any, Optional, Union, cast, get_args, get_origin, get_type_hints import networkx as nx from pydantic import BaseModel, root_validator, validator from pydantic.fields import Field +from invokeai.app.util.misc import uuid_string + # Importing * is bad karma but needed here for node detection from ..invocations import * # noqa: F401 F403 from ..invocations.baseinvocation import ( @@ -137,19 +138,31 @@ def are_connections_compatible( return are_connection_types_compatible(from_node_field, to_node_field) -class NodeAlreadyInGraphError(Exception): +class NodeAlreadyInGraphError(ValueError): pass -class InvalidEdgeError(Exception): +class InvalidEdgeError(ValueError): pass -class NodeNotFoundError(Exception): +class NodeNotFoundError(ValueError): pass -class NodeAlreadyExecutedError(Exception): +class NodeAlreadyExecutedError(ValueError): + pass + + +class DuplicateNodeIdError(ValueError): + pass + + +class NodeFieldNotFoundError(ValueError): + pass + + +class NodeIdMismatchError(ValueError): pass @@ -227,7 +240,7 @@ InvocationOutputsUnion = Union[BaseInvocationOutput.get_all_subclasses_tuple()] class Graph(BaseModel): - id: str = Field(description="The id of this graph", default_factory=lambda: uuid.uuid4().__str__()) + id: str = Field(description="The id of this graph", default_factory=uuid_string) # TODO: use a list (and never use dict in a BaseModel) because pydantic/fastapi hates me nodes: dict[str, Annotated[InvocationsUnion, Field(discriminator="type")]] = Field( description="The nodes in this graph", default_factory=dict @@ -237,6 +250,59 @@ class Graph(BaseModel): default_factory=list, ) + @root_validator + def validate_nodes_and_edges(cls, values): + """Validates that all edges match nodes in the graph""" + nodes = cast(Optional[dict[str, BaseInvocation]], values.get("nodes")) + edges = cast(Optional[list[Edge]], values.get("edges")) + + if nodes is not None: + # Validate that all node ids are unique + node_ids = [n.id for n in nodes.values()] + duplicate_node_ids = set([node_id for node_id in node_ids if node_ids.count(node_id) >= 2]) + if duplicate_node_ids: + raise DuplicateNodeIdError(f"Node ids must be unique, found duplicates {duplicate_node_ids}") + + # Validate that all node ids match the keys in the nodes dict + for k, v in nodes.items(): + if k != v.id: + raise NodeIdMismatchError(f"Node ids must match, got {k} and {v.id}") + + if edges is not None and nodes is not None: + # Validate that all edges match nodes in the graph + node_ids = set([e.source.node_id for e in edges] + [e.destination.node_id for e in edges]) + missing_node_ids = [node_id for node_id in node_ids if node_id not in nodes] + if missing_node_ids: + raise NodeNotFoundError( + f"All edges must reference nodes in the graph, missing nodes: {missing_node_ids}" + ) + + # Validate that all edge fields match node fields in the graph + for edge in edges: + source_node = nodes.get(edge.source.node_id, None) + if source_node is None: + raise NodeFieldNotFoundError(f"Edge source node {edge.source.node_id} does not exist in the graph") + + destination_node = nodes.get(edge.destination.node_id, None) + if destination_node is None: + raise NodeFieldNotFoundError( + f"Edge destination node {edge.destination.node_id} does not exist in the graph" + ) + + # output fields are not on the node object directly, they are on the output type + if edge.source.field not in source_node.get_output_type().__fields__: + raise NodeFieldNotFoundError( + f"Edge source field {edge.source.field} does not exist in node {edge.source.node_id}" + ) + + # input fields are on the node + if edge.destination.field not in destination_node.__fields__: + raise NodeFieldNotFoundError( + f"Edge destination field {edge.destination.field} does not exist in node {edge.destination.node_id}" + ) + + return values + def add_node(self, node: BaseInvocation) -> None: """Adds a node to a graph @@ -697,8 +763,7 @@ class Graph(BaseModel): class GraphExecutionState(BaseModel): """Tracks the state of a graph execution""" - id: str = Field(description="The id of the execution state", default_factory=lambda: uuid.uuid4().__str__()) - + id: str = Field(description="The id of the execution state", default_factory=uuid_string) # TODO: Store a reference to the graph instead of the actual graph? graph: Graph = Field(description="The graph being executed") @@ -847,7 +912,7 @@ class GraphExecutionState(BaseModel): new_node = copy.deepcopy(node) # Create the node id (use a random uuid) - new_node.id = str(uuid.uuid4()) + new_node.id = uuid_string() # Set the iteration index for iteration invocations if isinstance(new_node, IterateInvocation): @@ -1082,7 +1147,7 @@ class ExposedNodeOutput(BaseModel): class LibraryGraph(BaseModel): - id: str = Field(description="The unique identifier for this library graph", default_factory=uuid.uuid4) + id: str = Field(description="The unique identifier for this library graph", default_factory=uuid_string) graph: Graph = Field(description="The graph") name: str = Field(description="The name of the graph") description: str = Field(description="The description of the graph") diff --git a/invokeai/app/services/image_record_storage.py b/invokeai/app/services/image_record_storage.py index b9982fcfdc..f743fd1fe2 100644 --- a/invokeai/app/services/image_record_storage.py +++ b/invokeai/app/services/image_record_storage.py @@ -148,24 +148,20 @@ class ImageRecordStorageBase(ABC): class SqliteImageRecordStorage(ImageRecordStorageBase): - _filename: str _conn: sqlite3.Connection _cursor: sqlite3.Cursor _lock: threading.Lock - def __init__(self, filename: str) -> None: + def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None: super().__init__() - self._filename = filename - self._conn = sqlite3.connect(filename, check_same_thread=False) + self._conn = conn # Enable row factory to get rows as dictionaries (must be done before making the cursor!) self._conn.row_factory = sqlite3.Row self._cursor = self._conn.cursor() - self._lock = threading.Lock() + self._lock = lock try: self._lock.acquire() - # Enable foreign keys - self._conn.execute("PRAGMA foreign_keys = ON;") self._create_tables() self._conn.commit() finally: diff --git a/invokeai/app/services/images.py b/invokeai/app/services/images.py index 2b0a3d62a5..08d5093a70 100644 --- a/invokeai/app/services/images.py +++ b/invokeai/app/services/images.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod from logging import Logger -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Callable, Optional from PIL.Image import Image as PILImageType @@ -38,6 +38,29 @@ if TYPE_CHECKING: class ImageServiceABC(ABC): """High-level service for image management.""" + _on_changed_callbacks: list[Callable[[ImageDTO], None]] + _on_deleted_callbacks: list[Callable[[str], None]] + + def __init__(self) -> None: + self._on_changed_callbacks = list() + self._on_deleted_callbacks = list() + + def on_changed(self, on_changed: Callable[[ImageDTO], None]) -> None: + """Register a callback for when an image is changed""" + self._on_changed_callbacks.append(on_changed) + + def on_deleted(self, on_deleted: Callable[[str], None]) -> None: + """Register a callback for when an image is deleted""" + self._on_deleted_callbacks.append(on_deleted) + + def _on_changed(self, item: ImageDTO) -> None: + for callback in self._on_changed_callbacks: + callback(item) + + def _on_deleted(self, item_id: str) -> None: + for callback in self._on_deleted_callbacks: + callback(item_id) + @abstractmethod def create( self, @@ -161,6 +184,7 @@ class ImageService(ImageServiceABC): _services: ImageServiceDependencies def __init__(self, services: ImageServiceDependencies): + super().__init__() self._services = services def create( @@ -217,6 +241,7 @@ class ImageService(ImageServiceABC): self._services.image_files.save(image_name=image_name, image=image, metadata=metadata, workflow=workflow) image_dto = self.get_dto(image_name) + self._on_changed(image_dto) return image_dto except ImageRecordSaveException: self._services.logger.error("Failed to save image record") @@ -235,7 +260,9 @@ class ImageService(ImageServiceABC): ) -> ImageDTO: try: self._services.image_records.update(image_name, changes) - return self.get_dto(image_name) + image_dto = self.get_dto(image_name) + self._on_changed(image_dto) + return image_dto except ImageRecordSaveException: self._services.logger.error("Failed to update image record") raise @@ -374,6 +401,7 @@ class ImageService(ImageServiceABC): try: self._services.image_files.delete(image_name) self._services.image_records.delete(image_name) + self._on_deleted(image_name) except ImageRecordDeleteException: self._services.logger.error("Failed to delete image record") raise @@ -390,6 +418,8 @@ class ImageService(ImageServiceABC): for image_name in image_names: self._services.image_files.delete(image_name) self._services.image_records.delete_many(image_names) + for image_name in image_names: + self._on_deleted(image_name) except ImageRecordDeleteException: self._services.logger.error("Failed to delete image records") raise @@ -406,6 +436,7 @@ class ImageService(ImageServiceABC): count = len(image_names) for image_name in image_names: self._services.image_files.delete(image_name) + self._on_deleted(image_name) return count except ImageRecordDeleteException: self._services.logger.error("Failed to delete image records") diff --git a/invokeai/app/services/invocation_cache/__init__.py b/invokeai/app/services/invocation_cache/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/invokeai/app/services/invocation_cache/invocation_cache_base.py b/invokeai/app/services/invocation_cache/invocation_cache_base.py new file mode 100644 index 0000000000..c35a31f851 --- /dev/null +++ b/invokeai/app/services/invocation_cache/invocation_cache_base.py @@ -0,0 +1,46 @@ +from abc import ABC, abstractmethod +from typing import Optional, Union + +from invokeai.app.invocations.baseinvocation import BaseInvocation, BaseInvocationOutput + + +class InvocationCacheBase(ABC): + """ + Base class for invocation caches. + When an invocation is executed, it is hashed and its output stored in the cache. + When new invocations are executed, if they are flagged with `use_cache`, they + will attempt to pull their value from the cache before executing. + + Implementations should register for the `on_deleted` event of the `images` and `latents` + services, and delete any cached outputs that reference the deleted image or latent. + + See the memory implementation for an example. + + Implementations should respect the `node_cache_size` configuration value, and skip all + cache logic if the value is set to 0. + """ + + @abstractmethod + def get(self, key: Union[int, str]) -> Optional[BaseInvocationOutput]: + """Retrieves an invocation output from the cache""" + pass + + @abstractmethod + def save(self, key: Union[int, str], invocation_output: BaseInvocationOutput) -> None: + """Stores an invocation output in the cache""" + pass + + @abstractmethod + def delete(self, key: Union[int, str]) -> None: + """Deleteds an invocation output from the cache""" + pass + + @abstractmethod + def clear(self) -> None: + """Clears the cache""" + pass + + @abstractmethod + def create_key(self, invocation: BaseInvocation) -> int: + """Gets the key for the invocation's cache item""" + pass diff --git a/invokeai/app/services/invocation_cache/invocation_cache_memory.py b/invokeai/app/services/invocation_cache/invocation_cache_memory.py new file mode 100644 index 0000000000..4c0eb2106f --- /dev/null +++ b/invokeai/app/services/invocation_cache/invocation_cache_memory.py @@ -0,0 +1,81 @@ +from queue import Queue +from typing import Optional, Union + +from invokeai.app.invocations.baseinvocation import BaseInvocation, BaseInvocationOutput +from invokeai.app.services.invocation_cache.invocation_cache_base import InvocationCacheBase +from invokeai.app.services.invoker import Invoker + + +class MemoryInvocationCache(InvocationCacheBase): + __cache: dict[Union[int, str], tuple[BaseInvocationOutput, str]] + __max_cache_size: int + __cache_ids: Queue + __invoker: Invoker + + def __init__(self, max_cache_size: int = 0) -> None: + self.__cache = dict() + self.__max_cache_size = max_cache_size + self.__cache_ids = Queue() + + def start(self, invoker: Invoker) -> None: + self.__invoker = invoker + if self.__max_cache_size == 0: + return + self.__invoker.services.images.on_deleted(self._delete_by_match) + self.__invoker.services.latents.on_deleted(self._delete_by_match) + + def get(self, key: Union[int, str]) -> Optional[BaseInvocationOutput]: + if self.__max_cache_size == 0: + return + + item = self.__cache.get(key, None) + if item is not None: + return item[0] + + def save(self, key: Union[int, str], invocation_output: BaseInvocationOutput) -> None: + if self.__max_cache_size == 0: + return + + if key not in self.__cache: + self.__cache[key] = (invocation_output, invocation_output.json()) + self.__cache_ids.put(key) + if self.__cache_ids.qsize() > self.__max_cache_size: + try: + self.__cache.pop(self.__cache_ids.get()) + except KeyError: + # this means the cache_ids are somehow out of sync w/ the cache + pass + + def delete(self, key: Union[int, str]) -> None: + if self.__max_cache_size == 0: + return + + if key in self.__cache: + del self.__cache[key] + + def clear(self, *args, **kwargs) -> None: + if self.__max_cache_size == 0: + return + + self.__cache.clear() + self.__cache_ids = Queue() + + def create_key(self, invocation: BaseInvocation) -> int: + return hash(invocation.json(exclude={"id"})) + + def _delete_by_match(self, to_match: str) -> None: + if self.__max_cache_size == 0: + return + + keys_to_delete = set() + for key, value_tuple in self.__cache.items(): + if to_match in value_tuple[1]: + keys_to_delete.add(key) + + if not keys_to_delete: + return + + for key in keys_to_delete: + self.delete(key) + + self.__invoker.services.logger.debug(f"Deleted {len(keys_to_delete)} cached invocation outputs for {to_match}") diff --git a/invokeai/app/services/invocation_queue.py b/invokeai/app/services/invocation_queue.py index 2fe5f60826..378a9d12cf 100644 --- a/invokeai/app/services/invocation_queue.py +++ b/invokeai/app/services/invocation_queue.py @@ -11,6 +11,13 @@ from pydantic import BaseModel, Field 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") + session_queue_id: str = Field(description="The ID of the session queue from which this invocation queue item came") + session_queue_item_id: int = Field( + description="The ID of session queue item from which this invocation queue item came" + ) + session_queue_batch_id: str = Field( + description="The ID of the session batch from which this invocation queue item came" + ) invoke_all: bool = Field(default=False) timestamp: float = Field(default_factory=time.time) diff --git a/invokeai/app/services/invocation_services.py b/invokeai/app/services/invocation_services.py index a4ec3573f5..e496ff80f2 100644 --- a/invokeai/app/services/invocation_services.py +++ b/invokeai/app/services/invocation_services.py @@ -12,12 +12,15 @@ if TYPE_CHECKING: from invokeai.app.services.events import EventServiceBase from invokeai.app.services.graph import GraphExecutionState, LibraryGraph from invokeai.app.services.images import ImageServiceABC + from invokeai.app.services.invocation_cache.invocation_cache_base import InvocationCacheBase from invokeai.app.services.invocation_queue import InvocationQueueABC from invokeai.app.services.invocation_stats import InvocationStatsServiceBase from invokeai.app.services.invoker import InvocationProcessorABC from invokeai.app.services.item_storage import ItemStorageABC from invokeai.app.services.latent_storage import LatentsStorageBase from invokeai.app.services.model_manager_service import ModelManagerServiceBase + from invokeai.app.services.session_processor.session_processor_base import SessionProcessorBase + from invokeai.app.services.session_queue.session_queue_base import SessionQueueBase class InvocationServices: @@ -28,8 +31,8 @@ class InvocationServices: boards: "BoardServiceABC" configuration: "InvokeAIAppConfig" events: "EventServiceBase" - graph_execution_manager: "ItemStorageABC"["GraphExecutionState"] - graph_library: "ItemStorageABC"["LibraryGraph"] + graph_execution_manager: "ItemStorageABC[GraphExecutionState]" + graph_library: "ItemStorageABC[LibraryGraph]" images: "ImageServiceABC" latents: "LatentsStorageBase" logger: "Logger" @@ -37,6 +40,9 @@ class InvocationServices: processor: "InvocationProcessorABC" performance_statistics: "InvocationStatsServiceBase" queue: "InvocationQueueABC" + session_queue: "SessionQueueBase" + session_processor: "SessionProcessorBase" + invocation_cache: "InvocationCacheBase" def __init__( self, @@ -44,8 +50,8 @@ class InvocationServices: boards: "BoardServiceABC", configuration: "InvokeAIAppConfig", events: "EventServiceBase", - graph_execution_manager: "ItemStorageABC"["GraphExecutionState"], - graph_library: "ItemStorageABC"["LibraryGraph"], + graph_execution_manager: "ItemStorageABC[GraphExecutionState]", + graph_library: "ItemStorageABC[LibraryGraph]", images: "ImageServiceABC", latents: "LatentsStorageBase", logger: "Logger", @@ -53,10 +59,12 @@ class InvocationServices: processor: "InvocationProcessorABC", performance_statistics: "InvocationStatsServiceBase", queue: "InvocationQueueABC", + session_queue: "SessionQueueBase", + session_processor: "SessionProcessorBase", + invocation_cache: "InvocationCacheBase", ): self.board_images = board_images self.boards = boards - self.boards = boards self.configuration = configuration self.events = events self.graph_execution_manager = graph_execution_manager @@ -68,3 +76,6 @@ class InvocationServices: self.processor = processor self.performance_statistics = performance_statistics self.queue = queue + self.session_queue = session_queue + self.session_processor = session_processor + self.invocation_cache = invocation_cache diff --git a/invokeai/app/services/invoker.py b/invokeai/app/services/invoker.py index 1a7b0de27e..0c98fc285c 100644 --- a/invokeai/app/services/invoker.py +++ b/invokeai/app/services/invoker.py @@ -17,7 +17,14 @@ class Invoker: self.services = services self._start() - def invoke(self, graph_execution_state: GraphExecutionState, invoke_all: bool = False) -> Optional[str]: + def invoke( + self, + session_queue_id: str, + session_queue_item_id: int, + session_queue_batch_id: str, + 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.""" @@ -32,7 +39,9 @@ class Invoker: # Queue the invocation self.services.queue.put( InvocationQueueItem( - # session_id = session.id, + session_queue_id=session_queue_id, + session_queue_item_id=session_queue_item_id, + session_queue_batch_id=session_queue_batch_id, graph_execution_state_id=graph_execution_state.id, invocation_id=invocation.id, invoke_all=invoke_all, diff --git a/invokeai/app/services/latent_storage.py b/invokeai/app/services/latent_storage.py index f0b1dc9fe7..8605ef5abd 100644 --- a/invokeai/app/services/latent_storage.py +++ b/invokeai/app/services/latent_storage.py @@ -3,7 +3,7 @@ from abc import ABC, abstractmethod from pathlib import Path from queue import Queue -from typing import Dict, Optional, Union +from typing import Callable, Dict, Optional, Union import torch @@ -11,6 +11,13 @@ import torch class LatentsStorageBase(ABC): """Responsible for storing and retrieving latents.""" + _on_changed_callbacks: list[Callable[[torch.Tensor], None]] + _on_deleted_callbacks: list[Callable[[str], None]] + + def __init__(self) -> None: + self._on_changed_callbacks = list() + self._on_deleted_callbacks = list() + @abstractmethod def get(self, name: str) -> torch.Tensor: pass @@ -23,6 +30,22 @@ class LatentsStorageBase(ABC): def delete(self, name: str) -> None: pass + def on_changed(self, on_changed: Callable[[torch.Tensor], None]) -> None: + """Register a callback for when an item is changed""" + self._on_changed_callbacks.append(on_changed) + + def on_deleted(self, on_deleted: Callable[[str], None]) -> None: + """Register a callback for when an item is deleted""" + self._on_deleted_callbacks.append(on_deleted) + + def _on_changed(self, item: torch.Tensor) -> None: + for callback in self._on_changed_callbacks: + callback(item) + + def _on_deleted(self, item_id: str) -> None: + for callback in self._on_deleted_callbacks: + callback(item_id) + class ForwardCacheLatentsStorage(LatentsStorageBase): """Caches the latest N latents in memory, writing-thorugh to and reading from underlying storage""" @@ -33,6 +56,7 @@ class ForwardCacheLatentsStorage(LatentsStorageBase): __underlying_storage: LatentsStorageBase def __init__(self, underlying_storage: LatentsStorageBase, max_cache_size: int = 20): + super().__init__() self.__underlying_storage = underlying_storage self.__cache = dict() self.__cache_ids = Queue() @@ -50,11 +74,13 @@ class ForwardCacheLatentsStorage(LatentsStorageBase): def save(self, name: str, data: torch.Tensor) -> None: self.__underlying_storage.save(name, data) self.__set_cache(name, data) + self._on_changed(data) def delete(self, name: str) -> None: self.__underlying_storage.delete(name) if name in self.__cache: del self.__cache[name] + self._on_deleted(name) def __get_cache(self, name: str) -> Optional[torch.Tensor]: return None if name not in self.__cache else self.__cache[name] diff --git a/invokeai/app/services/model_manager_service.py b/invokeai/app/services/model_manager_service.py index a7745a9253..143fa8f357 100644 --- a/invokeai/app/services/model_manager_service.py +++ b/invokeai/app/services/model_manager_service.py @@ -525,7 +525,7 @@ class ModelManagerService(ModelManagerServiceBase): def _emit_load_event( self, - context, + context: InvocationContext, model_name: str, base_model: BaseModelType, model_type: ModelType, @@ -537,6 +537,9 @@ class ModelManagerService(ModelManagerServiceBase): if model_info: context.services.events.emit_model_load_completed( + queue_id=context.queue_id, + queue_item_id=context.queue_item_id, + queue_batch_id=context.queue_batch_id, graph_execution_state_id=context.graph_execution_state_id, model_name=model_name, base_model=base_model, @@ -546,6 +549,9 @@ class ModelManagerService(ModelManagerServiceBase): ) else: context.services.events.emit_model_load_started( + queue_id=context.queue_id, + queue_item_id=context.queue_item_id, + queue_batch_id=context.queue_batch_id, graph_execution_state_id=context.graph_execution_state_id, model_name=model_name, base_model=base_model, diff --git a/invokeai/app/services/processor.py b/invokeai/app/services/processor.py index 37da17d318..b4c894c52d 100644 --- a/invokeai/app/services/processor.py +++ b/invokeai/app/services/processor.py @@ -1,6 +1,7 @@ import time import traceback from threading import BoundedSemaphore, Event, Thread +from typing import Optional import invokeai.backend.util.logging as logger @@ -37,10 +38,11 @@ class DefaultInvocationProcessor(InvocationProcessorABC): try: self.__threadLimit.acquire() statistics: InvocationStatsServiceBase = self.__invoker.services.performance_statistics + queue_item: Optional[InvocationQueueItem] = None while not stop_event.is_set(): try: - queue_item: InvocationQueueItem = self.__invoker.services.queue.get() + queue_item = self.__invoker.services.queue.get() except Exception as e: self.__invoker.services.logger.error("Exception while getting from queue:\n%s" % e) @@ -48,7 +50,6 @@ class DefaultInvocationProcessor(InvocationProcessorABC): # do not hammer the queue time.sleep(0.5) continue - try: graph_execution_state = self.__invoker.services.graph_execution_manager.get( queue_item.graph_execution_state_id @@ -56,6 +57,9 @@ class DefaultInvocationProcessor(InvocationProcessorABC): except Exception as e: self.__invoker.services.logger.error("Exception while retrieving session:\n%s" % e) self.__invoker.services.events.emit_session_retrieval_error( + queue_batch_id=queue_item.session_queue_batch_id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, graph_execution_state_id=queue_item.graph_execution_state_id, error_type=e.__class__.__name__, error=traceback.format_exc(), @@ -67,6 +71,9 @@ class DefaultInvocationProcessor(InvocationProcessorABC): except Exception as e: self.__invoker.services.logger.error("Exception while retrieving invocation:\n%s" % e) self.__invoker.services.events.emit_invocation_retrieval_error( + queue_batch_id=queue_item.session_queue_batch_id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, graph_execution_state_id=queue_item.graph_execution_state_id, node_id=queue_item.invocation_id, error_type=e.__class__.__name__, @@ -79,6 +86,9 @@ class DefaultInvocationProcessor(InvocationProcessorABC): # Send starting event self.__invoker.services.events.emit_invocation_started( + queue_batch_id=queue_item.session_queue_batch_id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, graph_execution_state_id=graph_execution_state.id, node=invocation.dict(), source_node_id=source_node_id, @@ -89,13 +99,17 @@ class DefaultInvocationProcessor(InvocationProcessorABC): graph_id = graph_execution_state.id model_manager = self.__invoker.services.model_manager with statistics.collect_stats(invocation, graph_id, model_manager): - # use the internal invoke_internal(), which wraps the node's invoke() method in - # this accomodates nodes which require a value, but get it only from a - # connection + # use the internal invoke_internal(), which wraps the node's invoke() method, + # which handles a few things: + # - nodes that require a value, but get it only from a connection + # - referencing the invocation cache instead of executing the node outputs = invocation.invoke_internal( InvocationContext( services=self.__invoker.services, graph_execution_state_id=graph_execution_state.id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, + queue_batch_id=queue_item.session_queue_batch_id, ) ) @@ -111,6 +125,9 @@ class DefaultInvocationProcessor(InvocationProcessorABC): # Send complete event self.__invoker.services.events.emit_invocation_complete( + queue_batch_id=queue_item.session_queue_batch_id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, graph_execution_state_id=graph_execution_state.id, node=invocation.dict(), source_node_id=source_node_id, @@ -138,6 +155,9 @@ class DefaultInvocationProcessor(InvocationProcessorABC): self.__invoker.services.logger.error("Error while invoking:\n%s" % e) # Send error event self.__invoker.services.events.emit_invocation_error( + queue_batch_id=queue_item.session_queue_batch_id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, graph_execution_state_id=graph_execution_state.id, node=invocation.dict(), source_node_id=source_node_id, @@ -155,10 +175,19 @@ class DefaultInvocationProcessor(InvocationProcessorABC): is_complete = graph_execution_state.is_complete() if queue_item.invoke_all and not is_complete: try: - self.__invoker.invoke(graph_execution_state, invoke_all=True) + self.__invoker.invoke( + session_queue_batch_id=queue_item.session_queue_batch_id, + session_queue_item_id=queue_item.session_queue_item_id, + session_queue_id=queue_item.session_queue_id, + graph_execution_state=graph_execution_state, + invoke_all=True, + ) except Exception as e: self.__invoker.services.logger.error("Error while invoking:\n%s" % e) self.__invoker.services.events.emit_invocation_error( + queue_batch_id=queue_item.session_queue_batch_id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, graph_execution_state_id=graph_execution_state.id, node=invocation.dict(), source_node_id=source_node_id, @@ -166,7 +195,12 @@ class DefaultInvocationProcessor(InvocationProcessorABC): 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( + queue_batch_id=queue_item.session_queue_batch_id, + queue_item_id=queue_item.session_queue_item_id, + queue_id=queue_item.session_queue_id, + graph_execution_state_id=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/resource_name.py b/invokeai/app/services/resource_name.py index c89c06edc3..a17b1a084e 100644 --- a/invokeai/app/services/resource_name.py +++ b/invokeai/app/services/resource_name.py @@ -1,7 +1,8 @@ -import uuid from abc import ABC, abstractmethod from enum import Enum, EnumMeta +from invokeai.app.util.misc import uuid_string + class ResourceType(str, Enum, metaclass=EnumMeta): """Enum for resource types.""" @@ -25,6 +26,6 @@ class SimpleNameService(NameServiceBase): # TODO: Add customizable naming schemes def create_image_name(self) -> str: - uuid_str = str(uuid.uuid4()) + uuid_str = uuid_string() filename = f"{uuid_str}.png" return filename diff --git a/invokeai/app/services/session_processor/__init__.py b/invokeai/app/services/session_processor/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/invokeai/app/services/session_processor/session_processor_base.py b/invokeai/app/services/session_processor/session_processor_base.py new file mode 100644 index 0000000000..485ef2f8c3 --- /dev/null +++ b/invokeai/app/services/session_processor/session_processor_base.py @@ -0,0 +1,28 @@ +from abc import ABC, abstractmethod + +from invokeai.app.services.session_processor.session_processor_common import SessionProcessorStatus + + +class SessionProcessorBase(ABC): + """ + Base class for session processor. + + The session processor is responsible for executing sessions. It runs a simple polling loop, + checking the session queue for new sessions to execute. It must coordinate with the + invocation queue to ensure only one session is executing at a time. + """ + + @abstractmethod + def resume(self) -> SessionProcessorStatus: + """Starts or resumes the session processor""" + pass + + @abstractmethod + def pause(self) -> SessionProcessorStatus: + """Pauses the session processor""" + pass + + @abstractmethod + def get_status(self) -> SessionProcessorStatus: + """Gets the status of the session processor""" + pass diff --git a/invokeai/app/services/session_processor/session_processor_common.py b/invokeai/app/services/session_processor/session_processor_common.py new file mode 100644 index 0000000000..00195a773f --- /dev/null +++ b/invokeai/app/services/session_processor/session_processor_common.py @@ -0,0 +1,6 @@ +from pydantic import BaseModel, Field + + +class SessionProcessorStatus(BaseModel): + is_started: bool = Field(description="Whether the session processor is started") + is_processing: bool = Field(description="Whether a session is being processed") diff --git a/invokeai/app/services/session_processor/session_processor_default.py b/invokeai/app/services/session_processor/session_processor_default.py new file mode 100644 index 0000000000..b682c7e56c --- /dev/null +++ b/invokeai/app/services/session_processor/session_processor_default.py @@ -0,0 +1,124 @@ +from threading import BoundedSemaphore +from threading import Event as ThreadEvent +from threading import Thread +from typing import Optional + +from fastapi_events.handlers.local import local_handler +from fastapi_events.typing import Event as FastAPIEvent + +from invokeai.app.services.events import EventServiceBase +from invokeai.app.services.session_queue.session_queue_common import SessionQueueItem + +from ..invoker import Invoker +from .session_processor_base import SessionProcessorBase +from .session_processor_common import SessionProcessorStatus + +POLLING_INTERVAL = 1 +THREAD_LIMIT = 1 + + +class DefaultSessionProcessor(SessionProcessorBase): + def start(self, invoker: Invoker) -> None: + self.__invoker: Invoker = invoker + self.__queue_item: Optional[SessionQueueItem] = None + + self.__resume_event = ThreadEvent() + self.__stop_event = ThreadEvent() + self.__poll_now_event = ThreadEvent() + + local_handler.register(event_name=EventServiceBase.queue_event, _func=self._on_queue_event) + + self.__threadLimit = BoundedSemaphore(THREAD_LIMIT) + self.__thread = Thread( + name="session_processor", + target=self.__process, + kwargs=dict( + stop_event=self.__stop_event, poll_now_event=self.__poll_now_event, resume_event=self.__resume_event + ), + ) + self.__thread.start() + + def stop(self, *args, **kwargs) -> None: + self.__stop_event.set() + + def _poll_now(self) -> None: + self.__poll_now_event.set() + + async def _on_queue_event(self, event: FastAPIEvent) -> None: + event_name = event[1]["event"] + + match event_name: + case "graph_execution_state_complete" | "invocation_error" | "session_retrieval_error" | "invocation_retrieval_error": + self.__queue_item = None + self._poll_now() + case "session_canceled" if self.__queue_item is not None and self.__queue_item.session_id == event[1][ + "data" + ]["graph_execution_state_id"]: + self.__queue_item = None + self._poll_now() + case "batch_enqueued": + self._poll_now() + case "queue_cleared": + self.__queue_item = None + self._poll_now() + + def resume(self) -> SessionProcessorStatus: + if not self.__resume_event.is_set(): + self.__resume_event.set() + return self.get_status() + + def pause(self) -> SessionProcessorStatus: + if self.__resume_event.is_set(): + self.__resume_event.clear() + return self.get_status() + + def get_status(self) -> SessionProcessorStatus: + return SessionProcessorStatus( + is_started=self.__resume_event.is_set(), + is_processing=self.__queue_item is not None, + ) + + def __process( + self, + stop_event: ThreadEvent, + poll_now_event: ThreadEvent, + resume_event: ThreadEvent, + ): + try: + stop_event.clear() + resume_event.set() + self.__threadLimit.acquire() + queue_item: Optional[SessionQueueItem] = None + self.__invoker.services.logger + while not stop_event.is_set(): + poll_now_event.clear() + + # do not dequeue if there is already a session running + if self.__queue_item is None and resume_event.is_set(): + queue_item = self.__invoker.services.session_queue.dequeue() + + if queue_item is not None: + self.__invoker.services.logger.debug(f"Executing queue item {queue_item.item_id}") + self.__queue_item = queue_item + self.__invoker.services.graph_execution_manager.set(queue_item.session) + self.__invoker.invoke( + session_queue_batch_id=queue_item.batch_id, + session_queue_id=queue_item.queue_id, + session_queue_item_id=queue_item.item_id, + graph_execution_state=queue_item.session, + invoke_all=True, + ) + queue_item = None + + if queue_item is None: + self.__invoker.services.logger.debug("Waiting for next polling interval or event") + poll_now_event.wait(POLLING_INTERVAL) + continue + except Exception as e: + self.__invoker.services.logger.error(f"Error in session processor: {e}") + pass + finally: + stop_event.clear() + poll_now_event.clear() + self.__queue_item = None + self.__threadLimit.release() diff --git a/invokeai/app/services/session_queue/__init__.py b/invokeai/app/services/session_queue/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/invokeai/app/services/session_queue/session_queue_base.py b/invokeai/app/services/session_queue/session_queue_base.py new file mode 100644 index 0000000000..0961759baa --- /dev/null +++ b/invokeai/app/services/session_queue/session_queue_base.py @@ -0,0 +1,112 @@ +from abc import ABC, abstractmethod +from typing import Optional + +from invokeai.app.services.graph import Graph +from invokeai.app.services.session_queue.session_queue_common import ( + QUEUE_ITEM_STATUS, + Batch, + BatchStatus, + CancelByBatchIDsResult, + CancelByQueueIDResult, + ClearResult, + EnqueueBatchResult, + EnqueueGraphResult, + IsEmptyResult, + IsFullResult, + PruneResult, + SessionQueueItem, + SessionQueueItemDTO, + SessionQueueStatus, +) +from invokeai.app.services.shared.models import CursorPaginatedResults + + +class SessionQueueBase(ABC): + """Base class for session queue""" + + @abstractmethod + def dequeue(self) -> Optional[SessionQueueItem]: + """Dequeues the next session queue item.""" + pass + + @abstractmethod + def enqueue_graph(self, queue_id: str, graph: Graph, prepend: bool) -> EnqueueGraphResult: + """Enqueues a single graph for execution.""" + pass + + @abstractmethod + def enqueue_batch(self, queue_id: str, batch: Batch, prepend: bool) -> EnqueueBatchResult: + """Enqueues all permutations of a batch for execution.""" + pass + + @abstractmethod + def get_current(self, queue_id: str) -> Optional[SessionQueueItem]: + """Gets the currently-executing session queue item""" + pass + + @abstractmethod + def get_next(self, queue_id: str) -> Optional[SessionQueueItem]: + """Gets the next session queue item (does not dequeue it)""" + pass + + @abstractmethod + def clear(self, queue_id: str) -> ClearResult: + """Deletes all session queue items""" + pass + + @abstractmethod + def prune(self, queue_id: str) -> PruneResult: + """Deletes all completed and errored session queue items""" + pass + + @abstractmethod + def is_empty(self, queue_id: str) -> IsEmptyResult: + """Checks if the queue is empty""" + pass + + @abstractmethod + def is_full(self, queue_id: str) -> IsFullResult: + """Checks if the queue is empty""" + pass + + @abstractmethod + def get_queue_status(self, queue_id: str) -> SessionQueueStatus: + """Gets the status of the queue""" + pass + + @abstractmethod + def get_batch_status(self, queue_id: str, batch_id: str) -> BatchStatus: + """Gets the status of a batch""" + pass + + @abstractmethod + def cancel_queue_item(self, item_id: int) -> SessionQueueItem: + """Cancels a session queue item""" + pass + + @abstractmethod + def cancel_by_batch_ids(self, queue_id: str, batch_ids: list[str]) -> CancelByBatchIDsResult: + """Cancels all queue items with matching batch IDs""" + pass + + @abstractmethod + def cancel_by_queue_id(self, queue_id: str) -> CancelByQueueIDResult: + """Cancels all queue items with matching queue ID""" + pass + + @abstractmethod + def list_queue_items( + self, + queue_id: str, + limit: int, + priority: int, + cursor: Optional[int] = None, + status: Optional[QUEUE_ITEM_STATUS] = None, + ) -> CursorPaginatedResults[SessionQueueItemDTO]: + """Gets a page of session queue items""" + pass + + @abstractmethod + def get_queue_item(self, item_id: int) -> SessionQueueItem: + """Gets a session queue item by ID""" + pass diff --git a/invokeai/app/services/session_queue/session_queue_common.py b/invokeai/app/services/session_queue/session_queue_common.py new file mode 100644 index 0000000000..a7032c7f1f --- /dev/null +++ b/invokeai/app/services/session_queue/session_queue_common.py @@ -0,0 +1,418 @@ +import datetime +import json +from itertools import chain, product +from typing import Generator, Iterable, Literal, NamedTuple, Optional, TypeAlias, Union, cast + +from pydantic import BaseModel, Field, StrictStr, parse_raw_as, root_validator, validator +from pydantic.json import pydantic_encoder + +from invokeai.app.invocations.baseinvocation import BaseInvocation +from invokeai.app.services.graph import Graph, GraphExecutionState, NodeNotFoundError +from invokeai.app.util.misc import uuid_string + +# region Errors + + +class BatchZippedLengthError(ValueError): + """Raise when a batch has items of different lengths.""" + + +class BatchItemsTypeError(TypeError): + """Raise when a batch has items of different types.""" + + +class BatchDuplicateNodeFieldError(ValueError): + """Raise when a batch has duplicate node_path and field_name.""" + + +class TooManySessionsError(ValueError): + """Raise when too many sessions are requested.""" + + +class SessionQueueItemNotFoundError(ValueError): + """Raise when a queue item is not found.""" + + +# endregion + + +# region Batch + +BatchDataType = Union[ + StrictStr, + float, + int, +] + + +class NodeFieldValue(BaseModel): + node_path: str = Field(description="The node into which this batch data item will be substituted.") + field_name: str = Field(description="The field into which this batch data item will be substituted.") + value: BatchDataType = Field(description="The value to substitute into the node/field.") + + +class BatchDatum(BaseModel): + node_path: str = Field(description="The node into which this batch data collection will be substituted.") + field_name: str = Field(description="The field into which this batch data collection will be substituted.") + items: list[BatchDataType] = Field( + default_factory=list, description="The list of items to substitute into the node/field." + ) + + +BatchDataCollection: TypeAlias = list[list[BatchDatum]] + + +class Batch(BaseModel): + batch_id: str = Field(default_factory=uuid_string, description="The ID of the batch") + data: Optional[BatchDataCollection] = Field(default=None, description="The batch data collection.") + graph: Graph = Field(description="The graph to initialize the session with") + runs: int = Field( + default=1, ge=1, description="Int stating how many times to iterate through all possible batch indices" + ) + + @validator("data") + def validate_lengths(cls, v: Optional[BatchDataCollection]): + if v is None: + return v + for batch_data_list in v: + first_item_length = len(batch_data_list[0].items) if batch_data_list and batch_data_list[0].items else 0 + for i in batch_data_list: + if len(i.items) != first_item_length: + raise BatchZippedLengthError("Zipped batch items must all have the same length") + return v + + @validator("data") + def validate_types(cls, v: Optional[BatchDataCollection]): + if v is None: + return v + for batch_data_list in v: + for datum in batch_data_list: + # Get the type of the first item in the list + first_item_type = type(datum.items[0]) if datum.items else None + for item in datum.items: + if type(item) is not first_item_type: + raise BatchItemsTypeError("All items in a batch must have the same type") + return v + + @validator("data") + def validate_unique_field_mappings(cls, v: Optional[BatchDataCollection]): + if v is None: + return v + paths: set[tuple[str, str]] = set() + for batch_data_list in v: + for datum in batch_data_list: + pair = (datum.node_path, datum.field_name) + if pair in paths: + raise BatchDuplicateNodeFieldError("Each batch data must have unique node_id and field_name") + paths.add(pair) + return v + + @root_validator(skip_on_failure=True) + def validate_batch_nodes_and_edges(cls, values): + batch_data_collection = cast(Optional[BatchDataCollection], values["data"]) + if batch_data_collection is None: + return values + graph = cast(Graph, values["graph"]) + for batch_data_list in batch_data_collection: + for batch_data in batch_data_list: + try: + node = cast(BaseInvocation, graph.get_node(batch_data.node_path)) + except NodeNotFoundError: + raise NodeNotFoundError(f"Node {batch_data.node_path} not found in graph") + if batch_data.field_name not in node.__fields__: + raise NodeNotFoundError(f"Field {batch_data.field_name} not found in node {batch_data.node_path}") + return values + + class Config: + schema_extra = { + "required": [ + "graph", + "runs", + ] + } + + +# endregion Batch + + +# region Queue Items + +DEFAULT_QUEUE_ID = "default" + +QUEUE_ITEM_STATUS = Literal["pending", "in_progress", "completed", "failed", "canceled"] + + +def get_field_values(queue_item_dict: dict) -> Optional[list[NodeFieldValue]]: + field_values_raw = queue_item_dict.get("field_values", None) + return parse_raw_as(list[NodeFieldValue], field_values_raw) if field_values_raw is not None else None + + +def get_session(queue_item_dict: dict) -> GraphExecutionState: + session_raw = queue_item_dict.get("session", "{}") + return parse_raw_as(GraphExecutionState, session_raw) + + +class SessionQueueItemWithoutGraph(BaseModel): + """Session queue item without the full graph. Used for serialization.""" + + item_id: int = Field(description="The identifier of the session queue item") + status: QUEUE_ITEM_STATUS = Field(default="pending", description="The status of this queue item") + priority: int = Field(default=0, description="The priority of this queue item") + batch_id: str = Field(description="The ID of the batch associated with this queue item") + session_id: str = Field( + description="The ID of the session associated with this queue item. The session doesn't exist in graph_executions until the queue item is executed." + ) + field_values: Optional[list[NodeFieldValue]] = Field( + default=None, description="The field values that were used for this queue item" + ) + queue_id: str = Field(description="The id of the queue with which this item is associated") + error: Optional[str] = Field(default=None, description="The error message if this queue item errored") + created_at: Union[datetime.datetime, str] = Field(description="When this queue item was created") + updated_at: Union[datetime.datetime, str] = Field(description="When this queue item was updated") + started_at: Optional[Union[datetime.datetime, str]] = Field(description="When this queue item was started") + completed_at: Optional[Union[datetime.datetime, str]] = Field(description="When this queue item was completed") + + @classmethod + def from_dict(cls, queue_item_dict: dict) -> "SessionQueueItemDTO": + # must parse these manually + queue_item_dict["field_values"] = get_field_values(queue_item_dict) + return SessionQueueItemDTO(**queue_item_dict) + + class Config: + schema_extra = { + "required": [ + "item_id", + "status", + "batch_id", + "queue_id", + "session_id", + "priority", + "session_id", + "created_at", + "updated_at", + ] + } + + +class SessionQueueItemDTO(SessionQueueItemWithoutGraph): + pass + + +class SessionQueueItem(SessionQueueItemWithoutGraph): + session: GraphExecutionState = Field(description="The fully-populated session to be executed") + + @classmethod + def from_dict(cls, queue_item_dict: dict) -> "SessionQueueItem": + # must parse these manually + queue_item_dict["field_values"] = get_field_values(queue_item_dict) + queue_item_dict["session"] = get_session(queue_item_dict) + return SessionQueueItem(**queue_item_dict) + + class Config: + schema_extra = { + "required": [ + "item_id", + "status", + "batch_id", + "queue_id", + "session_id", + "session", + "priority", + "session_id", + "created_at", + "updated_at", + ] + } + + +# endregion Queue Items + +# region Query Results + + +class SessionQueueStatus(BaseModel): + queue_id: str = Field(..., description="The ID of the queue") + item_id: Optional[int] = Field(description="The current queue item id") + batch_id: Optional[str] = Field(description="The current queue item's batch id") + session_id: Optional[str] = Field(description="The current queue item's session id") + pending: int = Field(..., description="Number of queue items with status 'pending'") + in_progress: int = Field(..., description="Number of queue items with status 'in_progress'") + completed: int = Field(..., description="Number of queue items with status 'complete'") + failed: int = Field(..., description="Number of queue items with status 'error'") + canceled: int = Field(..., description="Number of queue items with status 'canceled'") + total: int = Field(..., description="Total number of queue items") + + +class BatchStatus(BaseModel): + queue_id: str = Field(..., description="The ID of the queue") + batch_id: str = Field(..., description="The ID of the batch") + pending: int = Field(..., description="Number of queue items with status 'pending'") + in_progress: int = Field(..., description="Number of queue items with status 'in_progress'") + completed: int = Field(..., description="Number of queue items with status 'complete'") + failed: int = Field(..., description="Number of queue items with status 'error'") + canceled: int = Field(..., description="Number of queue items with status 'canceled'") + total: int = Field(..., description="Total number of queue items") + + +class EnqueueBatchResult(BaseModel): + queue_id: str = Field(description="The ID of the queue") + enqueued: int = Field(description="The total number of queue items enqueued") + requested: int = Field(description="The total number of queue items requested to be enqueued") + batch: Batch = Field(description="The batch that was enqueued") + priority: int = Field(description="The priority of the enqueued batch") + + +class EnqueueGraphResult(BaseModel): + enqueued: int = Field(description="The total number of queue items enqueued") + requested: int = Field(description="The total number of queue items requested to be enqueued") + batch: Batch = Field(description="The batch that was enqueued") + priority: int = Field(description="The priority of the enqueued batch") + queue_item: SessionQueueItemDTO = Field(description="The queue item that was enqueued") + + +class ClearResult(BaseModel): + """Result of clearing the session queue""" + + deleted: int = Field(..., description="Number of queue items deleted") + + +class PruneResult(ClearResult): + """Result of pruning the session queue""" + + pass + + +class CancelByBatchIDsResult(BaseModel): + """Result of canceling by list of batch ids""" + + canceled: int = Field(..., description="Number of queue items canceled") + + +class CancelByQueueIDResult(CancelByBatchIDsResult): + """Result of canceling by queue id""" + + pass + + +class IsEmptyResult(BaseModel): + """Result of checking if the session queue is empty""" + + is_empty: bool = Field(..., description="Whether the session queue is empty") + + +class IsFullResult(BaseModel): + """Result of checking if the session queue is full""" + + is_full: bool = Field(..., description="Whether the session queue is full") + + +# endregion Query Results + + +# region Util + + +def populate_graph(graph: Graph, node_field_values: Iterable[NodeFieldValue]) -> Graph: + """ + Populates the given graph with the given batch data items. + """ + graph_clone = graph.copy(deep=True) + for item in node_field_values: + node = graph_clone.get_node(item.node_path) + if node is None: + continue + setattr(node, item.field_name, item.value) + graph_clone.update_node(item.node_path, node) + return graph_clone + + +def create_session_nfv_tuples( + batch: Batch, maximum: int +) -> Generator[tuple[GraphExecutionState, list[NodeFieldValue]], None, None]: + """ + Create all graph permutations from the given batch data and graph. Yields tuples + of the form (graph, batch_data_items) where batch_data_items is the list of BatchDataItems + that was applied to the graph. + """ + + # TODO: Should this be a class method on Batch? + + data: list[list[tuple[NodeFieldValue]]] = [] + batch_data_collection = batch.data if batch.data is not None else [] + for batch_datum_list in batch_data_collection: + # each batch_datum_list needs to be convered to NodeFieldValues and then zipped + + node_field_values_to_zip: list[list[NodeFieldValue]] = [] + for batch_datum in batch_datum_list: + node_field_values = [ + NodeFieldValue(node_path=batch_datum.node_path, field_name=batch_datum.field_name, value=item) + for item in batch_datum.items + ] + node_field_values_to_zip.append(node_field_values) + data.append(list(zip(*node_field_values_to_zip))) + + # create generator to yield session,nfv tuples + count = 0 + for _ in range(batch.runs): + for d in product(*data): + if count >= maximum: + return + flat_node_field_values = list(chain.from_iterable(d)) + graph = populate_graph(batch.graph, flat_node_field_values) + yield (GraphExecutionState(graph=graph), flat_node_field_values) + count += 1 + + +def calc_session_count(batch: Batch) -> int: + """ + Calculates the number of sessions that would be created by the batch, without incurring + the overhead of actually generating them. Adapted from `create_sessions(). + """ + # TODO: Should this be a class method on Batch? + if not batch.data: + return batch.runs + data = [] + for batch_datum_list in batch.data: + to_zip = [] + for batch_datum in batch_datum_list: + batch_data_items = range(len(batch_datum.items)) + to_zip.append(batch_data_items) + data.append(list(zip(*to_zip))) + data_product = list(product(*data)) + return len(data_product) * batch.runs + + +class SessionQueueValueToInsert(NamedTuple): + """A tuple of values to insert into the session_queue table""" + + queue_id: str # queue_id + session: str # session json + session_id: str # session_id + batch_id: str # batch_id + field_values: Optional[str] # field_values json + priority: int # priority + + +ValuesToInsert: TypeAlias = list[SessionQueueValueToInsert] + + +def prepare_values_to_insert(queue_id: str, batch: Batch, priority: int, max_new_queue_items: int) -> ValuesToInsert: + values_to_insert: ValuesToInsert = [] + for session, field_values in create_session_nfv_tuples(batch, max_new_queue_items): + # sessions must have unique id + session.id = uuid_string() + values_to_insert.append( + SessionQueueValueToInsert( + queue_id, # queue_id + session.json(), # session (json) + session.id, # session_id + batch.batch_id, # batch_id + # must use pydantic_encoder bc field_values is a list of models + json.dumps(field_values, default=pydantic_encoder) if field_values else None, # field_values (json) + priority, # priority + ) + ) + return values_to_insert + + +# endregion Util diff --git a/invokeai/app/services/session_queue/session_queue_sqlite.py b/invokeai/app/services/session_queue/session_queue_sqlite.py new file mode 100644 index 0000000000..e1701aa288 --- /dev/null +++ b/invokeai/app/services/session_queue/session_queue_sqlite.py @@ -0,0 +1,816 @@ +import sqlite3 +import threading +from typing import Optional, Union, cast + +from fastapi_events.handlers.local import local_handler +from fastapi_events.typing import Event as FastAPIEvent + +from invokeai.app.services.events import EventServiceBase +from invokeai.app.services.graph import Graph +from invokeai.app.services.invoker import Invoker +from invokeai.app.services.session_queue.session_queue_base import SessionQueueBase +from invokeai.app.services.session_queue.session_queue_common import ( + DEFAULT_QUEUE_ID, + QUEUE_ITEM_STATUS, + Batch, + BatchStatus, + CancelByBatchIDsResult, + CancelByQueueIDResult, + ClearResult, + EnqueueBatchResult, + EnqueueGraphResult, + IsEmptyResult, + IsFullResult, + PruneResult, + SessionQueueItem, + SessionQueueItemDTO, + SessionQueueItemNotFoundError, + SessionQueueStatus, + calc_session_count, + prepare_values_to_insert, +) +from invokeai.app.services.shared.models import CursorPaginatedResults + + +class SqliteSessionQueue(SessionQueueBase): + __invoker: Invoker + __conn: sqlite3.Connection + __cursor: sqlite3.Cursor + __lock: threading.Lock + + def start(self, invoker: Invoker) -> None: + self.__invoker = invoker + self._set_in_progress_to_canceled() + prune_result = self.prune(DEFAULT_QUEUE_ID) + local_handler.register(event_name=EventServiceBase.queue_event, _func=self._on_session_event) + self.__invoker.services.logger.info(f"Pruned {prune_result.deleted} finished queue items") + + def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None: + super().__init__() + self.__conn = conn + # Enable row factory to get rows as dictionaries (must be done before making the cursor!) + self.__conn.row_factory = sqlite3.Row + self.__cursor = self.__conn.cursor() + self.__lock = lock + self._create_tables() + + def _match_event_name(self, event: FastAPIEvent, match_in: list[str]) -> bool: + return event[1]["event"] in match_in + + async def _on_session_event(self, event: FastAPIEvent) -> FastAPIEvent: + event_name = event[1]["event"] + match event_name: + case "graph_execution_state_complete": + await self._handle_complete_event(event) + case "invocation_error" | "session_retrieval_error" | "invocation_retrieval_error": + await self._handle_error_event(event) + case "session_canceled": + await self._handle_cancel_event(event) + return event + + async def _handle_complete_event(self, event: FastAPIEvent) -> None: + try: + item_id = event[1]["data"]["queue_item_id"] + # When a queue item has an error, we get an error event, then a completed event. + # Mark the queue item completed only if it isn't already marked completed, e.g. + # by a previously-handled error event. + queue_item = self.get_queue_item(item_id) + if queue_item.status not in ["completed", "failed", "canceled"]: + queue_item = self._set_queue_item_status(item_id=queue_item.item_id, status="completed") + self.__invoker.services.events.emit_queue_item_status_changed(queue_item) + except SessionQueueItemNotFoundError: + return + + async def _handle_error_event(self, event: FastAPIEvent) -> None: + try: + item_id = event[1]["data"]["queue_item_id"] + error = event[1]["data"]["error"] + queue_item = self.get_queue_item(item_id) + queue_item = self._set_queue_item_status(item_id=queue_item.item_id, status="failed", error=error) + self.__invoker.services.events.emit_queue_item_status_changed(queue_item) + except SessionQueueItemNotFoundError: + return + + async def _handle_cancel_event(self, event: FastAPIEvent) -> None: + try: + item_id = event[1]["data"]["queue_item_id"] + queue_item = self.get_queue_item(item_id) + queue_item = self._set_queue_item_status(item_id=queue_item.item_id, status="canceled") + self.__invoker.services.events.emit_queue_item_status_changed(queue_item) + except SessionQueueItemNotFoundError: + return + + def _create_tables(self) -> None: + """Creates the session queue tables, indicies, and triggers""" + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + CREATE TABLE IF NOT EXISTS session_queue ( + item_id INTEGER PRIMARY KEY AUTOINCREMENT, -- used for ordering, cursor pagination + batch_id TEXT NOT NULL, -- identifier of the batch this queue item belongs to + queue_id TEXT NOT NULL, -- identifier of the queue this queue item belongs to + session_id TEXT NOT NULL UNIQUE, -- duplicated data from the session column, for ease of access + field_values TEXT, -- NULL if no values are associated with this queue item + session TEXT NOT NULL, -- the session to be executed + status TEXT NOT NULL DEFAULT 'pending', -- the status of the queue item, one of 'pending', 'in_progress', 'completed', 'failed', 'canceled' + priority INTEGER NOT NULL DEFAULT 0, -- the priority, higher is more important + error TEXT, -- any errors associated with this queue item + created_at DATETIME NOT NULL DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), + updated_at DATETIME NOT NULL DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), -- updated via trigger + started_at DATETIME, -- updated via trigger + completed_at DATETIME -- updated via trigger, completed items are cleaned up on application startup + -- Ideally this is a FK, but graph_executions uses INSERT OR REPLACE, and REPLACE triggers the ON DELETE CASCADE... + -- FOREIGN KEY (session_id) REFERENCES graph_executions (id) ON DELETE CASCADE + ); + """ + ) + + self.__cursor.execute( + """--sql + CREATE UNIQUE INDEX IF NOT EXISTS idx_session_queue_item_id ON session_queue(item_id); + """ + ) + + self.__cursor.execute( + """--sql + CREATE UNIQUE INDEX IF NOT EXISTS idx_session_queue_session_id ON session_queue(session_id); + """ + ) + + self.__cursor.execute( + """--sql + CREATE INDEX IF NOT EXISTS idx_session_queue_batch_id ON session_queue(batch_id); + """ + ) + + self.__cursor.execute( + """--sql + CREATE INDEX IF NOT EXISTS idx_session_queue_created_priority ON session_queue(priority); + """ + ) + + self.__cursor.execute( + """--sql + CREATE INDEX IF NOT EXISTS idx_session_queue_created_status ON session_queue(status); + """ + ) + + self.__cursor.execute( + """--sql + CREATE TRIGGER IF NOT EXISTS tg_session_queue_completed_at + AFTER UPDATE OF status ON session_queue + FOR EACH ROW + WHEN + NEW.status = 'completed' + OR NEW.status = 'failed' + OR NEW.status = 'canceled' + BEGIN + UPDATE session_queue + SET completed_at = STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') + WHERE item_id = NEW.item_id; + END; + """ + ) + + self.__cursor.execute( + """--sql + CREATE TRIGGER IF NOT EXISTS tg_session_queue_started_at + AFTER UPDATE OF status ON session_queue + FOR EACH ROW + WHEN + NEW.status = 'in_progress' + BEGIN + UPDATE session_queue + SET started_at = STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') + WHERE item_id = NEW.item_id; + END; + """ + ) + + self.__cursor.execute( + """--sql + CREATE TRIGGER IF NOT EXISTS tg_session_queue_updated_at + AFTER UPDATE + ON session_queue FOR EACH ROW + BEGIN + UPDATE session_queue + SET updated_at = STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') + WHERE item_id = old.item_id; + END; + """ + ) + + self.__conn.commit() + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + + def _set_in_progress_to_canceled(self) -> None: + """ + Sets all in_progress queue items to canceled. Run on app startup, not associated with any queue. + This is necessary because the invoker may have been killed while processing a queue item. + """ + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + UPDATE session_queue + SET status = 'canceled' + WHERE status = 'in_progress'; + """ + ) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + + def _get_current_queue_size(self, queue_id: str) -> int: + """Gets the current number of pending queue items""" + self.__cursor.execute( + """--sql + SELECT count(*) + FROM session_queue + WHERE + queue_id = ? + AND status = 'pending' + """, + (queue_id,), + ) + return cast(int, self.__cursor.fetchone()[0]) + + def _get_highest_priority(self, queue_id: str) -> int: + """Gets the highest priority value in the queue""" + self.__cursor.execute( + """--sql + SELECT MAX(priority) + FROM session_queue + WHERE + queue_id = ? + AND status = 'pending' + """, + (queue_id,), + ) + return cast(Union[int, None], self.__cursor.fetchone()[0]) or 0 + + def enqueue_graph(self, queue_id: str, graph: Graph, prepend: bool) -> EnqueueGraphResult: + enqueue_result = self.enqueue_batch(queue_id=queue_id, batch=Batch(graph=graph), prepend=prepend) + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT * + FROM session_queue + WHERE queue_id = ? + AND batch_id = ? + """, + (queue_id, enqueue_result.batch.batch_id), + ) + result = cast(Union[sqlite3.Row, None], self.__cursor.fetchone()) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + if result is None: + raise SessionQueueItemNotFoundError(f"No queue item with batch id {enqueue_result.batch.batch_id}") + return EnqueueGraphResult( + **enqueue_result.dict(), + queue_item=SessionQueueItemDTO.from_dict(dict(result)), + ) + + def enqueue_batch(self, queue_id: str, batch: Batch, prepend: bool) -> EnqueueBatchResult: + try: + self.__lock.acquire() + + # TODO: how does this work in a multi-user scenario? + current_queue_size = self._get_current_queue_size(queue_id) + max_queue_size = self.__invoker.services.configuration.get_config().max_queue_size + max_new_queue_items = max_queue_size - current_queue_size + + priority = 0 + if prepend: + priority = self._get_highest_priority(queue_id) + 1 + + requested_count = calc_session_count(batch) + values_to_insert = prepare_values_to_insert( + queue_id=queue_id, + batch=batch, + priority=priority, + max_new_queue_items=max_new_queue_items, + ) + enqueued_count = len(values_to_insert) + + if requested_count > enqueued_count: + values_to_insert = values_to_insert[:max_new_queue_items] + + self.__cursor.executemany( + """--sql + INSERT INTO session_queue (queue_id, session, session_id, batch_id, field_values, priority) + VALUES (?, ?, ?, ?, ?, ?) + """, + values_to_insert, + ) + self.__conn.commit() + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + enqueue_result = EnqueueBatchResult( + queue_id=queue_id, + requested=requested_count, + enqueued=enqueued_count, + batch=batch, + priority=priority, + ) + self.__invoker.services.events.emit_batch_enqueued(enqueue_result) + return enqueue_result + + def dequeue(self) -> Optional[SessionQueueItem]: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT * + FROM session_queue + WHERE status = 'pending' + ORDER BY + priority DESC, + item_id ASC + LIMIT 1 + """ + ) + result = cast(Union[sqlite3.Row, None], self.__cursor.fetchone()) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + if result is None: + return None + queue_item = SessionQueueItem.from_dict(dict(result)) + queue_item = self._set_queue_item_status(item_id=queue_item.item_id, status="in_progress") + self.__invoker.services.events.emit_queue_item_status_changed(queue_item) + return queue_item + + def get_next(self, queue_id: str) -> Optional[SessionQueueItem]: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT * + FROM session_queue + WHERE + queue_id = ? + AND status = 'pending' + ORDER BY + priority DESC, + created_at ASC + LIMIT 1 + """, + (queue_id,), + ) + result = cast(Union[sqlite3.Row, None], self.__cursor.fetchone()) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + if result is None: + return None + return SessionQueueItem.from_dict(dict(result)) + + def get_current(self, queue_id: str) -> Optional[SessionQueueItem]: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT * + FROM session_queue + WHERE + queue_id = ? + AND status = 'in_progress' + LIMIT 1 + """, + (queue_id,), + ) + result = cast(Union[sqlite3.Row, None], self.__cursor.fetchone()) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + if result is None: + return None + return SessionQueueItem.from_dict(dict(result)) + + def _set_queue_item_status( + self, item_id: int, status: QUEUE_ITEM_STATUS, error: Optional[str] = None + ) -> SessionQueueItem: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + UPDATE session_queue + SET status = ?, error = ? + WHERE item_id = ? + """, + (status, error, item_id), + ) + self.__conn.commit() + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return self.get_queue_item(item_id) + + def is_empty(self, queue_id: str) -> IsEmptyResult: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT count(*) + FROM session_queue + WHERE queue_id = ? + """, + (queue_id,), + ) + is_empty = cast(int, self.__cursor.fetchone()[0]) == 0 + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return IsEmptyResult(is_empty=is_empty) + + def is_full(self, queue_id: str) -> IsFullResult: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT count(*) + FROM session_queue + WHERE queue_id = ? + """, + (queue_id,), + ) + max_queue_size = self.__invoker.services.configuration.max_queue_size + is_full = cast(int, self.__cursor.fetchone()[0]) >= max_queue_size + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return IsFullResult(is_full=is_full) + + def delete_queue_item(self, item_id: int) -> SessionQueueItem: + queue_item = self.get_queue_item(item_id=item_id) + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + DELETE FROM session_queue + WHERE + item_id = ? + """, + (item_id,), + ) + self.__conn.commit() + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return queue_item + + def clear(self, queue_id: str) -> ClearResult: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT COUNT(*) + FROM session_queue + WHERE queue_id = ? + """, + (queue_id,), + ) + count = self.__cursor.fetchone()[0] + self.__cursor.execute( + """--sql + DELETE + FROM session_queue + WHERE queue_id = ? + """, + (queue_id,), + ) + self.__conn.commit() + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + self.__invoker.services.events.emit_queue_cleared(queue_id) + return ClearResult(deleted=count) + + def prune(self, queue_id: str) -> PruneResult: + try: + where = """--sql + WHERE + queue_id = ? + AND ( + status = 'completed' + OR status = 'failed' + OR status = 'canceled' + ) + """ + self.__lock.acquire() + self.__cursor.execute( + f"""--sql + SELECT COUNT(*) + FROM session_queue + {where}; + """, + (queue_id,), + ) + count = self.__cursor.fetchone()[0] + self.__cursor.execute( + f"""--sql + DELETE + FROM session_queue + {where}; + """, + (queue_id,), + ) + self.__conn.commit() + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return PruneResult(deleted=count) + + def cancel_queue_item(self, item_id: int) -> SessionQueueItem: + queue_item = self.get_queue_item(item_id) + if queue_item.status not in ["canceled", "failed", "completed"]: + queue_item = self._set_queue_item_status(item_id=item_id, status="canceled") + self.__invoker.services.queue.cancel(queue_item.session_id) + self.__invoker.services.events.emit_session_canceled( + queue_item_id=queue_item.item_id, + queue_id=queue_item.queue_id, + queue_batch_id=queue_item.batch_id, + graph_execution_state_id=queue_item.session_id, + ) + self.__invoker.services.events.emit_queue_item_status_changed(queue_item) + return queue_item + + def cancel_by_batch_ids(self, queue_id: str, batch_ids: list[str]) -> CancelByBatchIDsResult: + try: + current_queue_item = self.get_current(queue_id) + self.__lock.acquire() + placeholders = ", ".join(["?" for _ in batch_ids]) + where = f"""--sql + WHERE + queue_id == ? + AND batch_id IN ({placeholders}) + AND status != 'canceled' + AND status != 'completed' + AND status != 'failed' + """ + params = [queue_id] + batch_ids + self.__cursor.execute( + f"""--sql + SELECT COUNT(*) + FROM session_queue + {where}; + """, + tuple(params), + ) + count = self.__cursor.fetchone()[0] + self.__cursor.execute( + f"""--sql + UPDATE session_queue + SET status = 'canceled' + {where}; + """, + tuple(params), + ) + self.__conn.commit() + if current_queue_item is not None and current_queue_item.batch_id in batch_ids: + self.__invoker.services.queue.cancel(current_queue_item.session_id) + self.__invoker.services.events.emit_session_canceled( + queue_item_id=current_queue_item.item_id, + queue_id=current_queue_item.queue_id, + queue_batch_id=current_queue_item.batch_id, + graph_execution_state_id=current_queue_item.session_id, + ) + self.__invoker.services.events.emit_queue_item_status_changed(current_queue_item) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return CancelByBatchIDsResult(canceled=count) + + def cancel_by_queue_id(self, queue_id: str) -> CancelByQueueIDResult: + try: + current_queue_item = self.get_current(queue_id) + self.__lock.acquire() + where = """--sql + WHERE + queue_id is ? + AND status != 'canceled' + AND status != 'completed' + AND status != 'failed' + """ + params = [queue_id] + self.__cursor.execute( + f"""--sql + SELECT COUNT(*) + FROM session_queue + {where}; + """, + tuple(params), + ) + count = self.__cursor.fetchone()[0] + self.__cursor.execute( + f"""--sql + UPDATE session_queue + SET status = 'canceled' + {where}; + """, + tuple(params), + ) + self.__conn.commit() + if current_queue_item is not None and current_queue_item.queue_id == queue_id: + self.__invoker.services.queue.cancel(current_queue_item.session_id) + self.__invoker.services.events.emit_session_canceled( + queue_item_id=current_queue_item.item_id, + queue_id=current_queue_item.queue_id, + queue_batch_id=current_queue_item.batch_id, + graph_execution_state_id=current_queue_item.session_id, + ) + self.__invoker.services.events.emit_queue_item_status_changed(current_queue_item) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return CancelByQueueIDResult(canceled=count) + + def get_queue_item(self, item_id: int) -> SessionQueueItem: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT * FROM session_queue + WHERE + item_id = ? + """, + (item_id,), + ) + result = cast(Union[sqlite3.Row, None], self.__cursor.fetchone()) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + if result is None: + raise SessionQueueItemNotFoundError(f"No queue item with id {item_id}") + return SessionQueueItem.from_dict(dict(result)) + + def list_queue_items( + self, + queue_id: str, + limit: int, + priority: int, + cursor: Optional[int] = None, + status: Optional[QUEUE_ITEM_STATUS] = None, + ) -> CursorPaginatedResults[SessionQueueItemDTO]: + try: + item_id = cursor + self.__lock.acquire() + query = """--sql + SELECT item_id, + status, + priority, + field_values, + error, + created_at, + updated_at, + completed_at, + started_at, + session_id, + batch_id, + queue_id + FROM session_queue + WHERE queue_id = ? + """ + params: list[Union[str, int]] = [queue_id] + + if status is not None: + query += """--sql + AND status = ? + """ + params.append(status) + + if item_id is not None: + query += """--sql + AND (priority < ?) OR (priority = ? AND item_id > ?) + """ + params.extend([priority, priority, item_id]) + + query += """--sql + ORDER BY + priority DESC, + item_id ASC + LIMIT ? + """ + params.append(limit + 1) + self.__cursor.execute(query, params) + results = cast(list[sqlite3.Row], self.__cursor.fetchall()) + items = [SessionQueueItemDTO.from_dict(dict(result)) for result in results] + has_more = False + if len(items) > limit: + # remove the extra item + items.pop() + has_more = True + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + return CursorPaginatedResults(items=items, limit=limit, has_more=has_more) + + def get_queue_status(self, queue_id: str) -> SessionQueueStatus: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT status, count(*) + FROM session_queue + WHERE queue_id = ? + GROUP BY status + """, + (queue_id,), + ) + counts_result = cast(list[sqlite3.Row], self.__cursor.fetchall()) + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + + current_item = self.get_current(queue_id=queue_id) + total = sum(row[1] for row in counts_result) + counts: dict[str, int] = {row[0]: row[1] for row in counts_result} + return SessionQueueStatus( + queue_id=queue_id, + item_id=current_item.item_id if current_item else None, + session_id=current_item.session_id if current_item else None, + batch_id=current_item.batch_id if current_item else None, + pending=counts.get("pending", 0), + in_progress=counts.get("in_progress", 0), + completed=counts.get("completed", 0), + failed=counts.get("failed", 0), + canceled=counts.get("canceled", 0), + total=total, + ) + + def get_batch_status(self, queue_id: str, batch_id: str) -> BatchStatus: + try: + self.__lock.acquire() + self.__cursor.execute( + """--sql + SELECT status, count(*) + FROM session_queue + WHERE + queue_id = ? + AND batch_id = ? + GROUP BY status + """, + (queue_id, batch_id), + ) + result = cast(list[sqlite3.Row], self.__cursor.fetchall()) + total = sum(row[1] for row in result) + counts: dict[str, int] = {row[0]: row[1] for row in result} + except Exception: + self.__conn.rollback() + raise + finally: + self.__lock.release() + + return BatchStatus( + batch_id=batch_id, + queue_id=queue_id, + pending=counts.get("pending", 0), + in_progress=counts.get("in_progress", 0), + completed=counts.get("completed", 0), + failed=counts.get("failed", 0), + canceled=counts.get("canceled", 0), + total=total, + ) diff --git a/invokeai/app/services/shared/models.py b/invokeai/app/services/shared/models.py new file mode 100644 index 0000000000..7edde152c3 --- /dev/null +++ b/invokeai/app/services/shared/models.py @@ -0,0 +1,14 @@ +from typing import Generic, TypeVar + +from pydantic import BaseModel, Field +from pydantic.generics import GenericModel + +GenericBaseModel = TypeVar("GenericBaseModel", bound=BaseModel) + + +class CursorPaginatedResults(GenericModel, Generic[GenericBaseModel]): + """Cursor-paginated results""" + + limit: int = Field(..., description="Limit of items to get") + has_more: bool = Field(..., description="Whether there are more items available") + items: list[GenericBaseModel] = Field(..., description="Items") diff --git a/invokeai/app/services/sqlite.py b/invokeai/app/services/sqlite.py index 3c46b1c2a0..63f3356b3c 100644 --- a/invokeai/app/services/sqlite.py +++ b/invokeai/app/services/sqlite.py @@ -1,5 +1,5 @@ import sqlite3 -from threading import Lock +import threading from typing import Generic, Optional, TypeVar, get_args from pydantic import BaseModel, parse_raw_as @@ -12,23 +12,19 @@ sqlite_memory = ":memory:" class SqliteItemStorage(ItemStorageABC, Generic[T]): - _filename: str _table_name: str _conn: sqlite3.Connection _cursor: sqlite3.Cursor _id_field: str - _lock: Lock + _lock: threading.Lock - def __init__(self, filename: str, table_name: str, id_field: str = "id"): + def __init__(self, conn: sqlite3.Connection, table_name: str, lock: threading.Lock, id_field: str = "id"): super().__init__() - self._filename = filename self._table_name = table_name self._id_field = id_field # TODO: validate that T has this field - self._lock = Lock() - self._conn = sqlite3.connect( - self._filename, check_same_thread=False - ) # TODO: figure out a better threading solution + self._lock = lock + self._conn = conn self._cursor = self._conn.cursor() self._create_table() @@ -49,8 +45,7 @@ class SqliteItemStorage(ItemStorageABC, Generic[T]): def _parse_item(self, item: str) -> T: item_type = get_args(self.__orig_class__)[0] - parsed = parse_raw_as(item_type, item) - return parsed + return parse_raw_as(item_type, item) def set(self, item: T): try: diff --git a/invokeai/app/services/thread.py b/invokeai/app/services/thread.py new file mode 100644 index 0000000000..3fd88295b1 --- /dev/null +++ b/invokeai/app/services/thread.py @@ -0,0 +1,3 @@ +import threading + +lock = threading.Lock() diff --git a/invokeai/app/util/misc.py b/invokeai/app/util/misc.py index b42b2246b8..6d56652ed4 100644 --- a/invokeai/app/util/misc.py +++ b/invokeai/app/util/misc.py @@ -1,4 +1,5 @@ import datetime +import uuid import numpy as np @@ -21,3 +22,8 @@ SEED_MAX = np.iinfo(np.uint32).max def get_random_seed(): rng = np.random.default_rng(seed=None) return int(rng.integers(0, SEED_MAX)) + + +def uuid_string(): + res = uuid.uuid4() + return str(res) diff --git a/invokeai/app/util/step_callback.py b/invokeai/app/util/step_callback.py index 26de809d1c..6d4a857491 100644 --- a/invokeai/app/util/step_callback.py +++ b/invokeai/app/util/step_callback.py @@ -110,6 +110,9 @@ def stable_diffusion_step_callback( dataURL = image_to_dataURL(image, image_format="JPEG") context.services.events.emit_generator_progress( + queue_id=context.queue_id, + queue_item_id=context.queue_item_id, + queue_batch_id=context.queue_batch_id, graph_execution_state_id=context.graph_execution_state_id, node=node, source_node_id=source_node_id, diff --git a/invokeai/backend/install/model_install_backend.py b/invokeai/backend/install/model_install_backend.py index 6c9eb548ab..667111047f 100644 --- a/invokeai/backend/install/model_install_backend.py +++ b/invokeai/backend/install/model_install_backend.py @@ -326,6 +326,16 @@ class ModelInstall(object): elif f"learned_embeds.{suffix}" in files: location = self._download_hf_model(repo_id, [f"learned_embeds.{suffix}"], staging) break + elif "image_encoder.txt" in files and f"ip_adapter.{suffix}" in files: # IP-Adapter + files = ["image_encoder.txt", f"ip_adapter.{suffix}"] + location = self._download_hf_model(repo_id, files, staging) + break + elif f"model.{suffix}" in files and "config.json" in files: + # This elif-condition is pretty fragile, but it is intended to handle CLIP Vision models hosted + # by InvokeAI for use with IP-Adapters. + files = ["config.json", f"model.{suffix}"] + location = self._download_hf_model(repo_id, files, staging) + break if not location: logger.warning(f"Could not determine type of repo {repo_id}. Skipping install.") return {} @@ -534,14 +544,17 @@ def hf_download_with_resume( logger.info(f"{model_name}: Downloading...") try: - with open(model_dest, open_mode) as file, tqdm( - desc=model_name, - initial=exist_size, - total=total + exist_size, - unit="iB", - unit_scale=True, - unit_divisor=1000, - ) as bar: + with ( + open(model_dest, open_mode) as file, + tqdm( + desc=model_name, + initial=exist_size, + total=total + exist_size, + unit="iB", + unit_scale=True, + unit_divisor=1000, + ) as bar, + ): for data in resp.iter_content(chunk_size=1024): size = file.write(data) bar.update(size) diff --git a/invokeai/backend/ip_adapter/README.md b/invokeai/backend/ip_adapter/README.md new file mode 100644 index 0000000000..81b90d8e12 --- /dev/null +++ b/invokeai/backend/ip_adapter/README.md @@ -0,0 +1,45 @@ +# IP-Adapter Model Formats + +The official IP-Adapter models are released here: [h94/IP-Adapter](https://huggingface.co/h94/IP-Adapter) + +This official model repo does not integrate well with InvokeAI's current approach to model management, so we have defined a new file structure for IP-Adapter models. The InvokeAI format is described below. + +## CLIP Vision Models + +CLIP Vision models are organized in `diffusers`` format. The expected directory structure is: + +```bash +ip_adapter_sd_image_encoder/ +├── config.json +└── model.safetensors +``` + +## IP-Adapter Models + +IP-Adapter models are stored in a directory containing two files +- `image_encoder.txt`: A text file containing the model identifier for the CLIP Vision encoder that is intended to be used with this IP-Adapter model. +- `ip_adapter.bin`: The IP-Adapter weights. + +Sample directory structure: +```bash +ip_adapter_sd15/ +├── image_encoder.txt +└── ip_adapter.bin +``` + +### Why save the weights in a .safetensors file? + +The weights in `ip_adapter.bin` are stored in a nested dict, which is not supported by `safetensors`. This could be solved by splitting `ip_adapter.bin` into multiple files, but for now we have decided to maintain consistency with the checkpoint structure used in the official [h94/IP-Adapter](https://huggingface.co/h94/IP-Adapter) repo. + +## InvokeAI Hosted IP-Adapters + +Image Encoders: +- [InvokeAI/ip_adapter_sd_image_encoder](https://huggingface.co/InvokeAI/ip_adapter_sd_image_encoder) +- [InvokeAI/ip_adapter_sdxl_image_encoder](https://huggingface.co/InvokeAI/ip_adapter_sdxl_image_encoder) + +IP-Adapters: +- [InvokeAI/ip_adapter_sd15](https://huggingface.co/InvokeAI/ip_adapter_sd15) +- [InvokeAI/ip_adapter_plus_sd15](https://huggingface.co/InvokeAI/ip_adapter_plus_sd15) +- [InvokeAI/ip_adapter_plus_face_sd15](https://huggingface.co/InvokeAI/ip_adapter_plus_face_sd15) +- [InvokeAI/ip_adapter_sdxl](https://huggingface.co/InvokeAI/ip_adapter_sdxl) +- Not yet supported: [InvokeAI/ip_adapter_sdxl_vit_h](https://huggingface.co/InvokeAI/ip_adapter_sdxl_vit_h) \ No newline at end of file diff --git a/invokeai/backend/ip_adapter/__init__.py b/invokeai/backend/ip_adapter/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/invokeai/backend/ip_adapter/attention_processor.py b/invokeai/backend/ip_adapter/attention_processor.py new file mode 100644 index 0000000000..352183d1f0 --- /dev/null +++ b/invokeai/backend/ip_adapter/attention_processor.py @@ -0,0 +1,162 @@ +# copied from https://github.com/tencent-ailab/IP-Adapter (Apache License 2.0) +# and modified as needed + +# tencent-ailab comment: +# modified from https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py +import torch +import torch.nn as nn +import torch.nn.functional as F +from diffusers.models.attention_processor import AttnProcessor2_0 as DiffusersAttnProcessor2_0 + + +# Create a version of AttnProcessor2_0 that is a sub-class of nn.Module. This is required for IP-Adapter state_dict +# loading. +class AttnProcessor2_0(DiffusersAttnProcessor2_0, nn.Module): + def __init__(self): + DiffusersAttnProcessor2_0.__init__(self) + nn.Module.__init__(self) + + def __call__( + self, + attn, + hidden_states, + encoder_hidden_states=None, + attention_mask=None, + temb=None, + ip_adapter_image_prompt_embeds=None, + ): + """Re-definition of DiffusersAttnProcessor2_0.__call__(...) that accepts and ignores the + ip_adapter_image_prompt_embeds parameter. + """ + return DiffusersAttnProcessor2_0.__call__( + self, attn, hidden_states, encoder_hidden_states, attention_mask, temb + ) + + +class IPAttnProcessor2_0(torch.nn.Module): + r""" + Attention processor for IP-Adapater for PyTorch 2.0. + Args: + hidden_size (`int`): + The hidden size of the attention layer. + cross_attention_dim (`int`): + The number of channels in the `encoder_hidden_states`. + scale (`float`, defaults to 1.0): + the weight scale of image prompt. + """ + + def __init__(self, hidden_size, cross_attention_dim=None, scale=1.0): + super().__init__() + + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + self.scale = scale + + self.to_k_ip = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + self.to_v_ip = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + + def __call__( + self, + attn, + hidden_states, + encoder_hidden_states=None, + attention_mask=None, + temb=None, + ip_adapter_image_prompt_embeds=None, + ): + if encoder_hidden_states is not None: + # If encoder_hidden_states is not None, then we are doing cross-attention, not self-attention. In this case, + # we will apply IP-Adapter conditioning. We validate the inputs for IP-Adapter conditioning here. + assert ip_adapter_image_prompt_embeds is not None + # The batch dimensions should match. + assert ip_adapter_image_prompt_embeds.shape[0] == encoder_hidden_states.shape[0] + # The channel dimensions should match. + assert ip_adapter_image_prompt_embeds.shape[2] == encoder_hidden_states.shape[2] + ip_hidden_states = ip_adapter_image_prompt_embeds + + residual = hidden_states + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if ip_hidden_states is not None: + ip_key = self.to_k_ip(ip_hidden_states) + ip_value = self.to_v_ip(ip_hidden_states) + + ip_key = ip_key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + ip_value = ip_value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + ip_hidden_states = F.scaled_dot_product_attention( + query, ip_key, ip_value, attn_mask=None, dropout_p=0.0, is_causal=False + ) + + ip_hidden_states = ip_hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + ip_hidden_states = ip_hidden_states.to(query.dtype) + + hidden_states = hidden_states + self.scale * ip_hidden_states + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states diff --git a/invokeai/backend/ip_adapter/ip_adapter.py b/invokeai/backend/ip_adapter/ip_adapter.py new file mode 100644 index 0000000000..7f320a2c35 --- /dev/null +++ b/invokeai/backend/ip_adapter/ip_adapter.py @@ -0,0 +1,217 @@ +# copied from https://github.com/tencent-ailab/IP-Adapter (Apache License 2.0) +# and modified as needed + +from contextlib import contextmanager +from typing import Optional, Union + +import torch +from diffusers.models import UNet2DConditionModel +from PIL import Image +from transformers import CLIPImageProcessor, CLIPVisionModelWithProjection + +from .attention_processor import AttnProcessor2_0, IPAttnProcessor2_0 +from .resampler import Resampler + + +class ImageProjModel(torch.nn.Module): + """Image Projection Model""" + + def __init__(self, cross_attention_dim=1024, clip_embeddings_dim=1024, clip_extra_context_tokens=4): + super().__init__() + + self.cross_attention_dim = cross_attention_dim + self.clip_extra_context_tokens = clip_extra_context_tokens + self.proj = torch.nn.Linear(clip_embeddings_dim, self.clip_extra_context_tokens * cross_attention_dim) + self.norm = torch.nn.LayerNorm(cross_attention_dim) + + @classmethod + def from_state_dict(cls, state_dict: dict[torch.Tensor], clip_extra_context_tokens=4): + """Initialize an ImageProjModel from a state_dict. + + The cross_attention_dim and clip_embeddings_dim are inferred from the shape of the tensors in the state_dict. + + Args: + state_dict (dict[torch.Tensor]): The state_dict of model weights. + clip_extra_context_tokens (int, optional): Defaults to 4. + + Returns: + ImageProjModel + """ + cross_attention_dim = state_dict["norm.weight"].shape[0] + clip_embeddings_dim = state_dict["proj.weight"].shape[-1] + + model = cls(cross_attention_dim, clip_embeddings_dim, clip_extra_context_tokens) + + model.load_state_dict(state_dict) + return model + + def forward(self, image_embeds): + embeds = image_embeds + clip_extra_context_tokens = self.proj(embeds).reshape( + -1, self.clip_extra_context_tokens, self.cross_attention_dim + ) + clip_extra_context_tokens = self.norm(clip_extra_context_tokens) + return clip_extra_context_tokens + + +class IPAdapter: + """IP-Adapter: https://arxiv.org/pdf/2308.06721.pdf""" + + def __init__( + self, + state_dict: dict[torch.Tensor], + device: torch.device, + dtype: torch.dtype = torch.float16, + num_tokens: int = 4, + ): + self.device = device + self.dtype = dtype + + self._num_tokens = num_tokens + + self._clip_image_processor = CLIPImageProcessor() + + self._state_dict = state_dict + + self._image_proj_model = self._init_image_proj_model(self._state_dict["image_proj"]) + + # The _attn_processors will be initialized later when we have access to the UNet. + self._attn_processors = None + + def to(self, device: torch.device, dtype: Optional[torch.dtype] = None): + self.device = device + if dtype is not None: + self.dtype = dtype + + self._image_proj_model.to(device=self.device, dtype=self.dtype) + if self._attn_processors is not None: + torch.nn.ModuleList(self._attn_processors.values()).to(device=self.device, dtype=self.dtype) + + def _init_image_proj_model(self, state_dict): + return ImageProjModel.from_state_dict(state_dict, self._num_tokens).to(self.device, dtype=self.dtype) + + def _prepare_attention_processors(self, unet: UNet2DConditionModel): + """Prepare a dict of attention processors that can later be injected into a unet, and load the IP-Adapter + attention weights into them. + + Note that the `unet` param is only used to determine attention block dimensions and naming. + TODO(ryand): As a future improvement, this could all be inferred from the state_dict when the IPAdapter is + intialized. + """ + attn_procs = {} + for name in unet.attn_processors.keys(): + cross_attention_dim = None if name.endswith("attn1.processor") else unet.config.cross_attention_dim + if name.startswith("mid_block"): + hidden_size = unet.config.block_out_channels[-1] + elif name.startswith("up_blocks"): + block_id = int(name[len("up_blocks.")]) + hidden_size = list(reversed(unet.config.block_out_channels))[block_id] + elif name.startswith("down_blocks"): + block_id = int(name[len("down_blocks.")]) + hidden_size = unet.config.block_out_channels[block_id] + if cross_attention_dim is None: + attn_procs[name] = AttnProcessor2_0() + else: + attn_procs[name] = IPAttnProcessor2_0( + hidden_size=hidden_size, + cross_attention_dim=cross_attention_dim, + scale=1.0, + ).to(self.device, dtype=self.dtype) + + ip_layers = torch.nn.ModuleList(attn_procs.values()) + ip_layers.load_state_dict(self._state_dict["ip_adapter"]) + self._attn_processors = attn_procs + self._state_dict = None + + # @genomancer: pushed scaling back out into its own method (like original Tencent implementation) + # which makes implementing begin_step_percent and end_step_percent easier + # but based on self._attn_processors (ala @Ryan) instead of original Tencent unet.attn_processors, + # which should make it easier to implement multiple IPAdapters + def set_scale(self, scale): + if self._attn_processors is not None: + for attn_processor in self._attn_processors.values(): + if isinstance(attn_processor, IPAttnProcessor2_0): + attn_processor.scale = scale + + @contextmanager + def apply_ip_adapter_attention(self, unet: UNet2DConditionModel, scale: float): + """A context manager that patches `unet` with this IP-Adapter's attention processors while it is active. + + Yields: + None + """ + if self._attn_processors is None: + # We only have to call _prepare_attention_processors(...) once, and then the result is cached and can be + # used on any UNet model (with the same dimensions). + self._prepare_attention_processors(unet) + + # Set scale + self.set_scale(scale) + # for attn_processor in self._attn_processors.values(): + # if isinstance(attn_processor, IPAttnProcessor2_0): + # attn_processor.scale = scale + + orig_attn_processors = unet.attn_processors + + # Make a (moderately-) shallow copy of the self._attn_processors dict, because unet.set_attn_processor(...) + # actually pops elements from the passed dict. + ip_adapter_attn_processors = {k: v for k, v in self._attn_processors.items()} + + try: + unet.set_attn_processor(ip_adapter_attn_processors) + yield None + finally: + unet.set_attn_processor(orig_attn_processors) + + @torch.inference_mode() + def get_image_embeds(self, pil_image, image_encoder: CLIPVisionModelWithProjection): + if isinstance(pil_image, Image.Image): + pil_image = [pil_image] + clip_image = self._clip_image_processor(images=pil_image, return_tensors="pt").pixel_values + clip_image_embeds = image_encoder(clip_image.to(self.device, dtype=self.dtype)).image_embeds + image_prompt_embeds = self._image_proj_model(clip_image_embeds) + uncond_image_prompt_embeds = self._image_proj_model(torch.zeros_like(clip_image_embeds)) + return image_prompt_embeds, uncond_image_prompt_embeds + + +class IPAdapterPlus(IPAdapter): + """IP-Adapter with fine-grained features""" + + def _init_image_proj_model(self, state_dict): + return Resampler.from_state_dict( + state_dict=state_dict, + depth=4, + dim_head=64, + heads=12, + num_queries=self._num_tokens, + ff_mult=4, + ).to(self.device, dtype=self.dtype) + + @torch.inference_mode() + def get_image_embeds(self, pil_image, image_encoder: CLIPVisionModelWithProjection): + if isinstance(pil_image, Image.Image): + pil_image = [pil_image] + clip_image = self._clip_image_processor(images=pil_image, return_tensors="pt").pixel_values + clip_image = clip_image.to(self.device, dtype=self.dtype) + clip_image_embeds = image_encoder(clip_image, output_hidden_states=True).hidden_states[-2] + image_prompt_embeds = self._image_proj_model(clip_image_embeds) + uncond_clip_image_embeds = image_encoder(torch.zeros_like(clip_image), output_hidden_states=True).hidden_states[ + -2 + ] + uncond_image_prompt_embeds = self._image_proj_model(uncond_clip_image_embeds) + return image_prompt_embeds, uncond_image_prompt_embeds + + +def build_ip_adapter( + ip_adapter_ckpt_path: str, device: torch.device, dtype: torch.dtype = torch.float16 +) -> Union[IPAdapter, IPAdapterPlus]: + state_dict = torch.load(ip_adapter_ckpt_path, map_location="cpu") + + # Determine if the state_dict is from an IPAdapter or IPAdapterPlus based on the image_proj weights that it + # contains. + is_plus = "proj.weight" not in state_dict["image_proj"] + + if is_plus: + return IPAdapterPlus(state_dict, device=device, dtype=dtype) + else: + return IPAdapter(state_dict, device=device, dtype=dtype) diff --git a/invokeai/backend/ip_adapter/resampler.py b/invokeai/backend/ip_adapter/resampler.py new file mode 100644 index 0000000000..84224fd359 --- /dev/null +++ b/invokeai/backend/ip_adapter/resampler.py @@ -0,0 +1,158 @@ +# copied from https://github.com/tencent-ailab/IP-Adapter (Apache License 2.0) + +# tencent ailab comment: modified from +# https://github.com/mlfoundations/open_flamingo/blob/main/open_flamingo/src/helpers.py +import math + +import torch +import torch.nn as nn + + +# FFN +def FeedForward(dim, mult=4): + inner_dim = int(dim * mult) + return nn.Sequential( + nn.LayerNorm(dim), + nn.Linear(dim, inner_dim, bias=False), + nn.GELU(), + nn.Linear(inner_dim, dim, bias=False), + ) + + +def reshape_tensor(x, heads): + bs, length, width = x.shape + # (bs, length, width) --> (bs, length, n_heads, dim_per_head) + x = x.view(bs, length, heads, -1) + # (bs, length, n_heads, dim_per_head) --> (bs, n_heads, length, dim_per_head) + x = x.transpose(1, 2) + # (bs, n_heads, length, dim_per_head) --> (bs*n_heads, length, dim_per_head) + x = x.reshape(bs, heads, length, -1) + return x + + +class PerceiverAttention(nn.Module): + def __init__(self, *, dim, dim_head=64, heads=8): + super().__init__() + self.scale = dim_head**-0.5 + self.dim_head = dim_head + self.heads = heads + inner_dim = dim_head * heads + + self.norm1 = nn.LayerNorm(dim) + self.norm2 = nn.LayerNorm(dim) + + self.to_q = nn.Linear(dim, inner_dim, bias=False) + self.to_kv = nn.Linear(dim, inner_dim * 2, bias=False) + self.to_out = nn.Linear(inner_dim, dim, bias=False) + + def forward(self, x, latents): + """ + Args: + x (torch.Tensor): image features + shape (b, n1, D) + latent (torch.Tensor): latent features + shape (b, n2, D) + """ + x = self.norm1(x) + latents = self.norm2(latents) + + b, l, _ = latents.shape + + q = self.to_q(latents) + kv_input = torch.cat((x, latents), dim=-2) + k, v = self.to_kv(kv_input).chunk(2, dim=-1) + + q = reshape_tensor(q, self.heads) + k = reshape_tensor(k, self.heads) + v = reshape_tensor(v, self.heads) + + # attention + scale = 1 / math.sqrt(math.sqrt(self.dim_head)) + weight = (q * scale) @ (k * scale).transpose(-2, -1) # More stable with f16 than dividing afterwards + weight = torch.softmax(weight.float(), dim=-1).type(weight.dtype) + out = weight @ v + + out = out.permute(0, 2, 1, 3).reshape(b, l, -1) + + return self.to_out(out) + + +class Resampler(nn.Module): + def __init__( + self, + dim=1024, + depth=8, + dim_head=64, + heads=16, + num_queries=8, + embedding_dim=768, + output_dim=1024, + ff_mult=4, + ): + super().__init__() + + self.latents = nn.Parameter(torch.randn(1, num_queries, dim) / dim**0.5) + + self.proj_in = nn.Linear(embedding_dim, dim) + + self.proj_out = nn.Linear(dim, output_dim) + self.norm_out = nn.LayerNorm(output_dim) + + self.layers = nn.ModuleList([]) + for _ in range(depth): + self.layers.append( + nn.ModuleList( + [ + PerceiverAttention(dim=dim, dim_head=dim_head, heads=heads), + FeedForward(dim=dim, mult=ff_mult), + ] + ) + ) + + @classmethod + def from_state_dict(cls, state_dict: dict[torch.Tensor], depth=8, dim_head=64, heads=16, num_queries=8, ff_mult=4): + """A convenience function that initializes a Resampler from a state_dict. + + Some of the shape parameters are inferred from the state_dict (e.g. dim, embedding_dim, etc.). At the time of + writing, we did not have a need for inferring ALL of the shape parameters from the state_dict, but this would be + possible if needed in the future. + + Args: + state_dict (dict[torch.Tensor]): The state_dict to load. + depth (int, optional): + dim_head (int, optional): + heads (int, optional): + ff_mult (int, optional): + + Returns: + Resampler + """ + dim = state_dict["latents"].shape[2] + num_queries = state_dict["latents"].shape[1] + embedding_dim = state_dict["proj_in.weight"].shape[-1] + output_dim = state_dict["norm_out.weight"].shape[0] + + model = cls( + dim=dim, + depth=depth, + dim_head=dim_head, + heads=heads, + num_queries=num_queries, + embedding_dim=embedding_dim, + output_dim=output_dim, + ff_mult=ff_mult, + ) + model.load_state_dict(state_dict) + return model + + def forward(self, x): + latents = self.latents.repeat(x.size(0), 1, 1) + + x = self.proj_in(x) + + for attn, ff in self.layers: + latents = attn(x, latents) + latents + latents = ff(latents) + latents + + latents = self.proj_out(latents) + return self.norm_out(latents) diff --git a/invokeai/backend/model_management/model_manager.py b/invokeai/backend/model_management/model_manager.py index e39ed6bf61..7bb188cb4e 100644 --- a/invokeai/backend/model_management/model_manager.py +++ b/invokeai/backend/model_management/model_manager.py @@ -25,6 +25,7 @@ Models are described using four attributes: ModelType.Lora -- a LoRA or LyCORIS fine-tune ModelType.TextualInversion -- a textual inversion embedding ModelType.ControlNet -- a ControlNet model + ModelType.IPAdapter -- an IPAdapter model 3) BaseModelType -- an enum indicating the stable diffusion base model, one of: BaseModelType.StableDiffusion1 @@ -1000,8 +1001,8 @@ class ModelManager(object): new_models_found = True except DuplicateModelException as e: self.logger.warning(e) - except InvalidModelException: - self.logger.warning(f"Not a valid model: {model_path}") + except InvalidModelException as e: + self.logger.warning(f"Not a valid model: {model_path}. {e}") except NotImplementedError as e: self.logger.warning(e) diff --git a/invokeai/backend/model_management/model_probe.py b/invokeai/backend/model_management/model_probe.py index bf6f882428..358ba4f29d 100644 --- a/invokeai/backend/model_management/model_probe.py +++ b/invokeai/backend/model_management/model_probe.py @@ -8,6 +8,8 @@ import torch from diffusers import ConfigMixin, ModelMixin from picklescan.scanner import scan_file_path +from invokeai.backend.model_management.models.ip_adapter import IPAdapterModelFormat + from .models import ( BaseModelType, InvalidModelException, @@ -53,6 +55,7 @@ class ModelProbe(object): "AutoencoderKL": ModelType.Vae, "AutoencoderTiny": ModelType.Vae, "ControlNetModel": ModelType.ControlNet, + "CLIPVisionModelWithProjection": ModelType.CLIPVision, } @classmethod @@ -119,14 +122,18 @@ class ModelProbe(object): and prediction_type == SchedulerPredictionType.VPrediction ), format=format, - image_size=1024 - if (base_type in {BaseModelType.StableDiffusionXL, BaseModelType.StableDiffusionXLRefiner}) - else 768 - if ( - base_type == BaseModelType.StableDiffusion2 - and prediction_type == SchedulerPredictionType.VPrediction - ) - else 512, + image_size=( + 1024 + if (base_type in {BaseModelType.StableDiffusionXL, BaseModelType.StableDiffusionXLRefiner}) + else ( + 768 + if ( + base_type == BaseModelType.StableDiffusion2 + and prediction_type == SchedulerPredictionType.VPrediction + ) + else 512 + ) + ), ) except Exception: raise @@ -179,9 +186,10 @@ class ModelProbe(object): return ModelType.ONNX if (folder_path / "learned_embeds.bin").exists(): return ModelType.TextualInversion - if (folder_path / "pytorch_lora_weights.bin").exists(): return ModelType.Lora + if (folder_path / "image_encoder.txt").exists(): + return ModelType.IPAdapter i = folder_path / "model_index.json" c = folder_path / "config.json" @@ -190,7 +198,12 @@ class ModelProbe(object): if config_path: with open(config_path, "r") as file: conf = json.load(file) - class_name = conf["_class_name"] + if "_class_name" in conf: + class_name = conf["_class_name"] + elif "architectures" in conf: + class_name = conf["architectures"][0] + else: + class_name = None else: error_hint = f"No model_index.json or config.json found in {folder_path}." @@ -374,6 +387,16 @@ class ControlNetCheckpointProbe(CheckpointProbeBase): raise InvalidModelException("Unable to determine base type for {self.checkpoint_path}") +class IPAdapterCheckpointProbe(CheckpointProbeBase): + def get_base_type(self) -> BaseModelType: + raise NotImplementedError() + + +class CLIPVisionCheckpointProbe(CheckpointProbeBase): + def get_base_type(self) -> BaseModelType: + raise NotImplementedError() + + ######################################################## # classes for probing folders ####################################################### @@ -493,11 +516,13 @@ class ControlNetFolderProbe(FolderProbeBase): base_model = ( BaseModelType.StableDiffusion1 if dimension == 768 - else BaseModelType.StableDiffusion2 - if dimension == 1024 - else BaseModelType.StableDiffusionXL - if dimension == 2048 - else None + else ( + BaseModelType.StableDiffusion2 + if dimension == 1024 + else BaseModelType.StableDiffusionXL + if dimension == 2048 + else None + ) ) if not base_model: raise InvalidModelException(f"Unable to determine model base for {self.folder_path}") @@ -517,15 +542,47 @@ class LoRAFolderProbe(FolderProbeBase): return LoRACheckpointProbe(model_file, None).get_base_type() +class IPAdapterFolderProbe(FolderProbeBase): + def get_format(self) -> str: + return IPAdapterModelFormat.InvokeAI.value + + def get_base_type(self) -> BaseModelType: + model_file = self.folder_path / "ip_adapter.bin" + if not model_file.exists(): + raise InvalidModelException("Unknown IP-Adapter model format.") + + state_dict = torch.load(model_file, map_location="cpu") + cross_attention_dim = state_dict["ip_adapter"]["1.to_k_ip.weight"].shape[-1] + if cross_attention_dim == 768: + return BaseModelType.StableDiffusion1 + elif cross_attention_dim == 1024: + return BaseModelType.StableDiffusion2 + elif cross_attention_dim == 2048: + return BaseModelType.StableDiffusionXL + else: + raise InvalidModelException(f"IP-Adapter had unexpected cross-attention dimension: {cross_attention_dim}.") + + +class CLIPVisionFolderProbe(FolderProbeBase): + def get_base_type(self) -> BaseModelType: + return BaseModelType.Any + + ############## register probe classes ###### ModelProbe.register_probe("diffusers", ModelType.Main, PipelineFolderProbe) ModelProbe.register_probe("diffusers", ModelType.Vae, VaeFolderProbe) ModelProbe.register_probe("diffusers", ModelType.Lora, LoRAFolderProbe) ModelProbe.register_probe("diffusers", ModelType.TextualInversion, TextualInversionFolderProbe) ModelProbe.register_probe("diffusers", ModelType.ControlNet, ControlNetFolderProbe) +ModelProbe.register_probe("diffusers", ModelType.IPAdapter, IPAdapterFolderProbe) +ModelProbe.register_probe("diffusers", ModelType.CLIPVision, CLIPVisionFolderProbe) + ModelProbe.register_probe("checkpoint", ModelType.Main, PipelineCheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.Vae, VaeCheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.Lora, LoRACheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.TextualInversion, TextualInversionCheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.ControlNet, ControlNetCheckpointProbe) +ModelProbe.register_probe("checkpoint", ModelType.IPAdapter, IPAdapterCheckpointProbe) +ModelProbe.register_probe("checkpoint", ModelType.CLIPVision, CLIPVisionCheckpointProbe) + ModelProbe.register_probe("onnx", ModelType.ONNX, ONNXFolderProbe) diff --git a/invokeai/backend/model_management/model_search.py b/invokeai/backend/model_management/model_search.py index f4dd8b7739..3cded73d80 100644 --- a/invokeai/backend/model_management/model_search.py +++ b/invokeai/backend/model_management/model_search.py @@ -79,7 +79,7 @@ class ModelSearch(ABC): self._models_found += 1 self._scanned_dirs.add(path) except Exception as e: - self.logger.warning(str(e)) + self.logger.warning(f"Failed to process '{path}': {e}") for f in files: path = Path(root) / f @@ -90,7 +90,7 @@ class ModelSearch(ABC): self.on_model_found(path) self._models_found += 1 except Exception as e: - self.logger.warning(str(e)) + self.logger.warning(f"Failed to process '{path}': {e}") class FindModels(ModelSearch): diff --git a/invokeai/backend/model_management/models/__init__.py b/invokeai/backend/model_management/models/__init__.py index 695e9b0ec0..d361301554 100644 --- a/invokeai/backend/model_management/models/__init__.py +++ b/invokeai/backend/model_management/models/__init__.py @@ -18,7 +18,9 @@ from .base import ( # noqa: F401 SilenceWarnings, SubModelType, ) +from .clip_vision import CLIPVisionModel from .controlnet import ControlNetModel # TODO: +from .ip_adapter import IPAdapterModel from .lora import LoRAModel from .sdxl import StableDiffusionXLModel from .stable_diffusion import StableDiffusion1Model, StableDiffusion2Model @@ -34,6 +36,8 @@ MODEL_CLASSES = { ModelType.Lora: LoRAModel, ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, }, BaseModelType.StableDiffusion2: { ModelType.ONNX: ONNXStableDiffusion2Model, @@ -42,6 +46,8 @@ MODEL_CLASSES = { ModelType.Lora: LoRAModel, ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, }, BaseModelType.StableDiffusionXL: { ModelType.Main: StableDiffusionXLModel, @@ -51,6 +57,8 @@ MODEL_CLASSES = { ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, ModelType.ONNX: ONNXStableDiffusion2Model, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, }, BaseModelType.StableDiffusionXLRefiner: { ModelType.Main: StableDiffusionXLModel, @@ -60,6 +68,19 @@ MODEL_CLASSES = { ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, ModelType.ONNX: ONNXStableDiffusion2Model, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, + }, + BaseModelType.Any: { + ModelType.CLIPVision: CLIPVisionModel, + # The following model types are not expected to be used with BaseModelType.Any. + ModelType.ONNX: ONNXStableDiffusion2Model, + ModelType.Main: StableDiffusion2Model, + ModelType.Vae: VaeModel, + ModelType.Lora: LoRAModel, + ModelType.ControlNet: ControlNetModel, + ModelType.TextualInversion: TextualInversionModel, + ModelType.IPAdapter: IPAdapterModel, }, # BaseModelType.Kandinsky2_1: { # ModelType.Main: Kandinsky2_1Model, diff --git a/invokeai/backend/model_management/models/base.py b/invokeai/backend/model_management/models/base.py index d704c56103..45b018af90 100644 --- a/invokeai/backend/model_management/models/base.py +++ b/invokeai/backend/model_management/models/base.py @@ -36,6 +36,7 @@ class ModelNotFoundException(Exception): class BaseModelType(str, Enum): + Any = "any" # For models that are not associated with any particular base model. StableDiffusion1 = "sd-1" StableDiffusion2 = "sd-2" StableDiffusionXL = "sdxl" @@ -50,6 +51,8 @@ class ModelType(str, Enum): Lora = "lora" ControlNet = "controlnet" # used by model_probe TextualInversion = "embedding" + IPAdapter = "ip_adapter" + CLIPVision = "clip_vision" class SubModelType(str, Enum): diff --git a/invokeai/backend/model_management/models/clip_vision.py b/invokeai/backend/model_management/models/clip_vision.py new file mode 100644 index 0000000000..2276c6beed --- /dev/null +++ b/invokeai/backend/model_management/models/clip_vision.py @@ -0,0 +1,82 @@ +import os +from enum import Enum +from typing import Literal, Optional + +import torch +from transformers import CLIPVisionModelWithProjection + +from invokeai.backend.model_management.models.base import ( + BaseModelType, + InvalidModelException, + ModelBase, + ModelConfigBase, + ModelType, + SubModelType, + calc_model_size_by_data, + calc_model_size_by_fs, + classproperty, +) + + +class CLIPVisionModelFormat(str, Enum): + Diffusers = "diffusers" + + +class CLIPVisionModel(ModelBase): + class DiffusersConfig(ModelConfigBase): + model_format: Literal[CLIPVisionModelFormat.Diffusers] + + def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): + assert model_type == ModelType.CLIPVision + super().__init__(model_path, base_model, model_type) + + self.model_size = calc_model_size_by_fs(self.model_path) + + @classmethod + def detect_format(cls, path: str) -> str: + if not os.path.exists(path): + raise ModuleNotFoundError(f"No CLIP Vision model at path '{path}'.") + + if os.path.isdir(path) and os.path.exists(os.path.join(path, "config.json")): + return CLIPVisionModelFormat.Diffusers + + raise InvalidModelException(f"Unexpected CLIP Vision model format: {path}") + + @classproperty + def save_to_config(cls) -> bool: + return True + + def get_size(self, child_type: Optional[SubModelType] = None) -> int: + if child_type is not None: + raise ValueError("There are no child models in a CLIP Vision model.") + + return self.model_size + + def get_model( + self, + torch_dtype: Optional[torch.dtype], + child_type: Optional[SubModelType] = None, + ) -> CLIPVisionModelWithProjection: + if child_type is not None: + raise ValueError("There are no child models in a CLIP Vision model.") + + model = CLIPVisionModelWithProjection.from_pretrained(self.model_path, torch_dtype=torch_dtype) + + # Calculate a more accurate model size. + self.model_size = calc_model_size_by_data(model) + + return model + + @classmethod + def convert_if_required( + cls, + model_path: str, + output_path: str, + config: ModelConfigBase, + base_model: BaseModelType, + ) -> str: + format = cls.detect_format(model_path) + if format == CLIPVisionModelFormat.Diffusers: + return model_path + else: + raise ValueError(f"Unsupported format: '{format}'.") diff --git a/invokeai/backend/model_management/models/ip_adapter.py b/invokeai/backend/model_management/models/ip_adapter.py new file mode 100644 index 0000000000..8e1e97c9e0 --- /dev/null +++ b/invokeai/backend/model_management/models/ip_adapter.py @@ -0,0 +1,92 @@ +import os +import typing +from enum import Enum +from typing import Literal, Optional + +import torch + +from invokeai.backend.ip_adapter.ip_adapter import IPAdapter, IPAdapterPlus, build_ip_adapter +from invokeai.backend.model_management.models.base import ( + BaseModelType, + InvalidModelException, + ModelBase, + ModelConfigBase, + ModelType, + SubModelType, + classproperty, +) + + +class IPAdapterModelFormat(str, Enum): + # The custom IP-Adapter model format defined by InvokeAI. + InvokeAI = "invokeai" + + +class IPAdapterModel(ModelBase): + class InvokeAIConfig(ModelConfigBase): + model_format: Literal[IPAdapterModelFormat.InvokeAI] + + def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): + assert model_type == ModelType.IPAdapter + super().__init__(model_path, base_model, model_type) + + self.model_size = os.path.getsize(self.model_path) + + @classmethod + def detect_format(cls, path: str) -> str: + if not os.path.exists(path): + raise ModuleNotFoundError(f"No IP-Adapter model at path '{path}'.") + + if os.path.isdir(path): + model_file = os.path.join(path, "ip_adapter.bin") + image_encoder_config_file = os.path.join(path, "image_encoder.txt") + if os.path.exists(model_file) and os.path.exists(image_encoder_config_file): + return IPAdapterModelFormat.InvokeAI + + raise InvalidModelException(f"Unexpected IP-Adapter model format: {path}") + + @classproperty + def save_to_config(cls) -> bool: + return True + + def get_size(self, child_type: Optional[SubModelType] = None) -> int: + if child_type is not None: + raise ValueError("There are no child models in an IP-Adapter model.") + + return self.model_size + + def get_model( + self, + torch_dtype: Optional[torch.dtype], + child_type: Optional[SubModelType] = None, + ) -> typing.Union[IPAdapter, IPAdapterPlus]: + if child_type is not None: + raise ValueError("There are no child models in an IP-Adapter model.") + + return build_ip_adapter( + ip_adapter_ckpt_path=os.path.join(self.model_path, "ip_adapter.bin"), device="cpu", dtype=torch_dtype + ) + + @classmethod + def convert_if_required( + cls, + model_path: str, + output_path: str, + config: ModelConfigBase, + base_model: BaseModelType, + ) -> str: + format = cls.detect_format(model_path) + if format == IPAdapterModelFormat.InvokeAI: + return model_path + else: + raise ValueError(f"Unsupported format: '{format}'.") + + +def get_ip_adapter_image_encoder_model_id(model_path: str): + """Read the ID of the image encoder associated with the IP-Adapter at `model_path`.""" + image_encoder_config_file = os.path.join(model_path, "image_encoder.txt") + + with open(image_encoder_config_file, "r") as f: + image_encoder_model = f.readline().strip() + + return image_encoder_model diff --git a/invokeai/backend/stable_diffusion/__init__.py b/invokeai/backend/stable_diffusion/__init__.py index 9e2b49bf09..212045f81b 100644 --- a/invokeai/backend/stable_diffusion/__init__.py +++ b/invokeai/backend/stable_diffusion/__init__.py @@ -1,15 +1,6 @@ """ Initialization file for the invokeai.backend.stable_diffusion package """ -from .diffusers_pipeline import ( # noqa: F401 - ConditioningData, - PipelineIntermediateState, - StableDiffusionGeneratorPipeline, -) +from .diffusers_pipeline import PipelineIntermediateState, StableDiffusionGeneratorPipeline # noqa: F401 from .diffusion import InvokeAIDiffuserComponent # noqa: F401 from .diffusion.cross_attention_map_saving import AttentionMapSaver # noqa: F401 -from .diffusion.shared_invokeai_diffusion import ( # noqa: F401 - BasicConditioningInfo, - PostprocessingSettings, - SDXLConditioningInfo, -) diff --git a/invokeai/backend/stable_diffusion/diffusers_pipeline.py b/invokeai/backend/stable_diffusion/diffusers_pipeline.py index fc4442c2d6..150481747a 100644 --- a/invokeai/backend/stable_diffusion/diffusers_pipeline.py +++ b/invokeai/backend/stable_diffusion/diffusers_pipeline.py @@ -1,8 +1,8 @@ from __future__ import annotations -import dataclasses -import inspect -from dataclasses import dataclass, field +import math +from contextlib import nullcontext +from dataclasses import dataclass from typing import Any, Callable, List, Optional, Union import einops @@ -23,9 +23,11 @@ from pydantic import Field from transformers import CLIPFeatureExtractor, CLIPTextModel, CLIPTokenizer from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.backend.ip_adapter.ip_adapter import IPAdapter +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningData from ..util import auto_detect_slice_size, normalize_device -from .diffusion import AttentionMapSaver, BasicConditioningInfo, InvokeAIDiffuserComponent, PostprocessingSettings +from .diffusion import AttentionMapSaver, InvokeAIDiffuserComponent @dataclass @@ -95,7 +97,7 @@ class AddsMaskGuidance: # Mask anything that has the same shape as prev_sample, return others as-is. return output_class( { - k: (self.apply_mask(v, self._t_for_field(k, t)) if are_like_tensors(prev_sample, v) else v) + k: self.apply_mask(v, self._t_for_field(k, t)) if are_like_tensors(prev_sample, v) else v for k, v in step_output.items() } ) @@ -162,39 +164,13 @@ class ControlNetData: @dataclass -class ConditioningData: - unconditioned_embeddings: BasicConditioningInfo - text_embeddings: BasicConditioningInfo - guidance_scale: Union[float, List[float]] - """ - Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598). - `guidance_scale` is defined as `w` of equation 2. of [Imagen Paper](https://arxiv.org/pdf/2205.11487.pdf). - Guidance scale is enabled by setting `guidance_scale > 1`. Higher guidance scale encourages to generate - images that are closely linked to the text `prompt`, usually at the expense of lower image quality. - """ - extra: Optional[InvokeAIDiffuserComponent.ExtraConditioningInfo] = None - scheduler_args: dict[str, Any] = field(default_factory=dict) - """ - Additional arguments to pass to invokeai_diffuser.do_latent_postprocessing(). - """ - postprocessing_settings: Optional[PostprocessingSettings] = None - - @property - def dtype(self): - return self.text_embeddings.dtype - - def add_scheduler_args_if_applicable(self, scheduler, **kwargs): - scheduler_args = dict(self.scheduler_args) - step_method = inspect.signature(scheduler.step) - for name, value in kwargs.items(): - try: - step_method.bind_partial(**{name: value}) - except TypeError: - # FIXME: don't silently discard arguments - pass # debug("%s does not accept argument named %r", scheduler, name) - else: - scheduler_args[name] = value - return dataclasses.replace(self, scheduler_args=scheduler_args) +class IPAdapterData: + ip_adapter_model: IPAdapter = Field(default=None) + # TODO: change to polymorphic so can do different weights per step (once implemented...) + weight: Union[float, List[float]] = Field(default=1.0) + # weight: float = Field(default=1.0) + begin_step_percent: float = Field(default=0.0) + end_step_percent: float = Field(default=1.0) @dataclass @@ -277,6 +253,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): ) self.invokeai_diffuser = InvokeAIDiffuserComponent(self.unet, self._unet_forward) self.control_model = control_model + self.use_ip_adapter = False def _adjust_memory_efficient_attention(self, latents: torch.Tensor): """ @@ -349,6 +326,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): additional_guidance: List[Callable] = None, callback: Callable[[PipelineIntermediateState], None] = None, control_data: List[ControlNetData] = None, + ip_adapter_data: Optional[IPAdapterData] = None, mask: Optional[torch.Tensor] = None, masked_latents: Optional[torch.Tensor] = None, seed: Optional[int] = None, @@ -400,6 +378,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): conditioning_data, additional_guidance=additional_guidance, control_data=control_data, + ip_adapter_data=ip_adapter_data, callback=callback, ) finally: @@ -419,6 +398,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): *, additional_guidance: List[Callable] = None, control_data: List[ControlNetData] = None, + ip_adapter_data: Optional[IPAdapterData] = None, callback: Callable[[PipelineIntermediateState], None] = None, ): self._adjust_memory_efficient_attention(latents) @@ -431,12 +411,26 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): if timesteps.shape[0] == 0: return latents, attention_map_saver - extra_conditioning_info = conditioning_data.extra - with self.invokeai_diffuser.custom_attention_context( - self.invokeai_diffuser.model, - extra_conditioning_info=extra_conditioning_info, - step_count=len(self.scheduler.timesteps), - ): + if conditioning_data.extra is not None and conditioning_data.extra.wants_cross_attention_control: + attn_ctx = self.invokeai_diffuser.custom_attention_context( + self.invokeai_diffuser.model, + extra_conditioning_info=conditioning_data.extra, + step_count=len(self.scheduler.timesteps), + ) + self.use_ip_adapter = False + elif ip_adapter_data is not None: + # TODO(ryand): Should we raise an exception if both custom attention and IP-Adapter attention are active? + # As it is now, the IP-Adapter will silently be skipped. + weight = ip_adapter_data.weight[0] if isinstance(ip_adapter_data.weight, List) else ip_adapter_data.weight + attn_ctx = ip_adapter_data.ip_adapter_model.apply_ip_adapter_attention( + unet=self.invokeai_diffuser.model, + scale=weight, + ) + self.use_ip_adapter = True + else: + attn_ctx = nullcontext() + + with attn_ctx: if callback is not None: callback( PipelineIntermediateState( @@ -459,6 +453,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): total_step_count=len(timesteps), additional_guidance=additional_guidance, control_data=control_data, + ip_adapter_data=ip_adapter_data, ) latents = step_output.prev_sample @@ -504,6 +499,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): total_step_count: int, additional_guidance: List[Callable] = None, control_data: List[ControlNetData] = None, + ip_adapter_data: Optional[IPAdapterData] = None, ): # invokeai_diffuser has batched timesteps, but diffusers schedulers expect a single value timestep = t[0] @@ -514,6 +510,24 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): # i.e. before or after passing it to InvokeAIDiffuserComponent latent_model_input = self.scheduler.scale_model_input(latents, timestep) + # handle IP-Adapter + if self.use_ip_adapter and ip_adapter_data is not None: # somewhat redundant but logic is clearer + first_adapter_step = math.floor(ip_adapter_data.begin_step_percent * total_step_count) + last_adapter_step = math.ceil(ip_adapter_data.end_step_percent * total_step_count) + weight = ( + ip_adapter_data.weight[step_index] + if isinstance(ip_adapter_data.weight, List) + else ip_adapter_data.weight + ) + if step_index >= first_adapter_step and step_index <= last_adapter_step: + # only apply IP-Adapter if current step is within the IP-Adapter's begin/end step range + # ip_adapter_data.ip_adapter_model.set_scale(ip_adapter_data.weight) + ip_adapter_data.ip_adapter_model.set_scale(weight) + else: + # otherwise, set IP-Adapter scale to 0, so it has no effect + ip_adapter_data.ip_adapter_model.set_scale(0.0) + + # handle ControlNet(s) # default is no controlnet, so set controlnet processing output to None controlnet_down_block_samples, controlnet_mid_block_sample = None, None if control_data is not None: diff --git a/invokeai/backend/stable_diffusion/diffusion/__init__.py b/invokeai/backend/stable_diffusion/diffusion/__init__.py index 137e32cff5..00e6f1b916 100644 --- a/invokeai/backend/stable_diffusion/diffusion/__init__.py +++ b/invokeai/backend/stable_diffusion/diffusion/__init__.py @@ -3,9 +3,4 @@ Initialization file for invokeai.models.diffusion """ from .cross_attention_control import InvokeAICrossAttentionMixin # noqa: F401 from .cross_attention_map_saving import AttentionMapSaver # noqa: F401 -from .shared_invokeai_diffusion import ( # noqa: F401 - BasicConditioningInfo, - InvokeAIDiffuserComponent, - PostprocessingSettings, - SDXLConditioningInfo, -) +from .shared_invokeai_diffusion import InvokeAIDiffuserComponent # noqa: F401 diff --git a/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py b/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py new file mode 100644 index 0000000000..a8398e58ff --- /dev/null +++ b/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py @@ -0,0 +1,101 @@ +import dataclasses +import inspect +from dataclasses import dataclass, field +from typing import Any, List, Optional, Union + +import torch + +from .cross_attention_control import Arguments + + +@dataclass +class ExtraConditioningInfo: + tokens_count_including_eos_bos: int + cross_attention_control_args: Optional[Arguments] = None + + @property + def wants_cross_attention_control(self): + return self.cross_attention_control_args is not None + + +@dataclass +class BasicConditioningInfo: + embeds: torch.Tensor + # TODO(ryand): Right now we awkwardly copy the extra conditioning info from here up to `ConditioningData`. This + # should only be stored in one place. + extra_conditioning: Optional[ExtraConditioningInfo] + # weight: float + # mode: ConditioningAlgo + + def to(self, device, dtype=None): + self.embeds = self.embeds.to(device=device, dtype=dtype) + return self + + +@dataclass +class SDXLConditioningInfo(BasicConditioningInfo): + pooled_embeds: torch.Tensor + add_time_ids: torch.Tensor + + def to(self, device, dtype=None): + self.pooled_embeds = self.pooled_embeds.to(device=device, dtype=dtype) + self.add_time_ids = self.add_time_ids.to(device=device, dtype=dtype) + return super().to(device=device, dtype=dtype) + + +@dataclass(frozen=True) +class PostprocessingSettings: + threshold: float + warmup: float + h_symmetry_time_pct: Optional[float] + v_symmetry_time_pct: Optional[float] + + +@dataclass +class IPAdapterConditioningInfo: + cond_image_prompt_embeds: torch.Tensor + """IP-Adapter image encoder conditioning embeddings. + Shape: (batch_size, num_tokens, encoding_dim). + """ + uncond_image_prompt_embeds: torch.Tensor + """IP-Adapter image encoding embeddings to use for unconditional generation. + Shape: (batch_size, num_tokens, encoding_dim). + """ + + +@dataclass +class ConditioningData: + unconditioned_embeddings: BasicConditioningInfo + text_embeddings: BasicConditioningInfo + guidance_scale: Union[float, List[float]] + """ + Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598). + `guidance_scale` is defined as `w` of equation 2. of [Imagen Paper](https://arxiv.org/pdf/2205.11487.pdf). + Guidance scale is enabled by setting `guidance_scale > 1`. Higher guidance scale encourages to generate + images that are closely linked to the text `prompt`, usually at the expense of lower image quality. + """ + extra: Optional[ExtraConditioningInfo] = None + scheduler_args: dict[str, Any] = field(default_factory=dict) + """ + Additional arguments to pass to invokeai_diffuser.do_latent_postprocessing(). + """ + postprocessing_settings: Optional[PostprocessingSettings] = None + + ip_adapter_conditioning: Optional[IPAdapterConditioningInfo] = None + + @property + def dtype(self): + return self.text_embeddings.dtype + + def add_scheduler_args_if_applicable(self, scheduler, **kwargs): + scheduler_args = dict(self.scheduler_args) + step_method = inspect.signature(scheduler.step) + for name, value in kwargs.items(): + try: + step_method.bind_partial(**{name: value}) + except TypeError: + # FIXME: don't silently discard arguments + pass # debug("%s does not accept argument named %r", scheduler, name) + else: + scheduler_args[name] = value + return dataclasses.replace(self, scheduler_args=scheduler_args) diff --git a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py index 03b438525f..3cb1862004 100644 --- a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py +++ b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py @@ -376,11 +376,11 @@ def get_cross_attention_modules(model, which: CrossAttentionType) -> list[tuple[ # non-fatal error but .swap() won't work. logger.error( f"Error! CrossAttentionControl found an unexpected number of {cross_attention_class} modules in the model " - + f"(expected {expected_count}, found {cross_attention_modules_in_model_count}). Either monkey-patching failed " - + "or some assumption has changed about the structure of the model itself. Please fix the monkey-patching, " - + f"and/or update the {expected_count} above to an appropriate number, and/or find and inform someone who knows " - + "what it means. This error is non-fatal, but it is likely that .swap() and attention map display will not " - + "work properly until it is fixed." + f"(expected {expected_count}, found {cross_attention_modules_in_model_count}). Either monkey-patching " + "failed or some assumption has changed about the structure of the model itself. Please fix the " + f"monkey-patching, and/or update the {expected_count} above to an appropriate number, and/or find and " + "inform someone who knows what it means. This error is non-fatal, but it is likely that .swap() and " + "attention map display will not work properly until it is fixed." ) return attention_module_tuples @@ -577,6 +577,7 @@ class SlicedSwapCrossAttnProcesser(SlicedAttnProcessor): attention_mask=None, # kwargs swap_cross_attn_context: SwapCrossAttnContext = None, + **kwargs, ): attention_type = CrossAttentionType.SELF if encoder_hidden_states is None else CrossAttentionType.TOKENS diff --git a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py index 6fe53fd002..125e62a2e8 100644 --- a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +++ b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py @@ -2,7 +2,6 @@ from __future__ import annotations import math from contextlib import contextmanager -from dataclasses import dataclass from typing import Any, Callable, Optional, Union import torch @@ -10,9 +9,14 @@ from diffusers import UNet2DConditionModel from typing_extensions import TypeAlias from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ( + ConditioningData, + ExtraConditioningInfo, + PostprocessingSettings, + SDXLConditioningInfo, +) from .cross_attention_control import ( - Arguments, Context, CrossAttentionType, SwapCrossAttnContext, @@ -31,37 +35,6 @@ ModelForwardCallback: TypeAlias = Union[ ] -@dataclass -class BasicConditioningInfo: - embeds: torch.Tensor - extra_conditioning: Optional[InvokeAIDiffuserComponent.ExtraConditioningInfo] - # weight: float - # mode: ConditioningAlgo - - def to(self, device, dtype=None): - self.embeds = self.embeds.to(device=device, dtype=dtype) - return self - - -@dataclass -class SDXLConditioningInfo(BasicConditioningInfo): - pooled_embeds: torch.Tensor - add_time_ids: torch.Tensor - - def to(self, device, dtype=None): - self.pooled_embeds = self.pooled_embeds.to(device=device, dtype=dtype) - self.add_time_ids = self.add_time_ids.to(device=device, dtype=dtype) - return super().to(device=device, dtype=dtype) - - -@dataclass(frozen=True) -class PostprocessingSettings: - threshold: float - warmup: float - h_symmetry_time_pct: Optional[float] - v_symmetry_time_pct: Optional[float] - - class InvokeAIDiffuserComponent: """ The aim of this component is to provide a single place for code that can be applied identically to @@ -75,15 +48,6 @@ class InvokeAIDiffuserComponent: debug_thresholding = False sequential_guidance = False - @dataclass - class ExtraConditioningInfo: - tokens_count_including_eos_bos: int - cross_attention_control_args: Optional[Arguments] = None - - @property - def wants_cross_attention_control(self): - return self.cross_attention_control_args is not None - def __init__( self, model, @@ -103,30 +67,26 @@ class InvokeAIDiffuserComponent: @contextmanager def custom_attention_context( self, - unet: UNet2DConditionModel, # note: also may futz with the text encoder depending on requested LoRAs + unet: UNet2DConditionModel, extra_conditioning_info: Optional[ExtraConditioningInfo], step_count: int, ): - old_attn_processors = None - if extra_conditioning_info and (extra_conditioning_info.wants_cross_attention_control): - old_attn_processors = unet.attn_processors - # Load lora conditions into the model - if extra_conditioning_info.wants_cross_attention_control: - self.cross_attention_control_context = Context( - arguments=extra_conditioning_info.cross_attention_control_args, - step_count=step_count, - ) - setup_cross_attention_control_attention_processors( - unet, - self.cross_attention_control_context, - ) + old_attn_processors = unet.attn_processors try: + self.cross_attention_control_context = Context( + arguments=extra_conditioning_info.cross_attention_control_args, + step_count=step_count, + ) + setup_cross_attention_control_attention_processors( + unet, + self.cross_attention_control_context, + ) + yield None finally: self.cross_attention_control_context = None - if old_attn_processors is not None: - unet.set_attn_processor(old_attn_processors) + unet.set_attn_processor(old_attn_processors) # TODO resuscitate attention map saving # self.remove_attention_map_saving() @@ -376,11 +336,24 @@ class InvokeAIDiffuserComponent: # methods below are called from do_diffusion_step and should be considered private to this class. - def _apply_standard_conditioning(self, x, sigma, conditioning_data, **kwargs): - # fast batched path + def _apply_standard_conditioning(self, x, sigma, conditioning_data: ConditioningData, **kwargs): + """Runs the conditioned and unconditioned UNet forward passes in a single batch for faster inference speed at + the cost of higher memory usage. + """ x_twice = torch.cat([x] * 2) sigma_twice = torch.cat([sigma] * 2) + cross_attention_kwargs = None + if conditioning_data.ip_adapter_conditioning is not None: + cross_attention_kwargs = { + "ip_adapter_image_prompt_embeds": torch.cat( + [ + conditioning_data.ip_adapter_conditioning.uncond_image_prompt_embeds, + conditioning_data.ip_adapter_conditioning.cond_image_prompt_embeds, + ] + ) + } + added_cond_kwargs = None if type(conditioning_data.text_embeddings) is SDXLConditioningInfo: added_cond_kwargs = { @@ -408,6 +381,7 @@ class InvokeAIDiffuserComponent: x_twice, sigma_twice, both_conditionings, + cross_attention_kwargs=cross_attention_kwargs, encoder_attention_mask=encoder_attention_mask, added_cond_kwargs=added_cond_kwargs, **kwargs, @@ -419,9 +393,12 @@ class InvokeAIDiffuserComponent: self, x: torch.Tensor, sigma, - conditioning_data, + conditioning_data: ConditioningData, **kwargs, ): + """Runs the conditioned and unconditioned UNet forward passes sequentially for lower memory usage at the cost of + slower execution speed. + """ # low-memory sequential path uncond_down_block, cond_down_block = None, None down_block_additional_residuals = kwargs.pop("down_block_additional_residuals", None) @@ -437,6 +414,13 @@ class InvokeAIDiffuserComponent: if mid_block_additional_residual is not None: uncond_mid_block, cond_mid_block = mid_block_additional_residual.chunk(2) + # Run unconditional UNet denoising. + cross_attention_kwargs = None + if conditioning_data.ip_adapter_conditioning is not None: + cross_attention_kwargs = { + "ip_adapter_image_prompt_embeds": conditioning_data.ip_adapter_conditioning.uncond_image_prompt_embeds + } + added_cond_kwargs = None is_sdxl = type(conditioning_data.text_embeddings) is SDXLConditioningInfo if is_sdxl: @@ -449,12 +433,21 @@ class InvokeAIDiffuserComponent: x, sigma, conditioning_data.unconditioned_embeddings.embeds, + cross_attention_kwargs=cross_attention_kwargs, down_block_additional_residuals=uncond_down_block, mid_block_additional_residual=uncond_mid_block, added_cond_kwargs=added_cond_kwargs, **kwargs, ) + # Run conditional UNet denoising. + cross_attention_kwargs = None + if conditioning_data.ip_adapter_conditioning is not None: + cross_attention_kwargs = { + "ip_adapter_image_prompt_embeds": conditioning_data.ip_adapter_conditioning.cond_image_prompt_embeds + } + + added_cond_kwargs = None if is_sdxl: added_cond_kwargs = { "text_embeds": conditioning_data.text_embeddings.pooled_embeds, @@ -465,6 +458,7 @@ class InvokeAIDiffuserComponent: x, sigma, conditioning_data.text_embeddings.embeds, + cross_attention_kwargs=cross_attention_kwargs, down_block_additional_residuals=cond_down_block, mid_block_additional_residual=cond_mid_block, added_cond_kwargs=added_cond_kwargs, diff --git a/invokeai/frontend/install/import_images.py b/invokeai/frontend/install/import_images.py index e3f9ea84f3..ec90700bd0 100644 --- a/invokeai/frontend/install/import_images.py +++ b/invokeai/frontend/install/import_images.py @@ -14,7 +14,6 @@ import os import re import shutil import sqlite3 -import uuid from pathlib import Path import PIL @@ -27,6 +26,7 @@ from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.shortcuts import message_dialog from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.app.util.misc import uuid_string app_config = InvokeAIAppConfig.get_config() @@ -421,7 +421,7 @@ VALUES ('{filename}', 'internal', 'general', {width}, {height}, null, null, '{me return rows[0][0] else: board_date_string = datetime.datetime.utcnow().date().isoformat() - new_board_id = str(uuid.uuid4()) + new_board_id = uuid_string() sql_insert_board = f"INSERT INTO boards (board_id, board_name, created_at, updated_at) VALUES ('{new_board_id}', '{board_name}', '{board_date_string}', '{board_date_string}')" self.cursor.execute(sql_insert_board) self.connection.commit() diff --git a/invokeai/frontend/web/dist/assets/App-d1567775.js b/invokeai/frontend/web/dist/assets/App-d1567775.js deleted file mode 100644 index 403126f699..0000000000 --- a/invokeai/frontend/web/dist/assets/App-d1567775.js +++ /dev/null @@ -1,169 +0,0 @@ -var H0=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var Se=(e,t,n)=>(H0(e,t,"read from private field"),n?n.call(e):t.get(e)),Jt=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},Jr=(e,t,n,r)=>(H0(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var vu=(e,t,n,r)=>({set _(o){Jr(e,t,o,n)},get _(){return Se(e,t,r)}}),os=(e,t,n)=>(H0(e,t,"access private method"),n);import{a as gd,b as bj,S as yj,c as Cj,d as wj,e as Jv,f as Sj,i as e1,g as l7,k as c7,h as DC,j as kj,t as u7,l as d7,m as f7,n as p7,o as h7,p as m7,q as g7,r as W0,s as v7,u as d,v as a,w as Dx,x as Bp,y as x7,z as b7,A as y7,B as C7,P as w7,C as Rx,D as S7,E as k7,F as _7,G as j7,H as _j,I as Pe,J as P7,K as _e,L as et,M as Fe,N as vd,O as nr,Q as gn,R as Hn,T as Xt,U as Ki,V as Qa,W as at,X as co,Y as Xl,Z as aa,_ as cm,$ as Ax,a0 as Oc,a1 as nn,a2 as I7,a3 as H,a4 as RC,a5 as E7,a6 as jj,a7 as t1,a8 as xd,a9 as M7,aa as Pj,ab as Ij,ac as ds,ad as O7,ae,af as Ce,ag as kt,ah as F,ai as D7,aj as AC,ak as R7,al as A7,am as N7,an as Dc,ao as te,ap as T7,aq as Nt,ar as zt,as as Ie,at as T,au as oo,av as xe,aw as wn,ax as Ej,ay as $7,az as L7,aA as z7,aB as F7,aC as so,aD as Nx,aE as ia,aF as Ir,aG as um,aH as B7,aI as H7,aJ as NC,aK as Tx,aL as be,aM as Ro,aN as W7,aO as Mj,aP as Oj,aQ as TC,aR as V7,aS as U7,aT as G7,aU as qi,aV as Dj,aW as bn,aX as K7,aY as q7,aZ as X7,a_ as Rj,a$ as rr,b0 as dm,b1 as Y7,b2 as $C,b3 as Aj,b4 as Q7,b5 as Z7,b6 as J7,b7 as eD,b8 as tD,b9 as nD,ba as rD,bb as oD,bc as Nj,bd as sD,be as aD,bf as iD,bg as lD,bh as cD,bi as zr,bj as uD,bk as dD,bl as fD,bm as LC,bn as pD,bo as hD,bp as Fa,bq as fm,br as Tj,bs as $j,bt as po,bu as Lj,bv as mD,bw as Ri,bx as Eu,by as zC,bz as gD,bA as vD,bB as xD,bC as Hf,bD as Wf,bE as xu,bF as V0,bG as $u,bH as Lu,bI as zu,bJ as Fu,bK as FC,bL as Hp,bM as U0,bN as Wp,bO as BC,bP as n1,bQ as G0,bR as r1,bS as K0,bT as Vp,bU as HC,bV as Ai,bW as WC,bX as Ni,bY as VC,bZ as Up,b_ as pm,b$ as bD,c0 as zj,c1 as o1,c2 as s1,c3 as Fj,c4 as yD,c5 as a1,c6 as CD,c7 as i1,c8 as wD,c9 as l1,ca as $x,cb as Lx,cc as zx,cd as Fx,ce as hm,cf as Bx,cg as Bj,ch as Ra,ci as Hj,cj as Hx,ck as Wj,cl as SD,cm as bu,cn as Ti,co as Vj,cp as Uj,cq as UC,cr as kD,cs as _D,ct as jD,cu as Cn,cv as PD,cw as Fn,cx as bd,cy as mm,cz as ID,cA as ED,cB as MD,cC as OD,cD as DD,cE as RD,cF as AD,cG as ND,cH as TD,cI as $D,cJ as GC,cK as Wx,cL as LD,cM as zD,cN as yd,cO as FD,cP as BD,cQ as gm,cR as HD,cS as WD,cT as VD,cU as Vx,cV as UD,cW as mn,cX as GD,cY as KD,cZ as qD,c_ as vm,c$ as XD,d0 as YD,d1 as QD,d2 as Xu,d3 as KC,d4 as Bo,d5 as Gj,d6 as ZD,d7 as Ux,d8 as JD,d9 as qC,da as eR,db as tR,dc as nR,dd as Kj,de as rR,df as qj,dg as oR,dh as sR,di as aR,dj as iR,dk as lR,dl as cR,dm as uR,dn as dR,dp as Xj,dq as Yj,dr as fR,ds as pR,dt as hR,du as mR,dv as gR,dw as Ao,dx as vR,dy as go,dz as xR,dA as bR,dB as yR,dC as CR,dD as wR,dE as SR,dF as kR,dG as _R,dH as jR,dI as PR,dJ as IR,dK as ER,dL as MR,dM as OR,dN as DR,dO as RR,dP as XC,dQ as AR,dR as YC,dS as NR,dT as TR,dU as $R,dV as LR,dW as zR,dX as FR,dY as QC,dZ as ZC,d_ as JC,d$ as Gx,e0 as BR,e1 as Mo,e2 as Yu,e3 as fr,e4 as HR,e5 as WR,e6 as Qj,e7 as Zj,e8 as VR,e9 as ew,ea as UR,eb as tw,ec as nw,ed as rw,ee as GR,ef as KR,eg as ow,eh as sw,ei as qR,ej as XR,ek as Gp,el as YR,em as aw,en as Vf,eo as iw,ep as lw,eq as QR,er as ZR,es as JR,et as Jj,eu as eA,ev as tA,ew as cw,ex as nA,ey as uw,ez as rA,eA as e3,eB as t3,eC as Cd,eD as n3,eE as Ci,eF as r3,eG as dw,eH as oA,eI as sA,eJ as o3,eK as aA,eL as iA,eM as lA,eN as cA,eO as uA,eP as Kx,eQ as c1,eR as fw,eS as Xi,eT as dA,eU as fA,eV as s3,eW as Us,eX as Gs,eY as a3,eZ as i3,e_ as qx,e$ as l3,f0 as pA,f1 as Ks,f2 as hA,f3 as c3,f4 as mA,f5 as gA,f6 as vA,f7 as xA,f8 as bA,f9 as yA,fa as CA,fb as Kp,fc as Mu,fd as Hl,fe as wA,ff as SA,fg as kA,fh as _A,fi as jA,fj as PA,fk as IA,fl as EA,fm as MA,fn as OA,fo as DA,fp as RA,fq as AA,fr as NA,fs as TA,ft as $A,fu as LA,fv as zA,fw as FA,fx as BA,fy as pw,fz as HA,fA as WA,fB as VA,fC as UA,fD as GA,fE as KA,fF as qA,fG as XA,fH as YA,fI as QA,fJ as ZA,fK as JA,fL as e9,fM as t9,fN as hw,fO as Ip,fP as n9,fQ as qp,fR as u3,fS as Xp,fT as r9,fU as o9,fV as Yl,fW as d3,fX as f3,fY as Xx,fZ as s9,f_ as a9,f$ as i9,g0 as u1,g1 as p3,g2 as l9,g3 as c9,g4 as h3,g5 as u9,g6 as d9,g7 as f9,g8 as p9,g9 as h9,ga as wl,gb as m9,gc as g9,gd as v9,ge as x9,gf as b9,gg as y9,gh as mw,gi as C9,gj as w9,gk as S9,gl as k9,gm as _9,gn as j9,go as P9,gp as I9,gq as q0,gr as X0,gs as Y0,gt as Uf,gu as gw,gv as d1,gw as E9,gx as M9,gy as O9,gz as D9,gA as R9,gB as m3,gC as A9,gD as N9,gE as T9,gF as $9,gG as L9,gH as z9,gI as F9,gJ as B9,gK as H9,gL as W9,gM as V9,gN as Gf,gO as Q0,gP as U9,gQ as G9,gR as K9,gS as q9,gT as X9,gU as Y9,gV as Q9,gW as Z9,gX as J9,gY as eN,gZ as tN,g_ as nN,g$ as rN,h0 as oN,h1 as vw,h2 as xw,h3 as sN,h4 as aN}from"./index-f83c2c5c.js";import{I as An,u as iN,c as lN,a as Tt,b as tn,d as la,P as wd,C as cN,e as we,f as g3,g as ca,h as uN,r as Oe,i as dN,j as bw,k as ut,l as Sn,m as mc}from"./menu-31376327.js";var fN=200;function pN(e,t,n,r){var o=-1,s=Cj,i=!0,l=e.length,f=[],p=t.length;if(!l)return f;n&&(t=gd(t,bj(n))),r?(s=wj,i=!1):t.length>=fN&&(s=Jv,i=!1,t=new yj(t));e:for(;++o=120&&h.length>=120)?new yj(i&&h):void 0}h=e[0];var m=-1,v=l[0];e:for(;++m=0)&&(n[o]=e[o]);return n}const v3=({id:e,x:t,y:n,width:r,height:o,style:s,color:i,strokeColor:l,strokeWidth:f,className:p,borderRadius:h,shapeRendering:m,onClick:v,selected:x})=>{const{background:C,backgroundColor:b}=s||{},w=i||C||b;return a.jsx("rect",{className:Dx(["react-flow__minimap-node",{selected:x},p]),x:t,y:n,rx:h,ry:h,width:r,height:o,fill:w,stroke:l,strokeWidth:f,shapeRendering:m,onClick:v?k=>v(k,e):void 0})};v3.displayName="MiniMapNode";var ON=d.memo(v3);const DN=e=>e.nodeOrigin,RN=e=>e.getNodes().filter(t=>!t.hidden&&t.width&&t.height),Z0=e=>e instanceof Function?e:()=>e;function AN({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o=2,nodeComponent:s=ON,onClick:i}){const l=Bp(RN,Rx),f=Bp(DN),p=Z0(t),h=Z0(e),m=Z0(n),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return a.jsx(a.Fragment,{children:l.map(x=>{const{x:C,y:b}=x7(x,f).positionAbsolute;return a.jsx(s,{x:C,y:b,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:p(x),borderRadius:r,strokeColor:h(x),strokeWidth:o,shapeRendering:v,onClick:i,id:x.id},x.id)})})}var NN=d.memo(AN);const TN=200,$N=150,LN=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?_7(j7(t,e.nodeOrigin),n):n,rfId:e.rfId}},zN="react-flow__minimap-desc";function x3({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:i=2,nodeComponent:l,maskColor:f="rgb(240, 240, 240, 0.6)",maskStrokeColor:p="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:v,onNodeClick:x,pannable:C=!1,zoomable:b=!1,ariaLabel:w="React Flow mini map",inversePan:k=!1,zoomStep:_=10,offsetScale:j=5}){const I=b7(),M=d.useRef(null),{boundingRect:E,viewBB:O,rfId:D}=Bp(LN,Rx),A=(e==null?void 0:e.width)??TN,R=(e==null?void 0:e.height)??$N,$=E.width/A,K=E.height/R,B=Math.max($,K),U=B*A,Y=B*R,W=j*B,L=E.x-(U-E.width)/2-W,X=E.y-(Y-E.height)/2-W,z=U+W*2,q=Y+W*2,ne=`${zN}-${D}`,Q=d.useRef(0);Q.current=B,d.useEffect(()=>{if(M.current){const V=y7(M.current),G=re=>{const{transform:fe,d3Selection:de,d3Zoom:me}=I.getState();if(re.sourceEvent.type!=="wheel"||!de||!me)return;const ye=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*_,he=fe[2]*Math.pow(2,ye);me.scaleTo(de,he)},J=re=>{const{transform:fe,d3Selection:de,d3Zoom:me,translateExtent:ye,width:he,height:ue}=I.getState();if(re.sourceEvent.type!=="mousemove"||!de||!me)return;const De=Q.current*Math.max(1,fe[2])*(k?-1:1),je={x:fe[0]-re.sourceEvent.movementX*De,y:fe[1]-re.sourceEvent.movementY*De},Be=[[0,0],[he,ue]],rt=S7.translate(je.x,je.y).scale(fe[2]),Ue=me.constrain()(rt,Be,ye);me.transform(de,Ue)},se=C7().on("zoom",C?J:null).on("zoom.wheel",b?G:null);return V.call(se),()=>{V.on("zoom",null)}}},[C,b,k,_]);const ie=v?V=>{const G=k7(V);v(V,{x:G[0],y:G[1]})}:void 0,oe=x?(V,G)=>{const J=I.getState().nodeInternals.get(G);x(V,J)}:void 0;return a.jsx(w7,{position:m,style:e,className:Dx(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:a.jsxs("svg",{width:A,height:R,viewBox:`${L} ${X} ${z} ${q}`,role:"img","aria-labelledby":ne,ref:M,onClick:ie,children:[w&&a.jsx("title",{id:ne,children:w}),a.jsx(NN,{onClick:oe,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:i,nodeComponent:l}),a.jsx("path",{className:"react-flow__minimap-mask",d:`M${L-W},${X-W}h${z+W*2}v${q+W*2}h${-z-W*2}z - M${O.x},${O.y}h${O.width}v${O.height}h${-O.width}z`,fill:f,fillRule:"evenodd",stroke:p,strokeWidth:h,pointerEvents:"none"})]})})}x3.displayName="MiniMap";var FN=d.memo(x3),To;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(To||(To={}));function BN({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 HN({color:e,radius:t}){return a.jsx("circle",{cx:t,cy:t,r:t,fill:e})}const WN={[To.Dots]:"#91919a",[To.Lines]:"#eee",[To.Cross]:"#e2e2e2"},VN={[To.Dots]:1,[To.Lines]:1,[To.Cross]:6},UN=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function b3({id:e,variant:t=To.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=2,color:i,style:l,className:f}){const p=d.useRef(null),{transform:h,patternId:m}=Bp(UN,Rx),v=i||WN[t],x=r||VN[t],C=t===To.Dots,b=t===To.Cross,w=Array.isArray(n)?n:[n,n],k=[w[0]*h[2]||1,w[1]*h[2]||1],_=x*h[2],j=b?[_,_]:k,I=C?[_/s,_/s]:[j[0]/s,j[1]/s];return a.jsxs("svg",{className:Dx(["react-flow__background",f]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:p,"data-testid":"rf__background",children:[a.jsx("pattern",{id:m+e,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${I[0]},-${I[1]})`,children:C?a.jsx(HN,{color:v,radius:_/s}):a.jsx(BN,{dimensions:j,color:v,lineWidth:o})}),a.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+e})`})]})}b3.displayName="Background";var GN=d.memo(b3);const Sw=(e,t,n)=>{KN(n);const r=_j(e,t);return y3[n].includes(r)},y3={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},kw=Object.keys(y3),KN=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(kw.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${kw.join("|")}`)};function qN(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var XN=qN();const C3=1/60*1e3,YN=typeof performance<"u"?()=>performance.now():()=>Date.now(),w3=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(YN()),C3);function QN(e){let t=[],n=[],r=0,o=!1,s=!1;const i=new WeakSet,l={schedule:(f,p=!1,h=!1)=>{const m=h&&o,v=m?t:n;return p&&i.add(f),v.indexOf(f)===-1&&(v.push(f),m&&o&&(r=t.length)),f},cancel:f=>{const p=n.indexOf(f);p!==-1&&n.splice(p,1),i.delete(f)},process:f=>{if(o){s=!0;return}if(o=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let p=0;p(e[t]=QN(()=>Qu=!0),e),{}),JN=Sd.reduce((e,t)=>{const n=xm[t];return e[t]=(r,o=!1,s=!1)=>(Qu||nT(),n.schedule(r,o,s)),e},{}),eT=Sd.reduce((e,t)=>(e[t]=xm[t].cancel,e),{});Sd.reduce((e,t)=>(e[t]=()=>xm[t].process(Ql),e),{});const tT=e=>xm[e].process(Ql),S3=e=>{Qu=!1,Ql.delta=f1?C3:Math.max(Math.min(e-Ql.timestamp,ZN),1),Ql.timestamp=e,p1=!0,Sd.forEach(tT),p1=!1,Qu&&(f1=!1,w3(S3))},nT=()=>{Qu=!0,f1=!0,p1||w3(S3)},_w=()=>Ql;function kd(e){const{viewBox:t="0 0 24 24",d:n,displayName:r,defaultProps:o={}}=e,s=d.Children.toArray(e.path),i=Pe((l,f)=>a.jsx(An,{ref:f,viewBox:t,...o,...l,children:s.length?s:a.jsx("path",{fill:"currentColor",d:n})}));return i.displayName=r,i}function k3(e){const{theme:t}=P7(),n=iN();return d.useMemo(()=>lN(t.direction,{...n,...e}),[e,t.direction,n])}var rT=Object.defineProperty,oT=(e,t,n)=>t in e?rT(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fn=(e,t,n)=>(oT(e,typeof t!="symbol"?t+"":t,n),n);function jw(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 sT=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function Pw(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function Iw(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var h1=typeof window<"u"?d.useLayoutEffect:d.useEffect,Yp=e=>e,aT=class{constructor(){fn(this,"descendants",new Map),fn(this,"register",e=>{if(e!=null)return sT(e)?this.registerNode(e):t=>{this.registerNode(t,e)}}),fn(this,"unregister",e=>{this.descendants.delete(e);const t=jw(Array.from(this.descendants.keys()));this.assignIndex(t)}),fn(this,"destroy",()=>{this.descendants.clear()}),fn(this,"assignIndex",e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})}),fn(this,"count",()=>this.descendants.size),fn(this,"enabledCount",()=>this.enabledValues().length),fn(this,"values",()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index)),fn(this,"enabledValues",()=>this.values().filter(e=>!e.disabled)),fn(this,"item",e=>{if(this.count()!==0)return this.values()[e]}),fn(this,"enabledItem",e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]}),fn(this,"first",()=>this.item(0)),fn(this,"firstEnabled",()=>this.enabledItem(0)),fn(this,"last",()=>this.item(this.descendants.size-1)),fn(this,"lastEnabled",()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)}),fn(this,"indexOf",e=>{var t,n;return e&&(n=(t=this.descendants.get(e))==null?void 0:t.index)!=null?n:-1}),fn(this,"enabledIndexOf",e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e))),fn(this,"next",(e,t=!0)=>{const n=Pw(e,this.count(),t);return this.item(n)}),fn(this,"nextEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Pw(r,this.enabledCount(),t);return this.enabledItem(o)}),fn(this,"prev",(e,t=!0)=>{const n=Iw(e,this.count()-1,t);return this.item(n)}),fn(this,"prevEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Iw(r,this.enabledCount()-1,t);return this.enabledItem(o)}),fn(this,"registerNode",(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=jw(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 iT(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 yt(...e){return t=>{e.forEach(n=>{iT(n,t)})}}function lT(...e){return d.useMemo(()=>yt(...e),e)}function cT(){const e=d.useRef(new aT);return h1(()=>()=>e.current.destroy()),e.current}var[uT,_3]=Tt({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function dT(e){const t=_3(),[n,r]=d.useState(-1),o=d.useRef(null);h1(()=>()=>{o.current&&t.unregister(o.current)},[]),h1(()=>{if(!o.current)return;const i=Number(o.current.dataset.index);n!=i&&!Number.isNaN(i)&&r(i)});const s=Yp(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(o.current),register:yt(s,o)}}function Yx(){return[Yp(uT),()=>Yp(_3()),()=>cT(),o=>dT(o)]}var[fT,bm]=Tt({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[pT,Qx]=Tt({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[hT,Qge,mT,gT]=Yx(),Rl=Pe(function(t,n){const{getButtonProps:r}=Qx(),o=r(t,n),i={display:"flex",alignItems:"center",width:"100%",outline:0,...bm().button};return a.jsx(_e.button,{...o,className:et("chakra-accordion__button",t.className),__css:i})});Rl.displayName="AccordionButton";function Rc(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:o=(v,x)=>v!==x}=e,s=tn(r),i=tn(o),[l,f]=d.useState(n),p=t!==void 0,h=p?t:l,m=tn(v=>{const C=typeof v=="function"?v(h):v;i(h,C)&&(p||f(C),s(C))},[p,s,h,i]);return[h,m]}function vT(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:o,allowToggle:s,...i}=e;yT(e),CT(e);const l=mT(),[f,p]=d.useState(-1);d.useEffect(()=>()=>{p(-1)},[]);const[h,m]=Rc({value:r,defaultValue(){return o?n??[]:n??-1},onChange:t});return{index:h,setIndex:m,htmlProps:i,getAccordionItemProps:x=>{let C=!1;return x!==null&&(C=Array.isArray(h)?h.includes(x):h===x),{isOpen:C,onChange:w=>{if(x!==null)if(o&&Array.isArray(h)){const k=w?h.concat(x):h.filter(_=>_!==x);m(k)}else w?m(x):s&&m(-1)}}},focusedIndex:f,setFocusedIndex:p,descendants:l}}var[xT,Zx]=Tt({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function bT(e){const{isDisabled:t,isFocusable:n,id:r,...o}=e,{getAccordionItemProps:s,setFocusedIndex:i}=Zx(),l=d.useRef(null),f=d.useId(),p=r??f,h=`accordion-button-${p}`,m=`accordion-panel-${p}`;wT(e);const{register:v,index:x,descendants:C}=gT({disabled:t&&!n}),{isOpen:b,onChange:w}=s(x===-1?null:x);ST({isOpen:b,isDisabled:t});const k=()=>{w==null||w(!0)},_=()=>{w==null||w(!1)},j=d.useCallback(()=>{w==null||w(!b),i(x)},[x,i,b,w]),I=d.useCallback(D=>{const R={ArrowDown:()=>{const $=C.nextEnabled(x);$==null||$.node.focus()},ArrowUp:()=>{const $=C.prevEnabled(x);$==null||$.node.focus()},Home:()=>{const $=C.firstEnabled();$==null||$.node.focus()},End:()=>{const $=C.lastEnabled();$==null||$.node.focus()}}[D.key];R&&(D.preventDefault(),R(D))},[C,x]),M=d.useCallback(()=>{i(x)},[i,x]),E=d.useCallback(function(A={},R=null){return{...A,type:"button",ref:yt(v,l,R),id:h,disabled:!!t,"aria-expanded":!!b,"aria-controls":m,onClick:Fe(A.onClick,j),onFocus:Fe(A.onFocus,M),onKeyDown:Fe(A.onKeyDown,I)}},[h,t,b,j,M,I,m,v]),O=d.useCallback(function(A={},R=null){return{...A,ref:R,role:"region",id:m,"aria-labelledby":h,hidden:!b}},[h,b,m]);return{isOpen:b,isDisabled:t,isFocusable:n,onOpen:k,onClose:_,getButtonProps:E,getPanelProps:O,htmlProps:o}}function yT(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;vd({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function CT(e){vd({condition:!!(e.allowMultiple&&e.allowToggle),message:"If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not"})}function wT(e){vd({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 ST(e){vd({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function Al(e){const{isOpen:t,isDisabled:n}=Qx(),{reduceMotion:r}=Zx(),o=et("chakra-accordion__icon",e.className),s=bm(),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(An,{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"})})}Al.displayName="AccordionIcon";var Nl=Pe(function(t,n){const{children:r,className:o}=t,{htmlProps:s,...i}=bT(t),f={...bm().container,overflowAnchor:"none"},p=d.useMemo(()=>i,[i]);return a.jsx(pT,{value:p,children:a.jsx(_e.div,{ref:n,...s,className:et("chakra-accordion__item",o),__css:f,children:typeof r=="function"?r({isExpanded:!!i.isOpen,isDisabled:!!i.isDisabled}):r})})});Nl.displayName="AccordionItem";var Wl={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},ki={enter:{duration:.2,ease:Wl.easeOut},exit:{duration:.1,ease:Wl.easeIn}},Xs={enter:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.enter}),exit:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.exit})},kT=e=>e!=null&&parseInt(e.toString(),10)>0,Ew={exit:{height:{duration:.2,ease:Wl.ease},opacity:{duration:.3,ease:Wl.ease}},enter:{height:{duration:.3,ease:Wl.ease},opacity:{duration:.4,ease:Wl.ease}}},_T={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:kT(t)?1:0},height:t,transitionEnd:r==null?void 0:r.exit,transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(Ew.exit,o)}},enter:({animateOpacity:e,endingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:1},height:t,transitionEnd:r==null?void 0:r.enter,transition:(s=n==null?void 0:n.enter)!=null?s:Xs.enter(Ew.enter,o)}}},ym=d.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:o=!0,startingHeight:s=0,endingHeight:i="auto",style:l,className:f,transition:p,transitionEnd:h,...m}=e,[v,x]=d.useState(!1);d.useEffect(()=>{const _=setTimeout(()=>{x(!0)});return()=>clearTimeout(_)},[]),vd({condition:Number(s)>0&&!!r,message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const C=parseFloat(s.toString())>0,b={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:C?"block":"none"}}},w=r?n:!0,k=n||r?"enter":"exit";return a.jsx(nr,{initial:!1,custom:b,children:w&&a.jsx(gn.div,{ref:t,...m,className:et("chakra-collapse",f),style:{overflow:"hidden",display:"block",...l},custom:b,variants:_T,initial:r?"exit":!1,animate:k,exit:"exit"})})});ym.displayName="Collapse";var jT={enter:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:1,transition:(r=e==null?void 0:e.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:0,transition:(r=e==null?void 0:e.exit)!=null?r:Xs.exit(ki.exit,n),transitionEnd:t==null?void 0:t.exit}}},j3={initial:"exit",animate:"enter",exit:"exit",variants:jT},PT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,className:s,transition:i,transitionEnd:l,delay:f,...p}=t,h=o||r?"enter":"exit",m=r?o&&r:!0,v={transition:i,transitionEnd:l,delay:f};return a.jsx(nr,{custom:v,children:m&&a.jsx(gn.div,{ref:n,className:et("chakra-fade",s),custom:v,...j3,animate:h,...p})})});PT.displayName="Fade";var IT={exit:({reverse:e,initialScale:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,...e?{scale:t,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{scale:t,...r==null?void 0:r.exit}},transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(ki.exit,o)}},enter:({transitionEnd:e,transition:t,delay:n})=>{var r;return{opacity:1,scale:1,transition:(r=t==null?void 0:t.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:e==null?void 0:e.enter}}},P3={initial:"exit",animate:"enter",exit:"exit",variants:IT},ET=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,initialScale:i=.95,className:l,transition:f,transitionEnd:p,delay:h,...m}=t,v=r?o&&r:!0,x=o||r?"enter":"exit",C={initialScale:i,reverse:s,transition:f,transitionEnd:p,delay:h};return a.jsx(nr,{custom:C,children:v&&a.jsx(gn.div,{ref:n,className:et("chakra-offset-slide",l),...P3,animate:x,custom:C,...m})})});ET.displayName="ScaleFade";var MT={initial:({offsetX:e,offsetY:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,x:e,y:t,transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(ki.exit,o),transitionEnd:r==null?void 0:r.exit}},enter:({transition:e,transitionEnd:t,delay:n})=>{var r;return{opacity:1,x:0,y:0,transition:(r=e==null?void 0:e.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({offsetY:e,offsetX:t,transition:n,transitionEnd:r,reverse:o,delay:s})=>{var i;const l={x:t,y:e};return{opacity:0,transition:(i=n==null?void 0:n.exit)!=null?i:Xs.exit(ki.exit,s),...o?{...l,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{...l,...r==null?void 0:r.exit}}}}},m1={initial:"initial",animate:"enter",exit:"exit",variants:MT},OT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,className:i,offsetX:l=0,offsetY:f=8,transition:p,transitionEnd:h,delay:m,...v}=t,x=r?o&&r:!0,C=o||r?"enter":"exit",b={offsetX:l,offsetY:f,reverse:s,transition:p,transitionEnd:h,delay:m};return a.jsx(nr,{custom:b,children:x&&a.jsx(gn.div,{ref:n,className:et("chakra-offset-slide",i),custom:b,...m1,animate:C,...v})})});OT.displayName="SlideFade";var Tl=Pe(function(t,n){const{className:r,motionProps:o,...s}=t,{reduceMotion:i}=Zx(),{getPanelProps:l,isOpen:f}=Qx(),p=l(s,n),h=et("chakra-accordion__panel",r),m=bm();i||delete p.hidden;const v=a.jsx(_e.div,{...p,__css:m.panel,className:h});return i?v:a.jsx(ym,{in:f,...o,children:v})});Tl.displayName="AccordionPanel";var I3=Pe(function({children:t,reduceMotion:n,...r},o){const s=Hn("Accordion",r),i=Xt(r),{htmlProps:l,descendants:f,...p}=vT(i),h=d.useMemo(()=>({...p,reduceMotion:!!n}),[p,n]);return a.jsx(hT,{value:f,children:a.jsx(xT,{value:h,children:a.jsx(fT,{value:s,children:a.jsx(_e.div,{ref:o,...l,className:et("chakra-accordion",r.className),__css:s.root,children:t})})})})});I3.displayName="Accordion";function _d(e){return d.Children.toArray(e).filter(t=>d.isValidElement(t))}var[DT,RT]=Tt({strict:!1,name:"ButtonGroupContext"}),AT={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}}},NT={horizontal:e=>({"& > *:not(style) ~ *:not(style)":{marginStart:e}}),vertical:e=>({"& > *:not(style) ~ *:not(style)":{marginTop:e}})},pn=Pe(function(t,n){const{size:r,colorScheme:o,variant:s,className:i,spacing:l="0.5rem",isAttached:f,isDisabled:p,orientation:h="horizontal",...m}=t,v=et("chakra-button__group",i),x=d.useMemo(()=>({size:r,colorScheme:o,variant:s,isDisabled:p}),[r,o,s,p]);let C={display:"inline-flex",...f?AT[h]:NT[h](l)};const b=h==="vertical";return a.jsx(DT,{value:x,children:a.jsx(_e.div,{ref:n,role:"group",__css:C,className:v,"data-attached":f?"":void 0,"data-orientation":h,flexDir:b?"column":void 0,...m})})});pn.displayName="ButtonGroup";function TT(e){const[t,n]=d.useState(!e);return{ref:d.useCallback(s=>{s&&n(s.tagName==="BUTTON")},[]),type:t?"button":void 0}}function g1(e){const{children:t,className:n,...r}=e,o=d.isValidElement(t)?d.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,s=et("chakra-button__icon",n);return a.jsx(_e.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:s,children:o})}g1.displayName="ButtonIcon";function Qp(e){const{label:t,placement:n,spacing:r="0.5rem",children:o=a.jsx(Ki,{color:"currentColor",width:"1em",height:"1em"}),className:s,__css:i,...l}=e,f=et("chakra-button__spinner",s),p=n==="start"?"marginEnd":"marginStart",h=d.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[p]:t?r:0,fontSize:"1em",lineHeight:"normal",...i}),[i,t,p,r]);return a.jsx(_e.div,{className:f,...l,__css:h,children:o})}Qp.displayName="ButtonSpinner";var gc=Pe((e,t)=>{const n=RT(),r=Qa("Button",{...n,...e}),{isDisabled:o=n==null?void 0:n.isDisabled,isLoading:s,isActive:i,children:l,leftIcon:f,rightIcon:p,loadingText:h,iconSpacing:m="0.5rem",type:v,spinner:x,spinnerPlacement:C="start",className:b,as:w,...k}=Xt(e),_=d.useMemo(()=>{const E={...r==null?void 0:r._focus,zIndex:1};return{display:"inline-flex",appearance:"none",alignItems:"center",justifyContent:"center",userSelect:"none",position:"relative",whiteSpace:"nowrap",verticalAlign:"middle",outline:"none",...r,...!!n&&{_focus:E}}},[r,n]),{ref:j,type:I}=TT(w),M={rightIcon:p,leftIcon:f,iconSpacing:m,children:l};return a.jsxs(_e.button,{ref:lT(t,j),as:w,type:v??I,"data-active":at(i),"data-loading":at(s),__css:_,className:et("chakra-button",b),...k,disabled:o||s,children:[s&&C==="start"&&a.jsx(Qp,{className:"chakra-button__spinner--start",label:h,placement:"start",spacing:m,children:x}),s?h||a.jsx(_e.span,{opacity:0,children:a.jsx(Mw,{...M})}):a.jsx(Mw,{...M}),s&&C==="end"&&a.jsx(Qp,{className:"chakra-button__spinner--end",label:h,placement:"end",spacing:m,children:x})]})});gc.displayName="Button";function Mw(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:o}=e;return a.jsxs(a.Fragment,{children:[t&&a.jsx(g1,{marginEnd:o,children:t}),r,n&&a.jsx(g1,{marginStart:o,children:n})]})}var ps=Pe((e,t)=>{const{icon:n,children:r,isRound:o,"aria-label":s,...i}=e,l=n||r,f=d.isValidElement(l)?d.cloneElement(l,{"aria-hidden":!0,focusable:!1}):null;return a.jsx(gc,{padding:"0",borderRadius:o?"full":void 0,ref:t,"aria-label":s,...i,children:f})});ps.displayName="IconButton";var[Zge,$T]=Tt({name:"CheckboxGroupContext",strict:!1});function LT(e){const[t,n]=d.useState(e),[r,o]=d.useState(!1);return e!==t&&(o(!0),n(e)),r}function zT(e){return a.jsx(_e.svg,{width:"1.2em",viewBox:"0 0 12 10",style:{fill:"none",strokeWidth:2,stroke:"currentColor",strokeDasharray:16},...e,children:a.jsx("polyline",{points:"1.5 6 4.5 9 10.5 1"})})}function FT(e){return a.jsx(_e.svg,{width:"1.2em",viewBox:"0 0 24 24",style:{stroke:"currentColor",strokeWidth:4},...e,children:a.jsx("line",{x1:"21",x2:"3",y1:"12",y2:"12"})})}function BT(e){const{isIndeterminate:t,isChecked:n,...r}=e,o=t?FT:zT;return n||t?a.jsx(_e.div,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:a.jsx(o,{...r})}):null}var[HT,E3]=Tt({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[WT,jd]=Tt({strict:!1,name:"FormControlContext"});function VT(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:o,isReadOnly:s,...i}=e,l=d.useId(),f=t||`field-${l}`,p=`${f}-label`,h=`${f}-feedback`,m=`${f}-helptext`,[v,x]=d.useState(!1),[C,b]=d.useState(!1),[w,k]=d.useState(!1),_=d.useCallback((O={},D=null)=>({id:m,...O,ref:yt(D,A=>{A&&b(!0)})}),[m]),j=d.useCallback((O={},D=null)=>({...O,ref:D,"data-focus":at(w),"data-disabled":at(o),"data-invalid":at(r),"data-readonly":at(s),id:O.id!==void 0?O.id:p,htmlFor:O.htmlFor!==void 0?O.htmlFor:f}),[f,o,w,r,s,p]),I=d.useCallback((O={},D=null)=>({id:h,...O,ref:yt(D,A=>{A&&x(!0)}),"aria-live":"polite"}),[h]),M=d.useCallback((O={},D=null)=>({...O,...i,ref:D,role:"group"}),[i]),E=d.useCallback((O={},D=null)=>({...O,ref:D,role:"presentation","aria-hidden":!0,children:O.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!s,isDisabled:!!o,isFocused:!!w,onFocus:()=>k(!0),onBlur:()=>k(!1),hasFeedbackText:v,setHasFeedbackText:x,hasHelpText:C,setHasHelpText:b,id:f,labelId:p,feedbackId:h,helpTextId:m,htmlProps:i,getHelpTextProps:_,getErrorMessageProps:I,getRootProps:M,getLabelProps:j,getRequiredIndicatorProps:E}}var un=Pe(function(t,n){const r=Hn("Form",t),o=Xt(t),{getRootProps:s,htmlProps:i,...l}=VT(o),f=et("chakra-form-control",t.className);return a.jsx(WT,{value:l,children:a.jsx(HT,{value:r,children:a.jsx(_e.div,{...s({},n),className:f,__css:r.container})})})});un.displayName="FormControl";var M3=Pe(function(t,n){const r=jd(),o=E3(),s=et("chakra-form__helper-text",t.className);return a.jsx(_e.div,{...r==null?void 0:r.getHelpTextProps(t,n),__css:o.helperText,className:s})});M3.displayName="FormHelperText";var Gn=Pe(function(t,n){var r;const o=Qa("FormLabel",t),s=Xt(t),{className:i,children:l,requiredIndicator:f=a.jsx(O3,{}),optionalIndicator:p=null,...h}=s,m=jd(),v=(r=m==null?void 0:m.getLabelProps(h,n))!=null?r:{ref:n,...h};return a.jsxs(_e.label,{...v,className:et("chakra-form__label",s.className),__css:{display:"block",textAlign:"start",...o},children:[l,m!=null&&m.isRequired?f:p]})});Gn.displayName="FormLabel";var O3=Pe(function(t,n){const r=jd(),o=E3();if(!(r!=null&&r.isRequired))return null;const s=et("chakra-form__required-indicator",t.className);return a.jsx(_e.span,{...r==null?void 0:r.getRequiredIndicatorProps(t,n),__css:o.requiredIndicator,className:s})});O3.displayName="RequiredIndicator";function Jx(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:o,...s}=eb(e);return{...s,disabled:t,readOnly:r,required:o,"aria-invalid":co(n),"aria-required":co(o),"aria-readonly":co(r)}}function eb(e){var t,n,r;const o=jd(),{id:s,disabled:i,readOnly:l,required:f,isRequired:p,isInvalid:h,isReadOnly:m,isDisabled:v,onFocus:x,onBlur:C,...b}=e,w=e["aria-describedby"]?[e["aria-describedby"]]:[];return o!=null&&o.hasFeedbackText&&(o!=null&&o.isInvalid)&&w.push(o.feedbackId),o!=null&&o.hasHelpText&&w.push(o.helpTextId),{...b,"aria-describedby":w.join(" ")||void 0,id:s??(o==null?void 0:o.id),isDisabled:(t=i??v)!=null?t:o==null?void 0:o.isDisabled,isReadOnly:(n=l??m)!=null?n:o==null?void 0:o.isReadOnly,isRequired:(r=f??p)!=null?r:o==null?void 0:o.isRequired,isInvalid:h??(o==null?void 0:o.isInvalid),onFocus:Fe(o==null?void 0:o.onFocus,x),onBlur:Fe(o==null?void 0:o.onBlur,C)}}var tb={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},D3=_e("span",{baseStyle:tb});D3.displayName="VisuallyHidden";var UT=_e("input",{baseStyle:tb});UT.displayName="VisuallyHiddenInput";const GT=()=>typeof document<"u";let Ow=!1,Pd=null,$i=!1,v1=!1;const x1=new Set;function nb(e,t){x1.forEach(n=>n(e,t))}const KT=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function qT(e){return!(e.metaKey||!KT&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function Dw(e){$i=!0,qT(e)&&(Pd="keyboard",nb("keyboard",e))}function Sl(e){if(Pd="pointer",e.type==="mousedown"||e.type==="pointerdown"){$i=!0;const t=e.composedPath?e.composedPath()[0]:e.target;let n=!1;try{n=t.matches(":focus-visible")}catch{}if(n)return;nb("pointer",e)}}function XT(e){return e.mozInputSource===0&&e.isTrusted?!0:e.detail===0&&!e.pointerType}function YT(e){XT(e)&&($i=!0,Pd="virtual")}function QT(e){e.target===window||e.target===document||(!$i&&!v1&&(Pd="virtual",nb("virtual",e)),$i=!1,v1=!1)}function ZT(){$i=!1,v1=!0}function Rw(){return Pd!=="pointer"}function JT(){if(!GT()||Ow)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){$i=!0,e.apply(this,n)},document.addEventListener("keydown",Dw,!0),document.addEventListener("keyup",Dw,!0),document.addEventListener("click",YT,!0),window.addEventListener("focus",QT,!0),window.addEventListener("blur",ZT,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",Sl,!0),document.addEventListener("pointermove",Sl,!0),document.addEventListener("pointerup",Sl,!0)):(document.addEventListener("mousedown",Sl,!0),document.addEventListener("mousemove",Sl,!0),document.addEventListener("mouseup",Sl,!0)),Ow=!0}function R3(e){JT(),e(Rw());const t=()=>e(Rw());return x1.add(t),()=>{x1.delete(t)}}function e$(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function A3(e={}){const t=eb(e),{isDisabled:n,isReadOnly:r,isRequired:o,isInvalid:s,id:i,onBlur:l,onFocus:f,"aria-describedby":p}=t,{defaultChecked:h,isChecked:m,isFocusable:v,onChange:x,isIndeterminate:C,name:b,value:w,tabIndex:k=void 0,"aria-label":_,"aria-labelledby":j,"aria-invalid":I,...M}=e,E=e$(M,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),O=tn(x),D=tn(l),A=tn(f),[R,$]=d.useState(!1),[K,B]=d.useState(!1),[U,Y]=d.useState(!1),[W,L]=d.useState(!1);d.useEffect(()=>R3($),[]);const X=d.useRef(null),[z,q]=d.useState(!0),[ne,Q]=d.useState(!!h),ie=m!==void 0,oe=ie?m:ne,V=d.useCallback(ue=>{if(r||n){ue.preventDefault();return}ie||Q(oe?ue.target.checked:C?!0:ue.target.checked),O==null||O(ue)},[r,n,oe,ie,C,O]);Xl(()=>{X.current&&(X.current.indeterminate=!!C)},[C]),la(()=>{n&&B(!1)},[n,B]),Xl(()=>{const ue=X.current;if(!(ue!=null&&ue.form))return;const De=()=>{Q(!!h)};return ue.form.addEventListener("reset",De),()=>{var je;return(je=ue.form)==null?void 0:je.removeEventListener("reset",De)}},[]);const G=n&&!v,J=d.useCallback(ue=>{ue.key===" "&&L(!0)},[L]),se=d.useCallback(ue=>{ue.key===" "&&L(!1)},[L]);Xl(()=>{if(!X.current)return;X.current.checked!==oe&&Q(X.current.checked)},[X.current]);const re=d.useCallback((ue={},De=null)=>{const je=Be=>{K&&Be.preventDefault(),L(!0)};return{...ue,ref:De,"data-active":at(W),"data-hover":at(U),"data-checked":at(oe),"data-focus":at(K),"data-focus-visible":at(K&&R),"data-indeterminate":at(C),"data-disabled":at(n),"data-invalid":at(s),"data-readonly":at(r),"aria-hidden":!0,onMouseDown:Fe(ue.onMouseDown,je),onMouseUp:Fe(ue.onMouseUp,()=>L(!1)),onMouseEnter:Fe(ue.onMouseEnter,()=>Y(!0)),onMouseLeave:Fe(ue.onMouseLeave,()=>Y(!1))}},[W,oe,n,K,R,U,C,s,r]),fe=d.useCallback((ue={},De=null)=>({...ue,ref:De,"data-active":at(W),"data-hover":at(U),"data-checked":at(oe),"data-focus":at(K),"data-focus-visible":at(K&&R),"data-indeterminate":at(C),"data-disabled":at(n),"data-invalid":at(s),"data-readonly":at(r)}),[W,oe,n,K,R,U,C,s,r]),de=d.useCallback((ue={},De=null)=>({...E,...ue,ref:yt(De,je=>{je&&q(je.tagName==="LABEL")}),onClick:Fe(ue.onClick,()=>{var je;z||((je=X.current)==null||je.click(),requestAnimationFrame(()=>{var Be;(Be=X.current)==null||Be.focus({preventScroll:!0})}))}),"data-disabled":at(n),"data-checked":at(oe),"data-invalid":at(s)}),[E,n,oe,s,z]),me=d.useCallback((ue={},De=null)=>({...ue,ref:yt(X,De),type:"checkbox",name:b,value:w,id:i,tabIndex:k,onChange:Fe(ue.onChange,V),onBlur:Fe(ue.onBlur,D,()=>B(!1)),onFocus:Fe(ue.onFocus,A,()=>B(!0)),onKeyDown:Fe(ue.onKeyDown,J),onKeyUp:Fe(ue.onKeyUp,se),required:o,checked:oe,disabled:G,readOnly:r,"aria-label":_,"aria-labelledby":j,"aria-invalid":I?!!I:s,"aria-describedby":p,"aria-disabled":n,style:tb}),[b,w,i,V,D,A,J,se,o,oe,G,r,_,j,I,s,p,n,k]),ye=d.useCallback((ue={},De=null)=>({...ue,ref:De,onMouseDown:Fe(ue.onMouseDown,t$),"data-disabled":at(n),"data-checked":at(oe),"data-invalid":at(s)}),[oe,n,s]);return{state:{isInvalid:s,isFocused:K,isChecked:oe,isActive:W,isHovered:U,isIndeterminate:C,isDisabled:n,isReadOnly:r,isRequired:o},getRootProps:de,getCheckboxProps:re,getIndicatorProps:fe,getInputProps:me,getLabelProps:ye,htmlProps:E}}function t$(e){e.preventDefault(),e.stopPropagation()}var n$={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},r$={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},o$=aa({from:{opacity:0,strokeDashoffset:16,transform:"scale(0.95)"},to:{opacity:1,strokeDashoffset:0,transform:"scale(1)"}}),s$=aa({from:{opacity:0},to:{opacity:1}}),a$=aa({from:{transform:"scaleX(0.65)"},to:{transform:"scaleX(1)"}}),Cm=Pe(function(t,n){const r=$T(),o={...r,...t},s=Hn("Checkbox",o),i=Xt(t),{spacing:l="0.5rem",className:f,children:p,iconColor:h,iconSize:m,icon:v=a.jsx(BT,{}),isChecked:x,isDisabled:C=r==null?void 0:r.isDisabled,onChange:b,inputProps:w,...k}=i;let _=x;r!=null&&r.value&&i.value&&(_=r.value.includes(i.value));let j=b;r!=null&&r.onChange&&i.value&&(j=cm(r.onChange,b));const{state:I,getInputProps:M,getCheckboxProps:E,getLabelProps:O,getRootProps:D}=A3({...k,isDisabled:C,isChecked:_,onChange:j}),A=LT(I.isChecked),R=d.useMemo(()=>({animation:A?I.isIndeterminate?`${s$} 20ms linear, ${a$} 200ms linear`:`${o$} 200ms linear`:void 0,fontSize:m,color:h,...s.icon}),[h,m,A,I.isIndeterminate,s.icon]),$=d.cloneElement(v,{__css:R,isIndeterminate:I.isIndeterminate,isChecked:I.isChecked});return a.jsxs(_e.label,{__css:{...r$,...s.container},className:et("chakra-checkbox",f),...D(),children:[a.jsx("input",{className:"chakra-checkbox__input",...M(w,n)}),a.jsx(_e.span,{__css:{...n$,...s.control},className:"chakra-checkbox__control",...E(),children:$}),p&&a.jsx(_e.span,{className:"chakra-checkbox__label",...O(),__css:{marginStart:l,...s.label},children:p})]})});Cm.displayName="Checkbox";function i$(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function rb(e,t){let n=i$(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function b1(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 Zp(e,t,n){return(e-t)*100/(n-t)}function N3(e,t,n){return(n-t)*e+t}function y1(e,t,n){const r=Math.round((e-t)/n)*n+t,o=b1(n);return rb(r,o)}function Zl(e,t,n){return e==null?e:(n{var R;return r==null?"":(R=J0(r,s,n))!=null?R:""}),v=typeof o<"u",x=v?o:h,C=T3(Ea(x),s),b=n??C,w=d.useCallback(R=>{R!==x&&(v||m(R.toString()),p==null||p(R.toString(),Ea(R)))},[p,v,x]),k=d.useCallback(R=>{let $=R;return f&&($=Zl($,i,l)),rb($,b)},[b,f,l,i]),_=d.useCallback((R=s)=>{let $;x===""?$=Ea(R):$=Ea(x)+R,$=k($),w($)},[k,s,w,x]),j=d.useCallback((R=s)=>{let $;x===""?$=Ea(-R):$=Ea(x)-R,$=k($),w($)},[k,s,w,x]),I=d.useCallback(()=>{var R;let $;r==null?$="":$=(R=J0(r,s,n))!=null?R:i,w($)},[r,n,s,w,i]),M=d.useCallback(R=>{var $;const K=($=J0(R,s,b))!=null?$:i;w(K)},[b,s,w,i]),E=Ea(x);return{isOutOfRange:E>l||E" `}),[u$,ob]=Tt({name:"EditableContext",errorMessage:"useEditableContext: context is undefined. Seems you forgot to wrap the editable components in ``"}),L3={fontSize:"inherit",fontWeight:"inherit",textAlign:"inherit",bg:"transparent"},wm=Pe(function(t,n){const{getInputProps:r}=ob(),o=$3(),s=r(t,n),i=et("chakra-editable__input",t.className);return a.jsx(_e.input,{...s,__css:{outline:0,...L3,...o.input},className:i})});wm.displayName="EditableInput";var Sm=Pe(function(t,n){const{getPreviewProps:r}=ob(),o=$3(),s=r(t,n),i=et("chakra-editable__preview",t.className);return a.jsx(_e.span,{...s,__css:{cursor:"text",display:"inline-block",...L3,...o.preview},className:i})});Sm.displayName="EditablePreview";function _i(e,t,n,r){const o=tn(n);return d.useEffect(()=>{const s=typeof e=="function"?e():e??document;if(!(!n||!s))return s.addEventListener(t,o,r),()=>{s.removeEventListener(t,o,r)}},[t,e,r,o,n]),()=>{const s=typeof e=="function"?e():e??document;s==null||s.removeEventListener(t,o,r)}}function d$(e){return"current"in e}var z3=()=>typeof window<"u";function f$(){var e;const t=navigator.userAgentData;return(e=t==null?void 0:t.platform)!=null?e:navigator.platform}var p$=e=>z3()&&e.test(navigator.vendor),h$=e=>z3()&&e.test(f$()),m$=()=>h$(/mac|iphone|ipad|ipod/i),g$=()=>m$()&&p$(/apple/i);function F3(e){const{ref:t,elements:n,enabled:r}=e,o=()=>{var s,i;return(i=(s=t.current)==null?void 0:s.ownerDocument)!=null?i:document};_i(o,"pointerdown",s=>{if(!g$()||!r)return;const i=s.target,f=(n??[t]).some(p=>{const h=d$(p)?p.current:p;return(h==null?void 0:h.contains(i))||h===i});o().activeElement!==i&&f&&(s.preventDefault(),i.focus())})}function Aw(e,t){return e?e===t||e.contains(t):!1}function v$(e={}){const{onChange:t,onCancel:n,onSubmit:r,onBlur:o,value:s,isDisabled:i,defaultValue:l,startWithEditView:f,isPreviewFocusable:p=!0,submitOnBlur:h=!0,selectAllOnFocus:m=!0,placeholder:v,onEdit:x,finalFocusRef:C,...b}=e,w=tn(x),k=!!(f&&!i),[_,j]=d.useState(k),[I,M]=Rc({defaultValue:l||"",value:s,onChange:t}),[E,O]=d.useState(I),D=d.useRef(null),A=d.useRef(null),R=d.useRef(null),$=d.useRef(null),K=d.useRef(null);F3({ref:D,enabled:_,elements:[$,K]});const B=!_&&!i;Xl(()=>{var re,fe;_&&((re=D.current)==null||re.focus(),m&&((fe=D.current)==null||fe.select()))},[]),la(()=>{var re,fe,de,me;if(!_){C?(re=C.current)==null||re.focus():(fe=R.current)==null||fe.focus();return}(de=D.current)==null||de.focus(),m&&((me=D.current)==null||me.select()),w==null||w()},[_,w,m]);const U=d.useCallback(()=>{B&&j(!0)},[B]),Y=d.useCallback(()=>{O(I)},[I]),W=d.useCallback(()=>{j(!1),M(E),n==null||n(E),o==null||o(E)},[n,o,M,E]),L=d.useCallback(()=>{j(!1),O(I),r==null||r(I),o==null||o(E)},[I,r,o,E]);d.useEffect(()=>{if(_)return;const re=D.current;(re==null?void 0:re.ownerDocument.activeElement)===re&&(re==null||re.blur())},[_]);const X=d.useCallback(re=>{M(re.currentTarget.value)},[M]),z=d.useCallback(re=>{const fe=re.key,me={Escape:W,Enter:ye=>{!ye.shiftKey&&!ye.metaKey&&L()}}[fe];me&&(re.preventDefault(),me(re))},[W,L]),q=d.useCallback(re=>{const fe=re.key,me={Escape:W}[fe];me&&(re.preventDefault(),me(re))},[W]),ne=I.length===0,Q=d.useCallback(re=>{var fe;if(!_)return;const de=re.currentTarget.ownerDocument,me=(fe=re.relatedTarget)!=null?fe:de.activeElement,ye=Aw($.current,me),he=Aw(K.current,me);!ye&&!he&&(h?L():W())},[h,L,W,_]),ie=d.useCallback((re={},fe=null)=>{const de=B&&p?0:void 0;return{...re,ref:yt(fe,A),children:ne?v:I,hidden:_,"aria-disabled":co(i),tabIndex:de,onFocus:Fe(re.onFocus,U,Y)}},[i,_,B,p,ne,U,Y,v,I]),oe=d.useCallback((re={},fe=null)=>({...re,hidden:!_,placeholder:v,ref:yt(fe,D),disabled:i,"aria-disabled":co(i),value:I,onBlur:Fe(re.onBlur,Q),onChange:Fe(re.onChange,X),onKeyDown:Fe(re.onKeyDown,z),onFocus:Fe(re.onFocus,Y)}),[i,_,Q,X,z,Y,v,I]),V=d.useCallback((re={},fe=null)=>({...re,hidden:!_,placeholder:v,ref:yt(fe,D),disabled:i,"aria-disabled":co(i),value:I,onBlur:Fe(re.onBlur,Q),onChange:Fe(re.onChange,X),onKeyDown:Fe(re.onKeyDown,q),onFocus:Fe(re.onFocus,Y)}),[i,_,Q,X,q,Y,v,I]),G=d.useCallback((re={},fe=null)=>({"aria-label":"Edit",...re,type:"button",onClick:Fe(re.onClick,U),ref:yt(fe,R),disabled:i}),[U,i]),J=d.useCallback((re={},fe=null)=>({...re,"aria-label":"Submit",ref:yt(K,fe),type:"button",onClick:Fe(re.onClick,L),disabled:i}),[L,i]),se=d.useCallback((re={},fe=null)=>({"aria-label":"Cancel",id:"cancel",...re,ref:yt($,fe),type:"button",onClick:Fe(re.onClick,W),disabled:i}),[W,i]);return{isEditing:_,isDisabled:i,isValueEmpty:ne,value:I,onEdit:U,onCancel:W,onSubmit:L,getPreviewProps:ie,getInputProps:oe,getTextareaProps:V,getEditButtonProps:G,getSubmitButtonProps:J,getCancelButtonProps:se,htmlProps:b}}var km=Pe(function(t,n){const r=Hn("Editable",t),o=Xt(t),{htmlProps:s,...i}=v$(o),{isEditing:l,onSubmit:f,onCancel:p,onEdit:h}=i,m=et("chakra-editable",t.className),v=Ax(t.children,{isEditing:l,onSubmit:f,onCancel:p,onEdit:h});return a.jsx(u$,{value:i,children:a.jsx(c$,{value:r,children:a.jsx(_e.div,{ref:n,...s,className:m,children:v})})})});km.displayName="Editable";function B3(){const{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}=ob();return{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}}var H3={exports:{}},x$="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",b$=x$,y$=b$;function W3(){}function V3(){}V3.resetWarningCache=W3;var C$=function(){function e(r,o,s,i,l,f){if(f!==y$){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:V3,resetWarningCache:W3};return n.PropTypes=n,n};H3.exports=C$();var w$=H3.exports;const Bt=Oc(w$);var C1="data-focus-lock",U3="data-focus-lock-disabled",S$="data-no-focus-lock",k$="data-autofocus-inside",_$="data-no-autofocus";function j$(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function P$(e,t){var n=d.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var o=n.value;o!==r&&(n.value=r,n.callback(r,o))}}}})[0];return n.callback=t,n.facade}function G3(e,t){return P$(t||null,function(n){return e.forEach(function(r){return j$(r,n)})})}var ev={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"},us=function(){return us=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&s[s.length-1])&&(p[0]===6||p[0]===2)){n=0;continue}if(p[0]===3&&(!s||p[1]>s[0]&&p[1]0)&&!(o=r.next()).done;)s.push(o.value)}catch(l){i={error:l}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(i)throw i.error}}return s}function w1(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,s;r=0}).sort(B$)},H$=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],lb=H$.join(","),W$="".concat(lb,", [data-focus-guard]"),u5=function(e,t){return _s((e.shadowRoot||e).children).reduce(function(n,r){return n.concat(r.matches(t?W$:lb)?[r]:[],u5(r))},[])},V$=function(e,t){var n;return e instanceof HTMLIFrameElement&&(!((n=e.contentDocument)===null||n===void 0)&&n.body)?_m([e.contentDocument.body],t):[e]},_m=function(e,t){return e.reduce(function(n,r){var o,s=u5(r,t),i=(o=[]).concat.apply(o,s.map(function(l){return V$(l,t)}));return n.concat(i,r.parentNode?_s(r.parentNode.querySelectorAll(lb)).filter(function(l){return l===r}):[])},[])},U$=function(e){var t=e.querySelectorAll("[".concat(k$,"]"));return _s(t).map(function(n){return _m([n])}).reduce(function(n,r){return n.concat(r)},[])},cb=function(e,t){return _s(e).filter(function(n){return o5(t,n)}).filter(function(n){return L$(n)})},Tw=function(e,t){return t===void 0&&(t=new Map),_s(e).filter(function(n){return s5(t,n)})},k1=function(e,t,n){return c5(cb(_m(e,n),t),!0,n)},$w=function(e,t){return c5(cb(_m(e),t),!1)},G$=function(e,t){return cb(U$(e),t)},Jl=function(e,t){return e.shadowRoot?Jl(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:_s(e.children).some(function(n){var r;if(n instanceof HTMLIFrameElement){var o=(r=n.contentDocument)===null||r===void 0?void 0:r.body;return o?Jl(o,t):!1}return Jl(n,t)})},K$=function(e){for(var t=new Set,n=e.length,r=0;r0&&t.add(o),(s&Node.DOCUMENT_POSITION_CONTAINS)>0&&t.add(r)}return e.filter(function(i,l){return!t.has(l)})},d5=function(e){return e.parentNode?d5(e.parentNode):e},ub=function(e){var t=Jp(e);return t.filter(Boolean).reduce(function(n,r){var o=r.getAttribute(C1);return n.push.apply(n,o?K$(_s(d5(r).querySelectorAll("[".concat(C1,'="').concat(o,'"]:not([').concat(U3,'="disabled"])')))):[r]),n},[])},q$=function(e){try{return e()}catch{return}},Zu=function(e){if(e===void 0&&(e=document),!(!e||!e.activeElement)){var t=e.activeElement;return t.shadowRoot?Zu(t.shadowRoot):t instanceof HTMLIFrameElement&&q$(function(){return t.contentWindow.document})?Zu(t.contentWindow.document):t}},X$=function(e,t){return e===t},Y$=function(e,t){return!!_s(e.querySelectorAll("iframe")).some(function(n){return X$(n,t)})},f5=function(e,t){return t===void 0&&(t=Zu(t5(e).ownerDocument)),!t||t.dataset&&t.dataset.focusGuard?!1:ub(e).some(function(n){return Jl(n,t)||Y$(n,t)})},Q$=function(e){e===void 0&&(e=document);var t=Zu(e);return t?_s(e.querySelectorAll("[".concat(S$,"]"))).some(function(n){return Jl(n,t)}):!1},Z$=function(e,t){return t.filter(l5).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},db=function(e,t){return l5(e)&&e.name?Z$(e,t):e},J$=function(e){var t=new Set;return e.forEach(function(n){return t.add(db(n,e))}),e.filter(function(n){return t.has(n)})},Lw=function(e){return e[0]&&e.length>1?db(e[0],e):e[0]},zw=function(e,t){return e.length>1?e.indexOf(db(e[t],e)):t},p5="NEW_FOCUS",eL=function(e,t,n,r){var o=e.length,s=e[0],i=e[o-1],l=ib(n);if(!(n&&e.indexOf(n)>=0)){var f=n!==void 0?t.indexOf(n):-1,p=r?t.indexOf(r):f,h=r?e.indexOf(r):-1,m=f-p,v=t.indexOf(s),x=t.indexOf(i),C=J$(t),b=n!==void 0?C.indexOf(n):-1,w=b-(r?C.indexOf(r):f),k=zw(e,0),_=zw(e,o-1);if(f===-1||h===-1)return p5;if(!m&&h>=0)return h;if(f<=v&&l&&Math.abs(m)>1)return _;if(f>=x&&l&&Math.abs(m)>1)return k;if(m&&Math.abs(w)>1)return h;if(f<=v)return _;if(f>x)return k;if(m)return Math.abs(m)>1?h:(o+h+m)%o}},tL=function(e){return function(t){var n,r=(n=a5(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},nL=function(e,t,n){var r=e.map(function(s){var i=s.node;return i}),o=Tw(r.filter(tL(n)));return o&&o.length?Lw(o):Lw(Tw(t))},_1=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&_1(e.parentNode.host||e.parentNode,t),t},tv=function(e,t){for(var n=_1(e),r=_1(t),o=0;o=0)return s}return!1},h5=function(e,t,n){var r=Jp(e),o=Jp(t),s=r[0],i=!1;return o.filter(Boolean).forEach(function(l){i=tv(i||l,l)||i,n.filter(Boolean).forEach(function(f){var p=tv(s,f);p&&(!i||Jl(p,i)?i=p:i=tv(p,i))})}),i},rL=function(e,t){return e.reduce(function(n,r){return n.concat(G$(r,t))},[])},oL=function(e,t){var n=new Map;return t.forEach(function(r){return n.set(r.node,r)}),e.map(function(r){return n.get(r)}).filter(F$)},sL=function(e,t){var n=Zu(Jp(e).length>0?document:t5(e).ownerDocument),r=ub(e).filter(eh),o=h5(n||e,e,r),s=new Map,i=$w(r,s),l=k1(r,s).filter(function(x){var C=x.node;return eh(C)});if(!(!l[0]&&(l=i,!l[0]))){var f=$w([o],s).map(function(x){var C=x.node;return C}),p=oL(f,l),h=p.map(function(x){var C=x.node;return C}),m=eL(h,f,n,t);if(m===p5){var v=nL(i,h,rL(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]}},aL=function(e){var t=ub(e).filter(eh),n=h5(e,e,t),r=new Map,o=k1([n],r,!0),s=k1(t,r).filter(function(i){var l=i.node;return eh(l)}).map(function(i){var l=i.node;return l});return o.map(function(i){var l=i.node,f=i.index;return{node:l,index:f,lockItem:s.indexOf(l)>=0,guard:ib(l)}})},iL=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},nv=0,rv=!1,m5=function(e,t,n){n===void 0&&(n={});var r=sL(e,t);if(!rv&&r){if(nv>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),rv=!0,setTimeout(function(){rv=!1},1);return}nv++,iL(r.node,n.focusOptions),nv--}};function fb(e){setTimeout(e,1)}var lL=function(){return document&&document.activeElement===document.body},cL=function(){return lL()||Q$()},ec=null,Vl=null,tc=null,Ju=!1,uL=function(){return!0},dL=function(t){return(ec.whiteList||uL)(t)},fL=function(t,n){tc={observerNode:t,portaledElement:n}},pL=function(t){return tc&&tc.portaledElement===t};function Fw(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 hL=function(t){return t&&"current"in t?t.current:t},mL=function(t){return t?!!Ju:Ju==="meanwhile"},gL=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},vL=function(t,n){return n.some(function(r){return gL(t,r,r)})},th=function(){var t=!1;if(ec){var n=ec,r=n.observed,o=n.persistentFocus,s=n.autoFocus,i=n.shards,l=n.crossFrame,f=n.focusOptions,p=r||tc&&tc.portaledElement,h=document&&document.activeElement;if(p){var m=[p].concat(i.map(hL).filter(Boolean));if((!h||dL(h))&&(o||mL(l)||!cL()||!Vl&&s)&&(p&&!(f5(m)||h&&vL(h,m)||pL(h))&&(document&&!Vl&&h&&!s?(h.blur&&h.blur(),document.body.focus()):(t=m5(m,Vl,{focusOptions:f}),tc={})),Ju=!1,Vl=document&&document.activeElement),document){var v=document&&document.activeElement,x=aL(m),C=x.map(function(b){var w=b.node;return w}).indexOf(v);C>-1&&(x.filter(function(b){var w=b.guard,k=b.node;return w&&k.dataset.focusAutoGuard}).forEach(function(b){var w=b.node;return w.removeAttribute("tabIndex")}),Fw(C,x.length,1,x),Fw(C,-1,-1,x))}}}return t},g5=function(t){th()&&t&&(t.stopPropagation(),t.preventDefault())},pb=function(){return fb(th)},xL=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||fL(r,n)},bL=function(){return null},v5=function(){Ju="just",fb(function(){Ju="meanwhile"})},yL=function(){document.addEventListener("focusin",g5),document.addEventListener("focusout",pb),window.addEventListener("blur",v5)},CL=function(){document.removeEventListener("focusin",g5),document.removeEventListener("focusout",pb),window.removeEventListener("blur",v5)};function wL(e){return e.filter(function(t){var n=t.disabled;return!n})}function SL(e){var t=e.slice(-1)[0];t&&!ec&&yL();var n=ec,r=n&&t&&t.id===n.id;ec=t,n&&!r&&(n.onDeactivation(),e.filter(function(o){var s=o.id;return s===n.id}).length||n.returnFocus(!t)),t?(Vl=null,(!r||n.observed!==t.observed)&&t.onActivation(),th(),fb(th)):(CL(),Vl=null)}Z3.assignSyncMedium(xL);J3.assignMedium(pb);E$.assignMedium(function(e){return e({moveFocusInside:m5,focusInside:f5})});const kL=R$(wL,SL)(bL);var x5=d.forwardRef(function(t,n){return d.createElement(e5,nn({sideCar:kL,ref:n},t))}),b5=e5.propTypes||{};b5.sideCar;MN(b5,["sideCar"]);x5.propTypes={};const Bw=x5;function y5(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function hb(e){var t;if(!y5(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function _L(e){var t,n;return(n=(t=C5(e))==null?void 0:t.defaultView)!=null?n:window}function C5(e){return y5(e)?e.ownerDocument:document}function jL(e){return C5(e).activeElement}function PL(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 IL(e){return e.localName==="html"?e:e.assignedSlot||e.parentElement||e.ownerDocument.documentElement}function w5(e){return["html","body","#document"].includes(e.localName)?e.ownerDocument.body:hb(e)&&PL(e)?e:w5(IL(e))}var S5=e=>e.hasAttribute("tabindex"),EL=e=>S5(e)&&e.tabIndex===-1;function ML(e){return!!e.getAttribute("disabled")||!!e.getAttribute("aria-disabled")}function k5(e){return e.parentElement&&k5(e.parentElement)?!0:e.hidden}function OL(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function _5(e){if(!hb(e)||k5(e)||ML(e))return!1;const{localName:t}=e;if(["input","select","textarea","button"].indexOf(t)>=0)return!0;const r={a:()=>e.hasAttribute("href"),audio:()=>e.hasAttribute("controls"),video:()=>e.hasAttribute("controls")};return t in r?r[t]():OL(e)?!0:S5(e)}function DL(e){return e?hb(e)&&_5(e)&&!EL(e):!1}var RL=["input:not(:disabled):not([disabled])","select:not(:disabled):not([disabled])","textarea:not(:disabled):not([disabled])","embed","iframe","object","a[href]","area[href]","button:not(:disabled):not([disabled])","[tabindex]","audio[controls]","video[controls]","*[tabindex]:not([aria-disabled])","*[contenteditable]"],AL=RL.join(),NL=e=>e.offsetWidth>0&&e.offsetHeight>0;function j5(e){const t=Array.from(e.querySelectorAll(AL));return t.unshift(e),t.filter(n=>_5(n)&&NL(n))}var Hw,TL=(Hw=Bw.default)!=null?Hw:Bw,P5=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:o,children:s,isDisabled:i,autoFocus:l,persistentFocus:f,lockFocusAcrossFrames:p}=e,h=d.useCallback(()=>{t!=null&&t.current?t.current.focus():r!=null&&r.current&&j5(r.current).length===0&&requestAnimationFrame(()=>{var C;(C=r.current)==null||C.focus()})},[t,r]),m=d.useCallback(()=>{var x;(x=n==null?void 0:n.current)==null||x.focus()},[n]),v=o&&!n;return a.jsx(TL,{crossFrame:p,persistentFocus:f,autoFocus:l,disabled:i,onActivation:h,onDeactivation:m,returnFocus:v,children:s})};P5.displayName="FocusLock";var $L=XN?d.useLayoutEffect:d.useEffect;function j1(e,t=[]){const n=d.useRef(e);return $L(()=>{n.current=e}),d.useCallback((...r)=>{var o;return(o=n.current)==null?void 0:o.call(n,...r)},t)}function LL(e,t,n,r){const o=j1(t);return d.useEffect(()=>{var s;const i=(s=RC(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=RC(n))!=null?s:document).removeEventListener(e,o,r)}}function zL(e,t){const n=d.useId();return d.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function FL(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function Er(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=j1(n),i=j1(t),[l,f]=d.useState(e.defaultIsOpen||!1),[p,h]=FL(r,l),m=zL(o,"disclosure"),v=d.useCallback(()=>{p||f(!1),i==null||i()},[p,i]),x=d.useCallback(()=>{p||f(!0),s==null||s()},[p,s]),C=d.useCallback(()=>{(h?v:x)()},[h,x,v]);return{isOpen:!!h,onOpen:x,onClose:v,onToggle:C,isControlled:p,getButtonProps:(b={})=>({...b,"aria-expanded":h,"aria-controls":m,onClick:E7(b.onClick,C)}),getDisclosureProps:(b={})=>({...b,hidden:!h,id:m})}}var[BL,HL]=Tt({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),I5=Pe(function(t,n){const r=Hn("Input",t),{children:o,className:s,...i}=Xt(t),l=et("chakra-input__group",s),f={},p=_d(o),h=r.field;p.forEach(v=>{var x,C;r&&(h&&v.type.id==="InputLeftElement"&&(f.paddingStart=(x=h.height)!=null?x:h.h),h&&v.type.id==="InputRightElement"&&(f.paddingEnd=(C=h.height)!=null?C:h.h),v.type.id==="InputRightAddon"&&(f.borderEndRadius=0),v.type.id==="InputLeftAddon"&&(f.borderStartRadius=0))});const m=p.map(v=>{var x,C;const b=jj({size:((x=v.props)==null?void 0:x.size)||t.size,variant:((C=v.props)==null?void 0:C.variant)||t.variant});return v.type.id!=="Input"?d.cloneElement(v,b):d.cloneElement(v,Object.assign(b,f,v.props))});return a.jsx(_e.div,{className:l,ref:n,__css:{width:"100%",display:"flex",position:"relative",isolation:"isolate",...r.group},"data-group":!0,...i,children:a.jsx(BL,{value:r,children:m})})});I5.displayName="InputGroup";var WL=_e("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),jm=Pe(function(t,n){var r,o;const{placement:s="left",...i}=t,l=HL(),f=l.field,h={[s==="left"?"insetStart":"insetEnd"]:"0",width:(r=f==null?void 0:f.height)!=null?r:f==null?void 0:f.h,height:(o=f==null?void 0:f.height)!=null?o:f==null?void 0:f.h,fontSize:f==null?void 0:f.fontSize,...l.element};return a.jsx(WL,{ref:n,__css:h,...i})});jm.id="InputElement";jm.displayName="InputElement";var E5=Pe(function(t,n){const{className:r,...o}=t,s=et("chakra-input__left-element",r);return a.jsx(jm,{ref:n,placement:"left",className:s,...o})});E5.id="InputLeftElement";E5.displayName="InputLeftElement";var mb=Pe(function(t,n){const{className:r,...o}=t,s=et("chakra-input__right-element",r);return a.jsx(jm,{ref:n,placement:"right",className:s,...o})});mb.id="InputRightElement";mb.displayName="InputRightElement";var Pm=Pe(function(t,n){const{htmlSize:r,...o}=t,s=Hn("Input",o),i=Xt(o),l=Jx(i),f=et("chakra-input",t.className);return a.jsx(_e.input,{size:r,...l,__css:s.field,ref:n,className:f})});Pm.displayName="Input";Pm.id="Input";var Im=Pe(function(t,n){const r=Qa("Link",t),{className:o,isExternal:s,...i}=Xt(t);return a.jsx(_e.a,{target:s?"_blank":void 0,rel:s?"noopener":void 0,ref:n,className:et("chakra-link",o),...i,__css:r})});Im.displayName="Link";var[VL,M5]=Tt({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),gb=Pe(function(t,n){const r=Hn("List",t),{children:o,styleType:s="none",stylePosition:i,spacing:l,...f}=Xt(t),p=_d(o),m=l?{["& > *:not(style) ~ *:not(style)"]:{mt:l}}:{};return a.jsx(VL,{value:r,children:a.jsx(_e.ul,{ref:n,listStyleType:s,listStylePosition:i,role:"list",__css:{...r.container,...m},...f,children:p})})});gb.displayName="List";var UL=Pe((e,t)=>{const{as:n,...r}=e;return a.jsx(gb,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});UL.displayName="OrderedList";var Id=Pe(function(t,n){const{as:r,...o}=t;return a.jsx(gb,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...o})});Id.displayName="UnorderedList";var No=Pe(function(t,n){const r=M5();return a.jsx(_e.li,{ref:n,...t,__css:r.item})});No.displayName="ListItem";var GL=Pe(function(t,n){const r=M5();return a.jsx(An,{ref:n,role:"presentation",...t,__css:r.icon})});GL.displayName="ListIcon";var Ua=Pe(function(t,n){const{templateAreas:r,gap:o,rowGap:s,columnGap:i,column:l,row:f,autoFlow:p,autoRows:h,templateRows:m,autoColumns:v,templateColumns:x,...C}=t,b={display:"grid",gridTemplateAreas:r,gridGap:o,gridRowGap:s,gridColumnGap:i,gridAutoColumns:v,gridColumn:l,gridRow:f,gridAutoFlow:p,gridAutoRows:h,gridTemplateRows:m,gridTemplateColumns:x};return a.jsx(_e.div,{ref:n,__css:b,...C})});Ua.displayName="Grid";function O5(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):t1(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var Za=_e("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});Za.displayName="Spacer";var D5=e=>a.jsx(_e.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});D5.displayName="StackItem";function KL(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{"&":O5(n,o=>r[o])}}var vb=Pe((e,t)=>{const{isInline:n,direction:r,align:o,justify:s,spacing:i="0.5rem",wrap:l,children:f,divider:p,className:h,shouldWrapChildren:m,...v}=e,x=n?"row":r??"column",C=d.useMemo(()=>KL({spacing:i,direction:x}),[i,x]),b=!!p,w=!m&&!b,k=d.useMemo(()=>{const j=_d(f);return w?j:j.map((I,M)=>{const E=typeof I.key<"u"?I.key:M,O=M+1===j.length,A=m?a.jsx(D5,{children:I},E):I;if(!b)return A;const R=d.cloneElement(p,{__css:C}),$=O?null:R;return a.jsxs(d.Fragment,{children:[A,$]},E)})},[p,C,b,w,m,f]),_=et("chakra-stack",h);return a.jsx(_e.div,{ref:t,display:"flex",alignItems:o,justifyContent:s,flexDirection:x,flexWrap:l,gap:b?void 0:i,className:_,...v,children:k})});vb.displayName="Stack";var R5=Pe((e,t)=>a.jsx(vb,{align:"center",...e,direction:"column",ref:t}));R5.displayName="VStack";var xb=Pe((e,t)=>a.jsx(vb,{align:"center",...e,direction:"row",ref:t}));xb.displayName="HStack";function Ww(e){return O5(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var ed=Pe(function(t,n){const{area:r,colSpan:o,colStart:s,colEnd:i,rowEnd:l,rowSpan:f,rowStart:p,...h}=t,m=jj({gridArea:r,gridColumn:Ww(o),gridRow:Ww(f),gridColumnStart:s,gridColumnEnd:i,gridRowStart:p,gridRowEnd:l});return a.jsx(_e.div,{ref:n,__css:m,...h})});ed.displayName="GridItem";var ua=Pe(function(t,n){const r=Qa("Badge",t),{className:o,...s}=Xt(t);return a.jsx(_e.span,{ref:n,className:et("chakra-badge",t.className),...s,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});ua.displayName="Badge";var Fr=Pe(function(t,n){const{borderLeftWidth:r,borderBottomWidth:o,borderTopWidth:s,borderRightWidth:i,borderWidth:l,borderStyle:f,borderColor:p,...h}=Qa("Divider",t),{className:m,orientation:v="horizontal",__css:x,...C}=Xt(t),b={vertical:{borderLeftWidth:r||i||l||"1px",height:"100%"},horizontal:{borderBottomWidth:o||s||l||"1px",width:"100%"}};return a.jsx(_e.hr,{ref:n,"aria-orientation":v,...C,__css:{...h,border:"0",borderColor:p,borderStyle:f,...b[v],...x},className:et("chakra-divider",m)})});Fr.displayName="Divider";function qL(e){const{key:t}=e;return t.length===1||t.length>1&&/[^a-zA-Z0-9]/.test(t)}function XL(e={}){const{timeout:t=300,preventDefault:n=()=>!0}=e,[r,o]=d.useState([]),s=d.useRef(),i=()=>{s.current&&(clearTimeout(s.current),s.current=null)},l=()=>{i(),s.current=setTimeout(()=>{o([]),s.current=null},t)};d.useEffect(()=>i,[]);function f(p){return h=>{if(h.key==="Backspace"){const m=[...r];m.pop(),o(m);return}if(qL(h)){const m=r.concat(h.key);n(h)&&(h.preventDefault(),h.stopPropagation()),o(m),p(m.join("")),l()}}}return f}function YL(e,t,n,r){if(t==null)return r;if(!r)return e.find(i=>n(i).toLowerCase().startsWith(t.toLowerCase()));const o=e.filter(s=>n(s).toLowerCase().startsWith(t.toLowerCase()));if(o.length>0){let s;return o.includes(r)?(s=o.indexOf(r)+1,s===o.length&&(s=0),o[s]):(s=e.indexOf(o[0]),e[s])}return r}function QL(){const e=d.useRef(new Map),t=e.current,n=d.useCallback((o,s,i,l)=>{e.current.set(i,{type:s,el:o,options:l}),o.addEventListener(s,i,l)},[]),r=d.useCallback((o,s,i,l)=>{o.removeEventListener(s,i,l),e.current.delete(i)},[]);return d.useEffect(()=>()=>{t.forEach((o,s)=>{r(o.el,o.type,s,o.options)})},[r,t]),{add:n,remove:r}}function ov(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function A5(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:o=!0,clickOnSpace:s=!0,onMouseDown:i,onMouseUp:l,onClick:f,onKeyDown:p,onKeyUp:h,tabIndex:m,onMouseOver:v,onMouseLeave:x,...C}=e,[b,w]=d.useState(!0),[k,_]=d.useState(!1),j=QL(),I=L=>{L&&L.tagName!=="BUTTON"&&w(!1)},M=b?m:m||0,E=n&&!r,O=d.useCallback(L=>{if(n){L.stopPropagation(),L.preventDefault();return}L.currentTarget.focus(),f==null||f(L)},[n,f]),D=d.useCallback(L=>{k&&ov(L)&&(L.preventDefault(),L.stopPropagation(),_(!1),j.remove(document,"keyup",D,!1))},[k,j]),A=d.useCallback(L=>{if(p==null||p(L),n||L.defaultPrevented||L.metaKey||!ov(L.nativeEvent)||b)return;const X=o&&L.key==="Enter";s&&L.key===" "&&(L.preventDefault(),_(!0)),X&&(L.preventDefault(),L.currentTarget.click()),j.add(document,"keyup",D,!1)},[n,b,p,o,s,j,D]),R=d.useCallback(L=>{if(h==null||h(L),n||L.defaultPrevented||L.metaKey||!ov(L.nativeEvent)||b)return;s&&L.key===" "&&(L.preventDefault(),_(!1),L.currentTarget.click())},[s,b,n,h]),$=d.useCallback(L=>{L.button===0&&(_(!1),j.remove(document,"mouseup",$,!1))},[j]),K=d.useCallback(L=>{if(L.button!==0)return;if(n){L.stopPropagation(),L.preventDefault();return}b||_(!0),L.currentTarget.focus({preventScroll:!0}),j.add(document,"mouseup",$,!1),i==null||i(L)},[n,b,i,j,$]),B=d.useCallback(L=>{L.button===0&&(b||_(!1),l==null||l(L))},[l,b]),U=d.useCallback(L=>{if(n){L.preventDefault();return}v==null||v(L)},[n,v]),Y=d.useCallback(L=>{k&&(L.preventDefault(),_(!1)),x==null||x(L)},[k,x]),W=yt(t,I);return b?{...C,ref:W,type:"button","aria-disabled":E?void 0:n,disabled:E,onClick:O,onMouseDown:i,onMouseUp:l,onKeyUp:h,onKeyDown:p,onMouseOver:v,onMouseLeave:x}:{...C,ref:W,role:"button","data-active":at(k),"aria-disabled":n?"true":void 0,tabIndex:E?void 0:M,onClick:O,onMouseDown:K,onMouseUp:B,onKeyUp:R,onKeyDown:A,onMouseOver:U,onMouseLeave:Y}}function ZL(e){const t=e.current;if(!t)return!1;const n=jL(t);return!n||t.contains(n)?!1:!!DL(n)}function N5(e,t){const{shouldFocus:n,visible:r,focusRef:o}=t,s=n&&!r;la(()=>{if(!s||ZL(e))return;const i=(o==null?void 0:o.current)||e.current;let l;if(i)return l=requestAnimationFrame(()=>{i.focus({preventScroll:!0})}),()=>{cancelAnimationFrame(l)}},[s,e,o])}var JL={preventScroll:!0,shouldFocus:!1};function ez(e,t=JL){const{focusRef:n,preventScroll:r,shouldFocus:o,visible:s}=t,i=tz(e)?e.current:e,l=o&&s,f=d.useRef(l),p=d.useRef(s);Xl(()=>{!p.current&&s&&(f.current=l),p.current=s},[s,l]);const h=d.useCallback(()=>{if(!(!s||!i||!f.current)&&(f.current=!1,!i.contains(document.activeElement)))if(n!=null&&n.current)requestAnimationFrame(()=>{var m;(m=n.current)==null||m.focus({preventScroll:r})});else{const m=j5(i);m.length>0&&requestAnimationFrame(()=>{m[0].focus({preventScroll:r})})}},[s,r,i,n]);la(()=>{h()},[h]),_i(i,"transitionend",h)}function tz(e){return"current"in e}var kl=(e,t)=>({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),jn={arrowShadowColor:kl("--popper-arrow-shadow-color"),arrowSize:kl("--popper-arrow-size","8px"),arrowSizeHalf:kl("--popper-arrow-size-half"),arrowBg:kl("--popper-arrow-bg"),transformOrigin:kl("--popper-transform-origin"),arrowOffset:kl("--popper-arrow-offset")};function nz(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 rz={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"},oz=e=>rz[e],Vw={scroll:!0,resize:!0};function sz(e){let t;return typeof e=="object"?t={enabled:!0,options:{...Vw,...e}}:t={enabled:e,options:Vw},t}var az={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`}},iz={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{Uw(e)},effect:({state:e})=>()=>{Uw(e)}},Uw=e=>{e.elements.popper.style.setProperty(jn.transformOrigin.var,oz(e.placement))},lz={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{cz(e)}},cz=e=>{var t;if(!e.placement)return;const n=uz(e.placement);if((t=e.elements)!=null&&t.arrow&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:jn.arrowSize.varRef,height:jn.arrowSize.varRef,zIndex:-1});const r={[jn.arrowSizeHalf.var]:`calc(${jn.arrowSize.varRef} / 2 - 1px)`,[jn.arrowOffset.var]:`calc(${jn.arrowSizeHalf.varRef} * -1)`};for(const o in r)e.elements.arrow.style.setProperty(o,r[o])}},uz=e=>{if(e.startsWith("top"))return{property:"bottom",value:jn.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:jn.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:jn.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:jn.arrowOffset.varRef}},dz={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{Gw(e)},effect:({state:e})=>()=>{Gw(e)}},Gw=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");if(!t)return;const n=nz(e.placement);n&&t.style.setProperty("--popper-arrow-default-shadow",n),Object.assign(t.style,{transform:"rotate(45deg)",background:jn.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:"var(--popper-arrow-shadow, var(--popper-arrow-default-shadow))"})},fz={"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"}},pz={"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 hz(e,t="ltr"){var n,r;const o=((n=fz[e])==null?void 0:n[t])||e;return t==="ltr"?o:(r=pz[e])!=null?r:o}var _r="top",ho="bottom",mo="right",jr="left",bb="auto",Ed=[_r,ho,mo,jr],vc="start",td="end",mz="clippingParents",T5="viewport",yu="popper",gz="reference",Kw=Ed.reduce(function(e,t){return e.concat([t+"-"+vc,t+"-"+td])},[]),$5=[].concat(Ed,[bb]).reduce(function(e,t){return e.concat([t,t+"-"+vc,t+"-"+td])},[]),vz="beforeRead",xz="read",bz="afterRead",yz="beforeMain",Cz="main",wz="afterMain",Sz="beforeWrite",kz="write",_z="afterWrite",jz=[vz,xz,bz,yz,Cz,wz,Sz,kz,_z];function ms(e){return e?(e.nodeName||"").toLowerCase():null}function Br(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Li(e){var t=Br(e).Element;return e instanceof t||e instanceof Element}function uo(e){var t=Br(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function yb(e){if(typeof ShadowRoot>"u")return!1;var t=Br(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Pz(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];!uo(s)||!ms(s)||(Object.assign(s.style,r),Object.keys(o).forEach(function(i){var l=o[i];l===!1?s.removeAttribute(i):s.setAttribute(i,l===!0?"":l)}))})}function Iz(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var o=t.elements[r],s=t.attributes[r]||{},i=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),l=i.reduce(function(f,p){return f[p]="",f},{});!uo(o)||!ms(o)||(Object.assign(o.style,l),Object.keys(s).forEach(function(f){o.removeAttribute(f)}))})}}const Ez={name:"applyStyles",enabled:!0,phase:"write",fn:Pz,effect:Iz,requires:["computeStyles"]};function hs(e){return e.split("-")[0]}var ji=Math.max,nh=Math.min,xc=Math.round;function P1(){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 L5(){return!/^((?!chrome|android).)*safari/i.test(P1())}function bc(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),o=1,s=1;t&&uo(e)&&(o=e.offsetWidth>0&&xc(r.width)/e.offsetWidth||1,s=e.offsetHeight>0&&xc(r.height)/e.offsetHeight||1);var i=Li(e)?Br(e):window,l=i.visualViewport,f=!L5()&&n,p=(r.left+(f&&l?l.offsetLeft:0))/o,h=(r.top+(f&&l?l.offsetTop:0))/s,m=r.width/o,v=r.height/s;return{width:m,height:v,top:h,right:p+m,bottom:h+v,left:p,x:p,y:h}}function Cb(e){var t=bc(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 z5(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&yb(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function ta(e){return Br(e).getComputedStyle(e)}function Mz(e){return["table","td","th"].indexOf(ms(e))>=0}function Ja(e){return((Li(e)?e.ownerDocument:e.document)||window.document).documentElement}function Em(e){return ms(e)==="html"?e:e.assignedSlot||e.parentNode||(yb(e)?e.host:null)||Ja(e)}function qw(e){return!uo(e)||ta(e).position==="fixed"?null:e.offsetParent}function Oz(e){var t=/firefox/i.test(P1()),n=/Trident/i.test(P1());if(n&&uo(e)){var r=ta(e);if(r.position==="fixed")return null}var o=Em(e);for(yb(o)&&(o=o.host);uo(o)&&["html","body"].indexOf(ms(o))<0;){var s=ta(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Md(e){for(var t=Br(e),n=qw(e);n&&Mz(n)&&ta(n).position==="static";)n=qw(n);return n&&(ms(n)==="html"||ms(n)==="body"&&ta(n).position==="static")?t:n||Oz(e)||t}function wb(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Bu(e,t,n){return ji(e,nh(t,n))}function Dz(e,t,n){var r=Bu(e,t,n);return r>n?n:r}function F5(){return{top:0,right:0,bottom:0,left:0}}function B5(e){return Object.assign({},F5(),e)}function H5(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var Rz=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,B5(typeof t!="number"?t:H5(t,Ed))};function Az(e){var t,n=e.state,r=e.name,o=e.options,s=n.elements.arrow,i=n.modifiersData.popperOffsets,l=hs(n.placement),f=wb(l),p=[jr,mo].indexOf(l)>=0,h=p?"height":"width";if(!(!s||!i)){var m=Rz(o.padding,n),v=Cb(s),x=f==="y"?_r:jr,C=f==="y"?ho:mo,b=n.rects.reference[h]+n.rects.reference[f]-i[f]-n.rects.popper[h],w=i[f]-n.rects.reference[f],k=Md(s),_=k?f==="y"?k.clientHeight||0:k.clientWidth||0:0,j=b/2-w/2,I=m[x],M=_-v[h]-m[C],E=_/2-v[h]/2+j,O=Bu(I,E,M),D=f;n.modifiersData[r]=(t={},t[D]=O,t.centerOffset=O-E,t)}}function Nz(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)||z5(t.elements.popper,o)&&(t.elements.arrow=o))}const Tz={name:"arrow",enabled:!0,phase:"main",fn:Az,effect:Nz,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function yc(e){return e.split("-")[1]}var $z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Lz(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:xc(n*o)/o||0,y:xc(r*o)/o||0}}function Xw(e){var t,n=e.popper,r=e.popperRect,o=e.placement,s=e.variation,i=e.offsets,l=e.position,f=e.gpuAcceleration,p=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=i.x,x=v===void 0?0:v,C=i.y,b=C===void 0?0:C,w=typeof h=="function"?h({x,y:b}):{x,y:b};x=w.x,b=w.y;var k=i.hasOwnProperty("x"),_=i.hasOwnProperty("y"),j=jr,I=_r,M=window;if(p){var E=Md(n),O="clientHeight",D="clientWidth";if(E===Br(n)&&(E=Ja(n),ta(E).position!=="static"&&l==="absolute"&&(O="scrollHeight",D="scrollWidth")),E=E,o===_r||(o===jr||o===mo)&&s===td){I=ho;var A=m&&E===M&&M.visualViewport?M.visualViewport.height:E[O];b-=A-r.height,b*=f?1:-1}if(o===jr||(o===_r||o===ho)&&s===td){j=mo;var R=m&&E===M&&M.visualViewport?M.visualViewport.width:E[D];x-=R-r.width,x*=f?1:-1}}var $=Object.assign({position:l},p&&$z),K=h===!0?Lz({x,y:b},Br(n)):{x,y:b};if(x=K.x,b=K.y,f){var B;return Object.assign({},$,(B={},B[I]=_?"0":"",B[j]=k?"0":"",B.transform=(M.devicePixelRatio||1)<=1?"translate("+x+"px, "+b+"px)":"translate3d("+x+"px, "+b+"px, 0)",B))}return Object.assign({},$,(t={},t[I]=_?b+"px":"",t[j]=k?x+"px":"",t.transform="",t))}function zz(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,s=n.adaptive,i=s===void 0?!0:s,l=n.roundOffsets,f=l===void 0?!0:l,p={placement:hs(t.placement),variation:yc(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,Xw(Object.assign({},p,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:f})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xw(Object.assign({},p,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Fz={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:zz,data:{}};var Kf={passive:!0};function Bz(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,s=o===void 0?!0:o,i=r.resize,l=i===void 0?!0:i,f=Br(t.elements.popper),p=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&p.forEach(function(h){h.addEventListener("scroll",n.update,Kf)}),l&&f.addEventListener("resize",n.update,Kf),function(){s&&p.forEach(function(h){h.removeEventListener("scroll",n.update,Kf)}),l&&f.removeEventListener("resize",n.update,Kf)}}const Hz={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Bz,data:{}};var Wz={left:"right",right:"left",bottom:"top",top:"bottom"};function Ep(e){return e.replace(/left|right|bottom|top/g,function(t){return Wz[t]})}var Vz={start:"end",end:"start"};function Yw(e){return e.replace(/start|end/g,function(t){return Vz[t]})}function Sb(e){var t=Br(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function kb(e){return bc(Ja(e)).left+Sb(e).scrollLeft}function Uz(e,t){var n=Br(e),r=Ja(e),o=n.visualViewport,s=r.clientWidth,i=r.clientHeight,l=0,f=0;if(o){s=o.width,i=o.height;var p=L5();(p||!p&&t==="fixed")&&(l=o.offsetLeft,f=o.offsetTop)}return{width:s,height:i,x:l+kb(e),y:f}}function Gz(e){var t,n=Ja(e),r=Sb(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=ji(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=ji(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),l=-r.scrollLeft+kb(e),f=-r.scrollTop;return ta(o||n).direction==="rtl"&&(l+=ji(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:l,y:f}}function _b(e){var t=ta(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function W5(e){return["html","body","#document"].indexOf(ms(e))>=0?e.ownerDocument.body:uo(e)&&_b(e)?e:W5(Em(e))}function Hu(e,t){var n;t===void 0&&(t=[]);var r=W5(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Br(r),i=o?[s].concat(s.visualViewport||[],_b(r)?r:[]):r,l=t.concat(i);return o?l:l.concat(Hu(Em(i)))}function I1(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Kz(e,t){var n=bc(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 Qw(e,t,n){return t===T5?I1(Uz(e,n)):Li(t)?Kz(t,n):I1(Gz(Ja(e)))}function qz(e){var t=Hu(Em(e)),n=["absolute","fixed"].indexOf(ta(e).position)>=0,r=n&&uo(e)?Md(e):e;return Li(r)?t.filter(function(o){return Li(o)&&z5(o,r)&&ms(o)!=="body"}):[]}function Xz(e,t,n,r){var o=t==="clippingParents"?qz(e):[].concat(t),s=[].concat(o,[n]),i=s[0],l=s.reduce(function(f,p){var h=Qw(e,p,r);return f.top=ji(h.top,f.top),f.right=nh(h.right,f.right),f.bottom=nh(h.bottom,f.bottom),f.left=ji(h.left,f.left),f},Qw(e,i,r));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function V5(e){var t=e.reference,n=e.element,r=e.placement,o=r?hs(r):null,s=r?yc(r):null,i=t.x+t.width/2-n.width/2,l=t.y+t.height/2-n.height/2,f;switch(o){case _r:f={x:i,y:t.y-n.height};break;case ho:f={x:i,y:t.y+t.height};break;case mo:f={x:t.x+t.width,y:l};break;case jr:f={x:t.x-n.width,y:l};break;default:f={x:t.x,y:t.y}}var p=o?wb(o):null;if(p!=null){var h=p==="y"?"height":"width";switch(s){case vc:f[p]=f[p]-(t[h]/2-n[h]/2);break;case td:f[p]=f[p]+(t[h]/2-n[h]/2);break}}return f}function nd(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,s=n.strategy,i=s===void 0?e.strategy:s,l=n.boundary,f=l===void 0?mz:l,p=n.rootBoundary,h=p===void 0?T5:p,m=n.elementContext,v=m===void 0?yu:m,x=n.altBoundary,C=x===void 0?!1:x,b=n.padding,w=b===void 0?0:b,k=B5(typeof w!="number"?w:H5(w,Ed)),_=v===yu?gz:yu,j=e.rects.popper,I=e.elements[C?_:v],M=Xz(Li(I)?I:I.contextElement||Ja(e.elements.popper),f,h,i),E=bc(e.elements.reference),O=V5({reference:E,element:j,strategy:"absolute",placement:o}),D=I1(Object.assign({},j,O)),A=v===yu?D:E,R={top:M.top-A.top+k.top,bottom:A.bottom-M.bottom+k.bottom,left:M.left-A.left+k.left,right:A.right-M.right+k.right},$=e.modifiersData.offset;if(v===yu&&$){var K=$[o];Object.keys(R).forEach(function(B){var U=[mo,ho].indexOf(B)>=0?1:-1,Y=[_r,ho].indexOf(B)>=0?"y":"x";R[B]+=K[Y]*U})}return R}function Yz(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,s=n.rootBoundary,i=n.padding,l=n.flipVariations,f=n.allowedAutoPlacements,p=f===void 0?$5:f,h=yc(r),m=h?l?Kw:Kw.filter(function(C){return yc(C)===h}):Ed,v=m.filter(function(C){return p.indexOf(C)>=0});v.length===0&&(v=m);var x=v.reduce(function(C,b){return C[b]=nd(e,{placement:b,boundary:o,rootBoundary:s,padding:i})[hs(b)],C},{});return Object.keys(x).sort(function(C,b){return x[C]-x[b]})}function Qz(e){if(hs(e)===bb)return[];var t=Ep(e);return[Yw(e),t,Yw(t)]}function Zz(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,l=i===void 0?!0:i,f=n.fallbackPlacements,p=n.padding,h=n.boundary,m=n.rootBoundary,v=n.altBoundary,x=n.flipVariations,C=x===void 0?!0:x,b=n.allowedAutoPlacements,w=t.options.placement,k=hs(w),_=k===w,j=f||(_||!C?[Ep(w)]:Qz(w)),I=[w].concat(j).reduce(function(oe,V){return oe.concat(hs(V)===bb?Yz(t,{placement:V,boundary:h,rootBoundary:m,padding:p,flipVariations:C,allowedAutoPlacements:b}):V)},[]),M=t.rects.reference,E=t.rects.popper,O=new Map,D=!0,A=I[0],R=0;R=0,Y=U?"width":"height",W=nd(t,{placement:$,boundary:h,rootBoundary:m,altBoundary:v,padding:p}),L=U?B?mo:jr:B?ho:_r;M[Y]>E[Y]&&(L=Ep(L));var X=Ep(L),z=[];if(s&&z.push(W[K]<=0),l&&z.push(W[L]<=0,W[X]<=0),z.every(function(oe){return oe})){A=$,D=!1;break}O.set($,z)}if(D)for(var q=C?3:1,ne=function(V){var G=I.find(function(J){var se=O.get(J);if(se)return se.slice(0,V).every(function(re){return re})});if(G)return A=G,"break"},Q=q;Q>0;Q--){var ie=ne(Q);if(ie==="break")break}t.placement!==A&&(t.modifiersData[r]._skip=!0,t.placement=A,t.reset=!0)}}const Jz={name:"flip",enabled:!0,phase:"main",fn:Zz,requiresIfExists:["offset"],data:{_skip:!1}};function Zw(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 Jw(e){return[_r,mo,ho,jr].some(function(t){return e[t]>=0})}function eF(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=nd(t,{elementContext:"reference"}),l=nd(t,{altBoundary:!0}),f=Zw(i,r),p=Zw(l,o,s),h=Jw(f),m=Jw(p);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:p,isReferenceHidden:h,hasPopperEscaped:m},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":m})}const tF={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:eF};function nF(e,t,n){var r=hs(e),o=[jr,_r].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,i=s[0],l=s[1];return i=i||0,l=(l||0)*o,[jr,mo].indexOf(r)>=0?{x:l,y:i}:{x:i,y:l}}function rF(e){var t=e.state,n=e.options,r=e.name,o=n.offset,s=o===void 0?[0,0]:o,i=$5.reduce(function(h,m){return h[m]=nF(m,t.rects,s),h},{}),l=i[t.placement],f=l.x,p=l.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=p),t.modifiersData[r]=i}const oF={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:rF};function sF(e){var t=e.state,n=e.name;t.modifiersData[n]=V5({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const aF={name:"popperOffsets",enabled:!0,phase:"read",fn:sF,data:{}};function iF(e){return e==="x"?"y":"x"}function lF(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,l=i===void 0?!1:i,f=n.boundary,p=n.rootBoundary,h=n.altBoundary,m=n.padding,v=n.tether,x=v===void 0?!0:v,C=n.tetherOffset,b=C===void 0?0:C,w=nd(t,{boundary:f,rootBoundary:p,padding:m,altBoundary:h}),k=hs(t.placement),_=yc(t.placement),j=!_,I=wb(k),M=iF(I),E=t.modifiersData.popperOffsets,O=t.rects.reference,D=t.rects.popper,A=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,R=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),$=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,K={x:0,y:0};if(E){if(s){var B,U=I==="y"?_r:jr,Y=I==="y"?ho:mo,W=I==="y"?"height":"width",L=E[I],X=L+w[U],z=L-w[Y],q=x?-D[W]/2:0,ne=_===vc?O[W]:D[W],Q=_===vc?-D[W]:-O[W],ie=t.elements.arrow,oe=x&&ie?Cb(ie):{width:0,height:0},V=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:F5(),G=V[U],J=V[Y],se=Bu(0,O[W],oe[W]),re=j?O[W]/2-q-se-G-R.mainAxis:ne-se-G-R.mainAxis,fe=j?-O[W]/2+q+se+J+R.mainAxis:Q+se+J+R.mainAxis,de=t.elements.arrow&&Md(t.elements.arrow),me=de?I==="y"?de.clientTop||0:de.clientLeft||0:0,ye=(B=$==null?void 0:$[I])!=null?B:0,he=L+re-ye-me,ue=L+fe-ye,De=Bu(x?nh(X,he):X,L,x?ji(z,ue):z);E[I]=De,K[I]=De-L}if(l){var je,Be=I==="x"?_r:jr,rt=I==="x"?ho:mo,Ue=E[M],Ct=M==="y"?"height":"width",Xe=Ue+w[Be],tt=Ue-w[rt],ve=[_r,jr].indexOf(k)!==-1,Re=(je=$==null?void 0:$[M])!=null?je:0,st=ve?Xe:Ue-O[Ct]-D[Ct]-Re+R.altAxis,mt=ve?Ue+O[Ct]+D[Ct]-Re-R.altAxis:tt,ge=x&&ve?Dz(st,Ue,mt):Bu(x?st:Xe,Ue,x?mt:tt);E[M]=ge,K[M]=ge-Ue}t.modifiersData[r]=K}}const cF={name:"preventOverflow",enabled:!0,phase:"main",fn:lF,requiresIfExists:["offset"]};function uF(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function dF(e){return e===Br(e)||!uo(e)?Sb(e):uF(e)}function fF(e){var t=e.getBoundingClientRect(),n=xc(t.width)/e.offsetWidth||1,r=xc(t.height)/e.offsetHeight||1;return n!==1||r!==1}function pF(e,t,n){n===void 0&&(n=!1);var r=uo(t),o=uo(t)&&fF(t),s=Ja(t),i=bc(e,o,n),l={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&((ms(t)!=="body"||_b(s))&&(l=dF(t)),uo(t)?(f=bc(t,!0),f.x+=t.clientLeft,f.y+=t.clientTop):s&&(f.x=kb(s))),{x:i.left+l.scrollLeft-f.x,y:i.top+l.scrollTop-f.y,width:i.width,height:i.height}}function hF(e){var t=new Map,n=new Set,r=[];e.forEach(function(s){t.set(s.name,s)});function o(s){n.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(l){if(!n.has(l)){var f=t.get(l);f&&o(f)}}),r.push(s)}return e.forEach(function(s){n.has(s.name)||o(s)}),r}function mF(e){var t=hF(e);return jz.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function gF(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function vF(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 eS={placement:"bottom",modifiers:[],strategy:"absolute"};function tS(){for(var e=arguments.length,t=new Array(e),n=0;n{}),j=d.useCallback(()=>{var R;!t||!C.current||!b.current||((R=_.current)==null||R.call(_),w.current=yF(C.current,b.current,{placement:k,modifiers:[dz,lz,iz,{...az,enabled:!!v},{name:"eventListeners",...sz(i)},{name:"arrow",options:{padding:s}},{name:"offset",options:{offset:l??[0,f]}},{name:"flip",enabled:!!p,options:{padding:8}},{name:"preventOverflow",enabled:!!m,options:{boundary:h}},...n??[]],strategy:o}),w.current.forceUpdate(),_.current=w.current.destroy)},[k,t,n,v,i,s,l,f,p,m,h,o]);d.useEffect(()=>()=>{var R;!C.current&&!b.current&&((R=w.current)==null||R.destroy(),w.current=null)},[]);const I=d.useCallback(R=>{C.current=R,j()},[j]),M=d.useCallback((R={},$=null)=>({...R,ref:yt(I,$)}),[I]),E=d.useCallback(R=>{b.current=R,j()},[j]),O=d.useCallback((R={},$=null)=>({...R,ref:yt(E,$),style:{...R.style,position:o,minWidth:v?void 0:"max-content",inset:"0 auto auto 0"}}),[o,E,v]),D=d.useCallback((R={},$=null)=>{const{size:K,shadowColor:B,bg:U,style:Y,...W}=R;return{...W,ref:$,"data-popper-arrow":"",style:CF(R)}},[]),A=d.useCallback((R={},$=null)=>({...R,ref:$,"data-popper-arrow-inner":""}),[]);return{update(){var R;(R=w.current)==null||R.update()},forceUpdate(){var R;(R=w.current)==null||R.forceUpdate()},transformOrigin:jn.transformOrigin.varRef,referenceRef:I,popperRef:E,getPopperProps:O,getArrowProps:D,getArrowInnerProps:A,getReferenceProps:M}}function CF(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 Pb(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=tn(n),i=tn(t),[l,f]=d.useState(e.defaultIsOpen||!1),p=r!==void 0?r:l,h=r!==void 0,m=d.useId(),v=o??`disclosure-${m}`,x=d.useCallback(()=>{h||f(!1),i==null||i()},[h,i]),C=d.useCallback(()=>{h||f(!0),s==null||s()},[h,s]),b=d.useCallback(()=>{p?x():C()},[p,C,x]);function w(_={}){return{..._,"aria-expanded":p,"aria-controls":v,onClick(j){var I;(I=_.onClick)==null||I.call(_,j),b()}}}function k(_={}){return{..._,hidden:!p,id:v}}return{isOpen:p,onOpen:C,onClose:x,onToggle:b,isControlled:h,getButtonProps:w,getDisclosureProps:k}}function wF(e){const{ref:t,handler:n,enabled:r=!0}=e,o=tn(n),i=d.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;d.useEffect(()=>{if(!r)return;const l=m=>{sv(m,t)&&(i.isPointerDown=!0)},f=m=>{if(i.ignoreEmulatedMouseEvents){i.ignoreEmulatedMouseEvents=!1;return}i.isPointerDown&&n&&sv(m,t)&&(i.isPointerDown=!1,o(m))},p=m=>{i.ignoreEmulatedMouseEvents=!0,n&&i.isPointerDown&&sv(m,t)&&(i.isPointerDown=!1,o(m))},h=U5(t.current);return h.addEventListener("mousedown",l,!0),h.addEventListener("mouseup",f,!0),h.addEventListener("touchstart",l,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",l,!0),h.removeEventListener("mouseup",f,!0),h.removeEventListener("touchstart",l,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,i,r])}function sv(e,t){var n;const r=e.target;return r&&!U5(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}function U5(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function G5(e){const{isOpen:t,ref:n}=e,[r,o]=d.useState(t),[s,i]=d.useState(!1);return d.useEffect(()=>{s||(o(t),i(!0))},[t,s,r]),_i(()=>n.current,"animationend",()=>{o(t)}),{present:!(t?!1:!r),onComplete(){var f;const p=_L(n.current),h=new p.CustomEvent("animationend",{bubbles:!0});(f=n.current)==null||f.dispatchEvent(h)}}}function Ib(e){const{wasSelected:t,enabled:n,isSelected:r,mode:o="unmount"}=e;return!!(!n||r||o==="keepMounted"&&t)}var[SF,kF,_F,jF]=Yx(),[PF,Od]=Tt({strict:!1,name:"MenuContext"});function IF(e,...t){const n=d.useId(),r=e||n;return d.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}function K5(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function nS(e){return K5(e).activeElement===e}function EF(e={}){const{id:t,closeOnSelect:n=!0,closeOnBlur:r=!0,initialFocusRef:o,autoSelect:s=!0,isLazy:i,isOpen:l,defaultIsOpen:f,onClose:p,onOpen:h,placement:m="bottom-start",lazyBehavior:v="unmount",direction:x,computePositionOnMount:C=!1,...b}=e,w=d.useRef(null),k=d.useRef(null),_=_F(),j=d.useCallback(()=>{requestAnimationFrame(()=>{var ie;(ie=w.current)==null||ie.focus({preventScroll:!1})})},[]),I=d.useCallback(()=>{const ie=setTimeout(()=>{var oe;if(o)(oe=o.current)==null||oe.focus();else{const V=_.firstEnabled();V&&B(V.index)}});X.current.add(ie)},[_,o]),M=d.useCallback(()=>{const ie=setTimeout(()=>{const oe=_.lastEnabled();oe&&B(oe.index)});X.current.add(ie)},[_]),E=d.useCallback(()=>{h==null||h(),s?I():j()},[s,I,j,h]),{isOpen:O,onOpen:D,onClose:A,onToggle:R}=Pb({isOpen:l,defaultIsOpen:f,onClose:p,onOpen:E});wF({enabled:O&&r,ref:w,handler:ie=>{var oe;(oe=k.current)!=null&&oe.contains(ie.target)||A()}});const $=jb({...b,enabled:O||C,placement:m,direction:x}),[K,B]=d.useState(-1);la(()=>{O||B(-1)},[O]),N5(w,{focusRef:k,visible:O,shouldFocus:!0});const U=G5({isOpen:O,ref:w}),[Y,W]=IF(t,"menu-button","menu-list"),L=d.useCallback(()=>{D(),j()},[D,j]),X=d.useRef(new Set([]));$F(()=>{X.current.forEach(ie=>clearTimeout(ie)),X.current.clear()});const z=d.useCallback(()=>{D(),I()},[I,D]),q=d.useCallback(()=>{D(),M()},[D,M]),ne=d.useCallback(()=>{var ie,oe;const V=K5(w.current),G=(ie=w.current)==null?void 0:ie.contains(V.activeElement);if(!(O&&!G))return;const se=(oe=_.item(K))==null?void 0:oe.node;se==null||se.focus()},[O,K,_]),Q=d.useRef(null);return{openAndFocusMenu:L,openAndFocusFirstItem:z,openAndFocusLastItem:q,onTransitionEnd:ne,unstable__animationState:U,descendants:_,popper:$,buttonId:Y,menuId:W,forceUpdate:$.forceUpdate,orientation:"vertical",isOpen:O,onToggle:R,onOpen:D,onClose:A,menuRef:w,buttonRef:k,focusedIndex:K,closeOnSelect:n,closeOnBlur:r,autoSelect:s,setFocusedIndex:B,isLazy:i,lazyBehavior:v,initialFocusRef:o,rafId:Q}}function MF(e={},t=null){const n=Od(),{onToggle:r,popper:o,openAndFocusFirstItem:s,openAndFocusLastItem:i}=n,l=d.useCallback(f=>{const p=f.key,m={Enter:s,ArrowDown:s,ArrowUp:i}[p];m&&(f.preventDefault(),f.stopPropagation(),m(f))},[s,i]);return{...e,ref:yt(n.buttonRef,t,o.referenceRef),id:n.buttonId,"data-active":at(n.isOpen),"aria-expanded":n.isOpen,"aria-haspopup":"menu","aria-controls":n.menuId,onClick:Fe(e.onClick,r),onKeyDown:Fe(e.onKeyDown,l)}}function E1(e){var t;return NF(e)&&!!((t=e==null?void 0:e.getAttribute("role"))!=null&&t.startsWith("menuitem"))}function OF(e={},t=null){const n=Od();if(!n)throw new Error("useMenuContext: context is undefined. Seems you forgot to wrap component within ");const{focusedIndex:r,setFocusedIndex:o,menuRef:s,isOpen:i,onClose:l,menuId:f,isLazy:p,lazyBehavior:h,unstable__animationState:m}=n,v=kF(),x=XL({preventDefault:k=>k.key!==" "&&E1(k.target)}),C=d.useCallback(k=>{if(!k.currentTarget.contains(k.target))return;const _=k.key,I={Tab:E=>E.preventDefault(),Escape:l,ArrowDown:()=>{const E=v.nextEnabled(r);E&&o(E.index)},ArrowUp:()=>{const E=v.prevEnabled(r);E&&o(E.index)}}[_];if(I){k.preventDefault(),I(k);return}const M=x(E=>{const O=YL(v.values(),E,D=>{var A,R;return(R=(A=D==null?void 0:D.node)==null?void 0:A.textContent)!=null?R:""},v.item(r));if(O){const D=v.indexOf(O.node);o(D)}});E1(k.target)&&M(k)},[v,r,x,l,o]),b=d.useRef(!1);i&&(b.current=!0);const w=Ib({wasSelected:b.current,enabled:p,mode:h,isSelected:m.present});return{...e,ref:yt(s,t),children:w?e.children:null,tabIndex:-1,role:"menu",id:f,style:{...e.style,transformOrigin:"var(--popper-transform-origin)"},"aria-orientation":"vertical",onKeyDown:Fe(e.onKeyDown,C)}}function DF(e={}){const{popper:t,isOpen:n}=Od();return t.getPopperProps({...e,style:{visibility:n?"visible":"hidden",...e.style}})}function q5(e={},t=null){const{onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onClick:s,onFocus:i,isDisabled:l,isFocusable:f,closeOnSelect:p,type:h,...m}=e,v=Od(),{setFocusedIndex:x,focusedIndex:C,closeOnSelect:b,onClose:w,menuRef:k,isOpen:_,menuId:j,rafId:I}=v,M=d.useRef(null),E=`${j}-menuitem-${d.useId()}`,{index:O,register:D}=jF({disabled:l&&!f}),A=d.useCallback(L=>{n==null||n(L),!l&&x(O)},[x,O,l,n]),R=d.useCallback(L=>{r==null||r(L),M.current&&!nS(M.current)&&A(L)},[A,r]),$=d.useCallback(L=>{o==null||o(L),!l&&x(-1)},[x,l,o]),K=d.useCallback(L=>{s==null||s(L),E1(L.currentTarget)&&(p??b)&&w()},[w,s,b,p]),B=d.useCallback(L=>{i==null||i(L),x(O)},[x,i,O]),U=O===C,Y=l&&!f;la(()=>{_&&(U&&!Y&&M.current?(I.current&&cancelAnimationFrame(I.current),I.current=requestAnimationFrame(()=>{var L;(L=M.current)==null||L.focus(),I.current=null})):k.current&&!nS(k.current)&&k.current.focus({preventScroll:!0}))},[U,Y,k,_]);const W=A5({onClick:K,onFocus:B,onMouseEnter:A,onMouseMove:R,onMouseLeave:$,ref:yt(D,M,t),isDisabled:l,isFocusable:f});return{...m,...W,type:h??W.type,id:E,role:"menuitem",tabIndex:U?0:-1}}function RF(e={},t=null){const{type:n="radio",isChecked:r,...o}=e;return{...q5(o,t),role:`menuitem${n}`,"aria-checked":r}}function AF(e={}){const{children:t,type:n="radio",value:r,defaultValue:o,onChange:s,...i}=e,f=n==="radio"?"":[],[p,h]=Rc({defaultValue:o??f,value:r,onChange:s}),m=d.useCallback(C=>{if(n==="radio"&&typeof p=="string"&&h(C),n==="checkbox"&&Array.isArray(p)){const b=p.includes(C)?p.filter(w=>w!==C):p.concat(C);h(b)}},[p,h,n]),x=_d(t).map(C=>{if(C.type.id!=="MenuItemOption")return C;const b=k=>{var _,j;m(C.props.value),(j=(_=C.props).onClick)==null||j.call(_,k)},w=n==="radio"?C.props.value===p:p.includes(C.props.value);return d.cloneElement(C,{type:n,onClick:b,isChecked:w})});return{...i,children:x}}function NF(e){var t;if(!TF(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function TF(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function $F(e,t=[]){return d.useEffect(()=>()=>e(),t)}var[LF,Tc]=Tt({name:"MenuStylesContext",errorMessage:`useMenuStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Dd=e=>{const{children:t}=e,n=Hn("Menu",e),r=Xt(e),{direction:o}=xd(),{descendants:s,...i}=EF({...r,direction:o}),l=d.useMemo(()=>i,[i]),{isOpen:f,onClose:p,forceUpdate:h}=l;return a.jsx(SF,{value:s,children:a.jsx(PF,{value:l,children:a.jsx(LF,{value:n,children:Ax(t,{isOpen:f,onClose:p,forceUpdate:h})})})})};Dd.displayName="Menu";var X5=Pe((e,t)=>{const n=Tc();return a.jsx(_e.span,{ref:t,...e,__css:n.command,className:"chakra-menu__command"})});X5.displayName="MenuCommand";var Y5=Pe((e,t)=>{const{type:n,...r}=e,o=Tc(),s=r.as||n?n??void 0:"button",i=d.useMemo(()=>({textDecoration:"none",color:"inherit",userSelect:"none",display:"flex",width:"100%",alignItems:"center",textAlign:"start",flex:"0 0 auto",outline:0,...o.item}),[o.item]);return a.jsx(_e.button,{ref:t,type:s,...r,__css:i})}),Eb=e=>{const{className:t,children:n,...r}=e,o=Tc(),s=d.Children.only(n),i=d.isValidElement(s)?d.cloneElement(s,{focusable:"false","aria-hidden":!0,className:et("chakra-menu__icon",s.props.className)}):null,l=et("chakra-menu__icon-wrapper",t);return a.jsx(_e.span,{className:l,...r,__css:o.icon,children:i})};Eb.displayName="MenuIcon";var Ht=Pe((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",command:o,commandSpacing:s="0.75rem",children:i,...l}=e,f=q5(l,t),h=n||o?a.jsx("span",{style:{pointerEvents:"none",flex:1},children:i}):i;return a.jsxs(Y5,{...f,className:et("chakra-menu__menuitem",f.className),children:[n&&a.jsx(Eb,{fontSize:"0.8em",marginEnd:r,children:n}),h,o&&a.jsx(X5,{marginStart:s,children:o})]})});Ht.displayName="MenuItem";var zF={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"}}},FF=_e(gn.div),Ga=Pe(function(t,n){var r,o;const{rootProps:s,motionProps:i,...l}=t,{isOpen:f,onTransitionEnd:p,unstable__animationState:h}=Od(),m=OF(l,n),v=DF(s),x=Tc();return a.jsx(_e.div,{...v,__css:{zIndex:(o=t.zIndex)!=null?o:(r=x.list)==null?void 0:r.zIndex},children:a.jsx(FF,{variants:zF,initial:!1,animate:f?"enter":"exit",__css:{outline:0,...x.list},...i,className:et("chakra-menu__menu-list",m.className),...m,onUpdate:p,onAnimationComplete:cm(h.onComplete,m.onAnimationComplete)})})});Ga.displayName="MenuList";var Cc=Pe((e,t)=>{const{title:n,children:r,className:o,...s}=e,i=et("chakra-menu__group__title",o),l=Tc();return a.jsxs("div",{ref:t,className:"chakra-menu__group",role:"group",children:[n&&a.jsx(_e.p,{className:i,...s,__css:l.groupTitle,children:n}),r]})});Cc.displayName="MenuGroup";var Q5=e=>{const{className:t,title:n,...r}=e,o=AF(r);return a.jsx(Cc,{title:n,className:et("chakra-menu__option-group",t),...o})};Q5.displayName="MenuOptionGroup";var BF=Pe((e,t)=>{const n=Tc();return a.jsx(_e.button,{ref:t,...e,__css:{display:"inline-flex",appearance:"none",alignItems:"center",outline:0,...n.button}})}),Rd=Pe((e,t)=>{const{children:n,as:r,...o}=e,s=MF(o,t),i=r||BF;return a.jsx(i,{...s,className:et("chakra-menu__menu-button",e.className),children:a.jsx(_e.span,{__css:{pointerEvents:"none",flex:"1 1 auto",minW:0},children:e.children})})});Rd.displayName="MenuButton";var HF=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"})}),rh=Pe((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",...o}=e,s=RF(o,t);return a.jsxs(Y5,{...s,className:et("chakra-menu__menuitem-option",o.className),children:[n!==null&&a.jsx(Eb,{fontSize:"0.8em",marginEnd:r,opacity:e.isChecked?1:0,children:n||a.jsx(HF,{})}),a.jsx("span",{style:{flex:1},children:s.children})]})});rh.id="MenuItemOption";rh.displayName="MenuItemOption";var WF={slideInBottom:{...m1,custom:{offsetY:16,reverse:!0}},slideInRight:{...m1,custom:{offsetX:16,reverse:!0}},scale:{...P3,custom:{initialScale:.95,reverse:!0}},none:{}},VF=_e(gn.section),UF=e=>WF[e||"none"],Z5=d.forwardRef((e,t)=>{const{preset:n,motionProps:r=UF(n),...o}=e;return a.jsx(VF,{ref:t,...r,...o})});Z5.displayName="ModalTransition";var GF=Object.defineProperty,KF=(e,t,n)=>t in e?GF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qF=(e,t,n)=>(KF(e,typeof t!="symbol"?t+"":t,n),n),XF=class{constructor(){qF(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}},M1=new XF;function J5(e,t){const[n,r]=d.useState(0);return d.useEffect(()=>{const o=e.current;if(o){if(t){const s=M1.add(o);r(s)}return()=>{M1.remove(o),r(0)}}},[t,e]),n}var YF=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},_l=new WeakMap,qf=new WeakMap,Xf={},av=0,eP=function(e){return e&&(e.host||eP(e.parentNode))},QF=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=eP(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})},ZF=function(e,t,n,r){var o=QF(t,Array.isArray(e)?e:[e]);Xf[n]||(Xf[n]=new WeakMap);var s=Xf[n],i=[],l=new Set,f=new Set(o),p=function(m){!m||l.has(m)||(l.add(m),p(m.parentNode))};o.forEach(p);var h=function(m){!m||f.has(m)||Array.prototype.forEach.call(m.children,function(v){if(l.has(v))h(v);else{var x=v.getAttribute(r),C=x!==null&&x!=="false",b=(_l.get(v)||0)+1,w=(s.get(v)||0)+1;_l.set(v,b),s.set(v,w),i.push(v),b===1&&C&&qf.set(v,!0),w===1&&v.setAttribute(n,"true"),C||v.setAttribute(r,"true")}})};return h(t),l.clear(),av++,function(){i.forEach(function(m){var v=_l.get(m)-1,x=s.get(m)-1;_l.set(m,v),s.set(m,x),v||(qf.has(m)||m.removeAttribute(r),qf.delete(m)),x||m.removeAttribute(n)}),av--,av||(_l=new WeakMap,_l=new WeakMap,qf=new WeakMap,Xf={})}},JF=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||YF(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),ZF(r,o,n,"aria-hidden")):function(){return null}};function eB(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:o=!0,closeOnEsc:s=!0,useInert:i=!0,onOverlayClick:l,onEsc:f}=e,p=d.useRef(null),h=d.useRef(null),[m,v,x]=nB(r,"chakra-modal","chakra-modal--header","chakra-modal--body");tB(p,t&&i);const C=J5(p,t),b=d.useRef(null),w=d.useCallback(A=>{b.current=A.target},[]),k=d.useCallback(A=>{A.key==="Escape"&&(A.stopPropagation(),s&&(n==null||n()),f==null||f())},[s,n,f]),[_,j]=d.useState(!1),[I,M]=d.useState(!1),E=d.useCallback((A={},R=null)=>({role:"dialog",...A,ref:yt(R,p),id:m,tabIndex:-1,"aria-modal":!0,"aria-labelledby":_?v:void 0,"aria-describedby":I?x:void 0,onClick:Fe(A.onClick,$=>$.stopPropagation())}),[x,I,m,v,_]),O=d.useCallback(A=>{A.stopPropagation(),b.current===A.target&&M1.isTopModal(p.current)&&(o&&(n==null||n()),l==null||l())},[n,o,l]),D=d.useCallback((A={},R=null)=>({...A,ref:yt(R,h),onClick:Fe(A.onClick,O),onKeyDown:Fe(A.onKeyDown,k),onMouseDown:Fe(A.onMouseDown,w)}),[k,w,O]);return{isOpen:t,onClose:n,headerId:v,bodyId:x,setBodyMounted:M,setHeaderMounted:j,dialogRef:p,overlayRef:h,getDialogProps:E,getDialogContainerProps:D,index:C}}function tB(e,t){const n=e.current;d.useEffect(()=>{if(!(!e.current||!t))return JF(e.current)},[t,e,n])}function nB(e,...t){const n=d.useId(),r=e||n;return d.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}var[rB,$c]=Tt({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[oB,zi]=Tt({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),Fi=e=>{const t={scrollBehavior:"outside",autoFocus:!0,trapFocus:!0,returnFocusOnClose:!0,blockScrollOnMount:!0,allowPinchZoom:!1,motionPreset:"scale",lockFocusAcrossFrames:!0,...e},{portalProps:n,children:r,autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:l,returnFocusOnClose:f,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:x,onCloseComplete:C}=t,b=Hn("Modal",t),k={...eB(t),autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:l,returnFocusOnClose:f,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:x};return a.jsx(oB,{value:k,children:a.jsx(rB,{value:b,children:a.jsx(nr,{onExitComplete:C,children:k.isOpen&&a.jsx(wd,{...n,children:r})})})})};Fi.displayName="Modal";var Mp="right-scroll-bar-position",Op="width-before-scroll-bar",sB="with-scroll-bars-hidden",aB="--removed-body-scroll-bar-size",tP=Y3(),iv=function(){},Mm=d.forwardRef(function(e,t){var n=d.useRef(null),r=d.useState({onScrollCapture:iv,onWheelCapture:iv,onTouchMoveCapture:iv}),o=r[0],s=r[1],i=e.forwardProps,l=e.children,f=e.className,p=e.removeScrollBar,h=e.enabled,m=e.shards,v=e.sideCar,x=e.noIsolation,C=e.inert,b=e.allowPinchZoom,w=e.as,k=w===void 0?"div":w,_=e.gapMode,j=K3(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),I=v,M=G3([n,t]),E=us(us({},j),o);return d.createElement(d.Fragment,null,h&&d.createElement(I,{sideCar:tP,removeScrollBar:p,shards:m,noIsolation:x,inert:C,setCallbacks:s,allowPinchZoom:!!b,lockRef:n,gapMode:_}),i?d.cloneElement(d.Children.only(l),us(us({},E),{ref:M})):d.createElement(k,us({},E,{className:f,ref:M}),l))});Mm.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Mm.classNames={fullWidth:Op,zeroRight:Mp};var rS,iB=function(){if(rS)return rS;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function lB(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=iB();return t&&e.setAttribute("nonce",t),e}function cB(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function uB(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var dB=function(){var e=0,t=null;return{add:function(n){e==0&&(t=lB())&&(cB(t,n),uB(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},fB=function(){var e=dB();return function(t,n){d.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},nP=function(){var e=fB(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},pB={left:0,top:0,right:0,gap:0},lv=function(e){return parseInt(e||"",10)||0},hB=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[lv(n),lv(r),lv(o)]},mB=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return pB;var t=hB(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])}},gB=nP(),vB=function(e,t,n,r){var o=e.left,s=e.top,i=e.right,l=e.gap;return n===void 0&&(n="margin"),` - .`.concat(sB,` { - overflow: hidden `).concat(r,`; - padding-right: `).concat(l,"px ").concat(r,`; - } - body { - overflow: hidden `).concat(r,`; - overscroll-behavior: contain; - `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` - padding-left: `.concat(o,`px; - padding-top: `).concat(s,`px; - padding-right: `).concat(i,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(l,"px ").concat(r,`; - `),n==="padding"&&"padding-right: ".concat(l,"px ").concat(r,";")].filter(Boolean).join(""),` - } - - .`).concat(Mp,` { - right: `).concat(l,"px ").concat(r,`; - } - - .`).concat(Op,` { - margin-right: `).concat(l,"px ").concat(r,`; - } - - .`).concat(Mp," .").concat(Mp,` { - right: 0 `).concat(r,`; - } - - .`).concat(Op," .").concat(Op,` { - margin-right: 0 `).concat(r,`; - } - - body { - `).concat(aB,": ").concat(l,`px; - } -`)},xB=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,s=d.useMemo(function(){return mB(o)},[o]);return d.createElement(gB,{styles:vB(s,!t,o,n?"":"!important")})},O1=!1;if(typeof window<"u")try{var Yf=Object.defineProperty({},"passive",{get:function(){return O1=!0,!0}});window.addEventListener("test",Yf,Yf),window.removeEventListener("test",Yf,Yf)}catch{O1=!1}var jl=O1?{passive:!1}:!1,bB=function(e){return e.tagName==="TEXTAREA"},rP=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!bB(e)&&n[t]==="visible")},yB=function(e){return rP(e,"overflowY")},CB=function(e){return rP(e,"overflowX")},oS=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=oP(e,r);if(o){var s=sP(e,r),i=s[1],l=s[2];if(i>l)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},wB=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},SB=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},oP=function(e,t){return e==="v"?yB(t):CB(t)},sP=function(e,t){return e==="v"?wB(t):SB(t)},kB=function(e,t){return e==="h"&&t==="rtl"?-1:1},_B=function(e,t,n,r,o){var s=kB(e,window.getComputedStyle(t).direction),i=s*r,l=n.target,f=t.contains(l),p=!1,h=i>0,m=0,v=0;do{var x=sP(e,l),C=x[0],b=x[1],w=x[2],k=b-w-s*C;(C||k)&&oP(e,l)&&(m+=k,v+=C),l=l.parentNode}while(!f&&l!==document.body||f&&(t.contains(l)||t===l));return(h&&(o&&m===0||!o&&i>m)||!h&&(o&&v===0||!o&&-i>v))&&(p=!0),p},Qf=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},sS=function(e){return[e.deltaX,e.deltaY]},aS=function(e){return e&&"current"in e?e.current:e},jB=function(e,t){return e[0]===t[0]&&e[1]===t[1]},PB=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},IB=0,Pl=[];function EB(e){var t=d.useRef([]),n=d.useRef([0,0]),r=d.useRef(),o=d.useState(IB++)[0],s=d.useState(nP)[0],i=d.useRef(e);d.useEffect(function(){i.current=e},[e]),d.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var b=w1([e.lockRef.current],(e.shards||[]).map(aS),!0).filter(Boolean);return b.forEach(function(w){return w.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),b.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=d.useCallback(function(b,w){if("touches"in b&&b.touches.length===2)return!i.current.allowPinchZoom;var k=Qf(b),_=n.current,j="deltaX"in b?b.deltaX:_[0]-k[0],I="deltaY"in b?b.deltaY:_[1]-k[1],M,E=b.target,O=Math.abs(j)>Math.abs(I)?"h":"v";if("touches"in b&&O==="h"&&E.type==="range")return!1;var D=oS(O,E);if(!D)return!0;if(D?M=O:(M=O==="v"?"h":"v",D=oS(O,E)),!D)return!1;if(!r.current&&"changedTouches"in b&&(j||I)&&(r.current=M),!M)return!0;var A=r.current||M;return _B(A,w,b,A==="h"?j:I,!0)},[]),f=d.useCallback(function(b){var w=b;if(!(!Pl.length||Pl[Pl.length-1]!==s)){var k="deltaY"in w?sS(w):Qf(w),_=t.current.filter(function(M){return M.name===w.type&&M.target===w.target&&jB(M.delta,k)})[0];if(_&&_.should){w.cancelable&&w.preventDefault();return}if(!_){var j=(i.current.shards||[]).map(aS).filter(Boolean).filter(function(M){return M.contains(w.target)}),I=j.length>0?l(w,j[0]):!i.current.noIsolation;I&&w.cancelable&&w.preventDefault()}}},[]),p=d.useCallback(function(b,w,k,_){var j={name:b,delta:w,target:k,should:_};t.current.push(j),setTimeout(function(){t.current=t.current.filter(function(I){return I!==j})},1)},[]),h=d.useCallback(function(b){n.current=Qf(b),r.current=void 0},[]),m=d.useCallback(function(b){p(b.type,sS(b),b.target,l(b,e.lockRef.current))},[]),v=d.useCallback(function(b){p(b.type,Qf(b),b.target,l(b,e.lockRef.current))},[]);d.useEffect(function(){return Pl.push(s),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:v}),document.addEventListener("wheel",f,jl),document.addEventListener("touchmove",f,jl),document.addEventListener("touchstart",h,jl),function(){Pl=Pl.filter(function(b){return b!==s}),document.removeEventListener("wheel",f,jl),document.removeEventListener("touchmove",f,jl),document.removeEventListener("touchstart",h,jl)}},[]);var x=e.removeScrollBar,C=e.inert;return d.createElement(d.Fragment,null,C?d.createElement(s,{styles:PB(o)}):null,x?d.createElement(xB,{gapMode:e.gapMode}):null)}const MB=I$(tP,EB);var aP=d.forwardRef(function(e,t){return d.createElement(Mm,us({},e,{ref:t,sideCar:MB}))});aP.classNames=Mm.classNames;const OB=aP;function DB(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:o,blockScrollOnMount:s,allowPinchZoom:i,finalFocusRef:l,returnFocusOnClose:f,preserveScrollBarGap:p,lockFocusAcrossFrames:h,isOpen:m}=zi(),[v,x]=M7();d.useEffect(()=>{!v&&x&&setTimeout(x)},[v,x]);const C=J5(r,m);return a.jsx(P5,{autoFocus:t,isDisabled:!n,initialFocusRef:o,finalFocusRef:l,restoreFocus:f,contentRef:r,lockFocusAcrossFrames:h,children:a.jsx(OB,{removeScrollBar:!p,allowPinchZoom:i,enabled:C===1&&s,forwardProps:!0,children:e.children})})}var Bi=Pe((e,t)=>{const{className:n,children:r,containerProps:o,motionProps:s,...i}=e,{getDialogProps:l,getDialogContainerProps:f}=zi(),p=l(i,t),h=f(o),m=et("chakra-modal__content",n),v=$c(),x={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...v.dialog},C={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...v.dialogContainer},{motionPreset:b}=zi();return a.jsx(DB,{children:a.jsx(_e.div,{...h,className:"chakra-modal__content-container",tabIndex:-1,__css:C,children:a.jsx(Z5,{preset:b,motionProps:s,className:m,...p,__css:x,children:r})})})});Bi.displayName="ModalContent";function Ad(e){const{leastDestructiveRef:t,...n}=e;return a.jsx(Fi,{...n,initialFocusRef:t})}var Nd=Pe((e,t)=>a.jsx(Bi,{ref:t,role:"alertdialog",...e})),gs=Pe((e,t)=>{const{className:n,...r}=e,o=et("chakra-modal__footer",n),i={display:"flex",alignItems:"center",justifyContent:"flex-end",...$c().footer};return a.jsx(_e.footer,{ref:t,...r,__css:i,className:o})});gs.displayName="ModalFooter";var Ho=Pe((e,t)=>{const{className:n,...r}=e,{headerId:o,setHeaderMounted:s}=zi();d.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=et("chakra-modal__header",n),f={flex:0,...$c().header};return a.jsx(_e.header,{ref:t,className:i,id:o,...r,__css:f})});Ho.displayName="ModalHeader";var RB=_e(gn.div),Wo=Pe((e,t)=>{const{className:n,transition:r,motionProps:o,...s}=e,i=et("chakra-modal__overlay",n),f={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",...$c().overlay},{motionPreset:p}=zi(),m=o||(p==="none"?{}:j3);return a.jsx(RB,{...m,__css:f,ref:t,className:i,...s})});Wo.displayName="ModalOverlay";var Vo=Pe((e,t)=>{const{className:n,...r}=e,{bodyId:o,setBodyMounted:s}=zi();d.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=et("chakra-modal__body",n),l=$c();return a.jsx(_e.div,{ref:t,className:i,id:o,...r,__css:l.body})});Vo.displayName="ModalBody";var Td=Pe((e,t)=>{const{onClick:n,className:r,...o}=e,{onClose:s}=zi(),i=et("chakra-modal__close-btn",r),l=$c();return a.jsx(cN,{ref:t,__css:l.closeButton,className:i,onClick:Fe(n,f=>{f.stopPropagation(),s()}),...o})});Td.displayName="ModalCloseButton";var AB=e=>a.jsx(An,{viewBox:"0 0 24 24",...e,children:a.jsx("path",{fill:"currentColor",d:"M21,5H3C2.621,5,2.275,5.214,2.105,5.553C1.937,5.892,1.973,6.297,2.2,6.6l9,12 c0.188,0.252,0.485,0.4,0.8,0.4s0.611-0.148,0.8-0.4l9-12c0.228-0.303,0.264-0.708,0.095-1.047C21.725,5.214,21.379,5,21,5z"})}),NB=e=>a.jsx(An,{viewBox:"0 0 24 24",...e,children:a.jsx("path",{fill:"currentColor",d:"M12.8,5.4c-0.377-0.504-1.223-0.504-1.6,0l-9,12c-0.228,0.303-0.264,0.708-0.095,1.047 C2.275,18.786,2.621,19,3,19h18c0.379,0,0.725-0.214,0.895-0.553c0.169-0.339,0.133-0.744-0.095-1.047L12.8,5.4z"})});function iS(e,t,n,r){d.useEffect(()=>{var o;if(!e.current||!r)return;const s=(o=e.current.ownerDocument.defaultView)!=null?o:window,i=Array.isArray(t)?t:[t],l=new s.MutationObserver(f=>{for(const p of f)p.type==="attributes"&&p.attributeName&&i.includes(p.attributeName)&&n(p)});return l.observe(e.current,{attributes:!0,attributeFilter:i}),()=>l.disconnect()})}function TB(e,t){const n=tn(e);d.useEffect(()=>{let r=null;const o=()=>n();return t!==null&&(r=window.setInterval(o,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var $B=50,lS=300;function LB(e,t){const[n,r]=d.useState(!1),[o,s]=d.useState(null),[i,l]=d.useState(!0),f=d.useRef(null),p=()=>clearTimeout(f.current);TB(()=>{o==="increment"&&e(),o==="decrement"&&t()},n?$B:null);const h=d.useCallback(()=>{i&&e(),f.current=setTimeout(()=>{l(!1),r(!0),s("increment")},lS)},[e,i]),m=d.useCallback(()=>{i&&t(),f.current=setTimeout(()=>{l(!1),r(!0),s("decrement")},lS)},[t,i]),v=d.useCallback(()=>{l(!0),r(!1),p()},[]);return d.useEffect(()=>()=>p(),[]),{up:h,down:m,stop:v,isSpinning:n}}var zB=/^[Ee0-9+\-.]$/;function FB(e){return zB.test(e)}function BB(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 HB(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:o=Number.MIN_SAFE_INTEGER,max:s=Number.MAX_SAFE_INTEGER,step:i=1,isReadOnly:l,isDisabled:f,isRequired:p,isInvalid:h,pattern:m="[0-9]*(.[0-9]+)?",inputMode:v="decimal",allowMouseWheel:x,id:C,onChange:b,precision:w,name:k,"aria-describedby":_,"aria-label":j,"aria-labelledby":I,onFocus:M,onBlur:E,onInvalid:O,getAriaValueText:D,isValidCharacter:A,format:R,parse:$,...K}=e,B=tn(M),U=tn(E),Y=tn(O),W=tn(A??FB),L=tn(D),X=l$(e),{update:z,increment:q,decrement:ne}=X,[Q,ie]=d.useState(!1),oe=!(l||f),V=d.useRef(null),G=d.useRef(null),J=d.useRef(null),se=d.useRef(null),re=d.useCallback(ge=>ge.split("").filter(W).join(""),[W]),fe=d.useCallback(ge=>{var Ye;return(Ye=$==null?void 0:$(ge))!=null?Ye:ge},[$]),de=d.useCallback(ge=>{var Ye;return((Ye=R==null?void 0:R(ge))!=null?Ye:ge).toString()},[R]);la(()=>{(X.valueAsNumber>s||X.valueAsNumber{if(!V.current)return;if(V.current.value!=X.value){const Ye=fe(V.current.value);X.setValue(re(Ye))}},[fe,re]);const me=d.useCallback((ge=i)=>{oe&&q(ge)},[q,oe,i]),ye=d.useCallback((ge=i)=>{oe&&ne(ge)},[ne,oe,i]),he=LB(me,ye);iS(J,"disabled",he.stop,he.isSpinning),iS(se,"disabled",he.stop,he.isSpinning);const ue=d.useCallback(ge=>{if(ge.nativeEvent.isComposing)return;const ot=fe(ge.currentTarget.value);z(re(ot)),G.current={start:ge.currentTarget.selectionStart,end:ge.currentTarget.selectionEnd}},[z,re,fe]),De=d.useCallback(ge=>{var Ye,ot,lt;B==null||B(ge),G.current&&(ge.target.selectionStart=(ot=G.current.start)!=null?ot:(Ye=ge.currentTarget.value)==null?void 0:Ye.length,ge.currentTarget.selectionEnd=(lt=G.current.end)!=null?lt:ge.currentTarget.selectionStart)},[B]),je=d.useCallback(ge=>{if(ge.nativeEvent.isComposing)return;BB(ge,W)||ge.preventDefault();const Ye=Be(ge)*i,ot=ge.key,Me={ArrowUp:()=>me(Ye),ArrowDown:()=>ye(Ye),Home:()=>z(o),End:()=>z(s)}[ot];Me&&(ge.preventDefault(),Me(ge))},[W,i,me,ye,z,o,s]),Be=ge=>{let Ye=1;return(ge.metaKey||ge.ctrlKey)&&(Ye=.1),ge.shiftKey&&(Ye=10),Ye},rt=d.useMemo(()=>{const ge=L==null?void 0:L(X.value);if(ge!=null)return ge;const Ye=X.value.toString();return Ye||void 0},[X.value,L]),Ue=d.useCallback(()=>{let ge=X.value;if(X.value==="")return;/^[eE]/.test(X.value.toString())?X.setValue(""):(X.valueAsNumbers&&(ge=s),X.cast(ge))},[X,s,o]),Ct=d.useCallback(()=>{ie(!1),n&&Ue()},[n,ie,Ue]),Xe=d.useCallback(()=>{t&&requestAnimationFrame(()=>{var ge;(ge=V.current)==null||ge.focus()})},[t]),tt=d.useCallback(ge=>{ge.preventDefault(),he.up(),Xe()},[Xe,he]),ve=d.useCallback(ge=>{ge.preventDefault(),he.down(),Xe()},[Xe,he]);_i(()=>V.current,"wheel",ge=>{var Ye,ot;const Me=((ot=(Ye=V.current)==null?void 0:Ye.ownerDocument)!=null?ot:document).activeElement===V.current;if(!x||!Me)return;ge.preventDefault();const $e=Be(ge)*i,Rt=Math.sign(ge.deltaY);Rt===-1?me($e):Rt===1&&ye($e)},{passive:!1});const Re=d.useCallback((ge={},Ye=null)=>{const ot=f||r&&X.isAtMax;return{...ge,ref:yt(Ye,J),role:"button",tabIndex:-1,onPointerDown:Fe(ge.onPointerDown,lt=>{lt.button!==0||ot||tt(lt)}),onPointerLeave:Fe(ge.onPointerLeave,he.stop),onPointerUp:Fe(ge.onPointerUp,he.stop),disabled:ot,"aria-disabled":co(ot)}},[X.isAtMax,r,tt,he.stop,f]),st=d.useCallback((ge={},Ye=null)=>{const ot=f||r&&X.isAtMin;return{...ge,ref:yt(Ye,se),role:"button",tabIndex:-1,onPointerDown:Fe(ge.onPointerDown,lt=>{lt.button!==0||ot||ve(lt)}),onPointerLeave:Fe(ge.onPointerLeave,he.stop),onPointerUp:Fe(ge.onPointerUp,he.stop),disabled:ot,"aria-disabled":co(ot)}},[X.isAtMin,r,ve,he.stop,f]),mt=d.useCallback((ge={},Ye=null)=>{var ot,lt,Me,$e;return{name:k,inputMode:v,type:"text",pattern:m,"aria-labelledby":I,"aria-label":j,"aria-describedby":_,id:C,disabled:f,...ge,readOnly:(ot=ge.readOnly)!=null?ot:l,"aria-readonly":(lt=ge.readOnly)!=null?lt:l,"aria-required":(Me=ge.required)!=null?Me:p,required:($e=ge.required)!=null?$e:p,ref:yt(V,Ye),value:de(X.value),role:"spinbutton","aria-valuemin":o,"aria-valuemax":s,"aria-valuenow":Number.isNaN(X.valueAsNumber)?void 0:X.valueAsNumber,"aria-invalid":co(h??X.isOutOfRange),"aria-valuetext":rt,autoComplete:"off",autoCorrect:"off",onChange:Fe(ge.onChange,ue),onKeyDown:Fe(ge.onKeyDown,je),onFocus:Fe(ge.onFocus,De,()=>ie(!0)),onBlur:Fe(ge.onBlur,U,Ct)}},[k,v,m,I,j,de,_,C,f,p,l,h,X.value,X.valueAsNumber,X.isOutOfRange,o,s,rt,ue,je,De,U,Ct]);return{value:de(X.value),valueAsNumber:X.valueAsNumber,isFocused:Q,isDisabled:f,isReadOnly:l,getIncrementButtonProps:Re,getDecrementButtonProps:st,getInputProps:mt,htmlProps:K}}var[WB,Om]=Tt({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[VB,Mb]=Tt({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),Dm=Pe(function(t,n){const r=Hn("NumberInput",t),o=Xt(t),s=eb(o),{htmlProps:i,...l}=HB(s),f=d.useMemo(()=>l,[l]);return a.jsx(VB,{value:f,children:a.jsx(WB,{value:r,children:a.jsx(_e.div,{...i,ref:n,className:et("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})})})});Dm.displayName="NumberInput";var Rm=Pe(function(t,n){const r=Om();return a.jsx(_e.div,{"aria-hidden":!0,ref:n,...t,__css:{display:"flex",flexDirection:"column",position:"absolute",top:"0",insetEnd:"0px",margin:"1px",height:"calc(100% - 2px)",zIndex:1,...r.stepperGroup}})});Rm.displayName="NumberInputStepper";var Am=Pe(function(t,n){const{getInputProps:r}=Mb(),o=r(t,n),s=Om();return a.jsx(_e.input,{...o,className:et("chakra-numberinput__field",t.className),__css:{width:"100%",...s.field}})});Am.displayName="NumberInputField";var iP=_e("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),Nm=Pe(function(t,n){var r;const o=Om(),{getDecrementButtonProps:s}=Mb(),i=s(t,n);return a.jsx(iP,{...i,__css:o.stepper,children:(r=t.children)!=null?r:a.jsx(AB,{})})});Nm.displayName="NumberDecrementStepper";var Tm=Pe(function(t,n){var r;const{getIncrementButtonProps:o}=Mb(),s=o(t,n),i=Om();return a.jsx(iP,{...s,__css:i.stepper,children:(r=t.children)!=null?r:a.jsx(NB,{})})});Tm.displayName="NumberIncrementStepper";var[UB,Lc]=Tt({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[GB,Ob]=Tt({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `});function Db(e){const t=d.Children.only(e.children),{getTriggerProps:n}=Lc();return d.cloneElement(t,n(t.props,t.ref))}Db.displayName="PopoverTrigger";var Il={click:"click",hover:"hover"};function KB(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:o,returnFocusOnClose:s=!0,autoFocus:i=!0,arrowSize:l,arrowShadowColor:f,trigger:p=Il.click,openDelay:h=200,closeDelay:m=200,isLazy:v,lazyBehavior:x="unmount",computePositionOnMount:C,...b}=e,{isOpen:w,onClose:k,onOpen:_,onToggle:j}=Pb(e),I=d.useRef(null),M=d.useRef(null),E=d.useRef(null),O=d.useRef(!1),D=d.useRef(!1);w&&(D.current=!0);const[A,R]=d.useState(!1),[$,K]=d.useState(!1),B=d.useId(),U=o??B,[Y,W,L,X]=["popover-trigger","popover-content","popover-header","popover-body"].map(ue=>`${ue}-${U}`),{referenceRef:z,getArrowProps:q,getPopperProps:ne,getArrowInnerProps:Q,forceUpdate:ie}=jb({...b,enabled:w||!!C}),oe=G5({isOpen:w,ref:E});F3({enabled:w,ref:M}),N5(E,{focusRef:M,visible:w,shouldFocus:s&&p===Il.click}),ez(E,{focusRef:r,visible:w,shouldFocus:i&&p===Il.click});const V=Ib({wasSelected:D.current,enabled:v,mode:x,isSelected:oe.present}),G=d.useCallback((ue={},De=null)=>{const je={...ue,style:{...ue.style,transformOrigin:jn.transformOrigin.varRef,[jn.arrowSize.var]:l?`${l}px`:void 0,[jn.arrowShadowColor.var]:f},ref:yt(E,De),children:V?ue.children:null,id:W,tabIndex:-1,role:"dialog",onKeyDown:Fe(ue.onKeyDown,Be=>{n&&Be.key==="Escape"&&k()}),onBlur:Fe(ue.onBlur,Be=>{const rt=cS(Be),Ue=cv(E.current,rt),Ct=cv(M.current,rt);w&&t&&(!Ue&&!Ct)&&k()}),"aria-labelledby":A?L:void 0,"aria-describedby":$?X:void 0};return p===Il.hover&&(je.role="tooltip",je.onMouseEnter=Fe(ue.onMouseEnter,()=>{O.current=!0}),je.onMouseLeave=Fe(ue.onMouseLeave,Be=>{Be.nativeEvent.relatedTarget!==null&&(O.current=!1,setTimeout(()=>k(),m))})),je},[V,W,A,L,$,X,p,n,k,w,t,m,f,l]),J=d.useCallback((ue={},De=null)=>ne({...ue,style:{visibility:w?"visible":"hidden",...ue.style}},De),[w,ne]),se=d.useCallback((ue,De=null)=>({...ue,ref:yt(De,I,z)}),[I,z]),re=d.useRef(),fe=d.useRef(),de=d.useCallback(ue=>{I.current==null&&z(ue)},[z]),me=d.useCallback((ue={},De=null)=>{const je={...ue,ref:yt(M,De,de),id:Y,"aria-haspopup":"dialog","aria-expanded":w,"aria-controls":W};return p===Il.click&&(je.onClick=Fe(ue.onClick,j)),p===Il.hover&&(je.onFocus=Fe(ue.onFocus,()=>{re.current===void 0&&_()}),je.onBlur=Fe(ue.onBlur,Be=>{const rt=cS(Be),Ue=!cv(E.current,rt);w&&t&&Ue&&k()}),je.onKeyDown=Fe(ue.onKeyDown,Be=>{Be.key==="Escape"&&k()}),je.onMouseEnter=Fe(ue.onMouseEnter,()=>{O.current=!0,re.current=window.setTimeout(()=>_(),h)}),je.onMouseLeave=Fe(ue.onMouseLeave,()=>{O.current=!1,re.current&&(clearTimeout(re.current),re.current=void 0),fe.current=window.setTimeout(()=>{O.current===!1&&k()},m)})),je},[Y,w,W,p,de,j,_,t,k,h,m]);d.useEffect(()=>()=>{re.current&&clearTimeout(re.current),fe.current&&clearTimeout(fe.current)},[]);const ye=d.useCallback((ue={},De=null)=>({...ue,id:L,ref:yt(De,je=>{R(!!je)})}),[L]),he=d.useCallback((ue={},De=null)=>({...ue,id:X,ref:yt(De,je=>{K(!!je)})}),[X]);return{forceUpdate:ie,isOpen:w,onAnimationComplete:oe.onComplete,onClose:k,getAnchorProps:se,getArrowProps:q,getArrowInnerProps:Q,getPopoverPositionerProps:J,getPopoverProps:G,getTriggerProps:me,getHeaderProps:ye,getBodyProps:he}}function cv(e,t){return e===t||(e==null?void 0:e.contains(t))}function cS(e){var t;const n=e.currentTarget.ownerDocument.activeElement;return(t=e.relatedTarget)!=null?t:n}function $m(e){const t=Hn("Popover",e),{children:n,...r}=Xt(e),o=xd(),s=KB({...r,direction:o.direction});return a.jsx(UB,{value:s,children:a.jsx(GB,{value:t,children:Ax(n,{isOpen:s.isOpen,onClose:s.onClose,forceUpdate:s.forceUpdate})})})}$m.displayName="Popover";function lP(e){const t=d.Children.only(e.children),{getAnchorProps:n}=Lc();return d.cloneElement(t,n(t.props,t.ref))}lP.displayName="PopoverAnchor";var uv=(e,t)=>t?`${e}.${t}, ${t}`:void 0;function cP(e){var t;const{bg:n,bgColor:r,backgroundColor:o,shadow:s,boxShadow:i,shadowColor:l}=e,{getArrowProps:f,getArrowInnerProps:p}=Lc(),h=Ob(),m=(t=n??r)!=null?t:o,v=s??i;return a.jsx(_e.div,{...f(),className:"chakra-popover__arrow-positioner",children:a.jsx(_e.div,{className:et("chakra-popover__arrow",e.className),...p(e),__css:{"--popper-arrow-shadow-color":uv("colors",l),"--popper-arrow-bg":uv("colors",m),"--popper-arrow-shadow":uv("shadows",v),...h.arrow}})})}cP.displayName="PopoverArrow";var Rb=Pe(function(t,n){const{getBodyProps:r}=Lc(),o=Ob();return a.jsx(_e.div,{...r(t,n),className:et("chakra-popover__body",t.className),__css:o.body})});Rb.displayName="PopoverBody";function qB(e){if(e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var XB={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]}}},YB=_e(gn.section),uP=Pe(function(t,n){const{variants:r=XB,...o}=t,{isOpen:s}=Lc();return a.jsx(YB,{ref:n,variants:qB(r),initial:!1,animate:s?"enter":"exit",...o})});uP.displayName="PopoverTransition";var Lm=Pe(function(t,n){const{rootProps:r,motionProps:o,...s}=t,{getPopoverProps:i,getPopoverPositionerProps:l,onAnimationComplete:f}=Lc(),p=Ob(),h={position:"relative",display:"flex",flexDirection:"column",...p.content};return a.jsx(_e.div,{...l(r),__css:p.popper,className:"chakra-popover__popper",children:a.jsx(uP,{...o,...i(s,n),onAnimationComplete:cm(f,s.onAnimationComplete),className:et("chakra-popover__content",t.className),__css:h})})});Lm.displayName="PopoverContent";var D1=e=>a.jsx(_e.circle,{cx:50,cy:50,r:42,fill:"transparent",...e});D1.displayName="Circle";function QB(e,t,n){return(e-t)*100/(n-t)}var ZB=aa({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}}),JB=aa({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),eH=aa({"0%":{left:"-40%"},"100%":{left:"100%"}}),tH=aa({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function dP(e){const{value:t=0,min:n,max:r,valueText:o,getValueText:s,isIndeterminate:i,role:l="progressbar"}=e,f=QB(t,n,r);return{bind:{"data-indeterminate":i?"":void 0,"aria-valuemax":r,"aria-valuemin":n,"aria-valuenow":i?void 0:t,"aria-valuetext":(()=>{if(t!=null)return typeof s=="function"?s(t,f):o})(),role:l},percent:f,value:t}}var fP=e=>{const{size:t,isIndeterminate:n,...r}=e;return a.jsx(_e.svg,{viewBox:"0 0 100 100",__css:{width:t,height:t,animation:n?`${JB} 2s linear infinite`:void 0},...r})};fP.displayName="Shape";var R1=Pe((e,t)=>{var n;const{size:r="48px",max:o=100,min:s=0,valueText:i,getValueText:l,value:f,capIsRound:p,children:h,thickness:m="10px",color:v="#0078d4",trackColor:x="#edebe9",isIndeterminate:C,...b}=e,w=dP({min:s,max:o,value:f,valueText:i,getValueText:l,isIndeterminate:C}),k=C?void 0:((n=w.percent)!=null?n:0)*2.64,_=k==null?void 0:`${k} ${264-k}`,j=C?{css:{animation:`${ZB} 1.5s linear infinite`}}:{strokeDashoffset:66,strokeDasharray:_,transitionProperty:"stroke-dasharray, stroke",transitionDuration:"0.6s",transitionTimingFunction:"ease"},I={display:"inline-block",position:"relative",verticalAlign:"middle",fontSize:r};return a.jsxs(_e.div,{ref:t,className:"chakra-progress",...w.bind,...b,__css:I,children:[a.jsxs(fP,{size:r,isIndeterminate:C,children:[a.jsx(D1,{stroke:x,strokeWidth:m,className:"chakra-progress__track"}),a.jsx(D1,{stroke:v,strokeWidth:m,className:"chakra-progress__indicator",strokeLinecap:p?"round":void 0,opacity:w.value===0&&!C?0:void 0,...j})]}),h]})});R1.displayName="CircularProgress";var[nH,rH]=Tt({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),oH=Pe((e,t)=>{const{min:n,max:r,value:o,isIndeterminate:s,role:i,...l}=e,f=dP({value:o,min:n,max:r,isIndeterminate:s,role:i}),h={height:"100%",...rH().filledTrack};return a.jsx(_e.div,{ref:t,style:{width:`${f.percent}%`,...l.style},...f.bind,...l,__css:h})}),pP=Pe((e,t)=>{var n;const{value:r,min:o=0,max:s=100,hasStripe:i,isAnimated:l,children:f,borderRadius:p,isIndeterminate:h,"aria-label":m,"aria-labelledby":v,"aria-valuetext":x,title:C,role:b,...w}=Xt(e),k=Hn("Progress",e),_=p??((n=k.track)==null?void 0:n.borderRadius),j={animation:`${tH} 1s linear infinite`},E={...!h&&i&&l&&j,...h&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${eH} 1s ease infinite normal none running`}},O={overflow:"hidden",position:"relative",...k.track};return a.jsx(_e.div,{ref:t,borderRadius:_,__css:O,...w,children:a.jsxs(nH,{value:k,children:[a.jsx(oH,{"aria-label":m,"aria-labelledby":v,"aria-valuetext":x,min:o,max:s,value:r,isIndeterminate:h,css:E,borderRadius:_,title:C,role:b}),f]})})});pP.displayName="Progress";function sH(e){return e&&t1(e)&&t1(e.target)}function aH(e={}){const{onChange:t,value:n,defaultValue:r,name:o,isDisabled:s,isFocusable:i,isNative:l,...f}=e,[p,h]=d.useState(r||""),m=typeof n<"u",v=m?n:p,x=d.useRef(null),C=d.useCallback(()=>{const M=x.current;if(!M)return;let E="input:not(:disabled):checked";const O=M.querySelector(E);if(O){O.focus();return}E="input:not(:disabled)";const D=M.querySelector(E);D==null||D.focus()},[]),w=`radio-${d.useId()}`,k=o||w,_=d.useCallback(M=>{const E=sH(M)?M.target.value:M;m||h(E),t==null||t(String(E))},[t,m]),j=d.useCallback((M={},E=null)=>({...M,ref:yt(E,x),role:"radiogroup"}),[]),I=d.useCallback((M={},E=null)=>({...M,ref:E,name:k,[l?"checked":"isChecked"]:v!=null?M.value===v:void 0,onChange(D){_(D)},"data-radiogroup":!0}),[l,k,_,v]);return{getRootProps:j,getRadioProps:I,name:k,ref:x,focus:C,setValue:h,value:v,onChange:_,isDisabled:s,isFocusable:i,htmlProps:f}}var[iH,hP]=Tt({name:"RadioGroupContext",strict:!1}),oh=Pe((e,t)=>{const{colorScheme:n,size:r,variant:o,children:s,className:i,isDisabled:l,isFocusable:f,...p}=e,{value:h,onChange:m,getRootProps:v,name:x,htmlProps:C}=aH(p),b=d.useMemo(()=>({name:x,size:r,onChange:m,colorScheme:n,value:h,variant:o,isDisabled:l,isFocusable:f}),[x,r,m,n,h,o,l,f]);return a.jsx(iH,{value:b,children:a.jsx(_e.div,{...v(C,t),className:et("chakra-radio-group",i),children:s})})});oh.displayName="RadioGroup";var lH={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"};function cH(e={}){const{defaultChecked:t,isChecked:n,isFocusable:r,isDisabled:o,isReadOnly:s,isRequired:i,onChange:l,isInvalid:f,name:p,value:h,id:m,"data-radiogroup":v,"aria-describedby":x,...C}=e,b=`radio-${d.useId()}`,w=jd(),_=!!hP()||!!v;let I=!!w&&!_?w.id:b;I=m??I;const M=o??(w==null?void 0:w.isDisabled),E=s??(w==null?void 0:w.isReadOnly),O=i??(w==null?void 0:w.isRequired),D=f??(w==null?void 0:w.isInvalid),[A,R]=d.useState(!1),[$,K]=d.useState(!1),[B,U]=d.useState(!1),[Y,W]=d.useState(!1),[L,X]=d.useState(!!t),z=typeof n<"u",q=z?n:L;d.useEffect(()=>R3(R),[]);const ne=d.useCallback(de=>{if(E||M){de.preventDefault();return}z||X(de.target.checked),l==null||l(de)},[z,M,E,l]),Q=d.useCallback(de=>{de.key===" "&&W(!0)},[W]),ie=d.useCallback(de=>{de.key===" "&&W(!1)},[W]),oe=d.useCallback((de={},me=null)=>({...de,ref:me,"data-active":at(Y),"data-hover":at(B),"data-disabled":at(M),"data-invalid":at(D),"data-checked":at(q),"data-focus":at($),"data-focus-visible":at($&&A),"data-readonly":at(E),"aria-hidden":!0,onMouseDown:Fe(de.onMouseDown,()=>W(!0)),onMouseUp:Fe(de.onMouseUp,()=>W(!1)),onMouseEnter:Fe(de.onMouseEnter,()=>U(!0)),onMouseLeave:Fe(de.onMouseLeave,()=>U(!1))}),[Y,B,M,D,q,$,E,A]),{onFocus:V,onBlur:G}=w??{},J=d.useCallback((de={},me=null)=>{const ye=M&&!r;return{...de,id:I,ref:me,type:"radio",name:p,value:h,onChange:Fe(de.onChange,ne),onBlur:Fe(G,de.onBlur,()=>K(!1)),onFocus:Fe(V,de.onFocus,()=>K(!0)),onKeyDown:Fe(de.onKeyDown,Q),onKeyUp:Fe(de.onKeyUp,ie),checked:q,disabled:ye,readOnly:E,required:O,"aria-invalid":co(D),"aria-disabled":co(ye),"aria-required":co(O),"data-readonly":at(E),"aria-describedby":x,style:lH}},[M,r,I,p,h,ne,G,V,Q,ie,q,E,O,D,x]);return{state:{isInvalid:D,isFocused:$,isChecked:q,isActive:Y,isHovered:B,isDisabled:M,isReadOnly:E,isRequired:O},getCheckboxProps:oe,getRadioProps:oe,getInputProps:J,getLabelProps:(de={},me=null)=>({...de,ref:me,onMouseDown:Fe(de.onMouseDown,uH),"data-disabled":at(M),"data-checked":at(q),"data-invalid":at(D)}),getRootProps:(de,me=null)=>({...de,ref:me,"data-disabled":at(M),"data-checked":at(q),"data-invalid":at(D)}),htmlProps:C}}function uH(e){e.preventDefault(),e.stopPropagation()}function dH(e,t){const n={},r={};for(const[o,s]of Object.entries(e))t.includes(o)?n[o]=s:r[o]=s;return[n,r]}var zs=Pe((e,t)=>{var n;const r=hP(),{onChange:o,value:s}=e,i=Hn("Radio",{...r,...e}),l=Xt(e),{spacing:f="0.5rem",children:p,isDisabled:h=r==null?void 0:r.isDisabled,isFocusable:m=r==null?void 0:r.isFocusable,inputProps:v,...x}=l;let C=e.isChecked;(r==null?void 0:r.value)!=null&&s!=null&&(C=r.value===s);let b=o;r!=null&&r.onChange&&s!=null&&(b=cm(r.onChange,o));const w=(n=e==null?void 0:e.name)!=null?n:r==null?void 0:r.name,{getInputProps:k,getCheckboxProps:_,getLabelProps:j,getRootProps:I,htmlProps:M}=cH({...x,isChecked:C,isFocusable:m,isDisabled:h,onChange:b,name:w}),[E,O]=dH(M,Pj),D=_(O),A=k(v,t),R=j(),$=Object.assign({},E,I()),K={display:"inline-flex",alignItems:"center",verticalAlign:"top",cursor:"pointer",position:"relative",...i.container},B={display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,...i.control},U={userSelect:"none",marginStart:f,...i.label};return a.jsxs(_e.label,{className:"chakra-radio",...$,__css:K,children:[a.jsx("input",{className:"chakra-radio__input",...A}),a.jsx(_e.span,{className:"chakra-radio__control",...D,__css:B}),p&&a.jsx(_e.span,{className:"chakra-radio__label",...R,__css:U,children:p})]})});zs.displayName="Radio";var mP=Pe(function(t,n){const{children:r,placeholder:o,className:s,...i}=t;return a.jsxs(_e.select,{...i,ref:n,className:et("chakra-select",s),children:[o&&a.jsx("option",{value:"",children:o}),r]})});mP.displayName="SelectField";function fH(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 gP=Pe((e,t)=>{var n;const r=Hn("Select",e),{rootProps:o,placeholder:s,icon:i,color:l,height:f,h:p,minH:h,minHeight:m,iconColor:v,iconSize:x,...C}=Xt(e),[b,w]=fH(C,Pj),k=Jx(w),_={width:"100%",height:"fit-content",position:"relative",color:l},j={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return a.jsxs(_e.div,{className:"chakra-select__wrapper",__css:_,...b,...o,children:[a.jsx(mP,{ref:t,height:p??f,minH:h??m,placeholder:s,...k,__css:j,children:e.children}),a.jsx(vP,{"data-disabled":at(k.disabled),...(v||l)&&{color:v||l},__css:r.icon,...x&&{fontSize:x},children:i})]})});gP.displayName="Select";var pH=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"})}),hH=_e("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),vP=e=>{const{children:t=a.jsx(pH,{}),...n}=e,r=d.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return a.jsx(hH,{...n,className:"chakra-select__icon-wrapper",children:d.isValidElement(t)?r:null})};vP.displayName="SelectIcon";function mH(){const e=d.useRef(!0);return d.useEffect(()=>{e.current=!1},[]),e.current}function gH(e){const t=d.useRef();return d.useEffect(()=>{t.current=e},[e]),t.current}var vH=_e("div",{baseStyle:{boxShadow:"none",backgroundClip:"padding-box",cursor:"default",color:"transparent",pointerEvents:"none",userSelect:"none","&::before, &::after, *":{visibility:"hidden"}}}),A1=Ij("skeleton-start-color"),N1=Ij("skeleton-end-color"),xH=aa({from:{opacity:0},to:{opacity:1}}),bH=aa({from:{borderColor:A1.reference,background:A1.reference},to:{borderColor:N1.reference,background:N1.reference}}),zm=Pe((e,t)=>{const n={...e,fadeDuration:typeof e.fadeDuration=="number"?e.fadeDuration:.4,speed:typeof e.speed=="number"?e.speed:.8},r=Qa("Skeleton",n),o=mH(),{startColor:s="",endColor:i="",isLoaded:l,fadeDuration:f,speed:p,className:h,fitContent:m,...v}=Xt(n),[x,C]=ds("colors",[s,i]),b=gH(l),w=et("chakra-skeleton",h),k={...x&&{[A1.variable]:x},...C&&{[N1.variable]:C}};if(l){const _=o||b?"none":`${xH} ${f}s`;return a.jsx(_e.div,{ref:t,className:w,__css:{animation:_},...v})}return a.jsx(vH,{ref:t,className:w,...v,__css:{width:m?"fit-content":void 0,...r,...k,_dark:{...r._dark,...k},animation:`${p}s linear infinite alternate ${bH}`}})});zm.displayName="Skeleton";var ro=e=>e?"":void 0,nc=e=>e?!0:void 0,ei=(...e)=>e.filter(Boolean).join(" ");function rc(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function yH(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 Ou(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var Dp={width:0,height:0},Zf=e=>e||Dp;function xP(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:o}=e,s=b=>{var w;const k=(w=r[b])!=null?w:Dp;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...Ou({orientation:t,vertical:{bottom:`calc(${n[b]}% - ${k.height/2}px)`},horizontal:{left:`calc(${n[b]}% - ${k.width/2}px)`}})}},i=t==="vertical"?r.reduce((b,w)=>Zf(b).height>Zf(w).height?b:w,Dp):r.reduce((b,w)=>Zf(b).width>Zf(w).width?b:w,Dp),l={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...Ou({orientation:t,vertical:i?{paddingLeft:i.width/2,paddingRight:i.width/2}:{},horizontal:i?{paddingTop:i.height/2,paddingBottom:i.height/2}:{}})},f={position:"absolute",...Ou({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 x=Math.abs(m[m.length-1]-m[0]),C={...f,...Ou({orientation:t,vertical:o?{height:`${x}%`,top:`${v}%`}:{height:`${x}%`,bottom:`${v}%`},horizontal:o?{width:`${x}%`,right:`${v}%`}:{width:`${x}%`,left:`${v}%`}})};return{trackStyle:f,innerTrackStyle:C,rootStyle:l,getThumbStyle:s}}function bP(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function CH(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function wH(e){const t=kH(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function yP(e){return!!e.touches}function SH(e){return yP(e)&&e.touches.length>1}function kH(e){var t;return(t=e.view)!=null?t:window}function _H(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function jH(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function CP(e,t="page"){return yP(e)?_H(e,t):jH(e,t)}function PH(e){return t=>{const n=wH(t);(!n||n&&t.button===0)&&e(t)}}function IH(e,t=!1){function n(o){e(o,{point:CP(o)})}return t?PH(n):n}function Rp(e,t,n,r){return CH(e,t,IH(n,t==="pointerdown"),r)}var EH=Object.defineProperty,MH=(e,t,n)=>t in e?EH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Po=(e,t,n)=>(MH(e,typeof t!="symbol"?t+"":t,n),n),OH=class{constructor(e,t,n){Po(this,"history",[]),Po(this,"startEvent",null),Po(this,"lastEvent",null),Po(this,"lastEventInfo",null),Po(this,"handlers",{}),Po(this,"removeListeners",()=>{}),Po(this,"threshold",3),Po(this,"win"),Po(this,"updatePoint",()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const l=dv(this.lastEventInfo,this.history),f=this.startEvent!==null,p=NH(l.offset,{x:0,y:0})>=this.threshold;if(!f&&!p)return;const{timestamp:h}=_w();this.history.push({...l.point,timestamp:h});const{onStart:m,onMove:v}=this.handlers;f||(m==null||m(this.lastEvent,l),this.startEvent=this.lastEvent),v==null||v(this.lastEvent,l)}),Po(this,"onPointerMove",(l,f)=>{this.lastEvent=l,this.lastEventInfo=f,JN.update(this.updatePoint,!0)}),Po(this,"onPointerUp",(l,f)=>{const p=dv(f,this.history),{onEnd:h,onSessionEnd:m}=this.handlers;m==null||m(l,p),this.end(),!(!h||!this.startEvent)&&(h==null||h(l,p))});var r;if(this.win=(r=e.view)!=null?r:window,SH(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const o={point:CP(e)},{timestamp:s}=_w();this.history=[{...o.point,timestamp:s}];const{onSessionStart:i}=t;i==null||i(e,dv(o,this.history)),this.removeListeners=AH(Rp(this.win,"pointermove",this.onPointerMove),Rp(this.win,"pointerup",this.onPointerUp),Rp(this.win,"pointercancel",this.onPointerUp))}updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),eT.update(this.updatePoint)}};function uS(e,t){return{x:e.x-t.x,y:e.y-t.y}}function dv(e,t){return{point:e.point,delta:uS(e.point,t[t.length-1]),offset:uS(e.point,t[0]),velocity:RH(t,.1)}}var DH=e=>e*1e3;function RH(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const o=e[e.length-1];for(;n>=0&&(r=e[n],!(o.timestamp-r.timestamp>DH(t)));)n--;if(!r)return{x:0,y:0};const s=(o.timestamp-r.timestamp)/1e3;if(s===0)return{x:0,y:0};const i={x:(o.x-r.x)/s,y:(o.y-r.y)/s};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function AH(...e){return t=>e.reduce((n,r)=>r(n),t)}function fv(e,t){return Math.abs(e-t)}function dS(e){return"x"in e&&"y"in e}function NH(e,t){if(typeof e=="number"&&typeof t=="number")return fv(e,t);if(dS(e)&&dS(t)){const n=fv(e.x,t.x),r=fv(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function wP(e){const t=d.useRef(null);return t.current=e,t}function SP(e,t){const{onPan:n,onPanStart:r,onPanEnd:o,onPanSessionStart:s,onPanSessionEnd:i,threshold:l}=t,f=!!(n||r||o||s||i),p=d.useRef(null),h=wP({onSessionStart:s,onSessionEnd:i,onStart:r,onMove:n,onEnd(m,v){p.current=null,o==null||o(m,v)}});d.useEffect(()=>{var m;(m=p.current)==null||m.updateHandlers(h.current)}),d.useEffect(()=>{const m=e.current;if(!m||!f)return;function v(x){p.current=new OH(x,h.current,l)}return Rp(m,"pointerdown",v)},[e,f,h,l]),d.useEffect(()=>()=>{var m;(m=p.current)==null||m.end(),p.current=null},[])}function TH(e,t){if(!e){t(void 0);return}t({width:e.offsetWidth,height:e.offsetHeight});const n=e.ownerDocument.defaultView??window,r=new n.ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const[s]=o;let i,l;if("borderBoxSize"in s){const f=s.borderBoxSize,p=Array.isArray(f)?f[0]:f;i=p.inlineSize,l=p.blockSize}else i=e.offsetWidth,l=e.offsetHeight;t({width:i,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var $H=globalThis!=null&&globalThis.document?d.useLayoutEffect:d.useEffect;function LH(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 kP({getNodes:e,observeMutation:t=!0}){const[n,r]=d.useState([]),[o,s]=d.useState(0);return $H(()=>{const i=e(),l=i.map((f,p)=>TH(f,h=>{r(m=>[...m.slice(0,p),h,...m.slice(p+1)])}));if(t){const f=i[0];l.push(LH(f,()=>{s(p=>p+1)}))}return()=>{l.forEach(f=>{f==null||f()})}},[o]),n}function zH(e){return typeof e=="object"&&e!==null&&"current"in e}function FH(e){const[t]=kP({observeMutation:!1,getNodes(){return[zH(e)?e.current:e]}});return t}function BH(e){const{min:t=0,max:n=100,onChange:r,value:o,defaultValue:s,isReversed:i,direction:l="ltr",orientation:f="horizontal",id:p,isDisabled:h,isReadOnly:m,onChangeStart:v,onChangeEnd:x,step:C=1,getAriaValueText:b,"aria-valuetext":w,"aria-label":k,"aria-labelledby":_,name:j,focusThumbOnChange:I=!0,minStepsBetweenThumbs:M=0,...E}=e,O=tn(v),D=tn(x),A=tn(b),R=bP({isReversed:i,direction:l,orientation:f}),[$,K]=Rc({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,U]=d.useState(!1),[Y,W]=d.useState(!1),[L,X]=d.useState(-1),z=!(h||m),q=d.useRef($),ne=$.map(ke=>Zl(ke,t,n)),Q=M*C,ie=HH(ne,t,n,Q),oe=d.useRef({eventSource:null,value:[],valueBounds:[]});oe.current.value=ne,oe.current.valueBounds=ie;const V=ne.map(ke=>n-ke+t),J=(R?V:ne).map(ke=>Zp(ke,t,n)),se=f==="vertical",re=d.useRef(null),fe=d.useRef(null),de=kP({getNodes(){const ke=fe.current,ze=ke==null?void 0:ke.querySelectorAll("[role=slider]");return ze?Array.from(ze):[]}}),me=d.useId(),he=yH(p??me),ue=d.useCallback(ke=>{var ze,Le;if(!re.current)return;oe.current.eventSource="pointer";const Ve=re.current.getBoundingClientRect(),{clientX:ct,clientY:vn}=(Le=(ze=ke.touches)==null?void 0:ze[0])!=null?Le:ke,_t=se?Ve.bottom-vn:ct-Ve.left,jt=se?Ve.height:Ve.width;let sr=_t/jt;return R&&(sr=1-sr),N3(sr,t,n)},[se,R,n,t]),De=(n-t)/10,je=C||(n-t)/100,Be=d.useMemo(()=>({setValueAtIndex(ke,ze){if(!z)return;const Le=oe.current.valueBounds[ke];ze=parseFloat(y1(ze,Le.min,je)),ze=Zl(ze,Le.min,Le.max);const Ve=[...oe.current.value];Ve[ke]=ze,K(Ve)},setActiveIndex:X,stepUp(ke,ze=je){const Le=oe.current.value[ke],Ve=R?Le-ze:Le+ze;Be.setValueAtIndex(ke,Ve)},stepDown(ke,ze=je){const Le=oe.current.value[ke],Ve=R?Le+ze:Le-ze;Be.setValueAtIndex(ke,Ve)},reset(){K(q.current)}}),[je,R,K,z]),rt=d.useCallback(ke=>{const ze=ke.key,Ve={ArrowRight:()=>Be.stepUp(L),ArrowUp:()=>Be.stepUp(L),ArrowLeft:()=>Be.stepDown(L),ArrowDown:()=>Be.stepDown(L),PageUp:()=>Be.stepUp(L,De),PageDown:()=>Be.stepDown(L,De),Home:()=>{const{min:ct}=ie[L];Be.setValueAtIndex(L,ct)},End:()=>{const{max:ct}=ie[L];Be.setValueAtIndex(L,ct)}}[ze];Ve&&(ke.preventDefault(),ke.stopPropagation(),Ve(ke),oe.current.eventSource="keyboard")},[Be,L,De,ie]),{getThumbStyle:Ue,rootStyle:Ct,trackStyle:Xe,innerTrackStyle:tt}=d.useMemo(()=>xP({isReversed:R,orientation:f,thumbRects:de,thumbPercents:J}),[R,f,J,de]),ve=d.useCallback(ke=>{var ze;const Le=ke??L;if(Le!==-1&&I){const Ve=he.getThumb(Le),ct=(ze=fe.current)==null?void 0:ze.ownerDocument.getElementById(Ve);ct&&setTimeout(()=>ct.focus())}},[I,L,he]);la(()=>{oe.current.eventSource==="keyboard"&&(D==null||D(oe.current.value))},[ne,D]);const Re=ke=>{const ze=ue(ke)||0,Le=oe.current.value.map(jt=>Math.abs(jt-ze)),Ve=Math.min(...Le);let ct=Le.indexOf(Ve);const vn=Le.filter(jt=>jt===Ve);vn.length>1&&ze>oe.current.value[ct]&&(ct=ct+vn.length-1),X(ct),Be.setValueAtIndex(ct,ze),ve(ct)},st=ke=>{if(L==-1)return;const ze=ue(ke)||0;X(L),Be.setValueAtIndex(L,ze),ve(L)};SP(fe,{onPanSessionStart(ke){z&&(U(!0),Re(ke),O==null||O(oe.current.value))},onPanSessionEnd(){z&&(U(!1),D==null||D(oe.current.value))},onPan(ke){z&&st(ke)}});const mt=d.useCallback((ke={},ze=null)=>({...ke,...E,id:he.root,ref:yt(ze,fe),tabIndex:-1,"aria-disabled":nc(h),"data-focused":ro(Y),style:{...ke.style,...Ct}}),[E,h,Y,Ct,he]),ge=d.useCallback((ke={},ze=null)=>({...ke,ref:yt(ze,re),id:he.track,"data-disabled":ro(h),style:{...ke.style,...Xe}}),[h,Xe,he]),Ye=d.useCallback((ke={},ze=null)=>({...ke,ref:ze,id:he.innerTrack,style:{...ke.style,...tt}}),[tt,he]),ot=d.useCallback((ke,ze=null)=>{var Le;const{index:Ve,...ct}=ke,vn=ne[Ve];if(vn==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${Ve}\`. The \`value\` or \`defaultValue\` length is : ${ne.length}`);const _t=ie[Ve];return{...ct,ref:ze,role:"slider",tabIndex:z?0:void 0,id:he.getThumb(Ve),"data-active":ro(B&&L===Ve),"aria-valuetext":(Le=A==null?void 0:A(vn))!=null?Le:w==null?void 0:w[Ve],"aria-valuemin":_t.min,"aria-valuemax":_t.max,"aria-valuenow":vn,"aria-orientation":f,"aria-disabled":nc(h),"aria-readonly":nc(m),"aria-label":k==null?void 0:k[Ve],"aria-labelledby":k!=null&&k[Ve]||_==null?void 0:_[Ve],style:{...ke.style,...Ue(Ve)},onKeyDown:rc(ke.onKeyDown,rt),onFocus:rc(ke.onFocus,()=>{W(!0),X(Ve)}),onBlur:rc(ke.onBlur,()=>{W(!1),X(-1)})}},[he,ne,ie,z,B,L,A,w,f,h,m,k,_,Ue,rt,W]),lt=d.useCallback((ke={},ze=null)=>({...ke,ref:ze,id:he.output,htmlFor:ne.map((Le,Ve)=>he.getThumb(Ve)).join(" "),"aria-live":"off"}),[he,ne]),Me=d.useCallback((ke,ze=null)=>{const{value:Le,...Ve}=ke,ct=!(Len),vn=Le>=ne[0]&&Le<=ne[ne.length-1];let _t=Zp(Le,t,n);_t=R?100-_t:_t;const jt={position:"absolute",pointerEvents:"none",...Ou({orientation:f,vertical:{bottom:`${_t}%`},horizontal:{left:`${_t}%`}})};return{...Ve,ref:ze,id:he.getMarker(ke.value),role:"presentation","aria-hidden":!0,"data-disabled":ro(h),"data-invalid":ro(!ct),"data-highlighted":ro(vn),style:{...ke.style,...jt}}},[h,R,n,t,f,ne,he]),$e=d.useCallback((ke,ze=null)=>{const{index:Le,...Ve}=ke;return{...Ve,ref:ze,id:he.getInput(Le),type:"hidden",value:ne[Le],name:Array.isArray(j)?j[Le]:`${j}-${Le}`}},[j,ne,he]);return{state:{value:ne,isFocused:Y,isDragging:B,getThumbPercent:ke=>J[ke],getThumbMinValue:ke=>ie[ke].min,getThumbMaxValue:ke=>ie[ke].max},actions:Be,getRootProps:mt,getTrackProps:ge,getInnerTrackProps:Ye,getThumbProps:ot,getMarkerProps:Me,getInputProps:$e,getOutputProps:lt}}function HH(e,t,n,r){return e.map((o,s)=>{const i=s===0?t:e[s-1]+r,l=s===e.length-1?n:e[s+1]-r;return{min:i,max:l}})}var[WH,Fm]=Tt({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[VH,Bm]=Tt({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),_P=Pe(function(t,n){const r={orientation:"horizontal",...t},o=Hn("Slider",r),s=Xt(r),{direction:i}=xd();s.direction=i;const{getRootProps:l,...f}=BH(s),p=d.useMemo(()=>({...f,name:r.name}),[f,r.name]);return a.jsx(WH,{value:p,children:a.jsx(VH,{value:o,children:a.jsx(_e.div,{...l({},n),className:"chakra-slider",__css:o.container,children:r.children})})})});_P.displayName="RangeSlider";var T1=Pe(function(t,n){const{getThumbProps:r,getInputProps:o,name:s}=Fm(),i=Bm(),l=r(t,n);return a.jsxs(_e.div,{...l,className:ei("chakra-slider__thumb",t.className),__css:i.thumb,children:[l.children,s&&a.jsx("input",{...o({index:t.index})})]})});T1.displayName="RangeSliderThumb";var jP=Pe(function(t,n){const{getTrackProps:r}=Fm(),o=Bm(),s=r(t,n);return a.jsx(_e.div,{...s,className:ei("chakra-slider__track",t.className),__css:o.track,"data-testid":"chakra-range-slider-track"})});jP.displayName="RangeSliderTrack";var PP=Pe(function(t,n){const{getInnerTrackProps:r}=Fm(),o=Bm(),s=r(t,n);return a.jsx(_e.div,{...s,className:"chakra-slider__filled-track",__css:o.filledTrack})});PP.displayName="RangeSliderFilledTrack";var Ap=Pe(function(t,n){const{getMarkerProps:r}=Fm(),o=Bm(),s=r(t,n);return a.jsx(_e.div,{...s,className:ei("chakra-slider__marker",t.className),__css:o.mark})});Ap.displayName="RangeSliderMark";function UH(e){var t;const{min:n=0,max:r=100,onChange:o,value:s,defaultValue:i,isReversed:l,direction:f="ltr",orientation:p="horizontal",id:h,isDisabled:m,isReadOnly:v,onChangeStart:x,onChangeEnd:C,step:b=1,getAriaValueText:w,"aria-valuetext":k,"aria-label":_,"aria-labelledby":j,name:I,focusThumbOnChange:M=!0,...E}=e,O=tn(x),D=tn(C),A=tn(w),R=bP({isReversed:l,direction:f,orientation:p}),[$,K]=Rc({value:s,defaultValue:i??KH(n,r),onChange:o}),[B,U]=d.useState(!1),[Y,W]=d.useState(!1),L=!(m||v),X=(r-n)/10,z=b||(r-n)/100,q=Zl($,n,r),ne=r-q+n,ie=Zp(R?ne:q,n,r),oe=p==="vertical",V=wP({min:n,max:r,step:b,isDisabled:m,value:q,isInteractive:L,isReversed:R,isVertical:oe,eventSource:null,focusThumbOnChange:M,orientation:p}),G=d.useRef(null),J=d.useRef(null),se=d.useRef(null),re=d.useId(),fe=h??re,[de,me]=[`slider-thumb-${fe}`,`slider-track-${fe}`],ye=d.useCallback(Me=>{var $e,Rt;if(!G.current)return;const ke=V.current;ke.eventSource="pointer";const ze=G.current.getBoundingClientRect(),{clientX:Le,clientY:Ve}=(Rt=($e=Me.touches)==null?void 0:$e[0])!=null?Rt:Me,ct=oe?ze.bottom-Ve:Le-ze.left,vn=oe?ze.height:ze.width;let _t=ct/vn;R&&(_t=1-_t);let jt=N3(_t,ke.min,ke.max);return ke.step&&(jt=parseFloat(y1(jt,ke.min,ke.step))),jt=Zl(jt,ke.min,ke.max),jt},[oe,R,V]),he=d.useCallback(Me=>{const $e=V.current;$e.isInteractive&&(Me=parseFloat(y1(Me,$e.min,z)),Me=Zl(Me,$e.min,$e.max),K(Me))},[z,K,V]),ue=d.useMemo(()=>({stepUp(Me=z){const $e=R?q-Me:q+Me;he($e)},stepDown(Me=z){const $e=R?q+Me:q-Me;he($e)},reset(){he(i||0)},stepTo(Me){he(Me)}}),[he,R,q,z,i]),De=d.useCallback(Me=>{const $e=V.current,ke={ArrowRight:()=>ue.stepUp(),ArrowUp:()=>ue.stepUp(),ArrowLeft:()=>ue.stepDown(),ArrowDown:()=>ue.stepDown(),PageUp:()=>ue.stepUp(X),PageDown:()=>ue.stepDown(X),Home:()=>he($e.min),End:()=>he($e.max)}[Me.key];ke&&(Me.preventDefault(),Me.stopPropagation(),ke(Me),$e.eventSource="keyboard")},[ue,he,X,V]),je=(t=A==null?void 0:A(q))!=null?t:k,Be=FH(J),{getThumbStyle:rt,rootStyle:Ue,trackStyle:Ct,innerTrackStyle:Xe}=d.useMemo(()=>{const Me=V.current,$e=Be??{width:0,height:0};return xP({isReversed:R,orientation:Me.orientation,thumbRects:[$e],thumbPercents:[ie]})},[R,Be,ie,V]),tt=d.useCallback(()=>{V.current.focusThumbOnChange&&setTimeout(()=>{var $e;return($e=J.current)==null?void 0:$e.focus()})},[V]);la(()=>{const Me=V.current;tt(),Me.eventSource==="keyboard"&&(D==null||D(Me.value))},[q,D]);function ve(Me){const $e=ye(Me);$e!=null&&$e!==V.current.value&&K($e)}SP(se,{onPanSessionStart(Me){const $e=V.current;$e.isInteractive&&(U(!0),tt(),ve(Me),O==null||O($e.value))},onPanSessionEnd(){const Me=V.current;Me.isInteractive&&(U(!1),D==null||D(Me.value))},onPan(Me){V.current.isInteractive&&ve(Me)}});const Re=d.useCallback((Me={},$e=null)=>({...Me,...E,ref:yt($e,se),tabIndex:-1,"aria-disabled":nc(m),"data-focused":ro(Y),style:{...Me.style,...Ue}}),[E,m,Y,Ue]),st=d.useCallback((Me={},$e=null)=>({...Me,ref:yt($e,G),id:me,"data-disabled":ro(m),style:{...Me.style,...Ct}}),[m,me,Ct]),mt=d.useCallback((Me={},$e=null)=>({...Me,ref:$e,style:{...Me.style,...Xe}}),[Xe]),ge=d.useCallback((Me={},$e=null)=>({...Me,ref:yt($e,J),role:"slider",tabIndex:L?0:void 0,id:de,"data-active":ro(B),"aria-valuetext":je,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":q,"aria-orientation":p,"aria-disabled":nc(m),"aria-readonly":nc(v),"aria-label":_,"aria-labelledby":_?void 0:j,style:{...Me.style,...rt(0)},onKeyDown:rc(Me.onKeyDown,De),onFocus:rc(Me.onFocus,()=>W(!0)),onBlur:rc(Me.onBlur,()=>W(!1))}),[L,de,B,je,n,r,q,p,m,v,_,j,rt,De]),Ye=d.useCallback((Me,$e=null)=>{const Rt=!(Me.valuer),ke=q>=Me.value,ze=Zp(Me.value,n,r),Le={position:"absolute",pointerEvents:"none",...GH({orientation:p,vertical:{bottom:R?`${100-ze}%`:`${ze}%`},horizontal:{left:R?`${100-ze}%`:`${ze}%`}})};return{...Me,ref:$e,role:"presentation","aria-hidden":!0,"data-disabled":ro(m),"data-invalid":ro(!Rt),"data-highlighted":ro(ke),style:{...Me.style,...Le}}},[m,R,r,n,p,q]),ot=d.useCallback((Me={},$e=null)=>({...Me,ref:$e,type:"hidden",value:q,name:I}),[I,q]);return{state:{value:q,isFocused:Y,isDragging:B},actions:ue,getRootProps:Re,getTrackProps:st,getInnerTrackProps:mt,getThumbProps:ge,getMarkerProps:Ye,getInputProps:ot}}function GH(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function KH(e,t){return t"}),[XH,Wm]=Tt({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),Ab=Pe((e,t)=>{var n;const r={...e,orientation:(n=e==null?void 0:e.orientation)!=null?n:"horizontal"},o=Hn("Slider",r),s=Xt(r),{direction:i}=xd();s.direction=i;const{getInputProps:l,getRootProps:f,...p}=UH(s),h=f(),m=l({},t);return a.jsx(qH,{value:p,children:a.jsx(XH,{value:o,children:a.jsxs(_e.div,{...h,className:ei("chakra-slider",r.className),__css:o.container,children:[r.children,a.jsx("input",{...m})]})})})});Ab.displayName="Slider";var Nb=Pe((e,t)=>{const{getThumbProps:n}=Hm(),r=Wm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__thumb",e.className),__css:r.thumb})});Nb.displayName="SliderThumb";var Tb=Pe((e,t)=>{const{getTrackProps:n}=Hm(),r=Wm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__track",e.className),__css:r.track})});Tb.displayName="SliderTrack";var $b=Pe((e,t)=>{const{getInnerTrackProps:n}=Hm(),r=Wm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__filled-track",e.className),__css:r.filledTrack})});$b.displayName="SliderFilledTrack";var $l=Pe((e,t)=>{const{getMarkerProps:n}=Hm(),r=Wm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__marker",e.className),__css:r.mark})});$l.displayName="SliderMark";var Lb=Pe(function(t,n){const r=Hn("Switch",t),{spacing:o="0.5rem",children:s,...i}=Xt(t),{getIndicatorProps:l,getInputProps:f,getCheckboxProps:p,getRootProps:h,getLabelProps:m}=A3(i),v=d.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),x=d.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),C=d.useMemo(()=>({userSelect:"none",marginStart:o,...r.label}),[o,r.label]);return a.jsxs(_e.label,{...h(),className:et("chakra-switch",t.className),__css:v,children:[a.jsx("input",{className:"chakra-switch__input",...f({},n)}),a.jsx(_e.span,{...p(),className:"chakra-switch__track",__css:x,children:a.jsx(_e.span,{__css:r.thumb,className:"chakra-switch__thumb",...l()})}),s&&a.jsx(_e.span,{className:"chakra-switch__label",...m(),__css:C,children:s})]})});Lb.displayName="Switch";var[YH,QH,ZH,JH]=Yx();function eW(e){var t;const{defaultIndex:n,onChange:r,index:o,isManual:s,isLazy:i,lazyBehavior:l="unmount",orientation:f="horizontal",direction:p="ltr",...h}=e,[m,v]=d.useState(n??0),[x,C]=Rc({defaultValue:n??0,value:o,onChange:r});d.useEffect(()=>{o!=null&&v(o)},[o]);const b=ZH(),w=d.useId();return{id:`tabs-${(t=e.id)!=null?t:w}`,selectedIndex:x,focusedIndex:m,setSelectedIndex:C,setFocusedIndex:v,isManual:s,isLazy:i,lazyBehavior:l,orientation:f,descendants:b,direction:p,htmlProps:h}}var[tW,Vm]=Tt({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function nW(e){const{focusedIndex:t,orientation:n,direction:r}=Vm(),o=QH(),s=d.useCallback(i=>{const l=()=>{var _;const j=o.nextEnabled(t);j&&((_=j.node)==null||_.focus())},f=()=>{var _;const j=o.prevEnabled(t);j&&((_=j.node)==null||_.focus())},p=()=>{var _;const j=o.firstEnabled();j&&((_=j.node)==null||_.focus())},h=()=>{var _;const j=o.lastEnabled();j&&((_=j.node)==null||_.focus())},m=n==="horizontal",v=n==="vertical",x=i.key,C=r==="ltr"?"ArrowLeft":"ArrowRight",b=r==="ltr"?"ArrowRight":"ArrowLeft",k={[C]:()=>m&&f(),[b]:()=>m&&l(),ArrowDown:()=>v&&l(),ArrowUp:()=>v&&f(),Home:p,End:h}[x];k&&(i.preventDefault(),k(i))},[o,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:Fe(e.onKeyDown,s)}}function rW(e){const{isDisabled:t=!1,isFocusable:n=!1,...r}=e,{setSelectedIndex:o,isManual:s,id:i,setFocusedIndex:l,selectedIndex:f}=Vm(),{index:p,register:h}=JH({disabled:t&&!n}),m=p===f,v=()=>{o(p)},x=()=>{l(p),!s&&!(t&&n)&&o(p)},C=A5({...r,ref:yt(h,e.ref),isDisabled:t,isFocusable:n,onClick:Fe(e.onClick,v)}),b="button";return{...C,id:IP(i,p),role:"tab",tabIndex:m?0:-1,type:b,"aria-selected":m,"aria-controls":EP(i,p),onFocus:t?void 0:Fe(e.onFocus,x)}}var[oW,sW]=Tt({});function aW(e){const t=Vm(),{id:n,selectedIndex:r}=t,s=_d(e.children).map((i,l)=>d.createElement(oW,{key:l,value:{isSelected:l===r,id:EP(n,l),tabId:IP(n,l),selectedIndex:r}},i));return{...e,children:s}}function iW(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:o}=Vm(),{isSelected:s,id:i,tabId:l}=sW(),f=d.useRef(!1);s&&(f.current=!0);const p=Ib({wasSelected:f.current,isSelected:s,enabled:r,mode:o});return{tabIndex:0,...n,children:p?t:null,role:"tabpanel","aria-labelledby":l,hidden:!s,id:i}}function IP(e,t){return`${e}--tab-${t}`}function EP(e,t){return`${e}--tabpanel-${t}`}var[lW,Um]=Tt({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Yi=Pe(function(t,n){const r=Hn("Tabs",t),{children:o,className:s,...i}=Xt(t),{htmlProps:l,descendants:f,...p}=eW(i),h=d.useMemo(()=>p,[p]),{isFitted:m,...v}=l;return a.jsx(YH,{value:f,children:a.jsx(tW,{value:h,children:a.jsx(lW,{value:r,children:a.jsx(_e.div,{className:et("chakra-tabs",s),ref:n,...v,__css:r.root,children:o})})})})});Yi.displayName="Tabs";var Qi=Pe(function(t,n){const r=nW({...t,ref:n}),s={display:"flex",...Um().tablist};return a.jsx(_e.div,{...r,className:et("chakra-tabs__tablist",t.className),__css:s})});Qi.displayName="TabList";var fo=Pe(function(t,n){const r=iW({...t,ref:n}),o=Um();return a.jsx(_e.div,{outline:"0",...r,className:et("chakra-tabs__tab-panel",t.className),__css:o.tabpanel})});fo.displayName="TabPanel";var zc=Pe(function(t,n){const r=aW(t),o=Um();return a.jsx(_e.div,{...r,width:"100%",ref:n,className:et("chakra-tabs__tab-panels",t.className),__css:o.tabpanels})});zc.displayName="TabPanels";var Pr=Pe(function(t,n){const r=Um(),o=rW({...t,ref:n}),s={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return a.jsx(_e.button,{...o,className:et("chakra-tabs__tab",t.className),__css:s})});Pr.displayName="Tab";function cW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var uW=["h","minH","height","minHeight"],MP=Pe((e,t)=>{const n=Qa("Textarea",e),{className:r,rows:o,...s}=Xt(e),i=Jx(s),l=o?cW(n,uW):n;return a.jsx(_e.textarea,{ref:t,rows:o,...i,className:et("chakra-textarea",r),__css:l})});MP.displayName="Textarea";var dW={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]}}}},$1=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},Np=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function fW(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:o,closeOnScroll:s,closeOnPointerDown:i=o,closeOnEsc:l=!0,onOpen:f,onClose:p,placement:h,id:m,isOpen:v,defaultIsOpen:x,arrowSize:C=10,arrowShadowColor:b,arrowPadding:w,modifiers:k,isDisabled:_,gutter:j,offset:I,direction:M,...E}=e,{isOpen:O,onOpen:D,onClose:A}=Pb({isOpen:v,defaultIsOpen:x,onOpen:f,onClose:p}),{referenceRef:R,getPopperProps:$,getArrowInnerProps:K,getArrowProps:B}=jb({enabled:O,placement:h,arrowPadding:w,modifiers:k,gutter:j,offset:I,direction:M}),U=d.useId(),W=`tooltip-${m??U}`,L=d.useRef(null),X=d.useRef(),z=d.useCallback(()=>{X.current&&(clearTimeout(X.current),X.current=void 0)},[]),q=d.useRef(),ne=d.useCallback(()=>{q.current&&(clearTimeout(q.current),q.current=void 0)},[]),Q=d.useCallback(()=>{ne(),A()},[A,ne]),ie=pW(L,Q),oe=d.useCallback(()=>{if(!_&&!X.current){O&&ie();const me=Np(L);X.current=me.setTimeout(D,t)}},[ie,_,O,D,t]),V=d.useCallback(()=>{z();const me=Np(L);q.current=me.setTimeout(Q,n)},[n,Q,z]),G=d.useCallback(()=>{O&&r&&V()},[r,V,O]),J=d.useCallback(()=>{O&&i&&V()},[i,V,O]),se=d.useCallback(me=>{O&&me.key==="Escape"&&V()},[O,V]);_i(()=>$1(L),"keydown",l?se:void 0),_i(()=>{const me=L.current;if(!me)return null;const ye=w5(me);return ye.localName==="body"?Np(L):ye},"scroll",()=>{O&&s&&Q()},{passive:!0,capture:!0}),d.useEffect(()=>{_&&(z(),O&&A())},[_,O,A,z]),d.useEffect(()=>()=>{z(),ne()},[z,ne]),_i(()=>L.current,"pointerleave",V);const re=d.useCallback((me={},ye=null)=>({...me,ref:yt(L,ye,R),onPointerEnter:Fe(me.onPointerEnter,ue=>{ue.pointerType!=="touch"&&oe()}),onClick:Fe(me.onClick,G),onPointerDown:Fe(me.onPointerDown,J),onFocus:Fe(me.onFocus,oe),onBlur:Fe(me.onBlur,V),"aria-describedby":O?W:void 0}),[oe,V,J,O,W,G,R]),fe=d.useCallback((me={},ye=null)=>$({...me,style:{...me.style,[jn.arrowSize.var]:C?`${C}px`:void 0,[jn.arrowShadowColor.var]:b}},ye),[$,C,b]),de=d.useCallback((me={},ye=null)=>{const he={...me.style,position:"relative",transformOrigin:jn.transformOrigin.varRef};return{ref:ye,...E,...me,id:W,role:"tooltip",style:he}},[E,W]);return{isOpen:O,show:oe,hide:V,getTriggerProps:re,getTooltipProps:de,getTooltipPositionerProps:fe,getArrowProps:B,getArrowInnerProps:K}}var pv="chakra-ui:close-tooltip";function pW(e,t){return d.useEffect(()=>{const n=$1(e);return n.addEventListener(pv,t),()=>n.removeEventListener(pv,t)},[t,e]),()=>{const n=$1(e),r=Np(e);n.dispatchEvent(new r.CustomEvent(pv))}}function hW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function mW(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var gW=_e(gn.div),Dt=Pe((e,t)=>{var n,r;const o=Qa("Tooltip",e),s=Xt(e),i=xd(),{children:l,label:f,shouldWrapChildren:p,"aria-label":h,hasArrow:m,bg:v,portalProps:x,background:C,backgroundColor:b,bgColor:w,motionProps:k,..._}=s,j=(r=(n=C??b)!=null?n:v)!=null?r:w;if(j){o.bg=j;const $=O7(i,"colors",j);o[jn.arrowBg.var]=$}const I=fW({..._,direction:i.direction}),M=typeof l=="string"||p;let E;if(M)E=a.jsx(_e.span,{display:"inline-block",tabIndex:0,...I.getTriggerProps(),children:l});else{const $=d.Children.only(l);E=d.cloneElement($,I.getTriggerProps($.props,$.ref))}const O=!!h,D=I.getTooltipProps({},t),A=O?hW(D,["role","id"]):D,R=mW(D,["role","id"]);return f?a.jsxs(a.Fragment,{children:[E,a.jsx(nr,{children:I.isOpen&&a.jsx(wd,{...x,children:a.jsx(_e.div,{...I.getTooltipPositionerProps(),__css:{zIndex:o.zIndex,pointerEvents:"none"},children:a.jsxs(gW,{variants:dW,initial:"exit",animate:"enter",exit:"exit",...k,...A,__css:o,children:[f,O&&a.jsx(_e.span,{srOnly:!0,...R,children:h}),m&&a.jsx(_e.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper",children:a.jsx(_e.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:o.bg}})})]})})})})]}):a.jsx(a.Fragment,{children:l})});Dt.displayName="Tooltip";const vo=e=>e.system,vW=e=>e.system.toastQueue,OP=ae(vo,e=>e.language,Ce),Pn=ae(e=>e,e=>e.system.isProcessing||!e.system.isConnected),xW=ae(vo,e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=e;return{consoleLogLevel:t,shouldLogToConsole:n}},{memoizeOptions:{resultEqualityCheck:kt}}),DP=e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=F(xW);return d.useEffect(()=>{n?(localStorage.setItem("ROARR_LOG","true"),localStorage.setItem("ROARR_FILTER",`context.logLevel:>=${D7[t]}`)):localStorage.setItem("ROARR_LOG","false"),AC.ROARR.write=R7.createLogWriter()},[t,n]),d.useEffect(()=>{const o={...A7};N7.set(AC.Roarr.child(o))},[]),d.useMemo(()=>Dc(e),[e])},bW=()=>{const e=te(),t=F(vW),n=k3();return d.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(T7())},[e,n,t]),null},Zi=()=>{const e=te();return d.useCallback(n=>e(Nt(zt(n))),[e])},yW=d.memo(bW);var CW=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 $d(e,t){var n=wW(e);if(typeof n.path!="string"){var r=e.webkitRelativePath;Object.defineProperty(n,"path",{value:typeof t=="string"?t:typeof r=="string"&&r.length>0?r:e.name,writable:!1,configurable:!1,enumerable:!0})}return n}function wW(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),o=CW.get(r);o&&Object.defineProperty(e,"type",{value:o,writable:!1,configurable:!1,enumerable:!0})}return e}var SW=[".DS_Store","Thumbs.db"];function kW(e){return Ac(this,void 0,void 0,function(){return Nc(this,function(t){return sh(e)&&_W(e.dataTransfer)?[2,EW(e.dataTransfer,e.type)]:jW(e)?[2,PW(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,IW(e)]:[2,[]]})})}function _W(e){return sh(e)}function jW(e){return sh(e)&&sh(e.target)}function sh(e){return typeof e=="object"&&e!==null}function PW(e){return L1(e.target.files).map(function(t){return $d(t)})}function IW(e){return Ac(this,void 0,void 0,function(){var t;return Nc(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 $d(r)})]}})})}function EW(e,t){return Ac(this,void 0,void 0,function(){var n,r;return Nc(this,function(o){switch(o.label){case 0:return e.items?(n=L1(e.items).filter(function(s){return s.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(MW))]):[3,2];case 1:return r=o.sent(),[2,fS(RP(r))];case 2:return[2,fS(L1(e.files).map(function(s){return $d(s)}))]}})})}function fS(e){return e.filter(function(t){return SW.indexOf(t.name)===-1})}function L1(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,vS(n)];if(e.sizen)return[!1,vS(n)]}return[!0,null]}function bi(e){return e!=null}function GW(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,s=e.multiple,i=e.maxFiles,l=e.validator;return!s&&t.length>1||s&&i>=1&&t.length>i?!1:t.every(function(f){var p=$P(f,n),h=rd(p,1),m=h[0],v=LP(f,r,o),x=rd(v,1),C=x[0],b=l?l(f):null;return m&&C&&!b})}function ah(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function Jf(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 bS(e){e.preventDefault()}function KW(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function qW(e){return e.indexOf("Edge/")!==-1}function XW(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return KW(e)||qW(e)}function ss(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),i=1;ie.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function fV(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 zb=d.forwardRef(function(e,t){var n=e.children,r=ih(e,tV),o=Fb(r),s=o.open,i=ih(o,nV);return d.useImperativeHandle(t,function(){return{open:s}},[s]),H.createElement(d.Fragment,null,n(an(an({},i),{},{open:s})))});zb.displayName="Dropzone";var HP={disabled:!1,getFilesFromEvent:kW,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};zb.defaultProps=HP;zb.propTypes={children:Bt.func,accept:Bt.objectOf(Bt.arrayOf(Bt.string)),multiple:Bt.bool,preventDropOnDocument:Bt.bool,noClick:Bt.bool,noKeyboard:Bt.bool,noDrag:Bt.bool,noDragEventsBubbling:Bt.bool,minSize:Bt.number,maxSize:Bt.number,maxFiles:Bt.number,disabled:Bt.bool,getFilesFromEvent:Bt.func,onFileDialogCancel:Bt.func,onFileDialogOpen:Bt.func,useFsAccessApi:Bt.bool,autoFocus:Bt.bool,onDragEnter:Bt.func,onDragLeave:Bt.func,onDragOver:Bt.func,onDrop:Bt.func,onDropAccepted:Bt.func,onDropRejected:Bt.func,onError:Bt.func,validator:Bt.func};var H1={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Fb(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=an(an({},HP),e),n=t.accept,r=t.disabled,o=t.getFilesFromEvent,s=t.maxSize,i=t.minSize,l=t.multiple,f=t.maxFiles,p=t.onDragEnter,h=t.onDragLeave,m=t.onDragOver,v=t.onDrop,x=t.onDropAccepted,C=t.onDropRejected,b=t.onFileDialogCancel,w=t.onFileDialogOpen,k=t.useFsAccessApi,_=t.autoFocus,j=t.preventDropOnDocument,I=t.noClick,M=t.noKeyboard,E=t.noDrag,O=t.noDragEventsBubbling,D=t.onError,A=t.validator,R=d.useMemo(function(){return ZW(n)},[n]),$=d.useMemo(function(){return QW(n)},[n]),K=d.useMemo(function(){return typeof w=="function"?w:CS},[w]),B=d.useMemo(function(){return typeof b=="function"?b:CS},[b]),U=d.useRef(null),Y=d.useRef(null),W=d.useReducer(pV,H1),L=hv(W,2),X=L[0],z=L[1],q=X.isFocused,ne=X.isFileDialogActive,Q=d.useRef(typeof window<"u"&&window.isSecureContext&&k&&YW()),ie=function(){!Q.current&&ne&&setTimeout(function(){if(Y.current){var Re=Y.current.files;Re.length||(z({type:"closeDialog"}),B())}},300)};d.useEffect(function(){return window.addEventListener("focus",ie,!1),function(){window.removeEventListener("focus",ie,!1)}},[Y,ne,B,Q]);var oe=d.useRef([]),V=function(Re){U.current&&U.current.contains(Re.target)||(Re.preventDefault(),oe.current=[])};d.useEffect(function(){return j&&(document.addEventListener("dragover",bS,!1),document.addEventListener("drop",V,!1)),function(){j&&(document.removeEventListener("dragover",bS),document.removeEventListener("drop",V))}},[U,j]),d.useEffect(function(){return!r&&_&&U.current&&U.current.focus(),function(){}},[U,_,r]);var G=d.useCallback(function(ve){D?D(ve):console.error(ve)},[D]),J=d.useCallback(function(ve){ve.preventDefault(),ve.persist(),Ue(ve),oe.current=[].concat(sV(oe.current),[ve.target]),Jf(ve)&&Promise.resolve(o(ve)).then(function(Re){if(!(ah(ve)&&!O)){var st=Re.length,mt=st>0&&GW({files:Re,accept:R,minSize:i,maxSize:s,multiple:l,maxFiles:f,validator:A}),ge=st>0&&!mt;z({isDragAccept:mt,isDragReject:ge,isDragActive:!0,type:"setDraggedFiles"}),p&&p(ve)}}).catch(function(Re){return G(Re)})},[o,p,G,O,R,i,s,l,f,A]),se=d.useCallback(function(ve){ve.preventDefault(),ve.persist(),Ue(ve);var Re=Jf(ve);if(Re&&ve.dataTransfer)try{ve.dataTransfer.dropEffect="copy"}catch{}return Re&&m&&m(ve),!1},[m,O]),re=d.useCallback(function(ve){ve.preventDefault(),ve.persist(),Ue(ve);var Re=oe.current.filter(function(mt){return U.current&&U.current.contains(mt)}),st=Re.indexOf(ve.target);st!==-1&&Re.splice(st,1),oe.current=Re,!(Re.length>0)&&(z({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Jf(ve)&&h&&h(ve))},[U,h,O]),fe=d.useCallback(function(ve,Re){var st=[],mt=[];ve.forEach(function(ge){var Ye=$P(ge,R),ot=hv(Ye,2),lt=ot[0],Me=ot[1],$e=LP(ge,i,s),Rt=hv($e,2),ke=Rt[0],ze=Rt[1],Le=A?A(ge):null;if(lt&&ke&&!Le)st.push(ge);else{var Ve=[Me,ze];Le&&(Ve=Ve.concat(Le)),mt.push({file:ge,errors:Ve.filter(function(ct){return ct})})}}),(!l&&st.length>1||l&&f>=1&&st.length>f)&&(st.forEach(function(ge){mt.push({file:ge,errors:[UW]})}),st.splice(0)),z({acceptedFiles:st,fileRejections:mt,type:"setFiles"}),v&&v(st,mt,Re),mt.length>0&&C&&C(mt,Re),st.length>0&&x&&x(st,Re)},[z,l,R,i,s,f,v,x,C,A]),de=d.useCallback(function(ve){ve.preventDefault(),ve.persist(),Ue(ve),oe.current=[],Jf(ve)&&Promise.resolve(o(ve)).then(function(Re){ah(ve)&&!O||fe(Re,ve)}).catch(function(Re){return G(Re)}),z({type:"reset"})},[o,fe,G,O]),me=d.useCallback(function(){if(Q.current){z({type:"openDialog"}),K();var ve={multiple:l,types:$};window.showOpenFilePicker(ve).then(function(Re){return o(Re)}).then(function(Re){fe(Re,null),z({type:"closeDialog"})}).catch(function(Re){JW(Re)?(B(Re),z({type:"closeDialog"})):eV(Re)?(Q.current=!1,Y.current?(Y.current.value=null,Y.current.click()):G(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided."))):G(Re)});return}Y.current&&(z({type:"openDialog"}),K(),Y.current.value=null,Y.current.click())},[z,K,B,k,fe,G,$,l]),ye=d.useCallback(function(ve){!U.current||!U.current.isEqualNode(ve.target)||(ve.key===" "||ve.key==="Enter"||ve.keyCode===32||ve.keyCode===13)&&(ve.preventDefault(),me())},[U,me]),he=d.useCallback(function(){z({type:"focus"})},[]),ue=d.useCallback(function(){z({type:"blur"})},[]),De=d.useCallback(function(){I||(XW()?setTimeout(me,0):me())},[I,me]),je=function(Re){return r?null:Re},Be=function(Re){return M?null:je(Re)},rt=function(Re){return E?null:je(Re)},Ue=function(Re){O&&Re.stopPropagation()},Ct=d.useMemo(function(){return function(){var ve=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Re=ve.refKey,st=Re===void 0?"ref":Re,mt=ve.role,ge=ve.onKeyDown,Ye=ve.onFocus,ot=ve.onBlur,lt=ve.onClick,Me=ve.onDragEnter,$e=ve.onDragOver,Rt=ve.onDragLeave,ke=ve.onDrop,ze=ih(ve,rV);return an(an(B1({onKeyDown:Be(ss(ge,ye)),onFocus:Be(ss(Ye,he)),onBlur:Be(ss(ot,ue)),onClick:je(ss(lt,De)),onDragEnter:rt(ss(Me,J)),onDragOver:rt(ss($e,se)),onDragLeave:rt(ss(Rt,re)),onDrop:rt(ss(ke,de)),role:typeof mt=="string"&&mt!==""?mt:"presentation"},st,U),!r&&!M?{tabIndex:0}:{}),ze)}},[U,ye,he,ue,De,J,se,re,de,M,E,r]),Xe=d.useCallback(function(ve){ve.stopPropagation()},[]),tt=d.useMemo(function(){return function(){var ve=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Re=ve.refKey,st=Re===void 0?"ref":Re,mt=ve.onChange,ge=ve.onClick,Ye=ih(ve,oV),ot=B1({accept:R,multiple:l,type:"file",style:{display:"none"},onChange:je(ss(mt,de)),onClick:je(ss(ge,Xe)),tabIndex:-1},st,Y);return an(an({},ot),Ye)}},[Y,n,l,de,r]);return an(an({},X),{},{isFocused:q&&!r,getRootProps:Ct,getInputProps:tt,rootRef:U,inputRef:Y,open:je(me)})}function pV(e,t){switch(t.type){case"focus":return an(an({},e),{},{isFocused:!0});case"blur":return an(an({},e),{},{isFocused:!1});case"openDialog":return an(an({},H1),{},{isFileDialogActive:!0});case"closeDialog":return an(an({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return an(an({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return an(an({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return an({},H1);default:return e}}function CS(){}function W1(){return W1=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 yV=function(t,n,r){r===void 0&&(r=!1);var o=n.alt,s=n.meta,i=n.mod,l=n.shift,f=n.ctrl,p=n.keys,h=t.key,m=t.code,v=t.ctrlKey,x=t.metaKey,C=t.shiftKey,b=t.altKey,w=$a(m),k=h.toLowerCase();if(!r){if(o===!b&&k!=="alt"||l===!C&&k!=="shift")return!1;if(i){if(!x&&!v)return!1}else if(s===!x&&k!=="meta"&&k!=="os"||f===!v&&k!=="ctrl"&&k!=="control")return!1}return p&&p.length===1&&(p.includes(k)||p.includes(w))?!0:p?Tp(p):!p},CV=d.createContext(void 0),wV=function(){return d.useContext(CV)};function KP(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&&KP(e[r],t[r])},!0):e===t}var SV=d.createContext({hotkeys:[],enabledScopes:[],toggleScope:function(){},enableScope:function(){},disableScope:function(){}}),kV=function(){return d.useContext(SV)};function _V(e){var t=d.useRef(void 0);return KP(t.current,e)||(t.current=e),t.current}var wS=function(t){t.stopPropagation(),t.preventDefault(),t.stopImmediatePropagation()},jV=typeof window<"u"?d.useLayoutEffect:d.useEffect;function Qe(e,t,n,r){var o=d.useRef(null),s=d.useRef(!1),i=n instanceof Array?r instanceof Array?void 0:r:n,l=Bb(e)?e.join(i==null?void 0:i.splitKey):e,f=n instanceof Array?n:r instanceof Array?r:void 0,p=d.useCallback(t,f??[]),h=d.useRef(p);f?h.current=p:h.current=t;var m=_V(i),v=kV(),x=v.enabledScopes,C=wV();return jV(function(){if(!((m==null?void 0:m.enabled)===!1||!bV(x,m==null?void 0:m.scopes))){var b=function(I,M){var E;if(M===void 0&&(M=!1),!(xV(I)&&!GP(I,m==null?void 0:m.enableOnFormTags))&&!(m!=null&&m.ignoreEventWhen!=null&&m.ignoreEventWhen(I))){if(o.current!==null&&document.activeElement!==o.current&&!o.current.contains(document.activeElement)){wS(I);return}(E=I.target)!=null&&E.isContentEditable&&!(m!=null&&m.enableOnContentEditable)||mv(l,m==null?void 0:m.splitKey).forEach(function(O){var D,A=gv(O,m==null?void 0:m.combinationKey);if(yV(I,A,m==null?void 0:m.ignoreModifiers)||(D=A.keys)!=null&&D.includes("*")){if(M&&s.current)return;if(gV(I,A,m==null?void 0:m.preventDefault),!vV(I,A,m==null?void 0:m.enabled)){wS(I);return}h.current(I,A),M||(s.current=!0)}})}},w=function(I){I.key!==void 0&&(VP($a(I.code)),((m==null?void 0:m.keydown)===void 0&&(m==null?void 0:m.keyup)!==!0||m!=null&&m.keydown)&&b(I))},k=function(I){I.key!==void 0&&(UP($a(I.code)),s.current=!1,m!=null&&m.keyup&&b(I,!0))},_=o.current||(i==null?void 0:i.document)||document;return _.addEventListener("keyup",k),_.addEventListener("keydown",w),C&&mv(l,m==null?void 0:m.splitKey).forEach(function(j){return C.addHotkey(gv(j,m==null?void 0:m.combinationKey,m==null?void 0:m.description))}),function(){_.removeEventListener("keyup",k),_.removeEventListener("keydown",w),C&&mv(l,m==null?void 0:m.splitKey).forEach(function(j){return C.removeHotkey(gv(j,m==null?void 0:m.combinationKey,m==null?void 0:m.description))})}}},[l,m,x]),o}const PV=e=>{const{isDragAccept:t,isDragReject:n,setIsHandlingUpload:r}=e;return Qe("esc",()=>{r(!1)}),a.jsxs(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"100vw",height:"100vh",zIndex:999,backdropFilter:"blur(20px)"},children:[a.jsx(T,{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(T,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"full",height:"full",alignItems:"center",justifyContent:"center",p:4},children:a.jsx(T,{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(oo,{size:"lg",children:"Drop to Upload"}):a.jsxs(a.Fragment,{children:[a.jsx(oo,{size:"lg",children:"Invalid Upload"}),a.jsx(oo,{size:"md",children:"Must be single JPEG or PNG image"})]})})})]})},IV=d.memo(PV),EV=ae([xe,wn],({gallery:e},t)=>{let n={type:"TOAST"};t==="unifiedCanvas"&&(n={type:"SET_CANVAS_INITIAL_IMAGE"}),t==="img2img"&&(n={type:"SET_INITIAL_IMAGE"});const{autoAddBoardId:r}=e;return{autoAddBoardId:r,postUploadAction:n}},Ce),MV=e=>{const{children:t}=e,{autoAddBoardId:n,postUploadAction:r}=F(EV),o=F(Pn),s=Zi(),{t:i}=we(),[l,f]=d.useState(!1),[p]=Ej(),h=d.useCallback(j=>{f(!0),s({title:i("toast.uploadFailed"),description:j.errors.map(I=>I.message).join(` -`),status:"error"})},[i,s]),m=d.useCallback(async j=>{p({file:j,image_category:"user",is_intermediate:!1,postUploadAction:r,board_id:n==="none"?void 0:n})},[n,r,p]),v=d.useCallback((j,I)=>{if(I.length>1){s({title:i("toast.uploadFailed"),description:i("toast.uploadFailedInvalidUploadDesc"),status:"error"});return}I.forEach(M=>{h(M)}),j.forEach(M=>{m(M)})},[i,s,m,h]),{getRootProps:x,getInputProps:C,isDragAccept:b,isDragReject:w,isDragActive:k,inputRef:_}=Fb({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:v,onDragOver:()=>f(!0),disabled:o,multiple:!1});return d.useEffect(()=>{const j=async I=>{var M,E;_.current&&(M=I.clipboardData)!=null&&M.files&&(_.current.files=I.clipboardData.files,(E=_.current)==null||E.dispatchEvent(new Event("change",{bubbles:!0})))};return document.addEventListener("paste",j),()=>{document.removeEventListener("paste",j)}},[_]),a.jsxs(Ie,{...x({style:{}}),onKeyDown:j=>{j.key},children:[a.jsx("input",{...C()}),t,a.jsx(nr,{children:k&&l&&a.jsx(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(IV,{isDragAccept:b,isDragReject:w,setIsHandlingUpload:f})},"image-upload-overlay")})]})},OV=d.memo(MV),DV=Pe((e,t)=>{const{children:n,tooltip:r="",tooltipProps:{placement:o="top",hasArrow:s=!0,...i}={},isChecked:l,...f}=e;return a.jsx(Dt,{label:r,placement:o,hasArrow:s,...i,children:a.jsx(gc,{ref:t,colorScheme:l?"accent":"base",...f,children:n})})}),it=d.memo(DV);function RV(e){const t=d.createContext(null);return[({children:o,value:s})=>H.createElement(t.Provider,{value:s},o),()=>{const o=d.useContext(t);if(o===null)throw new Error(e);return o}]}function qP(e){return Array.isArray(e)?e:[e]}const AV=()=>{};function NV(e,t={active:!0}){return typeof e!="function"||!t.active?t.onKeyDown||AV:n=>{var r;n.key==="Escape"&&(e(n),(r=t.onTrigger)==null||r.call(t))}}function XP({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 YP(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==H.Fragment:!1}function QP(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 LV=$7({key:"mantine",prepend:!0});function zV(){return g3()||LV}var FV=Object.defineProperty,SS=Object.getOwnPropertySymbols,BV=Object.prototype.hasOwnProperty,HV=Object.prototype.propertyIsEnumerable,kS=(e,t,n)=>t in e?FV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WV=(e,t)=>{for(var n in t||(t={}))BV.call(t,n)&&kS(e,n,t[n]);if(SS)for(var n of SS(t))HV.call(t,n)&&kS(e,n,t[n]);return e};const vv="ref";function VV(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(!(vv in n))return{args:e,ref:t};t=n[vv];const r=WV({},n);return delete r[vv],{args:[r],ref:t}}const{cssFactory:UV}=(()=>{function e(n,r,o){const s=[],i=F7(n,s,o);return s.length<2?o:i+r(s)}function t(n){const{cache:r}=n,o=(...i)=>{const{ref:l,args:f}=VV(i),p=L7(f,r.registered);return z7(r,p,!1),`${r.key}-${p.name}${l===void 0?"":` ${l}`}`};return{css:o,cx:(...i)=>e(r.registered,o,ZP(i))}}return{cssFactory:t}})();function JP(){const e=zV();return $V(()=>UV({cache:e}),[e])}function GV({cx:e,classes:t,context:n,classNames:r,name:o,cache:s}){const i=n.reduce((l,f)=>(Object.keys(f.classNames).forEach(p=>{typeof l[p]!="string"?l[p]=`${f.classNames[p]}`:l[p]=`${l[p]} ${f.classNames[p]}`}),l),{});return Object.keys(t).reduce((l,f)=>(l[f]=e(t[f],i[f],r!=null&&r[f],Array.isArray(o)?o.filter(Boolean).map(p=>`${(s==null?void 0:s.key)||"mantine"}-${p}-${f}`).join(" "):o?`${(s==null?void 0:s.key)||"mantine"}-${o}-${f}`:null),l),{})}var KV=Object.defineProperty,_S=Object.getOwnPropertySymbols,qV=Object.prototype.hasOwnProperty,XV=Object.prototype.propertyIsEnumerable,jS=(e,t,n)=>t in e?KV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xv=(e,t)=>{for(var n in t||(t={}))qV.call(t,n)&&jS(e,n,t[n]);if(_S)for(var n of _S(t))XV.call(t,n)&&jS(e,n,t[n]);return e};function V1(e,t){return t&&Object.keys(t).forEach(n=>{e[n]?e[n]=xv(xv({},e[n]),t[n]):e[n]=xv({},t[n])}),e}function PS(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)=>V1(s,i),{}):o(e)}function YV({ctx:e,theme:t,params:n,variant:r,size:o}){return e.reduce((s,i)=>(i.variants&&r in i.variants&&V1(s,i.variants[r](t,n,{variant:r,size:o})),i.sizes&&o in i.sizes&&V1(s,i.sizes[o](t,n,{variant:r,size:o})),s),{})}function or(e){const t=typeof e=="function"?e:()=>e;function n(r,o){const s=ca(),i=uN(o==null?void 0:o.name),l=g3(),f={variant:o==null?void 0:o.variant,size:o==null?void 0:o.size},{css:p,cx:h}=JP(),m=t(s,r,f),v=PS(o==null?void 0:o.styles,s,r,f),x=PS(i,s,r,f),C=YV({ctx:i,theme:s,params:r,variant:o==null?void 0:o.variant,size:o==null?void 0:o.size}),b=Object.fromEntries(Object.keys(m).map(w=>{const k=h({[p(m[w])]:!(o!=null&&o.unstyled)},p(C[w]),p(x[w]),p(v[w]));return[w,k]}));return{classes:GV({cx:h,classes:b,context:i,classNames:o==null?void 0:o.classNames,name:o==null?void 0:o.name,cache:l}),cx:h,theme:s}}return n}function IS(e){return`___ref-${e||""}`}var QV=Object.defineProperty,ZV=Object.defineProperties,JV=Object.getOwnPropertyDescriptors,ES=Object.getOwnPropertySymbols,eU=Object.prototype.hasOwnProperty,tU=Object.prototype.propertyIsEnumerable,MS=(e,t,n)=>t in e?QV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Cu=(e,t)=>{for(var n in t||(t={}))eU.call(t,n)&&MS(e,n,t[n]);if(ES)for(var n of ES(t))tU.call(t,n)&&MS(e,n,t[n]);return e},wu=(e,t)=>ZV(e,JV(t));const Su={in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${Oe(10)})`},transitionProperty:"transform, opacity"},ep={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:"opacity"},scale:{in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:"scale(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-y":{in:{opacity:1,transform:"scaleY(1)"},out:{opacity:0,transform:"scaleY(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-x":{in:{opacity:1,transform:"scaleX(1)"},out:{opacity:0,transform:"scaleX(0)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"skew-up":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(-${Oe(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"skew-down":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-left":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) rotate(-5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) rotate(5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-100%)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(100%)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"slide-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(100%)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"slide-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-100%)"},common:{transformOrigin:"right"},transitionProperty:"transform, opacity"},pop:wu(Cu({},Su),{common:{transformOrigin:"center center"}}),"pop-bottom-left":wu(Cu({},Su),{common:{transformOrigin:"bottom left"}}),"pop-bottom-right":wu(Cu({},Su),{common:{transformOrigin:"bottom right"}}),"pop-top-left":wu(Cu({},Su),{common:{transformOrigin:"top left"}}),"pop-top-right":wu(Cu({},Su),{common:{transformOrigin:"top right"}})},OS=["mousedown","touchstart"];function nU(e,t,n){const r=d.useRef();return d.useEffect(()=>{const o=s=>{const{target:i}=s??{};if(Array.isArray(n)){const l=(i==null?void 0:i.hasAttribute("data-ignore-outside-clicks"))||!document.body.contains(i)&&i.tagName!=="HTML";n.every(p=>!!p&&!s.composedPath().includes(p))&&!l&&e()}else r.current&&!r.current.contains(i)&&e()};return(t||OS).forEach(s=>document.addEventListener(s,o)),()=>{(t||OS).forEach(s=>document.removeEventListener(s,o))}},[r,e,n]),r}function rU(e,t){try{return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}catch{return e.addListener(t),()=>e.removeListener(t)}}function oU(e,t){return typeof t=="boolean"?t:typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function sU(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[r,o]=d.useState(n?t:oU(e,t)),s=d.useRef();return d.useEffect(()=>{if("matchMedia"in window)return s.current=window.matchMedia(e),o(s.current.matches),rU(s.current,i=>o(i.matches))},[e]),r}const e6=typeof document<"u"?d.useLayoutEffect:d.useEffect;function $o(e,t){const n=d.useRef(!1);d.useEffect(()=>()=>{n.current=!1},[]),d.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function aU({opened:e,shouldReturnFocus:t=!0}){const n=d.useRef(),r=()=>{var o;n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&((o=n.current)==null||o.focus({preventScroll:!0}))};return $o(()=>{let o=-1;const s=i=>{i.key==="Tab"&&window.clearTimeout(o)};return document.addEventListener("keydown",s),e?n.current=document.activeElement:t&&(o=window.setTimeout(r,10)),()=>{window.clearTimeout(o),document.removeEventListener("keydown",s)}},[e,t]),r}const iU=/input|select|textarea|button|object/,t6="a, input, select, textarea, button, object, [tabindex]";function lU(e){return e.style.display==="none"}function cU(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(lU(n))return!1;n=n.parentNode}return!0}function n6(e){let t=e.getAttribute("tabindex");return t===null&&(t=void 0),parseInt(t,10)}function U1(e){const t=e.nodeName.toLowerCase(),n=!Number.isNaN(n6(e));return(iU.test(t)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&cU(e)}function r6(e){const t=n6(e);return(Number.isNaN(t)||t>=0)&&U1(e)}function uU(e){return Array.from(e.querySelectorAll(t6)).filter(r6)}function dU(e,t){const n=uU(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 Wb(){return`mantine-${Math.random().toString(36).slice(2,11)}`}function fU(e,t="body > :not(script)"){const n=Wb(),r=Array.from(document.querySelectorAll(t)).map(o=>{var s;if((s=o==null?void 0:o.shadowRoot)!=null&&s.contains(e)||o.contains(e))return;const i=o.getAttribute("aria-hidden"),l=o.getAttribute("data-hidden"),f=o.getAttribute("data-focus-id");return o.setAttribute("data-focus-id",n),i===null||i==="false"?o.setAttribute("aria-hidden","true"):!l&&!f&&o.setAttribute("data-hidden",i),{node:o,ariaHidden:l||null}});return()=>{r.forEach(o=>{!o||n!==o.node.getAttribute("data-focus-id")||(o.ariaHidden===null?o.node.removeAttribute("aria-hidden"):o.node.setAttribute("aria-hidden",o.ariaHidden),o.node.removeAttribute("data-focus-id"),o.node.removeAttribute("data-hidden"))})}}function pU(e=!0){const t=d.useRef(),n=d.useRef(null),r=s=>{let i=s.querySelector("[data-autofocus]");if(!i){const l=Array.from(s.querySelectorAll(t6));i=l.find(r6)||l.find(U1)||null,!i&&U1(s)&&(i=s)}i&&i.focus({preventScroll:!0})},o=d.useCallback(s=>{if(e){if(s===null){n.current&&(n.current(),n.current=null);return}n.current=fU(s),t.current!==s&&(s?(setTimeout(()=>{s.getRootNode()&&r(s)}),t.current=s):t.current=null)}},[e]);return d.useEffect(()=>{if(!e)return;t.current&&setTimeout(()=>r(t.current));const s=i=>{i.key==="Tab"&&t.current&&dU(t.current,i)};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s),n.current&&n.current()}},[e]),o}const hU=H["useId".toString()]||(()=>{});function mU(){const e=hU();return e?`mantine-${e.replace(/:/g,"")}`:""}function Vb(e){const t=mU(),[n,r]=d.useState(t);return e6(()=>{r(Wb())},[]),typeof e=="string"?e:typeof window>"u"?t:n}function DS(e,t,n){d.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t])}function o6(e,t){typeof e=="function"?e(t):typeof e=="object"&&e!==null&&"current"in e&&(e.current=t)}function gU(...e){return t=>{e.forEach(n=>o6(n,t))}}function Ld(...e){return d.useCallback(gU(...e),e)}function od({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){const[o,s]=d.useState(t!==void 0?t:n),i=l=>{s(l),r==null||r(l)};return e!==void 0?[e,r,!0]:[o,i,!1]}function s6(e,t){return sU("(prefers-reduced-motion: reduce)",e,t)}const vU=e=>e<.5?2*e*e:-1+(4-2*e)*e,xU=({axis:e,target:t,parent:n,alignment:r,offset:o,isList:s})=>{if(!t||!n&&typeof document>"u")return 0;const i=!!n,f=(n||document.body).getBoundingClientRect(),p=t.getBoundingClientRect(),h=m=>p[m]-f[m];if(e==="y"){const m=h("top");if(m===0)return 0;if(r==="start"){const x=m-o;return x<=p.height*(s?0:1)||!s?x:0}const v=i?f.height:window.innerHeight;if(r==="end"){const x=m+o-v+p.height;return x>=-p.height*(s?0:1)||!s?x: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 x=m-o;return x<=p.width||!s?x:0}const v=i?f.width:window.innerWidth;if(r==="end"){const x=m+o-v+p.width;return x>=-p.width||!s?x:0}return r==="center"?m-v/2+p.width/2:0}return 0},bU=({axis:e,parent:t})=>{if(!t&&typeof document>"u")return 0;const n=e==="y"?"scrollTop":"scrollLeft";if(t)return t[n];const{body:r,documentElement:o}=document;return r[n]+o[n]},yU=({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 a6({duration:e=1250,axis:t="y",onScrollFinish:n,easing:r=vU,offset:o=0,cancelable:s=!0,isList:i=!1}={}){const l=d.useRef(0),f=d.useRef(0),p=d.useRef(!1),h=d.useRef(null),m=d.useRef(null),v=s6(),x=()=>{l.current&&cancelAnimationFrame(l.current)},C=d.useCallback(({alignment:w="start"}={})=>{var k;p.current=!1,l.current&&x();const _=(k=bU({parent:h.current,axis:t}))!=null?k:0,j=xU({parent:h.current,target:m.current,axis:t,alignment:w,offset:o,isList:i})-(h.current?0:_);function I(){f.current===0&&(f.current=performance.now());const E=performance.now()-f.current,O=v||e===0?1:E/e,D=_+j*r(O);yU({parent:h.current,axis:t,distance:D}),!p.current&&O<1?l.current=requestAnimationFrame(I):(typeof n=="function"&&n(),f.current=0,l.current=0,x())}I()},[t,e,r,i,o,n,v]),b=()=>{s&&(p.current=!0)};return DS("wheel",b,{passive:!0}),DS("touchmove",b,{passive:!0}),d.useEffect(()=>x,[]),{scrollableRef:h,targetRef:m,scrollIntoView:C,cancel:x}}var RS=Object.getOwnPropertySymbols,CU=Object.prototype.hasOwnProperty,wU=Object.prototype.propertyIsEnumerable,SU=(e,t)=>{var n={};for(var r in e)CU.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&RS)for(var r of RS(e))t.indexOf(r)<0&&wU.call(e,r)&&(n[r]=e[r]);return n};function Gm(e){const t=e,{m:n,mx:r,my:o,mt:s,mb:i,ml:l,mr:f,p,px:h,py:m,pt:v,pb:x,pl:C,pr:b,bg:w,c:k,opacity:_,ff:j,fz:I,fw:M,lts:E,ta:O,lh:D,fs:A,tt:R,td:$,w:K,miw:B,maw:U,h:Y,mih:W,mah:L,bgsz:X,bgp:z,bgr:q,bga:ne,pos:Q,top:ie,left:oe,bottom:V,right:G,inset:J,display:se}=t,re=SU(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:dN({m:n,mx:r,my:o,mt:s,mb:i,ml:l,mr:f,p,px:h,py:m,pt:v,pb:x,pl:C,pr:b,bg:w,c:k,opacity:_,ff:j,fz:I,fw:M,lts:E,ta:O,lh:D,fs:A,tt:R,td:$,w:K,miw:B,maw:U,h:Y,mih:W,mah:L,bgsz:X,bgp:z,bgr:q,bga:ne,pos:Q,top:ie,left:oe,bottom:V,right:G,inset:J,display:se}),rest:re}}function kU(e,t){const n=Object.keys(e).filter(r=>r!=="base").sort((r,o)=>bw(ut({size:r,sizes:t.breakpoints}))-bw(ut({size:o,sizes:t.breakpoints})));return"base"in e?["base",...n]:n}function _U({value:e,theme:t,getValue:n,property:r}){if(e==null)return;if(typeof e=="object")return kU(e,t).reduce((i,l)=>{if(l==="base"&&e.base!==void 0){const p=n(e.base,t);return Array.isArray(r)?(r.forEach(h=>{i[h]=p}),i):(i[r]=p,i)}const f=n(e[l],t);return Array.isArray(r)?(i[t.fn.largerThan(l)]={},r.forEach(p=>{i[t.fn.largerThan(l)][p]=f}),i):(i[t.fn.largerThan(l)]={[r]:f},i)},{});const o=n(e,t);return Array.isArray(r)?r.reduce((s,i)=>(s[i]=o,s),{}):{[r]:o}}function jU(e,t){return e==="dimmed"?t.colorScheme==="dark"?t.colors.dark[2]:t.colors.gray[6]:t.fn.variant({variant:"filled",color:e,primaryFallback:!1}).background}function PU(e){return Oe(e)}function IU(e){return e}function EU(e,t){return ut({size:e,sizes:t.fontSizes})}const MU=["-xs","-sm","-md","-lg","-xl"];function OU(e,t){return MU.includes(e)?`calc(${ut({size:e.replace("-",""),sizes:t.spacing})} * -1)`:ut({size:e,sizes:t.spacing})}const DU={identity:IU,color:jU,size:PU,fontSize:EU,spacing:OU},RU={m:{type:"spacing",property:"margin"},mt:{type:"spacing",property:"marginTop"},mb:{type:"spacing",property:"marginBottom"},ml:{type:"spacing",property:"marginLeft"},mr:{type:"spacing",property:"marginRight"},mx:{type:"spacing",property:["marginRight","marginLeft"]},my:{type:"spacing",property:["marginTop","marginBottom"]},p:{type:"spacing",property:"padding"},pt:{type:"spacing",property:"paddingTop"},pb:{type:"spacing",property:"paddingBottom"},pl:{type:"spacing",property:"paddingLeft"},pr:{type:"spacing",property:"paddingRight"},px:{type:"spacing",property:["paddingRight","paddingLeft"]},py:{type:"spacing",property:["paddingTop","paddingBottom"]},bg:{type:"color",property:"background"},c:{type:"color",property:"color"},opacity:{type:"identity",property:"opacity"},ff:{type:"identity",property:"fontFamily"},fz:{type:"fontSize",property:"fontSize"},fw:{type:"identity",property:"fontWeight"},lts:{type:"size",property:"letterSpacing"},ta:{type:"identity",property:"textAlign"},lh:{type:"identity",property:"lineHeight"},fs:{type:"identity",property:"fontStyle"},tt:{type:"identity",property:"textTransform"},td:{type:"identity",property:"textDecoration"},w:{type:"spacing",property:"width"},miw:{type:"spacing",property:"minWidth"},maw:{type:"spacing",property:"maxWidth"},h:{type:"spacing",property:"height"},mih:{type:"spacing",property:"minHeight"},mah:{type:"spacing",property:"maxHeight"},bgsz:{type:"size",property:"backgroundSize"},bgp:{type:"identity",property:"backgroundPosition"},bgr:{type:"identity",property:"backgroundRepeat"},bga:{type:"identity",property:"backgroundAttachment"},pos:{type:"identity",property:"position"},top:{type:"identity",property:"top"},left:{type:"size",property:"left"},bottom:{type:"size",property:"bottom"},right:{type:"size",property:"right"},inset:{type:"size",property:"inset"},display:{type:"identity",property:"display"}};var AU=Object.defineProperty,AS=Object.getOwnPropertySymbols,NU=Object.prototype.hasOwnProperty,TU=Object.prototype.propertyIsEnumerable,NS=(e,t,n)=>t in e?AU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,TS=(e,t)=>{for(var n in t||(t={}))NU.call(t,n)&&NS(e,n,t[n]);if(AS)for(var n of AS(t))TU.call(t,n)&&NS(e,n,t[n]);return e};function $S(e,t,n=RU){return Object.keys(n).reduce((o,s)=>(s in e&&e[s]!==void 0&&o.push(_U({value:e[s],getValue:DU[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]=TS(TS({},o[i]),s[i]):o[i]=s[i]}),o),{})}function LS(e,t){return typeof e=="function"?e(t):e}function $U(e,t,n){const r=ca(),{css:o,cx:s}=JP();return Array.isArray(e)?s(n,o($S(t,r)),e.map(i=>o(LS(i,r)))):s(n,o(LS(e,r)),o($S(t,r)))}var LU=Object.defineProperty,lh=Object.getOwnPropertySymbols,i6=Object.prototype.hasOwnProperty,l6=Object.prototype.propertyIsEnumerable,zS=(e,t,n)=>t in e?LU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zU=(e,t)=>{for(var n in t||(t={}))i6.call(t,n)&&zS(e,n,t[n]);if(lh)for(var n of lh(t))l6.call(t,n)&&zS(e,n,t[n]);return e},FU=(e,t)=>{var n={};for(var r in e)i6.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&&l6.call(e,r)&&(n[r]=e[r]);return n};const c6=d.forwardRef((e,t)=>{var n=e,{className:r,component:o,style:s,sx:i}=n,l=FU(n,["className","component","style","sx"]);const{systemStyles:f,rest:p}=Gm(l),h=o||"div";return H.createElement(h,zU({ref:t,className:$U(i,f,r),style:s},p))});c6.displayName="@mantine/core/Box";const Mr=c6;var BU=Object.defineProperty,HU=Object.defineProperties,WU=Object.getOwnPropertyDescriptors,FS=Object.getOwnPropertySymbols,VU=Object.prototype.hasOwnProperty,UU=Object.prototype.propertyIsEnumerable,BS=(e,t,n)=>t in e?BU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,HS=(e,t)=>{for(var n in t||(t={}))VU.call(t,n)&&BS(e,n,t[n]);if(FS)for(var n of FS(t))UU.call(t,n)&&BS(e,n,t[n]);return e},GU=(e,t)=>HU(e,WU(t)),KU=or(e=>({root:GU(HS(HS({},e.fn.focusStyles()),e.fn.fontStyles()),{cursor:"pointer",border:0,padding:0,appearance:"none",fontSize:e.fontSizes.md,backgroundColor:"transparent",textAlign:"left",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,textDecoration:"none",boxSizing:"border-box"})}));const qU=KU;var XU=Object.defineProperty,ch=Object.getOwnPropertySymbols,u6=Object.prototype.hasOwnProperty,d6=Object.prototype.propertyIsEnumerable,WS=(e,t,n)=>t in e?XU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,YU=(e,t)=>{for(var n in t||(t={}))u6.call(t,n)&&WS(e,n,t[n]);if(ch)for(var n of ch(t))d6.call(t,n)&&WS(e,n,t[n]);return e},QU=(e,t)=>{var n={};for(var r in e)u6.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&&d6.call(e,r)&&(n[r]=e[r]);return n};const f6=d.forwardRef((e,t)=>{const n=Sn("UnstyledButton",{},e),{className:r,component:o="button",unstyled:s,variant:i}=n,l=QU(n,["className","component","unstyled","variant"]),{classes:f,cx:p}=qU(null,{name:"UnstyledButton",unstyled:s,variant:i});return H.createElement(Mr,YU({component:o,ref:t,className:p(f.root,r),type:o==="button"?"button":void 0},l))});f6.displayName="@mantine/core/UnstyledButton";const ZU=f6;var JU=Object.defineProperty,eG=Object.defineProperties,tG=Object.getOwnPropertyDescriptors,VS=Object.getOwnPropertySymbols,nG=Object.prototype.hasOwnProperty,rG=Object.prototype.propertyIsEnumerable,US=(e,t,n)=>t in e?JU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,G1=(e,t)=>{for(var n in t||(t={}))nG.call(t,n)&&US(e,n,t[n]);if(VS)for(var n of VS(t))rG.call(t,n)&&US(e,n,t[n]);return e},GS=(e,t)=>eG(e,tG(t));const oG=["subtle","filled","outline","light","default","transparent","gradient"],tp={xs:Oe(18),sm:Oe(22),md:Oe(28),lg:Oe(34),xl:Oe(44)};function sG({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%"})}:oG.includes(e)?G1({border:`${Oe(1)} solid ${o.border}`,backgroundColor:o.background,color:o.color},t.fn.hover({backgroundColor:o.hover})):null}var aG=or((e,{radius:t,color:n,gradient:r},{variant:o,size:s})=>({root:GS(G1({position:"relative",borderRadius:e.fn.radius(t),padding:0,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",height:ut({size:s,sizes:tp}),minHeight:ut({size:s,sizes:tp}),width:ut({size:s,sizes:tp}),minWidth:ut({size:s,sizes:tp})},sG({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":GS(G1({content:'""'},e.fn.cover(Oe(-1))),{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.colors.dark[7],.5):"rgba(255, 255, 255, .5)",borderRadius:e.fn.radius(t),cursor:"not-allowed"})}})}));const iG=aG;var lG=Object.defineProperty,uh=Object.getOwnPropertySymbols,p6=Object.prototype.hasOwnProperty,h6=Object.prototype.propertyIsEnumerable,KS=(e,t,n)=>t in e?lG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qS=(e,t)=>{for(var n in t||(t={}))p6.call(t,n)&&KS(e,n,t[n]);if(uh)for(var n of uh(t))h6.call(t,n)&&KS(e,n,t[n]);return e},XS=(e,t)=>{var n={};for(var r in e)p6.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&&h6.call(e,r)&&(n[r]=e[r]);return n};function cG(e){var t=e,{size:n,color:r}=t,o=XS(t,["size","color"]);const s=o,{style:i}=s,l=XS(s,["style"]);return H.createElement("svg",qS({viewBox:"0 0 135 140",xmlns:"http://www.w3.org/2000/svg",fill:r,style:qS({width:n},i)},l),H.createElement("rect",{y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"30",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"60",width:"15",height:"140",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"90",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"120",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})))}var uG=Object.defineProperty,dh=Object.getOwnPropertySymbols,m6=Object.prototype.hasOwnProperty,g6=Object.prototype.propertyIsEnumerable,YS=(e,t,n)=>t in e?uG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,QS=(e,t)=>{for(var n in t||(t={}))m6.call(t,n)&&YS(e,n,t[n]);if(dh)for(var n of dh(t))g6.call(t,n)&&YS(e,n,t[n]);return e},ZS=(e,t)=>{var n={};for(var r in e)m6.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&&g6.call(e,r)&&(n[r]=e[r]);return n};function dG(e){var t=e,{size:n,color:r}=t,o=ZS(t,["size","color"]);const s=o,{style:i}=s,l=ZS(s,["style"]);return H.createElement("svg",QS({viewBox:"0 0 38 38",xmlns:"http://www.w3.org/2000/svg",stroke:r,style:QS({width:n,height:n},i)},l),H.createElement("g",{fill:"none",fillRule:"evenodd"},H.createElement("g",{transform:"translate(2.5 2.5)",strokeWidth:"5"},H.createElement("circle",{strokeOpacity:".5",cx:"16",cy:"16",r:"16"}),H.createElement("path",{d:"M32 16c0-9.94-8.06-16-16-16"},H.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"1s",repeatCount:"indefinite"})))))}var fG=Object.defineProperty,fh=Object.getOwnPropertySymbols,v6=Object.prototype.hasOwnProperty,x6=Object.prototype.propertyIsEnumerable,JS=(e,t,n)=>t in e?fG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,e4=(e,t)=>{for(var n in t||(t={}))v6.call(t,n)&&JS(e,n,t[n]);if(fh)for(var n of fh(t))x6.call(t,n)&&JS(e,n,t[n]);return e},t4=(e,t)=>{var n={};for(var r in e)v6.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&&x6.call(e,r)&&(n[r]=e[r]);return n};function pG(e){var t=e,{size:n,color:r}=t,o=t4(t,["size","color"]);const s=o,{style:i}=s,l=t4(s,["style"]);return H.createElement("svg",e4({viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",fill:r,style:e4({width:n},i)},l),H.createElement("circle",{cx:"15",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"60",cy:"15",r:"9",fillOpacity:"0.3"},H.createElement("animate",{attributeName:"r",from:"9",to:"9",begin:"0s",dur:"0.8s",values:"9;15;9",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"0.5",to:"0.5",begin:"0s",dur:"0.8s",values:".5;1;.5",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"105",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})))}var hG=Object.defineProperty,ph=Object.getOwnPropertySymbols,b6=Object.prototype.hasOwnProperty,y6=Object.prototype.propertyIsEnumerable,n4=(e,t,n)=>t in e?hG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mG=(e,t)=>{for(var n in t||(t={}))b6.call(t,n)&&n4(e,n,t[n]);if(ph)for(var n of ph(t))y6.call(t,n)&&n4(e,n,t[n]);return e},gG=(e,t)=>{var n={};for(var r in e)b6.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&&y6.call(e,r)&&(n[r]=e[r]);return n};const bv={bars:cG,oval:dG,dots:pG},vG={xs:Oe(18),sm:Oe(22),md:Oe(36),lg:Oe(44),xl:Oe(58)},xG={size:"md"};function C6(e){const t=Sn("Loader",xG,e),{size:n,color:r,variant:o}=t,s=gG(t,["size","color","variant"]),i=ca(),l=o in bv?o:i.loader;return H.createElement(Mr,mG({role:"presentation",component:bv[l]||bv.bars,size:ut({size:n,sizes:vG}),color:i.fn.variant({variant:"filled",primaryFallback:!1,color:r||i.primaryColor}).background},s))}C6.displayName="@mantine/core/Loader";var bG=Object.defineProperty,hh=Object.getOwnPropertySymbols,w6=Object.prototype.hasOwnProperty,S6=Object.prototype.propertyIsEnumerable,r4=(e,t,n)=>t in e?bG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,o4=(e,t)=>{for(var n in t||(t={}))w6.call(t,n)&&r4(e,n,t[n]);if(hh)for(var n of hh(t))S6.call(t,n)&&r4(e,n,t[n]);return e},yG=(e,t)=>{var n={};for(var r in e)w6.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&&S6.call(e,r)&&(n[r]=e[r]);return n};const CG={color:"gray",size:"md",variant:"subtle"},k6=d.forwardRef((e,t)=>{const n=Sn("ActionIcon",CG,e),{className:r,color:o,children:s,radius:i,size:l,variant:f,gradient:p,disabled:h,loaderProps:m,loading:v,unstyled:x,__staticSelector:C}=n,b=yG(n,["className","color","children","radius","size","variant","gradient","disabled","loaderProps","loading","unstyled","__staticSelector"]),{classes:w,cx:k,theme:_}=iG({radius:i,color:o,gradient:p},{name:["ActionIcon",C],unstyled:x,size:l,variant:f}),j=H.createElement(C6,o4({color:_.fn.variant({color:o,variant:f}).color,size:"100%","data-action-icon-loader":!0},m));return H.createElement(ZU,o4({className:k(w.root,r),ref:t,disabled:h,"data-disabled":h||void 0,"data-loading":v||void 0,unstyled:x},b),v?j:s)});k6.displayName="@mantine/core/ActionIcon";const wG=k6;var SG=Object.defineProperty,kG=Object.defineProperties,_G=Object.getOwnPropertyDescriptors,mh=Object.getOwnPropertySymbols,_6=Object.prototype.hasOwnProperty,j6=Object.prototype.propertyIsEnumerable,s4=(e,t,n)=>t in e?SG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jG=(e,t)=>{for(var n in t||(t={}))_6.call(t,n)&&s4(e,n,t[n]);if(mh)for(var n of mh(t))j6.call(t,n)&&s4(e,n,t[n]);return e},PG=(e,t)=>kG(e,_G(t)),IG=(e,t)=>{var n={};for(var r in e)_6.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&&j6.call(e,r)&&(n[r]=e[r]);return n};function P6(e){const t=Sn("Portal",{},e),{children:n,target:r,className:o,innerRef:s}=t,i=IG(t,["children","target","className","innerRef"]),l=ca(),[f,p]=d.useState(!1),h=d.useRef();return e6(()=>(p(!0),h.current=r?typeof r=="string"?document.querySelector(r):r:document.createElement("div"),r||document.body.appendChild(h.current),()=>{!r&&document.body.removeChild(h.current)}),[r]),f?so.createPortal(H.createElement("div",PG(jG({className:o,dir:l.dir},i),{ref:s}),n),h.current):null}P6.displayName="@mantine/core/Portal";var EG=Object.defineProperty,gh=Object.getOwnPropertySymbols,I6=Object.prototype.hasOwnProperty,E6=Object.prototype.propertyIsEnumerable,a4=(e,t,n)=>t in e?EG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,MG=(e,t)=>{for(var n in t||(t={}))I6.call(t,n)&&a4(e,n,t[n]);if(gh)for(var n of gh(t))E6.call(t,n)&&a4(e,n,t[n]);return e},OG=(e,t)=>{var n={};for(var r in e)I6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&gh)for(var r of gh(e))t.indexOf(r)<0&&E6.call(e,r)&&(n[r]=e[r]);return n};function M6(e){var t=e,{withinPortal:n=!0,children:r}=t,o=OG(t,["withinPortal","children"]);return n?H.createElement(P6,MG({},o),r):H.createElement(H.Fragment,null,r)}M6.displayName="@mantine/core/OptionalPortal";var DG=Object.defineProperty,vh=Object.getOwnPropertySymbols,O6=Object.prototype.hasOwnProperty,D6=Object.prototype.propertyIsEnumerable,i4=(e,t,n)=>t in e?DG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l4=(e,t)=>{for(var n in t||(t={}))O6.call(t,n)&&i4(e,n,t[n]);if(vh)for(var n of vh(t))D6.call(t,n)&&i4(e,n,t[n]);return e},RG=(e,t)=>{var n={};for(var r in e)O6.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&&D6.call(e,r)&&(n[r]=e[r]);return n};function R6(e){const t=e,{width:n,height:r,style:o}=t,s=RG(t,["width","height","style"]);return H.createElement("svg",l4({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:l4({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"}))}R6.displayName="@mantine/core/CloseIcon";var AG=Object.defineProperty,xh=Object.getOwnPropertySymbols,A6=Object.prototype.hasOwnProperty,N6=Object.prototype.propertyIsEnumerable,c4=(e,t,n)=>t in e?AG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,NG=(e,t)=>{for(var n in t||(t={}))A6.call(t,n)&&c4(e,n,t[n]);if(xh)for(var n of xh(t))N6.call(t,n)&&c4(e,n,t[n]);return e},TG=(e,t)=>{var n={};for(var r in e)A6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&xh)for(var r of xh(e))t.indexOf(r)<0&&N6.call(e,r)&&(n[r]=e[r]);return n};const $G={xs:Oe(12),sm:Oe(16),md:Oe(20),lg:Oe(28),xl:Oe(34)},LG={size:"sm"},T6=d.forwardRef((e,t)=>{const n=Sn("CloseButton",LG,e),{iconSize:r,size:o,children:s}=n,i=TG(n,["iconSize","size","children"]),l=Oe(r||$G[o]);return H.createElement(wG,NG({ref:t,__staticSelector:"CloseButton",size:o},i),s||H.createElement(R6,{width:l,height:l}))});T6.displayName="@mantine/core/CloseButton";const $6=T6;var zG=Object.defineProperty,FG=Object.defineProperties,BG=Object.getOwnPropertyDescriptors,u4=Object.getOwnPropertySymbols,HG=Object.prototype.hasOwnProperty,WG=Object.prototype.propertyIsEnumerable,d4=(e,t,n)=>t in e?zG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,np=(e,t)=>{for(var n in t||(t={}))HG.call(t,n)&&d4(e,n,t[n]);if(u4)for(var n of u4(t))WG.call(t,n)&&d4(e,n,t[n]);return e},VG=(e,t)=>FG(e,BG(t));function UG({underline:e,strikethrough:t}){const n=[];return e&&n.push("underline"),t&&n.push("line-through"),n.length>0?n.join(" "):"none"}function GG({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 KG(e){return typeof e=="number"?{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:e,WebkitBoxOrient:"vertical"}:null}function qG({theme:e,truncate:t}){return t==="start"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",direction:e.dir==="ltr"?"rtl":"ltr",textAlign:e.dir==="ltr"?"right":"left"}:t?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:null}var XG=or((e,{color:t,lineClamp:n,truncate:r,inline:o,inherit:s,underline:i,gradient:l,weight:f,transform:p,align:h,strikethrough:m,italic:v},{size:x})=>{const C=e.fn.variant({variant:"gradient",gradient:l});return{root:VG(np(np(np(np({},e.fn.fontStyles()),e.fn.focusStyles()),KG(n)),qG({theme:e,truncate:r})),{color:GG({color:t,theme:e}),fontFamily:s?"inherit":e.fontFamily,fontSize:s||x===void 0?"inherit":ut({size:x,sizes:e.fontSizes}),lineHeight:s?"inherit":o?1:e.lineHeight,textDecoration:UG({underline:i,strikethrough:m}),WebkitTapHighlightColor:"transparent",fontWeight:s?"inherit":f,textTransform:p,textAlign:h,fontStyle:v?"italic":void 0}),gradient:{backgroundImage:C.background,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"}}});const YG=XG;var QG=Object.defineProperty,bh=Object.getOwnPropertySymbols,L6=Object.prototype.hasOwnProperty,z6=Object.prototype.propertyIsEnumerable,f4=(e,t,n)=>t in e?QG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ZG=(e,t)=>{for(var n in t||(t={}))L6.call(t,n)&&f4(e,n,t[n]);if(bh)for(var n of bh(t))z6.call(t,n)&&f4(e,n,t[n]);return e},JG=(e,t)=>{var n={};for(var r in e)L6.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&&z6.call(e,r)&&(n[r]=e[r]);return n};const eK={variant:"text"},F6=d.forwardRef((e,t)=>{const n=Sn("Text",eK,e),{className:r,size:o,weight:s,transform:i,color:l,align:f,variant:p,lineClamp:h,truncate:m,gradient:v,inline:x,inherit:C,underline:b,strikethrough:w,italic:k,classNames:_,styles:j,unstyled:I,span:M,__staticSelector:E}=n,O=JG(n,["className","size","weight","transform","color","align","variant","lineClamp","truncate","gradient","inline","inherit","underline","strikethrough","italic","classNames","styles","unstyled","span","__staticSelector"]),{classes:D,cx:A}=YG({color:l,lineClamp:h,truncate:m,inline:x,inherit:C,underline:b,strikethrough:w,italic:k,weight:s,transform:i,align:f,gradient:v},{unstyled:I,name:E||"Text",variant:p,size:o});return H.createElement(Mr,ZG({ref:t,className:A(D.root,{[D.gradient]:p==="gradient"},r),component:M?"span":"div"},O))});F6.displayName="@mantine/core/Text";const wc=F6,rp={xs:Oe(1),sm:Oe(2),md:Oe(3),lg:Oe(4),xl:Oe(5)};function op(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 tK=or((e,{color:t},{size:n,variant:r})=>({root:{},withLabel:{borderTop:"0 !important"},left:{"&::before":{display:"none"}},right:{"&::after":{display:"none"}},label:{display:"flex",alignItems:"center","&::before":{content:'""',flex:1,height:Oe(1),borderTop:`${ut({size:n,sizes:rp})} ${r} ${op(e,t)}`,marginRight:e.spacing.xs},"&::after":{content:'""',flex:1,borderTop:`${ut({size:n,sizes:rp})} ${r} ${op(e,t)}`,marginLeft:e.spacing.xs}},labelDefaultStyles:{color:t==="dark"?e.colors.dark[1]:e.fn.themeColor(t,e.colorScheme==="dark"?5:e.fn.primaryShade(),!1)},horizontal:{border:0,borderTopWidth:Oe(ut({size:n,sizes:rp})),borderTopColor:op(e,t),borderTopStyle:r,margin:0},vertical:{border:0,alignSelf:"stretch",height:"auto",borderLeftWidth:Oe(ut({size:n,sizes:rp})),borderLeftColor:op(e,t),borderLeftStyle:r}}));const nK=tK;var rK=Object.defineProperty,oK=Object.defineProperties,sK=Object.getOwnPropertyDescriptors,yh=Object.getOwnPropertySymbols,B6=Object.prototype.hasOwnProperty,H6=Object.prototype.propertyIsEnumerable,p4=(e,t,n)=>t in e?rK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,h4=(e,t)=>{for(var n in t||(t={}))B6.call(t,n)&&p4(e,n,t[n]);if(yh)for(var n of yh(t))H6.call(t,n)&&p4(e,n,t[n]);return e},aK=(e,t)=>oK(e,sK(t)),iK=(e,t)=>{var n={};for(var r in e)B6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&yh)for(var r of yh(e))t.indexOf(r)<0&&H6.call(e,r)&&(n[r]=e[r]);return n};const lK={orientation:"horizontal",size:"xs",labelPosition:"left",variant:"solid"},K1=d.forwardRef((e,t)=>{const n=Sn("Divider",lK,e),{className:r,color:o,orientation:s,size:i,label:l,labelPosition:f,labelProps:p,variant:h,styles:m,classNames:v,unstyled:x}=n,C=iK(n,["className","color","orientation","size","label","labelPosition","labelProps","variant","styles","classNames","unstyled"]),{classes:b,cx:w}=nK({color:o},{classNames:v,styles:m,unstyled:x,name:"Divider",variant:h,size:i}),k=s==="vertical",_=s==="horizontal",j=!!l&&_,I=!(p!=null&&p.color);return H.createElement(Mr,h4({ref:t,className:w(b.root,{[b.vertical]:k,[b.horizontal]:_,[b.withLabel]:j},r),role:"separator"},C),j&&H.createElement(wc,aK(h4({},p),{size:(p==null?void 0:p.size)||"xs",mt:Oe(2),className:w(b.label,b[f],{[b.labelDefaultStyles]:I})}),l))});K1.displayName="@mantine/core/Divider";var cK=Object.defineProperty,uK=Object.defineProperties,dK=Object.getOwnPropertyDescriptors,m4=Object.getOwnPropertySymbols,fK=Object.prototype.hasOwnProperty,pK=Object.prototype.propertyIsEnumerable,g4=(e,t,n)=>t in e?cK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v4=(e,t)=>{for(var n in t||(t={}))fK.call(t,n)&&g4(e,n,t[n]);if(m4)for(var n of m4(t))pK.call(t,n)&&g4(e,n,t[n]);return e},hK=(e,t)=>uK(e,dK(t)),mK=or((e,t,{size:n})=>({item:hK(v4({},e.fn.fontStyles()),{boxSizing:"border-box",wordBreak:"break-all",textAlign:"left",width:"100%",padding:`calc(${ut({size:n,sizes:e.spacing})} / 1.5) ${ut({size:n,sizes:e.spacing})}`,cursor:"pointer",fontSize:ut({size:n,sizes:e.fontSizes}),color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,borderRadius:e.fn.radius(),"&[data-hovered]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[1]},"&[data-selected]":v4({backgroundColor:e.fn.variant({variant:"filled"}).background,color:e.fn.variant({variant:"filled"}).color},e.fn.hover({backgroundColor:e.fn.variant({variant:"filled"}).hover})),"&[data-disabled]":{cursor:"default",color:e.colors.dark[2]}}),nothingFound:{boxSizing:"border-box",color:e.colors.gray[6],paddingTop:`calc(${ut({size:n,sizes:e.spacing})} / 2)`,paddingBottom:`calc(${ut({size:n,sizes:e.spacing})} / 2)`,textAlign:"center"},separator:{boxSizing:"border-box",textAlign:"left",width:"100%",padding:`calc(${ut({size:n,sizes:e.spacing})} / 1.5) ${ut({size:n,sizes:e.spacing})}`},separatorLabel:{color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]}}));const gK=mK;var vK=Object.defineProperty,x4=Object.getOwnPropertySymbols,xK=Object.prototype.hasOwnProperty,bK=Object.prototype.propertyIsEnumerable,b4=(e,t,n)=>t in e?vK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yK=(e,t)=>{for(var n in t||(t={}))xK.call(t,n)&&b4(e,n,t[n]);if(x4)for(var n of x4(t))bK.call(t,n)&&b4(e,n,t[n]);return e};function Ub({data:e,hovered:t,classNames:n,styles:r,isItemSelected:o,uuid:s,__staticSelector:i,onItemHover:l,onItemSelect:f,itemsRefs:p,itemComponent:h,size:m,nothingFound:v,creatable:x,createLabel:C,unstyled:b,variant:w}){const{classes:k}=gK(null,{classNames:n,styles:r,unstyled:b,name:i,variant:w,size:m}),_=[],j=[];let I=null;const M=(O,D)=>{const A=typeof o=="function"?o(O.value):!1;return H.createElement(h,yK({key:O.value,className:k.item,"data-disabled":O.disabled||void 0,"data-hovered":!O.disabled&&t===D||void 0,"data-selected":!O.disabled&&A||void 0,selected:A,onMouseEnter:()=>l(D),id:`${s}-${D}`,role:"option",tabIndex:-1,"aria-selected":t===D,ref:R=>{p&&p.current&&(p.current[O.value]=R)},onMouseDown:O.disabled?null:R=>{R.preventDefault(),f(O)},disabled:O.disabled,variant:w},O))};let E=null;if(e.forEach((O,D)=>{O.creatable?I=D:O.group?(E!==O.group&&(E=O.group,j.push(H.createElement("div",{className:k.separator,key:`__mantine-divider-${D}`},H.createElement(K1,{classNames:{label:k.separatorLabel},label:O.group})))),j.push(M(O,D))):_.push(M(O,D))}),x){const O=e[I];_.push(H.createElement("div",{key:Wb(),className:k.item,"data-hovered":t===I||void 0,onMouseEnter:()=>l(I),onMouseDown:D=>{D.preventDefault(),f(O)},tabIndex:-1,ref:D=>{p&&p.current&&(p.current[O.value]=D)}},C))}return j.length>0&&_.length>0&&_.unshift(H.createElement("div",{className:k.separator,key:"empty-group-separator"},H.createElement(K1,null))),j.length>0||_.length>0?H.createElement(H.Fragment,null,j,_):H.createElement(wc,{size:m,unstyled:b,className:k.nothingFound},v)}Ub.displayName="@mantine/core/SelectItems";var CK=Object.defineProperty,Ch=Object.getOwnPropertySymbols,W6=Object.prototype.hasOwnProperty,V6=Object.prototype.propertyIsEnumerable,y4=(e,t,n)=>t in e?CK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wK=(e,t)=>{for(var n in t||(t={}))W6.call(t,n)&&y4(e,n,t[n]);if(Ch)for(var n of Ch(t))V6.call(t,n)&&y4(e,n,t[n]);return e},SK=(e,t)=>{var n={};for(var r in e)W6.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&&V6.call(e,r)&&(n[r]=e[r]);return n};const Gb=d.forwardRef((e,t)=>{var n=e,{label:r,value:o}=n,s=SK(n,["label","value"]);return H.createElement("div",wK({ref:t},s),r||o)});Gb.displayName="@mantine/core/DefaultItem";function kK(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function U6(...e){return t=>e.forEach(n=>kK(n,t))}function Ji(...e){return d.useCallback(U6(...e),e)}const G6=d.forwardRef((e,t)=>{const{children:n,...r}=e,o=d.Children.toArray(n),s=o.find(jK);if(s){const i=s.props.children,l=o.map(f=>f===s?d.Children.count(i)>1?d.Children.only(null):d.isValidElement(i)?i.props.children:null:f);return d.createElement(q1,nn({},r,{ref:t}),d.isValidElement(i)?d.cloneElement(i,void 0,l):null)}return d.createElement(q1,nn({},r,{ref:t}),n)});G6.displayName="Slot";const q1=d.forwardRef((e,t)=>{const{children:n,...r}=e;return d.isValidElement(n)?d.cloneElement(n,{...PK(r,n.props),ref:U6(t,n.ref)}):d.Children.count(n)>1?d.Children.only(null):null});q1.displayName="SlotClone";const _K=({children:e})=>d.createElement(d.Fragment,null,e);function jK(e){return d.isValidElement(e)&&e.type===_K}function PK(e,t){const n={...t};for(const r in t){const o=e[r],s=t[r];/^on[A-Z]/.test(r)?o&&s?n[r]=(...l)=>{s(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...s}:r==="className"&&(n[r]=[o,s].filter(Boolean).join(" "))}return{...e,...n}}const IK=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],zd=IK.reduce((e,t)=>{const n=d.forwardRef((r,o)=>{const{asChild:s,...i}=r,l=s?G6:t;return d.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),d.createElement(l,nn({},i,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),X1=globalThis!=null&&globalThis.document?d.useLayoutEffect:()=>{};function EK(e,t){return d.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const Fd=e=>{const{present:t,children:n}=e,r=MK(t),o=typeof n=="function"?n({present:r.isPresent}):d.Children.only(n),s=Ji(r.ref,o.ref);return typeof n=="function"||r.isPresent?d.cloneElement(o,{ref:s}):null};Fd.displayName="Presence";function MK(e){const[t,n]=d.useState(),r=d.useRef({}),o=d.useRef(e),s=d.useRef("none"),i=e?"mounted":"unmounted",[l,f]=EK(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return d.useEffect(()=>{const p=sp(r.current);s.current=l==="mounted"?p:"none"},[l]),X1(()=>{const p=r.current,h=o.current;if(h!==e){const v=s.current,x=sp(p);e?f("MOUNT"):x==="none"||(p==null?void 0:p.display)==="none"?f("UNMOUNT"):f(h&&v!==x?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,f]),X1(()=>{if(t){const p=m=>{const x=sp(r.current).includes(m.animationName);m.target===t&&x&&so.flushSync(()=>f("ANIMATION_END"))},h=m=>{m.target===t&&(s.current=sp(r.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else f("ANIMATION_END")},[t,f]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:d.useCallback(p=>{p&&(r.current=getComputedStyle(p)),n(p)},[])}}function sp(e){return(e==null?void 0:e.animationName)||"none"}function OK(e,t=[]){let n=[];function r(s,i){const l=d.createContext(i),f=n.length;n=[...n,i];function p(m){const{scope:v,children:x,...C}=m,b=(v==null?void 0:v[e][f])||l,w=d.useMemo(()=>C,Object.values(C));return d.createElement(b.Provider,{value:w},x)}function h(m,v){const x=(v==null?void 0:v[e][f])||l,C=d.useContext(x);if(C)return C;if(i!==void 0)return i;throw new Error(`\`${m}\` must be used within \`${s}\``)}return p.displayName=s+"Provider",[p,h]}const o=()=>{const s=n.map(i=>d.createContext(i));return function(l){const f=(l==null?void 0:l[e])||s;return d.useMemo(()=>({[`__scope${e}`]:{...l,[e]:f}}),[l,f])}};return o.scopeName=e,[r,DK(o,...t)]}function DK(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){const i=r.reduce((l,{useScope:f,scopeName:p})=>{const m=f(s)[`__scope${p}`];return{...l,...m}},{});return d.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}function yi(e){const t=d.useRef(e);return d.useEffect(()=>{t.current=e}),d.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}const RK=d.createContext(void 0);function AK(e){const t=d.useContext(RK);return e||t||"ltr"}function NK(e,[t,n]){return Math.min(n,Math.max(t,e))}function Pi(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 TK(e,t){return d.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const K6="ScrollArea",[q6,Jge]=OK(K6),[$K,xo]=q6(K6),LK=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...i}=e,[l,f]=d.useState(null),[p,h]=d.useState(null),[m,v]=d.useState(null),[x,C]=d.useState(null),[b,w]=d.useState(null),[k,_]=d.useState(0),[j,I]=d.useState(0),[M,E]=d.useState(!1),[O,D]=d.useState(!1),A=Ji(t,$=>f($)),R=AK(o);return d.createElement($K,{scope:n,type:r,dir:R,scrollHideDelay:s,scrollArea:l,viewport:p,onViewportChange:h,content:m,onContentChange:v,scrollbarX:x,onScrollbarXChange:C,scrollbarXEnabled:M,onScrollbarXEnabledChange:E,scrollbarY:b,onScrollbarYChange:w,scrollbarYEnabled:O,onScrollbarYEnabledChange:D,onCornerWidthChange:_,onCornerHeightChange:I},d.createElement(zd.div,nn({dir:R},i,{ref:A,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":j+"px",...e.style}})))}),zK="ScrollAreaViewport",FK=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,...o}=e,s=xo(zK,n),i=d.useRef(null),l=Ji(t,i,s.onViewportChange);return d.createElement(d.Fragment,null,d.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"}}),d.createElement(zd.div,nn({"data-radix-scroll-area-viewport":""},o,{ref:l,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style}}),d.createElement("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"}},r)))}),da="ScrollAreaScrollbar",BK=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=xo(da,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=o,l=e.orientation==="horizontal";return d.useEffect(()=>(l?s(!0):i(!0),()=>{l?s(!1):i(!1)}),[l,s,i]),o.type==="hover"?d.createElement(HK,nn({},r,{ref:t,forceMount:n})):o.type==="scroll"?d.createElement(WK,nn({},r,{ref:t,forceMount:n})):o.type==="auto"?d.createElement(X6,nn({},r,{ref:t,forceMount:n})):o.type==="always"?d.createElement(Kb,nn({},r,{ref:t})):null}),HK=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=xo(da,e.__scopeScrollArea),[s,i]=d.useState(!1);return d.useEffect(()=>{const l=o.scrollArea;let f=0;if(l){const p=()=>{window.clearTimeout(f),i(!0)},h=()=>{f=window.setTimeout(()=>i(!1),o.scrollHideDelay)};return l.addEventListener("pointerenter",p),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(f),l.removeEventListener("pointerenter",p),l.removeEventListener("pointerleave",h)}}},[o.scrollArea,o.scrollHideDelay]),d.createElement(Fd,{present:n||s},d.createElement(X6,nn({"data-state":s?"visible":"hidden"},r,{ref:t})))}),WK=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=xo(da,e.__scopeScrollArea),s=e.orientation==="horizontal",i=qm(()=>f("SCROLL_END"),100),[l,f]=TK("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return d.useEffect(()=>{if(l==="idle"){const p=window.setTimeout(()=>f("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(p)}},[l,o.scrollHideDelay,f]),d.useEffect(()=>{const p=o.viewport,h=s?"scrollLeft":"scrollTop";if(p){let m=p[h];const v=()=>{const x=p[h];m!==x&&(f("SCROLL"),i()),m=x};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[o.viewport,s,f,i]),d.createElement(Fd,{present:n||l!=="hidden"},d.createElement(Kb,nn({"data-state":l==="hidden"?"hidden":"visible"},r,{ref:t,onPointerEnter:Pi(e.onPointerEnter,()=>f("POINTER_ENTER")),onPointerLeave:Pi(e.onPointerLeave,()=>f("POINTER_LEAVE"))})))}),X6=d.forwardRef((e,t)=>{const n=xo(da,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,i]=d.useState(!1),l=e.orientation==="horizontal",f=qm(()=>{if(n.viewport){const p=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=e,o=xo(da,e.__scopeScrollArea),s=d.useRef(null),i=d.useRef(0),[l,f]=d.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=J6(l.viewport,l.content),h={...r,sizes:l,onSizesChange:f,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:v=>i.current=v};function m(v,x){return QK(v,i.current,l,x)}return n==="horizontal"?d.createElement(VK,nn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollLeft,x=C4(v,l,o.dir);s.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollLeft=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollLeft=m(v,o.dir))}})):n==="vertical"?d.createElement(UK,nn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollTop,x=C4(v,l);s.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollTop=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollTop=m(v))}})):null}),VK=d.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=xo(da,e.__scopeScrollArea),[i,l]=d.useState(),f=d.useRef(null),p=Ji(t,f,s.onScrollbarXChange);return d.useEffect(()=>{f.current&&l(getComputedStyle(f.current))},[f]),d.createElement(Q6,nn({"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":Km(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),tI(v,m)&&h.preventDefault()}},onResize:()=>{f.current&&s.viewport&&i&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:f.current.clientWidth,paddingStart:wh(i.paddingLeft),paddingEnd:wh(i.paddingRight)}})}}))}),UK=d.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=xo(da,e.__scopeScrollArea),[i,l]=d.useState(),f=d.useRef(null),p=Ji(t,f,s.onScrollbarYChange);return d.useEffect(()=>{f.current&&l(getComputedStyle(f.current))},[f]),d.createElement(Q6,nn({"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":Km(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),tI(v,m)&&h.preventDefault()}},onResize:()=>{f.current&&s.viewport&&i&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:f.current.clientHeight,paddingStart:wh(i.paddingTop),paddingEnd:wh(i.paddingBottom)}})}}))}),[GK,Y6]=q6(da),Q6=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:i,onThumbPointerDown:l,onThumbPositionChange:f,onDragScroll:p,onWheelScroll:h,onResize:m,...v}=e,x=xo(da,n),[C,b]=d.useState(null),w=Ji(t,A=>b(A)),k=d.useRef(null),_=d.useRef(""),j=x.viewport,I=r.content-r.viewport,M=yi(h),E=yi(f),O=qm(m,10);function D(A){if(k.current){const R=A.clientX-k.current.left,$=A.clientY-k.current.top;p({x:R,y:$})}}return d.useEffect(()=>{const A=R=>{const $=R.target;(C==null?void 0:C.contains($))&&M(R,I)};return document.addEventListener("wheel",A,{passive:!1}),()=>document.removeEventListener("wheel",A,{passive:!1})},[j,C,I,M]),d.useEffect(E,[r,E]),Sc(C,O),Sc(x.content,O),d.createElement(GK,{scope:n,scrollbar:C,hasThumb:o,onThumbChange:yi(s),onThumbPointerUp:yi(i),onThumbPositionChange:E,onThumbPointerDown:yi(l)},d.createElement(zd.div,nn({},v,{ref:w,style:{position:"absolute",...v.style},onPointerDown:Pi(e.onPointerDown,A=>{A.button===0&&(A.target.setPointerCapture(A.pointerId),k.current=C.getBoundingClientRect(),_.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",D(A))}),onPointerMove:Pi(e.onPointerMove,D),onPointerUp:Pi(e.onPointerUp,A=>{const R=A.target;R.hasPointerCapture(A.pointerId)&&R.releasePointerCapture(A.pointerId),document.body.style.webkitUserSelect=_.current,k.current=null})})))}),Y1="ScrollAreaThumb",KK=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Y6(Y1,e.__scopeScrollArea);return d.createElement(Fd,{present:n||o.hasThumb},d.createElement(qK,nn({ref:t},r)))}),qK=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=xo(Y1,n),i=Y6(Y1,n),{onThumbPositionChange:l}=i,f=Ji(t,m=>i.onThumbChange(m)),p=d.useRef(),h=qm(()=>{p.current&&(p.current(),p.current=void 0)},100);return d.useEffect(()=>{const m=s.viewport;if(m){const v=()=>{if(h(),!p.current){const x=ZK(m,l);p.current=x,l()}};return l(),m.addEventListener("scroll",v),()=>m.removeEventListener("scroll",v)}},[s.viewport,h,l]),d.createElement(zd.div,nn({"data-state":i.hasThumb?"visible":"hidden"},o,{ref:f,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:Pi(e.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),C=m.clientX-x.left,b=m.clientY-x.top;i.onThumbPointerDown({x:C,y:b})}),onPointerUp:Pi(e.onPointerUp,i.onThumbPointerUp)}))}),Z6="ScrollAreaCorner",XK=d.forwardRef((e,t)=>{const n=xo(Z6,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?d.createElement(YK,nn({},e,{ref:t})):null}),YK=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=xo(Z6,n),[s,i]=d.useState(0),[l,f]=d.useState(0),p=!!(s&&l);return Sc(o.scrollbarX,()=>{var h;const m=((h=o.scrollbarX)===null||h===void 0?void 0:h.offsetHeight)||0;o.onCornerHeightChange(m),f(m)}),Sc(o.scrollbarY,()=>{var h;const m=((h=o.scrollbarY)===null||h===void 0?void 0:h.offsetWidth)||0;o.onCornerWidthChange(m),i(m)}),p?d.createElement(zd.div,nn({},r,{ref:t,style:{width:s,height:l,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}})):null});function wh(e){return e?parseInt(e,10):0}function J6(e,t){const n=e/t;return isNaN(n)?0:n}function Km(e){const t=J6(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function QK(e,t,n,r="ltr"){const o=Km(n),s=o/2,i=t||s,l=o-i,f=n.scrollbar.paddingStart+i,p=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return eI([f,p],m)(e)}function C4(e,t,n="ltr"){const r=Km(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,i=t.content-t.viewport,l=s-r,f=n==="ltr"?[0,i]:[i*-1,0],p=NK(e,f);return eI([0,i],[0,l])(p)}function eI(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 tI(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},i=n.left!==s.left,l=n.top!==s.top;(i||l)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function qm(e,t){const n=yi(e),r=d.useRef(0);return d.useEffect(()=>()=>window.clearTimeout(r.current),[]),d.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Sc(e,t){const n=yi(t);X1(()=>{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 JK=LK,eq=FK,w4=BK,S4=KK,tq=XK;var nq=or((e,{scrollbarSize:t,offsetScrollbars:n,scrollbarHovered:r,hidden:o})=>({root:{overflow:"hidden"},viewport:{width:"100%",height:"100%",paddingRight:n?Oe(t):void 0,paddingBottom:n?Oe(t):void 0},scrollbar:{display:o?"none":"flex",userSelect:"none",touchAction:"none",boxSizing:"border-box",padding:`calc(${Oe(t)} / 5)`,transition:"background-color 150ms ease, opacity 150ms ease","&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[8]:e.colors.gray[0],[`& .${IS("thumb")}`]:{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.5):e.fn.rgba(e.black,.5)}},'&[data-orientation="vertical"]':{width:Oe(t)},'&[data-orientation="horizontal"]':{flexDirection:"column",height:Oe(t)},'&[data-state="hidden"]':{display:"none",opacity:0}},thumb:{ref:IS("thumb"),flex:1,backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.4):e.fn.rgba(e.black,.4),borderRadius:Oe(t),position:"relative",transition:"background-color 150ms ease",display:o?"none":void 0,overflow:"hidden","&::before":{content:'""',position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"100%",height:"100%",minWidth:Oe(44),minHeight:Oe(44)}},corner:{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],transition:"opacity 150ms ease",opacity:r?1:0,display:o?"none":void 0}}));const rq=nq;var oq=Object.defineProperty,sq=Object.defineProperties,aq=Object.getOwnPropertyDescriptors,Sh=Object.getOwnPropertySymbols,nI=Object.prototype.hasOwnProperty,rI=Object.prototype.propertyIsEnumerable,k4=(e,t,n)=>t in e?oq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q1=(e,t)=>{for(var n in t||(t={}))nI.call(t,n)&&k4(e,n,t[n]);if(Sh)for(var n of Sh(t))rI.call(t,n)&&k4(e,n,t[n]);return e},oI=(e,t)=>sq(e,aq(t)),sI=(e,t)=>{var n={};for(var r in e)nI.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&&rI.call(e,r)&&(n[r]=e[r]);return n};const aI={scrollbarSize:12,scrollHideDelay:1e3,type:"hover",offsetScrollbars:!1},Xm=d.forwardRef((e,t)=>{const n=Sn("ScrollArea",aI,e),{children:r,className:o,classNames:s,styles:i,scrollbarSize:l,scrollHideDelay:f,type:p,dir:h,offsetScrollbars:m,viewportRef:v,onScrollPositionChange:x,unstyled:C,variant:b,viewportProps:w}=n,k=sI(n,["children","className","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","variant","viewportProps"]),[_,j]=d.useState(!1),I=ca(),{classes:M,cx:E}=rq({scrollbarSize:l,offsetScrollbars:m,scrollbarHovered:_,hidden:p==="never"},{name:"ScrollArea",classNames:s,styles:i,unstyled:C,variant:b});return H.createElement(JK,{type:p==="never"?"always":p,scrollHideDelay:f,dir:h||I.dir,ref:t,asChild:!0},H.createElement(Mr,Q1({className:E(M.root,o)},k),H.createElement(eq,oI(Q1({},w),{className:M.viewport,ref:v,onScroll:typeof x=="function"?({currentTarget:O})=>x({x:O.scrollLeft,y:O.scrollTop}):void 0}),r),H.createElement(w4,{orientation:"horizontal",className:M.scrollbar,forceMount:!0,onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1)},H.createElement(S4,{className:M.thumb})),H.createElement(w4,{orientation:"vertical",className:M.scrollbar,forceMount:!0,onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1)},H.createElement(S4,{className:M.thumb})),H.createElement(tq,{className:M.corner})))}),iI=d.forwardRef((e,t)=>{const n=Sn("ScrollAreaAutosize",aI,e),{children:r,classNames:o,styles:s,scrollbarSize:i,scrollHideDelay:l,type:f,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:x,sx:C,variant:b,viewportProps:w}=n,k=sI(n,["children","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","sx","variant","viewportProps"]);return H.createElement(Mr,oI(Q1({},k),{ref:t,sx:[{display:"flex"},...qP(C)]}),H.createElement(Mr,{sx:{display:"flex",flexDirection:"column",flex:1}},H.createElement(Xm,{classNames:o,styles:s,scrollHideDelay:l,scrollbarSize:i,type:f,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:x,variant:b,viewportProps:w},r)))});iI.displayName="@mantine/core/ScrollAreaAutosize";Xm.displayName="@mantine/core/ScrollArea";Xm.Autosize=iI;const lI=Xm;var iq=Object.defineProperty,lq=Object.defineProperties,cq=Object.getOwnPropertyDescriptors,kh=Object.getOwnPropertySymbols,cI=Object.prototype.hasOwnProperty,uI=Object.prototype.propertyIsEnumerable,_4=(e,t,n)=>t in e?iq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,j4=(e,t)=>{for(var n in t||(t={}))cI.call(t,n)&&_4(e,n,t[n]);if(kh)for(var n of kh(t))uI.call(t,n)&&_4(e,n,t[n]);return e},uq=(e,t)=>lq(e,cq(t)),dq=(e,t)=>{var n={};for(var r in e)cI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&kh)for(var r of kh(e))t.indexOf(r)<0&&uI.call(e,r)&&(n[r]=e[r]);return n};const Ym=d.forwardRef((e,t)=>{var n=e,{style:r}=n,o=dq(n,["style"]);return H.createElement(lI,uq(j4({},o),{style:j4({width:"100%"},r),viewportProps:{tabIndex:-1},viewportRef:t}),o.children)});Ym.displayName="@mantine/core/SelectScrollArea";var fq=or(()=>({dropdown:{},itemsWrapper:{padding:Oe(4),display:"flex",width:"100%",boxSizing:"border-box"}}));const pq=fq;function Fc(e){return e.split("-")[1]}function qb(e){return e==="y"?"height":"width"}function Lo(e){return e.split("-")[0]}function ti(e){return["top","bottom"].includes(Lo(e))?"x":"y"}function P4(e,t,n){let{reference:r,floating:o}=e;const s=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,l=ti(t),f=qb(l),p=r[f]/2-o[f]/2,h=l==="x";let m;switch(Lo(t)){case"top":m={x:s,y:r.y-o.height};break;case"bottom":m={x:s,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:i};break;case"left":m={x:r.x-o.width,y:i};break;default:m={x:r.x,y:r.y}}switch(Fc(t)){case"start":m[l]-=p*(n&&h?-1:1);break;case"end":m[l]+=p*(n&&h?-1:1)}return m}const hq=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=n,l=s.filter(Boolean),f=await(i.isRTL==null?void 0:i.isRTL(t));let p=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:h,y:m}=P4(p,r,f),v=r,x={},C=0;for(let b=0;b({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:s,platform:i,elements:l}=t,{element:f,padding:p=0}=na(e,t)||{};if(f==null)return{};const h=Xb(p),m={x:n,y:r},v=ti(o),x=qb(v),C=await i.getDimensions(f),b=v==="y",w=b?"top":"left",k=b?"bottom":"right",_=b?"clientHeight":"clientWidth",j=s.reference[x]+s.reference[v]-m[v]-s.floating[x],I=m[v]-s.reference[v],M=await(i.getOffsetParent==null?void 0:i.getOffsetParent(f));let E=M?M[_]:0;E&&await(i.isElement==null?void 0:i.isElement(M))||(E=l.floating[_]||s.floating[x]);const O=j/2-I/2,D=E/2-C[x]/2-1,A=Ka(h[w],D),R=Ka(h[k],D),$=A,K=E-C[x]-R,B=E/2-C[x]/2+O,U=Z1($,B,K),Y=Fc(o)!=null&&B!=U&&s.reference[x]/2-(B<$?A:R)-C[x]/2<0?B<$?$-B:K-B:0;return{[v]:m[v]-Y,data:{[v]:U,centerOffset:B-U+Y}}}}),mq=["top","right","bottom","left"];mq.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);const gq={left:"right",right:"left",bottom:"top",top:"bottom"};function _h(e){return e.replace(/left|right|bottom|top/g,t=>gq[t])}function vq(e,t,n){n===void 0&&(n=!1);const r=Fc(e),o=ti(e),s=qb(o);let i=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=_h(i)),{main:i,cross:_h(i)}}const xq={start:"end",end:"start"};function yv(e){return e.replace(/start|end/g,t=>xq[t])}const bq=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:s,initialPlacement:i,platform:l,elements:f}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:C=!0,...b}=na(e,t),w=Lo(r),k=Lo(i)===i,_=await(l.isRTL==null?void 0:l.isRTL(f.floating)),j=m||(k||!C?[_h(i)]:function($){const K=_h($);return[yv($),K,yv(K)]}(i));m||x==="none"||j.push(...function($,K,B,U){const Y=Fc($);let W=function(L,X,z){const q=["left","right"],ne=["right","left"],Q=["top","bottom"],ie=["bottom","top"];switch(L){case"top":case"bottom":return z?X?ne:q:X?q:ne;case"left":case"right":return X?Q:ie;default:return[]}}(Lo($),B==="start",U);return Y&&(W=W.map(L=>L+"-"+Y),K&&(W=W.concat(W.map(yv)))),W}(i,C,x,_));const I=[i,...j],M=await Yb(t,b),E=[];let O=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&E.push(M[w]),h){const{main:$,cross:K}=vq(r,s,_);E.push(M[$],M[K])}if(O=[...O,{placement:r,overflows:E}],!E.every($=>$<=0)){var D,A;const $=(((D=o.flip)==null?void 0:D.index)||0)+1,K=I[$];if(K)return{data:{index:$,overflows:O},reset:{placement:K}};let B=(A=O.filter(U=>U.overflows[0]<=0).sort((U,Y)=>U.overflows[1]-Y.overflows[1])[0])==null?void 0:A.placement;if(!B)switch(v){case"bestFit":{var R;const U=(R=O.map(Y=>[Y.placement,Y.overflows.filter(W=>W>0).reduce((W,L)=>W+L,0)]).sort((Y,W)=>Y[1]-W[1])[0])==null?void 0:R[0];U&&(B=U);break}case"initialPlacement":B=i}if(r!==B)return{reset:{placement:B}}}return{}}}};function E4(e){const t=Ka(...e.map(r=>r.left)),n=Ka(...e.map(r=>r.top));return{x:t,y:n,width:ls(...e.map(r=>r.right))-t,height:ls(...e.map(r=>r.bottom))-n}}const yq=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){const{placement:n,elements:r,rects:o,platform:s,strategy:i}=t,{padding:l=2,x:f,y:p}=na(e,t),h=Array.from(await(s.getClientRects==null?void 0:s.getClientRects(r.reference))||[]),m=function(b){const w=b.slice().sort((j,I)=>j.y-I.y),k=[];let _=null;for(let j=0;j_.height/2?k.push([I]):k[k.length-1].push(I),_=I}return k.map(j=>kc(E4(j)))}(h),v=kc(E4(h)),x=Xb(l),C=await s.getElementRects({reference:{getBoundingClientRect:function(){if(m.length===2&&m[0].left>m[1].right&&f!=null&&p!=null)return m.find(b=>f>b.left-x.left&&fb.top-x.top&&p=2){if(ti(n)==="x"){const M=m[0],E=m[m.length-1],O=Lo(n)==="top",D=M.top,A=E.bottom,R=O?M.left:E.left,$=O?M.right:E.right;return{top:D,bottom:A,left:R,right:$,width:$-R,height:A-D,x:R,y:D}}const b=Lo(n)==="left",w=ls(...m.map(M=>M.right)),k=Ka(...m.map(M=>M.left)),_=m.filter(M=>b?M.left===k:M.right===w),j=_[0].top,I=_[_.length-1].bottom;return{top:j,bottom:I,left:k,right:w,width:w-k,height:I-j,x:k,y:j}}return v}},floating:r.floating,strategy:i});return o.reference.x!==C.reference.x||o.reference.y!==C.reference.y||o.reference.width!==C.reference.width||o.reference.height!==C.reference.height?{reset:{rects:C}}:{}}}},Cq=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(s,i){const{placement:l,platform:f,elements:p}=s,h=await(f.isRTL==null?void 0:f.isRTL(p.floating)),m=Lo(l),v=Fc(l),x=ti(l)==="x",C=["left","top"].includes(m)?-1:1,b=h&&x?-1:1,w=na(i,s);let{mainAxis:k,crossAxis:_,alignmentAxis:j}=typeof w=="number"?{mainAxis:w,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...w};return v&&typeof j=="number"&&(_=v==="end"?-1*j:j),x?{x:_*b,y:k*C}:{x:k*C,y:_*b}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function dI(e){return e==="x"?"y":"x"}const wq=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:s=!0,crossAxis:i=!1,limiter:l={fn:w=>{let{x:k,y:_}=w;return{x:k,y:_}}},...f}=na(e,t),p={x:n,y:r},h=await Yb(t,f),m=ti(Lo(o)),v=dI(m);let x=p[m],C=p[v];if(s){const w=m==="y"?"bottom":"right";x=Z1(x+h[m==="y"?"top":"left"],x,x-h[w])}if(i){const w=v==="y"?"bottom":"right";C=Z1(C+h[v==="y"?"top":"left"],C,C-h[w])}const b=l.fn({...t,[m]:x,[v]:C});return{...b,data:{x:b.x-n,y:b.y-r}}}}},Sq=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:i}=t,{offset:l=0,mainAxis:f=!0,crossAxis:p=!0}=na(e,t),h={x:n,y:r},m=ti(o),v=dI(m);let x=h[m],C=h[v];const b=na(l,t),w=typeof b=="number"?{mainAxis:b,crossAxis:0}:{mainAxis:0,crossAxis:0,...b};if(f){const j=m==="y"?"height":"width",I=s.reference[m]-s.floating[j]+w.mainAxis,M=s.reference[m]+s.reference[j]-w.mainAxis;xM&&(x=M)}if(p){var k,_;const j=m==="y"?"width":"height",I=["top","left"].includes(Lo(o)),M=s.reference[v]-s.floating[j]+(I&&((k=i.offset)==null?void 0:k[v])||0)+(I?0:w.crossAxis),E=s.reference[v]+s.reference[j]+(I?0:((_=i.offset)==null?void 0:_[v])||0)-(I?w.crossAxis:0);CE&&(C=E)}return{[m]:x,[v]:C}}}},kq=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:s}=t,{apply:i=()=>{},...l}=na(e,t),f=await Yb(t,l),p=Lo(n),h=Fc(n),m=ti(n)==="x",{width:v,height:x}=r.floating;let C,b;p==="top"||p==="bottom"?(C=p,b=h===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(b=p,C=h==="end"?"top":"bottom");const w=x-f[C],k=v-f[b],_=!t.middlewareData.shift;let j=w,I=k;if(m){const E=v-f.left-f.right;I=h||_?Ka(k,E):E}else{const E=x-f.top-f.bottom;j=h||_?Ka(w,E):E}if(_&&!h){const E=ls(f.left,0),O=ls(f.right,0),D=ls(f.top,0),A=ls(f.bottom,0);m?I=v-2*(E!==0||O!==0?E+O:ls(f.left,f.right)):j=x-2*(D!==0||A!==0?D+A:ls(f.top,f.bottom))}await i({...t,availableWidth:I,availableHeight:j});const M=await o.getDimensions(s.floating);return v!==M.width||x!==M.height?{reset:{rects:!0}}:{}}}};function Lr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function vs(e){return Lr(e).getComputedStyle(e)}function fI(e){return e instanceof Lr(e).Node}function qa(e){return fI(e)?(e.nodeName||"").toLowerCase():"#document"}function Uo(e){return e instanceof HTMLElement||e instanceof Lr(e).HTMLElement}function M4(e){return typeof ShadowRoot<"u"&&(e instanceof Lr(e).ShadowRoot||e instanceof ShadowRoot)}function sd(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=vs(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function _q(e){return["table","td","th"].includes(qa(e))}function J1(e){const t=Qb(),n=vs(e);return n.transform!=="none"||n.perspective!=="none"||!!n.containerType&&n.containerType!=="normal"||!t&&!!n.backdropFilter&&n.backdropFilter!=="none"||!t&&!!n.filter&&n.filter!=="none"||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function Qb(){return!(typeof CSS>"u"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Qm(e){return["html","body","#document"].includes(qa(e))}const ex=Math.min,oc=Math.max,jh=Math.round,ap=Math.floor,Xa=e=>({x:e,y:e});function pI(e){const t=vs(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Uo(e),s=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=jh(n)!==s||jh(r)!==i;return l&&(n=s,r=i),{width:n,height:r,$:l}}function Ys(e){return e instanceof Element||e instanceof Lr(e).Element}function Zb(e){return Ys(e)?e:e.contextElement}function sc(e){const t=Zb(e);if(!Uo(t))return Xa(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=pI(t);let i=(s?jh(n.width):n.width)/r,l=(s?jh(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const jq=Xa(0);function hI(e){const t=Lr(e);return Qb()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:jq}function Hi(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=Zb(e);let i=Xa(1);t&&(r?Ys(r)&&(i=sc(r)):i=sc(e));const l=function(v,x,C){return x===void 0&&(x=!1),!(!C||x&&C!==Lr(v))&&x}(s,n,r)?hI(s):Xa(0);let f=(o.left+l.x)/i.x,p=(o.top+l.y)/i.y,h=o.width/i.x,m=o.height/i.y;if(s){const v=Lr(s),x=r&&Ys(r)?Lr(r):r;let C=v.frameElement;for(;C&&r&&x!==v;){const b=sc(C),w=C.getBoundingClientRect(),k=getComputedStyle(C),_=w.left+(C.clientLeft+parseFloat(k.paddingLeft))*b.x,j=w.top+(C.clientTop+parseFloat(k.paddingTop))*b.y;f*=b.x,p*=b.y,h*=b.x,m*=b.y,f+=_,p+=j,C=Lr(C).frameElement}}return kc({width:h,height:m,x:f,y:p})}function Zm(e){return Ys(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Qs(e){var t;return(t=(fI(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function mI(e){return Hi(Qs(e)).left+Zm(e).scrollLeft}function _c(e){if(qa(e)==="html")return e;const t=e.assignedSlot||e.parentNode||M4(e)&&e.host||Qs(e);return M4(t)?t.host:t}function gI(e){const t=_c(e);return Qm(t)?e.ownerDocument?e.ownerDocument.body:e.body:Uo(t)&&sd(t)?t:gI(t)}function Ph(e,t){var n;t===void 0&&(t=[]);const r=gI(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Lr(r);return o?t.concat(s,s.visualViewport||[],sd(r)?r:[]):t.concat(r,Ph(r))}function O4(e,t,n){let r;if(t==="viewport")r=function(o,s){const i=Lr(o),l=Qs(o),f=i.visualViewport;let p=l.clientWidth,h=l.clientHeight,m=0,v=0;if(f){p=f.width,h=f.height;const x=Qb();(!x||x&&s==="fixed")&&(m=f.offsetLeft,v=f.offsetTop)}return{width:p,height:h,x:m,y:v}}(e,n);else if(t==="document")r=function(o){const s=Qs(o),i=Zm(o),l=o.ownerDocument.body,f=oc(s.scrollWidth,s.clientWidth,l.scrollWidth,l.clientWidth),p=oc(s.scrollHeight,s.clientHeight,l.scrollHeight,l.clientHeight);let h=-i.scrollLeft+mI(o);const m=-i.scrollTop;return vs(l).direction==="rtl"&&(h+=oc(s.clientWidth,l.clientWidth)-f),{width:f,height:p,x:h,y:m}}(Qs(e));else if(Ys(t))r=function(o,s){const i=Hi(o,!0,s==="fixed"),l=i.top+o.clientTop,f=i.left+o.clientLeft,p=Uo(o)?sc(o):Xa(1);return{width:o.clientWidth*p.x,height:o.clientHeight*p.y,x:f*p.x,y:l*p.y}}(t,n);else{const o=hI(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return kc(r)}function vI(e,t){const n=_c(e);return!(n===t||!Ys(n)||Qm(n))&&(vs(n).position==="fixed"||vI(n,t))}function Pq(e,t,n){const r=Uo(t),o=Qs(t),s=n==="fixed",i=Hi(e,!0,s,t);let l={scrollLeft:0,scrollTop:0};const f=Xa(0);if(r||!r&&!s)if((qa(t)!=="body"||sd(o))&&(l=Zm(t)),Uo(t)){const p=Hi(t,!0,s,t);f.x=p.x+t.clientLeft,f.y=p.y+t.clientTop}else o&&(f.x=mI(o));return{x:i.left+l.scrollLeft-f.x,y:i.top+l.scrollTop-f.y,width:i.width,height:i.height}}function D4(e,t){return Uo(e)&&vs(e).position!=="fixed"?t?t(e):e.offsetParent:null}function R4(e,t){const n=Lr(e);if(!Uo(e))return n;let r=D4(e,t);for(;r&&_q(r)&&vs(r).position==="static";)r=D4(r,t);return r&&(qa(r)==="html"||qa(r)==="body"&&vs(r).position==="static"&&!J1(r))?n:r||function(o){let s=_c(o);for(;Uo(s)&&!Qm(s);){if(J1(s))return s;s=_c(s)}return null}(e)||n}const Iq={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Uo(n),s=Qs(n);if(n===s)return t;let i={scrollLeft:0,scrollTop:0},l=Xa(1);const f=Xa(0);if((o||!o&&r!=="fixed")&&((qa(n)!=="body"||sd(s))&&(i=Zm(n)),Uo(n))){const p=Hi(n);l=sc(n),f.x=p.x+n.clientLeft,f.y=p.y+n.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+f.x,y:t.y*l.y-i.scrollTop*l.y+f.y}},getDocumentElement:Qs,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?function(f,p){const h=p.get(f);if(h)return h;let m=Ph(f).filter(b=>Ys(b)&&qa(b)!=="body"),v=null;const x=vs(f).position==="fixed";let C=x?_c(f):f;for(;Ys(C)&&!Qm(C);){const b=vs(C),w=J1(C);w||b.position!=="fixed"||(v=null),(x?!w&&!v:!w&&b.position==="static"&&v&&["absolute","fixed"].includes(v.position)||sd(C)&&!w&&vI(f,C))?m=m.filter(k=>k!==C):v=b,C=_c(C)}return p.set(f,m),m}(t,this._c):[].concat(n),r],i=s[0],l=s.reduce((f,p)=>{const h=O4(t,p,o);return f.top=oc(h.top,f.top),f.right=ex(h.right,f.right),f.bottom=ex(h.bottom,f.bottom),f.left=oc(h.left,f.left),f},O4(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:R4,getElementRects:async function(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||R4,s=this.getDimensions;return{reference:Pq(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 pI(e)},getScale:sc,isElement:Ys,isRTL:function(e){return getComputedStyle(e).direction==="rtl"}};function Eq(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:f=!1}=r,p=Zb(e),h=o||s?[...p?Ph(p):[],...Ph(t)]:[];h.forEach(w=>{o&&w.addEventListener("scroll",n,{passive:!0}),s&&w.addEventListener("resize",n)});const m=p&&l?function(w,k){let _,j=null;const I=Qs(w);function M(){clearTimeout(_),j&&j.disconnect(),j=null}return function E(O,D){O===void 0&&(O=!1),D===void 0&&(D=1),M();const{left:A,top:R,width:$,height:K}=w.getBoundingClientRect();if(O||k(),!$||!K)return;const B={rootMargin:-ap(R)+"px "+-ap(I.clientWidth-(A+$))+"px "+-ap(I.clientHeight-(R+K))+"px "+-ap(A)+"px",threshold:oc(0,ex(1,D))||1};let U=!0;function Y(W){const L=W[0].intersectionRatio;if(L!==D){if(!U)return E();L?E(!1,L):_=setTimeout(()=>{E(!1,1e-7)},100)}U=!1}try{j=new IntersectionObserver(Y,{...B,root:I.ownerDocument})}catch{j=new IntersectionObserver(Y,B)}j.observe(w)}(!0),M}(p,n):null;let v,x=-1,C=null;i&&(C=new ResizeObserver(w=>{let[k]=w;k&&k.target===p&&C&&(C.unobserve(t),cancelAnimationFrame(x),x=requestAnimationFrame(()=>{C&&C.observe(t)})),n()}),p&&!f&&C.observe(p),C.observe(t));let b=f?Hi(e):null;return f&&function w(){const k=Hi(e);!b||k.x===b.x&&k.y===b.y&&k.width===b.width&&k.height===b.height||n(),b=k,v=requestAnimationFrame(w)}(),n(),()=>{h.forEach(w=>{o&&w.removeEventListener("scroll",n),s&&w.removeEventListener("resize",n)}),m&&m(),C&&C.disconnect(),C=null,f&&cancelAnimationFrame(v)}}const Mq=(e,t,n)=>{const r=new Map,o={platform:Iq,...n},s={...o.platform,_c:r};return hq(e,t,{...o,platform:s})},Oq=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?I4({element:t.current,padding:n}).fn(o):{}:t?I4({element:t,padding:n}).fn(o):{}}}};var $p=typeof document<"u"?d.useLayoutEffect:d.useEffect;function Ih(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(!Ih(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)&&!Ih(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function A4(e){const t=d.useRef(e);return $p(()=>{t.current=e}),t}function Dq(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,whileElementsMounted:s,open:i}=e,[l,f]=d.useState({x:null,y:null,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=d.useState(r);Ih(p,r)||h(r);const m=d.useRef(null),v=d.useRef(null),x=d.useRef(l),C=A4(s),b=A4(o),[w,k]=d.useState(null),[_,j]=d.useState(null),I=d.useCallback(R=>{m.current!==R&&(m.current=R,k(R))},[]),M=d.useCallback(R=>{v.current!==R&&(v.current=R,j(R))},[]),E=d.useCallback(()=>{if(!m.current||!v.current)return;const R={placement:t,strategy:n,middleware:p};b.current&&(R.platform=b.current),Mq(m.current,v.current,R).then($=>{const K={...$,isPositioned:!0};O.current&&!Ih(x.current,K)&&(x.current=K,so.flushSync(()=>{f(K)}))})},[p,t,n,b]);$p(()=>{i===!1&&x.current.isPositioned&&(x.current.isPositioned=!1,f(R=>({...R,isPositioned:!1})))},[i]);const O=d.useRef(!1);$p(()=>(O.current=!0,()=>{O.current=!1}),[]),$p(()=>{if(w&&_){if(C.current)return C.current(w,_,E);E()}},[w,_,E,C]);const D=d.useMemo(()=>({reference:m,floating:v,setReference:I,setFloating:M}),[I,M]),A=d.useMemo(()=>({reference:w,floating:_}),[w,_]);return d.useMemo(()=>({...l,update:E,refs:D,elements:A,reference:I,floating:M}),[l,E,D,A,I,M])}var Rq=typeof document<"u"?d.useLayoutEffect:d.useEffect;function Aq(){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 Nq=d.createContext(null),Tq=()=>d.useContext(Nq);function $q(e){return(e==null?void 0:e.ownerDocument)||document}function Lq(e){return $q(e).defaultView||window}function ip(e){return e?e instanceof Lq(e).Element:!1}const zq=Nx["useInsertionEffect".toString()],Fq=zq||(e=>e());function Bq(e){const t=d.useRef(()=>{});return Fq(()=>{t.current=e}),d.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;oAq())[0],[p,h]=d.useState(null),m=d.useCallback(k=>{const _=ip(k)?{getBoundingClientRect:()=>k.getBoundingClientRect(),contextElement:k}:k;o.refs.setReference(_)},[o.refs]),v=d.useCallback(k=>{(ip(k)||k===null)&&(i.current=k,h(k)),(ip(o.refs.reference.current)||o.refs.reference.current===null||k!==null&&!ip(k))&&o.refs.setReference(k)},[o.refs]),x=d.useMemo(()=>({...o.refs,setReference:v,setPositionReference:m,domReference:i}),[o.refs,v,m]),C=d.useMemo(()=>({...o.elements,domReference:p}),[o.elements,p]),b=Bq(n),w=d.useMemo(()=>({...o,refs:x,elements:C,dataRef:l,nodeId:r,events:f,open:t,onOpenChange:b}),[o,r,f,t,b,x,C]);return Rq(()=>{const k=s==null?void 0:s.nodesRef.current.find(_=>_.id===r);k&&(k.context=w)}),d.useMemo(()=>({...o,context:w,refs:x,reference:v,positionReference:m}),[o,x,w,v,m])}function Wq({opened:e,floating:t,position:n,positionDependencies:r}){const[o,s]=d.useState(0);d.useEffect(()=>{if(t.refs.reference.current&&t.refs.floating.current)return Eq(t.refs.reference.current,t.refs.floating.current,t.update)},[t.refs.reference.current,t.refs.floating.current,e,o,n]),$o(()=>{t.update()},r),$o(()=>{s(i=>i+1)},[e])}function Vq(e){const t=[Cq(e.offset)];return e.middlewares.shift&&t.push(wq({limiter:Sq()})),e.middlewares.flip&&t.push(bq()),e.middlewares.inline&&t.push(yq()),t.push(Oq({element:e.arrowRef,padding:e.arrowOffset})),t}function Uq(e){const[t,n]=od({value:e.opened,defaultValue:e.defaultOpened,finalValue:!1,onChange:e.onChange}),r=()=>{var i;(i=e.onClose)==null||i.call(e),n(!1)},o=()=>{var i,l;t?((i=e.onClose)==null||i.call(e),n(!1)):((l=e.onOpen)==null||l.call(e),n(!0))},s=Hq({placement:e.position,middleware:[...Vq(e),...e.width==="target"?[kq({apply({rects:i}){var l,f;Object.assign((f=(l=s.refs.floating.current)==null?void 0:l.style)!=null?f:{},{width:`${i.reference.width}px`})}})]:[]]});return Wq({opened:e.opened,position:e.position,positionDependencies:e.positionDependencies,floating:s}),$o(()=>{var i;(i=e.onPositionChange)==null||i.call(e,s.placement)},[s.placement]),$o(()=>{var i,l;e.opened?(l=e.onOpen)==null||l.call(e):(i=e.onClose)==null||i.call(e)},[e.opened]),{floating:s,controlled:typeof e.opened=="boolean",opened:t,onClose:r,onToggle:o}}const xI={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"},[Gq,bI]=RV(xI.context);var Kq=Object.defineProperty,qq=Object.defineProperties,Xq=Object.getOwnPropertyDescriptors,Eh=Object.getOwnPropertySymbols,yI=Object.prototype.hasOwnProperty,CI=Object.prototype.propertyIsEnumerable,N4=(e,t,n)=>t in e?Kq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lp=(e,t)=>{for(var n in t||(t={}))yI.call(t,n)&&N4(e,n,t[n]);if(Eh)for(var n of Eh(t))CI.call(t,n)&&N4(e,n,t[n]);return e},Yq=(e,t)=>qq(e,Xq(t)),Qq=(e,t)=>{var n={};for(var r in e)yI.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&&CI.call(e,r)&&(n[r]=e[r]);return n};const Zq={refProp:"ref",popupType:"dialog"},wI=d.forwardRef((e,t)=>{const n=Sn("PopoverTarget",Zq,e),{children:r,refProp:o,popupType:s}=n,i=Qq(n,["children","refProp","popupType"]);if(!YP(r))throw new Error(xI.children);const l=i,f=bI(),p=Ld(f.reference,r.ref,t),h=f.withRoles?{"aria-haspopup":s,"aria-expanded":f.opened,"aria-controls":f.getDropdownId(),id:f.getTargetId()}:{};return d.cloneElement(r,lp(Yq(lp(lp(lp({},l),h),f.targetProps),{className:ZP(f.targetProps.className,l.className,r.props.className),[o]:p}),f.controlled?null:{onClick:f.onToggle}))});wI.displayName="@mantine/core/PopoverTarget";var Jq=or((e,{radius:t,shadow:n})=>({dropdown:{position:"absolute",backgroundColor:e.white,background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,padding:`${e.spacing.sm} ${e.spacing.md}`,boxShadow:e.shadows[n]||n||"none",borderRadius:e.fn.radius(t),"&:focus":{outline:0}},arrow:{backgroundColor:"inherit",border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,zIndex:1}}));const eX=Jq;var tX=Object.defineProperty,T4=Object.getOwnPropertySymbols,nX=Object.prototype.hasOwnProperty,rX=Object.prototype.propertyIsEnumerable,$4=(e,t,n)=>t in e?tX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,El=(e,t)=>{for(var n in t||(t={}))nX.call(t,n)&&$4(e,n,t[n]);if(T4)for(var n of T4(t))rX.call(t,n)&&$4(e,n,t[n]);return e};const L4={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function oX({transition:e,state:t,duration:n,timingFunction:r}){const o={transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e=="string"?e in ep?El(El(El({transitionProperty:ep[e].transitionProperty},o),ep[e].common),ep[e][L4[t]]):null:El(El(El({transitionProperty:e.transitionProperty},o),e.common),e[L4[t]])}function sX({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:o,onExit:s,onEntered:i,onExited:l}){const f=ca(),p=s6(),h=f.respectReducedMotion?p:!1,[m,v]=d.useState(h?0:e),[x,C]=d.useState(r?"entered":"exited"),b=d.useRef(-1),w=k=>{const _=k?o:s,j=k?i:l;C(k?"pre-entering":"pre-exiting"),window.clearTimeout(b.current);const I=h?0:k?e:t;if(v(I),I===0)typeof _=="function"&&_(),typeof j=="function"&&j(),C(k?"entered":"exited");else{const M=window.setTimeout(()=>{typeof _=="function"&&_(),C(k?"entering":"exiting")},10);b.current=window.setTimeout(()=>{window.clearTimeout(M),typeof j=="function"&&j(),C(k?"entered":"exited")},I)}};return $o(()=>{w(r)},[r]),d.useEffect(()=>()=>window.clearTimeout(b.current),[]),{transitionDuration:m,transitionStatus:x,transitionTimingFunction:n||f.transitionTimingFunction}}function SI({keepMounted:e,transition:t,duration:n=250,exitDuration:r=n,mounted:o,children:s,timingFunction:i,onExit:l,onEntered:f,onEnter:p,onExited:h}){const{transitionDuration:m,transitionStatus:v,transitionTimingFunction:x}=sX({mounted:o,exitDuration:r,duration:n,timingFunction:i,onExit:l,onEntered:f,onEnter:p,onExited:h});return m===0?o?H.createElement(H.Fragment,null,s({})):e?s({display:"none"}):null:v==="exited"?e?s({display:"none"}):null:H.createElement(H.Fragment,null,s(oX({transition:t,duration:m,state:v,timingFunction:x})))}SI.displayName="@mantine/core/Transition";function kI({children:e,active:t=!0,refProp:n="ref"}){const r=pU(t),o=Ld(r,e==null?void 0:e.ref);return YP(e)?d.cloneElement(e,{[n]:o}):e}kI.displayName="@mantine/core/FocusTrap";var aX=Object.defineProperty,iX=Object.defineProperties,lX=Object.getOwnPropertyDescriptors,z4=Object.getOwnPropertySymbols,cX=Object.prototype.hasOwnProperty,uX=Object.prototype.propertyIsEnumerable,F4=(e,t,n)=>t in e?aX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ja=(e,t)=>{for(var n in t||(t={}))cX.call(t,n)&&F4(e,n,t[n]);if(z4)for(var n of z4(t))uX.call(t,n)&&F4(e,n,t[n]);return e},cp=(e,t)=>iX(e,lX(t));function B4(e,t,n,r){return e==="center"||r==="center"?{top:t}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function H4(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 dX={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function fX({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:o,arrowX:s,arrowY:i,dir:l}){const[f,p="center"]=e.split("-"),h={width:Oe(t),height:Oe(t),transform:"rotate(45deg)",position:"absolute",[dX[f]]:Oe(r)},m=Oe(-t/2);return f==="left"?cp(ja(ja({},h),B4(p,i,n,o)),{right:m,borderLeftColor:"transparent",borderBottomColor:"transparent"}):f==="right"?cp(ja(ja({},h),B4(p,i,n,o)),{left:m,borderRightColor:"transparent",borderTopColor:"transparent"}):f==="top"?cp(ja(ja({},h),H4(p,s,n,o,l)),{bottom:m,borderTopColor:"transparent",borderLeftColor:"transparent"}):f==="bottom"?cp(ja(ja({},h),H4(p,s,n,o,l)),{top:m,borderBottomColor:"transparent",borderRightColor:"transparent"}):{}}var pX=Object.defineProperty,hX=Object.defineProperties,mX=Object.getOwnPropertyDescriptors,Mh=Object.getOwnPropertySymbols,_I=Object.prototype.hasOwnProperty,jI=Object.prototype.propertyIsEnumerable,W4=(e,t,n)=>t in e?pX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gX=(e,t)=>{for(var n in t||(t={}))_I.call(t,n)&&W4(e,n,t[n]);if(Mh)for(var n of Mh(t))jI.call(t,n)&&W4(e,n,t[n]);return e},vX=(e,t)=>hX(e,mX(t)),xX=(e,t)=>{var n={};for(var r in e)_I.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&&jI.call(e,r)&&(n[r]=e[r]);return n};const PI=d.forwardRef((e,t)=>{var n=e,{position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:l,visible:f,arrowX:p,arrowY:h}=n,m=xX(n,["position","arrowSize","arrowOffset","arrowRadius","arrowPosition","visible","arrowX","arrowY"]);const v=ca();return f?H.createElement("div",vX(gX({},m),{ref:t,style:fX({position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:l,dir:v.dir,arrowX:p,arrowY:h})})):null});PI.displayName="@mantine/core/FloatingArrow";var bX=Object.defineProperty,yX=Object.defineProperties,CX=Object.getOwnPropertyDescriptors,Oh=Object.getOwnPropertySymbols,II=Object.prototype.hasOwnProperty,EI=Object.prototype.propertyIsEnumerable,V4=(e,t,n)=>t in e?bX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ml=(e,t)=>{for(var n in t||(t={}))II.call(t,n)&&V4(e,n,t[n]);if(Oh)for(var n of Oh(t))EI.call(t,n)&&V4(e,n,t[n]);return e},up=(e,t)=>yX(e,CX(t)),wX=(e,t)=>{var n={};for(var r in e)II.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&&EI.call(e,r)&&(n[r]=e[r]);return n};const SX={};function MI(e){var t;const n=Sn("PopoverDropdown",SX,e),{style:r,className:o,children:s,onKeyDownCapture:i}=n,l=wX(n,["style","className","children","onKeyDownCapture"]),f=bI(),{classes:p,cx:h}=eX({radius:f.radius,shadow:f.shadow},{name:f.__staticSelector,classNames:f.classNames,styles:f.styles,unstyled:f.unstyled,variant:f.variant}),m=aU({opened:f.opened,shouldReturnFocus:f.returnFocus}),v=f.withRoles?{"aria-labelledby":f.getTargetId(),id:f.getDropdownId(),role:"dialog"}:{};return f.disabled?null:H.createElement(M6,up(Ml({},f.portalProps),{withinPortal:f.withinPortal}),H.createElement(SI,up(Ml({mounted:f.opened},f.transitionProps),{transition:f.transitionProps.transition||"fade",duration:(t=f.transitionProps.duration)!=null?t:150,keepMounted:f.keepMounted,exitDuration:typeof f.transitionProps.exitDuration=="number"?f.transitionProps.exitDuration:f.transitionProps.duration}),x=>{var C,b;return H.createElement(kI,{active:f.trapFocus},H.createElement(Mr,Ml(up(Ml({},v),{tabIndex:-1,ref:f.floating,style:up(Ml(Ml({},r),x),{zIndex:f.zIndex,top:(C=f.y)!=null?C:0,left:(b=f.x)!=null?b:0,width:f.width==="target"?void 0:Oe(f.width)}),className:h(p.dropdown,o),onKeyDownCapture:NV(f.onClose,{active:f.closeOnEscape,onTrigger:m,onKeyDown:i}),"data-position":f.placement}),l),s,H.createElement(PI,{ref:f.arrowRef,arrowX:f.arrowX,arrowY:f.arrowY,visible:f.withArrow,position:f.placement,arrowSize:f.arrowSize,arrowRadius:f.arrowRadius,arrowOffset:f.arrowOffset,arrowPosition:f.arrowPosition,className:p.arrow})))}))}MI.displayName="@mantine/core/PopoverDropdown";function kX(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 U4=Object.getOwnPropertySymbols,_X=Object.prototype.hasOwnProperty,jX=Object.prototype.propertyIsEnumerable,PX=(e,t)=>{var n={};for(var r in e)_X.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&U4)for(var r of U4(e))t.indexOf(r)<0&&jX.call(e,r)&&(n[r]=e[r]);return n};const IX={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:Hb("popover"),__staticSelector:"Popover",width:"max-content"};function Bc(e){var t,n,r,o,s,i;const l=d.useRef(null),f=Sn("Popover",IX,e),{children:p,position:h,offset:m,onPositionChange:v,positionDependencies:x,opened:C,transitionProps:b,width:w,middlewares:k,withArrow:_,arrowSize:j,arrowOffset:I,arrowRadius:M,arrowPosition:E,unstyled:O,classNames:D,styles:A,closeOnClickOutside:R,withinPortal:$,portalProps:K,closeOnEscape:B,clickOutsideEvents:U,trapFocus:Y,onClose:W,onOpen:L,onChange:X,zIndex:z,radius:q,shadow:ne,id:Q,defaultOpened:ie,__staticSelector:oe,withRoles:V,disabled:G,returnFocus:J,variant:se,keepMounted:re}=f,fe=PX(f,["children","position","offset","onPositionChange","positionDependencies","opened","transitionProps","width","middlewares","withArrow","arrowSize","arrowOffset","arrowRadius","arrowPosition","unstyled","classNames","styles","closeOnClickOutside","withinPortal","portalProps","closeOnEscape","clickOutsideEvents","trapFocus","onClose","onOpen","onChange","zIndex","radius","shadow","id","defaultOpened","__staticSelector","withRoles","disabled","returnFocus","variant","keepMounted"]),[de,me]=d.useState(null),[ye,he]=d.useState(null),ue=Vb(Q),De=ca(),je=Uq({middlewares:k,width:w,position:kX(De.dir,h),offset:typeof m=="number"?m+(_?j/2:0):m,arrowRef:l,arrowOffset:I,onPositionChange:v,positionDependencies:x,opened:C,defaultOpened:ie,onChange:X,onOpen:L,onClose:W});nU(()=>je.opened&&R&&je.onClose(),U,[de,ye]);const Be=d.useCallback(Ue=>{me(Ue),je.floating.reference(Ue)},[je.floating.reference]),rt=d.useCallback(Ue=>{he(Ue),je.floating.floating(Ue)},[je.floating.floating]);return H.createElement(Gq,{value:{returnFocus:J,disabled:G,controlled:je.controlled,reference:Be,floating:rt,x:je.floating.x,y:je.floating.y,arrowX:(r=(n=(t=je.floating)==null?void 0:t.middlewareData)==null?void 0:n.arrow)==null?void 0:r.x,arrowY:(i=(s=(o=je.floating)==null?void 0:o.middlewareData)==null?void 0:s.arrow)==null?void 0:i.y,opened:je.opened,arrowRef:l,transitionProps:b,width:w,withArrow:_,arrowSize:j,arrowOffset:I,arrowRadius:M,arrowPosition:E,placement:je.floating.placement,trapFocus:Y,withinPortal:$,portalProps:K,zIndex:z,radius:q,shadow:ne,closeOnEscape:B,onClose:je.onClose,onToggle:je.onToggle,getTargetId:()=>`${ue}-target`,getDropdownId:()=>`${ue}-dropdown`,withRoles:V,targetProps:fe,__staticSelector:oe,classNames:D,styles:A,unstyled:O,variant:se,keepMounted:re}},p)}Bc.Target=wI;Bc.Dropdown=MI;Bc.displayName="@mantine/core/Popover";var EX=Object.defineProperty,Dh=Object.getOwnPropertySymbols,OI=Object.prototype.hasOwnProperty,DI=Object.prototype.propertyIsEnumerable,G4=(e,t,n)=>t in e?EX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,MX=(e,t)=>{for(var n in t||(t={}))OI.call(t,n)&&G4(e,n,t[n]);if(Dh)for(var n of Dh(t))DI.call(t,n)&&G4(e,n,t[n]);return e},OX=(e,t)=>{var n={};for(var r in e)OI.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&&DI.call(e,r)&&(n[r]=e[r]);return n};function DX(e){var t=e,{children:n,component:r="div",maxHeight:o=220,direction:s="column",id:i,innerRef:l,__staticSelector:f,styles:p,classNames:h,unstyled:m}=t,v=OX(t,["children","component","maxHeight","direction","id","innerRef","__staticSelector","styles","classNames","unstyled"]);const{classes:x}=pq(null,{name:f,styles:p,classNames:h,unstyled:m});return H.createElement(Bc.Dropdown,MX({p:0,onMouseDown:C=>C.preventDefault()},v),H.createElement("div",{style:{maxHeight:Oe(o),display:"flex"}},H.createElement(Mr,{component:r||"div",id:`${i}-items`,"aria-labelledby":`${i}-label`,role:"listbox",onMouseDown:C=>C.preventDefault(),style:{flex:1,overflowY:r!==Ym?"auto":void 0},"data-combobox-popover":!0,tabIndex:-1,ref:l},H.createElement("div",{className:x.itemsWrapper,style:{flexDirection:s}},n))))}function Ba({opened:e,transitionProps:t={transition:"fade",duration:0},shadow:n,withinPortal:r,portalProps:o,children:s,__staticSelector:i,onDirectionChange:l,switchDirectionOnFlip:f,zIndex:p,dropdownPosition:h,positionDependencies:m=[],classNames:v,styles:x,unstyled:C,readOnly:b,variant:w}){return H.createElement(Bc,{unstyled:C,classNames:v,styles:x,width:"target",withRoles:!1,opened:e,middlewares:{flip:h==="flip",shift:!1},position:h==="flip"?"bottom":h,positionDependencies:m,zIndex:p,__staticSelector:i,withinPortal:r,portalProps:o,transitionProps:t,shadow:n,disabled:b,onPositionChange:k=>f&&(l==null?void 0:l(k==="top"?"column-reverse":"column")),variant:w},s)}Ba.Target=Bc.Target;Ba.Dropdown=DX;var RX=Object.defineProperty,AX=Object.defineProperties,NX=Object.getOwnPropertyDescriptors,Rh=Object.getOwnPropertySymbols,RI=Object.prototype.hasOwnProperty,AI=Object.prototype.propertyIsEnumerable,K4=(e,t,n)=>t in e?RX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,dp=(e,t)=>{for(var n in t||(t={}))RI.call(t,n)&&K4(e,n,t[n]);if(Rh)for(var n of Rh(t))AI.call(t,n)&&K4(e,n,t[n]);return e},TX=(e,t)=>AX(e,NX(t)),$X=(e,t)=>{var n={};for(var r in e)RI.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&&AI.call(e,r)&&(n[r]=e[r]);return n};function NI(e,t,n){const r=Sn(e,t,n),{label:o,description:s,error:i,required:l,classNames:f,styles:p,className:h,unstyled:m,__staticSelector:v,sx:x,errorProps:C,labelProps:b,descriptionProps:w,wrapperProps:k,id:_,size:j,style:I,inputContainer:M,inputWrapperOrder:E,withAsterisk:O,variant:D}=r,A=$X(r,["label","description","error","required","classNames","styles","className","unstyled","__staticSelector","sx","errorProps","labelProps","descriptionProps","wrapperProps","id","size","style","inputContainer","inputWrapperOrder","withAsterisk","variant"]),R=Vb(_),{systemStyles:$,rest:K}=Gm(A),B=dp({label:o,description:s,error:i,required:l,classNames:f,className:h,__staticSelector:v,sx:x,errorProps:C,labelProps:b,descriptionProps:w,unstyled:m,styles:p,id:R,size:j,style:I,inputContainer:M,inputWrapperOrder:E,withAsterisk:O,variant:D},k);return TX(dp({},K),{classNames:f,styles:p,unstyled:m,wrapperProps:dp(dp({},B),$),inputProps:{required:l,classNames:f,styles:p,unstyled:m,id:R,size:j,__staticSelector:v,error:i,variant:D}})}var LX=or((e,t,{size:n})=>({label:{display:"inline-block",fontSize:ut({size:n,sizes:e.fontSizes}),fontWeight:500,color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[9],wordBreak:"break-word",cursor:"default",WebkitTapHighlightColor:"transparent"},required:{color:e.fn.variant({variant:"filled",color:"red"}).background}}));const zX=LX;var FX=Object.defineProperty,Ah=Object.getOwnPropertySymbols,TI=Object.prototype.hasOwnProperty,$I=Object.prototype.propertyIsEnumerable,q4=(e,t,n)=>t in e?FX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,BX=(e,t)=>{for(var n in t||(t={}))TI.call(t,n)&&q4(e,n,t[n]);if(Ah)for(var n of Ah(t))$I.call(t,n)&&q4(e,n,t[n]);return e},HX=(e,t)=>{var n={};for(var r in e)TI.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&&$I.call(e,r)&&(n[r]=e[r]);return n};const WX={labelElement:"label",size:"sm"},Jb=d.forwardRef((e,t)=>{const n=Sn("InputLabel",WX,e),{labelElement:r,children:o,required:s,size:i,classNames:l,styles:f,unstyled:p,className:h,htmlFor:m,__staticSelector:v,variant:x,onMouseDown:C}=n,b=HX(n,["labelElement","children","required","size","classNames","styles","unstyled","className","htmlFor","__staticSelector","variant","onMouseDown"]),{classes:w,cx:k}=zX(null,{name:["InputWrapper",v],classNames:l,styles:f,unstyled:p,variant:x,size:i});return H.createElement(Mr,BX({component:r,ref:t,className:k(w.label,h),htmlFor:r==="label"?m:void 0,onMouseDown:_=>{C==null||C(_),!_.defaultPrevented&&_.detail>1&&_.preventDefault()}},b),o,s&&H.createElement("span",{className:w.required,"aria-hidden":!0}," *"))});Jb.displayName="@mantine/core/InputLabel";var VX=or((e,t,{size:n})=>({error:{wordBreak:"break-word",color:e.fn.variant({variant:"filled",color:"red"}).background,fontSize:`calc(${ut({size:n,sizes:e.fontSizes})} - ${Oe(2)})`,lineHeight:1.2,display:"block"}}));const UX=VX;var GX=Object.defineProperty,Nh=Object.getOwnPropertySymbols,LI=Object.prototype.hasOwnProperty,zI=Object.prototype.propertyIsEnumerable,X4=(e,t,n)=>t in e?GX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,KX=(e,t)=>{for(var n in t||(t={}))LI.call(t,n)&&X4(e,n,t[n]);if(Nh)for(var n of Nh(t))zI.call(t,n)&&X4(e,n,t[n]);return e},qX=(e,t)=>{var n={};for(var r in e)LI.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&&zI.call(e,r)&&(n[r]=e[r]);return n};const XX={size:"sm"},ey=d.forwardRef((e,t)=>{const n=Sn("InputError",XX,e),{children:r,className:o,classNames:s,styles:i,unstyled:l,size:f,__staticSelector:p,variant:h}=n,m=qX(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:x}=UX(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:l,variant:h,size:f});return H.createElement(wc,KX({className:x(v.error,o),ref:t},m),r)});ey.displayName="@mantine/core/InputError";var YX=or((e,t,{size:n})=>({description:{wordBreak:"break-word",color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],fontSize:`calc(${ut({size:n,sizes:e.fontSizes})} - ${Oe(2)})`,lineHeight:1.2,display:"block"}}));const QX=YX;var ZX=Object.defineProperty,Th=Object.getOwnPropertySymbols,FI=Object.prototype.hasOwnProperty,BI=Object.prototype.propertyIsEnumerable,Y4=(e,t,n)=>t in e?ZX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,JX=(e,t)=>{for(var n in t||(t={}))FI.call(t,n)&&Y4(e,n,t[n]);if(Th)for(var n of Th(t))BI.call(t,n)&&Y4(e,n,t[n]);return e},eY=(e,t)=>{var n={};for(var r in e)FI.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&&BI.call(e,r)&&(n[r]=e[r]);return n};const tY={size:"sm"},ty=d.forwardRef((e,t)=>{const n=Sn("InputDescription",tY,e),{children:r,className:o,classNames:s,styles:i,unstyled:l,size:f,__staticSelector:p,variant:h}=n,m=eY(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:x}=QX(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:l,variant:h,size:f});return H.createElement(wc,JX({color:"dimmed",className:x(v.description,o),ref:t,unstyled:l},m),r)});ty.displayName="@mantine/core/InputDescription";const HI=d.createContext({offsetBottom:!1,offsetTop:!1,describedBy:void 0}),nY=HI.Provider,rY=()=>d.useContext(HI);function oY(e,{hasDescription:t,hasError:n}){const r=e.findIndex(f=>f==="input"),o=e[r-1],s=e[r+1];return{offsetBottom:t&&s==="description"||n&&s==="error",offsetTop:t&&o==="description"||n&&o==="error"}}var sY=Object.defineProperty,aY=Object.defineProperties,iY=Object.getOwnPropertyDescriptors,Q4=Object.getOwnPropertySymbols,lY=Object.prototype.hasOwnProperty,cY=Object.prototype.propertyIsEnumerable,Z4=(e,t,n)=>t in e?sY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uY=(e,t)=>{for(var n in t||(t={}))lY.call(t,n)&&Z4(e,n,t[n]);if(Q4)for(var n of Q4(t))cY.call(t,n)&&Z4(e,n,t[n]);return e},dY=(e,t)=>aY(e,iY(t)),fY=or(e=>({root:dY(uY({},e.fn.fontStyles()),{lineHeight:e.lineHeight})}));const pY=fY;var hY=Object.defineProperty,mY=Object.defineProperties,gY=Object.getOwnPropertyDescriptors,$h=Object.getOwnPropertySymbols,WI=Object.prototype.hasOwnProperty,VI=Object.prototype.propertyIsEnumerable,J4=(e,t,n)=>t in e?hY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pa=(e,t)=>{for(var n in t||(t={}))WI.call(t,n)&&J4(e,n,t[n]);if($h)for(var n of $h(t))VI.call(t,n)&&J4(e,n,t[n]);return e},ek=(e,t)=>mY(e,gY(t)),vY=(e,t)=>{var n={};for(var r in e)WI.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&&VI.call(e,r)&&(n[r]=e[r]);return n};const xY={labelElement:"label",size:"sm",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},UI=d.forwardRef((e,t)=>{const n=Sn("InputWrapper",xY,e),{className:r,label:o,children:s,required:i,id:l,error:f,description:p,labelElement:h,labelProps:m,descriptionProps:v,errorProps:x,classNames:C,styles:b,size:w,inputContainer:k,__staticSelector:_,unstyled:j,inputWrapperOrder:I,withAsterisk:M,variant:E}=n,O=vY(n,["className","label","children","required","id","error","description","labelElement","labelProps","descriptionProps","errorProps","classNames","styles","size","inputContainer","__staticSelector","unstyled","inputWrapperOrder","withAsterisk","variant"]),{classes:D,cx:A}=pY(null,{classNames:C,styles:b,name:["InputWrapper",_],unstyled:j,variant:E,size:w}),R={classNames:C,styles:b,unstyled:j,size:w,variant:E,__staticSelector:_},$=typeof M=="boolean"?M:i,K=l?`${l}-error`:x==null?void 0:x.id,B=l?`${l}-description`:v==null?void 0:v.id,Y=`${!!f&&typeof f!="boolean"?K:""} ${p?B:""}`,W=Y.trim().length>0?Y.trim():void 0,L=o&&H.createElement(Jb,Pa(Pa({key:"label",labelElement:h,id:l?`${l}-label`:void 0,htmlFor:l,required:$},R),m),o),X=p&&H.createElement(ty,ek(Pa(Pa({key:"description"},v),R),{size:(v==null?void 0:v.size)||R.size,id:(v==null?void 0:v.id)||B}),p),z=H.createElement(d.Fragment,{key:"input"},k(s)),q=typeof f!="boolean"&&f&&H.createElement(ey,ek(Pa(Pa({},x),R),{size:(x==null?void 0:x.size)||R.size,key:"error",id:(x==null?void 0:x.id)||K}),f),ne=I.map(Q=>{switch(Q){case"label":return L;case"input":return z;case"description":return X;case"error":return q;default:return null}});return H.createElement(nY,{value:Pa({describedBy:W},oY(I,{hasDescription:!!X,hasError:!!q}))},H.createElement(Mr,Pa({className:A(D.root,r),ref:t},O),ne))});UI.displayName="@mantine/core/InputWrapper";var bY=Object.defineProperty,Lh=Object.getOwnPropertySymbols,GI=Object.prototype.hasOwnProperty,KI=Object.prototype.propertyIsEnumerable,tk=(e,t,n)=>t in e?bY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yY=(e,t)=>{for(var n in t||(t={}))GI.call(t,n)&&tk(e,n,t[n]);if(Lh)for(var n of Lh(t))KI.call(t,n)&&tk(e,n,t[n]);return e},CY=(e,t)=>{var n={};for(var r in e)GI.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&&KI.call(e,r)&&(n[r]=e[r]);return n};const wY={},qI=d.forwardRef((e,t)=>{const n=Sn("InputPlaceholder",wY,e),{sx:r}=n,o=CY(n,["sx"]);return H.createElement(Mr,yY({component:"span",sx:[s=>s.fn.placeholderStyles(),...qP(r)],ref:t},o))});qI.displayName="@mantine/core/InputPlaceholder";var SY=Object.defineProperty,kY=Object.defineProperties,_Y=Object.getOwnPropertyDescriptors,nk=Object.getOwnPropertySymbols,jY=Object.prototype.hasOwnProperty,PY=Object.prototype.propertyIsEnumerable,rk=(e,t,n)=>t in e?SY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fp=(e,t)=>{for(var n in t||(t={}))jY.call(t,n)&&rk(e,n,t[n]);if(nk)for(var n of nk(t))PY.call(t,n)&&rk(e,n,t[n]);return e},Cv=(e,t)=>kY(e,_Y(t));const to={xs:Oe(30),sm:Oe(36),md:Oe(42),lg:Oe(50),xl:Oe(60)},IY=["default","filled","unstyled"];function EY({theme:e,variant:t}){return IY.includes(t)?t==="default"?{border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4]}`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white,transition:"border-color 100ms ease","&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:t==="filled"?{border:`${Oe(1)} solid transparent`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[1],"&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:{borderWidth:0,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,backgroundColor:"transparent",minHeight:Oe(28),outline:0,"&:focus, &:focus-within":{outline:"none",borderColor:"transparent"},"&:disabled":{backgroundColor:"transparent","&:focus, &:focus-within":{outline:"none",borderColor:"transparent"}}}:null}var MY=or((e,{multiline:t,radius:n,invalid:r,rightSectionWidth:o,withRightSection:s,iconWidth:i,offsetBottom:l,offsetTop:f,pointer:p},{variant:h,size:m})=>{const v=e.fn.variant({variant:"filled",color:"red"}).background,x=h==="default"||h==="filled"?{minHeight:ut({size:m,sizes:to}),paddingLeft:`calc(${ut({size:m,sizes:to})} / 3)`,paddingRight:s?o||ut({size:m,sizes:to}):`calc(${ut({size:m,sizes:to})} / 3)`,borderRadius:e.fn.radius(n)}:h==="unstyled"&&s?{paddingRight:o||ut({size:m,sizes:to})}:null;return{wrapper:{position:"relative",marginTop:f?`calc(${e.spacing.xs} / 2)`:void 0,marginBottom:l?`calc(${e.spacing.xs} / 2)`:void 0,"&:has(input:disabled)":{"& .mantine-Input-rightSection":{display:"none"}}},input:Cv(fp(fp(Cv(fp({},e.fn.fontStyles()),{height:t?h==="unstyled"?void 0:"auto":ut({size:m,sizes:to}),WebkitTapHighlightColor:"transparent",lineHeight:t?e.lineHeight:`calc(${ut({size:m,sizes:to})} - ${Oe(2)})`,appearance:"none",resize:"none",boxSizing:"border-box",fontSize:ut({size:m,sizes:e.fontSizes}),width:"100%",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,display:"block",textAlign:"left",cursor:p?"pointer":void 0}),EY({theme:e,variant:h})),x),{"&:disabled, &[data-disabled]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,cursor:"not-allowed",pointerEvents:"none","&::placeholder":{color:e.colors.dark[2]}},"&[data-invalid]":{color:v,borderColor:v,"&::placeholder":{opacity:1,color:v}},"&[data-with-icon]":{paddingLeft:typeof i=="number"?Oe(i):ut({size:m,sizes:to})},"&::placeholder":Cv(fp({},e.fn.placeholderStyles()),{opacity:1}),"&::-webkit-inner-spin-button, &::-webkit-outer-spin-button, &::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{appearance:"none"},"&[type=number]":{MozAppearance:"textfield"}}),icon:{pointerEvents:"none",position:"absolute",zIndex:1,left:0,top:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",width:i?Oe(i):ut({size:m,sizes:to}),color:r?e.colors.red[e.colorScheme==="dark"?6:7]:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[5]},rightSection:{position:"absolute",top:0,bottom:0,right:0,display:"flex",alignItems:"center",justifyContent:"center",width:o||ut({size:m,sizes:to})}}});const OY=MY;var DY=Object.defineProperty,RY=Object.defineProperties,AY=Object.getOwnPropertyDescriptors,zh=Object.getOwnPropertySymbols,XI=Object.prototype.hasOwnProperty,YI=Object.prototype.propertyIsEnumerable,ok=(e,t,n)=>t in e?DY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,pp=(e,t)=>{for(var n in t||(t={}))XI.call(t,n)&&ok(e,n,t[n]);if(zh)for(var n of zh(t))YI.call(t,n)&&ok(e,n,t[n]);return e},sk=(e,t)=>RY(e,AY(t)),NY=(e,t)=>{var n={};for(var r in e)XI.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&&YI.call(e,r)&&(n[r]=e[r]);return n};const TY={size:"sm",variant:"default"},el=d.forwardRef((e,t)=>{const n=Sn("Input",TY,e),{className:r,error:o,required:s,disabled:i,variant:l,icon:f,style:p,rightSectionWidth:h,iconWidth:m,rightSection:v,rightSectionProps:x,radius:C,size:b,wrapperProps:w,classNames:k,styles:_,__staticSelector:j,multiline:I,sx:M,unstyled:E,pointer:O}=n,D=NY(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:R,describedBy:$}=rY(),{classes:K,cx:B}=OY({radius:C,multiline:I,invalid:!!o,rightSectionWidth:h?Oe(h):void 0,iconWidth:m,withRightSection:!!v,offsetBottom:A,offsetTop:R,pointer:O},{classNames:k,styles:_,name:["Input",j],unstyled:E,variant:l,size:b}),{systemStyles:U,rest:Y}=Gm(D);return H.createElement(Mr,pp(pp({className:B(K.wrapper,r),sx:M,style:p},U),w),f&&H.createElement("div",{className:K.icon},f),H.createElement(Mr,sk(pp({component:"input"},Y),{ref:t,required:s,"aria-invalid":!!o,"aria-describedby":$,disabled:i,"data-disabled":i||void 0,"data-with-icon":!!f||void 0,"data-invalid":!!o||void 0,className:K.input})),v&&H.createElement("div",sk(pp({},x),{className:K.rightSection}),v))});el.displayName="@mantine/core/Input";el.Wrapper=UI;el.Label=Jb;el.Description=ty;el.Error=ey;el.Placeholder=qI;const jc=el;var $Y=Object.defineProperty,Fh=Object.getOwnPropertySymbols,QI=Object.prototype.hasOwnProperty,ZI=Object.prototype.propertyIsEnumerable,ak=(e,t,n)=>t in e?$Y(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ik=(e,t)=>{for(var n in t||(t={}))QI.call(t,n)&&ak(e,n,t[n]);if(Fh)for(var n of Fh(t))ZI.call(t,n)&&ak(e,n,t[n]);return e},LY=(e,t)=>{var n={};for(var r in e)QI.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&&ZI.call(e,r)&&(n[r]=e[r]);return n};const zY={multiple:!1},JI=d.forwardRef((e,t)=>{const n=Sn("FileButton",zY,e),{onChange:r,children:o,multiple:s,accept:i,name:l,form:f,resetRef:p,disabled:h,capture:m,inputProps:v}=n,x=LY(n,["onChange","children","multiple","accept","name","form","resetRef","disabled","capture","inputProps"]),C=d.useRef(),b=()=>{!h&&C.current.click()},w=_=>{r(s?Array.from(_.currentTarget.files):_.currentTarget.files[0]||null)};return o6(p,()=>{C.current.value=""}),H.createElement(H.Fragment,null,o(ik({onClick:b},x)),H.createElement("input",ik({style:{display:"none"},type:"file",accept:i,multiple:s,onChange:w,ref:Ld(t,C),name:l,form:f,capture:m},v)))});JI.displayName="@mantine/core/FileButton";const eE={xs:Oe(16),sm:Oe(22),md:Oe(26),lg:Oe(30),xl:Oe(36)},FY={xs:Oe(10),sm:Oe(12),md:Oe(14),lg:Oe(16),xl:Oe(18)};var BY=or((e,{disabled:t,radius:n,readOnly:r},{size:o,variant:s})=>({defaultValue:{display:"flex",alignItems:"center",backgroundColor:t?e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3]:e.colorScheme==="dark"?e.colors.dark[7]:s==="filled"?e.white:e.colors.gray[1],color:t?e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],height:ut({size:o,sizes:eE}),paddingLeft:`calc(${ut({size:o,sizes:e.spacing})} / 1.5)`,paddingRight:t||r?ut({size:o,sizes:e.spacing}):0,fontWeight:500,fontSize:ut({size:o,sizes:FY}),borderRadius:ut({size:n,sizes:e.radius}),cursor:t?"not-allowed":"default",userSelect:"none",maxWidth:`calc(100% - ${Oe(10)})`},defaultValueRemove:{color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],marginLeft:`calc(${ut({size:o,sizes:e.spacing})} / 6)`},defaultValueLabel:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}));const HY=BY;var WY=Object.defineProperty,Bh=Object.getOwnPropertySymbols,tE=Object.prototype.hasOwnProperty,nE=Object.prototype.propertyIsEnumerable,lk=(e,t,n)=>t in e?WY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,VY=(e,t)=>{for(var n in t||(t={}))tE.call(t,n)&&lk(e,n,t[n]);if(Bh)for(var n of Bh(t))nE.call(t,n)&&lk(e,n,t[n]);return e},UY=(e,t)=>{var n={};for(var r in e)tE.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&&nE.call(e,r)&&(n[r]=e[r]);return n};const GY={xs:16,sm:22,md:24,lg:26,xl:30};function rE(e){var t=e,{label:n,classNames:r,styles:o,className:s,onRemove:i,disabled:l,readOnly:f,size:p,radius:h="sm",variant:m,unstyled:v}=t,x=UY(t,["label","classNames","styles","className","onRemove","disabled","readOnly","size","radius","variant","unstyled"]);const{classes:C,cx:b}=HY({disabled:l,readOnly:f,radius:h},{name:"MultiSelect",classNames:r,styles:o,unstyled:v,size:p,variant:m});return H.createElement("div",VY({className:b(C.defaultValue,s)},x),H.createElement("span",{className:C.defaultValueLabel},n),!l&&!f&&H.createElement($6,{"aria-hidden":!0,onMouseDown:i,size:GY[p],radius:2,color:"blue",variant:"transparent",iconSize:"70%",className:C.defaultValueRemove,tabIndex:-1,unstyled:v}))}rE.displayName="@mantine/core/MultiSelect/DefaultValue";function KY({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,disableSelectedItemFiltering:i}){if(!t&&s.length===0)return e;if(!t){const f=[];for(let p=0;ph===e[p].value&&!e[p].disabled))&&f.push(e[p]);return f}const l=[];for(let f=0;fp===e[f].value&&!e[f].disabled),e[f])&&l.push(e[f]),!(l.length>=n));f+=1);return l}var qY=Object.defineProperty,Hh=Object.getOwnPropertySymbols,oE=Object.prototype.hasOwnProperty,sE=Object.prototype.propertyIsEnumerable,ck=(e,t,n)=>t in e?qY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uk=(e,t)=>{for(var n in t||(t={}))oE.call(t,n)&&ck(e,n,t[n]);if(Hh)for(var n of Hh(t))sE.call(t,n)&&ck(e,n,t[n]);return e},XY=(e,t)=>{var n={};for(var r in e)oE.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&&sE.call(e,r)&&(n[r]=e[r]);return n};const YY={xs:Oe(14),sm:Oe(18),md:Oe(20),lg:Oe(24),xl:Oe(28)};function QY(e){var t=e,{size:n,error:r,style:o}=t,s=XY(t,["size","error","style"]);const i=ca(),l=ut({size:n,sizes:YY});return H.createElement("svg",uk({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:uk({color:r?i.colors.red[6]:i.colors.gray[6],width:l,height:l},o),"data-chevron":!0},s),H.createElement("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}var ZY=Object.defineProperty,JY=Object.defineProperties,eQ=Object.getOwnPropertyDescriptors,dk=Object.getOwnPropertySymbols,tQ=Object.prototype.hasOwnProperty,nQ=Object.prototype.propertyIsEnumerable,fk=(e,t,n)=>t in e?ZY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rQ=(e,t)=>{for(var n in t||(t={}))tQ.call(t,n)&&fk(e,n,t[n]);if(dk)for(var n of dk(t))nQ.call(t,n)&&fk(e,n,t[n]);return e},oQ=(e,t)=>JY(e,eQ(t));function aE({shouldClear:e,clearButtonProps:t,onClear:n,size:r,error:o}){return e?H.createElement($6,oQ(rQ({},t),{variant:"transparent",onClick:n,size:r,onMouseDown:s=>s.preventDefault()})):H.createElement(QY,{error:o,size:r})}aE.displayName="@mantine/core/SelectRightSection";var sQ=Object.defineProperty,aQ=Object.defineProperties,iQ=Object.getOwnPropertyDescriptors,Wh=Object.getOwnPropertySymbols,iE=Object.prototype.hasOwnProperty,lE=Object.prototype.propertyIsEnumerable,pk=(e,t,n)=>t in e?sQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wv=(e,t)=>{for(var n in t||(t={}))iE.call(t,n)&&pk(e,n,t[n]);if(Wh)for(var n of Wh(t))lE.call(t,n)&&pk(e,n,t[n]);return e},hk=(e,t)=>aQ(e,iQ(t)),lQ=(e,t)=>{var n={};for(var r in e)iE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Wh)for(var r of Wh(e))t.indexOf(r)<0&&lE.call(e,r)&&(n[r]=e[r]);return n};function cE(e){var t=e,{styles:n,rightSection:r,rightSectionWidth:o,theme:s}=t,i=lQ(t,["styles","rightSection","rightSectionWidth","theme"]);if(r)return{rightSection:r,rightSectionWidth:o,styles:n};const l=typeof n=="function"?n(s):n;return{rightSection:!i.readOnly&&!(i.disabled&&i.shouldClear)&&H.createElement(aE,wv({},i)),styles:hk(wv({},l),{rightSection:hk(wv({},l==null?void 0:l.rightSection),{pointerEvents:i.shouldClear?void 0:"none"})})}}var cQ=Object.defineProperty,uQ=Object.defineProperties,dQ=Object.getOwnPropertyDescriptors,mk=Object.getOwnPropertySymbols,fQ=Object.prototype.hasOwnProperty,pQ=Object.prototype.propertyIsEnumerable,gk=(e,t,n)=>t in e?cQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hQ=(e,t)=>{for(var n in t||(t={}))fQ.call(t,n)&&gk(e,n,t[n]);if(mk)for(var n of mk(t))pQ.call(t,n)&&gk(e,n,t[n]);return e},mQ=(e,t)=>uQ(e,dQ(t)),gQ=or((e,{invalid:t},{size:n})=>({wrapper:{position:"relative","&:has(input:disabled)":{cursor:"not-allowed",pointerEvents:"none","& .mantine-MultiSelect-input":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,"&::placeholder":{color:e.colors.dark[2]}},"& .mantine-MultiSelect-defaultValue":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3],color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]}}},values:{minHeight:`calc(${ut({size:n,sizes:to})} - ${Oe(2)})`,display:"flex",alignItems:"center",flexWrap:"wrap",marginLeft:`calc(-${e.spacing.xs} / 2)`,boxSizing:"border-box","&[data-clearable]":{marginRight:ut({size:n,sizes:to})}},value:{margin:`calc(${e.spacing.xs} / 2 - ${Oe(2)}) calc(${e.spacing.xs} / 2)`},searchInput:mQ(hQ({},e.fn.fontStyles()),{flex:1,minWidth:Oe(60),backgroundColor:"transparent",border:0,outline:0,fontSize:ut({size:n,sizes:e.fontSizes}),padding:0,marginLeft:`calc(${e.spacing.xs} / 2)`,appearance:"none",color:"inherit",maxHeight:ut({size:n,sizes:eE}),"&::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 vQ=gQ;var xQ=Object.defineProperty,bQ=Object.defineProperties,yQ=Object.getOwnPropertyDescriptors,Vh=Object.getOwnPropertySymbols,uE=Object.prototype.hasOwnProperty,dE=Object.prototype.propertyIsEnumerable,vk=(e,t,n)=>t in e?xQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ol=(e,t)=>{for(var n in t||(t={}))uE.call(t,n)&&vk(e,n,t[n]);if(Vh)for(var n of Vh(t))dE.call(t,n)&&vk(e,n,t[n]);return e},xk=(e,t)=>bQ(e,yQ(t)),CQ=(e,t)=>{var n={};for(var r in e)uE.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&&dE.call(e,r)&&(n[r]=e[r]);return n};function wQ(e,t,n){return t?!1:n.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function SQ(e,t){return!!e&&!t.some(n=>n.value.toLowerCase()===e.toLowerCase())}function bk(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 kQ={size:"sm",valueComponent:rE,itemComponent:Gb,transitionProps:{transition:"fade",duration:0},maxDropdownHeight:220,shadow:"sm",searchable:!1,filter:wQ,limit:1/0,clearSearchOnChange:!0,clearable:!1,clearSearchOnBlur:!1,disabled:!1,initiallyOpened:!1,creatable:!1,shouldCreate:SQ,switchDirectionOnFlip:!1,zIndex:Hb("popover"),selectOnBlur:!1,positionDependencies:[],dropdownPosition:"flip"},fE=d.forwardRef((e,t)=>{const n=Sn("MultiSelect",kQ,e),{className:r,style:o,required:s,label:i,description:l,size:f,error:p,classNames:h,styles:m,wrapperProps:v,value:x,defaultValue:C,data:b,onChange:w,valueComponent:k,itemComponent:_,id:j,transitionProps:I,maxDropdownHeight:M,shadow:E,nothingFound:O,onFocus:D,onBlur:A,searchable:R,placeholder:$,filter:K,limit:B,clearSearchOnChange:U,clearable:Y,clearSearchOnBlur:W,variant:L,onSearchChange:X,searchValue:z,disabled:q,initiallyOpened:ne,radius:Q,icon:ie,rightSection:oe,rightSectionWidth:V,creatable:G,getCreateLabel:J,shouldCreate:se,onCreate:re,sx:fe,dropdownComponent:de,onDropdownClose:me,onDropdownOpen:ye,maxSelectedValues:he,withinPortal:ue,portalProps:De,switchDirectionOnFlip:je,zIndex:Be,selectOnBlur:rt,name:Ue,dropdownPosition:Ct,errorProps:Xe,labelProps:tt,descriptionProps:ve,form:Re,positionDependencies:st,onKeyDown:mt,unstyled:ge,inputContainer:Ye,inputWrapperOrder:ot,readOnly:lt,withAsterisk:Me,clearButtonProps:$e,hoverOnSearchChange:Rt,disableSelectedItemFiltering:ke}=n,ze=CQ(n,["className","style","required","label","description","size","error","classNames","styles","wrapperProps","value","defaultValue","data","onChange","valueComponent","itemComponent","id","transitionProps","maxDropdownHeight","shadow","nothingFound","onFocus","onBlur","searchable","placeholder","filter","limit","clearSearchOnChange","clearable","clearSearchOnBlur","variant","onSearchChange","searchValue","disabled","initiallyOpened","radius","icon","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","onCreate","sx","dropdownComponent","onDropdownClose","onDropdownOpen","maxSelectedValues","withinPortal","portalProps","switchDirectionOnFlip","zIndex","selectOnBlur","name","dropdownPosition","errorProps","labelProps","descriptionProps","form","positionDependencies","onKeyDown","unstyled","inputContainer","inputWrapperOrder","readOnly","withAsterisk","clearButtonProps","hoverOnSearchChange","disableSelectedItemFiltering"]),{classes:Le,cx:Ve,theme:ct}=vQ({invalid:!!p},{name:"MultiSelect",classNames:h,styles:m,unstyled:ge,size:f,variant:L}),{systemStyles:vn,rest:_t}=Gm(ze),jt=d.useRef(),sr=d.useRef({}),In=Vb(j),[dn,rn]=d.useState(ne),[Yt,mr]=d.useState(-1),[yo,ar]=d.useState("column"),[ir,Is]=od({value:z,defaultValue:"",finalValue:void 0,onChange:X}),[Es,pa]=d.useState(!1),{scrollIntoView:ha,targetRef:al,scrollableRef:ma}=a6({duration:0,offset:5,cancelable:!1,isList:!0}),il=G&&typeof J=="function";let qe=null;const At=b.map(Je=>typeof Je=="string"?{label:Je,value:Je}:Je),En=XP({data:At}),[vt,ga]=od({value:bk(x,b),defaultValue:bk(C,b),finalValue:[],onChange:w}),Rr=d.useRef(!!he&&he{if(!lt){const wt=vt.filter(xt=>xt!==Je);ga(wt),he&&wt.length{Is(Je.currentTarget.value),!q&&!Rr.current&&R&&rn(!0)},Dg=Je=>{typeof D=="function"&&D(Je),!q&&!Rr.current&&R&&rn(!0)},Mn=KY({data:En,searchable:R,searchValue:ir,limit:B,filter:K,value:vt,disableSelectedItemFiltering:ke});il&&se(ir,En)&&(qe=J(ir),Mn.push({label:ir,value:ir,creatable:!0}));const Ms=Math.min(Yt,Mn.length-1),Xd=(Je,wt,xt)=>{let St=Je;for(;xt(St);)if(St=wt(St),!Mn[St].disabled)return St;return Je};$o(()=>{mr(Rt&&ir?0:-1)},[ir,Rt]),$o(()=>{!q&&vt.length>b.length&&rn(!1),he&&vt.length=he&&(Rr.current=!0,rn(!1))},[vt]);const ll=Je=>{if(!lt)if(U&&Is(""),vt.includes(Je.value))qd(Je.value);else{if(Je.creatable&&typeof re=="function"){const wt=re(Je.value);typeof wt<"u"&&wt!==null&&ga(typeof wt=="string"?[...vt,wt]:[...vt,wt.value])}else ga([...vt,Je.value]);vt.length===he-1&&(Rr.current=!0,rn(!1)),Mn.length===1&&rn(!1)}},Yc=Je=>{typeof A=="function"&&A(Je),rt&&Mn[Ms]&&dn&&ll(Mn[Ms]),W&&Is(""),rn(!1)},ai=Je=>{if(Es||(mt==null||mt(Je),lt)||Je.key!=="Backspace"&&he&&Rr.current)return;const wt=yo==="column",xt=()=>{mr(Kn=>{var Wt;const kn=Xd(Kn,lr=>lr+1,lr=>lr{mr(Kn=>{var Wt;const kn=Xd(Kn,lr=>lr-1,lr=>lr>0);return dn&&(al.current=sr.current[(Wt=Mn[kn])==null?void 0:Wt.value],ha({alignment:wt?"start":"end"})),kn})};switch(Je.key){case"ArrowUp":{Je.preventDefault(),rn(!0),wt?St():xt();break}case"ArrowDown":{Je.preventDefault(),rn(!0),wt?xt():St();break}case"Enter":{Je.preventDefault(),Mn[Ms]&&dn?ll(Mn[Ms]):rn(!0);break}case" ":{R||(Je.preventDefault(),Mn[Ms]&&dn?ll(Mn[Ms]):rn(!0));break}case"Backspace":{vt.length>0&&ir.length===0&&(ga(vt.slice(0,-1)),rn(!0),he&&(Rr.current=!1));break}case"Home":{if(!R){Je.preventDefault(),dn||rn(!0);const Kn=Mn.findIndex(Wt=>!Wt.disabled);mr(Kn),ha({alignment:wt?"end":"start"})}break}case"End":{if(!R){Je.preventDefault(),dn||rn(!0);const Kn=Mn.map(Wt=>!!Wt.disabled).lastIndexOf(!1);mr(Kn),ha({alignment:wt?"end":"start"})}break}case"Escape":rn(!1)}},Qc=vt.map(Je=>{let wt=En.find(xt=>xt.value===Je&&!xt.disabled);return!wt&&il&&(wt={value:Je,label:Je}),wt}).filter(Je=>!!Je).map((Je,wt)=>H.createElement(k,xk(Ol({},Je),{variant:L,disabled:q,className:Le.value,readOnly:lt,onRemove:xt=>{xt.preventDefault(),xt.stopPropagation(),qd(Je.value)},key:Je.value,size:f,styles:m,classNames:h,radius:Q,index:wt}))),Zc=Je=>vt.includes(Je),Rg=()=>{var Je;Is(""),ga([]),(Je=jt.current)==null||Je.focus(),he&&(Rr.current=!1)},va=!lt&&(Mn.length>0?dn:dn&&!!O);return $o(()=>{const Je=va?ye:me;typeof Je=="function"&&Je()},[va]),H.createElement(jc.Wrapper,Ol(Ol({required:s,id:In,label:i,error:p,description:l,size:f,className:r,style:o,classNames:h,styles:m,__staticSelector:"MultiSelect",sx:fe,errorProps:Xe,descriptionProps:ve,labelProps:tt,inputContainer:Ye,inputWrapperOrder:ot,unstyled:ge,withAsterisk:Me,variant:L},vn),v),H.createElement(Ba,{opened:va,transitionProps:I,shadow:"sm",withinPortal:ue,portalProps:De,__staticSelector:"MultiSelect",onDirectionChange:ar,switchDirectionOnFlip:je,zIndex:Be,dropdownPosition:Ct,positionDependencies:[...st,ir],classNames:h,styles:m,unstyled:ge,variant:L},H.createElement(Ba.Target,null,H.createElement("div",{className:Le.wrapper,role:"combobox","aria-haspopup":"listbox","aria-owns":dn&&va?`${In}-items`:null,"aria-controls":In,"aria-expanded":dn,onMouseLeave:()=>mr(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:Ue,value:vt.join(","),form:Re,disabled:q}),H.createElement(jc,Ol({__staticSelector:"MultiSelect",style:{overflow:"hidden"},component:"div",multiline:!0,size:f,variant:L,disabled:q,error:p,required:s,radius:Q,icon:ie,unstyled:ge,onMouseDown:Je=>{var wt;Je.preventDefault(),!q&&!Rr.current&&rn(!dn),(wt=jt.current)==null||wt.focus()},classNames:xk(Ol({},h),{input:Ve({[Le.input]:!R},h==null?void 0:h.input)})},cE({theme:ct,rightSection:oe,rightSectionWidth:V,styles:m,size:f,shouldClear:Y&&vt.length>0,onClear:Rg,error:p,disabled:q,clearButtonProps:$e,readOnly:lt})),H.createElement("div",{className:Le.values,"data-clearable":Y||void 0},Qc,H.createElement("input",Ol({ref:Ld(t,jt),type:"search",id:In,className:Ve(Le.searchInput,{[Le.searchInputPointer]:!R,[Le.searchInputInputHidden]:!dn&&vt.length>0||!R&&vt.length>0,[Le.searchInputEmpty]:vt.length===0}),onKeyDown:ai,value:ir,onChange:Og,onFocus:Dg,onBlur:Yc,readOnly:!R||Rr.current||lt,placeholder:vt.length===0?$:void 0,disabled:q,"data-mantine-stop-propagation":dn,autoComplete:"off",onCompositionStart:()=>pa(!0),onCompositionEnd:()=>pa(!1)},_t)))))),H.createElement(Ba.Dropdown,{component:de||Ym,maxHeight:M,direction:yo,id:In,innerRef:ma,__staticSelector:"MultiSelect",classNames:h,styles:m},H.createElement(Ub,{data:Mn,hovered:Ms,classNames:h,styles:m,uuid:In,__staticSelector:"MultiSelect",onItemHover:mr,onItemSelect:ll,itemsRefs:sr,itemComponent:_,size:f,nothingFound:O,isItemSelected:Zc,creatable:G&&!!qe,createLabel:qe,unstyled:ge,variant:L}))))});fE.displayName="@mantine/core/MultiSelect";var _Q=Object.defineProperty,jQ=Object.defineProperties,PQ=Object.getOwnPropertyDescriptors,Uh=Object.getOwnPropertySymbols,pE=Object.prototype.hasOwnProperty,hE=Object.prototype.propertyIsEnumerable,yk=(e,t,n)=>t in e?_Q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Sv=(e,t)=>{for(var n in t||(t={}))pE.call(t,n)&&yk(e,n,t[n]);if(Uh)for(var n of Uh(t))hE.call(t,n)&&yk(e,n,t[n]);return e},IQ=(e,t)=>jQ(e,PQ(t)),EQ=(e,t)=>{var n={};for(var r in e)pE.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&&hE.call(e,r)&&(n[r]=e[r]);return n};const MQ={type:"text",size:"sm",__staticSelector:"TextInput"},mE=d.forwardRef((e,t)=>{const n=NI("TextInput",MQ,e),{inputProps:r,wrapperProps:o}=n,s=EQ(n,["inputProps","wrapperProps"]);return H.createElement(jc.Wrapper,Sv({},o),H.createElement(jc,IQ(Sv(Sv({},r),s),{ref:t})))});mE.displayName="@mantine/core/TextInput";function OQ({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,filterDataOnExactSearchMatch:i}){if(!t)return e;const l=s!=null&&e.find(p=>p.value===s)||null;if(l&&!i&&(l==null?void 0:l.label)===r){if(n){if(n>=e.length)return e;const p=e.indexOf(l),h=p+n,m=h-e.length;return m>0?e.slice(p-m):e.slice(p,h)}return e}const f=[];for(let p=0;p=n));p+=1);return f}var DQ=or(()=>({input:{"&:not(:disabled)":{cursor:"pointer","&::selection":{backgroundColor:"transparent"}}}}));const RQ=DQ;var AQ=Object.defineProperty,NQ=Object.defineProperties,TQ=Object.getOwnPropertyDescriptors,Gh=Object.getOwnPropertySymbols,gE=Object.prototype.hasOwnProperty,vE=Object.prototype.propertyIsEnumerable,Ck=(e,t,n)=>t in e?AQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ku=(e,t)=>{for(var n in t||(t={}))gE.call(t,n)&&Ck(e,n,t[n]);if(Gh)for(var n of Gh(t))vE.call(t,n)&&Ck(e,n,t[n]);return e},kv=(e,t)=>NQ(e,TQ(t)),$Q=(e,t)=>{var n={};for(var r in e)gE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Gh)for(var r of Gh(e))t.indexOf(r)<0&&vE.call(e,r)&&(n[r]=e[r]);return n};function LQ(e,t){return t.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function zQ(e,t){return!!e&&!t.some(n=>n.label.toLowerCase()===e.toLowerCase())}const FQ={required:!1,size:"sm",shadow:"sm",itemComponent:Gb,transitionProps:{transition:"fade",duration:0},initiallyOpened:!1,filter:LQ,maxDropdownHeight:220,searchable:!1,clearable:!1,limit:1/0,disabled:!1,creatable:!1,shouldCreate:zQ,selectOnBlur:!1,switchDirectionOnFlip:!1,filterDataOnExactSearchMatch:!1,zIndex:Hb("popover"),positionDependencies:[],dropdownPosition:"flip"},ny=d.forwardRef((e,t)=>{const n=NI("Select",FQ,e),{inputProps:r,wrapperProps:o,shadow:s,data:i,value:l,defaultValue:f,onChange:p,itemComponent:h,onKeyDown:m,onBlur:v,onFocus:x,transitionProps:C,initiallyOpened:b,unstyled:w,classNames:k,styles:_,filter:j,maxDropdownHeight:I,searchable:M,clearable:E,nothingFound:O,limit:D,disabled:A,onSearchChange:R,searchValue:$,rightSection:K,rightSectionWidth:B,creatable:U,getCreateLabel:Y,shouldCreate:W,selectOnBlur:L,onCreate:X,dropdownComponent:z,onDropdownClose:q,onDropdownOpen:ne,withinPortal:Q,portalProps:ie,switchDirectionOnFlip:oe,zIndex:V,name:G,dropdownPosition:J,allowDeselect:se,placeholder:re,filterDataOnExactSearchMatch:fe,form:de,positionDependencies:me,readOnly:ye,clearButtonProps:he,hoverOnSearchChange:ue}=n,De=$Q(n,["inputProps","wrapperProps","shadow","data","value","defaultValue","onChange","itemComponent","onKeyDown","onBlur","onFocus","transitionProps","initiallyOpened","unstyled","classNames","styles","filter","maxDropdownHeight","searchable","clearable","nothingFound","limit","disabled","onSearchChange","searchValue","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","selectOnBlur","onCreate","dropdownComponent","onDropdownClose","onDropdownOpen","withinPortal","portalProps","switchDirectionOnFlip","zIndex","name","dropdownPosition","allowDeselect","placeholder","filterDataOnExactSearchMatch","form","positionDependencies","readOnly","clearButtonProps","hoverOnSearchChange"]),{classes:je,cx:Be,theme:rt}=RQ(),[Ue,Ct]=d.useState(b),[Xe,tt]=d.useState(-1),ve=d.useRef(),Re=d.useRef({}),[st,mt]=d.useState("column"),ge=st==="column",{scrollIntoView:Ye,targetRef:ot,scrollableRef:lt}=a6({duration:0,offset:5,cancelable:!1,isList:!0}),Me=se===void 0?E:se,$e=qe=>{if(Ue!==qe){Ct(qe);const At=qe?ne:q;typeof At=="function"&&At()}},Rt=U&&typeof Y=="function";let ke=null;const ze=i.map(qe=>typeof qe=="string"?{label:qe,value:qe}:qe),Le=XP({data:ze}),[Ve,ct,vn]=od({value:l,defaultValue:f,finalValue:null,onChange:p}),_t=Le.find(qe=>qe.value===Ve),[jt,sr]=od({value:$,defaultValue:(_t==null?void 0:_t.label)||"",finalValue:void 0,onChange:R}),In=qe=>{sr(qe),M&&typeof R=="function"&&R(qe)},dn=()=>{var qe;ye||(ct(null),vn||In(""),(qe=ve.current)==null||qe.focus())};d.useEffect(()=>{const qe=Le.find(At=>At.value===Ve);qe?In(qe.label):(!Rt||!Ve)&&In("")},[Ve]),d.useEffect(()=>{_t&&(!M||!Ue)&&In(_t.label)},[_t==null?void 0:_t.label]);const rn=qe=>{if(!ye)if(Me&&(_t==null?void 0:_t.value)===qe.value)ct(null),$e(!1);else{if(qe.creatable&&typeof X=="function"){const At=X(qe.value);typeof At<"u"&&At!==null&&ct(typeof At=="string"?At:At.value)}else ct(qe.value);vn||In(qe.label),tt(-1),$e(!1),ve.current.focus()}},Yt=OQ({data:Le,searchable:M,limit:D,searchValue:jt,filter:j,filterDataOnExactSearchMatch:fe,value:Ve});Rt&&W(jt,Yt)&&(ke=Y(jt),Yt.push({label:jt,value:jt,creatable:!0}));const mr=(qe,At,En)=>{let vt=qe;for(;En(vt);)if(vt=At(vt),!Yt[vt].disabled)return vt;return qe};$o(()=>{tt(ue&&jt?0:-1)},[jt,ue]);const yo=Ve?Yt.findIndex(qe=>qe.value===Ve):0,ar=!ye&&(Yt.length>0?Ue:Ue&&!!O),ir=()=>{tt(qe=>{var At;const En=mr(qe,vt=>vt-1,vt=>vt>0);return ot.current=Re.current[(At=Yt[En])==null?void 0:At.value],ar&&Ye({alignment:ge?"start":"end"}),En})},Is=()=>{tt(qe=>{var At;const En=mr(qe,vt=>vt+1,vt=>vtwindow.setTimeout(()=>{var qe;ot.current=Re.current[(qe=Yt[yo])==null?void 0:qe.value],Ye({alignment:ge?"end":"start"})},50);$o(()=>{ar&&Es()},[ar]);const pa=qe=>{switch(typeof m=="function"&&m(qe),qe.key){case"ArrowUp":{qe.preventDefault(),Ue?ge?ir():Is():(tt(yo),$e(!0),Es());break}case"ArrowDown":{qe.preventDefault(),Ue?ge?Is():ir():(tt(yo),$e(!0),Es());break}case"Home":{if(!M){qe.preventDefault(),Ue||$e(!0);const At=Yt.findIndex(En=>!En.disabled);tt(At),ar&&Ye({alignment:ge?"end":"start"})}break}case"End":{if(!M){qe.preventDefault(),Ue||$e(!0);const At=Yt.map(En=>!!En.disabled).lastIndexOf(!1);tt(At),ar&&Ye({alignment:ge?"end":"start"})}break}case"Escape":{qe.preventDefault(),$e(!1),tt(-1);break}case" ":{M||(qe.preventDefault(),Yt[Xe]&&Ue?rn(Yt[Xe]):($e(!0),tt(yo),Es()));break}case"Enter":M||qe.preventDefault(),Yt[Xe]&&Ue&&(qe.preventDefault(),rn(Yt[Xe]))}},ha=qe=>{typeof v=="function"&&v(qe);const At=Le.find(En=>En.value===Ve);L&&Yt[Xe]&&Ue&&rn(Yt[Xe]),In((At==null?void 0:At.label)||""),$e(!1)},al=qe=>{typeof x=="function"&&x(qe),M&&$e(!0)},ma=qe=>{ye||(In(qe.currentTarget.value),E&&qe.currentTarget.value===""&&ct(null),tt(-1),$e(!0))},il=()=>{ye||($e(!Ue),Ve&&!Ue&&tt(yo))};return H.createElement(jc.Wrapper,kv(ku({},o),{__staticSelector:"Select"}),H.createElement(Ba,{opened:ar,transitionProps:C,shadow:s,withinPortal:Q,portalProps:ie,__staticSelector:"Select",onDirectionChange:mt,switchDirectionOnFlip:oe,zIndex:V,dropdownPosition:J,positionDependencies:[...me,jt],classNames:k,styles:_,unstyled:w,variant:r.variant},H.createElement(Ba.Target,null,H.createElement("div",{role:"combobox","aria-haspopup":"listbox","aria-owns":ar?`${r.id}-items`:null,"aria-controls":r.id,"aria-expanded":ar,onMouseLeave:()=>tt(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:G,value:Ve||"",form:de,disabled:A}),H.createElement(jc,ku(kv(ku(ku({autoComplete:"off",type:"search"},r),De),{ref:Ld(t,ve),onKeyDown:pa,__staticSelector:"Select",value:jt,placeholder:re,onChange:ma,"aria-autocomplete":"list","aria-controls":ar?`${r.id}-items`:null,"aria-activedescendant":Xe>=0?`${r.id}-${Xe}`:null,onMouseDown:il,onBlur:ha,onFocus:al,readOnly:!M||ye,disabled:A,"data-mantine-stop-propagation":ar,name:null,classNames:kv(ku({},k),{input:Be({[je.input]:!M},k==null?void 0:k.input)})}),cE({theme:rt,rightSection:K,rightSectionWidth:B,styles:_,size:r.size,shouldClear:E&&!!_t,onClear:dn,error:o.error,clearButtonProps:he,disabled:A,readOnly:ye}))))),H.createElement(Ba.Dropdown,{component:z||Ym,maxHeight:I,direction:st,id:r.id,innerRef:lt,__staticSelector:"Select",classNames:k,styles:_},H.createElement(Ub,{data:Yt,hovered:Xe,classNames:k,styles:_,isItemSelected:qe=>qe===Ve,uuid:r.id,__staticSelector:"Select",onItemHover:tt,onItemSelect:rn,itemsRefs:Re,itemComponent:h,size:r.size,nothingFound:O,creatable:Rt&&!!ke,createLabel:ke,"aria-label":o.label,unstyled:w,variant:r.variant}))))});ny.displayName="@mantine/core/Select";const Bd=()=>{const[e,t,n,r,o,s,i,l,f,p,h,m,v,x,C,b,w,k,_,j,I,M,E,O,D,A,R,$,K,B,U,Y,W,L,X,z,q,ne,Q,ie,oe,V,G,J,se,re,fe,de,me,ye,he,ue,De,je,Be,rt,Ue,Ct,Xe,tt,ve,Re,st,mt,ge,Ye,ot,lt,Me,$e,Rt,ke,ze,Le,Ve,ct]=ds("colors",["base.50","base.100","base.150","base.200","base.250","base.300","base.350","base.400","base.450","base.500","base.550","base.600","base.650","base.700","base.750","base.800","base.850","base.900","base.950","accent.50","accent.100","accent.150","accent.200","accent.250","accent.300","accent.350","accent.400","accent.450","accent.500","accent.550","accent.600","accent.650","accent.700","accent.750","accent.800","accent.850","accent.900","accent.950","baseAlpha.50","baseAlpha.100","baseAlpha.150","baseAlpha.200","baseAlpha.250","baseAlpha.300","baseAlpha.350","baseAlpha.400","baseAlpha.450","baseAlpha.500","baseAlpha.550","baseAlpha.600","baseAlpha.650","baseAlpha.700","baseAlpha.750","baseAlpha.800","baseAlpha.850","baseAlpha.900","baseAlpha.950","accentAlpha.50","accentAlpha.100","accentAlpha.150","accentAlpha.200","accentAlpha.250","accentAlpha.300","accentAlpha.350","accentAlpha.400","accentAlpha.450","accentAlpha.500","accentAlpha.550","accentAlpha.600","accentAlpha.650","accentAlpha.700","accentAlpha.750","accentAlpha.800","accentAlpha.850","accentAlpha.900","accentAlpha.950"]);return{base50:e,base100:t,base150:n,base200:r,base250:o,base300:s,base350:i,base400:l,base450:f,base500:p,base550:h,base600:m,base650:v,base700:x,base750:C,base800:b,base850:w,base900:k,base950:_,accent50:j,accent100:I,accent150:M,accent200:E,accent250:O,accent300:D,accent350:A,accent400:R,accent450:$,accent500:K,accent550:B,accent600:U,accent650:Y,accent700:W,accent750:L,accent800:X,accent850:z,accent900:q,accent950:ne,baseAlpha50:Q,baseAlpha100:ie,baseAlpha150:oe,baseAlpha200:V,baseAlpha250:G,baseAlpha300:J,baseAlpha350:se,baseAlpha400:re,baseAlpha450:fe,baseAlpha500:de,baseAlpha550:me,baseAlpha600:ye,baseAlpha650:he,baseAlpha700:ue,baseAlpha750:De,baseAlpha800:je,baseAlpha850:Be,baseAlpha900:rt,baseAlpha950:Ue,accentAlpha50:Ct,accentAlpha100:Xe,accentAlpha150:tt,accentAlpha200:ve,accentAlpha250:Re,accentAlpha300:st,accentAlpha350:mt,accentAlpha400:ge,accentAlpha450:Ye,accentAlpha500:ot,accentAlpha550:lt,accentAlpha600:Me,accentAlpha650:$e,accentAlpha700:Rt,accentAlpha750:ke,accentAlpha800:ze,accentAlpha850:Le,accentAlpha900:Ve,accentAlpha950:ct}},Ae=(e,t)=>n=>n==="light"?e:t,xE=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:l,base800:f,base900:p,accent200:h,accent300:m,accent400:v,accent500:x,accent600:C}=Bd(),{colorMode:b}=ia(),[w]=ds("shadows",["dark-lg"]),[k,_,j]=ds("space",[1,2,6]),[I]=ds("radii",["base"]),[M]=ds("lineHeights",["base"]);return d.useCallback(()=>({label:{color:Ae(l,r)(b)},separatorLabel:{color:Ae(s,s)(b),"::after":{borderTopColor:Ae(r,l)(b)}},input:{border:"unset",backgroundColor:Ae(e,p)(b),borderRadius:I,borderStyle:"solid",borderWidth:"2px",borderColor:Ae(n,f)(b),color:Ae(p,t)(b),minHeight:"unset",lineHeight:M,height:"auto",paddingRight:0,paddingLeft:0,paddingInlineStart:_,paddingInlineEnd:j,paddingTop:k,paddingBottom:k,fontWeight:600,"&:hover":{borderColor:Ae(r,i)(b)},"&:focus":{borderColor:Ae(m,C)(b)},"&:is(:focus, :hover)":{borderColor:Ae(o,s)(b)},"&:focus-within":{borderColor:Ae(h,C)(b)},"&[data-disabled]":{backgroundColor:Ae(r,l)(b),color:Ae(i,o)(b),cursor:"not-allowed"}},value:{backgroundColor:Ae(t,p)(b),color:Ae(p,t)(b),button:{color:Ae(p,t)(b)},"&:hover":{backgroundColor:Ae(r,l)(b),cursor:"pointer"}},dropdown:{backgroundColor:Ae(n,f)(b),borderColor:Ae(n,f)(b),boxShadow:w},item:{backgroundColor:Ae(n,f)(b),color:Ae(f,n)(b),padding:6,"&[data-hovered]":{color:Ae(p,t)(b),backgroundColor:Ae(r,l)(b)},"&[data-active]":{backgroundColor:Ae(r,l)(b),"&:hover":{color:Ae(p,t)(b),backgroundColor:Ae(r,l)(b)}},"&[data-selected]":{backgroundColor:Ae(v,C)(b),color:Ae(e,t)(b),fontWeight:600,"&:hover":{backgroundColor:Ae(x,x)(b),color:Ae("white",e)(b)}},"&[data-disabled]":{color:Ae(s,i)(b),cursor:"not-allowed"}},rightSection:{width:32,button:{color:Ae(p,t)(b)}}}),[h,m,v,x,C,t,n,r,o,e,s,i,l,f,p,w,b,M,I,k,_,j])},BQ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,onChange:o,label:s,disabled:i,...l}=e,f=te(),[p,h]=d.useState(""),m=d.useCallback(b=>{b.shiftKey&&f(Ir(!0))},[f]),v=d.useCallback(b=>{b.shiftKey||f(Ir(!1))},[f]),x=d.useCallback(b=>{o&&o(b)},[o]),C=xE();return a.jsx(Dt,{label:n,placement:"top",hasArrow:!0,children:a.jsx(ny,{ref:r,label:s?a.jsx(un,{isDisabled:i,children:a.jsx(Gn,{children:s})}):void 0,disabled:i,searchValue:p,onSearchChange:h,onChange:x,onKeyDown:m,onKeyUp:v,searchable:t,maxDropdownHeight:300,styles:C,...l})})},Gt=d.memo(BQ),HQ=ae([xe],({changeBoardModal:e})=>{const{isModalOpen:t,imagesToChange:n}=e;return{isModalOpen:t,imagesToChange:n}},Ce),WQ=()=>{const e=te(),[t,n]=d.useState(),{data:r,isFetching:o}=um(),{imagesToChange:s,isModalOpen:i}=F(HQ),[l]=B7(),[f]=H7(),p=d.useMemo(()=>{const x=[{label:"Uncategorized",value:"none"}];return(r??[]).forEach(C=>x.push({label:C.board_name,value:C.board_id})),x},[r]),h=d.useCallback(()=>{e(NC()),e(Tx(!1))},[e]),m=d.useCallback(()=>{!s.length||!t||(t==="none"?f({imageDTOs:s}):l({imageDTOs:s,board_id:t}),n(null),e(NC()))},[l,e,s,f,t]),v=d.useRef(null);return a.jsx(Ad,{isOpen:i,onClose:h,leastDestructiveRef:v,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Nd,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:"Change Board"}),a.jsx(Vo,{children:a.jsxs(T,{sx:{flexDir:"column",gap:4},children:[a.jsxs(be,{children:["Moving ",`${s.length}`," image",`${s.length>1?"s":""}`," to board:"]}),a.jsx(Gt,{placeholder:o?"Loading...":"Select Board",disabled:o,onChange:x=>n(x),value:t,data:p})]})}),a.jsxs(gs,{children:[a.jsx(it,{ref:v,onClick:h,children:"Cancel"}),a.jsx(it,{colorScheme:"accent",onClick:m,ml:3,children:"Move"})]})]})})})},VQ=d.memo(WQ),UQ=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:o,formLabelProps:s,tooltip:i,helperText:l,...f}=e;return a.jsx(Dt,{label:i,hasArrow:!0,placement:"top",isDisabled:!i,children:a.jsx(un,{isDisabled:n,width:r,alignItems:"center",...o,children:a.jsxs(T,{sx:{flexDir:"column",w:"full"},children:[a.jsxs(T,{sx:{alignItems:"center",w:"full"},children:[t&&a.jsx(Gn,{my:1,flexGrow:1,sx:{cursor:n?"not-allowed":"pointer",...s==null?void 0:s.sx,pe:4},...s,children:t}),a.jsx(Lb,{...f})]}),l&&a.jsx(M3,{children:a.jsx(be,{variant:"subtext",children:l})})]})})})},Ut=d.memo(UQ),GQ=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||!Ro(t)?null:a.jsxs(a.Fragment,{children:[a.jsx(be,{children:n}),a.jsxs(Id,{sx:{paddingInlineStart:6},children:[t.isInitialImage&&a.jsx(No,{children:"Image to Image"}),t.isCanvasImage&&a.jsx(No,{children:"Unified Canvas"}),t.isControlNetImage&&a.jsx(No,{children:"ControlNet"}),t.isNodesImage&&a.jsx(No,{children:"Node Editor"})]}),a.jsx(be,{children:r})]})},bE=d.memo(GQ),KQ=ae([xe,W7],(e,t)=>{const{system:n,config:r,deleteImageModal:o}=e,{shouldConfirmOnDelete:s}=n,{canRestoreDeletedImagesFromBin:i}=r,{imagesToDelete:l,isModalOpen:f}=o,p=(l??[]).map(({image_name:m})=>Mj(e,m)),h={isInitialImage:Ro(p,m=>m.isInitialImage),isCanvasImage:Ro(p,m=>m.isCanvasImage),isNodesImage:Ro(p,m=>m.isNodesImage),isControlNetImage:Ro(p,m=>m.isControlNetImage)};return{shouldConfirmOnDelete:s,canRestoreDeletedImagesFromBin:i,imagesToDelete:l,imagesUsage:t,isModalOpen:f,imageUsageSummary:h}},Ce),qQ=()=>{const e=te(),{t}=we(),{shouldConfirmOnDelete:n,canRestoreDeletedImagesFromBin:r,imagesToDelete:o,imagesUsage:s,isModalOpen:i,imageUsageSummary:l}=F(KQ),f=d.useCallback(v=>e(Oj(!v.target.checked)),[e]),p=d.useCallback(()=>{e(TC()),e(V7(!1))},[e]),h=d.useCallback(()=>{!o.length||!s.length||(e(TC()),e(U7({imageDTOs:o,imagesUsage:s})))},[e,o,s]),m=d.useRef(null);return a.jsx(Ad,{isOpen:i,onClose:p,leastDestructiveRef:m,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Nd,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:t("gallery.deleteImage")}),a.jsx(Vo,{children:a.jsxs(T,{direction:"column",gap:3,children:[a.jsx(bE,{imageUsage:l}),a.jsx(Fr,{}),a.jsx(be,{children:t(r?"gallery.deleteImageBin":"gallery.deleteImagePermanent")}),a.jsx(be,{children:t("common.areYouSure")}),a.jsx(Ut,{label:t("common.dontAskMeAgain"),isChecked:!n,onChange:f})]})}),a.jsxs(gs,{children:[a.jsx(it,{ref:m,onClick:p,children:"Cancel"}),a.jsx(it,{colorScheme:"error",onClick:h,ml:3,children:"Delete"})]})]})})})},XQ=d.memo(qQ),yE=Pe((e,t)=>{const{role:n,tooltip:r="",tooltipProps:o,isChecked:s,...i}=e;return a.jsx(Dt,{label:r,hasArrow:!0,...o,...o!=null&&o.placement?{placement:o.placement}:{placement:"top"},children:a.jsx(ps,{ref:t,role:n,colorScheme:s?"accent":"base",...i})})});yE.displayName="IAIIconButton";const Te=d.memo(yE);var CE={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},wk=H.createContext&&H.createContext(CE),Ha=globalThis&&globalThis.__assign||function(){return Ha=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const t=F(i=>i.config.disabledTabs),n=F(i=>i.config.disabledFeatures),r=F(i=>i.config.disabledSDFeatures),o=d.useMemo(()=>n.includes(e)||r.includes(e)||t.includes(e),[n,r,t,e]),s=d.useMemo(()=>!(n.includes(e)||r.includes(e)||t.includes(e)),[n,r,t,e]);return{isFeatureDisabled:o,isFeatureEnabled:s}};function LZ(e){const{title:t,hotkey:n,description:r}=e;return a.jsxs(Ua,{sx:{gridTemplateColumns:"auto max-content",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs(Ua,{children:[a.jsx(be,{fontWeight:600,children:t}),r&&a.jsx(be,{sx:{fontSize:"sm"},variant:"subtext",children:r})]}),a.jsx(Ie,{sx:{fontSize:"sm",fontWeight:600,px:2,py:1},children:n})]})}function zZ({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Er(),{t:o}=we(),s=[{title:o("hotkeys.invoke.title"),desc:o("hotkeys.invoke.desc"),hotkey:"Ctrl+Enter"},{title:o("hotkeys.cancel.title"),desc:o("hotkeys.cancel.desc"),hotkey:"Shift+X"},{title:o("hotkeys.focusPrompt.title"),desc:o("hotkeys.focusPrompt.desc"),hotkey:"Alt+A"},{title:o("hotkeys.toggleOptions.title"),desc:o("hotkeys.toggleOptions.desc"),hotkey:"O"},{title:o("hotkeys.toggleGallery.title"),desc:o("hotkeys.toggleGallery.desc"),hotkey:"G"},{title:o("hotkeys.maximizeWorkSpace.title"),desc:o("hotkeys.maximizeWorkSpace.desc"),hotkey:"F"},{title:o("hotkeys.changeTabs.title"),desc:o("hotkeys.changeTabs.desc"),hotkey:"1-5"}],i=[{title:o("hotkeys.setPrompt.title"),desc:o("hotkeys.setPrompt.desc"),hotkey:"P"},{title:o("hotkeys.setSeed.title"),desc:o("hotkeys.setSeed.desc"),hotkey:"S"},{title:o("hotkeys.setParameters.title"),desc:o("hotkeys.setParameters.desc"),hotkey:"A"},{title:o("hotkeys.upscale.title"),desc:o("hotkeys.upscale.desc"),hotkey:"Shift+U"},{title:o("hotkeys.showInfo.title"),desc:o("hotkeys.showInfo.desc"),hotkey:"I"},{title:o("hotkeys.sendToImageToImage.title"),desc:o("hotkeys.sendToImageToImage.desc"),hotkey:"Shift+I"},{title:o("hotkeys.deleteImage.title"),desc:o("hotkeys.deleteImage.desc"),hotkey:"Del"},{title:o("hotkeys.closePanels.title"),desc:o("hotkeys.closePanels.desc"),hotkey:"Esc"}],l=[{title:o("hotkeys.previousImage.title"),desc:o("hotkeys.previousImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextImage.title"),desc:o("hotkeys.nextImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.increaseGalleryThumbSize.title"),desc:o("hotkeys.increaseGalleryThumbSize.desc"),hotkey:"Shift+Up"},{title:o("hotkeys.decreaseGalleryThumbSize.title"),desc:o("hotkeys.decreaseGalleryThumbSize.desc"),hotkey:"Shift+Down"}],f=[{title:o("hotkeys.selectBrush.title"),desc:o("hotkeys.selectBrush.desc"),hotkey:"B"},{title:o("hotkeys.selectEraser.title"),desc:o("hotkeys.selectEraser.desc"),hotkey:"E"},{title:o("hotkeys.decreaseBrushSize.title"),desc:o("hotkeys.decreaseBrushSize.desc"),hotkey:"["},{title:o("hotkeys.increaseBrushSize.title"),desc:o("hotkeys.increaseBrushSize.desc"),hotkey:"]"},{title:o("hotkeys.decreaseBrushOpacity.title"),desc:o("hotkeys.decreaseBrushOpacity.desc"),hotkey:"Shift + ["},{title:o("hotkeys.increaseBrushOpacity.title"),desc:o("hotkeys.increaseBrushOpacity.desc"),hotkey:"Shift + ]"},{title:o("hotkeys.moveTool.title"),desc:o("hotkeys.moveTool.desc"),hotkey:"V"},{title:o("hotkeys.fillBoundingBox.title"),desc:o("hotkeys.fillBoundingBox.desc"),hotkey:"Shift + F"},{title:o("hotkeys.eraseBoundingBox.title"),desc:o("hotkeys.eraseBoundingBox.desc"),hotkey:"Delete / Backspace"},{title:o("hotkeys.colorPicker.title"),desc:o("hotkeys.colorPicker.desc"),hotkey:"C"},{title:o("hotkeys.toggleSnap.title"),desc:o("hotkeys.toggleSnap.desc"),hotkey:"N"},{title:o("hotkeys.quickToggleMove.title"),desc:o("hotkeys.quickToggleMove.desc"),hotkey:"Hold Space"},{title:o("hotkeys.toggleLayer.title"),desc:o("hotkeys.toggleLayer.desc"),hotkey:"Q"},{title:o("hotkeys.clearMask.title"),desc:o("hotkeys.clearMask.desc"),hotkey:"Shift+C"},{title:o("hotkeys.hideMask.title"),desc:o("hotkeys.hideMask.desc"),hotkey:"H"},{title:o("hotkeys.showHideBoundingBox.title"),desc:o("hotkeys.showHideBoundingBox.desc"),hotkey:"Shift+H"},{title:o("hotkeys.mergeVisible.title"),desc:o("hotkeys.mergeVisible.desc"),hotkey:"Shift+M"},{title:o("hotkeys.saveToGallery.title"),desc:o("hotkeys.saveToGallery.desc"),hotkey:"Shift+S"},{title:o("hotkeys.copyToClipboard.title"),desc:o("hotkeys.copyToClipboard.desc"),hotkey:"Ctrl+C"},{title:o("hotkeys.downloadImage.title"),desc:o("hotkeys.downloadImage.desc"),hotkey:"Shift+D"},{title:o("hotkeys.undoStroke.title"),desc:o("hotkeys.undoStroke.desc"),hotkey:"Ctrl+Z"},{title:o("hotkeys.redoStroke.title"),desc:o("hotkeys.redoStroke.desc"),hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:o("hotkeys.resetView.title"),desc:o("hotkeys.resetView.desc"),hotkey:"R"},{title:o("hotkeys.previousStagingImage.title"),desc:o("hotkeys.previousStagingImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextStagingImage.title"),desc:o("hotkeys.nextStagingImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.acceptStagingImage.title"),desc:o("hotkeys.acceptStagingImage.desc"),hotkey:"Enter"}],p=[{title:o("hotkeys.addNodes.title"),desc:o("hotkeys.addNodes.desc"),hotkey:"Shift + A / Space"}],h=m=>a.jsx(T,{flexDir:"column",gap:4,children:m.map((v,x)=>a.jsxs(T,{flexDir:"column",px:2,gap:4,children:[a.jsx(LZ,{title:v.title,description:v.desc,hotkey:v.hotkey}),x{const{data:t}=G7(),n=d.useRef(null),r=LE(n);return a.jsxs(T,{alignItems:"center",gap:5,ps:1,ref:n,children:[a.jsx(qi,{src:Dj,alt:"invoke-ai-logo",sx:{w:"32px",h:"32px",minW:"32px",minH:"32px",userSelect:"none"}}),a.jsxs(T,{sx:{gap:3,alignItems:"center"},children:[a.jsxs(be,{sx:{fontSize:"xl",userSelect:"none"},children:["invoke ",a.jsx("strong",{children:"ai"})]}),a.jsx(nr,{children:e&&r&&t&&a.jsx(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsx(be,{sx:{fontWeight:600,marginTop:1,color:"base.300",fontSize:14},variant:"subtext",children:t.version})},"statusText")})]})]})},KZ=d.memo(GZ),qZ=e=>{const{tooltip:t,inputRef:n,label:r,disabled:o,required:s,...i}=e,l=xE();return a.jsx(Dt,{label:t,placement:"top",hasArrow:!0,children:a.jsx(ny,{label:r?a.jsx(un,{isRequired:s,isDisabled:o,children:a.jsx(Gn,{children:r})}):void 0,disabled:o,ref:n,styles:l,...i})})},Bn=d.memo(qZ),XZ={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"})};function Io(e){const{t}=we(),{label:n,textProps:r,useBadge:o=!1,badgeLabel:s=t("settings.experimental"),badgeProps:i,...l}=e;return a.jsxs(T,{justifyContent:"space-between",py:1,children:[a.jsxs(T,{gap:2,alignItems:"center",children:[a.jsx(be,{sx:{fontSize:14,_dark:{color:"base.300"}},...r,children:n}),o&&a.jsx(ua,{size:"xs",sx:{px:2,color:"base.700",bg:"accent.200",_dark:{bg:"accent.500",color:"base.200"}},...i,children:s})]}),a.jsx(Ut,{...l})]})}const YZ=e=>a.jsx(T,{sx:{flexDirection:"column",gap:2,p:4,borderRadius:"base",bg:"base.100",_dark:{bg:"base.900"}},children:e.children}),Ll=d.memo(YZ);function QZ(){const e=te(),{data:t,refetch:n}=K7(),[r,{isLoading:o}]=q7(),s=d.useCallback(()=>{r().unwrap().then(l=>{e(X7()),e(Rj()),e(Nt({title:`Cleared ${l} intermediates`,status:"info"}))})},[r,e]);d.useEffect(()=>{n()},[n]);const i=t?`Clear ${t} Intermediate${t>1?"s":""}`:"No Intermediates to Clear";return a.jsxs(Ll,{children:[a.jsx(oo,{size:"sm",children:"Clear Intermediates"}),a.jsx(it,{colorScheme:"warning",onClick:s,isLoading:o,isDisabled:!t,children:i}),a.jsx(be,{fontWeight:"bold",children:"Clearing intermediates will reset your Canvas and ControlNet state."}),a.jsx(be,{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(be,{variant:"subtext",children:"Your gallery images will not be deleted."})]})}const ZZ=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:l,base800:f,base900:p,accent200:h,accent300:m,accent400:v,accent500:x,accent600:C}=Bd(),{colorMode:b}=ia(),[w]=ds("shadows",["dark-lg"]);return d.useCallback(()=>({label:{color:Ae(l,r)(b)},separatorLabel:{color:Ae(s,s)(b),"::after":{borderTopColor:Ae(r,l)(b)}},searchInput:{":placeholder":{color:Ae(r,l)(b)}},input:{backgroundColor:Ae(e,p)(b),borderWidth:"2px",borderColor:Ae(n,f)(b),color:Ae(p,t)(b),paddingRight:24,fontWeight:600,"&:hover":{borderColor:Ae(r,i)(b)},"&:focus":{borderColor:Ae(m,C)(b)},"&:is(:focus, :hover)":{borderColor:Ae(o,s)(b)},"&:focus-within":{borderColor:Ae(h,C)(b)},"&[data-disabled]":{backgroundColor:Ae(r,l)(b),color:Ae(i,o)(b),cursor:"not-allowed"}},value:{backgroundColor:Ae(n,f)(b),color:Ae(p,t)(b),button:{color:Ae(p,t)(b)},"&:hover":{backgroundColor:Ae(r,l)(b),cursor:"pointer"}},dropdown:{backgroundColor:Ae(n,f)(b),borderColor:Ae(n,f)(b),boxShadow:w},item:{backgroundColor:Ae(n,f)(b),color:Ae(f,n)(b),padding:6,"&[data-hovered]":{color:Ae(p,t)(b),backgroundColor:Ae(r,l)(b)},"&[data-active]":{backgroundColor:Ae(r,l)(b),"&:hover":{color:Ae(p,t)(b),backgroundColor:Ae(r,l)(b)}},"&[data-selected]":{backgroundColor:Ae(v,C)(b),color:Ae(e,t)(b),fontWeight:600,"&:hover":{backgroundColor:Ae(x,x)(b),color:Ae("white",e)(b)}},"&[data-disabled]":{color:Ae(s,i)(b),cursor:"not-allowed"}},rightSection:{width:24,padding:20,button:{color:Ae(p,t)(b)}}}),[h,m,v,x,C,t,n,r,o,e,s,i,l,f,p,w,b])},JZ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,label:o,disabled:s,...i}=e,l=te(),f=d.useCallback(m=>{m.shiftKey&&l(Ir(!0))},[l]),p=d.useCallback(m=>{m.shiftKey||l(Ir(!1))},[l]),h=ZZ();return a.jsx(Dt,{label:n,placement:"top",hasArrow:!0,isOpen:!0,children:a.jsx(fE,{label:o?a.jsx(un,{isDisabled:s,children:a.jsx(Gn,{children:o})}):void 0,ref:r,disabled:s,onKeyDown:f,onKeyUp:p,searchable:t,maxDropdownHeight:300,styles:h,...i})})},eJ=d.memo(JZ),tJ=rr(dm,(e,t)=>({value:t,label:e})).sort((e,t)=>e.label.localeCompare(t.label));function nJ(){const e=te(),{t}=we(),n=F(o=>o.ui.favoriteSchedulers),r=d.useCallback(o=>{e(Y7(o))},[e]);return a.jsx(eJ,{label:t("settings.favoriteSchedulers"),value:n,data:tJ,onChange:r,clearable:!0,searchable:!0,maxSelectedValues:99,placeholder:t("settings.favoriteSchedulersPlaceholder")})}const rJ=ae([xe],({system:e,ui:t,generation:n})=>{const{shouldConfirmOnDelete:r,enableImageDebugging:o,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:l,shouldUseNSFWChecker:f,shouldUseWatermarker:p}=e,{shouldUseSliders:h,shouldShowProgressInViewer:m,shouldAutoChangeDimensions:v}=t,{shouldShowAdvancedOptions:x}=n;return{shouldConfirmOnDelete:r,enableImageDebugging:o,shouldUseSliders:h,shouldShowProgressInViewer:m,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:l,shouldShowAdvancedOptions:x,shouldUseNSFWChecker:f,shouldUseWatermarker:p,shouldAutoChangeDimensions:v}},{memoizeOptions:{resultEqualityCheck:kt}}),oJ=({children:e,config:t})=>{const n=te(),{t:r}=we(),[o,s]=d.useState(3),i=(t==null?void 0:t.shouldShowDeveloperSettings)??!0,l=(t==null?void 0:t.shouldShowResetWebUiText)??!0,f=(t==null?void 0:t.shouldShowAdvancedOptionsSettings)??!0,p=(t==null?void 0:t.shouldShowClearIntermediates)??!0,h=(t==null?void 0:t.shouldShowLocalizationToggle)??!0;d.useEffect(()=>{i||n($C(!1))},[i,n]);const{isNSFWCheckerAvailable:m,isWatermarkerAvailable:v}=Aj(void 0,{selectFromResult:({data:Q})=>({isNSFWCheckerAvailable:(Q==null?void 0:Q.nsfw_methods.includes("nsfw_checker"))??!1,isWatermarkerAvailable:(Q==null?void 0:Q.watermarking_methods.includes("invisible_watermark"))??!1})}),{isOpen:x,onOpen:C,onClose:b}=Er(),{isOpen:w,onOpen:k,onClose:_}=Er(),{shouldConfirmOnDelete:j,enableImageDebugging:I,shouldUseSliders:M,shouldShowProgressInViewer:E,consoleLogLevel:O,shouldLogToConsole:D,shouldAntialiasProgressImage:A,shouldShowAdvancedOptions:R,shouldUseNSFWChecker:$,shouldUseWatermarker:K,shouldAutoChangeDimensions:B}=F(rJ),U=d.useCallback(()=>{Object.keys(window.localStorage).forEach(Q=>{(Q7.includes(Q)||Q.startsWith(Z7))&&localStorage.removeItem(Q)}),b(),k(),setInterval(()=>s(Q=>Q-1),1e3)},[b,k]);d.useEffect(()=>{o<=0&&window.location.reload()},[o]);const Y=d.useCallback(Q=>{n(J7(Q))},[n]),W=d.useCallback(Q=>{n(eD(Q))},[n]),L=d.useCallback(Q=>{n($C(Q.target.checked))},[n]),{colorMode:X,toggleColorMode:z}=ia(),q=qt("localization").isFeatureEnabled,ne=F(OP);return a.jsxs(a.Fragment,{children:[d.cloneElement(e,{onClick:C}),a.jsxs(Fi,{isOpen:x,onClose:b,size:"2xl",isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Bi,{children:[a.jsx(Ho,{bg:"none",children:r("common.settingsLabel")}),a.jsx(Td,{}),a.jsx(Vo,{children:a.jsxs(T,{sx:{gap:4,flexDirection:"column"},children:[a.jsxs(Ll,{children:[a.jsx(oo,{size:"sm",children:r("settings.general")}),a.jsx(Io,{label:r("settings.confirmOnDelete"),isChecked:j,onChange:Q=>n(Oj(Q.target.checked))}),f&&a.jsx(Io,{label:r("settings.showAdvancedOptions"),isChecked:R,onChange:Q=>n(tD(Q.target.checked))})]}),a.jsxs(Ll,{children:[a.jsx(oo,{size:"sm",children:r("settings.generation")}),a.jsx(nJ,{}),a.jsx(Io,{label:"Enable NSFW Checker",isDisabled:!m,isChecked:$,onChange:Q=>n(nD(Q.target.checked))}),a.jsx(Io,{label:"Enable Invisible Watermark",isDisabled:!v,isChecked:K,onChange:Q=>n(rD(Q.target.checked))})]}),a.jsxs(Ll,{children:[a.jsx(oo,{size:"sm",children:r("settings.ui")}),a.jsx(Io,{label:r("common.darkMode"),isChecked:X==="dark",onChange:z}),a.jsx(Io,{label:r("settings.useSlidersForAll"),isChecked:M,onChange:Q=>n(oD(Q.target.checked))}),a.jsx(Io,{label:r("settings.showProgressInViewer"),isChecked:E,onChange:Q=>n(Nj(Q.target.checked))}),a.jsx(Io,{label:r("settings.antialiasProgressImages"),isChecked:A,onChange:Q=>n(sD(Q.target.checked))}),a.jsx(Io,{label:r("settings.autoChangeDimensions"),isChecked:B,onChange:Q=>n(aD(Q.target.checked))}),h&&a.jsx(Bn,{disabled:!q,label:r("common.languagePickerLabel"),value:ne,data:Object.entries(XZ).map(([Q,ie])=>({value:Q,label:ie})),onChange:W})]}),i&&a.jsxs(Ll,{children:[a.jsx(oo,{size:"sm",children:r("settings.developer")}),a.jsx(Io,{label:r("settings.shouldLogToConsole"),isChecked:D,onChange:L}),a.jsx(Bn,{disabled:!D,label:r("settings.consoleLogLevel"),onChange:Y,value:O,data:iD.concat()}),a.jsx(Io,{label:r("settings.enableImageDebugging"),isChecked:I,onChange:Q=>n(lD(Q.target.checked))})]}),p&&a.jsx(QZ,{}),a.jsxs(Ll,{children:[a.jsx(oo,{size:"sm",children:r("settings.resetWebUI")}),a.jsx(it,{colorScheme:"error",onClick:U,children:r("settings.resetWebUI")}),l&&a.jsxs(a.Fragment,{children:[a.jsx(be,{variant:"subtext",children:r("settings.resetWebUIDesc1")}),a.jsx(be,{variant:"subtext",children:r("settings.resetWebUIDesc2")})]})]})]})}),a.jsx(gs,{children:a.jsx(it,{onClick:b,children:r("common.close")})})]})]}),a.jsxs(Fi,{closeOnOverlayClick:!1,isOpen:w,onClose:_,isCentered:!0,closeOnEsc:!1,children:[a.jsx(Wo,{backdropFilter:"blur(40px)"}),a.jsxs(Bi,{children:[a.jsx(Ho,{}),a.jsx(Vo,{children:a.jsx(T,{justifyContent:"center",children:a.jsx(be,{fontSize:"lg",children:a.jsxs(be,{children:[r("settings.resetComplete")," Reloading in ",o,"..."]})})})}),a.jsx(gs,{})]})]})]})},sJ=d.memo(oJ),aJ=ae(vo,e=>{const{isConnected:t,isProcessing:n,statusTranslationKey:r,currentIteration:o,totalIterations:s,currentStatusHasSteps:i}=e;return{isConnected:t,isProcessing:n,currentIteration:o,totalIterations:s,statusTranslationKey:r,currentStatusHasSteps:i}},Ce),Pk={ok:"green.400",working:"yellow.400",error:"red.400"},Ik={ok:"green.600",working:"yellow.500",error:"red.500"},iJ=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,statusTranslationKey:o}=F(aJ),{t:s}=we(),i=d.useRef(null),l=d.useMemo(()=>t?"working":e?"ok":"error",[t,e]),f=d.useMemo(()=>{if(n&&r)return` (${n}/${r})`},[n,r]),p=LE(i);return a.jsxs(T,{ref:i,h:"full",px:2,alignItems:"center",gap:5,children:[a.jsx(nr,{children:p&&a.jsx(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsxs(be,{sx:{fontSize:"sm",fontWeight:"600",pb:"1px",userSelect:"none",color:Ik[l],_dark:{color:Pk[l]}},children:[s(o),f]})},"statusText")}),a.jsx(An,{as:lZ,sx:{boxSize:"0.5rem",color:Ik[l],_dark:{color:Pk[l]}}})]})},lJ=d.memo(iJ),cJ=()=>{const{t:e}=we(),t=qt("bugLink").isFeatureEnabled,n=qt("discordLink").isFeatureEnabled,r=qt("githubLink").isFeatureEnabled,o="http://github.com/invoke-ai/InvokeAI",s="https://discord.gg/ZmtBAhwWhy";return a.jsxs(T,{sx:{gap:2,alignItems:"center"},children:[a.jsx(KZ,{}),a.jsx(Za,{}),a.jsx(lJ,{}),a.jsxs(Dd,{children:[a.jsx(Rd,{as:Te,variant:"link","aria-label":e("accessibility.menu"),icon:a.jsx(aZ,{}),sx:{boxSize:8}}),a.jsxs(Ga,{motionProps:mc,children:[a.jsxs(Cc,{title:e("common.communityLabel"),children:[r&&a.jsx(Ht,{as:"a",href:o,target:"_blank",icon:a.jsx(JQ,{}),children:e("common.githubLabel")}),t&&a.jsx(Ht,{as:"a",href:`${o}/issues`,target:"_blank",icon:a.jsx(iZ,{}),children:e("common.reportBugLabel")}),n&&a.jsx(Ht,{as:"a",href:s,target:"_blank",icon:a.jsx(ZQ,{}),children:e("common.discordLabel")})]}),a.jsxs(Cc,{title:e("common.settingsLabel"),children:[a.jsx(zZ,{children:a.jsx(Ht,{as:"button",icon:a.jsx(kZ,{}),children:e("common.hotkeysLabel")})}),a.jsx(sJ,{children:a.jsx(Ht,{as:"button",icon:a.jsx(jE,{}),children:e("common.settingsLabel")})})]})]})]})]})},uJ=d.memo(cJ),dJ=ae(vo,e=>{const{isUploading:t}=e;let n="";return t&&(n="Uploading..."),{tooltip:n,shouldShow:t}}),fJ=()=>{const{shouldShow:e,tooltip:t}=F(dJ);return e?a.jsx(T,{sx:{alignItems:"center",justifyContent:"center",color:"base.600"},children:a.jsx(Dt,{label:t,placement:"right",hasArrow:!0,children:a.jsx(Ki,{})})}):null},pJ=d.memo(fJ);/*! - * OverlayScrollbars - * Version: 2.2.1 - * - * Copyright (c) Rene Haas | KingSora. - * https://github.com/KingSora - * - * Released under the MIT license. - */function Ot(e,t){if(og(e))for(let n=0;nt(e[n],n,e));return e}function er(e,t){const n=ni(t);if(Ko(t)||n){let o=n?"":{};if(e){const s=window.getComputedStyle(e,null);o=n?Dk(e,s,t):t.reduce((i,l)=>(i[l]=Dk(e,s,l),i),o)}return o}e&&Ot(Hr(t),o=>EJ(e,o,t[o]))}const Oo=(e,t)=>{const{o:n,u:r,_:o}=e;let s=n,i;const l=(h,m)=>{const v=s,x=h,C=m||(r?!r(v,x):v!==x);return(C||o)&&(s=x,i=v),[s,C,i]};return[t?h=>l(t(s,i),h):l,h=>[s,!!h,i]]},Hd=()=>typeof window<"u",zE=Hd()&&Node.ELEMENT_NODE,{toString:hJ,hasOwnProperty:_v}=Object.prototype,fa=e=>e===void 0,rg=e=>e===null,mJ=e=>fa(e)||rg(e)?`${e}`:hJ.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase(),Wa=e=>typeof e=="number",ni=e=>typeof e=="string",ry=e=>typeof e=="boolean",Go=e=>typeof e=="function",Ko=e=>Array.isArray(e),ad=e=>typeof e=="object"&&!Ko(e)&&!rg(e),og=e=>{const t=!!e&&e.length,n=Wa(t)&&t>-1&&t%1==0;return Ko(e)||!Go(e)&&n?t>0&&ad(e)?t-1 in e:!0:!1},tx=e=>{if(!e||!ad(e)||mJ(e)!=="object")return!1;let t;const n="constructor",r=e[n],o=r&&r.prototype,s=_v.call(e,n),i=o&&_v.call(o,"isPrototypeOf");if(r&&!s&&!i)return!1;for(t in e);return fa(t)||_v.call(e,t)},Kh=e=>{const t=HTMLElement;return e?t?e instanceof t:e.nodeType===zE:!1},sg=e=>{const t=Element;return e?t?e instanceof t:e.nodeType===zE:!1},oy=(e,t,n)=>e.indexOf(t,n),Lt=(e,t,n)=>(!n&&!ni(t)&&og(t)?Array.prototype.push.apply(e,t):e.push(t),e),Vi=e=>{const t=Array.from,n=[];return t&&e?t(e):(e instanceof Set?e.forEach(r=>{Lt(n,r)}):Ot(e,r=>{Lt(n,r)}),n)},sy=e=>!!e&&e.length===0,js=(e,t,n)=>{Ot(e,o=>o&&o.apply(void 0,t||[])),!n&&(e.length=0)},ag=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Hr=e=>e?Object.keys(e):[],cn=(e,t,n,r,o,s,i)=>{const l=[t,n,r,o,s,i];return(typeof e!="object"||rg(e))&&!Go(e)&&(e={}),Ot(l,f=>{Ot(Hr(f),p=>{const h=f[p];if(e===h)return!0;const m=Ko(h);if(h&&(tx(h)||m)){const v=e[p];let x=v;m&&!Ko(v)?x=[]:!m&&!tx(v)&&(x={}),e[p]=cn(x,h)}else e[p]=h})}),e},ay=e=>{for(const t in e)return!1;return!0},FE=(e,t,n,r)=>{if(fa(r))return n?n[e]:t;n&&(ni(r)||Wa(r))&&(n[e]=r)},Jn=(e,t,n)=>{if(fa(n))return e?e.getAttribute(t):null;e&&e.setAttribute(t,n)},Cr=(e,t)=>{e&&e.removeAttribute(t)},Ii=(e,t,n,r)=>{if(n){const o=Jn(e,t)||"",s=new Set(o.split(" "));s[r?"add":"delete"](n);const i=Vi(s).join(" ").trim();Jn(e,t,i)}},gJ=(e,t,n)=>{const r=Jn(e,t)||"";return new Set(r.split(" ")).has(n)},zo=(e,t)=>FE("scrollLeft",0,e,t),Zs=(e,t)=>FE("scrollTop",0,e,t),nx=Hd()&&Element.prototype,BE=(e,t)=>{const n=[],r=t?sg(t)?t:null:document;return r?Lt(n,r.querySelectorAll(e)):n},vJ=(e,t)=>{const n=t?sg(t)?t:null:document;return n?n.querySelector(e):null},qh=(e,t)=>sg(e)?(nx.matches||nx.msMatchesSelector).call(e,t):!1,iy=e=>e?Vi(e.childNodes):[],ra=e=>e?e.parentElement:null,Ul=(e,t)=>{if(sg(e)){const n=nx.closest;if(n)return n.call(e,t);do{if(qh(e,t))return e;e=ra(e)}while(e)}return null},xJ=(e,t,n)=>{const r=e&&Ul(e,t),o=e&&vJ(n,r),s=Ul(o,t)===r;return r&&o?r===e||o===e||s&&Ul(Ul(e,n),t)!==r:!1},ly=(e,t,n)=>{if(n&&e){let r=t,o;og(n)?(o=document.createDocumentFragment(),Ot(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)}},lo=(e,t)=>{ly(e,null,t)},bJ=(e,t)=>{ly(ra(e),e,t)},Ek=(e,t)=>{ly(ra(e),e&&e.nextSibling,t)},xs=e=>{if(og(e))Ot(Vi(e),t=>xs(t));else if(e){const t=ra(e);t&&t.removeChild(e)}},Ei=e=>{const t=document.createElement("div");return e&&Jn(t,"class",e),t},HE=e=>{const t=Ei();return t.innerHTML=e.trim(),Ot(iy(t),n=>xs(n))},rx=e=>e.charAt(0).toUpperCase()+e.slice(1),yJ=()=>Ei().style,CJ=["-webkit-","-moz-","-o-","-ms-"],wJ=["WebKit","Moz","O","MS","webkit","moz","o","ms"],jv={},Pv={},SJ=e=>{let t=Pv[e];if(ag(Pv,e))return t;const n=rx(e),r=yJ();return Ot(CJ,o=>{const s=o.replace(/-/g,"");return!(t=[e,o+e,s+n,rx(s)+n].find(l=>r[l]!==void 0))}),Pv[e]=t||""},Wd=e=>{if(Hd()){let t=jv[e]||window[e];return ag(jv,e)||(Ot(wJ,n=>(t=t||window[n+rx(e)],!t)),jv[e]=t),t}},kJ=Wd("MutationObserver"),Mk=Wd("IntersectionObserver"),Gl=Wd("ResizeObserver"),WE=Wd("cancelAnimationFrame"),VE=Wd("requestAnimationFrame"),Xh=Hd()&&window.setTimeout,ox=Hd()&&window.clearTimeout,_J=/[^\x20\t\r\n\f]+/g,UE=(e,t,n)=>{const r=e&&e.classList;let o,s=0,i=!1;if(r&&t&&ni(t)){const l=t.match(_J)||[];for(i=l.length>0;o=l[s++];)i=!!n(r,o)&&i}return i},cy=(e,t)=>{UE(e,t,(n,r)=>n.remove(r))},Js=(e,t)=>(UE(e,t,(n,r)=>n.add(r)),cy.bind(0,e,t)),ig=(e,t,n,r)=>{if(e&&t){let o=!0;return Ot(n,s=>{const i=r?r(e[s]):e[s],l=r?r(t[s]):t[s];i!==l&&(o=!1)}),o}return!1},GE=(e,t)=>ig(e,t,["w","h"]),KE=(e,t)=>ig(e,t,["x","y"]),jJ=(e,t)=>ig(e,t,["t","r","b","l"]),Ok=(e,t,n)=>ig(e,t,["width","height"],n&&(r=>Math.round(r))),ao=()=>{},zl=e=>{let t;const n=e?Xh:VE,r=e?ox:WE;return[o=>{r(t),t=n(o,Go(e)?e():e)},()=>r(t)]},uy=(e,t)=>{let n,r,o,s=ao;const{v:i,g:l,p:f}=t||{},p=function(C){s(),ox(n),n=r=void 0,s=ao,e.apply(this,C)},h=x=>f&&r?f(r,x):x,m=()=>{s!==ao&&p(h(o)||o)},v=function(){const C=Vi(arguments),b=Go(i)?i():i;if(Wa(b)&&b>=0){const k=Go(l)?l():l,_=Wa(k)&&k>=0,j=b>0?Xh:VE,I=b>0?ox:WE,E=h(C)||C,O=p.bind(0,E);s();const D=j(O,b);s=()=>I(D),_&&!n&&(n=Xh(m,k)),r=o=E}else p(C)};return v.m=m,v},PJ={opacity:1,zindex:1},hp=(e,t)=>{const n=t?parseFloat(e):parseInt(e,10);return n===n?n:0},IJ=(e,t)=>!PJ[e.toLowerCase()]&&Wa(t)?`${t}px`:t,Dk=(e,t,n)=>t!=null?t[n]||t.getPropertyValue(n):e.style[n],EJ=(e,t,n)=>{try{const{style:r}=e;fa(r[t])?r.setProperty(t,n):r[t]=IJ(t,n)}catch{}},id=e=>er(e,"direction")==="rtl",Rk=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",s=`${r}top${o}`,i=`${r}right${o}`,l=`${r}bottom${o}`,f=`${r}left${o}`,p=er(e,[s,i,l,f]);return{t:hp(p[s],!0),r:hp(p[i],!0),b:hp(p[l],!0),l:hp(p[f],!0)}},{round:Ak}=Math,dy={w:0,h:0},ld=e=>e?{w:e.offsetWidth,h:e.offsetHeight}:dy,Lp=e=>e?{w:e.clientWidth,h:e.clientHeight}:dy,Yh=e=>e?{w:e.scrollWidth,h:e.scrollHeight}:dy,Qh=e=>{const t=parseFloat(er(e,"height"))||0,n=parseFloat(er(e,"width"))||0;return{w:n-Ak(n),h:t-Ak(t)}},fs=e=>e.getBoundingClientRect();let mp;const MJ=()=>{if(fa(mp)){mp=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get(){mp=!0}}))}catch{}}return mp},qE=e=>e.split(" "),OJ=(e,t,n,r)=>{Ot(qE(t),o=>{e.removeEventListener(o,n,r)})},Nn=(e,t,n,r)=>{var o;const s=MJ(),i=(o=s&&r&&r.S)!=null?o:s,l=r&&r.$||!1,f=r&&r.C||!1,p=[],h=s?{passive:i,capture:l}:l;return Ot(qE(t),m=>{const v=f?x=>{e.removeEventListener(m,v,l),n&&n(x)}:n;Lt(p,OJ.bind(null,e,m,v,l)),e.addEventListener(m,v,h)}),js.bind(0,p)},XE=e=>e.stopPropagation(),YE=e=>e.preventDefault(),DJ={x:0,y:0},Iv=e=>{const t=e?fs(e):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:DJ},Nk=(e,t)=>{Ot(Ko(t)?t:[t],e)},fy=e=>{const t=new Map,n=(s,i)=>{if(s){const l=t.get(s);Nk(f=>{l&&l[f?"delete":"clear"](f)},i)}else t.forEach(l=>{l.clear()}),t.clear()},r=(s,i)=>{if(ni(s)){const p=t.get(s)||new Set;return t.set(s,p),Nk(h=>{Go(h)&&p.add(h)},i),n.bind(0,s,i)}ry(i)&&i&&n();const l=Hr(s),f=[];return Ot(l,p=>{const h=s[p];h&&Lt(f,r(p,h))}),js.bind(0,f)},o=(s,i)=>{const l=t.get(s);Ot(Vi(l),f=>{i&&!sy(i)?f.apply(0,i):f()})};return r(e||{}),[r,n,o]},Tk=e=>JSON.stringify(e,(t,n)=>{if(Go(n))throw new Error;return n}),RJ={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"]}},QE=(e,t)=>{const n={},r=Hr(t).concat(Hr(e));return Ot(r,o=>{const s=e[o],i=t[o];if(ad(s)&&ad(i))cn(n[o]={},QE(s,i)),ay(n[o])&&delete n[o];else if(ag(t,o)&&i!==s){let l=!0;if(Ko(s)||Ko(i))try{Tk(s)===Tk(i)&&(l=!1)}catch{}l&&(n[o]=i)}}),n},ZE="os-environment",JE=`${ZE}-flexbox-glue`,AJ=`${JE}-max`,eM="os-scrollbar-hidden",Ev="data-overlayscrollbars-initialize",Do="data-overlayscrollbars",tM=`${Do}-overflow-x`,nM=`${Do}-overflow-y`,ac="overflowVisible",NJ="scrollbarHidden",$k="scrollbarPressed",Zh="updating",Ma="data-overlayscrollbars-viewport",Mv="arrange",rM="scrollbarHidden",ic=ac,sx="data-overlayscrollbars-padding",TJ=ic,Lk="data-overlayscrollbars-content",py="os-size-observer",$J=`${py}-appear`,LJ=`${py}-listener`,zJ="os-trinsic-observer",FJ="os-no-css-vars",BJ="os-theme-none",Or="os-scrollbar",HJ=`${Or}-rtl`,WJ=`${Or}-horizontal`,VJ=`${Or}-vertical`,oM=`${Or}-track`,hy=`${Or}-handle`,UJ=`${Or}-visible`,GJ=`${Or}-cornerless`,zk=`${Or}-transitionless`,Fk=`${Or}-interaction`,Bk=`${Or}-unusable`,Hk=`${Or}-auto-hidden`,Wk=`${Or}-wheel`,KJ=`${oM}-interactive`,qJ=`${hy}-interactive`,sM={},Ui=()=>sM,XJ=e=>{const t=[];return Ot(Ko(e)?e:[e],n=>{const r=Hr(n);Ot(r,o=>{Lt(t,sM[o]=n[o])})}),t},YJ="__osOptionsValidationPlugin",QJ="__osSizeObserverPlugin",my="__osScrollbarsHidingPlugin",ZJ="__osClickScrollPlugin";let Ov;const Vk=(e,t,n,r)=>{lo(e,t);const o=Lp(t),s=ld(t),i=Qh(n);return r&&xs(t),{x:s.h-o.h+i.h,y:s.w-o.w+i.w}},JJ=e=>{let t=!1;const n=Js(e,eM);try{t=er(e,SJ("scrollbar-width"))==="none"||window.getComputedStyle(e,"::-webkit-scrollbar").getPropertyValue("display")==="none"}catch{}return n(),t},eee=(e,t)=>{const n="hidden";er(e,{overflowX:n,overflowY:n,direction:"rtl"}),zo(e,0);const r=Iv(e),o=Iv(t);zo(e,-999);const s=Iv(t);return{i:r.x===o.x,n:o.x!==s.x}},tee=(e,t)=>{const n=Js(e,JE),r=fs(e),o=fs(t),s=Ok(o,r,!0),i=Js(e,AJ),l=fs(e),f=fs(t),p=Ok(f,l,!0);return n(),i(),s&&p},nee=()=>{const{body:e}=document,n=HE(`
`)[0],r=n.firstChild,[o,,s]=fy(),[i,l]=Oo({o:Vk(e,n,r),u:KE},Vk.bind(0,e,n,r,!0)),[f]=l(),p=JJ(n),h={x:f.x===0,y:f.y===0},m={elements:{host:null,padding:!p,viewport:_=>p&&_===_.ownerDocument.body&&_,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},v=cn({},RJ),x=cn.bind(0,{},v),C=cn.bind(0,{},m),b={k:f,A:h,I:p,L:er(n,"zIndex")==="-1",B:eee(n,r),V:tee(n,r),Y:o.bind(0,"z"),j:o.bind(0,"r"),N:C,q:_=>cn(m,_)&&C(),F:x,G:_=>cn(v,_)&&x(),X:cn({},m),U:cn({},v)},w=window.addEventListener,k=uy(_=>s(_?"z":"r"),{v:33,g:99});if(Cr(n,"style"),xs(n),w("resize",k.bind(0,!1)),!p&&(!h.x||!h.y)){let _;w("resize",()=>{const j=Ui()[my];_=_||j&&j.R(),_&&_(b,i,k.bind(0,!0))})}return b},Dr=()=>(Ov||(Ov=nee()),Ov),gy=(e,t)=>Go(t)?t.apply(0,e):t,ree=(e,t,n,r)=>{const o=fa(r)?n:r;return gy(e,o)||t.apply(0,e)},aM=(e,t,n,r)=>{const o=fa(r)?n:r,s=gy(e,o);return!!s&&(Kh(s)?s:t.apply(0,e))},oee=(e,t,n)=>{const{nativeScrollbarsOverlaid:r,body:o}=n||{},{A:s,I:i}=Dr(),{nativeScrollbarsOverlaid:l,body:f}=t,p=r??l,h=fa(o)?f:o,m=(s.x||s.y)&&p,v=e&&(rg(h)?!i:h);return!!m||!!v},vy=new WeakMap,see=(e,t)=>{vy.set(e,t)},aee=e=>{vy.delete(e)},iM=e=>vy.get(e),Uk=(e,t)=>e?t.split(".").reduce((n,r)=>n&&ag(n,r)?n[r]:void 0,e):void 0,ax=(e,t,n)=>r=>[Uk(e,r),n||Uk(t,r)!==void 0],lM=e=>{let t=e;return[()=>t,n=>{t=cn({},t,n)}]},gp="tabindex",vp=Ei.bind(0,""),Dv=e=>{lo(ra(e),iy(e)),xs(e)},iee=e=>{const t=Dr(),{N:n,I:r}=t,o=Ui()[my],s=o&&o.T,{elements:i}=n(),{host:l,padding:f,viewport:p,content:h}=i,m=Kh(e),v=m?{}:e,{elements:x}=v,{host:C,padding:b,viewport:w,content:k}=x||{},_=m?e:v.target,j=qh(_,"textarea"),I=_.ownerDocument,M=I.documentElement,E=_===I.body,O=I.defaultView,D=ree.bind(0,[_]),A=aM.bind(0,[_]),R=gy.bind(0,[_]),$=D.bind(0,vp,p),K=A.bind(0,vp,h),B=$(w),U=B===_,Y=U&&E,W=!U&&K(k),L=!U&&Kh(B)&&B===W,X=L&&!!R(h),z=X?$():B,q=X?W:K(),Q=Y?M:L?z:B,ie=j?D(vp,l,C):_,oe=Y?Q:ie,V=L?q:W,G=I.activeElement,J=!U&&O.top===O&&G===_,se={W:_,Z:oe,J:Q,K:!U&&A(vp,f,b),tt:V,nt:!U&&!r&&s&&s(t),ot:Y?M:Q,st:Y?I:Q,et:O,ct:I,rt:j,it:E,lt:m,ut:U,dt:L,ft:(Xe,tt)=>gJ(Q,U?Do:Ma,U?tt:Xe),_t:(Xe,tt,ve)=>Ii(Q,U?Do:Ma,U?tt:Xe,ve)},re=Hr(se).reduce((Xe,tt)=>{const ve=se[tt];return Lt(Xe,ve&&!ra(ve)?ve:!1)},[]),fe=Xe=>Xe?oy(re,Xe)>-1:null,{W:de,Z:me,K:ye,J:he,tt:ue,nt:De}=se,je=[()=>{Cr(me,Do),Cr(me,Ev),Cr(de,Ev),E&&(Cr(M,Do),Cr(M,Ev))}],Be=j&&fe(me);let rt=j?de:iy([ue,he,ye,me,de].find(Xe=>fe(Xe)===!1));const Ue=Y?de:ue||he;return[se,()=>{Jn(me,Do,U?"viewport":"host"),Jn(ye,sx,""),Jn(ue,Lk,""),U||Jn(he,Ma,"");const Xe=E&&!U?Js(ra(_),eM):ao;if(Be&&(Ek(de,me),Lt(je,()=>{Ek(me,de),xs(me)})),lo(Ue,rt),lo(me,ye),lo(ye||me,!U&&he),lo(he,ue),Lt(je,()=>{Xe(),Cr(ye,sx),Cr(ue,Lk),Cr(he,tM),Cr(he,nM),Cr(he,Ma),fe(ue)&&Dv(ue),fe(he)&&Dv(he),fe(ye)&&Dv(ye)}),r&&!U&&(Ii(he,Ma,rM,!0),Lt(je,Cr.bind(0,he,Ma))),De&&(bJ(he,De),Lt(je,xs.bind(0,De))),J){const tt=Jn(he,gp);Jn(he,gp,"-1"),he.focus();const ve=()=>tt?Jn(he,gp,tt):Cr(he,gp),Re=Nn(I,"pointerdown keydown",()=>{ve(),Re()});Lt(je,[ve,Re])}else G&&G.focus&&G.focus();rt=0},js.bind(0,je)]},lee=(e,t)=>{const{tt:n}=e,[r]=t;return o=>{const{V:s}=Dr(),{ht:i}=r(),{vt:l}=o,f=(n||!s)&&l;return f&&er(n,{height:i?"":"100%"}),{gt:f,wt:f}}},cee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,ut:l}=e,[f,p]=Oo({u:jJ,o:Rk()},Rk.bind(0,o,"padding",""));return(h,m,v)=>{let[x,C]=p(v);const{I:b,V:w}=Dr(),{bt:k}=n(),{gt:_,wt:j,yt:I}=h,[M,E]=m("paddingAbsolute");(_||C||!w&&j)&&([x,C]=f(v));const D=!l&&(E||I||C);if(D){const A=!M||!s&&!b,R=x.r+x.l,$=x.t+x.b,K={marginRight:A&&!k?-R:0,marginBottom:A?-$:0,marginLeft:A&&k?-R:0,top:A?-x.t:0,right:A?k?-x.r:"auto":0,left:A?k?"auto":-x.l:0,width:A?`calc(100% + ${R}px)`:""},B={paddingTop:A?x.t:0,paddingRight:A?x.r:0,paddingBottom:A?x.b:0,paddingLeft:A?x.l:0};er(s||i,K),er(i,B),r({K:x,St:!A,P:s?B:cn({},K,B)})}return{xt:D}}},{max:ix}=Math,Oa=ix.bind(0,0),cM="visible",Gk="hidden",uee=42,xp={u:GE,o:{w:0,h:0}},dee={u:KE,o:{x:Gk,y:Gk}},fee=(e,t)=>{const n=window.devicePixelRatio%1!==0?1:0,r={w:Oa(e.w-t.w),h:Oa(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},bp=e=>e.indexOf(cM)===0,pee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,nt:l,ut:f,_t:p,it:h,et:m}=e,{k:v,V:x,I:C,A:b}=Dr(),w=Ui()[my],k=!f&&!C&&(b.x||b.y),_=h&&f,[j,I]=Oo(xp,Qh.bind(0,i)),[M,E]=Oo(xp,Yh.bind(0,i)),[O,D]=Oo(xp),[A,R]=Oo(xp),[$]=Oo(dee),K=(X,z)=>{if(er(i,{height:""}),z){const{St:q,K:ne}=n(),{$t:Q,D:ie}=X,oe=Qh(o),V=Lp(o),G=er(i,"boxSizing")==="content-box",J=q||G?ne.b+ne.t:0,se=!(b.x&&G);er(i,{height:V.h+oe.h+(Q.x&&se?ie.x:0)-J})}},B=(X,z)=>{const q=!C&&!X?uee:0,ne=(fe,de,me)=>{const ye=er(i,fe),ue=(z?z[fe]:ye)==="scroll";return[ye,ue,ue&&!C?de?q:me:0,de&&!!q]},[Q,ie,oe,V]=ne("overflowX",b.x,v.x),[G,J,se,re]=ne("overflowY",b.y,v.y);return{Ct:{x:Q,y:G},$t:{x:ie,y:J},D:{x:oe,y:se},M:{x:V,y:re}}},U=(X,z,q,ne)=>{const Q=(J,se)=>{const re=bp(J),fe=se&&re&&J.replace(`${cM}-`,"")||"";return[se&&!re?J:"",bp(fe)?"hidden":fe]},[ie,oe]=Q(q.x,z.x),[V,G]=Q(q.y,z.y);return ne.overflowX=oe&&V?oe:ie,ne.overflowY=G&&ie?G:V,B(X,ne)},Y=(X,z,q,ne)=>{const{D:Q,M:ie}=X,{x:oe,y:V}=ie,{x:G,y:J}=Q,{P:se}=n(),re=z?"marginLeft":"marginRight",fe=z?"paddingLeft":"paddingRight",de=se[re],me=se.marginBottom,ye=se[fe],he=se.paddingBottom;ne.width=`calc(100% + ${J+-1*de}px)`,ne[re]=-J+de,ne.marginBottom=-G+me,q&&(ne[fe]=ye+(V?J:0),ne.paddingBottom=he+(oe?G:0))},[W,L]=w?w.H(k,x,i,l,n,B,Y):[()=>k,()=>[ao]];return(X,z,q)=>{const{gt:ne,Ot:Q,wt:ie,xt:oe,vt:V,yt:G}=X,{ht:J,bt:se}=n(),[re,fe]=z("showNativeOverlaidScrollbars"),[de,me]=z("overflow"),ye=re&&b.x&&b.y,he=!f&&!x&&(ne||ie||Q||fe||V),ue=bp(de.x),De=bp(de.y),je=ue||De;let Be=I(q),rt=E(q),Ue=D(q),Ct=R(q),Xe;if(fe&&C&&p(rM,NJ,!ye),he&&(Xe=B(ye),K(Xe,J)),ne||oe||ie||G||fe){je&&p(ic,ac,!1);const[ke,ze]=L(ye,se,Xe),[Le,Ve]=Be=j(q),[ct,vn]=rt=M(q),_t=Lp(i);let jt=ct,sr=_t;ke(),(vn||Ve||fe)&&ze&&!ye&&W(ze,ct,Le,se)&&(sr=Lp(i),jt=Yh(i));const In={w:Oa(ix(ct.w,jt.w)+Le.w),h:Oa(ix(ct.h,jt.h)+Le.h)},dn={w:Oa((_?m.innerWidth:sr.w+Oa(_t.w-ct.w))+Le.w),h:Oa((_?m.innerHeight+Le.h:sr.h+Oa(_t.h-ct.h))+Le.h)};Ct=A(dn),Ue=O(fee(In,dn),q)}const[tt,ve]=Ct,[Re,st]=Ue,[mt,ge]=rt,[Ye,ot]=Be,lt={x:Re.w>0,y:Re.h>0},Me=ue&&De&&(lt.x||lt.y)||ue&<.x&&!lt.y||De&<.y&&!lt.x;if(oe||G||ot||ge||ve||st||me||fe||he){const ke={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},ze=U(ye,lt,de,ke),Le=W(ze,mt,Ye,se);f||Y(ze,se,Le,ke),he&&K(ze,J),f?(Jn(o,tM,ke.overflowX),Jn(o,nM,ke.overflowY)):er(i,ke)}Ii(o,Do,ac,Me),Ii(s,sx,TJ,Me),f||Ii(i,Ma,ic,je);const[$e,Rt]=$(B(ye).Ct);return r({Ct:$e,zt:{x:tt.w,y:tt.h},Tt:{x:Re.w,y:Re.h},Et:lt}),{It:Rt,At:ve,Lt:st}}},Kk=(e,t,n)=>{const r={},o=t||{},s=Hr(e).concat(Hr(o));return Ot(s,i=>{const l=e[i],f=o[i];r[i]=!!(n||l||f)}),r},hee=(e,t)=>{const{W:n,J:r,_t:o,ut:s}=e,{I:i,A:l,V:f}=Dr(),p=!i&&(l.x||l.y),h=[lee(e,t),cee(e,t),pee(e,t)];return(m,v,x)=>{const C=Kk(cn({gt:!1,xt:!1,yt:!1,vt:!1,At:!1,Lt:!1,It:!1,Ot:!1,wt:!1},v),{},x),b=p||!f,w=b&&zo(r),k=b&&Zs(r);o("",Zh,!0);let _=C;return Ot(h,j=>{_=Kk(_,j(_,m,!!x)||{},x)}),zo(r,w),Zs(r,k),o("",Zh),s||(zo(n,0),Zs(n,0)),_}},mee=(e,t,n)=>{let r,o=!1;const s=()=>{o=!0},i=l=>{if(n){const f=n.reduce((p,h)=>{if(h){const[m,v]=h,x=v&&m&&(l?l(m):BE(m,e));x&&x.length&&v&&ni(v)&&Lt(p,[x,v.trim()],!0)}return p},[]);Ot(f,p=>Ot(p[0],h=>{const m=p[1],v=r.get(h)||[];if(e.contains(h)){const C=Nn(h,m,b=>{o?(C(),r.delete(h)):t(b)});r.set(h,Lt(v,C))}else js(v),r.delete(h)}))}};return n&&(r=new WeakMap,i()),[s,i]},qk=(e,t,n,r)=>{let o=!1;const{Ht:s,Pt:i,Dt:l,Mt:f,Rt:p,kt:h}=r||{},m=uy(()=>{o&&n(!0)},{v:33,g:99}),[v,x]=mee(e,m,l),C=s||[],b=i||[],w=C.concat(b),k=(j,I)=>{const M=p||ao,E=h||ao,O=new Set,D=new Set;let A=!1,R=!1;if(Ot(j,$=>{const{attributeName:K,target:B,type:U,oldValue:Y,addedNodes:W,removedNodes:L}=$,X=U==="attributes",z=U==="childList",q=e===B,ne=X&&ni(K)?Jn(B,K):0,Q=ne!==0&&Y!==ne,ie=oy(b,K)>-1&&Q;if(t&&(z||!q)){const oe=!X,V=X&&Q,G=V&&f&&qh(B,f),se=(G?!M(B,K,Y,ne):oe||V)&&!E($,!!G,e,r);Ot(W,re=>O.add(re)),Ot(L,re=>O.add(re)),R=R||se}!t&&q&&Q&&!M(B,K,Y,ne)&&(D.add(K),A=A||ie)}),O.size>0&&x($=>Vi(O).reduce((K,B)=>(Lt(K,BE($,B)),qh(B,$)?Lt(K,B):K),[])),t)return!I&&R&&n(!1),[!1];if(D.size>0||A){const $=[Vi(D),A];return!I&&n.apply(0,$),$}},_=new kJ(j=>k(j));return _.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:w,subtree:t,childList:t,characterData:t}),o=!0,[()=>{o&&(v(),_.disconnect(),o=!1)},()=>{if(o){m.m();const j=_.takeRecords();return!sy(j)&&k(j,!0)}}]},yp=3333333,Cp=e=>e&&(e.height||e.width),uM=(e,t,n)=>{const{Bt:r=!1,Vt:o=!1}=n||{},s=Ui()[QJ],{B:i}=Dr(),f=HE(`
`)[0],p=f.firstChild,h=id.bind(0,e),[m]=Oo({o:void 0,_:!0,u:(b,w)=>!(!b||!Cp(b)&&Cp(w))}),v=b=>{const w=Ko(b)&&b.length>0&&ad(b[0]),k=!w&&ry(b[0]);let _=!1,j=!1,I=!0;if(w){const[M,,E]=m(b.pop().contentRect),O=Cp(M),D=Cp(E);_=!E||!O,j=!D&&O,I=!_}else k?[,I]=b:j=b===!0;if(r&&I){const M=k?b[0]:id(f);zo(f,M?i.n?-yp:i.i?0:yp:yp),Zs(f,yp)}_||t({gt:!k,Yt:k?b:void 0,Vt:!!j})},x=[];let C=o?v:!1;return[()=>{js(x),xs(f)},()=>{if(Gl){const b=new Gl(v);b.observe(p),Lt(x,()=>{b.disconnect()})}else if(s){const[b,w]=s.O(p,v,o);C=b,Lt(x,w)}if(r){const[b]=Oo({o:void 0},h);Lt(x,Nn(f,"scroll",w=>{const k=b(),[_,j,I]=k;j&&(cy(p,"ltr rtl"),_?Js(p,"rtl"):Js(p,"ltr"),v([!!_,j,I])),XE(w)}))}C&&(Js(f,$J),Lt(x,Nn(f,"animationstart",C,{C:!!Gl}))),(Gl||s)&&lo(e,f)}]},gee=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,vee=(e,t)=>{let n;const r=Ei(zJ),o=[],[s]=Oo({o:!1}),i=(f,p)=>{if(f){const h=s(gee(f)),[,m]=h;if(m)return!p&&t(h),[h]}},l=(f,p)=>{if(f&&f.length>0)return i(f.pop(),p)};return[()=>{js(o),xs(r)},()=>{if(Mk)n=new Mk(f=>l(f),{root:e}),n.observe(r),Lt(o,()=>{n.disconnect()});else{const f=()=>{const m=ld(r);i(m)},[p,h]=uM(r,f);Lt(o,p),h(),f()}lo(e,r)},()=>{if(n)return l(n.takeRecords(),!0)}]},Xk=`[${Do}]`,xee=`[${Ma}]`,Rv=["tabindex"],Yk=["wrap","cols","rows"],Av=["id","class","style","open"],bee=(e,t,n)=>{let r,o,s;const{Z:i,J:l,tt:f,rt:p,ut:h,ft:m,_t:v}=e,{V:x}=Dr(),[C]=Oo({u:GE,o:{w:0,h:0}},()=>{const U=m(ic,ac),Y=m(Mv,""),W=Y&&zo(l),L=Y&&Zs(l);v(ic,ac),v(Mv,""),v("",Zh,!0);const X=Yh(f),z=Yh(l),q=Qh(l);return v(ic,ac,U),v(Mv,"",Y),v("",Zh),zo(l,W),Zs(l,L),{w:z.w+X.w+q.w,h:z.h+X.h+q.h}}),b=p?Yk:Av.concat(Yk),w=uy(n,{v:()=>r,g:()=>o,p(U,Y){const[W]=U,[L]=Y;return[Hr(W).concat(Hr(L)).reduce((X,z)=>(X[z]=W[z]||L[z],X),{})]}}),k=U=>{Ot(U||Rv,Y=>{if(oy(Rv,Y)>-1){const W=Jn(i,Y);ni(W)?Jn(l,Y,W):Cr(l,Y)}})},_=(U,Y)=>{const[W,L]=U,X={vt:L};return t({ht:W}),!Y&&n(X),X},j=({gt:U,Yt:Y,Vt:W})=>{const L=!U||W?n:w;let X=!1;if(Y){const[z,q]=Y;X=q,t({bt:z})}L({gt:U,yt:X})},I=(U,Y)=>{const[,W]=C(),L={wt:W};return W&&!Y&&(U?n:w)(L),L},M=(U,Y,W)=>{const L={Ot:Y};return Y?!W&&w(L):h||k(U),L},[E,O,D]=f||!x?vee(i,_):[ao,ao,ao],[A,R]=h?[ao,ao]:uM(i,j,{Vt:!0,Bt:!0}),[$,K]=qk(i,!1,M,{Pt:Av,Ht:Av.concat(Rv)}),B=h&&Gl&&new Gl(j.bind(0,{gt:!0}));return B&&B.observe(i),k(),[()=>{E(),A(),s&&s[0](),B&&B.disconnect(),$()},()=>{R(),O()},()=>{const U={},Y=K(),W=D(),L=s&&s[1]();return Y&&cn(U,M.apply(0,Lt(Y,!0))),W&&cn(U,_.apply(0,Lt(W,!0))),L&&cn(U,I.apply(0,Lt(L,!0))),U},U=>{const[Y]=U("update.ignoreMutation"),[W,L]=U("update.attributes"),[X,z]=U("update.elementEvents"),[q,ne]=U("update.debounce"),Q=z||L,ie=oe=>Go(Y)&&Y(oe);if(Q&&(s&&(s[1](),s[0]()),s=qk(f||l,!0,I,{Ht:b.concat(W||[]),Dt:X,Mt:Xk,kt:(oe,V)=>{const{target:G,attributeName:J}=oe;return(!V&&J&&!h?xJ(G,Xk,xee):!1)||!!Ul(G,`.${Or}`)||!!ie(oe)}})),ne)if(w.m(),Ko(q)){const oe=q[0],V=q[1];r=Wa(oe)&&oe,o=Wa(V)&&V}else Wa(q)?(r=q,o=!1):(r=!1,o=!1)}]},Qk={x:0,y:0},yee=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:Qk,Tt:Qk,Ct:{x:"hidden",y:"hidden"},Et:{x:!1,y:!1},ht:!1,bt:id(e.Z)}),Cee=(e,t)=>{const n=ax(t,{}),[r,o,s]=fy(),[i,l,f]=iee(e),p=lM(yee(i)),[h,m]=p,v=hee(i,p),x=(j,I,M)=>{const O=Hr(j).some(D=>j[D])||!ay(I)||M;return O&&s("u",[j,I,M]),O},[C,b,w,k]=bee(i,m,j=>x(v(n,j),{},!1)),_=h.bind(0);return _.jt=j=>r("u",j),_.Nt=()=>{const{W:j,J:I}=i,M=zo(j),E=Zs(j);b(),l(),zo(I,M),Zs(I,E)},_.qt=i,[(j,I)=>{const M=ax(t,j,I);return k(M),x(v(M,w(),I),j,!!I)},_,()=>{o(),C(),f()}]},{round:Zk}=Math,wee=e=>{const{width:t,height:n}=fs(e),{w:r,h:o}=ld(e);return{x:Zk(t)/r||1,y:Zk(n)/o||1}},See=(e,t,n)=>{const r=t.scrollbars,{button:o,isPrimary:s,pointerType:i}=e,{pointers:l}=r;return o===0&&s&&r[n?"dragScroll":"clickScroll"]&&(l||[]).includes(i)},kee=(e,t)=>Nn(e,"mousedown",Nn.bind(0,t,"click",XE,{C:!0,$:!0}),{$:!0}),Jk="pointerup pointerleave pointercancel lostpointercapture",_ee=(e,t,n,r,o,s,i)=>{const{B:l}=Dr(),{Ft:f,Gt:p,Xt:h}=r,m=`scroll${i?"Left":"Top"}`,v=`client${i?"X":"Y"}`,x=i?"width":"height",C=i?"left":"top",b=i?"w":"h",w=i?"x":"y",k=(_,j)=>I=>{const{Tt:M}=s(),E=ld(p)[b]-ld(f)[b],D=j*I/E*M[w],R=id(h)&&i?l.n||l.i?1:-1:1;o[m]=_+D*R};return Nn(p,"pointerdown",_=>{const j=Ul(_.target,`.${hy}`)===f,I=j?f:p;if(Ii(t,Do,$k,!0),See(_,e,j)){const M=!j&&_.shiftKey,E=()=>fs(f),O=()=>fs(p),D=(z,q)=>(z||E())[C]-(q||O())[C],A=k(o[m]||0,1/wee(o)[w]),R=_[v],$=E(),K=O(),B=$[x],U=D($,K)+B/2,Y=R-K[C],W=j?0:Y-U,L=z=>{js(X),I.releasePointerCapture(z.pointerId)},X=[Ii.bind(0,t,Do,$k),Nn(n,Jk,L),Nn(n,"selectstart",z=>YE(z),{S:!1}),Nn(p,Jk,L),Nn(p,"pointermove",z=>{const q=z[v]-R;(j||M)&&A(W+q)})];if(M)A(W);else if(!j){const z=Ui()[ZJ];z&&Lt(X,z.O(A,D,W,B,Y))}I.setPointerCapture(_.pointerId)}})},jee=(e,t)=>(n,r,o,s,i,l)=>{const{Xt:f}=n,[p,h]=zl(333),m=!!i.scrollBy;let v=!0;return js.bind(0,[Nn(f,"pointerenter",()=>{r(Fk,!0)}),Nn(f,"pointerleave pointercancel",()=>{r(Fk)}),Nn(f,"wheel",x=>{const{deltaX:C,deltaY:b,deltaMode:w}=x;m&&v&&w===0&&ra(f)===s&&i.scrollBy({left:C,top:b,behavior:"smooth"}),v=!1,r(Wk,!0),p(()=>{v=!0,r(Wk)}),YE(x)},{S:!1,$:!0}),kee(f,o),_ee(e,s,o,n,i,t,l),h])},{min:lx,max:e_,abs:Pee,round:Iee}=Math,dM=(e,t,n,r)=>{if(r){const l=n?"x":"y",{Tt:f,zt:p}=r,h=p[l],m=f[l];return e_(0,lx(1,h/(h+m)))}const o=n?"width":"height",s=fs(e)[o],i=fs(t)[o];return e_(0,lx(1,s/i))},Eee=(e,t,n,r,o,s)=>{const{B:i}=Dr(),l=s?"x":"y",f=s?"Left":"Top",{Tt:p}=r,h=Iee(p[l]),m=Pee(n[`scroll${f}`]),v=s&&o,x=i.i?m:h-m,b=lx(1,(v?x:m)/h),w=dM(e,t,s);return 1/w*(1-w)*b},Mee=(e,t,n)=>{const{N:r,L:o}=Dr(),{scrollbars:s}=r(),{slot:i}=s,{ct:l,W:f,Z:p,J:h,lt:m,ot:v,it:x,ut:C}=t,{scrollbars:b}=m?{}:e,{slot:w}=b||{},k=aM([f,p,h],()=>C&&x?f:p,i,w),_=(W,L,X)=>{const z=X?Js:cy;Ot(W,q=>{z(q.Xt,L)})},j=(W,L)=>{Ot(W,X=>{const[z,q]=L(X);er(z,q)})},I=(W,L,X)=>{j(W,z=>{const{Ft:q,Gt:ne}=z;return[q,{[X?"width":"height"]:`${(100*dM(q,ne,X,L)).toFixed(3)}%`}]})},M=(W,L,X)=>{const z=X?"X":"Y";j(W,q=>{const{Ft:ne,Gt:Q,Xt:ie}=q,oe=Eee(ne,Q,v,L,id(ie),X);return[ne,{transform:oe===oe?`translate${z}(${(100*oe).toFixed(3)}%)`:""}]})},E=[],O=[],D=[],A=(W,L,X)=>{const z=ry(X),q=z?X:!0,ne=z?!X:!0;q&&_(O,W,L),ne&&_(D,W,L)},R=W=>{I(O,W,!0),I(D,W)},$=W=>{M(O,W,!0),M(D,W)},K=W=>{const L=W?WJ:VJ,X=W?O:D,z=sy(X)?zk:"",q=Ei(`${Or} ${L} ${z}`),ne=Ei(oM),Q=Ei(hy),ie={Xt:q,Gt:ne,Ft:Q};return o||Js(q,FJ),lo(q,ne),lo(ne,Q),Lt(X,ie),Lt(E,[xs.bind(0,q),n(ie,A,l,p,v,W)]),ie},B=K.bind(0,!0),U=K.bind(0,!1),Y=()=>{lo(k,O[0].Xt),lo(k,D[0].Xt),Xh(()=>{A(zk)},300)};return B(),U(),[{Ut:R,Wt:$,Zt:A,Jt:{Kt:O,Qt:B,tn:j.bind(0,O)},nn:{Kt:D,Qt:U,tn:j.bind(0,D)}},Y,js.bind(0,E)]},Oee=(e,t,n,r)=>{let o,s,i,l,f,p=0;const h=lM({}),[m]=h,[v,x]=zl(),[C,b]=zl(),[w,k]=zl(100),[_,j]=zl(100),[I,M]=zl(()=>p),[E,O,D]=Mee(e,n.qt,jee(t,n)),{Z:A,J:R,ot:$,st:K,ut:B,it:U}=n.qt,{Jt:Y,nn:W,Zt:L,Ut:X,Wt:z}=E,{tn:q}=Y,{tn:ne}=W,Q=J=>{const{Xt:se}=J,re=B&&!U&&ra(se)===R&&se;return[re,{transform:re?`translate(${zo($)}px, ${Zs($)}px)`:""}]},ie=(J,se)=>{if(M(),J)L(Hk);else{const re=()=>L(Hk,!0);p>0&&!se?I(re):re()}},oe=()=>{l=s,l&&ie(!0)},V=[k,M,j,b,x,D,Nn(A,"pointerover",oe,{C:!0}),Nn(A,"pointerenter",oe),Nn(A,"pointerleave",()=>{l=!1,s&&ie(!1)}),Nn(A,"pointermove",()=>{o&&v(()=>{k(),ie(!0),_(()=>{o&&ie(!1)})})}),Nn(K,"scroll",J=>{C(()=>{z(n()),i&&ie(!0),w(()=>{i&&!l&&ie(!1)})}),r(J),B&&q(Q),B&&ne(Q)})],G=m.bind(0);return G.qt=E,G.Nt=O,[(J,se,re)=>{const{At:fe,Lt:de,It:me,yt:ye}=re,{A:he}=Dr(),ue=ax(t,J,se),De=n(),{Tt:je,Ct:Be,bt:rt}=De,[Ue,Ct]=ue("showNativeOverlaidScrollbars"),[Xe,tt]=ue("scrollbars.theme"),[ve,Re]=ue("scrollbars.visibility"),[st,mt]=ue("scrollbars.autoHide"),[ge]=ue("scrollbars.autoHideDelay"),[Ye,ot]=ue("scrollbars.dragScroll"),[lt,Me]=ue("scrollbars.clickScroll"),$e=fe||de||ye,Rt=me||Re,ke=Ue&&he.x&&he.y,ze=(Le,Ve)=>{const ct=ve==="visible"||ve==="auto"&&Le==="scroll";return L(UJ,ct,Ve),ct};if(p=ge,Ct&&L(BJ,ke),tt&&(L(f),L(Xe,!0),f=Xe),mt&&(o=st==="move",s=st==="leave",i=st!=="never",ie(!i,!0)),ot&&L(qJ,Ye),Me&&L(KJ,lt),Rt){const Le=ze(Be.x,!0),Ve=ze(Be.y,!1);L(GJ,!(Le&&Ve))}$e&&(X(De),z(De),L(Bk,!je.x,!0),L(Bk,!je.y,!1),L(HJ,rt&&!U))},G,js.bind(0,V)]},fM=(e,t,n)=>{Go(e)&&e(t||void 0,n||void 0)},za=(e,t,n)=>{const{F:r,N:o,Y:s,j:i}=Dr(),l=Ui(),f=Kh(e),p=f?e:e.target,h=iM(p);if(t&&!h){let m=!1;const v=B=>{const U=Ui()[YJ],Y=U&&U.O;return Y?Y(B,!0):B},x=cn({},r(),v(t)),[C,b,w]=fy(n),[k,_,j]=Cee(e,x),[I,M,E]=Oee(e,x,_,B=>w("scroll",[K,B])),O=(B,U)=>k(B,!!U),D=O.bind(0,{},!0),A=s(D),R=i(D),$=B=>{aee(p),A(),R(),E(),j(),m=!0,w("destroyed",[K,!!B]),b()},K={options(B,U){if(B){const Y=U?r():{},W=QE(x,cn(Y,v(B)));ay(W)||(cn(x,W),O(W))}return cn({},x)},on:C,off:(B,U)=>{B&&U&&b(B,U)},state(){const{zt:B,Tt:U,Ct:Y,Et:W,K:L,St:X,bt:z}=_();return cn({},{overflowEdge:B,overflowAmount:U,overflowStyle:Y,hasOverflow:W,padding:L,paddingAbsolute:X,directionRTL:z,destroyed:m})},elements(){const{W:B,Z:U,K:Y,J:W,tt:L,ot:X,st:z}=_.qt,{Jt:q,nn:ne}=M.qt,Q=oe=>{const{Ft:V,Gt:G,Xt:J}=oe;return{scrollbar:J,track:G,handle:V}},ie=oe=>{const{Kt:V,Qt:G}=oe,J=Q(V[0]);return cn({},J,{clone:()=>{const se=Q(G());return I({},!0,{}),se}})};return cn({},{target:B,host:U,padding:Y||W,viewport:W,content:L||W,scrollOffsetElement:X,scrollEventElement:z,scrollbarHorizontal:ie(q),scrollbarVertical:ie(ne)})},update:B=>O({},B),destroy:$.bind(0)};return _.jt((B,U,Y)=>{I(U,Y,B)}),see(p,K),Ot(Hr(l),B=>fM(l[B],0,K)),oee(_.qt.it,o().cancel,!f&&e.cancel)?($(!0),K):(_.Nt(),M.Nt(),w("initialized",[K]),_.jt((B,U,Y)=>{const{gt:W,yt:L,vt:X,At:z,Lt:q,It:ne,wt:Q,Ot:ie}=B;w("updated",[K,{updateHints:{sizeChanged:W,directionChanged:L,heightIntrinsicChanged:X,overflowEdgeChanged:z,overflowAmountChanged:q,overflowStyleChanged:ne,contentMutation:Q,hostMutation:ie},changedOptions:U,force:Y}])}),K.update(!0),K)}return h};za.plugin=e=>{Ot(XJ(e),t=>fM(t,za))};za.valid=e=>{const t=e&&e.elements,n=Go(t)&&t();return tx(n)&&!!iM(n.target)};za.env=()=>{const{k:e,A:t,I:n,B:r,V:o,L:s,X:i,U:l,N:f,q:p,F:h,G:m}=Dr();return cn({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,rtlScrollBehavior:r,flexboxGlue:o,cssCustomProperties:s,staticDefaultInitialization:i,staticDefaultOptions:l,getDefaultInitialization:f,setDefaultInitialization:p,getDefaultOptions:h,setDefaultOptions:m})};const Dee=()=>{if(typeof window>"u"){const p=()=>{};return[p,p]}let e,t;const n=window,r=typeof n.requestIdleCallback=="function",o=n.requestAnimationFrame,s=n.cancelAnimationFrame,i=r?n.requestIdleCallback:o,l=r?n.cancelIdleCallback:s,f=()=>{l(e),s(t)};return[(p,h)=>{f(),e=i(r?()=>{f(),t=o(p)}:p,typeof h=="object"?h:{timeout:2233})},f]},pM=e=>{const{options:t,events:n,defer:r}=e||{},[o,s]=d.useMemo(Dee,[]),i=d.useRef(null),l=d.useRef(r),f=d.useRef(t),p=d.useRef(n);return d.useEffect(()=>{l.current=r},[r]),d.useEffect(()=>{const{current:h}=i;f.current=t,za.valid(h)&&h.options(t||{},!0)},[t]),d.useEffect(()=>{const{current:h}=i;p.current=n,za.valid(h)&&h.on(n||{},!0)},[n]),d.useEffect(()=>()=>{var h;s(),(h=i.current)==null||h.destroy()},[]),d.useMemo(()=>[h=>{const m=i.current;if(za.valid(m))return;const v=l.current,x=f.current||{},C=p.current||{},b=()=>i.current=za(h,x,C);v?o(b,v):b()},()=>i.current],[])},Ree=(e,t)=>{const{element:n="div",options:r,events:o,defer:s,children:i,...l}=e,f=n,p=d.useRef(null),h=d.useRef(null),[m,v]=pM({options:r,events:o,defer:s});return d.useEffect(()=>{const{current:x}=p,{current:C}=h;return x&&C&&m({target:x,elements:{viewport:C,content:C}}),()=>{var b;return(b=v())==null?void 0:b.destroy()}},[m,n]),d.useImperativeHandle(t,()=>({osInstance:v,getElement:()=>p.current}),[]),H.createElement(f,{"data-overlayscrollbars-initialize":"",ref:p,...l},H.createElement("div",{ref:h},i))},lg=d.forwardRef(Ree),Aee=e=>{const{boardToDelete:t,setBoardToDelete:n}=e,{t:r}=we(),o=F(_=>_.config.canRestoreDeletedImagesFromBin),{currentData:s,isFetching:i}=cD((t==null?void 0:t.board_id)??zr.skipToken),l=d.useMemo(()=>ae([xe],_=>{const j=(s??[]).map(M=>Mj(_,M));return{imageUsageSummary:{isInitialImage:Ro(j,M=>M.isInitialImage),isCanvasImage:Ro(j,M=>M.isCanvasImage),isNodesImage:Ro(j,M=>M.isNodesImage),isControlNetImage:Ro(j,M=>M.isControlNetImage)}}}),[s]),[f,{isLoading:p}]=uD(),[h,{isLoading:m}]=dD(),{imageUsageSummary:v}=F(l),x=d.useCallback(()=>{t&&(f(t.board_id),n(void 0))},[t,f,n]),C=d.useCallback(()=>{t&&(h(t.board_id),n(void 0))},[t,h,n]),b=d.useCallback(()=>{n(void 0)},[n]),w=d.useRef(null),k=d.useMemo(()=>m||p||i,[m,p,i]);return t?a.jsx(Ad,{isOpen:!!t,onClose:b,leastDestructiveRef:w,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Nd,{children:[a.jsxs(Ho,{fontSize:"lg",fontWeight:"bold",children:["Delete ",t.board_name]}),a.jsx(Vo,{children:a.jsxs(T,{direction:"column",gap:3,children:[i?a.jsx(zm,{children:a.jsx(T,{sx:{w:"full",h:32}})}):a.jsx(bE,{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(be,{children:"Deleted boards cannot be restored."}),a.jsx(be,{children:r(o?"gallery.deleteImageBin":"gallery.deleteImagePermanent")})]})}),a.jsx(gs,{children:a.jsxs(T,{sx:{justifyContent:"space-between",width:"full",gap:2},children:[a.jsx(it,{ref:w,onClick:b,children:"Cancel"}),a.jsx(it,{colorScheme:"warning",isLoading:k,onClick:x,children:"Delete Board Only"}),a.jsx(it,{colorScheme:"error",isLoading:k,onClick:C,children:"Delete Board and Images"})]})})]})})}):null},Nee=d.memo(Aee),Tee="My Board",$ee=()=>{const[e,{isLoading:t}]=fD(),n=d.useCallback(()=>{e(Tee)},[e]);return a.jsx(Te,{icon:a.jsx(tl,{}),isLoading:t,tooltip:"Add Board","aria-label":"Add Board",onClick:n,size:"sm"})},Lee=d.memo($ee);var hM=kd({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"})]})}),cg=kd({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"}),zee=kd({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"}),Fee=kd({displayName:"DeleteIcon",path:a.jsx("g",{fill:"currentColor",children:a.jsx("path",{d:"M19.452 7.5H4.547a.5.5 0 00-.5.545l1.287 14.136A2 2 0 007.326 24h9.347a2 2 0 001.992-1.819L19.95 8.045a.5.5 0 00-.129-.382.5.5 0 00-.369-.163zm-9.2 13a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zm5 0a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zM22 4h-4.75a.25.25 0 01-.25-.25V2.5A2.5 2.5 0 0014.5 0h-5A2.5 2.5 0 007 2.5v1.25a.25.25 0 01-.25.25H2a1 1 0 000 2h20a1 1 0 000-2zM9 3.75V2.5a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v1.25a.25.25 0 01-.25.25h-5.5A.25.25 0 019 3.75z"})})}),Bee=kd({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});const Hee=ae([xe],({gallery:e})=>{const{boardSearchText:t}=e;return{boardSearchText:t}},Ce),Wee=()=>{const e=te(),{boardSearchText:t}=F(Hee),n=d.useRef(null),r=d.useCallback(l=>{e(LC(l))},[e]),o=d.useCallback(()=>{e(LC(""))},[e]),s=d.useCallback(l=>{l.key==="Escape"&&o()},[o]),i=d.useCallback(l=>{r(l.target.value)},[r]);return d.useEffect(()=>{n.current&&n.current.focus()},[]),a.jsxs(I5,{children:[a.jsx(Pm,{ref:n,placeholder:"Search Boards...",value:t,onKeyDown:s,onChange:i}),t&&t.length&&a.jsx(mb,{children:a.jsx(ps,{onClick:o,size:"xs",variant:"ghost","aria-label":"Clear Search",opacity:.5,icon:a.jsx(zee,{boxSize:2})})})]})},Vee=d.memo(Wee);function mM(e){return pD(e)}function Uee(e){return hD(e)}const gM=(e,t)=>{if(!e||!(t!=null&&t.data.current))return!1;const{actionType:n}=e,{payloadType:r}=t.data.current;if(e.id===t.data.current.id)return!1;switch(n){case"ADD_FIELD_TO_LINEAR":return r==="NODE_FIELD";case"SET_CURRENT_IMAGE":return r==="IMAGE_DTO";case"SET_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_CONTROLNET_IMAGE":return r==="IMAGE_DTO";case"SET_CANVAS_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_NODES_IMAGE":return r==="IMAGE_DTO";case"SET_MULTI_NODES_IMAGE":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BATCH":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload,i=s.board_id??"none",l=e.context.boardId;return i!==l}return r==="IMAGE_DTOS"}case"REMOVE_FROM_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload;return s.board_id!=="none"}return r==="IMAGE_DTOS"}default:return!1}},Gee=e=>{const{isOver:t,label:n="Drop"}=e,r=d.useRef(Fa()),{colorMode:o}=ia();return a.jsx(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsxs(T,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full"},children:[a.jsx(T,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:Ae("base.700","base.900")(o),opacity:.7,borderRadius:"base",alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx(T,{sx:{position:"absolute",top:.5,insetInlineStart:.5,insetInlineEnd:.5,bottom:.5,opacity:1,borderWidth:2,borderColor:t?Ae("base.50","base.50")(o):Ae("base.200","base.300")(o),borderRadius:"lg",borderStyle:"dashed",transitionProperty:"common",transitionDuration:"0.1s",alignItems:"center",justifyContent:"center"},children:a.jsx(Ie,{sx:{fontSize:"2xl",fontWeight:600,transform:t?"scale(1.1)":"scale(1)",color:t?Ae("base.50","base.50")(o):Ae("base.200","base.300")(o),transitionProperty:"common",transitionDuration:"0.1s"},children:n})})]})},r.current)},vM=d.memo(Gee),Kee=e=>{const{dropLabel:t,data:n,disabled:r}=e,o=d.useRef(Fa()),{isOver:s,setNodeRef:i,active:l}=mM({id:o.current,disabled:r,data:n});return a.jsx(Ie,{ref:i,position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",pointerEvents:"none",children:a.jsx(nr,{children:gM(n,l)&&a.jsx(vM,{isOver:s,label:t})})})},xy=d.memo(Kee),qee=({isSelected:e,isHovered:t})=>a.jsx(Ie,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e?1:.7,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:e?t?"hoverSelected.light":"selected.light":t?"hoverUnselected.light":void 0,_dark:{shadow:e?t?"hoverSelected.dark":"selected.dark":t?"hoverUnselected.dark":void 0}}}),by=d.memo(qee),Xee=()=>a.jsx(T,{sx:{position:"absolute",insetInlineEnd:0,top:0,p:1},children:a.jsx(ua,{variant:"solid",sx:{bg:"accent.400",_dark:{bg:"accent.500"}},children:"auto"})}),xM=d.memo(Xee);function yy(e){const[t,n]=d.useState(!1),[r,o]=d.useState(!1),[s,i]=d.useState(!1),[l,f]=d.useState([0,0]),p=d.useRef(null),h=F(v=>v.ui.globalContextMenuCloseTrigger);d.useEffect(()=>{if(t)setTimeout(()=>{o(!0),setTimeout(()=>{i(!0)})});else{i(!1);const v=setTimeout(()=>{o(t)},1e3);return()=>clearTimeout(v)}},[t]),d.useEffect(()=>{n(!1),i(!1),o(!1)},[h]),LL("contextmenu",v=>{var x;(x=p.current)!=null&&x.contains(v.target)||v.target===p.current?(v.preventDefault(),n(!0),f([v.pageX,v.pageY])):n(!1)});const m=d.useCallback(()=>{var v,x;(x=(v=e.menuProps)==null?void 0:v.onClose)==null||x.call(v),n(!1)},[e.menuProps]);return a.jsxs(a.Fragment,{children:[e.children(p),r&&a.jsx(wd,{...e.portalProps,children:a.jsxs(Dd,{isOpen:s,gutter:0,...e.menuProps,onClose:m,children:[a.jsx(Rd,{"aria-hidden":!0,w:1,h:1,style:{position:"absolute",left:l[0],top:l[1],cursor:"default"},...e.menuButtonProps}),e.renderMenu()]})})]})}const ug=e=>{const{boardName:t}=um(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},Yee=({board:e,setBoardToDelete:t})=>{const n=d.useCallback(()=>{t&&t(e)},[e,t]);return a.jsxs(a.Fragment,{children:[e.image_count>0&&a.jsx(a.Fragment,{}),a.jsx(Ht,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Wr,{}),onClick:n,children:"Delete Board"})]})},Qee=d.memo(Yee),Zee=()=>a.jsx(a.Fragment,{}),Jee=d.memo(Zee),ete=({board:e,board_id:t,setBoardToDelete:n,children:r})=>{const o=te(),s=d.useMemo(()=>ae(xe,({gallery:v,system:x})=>{const C=v.autoAddBoardId===t,b=x.isProcessing,w=v.autoAssignBoardOnClick;return{isAutoAdd:C,isProcessing:b,autoAssignBoardOnClick:w}},Ce),[t]),{isAutoAdd:i,isProcessing:l,autoAssignBoardOnClick:f}=F(s),p=ug(t),h=d.useCallback(()=>{o(fm(t))},[t,o]),m=d.useCallback(v=>{v.preventDefault()},[]);return a.jsx(yy,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>a.jsx(Ga,{sx:{visibility:"visible !important"},motionProps:mc,onContextMenu:m,children:a.jsxs(Cc,{title:p,children:[a.jsx(Ht,{icon:a.jsx(tl,{}),isDisabled:i||l||f,onClick:h,children:"Auto-add to this Board"}),!e&&a.jsx(Jee,{}),e&&a.jsx(Qee,{board:e,setBoardToDelete:n})]})}),children:r})},bM=d.memo(ete),tte=({board:e,isSelected:t,setBoardToDelete:n})=>{const r=te(),o=d.useMemo(()=>ae(xe,({gallery:R,system:$})=>{const K=e.board_id===R.autoAddBoardId,B=R.autoAssignBoardOnClick,U=$.isProcessing;return{isSelectedForAutoAdd:K,autoAssignBoardOnClick:B,isProcessing:U}},Ce),[e.board_id]),{isSelectedForAutoAdd:s,autoAssignBoardOnClick:i,isProcessing:l}=F(o),[f,p]=d.useState(!1),h=d.useCallback(()=>{p(!0)},[]),m=d.useCallback(()=>{p(!1)},[]),{data:v}=Tj(e.board_id),{data:x}=$j(e.board_id),C=d.useMemo(()=>{if(!(!v||!x))return`${v} image${v>1?"s":""}, ${x} asset${x>1?"s":""}`},[x,v]),{currentData:b}=po(e.cover_image_name??zr.skipToken),{board_name:w,board_id:k}=e,[_,j]=d.useState(w),I=d.useCallback(()=>{r(Lj(k)),i&&!l&&r(fm(k))},[k,i,l,r]),[M,{isLoading:E}]=mD(),O=d.useMemo(()=>({id:k,actionType:"ADD_TO_BOARD",context:{boardId:k}}),[k]),D=d.useCallback(async R=>{if(!R.trim()){j(w);return}if(R!==w)try{const{board_name:$}=await M({board_id:k,changes:{board_name:R}}).unwrap();j($)}catch{j(w)}},[k,w,M]),A=d.useCallback(R=>{j(R)},[]);return a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx(T,{onMouseOver:h,onMouseOut:m,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",w:"full",h:"full"},children:a.jsx(bM,{board:e,board_id:k,setBoardToDelete:n,children:R=>a.jsx(Dt,{label:C,openDelay:1e3,hasArrow:!0,children:a.jsxs(T,{ref:R,onClick:I,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[b!=null&&b.thumbnail_url?a.jsx(qi,{src:b==null?void 0:b.thumbnail_url,draggable:!1,sx:{objectFit:"cover",w:"full",h:"full",maxH:"full",borderRadius:"base",borderBottomRadius:"lg"}}):a.jsx(T,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(An,{boxSize:12,as:$Z,sx:{mt:-6,opacity:.7,color:"base.500",_dark:{color:"base.500"}}})}),s&&a.jsx(xM,{}),a.jsx(by,{isSelected:t,isHovered:f}),a.jsx(T,{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(km,{value:_,isDisabled:E,submitOnBlur:!0,onChange:A,onSubmit:D,sx:{w:"full"},children:[a.jsx(Sm,{sx:{p:0,fontWeight:t?700:500,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis"},noOfLines:1}),a.jsx(wm,{sx:{p:0,_focusVisible:{p:0,textAlign:"center",boxShadow:"none"}}})]})}),a.jsx(xy,{data:O,dropLabel:a.jsx(be,{fontSize:"md",children:"Move"})})]})})})})})},nte=d.memo(tte),rte=ae(xe,({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},Ce),yM=d.memo(({isSelected:e})=>{const t=te(),{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}=F(rte),s=ug("none"),i=d.useCallback(()=>{t(Lj("none")),r&&!o&&t(fm("none"))},[t,r,o]),[l,f]=d.useState(!1),p=d.useCallback(()=>{f(!0)},[]),h=d.useCallback(()=>{f(!1)},[]),m=d.useMemo(()=>({id:"no_board",actionType:"REMOVE_FROM_BOARD"}),[]);return a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx(T,{onMouseOver:p,onMouseOut:h,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",borderRadius:"base",w:"full",h:"full"},children:a.jsx(bM,{board_id:"none",children:v=>a.jsxs(T,{ref:v,onClick:i,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(T,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(qi,{src:Dj,alt:"invoke-ai-logo",sx:{opacity:.4,filter:"grayscale(1)",mt:-6,w:16,h:16,minW:16,minH:16,userSelect:"none"}})}),n==="none"&&a.jsx(xM,{}),a.jsx(T,{sx:{position:"absolute",bottom:0,left:0,p:1,justifyContent:"center",alignItems:"center",w:"full",maxW:"full",borderBottomRadius:"base",bg:e?"accent.400":"base.500",color:e?"base.50":"base.100",_dark:{bg:e?"accent.500":"base.600",color:e?"base.50":"base.100"},lineHeight:"short",fontSize:"xs",fontWeight:e?700:500},children:s}),a.jsx(by,{isSelected:e,isHovered:l}),a.jsx(xy,{data:m,dropLabel:a.jsx(be,{fontSize:"md",children:"Move"})})]})})})})});yM.displayName="HoverableBoard";const ote=d.memo(yM),ste=ae([xe],({gallery:e})=>{const{selectedBoardId:t,boardSearchText:n}=e;return{selectedBoardId:t,boardSearchText:n}},Ce),ate=e=>{const{isOpen:t}=e,{selectedBoardId:n,boardSearchText:r}=F(ste),{data:o}=um(),s=r?o==null?void 0:o.filter(f=>f.board_name.toLowerCase().includes(r.toLowerCase())):o,[i,l]=d.useState();return a.jsxs(a.Fragment,{children:[a.jsx(ym,{in:t,animateOpacity:!0,children:a.jsxs(T,{layerStyle:"first",sx:{flexDir:"column",gap:2,p:2,mt:2,borderRadius:"base"},children:[a.jsxs(T,{sx:{gap:2,alignItems:"center"},children:[a.jsx(Vee,{}),a.jsx(Lee,{})]}),a.jsx(lg,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsxs(Ua,{className:"list-container",sx:{gridTemplateColumns:"repeat(auto-fill, minmax(108px, 1fr));",maxH:346},children:[a.jsx(ed,{sx:{p:1.5},children:a.jsx(ote,{isSelected:n==="none"})}),s&&s.map(f=>a.jsx(ed,{sx:{p:1.5},children:a.jsx(nte,{board:f,isSelected:n===f.board_id,setBoardToDelete:l})},f.board_id))]})})]})}),a.jsx(Nee,{boardToDelete:i,setBoardToDelete:l})]})},ite=d.memo(ate),lte=ae([xe],e=>{const{selectedBoardId:t}=e.gallery;return{selectedBoardId:t}},Ce),cte=e=>{const{isOpen:t,onToggle:n}=e,{selectedBoardId:r}=F(lte),o=ug(r),s=d.useMemo(()=>o.length>20?`${o.substring(0,20)}...`:o,[o]);return a.jsxs(T,{as:gc,onClick:n,size:"sm",sx:{position:"relative",gap:2,w:"full",justifyContent:"space-between",alignItems:"center",px:2},children:[a.jsx(be,{noOfLines:1,sx:{fontWeight:600,w:"100%",textAlign:"center",color:"base.800",_dark:{color:"base.200"}},children:s}),a.jsx(cg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]})},ute=d.memo(cte),dte=e=>{const{triggerComponent:t,children:n,hasArrow:r=!0,isLazy:o=!0,...s}=e;return a.jsxs($m,{isLazy:o,...s,children:[a.jsx(Db,{children:t}),a.jsxs(Lm,{shadow:"dark-lg",children:[r&&a.jsx(cP,{}),n]})]})},Vd=d.memo(dte);function fte(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12 16c1.671 0 3-1.331 3-3s-1.329-3-3-3-3 1.331-3 3 1.329 3 3 3z"}},{tag:"path",attr:{d:"M20.817 11.186a8.94 8.94 0 0 0-1.355-3.219 9.053 9.053 0 0 0-2.43-2.43 8.95 8.95 0 0 0-3.219-1.355 9.028 9.028 0 0 0-1.838-.18V2L8 5l3.975 3V6.002c.484-.002.968.044 1.435.14a6.961 6.961 0 0 1 2.502 1.053 7.005 7.005 0 0 1 1.892 1.892A6.967 6.967 0 0 1 19 13a7.032 7.032 0 0 1-.55 2.725 7.11 7.11 0 0 1-.644 1.188 7.2 7.2 0 0 1-.858 1.039 7.028 7.028 0 0 1-3.536 1.907 7.13 7.13 0 0 1-2.822 0 6.961 6.961 0 0 1-2.503-1.054 7.002 7.002 0 0 1-1.89-1.89A6.996 6.996 0 0 1 5 13H3a9.02 9.02 0 0 0 1.539 5.034 9.096 9.096 0 0 0 2.428 2.428A8.95 8.95 0 0 0 12 22a9.09 9.09 0 0 0 1.814-.183 9.014 9.014 0 0 0 3.218-1.355 8.886 8.886 0 0 0 1.331-1.099 9.228 9.228 0 0 0 1.1-1.332A8.952 8.952 0 0 0 21 13a9.09 9.09 0 0 0-.183-1.814z"}}]})(e)}const pte=e=>{const[t,n]=d.useState(!1),{label:r,value:o,min:s=1,max:i=100,step:l=1,onChange:f,tooltipSuffix:p="",withSliderMarks:h=!1,withInput:m=!1,isInteger:v=!1,inputWidth:x=16,withReset:C=!1,hideTooltip:b=!1,isCompact:w=!1,isDisabled:k=!1,sliderMarks:_,handleReset:j,sliderFormControlProps:I,sliderFormLabelProps:M,sliderMarkProps:E,sliderTrackProps:O,sliderThumbProps:D,sliderNumberInputProps:A,sliderNumberInputFieldProps:R,sliderNumberInputStepperProps:$,sliderTooltipProps:K,sliderIAIIconButtonProps:B,...U}=e,Y=te(),{t:W}=we(),[L,X]=d.useState(String(o));d.useEffect(()=>{X(o)},[o]);const z=d.useMemo(()=>A!=null&&A.min?A.min:s,[s,A==null?void 0:A.min]),q=d.useMemo(()=>A!=null&&A.max?A.max:i,[i,A==null?void 0:A.max]),ne=d.useCallback(se=>{f(se)},[f]),Q=d.useCallback(se=>{se.target.value===""&&(se.target.value=String(z));const re=Ri(v?Math.floor(Number(se.target.value)):Number(L),z,q),fe=Eu(re,l);f(fe),X(fe)},[v,L,z,q,f,l]),ie=d.useCallback(se=>{X(se)},[]),oe=d.useCallback(()=>{j&&j()},[j]),V=d.useCallback(se=>{se.target instanceof HTMLDivElement&&se.target.focus()},[]),G=d.useCallback(se=>{se.shiftKey&&Y(Ir(!0))},[Y]),J=d.useCallback(se=>{se.shiftKey||Y(Ir(!1))},[Y]);return a.jsxs(un,{onClick:V,sx:w?{display:"flex",flexDirection:"row",alignItems:"center",columnGap:4,margin:0,padding:0}:{},isDisabled:k,...I,children:[r&&a.jsx(Gn,{sx:m?{mb:-1.5}:{},...M,children:r}),a.jsxs(xb,{w:"100%",gap:2,alignItems:"center",children:[a.jsxs(Ab,{"aria-label":r,value:o,min:s,max:i,step:l,onChange:ne,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),focusThumbOnChange:!1,isDisabled:k,...U,children:[h&&!_&&a.jsxs(a.Fragment,{children:[a.jsx($l,{value:s,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...E,children:s}),a.jsx($l,{value:i,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...E,children:i})]}),h&&_&&a.jsx(a.Fragment,{children:_.map((se,re)=>re===0?a.jsx($l,{value:se,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...E,children:se},se):re===_.length-1?a.jsx($l,{value:se,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...E,children:se},se):a.jsx($l,{value:se,sx:{transform:"translateX(-50%)"},...E,children:se},se))}),a.jsx(Tb,{...O,children:a.jsx($b,{})}),a.jsx(Dt,{hasArrow:!0,placement:"top",isOpen:t,label:`${o}${p}`,hidden:b,...K,children:a.jsx(Nb,{...D,zIndex:0})})]}),m&&a.jsxs(Dm,{min:z,max:q,step:l,value:L,onChange:ie,onBlur:Q,focusInputOnChange:!1,...A,children:[a.jsx(Am,{onKeyDown:G,onKeyUp:J,minWidth:x,...R}),a.jsxs(Rm,{...$,children:[a.jsx(Tm,{onClick:()=>f(Number(L))}),a.jsx(Nm,{onClick:()=>f(Number(L))})]})]}),C&&a.jsx(Te,{size:"sm","aria-label":W("accessibility.reset"),tooltip:W("accessibility.reset"),icon:a.jsx(fte,{}),isDisabled:k,onClick:oe,...B})]})]})},Ze=d.memo(pte),CM=d.forwardRef(({label:e,tooltip:t,description:n,disabled:r,...o},s)=>a.jsx(Dt,{label:t,placement:"top",hasArrow:!0,openDelay:500,children:a.jsx(Ie,{ref:s,...o,children:a.jsxs(Ie,{children:[a.jsx(wc,{children:e}),n&&a.jsx(wc,{size:"xs",color:"base.600",children:n})]})})}));CM.displayName="IAIMantineSelectItemWithTooltip";const ri=d.memo(CM),hte=ae([xe],({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},Ce),mte=()=>{const e=te(),{autoAddBoardId:t,autoAssignBoardOnClick:n,isProcessing:r}=F(hte),o=d.useRef(null),{boards:s,hasBoards:i}=um(void 0,{selectFromResult:({data:f})=>{const p=[{label:"None",value:"none"}];return f==null||f.forEach(({board_id:h,board_name:m})=>{p.push({label:m,value:h})}),{boards:p,hasBoards:p.length>1}}}),l=d.useCallback(f=>{f&&e(fm(f))},[e]);return a.jsx(Gt,{label:"Auto-Add Board",inputRef:o,autoFocus:!0,placeholder:"Select a Board",value:t,data:s,nothingFound:"No matching Boards",itemComponent:ri,disabled:!i||n||r,filter:(f,p)=>{var h;return((h=p.label)==null?void 0:h.toLowerCase().includes(f.toLowerCase().trim()))||p.value.toLowerCase().includes(f.toLowerCase().trim())},onChange:l})},gte=d.memo(mte),vte=e=>{const{label:t,...n}=e,{colorMode:r}=ia();return a.jsx(Cm,{colorScheme:"accent",...n,children:a.jsx(be,{sx:{fontSize:"sm",color:Ae("base.800","base.200")(r)},children:t})})},ur=d.memo(vte),xte=ae([xe],e=>{const{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}=e.gallery;return{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}},Ce),bte=()=>{const e=te(),{t}=we(),{galleryImageMinimumWidth:n,shouldAutoSwitch:r,autoAssignBoardOnClick:o}=F(xte),s=d.useCallback(f=>{e(zC(f))},[e]),i=d.useCallback(()=>{e(zC(64))},[e]),l=d.useCallback(f=>{e(gD(f.target.checked))},[e]);return a.jsx(Vd,{triggerComponent:a.jsx(Te,{tooltip:t("gallery.gallerySettings"),"aria-label":t("gallery.gallerySettings"),size:"sm",icon:a.jsx($E,{})}),children:a.jsxs(T,{direction:"column",gap:2,children:[a.jsx(Ze,{value:n,onChange:s,min:45,max:256,hideTooltip:!0,label:t("gallery.galleryImageSize"),withReset:!0,handleReset:i}),a.jsx(Ut,{label:t("gallery.autoSwitchNewImages"),isChecked:r,onChange:l}),a.jsx(ur,{label:t("gallery.autoAssignBoardOnClick"),isChecked:o,onChange:f=>e(vD(f.target.checked))}),a.jsx(gte,{})]})})},yte=d.memo(bte),Cte=e=>e.image?a.jsx(zm,{sx:{w:`${e.image.width}px`,h:"auto",objectFit:"contain",aspectRatio:`${e.image.width}/${e.image.height}`}}):a.jsx(T,{sx:{opacity:.7,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(Ki,{size:"xl"})}),tr=e=>{const{icon:t=Wi,boxSize:n=16}=e;return a.jsxs(T,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",flexDir:"column",gap:2,userSelect:"none",opacity:.7,color:"base.700",_dark:{color:"base.500"},...e.sx},children:[t&&a.jsx(An,{as:t,boxSize:n,opacity:.7}),e.label&&a.jsx(be,{textAlign:"center",children:e.label})]})},dg=0,oi=1,Wc=2,wM=4;function wte(e,t){return n=>e(t(n))}function Ste(e,t){return t(e)}function SM(e,t){return n=>e(t,n)}function t_(e,t){return()=>e(t)}function Cy(e,t){return t(e),e}function nl(...e){return e}function kte(e){e()}function n_(e){return()=>e}function _te(...e){return()=>{e.map(kte)}}function fg(){}function pr(e,t){return e(oi,t)}function Rn(e,t){e(dg,t)}function wy(e){e(Wc)}function pg(e){return e(wM)}function Vt(e,t){return pr(e,SM(t,dg))}function r_(e,t){const n=e(oi,r=>{n(),t(r)});return n}function yn(){const e=[];return(t,n)=>{switch(t){case Wc:e.splice(0,e.length);return;case oi:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)};case dg:e.slice().forEach(r=>{r(n)});return;default:throw new Error(`unrecognized action ${t}`)}}}function dt(e){let t=e;const n=yn();return(r,o)=>{switch(r){case oi:o(t);break;case dg:t=o;break;case wM:return t}return n(r,o)}}function jte(e){let t,n;const r=()=>t&&t();return function(o,s){switch(o){case oi:return s?n===s?void 0:(r(),n=s,t=pr(e,s),t):(r(),fg);case Wc:r(),n=null;return;default:throw new Error(`unrecognized action ${o}`)}}}function Wu(e){return Cy(yn(),t=>Vt(e,t))}function lc(e,t){return Cy(dt(t),n=>Vt(e,n))}function Pte(...e){return t=>e.reduceRight(Ste,t)}function ft(e,...t){const n=Pte(...t);return(r,o)=>{switch(r){case oi:return pr(e,n(o));case Wc:wy(e);return}}}function kM(e,t){return e===t}function kr(e=kM){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function Un(e){return t=>n=>{e(n)&&t(n)}}function en(e){return t=>wte(t,e)}function Da(e){return t=>()=>t(e)}function wp(e,t){return n=>r=>n(t=e(t,r))}function cx(e){return t=>n=>{e>0?e--:t(n)}}function Du(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function o_(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function cs(...e){const t=new Array(e.length);let n=0,r=null;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const l=Math.pow(2,i);pr(s,f=>{const p=n;n=n|l,t[i]=f,p!==o&&n===o&&r&&(r(),r=null)})}),s=>i=>{const l=()=>s([i].concat(t));n===o?l():r=l}}function s_(...e){return function(t,n){switch(t){case oi:return _te(...e.map(r=>pr(r,n)));case Wc:return;default:throw new Error(`unrecognized action ${t}`)}}}function Pt(e,t=kM){return ft(e,kr(t))}function qs(...e){const t=yn(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const l=Math.pow(2,i);pr(s,f=>{n[i]=f,r=r|l,r===o&&Rn(t,n)})}),function(s,i){switch(s){case oi:return r===o&&i(n),pr(t,i);case Wc:return wy(t);default:throw new Error(`unrecognized action ${s}`)}}}function Ps(e,t=[],{singleton:n}={singleton:!0}){return{id:Ite(),constructor:e,dependencies:t,singleton:n}}const Ite=()=>Symbol();function Ete(e){const t=new Map,n=({id:r,constructor:o,dependencies:s,singleton:i})=>{if(i&&t.has(r))return t.get(r);const l=o(s.map(f=>n(f)));return i&&t.set(r,l),l};return n(e)}function Mte(e,t){const n={},r={};let o=0;const s=e.length;for(;o(w[k]=_=>{const j=b[t.methods[k]];Rn(j,_)},w),{})}function h(b){return i.reduce((w,k)=>(w[k]=jte(b[t.events[k]]),w),{})}return{Component:H.forwardRef((b,w)=>{const{children:k,..._}=b,[j]=H.useState(()=>Cy(Ete(e),M=>f(M,_))),[I]=H.useState(t_(h,j));return Sp(()=>{for(const M of i)M in _&&pr(I[M],_[M]);return()=>{Object.values(I).map(wy)}},[_,I,j]),Sp(()=>{f(j,_)}),H.useImperativeHandle(w,n_(p(j))),H.createElement(l.Provider,{value:j},n?H.createElement(n,Mte([...r,...o,...i],_),k):k)}),usePublisher:b=>H.useCallback(SM(Rn,H.useContext(l)[b]),[b]),useEmitterValue:b=>{const k=H.useContext(l)[b],[_,j]=H.useState(t_(pg,k));return Sp(()=>pr(k,I=>{I!==_&&j(n_(I))}),[k,_]),_},useEmitter:(b,w)=>{const _=H.useContext(l)[b];Sp(()=>pr(_,w),[w,_])}}}const Dte=typeof document<"u"?H.useLayoutEffect:H.useEffect,Rte=Dte;var Sy=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Sy||{});const Ate={0:"debug",1:"log",2:"warn",3:"error"},Nte=()=>typeof globalThis>"u"?window:globalThis,_M=Ps(()=>{const e=dt(3);return{log:dt((n,r,o=1)=>{var s;const i=(s=Nte().VIRTUOSO_LOG_LEVEL)!=null?s:pg(e);o>=i&&console[Ate[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,r)}),logLevel:e}},[],{singleton:!0});function jM(e,t=!0){const n=H.useRef(null);let r=o=>{};if(typeof ResizeObserver<"u"){const o=H.useMemo(()=>new ResizeObserver(s=>{const i=s[0].target;i.offsetParent!==null&&e(i)}),[e]);r=s=>{s&&t?(o.observe(s),n.current=s):(n.current&&o.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function hg(e,t=!0){return jM(e,t).callbackRef}function Jh(e,t){return Math.round(e.getBoundingClientRect()[t])}function PM(e,t){return Math.abs(e-t)<1.01}function IM(e,t,n,r=fg,o){const s=H.useRef(null),i=H.useRef(null),l=H.useRef(null),f=H.useCallback(m=>{const v=m.target,x=v===window||v===document,C=x?window.pageYOffset||document.documentElement.scrollTop:v.scrollTop,b=x?document.documentElement.scrollHeight:v.scrollHeight,w=x?window.innerHeight:v.offsetHeight,k=()=>{e({scrollTop:Math.max(C,0),scrollHeight:b,viewportHeight:w})};m.suppressFlushSync?k():xD.flushSync(k),i.current!==null&&(C===i.current||C<=0||C===b-w)&&(i.current=null,t(!0),l.current&&(clearTimeout(l.current),l.current=null))},[e,t]);H.useEffect(()=>{const m=o||s.current;return r(o||s.current),f({target:m,suppressFlushSync:!0}),m.addEventListener("scroll",f,{passive:!0}),()=>{r(null),m.removeEventListener("scroll",f)}},[s,f,n,r,o]);function p(m){const v=s.current;if(!v||"offsetHeight"in v&&v.offsetHeight===0)return;const x=m.behavior==="smooth";let C,b,w;v===window?(b=Math.max(Jh(document.documentElement,"height"),document.documentElement.scrollHeight),C=window.innerHeight,w=document.documentElement.scrollTop):(b=v.scrollHeight,C=Jh(v,"height"),w=v.scrollTop);const k=b-C;if(m.top=Math.ceil(Math.max(Math.min(k,m.top),0)),PM(C,b)||m.top===w){e({scrollTop:w,scrollHeight:b,viewportHeight:C}),x&&t(!0);return}x?(i.current=m.top,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,i.current=null,t(!0)},1e3)):i.current=null,v.scrollTo(m)}function h(m){s.current.scrollBy(m)}return{scrollerRef:s,scrollByCallback:h,scrollToCallback:p}}const mg=Ps(()=>{const e=yn(),t=yn(),n=dt(0),r=yn(),o=dt(0),s=yn(),i=yn(),l=dt(0),f=dt(0),p=dt(0),h=dt(0),m=yn(),v=yn(),x=dt(!1);return Vt(ft(e,en(({scrollTop:C})=>C)),t),Vt(ft(e,en(({scrollHeight:C})=>C)),i),Vt(t,o),{scrollContainerState:e,scrollTop:t,viewportHeight:s,headerHeight:l,fixedHeaderHeight:f,fixedFooterHeight:p,footerHeight:h,scrollHeight:i,smoothScrollTargetReached:r,scrollTo:m,scrollBy:v,statefulScrollTop:o,deviation:n,scrollingInProgress:x}},[],{singleton:!0}),Tte=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function $te(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!Tte)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const em="up",Vu="down",Lte="none",zte={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},Fte=0,EM=Ps(([{scrollContainerState:e,scrollTop:t,viewportHeight:n,headerHeight:r,footerHeight:o,scrollBy:s}])=>{const i=dt(!1),l=dt(!0),f=yn(),p=yn(),h=dt(4),m=dt(Fte),v=lc(ft(s_(ft(Pt(t),cx(1),Da(!0)),ft(Pt(t),cx(1),Da(!1),o_(100))),kr()),!1),x=lc(ft(s_(ft(s,Da(!0)),ft(s,Da(!1),o_(200))),kr()),!1);Vt(ft(qs(Pt(t),Pt(m)),en(([_,j])=>_<=j),kr()),l),Vt(ft(l,Du(50)),p);const C=Wu(ft(qs(e,Pt(n),Pt(r),Pt(o),Pt(h)),wp((_,[{scrollTop:j,scrollHeight:I},M,E,O,D])=>{const A=j+M-I>-D,R={viewportHeight:M,scrollTop:j,scrollHeight:I};if(A){let K,B;return j>_.state.scrollTop?(K="SCROLLED_DOWN",B=_.state.scrollTop-j):(K="SIZE_DECREASED",B=_.state.scrollTop-j||_.scrollTopDelta),{atBottom:!0,state:R,atBottomBecause:K,scrollTopDelta:B}}let $;return R.scrollHeight>_.state.scrollHeight?$="SIZE_INCREASED":M<_.state.viewportHeight?$="VIEWPORT_HEIGHT_DECREASING":j<_.state.scrollTop?$="SCROLLING_UPWARDS":$="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:$,state:R}},zte),kr((_,j)=>_&&_.atBottom===j.atBottom))),b=lc(ft(e,wp((_,{scrollTop:j,scrollHeight:I,viewportHeight:M})=>{if(PM(_.scrollHeight,I))return{scrollTop:j,scrollHeight:I,jump:0,changed:!1};{const E=I-(j+M)<1;return _.scrollTop!==j&&E?{scrollHeight:I,scrollTop:j,jump:_.scrollTop-j,changed:!0}:{scrollHeight:I,scrollTop:j,jump:0,changed:!0}}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),Un(_=>_.changed),en(_=>_.jump)),0);Vt(ft(C,en(_=>_.atBottom)),i),Vt(ft(i,Du(50)),f);const w=dt(Vu);Vt(ft(e,en(({scrollTop:_})=>_),kr(),wp((_,j)=>pg(x)?{direction:_.direction,prevScrollTop:j}:{direction:j<_.prevScrollTop?em:Vu,prevScrollTop:j},{direction:Vu,prevScrollTop:0}),en(_=>_.direction)),w),Vt(ft(e,Du(50),Da(Lte)),w);const k=dt(0);return Vt(ft(v,Un(_=>!_),Da(0)),k),Vt(ft(t,Du(100),cs(v),Un(([_,j])=>!!j),wp(([_,j],[I])=>[j,I],[0,0]),en(([_,j])=>j-_)),k),{isScrolling:v,isAtTop:l,isAtBottom:i,atBottomState:C,atTopStateChange:p,atBottomStateChange:f,scrollDirection:w,atBottomThreshold:h,atTopThreshold:m,scrollVelocity:k,lastJumpDueToItemResize:b}},nl(mg)),Bte=Ps(([{log:e}])=>{const t=dt(!1),n=Wu(ft(t,Un(r=>r),kr()));return pr(t,r=>{r&&pg(e)("props updated",{},Sy.DEBUG)}),{propsReady:t,didMount:n}},nl(_M),{singleton:!0});function MM(e,t){e==0?t():requestAnimationFrame(()=>MM(e-1,t))}function Hte(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}function ux(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}function Wte(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}const tm="top",nm="bottom",a_="none";function i_(e,t,n){return typeof e=="number"?n===em&&t===tm||n===Vu&&t===nm?e:0:n===em?t===tm?e.main:e.reverse:t===nm?e.main:e.reverse}function l_(e,t){return typeof e=="number"?e:e[t]||0}const Vte=Ps(([{scrollTop:e,viewportHeight:t,deviation:n,headerHeight:r,fixedHeaderHeight:o}])=>{const s=yn(),i=dt(0),l=dt(0),f=dt(0),p=lc(ft(qs(Pt(e),Pt(t),Pt(r),Pt(s,ux),Pt(f),Pt(i),Pt(o),Pt(n),Pt(l)),en(([h,m,v,[x,C],b,w,k,_,j])=>{const I=h-_,M=w+k,E=Math.max(v-I,0);let O=a_;const D=l_(j,tm),A=l_(j,nm);return x-=_,x+=v+k,C+=v+k,C-=_,x>h+M-D&&(O=em),Ch!=null),kr(ux)),[0,0]);return{listBoundary:s,overscan:f,topListHeight:i,increaseViewportBy:l,visibleRange:p}},nl(mg),{singleton:!0}),Ute=Ps(([{scrollVelocity:e}])=>{const t=dt(!1),n=yn(),r=dt(!1);return Vt(ft(e,cs(r,t,n),Un(([o,s])=>!!s),en(([o,s,i,l])=>{const{exit:f,enter:p}=s;if(i){if(f(o,l))return!1}else if(p(o,l))return!0;return i}),kr()),t),pr(ft(qs(t,e,n),cs(r)),([[o,s,i],l])=>o&&l&&l.change&&l.change(s,i)),{isSeeking:t,scrollSeekConfiguration:r,scrollVelocity:e,scrollSeekRangeChanged:n}},nl(EM),{singleton:!0});function Gte(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const Kte=Ps(([{scrollTo:e,scrollContainerState:t}])=>{const n=yn(),r=yn(),o=yn(),s=dt(!1),i=dt(void 0);return Vt(ft(qs(n,r),en(([{viewportHeight:l,scrollTop:f,scrollHeight:p},{offsetTop:h}])=>({scrollTop:Math.max(0,f-h),scrollHeight:p,viewportHeight:l}))),t),Vt(ft(e,cs(r),en(([l,{offsetTop:f}])=>({...l,top:l.top+f}))),o),{useWindowScroll:s,customScrollParent:i,windowScrollContainerState:n,windowViewportRect:r,windowScrollTo:o}},nl(mg)),Nv="-webkit-sticky",c_="sticky",OM=Gte(()=>{if(typeof document>"u")return c_;const e=document.createElement("div");return e.style.position=Nv,e.style.position===Nv?Nv:c_});function qte(e,t){const n=H.useRef(null),r=H.useCallback(l=>{if(l===null||!l.offsetParent)return;const f=l.getBoundingClientRect(),p=f.width;let h,m;if(t){const v=t.getBoundingClientRect(),x=f.top-v.top;h=v.height-Math.max(0,x),m=x+t.scrollTop}else h=window.innerHeight-Math.max(0,f.top),m=f.top+window.pageYOffset;n.current={offsetTop:m,visibleHeight:h,visibleWidth:p},e(n.current)},[e,t]),{callbackRef:o,ref:s}=jM(r),i=H.useCallback(()=>{r(s.current)},[r,s]);return H.useEffect(()=>{if(t){t.addEventListener("scroll",i);const l=new ResizeObserver(i);return l.observe(t),()=>{t.removeEventListener("scroll",i),l.unobserve(t)}}else return window.addEventListener("scroll",i),window.addEventListener("resize",i),()=>{window.removeEventListener("scroll",i),window.removeEventListener("resize",i)}},[i,t]),o}H.createContext(void 0);const DM=H.createContext(void 0);function Xte(e){return e}OM();const Yte={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},RM={width:"100%",height:"100%",position:"absolute",top:0};OM();function Mi(e,t){if(typeof e!="string")return{context:t}}function Qte({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...l}){const f=e("scrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("scrollerRef"),v=n("context"),{scrollerRef:x,scrollByCallback:C,scrollToCallback:b}=IM(f,h,p,m);return t("scrollTo",b),t("scrollBy",C),H.createElement(p,{ref:x,style:{...Yte,...s},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...Mi(p,v)},i)})}function Zte({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...l}){const f=e("windowScrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("totalListHeight"),v=n("deviation"),x=n("customScrollParent"),C=n("context"),{scrollerRef:b,scrollByCallback:w,scrollToCallback:k}=IM(f,h,p,fg,x);return Rte(()=>(b.current=x||window,()=>{b.current=null}),[b,x]),t("windowScrollTo",k),t("scrollBy",w),H.createElement(p,{style:{position:"relative",...s,...m!==0?{height:m+v}:{}},"data-virtuoso-scroller":!0,...l,...Mi(p,C)},i)})}const u_={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Jte={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:d_,ceil:f_,floor:rm,min:Tv,max:Uu}=Math;function ene(e){return{...Jte,items:e}}function p_(e,t,n){return Array.from({length:t-e+1}).map((r,o)=>{const s=n===null?null:n[o+e];return{index:o+e,data:s}})}function tne(e,t){return e&&e.column===t.column&&e.row===t.row}function kp(e,t){return e&&e.width===t.width&&e.height===t.height}const nne=Ps(([{overscan:e,visibleRange:t,listBoundary:n},{scrollTop:r,viewportHeight:o,scrollBy:s,scrollTo:i,smoothScrollTargetReached:l,scrollContainerState:f,footerHeight:p,headerHeight:h},m,v,{propsReady:x,didMount:C},{windowViewportRect:b,useWindowScroll:w,customScrollParent:k,windowScrollContainerState:_,windowScrollTo:j},I])=>{const M=dt(0),E=dt(0),O=dt(u_),D=dt({height:0,width:0}),A=dt({height:0,width:0}),R=yn(),$=yn(),K=dt(0),B=dt(null),U=dt({row:0,column:0}),Y=yn(),W=yn(),L=dt(!1),X=dt(0),z=dt(!0),q=dt(!1);pr(ft(C,cs(X),Un(([G,J])=>!!J)),()=>{Rn(z,!1),Rn(E,0)}),pr(ft(qs(C,z,A,D,X,q),Un(([G,J,se,re,,fe])=>G&&!J&&se.height!==0&&re.height!==0&&!fe)),([,,,,G])=>{Rn(q,!0),MM(1,()=>{Rn(R,G)}),r_(ft(r),()=>{Rn(n,[0,0]),Rn(z,!0)})}),Vt(ft(W,Un(G=>G!=null&&G.scrollTop>0),Da(0)),E),pr(ft(C,cs(W),Un(([,G])=>G!=null)),([,G])=>{G&&(Rn(D,G.viewport),Rn(A,G==null?void 0:G.item),Rn(U,G.gap),G.scrollTop>0&&(Rn(L,!0),r_(ft(r,cx(1)),J=>{Rn(L,!1)}),Rn(i,{top:G.scrollTop})))}),Vt(ft(D,en(({height:G})=>G)),o),Vt(ft(qs(Pt(D,kp),Pt(A,kp),Pt(U,(G,J)=>G&&G.column===J.column&&G.row===J.row),Pt(r)),en(([G,J,se,re])=>({viewport:G,item:J,gap:se,scrollTop:re}))),Y),Vt(ft(qs(Pt(M),t,Pt(U,tne),Pt(A,kp),Pt(D,kp),Pt(B),Pt(E),Pt(L),Pt(z),Pt(X)),Un(([,,,,,,,G])=>!G),en(([G,[J,se],re,fe,de,me,ye,,he,ue])=>{const{row:De,column:je}=re,{height:Be,width:rt}=fe,{width:Ue}=de;if(ye===0&&(G===0||Ue===0))return u_;if(rt===0){const ot=Hte(ue,G),lt=ot===0?Math.max(ye-1,0):ot;return ene(p_(ot,lt,me))}const Ct=AM(Ue,rt,je);let Xe,tt;he?J===0&&se===0&&ye>0?(Xe=0,tt=ye-1):(Xe=Ct*rm((J+De)/(Be+De)),tt=Ct*f_((se+De)/(Be+De))-1,tt=Tv(G-1,Uu(tt,Ct-1)),Xe=Tv(tt,Uu(0,Xe))):(Xe=0,tt=-1);const ve=p_(Xe,tt,me),{top:Re,bottom:st}=h_(de,re,fe,ve),mt=f_(G/Ct),Ye=mt*Be+(mt-1)*De-st;return{items:ve,offsetTop:Re,offsetBottom:Ye,top:Re,bottom:st,itemHeight:Be,itemWidth:rt}})),O),Vt(ft(B,Un(G=>G!==null),en(G=>G.length)),M),Vt(ft(qs(D,A,O,U),Un(([G,J,{items:se}])=>se.length>0&&J.height!==0&&G.height!==0),en(([G,J,{items:se},re])=>{const{top:fe,bottom:de}=h_(G,re,J,se);return[fe,de]}),kr(ux)),n);const ne=dt(!1);Vt(ft(r,cs(ne),en(([G,J])=>J||G!==0)),ne);const Q=Wu(ft(Pt(O),Un(({items:G})=>G.length>0),cs(M,ne),Un(([{items:G},J,se])=>se&&G[G.length-1].index===J-1),en(([,G])=>G-1),kr())),ie=Wu(ft(Pt(O),Un(({items:G})=>G.length>0&&G[0].index===0),Da(0),kr())),oe=Wu(ft(Pt(O),cs(L),Un(([{items:G},J])=>G.length>0&&!J),en(([{items:G}])=>({startIndex:G[0].index,endIndex:G[G.length-1].index})),kr(Wte),Du(0)));Vt(oe,v.scrollSeekRangeChanged),Vt(ft(R,cs(D,A,M,U),en(([G,J,se,re,fe])=>{const de=$te(G),{align:me,behavior:ye,offset:he}=de;let ue=de.index;ue==="LAST"&&(ue=re-1),ue=Uu(0,ue,Tv(re-1,ue));let De=dx(J,fe,se,ue);return me==="end"?De=d_(De-J.height+se.height):me==="center"&&(De=d_(De-J.height/2+se.height/2)),he&&(De+=he),{top:De,behavior:ye}})),i);const V=lc(ft(O,en(G=>G.offsetBottom+G.bottom)),0);return Vt(ft(b,en(G=>({width:G.visibleWidth,height:G.visibleHeight}))),D),{data:B,totalCount:M,viewportDimensions:D,itemDimensions:A,scrollTop:r,scrollHeight:$,overscan:e,scrollBy:s,scrollTo:i,scrollToIndex:R,smoothScrollTargetReached:l,windowViewportRect:b,windowScrollTo:j,useWindowScroll:w,customScrollParent:k,windowScrollContainerState:_,deviation:K,scrollContainerState:f,footerHeight:p,headerHeight:h,initialItemCount:E,gap:U,restoreStateFrom:W,...v,initialTopMostItemIndex:X,gridState:O,totalListHeight:V,...m,startReached:ie,endReached:Q,rangeChanged:oe,stateChanged:Y,propsReady:x,stateRestoreInProgress:L,...I}},nl(Vte,mg,EM,Ute,Bte,Kte,_M));function h_(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{top:0,bottom:0};const s=dx(e,t,n,r[0].index),i=dx(e,t,n,r[r.length-1].index)+o;return{top:s,bottom:i}}function dx(e,t,n,r){const o=AM(e.width,n.width,t.column),s=rm(r/o),i=s*n.height+Uu(0,s-1)*t.row;return i>0?i+t.row:i}function AM(e,t,n){return Uu(1,rm((e+n)/(rm(t)+n)))}const rne=Ps(()=>{const e=dt(p=>`Item ${p}`),t=dt({}),n=dt(null),r=dt("virtuoso-grid-item"),o=dt("virtuoso-grid-list"),s=dt(Xte),i=dt("div"),l=dt(fg),f=(p,h=null)=>lc(ft(t,en(m=>m[p]),kr()),h);return{context:n,itemContent:e,components:t,computeItemKey:s,itemClassName:r,listClassName:o,headerFooterTag:i,scrollerRef:l,FooterComponent:f("Footer"),HeaderComponent:f("Header"),ListComponent:f("List","div"),ItemComponent:f("Item","div"),ScrollerComponent:f("Scroller","div"),ScrollSeekPlaceholder:f("ScrollSeekPlaceholder","div")}}),one=Ps(([e,t])=>({...e,...t}),nl(nne,rne)),sne=H.memo(function(){const t=ln("gridState"),n=ln("listClassName"),r=ln("itemClassName"),o=ln("itemContent"),s=ln("computeItemKey"),i=ln("isSeeking"),l=Fo("scrollHeight"),f=ln("ItemComponent"),p=ln("ListComponent"),h=ln("ScrollSeekPlaceholder"),m=ln("context"),v=Fo("itemDimensions"),x=Fo("gap"),C=ln("log"),b=ln("stateRestoreInProgress"),w=hg(k=>{const _=k.parentElement.parentElement.scrollHeight;l(_);const j=k.firstChild;if(j){const{width:I,height:M}=j.getBoundingClientRect();v({width:I,height:M})}x({row:m_("row-gap",getComputedStyle(k).rowGap,C),column:m_("column-gap",getComputedStyle(k).columnGap,C)})});return b?null:H.createElement(p,{ref:w,className:n,...Mi(p,m),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-test-id":"virtuoso-item-list"},t.items.map(k=>{const _=s(k.index,k.data,m);return i?H.createElement(h,{key:_,...Mi(h,m),index:k.index,height:t.itemHeight,width:t.itemWidth}):H.createElement(f,{...Mi(f,m),className:r,"data-index":k.index,key:_},o(k.index,k.data,m))}))}),ane=H.memo(function(){const t=ln("HeaderComponent"),n=Fo("headerHeight"),r=ln("headerFooterTag"),o=hg(i=>n(Jh(i,"height"))),s=ln("context");return t?H.createElement(r,{ref:o},H.createElement(t,Mi(t,s))):null}),ine=H.memo(function(){const t=ln("FooterComponent"),n=Fo("footerHeight"),r=ln("headerFooterTag"),o=hg(i=>n(Jh(i,"height"))),s=ln("context");return t?H.createElement(r,{ref:o},H.createElement(t,Mi(t,s))):null}),lne=({children:e})=>{const t=H.useContext(DM),n=Fo("itemDimensions"),r=Fo("viewportDimensions"),o=hg(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:RM,ref:o},e)},cne=({children:e})=>{const t=H.useContext(DM),n=Fo("windowViewportRect"),r=Fo("itemDimensions"),o=ln("customScrollParent"),s=qte(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:RM},e)},une=H.memo(function({...t}){const n=ln("useWindowScroll"),r=ln("customScrollParent"),o=r||n?pne:fne,s=r||n?cne:lne;return H.createElement(o,{...t},H.createElement(s,null,H.createElement(ane,null),H.createElement(sne,null),H.createElement(ine,null)))}),{Component:dne,usePublisher:Fo,useEmitterValue:ln,useEmitter:NM}=Ote(one,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged"}},une),fne=Qte({usePublisher:Fo,useEmitterValue:ln,useEmitter:NM}),pne=Zte({usePublisher:Fo,useEmitterValue:ln,useEmitter:NM});function m_(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Sy.WARN),t==="normal"?0:parseInt(t??"0",10)}const hne=dne,mne=e=>{const t=F(s=>s.gallery.galleryView),{data:n}=Tj(e),{data:r}=$j(e),o=d.useMemo(()=>t==="images"?n:r,[t,r,n]);return{totalImages:n,totalAssets:r,currentViewTotal:o}},gne=({imageDTO:e})=>a.jsx(T,{sx:{pointerEvents:"none",flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,p:2,alignItems:"flex-start",gap:2},children:a.jsxs(ua,{variant:"solid",colorScheme:"base",children:[e.width," × ",e.height]})}),vne=d.memo(gne),ky=({postUploadAction:e,isDisabled:t})=>{const n=F(f=>f.gallery.autoAddBoardId),[r]=Ej(),o=d.useCallback(f=>{const p=f[0];p&&r({file:p,image_category:"user",is_intermediate:!1,postUploadAction:e??{type:"TOAST"},board_id:n==="none"?void 0:n})},[n,e,r]),{getRootProps:s,getInputProps:i,open:l}=Fb({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},onDropAccepted:o,disabled:t,noDrag:!0,multiple:!1});return{getUploadButtonProps:s,getUploadInputProps:i,openUploader:l}},gg=()=>{const e=te(),t=Zi(),{t:n}=we(),r=d.useCallback(()=>{t({title:n("toast.parameterSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),o=d.useCallback(()=>{t({title:n("toast.parameterNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),s=d.useCallback(()=>{t({title:n("toast.parametersSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),i=d.useCallback(()=>{t({title:n("toast.parametersNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),l=d.useCallback((E,O,D,A)=>{if(Hf(E)||Wf(O)||xu(D)||V0(A)){Hf(E)&&e($u(E)),Wf(O)&&e(Lu(O)),xu(D)&&e(zu(D)),xu(A)&&e(Fu(A)),r();return}o()},[e,r,o]),f=d.useCallback(E=>{if(!Hf(E)){o();return}e($u(E)),r()},[e,r,o]),p=d.useCallback(E=>{if(!Wf(E)){o();return}e(Lu(E)),r()},[e,r,o]),h=d.useCallback(E=>{if(!xu(E)){o();return}e(zu(E)),r()},[e,r,o]),m=d.useCallback(E=>{if(!V0(E)){o();return}e(Fu(E)),r()},[e,r,o]),v=d.useCallback(E=>{if(!FC(E)){o();return}e(Hp(E)),r()},[e,r,o]),x=d.useCallback(E=>{if(!U0(E)){o();return}e(Wp(E)),r()},[e,r,o]),C=d.useCallback(E=>{if(!BC(E)){o();return}e(n1(E)),r()},[e,r,o]),b=d.useCallback(E=>{if(!G0(E)){o();return}e(r1(E)),r()},[e,r,o]),w=d.useCallback(E=>{if(!K0(E)){o();return}e(Vp(E)),r()},[e,r,o]),k=d.useCallback(E=>{if(!HC(E)){o();return}e(Ai(E)),r()},[e,r,o]),_=d.useCallback(E=>{if(!WC(E)){o();return}e(Ni(E)),r()},[e,r,o]),j=d.useCallback(E=>{if(!VC(E)){o();return}e(Up(E)),r()},[e,r,o]),I=d.useCallback(E=>{e(pm(E))},[e]),M=d.useCallback(E=>{if(!E){i();return}const{cfg_scale:O,height:D,model:A,positive_prompt:R,negative_prompt:$,scheduler:K,seed:B,steps:U,width:Y,strength:W,positive_style_prompt:L,negative_style_prompt:X,refiner_model:z,refiner_cfg_scale:q,refiner_steps:ne,refiner_scheduler:Q,refiner_positive_aesthetic_score:ie,refiner_negative_aesthetic_score:oe,refiner_start:V}=E;U0(O)&&e(Wp(O)),BC(A)&&e(n1(A)),Hf(R)&&e($u(R)),Wf($)&&e(Lu($)),G0(K)&&e(r1(K)),FC(B)&&e(Hp(B)),K0(U)&&e(Vp(U)),HC(Y)&&e(Ai(Y)),WC(D)&&e(Ni(D)),VC(W)&&e(Up(W)),xu(L)&&e(zu(L)),V0(X)&&e(Fu(X)),bD(z)&&e(zj(z)),K0(ne)&&e(o1(ne)),U0(q)&&e(s1(q)),G0(Q)&&e(Fj(Q)),yD(ie)&&e(a1(ie)),CD(oe)&&e(i1(oe)),wD(V)&&e(l1(V)),s()},[i,s,e]);return{recallBothPrompts:l,recallPositivePrompt:f,recallNegativePrompt:p,recallSDXLPositiveStylePrompt:h,recallSDXLNegativeStylePrompt:m,recallSeed:v,recallCfgScale:x,recallModel:C,recallScheduler:b,recallSteps:w,recallWidth:k,recallHeight:_,recallStrength:j,recallAllParameters:M,sendToImageToImage:I}},TM=()=>{const e=Zi(),{t}=we(),n=d.useMemo(()=>!!navigator.clipboard&&!!window.ClipboardItem,[]),r=d.useCallback(async o=>{n||e({title:t("toast.problemCopyingImage"),description:"Your browser doesn't support the Clipboard API.",status:"error",duration:2500,isClosable:!0});try{const i=await(await fetch(o)).blob();await navigator.clipboard.write([new ClipboardItem({[i.type]:i})]),e({title:t("toast.imageCopied"),status:"success",duration:2500,isClosable:!0})}catch(s){e({title:t("toast.problemCopyingImage"),description:String(s),status:"error",duration:2500,isClosable:!0})}},[n,t,e]);return{isClipboardAPIAvailable:n,copyImageToClipboard:r}};function xne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M16.5 9c-.42 0-.83.04-1.24.11L1.01 3 1 10l9 2-9 2 .01 7 8.07-3.46C9.59 21.19 12.71 24 16.5 24c4.14 0 7.5-3.36 7.5-7.5S20.64 9 16.5 9zm0 13c-3.03 0-5.5-2.47-5.5-5.5s2.47-5.5 5.5-5.5 5.5 2.47 5.5 5.5-2.47 5.5-5.5 5.5z"}},{tag:"path",attr:{d:"M18.27 14.03l-1.77 1.76-1.77-1.76-.7.7 1.76 1.77-1.76 1.77.7.7 1.77-1.76 1.77 1.76.7-.7-1.76-1.77 1.76-1.77z"}}]})(e)}function vg(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M17 16l-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z"}}]})(e)}function bne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z"}}]})(e)}function yne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-11-4l2.03 2.71L16 11l4 5H8l3-4zM2 6v14c0 1.1.9 2 2 2h14v-2H4V6H2z"}}]})(e)}function Cne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}}]})(e)}function _y(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"}}]})(e)}function jy(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}}]})(e)}function $M(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z"}}]})(e)}$x("gallery/requestedBoardImagesDeletion");const wne=$x("gallery/sentImageToCanvas"),LM=$x("gallery/sentImageToImg2Img"),Py=e=>e.config,Sne=e=>{const{imageDTO:t}=e,n=te(),{t:r}=we(),o=Zi(),s=qt("unifiedCanvas").isFeatureEnabled,{shouldFetchMetadataFromApi:i}=F(Py),{metadata:l,workflow:f,isLoading:p}=Lx({image:t,shouldFetchMetadataFromApi:i},{selectFromResult:K=>{var B,U;return{isLoading:K.isFetching,metadata:(B=K==null?void 0:K.currentData)==null?void 0:B.metadata,workflow:(U=K==null?void 0:K.currentData)==null?void 0:U.workflow}}}),[h]=zx(),[m]=Fx(),{isClipboardAPIAvailable:v,copyImageToClipboard:x}=TM(),C=d.useCallback(()=>{t&&n(hm([t]))},[n,t]),{recallBothPrompts:b,recallSeed:w,recallAllParameters:k}=gg(),_=d.useCallback(()=>{b(l==null?void 0:l.positive_prompt,l==null?void 0:l.negative_prompt,l==null?void 0:l.positive_style_prompt,l==null?void 0:l.negative_style_prompt)},[l==null?void 0:l.negative_prompt,l==null?void 0:l.positive_prompt,l==null?void 0:l.positive_style_prompt,l==null?void 0:l.negative_style_prompt,b]),j=d.useCallback(()=>{w(l==null?void 0:l.seed)},[l==null?void 0:l.seed,w]),I=d.useCallback(()=>{f&&n(Bx(f))},[n,f]),M=d.useCallback(()=>{n(LM()),n(pm(t))},[n,t]),E=d.useCallback(()=>{n(wne()),n(Bj(t)),n(Ra("unifiedCanvas")),o({title:r("toast.sentToUnifiedCanvas"),status:"success",duration:2500,isClosable:!0})},[n,t,r,o]),O=d.useCallback(()=>{k(l)},[l,k]),D=d.useCallback(()=>{n(Hj([t])),n(Tx(!0))},[n,t]),A=d.useCallback(()=>{x(t.image_url)},[x,t.image_url]),R=d.useCallback(()=>{t&&h({imageDTOs:[t]})},[h,t]),$=d.useCallback(()=>{t&&m({imageDTOs:[t]})},[m,t]);return a.jsxs(a.Fragment,{children:[a.jsx(Ht,{as:"a",href:t.image_url,target:"_blank",icon:a.jsx(PE,{}),children:r("common.openInNewTab")}),v&&a.jsx(Ht,{icon:a.jsx(Hc,{}),onClickCapture:A,children:r("parameters.copyImage")}),a.jsx(Ht,{as:"a",download:!0,href:t.image_url,target:"_blank",icon:a.jsx(Jm,{}),w:"100%",children:r("parameters.downloadImage")}),a.jsx(Ht,{icon:p?a.jsx(_p,{}):a.jsx(vg,{}),onClickCapture:I,isDisabled:p||!f,children:r("nodes.loadWorkflow")}),a.jsx(Ht,{icon:p?a.jsx(_p,{}):a.jsx(RE,{}),onClickCapture:_,isDisabled:p||(l==null?void 0:l.positive_prompt)===void 0&&(l==null?void 0:l.negative_prompt)===void 0,children:r("parameters.usePrompt")}),a.jsx(Ht,{icon:p?a.jsx(_p,{}):a.jsx(AE,{}),onClickCapture:j,isDisabled:p||(l==null?void 0:l.seed)===void 0,children:r("parameters.useSeed")}),a.jsx(Ht,{icon:p?a.jsx(_p,{}):a.jsx(SE,{}),onClickCapture:O,isDisabled:p||!l,children:r("parameters.useAll")}),a.jsx(Ht,{icon:a.jsx(kk,{}),onClickCapture:M,id:"send-to-img2img",children:r("parameters.sendToImg2Img")}),s&&a.jsx(Ht,{icon:a.jsx(kk,{}),onClickCapture:E,id:"send-to-canvas",children:r("parameters.sendToUnifiedCanvas")}),a.jsx(Ht,{icon:a.jsx(IE,{}),onClickCapture:D,children:"Change Board"}),t.starred?a.jsx(Ht,{icon:a.jsx(jy,{}),onClickCapture:$,children:"Unstar Image"}):a.jsx(Ht,{icon:a.jsx(_y,{}),onClickCapture:R,children:"Star Image"}),a.jsx(Ht,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Wr,{}),onClickCapture:C,children:r("gallery.deleteImage")})]})},zM=d.memo(Sne),_p=()=>a.jsx(T,{w:"14px",alignItems:"center",justifyContent:"center",children:a.jsx(Ki,{size:"xs"})}),kne=()=>{const e=te(),t=F(h=>h.gallery.selection),[n]=zx(),[r]=Fx(),o=d.useCallback(()=>{e(Hj(t)),e(Tx(!0))},[e,t]),s=d.useCallback(()=>{e(hm(t))},[e,t]),i=d.useCallback(()=>{n({imageDTOs:t})},[n,t]),l=d.useCallback(()=>{r({imageDTOs:t})},[r,t]),f=d.useMemo(()=>t.every(h=>h.starred),[t]),p=d.useMemo(()=>t.every(h=>!h.starred),[t]);return a.jsxs(a.Fragment,{children:[f&&a.jsx(Ht,{icon:a.jsx(_y,{}),onClickCapture:l,children:"Unstar All"}),(p||!f&&!p)&&a.jsx(Ht,{icon:a.jsx(jy,{}),onClickCapture:i,children:"Star All"}),a.jsx(Ht,{icon:a.jsx(IE,{}),onClickCapture:o,children:"Change Board"}),a.jsx(Ht,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Wr,{}),onClickCapture:s,children:"Delete Selection"})]})},_ne=d.memo(kne),jne=ae([xe],({gallery:e})=>({selectionCount:e.selection.length}),Ce),Pne=({imageDTO:e,children:t})=>{const{selectionCount:n}=F(jne),r=d.useCallback(o=>{o.preventDefault()},[]);return a.jsx(yy,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>e?n>1?a.jsx(Ga,{sx:{visibility:"visible !important"},motionProps:mc,onContextMenu:r,children:a.jsx(_ne,{})}):a.jsx(Ga,{sx:{visibility:"visible !important"},motionProps:mc,onContextMenu:r,children:a.jsx(zM,{imageDTO:e})}):null,children:t})},Ine=d.memo(Pne),Ene=e=>{const{data:t,disabled:n,...r}=e,o=d.useRef(Fa()),{attributes:s,listeners:i,setNodeRef:l}=Uee({id:o.current,disabled:n,data:t});return a.jsx(Ie,{ref:l,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,...s,...i,...r})},Mne=d.memo(Ene),One=a.jsx(An,{as:ng,sx:{boxSize:16}}),Dne=a.jsx(tr,{icon:Wi}),Rne=e=>{const{imageDTO:t,onError:n,onClick:r,withMetadataOverlay:o=!1,isDropDisabled:s=!1,isDragDisabled:i=!1,isUploadDisabled:l=!1,minSize:f=24,postUploadAction:p,imageSx:h,fitContainer:m=!1,droppableData:v,draggableData:x,dropLabel:C,isSelected:b=!1,thumbnail:w=!1,noContentFallback:k=Dne,uploadElement:_=One,useThumbailFallback:j,withHoverOverlay:I=!1,children:M,onMouseOver:E,onMouseOut:O}=e,{colorMode:D}=ia(),[A,R]=d.useState(!1),$=d.useCallback(W=>{E&&E(W),R(!0)},[E]),K=d.useCallback(W=>{O&&O(W),R(!1)},[O]),{getUploadButtonProps:B,getUploadInputProps:U}=ky({postUploadAction:p,isDisabled:l}),Y=l?{}:{cursor:"pointer",bg:Ae("base.200","base.700")(D),_hover:{bg:Ae("base.300","base.650")(D),color:Ae("base.500","base.300")(D)}};return a.jsx(Ine,{imageDTO:t,children:W=>a.jsxs(T,{ref:W,onMouseOver:$,onMouseOut:K,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative",minW:f||void 0,minH:f||void 0,userSelect:"none",cursor:i||!t?"default":"pointer"},children:[t&&a.jsxs(T,{sx:{w:"full",h:"full",position:m?"absolute":"relative",alignItems:"center",justifyContent:"center"},children:[a.jsx(qi,{src:w?t.thumbnail_url:t.image_url,fallbackStrategy:"beforeLoadOrError",fallbackSrc:j?t.thumbnail_url:void 0,fallback:j?void 0:a.jsx(Cte,{image:t}),onError:n,draggable:!1,sx:{w:t.width,objectFit:"contain",maxW:"full",maxH:"full",borderRadius:"base",...h}}),o&&a.jsx(vne,{imageDTO:t}),a.jsx(by,{isSelected:b,isHovered:I?A:!1})]}),!t&&!l&&a.jsx(a.Fragment,{children:a.jsxs(T,{sx:{minH:f,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",transitionProperty:"common",transitionDuration:"0.1s",color:Ae("base.500","base.500")(D),...Y},...B(),children:[a.jsx("input",{...U()}),_]})}),!t&&l&&k,t&&!i&&a.jsx(Mne,{data:x,disabled:i||!t,onClick:r}),M,!s&&a.jsx(xy,{data:v,disabled:s,dropLabel:C})]})})},Ya=d.memo(Rne),Ane=()=>a.jsx(zm,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full"}})}),Nne=d.memo(Ane),Tne=ae([xe,Hx],({gallery:e},t)=>{const n=e.selection;return{queryArgs:t,selection:n}},Ce),$ne=e=>{const t=te(),{queryArgs:n,selection:r}=F(Tne),{imageDTOs:o}=Wj(n,{selectFromResult:p=>({imageDTOs:p.data?SD.selectAll(p.data):[]})}),s=qt("multiselect").isFeatureEnabled,i=d.useCallback(p=>{var h;if(e){if(!s){t(bu([e]));return}if(p.shiftKey){const m=e.image_name,v=(h=r[r.length-1])==null?void 0:h.image_name,x=o.findIndex(b=>b.image_name===v),C=o.findIndex(b=>b.image_name===m);if(x>-1&&C>-1){const b=Math.min(x,C),w=Math.max(x,C),k=o.slice(b,w+1);t(bu(ww(r.concat(k))))}}else p.ctrlKey||p.metaKey?r.some(m=>m.image_name===e.image_name)&&r.length>1?t(bu(r.filter(m=>m.image_name!==e.image_name))):t(bu(ww(r.concat(e)))):t(bu([e]))}},[t,e,o,r,s]),l=d.useMemo(()=>e?r.some(p=>p.image_name===e.image_name):!1,[e,r]),f=d.useMemo(()=>r.length,[r.length]);return{selection:r,selectionCount:f,isSelected:l,handleClick:i}},Lne=e=>{const{onClick:t,tooltip:n,icon:r,styleOverrides:o}=e,s=Ti("drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-600))","drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-800))");return a.jsx(Te,{onClick:t,"aria-label":n,tooltip:n,icon:r,size:"sm",variant:"link",sx:{position:"absolute",top:1,insetInlineEnd:1,p:0,minW:0,svg:{transitionProperty:"common",transitionDuration:"normal",fill:"base.100",_hover:{fill:"base.50"},filter:s},...o}})},cc=d.memo(Lne),zne=e=>{const t=te(),{imageName:n}=e,{currentData:r}=po(n),o=F(j=>j.hotkeys.shift),{handleClick:s,isSelected:i,selection:l,selectionCount:f}=$ne(r),p=d.useCallback(j=>{j.stopPropagation(),r&&t(hm([r]))},[t,r]),h=d.useMemo(()=>{if(f>1)return{id:"gallery-image",payloadType:"IMAGE_DTOS",payload:{imageDTOs:l}};if(r)return{id:"gallery-image",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,l,f]),[m]=zx(),[v]=Fx(),x=d.useCallback(()=>{r&&(r.starred&&v({imageDTOs:[r]}),r.starred||m({imageDTOs:[r]}))},[m,v,r]),[C,b]=d.useState(!1),w=d.useCallback(()=>{b(!0)},[]),k=d.useCallback(()=>{b(!1)},[]),_=d.useMemo(()=>{if(r!=null&&r.starred)return a.jsx(jy,{size:"20"});if(!(r!=null&&r.starred)&&C)return a.jsx(_y,{size:"20"})},[r==null?void 0:r.starred,C]);return r?a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none"},children:a.jsx(T,{userSelect:"none",sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:a.jsx(Ya,{onClick:s,imageDTO:r,draggableData:h,isSelected:i,minSize:0,imageSx:{w:"full",h:"full"},isDropDisabled:!0,isUploadDisabled:!0,thumbnail:!0,withHoverOverlay:!0,onMouseOver:w,onMouseOut:k,children:a.jsxs(a.Fragment,{children:[a.jsx(cc,{onClick:x,icon:_,tooltip:r.starred?"Unstar":"Star"}),C&&o&&a.jsx(cc,{onClick:p,icon:a.jsx(Wr,{}),tooltip:"Delete",styleOverrides:{bottom:2,top:"auto"}})]})})})}):a.jsx(Nne,{})},Fne=d.memo(zne),Bne=Pe((e,t)=>a.jsx(Ie,{className:"item-container",ref:t,p:1.5,children:e.children})),Hne=d.memo(Bne),Wne=Pe((e,t)=>{const n=F(r=>r.gallery.galleryImageMinimumWidth);return a.jsx(Ua,{...e,className:"list-container",ref:t,sx:{gridTemplateColumns:`repeat(auto-fill, minmax(${n}px, 1fr));`},children:e.children})}),Vne=d.memo(Wne),Une={defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}},Gne=()=>{const{t:e}=we(),t=d.useRef(null),[n,r]=d.useState(null),[o,s]=pM(Une),i=F(w=>w.gallery.selectedBoardId),{currentViewTotal:l}=mne(i),f=F(Hx),{currentData:p,isFetching:h,isSuccess:m,isError:v}=Wj(f),[x]=Vj(),C=d.useMemo(()=>!p||!l?!1:p.ids.length{C&&x({...f,offset:(p==null?void 0:p.ids.length)??0,limit:Uj})},[C,x,f,p==null?void 0:p.ids.length]);return d.useEffect(()=>{const{current:w}=t;return n&&w&&o({target:w,elements:{viewport:n}}),()=>{var k;return(k=s())==null?void 0:k.destroy()}},[n,o,s]),p?m&&(p==null?void 0:p.ids.length)===0?a.jsx(T,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(tr,{label:e("gallery.noImagesInGallery"),icon:Wi})}):m&&p?a.jsxs(a.Fragment,{children:[a.jsx(Ie,{ref:t,"data-overlayscrollbars":"",h:"100%",children:a.jsx(hne,{style:{height:"100%"},data:p.ids,endReached:b,components:{Item:Hne,List:Vne},scrollerRef:r,itemContent:(w,k)=>a.jsx(Fne,{imageName:k},k)})}),a.jsx(it,{onClick:b,isDisabled:!C,isLoading:h,loadingText:"Loading",flexShrink:0,children:`Load More (${p.ids.length} of ${l})`})]}):v?a.jsx(Ie,{sx:{w:"full",h:"full"},children:a.jsx(tr,{label:"Unable to load Gallery",icon:pZ})}):null:a.jsx(T,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(tr,{label:"Loading...",icon:Wi})})},Kne=d.memo(Gne),qne=ae([xe],e=>{const{galleryView:t}=e.gallery;return{galleryView:t}},Ce),Xne=()=>{const e=d.useRef(null),t=d.useRef(null),{galleryView:n}=F(qne),r=te(),{isOpen:o,onToggle:s}=Er({defaultIsOpen:!0}),i=d.useCallback(()=>{r(UC("images"))},[r]),l=d.useCallback(()=>{r(UC("assets"))},[r]);return a.jsxs(R5,{layerStyle:"first",sx:{flexDirection:"column",h:"full",w:"full",borderRadius:"base",p:2},children:[a.jsxs(Ie,{sx:{w:"full"},children:[a.jsxs(T,{ref:e,sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:[a.jsx(ute,{isOpen:o,onToggle:s}),a.jsx(yte,{})]}),a.jsx(Ie,{children:a.jsx(ite,{isOpen:o})})]}),a.jsxs(T,{ref:t,direction:"column",gap:2,h:"full",w:"full",children:[a.jsx(T,{sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:a.jsx(Yi,{index:n==="images"?0:1,variant:"unstyled",size:"sm",sx:{w:"full"},children:a.jsx(Qi,{children:a.jsxs(pn,{isAttached:!0,sx:{w:"full"},children:[a.jsx(Pr,{as:it,size:"sm",isChecked:n==="images",onClick:i,sx:{w:"full"},leftIcon:a.jsx(SZ,{}),children:"Images"}),a.jsx(Pr,{as:it,size:"sm",isChecked:n==="assets",onClick:l,sx:{w:"full"},leftIcon:a.jsx(RZ,{}),children:"Assets"})]})})})}),a.jsx(Kne,{})]})]})},Yne=d.memo(Xne),Qne=ae(vo,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:kt}}),Zne=e=>{const t=te(),{btnGroupWidth:n="auto",asIconButton:r=!1,...o}=e,{isProcessing:s,isConnected:i,isCancelable:l,cancelType:f,isCancelScheduled:p,sessionId:h}=F(Qne),m=d.useCallback(()=>{if(h){if(f==="scheduled"){t(kD());return}t(_D({session_id:h}))}},[t,h,f]),{t:v}=we(),x=d.useCallback(w=>{const k=Array.isArray(w)?w[0]:w;t(jD(k))},[t]);Qe("shift+x",()=>{(i||s)&&l&&m()},[i,s,l]);const C=d.useMemo(()=>v(p?"parameters.cancel.isScheduled":f==="immediate"?"parameters.cancel.immediate":"parameters.cancel.schedule"),[v,f,p]),b=d.useMemo(()=>p?a.jsx(Qp,{}):f==="immediate"?a.jsx(Cne,{}):a.jsx(xne,{}),[f,p]);return a.jsxs(pn,{isAttached:!0,width:n,children:[r?a.jsx(Te,{icon:b,tooltip:C,"aria-label":C,isDisabled:!i||!s||!l,onClick:m,colorScheme:"error",id:"cancel-button",...o}):a.jsx(it,{leftIcon:b,tooltip:C,"aria-label":C,isDisabled:!i||!s||!l,onClick:m,colorScheme:"error",id:"cancel-button",...o,children:"Cancel"}),a.jsxs(Dd,{closeOnSelect:!1,children:[a.jsx(Rd,{as:Te,tooltip:v("parameters.cancel.setType"),"aria-label":v("parameters.cancel.setType"),icon:a.jsx(Bee,{w:"1em",h:"1em"}),paddingX:0,paddingY:0,colorScheme:"error",minWidth:5,...o}),a.jsx(Ga,{minWidth:"240px",children:a.jsxs(Q5,{value:f,title:"Cancel Type",type:"radio",onChange:x,children:[a.jsx(rh,{value:"immediate",children:v("parameters.cancel.immediate")}),a.jsx(rh,{value:"scheduled",children:v("parameters.cancel.schedule")})]})})]})]})},FM=d.memo(Zne),Jne=ae([xe,wn],(e,t)=>{const{generation:n,system:r,nodes:o}=e,{initialImage:s,model:i}=n,{isProcessing:l,isConnected:f}=r,p=[];return l&&p.push("System busy"),f||p.push("System disconnected"),t==="img2img"&&!s&&p.push("No initial image selected"),t==="nodes"?o.shouldValidateGraph&&(o.nodes.length||p.push("No nodes in graph"),o.nodes.forEach(h=>{if(!Cn(h))return;const m=o.nodeTemplates[h.data.type];if(!m){p.push("Missing node template");return}const v=PD([h],o.edges);Fn(h.data.inputs,x=>{const C=m.inputs[x.name],b=v.some(w=>w.target===h.id&&w.targetHandle===x.name);if(!C){p.push("Missing field template");return}if(C.required&&x.value===void 0&&!b){p.push(`${h.data.label||m.title} -> ${x.label||C.title} missing input`);return}})})):(i||p.push("No model selected"),e.controlNet.isEnabled&&rr(e.controlNet.controlNets).forEach((h,m)=>{h.isEnabled&&(h.model||p.push(`ControlNet ${m+1} has no model selected.`),(!h.controlImage||!h.processedControlImage&&h.processorType!=="none")&&p.push(`ControlNet ${m+1} has no control image`))})),{isReady:!p.length,isProcessing:l,reasons:p}},Ce),Ud=()=>{const{isReady:e,isProcessing:t,reasons:n}=F(Jne);return{isReady:e,isProcessing:t,reasons:n}},ere=ae(vo,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:kt}}),tre=()=>{const{t:e}=we(),{isProcessing:t,currentStep:n,totalSteps:r,currentStatusHasSteps:o}=F(ere),s=n?Math.round(n*100/r):0;return a.jsx(pP,{value:s,"aria-label":e("accessibility.invokeProgressBar"),isIndeterminate:t&&!o,height:"full",colorScheme:"accent"})},nre=d.memo(tre);function BM(e){const{asIconButton:t=!1,sx:n,...r}=e,o=te(),{isReady:s,isProcessing:i}=Ud(),l=F(wn),f=d.useCallback(()=>{o(bd()),o(mm(l))},[o,l]),{t:p}=we();return Qe(["ctrl+enter","meta+enter"],f,{enabled:()=>s,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[s,l]),a.jsx(Ie,{style:{flexGrow:4},position:"relative",children:a.jsxs(Ie,{style:{position:"relative"},children:[!s&&a.jsx(Ie,{sx:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip",borderRadius:"base",...n},...r,children:a.jsx(nre,{})}),t?a.jsx(Te,{"aria-label":p("parameters.invoke"),type:"submit",icon:a.jsx(Sk,{}),isDisabled:!s,onClick:f,tooltip:a.jsx(fx,{}),colorScheme:"accent",isLoading:i,id:"invoke-button","data-progress":i,sx:{w:"full",flexGrow:1,...n},...r}):a.jsx(it,{tooltip:a.jsx(fx,{}),"aria-label":p("parameters.invoke"),type:"submit","data-progress":i,isDisabled:!s,onClick:f,colorScheme:"accent",id:"invoke-button",leftIcon:i?void 0:a.jsx(Sk,{}),isLoading:i,loadingText:p("parameters.invoke"),sx:{w:"full",flexGrow:1,fontWeight:700,...n},...r,children:"Invoke"})]})})}const rre=ae([xe],({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},Ce),fx=d.memo(()=>{const{isReady:e,reasons:t}=Ud(),{autoAddBoardId:n}=F(rre),r=ug(n);return a.jsxs(T,{flexDir:"column",gap:1,children:[a.jsx(be,{fontWeight:600,children:e?"Ready to Invoke":"Unable to Invoke"}),t.length>0&&a.jsx(Id,{children:t.map((o,s)=>a.jsx(No,{children:a.jsx(be,{fontWeight:400,children:o})},`${o}.${s}`))}),a.jsx(Fr,{opacity:.2,borderColor:"base.50",_dark:{borderColor:"base.900"}}),a.jsxs(be,{fontWeight:400,fontStyle:"oblique 10deg",children:["Adding images to"," ",a.jsx(be,{as:"span",fontWeight:600,children:r||"Uncategorized"})]})]})});fx.displayName="InvokeButtonTooltipContent";const ore=()=>a.jsxs(T,{layerStyle:"first",sx:{gap:2,borderRadius:"base",p:2},children:[a.jsx(BM,{}),a.jsx(FM,{})]}),HM=d.memo(ore),{createElement:Pc,createContext:sre,forwardRef:WM,useCallback:Ls,useContext:VM,useEffect:ea,useImperativeHandle:UM,useLayoutEffect:are,useMemo:ire,useRef:$r,useState:Gu}=Nx,g_=Nx["useId".toString()],Ku=are,lre=typeof g_=="function"?g_:()=>null;let cre=0;function Iy(e=null){const t=lre(),n=$r(e||t||null);return n.current===null&&(n.current=""+cre++),n.current}const xg=sre(null);xg.displayName="PanelGroupContext";function GM({children:e=null,className:t="",collapsedSize:n=0,collapsible:r=!1,defaultSize:o=null,forwardedRef:s,id:i=null,maxSize:l=null,minSize:f,onCollapse:p=null,onResize:h=null,order:m=null,style:v={},tagName:x="div"}){const C=VM(xg);if(C===null)throw Error("Panel components must be rendered within a PanelGroup container");const b=Iy(i),{collapsePanel:w,expandPanel:k,getPanelSize:_,getPanelStyle:j,registerPanel:I,resizePanel:M,units:E,unregisterPanel:O}=C;f==null&&(E==="percentages"?f=10:f=0);const D=$r({onCollapse:p,onResize:h});ea(()=>{D.current.onCollapse=p,D.current.onResize=h});const A=j(b,o),R=$r({size:v_(A)}),$=$r({callbacksRef:D,collapsedSize:n,collapsible:r,defaultSize:o,id:b,idWasAutoGenerated:i==null,maxSize:l,minSize:f,order:m});return Ku(()=>{R.current.size=v_(A),$.current.callbacksRef=D,$.current.collapsedSize=n,$.current.collapsible=r,$.current.defaultSize=o,$.current.id=b,$.current.idWasAutoGenerated=i==null,$.current.maxSize=l,$.current.minSize=f,$.current.order=m}),Ku(()=>(I(b,$),()=>{O(b)}),[m,b,I,O]),UM(s,()=>({collapse:()=>w(b),expand:()=>k(b),getCollapsed(){return R.current.size===0},getId(){return b},getSize(K){return _(b,K)},resize:(K,B)=>M(b,K,B)}),[w,k,_,b,M]),Pc(x,{children:e,className:t,"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-id":b,"data-panel-size":parseFloat(""+A.flexGrow).toFixed(1),id:`data-panel-id-${b}`,style:{...A,...v}})}const Va=WM((e,t)=>Pc(GM,{...e,forwardedRef:t}));GM.displayName="Panel";Va.displayName="forwardRef(Panel)";function v_(e){const{flexGrow:t}=e;return typeof t=="string"?parseFloat(t):t}const Gi=10;function Ru(e,t,n,r,o,s,i,l){const{id:f,panels:p,units:h}=t,m=h==="pixels"?Aa(f):NaN,{sizes:v}=l||{},x=v||s,C=Sr(p),b=x.concat();let w=0;{const j=o<0?r:n,I=C.findIndex(D=>D.current.id===j),M=C[I],E=x[I],O=px(h,m,M,E,E+Math.abs(o),e);if(E===O)return x;O===0&&E>0&&i.set(j,E),o=o<0?E-O:O-E}let k=o<0?n:r,_=C.findIndex(j=>j.current.id===k);for(;;){const j=C[_],I=x[_],M=Math.abs(o)-Math.abs(w),E=px(h,m,j,I,I-M,e);if(I!==E&&(E===0&&I>0&&i.set(j.current.id,I),w+=I-E,b[_]=E,w.toPrecision(Gi).localeCompare(Math.abs(o).toPrecision(Gi),void 0,{numeric:!0})>=0))break;if(o<0){if(--_<0)break}else if(++_>=C.length)break}return w===0?x:(k=o<0?r:n,_=C.findIndex(j=>j.current.id===k),b[_]=x[_]+w,b)}function Dl(e,t,n){t.forEach((r,o)=>{const s=e[o];if(!s)return;const{callbacksRef:i,collapsedSize:l,collapsible:f,id:p}=s.current,h=n[p];if(h!==r){n[p]=r;const{onCollapse:m,onResize:v}=i.current;v&&v(r,h),f&&m&&((h==null||h===l)&&r!==l?m(!1):h!==l&&r===l&&m(!0))}})}function ure({groupId:e,panels:t,units:n}){const r=n==="pixels"?Aa(e):NaN,o=Sr(t),s=Array(o.length);let i=0,l=100;for(let f=0;fi.current.id===e);if(n<0)return[null,null];const r=n===t.length-1,o=r?t[n-1].current.id:e,s=r?e:t[n+1].current.id;return[o,s]}function Aa(e){const t=cd(e);if(t==null)return NaN;const n=t.getAttribute("data-panel-group-direction"),r=Ey(e);return n==="horizontal"?t.offsetWidth-r.reduce((o,s)=>o+s.offsetWidth,0):t.offsetHeight-r.reduce((o,s)=>o+s.offsetHeight,0)}function KM(e,t,n){if(e.size===1)return"100";const o=Sr(e).findIndex(i=>i.current.id===t),s=n[o];return s==null?"0":s.toPrecision(Gi)}function dre(e){const t=document.querySelector(`[data-panel-id="${e}"]`);return t||null}function cd(e){const t=document.querySelector(`[data-panel-group-id="${e}"]`);return t||null}function bg(e){const t=document.querySelector(`[data-panel-resize-handle-id="${e}"]`);return t||null}function fre(e){return qM().findIndex(r=>r.getAttribute("data-panel-resize-handle-id")===e)??null}function qM(){return Array.from(document.querySelectorAll("[data-panel-resize-handle-id]"))}function Ey(e){return Array.from(document.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function My(e,t,n){var f,p,h,m;const r=bg(t),o=Ey(e),s=r?o.indexOf(r):-1,i=((p=(f=n[s])==null?void 0:f.current)==null?void 0:p.id)??null,l=((m=(h=n[s+1])==null?void 0:h.current)==null?void 0:m.id)??null;return[i,l]}function Sr(e){return Array.from(e.values()).sort((t,n)=>{const r=t.current.order,o=n.current.order;return r==null&&o==null?0:r==null?-1:o==null?1:r-o})}function px(e,t,n,r,o,s=null){var h;let{collapsedSize:i,collapsible:l,maxSize:f,minSize:p}=n.current;if(e==="pixels"&&(i=i/t*100,f!=null&&(f=f/t*100),p=p/t*100),l){if(r>i){if(o<=p/2+i)return i}else if(!((h=s==null?void 0:s.type)==null?void 0:h.startsWith("key"))&&o100)&&(t.current.minSize=0),o!=null&&(o<0||e==="percentages"&&o>100)&&(t.current.maxSize=null),r!==null&&(r<0||e==="percentages"&&r>100?t.current.defaultSize=null:ro&&(t.current.defaultSize=o))}function Lv({groupId:e,panels:t,nextSizes:n,prevSizes:r,units:o}){n=[...n];const s=Sr(t),i=o==="pixels"?Aa(e):NaN;let l=0;for(let f=0;f{const{direction:i,panels:l}=e.current,f=cd(t);XM(f!=null,`No group found for id "${t}"`);const{height:p,width:h}=f.getBoundingClientRect(),v=Ey(t).map(x=>{const C=x.getAttribute("data-panel-resize-handle-id"),b=Sr(l),[w,k]=My(t,C,b);if(w==null||k==null)return()=>{};let _=0,j=100,I=0,M=0;b.forEach($=>{const{id:K,maxSize:B,minSize:U}=$.current;K===w?(_=U,j=B??100):(I+=U,M+=B??100)});const E=Math.min(j,100-I),O=Math.max(_,(b.length-1)*100-M),D=KM(l,w,o);x.setAttribute("aria-valuemax",""+Math.round(E)),x.setAttribute("aria-valuemin",""+Math.round(O)),x.setAttribute("aria-valuenow",""+Math.round(parseInt(D)));const A=$=>{if(!$.defaultPrevented)switch($.key){case"Enter":{$.preventDefault();const K=b.findIndex(B=>B.current.id===w);if(K>=0){const B=b[K],U=o[K];if(U!=null){let Y=0;U.toPrecision(Gi)<=B.current.minSize.toPrecision(Gi)?Y=i==="horizontal"?h:p:Y=-(i==="horizontal"?h:p);const W=Ru($,e.current,w,k,Y,o,s.current,null);o!==W&&r(W)}}break}}};x.addEventListener("keydown",A);const R=dre(w);return R!=null&&x.setAttribute("aria-controls",R.id),()=>{x.removeAttribute("aria-valuemax"),x.removeAttribute("aria-valuemin"),x.removeAttribute("aria-valuenow"),x.removeEventListener("keydown",A),R!=null&&x.removeAttribute("aria-controls")}});return()=>{v.forEach(x=>x())}},[e,t,n,s,r,o])}function mre({disabled:e,handleId:t,resizeHandler:n}){ea(()=>{if(e||n==null)return;const r=bg(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=qM(),l=fre(t);XM(l!==null);const f=s.shiftKey?l>0?l-1:i.length-1:l+1{r.removeEventListener("keydown",o)}},[e,t,n])}function zv(e,t){if(e.length!==t.length)return!1;for(let n=0;nO.current.id===I),E=r[M];if(E.current.collapsible){const O=h[M];(O===0||O.toPrecision(Gi)===E.current.minSize.toPrecision(Gi))&&(k=k<0?-E.current.minSize*C:E.current.minSize*C)}return k}else return YM(e,n,o,l,f)}function vre(e){return e.type==="keydown"}function hx(e){return e.type.startsWith("mouse")}function mx(e){return e.type.startsWith("touch")}let gx=null,wi=null;function QM(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 xre(){wi!==null&&(document.head.removeChild(wi),gx=null,wi=null)}function Fv(e){if(gx===e)return;gx=e;const t=QM(e);wi===null&&(wi=document.createElement("style"),document.head.appendChild(wi)),wi.innerHTML=`*{cursor: ${t}!important;}`}function bre(e,t=10){let n=null;return(...o)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...o)},t)}}function ZM(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 JM(e,t){try{const n=t.getItem(`PanelGroup:sizes:${e}`);if(n){const r=JSON.parse(n);if(typeof r=="object"&&r!=null)return r}}catch{}return null}function yre(e,t,n){const r=JM(e,n);if(r){const o=ZM(t);return r[o]??null}return null}function Cre(e,t,n,r){const o=ZM(t),s=JM(e,r)||{};s[o]=n;try{r.setItem(`PanelGroup:sizes:${e}`,JSON.stringify(s))}catch(i){console.error(i)}}const Bv={};function x_(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 Au={getItem:e=>(x_(Au),Au.getItem(e)),setItem:(e,t)=>{x_(Au),Au.setItem(e,t)}};function eO({autoSaveId:e,children:t=null,className:n="",direction:r,disablePointerEventsDuringResize:o=!1,forwardedRef:s,id:i=null,onLayout:l,storage:f=Au,style:p={},tagName:h="div",units:m="percentages"}){const v=Iy(i),[x,C]=Gu(null),[b,w]=Gu(new Map),k=$r(null);$r({didLogDefaultSizeWarning:!1,didLogIdAndOrderWarning:!1,didLogInvalidLayoutWarning:!1,prevPanelIds:[]});const _=$r({onLayout:l});ea(()=>{_.current.onLayout=l});const j=$r({}),[I,M]=Gu([]),E=$r(new Map),O=$r(0),D=$r({direction:r,id:v,panels:b,sizes:I,units:m});UM(s,()=>({getId:()=>v,getLayout:z=>{const{sizes:q,units:ne}=D.current;if((z??ne)==="pixels"){const ie=Aa(v);return q.map(oe=>oe/100*ie)}else return q},setLayout:(z,q)=>{const{id:ne,panels:Q,sizes:ie,units:oe}=D.current;if((q||oe)==="pixels"){const se=Aa(ne);z=z.map(re=>re/se*100)}const V=j.current,G=Sr(Q),J=Lv({groupId:ne,panels:Q,nextSizes:z,prevSizes:ie,units:oe});zv(ie,J)||(M(J),Dl(G,J,V))}}),[v]),Ku(()=>{D.current.direction=r,D.current.id=v,D.current.panels=b,D.current.sizes=I,D.current.units=m}),hre({committedValuesRef:D,groupId:v,panels:b,setSizes:M,sizes:I,panelSizeBeforeCollapse:E}),ea(()=>{const{onLayout:z}=_.current,{panels:q,sizes:ne}=D.current;if(ne.length>0){z&&z(ne);const Q=j.current,ie=Sr(q);Dl(ie,ne,Q)}},[I]),Ku(()=>{const{id:z,sizes:q,units:ne}=D.current;if(q.length===b.size)return;let Q=null;if(e){const ie=Sr(b);Q=yre(e,ie,f)}if(Q!=null){const ie=Lv({groupId:z,panels:b,nextSizes:Q,prevSizes:Q,units:ne});M(ie)}else{const ie=ure({groupId:z,panels:b,units:ne});M(ie)}},[e,b,f]),ea(()=>{if(e){if(I.length===0||I.length!==b.size)return;const z=Sr(b);Bv[e]||(Bv[e]=bre(Cre,100)),Bv[e](e,z,I,f)}},[e,b,I,f]),Ku(()=>{if(m==="pixels"){const z=new ResizeObserver(()=>{const{panels:q,sizes:ne}=D.current,Q=Lv({groupId:v,panels:q,nextSizes:ne,prevSizes:ne,units:m});zv(ne,Q)||M(Q)});return z.observe(cd(v)),()=>{z.disconnect()}}},[v,m]);const A=Ls((z,q)=>{const{panels:ne,units:Q}=D.current,oe=Sr(ne).findIndex(J=>J.current.id===z),V=I[oe];if((q??Q)==="pixels"){const J=Aa(v);return V/100*J}else return V},[v,I]),R=Ls((z,q)=>{const{panels:ne}=D.current;return ne.size===0?{flexBasis:0,flexGrow:q??void 0,flexShrink:1,overflow:"hidden"}:{flexBasis:0,flexGrow:KM(ne,z,I),flexShrink:1,overflow:"hidden",pointerEvents:o&&x!==null?"none":void 0}},[x,o,I]),$=Ls((z,q)=>{const{units:ne}=D.current;pre(ne,q),w(Q=>{if(Q.has(z))return Q;const ie=new Map(Q);return ie.set(z,q),ie})},[]),K=Ls(z=>ne=>{ne.preventDefault();const{direction:Q,panels:ie,sizes:oe}=D.current,V=Sr(ie),[G,J]=My(v,z,V);if(G==null||J==null)return;let se=gre(ne,v,z,V,Q,oe,k.current);if(se===0)return;const fe=cd(v).getBoundingClientRect(),de=Q==="horizontal";document.dir==="rtl"&&de&&(se=-se);const me=de?fe.width:fe.height,ye=se/me*100,he=Ru(ne,D.current,G,J,ye,oe,E.current,k.current),ue=!zv(oe,he);if((hx(ne)||mx(ne))&&O.current!=ye&&Fv(ue?de?"horizontal":"vertical":de?se<0?"horizontal-min":"horizontal-max":se<0?"vertical-min":"vertical-max"),ue){const De=j.current;M(he),Dl(V,he,De)}O.current=ye},[v]),B=Ls(z=>{w(q=>{if(!q.has(z))return q;const ne=new Map(q);return ne.delete(z),ne})},[]),U=Ls(z=>{const{panels:q,sizes:ne}=D.current,Q=q.get(z);if(Q==null)return;const{collapsedSize:ie,collapsible:oe}=Q.current;if(!oe)return;const V=Sr(q),G=V.indexOf(Q);if(G<0)return;const J=ne[G];if(J===ie)return;E.current.set(z,J);const[se,re]=$v(z,V);if(se==null||re==null)return;const de=G===V.length-1?J:ie-J,me=Ru(null,D.current,se,re,de,ne,E.current,null);if(ne!==me){const ye=j.current;M(me),Dl(V,me,ye)}},[]),Y=Ls(z=>{const{panels:q,sizes:ne}=D.current,Q=q.get(z);if(Q==null)return;const{collapsedSize:ie,minSize:oe}=Q.current,V=E.current.get(z)||oe;if(!V)return;const G=Sr(q),J=G.indexOf(Q);if(J<0||ne[J]!==ie)return;const[re,fe]=$v(z,G);if(re==null||fe==null)return;const me=J===G.length-1?ie-V:V,ye=Ru(null,D.current,re,fe,me,ne,E.current,null);if(ne!==ye){const he=j.current;M(ye),Dl(G,ye,he)}},[]),W=Ls((z,q,ne)=>{const{id:Q,panels:ie,sizes:oe,units:V}=D.current;if((ne||V)==="pixels"){const rt=Aa(Q);q=q/rt*100}const G=ie.get(z);if(G==null)return;let{collapsedSize:J,collapsible:se,maxSize:re,minSize:fe}=G.current;if(V==="pixels"){const rt=Aa(Q);fe=fe/rt*100,re!=null&&(re=re/rt*100)}const de=Sr(ie),me=de.indexOf(G);if(me<0)return;const ye=oe[me];if(ye===q)return;se&&q===J||(q=Math.min(re??100,Math.max(fe,q)));const[he,ue]=$v(z,de);if(he==null||ue==null)return;const je=me===de.length-1?ye-q:q-ye,Be=Ru(null,D.current,he,ue,je,oe,E.current,null);if(oe!==Be){const rt=j.current;M(Be),Dl(de,Be,rt)}},[]),L=ire(()=>({activeHandleId:x,collapsePanel:U,direction:r,expandPanel:Y,getPanelSize:A,getPanelStyle:R,groupId:v,registerPanel:$,registerResizeHandle:K,resizePanel:W,startDragging:(z,q)=>{if(C(z),hx(q)||mx(q)){const ne=bg(z);k.current={dragHandleRect:ne.getBoundingClientRect(),dragOffset:YM(q,z,r),sizes:D.current.sizes}}},stopDragging:()=>{xre(),C(null),k.current=null},units:m,unregisterPanel:B}),[x,U,r,Y,A,R,v,$,K,W,m,B]),X={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return Pc(xg.Provider,{children:Pc(h,{children:t,className:n,"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":v,"data-panel-group-units":m,style:{...X,...p}}),value:L})}const yg=WM((e,t)=>Pc(eO,{...e,forwardedRef:t}));eO.displayName="PanelGroup";yg.displayName="forwardRef(PanelGroup)";function vx({children:e=null,className:t="",disabled:n=!1,id:r=null,onDragging:o,style:s={},tagName:i="div"}){const l=$r(null),f=$r({onDragging:o});ea(()=>{f.current.onDragging=o});const p=VM(xg);if(p===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{activeHandleId:h,direction:m,groupId:v,registerResizeHandle:x,startDragging:C,stopDragging:b}=p,w=Iy(r),k=h===w,[_,j]=Gu(!1),[I,M]=Gu(null),E=Ls(()=>{l.current.blur(),b();const{onDragging:A}=f.current;A&&A(!1)},[b]);ea(()=>{if(n)M(null);else{const D=x(w);M(()=>D)}},[n,w,x]),ea(()=>{if(n||I==null||!k)return;const D=K=>{I(K)},A=K=>{I(K)},$=l.current.ownerDocument;return $.body.addEventListener("contextmenu",E),$.body.addEventListener("mousemove",D),$.body.addEventListener("touchmove",D),$.body.addEventListener("mouseleave",A),window.addEventListener("mouseup",E),window.addEventListener("touchend",E),()=>{$.body.removeEventListener("contextmenu",E),$.body.removeEventListener("mousemove",D),$.body.removeEventListener("touchmove",D),$.body.removeEventListener("mouseleave",A),window.removeEventListener("mouseup",E),window.removeEventListener("touchend",E)}},[m,n,k,I,E]),mre({disabled:n,handleId:w,resizeHandler:I});const O={cursor:QM(m),touchAction:"none",userSelect:"none"};return Pc(i,{children:e,className:t,"data-resize-handle-active":k?"pointer":_?"keyboard":void 0,"data-panel-group-direction":m,"data-panel-group-id":v,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":w,onBlur:()=>j(!1),onFocus:()=>j(!0),onMouseDown:D=>{C(w,D.nativeEvent);const{onDragging:A}=f.current;A&&A(!0)},onMouseUp:E,onTouchCancel:E,onTouchEnd:E,onTouchStart:D=>{C(w,D.nativeEvent);const{onDragging:A}=f.current;A&&A(!0)},ref:l,role:"separator",style:{...O,...s},tabIndex:0})}vx.displayName="PanelResizeHandle";const wre=e=>{const{direction:t="horizontal",collapsedDirection:n,isCollapsed:r=!1,...o}=e,s=Ti("base.100","base.850"),i=Ti("base.300","base.700");return t==="horizontal"?a.jsx(vx,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx(T,{className:"resize-handle-horizontal",sx:{w:n?2.5:4,h:"full",justifyContent:n?n==="left"?"flex-start":"flex-end":"center",alignItems:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Ie,{sx:{w:1,h:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})}):a.jsx(vx,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx(T,{className:"resize-handle-vertical",sx:{w:"full",h:n?2.5:4,alignItems:n?n==="top"?"flex-start":"flex-end":"center",justifyContent:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Ie,{sx:{h:1,w:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})})},om=d.memo(wre),Oy=()=>{const e=te(),t=F(o=>o.ui.panels),n=d.useCallback(o=>t[o]??"",[t]),r=d.useCallback((o,s)=>{e(ID({name:o,value:s}))},[e]);return{getItem:n,setItem:r}};const Sre=e=>{const{label:t,data:n,fileName:r,withDownload:o=!0,withCopy:s=!0}=e,i=d.useMemo(()=>ED(n)?n:JSON.stringify(n,null,2),[n]),l=d.useCallback(()=>{navigator.clipboard.writeText(i)},[i]),f=d.useCallback(()=>{const p=new Blob([i]),h=document.createElement("a");h.href=URL.createObjectURL(p),h.download=`${r||t}.json`,document.body.appendChild(h),h.click(),h.remove()},[i,t,r]);return a.jsxs(T,{layerStyle:"second",sx:{borderRadius:"base",flexGrow:1,w:"full",h:"full",position:"relative"},children:[a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"auto",p:4,fontSize:"sm"},children:a.jsx(lg,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsx("pre",{children:i})})}),a.jsxs(T,{sx:{position:"absolute",top:0,insetInlineEnd:0,p:2},children:[o&&a.jsx(Dt,{label:`Download ${t} JSON`,children:a.jsx(ps,{"aria-label":`Download ${t} JSON`,icon:a.jsx(Jm,{}),variant:"ghost",opacity:.7,onClick:f})}),s&&a.jsx(Dt,{label:`Copy ${t} JSON`,children:a.jsx(ps,{"aria-label":`Copy ${t} JSON`,icon:a.jsx(Hc,{}),variant:"ghost",opacity:.7,onClick:l})})]})]})},Oi=d.memo(Sre),kre=ae(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(r=>r.id===t);return{data:n==null?void 0:n.data}},Ce),_re=()=>{const{data:e}=F(kre);return e?a.jsx(Oi,{data:e,label:"Node Data"}):a.jsx(tr,{label:"No node selected",icon:null})},jre=d.memo(_re),Pre=e=>a.jsx(T,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx(lg,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:e.children})})}),Dy=d.memo(Pre),Ire=({output:e})=>{const{image:t}=e,{data:n}=po(t.image_name);return a.jsx(Ya,{imageDTO:n})},Ere=d.memo(Ire),Mre=ae(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(s=>s.id===t),r=n?e.nodeTemplates[n.data.type]:void 0,o=e.nodeExecutionStates[t??"__UNKNOWN_NODE__"];return{node:n,template:r,nes:o}},Ce),Ore=()=>{const{node:e,template:t,nes:n}=F(Mre);return!e||!n||!Cn(e)?a.jsx(tr,{label:"No node selected",icon:null}):n.outputs.length===0?a.jsx(tr,{label:"No outputs recorded",icon:null}):a.jsx(Ie,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(Dy,{children:a.jsx(T,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:(t==null?void 0:t.outputType)==="image_output"?n.outputs.map((r,o)=>a.jsx(Ere,{output:r},Rre(r,o))):a.jsx(Oi,{data:n.outputs,label:"Node Outputs"})})})})},Dre=d.memo(Ore),Rre=(e,t)=>`${e.type}-${t}`,Are=ae(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(o=>o.id===t);return{template:n?e.nodeTemplates[n.data.type]:void 0}},Ce),Nre=()=>{const{template:e}=F(Are);return e?a.jsx(Oi,{data:e,label:"Node Template"}):a.jsx(tr,{label:"No node selected",icon:null})},Tre=d.memo(Nre),$re=()=>a.jsx(T,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Yi,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(Qi,{children:[a.jsx(Pr,{children:"Outputs"}),a.jsx(Pr,{children:"Data"}),a.jsx(Pr,{children:"Template"})]}),a.jsxs(zc,{children:[a.jsx(fo,{children:a.jsx(Dre,{})}),a.jsx(fo,{children:a.jsx(jre,{})}),a.jsx(fo,{children:a.jsx(Tre,{})})]})]})}),Lre=d.memo($re),Ry=e=>{e.stopPropagation()},zre={display:"flex",flexDirection:"row",alignItems:"center",gap:10},Fre=e=>{const{label:t="",labelPos:n="top",isDisabled:r=!1,isInvalid:o,formControlProps:s,...i}=e,l=te(),f=d.useCallback(h=>{h.shiftKey&&l(Ir(!0))},[l]),p=d.useCallback(h=>{h.shiftKey||l(Ir(!1))},[l]);return a.jsxs(un,{isInvalid:o,isDisabled:r,...s,style:n==="side"?zre:void 0,children:[t!==""&&a.jsx(Gn,{children:t}),a.jsx(Pm,{...i,onPaste:Ry,onKeyDown:f,onKeyUp:p})]})},io=d.memo(Fre),Bre=Pe((e,t)=>{const n=te(),r=d.useCallback(s=>{s.shiftKey&&n(Ir(!0))},[n]),o=d.useCallback(s=>{s.shiftKey||n(Ir(!1))},[n]);return a.jsx(MP,{ref:t,onPaste:Ry,onKeyDown:r,onKeyUp:o,...e})}),oa=d.memo(Bre),Hre=ae(xe,({nodes:e})=>{const{author:t,name:n,description:r,tags:o,version:s,contact:i,notes:l}=e.workflow;return{name:n,author:t,description:r,tags:o,version:s,contact:i,notes:l}},Ce),Wre=()=>{const{author:e,name:t,description:n,tags:r,version:o,contact:s,notes:i}=F(Hre),l=te(),f=d.useCallback(b=>{l(MD(b.target.value))},[l]),p=d.useCallback(b=>{l(OD(b.target.value))},[l]),h=d.useCallback(b=>{l(DD(b.target.value))},[l]),m=d.useCallback(b=>{l(RD(b.target.value))},[l]),v=d.useCallback(b=>{l(AD(b.target.value))},[l]),x=d.useCallback(b=>{l(ND(b.target.value))},[l]),C=d.useCallback(b=>{l(TD(b.target.value))},[l]);return a.jsx(Dy,{children:a.jsxs(T,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:[a.jsxs(T,{sx:{gap:2,w:"full"},children:[a.jsx(io,{label:"Name",value:t,onChange:f}),a.jsx(io,{label:"Version",value:o,onChange:m})]}),a.jsxs(T,{sx:{gap:2,w:"full"},children:[a.jsx(io,{label:"Author",value:e,onChange:p}),a.jsx(io,{label:"Contact",value:s,onChange:h})]}),a.jsx(io,{label:"Tags",value:r,onChange:x}),a.jsxs(un,{as:T,sx:{flexDir:"column"},children:[a.jsx(Gn,{children:"Short Description"}),a.jsx(oa,{onChange:v,value:n,fontSize:"sm",sx:{resize:"none"}})]}),a.jsxs(un,{as:T,sx:{flexDir:"column",h:"full"},children:[a.jsx(Gn,{children:"Notes"}),a.jsx(oa,{onChange:C,value:i,fontSize:"sm",sx:{h:"full",resize:"none"}})]})]})})},Vre=d.memo(Wre);function Ure(e,t,n){var r=this,o=d.useRef(null),s=d.useRef(0),i=d.useRef(null),l=d.useRef([]),f=d.useRef(),p=d.useRef(),h=d.useRef(e),m=d.useRef(!0);d.useEffect(function(){h.current=e},[e]);var v=!t&&t!==0&&typeof window<"u";if(typeof e!="function")throw new TypeError("Expected a function");t=+t||0;var x=!!(n=n||{}).leading,C=!("trailing"in n)||!!n.trailing,b="maxWait"in n,w=b?Math.max(+n.maxWait||0,t):null;d.useEffect(function(){return m.current=!0,function(){m.current=!1}},[]);var k=d.useMemo(function(){var _=function(D){var A=l.current,R=f.current;return l.current=f.current=null,s.current=D,p.current=h.current.apply(R,A)},j=function(D,A){v&&cancelAnimationFrame(i.current),i.current=v?requestAnimationFrame(D):setTimeout(D,A)},I=function(D){if(!m.current)return!1;var A=D-o.current;return!o.current||A>=t||A<0||b&&D-s.current>=w},M=function(D){return i.current=null,C&&l.current?_(D):(l.current=f.current=null,p.current)},E=function D(){var A=Date.now();if(I(A))return M(A);if(m.current){var R=t-(A-o.current),$=b?Math.min(R,w-(A-s.current)):R;j(D,$)}},O=function(){var D=Date.now(),A=I(D);if(l.current=[].slice.call(arguments),f.current=r,o.current=D,A){if(!i.current&&m.current)return s.current=o.current,j(E,t),x?_(o.current):p.current;if(b)return j(E,t),_(o.current)}return i.current||j(E,t),p.current};return O.cancel=function(){i.current&&(v?cancelAnimationFrame(i.current):clearTimeout(i.current)),s.current=0,l.current=o.current=f.current=i.current=null},O.isPending=function(){return!!i.current},O.flush=function(){return i.current?M(Date.now()):p.current},O},[x,b,t,w,C,v]);return k}function Gre(e,t){return e===t}function b_(e){return typeof e=="function"?function(){return e}:e}function Kre(e,t,n){var r,o,s=n&&n.equalityFn||Gre,i=(r=d.useState(b_(e)),o=r[1],[r[0],d.useCallback(function(m){return o(b_(m))},[])]),l=i[0],f=i[1],p=Ure(d.useCallback(function(m){return f(m)},[f]),t,n),h=d.useRef(e);return s(h.current,e)||(p(e),h.current=e),[l,p]}const tO=()=>{const e=F(r=>r.nodes),[t]=Kre(e,300);return d.useMemo(()=>$D(t),[t])},qre=()=>{const e=tO();return a.jsx(T,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:a.jsx(Oi,{data:e,label:"Workflow"})})},Xre=d.memo(qre),Yre=({isSelected:e,isHovered:t})=>{const n=d.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.light";if(e)return"nodeSelected.light";if(t)return"nodeHovered.light"},[t,e]),r=d.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.dark";if(e)return"nodeSelected.dark";if(t)return"nodeHovered.dark"},[t,e]);return a.jsx(Ie,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e||t?1:.5,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:n,_dark:{shadow:r}}})},nO=d.memo(Yre),rO=e=>{const t=te(),n=d.useMemo(()=>ae(xe,({nodes:i})=>i.mouseOverNode===e,Ce),[e]),r=F(n),o=d.useCallback(()=>{!r&&t(GC(e))},[t,e,r]),s=d.useCallback(()=>{r&&t(GC(null))},[t,r]);return{isMouseOverNode:r,handleMouseOver:o,handleMouseOut:s}},oO=(e,t)=>{const n=d.useMemo(()=>ae(xe,({nodes:o})=>{var i;const s=o.nodes.find(l=>l.id===e);if(Cn(s))return(i=s==null?void 0:s.data.inputs[t])==null?void 0:i.label},Ce),[t,e]);return F(n)},sO=(e,t,n)=>{const r=d.useMemo(()=>ae(xe,({nodes:s})=>{var f;const i=s.nodes.find(p=>p.id===e);if(!Cn(i))return;const l=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return(f=l==null?void 0:l[Wx[n]][t])==null?void 0:f.title},Ce),[t,n,e]);return F(r)},aO=(e,t)=>{const n=d.useMemo(()=>ae(xe,({nodes:o})=>{const s=o.nodes.find(i=>i.id===e);if(Cn(s))return s==null?void 0:s.data.inputs[t]},Ce),[t,e]);return F(n)},Cg=(e,t,n)=>{const r=d.useMemo(()=>ae(xe,({nodes:s})=>{const i=s.nodes.find(f=>f.id===e);if(!Cn(i))return;const l=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return l==null?void 0:l[Wx[n]][t]},Ce),[t,n,e]);return F(r)},Qre=({nodeId:e,fieldName:t,kind:n})=>{const r=aO(e,t),o=Cg(e,t,n),s=LD(o),i=d.useMemo(()=>zD(r)?r.label&&(o!=null&&o.title)?`${r.label} (${o.title})`:r.label&&!o?r.label:!r.label&&o?o.title:"Unknown Field":(o==null?void 0:o.title)||"Unknown Field",[r,o]);return a.jsxs(T,{sx:{flexDir:"column"},children:[a.jsx(be,{sx:{fontWeight:600},children:i}),o&&a.jsx(be,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:o.description}),o&&a.jsxs(be,{children:["Type: ",yd[o.type].title]}),s&&a.jsxs(be,{children:["Input: ",FD(o.input)]})]})},Ay=d.memo(Qre),Zre=Pe((e,t)=>{const{nodeId:n,fieldName:r,kind:o,isMissingInput:s=!1,withTooltip:i=!1}=e,l=oO(n,r),f=sO(n,r,o),p=te(),[h,m]=d.useState(l||f||"Unknown Field"),v=d.useCallback(async C=>{C&&(C===l||C===f)||(m(C||f||"Unknown Field"),p(BD({nodeId:n,fieldName:r,label:C})))},[l,f,p,n,r]),x=d.useCallback(C=>{m(C)},[]);return d.useEffect(()=>{m(l||f||"Unknown Field")},[l,f]),a.jsx(Dt,{label:i?a.jsx(Ay,{nodeId:n,fieldName:r,kind:"input"}):void 0,openDelay:gm,placement:"top",hasArrow:!0,children:a.jsx(T,{ref:t,sx:{position:"relative",overflow:"hidden",alignItems:"center",justifyContent:"flex-start",gap:1,h:"full"},children:a.jsxs(km,{value:h,onChange:x,onSubmit:v,as:T,sx:{position:"relative",alignItems:"center",h:"full"},children:[a.jsx(Sm,{sx:{p:0,fontWeight:s?600:400,textAlign:"left",_hover:{fontWeight:"600 !important"}},noOfLines:1}),a.jsx(wm,{className:"nodrag",sx:{p:0,w:"full",fontWeight:600,color:"base.900",_dark:{color:"base.100"},_focusVisible:{p:0,textAlign:"left",boxShadow:"none"}}}),a.jsx(lO,{})]})})})}),iO=d.memo(Zre),lO=d.memo(()=>{const{isEditing:e,getEditButtonProps:t}=B3(),n=d.useCallback(r=>{const{onClick:o}=t();o&&(o(r),r.preventDefault())},[t]);return e?null:a.jsx(T,{onClick:n,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,cursor:"text"})});lO.displayName="EditableControls";const Jre=e=>{const{nodeId:t,field:n}=e,r=te(),o=d.useCallback(s=>{r(HD({nodeId:t,fieldName:n.name,value:s.target.checked}))},[r,n.name,t]);return a.jsx(Lb,{className:"nodrag",onChange:o,isChecked:n.value})},eoe=d.memo(Jre);function wg(){return(wg=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function xx(e){var t=d.useRef(e),n=d.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var Ic=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:w.buttons>0)&&o.current?s(y_(o.current,w,l.current)):b(!1)},C=function(){return b(!1)};function b(w){var k=f.current,_=bx(o.current),j=w?_.addEventListener:_.removeEventListener;j(k?"touchmove":"mousemove",x),j(k?"touchend":"mouseup",C)}return[function(w){var k=w.nativeEvent,_=o.current;if(_&&(C_(k),!function(I,M){return M&&!qu(I)}(k,f.current)&&_)){if(qu(k)){f.current=!0;var j=k.changedTouches||[];j.length&&(l.current=j[0].identifier)}_.focus(),s(y_(_,k,l.current)),b(!0)}},function(w){var k=w.which||w.keyCode;k<37||k>40||(w.preventDefault(),i({left:k===39?.05:k===37?-.05:0,top:k===40?.05:k===38?-.05:0}))},b]},[i,s]),h=p[0],m=p[1],v=p[2];return d.useEffect(function(){return v},[v]),H.createElement("div",wg({},r,{onTouchStart:h,onMouseDown:h,className:"react-colorful__interactive",ref:o,onKeyDown:m,tabIndex:0,role:"slider"}))}),Sg=function(e){return e.filter(Boolean).join(" ")},Ty=function(e){var t=e.color,n=e.left,r=e.top,o=r===void 0?.5:r,s=Sg(["react-colorful__pointer",e.className]);return H.createElement("div",{className:s,style:{top:100*o+"%",left:100*n+"%"}},H.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},dr=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},uO=function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:dr(e.h),s:dr(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:dr(o/2),a:dr(r,2)}},yx=function(e){var t=uO(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Hv=function(e){var t=uO(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},toe=function(e){var t=e.h,n=e.s,r=e.v,o=e.a;t=t/360*6,n/=100,r/=100;var s=Math.floor(t),i=r*(1-n),l=r*(1-(t-s)*n),f=r*(1-(1-t+s)*n),p=s%6;return{r:dr(255*[r,l,i,i,f,r][p]),g:dr(255*[f,r,r,l,i,i][p]),b:dr(255*[i,i,f,r,r,l][p]),a:dr(o,2)}},noe=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,s=Math.max(t,n,r),i=s-Math.min(t,n,r),l=i?s===t?(n-r)/i:s===n?2+(r-t)/i:4+(t-n)/i:0;return{h:dr(60*(l<0?l+6:l)),s:dr(s?i/s*100:0),v:dr(s/255*100),a:o}},roe=H.memo(function(e){var t=e.hue,n=e.onChange,r=Sg(["react-colorful__hue",e.className]);return H.createElement("div",{className:r},H.createElement(Ny,{onMove:function(o){n({h:360*o.left})},onKey:function(o){n({h:Ic(t+360*o.left,0,360)})},"aria-label":"Hue","aria-valuenow":dr(t),"aria-valuemax":"360","aria-valuemin":"0"},H.createElement(Ty,{className:"react-colorful__hue-pointer",left:t/360,color:yx({h:t,s:100,v:100,a:1})})))}),ooe=H.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:yx({h:t.h,s:100,v:100,a:1})};return H.createElement("div",{className:"react-colorful__saturation",style:r},H.createElement(Ny,{onMove:function(o){n({s:100*o.left,v:100-100*o.top})},onKey:function(o){n({s:Ic(t.s+100*o.left,0,100),v:Ic(t.v-100*o.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+dr(t.s)+"%, Brightness "+dr(t.v)+"%"},H.createElement(Ty,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:yx(t)})))}),dO=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function soe(e,t,n){var r=xx(n),o=d.useState(function(){return e.toHsva(t)}),s=o[0],i=o[1],l=d.useRef({color:t,hsva:s});d.useEffect(function(){if(!e.equal(t,l.current.color)){var p=e.toHsva(t);l.current={hsva:p,color:t},i(p)}},[t,e]),d.useEffect(function(){var p;dO(s,l.current.hsva)||e.equal(p=e.fromHsva(s),l.current.color)||(l.current={hsva:s,color:p},r(p))},[s,e,r]);var f=d.useCallback(function(p){i(function(h){return Object.assign({},h,p)})},[]);return[s,f]}var aoe=typeof window<"u"?d.useLayoutEffect:d.useEffect,ioe=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},w_=new Map,loe=function(e){aoe(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!w_.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}`,w_.set(t,n);var r=ioe();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},coe=function(e){var t=e.className,n=e.hsva,r=e.onChange,o={backgroundImage:"linear-gradient(90deg, "+Hv(Object.assign({},n,{a:0}))+", "+Hv(Object.assign({},n,{a:1}))+")"},s=Sg(["react-colorful__alpha",t]),i=dr(100*n.a);return H.createElement("div",{className:s},H.createElement("div",{className:"react-colorful__alpha-gradient",style:o}),H.createElement(Ny,{onMove:function(l){r({a:l.left})},onKey:function(l){r({a:Ic(n.a+l.left)})},"aria-label":"Alpha","aria-valuetext":i+"%","aria-valuenow":i,"aria-valuemin":"0","aria-valuemax":"100"},H.createElement(Ty,{className:"react-colorful__alpha-pointer",left:n.a,color:Hv(n)})))},uoe=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,s=e.onChange,i=cO(e,["className","colorModel","color","onChange"]),l=d.useRef(null);loe(l);var f=soe(n,o,s),p=f[0],h=f[1],m=Sg(["react-colorful",t]);return H.createElement("div",wg({},i,{ref:l,className:m}),H.createElement(ooe,{hsva:p,onChange:h}),H.createElement(roe,{hue:p.h,onChange:h}),H.createElement(coe,{hsva:p,onChange:h,className:"react-colorful__last-control"}))},doe={defaultColor:{r:0,g:0,b:0,a:1},toHsva:noe,fromHsva:toe,equal:dO},fO=function(e){return H.createElement(uoe,wg({},e,{colorModel:doe}))};const foe=e=>{const{nodeId:t,field:n}=e,r=te(),o=d.useCallback(s=>{r(WD({nodeId:t,fieldName:n.name,value:s}))},[r,n.name,t]);return a.jsx(fO,{className:"nodrag",color:n.value,onChange:o})},poe=d.memo(foe),pO=e=>{const t=Dc("models"),[n,r,o]=e.split("/"),s=VD.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},hoe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=te(),{data:s}=Vx(),i=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/controlnet/${r==null?void 0:r.model_name}`])??null,[r==null?void 0:r.base_model,r==null?void 0:r.model_name,s==null?void 0:s.entities]),l=d.useMemo(()=>{if(!s)return[];const p=[];return Fn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:mn[h.base_model]})}),p},[s]),f=d.useCallback(p=>{if(!p)return;const h=pO(p);h&&o(UD({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(Bn,{className:"nowheel nodrag",tooltip:i==null?void 0:i.description,value:(i==null?void 0:i.id)??null,placeholder:"Pick one",error:!i,data:l,onChange:f,sx:{width:"100%"}})},moe=d.memo(hoe),goe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=te(),s=d.useCallback(i=>{o(GD({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return a.jsx(gP,{className:"nowheel nodrag",onChange:s,value:n.value,children:r.options.map(i=>a.jsx("option",{children:i},i))})},voe=d.memo(goe),xoe=e=>{var p;const{nodeId:t,field:n}=e,r=te(),{currentData:o}=po(((p=n.value)==null?void 0:p.image_name)??zr.skipToken),s=d.useCallback(()=>{r(KD({nodeId:t,fieldName:n.name,value:void 0}))},[r,n.name,t]),i=d.useMemo(()=>{if(o)return{id:`node-${t}-${n.name}`,payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[n.name,o,t]),l=d.useMemo(()=>({id:`node-${t}-${n.name}`,actionType:"SET_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}}),[n.name,t]),f=d.useMemo(()=>({type:"SET_NODES_IMAGE",nodeId:t,fieldName:n.name}),[t,n.name]);return a.jsx(T,{className:"nodrag",sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(Ya,{imageDTO:o,droppableData:l,draggableData:i,postUploadAction:f,useThumbailFallback:!0,uploadElement:a.jsx(hO,{}),dropLabel:a.jsx(mO,{}),minSize:8,children:a.jsx(cc,{onClick:s,icon:o?a.jsx(tg,{}):void 0,tooltip:"Reset Image"})})})},boe=d.memo(xoe),hO=d.memo(()=>a.jsx(be,{fontSize:16,fontWeight:600,children:"Drop or Upload"}));hO.displayName="UploadElement";const mO=d.memo(()=>a.jsx(be,{fontSize:16,fontWeight:600,children:"Drop"}));mO.displayName="DropLabel";const yoe=e=>{const t=Dc("models"),[n,r,o]=e.split("/"),s=qD.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},Coe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=te(),{data:s}=vm(),i=d.useMemo(()=>{if(!s)return[];const p=[];return Fn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:mn[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),l=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/lora/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r==null?void 0:r.base_model,r==null?void 0:r.model_name]),f=d.useCallback(p=>{if(!p)return;const h=yoe(p);h&&o(XD({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return(s==null?void 0:s.ids.length)===0?a.jsx(T,{sx:{justifyContent:"center",p:2},children:a.jsx(be,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Gt,{className:"nowheel nodrag",value:(l==null?void 0:l.id)??null,placeholder:i.length>0?"Select a LoRA":"No LoRAs available",data:i,nothingFound:"No matching LoRAs",itemComponent:ri,disabled:i.length===0,filter:(p,h)=>{var m;return((m=h.label)==null?void 0:m.toLowerCase().includes(p.toLowerCase().trim()))||h.value.toLowerCase().includes(p.toLowerCase().trim())},error:!l,onChange:f,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},woe=d.memo(Coe),kg=e=>{const t=Dc("models"),[n,r,o]=e.split("/"),s=YD.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data};function Vc(e){const{iconMode:t=!1,...n}=e,r=te(),{t:o}=we(),[s,{isLoading:i}]=QD(),l=()=>{s().unwrap().then(f=>{r(Nt(zt({title:`${o("modelManager.modelsSynced")}`,status:"success"})))}).catch(f=>{f&&r(Nt(zt({title:`${o("modelManager.modelSyncFailed")}`,status:"error"})))})};return t?a.jsx(Te,{icon:a.jsx(TE,{}),tooltip:o("modelManager.syncModels"),"aria-label":o("modelManager.syncModels"),isLoading:i,onClick:l,size:"sm",...n}):a.jsx(it,{isLoading:i,onClick:l,minW:"max-content",...n,children:"Sync Models"})}const Soe=e=>{var x,C;const{nodeId:t,field:n}=e,r=te(),o=qt("syncModels").isFeatureEnabled,{data:s,isLoading:i}=Xu(KC),{data:l,isLoading:f}=Bo(KC),p=d.useMemo(()=>i||f,[i,f]),h=d.useMemo(()=>{if(!l)return[];const b=[];return Fn(l.entities,(w,k)=>{w&&b.push({value:k,label:w.model_name,group:mn[w.base_model]})}),s&&Fn(s.entities,(w,k)=>{w&&b.push({value:k,label:w.model_name,group:mn[w.base_model]})}),b},[l,s]),m=d.useMemo(()=>{var b,w,k,_;return((l==null?void 0:l.entities[`${(b=n.value)==null?void 0:b.base_model}/main/${(w=n.value)==null?void 0:w.model_name}`])||(s==null?void 0:s.entities[`${(k=n.value)==null?void 0:k.base_model}/onnx/${(_=n.value)==null?void 0:_.model_name}`]))??null},[(x=n.value)==null?void 0:x.base_model,(C=n.value)==null?void 0:C.model_name,l==null?void 0:l.entities,s==null?void 0:s.entities]),v=d.useCallback(b=>{if(!b)return;const w=kg(b);w&&r(Gj({nodeId:t,fieldName:n.name,value:w}))},[r,n.name,t]);return a.jsxs(T,{sx:{w:"full",alignItems:"center",gap:2},children:[p?a.jsx(be,{variant:"subtext",children:"Loading..."}):a.jsx(Gt,{className:"nowheel nodrag",tooltip:m==null?void 0:m.description,value:m==null?void 0:m.id,placeholder:h.length>0?"Select a model":"No models available",data:h,error:!m,disabled:h.length===0,onChange:v,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),o&&a.jsx(Vc,{className:"nodrag",iconMode:!0})]})},koe=d.memo(Soe),sm=/^-?(0\.)?\.?$/,_oe=e=>{const{label:t,isDisabled:n=!1,showStepper:r=!0,isInvalid:o,value:s,onChange:i,min:l,max:f,isInteger:p=!0,formControlProps:h,formLabelProps:m,numberInputFieldProps:v,numberInputStepperProps:x,tooltipProps:C,...b}=e,w=te(),[k,_]=d.useState(String(s));d.useEffect(()=>{!k.match(sm)&&s!==Number(k)&&_(String(s))},[s,k]);const j=O=>{_(O),O.match(sm)||i(p?Math.floor(Number(O)):Number(O))},I=O=>{const D=Ri(p?Math.floor(Number(O.target.value)):Number(O.target.value),l,f);_(String(D)),i(D)},M=d.useCallback(O=>{O.shiftKey&&w(Ir(!0))},[w]),E=d.useCallback(O=>{O.shiftKey||w(Ir(!1))},[w]);return a.jsx(Dt,{...C,children:a.jsxs(un,{isDisabled:n,isInvalid:o,...h,children:[t&&a.jsx(Gn,{...m,children:t}),a.jsxs(Dm,{value:k,min:l,max:f,keepWithinRange:!0,clampValueOnBlur:!1,onChange:j,onBlur:I,...b,onPaste:Ry,children:[a.jsx(Am,{...v,onKeyDown:M,onKeyUp:E}),r&&a.jsxs(Rm,{children:[a.jsx(Tm,{...x}),a.jsx(Nm,{...x})]})]})]})})},Uc=d.memo(_oe),joe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=te(),[s,i]=d.useState(String(n.value)),l=d.useMemo(()=>r.type==="integer",[r.type]),f=p=>{i(p),p.match(sm)||o(ZD({nodeId:t,fieldName:n.name,value:l?Math.floor(Number(p)):Number(p)}))};return d.useEffect(()=>{!s.match(sm)&&n.value!==Number(s)&&i(String(n.value))},[n.value,s]),a.jsxs(Dm,{onChange:f,value:s,step:l?1:.1,precision:l?0:3,children:[a.jsx(Am,{className:"nodrag"}),a.jsxs(Rm,{children:[a.jsx(Tm,{}),a.jsx(Nm,{})]})]})},Poe=d.memo(joe),Ioe=e=>{var m,v;const{nodeId:t,field:n}=e,r=te(),{t:o}=we(),s=qt("syncModels").isFeatureEnabled,{data:i,isLoading:l}=Bo(Ux),f=d.useMemo(()=>{if(!i)return[];const x=[];return Fn(i.entities,(C,b)=>{C&&x.push({value:b,label:C.model_name,group:mn[C.base_model]})}),x},[i]),p=d.useMemo(()=>{var x,C;return(i==null?void 0:i.entities[`${(x=n.value)==null?void 0:x.base_model}/main/${(C=n.value)==null?void 0:C.model_name}`])??null},[(m=n.value)==null?void 0:m.base_model,(v=n.value)==null?void 0:v.model_name,i==null?void 0:i.entities]),h=d.useCallback(x=>{if(!x)return;const C=kg(x);C&&r(JD({nodeId:t,fieldName:n.name,value:C}))},[r,n.name,t]);return l?a.jsx(Gt,{label:o("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs(T,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Gt,{className:"nowheel nodrag",tooltip:p==null?void 0:p.description,value:p==null?void 0:p.id,placeholder:f.length>0?"Select a model":"No models available",data:f,error:!p,disabled:f.length===0,onChange:h,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Vc,{className:"nodrag",iconMode:!0})]})},Eoe=d.memo(Ioe),Moe=e=>{var v,x;const{nodeId:t,field:n}=e,r=te(),{t:o}=we(),s=qt("syncModels").isFeatureEnabled,{data:i}=Xu(qC),{data:l,isLoading:f}=Bo(qC),p=d.useMemo(()=>{if(!l)return[];const C=[];return Fn(l.entities,(b,w)=>{!b||b.base_model!=="sdxl"||C.push({value:w,label:b.model_name,group:mn[b.base_model]})}),i&&Fn(i.entities,(b,w)=>{!b||b.base_model!=="sdxl"||C.push({value:w,label:b.model_name,group:mn[b.base_model]})}),C},[l,i]),h=d.useMemo(()=>{var C,b,w,k;return((l==null?void 0:l.entities[`${(C=n.value)==null?void 0:C.base_model}/main/${(b=n.value)==null?void 0:b.model_name}`])||(i==null?void 0:i.entities[`${(w=n.value)==null?void 0:w.base_model}/onnx/${(k=n.value)==null?void 0:k.model_name}`]))??null},[(v=n.value)==null?void 0:v.base_model,(x=n.value)==null?void 0:x.model_name,l==null?void 0:l.entities,i==null?void 0:i.entities]),m=d.useCallback(C=>{if(!C)return;const b=kg(C);b&&r(Gj({nodeId:t,fieldName:n.name,value:b}))},[r,n.name,t]);return f?a.jsx(Gt,{label:o("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs(T,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Gt,{className:"nowheel nodrag",tooltip:h==null?void 0:h.description,value:h==null?void 0:h.id,placeholder:p.length>0?"Select a model":"No models available",data:p,error:!h,disabled:p.length===0,onChange:m,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Vc,{className:"nodrag",iconMode:!0})]})},Ooe=d.memo(Moe),Doe=ae([xe],({ui:e})=>{const{favoriteSchedulers:t}=e;return{data:rr(dm,(r,o)=>({value:o,label:r,group:t.includes(o)?"Favorites":void 0})).sort((r,o)=>r.label.localeCompare(o.label))}},Ce),Roe=e=>{const{nodeId:t,field:n}=e,r=te(),{data:o}=F(Doe),s=d.useCallback(i=>{i&&r(eR({nodeId:t,fieldName:n.name,value:i}))},[r,n.name,t]);return a.jsx(Gt,{className:"nowheel nodrag",sx:{".mantine-Select-dropdown":{width:"14rem !important"}},value:n.value,data:o,onChange:s})},Aoe=d.memo(Roe),Noe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=te(),s=d.useCallback(i=>{o(tR({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return r.ui_component==="textarea"?a.jsx(oa,{className:"nodrag",onChange:s,value:n.value,rows:5,resize:"none"}):a.jsx(io,{onChange:s,value:n.value})},Toe=d.memo(Noe),gO=e=>{const t=Dc("models"),[n,r,o]=e.split("/"),s=nR.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},$oe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=te(),{data:s}=Kj(),i=d.useMemo(()=>{if(!s)return[];const p=[{value:"default",label:"Default",group:"Default"}];return Fn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:mn[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),l=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r]),f=d.useCallback(p=>{if(!p)return;const h=gO(p);h&&o(rR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(Gt,{className:"nowheel nodrag",itemComponent:ri,tooltip:l==null?void 0:l.description,value:(l==null?void 0:l.id)??"default",placeholder:"Default",data:i,onChange:f,disabled:i.length===0,error:!l,clearable:!0,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},Loe=d.memo($oe),zoe=({nodeId:e,fieldName:t})=>{const n=aO(e,t),r=Cg(e,t,"input");return(r==null?void 0:r.fieldKind)==="output"?a.jsxs(Ie,{p:2,children:["Output field in input: ",n==null?void 0:n.type]}):(n==null?void 0:n.type)==="string"&&(r==null?void 0:r.type)==="string"?a.jsx(Toe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="boolean"&&(r==null?void 0:r.type)==="boolean"?a.jsx(eoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="integer"&&(r==null?void 0:r.type)==="integer"||(n==null?void 0:n.type)==="float"&&(r==null?void 0:r.type)==="float"?a.jsx(Poe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="enum"&&(r==null?void 0:r.type)==="enum"?a.jsx(voe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ImageField"&&(r==null?void 0:r.type)==="ImageField"?a.jsx(boe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="MainModelField"&&(r==null?void 0:r.type)==="MainModelField"?a.jsx(koe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLRefinerModelField"&&(r==null?void 0:r.type)==="SDXLRefinerModelField"?a.jsx(Eoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="VaeModelField"&&(r==null?void 0:r.type)==="VaeModelField"?a.jsx(Loe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="LoRAModelField"&&(r==null?void 0:r.type)==="LoRAModelField"?a.jsx(woe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ControlNetModelField"&&(r==null?void 0:r.type)==="ControlNetModelField"?a.jsx(moe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ColorField"&&(r==null?void 0:r.type)==="ColorField"?a.jsx(poe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLMainModelField"&&(r==null?void 0:r.type)==="SDXLMainModelField"?a.jsx(Ooe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="Scheduler"&&(r==null?void 0:r.type)==="Scheduler"?a.jsx(Aoe,{nodeId:e,field:n,fieldTemplate:r}):n&&r?null:a.jsx(Ie,{p:1,children:a.jsxs(be,{sx:{fontSize:"sm",fontWeight:600,color:"error.400",_dark:{color:"error.300"}},children:["Unknown field type: ",n==null?void 0:n.type]})})},vO=d.memo(zoe),Foe=({nodeId:e,fieldName:t})=>{const n=te(),{isMouseOverNode:r,handleMouseOut:o,handleMouseOver:s}=rO(e),i=d.useCallback(()=>{n(qj({nodeId:e,fieldName:t}))},[n,t,e]);return a.jsxs(T,{onMouseEnter:s,onMouseLeave:o,layerStyle:"second",sx:{position:"relative",borderRadius:"base",w:"full",p:2},children:[a.jsxs(un,{as:T,sx:{flexDir:"column",gap:1,flexShrink:1},children:[a.jsxs(Gn,{sx:{display:"flex",alignItems:"center",mb:0},children:[a.jsx(iO,{nodeId:e,fieldName:t,kind:"input"}),a.jsx(Za,{}),a.jsx(Dt,{label:a.jsx(Ay,{nodeId:e,fieldName:t,kind:"input"}),openDelay:gm,placement:"top",hasArrow:!0,children:a.jsx(T,{h:"full",alignItems:"center",children:a.jsx(An,{as:EE})})}),a.jsx(Te,{"aria-label":"Remove from Linear View",tooltip:"Remove from Linear View",variant:"ghost",size:"sm",onClick:i,icon:a.jsx(Wr,{})})]}),a.jsx(vO,{nodeId:e,fieldName:t})]}),a.jsx(nO,{isSelected:!1,isHovered:r})]})},Boe=d.memo(Foe),Hoe=ae(xe,({nodes:e})=>({fields:e.workflow.exposedFields}),Ce),Woe=()=>{const{fields:e}=F(Hoe);return a.jsx(Ie,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(Dy,{children:a.jsx(T,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:e.length?e.map(({nodeId:t,fieldName:n})=>a.jsx(Boe,{nodeId:t,fieldName:n},`${t}.${n}`)):a.jsx(tr,{label:"No fields added to Linear View",icon:null})})})})},Voe=d.memo(Woe),Uoe=()=>a.jsx(T,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Yi,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(Qi,{children:[a.jsx(Pr,{children:"Linear"}),a.jsx(Pr,{children:"Details"}),a.jsx(Pr,{children:"JSON"})]}),a.jsxs(zc,{children:[a.jsx(fo,{children:a.jsx(Voe,{})}),a.jsx(fo,{children:a.jsx(Vre,{})}),a.jsx(fo,{children:a.jsx(Xre,{})})]})]})}),Goe=d.memo(Uoe),Koe=()=>{const[e,t]=d.useState(!1),[n,r]=d.useState(!1),o=d.useRef(null),s=Oy(),i=d.useCallback(()=>{o.current&&o.current.setLayout([50,50])},[]);return a.jsxs(T,{sx:{flexDir:"column",gap:2,height:"100%",width:"100%"},children:[a.jsx(HM,{}),a.jsxs(yg,{ref:o,id:"workflow-panel-group",direction:"vertical",style:{height:"100%",width:"100%"},storage:s,children:[a.jsx(Va,{id:"workflow",collapsible:!0,onCollapse:t,minSize:25,children:a.jsx(Goe,{})}),a.jsx(om,{direction:"vertical",onDoubleClick:i,collapsedDirection:e?"top":n?"bottom":void 0}),a.jsx(Va,{id:"inspector",collapsible:!0,onCollapse:r,minSize:25,children:a.jsx(Lre,{})})]})]})},qoe=d.memo(Koe),S_=(e,t)=>{const n=d.useRef(null),[r,o]=d.useState(()=>{var p;return!!((p=n.current)!=null&&p.getCollapsed())}),s=d.useCallback(()=>{var p;(p=n.current)!=null&&p.getCollapsed()?so.flushSync(()=>{var h;(h=n.current)==null||h.expand()}):so.flushSync(()=>{var h;(h=n.current)==null||h.collapse()})},[]),i=d.useCallback(()=>{so.flushSync(()=>{var p;(p=n.current)==null||p.expand()})},[]),l=d.useCallback(()=>{so.flushSync(()=>{var p;(p=n.current)==null||p.collapse()})},[]),f=d.useCallback(()=>{so.flushSync(()=>{var p;(p=n.current)==null||p.resize(e,t)})},[e,t]);return{ref:n,minSize:e,isCollapsed:r,setIsCollapsed:o,reset:f,toggle:s,expand:i,collapse:l}},Xoe=({isGalleryCollapsed:e,galleryPanelRef:t})=>{const{t:n}=we(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(wd,{children:a.jsx(T,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineEnd:"1.63rem",children:a.jsx(Te,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":n("common.showGalleryPanel"),onClick:r,icon:a.jsx(yne,{}),sx:{p:0,px:3,h:48,borderStartEndRadius:0,borderEndEndRadius:0,shadow:"2xl"}})})}):null},Yoe=d.memo(Xoe),Wv={borderStartStartRadius:0,borderEndStartRadius:0,shadow:"2xl"},Qoe=({isSidePanelCollapsed:e,sidePanelRef:t})=>{const{t:n}=we(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(wd,{children:a.jsxs(T,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineStart:"5.13rem",direction:"column",gap:2,children:[a.jsx(Te,{tooltip:"Show Side Panel (O, T)","aria-label":n("common.showOptionsPanel"),onClick:r,sx:Wv,icon:a.jsx(NE,{})}),a.jsx(BM,{asIconButton:!0,sx:Wv}),a.jsx(FM,{sx:Wv,asIconButton:!0})]})}):null},Zoe=d.memo(Qoe),Joe=e=>{const{label:t,activeLabel:n,children:r,defaultIsOpen:o=!1}=e,{isOpen:s,onToggle:i}=Er({defaultIsOpen:o}),{colorMode:l}=ia();return a.jsxs(Ie,{children:[a.jsxs(T,{onClick:i,sx:{alignItems:"center",p:2,px:4,gap:2,borderTopRadius:"base",borderBottomRadius:s?0:"base",bg:Ae("base.250","base.750")(l),color:Ae("base.900","base.100")(l),_hover:{bg:Ae("base.300","base.700")(l)},fontSize:"sm",fontWeight:600,cursor:"pointer",transitionProperty:"common",transitionDuration:"normal",userSelect:"none"},children:[t,a.jsx(nr,{children:n&&a.jsx(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(be,{sx:{color:"accent.500",_dark:{color:"accent.300"}},children:n})},"statusText")}),a.jsx(Za,{}),a.jsx(cg,{sx:{w:"1rem",h:"1rem",transform:s?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]}),a.jsx(ym,{in:s,animateOpacity:!0,style:{overflow:"unset"},children:a.jsx(Ie,{sx:{p:4,pb:4,borderBottomRadius:"base",bg:"base.150",_dark:{bg:"base.800"}},children:r})})]})},hr=d.memo(Joe),ese=ae(xe,e=>{const{combinatorial:t,isEnabled:n}=e.dynamicPrompts;return{combinatorial:t,isDisabled:!n}},Ce),tse=()=>{const{combinatorial:e,isDisabled:t}=F(ese),n=te(),r=d.useCallback(()=>{n(oR())},[n]);return a.jsx(Ut,{isDisabled:t,label:"Combinatorial Generation",isChecked:e,onChange:r})},nse=d.memo(tse),rse=ae(xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{isEnabled:t}},Ce),ose=()=>{const e=te(),{isEnabled:t}=F(rse),n=d.useCallback(()=>{e(sR())},[e]);return a.jsx(Ut,{label:"Enable Dynamic Prompts",isChecked:t,onChange:n})},sse=d.memo(ose),ase=ae(xe,e=>{const{maxPrompts:t,combinatorial:n,isEnabled:r}=e.dynamicPrompts,{min:o,sliderMax:s,inputMax:i}=e.config.sd.dynamicPrompts.maxPrompts;return{maxPrompts:t,min:o,sliderMax:s,inputMax:i,isDisabled:!r||!n}},Ce),ise=()=>{const{maxPrompts:e,min:t,sliderMax:n,inputMax:r,isDisabled:o}=F(ase),s=te(),i=d.useCallback(f=>{s(aR(f))},[s]),l=d.useCallback(()=>{s(iR())},[s]);return a.jsx(Ze,{label:"Max Prompts",isDisabled:o,min:t,max:n,value:e,onChange:i,sliderNumberInputProps:{max:r},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:l})},lse=d.memo(ise),cse=ae(xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{activeLabel:t?"Enabled":void 0}},Ce),use=()=>{const{activeLabel:e}=F(cse);return qt("dynamicPrompting").isFeatureEnabled?a.jsx(hr,{label:"Dynamic Prompts",activeLabel:e,children:a.jsxs(T,{sx:{gap:2,flexDir:"column"},children:[a.jsx(sse,{}),a.jsx(nse,{}),a.jsx(lse,{})]})}):null},Gc=d.memo(use),dse=e=>{const t=te(),{lora:n}=e,r=d.useCallback(i=>{t(lR({id:n.id,weight:i}))},[t,n.id]),o=d.useCallback(()=>{t(cR(n.id))},[t,n.id]),s=d.useCallback(()=>{t(uR(n.id))},[t,n.id]);return a.jsxs(T,{sx:{gap:2.5,alignItems:"flex-end"},children:[a.jsx(Ze,{label:n.model_name,value:n.weight,onChange:r,min:-1,max:2,step:.01,withInput:!0,withReset:!0,handleReset:o,withSliderMarks:!0,sliderMarks:[-1,0,1,2],sliderNumberInputProps:{min:-50,max:50}}),a.jsx(Te,{size:"sm",onClick:s,tooltip:"Remove LoRA","aria-label":"Remove LoRA",icon:a.jsx(Wr,{}),colorScheme:"error"})]})},fse=d.memo(dse),pse=ae(xe,({lora:e})=>({lorasArray:rr(e.loras)}),Ce),hse=()=>{const{lorasArray:e}=F(pse);return a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs(T,{sx:{flexDirection:"column",gap:2},children:[n>0&&a.jsx(Fr,{pt:1}),a.jsx(fse,{lora:t})]},t.model_name))})},mse=d.memo(hse),gse=ae(xe,({lora:e})=>({loras:e.loras}),Ce),vse=()=>{const e=te(),{loras:t}=F(gse),{data:n}=vm(),r=F(i=>i.generation.model),o=d.useMemo(()=>{if(!n)return[];const i=[];return Fn(n.entities,(l,f)=>{if(!l||f in t)return;const p=(r==null?void 0:r.base_model)!==l.base_model;i.push({value:f,label:l.model_name,disabled:p,group:mn[l.base_model],tooltip:p?`Incompatible base model: ${l.base_model}`:void 0})}),i.sort((l,f)=>l.label&&!f.label?1:-1),i.sort((l,f)=>l.disabled&&!f.disabled?1:-1)},[t,n,r==null?void 0:r.base_model]),s=d.useCallback(i=>{if(!i)return;const l=n==null?void 0:n.entities[i];l&&e(dR(l))},[e,n==null?void 0:n.entities]);return(n==null?void 0:n.ids.length)===0?a.jsx(T,{sx:{justifyContent:"center",p:2},children:a.jsx(be,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Gt,{placeholder:o.length===0?"All LoRAs added":"Add LoRA",value:null,data:o,nothingFound:"No matching LoRAs",itemComponent:ri,disabled:o.length===0,filter:(i,l)=>{var f;return((f=l.label)==null?void 0:f.toLowerCase().includes(i.toLowerCase().trim()))||l.value.toLowerCase().includes(i.toLowerCase().trim())},onChange:s})},xse=d.memo(vse),bse=ae(xe,e=>{const t=Xj(e.lora.loras);return{activeLabel:t>0?`${t} Active`:void 0}},Ce),yse=()=>{const{activeLabel:e}=F(bse);return qt("lora").isFeatureEnabled?a.jsx(hr,{label:"LoRA",activeLabel:e,children:a.jsxs(T,{sx:{flexDir:"column",gap:2},children:[a.jsx(xse,{}),a.jsx(mse,{})]})}):null},Kc=d.memo(yse),Cse=ae(xe,({generation:e})=>{const{model:t}=e;return{mainModel:t}},Ce),wse=e=>{const{controlNetId:t,model:n,isEnabled:r}=e.controlNet,o=te(),s=F(Pn),{mainModel:i}=F(Cse),{data:l}=Vx(),f=d.useMemo(()=>{if(!l)return[];const m=[];return Fn(l.entities,(v,x)=>{if(!v)return;const C=(v==null?void 0:v.base_model)!==(i==null?void 0:i.base_model);m.push({value:x,label:v.model_name,group:mn[v.base_model],disabled:C,tooltip:C?`Incompatible base model: ${v.base_model}`:void 0})}),m},[l,i==null?void 0:i.base_model]),p=d.useMemo(()=>(l==null?void 0:l.entities[`${n==null?void 0:n.base_model}/controlnet/${n==null?void 0:n.model_name}`])??null,[n==null?void 0:n.base_model,n==null?void 0:n.model_name,l==null?void 0:l.entities]),h=d.useCallback(m=>{if(!m)return;const v=pO(m);v&&o(Yj({controlNetId:t,model:v}))},[t,o]);return a.jsx(Gt,{itemComponent:ri,data:f,error:!p||(i==null?void 0:i.base_model)!==p.base_model,placeholder:"Select a model",value:(p==null?void 0:p.id)??null,onChange:h,disabled:s||!r,tooltip:p==null?void 0:p.description})},Sse=d.memo(wse),kse=e=>{const{weight:t,isEnabled:n,controlNetId:r}=e.controlNet,o=te(),s=d.useCallback(i=>{o(fR({controlNetId:r,weight:i}))},[r,o]);return a.jsx(Ze,{isDisabled:!n,label:"Weight",value:t,onChange:s,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2]})},_se=d.memo(kse),jse=ae(xe,({controlNet:e,gallery:t})=>{const{pendingControlImages:n}=e,{autoAddBoardId:r}=t;return{pendingControlImages:n,autoAddBoardId:r}},Ce),Pse=({isSmall:e,controlNet:t})=>{const{controlImage:n,processedControlImage:r,processorType:o,isEnabled:s,controlNetId:i}=t,l=te(),{pendingControlImages:f,autoAddBoardId:p}=F(jse),h=F(wn),[m,v]=d.useState(!1),{currentData:x}=po(n??zr.skipToken),{currentData:C}=po(r??zr.skipToken),[b]=pR(),[w]=hR(),[k]=mR(),_=d.useCallback(()=>{l(gR({controlNetId:i,controlImage:null}))},[i,l]),j=d.useCallback(async()=>{C&&(await b({imageDTO:C,is_intermediate:!1}).unwrap(),p!=="none"?w({imageDTO:C,board_id:p}):k({imageDTO:C}))},[C,b,p,w,k]),I=d.useCallback(()=>{x&&(h==="unifiedCanvas"?l(Ao({width:x.width,height:x.height})):(l(Ai(x.width)),l(Ni(x.height))))},[x,h,l]),M=d.useCallback(()=>{v(!0)},[]),E=d.useCallback(()=>{v(!1)},[]),O=d.useMemo(()=>{if(x)return{id:i,payloadType:"IMAGE_DTO",payload:{imageDTO:x}}},[x,i]),D=d.useMemo(()=>({id:i,actionType:"SET_CONTROLNET_IMAGE",context:{controlNetId:i}}),[i]),A=d.useMemo(()=>({type:"SET_CONTROLNET_IMAGE",controlNetId:i}),[i]),R=x&&C&&!m&&!f.includes(i)&&o!=="none";return a.jsxs(T,{onMouseEnter:M,onMouseLeave:E,sx:{position:"relative",w:"full",h:e?28:366,alignItems:"center",justifyContent:"center",pointerEvents:s?"auto":"none",opacity:s?1:.5},children:[a.jsx(Ya,{draggableData:O,droppableData:D,imageDTO:x,isDropDisabled:R||!s,postUploadAction:A}),a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",opacity:R?1:0,transitionProperty:"common",transitionDuration:"normal",pointerEvents:"none"},children:a.jsx(Ya,{draggableData:O,droppableData:D,imageDTO:C,isUploadDisabled:!0,isDropDisabled:!s})}),a.jsxs(a.Fragment,{children:[a.jsx(cc,{onClick:_,icon:x?a.jsx(tg,{}):void 0,tooltip:"Reset Control Image"}),a.jsx(cc,{onClick:j,icon:x?a.jsx(eg,{size:16}):void 0,tooltip:"Save Control Image",styleOverrides:{marginTop:6}}),a.jsx(cc,{onClick:I,icon:x?a.jsx(OZ,{size:16}):void 0,tooltip:"Set Control Image Dimensions To W/H",styleOverrides:{marginTop:12}})]}),f.includes(i)&&a.jsx(T,{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(Ki,{size:"xl",sx:{color:"base.100",_dark:{color:"base.400"}}})})]})},k_=d.memo(Pse),qo=()=>{const e=te();return d.useCallback((n,r)=>{e(vR({controlNetId:n,changes:r}))},[e])};function Xo(e){return a.jsx(T,{sx:{flexDirection:"column",gap:2},children:e.children})}const __=go.canny_image_processor.default,Ise=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{low_threshold:o,high_threshold:s}=n,i=F(Pn),l=qo(),f=d.useCallback(v=>{l(t,{low_threshold:v})},[t,l]),p=d.useCallback(()=>{l(t,{low_threshold:__.low_threshold})},[t,l]),h=d.useCallback(v=>{l(t,{high_threshold:v})},[t,l]),m=d.useCallback(()=>{l(t,{high_threshold:__.high_threshold})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Ze,{isDisabled:i||!r,label:"Low Threshold",value:o,onChange:f,handleReset:p,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0}),a.jsx(Ze,{isDisabled:i||!r,label:"High Threshold",value:s,onChange:h,handleReset:m,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0})]})},Ese=d.memo(Ise),_u=go.content_shuffle_image_processor.default,Mse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,w:i,h:l,f}=n,p=qo(),h=F(Pn),m=d.useCallback(M=>{p(t,{detect_resolution:M})},[t,p]),v=d.useCallback(()=>{p(t,{detect_resolution:_u.detect_resolution})},[t,p]),x=d.useCallback(M=>{p(t,{image_resolution:M})},[t,p]),C=d.useCallback(()=>{p(t,{image_resolution:_u.image_resolution})},[t,p]),b=d.useCallback(M=>{p(t,{w:M})},[t,p]),w=d.useCallback(()=>{p(t,{w:_u.w})},[t,p]),k=d.useCallback(M=>{p(t,{h:M})},[t,p]),_=d.useCallback(()=>{p(t,{h:_u.h})},[t,p]),j=d.useCallback(M=>{p(t,{f:M})},[t,p]),I=d.useCallback(()=>{p(t,{f:_u.f})},[t,p]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:s,onChange:m,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ze,{label:"Image Resolution",value:o,onChange:x,handleReset:C,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ze,{label:"W",value:i,onChange:b,handleReset:w,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ze,{label:"H",value:l,onChange:k,handleReset:_,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Ze,{label:"F",value:f,onChange:j,handleReset:I,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r})]})},Ose=d.memo(Mse),j_=go.hed_image_processor.default,Dse=e=>{const{controlNetId:t,processorNode:{detect_resolution:n,image_resolution:r,scribble:o},isEnabled:s}=e,i=F(Pn),l=qo(),f=d.useCallback(x=>{l(t,{detect_resolution:x})},[t,l]),p=d.useCallback(x=>{l(t,{image_resolution:x})},[t,l]),h=d.useCallback(x=>{l(t,{scribble:x.target.checked})},[t,l]),m=d.useCallback(()=>{l(t,{detect_resolution:j_.detect_resolution})},[t,l]),v=d.useCallback(()=>{l(t,{image_resolution:j_.image_resolution})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:n,onChange:f,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(Ze,{label:"Image Resolution",value:r,onChange:p,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(Ut,{label:"Scribble",isChecked:o,onChange:h,isDisabled:i||!s})]})},Rse=d.memo(Dse),P_=go.lineart_anime_image_processor.default,Ase=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=qo(),l=F(Pn),f=d.useCallback(v=>{i(t,{detect_resolution:v})},[t,i]),p=d.useCallback(v=>{i(t,{image_resolution:v})},[t,i]),h=d.useCallback(()=>{i(t,{detect_resolution:P_.detect_resolution})},[t,i]),m=d.useCallback(()=>{i(t,{image_resolution:P_.image_resolution})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:s,onChange:f,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Ze,{label:"Image Resolution",value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},Nse=d.memo(Ase),I_=go.lineart_image_processor.default,Tse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,coarse:i}=n,l=qo(),f=F(Pn),p=d.useCallback(C=>{l(t,{detect_resolution:C})},[t,l]),h=d.useCallback(C=>{l(t,{image_resolution:C})},[t,l]),m=d.useCallback(()=>{l(t,{detect_resolution:I_.detect_resolution})},[t,l]),v=d.useCallback(()=>{l(t,{image_resolution:I_.image_resolution})},[t,l]),x=d.useCallback(C=>{l(t,{coarse:C.target.checked})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(Ze,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(Ut,{label:"Coarse",isChecked:i,onChange:x,isDisabled:f||!r})]})},$se=d.memo(Tse),E_=go.mediapipe_face_processor.default,Lse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{max_faces:o,min_confidence:s}=n,i=qo(),l=F(Pn),f=d.useCallback(v=>{i(t,{max_faces:v})},[t,i]),p=d.useCallback(v=>{i(t,{min_confidence:v})},[t,i]),h=d.useCallback(()=>{i(t,{max_faces:E_.max_faces})},[t,i]),m=d.useCallback(()=>{i(t,{min_confidence:E_.min_confidence})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Max Faces",value:o,onChange:f,handleReset:h,withReset:!0,min:1,max:20,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Ze,{label:"Min Confidence",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},zse=d.memo(Lse),M_=go.midas_depth_image_processor.default,Fse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{a_mult:o,bg_th:s}=n,i=qo(),l=F(Pn),f=d.useCallback(v=>{i(t,{a_mult:v})},[t,i]),p=d.useCallback(v=>{i(t,{bg_th:v})},[t,i]),h=d.useCallback(()=>{i(t,{a_mult:M_.a_mult})},[t,i]),m=d.useCallback(()=>{i(t,{bg_th:M_.bg_th})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"a_mult",value:o,onChange:f,handleReset:h,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Ze,{label:"bg_th",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},Bse=d.memo(Fse),jp=go.mlsd_image_processor.default,Hse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,thr_d:i,thr_v:l}=n,f=qo(),p=F(Pn),h=d.useCallback(_=>{f(t,{detect_resolution:_})},[t,f]),m=d.useCallback(_=>{f(t,{image_resolution:_})},[t,f]),v=d.useCallback(_=>{f(t,{thr_d:_})},[t,f]),x=d.useCallback(_=>{f(t,{thr_v:_})},[t,f]),C=d.useCallback(()=>{f(t,{detect_resolution:jp.detect_resolution})},[t,f]),b=d.useCallback(()=>{f(t,{image_resolution:jp.image_resolution})},[t,f]),w=d.useCallback(()=>{f(t,{thr_d:jp.thr_d})},[t,f]),k=d.useCallback(()=>{f(t,{thr_v:jp.thr_v})},[t,f]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:s,onChange:h,handleReset:C,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ze,{label:"Image Resolution",value:o,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ze,{label:"W",value:i,onChange:v,handleReset:w,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ze,{label:"H",value:l,onChange:x,handleReset:k,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r})]})},Wse=d.memo(Hse),O_=go.normalbae_image_processor.default,Vse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=qo(),l=F(Pn),f=d.useCallback(v=>{i(t,{detect_resolution:v})},[t,i]),p=d.useCallback(v=>{i(t,{image_resolution:v})},[t,i]),h=d.useCallback(()=>{i(t,{detect_resolution:O_.detect_resolution})},[t,i]),m=d.useCallback(()=>{i(t,{image_resolution:O_.image_resolution})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:s,onChange:f,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Ze,{label:"Image Resolution",value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},Use=d.memo(Vse),D_=go.openpose_image_processor.default,Gse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,hand_and_face:i}=n,l=qo(),f=F(Pn),p=d.useCallback(C=>{l(t,{detect_resolution:C})},[t,l]),h=d.useCallback(C=>{l(t,{image_resolution:C})},[t,l]),m=d.useCallback(()=>{l(t,{detect_resolution:D_.detect_resolution})},[t,l]),v=d.useCallback(()=>{l(t,{image_resolution:D_.image_resolution})},[t,l]),x=d.useCallback(C=>{l(t,{hand_and_face:C.target.checked})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(Ze,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(Ut,{label:"Hand and Face",isChecked:i,onChange:x,isDisabled:f||!r})]})},Kse=d.memo(Gse),R_=go.pidi_image_processor.default,qse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,scribble:i,safe:l}=n,f=qo(),p=F(Pn),h=d.useCallback(w=>{f(t,{detect_resolution:w})},[t,f]),m=d.useCallback(w=>{f(t,{image_resolution:w})},[t,f]),v=d.useCallback(()=>{f(t,{detect_resolution:R_.detect_resolution})},[t,f]),x=d.useCallback(()=>{f(t,{image_resolution:R_.image_resolution})},[t,f]),C=d.useCallback(w=>{f(t,{scribble:w.target.checked})},[t,f]),b=d.useCallback(w=>{f(t,{safe:w.target.checked})},[t,f]);return a.jsxs(Xo,{children:[a.jsx(Ze,{label:"Detect Resolution",value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ze,{label:"Image Resolution",value:o,onChange:m,handleReset:x,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Ut,{label:"Scribble",isChecked:i,onChange:C}),a.jsx(Ut,{label:"Safe",isChecked:l,onChange:b,isDisabled:p||!r})]})},Xse=d.memo(qse),Yse=e=>null,Qse=d.memo(Yse),Zse=e=>{const{controlNetId:t,isEnabled:n,processorNode:r}=e.controlNet;return r.type==="canny_image_processor"?a.jsx(Ese,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="hed_image_processor"?a.jsx(Rse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_image_processor"?a.jsx($se,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="content_shuffle_image_processor"?a.jsx(Ose,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_anime_image_processor"?a.jsx(Nse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mediapipe_face_processor"?a.jsx(zse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="midas_depth_image_processor"?a.jsx(Bse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mlsd_image_processor"?a.jsx(Wse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="normalbae_image_processor"?a.jsx(Use,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="openpose_image_processor"?a.jsx(Kse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="pidi_image_processor"?a.jsx(Xse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="zoe_depth_image_processor"?a.jsx(Qse,{controlNetId:t,processorNode:r,isEnabled:n}):null},Jse=d.memo(Zse),eae=e=>{const{controlNetId:t,isEnabled:n,shouldAutoConfig:r}=e.controlNet,o=te(),s=F(Pn),i=d.useCallback(()=>{o(xR({controlNetId:t}))},[t,o]);return a.jsx(Ut,{label:"Auto configure processor","aria-label":"Auto configure processor",isChecked:r,onChange:i,isDisabled:s||!n})},tae=d.memo(eae),nae=e=>{const{controlNet:t}=e,n=te(),r=d.useCallback(()=>{n(bR({controlNet:t}))},[t,n]),o=d.useCallback(()=>{n(yR({controlNet:t}))},[t,n]);return a.jsxs(T,{sx:{gap:2},children:[a.jsx(Te,{size:"sm",icon:a.jsx(Wi,{}),tooltip:"Import Image From Canvas","aria-label":"Import Image From Canvas",onClick:r}),a.jsx(Te,{size:"sm",icon:a.jsx(DE,{}),tooltip:"Import Mask From Canvas","aria-label":"Import Mask From Canvas",onClick:o})]})},rae=d.memo(nae),A_=e=>`${Math.round(e*100)}%`,oae=e=>{const{beginStepPct:t,endStepPct:n,isEnabled:r,controlNetId:o}=e.controlNet,s=te(),i=d.useCallback(l=>{s(CR({controlNetId:o,beginStepPct:l[0]})),s(wR({controlNetId:o,endStepPct:l[1]}))},[o,s]);return a.jsxs(un,{isDisabled:!r,children:[a.jsx(Gn,{children:"Begin / End Step Percentage"}),a.jsx(xb,{w:"100%",gap:2,alignItems:"center",children:a.jsxs(_P,{"aria-label":["Begin Step %","End Step %"],value:[t,n],onChange:i,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!r,children:[a.jsx(jP,{children:a.jsx(PP,{})}),a.jsx(Dt,{label:A_(t),placement:"top",hasArrow:!0,children:a.jsx(T1,{index:0})}),a.jsx(Dt,{label:A_(n),placement:"top",hasArrow:!0,children:a.jsx(T1,{index:1})}),a.jsx(Ap,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),a.jsx(Ap,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),a.jsx(Ap,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},sae=d.memo(oae),aae=[{label:"Balanced",value:"balanced"},{label:"Prompt",value:"more_prompt"},{label:"Control",value:"more_control"},{label:"Mega Control",value:"unbalanced"}];function iae(e){const{controlMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=te(),s=d.useCallback(i=>{o(SR({controlNetId:r,controlMode:i}))},[r,o]);return a.jsx(Bn,{disabled:!n,label:"Control Mode",data:aae,value:String(t),onChange:s})}const lae=ae(Py,e=>rr(go,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)),Ce),cae=e=>{const t=te(),{controlNetId:n,isEnabled:r,processorNode:o}=e.controlNet,s=F(Pn),i=F(lae),l=d.useCallback(f=>{t(kR({controlNetId:n,processorType:f}))},[n,t]);return a.jsx(Gt,{label:"Processor",value:o.type??"canny_image_processor",data:i,onChange:l,disabled:s||!r})},uae=d.memo(cae),dae=[{label:"Resize",value:"just_resize"},{label:"Crop",value:"crop_resize"},{label:"Fill",value:"fill_resize"}];function fae(e){const{resizeMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=te(),s=d.useCallback(i=>{o(_R({controlNetId:r,resizeMode:i}))},[r,o]);return a.jsx(Bn,{disabled:!n,label:"Resize Mode",data:dae,value:String(t),onChange:s})}const pae=e=>{const{controlNet:t}=e,{controlNetId:n}=t,r=te(),o=F(wn),s=ae(xe,({controlNet:x})=>{const C=x.controlNets[n];if(!C)return{isEnabled:!1,shouldAutoConfig:!1};const{isEnabled:b,shouldAutoConfig:w}=C;return{isEnabled:b,shouldAutoConfig:w}},Ce),{isEnabled:i,shouldAutoConfig:l}=F(s),[f,p]=HZ(!1),h=d.useCallback(()=>{r(jR({controlNetId:n}))},[n,r]),m=d.useCallback(()=>{r(PR({sourceControlNetId:n,newControlNetId:Fa()}))},[n,r]),v=d.useCallback(()=>{r(IR({controlNetId:n}))},[n,r]);return a.jsxs(T,{sx:{flexDir:"column",gap:3,p:2,borderRadius:"base",position:"relative",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsxs(T,{sx:{gap:2,alignItems:"center"},children:[a.jsx(Ut,{tooltip:"Toggle this ControlNet","aria-label":"Toggle this ControlNet",isChecked:i,onChange:v}),a.jsx(Ie,{sx:{w:"full",minW:0,opacity:i?1:.5,pointerEvents:i?"auto":"none",transitionProperty:"common",transitionDuration:"0.1s"},children:a.jsx(Sse,{controlNet:t})}),o==="unifiedCanvas"&&a.jsx(rae,{controlNet:t}),a.jsx(Te,{size:"sm",tooltip:"Duplicate","aria-label":"Duplicate",onClick:m,icon:a.jsx(Hc,{})}),a.jsx(Te,{size:"sm",tooltip:"Delete","aria-label":"Delete",colorScheme:"error",onClick:h,icon:a.jsx(Wr,{})}),a.jsx(Te,{size:"sm",tooltip:f?"Hide Advanced":"Show Advanced","aria-label":f?"Hide Advanced":"Show Advanced",onClick:p,variant:"ghost",sx:{_hover:{bg:"none"}},icon:a.jsx(cg,{sx:{boxSize:4,color:"base.700",transform:f?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal",_dark:{color:"base.300"}}})}),!l&&a.jsx(Ie,{sx:{position:"absolute",w:1.5,h:1.5,borderRadius:"full",top:4,insetInlineEnd:4,bg:"accent.700",_dark:{bg:"accent.400"}}})]}),a.jsxs(T,{sx:{w:"full",flexDirection:"column",gap:3},children:[a.jsxs(T,{sx:{gap:4,w:"full",alignItems:"center"},children:[a.jsxs(T,{sx:{flexDir:"column",gap:3,h:28,w:"full",paddingInlineStart:1,paddingInlineEnd:f?1:0,pb:2,justifyContent:"space-between"},children:[a.jsx(_se,{controlNet:t}),a.jsx(sae,{controlNet:t})]}),!f&&a.jsx(T,{sx:{alignItems:"center",justifyContent:"center",h:28,w:28,aspectRatio:"1/1"},children:a.jsx(k_,{controlNet:t,isSmall:!0})})]}),a.jsxs(T,{sx:{gap:2},children:[a.jsx(iae,{controlNet:t}),a.jsx(fae,{controlNet:t})]}),a.jsx(uae,{controlNet:t})]}),f&&a.jsxs(a.Fragment,{children:[a.jsx(k_,{controlNet:t}),a.jsx(tae,{controlNet:t}),a.jsx(Jse,{controlNet:t})]})]})},hae=d.memo(pae),mae=ae(xe,e=>{const{isEnabled:t}=e.controlNet;return{isEnabled:t}},Ce),gae=()=>{const{isEnabled:e}=F(mae),t=te(),n=d.useCallback(()=>{t(ER())},[t]);return a.jsx(Ut,{label:"Enable ControlNet",isChecked:e,onChange:n,formControlProps:{width:"100%"}})},vae=d.memo(gae),xae=ae([xe],({controlNet:e})=>{const{controlNets:t,isEnabled:n}=e,r=MR(t),o=n&&r.length>0?`${r.length} Active`:void 0;return{controlNetsArray:rr(t),activeLabel:o}},Ce),bae=()=>{const{controlNetsArray:e,activeLabel:t}=F(xae),n=qt("controlNet").isFeatureDisabled,r=te(),{firstModel:o}=Vx(void 0,{selectFromResult:i=>({firstModel:i.data?OR.getSelectors().selectAll(i.data)[0]:void 0})}),s=d.useCallback(()=>{if(!o)return;const i=Fa();r(DR({controlNetId:i})),r(Yj({controlNetId:i,model:o}))},[r,o]);return n?null:a.jsx(hr,{label:"Control Adapters",activeLabel:t,children:a.jsxs(T,{sx:{flexDir:"column",gap:2},children:[a.jsxs(T,{sx:{w:"100%",gap:2,p:2,ps:3,borderRadius:"base",alignItems:"center",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsx(vae,{}),a.jsx(Te,{tooltip:"Add ControlNet","aria-label":"Add ControlNet",icon:a.jsx(tl,{}),isDisabled:!o,flexGrow:1,size:"sm",onClick:s})]}),e.map((i,l)=>a.jsxs(d.Fragment,{children:[l>0&&a.jsx(Fr,{}),a.jsx(hae,{controlNet:i})]},i.controlNetId))]})})},qc=d.memo(bae),yae=ae(xe,e=>{const{shouldUseNoiseSettings:t,shouldUseCpuNoise:n}=e.generation;return{isDisabled:!t,shouldUseCpuNoise:n}},Ce),Cae=()=>{const e=te(),{isDisabled:t,shouldUseCpuNoise:n}=F(yae),r=o=>e(RR(o.target.checked));return a.jsx(Ut,{isDisabled:t,label:"Use CPU Noise",isChecked:n,onChange:r})},wae=ae(xe,e=>{const{shouldUseNoiseSettings:t,threshold:n}=e.generation;return{isDisabled:!t,threshold:n}},Ce);function Sae(){const e=te(),{threshold:t,isDisabled:n}=F(wae),{t:r}=we();return a.jsx(Ze,{isDisabled:n,label:r("parameters.noiseThreshold"),min:0,max:20,step:.1,onChange:o=>e(XC(o)),handleReset:()=>e(XC(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const kae=()=>{const e=te(),t=F(r=>r.generation.shouldUseNoiseSettings),n=r=>e(AR(r.target.checked));return a.jsx(Ut,{label:"Enable Noise Settings",isChecked:t,onChange:n})},_ae=ae(xe,e=>{const{shouldUseNoiseSettings:t,perlin:n}=e.generation;return{isDisabled:!t,perlin:n}},Ce);function jae(){const e=te(),{perlin:t,isDisabled:n}=F(_ae),{t:r}=we();return a.jsx(Ze,{isDisabled:n,label:r("parameters.perlinNoise"),min:0,max:1,step:.05,onChange:o=>e(YC(o)),handleReset:()=>e(YC(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const Pae=ae(xe,e=>{const{shouldUseNoiseSettings:t}=e.generation;return{activeLabel:t?"Enabled":void 0}},Ce),Iae=()=>{const{t:e}=we(),t=qt("noise").isFeatureEnabled,n=qt("perlinNoise").isFeatureEnabled,r=qt("noiseThreshold").isFeatureEnabled,{activeLabel:o}=F(Pae);return t?a.jsx(hr,{label:e("parameters.noiseSettings"),activeLabel:o,children:a.jsxs(T,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(kae,{}),a.jsx(Cae,{}),n&&a.jsx(jae,{}),r&&a.jsx(Sae,{})]})}):null},Gd=d.memo(Iae),Vr=e=>e.generation,Eae=ae(Vr,e=>{const{seamlessXAxis:t}=e;return{seamlessXAxis:t}},Ce),Mae=()=>{const{t:e}=we(),{seamlessXAxis:t}=F(Eae),n=te(),r=d.useCallback(o=>{n(NR(o.target.checked))},[n]);return a.jsx(Ut,{label:e("parameters.seamlessXAxis"),"aria-label":e("parameters.seamlessXAxis"),isChecked:t,onChange:r})},Oae=d.memo(Mae),Dae=ae(Vr,e=>{const{seamlessYAxis:t}=e;return{seamlessYAxis:t}},Ce),Rae=()=>{const{t:e}=we(),{seamlessYAxis:t}=F(Dae),n=te(),r=d.useCallback(o=>{n(TR(o.target.checked))},[n]);return a.jsx(Ut,{label:e("parameters.seamlessYAxis"),"aria-label":e("parameters.seamlessYAxis"),isChecked:t,onChange:r})},Aae=d.memo(Rae),Nae=(e,t)=>{if(e&&t)return"X & Y";if(e)return"X";if(t)return"Y"},Tae=ae(Vr,e=>{const{seamlessXAxis:t,seamlessYAxis:n}=e;return{activeLabel:Nae(t,n)}},Ce),$ae=()=>{const{t:e}=we(),{activeLabel:t}=F(Tae);return qt("seamless").isFeatureEnabled?a.jsx(hr,{label:e("parameters.seamlessTiling"),activeLabel:t,children:a.jsxs(T,{sx:{gap:5},children:[a.jsx(Ie,{flexGrow:1,children:a.jsx(Oae,{})}),a.jsx(Ie,{flexGrow:1,children:a.jsx(Aae,{})})]})}):null},Xc=d.memo($ae),Lae=e=>{const{onClick:t}=e;return a.jsx(Te,{size:"sm","aria-label":"Add Embedding",tooltip:"Add Embedding",icon:a.jsx(_E,{}),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})},_g=d.memo(Lae),zae="28rem",Fae=e=>{const{onSelect:t,isOpen:n,onClose:r,children:o}=e,{data:s}=$R(),i=d.useRef(null),l=F(h=>h.generation.model),f=d.useMemo(()=>{if(!s)return[];const h=[];return Fn(s.entities,(m,v)=>{if(!m)return;const x=(l==null?void 0:l.base_model)!==m.base_model;h.push({value:m.model_name,label:m.model_name,group:mn[m.base_model],disabled:x,tooltip:x?`Incompatible base model: ${m.base_model}`:void 0})}),h.sort((m,v)=>{var x;return m.label&&v.label?(x=m.label)!=null&&x.localeCompare(v.label)?-1:1:-1}),h.sort((m,v)=>m.disabled&&!v.disabled?1:-1)},[s,l==null?void 0:l.base_model]),p=d.useCallback(h=>{h&&t(h)},[t]);return a.jsxs($m,{initialFocusRef:i,isOpen:n,onClose:r,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(Db,{children:o}),a.jsx(Lm,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(Rb,{sx:{p:0,w:`calc(${zae} - 2rem )`},children:f.length===0?a.jsx(T,{sx:{justifyContent:"center",p:2,fontSize:"sm",color:"base.500",_dark:{color:"base.700"}},children:a.jsx(be,{children:"No Embeddings Loaded"})}):a.jsx(Gt,{inputRef:i,autoFocus:!0,placeholder:"Add Embedding",value:null,data:f,nothingFound:"No matching Embeddings",itemComponent:ri,disabled:f.length===0,onDropdownClose:r,filter:(h,m)=>{var v;return((v=m.label)==null?void 0:v.toLowerCase().includes(h.toLowerCase().trim()))||m.value.toLowerCase().includes(h.toLowerCase().trim())},onChange:p})})})]})},jg=d.memo(Fae),Bae=()=>{const e=F(m=>m.generation.negativePrompt),t=d.useRef(null),{isOpen:n,onClose:r,onOpen:o}=Er(),s=te(),{t:i}=we(),l=d.useCallback(m=>{s(Lu(m.target.value))},[s]),f=d.useCallback(m=>{m.key==="<"&&o()},[o]),p=d.useCallback(m=>{if(!t.current)return;const v=t.current.selectionStart;if(v===void 0)return;let x=e.slice(0,v);x[x.length-1]!=="<"&&(x+="<"),x+=`${m}>`;const C=x.length;x+=e.slice(v),so.flushSync(()=>{s(Lu(x))}),t.current.selectionEnd=C,r()},[s,r,e]),h=qt("embedding").isFeatureEnabled;return a.jsxs(un,{children:[a.jsx(jg,{isOpen:n,onClose:r,onSelect:p,children:a.jsx(oa,{id:"negativePrompt",name:"negativePrompt",ref:t,value:e,placeholder:i("parameters.negativePromptPlaceholder"),onChange:l,resize:"vertical",fontSize:"sm",minH:16,...h&&{onKeyDown:f}})}),!n&&h&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(_g,{onClick:o})})]})},xO=d.memo(Bae),Hae=ae([xe,wn],({generation:e},t)=>({prompt:e.positivePrompt,activeTabName:t}),{memoizeOptions:{resultEqualityCheck:kt}}),Wae=()=>{const e=te(),{prompt:t,activeTabName:n}=F(Hae),r=Ud(),o=d.useRef(null),{isOpen:s,onClose:i,onOpen:l}=Er(),{t:f}=we(),p=d.useCallback(x=>{e($u(x.target.value))},[e]);Qe("alt+a",()=>{var x;(x=o.current)==null||x.focus()},[]);const h=d.useCallback(x=>{if(!o.current)return;const C=o.current.selectionStart;if(C===void 0)return;let b=t.slice(0,C);b[b.length-1]!=="<"&&(b+="<"),b+=`${x}>`;const w=b.length;b+=t.slice(C),so.flushSync(()=>{e($u(b))}),o.current.selectionStart=w,o.current.selectionEnd=w,i()},[e,i,t]),m=qt("embedding").isFeatureEnabled,v=d.useCallback(x=>{x.key==="Enter"&&x.shiftKey===!1&&r&&(x.preventDefault(),e(bd()),e(mm(n))),m&&x.key==="<"&&l()},[r,e,n,l,m]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(un,{children:a.jsx(jg,{isOpen:s,onClose:i,onSelect:h,children:a.jsx(oa,{id:"prompt",name:"prompt",ref:o,value:t,placeholder:f("parameters.positivePromptPlaceholder"),onChange:p,onKeyDown:v,resize:"vertical",minH:32})})}),!s&&m&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(_g,{onClick:l})})]})},bO=d.memo(Wae);function Vae(){const e=F(r=>r.sdxl.shouldConcatSDXLStylePrompt),t=te(),n=()=>{t(LR(!e))};return a.jsx(Te,{"aria-label":"Concatenate Prompt & Style",tooltip:"Concatenate Prompt & Style",variant:"outline",isChecked:e,onClick:n,icon:a.jsx(ME,{}),size:"xs",sx:{position:"absolute",insetInlineEnd:1,top:6,border:"none",color:e?"accent.500":"base.500",_hover:{bg:"none"}}})}const N_={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 yO(){return a.jsxs(T,{children:[a.jsx(Ie,{as:gn.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",...N_,_dark:{borderColor:"accent.500"}}}),a.jsx(Ie,{as:gn.div,initial:{opacity:0,scale:0},animate:{opacity:[0,1,1,1],scale:[0,.75,1.5,1],transition:{duration:.42,times:[0,.25,.5,1]}},exit:{opacity:0,scale:0},sx:{zIndex:3,position:"absolute",left:"48%",top:"3px",p:1,borderRadius:4,bg:"accent.400",color:"base.50",_dark:{bg:"accent.500"}},children:a.jsx(ME,{size:12})}),a.jsx(Ie,{as:gn.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",...N_,_dark:{borderColor:"accent.500"}}})]})}const Uae=ae([xe,wn],({sdxl:e},t)=>{const{negativeStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:kt}}),Gae=()=>{const e=te(),t=Ud(),n=d.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Er(),{prompt:i,activeTabName:l,shouldConcatSDXLStylePrompt:f}=F(Uae),p=d.useCallback(x=>{e(Fu(x.target.value))},[e]),h=d.useCallback(x=>{if(!n.current)return;const C=n.current.selectionStart;if(C===void 0)return;let b=i.slice(0,C);b[b.length-1]!=="<"&&(b+="<"),b+=`${x}>`;const w=b.length;b+=i.slice(C),so.flushSync(()=>{e(Fu(b))}),n.current.selectionStart=w,n.current.selectionEnd=w,o()},[e,o,i]),m=qt("embedding").isFeatureEnabled,v=d.useCallback(x=>{x.key==="Enter"&&x.shiftKey===!1&&t&&(x.preventDefault(),e(bd()),e(mm(l))),m&&x.key==="<"&&s()},[t,e,l,s,m]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(nr,{children:f&&a.jsx(Ie,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(yO,{})})}),a.jsx(un,{children:a.jsx(jg,{isOpen:r,onClose:o,onSelect:h,children:a.jsx(oa,{id:"prompt",name:"prompt",ref:n,value:i,placeholder:"Negative Style Prompt",onChange:p,onKeyDown:v,resize:"vertical",fontSize:"sm",minH:16})})}),!r&&m&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(_g,{onClick:s})})]})},Kae=d.memo(Gae),qae=ae([xe,wn],({sdxl:e},t)=>{const{positiveStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:kt}}),Xae=()=>{const e=te(),t=Ud(),n=d.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Er(),{prompt:i,activeTabName:l,shouldConcatSDXLStylePrompt:f}=F(qae),p=d.useCallback(x=>{e(zu(x.target.value))},[e]),h=d.useCallback(x=>{if(!n.current)return;const C=n.current.selectionStart;if(C===void 0)return;let b=i.slice(0,C);b[b.length-1]!=="<"&&(b+="<"),b+=`${x}>`;const w=b.length;b+=i.slice(C),so.flushSync(()=>{e(zu(b))}),n.current.selectionStart=w,n.current.selectionEnd=w,o()},[e,o,i]),m=qt("embedding").isFeatureEnabled,v=d.useCallback(x=>{x.key==="Enter"&&x.shiftKey===!1&&t&&(x.preventDefault(),e(bd()),e(mm(l))),m&&x.key==="<"&&s()},[t,e,l,s,m]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(nr,{children:f&&a.jsx(Ie,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(yO,{})})}),a.jsx(un,{children:a.jsx(jg,{isOpen:r,onClose:o,onSelect:h,children:a.jsx(oa,{id:"prompt",name:"prompt",ref:n,value:i,placeholder:"Positive Style Prompt",onChange:p,onKeyDown:v,resize:"vertical",minH:16})})}),!r&&m&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(_g,{onClick:s})})]})},Yae=d.memo(Xae);function $y(){return a.jsxs(T,{sx:{flexDirection:"column",gap:2},children:[a.jsx(bO,{}),a.jsx(Vae,{}),a.jsx(Yae,{}),a.jsx(xO,{}),a.jsx(Kae,{})]})}const rl=()=>{const{isRefinerAvailable:e}=Bo(Ux,{selectFromResult:({data:t})=>({isRefinerAvailable:t?t.ids.length>0:!1})});return e},Qae=ae([xe],({sdxl:e,ui:t,hotkeys:n})=>{const{refinerCFGScale:r}=e,{shouldUseSliders:o}=t,{shift:s}=n;return{refinerCFGScale:r,shouldUseSliders:o,shift:s}},Ce),Zae=()=>{const{refinerCFGScale:e,shouldUseSliders:t,shift:n}=F(Qae),r=rl(),o=te(),{t:s}=we(),i=d.useCallback(f=>o(s1(f)),[o]),l=d.useCallback(()=>o(s1(7)),[o]);return t?a.jsx(Ze,{label:s("parameters.cfgScale"),step:n?.1:.5,min:1,max:20,onChange:i,handleReset:l,value:e,sliderNumberInputProps:{max:200},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!r}):a.jsx(Uc,{label:s("parameters.cfgScale"),step:.5,min:1,max:200,onChange:i,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"},isDisabled:!r})},Jae=d.memo(Zae),eie=e=>{const t=Dc("models"),[n,r,o]=e.split("/"),s=zR.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data},tie=ae(xe,e=>({model:e.sdxl.refinerModel}),Ce),nie=()=>{const e=te(),t=qt("syncModels").isFeatureEnabled,{model:n}=F(tie),{data:r,isLoading:o}=Bo(Ux),s=d.useMemo(()=>{if(!r)return[];const f=[];return Fn(r.entities,(p,h)=>{p&&f.push({value:h,label:p.model_name,group:mn[p.base_model]})}),f},[r]),i=d.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]),l=d.useCallback(f=>{if(!f)return;const p=eie(f);p&&e(zj(p))},[e]);return o?a.jsx(Gt,{label:"Refiner Model",placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs(T,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Gt,{tooltip:i==null?void 0:i.description,label:"Refiner Model",value:i==null?void 0:i.id,placeholder:s.length>0?"Select a model":"No models available",data:s,error:s.length===0,disabled:s.length===0,onChange:l,w:"100%"}),t&&a.jsx(Ie,{mt:7,children:a.jsx(Vc,{iconMode:!0})})]})},rie=d.memo(nie),oie=ae([xe],({sdxl:e,hotkeys:t})=>{const{refinerNegativeAestheticScore:n}=e,{shift:r}=t;return{refinerNegativeAestheticScore:n,shift:r}},Ce),sie=()=>{const{refinerNegativeAestheticScore:e,shift:t}=F(oie),n=rl(),r=te(),o=d.useCallback(i=>r(i1(i)),[r]),s=d.useCallback(()=>r(i1(2.5)),[r]);return a.jsx(Ze,{label:"Negative Aesthetic Score",step:t?.1:.5,min:1,max:10,onChange:o,handleReset:s,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},aie=d.memo(sie),iie=ae([xe],({sdxl:e,hotkeys:t})=>{const{refinerPositiveAestheticScore:n}=e,{shift:r}=t;return{refinerPositiveAestheticScore:n,shift:r}},Ce),lie=()=>{const{refinerPositiveAestheticScore:e,shift:t}=F(iie),n=rl(),r=te(),o=d.useCallback(i=>r(a1(i)),[r]),s=d.useCallback(()=>r(a1(6)),[r]);return a.jsx(Ze,{label:"Positive Aesthetic Score",step:t?.1:.5,min:1,max:10,onChange:o,handleReset:s,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},cie=d.memo(lie),uie=ae(xe,({ui:e,sdxl:t})=>{const{refinerScheduler:n}=t,{favoriteSchedulers:r}=e,o=rr(dm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{refinerScheduler:n,data:o}},Ce),die=()=>{const e=te(),{t}=we(),{refinerScheduler:n,data:r}=F(uie),o=rl(),s=d.useCallback(i=>{i&&e(Fj(i))},[e]);return a.jsx(Gt,{w:"100%",label:t("parameters.scheduler"),value:n,data:r,onChange:s,disabled:!o})},fie=d.memo(die),pie=ae([xe],({sdxl:e})=>{const{refinerStart:t}=e;return{refinerStart:t}},Ce),hie=()=>{const{refinerStart:e}=F(pie),t=te(),n=rl(),r=d.useCallback(s=>t(l1(s)),[t]),o=d.useCallback(()=>t(l1(.8)),[t]);return a.jsx(Ze,{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})},mie=d.memo(hie),gie=ae([xe],({sdxl:e,ui:t})=>{const{refinerSteps:n}=e,{shouldUseSliders:r}=t;return{refinerSteps:n,shouldUseSliders:r}},Ce),vie=()=>{const{refinerSteps:e,shouldUseSliders:t}=F(gie),n=rl(),r=te(),{t:o}=we(),s=d.useCallback(l=>{r(o1(l))},[r]),i=d.useCallback(()=>{r(o1(20))},[r]);return t?a.jsx(Ze,{label:o("parameters.steps"),min:1,max:100,step:1,onChange:s,handleReset:i,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:500},isDisabled:!n}):a.jsx(Uc,{label:o("parameters.steps"),min:1,max:500,step:1,onChange:s,value:e,numberInputFieldProps:{textAlign:"center"},isDisabled:!n})},xie=d.memo(vie);function bie(){const e=F(o=>o.sdxl.shouldUseSDXLRefiner),t=rl(),n=te(),r=o=>{n(FR(o.target.checked))};return a.jsx(Ut,{label:"Use Refiner",isChecked:e,onChange:r,isDisabled:!t})}const yie=ae(xe,e=>{const{shouldUseSDXLRefiner:t}=e.sdxl,{shouldUseSliders:n}=e.ui;return{activeLabel:t?"Enabled":void 0,shouldUseSliders:n}},Ce),Cie=()=>{const{activeLabel:e,shouldUseSliders:t}=F(yie);return a.jsx(hr,{label:"Refiner",activeLabel:e,children:a.jsxs(T,{sx:{gap:2,flexDir:"column"},children:[a.jsx(bie,{}),a.jsx(rie,{}),a.jsxs(T,{gap:2,flexDirection:t?"column":"row",children:[a.jsx(xie,{}),a.jsx(Jae,{})]}),a.jsx(fie,{}),a.jsx(cie,{}),a.jsx(aie,{}),a.jsx(mie,{})]})})},Ly=d.memo(Cie),wie=ae([xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:l}=t.sd.guidance,{cfgScale:f}=e,{shouldUseSliders:p}=n,{shift:h}=r;return{cfgScale:f,initial:o,min:s,sliderMax:i,inputMax:l,shouldUseSliders:p,shift:h}},Ce),Sie=()=>{const{cfgScale:e,initial:t,min:n,sliderMax:r,inputMax:o,shouldUseSliders:s,shift:i}=F(wie),l=te(),{t:f}=we(),p=d.useCallback(m=>l(Wp(m)),[l]),h=d.useCallback(()=>l(Wp(t)),[l,t]);return s?a.jsx(Ze,{label:f("parameters.cfgScale"),step:i?.1:.5,min:n,max:r,onChange:p,handleReset:h,value:e,sliderNumberInputProps:{max:o},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1}):a.jsx(Uc,{label:f("parameters.cfgScale"),step:.5,min:n,max:o,onChange:p,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"}})},bs=d.memo(Sie),kie=ae([xe],e=>{const{initial:t,min:n,sliderMax:r,inputMax:o,fineStep:s,coarseStep:i}=e.config.sd.iterations,{iterations:l}=e.generation,{shouldUseSliders:f}=e.ui,p=e.dynamicPrompts.isEnabled&&e.dynamicPrompts.combinatorial,h=e.hotkeys.shift?s:i;return{iterations:l,initial:t,min:n,sliderMax:r,inputMax:o,step:h,shouldUseSliders:f,isDisabled:p}},Ce),_ie=()=>{const{iterations:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i,isDisabled:l}=F(kie),f=te(),{t:p}=we(),h=d.useCallback(v=>{f(QC(v))},[f]),m=d.useCallback(()=>{f(QC(t))},[f,t]);return i?a.jsx(Ze,{isDisabled:l,label:p("parameters.images"),step:s,min:n,max:r,onChange:h,handleReset:m,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Uc,{isDisabled:l,label:p("parameters.images"),step:s,min:n,max:o,onChange:h,value:e,numberInputFieldProps:{textAlign:"center"}})},ys=d.memo(_ie),jie=ae(xe,e=>({model:e.generation.model}),Ce),Pie=()=>{const e=te(),{t}=we(),{model:n}=F(jie),r=qt("syncModels").isFeatureEnabled,{data:o,isLoading:s}=Bo(ZC),{data:i,isLoading:l}=Xu(ZC),f=F(wn),p=d.useMemo(()=>{if(!o)return[];const v=[];return Fn(o.entities,(x,C)=>{x&&v.push({value:C,label:x.model_name,group:mn[x.base_model]})}),Fn(i==null?void 0:i.entities,(x,C)=>{!x||f==="unifiedCanvas"||f==="img2img"||v.push({value:C,label:x.model_name,group:mn[x.base_model]})}),v},[o,i,f]),h=d.useMemo(()=>((o==null?void 0:o.entities[`${n==null?void 0:n.base_model}/main/${n==null?void 0:n.model_name}`])||(i==null?void 0:i.entities[`${n==null?void 0:n.base_model}/onnx/${n==null?void 0:n.model_name}`]))??null,[o==null?void 0:o.entities,n,i==null?void 0:i.entities]),m=d.useCallback(v=>{if(!v)return;const x=kg(v);x&&e(n1(x))},[e]);return s||l?a.jsx(Gt,{label:t("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs(T,{w:"100%",alignItems:"center",gap:3,children:[a.jsx(Gt,{tooltip:h==null?void 0:h.description,label:t("modelManager.model"),value:h==null?void 0:h.id,placeholder:p.length>0?"Select a model":"No models available",data:p,error:p.length===0,disabled:p.length===0,onChange:m,w:"100%"}),r&&a.jsx(Ie,{mt:7,children:a.jsx(Vc,{iconMode:!0})})]})},Iie=d.memo(Pie),Eie=ae(xe,({generation:e})=>{const{model:t,vae:n}=e;return{model:t,vae:n}},Ce),Mie=()=>{const e=te(),{t}=we(),{model:n,vae:r}=F(Eie),{data:o}=Kj(),s=d.useMemo(()=>{if(!o)return[];const f=[{value:"default",label:"Default",group:"Default"}];return Fn(o.entities,(p,h)=>{if(!p)return;const m=(n==null?void 0:n.base_model)!==p.base_model;f.push({value:h,label:p.model_name,group:mn[p.base_model],disabled:m,tooltip:m?`Incompatible base model: ${p.base_model}`:void 0})}),f.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,n==null?void 0:n.base_model]),i=d.useMemo(()=>(o==null?void 0:o.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[o==null?void 0:o.entities,r]),l=d.useCallback(f=>{if(!f||f==="default"){e(JC(null));return}const p=gO(f);p&&e(JC(p))},[e]);return a.jsx(Gt,{itemComponent:ri,tooltip:i==null?void 0:i.description,label:t("modelManager.vae"),value:(i==null?void 0:i.id)??"default",placeholder:"Default",data:s,onChange:l,disabled:s.length===0,clearable:!0})},Oie=d.memo(Mie),Die=ae([Gx,Vr],(e,t)=>{const{scheduler:n}=t,{favoriteSchedulers:r}=e,o=rr(dm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{scheduler:n,data:o}},Ce),Rie=()=>{const e=te(),{t}=we(),{scheduler:n,data:r}=F(Die),o=d.useCallback(s=>{s&&e(r1(s))},[e]);return a.jsx(Gt,{label:t("parameters.scheduler"),value:n,data:r,onChange:o})},Aie=d.memo(Rie),Nie=ae(xe,({generation:e})=>{const{vaePrecision:t}=e;return{vaePrecision:t}},Ce),Tie=["fp16","fp32"],$ie=()=>{const e=te(),{vaePrecision:t}=F(Nie),n=d.useCallback(r=>{r&&e(BR(r))},[e]);return a.jsx(Bn,{label:"VAE Precision",value:t,data:Tie,onChange:n})},Lie=d.memo($ie),zie=()=>{const e=qt("vae").isFeatureEnabled;return a.jsxs(T,{gap:3,w:"full",flexWrap:e?"wrap":"nowrap",children:[a.jsx(Ie,{w:"full",children:a.jsx(Iie,{})}),a.jsx(Ie,{w:"full",children:a.jsx(Aie,{})}),e&&a.jsxs(T,{w:"full",gap:3,children:[a.jsx(Oie,{}),a.jsx(Lie,{})]})]})},Cs=d.memo(zie),CO=[{name:"Free",value:null},{name:"2:3",value:2/3},{name:"16:9",value:16/9},{name:"1:1",value:1/1}],wO=CO.map(e=>e.value);function SO(){const e=F(o=>o.generation.aspectRatio),t=te(),n=F(o=>o.generation.shouldFitToWidthHeight),r=F(wn);return a.jsx(T,{gap:2,flexGrow:1,children:a.jsx(pn,{isAttached:!0,children:CO.map(o=>a.jsx(it,{size:"sm",isChecked:e===o.value,isDisabled:r==="img2img"?!n:!1,onClick:()=>{t(Mo(o.value)),t(Yu(!1))},children:o.name},o.name))})})}const Fie=ae([xe],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:l}=n.sd.height,{model:f,height:p}=e,{aspectRatio:h}=e,m=t.shift?i:l;return{model:f,height:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},Ce),Bie=e=>{const{model:t,height:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:l}=F(Fie),f=te(),{t:p}=we(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=d.useCallback(x=>{if(f(Ni(x)),l){const C=fr(x*l,8);f(Ai(C))}},[f,l]),v=d.useCallback(()=>{if(f(Ni(h)),l){const x=fr(h*l,8);f(Ai(x))}},[f,h,l]);return a.jsx(Ze,{label:p("parameters.height"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},Hie=d.memo(Bie),Wie=ae([xe],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:l}=n.sd.width,{model:f,width:p,aspectRatio:h}=e,m=t.shift?i:l;return{model:f,width:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},Ce),Vie=e=>{const{model:t,width:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:l}=F(Wie),f=te(),{t:p}=we(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=d.useCallback(x=>{if(f(Ai(x)),l){const C=fr(x/l,8);f(Ni(C))}},[f,l]),v=d.useCallback(()=>{if(f(Ai(h)),l){const x=fr(h/l,8);f(Ni(x))}},[f,h,l]);return a.jsx(Ze,{label:p("parameters.width"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},Uie=d.memo(Vie),Gie=ae([Vr,wn],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}=e;return{activeTabName:t,shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}});function Ec(){const{t:e}=we(),t=te(),{activeTabName:n,shouldFitToWidthHeight:r,shouldLockAspectRatio:o,width:s,height:i}=F(Gie),l=d.useCallback(()=>{o?(t(Yu(!1)),wO.includes(s/i)?t(Mo(s/i)):t(Mo(null))):(t(Yu(!0)),t(Mo(s/i)))},[o,s,i,t]),f=d.useCallback(()=>{t(HR()),t(Mo(null)),o&&t(Mo(i/s))},[t,o,s,i]);return a.jsxs(T,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[a.jsxs(T,{alignItems:"center",gap:2,children:[a.jsx(be,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:e("parameters.aspectRatio")}),a.jsx(Za,{}),a.jsx(SO,{}),a.jsx(Te,{tooltip:e("ui.swapSizes"),"aria-label":e("ui.swapSizes"),size:"sm",icon:a.jsx($M,{}),fontSize:20,isDisabled:n==="img2img"?!r:!1,onClick:f}),a.jsx(Te,{tooltip:e("ui.lockRatio"),"aria-label":e("ui.lockRatio"),size:"sm",icon:a.jsx(OE,{}),isChecked:o,isDisabled:n==="img2img"?!r:!1,onClick:l})]}),a.jsx(T,{gap:2,alignItems:"center",children:a.jsxs(T,{gap:2,flexDirection:"column",width:"full",children:[a.jsx(Uie,{isDisabled:n==="img2img"?!r:!1}),a.jsx(Hie,{isDisabled:n==="img2img"?!r:!1})]})})]})}const Kie=ae([xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:l,fineStep:f,coarseStep:p}=t.sd.steps,{steps:h}=e,{shouldUseSliders:m}=n,v=r.shift?f:p;return{steps:h,initial:o,min:s,sliderMax:i,inputMax:l,step:v,shouldUseSliders:m}},Ce),qie=()=>{const{steps:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i}=F(Kie),l=te(),{t:f}=we(),p=d.useCallback(v=>{l(Vp(v))},[l]),h=d.useCallback(()=>{l(Vp(t))},[l,t]),m=d.useCallback(()=>{l(bd())},[l]);return i?a.jsx(Ze,{label:f("parameters.steps"),min:n,max:r,step:s,onChange:p,handleReset:h,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Uc,{label:f("parameters.steps"),min:n,max:o,step:s,onChange:p,value:e,numberInputFieldProps:{textAlign:"center"},onBlur:m})},ws=d.memo(qie);function kO(){const e=te(),t=F(o=>o.generation.shouldFitToWidthHeight),n=o=>e(WR(o.target.checked)),{t:r}=we();return a.jsx(Ut,{label:r("parameters.imageFit"),isChecked:t,onChange:n})}function Xie(){const e=F(i=>i.generation.seed),t=F(i=>i.generation.shouldRandomizeSeed),n=F(i=>i.generation.shouldGenerateVariations),{t:r}=we(),o=te(),s=i=>o(Hp(i));return a.jsx(Uc,{label:r("parameters.seed"),step:1,precision:0,flexGrow:1,min:Qj,max:Zj,isDisabled:t,isInvalid:e<0&&n,onChange:s,value:e})}const Yie=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function Qie(){const e=te(),t=F(o=>o.generation.shouldRandomizeSeed),{t:n}=we(),r=()=>e(Hp(Yie(Qj,Zj)));return a.jsx(Te,{size:"sm",isDisabled:t,"aria-label":n("parameters.shuffle"),tooltip:n("parameters.shuffle"),onClick:r,icon:a.jsx(EZ,{})})}const Zie=()=>{const e=te(),{t}=we(),n=F(o=>o.generation.shouldRandomizeSeed),r=o=>e(VR(o.target.checked));return a.jsx(Ut,{label:t("common.random"),isChecked:n,onChange:r})},Jie=d.memo(Zie),ele=()=>a.jsxs(T,{sx:{gap:3,alignItems:"flex-end"},children:[a.jsx(Xie,{}),a.jsx(Qie,{}),a.jsx(Jie,{})]}),Ss=d.memo(ele),_O=e=>a.jsxs(T,{sx:{flexDir:"column",gap:2,bg:"base.100",px:4,pt:2,pb:4,borderRadius:"base",_dark:{bg:"base.750"}},children:[e.label&&a.jsx(be,{fontSize:"sm",fontWeight:"bold",sx:{color:"base.600",_dark:{color:"base.300"}},children:e.label}),e.children]});_O.displayName="SubSettingsWrapper";const Mc=d.memo(_O),tle=ae([xe],({sdxl:e})=>{const{sdxlImg2ImgDenoisingStrength:t}=e;return{sdxlImg2ImgDenoisingStrength:t}},Ce),nle=()=>{const{sdxlImg2ImgDenoisingStrength:e}=F(tle),t=te(),{t:n}=we(),r=d.useCallback(s=>t(ew(s)),[t]),o=d.useCallback(()=>{t(ew(.7))},[t]);return a.jsx(Mc,{children:a.jsx(Ze,{label:`${n("parameters.denoisingStrength")}`,step:.01,min:0,max:1,onChange:r,handleReset:o,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0})})},jO=d.memo(nle),rle=ae([Gx,Vr],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ce),ole=()=>{const{shouldUseSliders:e,activeLabel:t}=F(rle);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs(T,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Ec,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(T,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Ec,{})]}),a.jsx(jO,{}),a.jsx(kO,{})]})})},sle=d.memo(ole),ale=()=>a.jsxs(a.Fragment,{children:[a.jsx($y,{}),a.jsx(sle,{}),a.jsx(Ly,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Gc,{}),a.jsx(Gd,{}),a.jsx(Xc,{})]}),ile=d.memo(ale),lle=ae(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ce),cle=()=>{const{shouldUseSliders:e,activeLabel:t}=F(lle);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsx(T,{sx:{flexDirection:"column",gap:3},children:e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Ec,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(T,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Ec,{})]})})})},PO=d.memo(cle),ule=()=>a.jsxs(a.Fragment,{children:[a.jsx($y,{}),a.jsx(PO,{}),a.jsx(Ly,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Gc,{}),a.jsx(Gd,{}),a.jsx(Xc,{})]}),dle=d.memo(ule),fle=[{label:"Unmasked",value:"unmasked"},{label:"Mask",value:"mask"},{label:"Mask Edge",value:"edge"}],ple=()=>{const e=te(),t=F(o=>o.generation.canvasCoherenceMode),{t:n}=we(),r=o=>{o&&e(UR(o))};return a.jsx(Bn,{label:n("parameters.coherenceMode"),data:fle,value:t,onChange:r})},hle=d.memo(ple),mle=()=>{const e=te(),t=F(r=>r.generation.canvasCoherenceSteps),{t:n}=we();return a.jsx(Ze,{label:n("parameters.coherenceSteps"),min:1,max:100,step:1,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(tw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(tw(20))}})},gle=d.memo(mle),vle=()=>{const e=te(),t=F(r=>r.generation.canvasCoherenceStrength),{t:n}=we();return a.jsx(Ze,{label:n("parameters.coherenceStrength"),min:0,max:1,step:.01,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(nw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(nw(.3))}})},xle=d.memo(vle);function ble(){const e=te(),t=F(r=>r.generation.maskBlur),{t:n}=we();return a.jsx(Ze,{label:n("parameters.maskBlur"),min:0,max:64,sliderNumberInputProps:{max:512},value:t,onChange:r=>{e(rw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(rw(16))}})}const yle=[{label:"Box Blur",value:"box"},{label:"Gaussian Blur",value:"gaussian"}];function Cle(){const e=F(o=>o.generation.maskBlurMethod),t=te(),{t:n}=we(),r=o=>{o&&t(GR(o))};return a.jsx(Bn,{value:e,onChange:r,label:n("parameters.maskBlurMethod"),data:yle})}const wle=()=>{const{t:e}=we();return a.jsx(hr,{label:e("parameters.compositingSettingsHeader"),children:a.jsxs(T,{sx:{flexDirection:"column",gap:2},children:[a.jsxs(Mc,{label:e("parameters.coherencePassHeader"),children:[a.jsx(hle,{}),a.jsx(gle,{}),a.jsx(xle,{})]}),a.jsx(Fr,{}),a.jsxs(Mc,{label:e("parameters.maskAdjustmentsHeader"),children:[a.jsx(ble,{}),a.jsx(Cle,{})]})]})})},IO=d.memo(wle),Sle=ae([xe],({generation:e})=>{const{infillMethod:t}=e;return{infillMethod:t}},Ce),kle=()=>{const e=te(),{infillMethod:t}=F(Sle),{data:n,isLoading:r}=Aj(),o=n==null?void 0:n.infill_methods,{t:s}=we(),i=d.useCallback(l=>{e(KR(l))},[e]);return a.jsx(Bn,{disabled:(o==null?void 0:o.length)===0,placeholder:r?"Loading...":void 0,label:s("parameters.infillMethod"),value:t,data:o??[],onChange:i})},_le=d.memo(kle),jle=ae([Vr],e=>{const{infillPatchmatchDownscaleSize:t,infillMethod:n}=e;return{infillPatchmatchDownscaleSize:t,infillMethod:n}},Ce),Ple=()=>{const e=te(),{infillPatchmatchDownscaleSize:t,infillMethod:n}=F(jle),{t:r}=we(),o=d.useCallback(i=>{e(ow(i))},[e]),s=d.useCallback(()=>{e(ow(2))},[e]);return a.jsx(Ze,{isDisabled:n!=="patchmatch",label:r("parameters.patchmatchDownScaleSize"),min:1,max:10,value:t,onChange:o,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:s})},Ile=d.memo(Ple),Ele=ae([Vr],e=>{const{infillTileSize:t,infillMethod:n}=e;return{infillTileSize:t,infillMethod:n}},Ce),Mle=()=>{const e=te(),{infillTileSize:t,infillMethod:n}=F(Ele),{t:r}=we(),o=d.useCallback(i=>{e(sw(i))},[e]),s=d.useCallback(()=>{e(sw(32))},[e]);return a.jsx(Ze,{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})},Ole=d.memo(Mle),Dle=ae([Vr],e=>{const{infillMethod:t}=e;return{infillMethod:t}},Ce);function Rle(){const{infillMethod:e}=F(Dle);return a.jsxs(T,{children:[e==="tile"&&a.jsx(Ole,{}),e==="patchmatch"&&a.jsx(Ile,{})]})}const $t=e=>e.canvas,bo=ae([$t,wn,vo],(e,t,n)=>e.layerState.stagingArea.images.length>0||t==="unifiedCanvas"&&n.isProcessing),Ale=ae([$t],e=>{const{boundingBoxScaleMethod:t}=e;return{boundingBoxScale:t}},Ce),Nle=()=>{const e=te(),{boundingBoxScale:t}=F(Ale),{t:n}=we(),r=o=>{e(XR(o))};return a.jsx(Gt,{label:n("parameters.scaleBeforeProcessing"),data:qR,value:t,onChange:r})},Tle=d.memo(Nle),$le=ae([Vr,$t],(e,t)=>{const{scaledBoundingBoxDimensions:n,boundingBoxScaleMethod:r}=t,{model:o,aspectRatio:s}=e;return{model:o,scaledBoundingBoxDimensions:n,isManual:r==="manual",aspectRatio:s}},Ce),Lle=()=>{const e=te(),{model:t,isManual:n,scaledBoundingBoxDimensions:r,aspectRatio:o}=F($le),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=we(),l=p=>{let h=r.width;const m=Math.floor(p);o&&(h=fr(m*o,64)),e(Gp({width:h,height:m}))},f=()=>{let p=r.width;const h=Math.floor(s);o&&(p=fr(h*o,64)),e(Gp({width:p,height:h}))};return a.jsx(Ze,{isDisabled:!n,label:i("parameters.scaledHeight"),min:64,max:1536,step:64,value:r.height,onChange:l,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:f})},zle=d.memo(Lle),Fle=ae([$t,Vr],(e,t)=>{const{boundingBoxScaleMethod:n,scaledBoundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,scaledBoundingBoxDimensions:r,aspectRatio:s,isManual:n==="manual"}},Ce),Ble=()=>{const e=te(),{model:t,isManual:n,scaledBoundingBoxDimensions:r,aspectRatio:o}=F(Fle),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=we(),l=p=>{const h=Math.floor(p);let m=r.height;o&&(m=fr(h/o,64)),e(Gp({width:h,height:m}))},f=()=>{const p=Math.floor(s);let h=r.height;o&&(h=fr(p/o,64)),e(Gp({width:p,height:h}))};return a.jsx(Ze,{isDisabled:!n,label:i("parameters.scaledWidth"),min:64,max:1536,step:64,value:r.width,onChange:l,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:f})},Hle=d.memo(Ble),Wle=()=>{const{t:e}=we();return a.jsx(hr,{label:e("parameters.infillScalingHeader"),children:a.jsxs(T,{sx:{gap:2,flexDirection:"column"},children:[a.jsxs(Mc,{children:[a.jsx(_le,{}),a.jsx(Rle,{})]}),a.jsx(Fr,{}),a.jsxs(Mc,{children:[a.jsx(Tle,{}),a.jsx(Hle,{}),a.jsx(zle,{})]})]})})},EO=d.memo(Wle),Vle=ae([xe,bo],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},Ce),Ule=()=>{const e=te(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=F(Vle),{t:s}=we(),i=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,l=p=>{if(e(Ao({...n,height:Math.floor(p)})),o){const h=fr(p*o,64);e(Ao({width:h,height:Math.floor(p)}))}},f=()=>{if(e(Ao({...n,height:Math.floor(i)})),o){const p=fr(i*o,64);e(Ao({width:p,height:Math.floor(i)}))}};return a.jsx(Ze,{label:s("parameters.boundingBoxHeight"),min:64,max:1536,step:64,value:n.height,onChange:l,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:f})},Gle=d.memo(Ule),Kle=ae([xe,bo],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},Ce),qle=()=>{const e=te(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=F(Kle),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=we(),l=p=>{if(e(Ao({...n,width:Math.floor(p)})),o){const h=fr(p/o,64);e(Ao({width:Math.floor(p),height:h}))}},f=()=>{if(e(Ao({...n,width:Math.floor(s)})),o){const p=fr(s/o,64);e(Ao({width:Math.floor(s),height:p}))}};return a.jsx(Ze,{label:i("parameters.boundingBoxWidth"),min:64,max:1536,step:64,value:n.width,onChange:l,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:f})},Xle=d.memo(qle),Yle=ae([Vr,$t],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r}=e,{boundingBoxDimensions:o}=t;return{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,boundingBoxDimensions:o}});function am(){const e=te(),{t}=we(),{shouldLockAspectRatio:n,boundingBoxDimensions:r}=F(Yle),o=d.useCallback(()=>{n?(e(Yu(!1)),wO.includes(r.width/r.height)?e(Mo(r.width/r.height)):e(Mo(null))):(e(Yu(!0)),e(Mo(r.width/r.height)))},[n,r,e]),s=d.useCallback(()=>{e(YR()),e(Mo(null)),n&&e(Mo(r.height/r.width))},[e,n,r]);return a.jsxs(T,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.100",_dark:{bg:"base.750"}},children:[a.jsxs(T,{alignItems:"center",gap:2,children:[a.jsx(be,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:t("parameters.aspectRatio")}),a.jsx(Za,{}),a.jsx(SO,{}),a.jsx(Te,{tooltip:t("ui.swapSizes"),"aria-label":t("ui.swapSizes"),size:"sm",icon:a.jsx($M,{}),fontSize:20,onClick:s}),a.jsx(Te,{tooltip:t("ui.lockRatio"),"aria-label":t("ui.lockRatio"),size:"sm",icon:a.jsx(OE,{}),isChecked:n,onClick:o})]}),a.jsx(Xle,{}),a.jsx(Gle,{})]})}const Qle=ae(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ce),Zle=()=>{const{shouldUseSliders:e,activeLabel:t}=F(Qle);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs(T,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(am,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(T,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(am,{})]}),a.jsx(jO,{})]})})},Jle=d.memo(Zle);function ece(){return a.jsxs(a.Fragment,{children:[a.jsx($y,{}),a.jsx(Jle,{}),a.jsx(Ly,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Gc,{}),a.jsx(Gd,{}),a.jsx(EO,{}),a.jsx(IO,{}),a.jsx(Xc,{})]})}function tce(){const e=F(f=>f.generation.clipSkip),{model:t}=F(f=>f.generation),n=te(),{t:r}=we(),o=d.useCallback(f=>{n(aw(f))},[n]),s=d.useCallback(()=>{n(aw(0))},[n]),i=d.useMemo(()=>t?Vf[t.base_model].maxClip:Vf["sd-1"].maxClip,[t]),l=d.useMemo(()=>t?Vf[t.base_model].markers:Vf["sd-1"].markers,[t]);return a.jsx(Ze,{label:r("parameters.clipSkip"),"aria-label":r("parameters.clipSkip"),min:0,max:i,step:1,value:e,onChange:o,withSliderMarks:!0,sliderMarks:l,withInput:!0,withReset:!0,handleReset:s})}const nce=ae(xe,e=>({activeLabel:e.generation.clipSkip>0?"Clip Skip":void 0}),Ce);function zy(){const{activeLabel:e}=F(nce);return F(n=>n.generation.shouldShowAdvancedOptions)?a.jsx(hr,{label:"Advanced",activeLabel:e,children:a.jsx(T,{sx:{flexDir:"column",gap:2},children:a.jsx(tce,{})})}):null}function Fy(){return a.jsxs(T,{sx:{flexDirection:"column",gap:2},children:[a.jsx(bO,{}),a.jsx(xO,{})]})}function rce(){const e=F(o=>o.generation.horizontalSymmetrySteps),t=F(o=>o.generation.steps),n=te(),{t:r}=we();return a.jsx(Ze,{label:r("parameters.hSymmetryStep"),value:e,onChange:o=>n(iw(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(iw(0))})}function oce(){const e=F(o=>o.generation.verticalSymmetrySteps),t=F(o=>o.generation.steps),n=te(),{t:r}=we();return a.jsx(Ze,{label:r("parameters.vSymmetryStep"),value:e,onChange:o=>n(lw(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(lw(0))})}function sce(){const e=F(n=>n.generation.shouldUseSymmetry),t=te();return a.jsx(Ut,{label:"Enable Symmetry",isChecked:e,onChange:n=>t(QR(n.target.checked))})}const ace=ae(xe,e=>({activeLabel:e.generation.shouldUseSymmetry?"Enabled":void 0}),Ce),ice=()=>{const{t:e}=we(),{activeLabel:t}=F(ace);return qt("symmetry").isFeatureEnabled?a.jsx(hr,{label:e("parameters.symmetry"),activeLabel:t,children:a.jsxs(T,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(sce,{}),a.jsx(rce,{}),a.jsx(oce,{})]})}):null},By=d.memo(ice),lce=ae([xe],({generation:e,hotkeys:t,config:n})=>{const{initial:r,min:o,sliderMax:s,inputMax:i,fineStep:l,coarseStep:f}=n.sd.img2imgStrength,{img2imgStrength:p}=e,h=t.shift?l:f;return{img2imgStrength:p,initial:r,min:o,sliderMax:s,inputMax:i,step:h}},Ce),cce=()=>{const{img2imgStrength:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s}=F(lce),i=te(),{t:l}=we(),f=d.useCallback(h=>i(Up(h)),[i]),p=d.useCallback(()=>{i(Up(t))},[i,t]);return a.jsx(Mc,{children:a.jsx(Ze,{label:`${l("parameters.denoisingStrength")}`,step:s,min:n,max:r,onChange:f,handleReset:p,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0,sliderNumberInputProps:{max:o}})})},MO=d.memo(cce),uce=ae([Gx,Vr],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ce),dce=()=>{const{shouldUseSliders:e,activeLabel:t}=F(uce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs(T,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Ec,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(T,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Ec,{})]}),a.jsx(MO,{}),a.jsx(kO,{})]})})},fce=d.memo(dce),pce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Fy,{}),a.jsx(fce,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Gc,{}),a.jsx(Gd,{}),a.jsx(By,{}),a.jsx(Xc,{}),a.jsx(zy,{})]}),hce=d.memo(pce),mce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Fy,{}),a.jsx(PO,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Gc,{}),a.jsx(Gd,{}),a.jsx(By,{}),a.jsx(Xc,{}),a.jsx(zy,{})]}),gce=d.memo(mce),vce=ae(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Ce),xce=()=>{const{shouldUseSliders:e,activeLabel:t}=F(vce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs(T,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(am,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs(T,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(bs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(am,{})]}),a.jsx(MO,{})]})})},bce=d.memo(xce),yce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Fy,{}),a.jsx(bce,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Gc,{}),a.jsx(By,{}),a.jsx(EO,{}),a.jsx(IO,{}),a.jsx(Xc,{}),a.jsx(zy,{})]}),Cce=d.memo(yce),wce=()=>{const e=F(wn),t=F(n=>n.generation.model);return e==="txt2img"?a.jsx(zp,{children:t&&t.base_model==="sdxl"?a.jsx(dle,{}):a.jsx(gce,{})}):e==="img2img"?a.jsx(zp,{children:t&&t.base_model==="sdxl"?a.jsx(ile,{}):a.jsx(hce,{})}):e==="unifiedCanvas"?a.jsx(zp,{children:t&&t.base_model==="sdxl"?a.jsx(ece,{}):a.jsx(Cce,{})}):null},Sce=d.memo(wce),zp=d.memo(e=>a.jsxs(T,{sx:{w:"full",h:"full",flexDir:"column",gap:2},children:[a.jsx(HM,{}),a.jsx(T,{layerStyle:"first",sx:{w:"full",h:"full",position:"relative",borderRadius:"base",p:2},children:a.jsx(T,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx(lg,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:800,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:a.jsx(T,{sx:{gap:2,flexDirection:"column",h:"full",w:"full"},children:e.children})})})})})]}));zp.displayName="ParametersPanelWrapper";const kce=ae([xe],e=>{const{initialImage:t}=e.generation;return{initialImage:t,isResetButtonDisabled:!t}},Ce),_ce=()=>{const{initialImage:e}=F(kce),{currentData:t}=po((e==null?void 0:e.imageName)??zr.skipToken),n=d.useMemo(()=>{if(t)return{id:"initial-image",payloadType:"IMAGE_DTO",payload:{imageDTO:t}}},[t]),r=d.useMemo(()=>({id:"initial-image",actionType:"SET_INITIAL_IMAGE"}),[]);return a.jsx(Ya,{imageDTO:t,droppableData:r,draggableData:n,isUploadDisabled:!0,fitContainer:!0,dropLabel:"Set as Initial Image",noContentFallback:a.jsx(tr,{label:"No initial image selected"})})},jce=d.memo(_ce),Pce=ae([xe],e=>{const{initialImage:t}=e.generation;return{isResetButtonDisabled:!t}},Ce),Ice={type:"SET_INITIAL_IMAGE"},Ece=()=>{const{isResetButtonDisabled:e}=F(Pce),t=te(),{getUploadButtonProps:n,getUploadInputProps:r}=ky({postUploadAction:Ice}),o=d.useCallback(()=>{t(ZR())},[t]);return a.jsxs(T,{layerStyle:"first",sx:{position:"relative",flexDirection:"column",height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",p:2,gap:4},children:[a.jsxs(T,{sx:{w:"full",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},children:[a.jsx(be,{sx:{ps:2,fontWeight:600,userSelect:"none",color:"base.700",_dark:{color:"base.200"}},children:"Initial Image"}),a.jsx(Za,{}),a.jsx(Te,{tooltip:"Upload Initial Image","aria-label":"Upload Initial Image",icon:a.jsx(ng,{}),...n()}),a.jsx(Te,{tooltip:"Reset Initial Image","aria-label":"Reset Initial Image",icon:a.jsx(tg,{}),onClick:o,isDisabled:e})]}),a.jsx(jce,{}),a.jsx("input",{...r()})]})},Mce=d.memo(Ece),Oce=ae([xe],({system:e})=>{const{isProcessing:t,isConnected:n}=e;return n&&!t}),Dce=e=>{const{onClick:t,isDisabled:n}=e,{t:r}=we(),o=F(Oce);return a.jsx(Te,{onClick:t,icon:a.jsx(Wr,{}),tooltip:`${r("gallery.deleteImage")} (Del)`,"aria-label":`${r("gallery.deleteImage")} (Del)`,isDisabled:n||!o,colorScheme:"error"})},Rce=[{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 Ace(){const e=F(r=>r.postprocessing.esrganModelName),t=te(),n=r=>t(JR(r));return a.jsx(Bn,{label:"ESRGAN Model",value:e,itemComponent:ri,onChange:n,data:Rce})}const Nce=e=>{const{imageDTO:t}=e,n=te(),r=F(Pn),{t:o}=we(),{isOpen:s,onOpen:i,onClose:l}=Er(),f=d.useCallback(()=>{l(),t&&n(Jj({image_name:t.image_name}))},[n,t,l]);return a.jsx(Vd,{isOpen:s,onClose:l,triggerComponent:a.jsx(Te,{onClick:i,icon:a.jsx(mZ,{}),"aria-label":o("parameters.upscale")}),children:a.jsxs(T,{sx:{flexDirection:"column",gap:4},children:[a.jsx(Ace,{}),a.jsx(it,{size:"sm",isDisabled:!t||r,onClick:f,children:o("parameters.upscaleImage")})]})})},Tce=d.memo(Nce),$ce=ae([xe,wn],({gallery:e,system:t,ui:n,config:r},o)=>{const{isProcessing:s,isConnected:i,shouldConfirmOnDelete:l,progressImage:f}=t,{shouldShowImageDetails:p,shouldHidePreview:h,shouldShowProgressInViewer:m}=n,{shouldFetchMetadataFromApi:v}=r,x=e.selection[e.selection.length-1];return{canDeleteImage:i&&!s,shouldConfirmOnDelete:l,isProcessing:s,isConnected:i,shouldDisableToolbarButtons:!!f||!x,shouldShowImageDetails:p,activeTabName:o,shouldHidePreview:h,shouldShowProgressInViewer:m,lastSelectedImage:x,shouldFetchMetadataFromApi:v}},{memoizeOptions:{resultEqualityCheck:kt}}),Lce=e=>{const t=te(),{isProcessing:n,isConnected:r,shouldDisableToolbarButtons:o,shouldShowImageDetails:s,lastSelectedImage:i,shouldShowProgressInViewer:l,shouldFetchMetadataFromApi:f}=F($ce),p=qt("upscaling").isFeatureEnabled,h=Zi(),{t:m}=we(),{recallBothPrompts:v,recallSeed:x,recallAllParameters:C}=gg(),{currentData:b}=po((i==null?void 0:i.image_name)??zr.skipToken),w=d.useMemo(()=>i?{image:i,shouldFetchMetadataFromApi:f}:zr.skipToken,[i,f]),{metadata:k,workflow:_,isLoading:j}=Lx(w,{selectFromResult:B=>{var U,Y;return{isLoading:B.isFetching,metadata:(U=B==null?void 0:B.currentData)==null?void 0:U.metadata,workflow:(Y=B==null?void 0:B.currentData)==null?void 0:Y.workflow}}}),I=d.useCallback(()=>{_&&t(Bx(_))},[t,_]),M=d.useCallback(()=>{C(k)},[k,C]);Qe("a",()=>{},[k,C]);const E=d.useCallback(()=>{x(k==null?void 0:k.seed)},[k==null?void 0:k.seed,x]);Qe("s",E,[b]);const O=d.useCallback(()=>{v(k==null?void 0:k.positive_prompt,k==null?void 0:k.negative_prompt,k==null?void 0:k.positive_style_prompt,k==null?void 0:k.negative_style_prompt)},[k==null?void 0:k.negative_prompt,k==null?void 0:k.positive_prompt,k==null?void 0:k.positive_style_prompt,k==null?void 0:k.negative_style_prompt,v]);Qe("p",O,[b]),Qe("w",I,[_]);const D=d.useCallback(()=>{t(LM()),t(pm(b))},[t,b]);Qe("shift+i",D,[b]);const A=d.useCallback(()=>{b&&t(Jj({image_name:b.image_name}))},[t,b]),R=d.useCallback(()=>{b&&t(hm([b]))},[t,b]);Qe("Shift+U",()=>{A()},{enabled:()=>!!(p&&!o&&r&&!n)},[p,b,o,r,n]);const $=d.useCallback(()=>t(eA(!s)),[t,s]);Qe("i",()=>{b?$():h({title:m("toast.metadataLoadFailed"),status:"error",duration:2500,isClosable:!0})},[b,s,h]),Qe("delete",()=>{R()},[t,b]);const K=d.useCallback(()=>{t(Nj(!l))},[t,l]);return a.jsx(a.Fragment,{children:a.jsxs(T,{sx:{flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},...e,children:[a.jsx(pn,{isAttached:!0,isDisabled:o,children:a.jsxs(Dd,{children:[a.jsx(Rd,{as:Te,"aria-label":`${m("parameters.sendTo")}...`,tooltip:`${m("parameters.sendTo")}...`,isDisabled:!b,icon:a.jsx(AZ,{})}),a.jsx(Ga,{motionProps:mc,children:b&&a.jsx(zM,{imageDTO:b})})]})}),a.jsxs(pn,{isAttached:!0,isDisabled:o,children:[a.jsx(Te,{isLoading:j,icon:a.jsx(vg,{}),tooltip:`${m("nodes.loadWorkflow")} (W)`,"aria-label":`${m("nodes.loadWorkflow")} (W)`,isDisabled:!_,onClick:I}),a.jsx(Te,{isLoading:j,icon:a.jsx(RE,{}),tooltip:`${m("parameters.usePrompt")} (P)`,"aria-label":`${m("parameters.usePrompt")} (P)`,isDisabled:!(k!=null&&k.positive_prompt),onClick:O}),a.jsx(Te,{isLoading:j,icon:a.jsx(AE,{}),tooltip:`${m("parameters.useSeed")} (S)`,"aria-label":`${m("parameters.useSeed")} (S)`,isDisabled:!(k!=null&&k.seed),onClick:E}),a.jsx(Te,{isLoading:j,icon:a.jsx(SE,{}),tooltip:`${m("parameters.useAll")} (A)`,"aria-label":`${m("parameters.useAll")} (A)`,isDisabled:!k,onClick:M})]}),p&&a.jsx(pn,{isAttached:!0,isDisabled:o,children:p&&a.jsx(Tce,{imageDTO:b})}),a.jsx(pn,{isAttached:!0,isDisabled:o,children:a.jsx(Te,{icon:a.jsx(_E,{}),tooltip:`${m("parameters.info")} (I)`,"aria-label":`${m("parameters.info")} (I)`,isChecked:s,onClick:$})}),a.jsx(pn,{isAttached:!0,children:a.jsx(Te,{"aria-label":m("settings.displayInProgress"),tooltip:m("settings.displayInProgress"),icon:a.jsx(wZ,{}),isChecked:l,onClick:K})}),a.jsx(pn,{isAttached:!0,children:a.jsx(Dce,{onClick:R,isDisabled:o})})]})})},zce=d.memo(Lce),Fce=ae([xe,Hx],(e,t)=>{var _,j;const{data:n,status:r}=tA.endpoints.listImages.select(t)(e),{data:o}=e.gallery.galleryView==="images"?cw.endpoints.getBoardImagesTotal.select(t.board_id??"none")(e):cw.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(e),s=e.gallery.selection[e.gallery.selection.length-1],i=r==="pending";if(!n||!s||o===0)return{isFetching:i,queryArgs:t,isOnFirstImage:!0,isOnLastImage:!0};const l={...t,offset:n.ids.length,limit:Uj},f=nA.getSelectors(),p=f.selectAll(n),h=p.findIndex(I=>I.image_name===s.image_name),m=Ri(h+1,0,p.length-1),v=Ri(h-1,0,p.length-1),x=(_=p[m])==null?void 0:_.image_name,C=(j=p[v])==null?void 0:j.image_name,b=x?f.selectById(n,x):void 0,w=C?f.selectById(n,C):void 0,k=p.length;return{loadedImagesCount:p.length,currentImageIndex:h,areMoreImagesAvailable:(o??0)>k,isFetching:r==="pending",nextImage:b,prevImage:w,queryArgs:l}},{memoizeOptions:{resultEqualityCheck:kt}}),OO=()=>{const e=te(),{nextImage:t,prevImage:n,areMoreImagesAvailable:r,isFetching:o,queryArgs:s,loadedImagesCount:i,currentImageIndex:l}=F(Fce),f=d.useCallback(()=>{n&&e(uw(n))},[e,n]),p=d.useCallback(()=>{t&&e(uw(t))},[e,t]),[h]=Vj(),m=d.useCallback(()=>{h(s)},[h,s]);return{handlePrevImage:f,handleNextImage:p,isOnFirstImage:l===0,isOnLastImage:l!==void 0&&l===i-1,nextImage:t,prevImage:n,areMoreImagesAvailable:r,handleLoadMoreImages:m,isFetching:o}};function Bce(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M245.09 327.74v-37.32c57.07 0 84.51 13.47 108.58 38.68 5.4 5.65 15 1.32 14.29-6.43-5.45-61.45-34.14-117.09-122.87-117.09v-37.32a8.32 8.32 0 00-14.05-6L146.58 242a8.2 8.2 0 000 11.94L231 333.71a8.32 8.32 0 0014.09-5.97z"}},{tag:"path",attr:{fill:"none",strokeMiterlimit:"10",strokeWidth:"32",d:"M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z"}}]})(e)}const Hce=({label:e,value:t,onClick:n,isLink:r,labelPosition:o,withCopy:s=!1})=>{const{t:i}=we();return t?a.jsxs(T,{gap:2,children:[n&&a.jsx(Dt,{label:`Recall ${e}`,children:a.jsx(ps,{"aria-label":i("accessibility.useThisParameter"),icon:a.jsx(Bce,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),s&&a.jsx(Dt,{label:`Copy ${e}`,children:a.jsx(ps,{"aria-label":`Copy ${e}`,icon:a.jsx(Hc,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(t.toString())})}),a.jsxs(T,{direction:o?"column":"row",children:[a.jsxs(be,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?a.jsxs(Im,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",a.jsx(hM,{mx:"2px"})]}):a.jsx(be,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}):null},eo=d.memo(Hce),Wce=e=>{const{metadata:t}=e,{recallPositivePrompt:n,recallNegativePrompt:r,recallSeed:o,recallCfgScale:s,recallModel:i,recallScheduler:l,recallSteps:f,recallWidth:p,recallHeight:h,recallStrength:m}=gg(),v=d.useCallback(()=>{n(t==null?void 0:t.positive_prompt)},[t==null?void 0:t.positive_prompt,n]),x=d.useCallback(()=>{r(t==null?void 0:t.negative_prompt)},[t==null?void 0:t.negative_prompt,r]),C=d.useCallback(()=>{o(t==null?void 0:t.seed)},[t==null?void 0:t.seed,o]),b=d.useCallback(()=>{i(t==null?void 0:t.model)},[t==null?void 0:t.model,i]),w=d.useCallback(()=>{p(t==null?void 0:t.width)},[t==null?void 0:t.width,p]),k=d.useCallback(()=>{h(t==null?void 0:t.height)},[t==null?void 0:t.height,h]),_=d.useCallback(()=>{l(t==null?void 0:t.scheduler)},[t==null?void 0:t.scheduler,l]),j=d.useCallback(()=>{f(t==null?void 0:t.steps)},[t==null?void 0:t.steps,f]),I=d.useCallback(()=>{s(t==null?void 0:t.cfg_scale)},[t==null?void 0:t.cfg_scale,s]),M=d.useCallback(()=>{m(t==null?void 0:t.strength)},[t==null?void 0:t.strength,m]);return!t||Object.keys(t).length===0?null:a.jsxs(a.Fragment,{children:[t.created_by&&a.jsx(eo,{label:"Created By",value:t.created_by}),t.generation_mode&&a.jsx(eo,{label:"Generation Mode",value:t.generation_mode}),t.positive_prompt&&a.jsx(eo,{label:"Positive Prompt",labelPosition:"top",value:t.positive_prompt,onClick:v}),t.negative_prompt&&a.jsx(eo,{label:"Negative Prompt",labelPosition:"top",value:t.negative_prompt,onClick:x}),t.seed!==void 0&&t.seed!==null&&a.jsx(eo,{label:"Seed",value:t.seed,onClick:C}),t.model!==void 0&&t.model!==null&&t.model.model_name&&a.jsx(eo,{label:"Model",value:t.model.model_name,onClick:b}),t.width&&a.jsx(eo,{label:"Width",value:t.width,onClick:w}),t.height&&a.jsx(eo,{label:"Height",value:t.height,onClick:k}),t.scheduler&&a.jsx(eo,{label:"Scheduler",value:t.scheduler,onClick:_}),t.steps&&a.jsx(eo,{label:"Steps",value:t.steps,onClick:j}),t.cfg_scale!==void 0&&t.cfg_scale!==null&&a.jsx(eo,{label:"CFG scale",value:t.cfg_scale,onClick:I}),t.strength&&a.jsx(eo,{label:"Image to image strength",value:t.strength,onClick:M})]})},Vce=d.memo(Wce),Uce=({image:e})=>{const{shouldFetchMetadataFromApi:t}=F(Py),{metadata:n,workflow:r}=Lx({image:e,shouldFetchMetadataFromApi:t},{selectFromResult:o=>{var s,i;return{metadata:(s=o==null?void 0:o.currentData)==null?void 0:s.metadata,workflow:(i=o==null?void 0:o.currentData)==null?void 0:i.workflow}}});return a.jsxs(T,{layerStyle:"first",sx:{padding:4,gap:1,flexDirection:"column",width:"full",height:"full",borderRadius:"base",position:"absolute",overflow:"hidden"},children:[a.jsxs(T,{gap:2,children:[a.jsx(be,{fontWeight:"semibold",children:"File:"}),a.jsxs(Im,{href:e.image_url,isExternal:!0,maxW:"calc(100% - 3rem)",children:[e.image_name,a.jsx(hM,{mx:"2px"})]})]}),a.jsx(Vce,{metadata:n}),a.jsxs(Yi,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(Qi,{children:[a.jsx(Pr,{children:"Metadata"}),a.jsx(Pr,{children:"Image Details"}),a.jsx(Pr,{children:"Workflow"})]}),a.jsxs(zc,{children:[a.jsx(fo,{children:n?a.jsx(Oi,{data:n,label:"Metadata"}):a.jsx(tr,{label:"No metadata found"})}),a.jsx(fo,{children:e?a.jsx(Oi,{data:e,label:"Image Details"}):a.jsx(tr,{label:"No image details found"})}),a.jsx(fo,{children:r?a.jsx(Oi,{data:r,label:"Workflow"}):a.jsx(tr,{label:"No workflow found"})})]})]})]})},Gce=d.memo(Uce),Vv={color:"base.100",pointerEvents:"auto"},Kce=()=>{const{t:e}=we(),{handlePrevImage:t,handleNextImage:n,isOnFirstImage:r,isOnLastImage:o,handleLoadMoreImages:s,areMoreImagesAvailable:i,isFetching:l}=OO();return a.jsxs(Ie,{sx:{position:"relative",height:"100%",width:"100%"},children:[a.jsx(Ie,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineStart:0},children:!r&&a.jsx(ps,{"aria-label":e("accessibility.previousImage"),icon:a.jsx(tZ,{size:64}),variant:"unstyled",onClick:t,boxSize:16,sx:Vv})}),a.jsxs(Ie,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineEnd:0},children:[!o&&a.jsx(ps,{"aria-label":e("accessibility.nextImage"),icon:a.jsx(nZ,{size:64}),variant:"unstyled",onClick:n,boxSize:16,sx:Vv}),o&&i&&!l&&a.jsx(ps,{"aria-label":e("accessibility.loadMore"),icon:a.jsx(eZ,{size:64}),variant:"unstyled",onClick:s,boxSize:16,sx:Vv}),o&&i&&l&&a.jsx(T,{sx:{w:16,h:16,alignItems:"center",justifyContent:"center"},children:a.jsx(Ki,{opacity:.5,size:"xl"})})]})]})},DO=d.memo(Kce),qce=ae([xe,rA],({ui:e,system:t},n)=>{const{shouldShowImageDetails:r,shouldHidePreview:o,shouldShowProgressInViewer:s}=e,{progressImage:i,shouldAntialiasProgressImage:l}=t;return{shouldShowImageDetails:r,shouldHidePreview:o,imageName:n==null?void 0:n.image_name,progressImage:i,shouldShowProgressInViewer:s,shouldAntialiasProgressImage:l}},{memoizeOptions:{resultEqualityCheck:kt}}),Xce=()=>{const{shouldShowImageDetails:e,imageName:t,progressImage:n,shouldShowProgressInViewer:r,shouldAntialiasProgressImage:o}=F(qce),{handlePrevImage:s,handleNextImage:i,isOnLastImage:l,handleLoadMoreImages:f,areMoreImagesAvailable:p,isFetching:h}=OO();Qe("left",()=>{s()},[s]),Qe("right",()=>{if(l&&p&&!h){f();return}l||i()},[l,p,f,h,i]);const{currentData:m}=po(t??zr.skipToken),v=d.useMemo(()=>{if(m)return{id:"current-image",payloadType:"IMAGE_DTO",payload:{imageDTO:m}}},[m]),x=d.useMemo(()=>({id:"current-image",actionType:"SET_CURRENT_IMAGE"}),[]),[C,b]=d.useState(!1),w=d.useRef(0),k=d.useCallback(()=>{b(!0),window.clearTimeout(w.current)},[]),_=d.useCallback(()=>{w.current=window.setTimeout(()=>{b(!1)},500)},[]);return a.jsxs(T,{onMouseOver:k,onMouseOut:_,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative"},children:[n&&r?a.jsx(qi,{src:n.dataURL,width:n.width,height:n.height,draggable:!1,sx:{objectFit:"contain",maxWidth:"full",maxHeight:"full",height:"auto",position:"absolute",borderRadius:"base",imageRendering:o?"auto":"pixelated"}}):a.jsx(Ya,{imageDTO:m,droppableData:x,draggableData:v,isUploadDisabled:!0,fitContainer:!0,useThumbailFallback:!0,dropLabel:"Set as Current Image",noContentFallback:a.jsx(tr,{icon:Wi,label:"No image selected"})}),e&&m&&a.jsx(Ie,{sx:{position:"absolute",top:"0",width:"full",height:"full",borderRadius:"base"},children:a.jsx(Gce,{image:m})}),a.jsx(nr,{children:!e&&m&&C&&a.jsx(gn.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(DO,{})},"nextPrevButtons")})]})},Yce=d.memo(Xce),Qce=()=>a.jsxs(T,{sx:{position:"relative",flexDirection:"column",height:"100%",width:"100%",rowGap:4,alignItems:"center",justifyContent:"center"},children:[a.jsx(zce,{}),a.jsx(Yce,{})]}),Zce=d.memo(Qce),Jce=()=>a.jsx(Ie,{layerStyle:"first",sx:{position:"relative",width:"100%",height:"100%",p:2,borderRadius:"base"},children:a.jsx(T,{sx:{width:"100%",height:"100%"},children:a.jsx(Zce,{})})}),RO=d.memo(Jce),eue=()=>{const e=d.useRef(null),t=d.useCallback(()=>{e.current&&e.current.setLayout([50,50])},[]),n=Oy();return a.jsx(Ie,{sx:{w:"full",h:"full"},children:a.jsxs(yg,{ref:e,autoSaveId:"imageTab.content",direction:"horizontal",style:{height:"100%",width:"100%"},storage:n,units:"percentages",children:[a.jsx(Va,{id:"imageTab.content.initImage",order:0,defaultSize:50,minSize:25,style:{position:"relative"},children:a.jsx(Mce,{})}),a.jsx(om,{onDoubleClick:t}),a.jsx(Va,{id:"imageTab.content.selectedImage",order:1,defaultSize:50,minSize:25,children:a.jsx(RO,{})})]})})},tue=d.memo(eue);var nue=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 T_=Oc(nue);function Cx(e){return e===null||typeof e!="object"?{}:Object.keys(e).reduce((t,n)=>{const r=e[n];return r!=null&&r!==!1&&(t[n]=r),t},{})}var rue=Object.defineProperty,$_=Object.getOwnPropertySymbols,oue=Object.prototype.hasOwnProperty,sue=Object.prototype.propertyIsEnumerable,L_=(e,t,n)=>t in e?rue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,aue=(e,t)=>{for(var n in t||(t={}))oue.call(t,n)&&L_(e,n,t[n]);if($_)for(var n of $_(t))sue.call(t,n)&&L_(e,n,t[n]);return e};function AO(e,t){if(t===null||typeof t!="object")return{};const n=aue({},t);return Object.keys(t).forEach(r=>{r.includes(`${String(e)}.`)&&delete n[r]}),n}const iue="__MANTINE_FORM_INDEX__";function z_(e,t){return t?typeof t=="boolean"?t:Array.isArray(t)?t.includes(e.replace(/[.][0-9]/g,`.${iue}`)):!1:!1}function F_(e,t,n){typeof n.value=="object"&&(n.value=Kl(n.value)),!n.enumerable||n.get||n.set||!n.configurable||!n.writable||t==="__proto__"?Object.defineProperty(e,t,n):e[t]=n.value}function Kl(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(Kl(i))})):s==="[object Map]"?(o=new Map,e.forEach(function(i,l){o.set(Kl(l),Kl(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(Kl(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 wx(e,t,n="",r={}){return typeof e!="object"||e===null?r:Object.keys(e).reduce((o,s)=>{const i=e[s],l=`${n===""?"":`${n}.`}${s}`,f=Vs(l,t);let p=!1;return typeof i=="function"&&(o[l]=i(f,t,l)),typeof i=="object"&&Array.isArray(f)&&(p=!0,f.forEach((h,m)=>wx(i,t,`${l}.${m}`,o))),typeof i=="object"&&typeof f=="object"&&f!==null&&(p||wx(i,t,l,o)),o},r)}function Sx(e,t){return B_(typeof e=="function"?e(t):wx(e,t))}function Pp(e,t,n){if(typeof e!="string")return{hasError:!1,error:null};const r=Sx(t,n),o=Object.keys(r.errors).find(s=>e.split(".").every((i,l)=>i===s.split(".")[l]));return{hasError:!!o,error:o?r.errors[o]:null}}function lue(e,{from:t,to:n},r){const o=Vs(e,r);if(!Array.isArray(o))return r;const s=[...o],i=o[t];return s.splice(t,1),s.splice(n,0,i),Pg(e,s,r)}var cue=Object.defineProperty,H_=Object.getOwnPropertySymbols,uue=Object.prototype.hasOwnProperty,due=Object.prototype.propertyIsEnumerable,W_=(e,t,n)=>t in e?cue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fue=(e,t)=>{for(var n in t||(t={}))uue.call(t,n)&&W_(e,n,t[n]);if(H_)for(var n of H_(t))due.call(t,n)&&W_(e,n,t[n]);return e};function pue(e,{from:t,to:n},r){const o=`${e}.${t}`,s=`${e}.${n}`,i=fue({},r);return Object.keys(r).every(l=>{let f,p;if(l.startsWith(o)&&(f=l,p=l.replace(o,s)),l.startsWith(s)&&(f=l.replace(s,o),p=l),f&&p){const h=i[f],m=i[p];return m===void 0?delete i[f]:i[f]=m,h===void 0?delete i[p]:i[p]=h,!1}return!0}),i}function hue(e,t,n){const r=Vs(e,n);return Array.isArray(r)?Pg(e,r.filter((o,s)=>s!==t),n):n}var mue=Object.defineProperty,V_=Object.getOwnPropertySymbols,gue=Object.prototype.hasOwnProperty,vue=Object.prototype.propertyIsEnumerable,U_=(e,t,n)=>t in e?mue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xue=(e,t)=>{for(var n in t||(t={}))gue.call(t,n)&&U_(e,n,t[n]);if(V_)for(var n of V_(t))vue.call(t,n)&&U_(e,n,t[n]);return e};function G_(e,t){const n=e.substring(t.length+1).split(".")[0];return parseInt(n,10)}function K_(e,t,n,r){if(t===void 0)return n;const o=`${String(e)}`;let s=n;r===-1&&(s=AO(`${o}.${t}`,s));const i=xue({},s),l=new Set;return Object.entries(s).filter(([f])=>{if(!f.startsWith(`${o}.`))return!1;const p=G_(f,o);return Number.isNaN(p)?!1:p>=t}).forEach(([f,p])=>{const h=G_(f,o),m=f.replace(`${o}.${h}`,`${o}.${h+r}`);i[m]=p,l.add(m),l.has(f)||delete i[f]}),i}function bue(e,t,n,r){const o=Vs(e,r);if(!Array.isArray(o))return r;const s=[...o];return s.splice(typeof n=="number"?n:s.length,0,t),Pg(e,s,r)}function q_(e,t){const n=Object.keys(e);if(typeof t=="string"){const r=n.filter(o=>o.startsWith(`${t}.`));return e[t]||r.some(o=>e[o])||!1}return n.some(r=>e[r])}function yue(e){return t=>{if(!t)e(t);else if(typeof t=="function")e(t);else if(typeof t=="object"&&"nativeEvent"in t){const{currentTarget:n}=t;n instanceof HTMLInputElement?n.type==="checkbox"?e(n.checked):e(n.value):(n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)&&e(n.value)}else e(t)}}var Cue=Object.defineProperty,wue=Object.defineProperties,Sue=Object.getOwnPropertyDescriptors,X_=Object.getOwnPropertySymbols,kue=Object.prototype.hasOwnProperty,_ue=Object.prototype.propertyIsEnumerable,Y_=(e,t,n)=>t in e?Cue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ia=(e,t)=>{for(var n in t||(t={}))kue.call(t,n)&&Y_(e,n,t[n]);if(X_)for(var n of X_(t))_ue.call(t,n)&&Y_(e,n,t[n]);return e},Uv=(e,t)=>wue(e,Sue(t));function ol({initialValues:e={},initialErrors:t={},initialDirty:n={},initialTouched:r={},clearInputErrorOnChange:o=!0,validateInputOnChange:s=!1,validateInputOnBlur:i=!1,transformValues:l=p=>p,validate:f}={}){const[p,h]=d.useState(r),[m,v]=d.useState(n),[x,C]=d.useState(e),[b,w]=d.useState(Cx(t)),k=d.useRef(e),_=V=>{k.current=V},j=d.useCallback(()=>h({}),[]),I=V=>{const G=V?Ia(Ia({},x),V):x;_(G),v({})},M=d.useCallback(V=>w(G=>Cx(typeof V=="function"?V(G):V)),[]),E=d.useCallback(()=>w({}),[]),O=d.useCallback(()=>{C(e),E(),_(e),v({}),j()},[]),D=d.useCallback((V,G)=>M(J=>Uv(Ia({},J),{[V]:G})),[]),A=d.useCallback(V=>M(G=>{if(typeof V!="string")return G;const J=Ia({},G);return delete J[V],J}),[]),R=d.useCallback(V=>v(G=>{if(typeof V!="string")return G;const J=AO(V,G);return delete J[V],J}),[]),$=d.useCallback((V,G)=>{const J=z_(V,s);R(V),h(se=>Uv(Ia({},se),{[V]:!0})),C(se=>{const re=Pg(V,G,se);if(J){const fe=Pp(V,f,re);fe.hasError?D(V,fe.error):A(V)}return re}),!J&&o&&D(V,null)},[]),K=d.useCallback(V=>{C(G=>{const J=typeof V=="function"?V(G):V;return Ia(Ia({},G),J)}),o&&E()},[]),B=d.useCallback((V,G)=>{R(V),C(J=>lue(V,G,J)),w(J=>pue(V,G,J))},[]),U=d.useCallback((V,G)=>{R(V),C(J=>hue(V,G,J)),w(J=>K_(V,G,J,-1))},[]),Y=d.useCallback((V,G,J)=>{R(V),C(se=>bue(V,G,J,se)),w(se=>K_(V,J,se,1))},[]),W=d.useCallback(()=>{const V=Sx(f,x);return w(V.errors),V},[x,f]),L=d.useCallback(V=>{const G=Pp(V,f,x);return G.hasError?D(V,G.error):A(V),G},[x,f]),X=(V,{type:G="input",withError:J=!0,withFocus:se=!0}={})=>{const fe={onChange:yue(de=>$(V,de))};return J&&(fe.error=b[V]),G==="checkbox"?fe.checked=Vs(V,x):fe.value=Vs(V,x),se&&(fe.onFocus=()=>h(de=>Uv(Ia({},de),{[V]:!0})),fe.onBlur=()=>{if(z_(V,i)){const de=Pp(V,f,x);de.hasError?D(V,de.error):A(V)}}),fe},z=(V,G)=>J=>{J==null||J.preventDefault();const se=W();se.hasErrors?G==null||G(se.errors,x,J):V==null||V(l(x),J)},q=V=>l(V||x),ne=d.useCallback(V=>{V.preventDefault(),O()},[]),Q=V=>{if(V){const J=Vs(V,m);if(typeof J=="boolean")return J;const se=Vs(V,x),re=Vs(V,k.current);return!T_(se,re)}return Object.keys(m).length>0?q_(m):!T_(x,k.current)},ie=d.useCallback(V=>q_(p,V),[p]),oe=d.useCallback(V=>V?!Pp(V,f,x).hasError:!Sx(f,x).hasErrors,[x,f]);return{values:x,errors:b,setValues:K,setErrors:M,setFieldValue:$,setFieldError:D,clearFieldError:A,clearErrors:E,reset:O,validate:W,validateField:L,reorderListItem:B,removeListItem:U,insertListItem:Y,getInputProps:X,onSubmit:z,onReset:ne,isDirty:Q,isTouched:ie,setTouched:h,setDirty:v,resetTouched:j,resetDirty:I,isValid:oe,getTransformedValues:q}}function hn(e){const{...t}=e,{base50:n,base100:r,base200:o,base300:s,base800:i,base700:l,base900:f,accent500:p,accent300:h}=Bd(),{colorMode:m}=ia();return a.jsx(mE,{styles:()=>({input:{color:Ae(f,r)(m),backgroundColor:Ae(n,f)(m),borderColor:Ae(o,i)(m),borderWidth:2,outline:"none",":focus":{borderColor:Ae(h,p)(m)}},label:{color:Ae(l,s)(m),fontWeight:"normal",marginBottom:4}}),...t})}const jue=[{value:"sd-1",label:mn["sd-1"]},{value:"sd-2",label:mn["sd-2"]},{value:"sdxl",label:mn.sdxl},{value:"sdxl-refiner",label:mn["sdxl-refiner"]}];function Kd(e){const{...t}=e,{t:n}=we();return a.jsx(Bn,{label:n("modelManager.baseModel"),data:jue,...t})}function TO(e){const{data:t}=e3(),{...n}=e;return a.jsx(Bn,{label:"Config File",placeholder:"Select A Config File",data:t||[],...n})}const Pue=[{value:"normal",label:"Normal"},{value:"inpaint",label:"Inpaint"},{value:"depth",label:"Depth"}];function Ig(e){const{...t}=e,{t:n}=we();return a.jsx(Bn,{label:n("modelManager.variant"),data:Pue,...t})}function im(e,t=!0){let n;t?n=new RegExp("[^\\\\/]+(?=\\.)"):n=new RegExp("[^\\\\/]+(?=[\\\\/]?$)");const r=e.match(n);return r?r[0]:""}function $O(e){const{t}=we(),n=te(),{model_path:r}=e,o=ol({initialValues:{model_name:r?im(r):"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"checkpoint",error:void 0,vae:"",variant:"normal",config:"configs\\stable-diffusion\\v1-inference.yaml"}}),[s]=t3(),[i,l]=d.useState(!1),f=p=>{s({body:p}).unwrap().then(h=>{n(Nt(zt({title:`Model Added: ${p.model_name}`,status:"success"}))),o.reset(),r&&n(Cd(null))}).catch(h=>{h&&n(Nt(zt({title:"Model Add Failed",status:"error"})))})};return a.jsx("form",{onSubmit:o.onSubmit(p=>f(p)),style:{width:"100%"},children:a.jsxs(T,{flexDirection:"column",gap:2,children:[a.jsx(hn,{label:"Model Name",required:!0,...o.getInputProps("model_name")}),a.jsx(Kd,{...o.getInputProps("base_model")}),a.jsx(hn,{label:"Model Location",required:!0,...o.getInputProps("path"),onBlur:p=>{if(o.values.model_name===""){const h=im(p.currentTarget.value);h&&o.setFieldValue("model_name",h)}}}),a.jsx(hn,{label:"Description",...o.getInputProps("description")}),a.jsx(hn,{label:"VAE Location",...o.getInputProps("vae")}),a.jsx(Ig,{...o.getInputProps("variant")}),a.jsxs(T,{flexDirection:"column",width:"100%",gap:2,children:[i?a.jsx(hn,{required:!0,label:"Custom Config File Location",...o.getInputProps("config")}):a.jsx(TO,{required:!0,width:"100%",...o.getInputProps("config")}),a.jsx(ur,{isChecked:i,onChange:()=>l(!i),label:"Use Custom Config"}),a.jsx(it,{mt:2,type:"submit",children:t("modelManager.addModel")})]})]})})}function LO(e){const{t}=we(),n=te(),{model_path:r}=e,[o]=t3(),s=ol({initialValues:{model_name:r?im(r,!1):"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"diffusers",error:void 0,vae:"",variant:"normal"}}),i=l=>{o({body:l}).unwrap().then(f=>{n(Nt(zt({title:`Model Added: ${l.model_name}`,status:"success"}))),s.reset(),r&&n(Cd(null))}).catch(f=>{f&&n(Nt(zt({title:"Model Add Failed",status:"error"})))})};return a.jsx("form",{onSubmit:s.onSubmit(l=>i(l)),style:{width:"100%"},children:a.jsxs(T,{flexDirection:"column",gap:2,children:[a.jsx(hn,{required:!0,label:"Model Name",...s.getInputProps("model_name")}),a.jsx(Kd,{...s.getInputProps("base_model")}),a.jsx(hn,{required:!0,label:"Model Location",placeholder:"Provide the path to a local folder where your Diffusers Model is stored",...s.getInputProps("path"),onBlur:l=>{if(s.values.model_name===""){const f=im(l.currentTarget.value,!1);f&&s.setFieldValue("model_name",f)}}}),a.jsx(hn,{label:"Description",...s.getInputProps("description")}),a.jsx(hn,{label:"VAE Location",...s.getInputProps("vae")}),a.jsx(Ig,{...s.getInputProps("variant")}),a.jsx(it,{mt:2,type:"submit",children:t("modelManager.addModel")})]})})}const zO=[{label:"Diffusers",value:"diffusers"},{label:"Checkpoint / Safetensors",value:"checkpoint"}];function Iue(){const[e,t]=d.useState("diffusers");return a.jsxs(T,{flexDirection:"column",gap:4,width:"100%",children:[a.jsx(Bn,{label:"Model Type",value:e,data:zO,onChange:n=>{n&&t(n)}}),a.jsxs(T,{sx:{p:4,borderRadius:4,bg:"base.300",_dark:{bg:"base.850"}},children:[e==="diffusers"&&a.jsx(LO,{}),e==="checkpoint"&&a.jsx($O,{})]})]})}const Eue=[{label:"None",value:"none"},{label:"v_prediction",value:"v_prediction"},{label:"epsilon",value:"epsilon"},{label:"sample",value:"sample"}];function Mue(){const e=te(),{t}=we(),n=F(l=>l.system.isProcessing),[r,{isLoading:o}]=n3(),s=ol({initialValues:{location:"",prediction_type:void 0}}),i=l=>{const f={location:l.location,prediction_type:l.prediction_type==="none"?void 0:l.prediction_type};r({body:f}).unwrap().then(p=>{e(Nt(zt({title:"Model Added",status:"success"}))),s.reset()}).catch(p=>{p&&(console.log(p),e(Nt(zt({title:`${p.data.detail} `,status:"error"}))))})};return a.jsx("form",{onSubmit:s.onSubmit(l=>i(l)),style:{width:"100%"},children:a.jsxs(T,{flexDirection:"column",width:"100%",gap:4,children:[a.jsx(hn,{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(Bn,{label:"Prediction Type (for Stable Diffusion 2.x Models only)",data:Eue,defaultValue:"none",...s.getInputProps("prediction_type")}),a.jsx(it,{type:"submit",isLoading:o,isDisabled:o||n,children:t("modelManager.addModel")})]})})}function Oue(){const[e,t]=d.useState("simple");return a.jsxs(T,{flexDirection:"column",width:"100%",overflow:"scroll",maxHeight:window.innerHeight-250,gap:4,children:[a.jsxs(pn,{isAttached:!0,children:[a.jsx(it,{size:"sm",isChecked:e=="simple",onClick:()=>t("simple"),children:"Simple"}),a.jsx(it,{size:"sm",isChecked:e=="advanced",onClick:()=>t("advanced"),children:"Advanced"})]}),a.jsxs(T,{sx:{p:4,borderRadius:4,background:"base.200",_dark:{background:"base.800"}},children:[e==="simple"&&a.jsx(Mue,{}),e==="advanced"&&a.jsx(Iue,{})]})]})}function Due(e){const{...t}=e;return a.jsx(lI,{w:"100%",...t,children:e.children})}function Rue(){const e=F(b=>b.modelmanager.searchFolder),[t,n]=d.useState(""),{data:r}=Bo(Ci),{foundModels:o,alreadyInstalled:s,filteredModels:i}=r3({search_path:e||""},{selectFromResult:({data:b})=>{const w=vN(r==null?void 0:r.entities),k=rr(w,"path"),_=mN(b,k),j=wN(b,k);return{foundModels:b,alreadyInstalled:Q_(j,t),filteredModels:Q_(_,t)}}}),[l,{isLoading:f}]=n3(),p=te(),{t:h}=we(),m=d.useCallback(b=>{const w=b.currentTarget.id.split("\\").splice(-1)[0];l({body:{location:b.currentTarget.id}}).unwrap().then(k=>{p(Nt(zt({title:`Added Model: ${w}`,status:"success"})))}).catch(k=>{k&&p(Nt(zt({title:"Failed To Add Model",status:"error"})))})},[p,l]),v=d.useCallback(b=>{n(b.target.value)},[]),x=({models:b,showActions:w=!0})=>b.map(k=>a.jsxs(T,{sx:{p:4,gap:4,alignItems:"center",borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs(T,{w:"100%",sx:{flexDirection:"column",minW:"25%"},children:[a.jsx(be,{sx:{fontWeight:600},children:k.split("\\").slice(-1)[0]}),a.jsx(be,{sx:{fontSize:"sm",color:"base.600",_dark:{color:"base.400"}},children:k})]}),w?a.jsxs(T,{gap:2,children:[a.jsx(it,{id:k,onClick:m,isLoading:f,children:"Quick Add"}),a.jsx(it,{onClick:()=>p(Cd(k)),isLoading:f,children:"Advanced"})]}):a.jsx(be,{sx:{fontWeight:600,p:2,borderRadius:4,color:"accent.50",bg:"accent.400",_dark:{color:"accent.100",bg:"accent.600"}},children:"Installed"})]},k));return(()=>e?!o||o.length===0?a.jsx(T,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",height:96,userSelect:"none",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(be,{variant:"subtext",children:"No Models Found"})}):a.jsxs(T,{sx:{flexDirection:"column",gap:2,w:"100%",minW:"50%"},children:[a.jsx(io,{onChange:v,label:h("modelManager.search"),labelPos:"side"}),a.jsxs(T,{p:2,gap:2,children:[a.jsxs(be,{sx:{fontWeight:600},children:["Models Found: ",o.length]}),a.jsxs(be,{sx:{fontWeight:600,color:"accent.500",_dark:{color:"accent.200"}},children:["Not Installed: ",i.length]})]}),a.jsx(Due,{offsetScrollbars:!0,children:a.jsxs(T,{gap:2,flexDirection:"column",children:[x({models:i}),x({models:s,showActions:!1})]})})]}):null)()}const Q_=(e,t)=>{const n=[];return Fn(e,r=>{if(!r)return null;r.includes(t)&&n.push(r)}),n};function Aue(){const e=F(i=>i.modelmanager.advancedAddScanModel),[t,n]=d.useState("diffusers"),[r,o]=d.useState(!0);d.useEffect(()=>{e&&[".ckpt",".safetensors",".pth",".pt"].some(i=>e.endsWith(i))?n("checkpoint"):n("diffusers")},[e,n,r]);const s=te();return e?a.jsxs(Ie,{as:gn.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(T,{justifyContent:"space-between",alignItems:"center",children:[a.jsx(be,{size:"xl",fontWeight:600,children:r||t==="checkpoint"?"Add Checkpoint Model":"Add Diffusers Model"}),a.jsx(Te,{icon:a.jsx(TZ,{}),"aria-label":"Close Advanced",onClick:()=>s(Cd(null)),size:"sm"})]}),a.jsx(Bn,{label:"Model Type",value:t,data:zO,onChange:i=>{i&&(n(i),o(i==="checkpoint"))}}),r?a.jsx($O,{model_path:e},e):a.jsx(LO,{model_path:e},e)]}):null}function Nue(){const e=te(),{t}=we(),n=F(l=>l.modelmanager.searchFolder),{refetch:r}=r3({search_path:n||""}),o=ol({initialValues:{folder:""}}),s=d.useCallback(l=>{e(dw(l.folder))},[e]),i=()=>{r()};return a.jsx("form",{onSubmit:o.onSubmit(l=>s(l)),style:{width:"100%"},children:a.jsxs(T,{sx:{w:"100%",gap:2,borderRadius:4,alignItems:"center"},children:[a.jsxs(T,{w:"100%",alignItems:"center",gap:4,minH:12,children:[a.jsx(be,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",minW:"max-content",_dark:{color:"base.300"}},children:"Folder"}),n?a.jsx(T,{sx:{w:"100%",p:2,px:4,bg:"base.300",borderRadius:4,fontSize:"sm",fontWeight:"bold",_dark:{bg:"base.700"}},children:n}):a.jsx(io,{w:"100%",size:"md",...o.getInputProps("folder")})]}),a.jsxs(T,{gap:2,children:[n?a.jsx(Te,{"aria-label":t("modelManager.scanAgain"),tooltip:t("modelManager.scanAgain"),icon:a.jsx(TE,{}),onClick:i,fontSize:18,size:"sm"}):a.jsx(Te,{"aria-label":t("modelManager.findModels"),tooltip:t("modelManager.findModels"),icon:a.jsx(DZ,{}),fontSize:18,size:"sm",type:"submit"}),a.jsx(Te,{"aria-label":t("modelManager.clearCheckpointFolder"),tooltip:t("modelManager.clearCheckpointFolder"),icon:a.jsx(Wr,{}),size:"sm",onClick:()=>{e(dw(null)),e(Cd(null))},isDisabled:!n,colorScheme:"red"})]})]})})}const Tue=d.memo(Nue);function $ue(){return a.jsxs(T,{flexDirection:"column",w:"100%",gap:4,children:[a.jsx(Tue,{}),a.jsxs(T,{gap:4,children:[a.jsx(T,{sx:{maxHeight:window.innerHeight-300,overflow:"scroll",gap:4,w:"100%"},children:a.jsx(Rue,{})}),a.jsx(Aue,{})]})]})}function Lue(){const[e,t]=d.useState("add"),{t:n}=we();return a.jsxs(T,{flexDirection:"column",gap:4,children:[a.jsxs(pn,{isAttached:!0,children:[a.jsx(it,{onClick:()=>t("add"),isChecked:e=="add",size:"sm",width:"100%",children:n("modelManager.addModel")}),a.jsx(it,{onClick:()=>t("scan"),isChecked:e=="scan",size:"sm",width:"100%",children:n("modelManager.scanForModels")})]}),e=="add"&&a.jsx(Oue,{}),e=="scan"&&a.jsx($ue,{})]})}const zue=[{label:"Stable Diffusion 1",value:"sd-1"},{label:"Stable Diffusion 2",value:"sd-2"}];function Fue(){var L,X;const{t:e}=we(),t=te(),{data:n}=Bo(Ci),[r,{isLoading:o}]=oA(),[s,i]=d.useState("sd-1"),l=yw(n==null?void 0:n.entities,(z,q)=>(z==null?void 0:z.model_format)==="diffusers"&&(z==null?void 0:z.base_model)==="sd-1"),f=yw(n==null?void 0:n.entities,(z,q)=>(z==null?void 0:z.model_format)==="diffusers"&&(z==null?void 0:z.base_model)==="sd-2"),p=d.useMemo(()=>({"sd-1":l,"sd-2":f}),[l,f]),[h,m]=d.useState(((L=Object.keys(p[s]))==null?void 0:L[0])??null),[v,x]=d.useState(((X=Object.keys(p[s]))==null?void 0:X[1])??null),[C,b]=d.useState(null),[w,k]=d.useState(""),[_,j]=d.useState(.5),[I,M]=d.useState("weighted_sum"),[E,O]=d.useState("root"),[D,A]=d.useState(""),[R,$]=d.useState(!1),K=Object.keys(p[s]).filter(z=>z!==v&&z!==C),B=Object.keys(p[s]).filter(z=>z!==h&&z!==C),U=Object.keys(p[s]).filter(z=>z!==h&&z!==v),Y=z=>{i(z),m(null),x(null)},W=()=>{const z=[];let q=[h,v,C];q=q.filter(Q=>Q!==null),q.forEach(Q=>{var oe;const ie=(oe=Q==null?void 0:Q.split("/"))==null?void 0:oe[2];ie&&z.push(ie)});const ne={model_names:z,merged_model_name:w!==""?w:z.join("-"),alpha:_,interp:I,force:R,merge_dest_directory:E==="root"?void 0:D};r({base_model:s,body:ne}).unwrap().then(Q=>{t(Nt(zt({title:e("modelManager.modelsMerged"),status:"success"})))}).catch(Q=>{Q&&t(Nt(zt({title:e("modelManager.modelsMergeFailed"),status:"error"})))})};return a.jsxs(T,{flexDirection:"column",rowGap:4,children:[a.jsxs(T,{sx:{flexDirection:"column",rowGap:1},children:[a.jsx(be,{children:e("modelManager.modelMergeHeaderHelp1")}),a.jsx(be,{fontSize:"sm",variant:"subtext",children:e("modelManager.modelMergeHeaderHelp2")})]}),a.jsxs(T,{columnGap:4,children:[a.jsx(Bn,{label:"Model Type",w:"100%",data:zue,value:s,onChange:Y}),a.jsx(Gt,{label:e("modelManager.modelOne"),w:"100%",value:h,placeholder:e("modelManager.selectModel"),data:K,onChange:z=>m(z)}),a.jsx(Gt,{label:e("modelManager.modelTwo"),w:"100%",placeholder:e("modelManager.selectModel"),value:v,data:B,onChange:z=>x(z)}),a.jsx(Gt,{label:e("modelManager.modelThree"),data:U,w:"100%",placeholder:e("modelManager.selectModel"),clearable:!0,onChange:z=>{z?(b(z),M("weighted_sum")):(b(null),M("add_difference"))}})]}),a.jsx(io,{label:e("modelManager.mergedModelName"),value:w,onChange:z=>k(z.target.value)}),a.jsxs(T,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(Ze,{label:e("modelManager.alpha"),min:.01,max:.99,step:.01,value:_,onChange:z=>j(z),withInput:!0,withReset:!0,handleReset:()=>j(.5),withSliderMarks:!0}),a.jsx(be,{variant:"subtext",fontSize:"sm",children:e("modelManager.modelMergeAlphaHelp")})]}),a.jsxs(T,{sx:{padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(be,{fontWeight:500,fontSize:"sm",variant:"subtext",children:e("modelManager.interpolationType")}),a.jsx(oh,{value:I,onChange:z=>M(z),children:a.jsx(T,{columnGap:4,children:C===null?a.jsxs(a.Fragment,{children:[a.jsx(zs,{value:"weighted_sum",children:a.jsx(be,{fontSize:"sm",children:e("modelManager.weightedSum")})}),a.jsx(zs,{value:"sigmoid",children:a.jsx(be,{fontSize:"sm",children:e("modelManager.sigmoid")})}),a.jsx(zs,{value:"inv_sigmoid",children:a.jsx(be,{fontSize:"sm",children:e("modelManager.inverseSigmoid")})})]}):a.jsx(zs,{value:"add_difference",children:a.jsx(Dt,{label:e("modelManager.modelMergeInterpAddDifferenceHelp"),children:a.jsx(be,{fontSize:"sm",children:e("modelManager.addDifference")})})})})})]}),a.jsxs(T,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.900"}},children:[a.jsxs(T,{columnGap:4,children:[a.jsx(be,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:e("modelManager.mergedModelSaveLocation")}),a.jsx(oh,{value:E,onChange:z=>O(z),children:a.jsxs(T,{columnGap:4,children:[a.jsx(zs,{value:"root",children:a.jsx(be,{fontSize:"sm",children:e("modelManager.invokeAIFolder")})}),a.jsx(zs,{value:"custom",children:a.jsx(be,{fontSize:"sm",children:e("modelManager.custom")})})]})})]}),E==="custom"&&a.jsx(io,{label:e("modelManager.mergedModelCustomSaveLocation"),value:D,onChange:z=>A(z.target.value)})]}),a.jsx(ur,{label:e("modelManager.ignoreMismatch"),isChecked:R,onChange:z=>$(z.target.checked),fontWeight:"500"}),a.jsx(it,{onClick:W,isLoading:o,isDisabled:h===null||v===null,children:e("modelManager.merge")})]})}const Bue=Pe((e,t)=>{const{t:n}=we(),{acceptButtonText:r=n("common.accept"),acceptCallback:o,cancelButtonText:s=n("common.cancel"),cancelCallback:i,children:l,title:f,triggerComponent:p}=e,{isOpen:h,onOpen:m,onClose:v}=Er(),x=d.useRef(null),C=()=>{o(),v()},b=()=>{i&&i(),v()};return a.jsxs(a.Fragment,{children:[d.cloneElement(p,{onClick:m,ref:t}),a.jsx(Ad,{isOpen:h,leastDestructiveRef:x,onClose:v,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Nd,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:f}),a.jsx(Vo,{children:l}),a.jsxs(gs,{children:[a.jsx(it,{ref:x,onClick:b,children:s}),a.jsx(it,{colorScheme:"error",onClick:C,ml:3,children:r})]})]})})})]})}),Hy=d.memo(Bue);function Hue(e){const{model:t}=e,n=te(),{t:r}=we(),[o,{isLoading:s}]=sA(),[i,l]=d.useState("InvokeAIRoot"),[f,p]=d.useState("");d.useEffect(()=>{l("InvokeAIRoot")},[t]);const h=()=>{l("InvokeAIRoot")},m=()=>{const v={base_model:t.base_model,model_name:t.model_name,convert_dest_directory:i==="Custom"?f:void 0};if(i==="Custom"&&f===""){n(Nt(zt({title:r("modelManager.noCustomLocationProvided"),status:"error"})));return}n(Nt(zt({title:`${r("modelManager.convertingModelBegin")}: ${t.model_name}`,status:"info"}))),o(v).unwrap().then(()=>{n(Nt(zt({title:`${r("modelManager.modelConverted")}: ${t.model_name}`,status:"success"})))}).catch(()=>{n(Nt(zt({title:`${r("modelManager.modelConversionFailed")}: ${t.model_name}`,status:"error"})))})};return a.jsxs(Hy,{title:`${r("modelManager.convert")} ${t.model_name}`,acceptCallback:m,cancelCallback:h,acceptButtonText:`${r("modelManager.convert")}`,triggerComponent:a.jsxs(it,{size:"sm","aria-label":r("modelManager.convertToDiffusers"),className:" modal-close-btn",isLoading:s,children:["🧨 ",r("modelManager.convertToDiffusers")]}),motionPreset:"slideInBottom",children:[a.jsxs(T,{flexDirection:"column",rowGap:4,children:[a.jsx(be,{children:r("modelManager.convertToDiffusersHelpText1")}),a.jsxs(Id,{children:[a.jsx(No,{children:r("modelManager.convertToDiffusersHelpText2")}),a.jsx(No,{children:r("modelManager.convertToDiffusersHelpText3")}),a.jsx(No,{children:r("modelManager.convertToDiffusersHelpText4")}),a.jsx(No,{children:r("modelManager.convertToDiffusersHelpText5")})]}),a.jsx(be,{children:r("modelManager.convertToDiffusersHelpText6")})]}),a.jsxs(T,{flexDir:"column",gap:2,children:[a.jsxs(T,{marginTop:4,flexDir:"column",gap:2,children:[a.jsx(be,{fontWeight:"600",children:r("modelManager.convertToDiffusersSaveLocation")}),a.jsx(oh,{value:i,onChange:v=>l(v),children:a.jsxs(T,{gap:4,children:[a.jsx(zs,{value:"InvokeAIRoot",children:a.jsx(Dt,{label:"Save converted model in the InvokeAI root folder",children:r("modelManager.invokeRoot")})}),a.jsx(zs,{value:"Custom",children:a.jsx(Dt,{label:"Save converted model in a custom folder",children:r("modelManager.custom")})})]})})]}),i==="Custom"&&a.jsxs(T,{flexDirection:"column",rowGap:2,children:[a.jsx(be,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:r("modelManager.customSaveLocation")}),a.jsx(io,{value:f,onChange:v=>{p(v.target.value)},width:"full"})]})]})]})}function Wue(e){const t=F(Pn),{model:n}=e,[r,{isLoading:o}]=o3(),{data:s}=e3(),[i,l]=d.useState(!1);d.useEffect(()=>{s!=null&&s.includes(n.config)||l(!0)},[s,n.config]);const f=te(),{t:p}=we(),h=ol({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"checkpoint",vae:n.vae?n.vae:"",config:n.config?n.config:"",variant:n.variant},validate:{path:v=>v.trim().length===0?"Must provide a path":null}}),m=d.useCallback(v=>{const x={base_model:n.base_model,model_name:n.model_name,body:v};r(x).unwrap().then(C=>{h.setValues(C),f(Nt(zt({title:p("modelManager.modelUpdated"),status:"success"})))}).catch(C=>{h.reset(),f(Nt(zt({title:p("modelManager.modelUpdateFailed"),status:"error"})))})},[h,f,n.base_model,n.model_name,p,r]);return a.jsxs(T,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs(T,{justifyContent:"space-between",alignItems:"center",children:[a.jsxs(T,{flexDirection:"column",children:[a.jsx(be,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(be,{fontSize:"sm",color:"base.400",children:[mn[n.base_model]," Model"]})]}),[""].includes(n.base_model)?a.jsx(ua,{sx:{p:2,borderRadius:4,bg:"error.200",_dark:{bg:"error.400"}},children:"Conversion Not Supported"}):a.jsx(Hue,{model:n})]}),a.jsx(Fr,{}),a.jsx(T,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",children:a.jsx("form",{onSubmit:h.onSubmit(v=>m(v)),children:a.jsxs(T,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(hn,{label:p("modelManager.name"),...h.getInputProps("model_name")}),a.jsx(hn,{label:p("modelManager.description"),...h.getInputProps("description")}),a.jsx(Kd,{required:!0,...h.getInputProps("base_model")}),a.jsx(Ig,{required:!0,...h.getInputProps("variant")}),a.jsx(hn,{required:!0,label:p("modelManager.modelLocation"),...h.getInputProps("path")}),a.jsx(hn,{label:p("modelManager.vaeLocation"),...h.getInputProps("vae")}),a.jsxs(T,{flexDirection:"column",gap:2,children:[i?a.jsx(hn,{required:!0,label:p("modelManager.config"),...h.getInputProps("config")}):a.jsx(TO,{required:!0,...h.getInputProps("config")}),a.jsx(ur,{isChecked:i,onChange:()=>l(!i),label:"Use Custom Config"})]}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:p("modelManager.updateModel")})]})})})]})}function Vue(e){const t=F(Pn),{model:n}=e,[r,{isLoading:o}]=o3(),s=te(),{t:i}=we(),l=ol({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"diffusers",vae:n.vae?n.vae:"",variant:n.variant},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),f=d.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{l.setValues(m),s(Nt(zt({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{l.reset(),s(Nt(zt({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[l,s,n.base_model,n.model_name,i,r]);return a.jsxs(T,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs(T,{flexDirection:"column",children:[a.jsx(be,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(be,{fontSize:"sm",color:"base.400",children:[mn[n.base_model]," Model"]})]}),a.jsx(Fr,{}),a.jsx("form",{onSubmit:l.onSubmit(p=>f(p)),children:a.jsxs(T,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(hn,{label:i("modelManager.name"),...l.getInputProps("model_name")}),a.jsx(hn,{label:i("modelManager.description"),...l.getInputProps("description")}),a.jsx(Kd,{required:!0,...l.getInputProps("base_model")}),a.jsx(Ig,{required:!0,...l.getInputProps("variant")}),a.jsx(hn,{required:!0,label:i("modelManager.modelLocation"),...l.getInputProps("path")}),a.jsx(hn,{label:i("modelManager.vaeLocation"),...l.getInputProps("vae")}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function Uue(e){const t=F(Pn),{model:n}=e,[r,{isLoading:o}]=aA(),s=te(),{t:i}=we(),l=ol({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"lora",path:n.path?n.path:"",description:n.description?n.description:"",model_format:n.model_format},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),f=d.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{l.setValues(m),s(Nt(zt({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{l.reset(),s(Nt(zt({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[s,l,n.base_model,n.model_name,i,r]);return a.jsxs(T,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs(T,{flexDirection:"column",children:[a.jsx(be,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(be,{fontSize:"sm",color:"base.400",children:[mn[n.base_model]," Model ⋅"," ",iA[n.model_format]," format"]})]}),a.jsx(Fr,{}),a.jsx("form",{onSubmit:l.onSubmit(p=>f(p)),children:a.jsxs(T,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(hn,{label:i("modelManager.name"),...l.getInputProps("model_name")}),a.jsx(hn,{label:i("modelManager.description"),...l.getInputProps("description")}),a.jsx(Kd,{...l.getInputProps("base_model")}),a.jsx(hn,{label:i("modelManager.modelLocation"),...l.getInputProps("path")}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function Gue(e){const t=F(Pn),{t:n}=we(),r=te(),[o]=lA(),[s]=cA(),{model:i,isSelected:l,setSelectedModelId:f}=e,p=d.useCallback(()=>{f(i.id)},[i.id,f]),h=d.useCallback(()=>{const m={main:o,lora:s,onnx:o}[i.model_type];m(i).unwrap().then(v=>{r(Nt(zt({title:`${n("modelManager.modelDeleted")}: ${i.model_name}`,status:"success"})))}).catch(v=>{v&&r(Nt(zt({title:`${n("modelManager.modelDeleteFailed")}: ${i.model_name}`,status:"error"})))}),f(void 0)},[o,s,i,f,r,n]);return a.jsxs(T,{sx:{gap:2,alignItems:"center",w:"full"},children:[a.jsx(T,{as:it,isChecked:l,sx:{justifyContent:"start",p:2,borderRadius:"base",w:"full",alignItems:"center",bg:l?"accent.400":"base.100",color:l?"base.50":"base.800",_hover:{bg:l?"accent.500":"base.300",color:l?"base.50":"base.800"},_dark:{color:l?"base.50":"base.100",bg:l?"accent.600":"base.850",_hover:{color:l?"base.50":"base.100",bg:l?"accent.550":"base.700"}}},onClick:p,children:a.jsxs(T,{gap:4,alignItems:"center",children:[a.jsx(ua,{minWidth:14,p:.5,fontSize:"sm",variant:"solid",children:uA[i.base_model]}),a.jsx(Dt,{label:i.description,hasArrow:!0,placement:"bottom",children:a.jsx(be,{sx:{fontWeight:500},children:i.model_name})})]})}),a.jsx(Hy,{title:n("modelManager.deleteModel"),acceptCallback:h,acceptButtonText:n("modelManager.delete"),triggerComponent:a.jsx(Te,{icon:a.jsx(Fee,{}),"aria-label":n("modelManager.deleteConfig"),isDisabled:t,colorScheme:"error"}),children:a.jsxs(T,{rowGap:4,flexDirection:"column",children:[a.jsx("p",{style:{fontWeight:"bold"},children:n("modelManager.deleteMsg1")}),a.jsx("p",{children:n("modelManager.deleteMsg2")})]})})]})}const Kue=e=>{const{selectedModelId:t,setSelectedModelId:n}=e,{t:r}=we(),[o,s]=d.useState(""),[i,l]=d.useState("all"),{filteredDiffusersModels:f,isLoadingDiffusersModels:p}=Bo(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredDiffusersModels:ju(j,"main","diffusers",o),isLoadingDiffusersModels:I})}),{filteredCheckpointModels:h,isLoadingCheckpointModels:m}=Bo(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredCheckpointModels:ju(j,"main","checkpoint",o),isLoadingCheckpointModels:I})}),{filteredLoraModels:v,isLoadingLoraModels:x}=vm(void 0,{selectFromResult:({data:j,isLoading:I})=>({filteredLoraModels:ju(j,"lora",void 0,o),isLoadingLoraModels:I})}),{filteredOnnxModels:C,isLoadingOnnxModels:b}=Xu(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredOnnxModels:ju(j,"onnx","onnx",o),isLoadingOnnxModels:I})}),{filteredOliveModels:w,isLoadingOliveModels:k}=Xu(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredOliveModels:ju(j,"onnx","olive",o),isLoadingOliveModels:I})}),_=d.useCallback(j=>{s(j.target.value)},[]);return a.jsx(T,{flexDirection:"column",rowGap:4,width:"50%",minWidth:"50%",children:a.jsxs(T,{flexDirection:"column",gap:4,paddingInlineEnd:4,children:[a.jsxs(pn,{isAttached:!0,children:[a.jsx(it,{onClick:()=>l("all"),isChecked:i==="all",size:"sm",children:r("modelManager.allModels")}),a.jsx(it,{size:"sm",onClick:()=>l("diffusers"),isChecked:i==="diffusers",children:r("modelManager.diffusersModels")}),a.jsx(it,{size:"sm",onClick:()=>l("checkpoint"),isChecked:i==="checkpoint",children:r("modelManager.checkpointModels")}),a.jsx(it,{size:"sm",onClick:()=>l("onnx"),isChecked:i==="onnx",children:r("modelManager.onnxModels")}),a.jsx(it,{size:"sm",onClick:()=>l("olive"),isChecked:i==="olive",children:r("modelManager.oliveModels")}),a.jsx(it,{size:"sm",onClick:()=>l("lora"),isChecked:i==="lora",children:r("modelManager.loraModels")})]}),a.jsx(io,{onChange:_,label:r("modelManager.search"),labelPos:"side"}),a.jsxs(T,{flexDirection:"column",gap:4,maxHeight:window.innerHeight-280,overflow:"scroll",children:[p&&a.jsx(Bl,{loadingMessage:"Loading Diffusers..."}),["all","diffusers"].includes(i)&&!p&&f.length>0&&a.jsx(Fl,{title:"Diffusers",modelList:f,selected:{selectedModelId:t,setSelectedModelId:n}},"diffusers"),m&&a.jsx(Bl,{loadingMessage:"Loading Checkpoints..."}),["all","checkpoint"].includes(i)&&!m&&h.length>0&&a.jsx(Fl,{title:"Checkpoints",modelList:h,selected:{selectedModelId:t,setSelectedModelId:n}},"checkpoints"),x&&a.jsx(Bl,{loadingMessage:"Loading LoRAs..."}),["all","lora"].includes(i)&&!x&&v.length>0&&a.jsx(Fl,{title:"LoRAs",modelList:v,selected:{selectedModelId:t,setSelectedModelId:n}},"loras"),k&&a.jsx(Bl,{loadingMessage:"Loading Olives..."}),["all","olive"].includes(i)&&!k&&w.length>0&&a.jsx(Fl,{title:"Olives",modelList:w,selected:{selectedModelId:t,setSelectedModelId:n}},"olive"),b&&a.jsx(Bl,{loadingMessage:"Loading ONNX..."}),["all","onnx"].includes(i)&&!b&&C.length>0&&a.jsx(Fl,{title:"ONNX",modelList:C,selected:{selectedModelId:t,setSelectedModelId:n}},"onnx")]})]})})},que=d.memo(Kue),ju=(e,t,n,r)=>{const o=[];return Fn(e==null?void 0:e.entities,s=>{if(!s)return;const i=s.model_name.toLowerCase().includes(r.toLowerCase()),l=n===void 0||s.model_format===n,f=s.model_type===t;i&&l&&f&&o.push(s)}),o},Wy=d.memo(e=>a.jsx(T,{flexDirection:"column",gap:4,borderRadius:4,p:4,sx:{bg:"base.200",_dark:{bg:"base.800"}},children:e.children}));Wy.displayName="StyledModelContainer";const Fl=d.memo(e=>{const{title:t,modelList:n,selected:r}=e;return a.jsx(Wy,{children:a.jsxs(T,{sx:{gap:2,flexDir:"column"},children:[a.jsx(be,{variant:"subtext",fontSize:"sm",children:t}),n.map(o=>a.jsx(Gue,{model:o,isSelected:r.selectedModelId===o.id,setSelectedModelId:r.setSelectedModelId},o.id))]})})});Fl.displayName="ModelListWrapper";const Bl=d.memo(({loadingMessage:e})=>a.jsx(Wy,{children:a.jsxs(T,{justifyContent:"center",alignItems:"center",flexDirection:"column",p:4,gap:8,children:[a.jsx(Ki,{}),a.jsx(be,{variant:"subtext",children:e||"Fetching..."})]})}));Bl.displayName="FetchingModelsLoader";function Xue(){const[e,t]=d.useState(),{mainModel:n}=Bo(Ci,{selectFromResult:({data:s})=>({mainModel:e?s==null?void 0:s.entities[e]:void 0})}),{loraModel:r}=vm(void 0,{selectFromResult:({data:s})=>({loraModel:e?s==null?void 0:s.entities[e]:void 0})}),o=n||r;return a.jsxs(T,{sx:{gap:8,w:"full",h:"full"},children:[a.jsx(que,{selectedModelId:e,setSelectedModelId:t}),a.jsx(Yue,{model:o})]})}const Yue=e=>{const{model:t}=e;return(t==null?void 0:t.model_format)==="checkpoint"?a.jsx(Wue,{model:t},t.id):(t==null?void 0:t.model_format)==="diffusers"?a.jsx(Vue,{model:t},t.id):(t==null?void 0:t.model_type)==="lora"?a.jsx(Uue,{model:t},t.id):a.jsx(T,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",maxH:96,userSelect:"none"},children:a.jsx(be,{variant:"subtext",children:"No Model Selected"})})};function Que(){const{t:e}=we();return a.jsxs(T,{sx:{w:"full",p:4,borderRadius:4,gap:4,justifyContent:"space-between",alignItems:"center",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs(T,{sx:{flexDirection:"column",gap:2},children:[a.jsx(be,{sx:{fontWeight:600},children:e("modelManager.syncModels")}),a.jsx(be,{fontSize:"sm",sx:{_dark:{color:"base.400"}},children:e("modelManager.syncModelsDesc")})]}),a.jsx(Vc,{})]})}function Zue(){return a.jsx(T,{children:a.jsx(Que,{})})}const Z_=[{id:"modelManager",label:bn.t("modelManager.modelManager"),content:a.jsx(Xue,{})},{id:"importModels",label:bn.t("modelManager.importModels"),content:a.jsx(Lue,{})},{id:"mergeModels",label:bn.t("modelManager.mergeModels"),content:a.jsx(Fue,{})},{id:"settings",label:bn.t("modelManager.settings"),content:a.jsx(Zue,{})}],Jue=()=>a.jsxs(Yi,{isLazy:!0,variant:"line",layerStyle:"first",sx:{w:"full",h:"full",p:4,gap:4,borderRadius:"base"},children:[a.jsx(Qi,{children:Z_.map(e=>a.jsx(Pr,{sx:{borderTopRadius:"base"},children:e.label},e.id))}),a.jsx(zc,{sx:{w:"full",h:"full"},children:Z_.map(e=>a.jsx(fo,{sx:{w:"full",h:"full"},children:e.content},e.id))})]}),ede=d.memo(Jue),Gv={"enum.number":0,"enum.string":"",boolean:!1,BooleanCollection:[],BooleanPolymorphic:!1,ClipField:void 0,Collection:[],CollectionItem:void 0,ColorCollection:[],ColorField:void 0,ColorPolymorphic:void 0,ConditioningCollection:[],ConditioningField:void 0,ConditioningPolymorphic:void 0,ControlCollection:[],ControlField:void 0,ControlNetModelField:void 0,ControlPolymorphic:void 0,DenoiseMaskField:void 0,float:0,FloatCollection:[],FloatPolymorphic:0,ImageCollection:[],ImageField:void 0,ImagePolymorphic:void 0,integer:0,IntegerCollection:[],IntegerPolymorphic:0,LatentsCollection:[],LatentsField:void 0,LatentsPolymorphic:void 0,LoRAModelField:void 0,MainModelField:void 0,ONNXModelField:void 0,Scheduler:"euler",SDXLMainModelField:void 0,SDXLRefinerModelField:void 0,string:"",StringCollection:[],StringPolymorphic:"",UNetField:void 0,VaeField:void 0,VaeModelField:void 0},tde=(e,t)=>{const n={id:e,name:t.name,type:t.type,label:"",fieldKind:"input"};return t.type==="enum"?(t.enumType==="number"&&(n.value=t.default??Gv["enum.number"]),t.enumType==="string"&&(n.value=t.default??Gv["enum.string"])):n.value=t.default??Gv[t.type],n},nde=ae([e=>e.nodes],e=>e.nodeTemplates),Kv={dragHandle:`.${Xi}`},rde=()=>{const e=F(nde),t=Kx();return d.useCallback(n=>{var x;const r=Fa();let o=window.innerWidth/2,s=window.innerHeight/2;const i=(x=document.querySelector("#workflow-editor"))==null?void 0:x.getBoundingClientRect();i&&(o=i.width/2-c1/2,s=i.height/2-c1/2);const{x:l,y:f}=t.project({x:o,y:s});if(n==="current_image")return{...Kv,id:r,type:"current_image",position:{x:l,y:f},data:{id:r,type:"current_image",isOpen:!0,label:"Current Image"}};if(n==="notes")return{...Kv,id:r,type:"notes",position:{x:l,y:f},data:{id:r,isOpen:!0,label:"Notes",notes:"",type:"notes"}};const p=e[n];if(p===void 0){console.error(`Unable to find template ${n}.`);return}const h=fw(p.inputs,(C,b,w)=>{const k=Fa(),_=tde(k,b);return C[w]=_,C},{}),m=fw(p.outputs,(C,b,w)=>{const _={id:Fa(),name:w,type:b.type,fieldKind:"output"};return C[w]=_,C},{});return{...Kv,id:r,type:"invocation",position:{x:l,y:f},data:{id:r,type:n,version:p.version,label:"",notes:"",isOpen:!0,embedWorkflow:!1,isIntermediate:!0,inputs:h,outputs:m}}},[e,t])},FO=d.forwardRef(({label:e,description:t,...n},r)=>a.jsx("div",{ref:r,...n,children:a.jsxs("div",{children:[a.jsx(be,{fontWeight:600,children:e}),a.jsx(be,{size:"xs",sx:{color:"base.600",_dark:{color:"base.500"}},children:t})]})}));FO.displayName="AddNodePopoverSelectItem";const ode=(e,t)=>{const n=new RegExp(e.trim().replace(/[-[\]{}()*+!<=:?./\\^$|#,]/g,"").split(" ").join(".*"),"gi");return n.test(t.label)||n.test(t.description)||t.tags.some(r=>n.test(r))},sde=ae([xe],({nodes:e})=>{const t=rr(e.nodeTemplates,n=>({label:n.title,value:n.type,description:n.description,tags:n.tags}));return t.push({label:"Progress Image",value:"current_image",description:"Displays the current image in the Node Editor",tags:["progress"]}),t.push({label:"Notes",value:"notes",description:"Add notes about your workflow",tags:["notes"]}),t.sort((n,r)=>n.label.localeCompare(r.label)),{data:t}},Ce),ade=()=>{const e=te(),t=rde(),n=Zi(),{data:r}=F(sde),o=F(v=>v.nodes.isAddNodePopoverOpen),s=d.useRef(null),i=d.useCallback(v=>{const x=t(v);if(!x){n({status:"error",title:`Unknown Invocation type ${v}`});return}e(dA(x))},[e,t,n]),l=d.useCallback(v=>{v&&i(v)},[i]),f=d.useCallback(()=>{e(fA())},[e]),p=d.useCallback(()=>{e(s3())},[e]),h=d.useCallback(v=>{v.preventDefault(),p(),setTimeout(()=>{var x;(x=s.current)==null||x.focus()},0)},[p]),m=d.useCallback(()=>{f()},[f]);return Qe(["shift+a","space"],h),Qe(["escape"],m),a.jsxs($m,{initialFocusRef:s,isOpen:o,onClose:f,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(lP,{children:a.jsx(T,{sx:{position:"absolute",top:"15%",insetInlineStart:"50%",pointerEvents:"none"}})}),a.jsx(Lm,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(Rb,{sx:{p:0},children:a.jsx(Gt,{inputRef:s,selectOnBlur:!1,placeholder:"Search for nodes",value:null,data:r,maxDropdownHeight:400,nothingFound:"No matching nodes",itemComponent:FO,filter:ode,onChange:l,hoverOnSearchChange:!0,onDropdownClose:f,sx:{width:"32rem",input:{padding:"0.5rem"}}})})})]})},ide=d.memo(ade);var lde="\0",gi="\0",J_="",wr,Si,Tr,fd,uc,dc,no,as,Na,is,Ta,Fs,Bs,fc,pc,Hs,Eo,pd,kx,vj;let cde=(vj=class{constructor(t){Jt(this,pd);Jt(this,wr,!0);Jt(this,Si,!1);Jt(this,Tr,!1);Jt(this,fd,void 0);Jt(this,uc,()=>{});Jt(this,dc,()=>{});Jt(this,no,{});Jt(this,as,{});Jt(this,Na,{});Jt(this,is,{});Jt(this,Ta,{});Jt(this,Fs,{});Jt(this,Bs,{});Jt(this,fc,0);Jt(this,pc,0);Jt(this,Hs,void 0);Jt(this,Eo,void 0);t&&(Jr(this,wr,t.hasOwnProperty("directed")?t.directed:!0),Jr(this,Si,t.hasOwnProperty("multigraph")?t.multigraph:!1),Jr(this,Tr,t.hasOwnProperty("compound")?t.compound:!1)),Se(this,Tr)&&(Jr(this,Hs,{}),Jr(this,Eo,{}),Se(this,Eo)[gi]={})}isDirected(){return Se(this,wr)}isMultigraph(){return Se(this,Si)}isCompound(){return Se(this,Tr)}setGraph(t){return Jr(this,fd,t),this}graph(){return Se(this,fd)}setDefaultNodeLabel(t){return Jr(this,uc,t),typeof t!="function"&&Jr(this,uc,()=>t),this}nodeCount(){return Se(this,fc)}nodes(){return Object.keys(Se(this,no))}sources(){var t=this;return this.nodes().filter(n=>Object.keys(Se(t,as)[n]).length===0)}sinks(){var t=this;return this.nodes().filter(n=>Object.keys(Se(t,is)[n]).length===0)}setNodes(t,n){var r=arguments,o=this;return t.forEach(function(s){r.length>1?o.setNode(s,n):o.setNode(s)}),this}setNode(t,n){return Se(this,no).hasOwnProperty(t)?(arguments.length>1&&(Se(this,no)[t]=n),this):(Se(this,no)[t]=arguments.length>1?n:Se(this,uc).call(this,t),Se(this,Tr)&&(Se(this,Hs)[t]=gi,Se(this,Eo)[t]={},Se(this,Eo)[gi][t]=!0),Se(this,as)[t]={},Se(this,Na)[t]={},Se(this,is)[t]={},Se(this,Ta)[t]={},++vu(this,fc)._,this)}node(t){return Se(this,no)[t]}hasNode(t){return Se(this,no).hasOwnProperty(t)}removeNode(t){var n=this;if(Se(this,no).hasOwnProperty(t)){var r=o=>n.removeEdge(Se(n,Fs)[o]);delete Se(this,no)[t],Se(this,Tr)&&(os(this,pd,kx).call(this,t),delete Se(this,Hs)[t],this.children(t).forEach(function(o){n.setParent(o)}),delete Se(this,Eo)[t]),Object.keys(Se(this,as)[t]).forEach(r),delete Se(this,as)[t],delete Se(this,Na)[t],Object.keys(Se(this,is)[t]).forEach(r),delete Se(this,is)[t],delete Se(this,Ta)[t],--vu(this,fc)._}return this}setParent(t,n){if(!Se(this,Tr))throw new Error("Cannot set parent in a non-compound graph");if(n===void 0)n=gi;else{n+="";for(var r=n;r!==void 0;r=this.parent(r))if(r===t)throw new Error("Setting "+n+" as parent of "+t+" would create a cycle");this.setNode(n)}return this.setNode(t),os(this,pd,kx).call(this,t),Se(this,Hs)[t]=n,Se(this,Eo)[n][t]=!0,this}parent(t){if(Se(this,Tr)){var n=Se(this,Hs)[t];if(n!==gi)return n}}children(t=gi){if(Se(this,Tr)){var n=Se(this,Eo)[t];if(n)return Object.keys(n)}else{if(t===gi)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var n=Se(this,Na)[t];if(n)return Object.keys(n)}successors(t){var n=Se(this,Ta)[t];if(n)return Object.keys(n)}neighbors(t){var n=this.predecessors(t);if(n){const o=new Set(n);for(var r of this.successors(t))o.add(r);return Array.from(o.values())}}isLeaf(t){var n;return this.isDirected()?n=this.successors(t):n=this.neighbors(t),n.length===0}filterNodes(t){var n=new this.constructor({directed:Se(this,wr),multigraph:Se(this,Si),compound:Se(this,Tr)});n.setGraph(this.graph());var r=this;Object.entries(Se(this,no)).forEach(function([i,l]){t(i)&&n.setNode(i,l)}),Object.values(Se(this,Fs)).forEach(function(i){n.hasNode(i.v)&&n.hasNode(i.w)&&n.setEdge(i,r.edge(i))});var o={};function s(i){var l=r.parent(i);return l===void 0||n.hasNode(l)?(o[i]=l,l):l in o?o[l]:s(l)}return Se(this,Tr)&&n.nodes().forEach(i=>n.setParent(i,s(i))),n}setDefaultEdgeLabel(t){return Jr(this,dc,t),typeof t!="function"&&Jr(this,dc,()=>t),this}edgeCount(){return Se(this,pc)}edges(){return Object.values(Se(this,Fs))}setPath(t,n){var r=this,o=arguments;return t.reduce(function(s,i){return o.length>1?r.setEdge(s,i,n):r.setEdge(s,i),i}),this}setEdge(){var t,n,r,o,s=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(t=i.v,n=i.w,r=i.name,arguments.length===2&&(o=arguments[1],s=!0)):(t=i,n=arguments[1],r=arguments[3],arguments.length>2&&(o=arguments[2],s=!0)),t=""+t,n=""+n,r!==void 0&&(r=""+r);var l=Nu(Se(this,wr),t,n,r);if(Se(this,Bs).hasOwnProperty(l))return s&&(Se(this,Bs)[l]=o),this;if(r!==void 0&&!Se(this,Si))throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(n),Se(this,Bs)[l]=s?o:Se(this,dc).call(this,t,n,r);var f=ude(Se(this,wr),t,n,r);return t=f.v,n=f.w,Object.freeze(f),Se(this,Fs)[l]=f,ej(Se(this,Na)[n],t),ej(Se(this,Ta)[t],n),Se(this,as)[n][l]=f,Se(this,is)[t][l]=f,vu(this,pc)._++,this}edge(t,n,r){var o=arguments.length===1?qv(Se(this,wr),arguments[0]):Nu(Se(this,wr),t,n,r);return Se(this,Bs)[o]}edgeAsObj(){const t=this.edge(...arguments);return typeof t!="object"?{label:t}:t}hasEdge(t,n,r){var o=arguments.length===1?qv(Se(this,wr),arguments[0]):Nu(Se(this,wr),t,n,r);return Se(this,Bs).hasOwnProperty(o)}removeEdge(t,n,r){var o=arguments.length===1?qv(Se(this,wr),arguments[0]):Nu(Se(this,wr),t,n,r),s=Se(this,Fs)[o];return s&&(t=s.v,n=s.w,delete Se(this,Bs)[o],delete Se(this,Fs)[o],tj(Se(this,Na)[n],t),tj(Se(this,Ta)[t],n),delete Se(this,as)[n][o],delete Se(this,is)[t][o],vu(this,pc)._--),this}inEdges(t,n){var r=Se(this,as)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.v===n):o}}outEdges(t,n){var r=Se(this,is)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.w===n):o}}nodeEdges(t,n){var r=this.inEdges(t,n);if(r)return r.concat(this.outEdges(t,n))}},wr=new WeakMap,Si=new WeakMap,Tr=new WeakMap,fd=new WeakMap,uc=new WeakMap,dc=new WeakMap,no=new WeakMap,as=new WeakMap,Na=new WeakMap,is=new WeakMap,Ta=new WeakMap,Fs=new WeakMap,Bs=new WeakMap,fc=new WeakMap,pc=new WeakMap,Hs=new WeakMap,Eo=new WeakMap,pd=new WeakSet,kx=function(t){delete Se(this,Eo)[Se(this,Hs)[t]][t]},vj);function ej(e,t){e[t]?e[t]++:e[t]=1}function tj(e,t){--e[t]||delete e[t]}function Nu(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}return o+J_+s+J_+(r===void 0?lde:r)}function ude(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}var l={v:o,w:s};return r&&(l.name=r),l}function qv(e,t){return Nu(e,t.v,t.w,t.name)}var Vy=cde,dde="2.1.13",fde={Graph:Vy,version:dde},pde=Vy,hde={write:mde,read:xde};function mde(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:gde(e),edges:vde(e)};return e.graph()!==void 0&&(t.value=structuredClone(e.graph())),t}function gde(e){return e.nodes().map(function(t){var n=e.node(t),r=e.parent(t),o={v:t};return n!==void 0&&(o.value=n),r!==void 0&&(o.parent=r),o})}function vde(e){return e.edges().map(function(t){var n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function xde(e){var t=new pde(e.options).setGraph(e.value);return e.nodes.forEach(function(n){t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),e.edges.forEach(function(n){t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var bde=yde;function yde(e){var t={},n=[],r;function o(s){t.hasOwnProperty(s)||(t[s]=!0,r.push(s),e.successors(s).forEach(o),e.predecessors(s).forEach(o))}return e.nodes().forEach(function(s){r=[],o(s),r.length&&n.push(r)}),n}var Zn,Ws,hd,_x,md,jx,hc,Fp,xj;let Cde=(xj=class{constructor(){Jt(this,hd);Jt(this,md);Jt(this,hc);Jt(this,Zn,[]);Jt(this,Ws,{})}size(){return Se(this,Zn).length}keys(){return Se(this,Zn).map(function(t){return t.key})}has(t){return Se(this,Ws).hasOwnProperty(t)}priority(t){var n=Se(this,Ws)[t];if(n!==void 0)return Se(this,Zn)[n].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return Se(this,Zn)[0].key}add(t,n){var r=Se(this,Ws);if(t=String(t),!r.hasOwnProperty(t)){var o=Se(this,Zn),s=o.length;return r[t]=s,o.push({key:t,priority:n}),os(this,md,jx).call(this,s),!0}return!1}removeMin(){os(this,hc,Fp).call(this,0,Se(this,Zn).length-1);var t=Se(this,Zn).pop();return delete Se(this,Ws)[t.key],os(this,hd,_x).call(this,0),t.key}decrease(t,n){var r=Se(this,Ws)[t];if(n>Se(this,Zn)[r].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+Se(this,Zn)[r].priority+" New: "+n);Se(this,Zn)[r].priority=n,os(this,md,jx).call(this,r)}},Zn=new WeakMap,Ws=new WeakMap,hd=new WeakSet,_x=function(t){var n=Se(this,Zn),r=2*t,o=r+1,s=t;r>1,!(n[o].priority1;function kde(e,t,n,r){return _de(e,String(t),n||Sde,r||function(o){return e.outEdges(o)})}function _de(e,t,n,r){var o={},s=new wde,i,l,f=function(p){var h=p.v!==i?p.v:p.w,m=o[h],v=n(p),x=l.distance+v;if(v<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+p+" Weight: "+v);x0&&(i=s.removeMin(),l=o[i],l.distance!==Number.POSITIVE_INFINITY);)r(i).forEach(f);return o}var jde=HO,Pde=Ide;function Ide(e,t,n){return e.nodes().reduce(function(r,o){return r[o]=jde(e,o,t,n),r},{})}var WO=Ede;function Ede(e){var t=0,n=[],r={},o=[];function s(i){var l=r[i]={onStack:!0,lowlink:t,index:t++};if(n.push(i),e.successors(i).forEach(function(h){r.hasOwnProperty(h)?r[h].onStack&&(l.lowlink=Math.min(l.lowlink,r[h].index)):(s(h),l.lowlink=Math.min(l.lowlink,r[h].lowlink))}),l.lowlink===l.index){var f=[],p;do p=n.pop(),r[p].onStack=!1,f.push(p);while(i!==p);o.push(f)}}return e.nodes().forEach(function(i){r.hasOwnProperty(i)||s(i)}),o}var Mde=WO,Ode=Dde;function Dde(e){return Mde(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}var Rde=Nde,Ade=()=>1;function Nde(e,t,n){return Tde(e,t||Ade,n||function(r){return e.outEdges(r)})}function Tde(e,t,n){var r={},o=e.nodes();return o.forEach(function(s){r[s]={},r[s][s]={distance:0},o.forEach(function(i){s!==i&&(r[s][i]={distance:Number.POSITIVE_INFINITY})}),n(s).forEach(function(i){var l=i.v===s?i.w:i.v,f=t(i);r[s][l]={distance:f,predecessor:s}})}),o.forEach(function(s){var i=r[s];o.forEach(function(l){var f=r[l];o.forEach(function(p){var h=f[s],m=i[p],v=f[p],x=h.distance+m.distance;xe.successors(l):l=>e.neighbors(l),o=n==="post"?Fde:Bde,s=[],i={};return t.forEach(l=>{if(!e.hasNode(l))throw new Error("Graph does not have node: "+l);o(l,r,i,s)}),s}function Fde(e,t,n,r){for(var o=[[e,!1]];o.length>0;){var s=o.pop();s[1]?r.push(s[0]):n.hasOwnProperty(s[0])||(n[s[0]]=!0,o.push([s[0],!0]),KO(t(s[0]),i=>o.push([i,!1])))}}function Bde(e,t,n,r){for(var o=[e];o.length>0;){var s=o.pop();n.hasOwnProperty(s)||(n[s]=!0,r.push(s),KO(t(s),i=>o.push(i)))}}function KO(e,t){for(var n=e.length;n--;)t(e[n],n,e);return e}var Hde=GO,Wde=Vde;function Vde(e,t){return Hde(e,t,"post")}var Ude=GO,Gde=Kde;function Kde(e,t){return Ude(e,t,"pre")}var qde=Vy,Xde=BO,Yde=Qde;function Qde(e,t){var n=new qde,r={},o=new Xde,s;function i(f){var p=f.v===s?f.w:f.v,h=o.priority(p);if(h!==void 0){var m=t(f);m0;){if(s=o.removeMin(),r.hasOwnProperty(s))n.setEdge(s,r[s]);else{if(l)throw new Error("Input graph is not connected: "+e);l=!0}e.nodeEdges(s).forEach(i)}return n}var Zde={components:bde,dijkstra:HO,dijkstraAll:Pde,findCycles:Ode,floydWarshall:Rde,isAcyclic:$de,postorder:Wde,preorder:Gde,prim:Yde,tarjan:WO,topsort:UO},rj=fde,Jde={Graph:rj.Graph,json:hde,alg:Zde,version:rj.version};const oj=Oc(Jde),efe=()=>{const e=Kx(),t=F(r=>r.nodes.shouldValidateGraph);return d.useCallback(({source:r,sourceHandle:o,target:s,targetHandle:i})=>{var x,C;if(!t)return!0;const l=e.getEdges(),f=e.getNodes();if(!(r&&o&&s&&i))return!1;const p=e.getNode(r),h=e.getNode(s);if(!(p&&h&&p.data&&h.data))return!1;const m=(x=p.data.outputs[o])==null?void 0:x.type,v=(C=h.data.inputs[i])==null?void 0:C.type;if(!m||!v||l.filter(b=>b.target===s&&b.targetHandle===i).find(b=>{b.source===r&&b.sourceHandle})||l.find(b=>b.target===s&&b.targetHandle===i)&&v!=="CollectionItem")return!1;if(m!==v){const b=m==="CollectionItem"&&!Us.includes(v),w=v==="CollectionItem"&&!Us.includes(m)&&!Gs.includes(m),k=Gs.includes(v)&&(()=>{if(!Gs.includes(v))return!1;const M=a3[v],E=i3[M];return m===M||m===E})(),_=m==="Collection"&&(Us.includes(v)||Gs.includes(v)),j=v==="Collection"&&Us.includes(m);return b||w||k||_||j||m==="integer"&&v==="float"}return qO(r,s,f,l)},[e,t])},qO=(e,t,n,r)=>{const o=new oj.Graph;return n.forEach(s=>{o.setNode(s.id)}),r.forEach(s=>{o.setEdge(s.source,s.target)}),o.setEdge(e,t),oj.alg.isAcyclic(o)},ud=e=>`var(--invokeai-colors-${e.split(".").join("-")})`,tfe=ae(xe,({nodes:e})=>{const{shouldAnimateEdges:t,currentConnectionFieldType:n,shouldColorEdges:r}=e,o=ud(n&&r?yd[n].color:"base.500");let s="react-flow__custom_connection-path";return t&&(s=s.concat(" animated")),{stroke:o,className:s}}),nfe=({fromX:e,fromY:t,fromPosition:n,toX:r,toY:o,toPosition:s})=>{const{stroke:i,className:l}=F(tfe),f={sourceX:e,sourceY:t,sourcePosition:n,targetX:r,targetY:o,targetPosition:s},[p]=qx(f);return a.jsx("g",{children:a.jsx("path",{fill:"none",stroke:i,strokeWidth:2,className:l,d:p,style:{opacity:.8}})})},rfe=d.memo(nfe),XO=(e,t,n,r,o)=>ae(xe,({nodes:s})=>{var v,x;const i=s.nodes.find(C=>C.id===e),l=s.nodes.find(C=>C.id===n),f=Cn(i)&&Cn(l),p=(i==null?void 0:i.selected)||(l==null?void 0:l.selected)||o,h=f?(x=(v=i==null?void 0:i.data)==null?void 0:v.outputs[t||""])==null?void 0:x.type:void 0,m=h&&s.shouldColorEdges?ud(yd[h].color):ud("base.500");return{isSelected:p,shouldAnimate:s.shouldAnimateEdges&&p,stroke:m}},Ce),ofe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,data:l,selected:f,source:p,target:h,sourceHandleId:m,targetHandleId:v})=>{const x=d.useMemo(()=>XO(p,m,h,v,f),[f,p,m,h,v]),{isSelected:C,shouldAnimate:b}=F(x),[w,k,_]=qx({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s}),{base500:j}=Bd();return a.jsxs(a.Fragment,{children:[a.jsx(l3,{path:w,markerEnd:i,style:{strokeWidth:C?3:2,stroke:j,opacity:C?.8:.5,animation:b?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:b?5:"none"}}),(l==null?void 0:l.count)&&l.count>1&&a.jsx(pA,{children:a.jsx(T,{sx:{position:"absolute",transform:`translate(-50%, -50%) translate(${k}px,${_}px)`},className:"nodrag nopan",children:a.jsx(ua,{variant:"solid",sx:{bg:"base.500",opacity:C?.8:.5,boxShadow:"base"},children:l.count})})})]})},sfe=d.memo(ofe),afe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,selected:l,source:f,target:p,sourceHandleId:h,targetHandleId:m})=>{const v=d.useMemo(()=>XO(f,h,p,m,l),[f,h,p,m,l]),{isSelected:x,shouldAnimate:C,stroke:b}=F(v),[w]=qx({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s});return a.jsx(l3,{path:w,markerEnd:i,style:{strokeWidth:x?3:2,stroke:b,opacity:x?.8:.5,animation:C?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:C?5:"none"}})},ife=d.memo(afe),lfe=e=>{const{nodeId:t,width:n,children:r,selected:o}=e,{isMouseOverNode:s,handleMouseOut:i,handleMouseOver:l}=rO(t),f=d.useMemo(()=>ae(xe,({nodes:_})=>{var j;return((j=_.nodeExecutionStates[t])==null?void 0:j.status)===Ks.IN_PROGRESS}),[t]),p=F(f),[h,m,v,x]=ds("shadows",["nodeInProgress.light","nodeInProgress.dark","shadows.xl","shadows.base"]),C=te(),b=Ti(h,m),w=F(_=>_.nodes.nodeOpacity),k=d.useCallback(_=>{!_.ctrlKey&&!_.altKey&&!_.metaKey&&!_.shiftKey&&C(hA(t)),C(c3())},[C,t]);return a.jsxs(Ie,{onClick:k,onMouseEnter:l,onMouseLeave:i,className:Xi,sx:{h:"full",position:"relative",borderRadius:"base",w:n??c1,transitionProperty:"common",transitionDuration:"0.1s",cursor:"grab",opacity:w},children:[a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",pointerEvents:"none",shadow:`${v}, ${x}, ${x}`,zIndex:-1}}),a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"md",pointerEvents:"none",transitionProperty:"common",transitionDuration:"normal",opacity:.7,shadow:p?b:void 0,zIndex:-1}}),r,a.jsx(nO,{isSelected:o,isHovered:s})]})},Eg=d.memo(lfe),cfe=ae(xe,({system:e,gallery:t})=>({imageDTO:t.selection[t.selection.length-1],progressImage:e.progressImage})),ufe=e=>{const{progressImage:t,imageDTO:n}=mA(cfe);return t?a.jsx(Xv,{nodeProps:e,children:a.jsx(qi,{src:t.dataURL,sx:{w:"full",h:"full",objectFit:"contain",borderRadius:"base"}})}):n?a.jsx(Xv,{nodeProps:e,children:a.jsx(Ya,{imageDTO:n,isDragDisabled:!0,useThumbailFallback:!0})}):a.jsx(Xv,{nodeProps:e,children:a.jsx(tr,{})})},dfe=d.memo(ufe),Xv=e=>{const[t,n]=d.useState(!1),r=()=>{n(!0)},o=()=>{n(!1)};return a.jsx(Eg,{nodeId:e.nodeProps.id,selected:e.nodeProps.selected,width:384,children:a.jsxs(T,{onMouseEnter:r,onMouseLeave:o,className:Xi,sx:{position:"relative",flexDirection:"column"},children:[a.jsx(T,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",alignItems:"center",justifyContent:"center",h:8},children:a.jsx(be,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",_dark:{color:"base.200"}},children:"Current Image"})}),a.jsxs(T,{layerStyle:"nodeBody",sx:{w:"full",h:"full",borderBottomRadius:"base",p:2},children:[e.children,t&&a.jsx(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},style:{position:"absolute",top:40,left:-2,right:-2,bottom:0,pointerEvents:"none"},children:a.jsx(DO,{})},"nextPrevButtons")]})]})})},ffe=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.embedWorkflow:!1},Ce),[e]);return F(t)},YO=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?Ro(o.data.outputs,s=>gA.includes(s.type)):!1},Ce),[e]);return F(t)},pfe=({nodeId:e})=>{const t=te(),n=YO(e),r=ffe(e),o=d.useCallback(s=>{t(vA({nodeId:e,embedWorkflow:s.target.checked}))},[t,e]);return n?a.jsxs(un,{as:T,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Gn,{sx:{fontSize:"xs",mb:"1px"},children:"Embed Workflow"}),a.jsx(Cm,{className:"nopan",size:"sm",onChange:o,isChecked:r})]}):null},hfe=d.memo(pfe),mfe=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.isIntermediate:!1},Ce),[e]);return F(t)},gfe=({nodeId:e})=>{const t=te(),n=YO(e),r=mfe(e),o=d.useCallback(s=>{t(xA({nodeId:e,isIntermediate:!s.target.checked}))},[t,e]);return n?a.jsxs(un,{as:T,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Gn,{sx:{fontSize:"xs",mb:"1px"},children:"Save to Gallery"}),a.jsx(Cm,{className:"nopan",size:"sm",onChange:o,isChecked:!r})]}):null},vfe=d.memo(gfe),xfe=({nodeId:e})=>a.jsxs(T,{className:Xi,layerStyle:"nodeFooter",sx:{w:"full",borderBottomRadius:"base",px:2,py:0,h:6,justifyContent:"space-between"},children:[a.jsx(hfe,{nodeId:e}),a.jsx(vfe,{nodeId:e})]}),bfe=d.memo(xfe),yfe=({nodeId:e,isOpen:t})=>{const n=te(),r=bA(),o=d.useCallback(()=>{n(yA({nodeId:e,isOpen:!t})),r(e)},[n,t,e,r]);return a.jsx(Te,{className:"nodrag",onClick:o,"aria-label":"Minimize",sx:{minW:8,w:8,h:8,color:"base.500",_dark:{color:"base.500"},_hover:{color:"base.700",_dark:{color:"base.300"}}},variant:"link",icon:a.jsx(cg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})})},Uy=d.memo(yfe),QO=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.label:!1},Ce),[e]);return F(t)},ZO=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return!1;const s=o?r.nodeTemplates[o.data.type]:void 0;return s==null?void 0:s.title},Ce),[e]);return F(t)},Cfe=({nodeId:e,title:t})=>{const n=te(),r=QO(e),o=ZO(e),[s,i]=d.useState(""),l=d.useCallback(async p=>{n(CA({nodeId:e,label:p})),i(p||t||o||"Problem Setting Title")},[n,e,t,o]),f=d.useCallback(p=>{i(p)},[]);return d.useEffect(()=>{i(r||t||o||"Problem Setting Title")},[r,o,t]),a.jsx(T,{sx:{overflow:"hidden",w:"full",h:"full",alignItems:"center",justifyContent:"center",cursor:"text"},children:a.jsxs(km,{as:T,value:s,onChange:f,onSubmit:l,sx:{alignItems:"center",position:"relative",w:"full",h:"full"},children:[a.jsx(Sm,{fontSize:"sm",sx:{p:0,w:"full"},noOfLines:1}),a.jsx(wm,{className:"nodrag",fontSize:"sm",sx:{p:0,fontWeight:700,_focusVisible:{p:0,boxShadow:"none"}}}),a.jsx(wfe,{})]})})},JO=d.memo(Cfe);function wfe(){const{isEditing:e,getEditButtonProps:t}=B3(),n=d.useCallback(r=>{const{onClick:o}=t();o&&o(r)},[t]);return e?null:a.jsx(Ie,{className:Xi,onDoubleClick:n,sx:{position:"absolute",w:"full",h:"full",top:0,cursor:"grab"}})}const Gy=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return o==null?void 0:o.data},Ce),[e]);return F(t)},Sfe=({nodeId:e})=>{const t=Gy(e),{base400:n,base600:r}=Bd(),o=Ti(n,r),s=d.useMemo(()=>({borderWidth:0,borderRadius:"3px",width:"1rem",height:"1rem",backgroundColor:o,zIndex:-1}),[o]);return Kp(t)?a.jsxs(a.Fragment,{children:[a.jsx(Mu,{type:"target",id:`${t.id}-collapsed-target`,isConnectable:!1,position:Hl.Left,style:{...s,left:"-0.5rem"}}),rr(t.inputs,i=>a.jsx(Mu,{type:"target",id:i.name,isConnectable:!1,position:Hl.Left,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-input-handle`)),a.jsx(Mu,{type:"source",id:`${t.id}-collapsed-source`,isConnectable:!1,position:Hl.Right,style:{...s,right:"-0.5rem"}}),rr(t.outputs,i=>a.jsx(Mu,{type:"source",id:i.name,isConnectable:!1,position:Hl.Right,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-output-handle`))]}):null},kfe=d.memo(Sfe),_fe=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);return r.nodeTemplates[(o==null?void 0:o.data.type)??""]},Ce),[e]);return F(t)},jfe=({nodeId:e})=>{const t=te(),n=Gy(e),r=d.useCallback(o=>{t(wA({nodeId:e,notes:o.target.value}))},[t,e]);return Kp(n)?a.jsxs(un,{children:[a.jsx(Gn,{children:"Notes"}),a.jsx(oa,{value:n==null?void 0:n.notes,onChange:r,rows:10})]}):null},Pfe=d.memo(jfe),Ife=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{var i;const o=r.nodes.find(l=>l.id===e);if(!Cn(o))return!1;const s=r.nodeTemplates[(o==null?void 0:o.data.type)??""];return!(s!=null&&s.version)||!((i=o.data)!=null&&i.version)?!1:_j(s.version,o.data.version)===0},Ce),[e]);return F(t)},Efe=({nodeId:e})=>{const{isOpen:t,onOpen:n,onClose:r}=Er(),o=QO(e),s=ZO(e),i=Ife(e);return a.jsxs(a.Fragment,{children:[a.jsx(Dt,{label:a.jsx(e8,{nodeId:e}),placement:"top",shouldWrapChildren:!0,children:a.jsx(T,{className:"nodrag",onClick:n,sx:{alignItems:"center",justifyContent:"center",w:8,h:8,cursor:"pointer"},children:a.jsx(An,{as:EE,sx:{boxSize:4,w:8,color:i?"base.400":"error.400"}})})}),a.jsxs(Fi,{isOpen:t,onClose:r,isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Bi,{children:[a.jsx(Ho,{children:o||s||"Unknown Node"}),a.jsx(Td,{}),a.jsx(Vo,{children:a.jsx(Pfe,{nodeId:e})}),a.jsx(gs,{})]})]})]})},Mfe=d.memo(Efe),e8=d.memo(({nodeId:e})=>{const t=Gy(e),n=_fe(e),r=d.useMemo(()=>t!=null&&t.label&&(n!=null&&n.title)?`${t.label} (${n.title})`:t!=null&&t.label&&!n?t.label:!(t!=null&&t.label)&&n?n.title:"Unknown Node",[t,n]),o=d.useMemo(()=>!Kp(t)||!n?null:t.version?n.version?Sw(t.version,n.version,"<")?a.jsxs(be,{as:"span",sx:{color:"error.500"},children:["Version ",t.version," (update node)"]}):Sw(t.version,n.version,">")?a.jsxs(be,{as:"span",sx:{color:"error.500"},children:["Version ",t.version," (update app)"]}):a.jsxs(be,{as:"span",children:["Version ",t.version]}):a.jsxs(be,{as:"span",sx:{color:"error.500"},children:["Version ",t.version," (unknown template)"]}):a.jsx(be,{as:"span",sx:{color:"error.500"},children:"Version unknown"}),[t,n]);return Kp(t)?a.jsxs(T,{sx:{flexDir:"column"},children:[a.jsx(be,{as:"span",sx:{fontWeight:600},children:r}),a.jsx(be,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:n==null?void 0:n.description}),o,(t==null?void 0:t.notes)&&a.jsx(be,{children:t.notes})]}):a.jsx(be,{sx:{fontWeight:600},children:"Unknown Node"})});e8.displayName="TooltipContent";const Yv=3,sj={circle:{transitionProperty:"none",transitionDuration:"0s"},".chakra-progress__track":{stroke:"transparent"}},Ofe=({nodeId:e})=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>r.nodeExecutionStates[e]),[e]),n=F(t);return n?a.jsx(Dt,{label:a.jsx(t8,{nodeExecutionState:n}),placement:"top",children:a.jsx(T,{className:Xi,sx:{w:5,h:"full",alignItems:"center",justifyContent:"flex-end"},children:a.jsx(n8,{nodeExecutionState:n})})}):null},Dfe=d.memo(Ofe),t8=d.memo(({nodeExecutionState:e})=>{const{status:t,progress:n,progressImage:r}=e;return t===Ks.PENDING?a.jsx(be,{children:"Pending"}):t===Ks.IN_PROGRESS?r?a.jsxs(T,{sx:{pos:"relative",pt:1.5,pb:.5},children:[a.jsx(qi,{src:r.dataURL,sx:{w:32,h:32,borderRadius:"base",objectFit:"contain"}}),n!==null&&a.jsxs(ua,{variant:"solid",sx:{pos:"absolute",top:2.5,insetInlineEnd:1},children:[Math.round(n*100),"%"]})]}):n!==null?a.jsxs(be,{children:["In Progress (",Math.round(n*100),"%)"]}):a.jsx(be,{children:"In Progress"}):t===Ks.COMPLETED?a.jsx(be,{children:"Completed"}):t===Ks.FAILED?a.jsx(be,{children:"nodeExecutionState.error"}):null});t8.displayName="TooltipLabel";const n8=d.memo(e=>{const{progress:t,status:n}=e.nodeExecutionState;return n===Ks.PENDING?a.jsx(An,{as:dZ,sx:{boxSize:Yv,color:"base.600",_dark:{color:"base.300"}}}):n===Ks.IN_PROGRESS?t===null?a.jsx(R1,{isIndeterminate:!0,size:"14px",color:"base.500",thickness:14,sx:sj}):a.jsx(R1,{value:Math.round(t*100),size:"14px",color:"base.500",thickness:14,sx:sj}):n===Ks.COMPLETED?a.jsx(An,{as:kE,sx:{boxSize:Yv,color:"ok.600",_dark:{color:"ok.300"}}}):n===Ks.FAILED?a.jsx(An,{as:hZ,sx:{boxSize:Yv,color:"error.600",_dark:{color:"error.300"}}}):null});n8.displayName="StatusIcon";const Rfe=({nodeId:e,isOpen:t})=>a.jsxs(T,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",justifyContent:"space-between",h:8,textAlign:"center",fontWeight:500,color:"base.700",_dark:{color:"base.200"}},children:[a.jsx(Uy,{nodeId:e,isOpen:t}),a.jsx(JO,{nodeId:e}),a.jsxs(T,{alignItems:"center",children:[a.jsx(Dfe,{nodeId:e}),a.jsx(Mfe,{nodeId:e})]}),!t&&a.jsx(kfe,{nodeId:e})]}),Afe=d.memo(Rfe),Nfe=(e,t,n,r)=>ae(xe,o=>{if(!r)return"No field type";const{currentConnectionFieldType:s,connectionStartParams:i,nodes:l,edges:f}=o.nodes;if(!i||!s)return"No connection in progress";const{handleType:p,nodeId:h,handleId:m}=i;if(!p||!h||!m)return"No connection data";const v=n==="target"?r:s,x=n==="source"?r:s;if(e===h)return"Cannot connect to self";if(n===p)return n==="source"?"Cannot connect output to output":"Cannot connect input to input";if(f.find(b=>b.target===e&&b.targetHandle===t)&&v!=="CollectionItem")return"Input may only have one connection";if(x!==v){const b=x==="CollectionItem"&&!Us.includes(v),w=v==="CollectionItem"&&!Us.includes(x)&&!Gs.includes(x),k=Gs.includes(v)&&(()=>{if(!Gs.includes(v))return!1;const M=a3[v],E=i3[M];return x===M||x===E})(),_=x==="Collection"&&(Us.includes(v)||Gs.includes(v)),j=v==="Collection"&&Us.includes(x);if(!(b||w||k||_||j||x==="integer"&&v==="float"))return"Field types must match"}return qO(p==="source"?h:e,p==="source"?e:h,l,f)?null:"Connection would create a cycle"}),Tfe=(e,t,n)=>{const r=d.useMemo(()=>ae(xe,({nodes:s})=>{var l;const i=s.nodes.find(f=>f.id===e);if(Cn(i))return(l=i==null?void 0:i.data[Wx[n]][t])==null?void 0:l.type},Ce),[t,n,e]);return F(r)},$fe=ae(xe,({nodes:e})=>e.currentConnectionFieldType!==null&&e.connectionStartParams!==null),r8=({nodeId:e,fieldName:t,kind:n})=>{const r=Tfe(e,t,n),o=d.useMemo(()=>ae(xe,({nodes:v})=>!!v.edges.filter(x=>(n==="input"?x.target:x.source)===e&&(n==="input"?x.targetHandle:x.sourceHandle)===t).length),[t,n,e]),s=d.useMemo(()=>Nfe(e,t,n==="input"?"target":"source",r),[e,t,n,r]),i=d.useMemo(()=>ae(xe,({nodes:v})=>{var x,C,b;return((x=v.connectionStartParams)==null?void 0:x.nodeId)===e&&((C=v.connectionStartParams)==null?void 0:C.handleId)===t&&((b=v.connectionStartParams)==null?void 0:b.handleType)==={input:"target",output:"source"}[n]}),[t,n,e]),l=F(o),f=F($fe),p=F(i),h=F(s),m=d.useMemo(()=>!!(f&&h&&!p),[h,f,p]);return{isConnected:l,isConnectionInProgress:f,isConnectionStartField:p,connectionError:h,shouldDim:m}},Lfe=e=>{const{fieldTemplate:t,handleType:n,isConnectionInProgress:r,isConnectionStartField:o,connectionError:s}=e,{name:i,type:l}=t,{color:f,title:p}=yd[l],h=d.useMemo(()=>{const v=Us.includes(l),x=Gs.includes(l),C=SA.includes(l),b=ud(f),w={backgroundColor:v||x?"var(--invokeai-colors-base-900)":b,position:"absolute",width:"1rem",height:"1rem",borderWidth:v||x?4:0,borderStyle:"solid",borderColor:b,borderRadius:C?4:"100%",zIndex:1};return n==="target"?w.insetInlineStart="-1rem":w.insetInlineEnd="-1rem",r&&!o&&s&&(w.filter="opacity(0.4) grayscale(0.7)"),r&&s?o?w.cursor="grab":w.cursor="not-allowed":w.cursor="crosshair",w},[s,n,r,o,l,f]),m=d.useMemo(()=>r&&o?p:r&&s?s??p:p,[s,r,o,p]);return a.jsx(Dt,{label:m,placement:n==="target"?"start":"end",hasArrow:!0,openDelay:gm,children:a.jsx(Mu,{type:n,id:i,position:n==="target"?Hl.Left:Hl.Right,style:h})})},o8=d.memo(Lfe),zfe=({nodeId:e,fieldName:t})=>{const n=Cg(e,t,"output"),{isConnected:r,isConnectionInProgress:o,isConnectionStartField:s,connectionError:i,shouldDim:l}=r8({nodeId:e,fieldName:t,kind:"output"});return(n==null?void 0:n.fieldKind)!=="output"?a.jsx(Ix,{shouldDim:l,children:a.jsxs(un,{sx:{color:"error.400",textAlign:"right",fontSize:"sm"},children:["Unknown output: ",t]})}):a.jsxs(Ix,{shouldDim:l,children:[a.jsx(Dt,{label:a.jsx(Ay,{nodeId:e,fieldName:t,kind:"output"}),openDelay:gm,placement:"top",shouldWrapChildren:!0,hasArrow:!0,children:a.jsx(un,{isDisabled:r,pe:2,children:a.jsx(Gn,{sx:{mb:0,fontWeight:500},children:n==null?void 0:n.title})})}),a.jsx(o8,{fieldTemplate:n,handleType:"source",isConnectionInProgress:o,isConnectionStartField:s,connectionError:i})]})},Ffe=d.memo(zfe),Ix=d.memo(({shouldDim:e,children:t})=>a.jsx(T,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",justifyContent:"flex-end"},children:t}));Ix.displayName="OutputFieldWrapper";const Bfe=(e,t)=>{const n=d.useMemo(()=>ae(xe,({nodes:o})=>{var i;const s=o.nodes.find(l=>l.id===e);if(Cn(s))return((i=s==null?void 0:s.data.inputs[t])==null?void 0:i.value)!==void 0},Ce),[t,e]);return F(n)},Hfe=(e,t)=>{const n=d.useMemo(()=>ae(xe,({nodes:o})=>{const s=o.nodes.find(f=>f.id===e);if(!Cn(s))return;const i=o.nodeTemplates[(s==null?void 0:s.data.type)??""],l=i==null?void 0:i.inputs[t];return l==null?void 0:l.input},Ce),[t,e]);return F(n)},Wfe=({nodeId:e,fieldName:t,kind:n,children:r})=>{const o=te(),s=oO(e,t),i=sO(e,t,n),l=Hfe(e,t),f=d.useCallback(b=>{b.preventDefault()},[]),p=d.useMemo(()=>ae(xe,({nodes:b})=>({isExposed:!!b.workflow.exposedFields.find(k=>k.nodeId===e&&k.fieldName===t)}),Ce),[t,e]),h=d.useMemo(()=>["any","direct"].includes(l??"__UNKNOWN_INPUT__"),[l]),{isExposed:m}=F(p),v=d.useCallback(()=>{o(kA({nodeId:e,fieldName:t}))},[o,t,e]),x=d.useCallback(()=>{o(qj({nodeId:e,fieldName:t}))},[o,t,e]),C=d.useMemo(()=>{const b=[];return h&&!m&&b.push(a.jsx(Ht,{icon:a.jsx(tl,{}),onClick:v,children:"Add to Linear View"},`${e}.${t}.expose-field`)),h&&m&&b.push(a.jsx(Ht,{icon:a.jsx(PZ,{}),onClick:x,children:"Remove from Linear View"},`${e}.${t}.unexpose-field`)),b},[t,v,x,m,h,e]);return a.jsx(yy,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>C.length?a.jsx(Ga,{sx:{visibility:"visible !important"},motionProps:mc,onContextMenu:f,children:a.jsx(Cc,{title:s||i||"Unknown Field",children:C})}):null,children:r})},Vfe=d.memo(Wfe),Ufe=({nodeId:e,fieldName:t})=>{const n=Cg(e,t,"input"),r=Bfe(e,t),{isConnected:o,isConnectionInProgress:s,isConnectionStartField:i,connectionError:l,shouldDim:f}=r8({nodeId:e,fieldName:t,kind:"input"}),p=d.useMemo(()=>{if((n==null?void 0:n.fieldKind)!=="input"||!n.required)return!1;if(!o&&n.input==="connection"||!r&&!o&&n.input==="any")return!0},[n,o,r]);return(n==null?void 0:n.fieldKind)!=="input"?a.jsx(Ex,{shouldDim:f,children:a.jsxs(un,{sx:{color:"error.400",textAlign:"left",fontSize:"sm"},children:["Unknown input: ",t]})}):a.jsxs(Ex,{shouldDim:f,children:[a.jsxs(un,{isInvalid:p,isDisabled:o,sx:{alignItems:"stretch",justifyContent:"space-between",ps:n.input==="direct"?0:2,gap:2,h:"full",w:"full"},children:[a.jsx(Vfe,{nodeId:e,fieldName:t,kind:"input",children:h=>a.jsx(Gn,{sx:{display:"flex",alignItems:"center",h:"full",mb:0,px:1,gap:2},children:a.jsx(iO,{ref:h,nodeId:e,fieldName:t,kind:"input",isMissingInput:p,withTooltip:!0})})}),a.jsx(Ie,{children:a.jsx(vO,{nodeId:e,fieldName:t})})]}),n.input!=="direct"&&a.jsx(o8,{fieldTemplate:n,handleType:"target",isConnectionInProgress:s,isConnectionStartField:i,connectionError:l})]})},aj=d.memo(Ufe),Ex=d.memo(({shouldDim:e,children:t})=>a.jsx(T,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",w:"full",h:"full"},children:t}));Ex.displayName="InputFieldWrapper";const Gfe=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.outputs).filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},Ce),[e]);return F(t)},Kfe=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?Ro(o.data.outputs,s=>_A.includes(s.type)):!1},Ce),[e]);return F(t)},qfe=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.inputs).filter(i=>i.input==="connection").filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},Ce),[e]);return F(t)},Xfe=e=>{const t=d.useMemo(()=>ae(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.inputs).filter(i=>["any","direct"].includes(i.input)).filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},Ce),[e]);return F(t)},Yfe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>{const s=qfe(e),i=Xfe(e),l=Gfe(e),f=Kfe(e);return a.jsxs(Eg,{nodeId:e,selected:o,children:[a.jsx(Afe,{nodeId:e,isOpen:t,label:n,selected:o,type:r}),t&&a.jsxs(a.Fragment,{children:[a.jsx(T,{layerStyle:"nodeBody",sx:{flexDirection:"column",w:"full",h:"full",py:2,gap:1,borderBottomRadius:f?0:"base"},children:a.jsxs(T,{sx:{flexDir:"column",px:2,w:"full",h:"full"},children:[a.jsxs(Ua,{gridTemplateColumns:"1fr auto",gridAutoRows:"1fr",children:[s.map((p,h)=>a.jsx(ed,{gridColumnStart:1,gridRowStart:h+1,children:a.jsx(aj,{nodeId:e,fieldName:p})},`${e}.${p}.input-field`)),l.map((p,h)=>a.jsx(ed,{gridColumnStart:2,gridRowStart:h+1,children:a.jsx(Ffe,{nodeId:e,fieldName:p})},`${e}.${p}.output-field`))]}),i.map(p=>a.jsx(aj,{nodeId:e,fieldName:p},`${e}.${p}.input-field`))]})}),f&&a.jsx(bfe,{nodeId:e})]})]})},Qfe=d.memo(Yfe),Zfe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>a.jsxs(Eg,{nodeId:e,selected:o,children:[a.jsxs(T,{className:Xi,layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",h:8,fontWeight:600,fontSize:"sm"},children:[a.jsx(Uy,{nodeId:e,isOpen:t}),a.jsx(be,{sx:{w:"full",textAlign:"center",pe:8,color:"error.500",_dark:{color:"error.300"}},children:n?`${n} (${r})`:r})]}),t&&a.jsx(T,{layerStyle:"nodeBody",sx:{userSelect:"auto",flexDirection:"column",w:"full",h:"full",p:4,gap:1,borderBottomRadius:"base",fontSize:"sm"},children:a.jsxs(Ie,{children:[a.jsx(be,{as:"span",children:"Unknown node type: "}),a.jsx(be,{as:"span",fontWeight:600,children:r})]})})]}),Jfe=d.memo(Zfe),epe=e=>{const{data:t,selected:n}=e,{id:r,type:o,isOpen:s,label:i}=t,l=d.useMemo(()=>ae(xe,({nodes:p})=>!!p.nodeTemplates[o]),[o]);return F(l)?a.jsx(Qfe,{nodeId:r,isOpen:s,label:i,type:o,selected:n}):a.jsx(Jfe,{nodeId:r,isOpen:s,label:i,type:o,selected:n})},tpe=d.memo(epe),npe=e=>{const{id:t,data:n,selected:r}=e,{notes:o,isOpen:s}=n,i=te(),l=d.useCallback(f=>{i(jA({nodeId:t,value:f.target.value}))},[i,t]);return a.jsxs(Eg,{nodeId:t,selected:r,children:[a.jsxs(T,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:s?0:"base",alignItems:"center",justifyContent:"space-between",h:8},children:[a.jsx(Uy,{nodeId:t,isOpen:s}),a.jsx(JO,{nodeId:t,title:"Notes"}),a.jsx(Ie,{minW:8})]}),s&&a.jsx(a.Fragment,{children:a.jsx(T,{layerStyle:"nodeBody",className:"nopan",sx:{cursor:"auto",flexDirection:"column",borderBottomRadius:"base",w:"full",h:"full",p:2,gap:1},children:a.jsx(T,{className:"nopan",sx:{flexDir:"column",w:"full",h:"full"},children:a.jsx(oa,{value:o,onChange:l,rows:8,resize:"none",sx:{fontSize:"xs"}})})})})]})},rpe=d.memo(npe),ope=["Delete","Backspace"],spe={collapsed:sfe,default:ife},ape={invocation:tpe,current_image:dfe,notes:rpe},ipe={hideAttribution:!0},lpe=ae(xe,({nodes:e})=>{const{shouldSnapToGrid:t,selectionMode:n}=e;return{shouldSnapToGrid:t,selectionMode:n}},Ce),cpe=()=>{const e=te(),t=F(j=>j.nodes.nodes),n=F(j=>j.nodes.edges),r=F(j=>j.nodes.viewport),{shouldSnapToGrid:o,selectionMode:s}=F(lpe),i=efe(),[l]=ds("radii",["base"]),f=d.useCallback(j=>{e(PA(j))},[e]),p=d.useCallback(j=>{e(IA(j))},[e]),h=d.useCallback((j,I)=>{e(EA(I))},[e]),m=d.useCallback(j=>{e(MA(j))},[e]),v=d.useCallback(()=>{e(OA())},[e]),x=d.useCallback(j=>{e(DA(j))},[e]),C=d.useCallback(j=>{e(RA(j))},[e]),b=d.useCallback(({nodes:j,edges:I})=>{e(AA(j?j.map(M=>M.id):[])),e(NA(I?I.map(M=>M.id):[]))},[e]),w=d.useCallback((j,I)=>{e(TA(I))},[e]),k=d.useCallback(()=>{e(c3())},[e]),_=d.useCallback(j=>{$A.set(j),j.fitView()},[]);return Qe(["Ctrl+c","Meta+c"],j=>{j.preventDefault(),e(LA())}),Qe(["Ctrl+a","Meta+a"],j=>{j.preventDefault(),e(zA())}),Qe(["Ctrl+v","Meta+v"],j=>{j.preventDefault(),e(FA())}),a.jsx(BA,{id:"workflow-editor",defaultViewport:r,nodeTypes:ape,edgeTypes:spe,nodes:t,edges:n,onInit:_,onNodesChange:f,onEdgesChange:p,onEdgesDelete:x,onNodesDelete:C,onConnectStart:h,onConnect:m,onConnectEnd:v,onMoveEnd:w,connectionLineComponent:rfe,onSelectionChange:b,isValidConnection:i,minZoom:.1,snapToGrid:o,snapGrid:[25,25],connectionRadius:30,proOptions:ipe,style:{borderRadius:l},onPaneClick:k,deleteKeyCode:ope,selectionMode:s,children:a.jsx(GN,{})})},upe=()=>{const e=te(),t=d.useCallback(()=>{e(s3())},[e]);return a.jsx(T,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:2},children:a.jsx(Te,{tooltip:"Add Node (Shift+A, Space)","aria-label":"Add Node",icon:a.jsx(tl,{}),onClick:t})})},dpe=d.memo(upe),fpe=()=>{const e=te(),t=DP("nodes");return d.useCallback(r=>{if(!r)return;const o=new FileReader;o.onload=async()=>{const s=o.result;try{const i=JSON.parse(String(s)),l=HA.safeParse(i);if(!l.success){const{message:f}=WA(l.error,{prefix:"Workflow Validation Error"});t.error({error:VA(l.error)},f),e(Nt(zt({title:"Unable to Validate Workflow",status:"error",duration:5e3}))),o.abort();return}e(Bx(l.data)),o.abort()}catch{e(Nt(zt({title:"Unable to Load Workflow",status:"error"})))}},o.readAsText(r)},[e,t])},ppe=d.memo(e=>e.error.issues[0]?a.jsx(be,{children:pw(e.error.issues[0],{prefix:null}).toString()}):a.jsx(Id,{children:e.error.issues.map((t,n)=>a.jsx(No,{children:a.jsx(be,{children:pw(t,{prefix:null}).toString()})},n))}));ppe.displayName="WorkflowValidationErrorContent";const hpe=()=>{const{t:e}=we(),t=d.useRef(null),n=fpe();return a.jsx(JI,{resetRef:t,accept:"application/json",onChange:n,children:r=>a.jsx(Te,{icon:a.jsx(ng,{}),tooltip:e("nodes.loadWorkflow"),"aria-label":e("nodes.loadWorkflow"),...r})})},mpe=d.memo(hpe),gpe=()=>{const{t:e}=we(),t=te(),{isOpen:n,onOpen:r,onClose:o}=Er(),s=d.useRef(null),i=F(f=>f.nodes.nodes.length),l=d.useCallback(()=>{t(UA()),t(Nt(zt({title:e("toast.nodesCleared"),status:"success"}))),o()},[t,e,o]);return a.jsxs(a.Fragment,{children:[a.jsx(Te,{icon:a.jsx(Wr,{}),tooltip:e("nodes.resetWorkflow"),"aria-label":e("nodes.resetWorkflow"),onClick:r,isDisabled:!i,colorScheme:"error"}),a.jsxs(Ad,{isOpen:n,onClose:o,leastDestructiveRef:s,isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Nd,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:e("nodes.resetWorkflow")}),a.jsx(Vo,{py:4,children:a.jsxs(T,{flexDir:"column",gap:2,children:[a.jsx(be,{children:e("nodes.resetWorkflowDesc")}),a.jsx(be,{variant:"subtext",children:e("nodes.resetWorkflowDesc2")})]})}),a.jsxs(gs,{children:[a.jsx(gc,{ref:s,onClick:o,children:e("common.cancel")}),a.jsx(gc,{colorScheme:"error",ml:3,onClick:l,children:e("common.accept")})]})]})]})]})},vpe=d.memo(gpe),xpe=()=>{const{t:e}=we(),t=tO(),n=d.useCallback(()=>{const r=new Blob([JSON.stringify(t,null,2)]),o=document.createElement("a");o.href=URL.createObjectURL(r),o.download=`${t.name||"My Workflow"}.json`,document.body.appendChild(o),o.click(),o.remove()},[t]);return a.jsx(Te,{icon:a.jsx(Jm,{}),tooltip:e("nodes.downloadWorkflow"),"aria-label":e("nodes.downloadWorkflow"),onClick:n})},bpe=d.memo(xpe),ype=()=>a.jsxs(T,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:"50%",transform:"translate(-50%)"},children:[a.jsx(bpe,{}),a.jsx(mpe,{}),a.jsx(vpe,{})]}),Cpe=d.memo(ype),wpe=()=>a.jsx(T,{sx:{gap:2,flexDir:"column"},children:rr(yd,({title:e,description:t,color:n},r)=>a.jsx(Dt,{label:t,children:a.jsx(ua,{sx:{userSelect:"none",color:parseInt(n.split(".")[1]??"0",10)<500?"base.800":"base.50",bg:n},textAlign:"center",children:e})},r))}),Spe=d.memo(wpe),kpe=()=>{const{t:e}=we(),t=te(),n=d.useCallback(()=>{t(GA())},[t]);return a.jsx(it,{leftIcon:a.jsx(NZ,{}),tooltip:e("nodes.reloadNodeTemplates"),"aria-label":e("nodes.reloadNodeTemplates"),onClick:n,children:e("nodes.reloadNodeTemplates")})},_pe=d.memo(kpe),Pu={fontWeight:600},jpe=ae(xe,({nodes:e})=>{const{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionMode:s}=e;return{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionModeIsChecked:s===KA.Full}},Ce),Ppe=Pe((e,t)=>{const{isOpen:n,onOpen:r,onClose:o}=Er(),s=te(),{shouldAnimateEdges:i,shouldValidateGraph:l,shouldSnapToGrid:f,shouldColorEdges:p,selectionModeIsChecked:h}=F(jpe),m=d.useCallback(w=>{s(qA(w.target.checked))},[s]),v=d.useCallback(w=>{s(XA(w.target.checked))},[s]),x=d.useCallback(w=>{s(YA(w.target.checked))},[s]),C=d.useCallback(w=>{s(QA(w.target.checked))},[s]),b=d.useCallback(w=>{s(ZA(w.target.checked))},[s]);return a.jsxs(a.Fragment,{children:[a.jsx(Te,{ref:t,"aria-label":"Workflow Editor Settings",tooltip:"Workflow Editor Settings",icon:a.jsx(jE,{}),onClick:r}),a.jsxs(Fi,{isOpen:n,onClose:o,size:"2xl",isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Bi,{children:[a.jsx(Ho,{children:"Workflow Editor Settings"}),a.jsx(Td,{}),a.jsx(Vo,{children:a.jsxs(T,{sx:{flexDirection:"column",gap:4,py:4},children:[a.jsx(oo,{size:"sm",children:"General"}),a.jsx(Ut,{formLabelProps:Pu,onChange:v,isChecked:i,label:"Animated Edges",helperText:"Animate selected edges and edges connected to selected nodes"}),a.jsx(Fr,{}),a.jsx(Ut,{formLabelProps:Pu,isChecked:f,onChange:x,label:"Snap to Grid",helperText:"Snap nodes to grid when moved"}),a.jsx(Fr,{}),a.jsx(Ut,{formLabelProps:Pu,isChecked:p,onChange:C,label:"Color-Code Edges",helperText:"Color-code edges according to their connected fields"}),a.jsx(Ut,{formLabelProps:Pu,isChecked:h,onChange:b,label:"Fully Contain Nodes to Select",helperText:"Nodes must be fully inside the selection box to be selected"}),a.jsx(oo,{size:"sm",pt:4,children:"Advanced"}),a.jsx(Ut,{formLabelProps:Pu,isChecked:l,onChange:m,label:"Validate Connections and Graph",helperText:"Prevent invalid connections from being made, and invalid graphs from being invoked"}),a.jsx(_pe,{})]})})]})]})]})}),Ipe=d.memo(Ppe),Epe=()=>{const e=F(t=>t.nodes.shouldShowFieldTypeLegend);return a.jsxs(T,{sx:{gap:2,position:"absolute",top:2,insetInlineEnd:2},children:[a.jsx(Ipe,{}),e&&a.jsx(Spe,{})]})},Mpe=d.memo(Epe);function Ope(){const e=te(),t=F(r=>r.nodes.nodeOpacity),n=d.useCallback(r=>{e(JA(r))},[e]);return a.jsx(T,{alignItems:"center",children:a.jsxs(Ab,{"aria-label":"Node Opacity",value:t,min:.5,max:1,step:.01,onChange:n,orientation:"vertical",defaultValue:30,h:"calc(100% - 0.5rem)",children:[a.jsx(Tb,{children:a.jsx($b,{})}),a.jsx(Nb,{})]})})}function Dpe(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"}}]})(e)}function Rpe(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z"}}]})(e)}function Ape(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"}}]})(e)}const Npe=()=>{const{t:e}=we(),{zoomIn:t,zoomOut:n,fitView:r}=Kx(),o=te(),s=F(h=>h.nodes.shouldShowMinimapPanel),i=d.useCallback(()=>{t()},[t]),l=d.useCallback(()=>{n()},[n]),f=d.useCallback(()=>{r()},[r]),p=d.useCallback(()=>{o(e9(!s))},[s,o]);return a.jsxs(pn,{isAttached:!0,orientation:"vertical",children:[a.jsx(Te,{tooltip:e("nodes.zoomInNodes"),"aria-label":e("nodes.zoomInNodes"),onClick:i,icon:a.jsx(Ape,{})}),a.jsx(Te,{tooltip:e("nodes.zoomOutNodes"),"aria-label":e("nodes.zoomOutNodes"),onClick:l,icon:a.jsx(Rpe,{})}),a.jsx(Te,{tooltip:e("nodes.fitViewportNodes"),"aria-label":e("nodes.fitViewportNodes"),onClick:f,icon:a.jsx(gZ,{})}),a.jsx(Te,{tooltip:e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),"aria-label":e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),isChecked:s,onClick:p,icon:a.jsx(jZ,{})})]})},Tpe=d.memo(Npe),$pe=()=>a.jsxs(T,{sx:{gap:2,position:"absolute",bottom:2,insetInlineStart:2},children:[a.jsx(Tpe,{}),a.jsx(Ope,{})]}),Lpe=d.memo($pe),zpe=_e(FN),Fpe=()=>{const e=F(r=>r.nodes.shouldShowMinimapPanel),t=Ti("var(--invokeai-colors-accent-300)","var(--invokeai-colors-accent-600)"),n=Ti("var(--invokeai-colors-blackAlpha-300)","var(--invokeai-colors-blackAlpha-600)");return a.jsx(T,{sx:{gap:2,position:"absolute",bottom:2,insetInlineEnd:2},children:e&&a.jsx(zpe,{pannable:!0,zoomable:!0,nodeBorderRadius:15,sx:{m:"0 !important",backgroundColor:"base.200 !important",borderRadius:"base",_dark:{backgroundColor:"base.500 !important"},svg:{borderRadius:"inherit"}},nodeColor:t,maskColor:n})})},Bpe=d.memo(Fpe),Hpe=()=>{const e=F(t=>t.nodes.isReady);return a.jsxs(T,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center"},children:[a.jsx(nr,{children:e&&a.jsxs(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"relative",width:"100%",height:"100%"},children:[a.jsx(cpe,{}),a.jsx(ide,{}),a.jsx(dpe,{}),a.jsx(Cpe,{}),a.jsx(Mpe,{}),a.jsx(Lpe,{}),a.jsx(Bpe,{})]})}),a.jsx(nr,{children:!e&&a.jsx(gn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"absolute",width:"100%",height:"100%"},children:a.jsx(T,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center",pointerEvents:"none"},children:a.jsx(tr,{label:"Loading Nodes...",icon:vg})})})})]})},Wpe=d.memo(Hpe),Vpe=()=>a.jsx(t9,{children:a.jsx(Wpe,{})}),Upe=d.memo(Vpe),Gpe=()=>a.jsx(RO,{}),Kpe=d.memo(Gpe);var Mx={exports:{}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Konva=void 0;var n=hw;Object.defineProperty(t,"Konva",{enumerable:!0,get:function(){return n.Konva}});const r=hw;e.exports=r.Konva})(Mx,Mx.exports);var qpe=Mx.exports;const dd=Oc(qpe);var s8={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 Xpe=function(t){var n={},r=d,o=Ip,s=Object.assign;function i(c){for(var u="https://reactjs.org/docs/error-decoder.html?invariant="+c,g=1;gZ||S[N]!==P[Z]){var ce=` -`+S[N].replace(" at new "," at ");return c.displayName&&ce.includes("")&&(ce=ce.replace("",c.displayName)),ce}while(1<=N&&0<=Z);break}}}finally{Qc=!1,Error.prepareStackTrace=g}return(c=c?c.displayName||c.name:"")?ai(c):""}var Rg=Object.prototype.hasOwnProperty,va=[],Je=-1;function wt(c){return{current:c}}function xt(c){0>Je||(c.current=va[Je],va[Je]=null,Je--)}function St(c,u){Je++,va[Je]=c.current,c.current=u}var Kn={},Wt=wt(Kn),kn=wt(!1),lr=Kn;function cl(c,u){var g=c.type.contextTypes;if(!g)return Kn;var y=c.stateNode;if(y&&y.__reactInternalMemoizedUnmaskedChildContext===u)return y.__reactInternalMemoizedMaskedChildContext;var S={},P;for(P in g)S[P]=u[P];return y&&(c=c.stateNode,c.__reactInternalMemoizedUnmaskedChildContext=u,c.__reactInternalMemoizedMaskedChildContext=S),S}function gr(c){return c=c.childContextTypes,c!=null}function Yd(){xt(kn),xt(Wt)}function Yy(c,u,g){if(Wt.current!==Kn)throw Error(i(168));St(Wt,u),St(kn,g)}function Qy(c,u,g){var y=c.stateNode;if(u=u.childContextTypes,typeof y.getChildContext!="function")return g;y=y.getChildContext();for(var S in y)if(!(S in u))throw Error(i(108,D(c)||"Unknown",S));return s({},g,y)}function Qd(c){return c=(c=c.stateNode)&&c.__reactInternalMemoizedMergedChildContext||Kn,lr=Wt.current,St(Wt,c),St(kn,kn.current),!0}function Zy(c,u,g){var y=c.stateNode;if(!y)throw Error(i(169));g?(c=Qy(c,u,lr),y.__reactInternalMemoizedMergedChildContext=c,xt(kn),xt(Wt),St(Wt,c)):xt(kn),St(kn,g)}var Co=Math.clz32?Math.clz32:b8,v8=Math.log,x8=Math.LN2;function b8(c){return c>>>=0,c===0?32:31-(v8(c)/x8|0)|0}var Zd=64,Jd=4194304;function Jc(c){switch(c&-c){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return c&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return c&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return c}}function ef(c,u){var g=c.pendingLanes;if(g===0)return 0;var y=0,S=c.suspendedLanes,P=c.pingedLanes,N=g&268435455;if(N!==0){var Z=N&~S;Z!==0?y=Jc(Z):(P&=N,P!==0&&(y=Jc(P)))}else N=g&~S,N!==0?y=Jc(N):P!==0&&(y=Jc(P));if(y===0)return 0;if(u!==0&&u!==y&&!(u&S)&&(S=y&-y,P=u&-u,S>=P||S===16&&(P&4194240)!==0))return u;if(y&4&&(y|=g&16),u=c.entangledLanes,u!==0)for(c=c.entanglements,u&=y;0g;g++)u.push(c);return u}function eu(c,u,g){c.pendingLanes|=u,u!==536870912&&(c.suspendedLanes=0,c.pingedLanes=0),c=c.eventTimes,u=31-Co(u),c[u]=g}function w8(c,u){var g=c.pendingLanes&~u;c.pendingLanes=u,c.suspendedLanes=0,c.pingedLanes=0,c.expiredLanes&=u,c.mutableReadLanes&=u,c.entangledLanes&=u,u=c.entanglements;var y=c.eventTimes;for(c=c.expirationTimes;0>=N,S-=N,Ds=1<<32-Co(u)+S|g<Et?(zn=ht,ht=null):zn=ht.sibling;var Mt=He(le,ht,pe[Et],We);if(Mt===null){ht===null&&(ht=zn);break}c&&ht&&Mt.alternate===null&&u(le,ht),ee=P(Mt,ee,Et),gt===null?nt=Mt:gt.sibling=Mt,gt=Mt,ht=zn}if(Et===pe.length)return g(le,ht),Qt&&li(le,Et),nt;if(ht===null){for(;EtEt?(zn=ht,ht=null):zn=ht.sibling;var _a=He(le,ht,Mt.value,We);if(_a===null){ht===null&&(ht=zn);break}c&&ht&&_a.alternate===null&&u(le,ht),ee=P(_a,ee,Et),gt===null?nt=_a:gt.sibling=_a,gt=_a,ht=zn}if(Mt.done)return g(le,ht),Qt&&li(le,Et),nt;if(ht===null){for(;!Mt.done;Et++,Mt=pe.next())Mt=pt(le,Mt.value,We),Mt!==null&&(ee=P(Mt,ee,Et),gt===null?nt=Mt:gt.sibling=Mt,gt=Mt);return Qt&&li(le,Et),nt}for(ht=y(le,ht);!Mt.done;Et++,Mt=pe.next())Mt=Kt(ht,le,Et,Mt.value,We),Mt!==null&&(c&&Mt.alternate!==null&&ht.delete(Mt.key===null?Et:Mt.key),ee=P(Mt,ee,Et),gt===null?nt=Mt:gt.sibling=Mt,gt=Mt);return c&&ht.forEach(function(i7){return u(le,i7)}),Qt&&li(le,Et),nt}function $s(le,ee,pe,We){if(typeof pe=="object"&&pe!==null&&pe.type===h&&pe.key===null&&(pe=pe.props.children),typeof pe=="object"&&pe!==null){switch(pe.$$typeof){case f:e:{for(var nt=pe.key,gt=ee;gt!==null;){if(gt.key===nt){if(nt=pe.type,nt===h){if(gt.tag===7){g(le,gt.sibling),ee=S(gt,pe.props.children),ee.return=le,le=ee;break e}}else if(gt.elementType===nt||typeof nt=="object"&&nt!==null&&nt.$$typeof===j&&v2(nt)===gt.type){g(le,gt.sibling),ee=S(gt,pe.props),ee.ref=nu(le,gt,pe),ee.return=le,le=ee;break e}g(le,gt);break}else u(le,gt);gt=gt.sibling}pe.type===h?(ee=mi(pe.props.children,le.mode,We,pe.key),ee.return=le,le=ee):(We=zf(pe.type,pe.key,pe.props,null,le.mode,We),We.ref=nu(le,ee,pe),We.return=le,le=We)}return N(le);case p:e:{for(gt=pe.key;ee!==null;){if(ee.key===gt)if(ee.tag===4&&ee.stateNode.containerInfo===pe.containerInfo&&ee.stateNode.implementation===pe.implementation){g(le,ee.sibling),ee=S(ee,pe.children||[]),ee.return=le,le=ee;break e}else{g(le,ee);break}else u(le,ee);ee=ee.sibling}ee=B0(pe,le.mode,We),ee.return=le,le=ee}return N(le);case j:return gt=pe._init,$s(le,ee,gt(pe._payload),We)}if(Y(pe))return Ft(le,ee,pe,We);if(E(pe))return yr(le,ee,pe,We);pf(le,pe)}return typeof pe=="string"&&pe!==""||typeof pe=="number"?(pe=""+pe,ee!==null&&ee.tag===6?(g(le,ee.sibling),ee=S(ee,pe),ee.return=le,le=ee):(g(le,ee),ee=F0(pe,le.mode,We),ee.return=le,le=ee),N(le)):g(le,ee)}return $s}var ml=x2(!0),b2=x2(!1),ru={},Xr=wt(ru),ou=wt(ru),gl=wt(ru);function Jo(c){if(c===ru)throw Error(i(174));return c}function e0(c,u){St(gl,u),St(ou,c),St(Xr,ru),c=L(u),xt(Xr),St(Xr,c)}function vl(){xt(Xr),xt(ou),xt(gl)}function y2(c){var u=Jo(gl.current),g=Jo(Xr.current);u=X(g,c.type,u),g!==u&&(St(ou,c),St(Xr,u))}function t0(c){ou.current===c&&(xt(Xr),xt(ou))}var on=wt(0);function hf(c){for(var u=c;u!==null;){if(u.tag===13){var g=u.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||Es(g)||pa(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===c)break;for(;u.sibling===null;){if(u.return===null||u.return===c)return null;u=u.return}u.sibling.return=u.return,u=u.sibling}return null}var n0=[];function r0(){for(var c=0;cg?g:4,c(!0);var y=o0.transition;o0.transition={};try{c(!1),u()}finally{It=g,o0.transition=y}}function L2(){return Yr().memoizedState}function A8(c,u,g){var y=wa(c);if(g={lane:y,action:g,hasEagerState:!1,eagerState:null,next:null},z2(c))F2(u,g);else if(g=c2(c,u,g,y),g!==null){var S=Qn();Qr(g,c,y,S),B2(g,u,y)}}function N8(c,u,g){var y=wa(c),S={lane:y,action:g,hasEagerState:!1,eagerState:null,next:null};if(z2(c))F2(u,S);else{var P=c.alternate;if(c.lanes===0&&(P===null||P.lanes===0)&&(P=u.lastRenderedReducer,P!==null))try{var N=u.lastRenderedState,Z=P(N,g);if(S.hasEagerState=!0,S.eagerState=Z,wo(Z,N)){var ce=u.interleaved;ce===null?(S.next=S,Yg(u)):(S.next=ce.next,ce.next=S),u.interleaved=S;return}}catch{}finally{}g=c2(c,u,S,y),g!==null&&(S=Qn(),Qr(g,c,y,S),B2(g,u,y))}}function z2(c){var u=c.alternate;return c===sn||u!==null&&u===sn}function F2(c,u){su=gf=!0;var g=c.pending;g===null?u.next=u:(u.next=g.next,g.next=u),c.pending=u}function B2(c,u,g){if(g&4194240){var y=u.lanes;y&=c.pendingLanes,g|=y,u.lanes=g,Tg(c,g)}}var bf={readContext:qr,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},T8={readContext:qr,useCallback:function(c,u){return es().memoizedState=[c,u===void 0?null:u],c},useContext:qr,useEffect:M2,useImperativeHandle:function(c,u,g){return g=g!=null?g.concat([c]):null,vf(4194308,4,R2.bind(null,u,c),g)},useLayoutEffect:function(c,u){return vf(4194308,4,c,u)},useInsertionEffect:function(c,u){return vf(4,2,c,u)},useMemo:function(c,u){var g=es();return u=u===void 0?null:u,c=c(),g.memoizedState=[c,u],c},useReducer:function(c,u,g){var y=es();return u=g!==void 0?g(u):u,y.memoizedState=y.baseState=u,c={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:c,lastRenderedState:u},y.queue=c,c=c.dispatch=A8.bind(null,sn,c),[y.memoizedState,c]},useRef:function(c){var u=es();return c={current:c},u.memoizedState=c},useState:I2,useDebugValue:d0,useDeferredValue:function(c){return es().memoizedState=c},useTransition:function(){var c=I2(!1),u=c[0];return c=R8.bind(null,c[1]),es().memoizedState=c,[u,c]},useMutableSource:function(){},useSyncExternalStore:function(c,u,g){var y=sn,S=es();if(Qt){if(g===void 0)throw Error(i(407));g=g()}else{if(g=u(),Ln===null)throw Error(i(349));ui&30||S2(y,u,g)}S.memoizedState=g;var P={value:g,getSnapshot:u};return S.queue=P,M2(_2.bind(null,y,P,c),[c]),y.flags|=2048,lu(9,k2.bind(null,y,P,g,u),void 0,null),g},useId:function(){var c=es(),u=Ln.identifierPrefix;if(Qt){var g=Rs,y=Ds;g=(y&~(1<<32-Co(y)-1)).toString(32)+g,u=":"+u+"R"+g,g=au++,0D0&&(u.flags|=128,y=!0,du(S,!1),u.lanes=4194304)}else{if(!y)if(c=hf(P),c!==null){if(u.flags|=128,y=!0,c=c.updateQueue,c!==null&&(u.updateQueue=c,u.flags|=4),du(S,!0),S.tail===null&&S.tailMode==="hidden"&&!P.alternate&&!Qt)return Xn(u),null}else 2*Tn()-S.renderingStartTime>D0&&g!==1073741824&&(u.flags|=128,y=!0,du(S,!1),u.lanes=4194304);S.isBackwards?(P.sibling=u.child,u.child=P):(c=S.last,c!==null?c.sibling=P:u.child=P,S.last=P)}return S.tail!==null?(u=S.tail,S.rendering=u,S.tail=u.sibling,S.renderingStartTime=Tn(),u.sibling=null,c=on.current,St(on,y?c&1|2:c&1),u):(Xn(u),null);case 22:case 23:return $0(),g=u.memoizedState!==null,c!==null&&c.memoizedState!==null!==g&&(u.flags|=8192),g&&u.mode&1?Nr&1073741824&&(Xn(u),de&&u.subtreeFlags&6&&(u.flags|=8192)):Xn(u),null;case 24:return null;case 25:return null}throw Error(i(156,u.tag))}function V8(c,u){switch(Hg(u),u.tag){case 1:return gr(u.type)&&Yd(),c=u.flags,c&65536?(u.flags=c&-65537|128,u):null;case 3:return vl(),xt(kn),xt(Wt),r0(),c=u.flags,c&65536&&!(c&128)?(u.flags=c&-65537|128,u):null;case 5:return t0(u),null;case 13:if(xt(on),c=u.memoizedState,c!==null&&c.dehydrated!==null){if(u.alternate===null)throw Error(i(340));fl()}return c=u.flags,c&65536?(u.flags=c&-65537|128,u):null;case 19:return xt(on),null;case 4:return vl(),null;case 10:return qg(u.type._context),null;case 22:case 23:return $0(),null;case 24:return null;default:return null}}var kf=!1,Yn=!1,U8=typeof WeakSet=="function"?WeakSet:Set,Ge=null;function bl(c,u){var g=c.ref;if(g!==null)if(typeof g=="function")try{g(null)}catch(y){Zt(c,u,y)}else g.current=null}function y0(c,u,g){try{g()}catch(y){Zt(c,u,y)}}var aC=!1;function G8(c,u){for(z(c.containerInfo),Ge=u;Ge!==null;)if(c=Ge,u=c.child,(c.subtreeFlags&1028)!==0&&u!==null)u.return=c,Ge=u;else for(;Ge!==null;){c=Ge;try{var g=c.alternate;if(c.flags&1024)switch(c.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var y=g.memoizedProps,S=g.memoizedState,P=c.stateNode,N=P.getSnapshotBeforeUpdate(c.elementType===c.type?y:ko(c.type,y),S);P.__reactInternalSnapshotBeforeUpdate=N}break;case 3:de&&jt(c.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(Z){Zt(c,c.return,Z)}if(u=c.sibling,u!==null){u.return=c.return,Ge=u;break}Ge=c.return}return g=aC,aC=!1,g}function fu(c,u,g){var y=u.updateQueue;if(y=y!==null?y.lastEffect:null,y!==null){var S=y=y.next;do{if((S.tag&c)===c){var P=S.destroy;S.destroy=void 0,P!==void 0&&y0(u,g,P)}S=S.next}while(S!==y)}}function _f(c,u){if(u=u.updateQueue,u=u!==null?u.lastEffect:null,u!==null){var g=u=u.next;do{if((g.tag&c)===c){var y=g.create;g.destroy=y()}g=g.next}while(g!==u)}}function C0(c){var u=c.ref;if(u!==null){var g=c.stateNode;switch(c.tag){case 5:c=W(g);break;default:c=g}typeof u=="function"?u(c):u.current=c}}function iC(c){var u=c.alternate;u!==null&&(c.alternate=null,iC(u)),c.child=null,c.deletions=null,c.sibling=null,c.tag===5&&(u=c.stateNode,u!==null&&je(u)),c.stateNode=null,c.return=null,c.dependencies=null,c.memoizedProps=null,c.memoizedState=null,c.pendingProps=null,c.stateNode=null,c.updateQueue=null}function lC(c){return c.tag===5||c.tag===3||c.tag===4}function cC(c){e:for(;;){for(;c.sibling===null;){if(c.return===null||lC(c.return))return null;c=c.return}for(c.sibling.return=c.return,c=c.sibling;c.tag!==5&&c.tag!==6&&c.tag!==18;){if(c.flags&2||c.child===null||c.tag===4)continue e;c.child.return=c,c=c.child}if(!(c.flags&2))return c.stateNode}}function w0(c,u,g){var y=c.tag;if(y===5||y===6)c=c.stateNode,u?Rt(g,c,u):Ye(g,c);else if(y!==4&&(c=c.child,c!==null))for(w0(c,u,g),c=c.sibling;c!==null;)w0(c,u,g),c=c.sibling}function S0(c,u,g){var y=c.tag;if(y===5||y===6)c=c.stateNode,u?$e(g,c,u):ge(g,c);else if(y!==4&&(c=c.child,c!==null))for(S0(c,u,g),c=c.sibling;c!==null;)S0(c,u,g),c=c.sibling}var Wn=null,_o=!1;function ns(c,u,g){for(g=g.child;g!==null;)k0(c,u,g),g=g.sibling}function k0(c,u,g){if(Yo&&typeof Yo.onCommitFiberUnmount=="function")try{Yo.onCommitFiberUnmount(tf,g)}catch{}switch(g.tag){case 5:Yn||bl(g,u);case 6:if(de){var y=Wn,S=_o;Wn=null,ns(c,u,g),Wn=y,_o=S,Wn!==null&&(_o?ze(Wn,g.stateNode):ke(Wn,g.stateNode))}else ns(c,u,g);break;case 18:de&&Wn!==null&&(_o?Mn(Wn,g.stateNode):Dg(Wn,g.stateNode));break;case 4:de?(y=Wn,S=_o,Wn=g.stateNode.containerInfo,_o=!0,ns(c,u,g),Wn=y,_o=S):(me&&(y=g.stateNode.containerInfo,S=In(y),Yt(y,S)),ns(c,u,g));break;case 0:case 11:case 14:case 15:if(!Yn&&(y=g.updateQueue,y!==null&&(y=y.lastEffect,y!==null))){S=y=y.next;do{var P=S,N=P.destroy;P=P.tag,N!==void 0&&(P&2||P&4)&&y0(g,u,N),S=S.next}while(S!==y)}ns(c,u,g);break;case 1:if(!Yn&&(bl(g,u),y=g.stateNode,typeof y.componentWillUnmount=="function"))try{y.props=g.memoizedProps,y.state=g.memoizedState,y.componentWillUnmount()}catch(Z){Zt(g,u,Z)}ns(c,u,g);break;case 21:ns(c,u,g);break;case 22:g.mode&1?(Yn=(y=Yn)||g.memoizedState!==null,ns(c,u,g),Yn=y):ns(c,u,g);break;default:ns(c,u,g)}}function uC(c){var u=c.updateQueue;if(u!==null){c.updateQueue=null;var g=c.stateNode;g===null&&(g=c.stateNode=new U8),u.forEach(function(y){var S=t7.bind(null,c,y);g.has(y)||(g.add(y),y.then(S,S))})}}function jo(c,u){var g=u.deletions;if(g!==null)for(var y=0;y";case Pf:return":has("+(P0(c)||"")+")";case If:return'[role="'+c.value+'"]';case Mf:return'"'+c.value+'"';case Ef:return'[data-testname="'+c.value+'"]';default:throw Error(i(365))}}function gC(c,u){var g=[];c=[c,0];for(var y=0;yS&&(S=N),y&=~P}if(y=S,y=Tn()-y,y=(120>y?120:480>y?480:1080>y?1080:1920>y?1920:3e3>y?3e3:4320>y?4320:1960*q8(y/1960))-y,10c?16:c,Ca===null)var y=!1;else{if(c=Ca,Ca=null,Nf=0,bt&6)throw Error(i(331));var S=bt;for(bt|=4,Ge=c.current;Ge!==null;){var P=Ge,N=P.child;if(Ge.flags&16){var Z=P.deletions;if(Z!==null){for(var ce=0;ceTn()-O0?fi(c,0):M0|=g),br(c,u)}function _C(c,u){u===0&&(c.mode&1?(u=Jd,Jd<<=1,!(Jd&130023424)&&(Jd=4194304)):u=1);var g=Qn();c=Zo(c,u),c!==null&&(eu(c,u,g),br(c,g))}function e7(c){var u=c.memoizedState,g=0;u!==null&&(g=u.retryLane),_C(c,g)}function t7(c,u){var g=0;switch(c.tag){case 13:var y=c.stateNode,S=c.memoizedState;S!==null&&(g=S.retryLane);break;case 19:y=c.stateNode;break;default:throw Error(i(314))}y!==null&&y.delete(u),_C(c,g)}var jC;jC=function(c,u,g){if(c!==null)if(c.memoizedProps!==u.pendingProps||kn.current)vr=!0;else{if(!(c.lanes&g)&&!(u.flags&128))return vr=!1,H8(c,u,g);vr=!!(c.flags&131072)}else vr=!1,Qt&&u.flags&1048576&&r2(u,of,u.index);switch(u.lanes=0,u.tag){case 2:var y=u.type;Cf(c,u),c=u.pendingProps;var S=cl(u,Wt.current);hl(u,g),S=a0(null,u,y,c,S,g);var P=i0();return u.flags|=1,typeof S=="object"&&S!==null&&typeof S.render=="function"&&S.$$typeof===void 0?(u.tag=1,u.memoizedState=null,u.updateQueue=null,gr(y)?(P=!0,Qd(u)):P=!1,u.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,Qg(u),S.updater=ff,u.stateNode=S,S._reactInternals=u,Jg(u,y,c,g),u=m0(null,u,y,!0,P,g)):(u.tag=0,Qt&&P&&Bg(u),cr(null,u,S,g),u=u.child),u;case 16:y=u.elementType;e:{switch(Cf(c,u),c=u.pendingProps,S=y._init,y=S(y._payload),u.type=y,S=u.tag=r7(y),c=ko(y,c),S){case 0:u=h0(null,u,y,c,g);break e;case 1:u=Z2(null,u,y,c,g);break e;case 11:u=K2(null,u,y,c,g);break e;case 14:u=q2(null,u,y,ko(y.type,c),g);break e}throw Error(i(306,y,""))}return u;case 0:return y=u.type,S=u.pendingProps,S=u.elementType===y?S:ko(y,S),h0(c,u,y,S,g);case 1:return y=u.type,S=u.pendingProps,S=u.elementType===y?S:ko(y,S),Z2(c,u,y,S,g);case 3:e:{if(J2(u),c===null)throw Error(i(387));y=u.pendingProps,P=u.memoizedState,S=P.element,u2(c,u),df(u,y,null,g);var N=u.memoizedState;if(y=N.element,ye&&P.isDehydrated)if(P={element:y,isDehydrated:!1,cache:N.cache,pendingSuspenseBoundaries:N.pendingSuspenseBoundaries,transitions:N.transitions},u.updateQueue.baseState=P,u.memoizedState=P,u.flags&256){S=xl(Error(i(423)),u),u=eC(c,u,y,g,S);break e}else if(y!==S){S=xl(Error(i(424)),u),u=eC(c,u,y,g,S);break e}else for(ye&&(Kr=qe(u.stateNode.containerInfo),Ar=u,Qt=!0,So=null,tu=!1),g=b2(u,null,y,g),u.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(fl(),y===S){u=Ns(c,u,g);break e}cr(c,u,y,g)}u=u.child}return u;case 5:return y2(u),c===null&&Vg(u),y=u.type,S=u.pendingProps,P=c!==null?c.memoizedProps:null,N=S.children,V(y,S)?N=null:P!==null&&V(y,P)&&(u.flags|=32),Q2(c,u),cr(c,u,N,g),u.child;case 6:return c===null&&Vg(u),null;case 13:return tC(c,u,g);case 4:return e0(u,u.stateNode.containerInfo),y=u.pendingProps,c===null?u.child=ml(u,null,y,g):cr(c,u,y,g),u.child;case 11:return y=u.type,S=u.pendingProps,S=u.elementType===y?S:ko(y,S),K2(c,u,y,S,g);case 7:return cr(c,u,u.pendingProps,g),u.child;case 8:return cr(c,u,u.pendingProps.children,g),u.child;case 12:return cr(c,u,u.pendingProps.children,g),u.child;case 10:e:{if(y=u.type._context,S=u.pendingProps,P=u.memoizedProps,N=S.value,l2(u,y,N),P!==null)if(wo(P.value,N)){if(P.children===S.children&&!kn.current){u=Ns(c,u,g);break e}}else for(P=u.child,P!==null&&(P.return=u);P!==null;){var Z=P.dependencies;if(Z!==null){N=P.child;for(var ce=Z.firstContext;ce!==null;){if(ce.context===y){if(P.tag===1){ce=As(-1,g&-g),ce.tag=2;var Ee=P.updateQueue;if(Ee!==null){Ee=Ee.shared;var Ke=Ee.pending;Ke===null?ce.next=ce:(ce.next=Ke.next,Ke.next=ce),Ee.pending=ce}}P.lanes|=g,ce=P.alternate,ce!==null&&(ce.lanes|=g),Xg(P.return,g,u),Z.lanes|=g;break}ce=ce.next}}else if(P.tag===10)N=P.type===u.type?null:P.child;else if(P.tag===18){if(N=P.return,N===null)throw Error(i(341));N.lanes|=g,Z=N.alternate,Z!==null&&(Z.lanes|=g),Xg(N,g,u),N=P.sibling}else N=P.child;if(N!==null)N.return=P;else for(N=P;N!==null;){if(N===u){N=null;break}if(P=N.sibling,P!==null){P.return=N.return,N=P;break}N=N.return}P=N}cr(c,u,S.children,g),u=u.child}return u;case 9:return S=u.type,y=u.pendingProps.children,hl(u,g),S=qr(S),y=y(S),u.flags|=1,cr(c,u,y,g),u.child;case 14:return y=u.type,S=ko(y,u.pendingProps),S=ko(y.type,S),q2(c,u,y,S,g);case 15:return X2(c,u,u.type,u.pendingProps,g);case 17:return y=u.type,S=u.pendingProps,S=u.elementType===y?S:ko(y,S),Cf(c,u),u.tag=1,gr(y)?(c=!0,Qd(u)):c=!1,hl(u,g),m2(u,y,S),Jg(u,y,S,g),m0(null,u,y,!0,c,g);case 19:return rC(c,u,g);case 22:return Y2(c,u,g)}throw Error(i(156,u.tag))};function PC(c,u){return $g(c,u)}function n7(c,u,g,y){this.tag=c,this.key=g,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=u,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 Zr(c,u,g,y){return new n7(c,u,g,y)}function z0(c){return c=c.prototype,!(!c||!c.isReactComponent)}function r7(c){if(typeof c=="function")return z0(c)?1:0;if(c!=null){if(c=c.$$typeof,c===b)return 11;if(c===_)return 14}return 2}function ka(c,u){var g=c.alternate;return g===null?(g=Zr(c.tag,u,c.key,c.mode),g.elementType=c.elementType,g.type=c.type,g.stateNode=c.stateNode,g.alternate=c,c.alternate=g):(g.pendingProps=u,g.type=c.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=c.flags&14680064,g.childLanes=c.childLanes,g.lanes=c.lanes,g.child=c.child,g.memoizedProps=c.memoizedProps,g.memoizedState=c.memoizedState,g.updateQueue=c.updateQueue,u=c.dependencies,g.dependencies=u===null?null:{lanes:u.lanes,firstContext:u.firstContext},g.sibling=c.sibling,g.index=c.index,g.ref=c.ref,g}function zf(c,u,g,y,S,P){var N=2;if(y=c,typeof c=="function")z0(c)&&(N=1);else if(typeof c=="string")N=5;else e:switch(c){case h:return mi(g.children,S,P,u);case m:N=8,S|=8;break;case v:return c=Zr(12,g,u,S|2),c.elementType=v,c.lanes=P,c;case w:return c=Zr(13,g,u,S),c.elementType=w,c.lanes=P,c;case k:return c=Zr(19,g,u,S),c.elementType=k,c.lanes=P,c;case I:return Ff(g,S,P,u);default:if(typeof c=="object"&&c!==null)switch(c.$$typeof){case x:N=10;break e;case C:N=9;break e;case b:N=11;break e;case _:N=14;break e;case j:N=16,y=null;break e}throw Error(i(130,c==null?c:typeof c,""))}return u=Zr(N,g,u,S),u.elementType=c,u.type=y,u.lanes=P,u}function mi(c,u,g,y){return c=Zr(7,c,y,u),c.lanes=g,c}function Ff(c,u,g,y){return c=Zr(22,c,y,u),c.elementType=I,c.lanes=g,c.stateNode={isHidden:!1},c}function F0(c,u,g){return c=Zr(6,c,null,u),c.lanes=g,c}function B0(c,u,g){return u=Zr(4,c.children!==null?c.children:[],c.key,u),u.lanes=g,u.stateNode={containerInfo:c.containerInfo,pendingChildren:null,implementation:c.implementation},u}function o7(c,u,g,y,S){this.tag=u,this.containerInfo=c,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=re,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ng(0),this.expirationTimes=Ng(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ng(0),this.identifierPrefix=y,this.onRecoverableError=S,ye&&(this.mutableSourceEagerHydrationData=null)}function IC(c,u,g,y,S,P,N,Z,ce){return c=new o7(c,u,g,Z,ce),u===1?(u=1,P===!0&&(u|=8)):u=0,P=Zr(3,null,null,u),c.current=P,P.stateNode=c,P.memoizedState={element:y,isDehydrated:g,cache:null,transitions:null,pendingSuspenseBoundaries:null},Qg(P),c}function EC(c){if(!c)return Kn;c=c._reactInternals;e:{if(A(c)!==c||c.tag!==1)throw Error(i(170));var u=c;do{switch(u.tag){case 3:u=u.stateNode.context;break e;case 1:if(gr(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break e}}u=u.return}while(u!==null);throw Error(i(171))}if(c.tag===1){var g=c.type;if(gr(g))return Qy(c,g,u)}return u}function MC(c){var u=c._reactInternals;if(u===void 0)throw typeof c.render=="function"?Error(i(188)):(c=Object.keys(c).join(","),Error(i(268,c)));return c=K(u),c===null?null:c.stateNode}function OC(c,u){if(c=c.memoizedState,c!==null&&c.dehydrated!==null){var g=c.retryLane;c.retryLane=g!==0&&g=Ee&&P>=pt&&S<=Ke&&N<=He){c.splice(u,1);break}else if(y!==Ee||g.width!==ce.width||HeN){if(!(P!==pt||g.height!==ce.height||KeS)){Ee>y&&(ce.width+=Ee-y,ce.x=y),KeP&&(ce.height+=pt-P,ce.y=P),Heg&&(g=N)),N ")+` - -No matching component was found for: - `)+c.join(" > ")}return null},n.getPublicRootInstance=function(c){if(c=c.current,!c.child)return null;switch(c.child.tag){case 5:return W(c.child.stateNode);default:return c.child.stateNode}},n.injectIntoDevTools=function(c){if(c={bundleType:c.bundleType,version:c.version,rendererPackageName:c.rendererPackageName,rendererConfig:c.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:l.ReactCurrentDispatcher,findHostInstanceByFiber:s7,findFiberByHostInstance:c.findFiberByHostInstance||a7,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")c=!1;else{var u=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(u.isDisabled||!u.supportsFiber)c=!0;else{try{tf=u.inject(c),Yo=u}catch{}c=!!u.checkDCE}}return c},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(c,u,g,y){if(!Ue)throw Error(i(363));c=I0(c,u);var S=mt(c,g,y).disconnect;return{disconnect:function(){S()}}},n.registerMutableSourceForHydration=function(c,u){var g=u._getVersion;g=g(u._source),c.mutableSourceEagerHydrationData==null?c.mutableSourceEagerHydrationData=[u,g]:c.mutableSourceEagerHydrationData.push(u,g)},n.runWithPriority=function(c,u){var g=It;try{return It=c,u()}finally{It=g}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(c,u,g,y){var S=u.current,P=Qn(),N=wa(S);return g=EC(g),u.context===null?u.context=g:u.pendingContext=g,u=As(P,N),u.payload={element:c},y=y===void 0?null:y,y!==null&&(u.callback=y),c=ba(S,u,N),c!==null&&(Qr(c,S,N,P),uf(c,S,N)),N},n};s8.exports=Xpe;var Ype=s8.exports;const Qpe=Oc(Ype);var a8={exports:{}},sl={};/** - * @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. - */sl.ConcurrentRoot=1;sl.ContinuousEventPriority=4;sl.DefaultEventPriority=16;sl.DiscreteEventPriority=1;sl.IdleEventPriority=536870912;sl.LegacyRoot=0;a8.exports=sl;var i8=a8.exports;const ij={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let lj=!1,cj=!1;const Ky=".react-konva-event",Zpe=`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 -`,Jpe=`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 -`,ehe={};function Mg(e,t,n=ehe){if(!lj&&"zIndex"in t&&(console.warn(Jpe),lj=!0),!cj&&t.draggable){var r=t.x!==void 0||t.y!==void 0,o=t.onDragEnd||t.onDragMove;r&&!o&&(console.warn(Zpe),cj=!0)}for(var s in n)if(!ij[s]){var i=s.slice(0,2)==="on",l=n[s]!==t[s];if(i&&l){var f=s.substr(2).toLowerCase();f.substr(0,7)==="content"&&(f="content"+f.substr(7,1).toUpperCase()+f.substr(8)),e.off(f,n[s])}var p=!t.hasOwnProperty(s);p&&e.setAttr(s,void 0)}var h=t._useStrictMode,m={},v=!1;const x={};for(var s in t)if(!ij[s]){var i=s.slice(0,2)==="on",C=n[s]!==t[s];if(i&&C){var f=s.substr(2).toLowerCase();f.substr(0,7)==="content"&&(f="content"+f.substr(7,1).toUpperCase()+f.substr(8)),t[s]&&(x[f]=t[s])}!i&&(t[s]!==n[s]||h&&t[s]!==e.getAttr(s))&&(v=!0,m[s]=t[s])}v&&(e.setAttrs(m),si(e));for(var f in x)e.on(f+Ky,x[f])}function si(e){if(!n9.Konva.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const l8={},the={};dd.Node.prototype._applyProps=Mg;function nhe(e,t){if(typeof t=="string"){console.error(`Do not use plain text as child of Konva.Node. You are using text: ${t}`);return}e.add(t),si(e)}function rhe(e,t,n){let r=dd[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=dd.Group);const o={},s={};for(var i in t){var l=i.slice(0,2)==="on";l?s[i]=t[i]:o[i]=t[i]}const f=new r(o);return Mg(f,s),f}function ohe(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function she(e,t,n){return!1}function ahe(e){return e}function ihe(){return null}function lhe(){return null}function che(e,t,n,r){return the}function uhe(){}function dhe(e){}function fhe(e,t){return!1}function phe(){return l8}function hhe(){return l8}const mhe=setTimeout,ghe=clearTimeout,vhe=-1;function xhe(e,t){return!1}const bhe=!1,yhe=!0,Che=!0;function whe(e,t){t.parent===e?t.moveToTop():e.add(t),si(e)}function She(e,t){t.parent===e?t.moveToTop():e.add(t),si(e)}function c8(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),si(e)}function khe(e,t,n){c8(e,t,n)}function _he(e,t){t.destroy(),t.off(Ky),si(e)}function jhe(e,t){t.destroy(),t.off(Ky),si(e)}function Phe(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function Ihe(e,t,n){}function Ehe(e,t,n,r,o){Mg(e,o,r)}function Mhe(e){e.hide(),si(e)}function Ohe(e){}function Dhe(e,t){(t.visible==null||t.visible)&&e.show()}function Rhe(e,t){}function Ahe(e){}function Nhe(){}const The=()=>i8.DefaultEventPriority,$he=Object.freeze(Object.defineProperty({__proto__:null,appendChild:whe,appendChildToContainer:She,appendInitialChild:nhe,cancelTimeout:ghe,clearContainer:Ahe,commitMount:Ihe,commitTextUpdate:Phe,commitUpdate:Ehe,createInstance:rhe,createTextInstance:ohe,detachDeletedInstance:Nhe,finalizeInitialChildren:she,getChildHostContext:hhe,getCurrentEventPriority:The,getPublicInstance:ahe,getRootHostContext:phe,hideInstance:Mhe,hideTextInstance:Ohe,idlePriority:Ip.unstable_IdlePriority,insertBefore:c8,insertInContainerBefore:khe,isPrimaryRenderer:bhe,noTimeout:vhe,now:Ip.unstable_now,prepareForCommit:ihe,preparePortalMount:lhe,prepareUpdate:che,removeChild:_he,removeChildFromContainer:jhe,resetAfterCommit:uhe,resetTextContent:dhe,run:Ip.unstable_runWithPriority,scheduleTimeout:mhe,shouldDeprioritizeSubtree:fhe,shouldSetTextContent:xhe,supportsMutation:Che,unhideInstance:Dhe,unhideTextInstance:Rhe,warnsIfNotActing:yhe},Symbol.toStringTag,{value:"Module"}));var Lhe=Object.defineProperty,zhe=Object.defineProperties,Fhe=Object.getOwnPropertyDescriptors,uj=Object.getOwnPropertySymbols,Bhe=Object.prototype.hasOwnProperty,Hhe=Object.prototype.propertyIsEnumerable,dj=(e,t,n)=>t in e?Lhe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fj=(e,t)=>{for(var n in t||(t={}))Bhe.call(t,n)&&dj(e,n,t[n]);if(uj)for(var n of uj(t))Hhe.call(t,n)&&dj(e,n,t[n]);return e},Whe=(e,t)=>zhe(e,Fhe(t));function u8(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const o=u8(r,t,n);if(o)return o;r=t?null:r.sibling}}function d8(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const qy=d8(d.createContext(null));class f8 extends d.Component{render(){return d.createElement(qy.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:pj,ReactCurrentDispatcher:hj}=d.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function Vhe(){const e=d.useContext(qy);if(e===null)throw new Error("its-fine: useFiber must be called within a !");const t=d.useId();return d.useMemo(()=>{for(const r of[pj==null?void 0:pj.current,e,e==null?void 0:e.alternate]){if(!r)continue;const o=u8(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 Uhe(){var e,t;const n=Vhe(),[r]=d.useState(()=>new Map);r.clear();let o=n;for(;o;){const s=(e=o.type)==null?void 0:e._context;s&&s!==qy&&!r.has(s)&&r.set(s,(t=hj==null?void 0:hj.current)==null?void 0:t.readContext(d8(s))),o=o.return}return r}function Ghe(){const e=Uhe();return d.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>r=>d.createElement(t,null,d.createElement(n.Provider,Whe(fj({},r),{value:e.get(n)}))),t=>d.createElement(f8,fj({},t))),[e])}function Khe(e){const t=H.useRef({});return H.useLayoutEffect(()=>{t.current=e}),H.useLayoutEffect(()=>()=>{t.current={}},[]),t.current}const qhe=e=>{const t=H.useRef(),n=H.useRef(),r=H.useRef(),o=Khe(e),s=Ghe(),i=l=>{const{forwardedRef:f}=e;f&&(typeof f=="function"?f(l):f.current=l)};return H.useLayoutEffect(()=>(n.current=new dd.Stage({width:e.width,height:e.height,container:t.current}),i(n.current),r.current=Tu.createContainer(n.current,i8.LegacyRoot,!1,null),Tu.updateContainer(H.createElement(s,{},e.children),r.current),()=>{dd.isBrowser&&(i(null),Tu.updateContainer(null,r.current,null),n.current.destroy())}),[]),H.useLayoutEffect(()=>{i(n.current),Mg(n.current,e,o),Tu.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})},Iu="Layer",sa="Group",ks="Rect",vi="Circle",lm="Line",p8="Image",Xhe="Transformer",Tu=Qpe($he);Tu.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:H.version,rendererPackageName:"react-konva"});const Yhe=H.forwardRef((e,t)=>H.createElement(f8,{},H.createElement(qhe,{...e,forwardedRef:t}))),Qhe=ae([$t,bo],(e,t)=>{const{tool:n,isMovingBoundingBox:r}=e;return{tool:n,isStaging:t,isMovingBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:kt}}),Zhe=()=>{const e=te(),{tool:t,isStaging:n,isMovingBoundingBox:r}=F(Qhe);return{handleDragStart:d.useCallback(()=>{(t==="move"||n)&&!r&&e(qp(!0))},[e,r,n,t]),handleDragMove:d.useCallback(o=>{if(!((t==="move"||n)&&!r))return;const s={x:o.target.x(),y:o.target.y()};e(u3(s))},[e,r,n,t]),handleDragEnd:d.useCallback(()=>{(t==="move"||n)&&!r&&e(qp(!1))},[e,r,n,t])}},Jhe=ae([$t,wn,bo],(e,t,n)=>{const{cursorPosition:r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isMaskEnabled:l,shouldSnapToGrid:f}=e;return{activeTabName:t,isCursorOnCanvas:!!r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isStaging:n,isMaskEnabled:l,shouldSnapToGrid:f}},{memoizeOptions:{resultEqualityCheck:kt}}),eme=()=>{const e=te(),{activeTabName:t,shouldShowBoundingBox:n,tool:r,isStaging:o,isMaskEnabled:s,shouldSnapToGrid:i}=F(Jhe),l=d.useRef(null),f=d3(),p=()=>e(f3());Qe(["shift+c"],()=>{p()},{enabled:()=>!o,preventDefault:!0},[]);const h=()=>e(Xx(!s));Qe(["h"],()=>{h()},{enabled:()=>!o,preventDefault:!0},[s]),Qe(["n"],()=>{e(Xp(!i))},{enabled:!0,preventDefault:!0},[i]),Qe("esc",()=>{e(r9())},{enabled:()=>!0,preventDefault:!0}),Qe("shift+h",()=>{e(o9(!n))},{enabled:()=>!o,preventDefault:!0},[t,n]),Qe(["space"],m=>{m.repeat||(f==null||f.container().focus(),r!=="move"&&(l.current=r,e(Yl("move"))),r==="move"&&l.current&&l.current!=="move"&&(e(Yl(l.current)),l.current="move"))},{keyup:!0,keydown:!0,preventDefault:!0},[r,l])},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}},h8=()=>{const e=te(),t=u1(),n=d3();return{updateColorUnderCursor:()=>{if(!n||!t)return;const r=n.getPointerPosition();if(!r)return;const o=s9.pixelRatio,[s,i,l,f]=t.getContext().getImageData(r.x*o,r.y*o,1,1).data;f&&s&&i&&l&&e(a9({r:s,g:i,b:l,a:f}))},commitColorUnderCursor:()=>{e(i9())}}},tme=ae([wn,$t,bo],(e,t,n)=>{const{tool:r}=t;return{tool:r,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:kt}}),nme=e=>{const t=te(),{tool:n,isStaging:r}=F(tme),{commitColorUnderCursor:o}=h8();return d.useCallback(s=>{if(!e.current)return;if(e.current.container().focus(),n==="move"||r){t(qp(!0));return}if(n==="colorPicker"){o();return}const i=Xy(e.current);i&&(s.evt.preventDefault(),t(p3(!0)),t(l9([i.x,i.y])))},[e,n,r,t,o])},rme=ae([wn,$t,bo],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:kt}}),ome=(e,t,n)=>{const r=te(),{isDrawing:o,tool:s,isStaging:i}=F(rme),{updateColorUnderCursor:l}=h8();return d.useCallback(()=>{if(!e.current)return;const f=Xy(e.current);if(f){if(r(c9(f)),n.current=f,s==="colorPicker"){l();return}!o||s==="move"||i||(t.current=!0,r(h3([f.x,f.y])))}},[t,r,o,i,n,e,s,l])},sme=()=>{const e=te();return d.useCallback(()=>{e(u9())},[e])},ame=ae([wn,$t,bo],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:kt}}),ime=(e,t)=>{const n=te(),{tool:r,isDrawing:o,isStaging:s}=F(ame);return d.useCallback(()=>{if(r==="move"||s){n(qp(!1));return}if(!t.current&&o&&e.current){const i=Xy(e.current);if(!i)return;n(h3([i.x,i.y]))}else t.current=!1;n(p3(!1))},[t,n,o,s,e,r])},lme=ae([$t],e=>{const{isMoveStageKeyHeld:t,stageScale:n}=e;return{isMoveStageKeyHeld:t,stageScale:n}},{memoizeOptions:{resultEqualityCheck:kt}}),cme=e=>{const t=te(),{isMoveStageKeyHeld:n,stageScale:r}=F(lme);return d.useCallback(o=>{if(!e.current||n)return;o.evt.preventDefault();const s=e.current.getPointerPosition();if(!s)return;const i={x:(s.x-e.current.x())/r,y:(s.y-e.current.y())/r};let l=o.evt.deltaY;o.evt.ctrlKey&&(l=-l);const f=Ri(r*p9**l,f9,d9),p={x:s.x-i.x*f,y:s.y-i.y*f};t(h9(f)),t(u3(p))},[e,n,r,t])},ume=ae($t,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:kt}}),dme=()=>{const{boundingBoxCoordinates:e,boundingBoxDimensions:t,shouldDarkenOutsideBoundingBox:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=F(ume);return a.jsxs(sa,{children:[a.jsx(ks,{offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fill:"rgba(0,0,0,0.4)",listening:!1,visible:n}),a.jsx(ks,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,visible:n,globalCompositeOperation:"destination-out"})]})},fme=d.memo(dme),pme=ae([$t],e=>{const{stageScale:t,stageCoordinates:n,stageDimensions:r}=e;return{stageScale:t,stageCoordinates:n,stageDimensions:r}},{memoizeOptions:{resultEqualityCheck:kt}}),hme=()=>{const{stageScale:e,stageCoordinates:t,stageDimensions:n}=F(pme),{colorMode:r}=ia(),[o,s]=d.useState([]),[i,l]=ds("colors",["base.800","base.200"]),f=d.useCallback(p=>p/e,[e]);return d.useLayoutEffect(()=>{const{width:p,height:h}=n,{x:m,y:v}=t,x={x1:0,y1:0,x2:p,y2:h,offset:{x:f(m),y:f(v)}},C={x:Math.ceil(f(m)/64)*64,y:Math.ceil(f(v)/64)*64},b={x1:-C.x,y1:-C.y,x2:f(p)-C.x+64,y2:f(h)-C.y+64},k={x1:Math.min(x.x1,b.x1),y1:Math.min(x.y1,b.y1),x2:Math.max(x.x2,b.x2),y2:Math.max(x.y2,b.y2)},_=k.x2-k.x1,j=k.y2-k.y1,I=Math.round(_/64)+1,M=Math.round(j/64)+1,E=Cw(0,I).map(D=>a.jsx(lm,{x:k.x1+D*64,y:k.y1,points:[0,0,0,j],stroke:r==="dark"?i:l,strokeWidth:1},`x_${D}`)),O=Cw(0,M).map(D=>a.jsx(lm,{x:k.x1,y:k.y1+D*64,points:[0,0,_,0],stroke:r==="dark"?i:l,strokeWidth:1},`y_${D}`));s(E.concat(O))},[e,t,n,f,r,i,l]),a.jsx(sa,{children:o})},mme=d.memo(hme),gme=ae([vo,$t],(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:kt}}),vme=e=>{const{...t}=e,{progressImage:n,boundingBox:r}=F(gme),[o,s]=d.useState(null);return d.useEffect(()=>{if(!n)return;const i=new Image;i.onload=()=>{s(i)},i.src=n.dataURL},[n]),n&&r&&o?a.jsx(p8,{x:r.x,y:r.y,width:r.width,height:r.height,image:o,listening:!1,...t}):null},xme=d.memo(vme),Di=e=>{const{r:t,g:n,b:r,a:o}=e;return`rgba(${t}, ${n}, ${r}, ${o})`},bme=ae($t,e=>{const{maskColor:t,stageCoordinates:n,stageDimensions:r,stageScale:o}=e;return{stageCoordinates:n,stageDimensions:r,stageScale:o,maskColorString:Di(t)}}),mj=e=>`data:image/svg+xml;utf8, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -`.replaceAll("black",e),yme=e=>{const{...t}=e,{maskColorString:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=F(bme),[i,l]=d.useState(null),[f,p]=d.useState(0),h=d.useRef(null),m=d.useCallback(()=>{p(f+1),setTimeout(m,500)},[f]);return d.useEffect(()=>{if(i)return;const v=new Image;v.onload=()=>{l(v)},v.src=mj(n)},[i,n]),d.useEffect(()=>{i&&(i.src=mj(n))},[i,n]),d.useEffect(()=>{const v=setInterval(()=>p(x=>(x+1)%5),50);return()=>clearInterval(v)},[]),!i||!wl(r.x)||!wl(r.y)||!wl(s)||!wl(o.width)||!wl(o.height)?null:a.jsx(ks,{ref:h,offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fillPatternImage:i,fillPatternOffsetY:wl(f)?f:0,fillPatternRepeat:"repeat",fillPatternScale:{x:1/s,y:1/s},listening:!0,globalCompositeOperation:"source-in",...t})},Cme=d.memo(yme),wme=ae([$t],e=>({objects:e.layerState.objects}),{memoizeOptions:{resultEqualityCheck:kt}}),Sme=e=>{const{...t}=e,{objects:n}=F(wme);return a.jsx(sa,{listening:!1,...t,children:n.filter(m9).map((r,o)=>a.jsx(lm,{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))})},kme=d.memo(Sme);var xi=d,_me=function(t,n,r){const o=xi.useRef("loading"),s=xi.useRef(),[i,l]=xi.useState(0),f=xi.useRef(),p=xi.useRef(),h=xi.useRef();return(f.current!==t||p.current!==n||h.current!==r)&&(o.current="loading",s.current=void 0,f.current=t,p.current=n,h.current=r),xi.useLayoutEffect(function(){if(!t)return;var m=document.createElement("img");function v(){o.current="loaded",s.current=m,l(Math.random())}function x(){o.current="failed",s.current=void 0,l(Math.random())}return m.addEventListener("load",v),m.addEventListener("error",x),n&&(m.crossOrigin=n),r&&(m.referrerPolicy=r),m.src=t,function(){m.removeEventListener("load",v),m.removeEventListener("error",x)}},[t,n,r]),[s.current,o.current]};const jme=Oc(_me),Pme=e=>{const{width:t,height:n,x:r,y:o,imageName:s}=e.canvasImage,{currentData:i,isError:l}=po(s??zr.skipToken),[f]=jme((i==null?void 0:i.image_url)??"",g9.get()?"use-credentials":"anonymous");return l?a.jsx(ks,{x:r,y:o,width:t,height:n,fill:"red"}):a.jsx(p8,{x:r,y:o,image:f,listening:!1})},m8=d.memo(Pme),Ime=ae([$t],e=>{const{layerState:{objects:t}}=e;return{objects:t}},{memoizeOptions:{resultEqualityCheck:kt}}),Eme=()=>{const{objects:e}=F(Ime);return e?a.jsx(sa,{name:"outpainting-objects",listening:!1,children:e.map((t,n)=>{if(v9(t))return a.jsx(m8,{canvasImage:t},n);if(x9(t)){const r=a.jsx(lm,{points:t.points,stroke:t.color?Di(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(b9(t))return a.jsx(ks,{x:t.x,y:t.y,width:t.width,height:t.height,fill:Di(t.color)},n);if(y9(t))return a.jsx(ks,{x:t.x,y:t.y,width:t.width,height:t.height,fill:"rgb(255, 255, 255)",globalCompositeOperation:"destination-out"},n)}})}):null},Mme=d.memo(Eme),Ome=ae([$t],e=>{const{layerState:t,shouldShowStagingImage:n,shouldShowStagingOutline:r,boundingBoxCoordinates:{x:o,y:s},boundingBoxDimensions:{width:i,height:l}}=e,{selectedImageIndex:f,images:p}=t.stagingArea;return{currentStagingAreaImage:p.length>0&&f!==void 0?p[f]:void 0,isOnFirstImage:f===0,isOnLastImage:f===p.length-1,shouldShowStagingImage:n,shouldShowStagingOutline:r,x:o,y:s,width:i,height:l}},{memoizeOptions:{resultEqualityCheck:kt}}),Dme=e=>{const{...t}=e,{currentStagingAreaImage:n,shouldShowStagingImage:r,shouldShowStagingOutline:o,x:s,y:i,width:l,height:f}=F(Ome);return a.jsxs(sa,{...t,children:[r&&n&&a.jsx(m8,{canvasImage:n}),o&&a.jsxs(sa,{children:[a.jsx(ks,{x:s,y:i,width:l,height:f,strokeWidth:1,stroke:"white",strokeScaleEnabled:!1}),a.jsx(ks,{x:s,y:i,width:l,height:f,dash:[4,4],strokeWidth:1,stroke:"black",strokeScaleEnabled:!1})]})]})},Rme=d.memo(Dme),Ame=ae([$t],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:kt}}),Nme=()=>{const e=te(),{isOnFirstImage:t,isOnLastImage:n,currentStagingAreaImage:r,shouldShowStagingImage:o,sessionId:s}=F(Ame),{t:i}=we(),l=d.useCallback(()=>{e(mw(!0))},[e]),f=d.useCallback(()=>{e(mw(!1))},[e]);Qe(["left"],()=>{p()},{enabled:()=>!0,preventDefault:!0}),Qe(["right"],()=>{h()},{enabled:()=>!0,preventDefault:!0}),Qe(["enter"],()=>{m()},{enabled:()=>!0,preventDefault:!0});const p=d.useCallback(()=>e(C9()),[e]),h=d.useCallback(()=>e(w9()),[e]),m=d.useCallback(()=>e(S9(s)),[e,s]),{data:v}=po((r==null?void 0:r.imageName)??zr.skipToken);return r?a.jsx(T,{pos:"absolute",bottom:4,w:"100%",align:"center",justify:"center",onMouseOver:l,onMouseOut:f,children:a.jsxs(pn,{isAttached:!0,borderRadius:"base",shadow:"dark-lg",children:[a.jsx(Te,{tooltip:`${i("unifiedCanvas.previous")} (Left)`,"aria-label":`${i("unifiedCanvas.previous")} (Left)`,icon:a.jsx(rZ,{}),onClick:p,colorScheme:"accent",isDisabled:t}),a.jsx(Te,{tooltip:`${i("unifiedCanvas.next")} (Right)`,"aria-label":`${i("unifiedCanvas.next")} (Right)`,icon:a.jsx(oZ,{}),onClick:h,colorScheme:"accent",isDisabled:n}),a.jsx(Te,{tooltip:`${i("unifiedCanvas.accept")} (Enter)`,"aria-label":`${i("unifiedCanvas.accept")} (Enter)`,icon:a.jsx(kE,{}),onClick:m,colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.showHide"),"aria-label":i("unifiedCanvas.showHide"),"data-alert":!o,icon:o?a.jsx(bZ,{}):a.jsx(xZ,{}),onClick:()=>e(k9(!o)),colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.saveToGallery"),"aria-label":i("unifiedCanvas.saveToGallery"),isDisabled:!v||!v.is_intermediate,icon:a.jsx(eg,{}),onClick:()=>{v&&e(_9({imageDTO:v}))},colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.discardAll"),"aria-label":i("unifiedCanvas.discardAll"),icon:a.jsx(tl,{style:{transform:"rotate(45deg)"}}),onClick:()=>e(j9()),colorScheme:"error",fontSize:20})]})}):null},Tme=d.memo(Nme),$me=()=>{const e=F(l=>l.canvas.layerState),t=F(l=>l.canvas.boundingBoxCoordinates),n=F(l=>l.canvas.boundingBoxDimensions),r=F(l=>l.canvas.isMaskEnabled),o=F(l=>l.canvas.shouldPreserveMaskedArea),[s,i]=d.useState();return d.useEffect(()=>{i(void 0)},[e,t,n,r,o]),VZ(async()=>{const l=await P9(e,t,n,r,o);if(!l)return;const{baseImageData:f,maskImageData:p}=l,h=I9(f,p);i(h)},1e3,[e,t,n,r,o]),s},Lme={txt2img:"Text to Image",img2img:"Image to Image",inpaint:"Inpaint",outpaint:"Inpaint"},zme=()=>{const e=$me();return a.jsxs(Ie,{children:["Mode: ",e?Lme[e]:"..."]})},Fme=d.memo(zme),ql=e=>Math.round(e*100)/100,Bme=ae([$t],e=>{const{cursorPosition:t}=e,{cursorX:n,cursorY:r}=t?{cursorX:t.x,cursorY:t.y}:{cursorX:-1,cursorY:-1};return{cursorCoordinatesString:`(${ql(n)}, ${ql(r)})`}},{memoizeOptions:{resultEqualityCheck:kt}});function Hme(){const{cursorCoordinatesString:e}=F(Bme),{t}=we();return a.jsx(Ie,{children:`${t("unifiedCanvas.cursorPosition")}: ${e}`})}const Ox="var(--invokeai-colors-warning-500)",Wme=ae([$t],e=>{const{stageDimensions:{width:t,height:n},stageCoordinates:{x:r,y:o},boundingBoxDimensions:{width:s,height:i},scaledBoundingBoxDimensions:{width:l,height:f},boundingBoxCoordinates:{x:p,y:h},stageScale:m,shouldShowCanvasDebugInfo:v,layer:x,boundingBoxScaleMethod:C,shouldPreserveMaskedArea:b}=e;let w="inherit";return(C==="none"&&(s<512||i<512)||C==="manual"&&l*f<512*512)&&(w=Ox),{activeLayerColor:x==="mask"?Ox:"inherit",activeLayerString:x.charAt(0).toUpperCase()+x.slice(1),boundingBoxColor:w,boundingBoxCoordinatesString:`(${ql(p)}, ${ql(h)})`,boundingBoxDimensionsString:`${s}×${i}`,scaledBoundingBoxDimensionsString:`${l}×${f}`,canvasCoordinatesString:`${ql(r)}×${ql(o)}`,canvasDimensionsString:`${t}×${n}`,canvasScaleString:Math.round(m*100),shouldShowCanvasDebugInfo:v,shouldShowBoundingBox:C!=="auto",shouldShowScaledBoundingBox:C!=="none",shouldPreserveMaskedArea:b}},{memoizeOptions:{resultEqualityCheck:kt}}),Vme=()=>{const{activeLayerColor:e,activeLayerString:t,boundingBoxColor:n,boundingBoxCoordinatesString:r,boundingBoxDimensionsString:o,scaledBoundingBoxDimensionsString:s,shouldShowScaledBoundingBox:i,canvasCoordinatesString:l,canvasDimensionsString:f,canvasScaleString:p,shouldShowCanvasDebugInfo:h,shouldShowBoundingBox:m,shouldPreserveMaskedArea:v}=F(Wme),{t:x}=we();return a.jsxs(T,{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(Fme,{}),a.jsx(Ie,{style:{color:e},children:`${x("unifiedCanvas.activeLayer")}: ${t}`}),a.jsx(Ie,{children:`${x("unifiedCanvas.canvasScale")}: ${p}%`}),v&&a.jsx(Ie,{style:{color:Ox},children:"Preserve Masked Area: On"}),m&&a.jsx(Ie,{style:{color:n},children:`${x("unifiedCanvas.boundingBox")}: ${o}`}),i&&a.jsx(Ie,{style:{color:n},children:`${x("unifiedCanvas.scaledBoundingBox")}: ${s}`}),h&&a.jsxs(a.Fragment,{children:[a.jsx(Ie,{children:`${x("unifiedCanvas.boundingBoxPosition")}: ${r}`}),a.jsx(Ie,{children:`${x("unifiedCanvas.canvasDimensions")}: ${f}`}),a.jsx(Ie,{children:`${x("unifiedCanvas.canvasPosition")}: ${l}`}),a.jsx(Hme,{})]})]})},Ume=d.memo(Vme),Gme=ae([xe],({canvas:e,generation:t})=>{const{boundingBoxCoordinates:n,boundingBoxDimensions:r,stageScale:o,isDrawing:s,isTransformingBoundingBox:i,isMovingBoundingBox:l,tool:f,shouldSnapToGrid:p}=e,{aspectRatio:h}=t;return{boundingBoxCoordinates:n,boundingBoxDimensions:r,isDrawing:s,isMovingBoundingBox:l,isTransformingBoundingBox:i,stageScale:o,shouldSnapToGrid:p,tool:f,hitStrokeWidth:20/o,aspectRatio:h}},{memoizeOptions:{resultEqualityCheck:kt}}),Kme=e=>{const{...t}=e,n=te(),{boundingBoxCoordinates:r,boundingBoxDimensions:o,isDrawing:s,isMovingBoundingBox:i,isTransformingBoundingBox:l,stageScale:f,shouldSnapToGrid:p,tool:h,hitStrokeWidth:m,aspectRatio:v}=F(Gme),x=d.useRef(null),C=d.useRef(null),[b,w]=d.useState(!1);d.useEffect(()=>{var B;!x.current||!C.current||(x.current.nodes([C.current]),(B=x.current.getLayer())==null||B.batchDraw())},[]);const k=64*f;Qe("N",()=>{n(Xp(!p))});const _=d.useCallback(B=>{if(!p){n(q0({x:Math.floor(B.target.x()),y:Math.floor(B.target.y())}));return}const U=B.target.x(),Y=B.target.y(),W=fr(U,64),L=fr(Y,64);B.target.x(W),B.target.y(L),n(q0({x:W,y:L}))},[n,p]),j=d.useCallback(()=>{if(!C.current)return;const B=C.current,U=B.scaleX(),Y=B.scaleY(),W=Math.round(B.width()*U),L=Math.round(B.height()*Y),X=Math.round(B.x()),z=Math.round(B.y());if(v){const q=fr(W/v,64);n(Ao({width:W,height:q}))}else n(Ao({width:W,height:L}));n(q0({x:p?Eu(X,64):X,y:p?Eu(z,64):z})),B.scaleX(1),B.scaleY(1)},[n,p,v]),I=d.useCallback((B,U,Y)=>{const W=B.x%k,L=B.y%k;return{x:Eu(U.x,k)+W,y:Eu(U.y,k)+L}},[k]),M=()=>{n(X0(!0))},E=()=>{n(X0(!1)),n(Y0(!1)),n(Uf(!1)),w(!1)},O=()=>{n(Y0(!0))},D=()=>{n(X0(!1)),n(Y0(!1)),n(Uf(!1)),w(!1)},A=()=>{w(!0)},R=()=>{!l&&!i&&w(!1)},$=()=>{n(Uf(!0))},K=()=>{n(Uf(!1))};return a.jsxs(sa,{...t,children:[a.jsx(ks,{height:o.height,width:o.width,x:r.x,y:r.y,onMouseEnter:$,onMouseOver:$,onMouseLeave:K,onMouseOut:K}),a.jsx(ks,{draggable:!0,fillEnabled:!1,height:o.height,hitStrokeWidth:m,listening:!s&&h==="move",onDragStart:O,onDragEnd:D,onDragMove:_,onMouseDown:O,onMouseOut:R,onMouseOver:A,onMouseEnter:A,onMouseUp:D,onTransform:j,onTransformEnd:E,ref:C,stroke:b?"rgba(255,255,255,0.7)":"white",strokeWidth:(b?8:1)/f,width:o.width,x:r.x,y:r.y}),a.jsx(Xhe,{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:O,onDragEnd:D,onMouseDown:M,onMouseUp:E,onTransformEnd:E,ref:x,rotateEnabled:!1})]})},qme=d.memo(Kme),Xme=ae($t,e=>{const{cursorPosition:t,brushSize:n,colorPickerColor:r,maskColor:o,brushColor:s,tool:i,layer:l,shouldShowBrush:f,isMovingBoundingBox:p,isTransformingBoundingBox:h,stageScale:m,stageDimensions:v,boundingBoxCoordinates:x,boundingBoxDimensions:C,shouldRestrictStrokesToBox:b}=e,w=b?{clipX:x.x,clipY:x.y,clipWidth:C.width,clipHeight:C.height}:{};return{cursorPosition:t,brushX:t?t.x:v.width/2,brushY:t?t.y:v.height/2,radius:n/2,colorPickerOuterRadius:gw/m,colorPickerInnerRadius:(gw-d1+1)/m,maskColorString:Di({...o,a:.5}),brushColorString:Di(s),colorPickerColorString:Di(r),tool:i,layer:l,shouldShowBrush:f,shouldDrawBrushPreview:!(p||h||!t)&&f,strokeWidth:1.5/m,dotRadius:1.5/m,clip:w}},{memoizeOptions:{resultEqualityCheck:kt}}),Yme=e=>{const{...t}=e,{brushX:n,brushY:r,radius:o,maskColorString:s,tool:i,layer:l,shouldDrawBrushPreview:f,dotRadius:p,strokeWidth:h,brushColorString:m,colorPickerColorString:v,colorPickerInnerRadius:x,colorPickerOuterRadius:C,clip:b}=F(Xme);return f?a.jsxs(sa,{listening:!1,...b,...t,children:[i==="colorPicker"?a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:C,stroke:m,strokeWidth:d1,strokeScaleEnabled:!1}),a.jsx(vi,{x:n,y:r,radius:x,stroke:v,strokeWidth:d1,strokeScaleEnabled:!1})]}):a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:o,fill:l==="mask"?s:m,globalCompositeOperation:i==="eraser"?"destination-out":"source-out"}),a.jsx(vi,{x:n,y:r,radius:o,stroke:"rgba(255,255,255,0.4)",strokeWidth:h*2,strokeEnabled:!0,listening:!1}),a.jsx(vi,{x:n,y:r,radius:o,stroke:"rgba(0,0,0,1)",strokeWidth:h,strokeEnabled:!0,listening:!1})]}),a.jsx(vi,{x:n,y:r,radius:p*2,fill:"rgba(255,255,255,0.4)",listening:!1}),a.jsx(vi,{x:n,y:r,radius:p,fill:"rgba(0,0,0,1)",listening:!1})]}):null},Qme=d.memo(Yme),Zme=ae([$t,bo],(e,t)=>{const{isMaskEnabled:n,stageScale:r,shouldShowBoundingBox:o,isTransformingBoundingBox:s,isMouseOverBoundingBox:i,isMovingBoundingBox:l,stageDimensions:f,stageCoordinates:p,tool:h,isMovingStage:m,shouldShowIntermediates:v,shouldShowGrid:x,shouldRestrictStrokesToBox:C,shouldAntialias:b}=e;let w="none";return h==="move"||t?m?w="grabbing":w="grab":s?w=void 0:C&&!i&&(w="default"),{isMaskEnabled:n,isModifyingBoundingBox:s||l,shouldShowBoundingBox:o,shouldShowGrid:x,stageCoordinates:p,stageCursor:w,stageDimensions:f,stageScale:r,tool:h,isStaging:t,shouldShowIntermediates:v,shouldAntialias:b}},Ce),Jme=_e(Yhe,{shouldForwardProp:e=>!["sx"].includes(e)}),ege=()=>{const{isMaskEnabled:e,isModifyingBoundingBox:t,shouldShowBoundingBox:n,shouldShowGrid:r,stageCoordinates:o,stageCursor:s,stageDimensions:i,stageScale:l,tool:f,isStaging:p,shouldShowIntermediates:h,shouldAntialias:m}=F(Zme);eme();const v=te(),x=d.useRef(null),C=d.useRef(null),b=d.useRef(null),w=d.useCallback(K=>{M9(K),C.current=K},[]),k=d.useCallback(K=>{O9(K),b.current=K},[]),_=d.useRef({x:0,y:0}),j=d.useRef(!1),I=cme(C),M=nme(C),E=ime(C,j),O=ome(C,j,_),D=sme(),{handleDragStart:A,handleDragMove:R,handleDragEnd:$}=Zhe();return d.useEffect(()=>{if(!x.current)return;const K=new ResizeObserver(B=>{for(const U of B)if(U.contentBoxSize){const{width:Y,height:W}=U.contentRect;v(E9({width:Y,height:W}))}});return K.observe(x.current),()=>{K.disconnect()}},[v]),a.jsxs(T,{id:"canvas-container",ref:x,sx:{position:"relative",height:"100%",width:"100%",borderRadius:"base"},children:[a.jsx(Ie,{sx:{position:"absolute"},children:a.jsxs(Jme,{tabIndex:-1,ref:w,sx:{outline:"none",overflow:"hidden",cursor:s||void 0,canvas:{outline:"none"}},x:o.x,y:o.y,width:i.width,height:i.height,scale:{x:l,y:l},onTouchStart:M,onTouchMove:O,onTouchEnd:E,onMouseDown:M,onMouseLeave:D,onMouseMove:O,onMouseUp:E,onDragStart:A,onDragMove:R,onDragEnd:$,onContextMenu:K=>K.evt.preventDefault(),onWheel:I,draggable:(f==="move"||p)&&!t,children:[a.jsx(Iu,{id:"grid",visible:r,children:a.jsx(mme,{})}),a.jsx(Iu,{id:"base",ref:k,listening:!1,imageSmoothingEnabled:m,children:a.jsx(Mme,{})}),a.jsxs(Iu,{id:"mask",visible:e,listening:!1,children:[a.jsx(kme,{visible:!0,listening:!1}),a.jsx(Cme,{listening:!1})]}),a.jsx(Iu,{children:a.jsx(fme,{})}),a.jsxs(Iu,{id:"preview",imageSmoothingEnabled:m,children:[!p&&a.jsx(Qme,{visible:f!=="move",listening:!1}),a.jsx(Rme,{visible:p}),h&&a.jsx(xme,{}),a.jsx(qme,{visible:n&&!p})]})]})}),a.jsx(Ume,{}),a.jsx(Tme,{})]})},tge=d.memo(ege);function nge(e,t,n=250){const[r,o]=d.useState(0);return d.useEffect(()=>{const s=setTimeout(()=>{r===1&&e(),o(0)},n);return r===2&&t(),()=>clearTimeout(s)},[r,e,t,n]),()=>o(s=>s+1)}const rge=_e(fO,{baseStyle:{paddingInline:4},shouldForwardProp:e=>!["pickerColor"].includes(e)}),Qv={width:6,height:6,borderColor:"base.100"},oge=e=>{const{styleClass:t="",...n}=e;return a.jsx(rge,{sx:{".react-colorful__hue-pointer":Qv,".react-colorful__saturation-pointer":Qv,".react-colorful__alpha-pointer":Qv},className:t,...n})},g8=d.memo(oge),sge=ae([$t,bo],(e,t)=>{const{maskColor:n,layer:r,isMaskEnabled:o,shouldPreserveMaskedArea:s}=e;return{layer:r,maskColor:n,maskColorString:Di(n),isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:t}},{memoizeOptions:{resultEqualityCheck:kt}}),age=()=>{const e=te(),{t}=we(),{layer:n,maskColor:r,isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:i}=F(sge);Qe(["q"],()=>{l()},{enabled:()=>!i,preventDefault:!0},[n]),Qe(["shift+c"],()=>{f()},{enabled:()=>!i,preventDefault:!0},[]),Qe(["h"],()=>{p()},{enabled:()=>!i,preventDefault:!0},[o]);const l=()=>{e(m3(n==="mask"?"base":"mask"))},f=()=>e(f3()),p=()=>e(Xx(!o)),h=async()=>{e(A9())};return a.jsx(Vd,{triggerComponent:a.jsx(pn,{children:a.jsx(Te,{"aria-label":t("unifiedCanvas.maskingOptions"),tooltip:t("unifiedCanvas.maskingOptions"),icon:a.jsx(DE,{}),isChecked:n==="mask",isDisabled:i})}),children:a.jsxs(T,{direction:"column",gap:2,children:[a.jsx(ur,{label:`${t("unifiedCanvas.enableMask")} (H)`,isChecked:o,onChange:p}),a.jsx(ur,{label:t("unifiedCanvas.preserveMaskedArea"),isChecked:s,onChange:m=>e(D9(m.target.checked))}),a.jsx(g8,{sx:{paddingTop:2,paddingBottom:2},pickerColor:r,onChange:m=>e(R9(m))}),a.jsx(it,{size:"sm",leftIcon:a.jsx(eg,{}),onClick:h,children:"Save Mask"}),a.jsxs(it,{size:"sm",leftIcon:a.jsx(Wr,{}),onClick:f,children:[t("unifiedCanvas.clearMask")," (Shift+C)"]})]})})},ige=d.memo(age),lge=ae([$t,wn,vo],(e,t,n)=>{const{futureLayerStates:r}=e;return{canRedo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:kt}});function cge(){const e=te(),{canRedo:t,activeTabName:n}=F(lge),{t:r}=we(),o=()=>{e(N9())};return Qe(["meta+shift+z","ctrl+shift+z","control+y","meta+y"],()=>{o()},{enabled:()=>t,preventDefault:!0},[n,t]),a.jsx(Te,{"aria-label":`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,tooltip:`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,icon:a.jsx(MZ,{}),onClick:o,isDisabled:!t})}const uge=()=>{const e=F(bo),t=te(),{t:n}=we();return a.jsxs(Hy,{title:n("unifiedCanvas.clearCanvasHistory"),acceptCallback:()=>t(T9()),acceptButtonText:n("unifiedCanvas.clearHistory"),triggerComponent:a.jsx(it,{size:"sm",leftIcon:a.jsx(Wr,{}),isDisabled:e,children:n("unifiedCanvas.clearCanvasHistory")}),children:[a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryMessage")}),a.jsx("br",{}),a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryConfirm")})]})},dge=d.memo(uge),fge=ae([$t],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:l,shouldRestrictStrokesToBox:f,shouldAntialias:p}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:l,shouldRestrictStrokesToBox:f,shouldAntialias:p}},{memoizeOptions:{resultEqualityCheck:kt}}),pge=()=>{const e=te(),{t}=we(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldDarkenOutsideBoundingBox:o,shouldShowCanvasDebugInfo:s,shouldShowGrid:i,shouldShowIntermediates:l,shouldSnapToGrid:f,shouldRestrictStrokesToBox:p,shouldAntialias:h}=F(fge);Qe(["n"],()=>{e(Xp(!f))},{enabled:!0,preventDefault:!0},[f]);const m=v=>e(Xp(v.target.checked));return a.jsx(Vd,{isLazy:!1,triggerComponent:a.jsx(Te,{tooltip:t("unifiedCanvas.canvasSettings"),"aria-label":t("unifiedCanvas.canvasSettings"),icon:a.jsx($E,{})}),children:a.jsxs(T,{direction:"column",gap:2,children:[a.jsx(ur,{label:t("unifiedCanvas.showIntermediates"),isChecked:l,onChange:v=>e($9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.showGrid"),isChecked:i,onChange:v=>e(L9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.snapToGrid"),isChecked:f,onChange:m}),a.jsx(ur,{label:t("unifiedCanvas.darkenOutsideSelection"),isChecked:o,onChange:v=>e(z9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:v=>e(F9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:v=>e(B9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.limitStrokesToBox"),isChecked:p,onChange:v=>e(H9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:s,onChange:v=>e(W9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.antialiasing"),isChecked:h,onChange:v=>e(V9(v.target.checked))}),a.jsx(dge,{})]})})},hge=d.memo(pge),mge=ae([$t,bo,vo],(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:kt}}),gge=()=>{const e=te(),{tool:t,brushColor:n,brushSize:r,isStaging:o}=F(mge),{t:s}=we();Qe(["b"],()=>{i()},{enabled:()=>!o,preventDefault:!0},[]),Qe(["e"],()=>{l()},{enabled:()=>!o,preventDefault:!0},[t]),Qe(["c"],()=>{f()},{enabled:()=>!o,preventDefault:!0},[t]),Qe(["shift+f"],()=>{p()},{enabled:()=>!o,preventDefault:!0}),Qe(["delete","backspace"],()=>{h()},{enabled:()=>!o,preventDefault:!0}),Qe(["BracketLeft"],()=>{r-5<=5?e(Gf(Math.max(r-1,1))):e(Gf(Math.max(r-5,1)))},{enabled:()=>!o,preventDefault:!0},[r]),Qe(["BracketRight"],()=>{e(Gf(Math.min(r+5,500)))},{enabled:()=>!o,preventDefault:!0},[r]),Qe(["Shift+BracketLeft"],()=>{e(Q0({...n,a:Ri(n.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]),Qe(["Shift+BracketRight"],()=>{e(Q0({...n,a:Ri(n.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]);const i=()=>e(Yl("brush")),l=()=>e(Yl("eraser")),f=()=>e(Yl("colorPicker")),p=()=>e(U9()),h=()=>e(G9());return a.jsxs(pn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${s("unifiedCanvas.brush")} (B)`,tooltip:`${s("unifiedCanvas.brush")} (B)`,icon:a.jsx(IZ,{}),isChecked:t==="brush"&&!o,onClick:i,isDisabled:o}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.eraser")} (E)`,tooltip:`${s("unifiedCanvas.eraser")} (E)`,icon:a.jsx(fZ,{}),isChecked:t==="eraser"&&!o,isDisabled:o,onClick:l}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:a.jsx(yZ,{}),isDisabled:o,onClick:p}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:a.jsx(tl,{style:{transform:"rotate(45deg)"}}),isDisabled:o,onClick:h}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.colorPicker")} (C)`,tooltip:`${s("unifiedCanvas.colorPicker")} (C)`,icon:a.jsx(vZ,{}),isChecked:t==="colorPicker"&&!o,isDisabled:o,onClick:f}),a.jsx(Vd,{triggerComponent:a.jsx(Te,{"aria-label":s("unifiedCanvas.brushOptions"),tooltip:s("unifiedCanvas.brushOptions"),icon:a.jsx(NE,{})}),children:a.jsxs(T,{minWidth:60,direction:"column",gap:4,width:"100%",children:[a.jsx(T,{gap:4,justifyContent:"space-between",children:a.jsx(Ze,{label:s("unifiedCanvas.brushSize"),value:r,withInput:!0,onChange:m=>e(Gf(m)),sliderNumberInputProps:{max:500}})}),a.jsx(g8,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:m=>e(Q0(m))})]})})]})},vge=d.memo(gge),xge=ae([$t,wn,vo],(e,t,n)=>{const{pastLayerStates:r}=e;return{canUndo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:kt}});function bge(){const e=te(),{t}=we(),{canUndo:n,activeTabName:r}=F(xge),o=()=>{e(K9())};return Qe(["meta+z","ctrl+z"],()=>{o()},{enabled:()=>n,preventDefault:!0},[r,n]),a.jsx(Te,{"aria-label":`${t("unifiedCanvas.undo")} (Ctrl+Z)`,tooltip:`${t("unifiedCanvas.undo")} (Ctrl+Z)`,icon:a.jsx(tg,{}),onClick:o,isDisabled:!n})}const yge=ae([vo,$t,bo],(e,t,n)=>{const{isProcessing:r}=e,{tool:o,shouldCropToBoundingBoxOnSave:s,layer:i,isMaskEnabled:l}=t;return{isProcessing:r,isStaging:n,isMaskEnabled:l,tool:o,layer:i,shouldCropToBoundingBoxOnSave:s}},{memoizeOptions:{resultEqualityCheck:kt}}),Cge=()=>{const e=te(),{isProcessing:t,isStaging:n,isMaskEnabled:r,layer:o,tool:s}=F(yge),i=u1(),{t:l}=we(),{isClipboardAPIAvailable:f}=TM(),{getUploadButtonProps:p,getUploadInputProps:h}=ky({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}});Qe(["v"],()=>{m()},{enabled:()=>!n,preventDefault:!0},[]),Qe(["r"],()=>{x()},{enabled:()=>!0,preventDefault:!0},[i]),Qe(["shift+m"],()=>{b()},{enabled:()=>!n,preventDefault:!0},[i,t]),Qe(["shift+s"],()=>{w()},{enabled:()=>!n,preventDefault:!0},[i,t]),Qe(["meta+c","ctrl+c"],()=>{k()},{enabled:()=>!n&&f,preventDefault:!0},[i,t,f]),Qe(["shift+d"],()=>{_()},{enabled:()=>!n,preventDefault:!0},[i,t]);const m=()=>e(Yl("move")),v=nge(()=>x(!1),()=>x(!0)),x=(I=!1)=>{const M=u1();if(!M)return;const E=M.getClientRect({skipTransform:!0});e(X9({contentRect:E,shouldScaleTo1:I}))},C=()=>{e(Rj())},b=()=>{e(Y9())},w=()=>{e(Q9())},k=()=>{f&&e(Z9())},_=()=>{e(J9())},j=I=>{const M=I;e(m3(M)),M==="mask"&&!r&&e(Xx(!0))};return a.jsxs(T,{sx:{alignItems:"center",gap:2,flexWrap:"wrap"},children:[a.jsx(Ie,{w:24,children:a.jsx(Bn,{tooltip:`${l("unifiedCanvas.layer")} (Q)`,value:o,data:q9,onChange:j,disabled:n})}),a.jsx(ige,{}),a.jsx(vge,{}),a.jsxs(pn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("unifiedCanvas.move")} (V)`,tooltip:`${l("unifiedCanvas.move")} (V)`,icon:a.jsx(sZ,{}),isChecked:s==="move"||n,onClick:m}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.resetView")} (R)`,tooltip:`${l("unifiedCanvas.resetView")} (R)`,icon:a.jsx(cZ,{}),onClick:v})]}),a.jsxs(pn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${l("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:a.jsx(_Z,{}),onClick:b,isDisabled:n}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${l("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:a.jsx(eg,{}),onClick:w,isDisabled:n}),f&&a.jsx(Te,{"aria-label":`${l("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${l("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:a.jsx(Hc,{}),onClick:k,isDisabled:n}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${l("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:a.jsx(Jm,{}),onClick:_,isDisabled:n})]}),a.jsxs(pn,{isAttached:!0,children:[a.jsx(bge,{}),a.jsx(cge,{})]}),a.jsxs(pn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("common.upload")}`,tooltip:`${l("common.upload")}`,icon:a.jsx(ng,{}),isDisabled:n,...p()}),a.jsx("input",{...h()}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.clearCanvas")}`,tooltip:`${l("unifiedCanvas.clearCanvas")}`,icon:a.jsx(Wr,{}),onClick:C,colorScheme:"error",isDisabled:n})]}),a.jsx(pn,{isAttached:!0,children:a.jsx(hge,{})})]})},wge=d.memo(Cge),gj={id:"canvas-intial-image",actionType:"SET_CANVAS_INITIAL_IMAGE"},Sge=()=>{const{isOver:e,setNodeRef:t,active:n}=mM({id:"unifiedCanvas",data:gj});return a.jsxs(T,{layerStyle:"first",ref:t,tabIndex:-1,sx:{flexDirection:"column",alignItems:"center",gap:4,p:2,borderRadius:"base",w:"full",h:"full"},children:[a.jsx(wge,{}),a.jsx(tge,{}),gM(gj,n)&&a.jsx(vM,{isOver:e,label:"Set Canvas Initial Image"})]})},kge=d.memo(Sge),_ge=()=>a.jsx(kge,{}),jge=d.memo(_ge),Pge=[{id:"txt2img",translationKey:"common.txt2img",icon:a.jsx(An,{as:CZ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Kpe,{})},{id:"img2img",translationKey:"common.img2img",icon:a.jsx(An,{as:Wi,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(tue,{})},{id:"unifiedCanvas",translationKey:"common.unifiedCanvas",icon:a.jsx(An,{as:bne,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(jge,{})},{id:"nodes",translationKey:"common.nodes",icon:a.jsx(An,{as:vg,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Upe,{})},{id:"modelManager",translationKey:"modelManager.modelManager",icon:a.jsx(An,{as:uZ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(ede,{})}],Ige=ae([xe],({config:e})=>{const{disabledTabs:t}=e;return Pge.filter(r=>!t.includes(r.id))},{memoizeOptions:{resultEqualityCheck:kt}}),Ege=448,Mge=448,Oge=360,Dge=["modelManager"],Rge=["modelManager"],Age=()=>{const e=F(eN),t=F(wn),n=F(Ige),{t:r}=we(),o=te(),s=d.useCallback(R=>{R.target instanceof HTMLElement&&R.target.blur()},[]),i=d.useMemo(()=>n.map(R=>a.jsx(Dt,{hasArrow:!0,label:String(r(R.translationKey)),placement:"end",children:a.jsxs(Pr,{onClick:s,children:[a.jsx(D3,{children:String(r(R.translationKey))}),R.icon]})},R.id)),[n,r,s]),l=d.useMemo(()=>n.map(R=>a.jsx(fo,{children:R.content},R.id)),[n]),f=d.useCallback(R=>{const $=tN[R];$&&o(Ra($))},[o]),{minSize:p,isCollapsed:h,setIsCollapsed:m,ref:v,reset:x,expand:C,collapse:b,toggle:w}=S_(Ege,"pixels"),{ref:k,minSize:_,isCollapsed:j,setIsCollapsed:I,reset:M,expand:E,collapse:O,toggle:D}=S_(Oge,"pixels");Qe("f",()=>{j||h?(E(),C()):(b(),O())},[o,j,h]),Qe(["t","o"],()=>{w()},[o]),Qe("g",()=>{D()},[o]);const A=Oy();return a.jsxs(Yi,{variant:"appTabs",defaultIndex:e,index:e,onChange:f,sx:{flexGrow:1,gap:4},isLazy:!0,children:[a.jsxs(Qi,{sx:{pt:2,gap:4,flexDir:"column"},children:[i,a.jsx(Za,{}),a.jsx(pJ,{})]}),a.jsxs(yg,{id:"app",autoSaveId:"app",direction:"horizontal",style:{height:"100%",width:"100%"},storage:A,units:"pixels",children:[!Rge.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(Va,{order:0,id:"side",ref:v,defaultSize:p,minSize:p,onCollapse:m,collapsible:!0,children:t==="nodes"?a.jsx(qoe,{}):a.jsx(Sce,{})}),a.jsx(om,{onDoubleClick:x,collapsedDirection:h?"left":void 0}),a.jsx(Zoe,{isSidePanelCollapsed:h,sidePanelRef:v})]}),a.jsx(Va,{id:"main",order:1,minSize:Mge,children:a.jsx(zc,{style:{height:"100%",width:"100%"},children:l})}),!Dge.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(om,{onDoubleClick:M,collapsedDirection:j?"right":void 0}),a.jsx(Va,{id:"gallery",ref:k,order:2,defaultSize:_,minSize:_,onCollapse:I,collapsible:!0,children:a.jsx(Yne,{})}),a.jsx(Yoe,{isGalleryCollapsed:j,galleryPanelRef:k})]})]})]})},Nge=d.memo(Age),Tge=d.createContext(null),Zv={didCatch:!1,error:null};class $ge extends d.Component{constructor(t){super(t),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=Zv}static getDerivedStateFromError(t){return{didCatch:!0,error:t}}resetErrorBoundary(){const{error:t}=this.state;if(t!==null){for(var n,r,o=arguments.length,s=new Array(o),i=0;i0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return e.length!==t.length||e.some((n,r)=>!Object.is(n,t[r]))}const zge=()=>{const e=te(),[t,n]=d.useState(),[r,o]=d.useState(),{recallAllParameters:s}=gg(),i=Zi(),{currentData:l}=po(t??zr.skipToken),{currentData:f}=nN(r??zr.skipToken);return{handlePreselectedImage:d.useCallback(h=>{h&&(h.action==="sendToCanvas"&&(n(h==null?void 0:h.imageName),l&&(e(Bj(l)),e(Ra("unifiedCanvas")),i({title:rN("toast.sentToUnifiedCanvas"),status:"info",duration:2500,isClosable:!0}))),h.action==="sendToImg2Img"&&(n(h==null?void 0:h.imageName),l&&e(pm(l))),h.action==="useAllParameters"&&(o(h==null?void 0:h.imageName),f&&s(f.metadata)))},[e,l,f,s,i])}};function Fge(e={}){let t;if(e.repoUrl)t=e.repoUrl;else if(e.user&&e.repo)t=`https://github.com/${e.user}/${e.repo}`;else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options");const n=new URL(`${t}/issues/new`),r=["body","title","labels","template","milestone","assignee","projects"];for(const o of r){let s=e[o];if(s!==void 0){if(o==="labels"||o==="projects"){if(!Array.isArray(s))throw new TypeError(`The \`${o}\` option should be an array`);s=s.join(",")}n.searchParams.set(o,s)}}return n.toString()}const Bge=({error:e,resetErrorBoundary:t})=>{const n=k3(),r=d.useCallback(()=>{const s=JSON.stringify(oN(e),null,2);navigator.clipboard.writeText(`\`\`\` -${s} -\`\`\``),n({title:"Error Copied"})},[e,n]),o=d.useMemo(()=>Fge({user:"invoke-ai",repo:"InvokeAI",template:"BUG_REPORT.yml",title:`[bug]: ${e.name}: ${e.message}`}),[e.message,e.name]);return a.jsx(T,{layerStyle:"body",sx:{w:"100vw",h:"100vh",alignItems:"center",justifyContent:"center",p:4},children:a.jsxs(T,{layerStyle:"first",sx:{flexDir:"column",borderRadius:"base",justifyContent:"center",gap:8,p:16},children:[a.jsx(oo,{children:"Something went wrong"}),a.jsx(T,{layerStyle:"second",sx:{px:8,py:4,borderRadius:"base",gap:4,justifyContent:"space-between",alignItems:"center"},children:a.jsxs(be,{sx:{fontWeight:600,color:"error.500",_dark:{color:"error.400"}},children:[e.name,": ",e.message]})}),a.jsxs(T,{sx:{gap:4},children:[a.jsx(it,{leftIcon:a.jsx(Dpe,{}),onClick:t,children:"Reset UI"}),a.jsx(it,{leftIcon:a.jsx(Hc,{}),onClick:r,children:"Copy Error"}),a.jsx(Im,{href:o,isExternal:!0,children:a.jsx(it,{leftIcon:a.jsx(PE,{}),children:"Create Issue"})})]})]})})},Hge=d.memo(Bge),Wge=ae([xe],({hotkeys:e})=>{const{shift:t,ctrl:n,meta:r}=e;return{shift:t,ctrl:n,meta:r}},{memoizeOptions:{resultEqualityCheck:kt}}),Vge=()=>{const e=te(),{shift:t,ctrl:n,meta:r}=F(Wge);return Qe("*",()=>{Tp("shift")?!t&&e(Ir(!0)):t&&e(Ir(!1)),Tp("ctrl")?!n&&e(vw(!0)):n&&e(vw(!1)),Tp("meta")?!r&&e(xw(!0)):r&&e(xw(!1))},{keyup:!0,keydown:!0},[t,n,r]),Qe("1",()=>{e(Ra("txt2img"))}),Qe("2",()=>{e(Ra("img2img"))}),Qe("3",()=>{e(Ra("unifiedCanvas"))}),Qe("4",()=>{e(Ra("nodes"))}),Qe("5",()=>{e(Ra("modelManager"))}),null},Uge=d.memo(Vge),Gge={},Kge=({config:e=Gge,headerComponent:t,selectedImage:n})=>{const r=F(OP),o=DP("system"),s=te(),{handlePreselectedImage:i}=zge(),l=d.useCallback(()=>(localStorage.clear(),location.reload(),!1),[]);return d.useEffect(()=>{bn.changeLanguage(r)},[r]),d.useEffect(()=>{Xj(e)&&(o.info({config:e},"Received config"),s(sN(e)))},[s,e,o]),d.useEffect(()=>{s(aN())},[s]),d.useEffect(()=>{i(n)},[i,n]),a.jsxs($ge,{onReset:l,FallbackComponent:Hge,children:[a.jsx(Ua,{w:"100vw",h:"100vh",position:"relative",overflow:"hidden",children:a.jsx(OV,{children:a.jsxs(Ua,{sx:{gap:4,p:4,gridAutoRows:"min-content auto",w:"full",h:"full"},children:[t||a.jsx(uJ,{}),a.jsx(T,{sx:{gap:4,w:"full",h:"full"},children:a.jsx(Nge,{})})]})})}),a.jsx(XQ,{}),a.jsx(VQ,{}),a.jsx(yW,{}),a.jsx(Uge,{})]})},n0e=d.memo(Kge);export{n0e as default}; diff --git a/invokeai/frontend/web/dist/assets/App-dbf8f111.js b/invokeai/frontend/web/dist/assets/App-dbf8f111.js new file mode 100644 index 0000000000..c3d486e7b6 --- /dev/null +++ b/invokeai/frontend/web/dist/assets/App-dbf8f111.js @@ -0,0 +1,169 @@ +var U0=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var Se=(e,t,n)=>(U0(e,t,"read from private field"),n?n.call(e):t.get(e)),en=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},ro=(e,t,n,r)=>(U0(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var bu=(e,t,n,r)=>({set _(o){ro(e,t,o,n)},get _(){return Se(e,t,r)}}),os=(e,t,n)=>(U0(e,t,"access private method"),n);import{a as bd,b as Pj,S as Ij,c as Ej,d as Mj,e as t1,f as Oj,i as n1,g as g7,k as v7,h as TC,j as Dj,t as b7,l as x7,m as y7,n as C7,o as w7,p as S7,q as k7,r as G0,s as _7,u as d,v as a,w as Rb,x as Vp,y as j7,z as P7,A as I7,B as E7,P as M7,C as Ab,D as O7,E as D7,F as R7,G as A7,H as Rj,I as Pe,J as N7,K as _e,L as et,M as Fe,N as xd,O as nr,Q as vn,R as Wn,T as Yt,U as Xi,V as Qa,W as at,X as po,Y as Zl,Z as ia,_ as fm,$ as Nb,a0 as Rc,a1 as rn,a2 as T7,a3 as H,a4 as $C,a5 as $7,a6 as Aj,a7 as r1,a8 as yd,a9 as L7,aa as Nj,ab as Tj,ac as ds,ad as z7,ae as ie,af as we,ag as _t,ah as L,ai as F7,aj as LC,ak as B7,al as H7,am as W7,an as Yi,ao as ee,ap as V7,aq as Tt,ar as Ft,as as Ie,at as $,au as io,av as xe,aw as wn,ax as $j,ay as U7,az as G7,aA as K7,aB as q7,aC as Fr,aD as Tb,aE as la,aF as Ir,aG as pm,aH as X7,aI as Y7,aJ as zC,aK as $b,aL as ye,aM as Br,aN as Q7,aO as Lj,aP as zj,aQ as FC,aR as Z7,aS as J7,aT as eD,aU as Qi,aV as Fj,aW as vt,aX as tD,aY as nD,aZ as rD,a_ as Bj,a$ as rr,b0 as hm,b1 as oD,b2 as BC,b3 as Hj,b4 as sD,b5 as aD,b6 as iD,b7 as lD,b8 as cD,b9 as uD,ba as dD,bb as fD,bc as Wj,bd as pD,be as hD,bf as mD,bg as gD,bh as vD,bi as Er,bj as bD,bk as xD,bl as yD,bm as HC,bn as CD,bo as wD,bp as Ba,bq as mm,br as Vj,bs as Uj,bt as Wr,bu as Gj,bv as SD,bw as Ni,bx as Mu,by as WC,bz as kD,bA as _D,bB as jD,bC as Gf,bD as Kf,bE as xu,bF as K0,bG as Lu,bH as zu,bI as Fu,bJ as Bu,bK as VC,bL as Up,bM as q0,bN as Gp,bO as UC,bP as o1,bQ as X0,bR as s1,bS as Y0,bT as Kp,bU as GC,bV as Ti,bW as KC,bX as $i,bY as qC,bZ as qp,b_ as Cd,b$ as PD,c0 as Kj,c1 as XC,c2 as gm,c3 as ID,c4 as qj,c5 as a1,c6 as i1,c7 as Xj,c8 as ED,c9 as l1,ca as MD,cb as c1,cc as OD,cd as u1,ce as Lb,cf as zb,cg as Fb,ch as Bb,ci as Hb,cj as vm,ck as Wb,cl as Aa,cm as Yj,cn as Qj,co as Vb,cp as Zj,cq as DD,cr as yu,cs as Li,ct as Jj,cu as e5,cv as YC,cw as RD,cx as AD,cy as ND,cz as Cn,cA as TD,cB as Pn,cC as wd,cD as bm,cE as $D,cF as LD,cG as zD,cH as FD,cI as BD,cJ as HD,cK as WD,cL as VD,cM as UD,cN as GD,cO as QC,cP as Ub,cQ as KD,cR as qD,cS as Sd,cT as XD,cU as YD,cV as xm,cW as QD,cX as ZD,cY as JD,cZ as Gb,c_ as eR,c$ as on,d0 as tR,d1 as nR,d2 as rR,d3 as oR,d4 as sR,d5 as aR,d6 as Yu,d7 as ZC,d8 as Bo,d9 as t5,da as iR,db as Kb,dc as lR,dd as JC,de as cR,df as uR,dg as dR,dh as n5,di as fR,dj as pR,dk as r5,dl as hR,dm as o5,dn as mR,dp as gR,dq as vR,dr as bR,ds as xR,dt as yR,du as CR,dv as wR,dw as s5,dx as a5,dy as SR,dz as kR,dA as _R,dB as jR,dC as PR,dD as No,dE as IR,dF as bo,dG as ER,dH as MR,dI as OR,dJ as DR,dK as RR,dL as AR,dM as NR,dN as TR,dO as $R,dP as LR,dQ as zR,dR as FR,dS as BR,dT as HR,dU as WR,dV as VR,dW as ew,dX as UR,dY as GR,dZ as KR,d_ as qR,d$ as XR,e0 as tw,e1 as YR,e2 as nw,e3 as QR,e4 as ZR,e5 as JR,e6 as eA,e7 as tA,e8 as nA,e9 as rw,ea as ow,eb as sw,ec as qb,ed as rA,ee as Do,ef as Qu,eg as fr,eh as oA,ei as sA,ej as i5,ek as l5,el as aA,em as aw,en as iA,eo as iw,ep as lw,eq as cw,er as lA,es as cA,et as uw,eu as dw,ev as uA,ew as dA,ex as Xp,ey as fA,ez as fw,eA as qf,eB as pw,eC as hw,eD as pA,eE as hA,eF as mA,eG as c5,eH as gA,eI as vA,eJ as mw,eK as bA,eL as gw,eM as xA,eN as u5,eO as d5,eP as kd,eQ as f5,eR as Ci,eS as p5,eT as vw,eU as yA,eV as CA,eW as h5,eX as wA,eY as SA,eZ as kA,e_ as _A,e$ as jA,f0 as Xb,f1 as d1,f2 as bw,f3 as Zi,f4 as PA,f5 as IA,f6 as m5,f7 as Us,f8 as Gs,f9 as g5,fa as v5,fb as Yb,fc as b5,fd as EA,fe as Ks,ff as MA,fg as x5,fh as OA,fi as DA,fj as RA,fk as AA,fl as NA,fm as TA,fn as $A,fo as Yp,fp as Ou,fq as Ul,fr as LA,fs as zA,ft as FA,fu as BA,fv as HA,fw as WA,fx as VA,fy as UA,fz as GA,fA as KA,fB as qA,fC as XA,fD as YA,fE as QA,fF as ZA,fG as JA,fH as e9,fI as t9,fJ as n9,fK as r9,fL as xw,fM as o9,fN as s9,fO as a9,fP as i9,fQ as l9,fR as c9,fS as u9,fT as d9,fU as f9,fV as p9,fW as h9,fX as m9,fY as g9,fZ as v9,f_ as yw,f$ as Dp,g0 as b9,g1 as Qp,g2 as y5,g3 as Zp,g4 as x9,g5 as y9,g6 as Jl,g7 as C5,g8 as w5,g9 as Qb,ga as C9,gb as w9,gc as S9,gd as f1,ge as S5,gf as k9,gg as _9,gh as k5,gi as j9,gj as P9,gk as I9,gl as E9,gm as M9,gn as _l,go as O9,gp as D9,gq as R9,gr as A9,gs as N9,gt as T9,gu as Cw,gv as $9,gw as L9,gx as z9,gy as F9,gz as B9,gA as H9,gB as W9,gC as V9,gD as Q0,gE as Z0,gF as J0,gG as Xf,gH as ww,gI as p1,gJ as Sw,gK as U9,gL as G9,gM as K9,gN as q9,gO as _5,gP as X9,gQ as Y9,gR as Q9,gS as Z9,gT as J9,gU as eN,gV as tN,gW as nN,gX as rN,gY as oN,gZ as sN,g_ as Yf,g$ as ev,h0 as aN,h1 as iN,h2 as lN,h3 as cN,h4 as uN,h5 as dN,h6 as fN,h7 as pN,h8 as hN,h9 as mN,ha as gN,hb as vN,hc as bN,hd as xN,he as kw,hf as _w,hg as yN,hh as CN,hi as wN}from"./index-f6c3f475.js";import{I as Tn,u as SN,c as kN,a as $t,b as nn,d as ca,P as _d,C as _N,e as Z,f as j5,g as ua,h as jN,r as Oe,i as PN,j as jw,k as ut,l as Sn,m as vc}from"./menu-c9cc8c3d.js";var IN=200;function EN(e,t,n,r){var o=-1,s=Ej,i=!0,l=e.length,u=[],p=t.length;if(!l)return u;n&&(t=bd(t,Pj(n))),r?(s=Mj,i=!1):t.length>=IN&&(s=t1,i=!1,t=new Ij(t));e:for(;++o=120&&h.length>=120)?new Ij(i&&h):void 0}h=e[0];var m=-1,v=l[0];e:for(;++m{r.has(s)&&n(o,s)})}function KN(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,s;for(s=0;s=0)&&(n[o]=e[o]);return n}const P5=({id:e,x:t,y:n,width:r,height:o,style:s,color:i,strokeColor:l,strokeWidth:u,className:p,borderRadius:h,shapeRendering:m,onClick:v,selected:b})=>{const{background:y,backgroundColor:x}=s||{},w=i||y||x;return a.jsx("rect",{className:Rb(["react-flow__minimap-node",{selected:b},p]),x:t,y:n,rx:h,ry:h,width:r,height:o,fill:w,stroke:l,strokeWidth:u,shapeRendering:m,onClick:v?k=>v(k,e):void 0})};P5.displayName="MiniMapNode";var qN=d.memo(P5);const XN=e=>e.nodeOrigin,YN=e=>e.getNodes().filter(t=>!t.hidden&&t.width&&t.height),tv=e=>e instanceof Function?e:()=>e;function QN({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o=2,nodeComponent:s=qN,onClick:i}){const l=Vp(YN,Ab),u=Vp(XN),p=tv(t),h=tv(e),m=tv(n),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return a.jsx(a.Fragment,{children:l.map(b=>{const{x:y,y:x}=j7(b,u).positionAbsolute;return a.jsx(s,{x:y,y:x,width:b.width,height:b.height,style:b.style,selected:b.selected,className:m(b),color:p(b),borderRadius:r,strokeColor:h(b),strokeWidth:o,shapeRendering:v,onClick:i,id:b.id},b.id)})})}var ZN=d.memo(QN);const JN=200,eT=150,tT=e=>{const t=e.getNodes(),n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:t.length>0?R7(A7(t,e.nodeOrigin),n):n,rfId:e.rfId}},nT="react-flow__minimap-desc";function I5({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:i=2,nodeComponent:l,maskColor:u="rgb(240, 240, 240, 0.6)",maskStrokeColor:p="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:v,onNodeClick:b,pannable:y=!1,zoomable:x=!1,ariaLabel:w="React Flow mini map",inversePan:k=!1,zoomStep:_=10,offsetScale:j=5}){const I=P7(),E=d.useRef(null),{boundingRect:M,viewBB:D,rfId:R}=Vp(tT,Ab),A=(e==null?void 0:e.width)??JN,O=(e==null?void 0:e.height)??eT,T=M.width/A,K=M.height/O,F=Math.max(T,K),V=F*A,X=F*O,W=j*F,z=M.x-(V-M.width)/2-W,Y=M.y-(X-M.height)/2-W,B=V+W*2,q=X+W*2,re=`${nT}-${R}`,Q=d.useRef(0);Q.current=F,d.useEffect(()=>{if(E.current){const U=I7(E.current),G=oe=>{const{transform:pe,d3Selection:ue,d3Zoom:me}=I.getState();if(oe.sourceEvent.type!=="wheel"||!ue||!me)return;const Ce=-oe.sourceEvent.deltaY*(oe.sourceEvent.deltaMode===1?.05:oe.sourceEvent.deltaMode?1:.002)*_,ge=pe[2]*Math.pow(2,Ce);me.scaleTo(ue,ge)},te=oe=>{const{transform:pe,d3Selection:ue,d3Zoom:me,translateExtent:Ce,width:ge,height:fe}=I.getState();if(oe.sourceEvent.type!=="mousemove"||!ue||!me)return;const De=Q.current*Math.max(1,pe[2])*(k?-1:1),je={x:pe[0]-oe.sourceEvent.movementX*De,y:pe[1]-oe.sourceEvent.movementY*De},Be=[[0,0],[ge,fe]],rt=O7.translate(je.x,je.y).scale(pe[2]),Ue=me.constrain()(rt,Be,Ce);me.transform(ue,Ue)},ae=E7().on("zoom",y?te:null).on("zoom.wheel",x?G:null);return U.call(ae),()=>{U.on("zoom",null)}}},[y,x,k,_]);const le=v?U=>{const G=D7(U);v(U,{x:G[0],y:G[1]})}:void 0,se=b?(U,G)=>{const te=I.getState().nodeInternals.get(G);b(U,te)}:void 0;return a.jsx(M7,{position:m,style:e,className:Rb(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:a.jsxs("svg",{width:A,height:O,viewBox:`${z} ${Y} ${B} ${q}`,role:"img","aria-labelledby":re,ref:E,onClick:le,children:[w&&a.jsx("title",{id:re,children:w}),a.jsx(ZN,{onClick:se,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:i,nodeComponent:l}),a.jsx("path",{className:"react-flow__minimap-mask",d:`M${z-W},${Y-W}h${B+W*2}v${q+W*2}h${-B-W*2}z + M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fill:u,fillRule:"evenodd",stroke:p,strokeWidth:h,pointerEvents:"none"})]})})}I5.displayName="MiniMap";var rT=d.memo(I5),To;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(To||(To={}));function oT({color:e,dimensions:t,lineWidth:n}){return a.jsx("path",{stroke:e,strokeWidth:n,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})}function sT({color:e,radius:t}){return a.jsx("circle",{cx:t,cy:t,r:t,fill:e})}const aT={[To.Dots]:"#91919a",[To.Lines]:"#eee",[To.Cross]:"#e2e2e2"},iT={[To.Dots]:1,[To.Lines]:1,[To.Cross]:6},lT=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function E5({id:e,variant:t=To.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=2,color:i,style:l,className:u}){const p=d.useRef(null),{transform:h,patternId:m}=Vp(lT,Ab),v=i||aT[t],b=r||iT[t],y=t===To.Dots,x=t===To.Cross,w=Array.isArray(n)?n:[n,n],k=[w[0]*h[2]||1,w[1]*h[2]||1],_=b*h[2],j=x?[_,_]:k,I=y?[_/s,_/s]:[j[0]/s,j[1]/s];return a.jsxs("svg",{className:Rb(["react-flow__background",u]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:p,"data-testid":"rf__background",children:[a.jsx("pattern",{id:m+e,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${I[0]},-${I[1]})`,children:y?a.jsx(sT,{color:v,radius:_/s}):a.jsx(oT,{dimensions:j,color:v,lineWidth:o})}),a.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+e})`})]})}E5.displayName="Background";var cT=d.memo(E5);const Mw=(e,t,n)=>{uT(n);const r=Rj(e,t);return M5[n].includes(r)},M5={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Ow=Object.keys(M5),uT=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(Ow.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${Ow.join("|")}`)};function dT(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var fT=dT();const O5=1/60*1e3,pT=typeof performance<"u"?()=>performance.now():()=>Date.now(),D5=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(pT()),O5);function hT(e){let t=[],n=[],r=0,o=!1,s=!1;const i=new WeakSet,l={schedule:(u,p=!1,h=!1)=>{const m=h&&o,v=m?t:n;return p&&i.add(u),v.indexOf(u)===-1&&(v.push(u),m&&o&&(r=t.length)),u},cancel:u=>{const p=n.indexOf(u);p!==-1&&n.splice(p,1),i.delete(u)},process:u=>{if(o){s=!0;return}if(o=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let p=0;p(e[t]=hT(()=>Zu=!0),e),{}),gT=jd.reduce((e,t)=>{const n=ym[t];return e[t]=(r,o=!1,s=!1)=>(Zu||xT(),n.schedule(r,o,s)),e},{}),vT=jd.reduce((e,t)=>(e[t]=ym[t].cancel,e),{});jd.reduce((e,t)=>(e[t]=()=>ym[t].process(ec),e),{});const bT=e=>ym[e].process(ec),R5=e=>{Zu=!1,ec.delta=h1?O5:Math.max(Math.min(e-ec.timestamp,mT),1),ec.timestamp=e,m1=!0,jd.forEach(bT),m1=!1,Zu&&(h1=!1,D5(R5))},xT=()=>{Zu=!0,h1=!0,m1||D5(R5)},Dw=()=>ec;function Pd(e){const{viewBox:t="0 0 24 24",d:n,displayName:r,defaultProps:o={}}=e,s=d.Children.toArray(e.path),i=Pe((l,u)=>a.jsx(Tn,{ref:u,viewBox:t,...o,...l,children:s.length?s:a.jsx("path",{fill:"currentColor",d:n})}));return i.displayName=r,i}function A5(e){const{theme:t}=N7(),n=SN();return d.useMemo(()=>kN(t.direction,{...n,...e}),[e,t.direction,n])}var yT=Object.defineProperty,CT=(e,t,n)=>t in e?yT(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hn=(e,t,n)=>(CT(e,typeof t!="symbol"?t+"":t,n),n);function Rw(e){return e.sort((t,n)=>{const r=t.compareDocumentPosition(n);if(r&Node.DOCUMENT_POSITION_FOLLOWING||r&Node.DOCUMENT_POSITION_CONTAINED_BY)return-1;if(r&Node.DOCUMENT_POSITION_PRECEDING||r&Node.DOCUMENT_POSITION_CONTAINS)return 1;if(r&Node.DOCUMENT_POSITION_DISCONNECTED||r&Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC)throw Error("Cannot sort the given nodes.");return 0})}var wT=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function Aw(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function Nw(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var g1=typeof window<"u"?d.useLayoutEffect:d.useEffect,Jp=e=>e,ST=class{constructor(){hn(this,"descendants",new Map),hn(this,"register",e=>{if(e!=null)return wT(e)?this.registerNode(e):t=>{this.registerNode(t,e)}}),hn(this,"unregister",e=>{this.descendants.delete(e);const t=Rw(Array.from(this.descendants.keys()));this.assignIndex(t)}),hn(this,"destroy",()=>{this.descendants.clear()}),hn(this,"assignIndex",e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})}),hn(this,"count",()=>this.descendants.size),hn(this,"enabledCount",()=>this.enabledValues().length),hn(this,"values",()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index)),hn(this,"enabledValues",()=>this.values().filter(e=>!e.disabled)),hn(this,"item",e=>{if(this.count()!==0)return this.values()[e]}),hn(this,"enabledItem",e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]}),hn(this,"first",()=>this.item(0)),hn(this,"firstEnabled",()=>this.enabledItem(0)),hn(this,"last",()=>this.item(this.descendants.size-1)),hn(this,"lastEnabled",()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)}),hn(this,"indexOf",e=>{var t,n;return e&&(n=(t=this.descendants.get(e))==null?void 0:t.index)!=null?n:-1}),hn(this,"enabledIndexOf",e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e))),hn(this,"next",(e,t=!0)=>{const n=Aw(e,this.count(),t);return this.item(n)}),hn(this,"nextEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Aw(r,this.enabledCount(),t);return this.enabledItem(o)}),hn(this,"prev",(e,t=!0)=>{const n=Nw(e,this.count()-1,t);return this.item(n)}),hn(this,"prevEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Nw(r,this.enabledCount()-1,t);return this.enabledItem(o)}),hn(this,"registerNode",(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=Rw(n);t!=null&&t.disabled&&(t.disabled=!!t.disabled);const o={node:e,index:-1,...t};this.descendants.set(e,o),this.assignIndex(r)})}};function kT(e,t){if(e!=null){if(typeof e=="function"){e(t);return}try{e.current=t}catch{throw new Error(`Cannot assign value '${t}' to ref '${e}'`)}}}function Ct(...e){return t=>{e.forEach(n=>{kT(n,t)})}}function _T(...e){return d.useMemo(()=>Ct(...e),e)}function jT(){const e=d.useRef(new ST);return g1(()=>()=>e.current.destroy()),e.current}var[PT,N5]=$t({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function IT(e){const t=N5(),[n,r]=d.useState(-1),o=d.useRef(null);g1(()=>()=>{o.current&&t.unregister(o.current)},[]),g1(()=>{if(!o.current)return;const i=Number(o.current.dataset.index);n!=i&&!Number.isNaN(i)&&r(i)});const s=Jp(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(o.current),register:Ct(s,o)}}function Zb(){return[Jp(PT),()=>Jp(N5()),()=>jT(),o=>IT(o)]}var[ET,Cm]=$t({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[MT,Jb]=$t({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[OT,P0e,DT,RT]=Zb(),Tl=Pe(function(t,n){const{getButtonProps:r}=Jb(),o=r(t,n),i={display:"flex",alignItems:"center",width:"100%",outline:0,...Cm().button};return a.jsx(_e.button,{...o,className:et("chakra-accordion__button",t.className),__css:i})});Tl.displayName="AccordionButton";function Ac(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:o=(v,b)=>v!==b}=e,s=nn(r),i=nn(o),[l,u]=d.useState(n),p=t!==void 0,h=p?t:l,m=nn(v=>{const y=typeof v=="function"?v(h):v;i(h,y)&&(p||u(y),s(y))},[p,s,h,i]);return[h,m]}function AT(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:o,allowToggle:s,...i}=e;$T(e),LT(e);const l=DT(),[u,p]=d.useState(-1);d.useEffect(()=>()=>{p(-1)},[]);const[h,m]=Ac({value:r,defaultValue(){return o?n??[]:n??-1},onChange:t});return{index:h,setIndex:m,htmlProps:i,getAccordionItemProps:b=>{let y=!1;return b!==null&&(y=Array.isArray(h)?h.includes(b):h===b),{isOpen:y,onChange:w=>{if(b!==null)if(o&&Array.isArray(h)){const k=w?h.concat(b):h.filter(_=>_!==b);m(k)}else w?m(b):s&&m(-1)}}},focusedIndex:u,setFocusedIndex:p,descendants:l}}var[NT,ex]=$t({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function TT(e){const{isDisabled:t,isFocusable:n,id:r,...o}=e,{getAccordionItemProps:s,setFocusedIndex:i}=ex(),l=d.useRef(null),u=d.useId(),p=r??u,h=`accordion-button-${p}`,m=`accordion-panel-${p}`;zT(e);const{register:v,index:b,descendants:y}=RT({disabled:t&&!n}),{isOpen:x,onChange:w}=s(b===-1?null:b);FT({isOpen:x,isDisabled:t});const k=()=>{w==null||w(!0)},_=()=>{w==null||w(!1)},j=d.useCallback(()=>{w==null||w(!x),i(b)},[b,i,x,w]),I=d.useCallback(R=>{const O={ArrowDown:()=>{const T=y.nextEnabled(b);T==null||T.node.focus()},ArrowUp:()=>{const T=y.prevEnabled(b);T==null||T.node.focus()},Home:()=>{const T=y.firstEnabled();T==null||T.node.focus()},End:()=>{const T=y.lastEnabled();T==null||T.node.focus()}}[R.key];O&&(R.preventDefault(),O(R))},[y,b]),E=d.useCallback(()=>{i(b)},[i,b]),M=d.useCallback(function(A={},O=null){return{...A,type:"button",ref:Ct(v,l,O),id:h,disabled:!!t,"aria-expanded":!!x,"aria-controls":m,onClick:Fe(A.onClick,j),onFocus:Fe(A.onFocus,E),onKeyDown:Fe(A.onKeyDown,I)}},[h,t,x,j,E,I,m,v]),D=d.useCallback(function(A={},O=null){return{...A,ref:O,role:"region",id:m,"aria-labelledby":h,hidden:!x}},[h,x,m]);return{isOpen:x,isDisabled:t,isFocusable:n,onOpen:k,onClose:_,getButtonProps:M,getPanelProps:D,htmlProps:o}}function $T(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;xd({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function LT(e){xd({condition:!!(e.allowMultiple&&e.allowToggle),message:"If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not"})}function zT(e){xd({condition:!!(e.isFocusable&&!e.isDisabled),message:`Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well. + `})}function FT(e){xd({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function $l(e){const{isOpen:t,isDisabled:n}=Jb(),{reduceMotion:r}=ex(),o=et("chakra-accordion__icon",e.className),s=Cm(),i={opacity:n?.4:1,transform:t?"rotate(-180deg)":void 0,transition:r?void 0:"transform 0.2s",transformOrigin:"center",...s.icon};return a.jsx(Tn,{viewBox:"0 0 24 24","aria-hidden":!0,className:o,__css:i,...e,children:a.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})})}$l.displayName="AccordionIcon";var Ll=Pe(function(t,n){const{children:r,className:o}=t,{htmlProps:s,...i}=TT(t),u={...Cm().container,overflowAnchor:"none"},p=d.useMemo(()=>i,[i]);return a.jsx(MT,{value:p,children:a.jsx(_e.div,{ref:n,...s,className:et("chakra-accordion__item",o),__css:u,children:typeof r=="function"?r({isExpanded:!!i.isOpen,isDisabled:!!i.isDisabled}):r})})});Ll.displayName="AccordionItem";var Gl={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},ki={enter:{duration:.2,ease:Gl.easeOut},exit:{duration:.1,ease:Gl.easeIn}},Xs={enter:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.enter}),exit:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.exit})},BT=e=>e!=null&&parseInt(e.toString(),10)>0,Tw={exit:{height:{duration:.2,ease:Gl.ease},opacity:{duration:.3,ease:Gl.ease}},enter:{height:{duration:.3,ease:Gl.ease},opacity:{duration:.4,ease:Gl.ease}}},HT={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:BT(t)?1:0},height:t,transitionEnd:r==null?void 0:r.exit,transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(Tw.exit,o)}},enter:({animateOpacity:e,endingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:1},height:t,transitionEnd:r==null?void 0:r.enter,transition:(s=n==null?void 0:n.enter)!=null?s:Xs.enter(Tw.enter,o)}}},wm=d.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:o=!0,startingHeight:s=0,endingHeight:i="auto",style:l,className:u,transition:p,transitionEnd:h,...m}=e,[v,b]=d.useState(!1);d.useEffect(()=>{const _=setTimeout(()=>{b(!0)});return()=>clearTimeout(_)},[]),xd({condition:Number(s)>0&&!!r,message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const y=parseFloat(s.toString())>0,x={startingHeight:s,endingHeight:i,animateOpacity:o,transition:v?p:{enter:{duration:0}},transitionEnd:{enter:h==null?void 0:h.enter,exit:r?h==null?void 0:h.exit:{...h==null?void 0:h.exit,display:y?"block":"none"}}},w=r?n:!0,k=n||r?"enter":"exit";return a.jsx(nr,{initial:!1,custom:x,children:w&&a.jsx(vn.div,{ref:t,...m,className:et("chakra-collapse",u),style:{overflow:"hidden",display:"block",...l},custom:x,variants:HT,initial:r?"exit":!1,animate:k,exit:"exit"})})});wm.displayName="Collapse";var WT={enter:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:1,transition:(r=e==null?void 0:e.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:0,transition:(r=e==null?void 0:e.exit)!=null?r:Xs.exit(ki.exit,n),transitionEnd:t==null?void 0:t.exit}}},T5={initial:"exit",animate:"enter",exit:"exit",variants:WT},VT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,className:s,transition:i,transitionEnd:l,delay:u,...p}=t,h=o||r?"enter":"exit",m=r?o&&r:!0,v={transition:i,transitionEnd:l,delay:u};return a.jsx(nr,{custom:v,children:m&&a.jsx(vn.div,{ref:n,className:et("chakra-fade",s),custom:v,...T5,animate:h,...p})})});VT.displayName="Fade";var UT={exit:({reverse:e,initialScale:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,...e?{scale:t,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{scale:t,...r==null?void 0:r.exit}},transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(ki.exit,o)}},enter:({transitionEnd:e,transition:t,delay:n})=>{var r;return{opacity:1,scale:1,transition:(r=t==null?void 0:t.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:e==null?void 0:e.enter}}},$5={initial:"exit",animate:"enter",exit:"exit",variants:UT},GT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,initialScale:i=.95,className:l,transition:u,transitionEnd:p,delay:h,...m}=t,v=r?o&&r:!0,b=o||r?"enter":"exit",y={initialScale:i,reverse:s,transition:u,transitionEnd:p,delay:h};return a.jsx(nr,{custom:y,children:v&&a.jsx(vn.div,{ref:n,className:et("chakra-offset-slide",l),...$5,animate:b,custom:y,...m})})});GT.displayName="ScaleFade";var KT={initial:({offsetX:e,offsetY:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,x:e,y:t,transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(ki.exit,o),transitionEnd:r==null?void 0:r.exit}},enter:({transition:e,transitionEnd:t,delay:n})=>{var r;return{opacity:1,x:0,y:0,transition:(r=e==null?void 0:e.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({offsetY:e,offsetX:t,transition:n,transitionEnd:r,reverse:o,delay:s})=>{var i;const l={x:t,y:e};return{opacity:0,transition:(i=n==null?void 0:n.exit)!=null?i:Xs.exit(ki.exit,s),...o?{...l,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{...l,...r==null?void 0:r.exit}}}}},v1={initial:"initial",animate:"enter",exit:"exit",variants:KT},qT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,className:i,offsetX:l=0,offsetY:u=8,transition:p,transitionEnd:h,delay:m,...v}=t,b=r?o&&r:!0,y=o||r?"enter":"exit",x={offsetX:l,offsetY:u,reverse:s,transition:p,transitionEnd:h,delay:m};return a.jsx(nr,{custom:x,children:b&&a.jsx(vn.div,{ref:n,className:et("chakra-offset-slide",i),custom:x,...v1,animate:y,...v})})});qT.displayName="SlideFade";var zl=Pe(function(t,n){const{className:r,motionProps:o,...s}=t,{reduceMotion:i}=ex(),{getPanelProps:l,isOpen:u}=Jb(),p=l(s,n),h=et("chakra-accordion__panel",r),m=Cm();i||delete p.hidden;const v=a.jsx(_e.div,{...p,__css:m.panel,className:h});return i?v:a.jsx(wm,{in:u,...o,children:v})});zl.displayName="AccordionPanel";var L5=Pe(function({children:t,reduceMotion:n,...r},o){const s=Wn("Accordion",r),i=Yt(r),{htmlProps:l,descendants:u,...p}=AT(i),h=d.useMemo(()=>({...p,reduceMotion:!!n}),[p,n]);return a.jsx(OT,{value:u,children:a.jsx(NT,{value:h,children:a.jsx(ET,{value:s,children:a.jsx(_e.div,{ref:o,...l,className:et("chakra-accordion",r.className),__css:s.root,children:t})})})})});L5.displayName="Accordion";function Id(e){return d.Children.toArray(e).filter(t=>d.isValidElement(t))}var[XT,YT]=$t({strict:!1,name:"ButtonGroupContext"}),QT={horizontal:{"> *:first-of-type:not(:last-of-type)":{borderEndRadius:0},"> *:not(:first-of-type):not(:last-of-type)":{borderRadius:0},"> *:not(:first-of-type):last-of-type":{borderStartRadius:0}},vertical:{"> *:first-of-type:not(:last-of-type)":{borderBottomRadius:0},"> *:not(:first-of-type):not(:last-of-type)":{borderRadius:0},"> *:not(:first-of-type):last-of-type":{borderTopRadius:0}}},ZT={horizontal:e=>({"& > *:not(style) ~ *:not(style)":{marginStart:e}}),vertical:e=>({"& > *:not(style) ~ *:not(style)":{marginTop:e}})},mn=Pe(function(t,n){const{size:r,colorScheme:o,variant:s,className:i,spacing:l="0.5rem",isAttached:u,isDisabled:p,orientation:h="horizontal",...m}=t,v=et("chakra-button__group",i),b=d.useMemo(()=>({size:r,colorScheme:o,variant:s,isDisabled:p}),[r,o,s,p]);let y={display:"inline-flex",...u?QT[h]:ZT[h](l)};const x=h==="vertical";return a.jsx(XT,{value:b,children:a.jsx(_e.div,{ref:n,role:"group",__css:y,className:v,"data-attached":u?"":void 0,"data-orientation":h,flexDir:x?"column":void 0,...m})})});mn.displayName="ButtonGroup";function JT(e){const[t,n]=d.useState(!e);return{ref:d.useCallback(s=>{s&&n(s.tagName==="BUTTON")},[]),type:t?"button":void 0}}function b1(e){const{children:t,className:n,...r}=e,o=d.isValidElement(t)?d.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,s=et("chakra-button__icon",n);return a.jsx(_e.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:s,children:o})}b1.displayName="ButtonIcon";function eh(e){const{label:t,placement:n,spacing:r="0.5rem",children:o=a.jsx(Xi,{color:"currentColor",width:"1em",height:"1em"}),className:s,__css:i,...l}=e,u=et("chakra-button__spinner",s),p=n==="start"?"marginEnd":"marginStart",h=d.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[p]:t?r:0,fontSize:"1em",lineHeight:"normal",...i}),[i,t,p,r]);return a.jsx(_e.div,{className:u,...l,__css:h,children:o})}eh.displayName="ButtonSpinner";var bc=Pe((e,t)=>{const n=YT(),r=Qa("Button",{...n,...e}),{isDisabled:o=n==null?void 0:n.isDisabled,isLoading:s,isActive:i,children:l,leftIcon:u,rightIcon:p,loadingText:h,iconSpacing:m="0.5rem",type:v,spinner:b,spinnerPlacement:y="start",className:x,as:w,...k}=Yt(e),_=d.useMemo(()=>{const M={...r==null?void 0:r._focus,zIndex:1};return{display:"inline-flex",appearance:"none",alignItems:"center",justifyContent:"center",userSelect:"none",position:"relative",whiteSpace:"nowrap",verticalAlign:"middle",outline:"none",...r,...!!n&&{_focus:M}}},[r,n]),{ref:j,type:I}=JT(w),E={rightIcon:p,leftIcon:u,iconSpacing:m,children:l};return a.jsxs(_e.button,{ref:_T(t,j),as:w,type:v??I,"data-active":at(i),"data-loading":at(s),__css:_,className:et("chakra-button",x),...k,disabled:o||s,children:[s&&y==="start"&&a.jsx(eh,{className:"chakra-button__spinner--start",label:h,placement:"start",spacing:m,children:b}),s?h||a.jsx(_e.span,{opacity:0,children:a.jsx($w,{...E})}):a.jsx($w,{...E}),s&&y==="end"&&a.jsx(eh,{className:"chakra-button__spinner--end",label:h,placement:"end",spacing:m,children:b})]})});bc.displayName="Button";function $w(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:o}=e;return a.jsxs(a.Fragment,{children:[t&&a.jsx(b1,{marginEnd:o,children:t}),r,n&&a.jsx(b1,{marginStart:o,children:n})]})}var ps=Pe((e,t)=>{const{icon:n,children:r,isRound:o,"aria-label":s,...i}=e,l=n||r,u=d.isValidElement(l)?d.cloneElement(l,{"aria-hidden":!0,focusable:!1}):null;return a.jsx(bc,{padding:"0",borderRadius:o?"full":void 0,ref:t,"aria-label":s,...i,children:u})});ps.displayName="IconButton";var[I0e,e$]=$t({name:"CheckboxGroupContext",strict:!1});function t$(e){const[t,n]=d.useState(e),[r,o]=d.useState(!1);return e!==t&&(o(!0),n(e)),r}function n$(e){return a.jsx(_e.svg,{width:"1.2em",viewBox:"0 0 12 10",style:{fill:"none",strokeWidth:2,stroke:"currentColor",strokeDasharray:16},...e,children:a.jsx("polyline",{points:"1.5 6 4.5 9 10.5 1"})})}function r$(e){return a.jsx(_e.svg,{width:"1.2em",viewBox:"0 0 24 24",style:{stroke:"currentColor",strokeWidth:4},...e,children:a.jsx("line",{x1:"21",x2:"3",y1:"12",y2:"12"})})}function o$(e){const{isIndeterminate:t,isChecked:n,...r}=e,o=t?r$:n$;return n||t?a.jsx(_e.div,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:a.jsx(o,{...r})}):null}var[s$,z5]=$t({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[a$,Ed]=$t({strict:!1,name:"FormControlContext"});function i$(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:o,isReadOnly:s,...i}=e,l=d.useId(),u=t||`field-${l}`,p=`${u}-label`,h=`${u}-feedback`,m=`${u}-helptext`,[v,b]=d.useState(!1),[y,x]=d.useState(!1),[w,k]=d.useState(!1),_=d.useCallback((D={},R=null)=>({id:m,...D,ref:Ct(R,A=>{A&&x(!0)})}),[m]),j=d.useCallback((D={},R=null)=>({...D,ref:R,"data-focus":at(w),"data-disabled":at(o),"data-invalid":at(r),"data-readonly":at(s),id:D.id!==void 0?D.id:p,htmlFor:D.htmlFor!==void 0?D.htmlFor:u}),[u,o,w,r,s,p]),I=d.useCallback((D={},R=null)=>({id:h,...D,ref:Ct(R,A=>{A&&b(!0)}),"aria-live":"polite"}),[h]),E=d.useCallback((D={},R=null)=>({...D,...i,ref:R,role:"group"}),[i]),M=d.useCallback((D={},R=null)=>({...D,ref:R,role:"presentation","aria-hidden":!0,children:D.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!s,isDisabled:!!o,isFocused:!!w,onFocus:()=>k(!0),onBlur:()=>k(!1),hasFeedbackText:v,setHasFeedbackText:b,hasHelpText:y,setHasHelpText:x,id:u,labelId:p,feedbackId:h,helpTextId:m,htmlProps:i,getHelpTextProps:_,getErrorMessageProps:I,getRootProps:E,getLabelProps:j,getRequiredIndicatorProps:M}}var sn=Pe(function(t,n){const r=Wn("Form",t),o=Yt(t),{getRootProps:s,htmlProps:i,...l}=i$(o),u=et("chakra-form-control",t.className);return a.jsx(a$,{value:l,children:a.jsx(s$,{value:r,children:a.jsx(_e.div,{...s({},n),className:u,__css:r.container})})})});sn.displayName="FormControl";var F5=Pe(function(t,n){const r=Ed(),o=z5(),s=et("chakra-form__helper-text",t.className);return a.jsx(_e.div,{...r==null?void 0:r.getHelpTextProps(t,n),__css:o.helperText,className:s})});F5.displayName="FormHelperText";var Hn=Pe(function(t,n){var r;const o=Qa("FormLabel",t),s=Yt(t),{className:i,children:l,requiredIndicator:u=a.jsx(B5,{}),optionalIndicator:p=null,...h}=s,m=Ed(),v=(r=m==null?void 0:m.getLabelProps(h,n))!=null?r:{ref:n,...h};return a.jsxs(_e.label,{...v,className:et("chakra-form__label",s.className),__css:{display:"block",textAlign:"start",...o},children:[l,m!=null&&m.isRequired?u:p]})});Hn.displayName="FormLabel";var B5=Pe(function(t,n){const r=Ed(),o=z5();if(!(r!=null&&r.isRequired))return null;const s=et("chakra-form__required-indicator",t.className);return a.jsx(_e.span,{...r==null?void 0:r.getRequiredIndicatorProps(t,n),__css:o.requiredIndicator,className:s})});B5.displayName="RequiredIndicator";function tx(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:o,...s}=nx(e);return{...s,disabled:t,readOnly:r,required:o,"aria-invalid":po(n),"aria-required":po(o),"aria-readonly":po(r)}}function nx(e){var t,n,r;const o=Ed(),{id:s,disabled:i,readOnly:l,required:u,isRequired:p,isInvalid:h,isReadOnly:m,isDisabled:v,onFocus:b,onBlur:y,...x}=e,w=e["aria-describedby"]?[e["aria-describedby"]]:[];return o!=null&&o.hasFeedbackText&&(o!=null&&o.isInvalid)&&w.push(o.feedbackId),o!=null&&o.hasHelpText&&w.push(o.helpTextId),{...x,"aria-describedby":w.join(" ")||void 0,id:s??(o==null?void 0:o.id),isDisabled:(t=i??v)!=null?t:o==null?void 0:o.isDisabled,isReadOnly:(n=l??m)!=null?n:o==null?void 0:o.isReadOnly,isRequired:(r=u??p)!=null?r:o==null?void 0:o.isRequired,isInvalid:h??(o==null?void 0:o.isInvalid),onFocus:Fe(o==null?void 0:o.onFocus,b),onBlur:Fe(o==null?void 0:o.onBlur,y)}}var rx={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},H5=_e("span",{baseStyle:rx});H5.displayName="VisuallyHidden";var l$=_e("input",{baseStyle:rx});l$.displayName="VisuallyHiddenInput";const c$=()=>typeof document<"u";let Lw=!1,Md=null,zi=!1,x1=!1;const y1=new Set;function ox(e,t){y1.forEach(n=>n(e,t))}const u$=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function d$(e){return!(e.metaKey||!u$&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function zw(e){zi=!0,d$(e)&&(Md="keyboard",ox("keyboard",e))}function jl(e){if(Md="pointer",e.type==="mousedown"||e.type==="pointerdown"){zi=!0;const t=e.composedPath?e.composedPath()[0]:e.target;let n=!1;try{n=t.matches(":focus-visible")}catch{}if(n)return;ox("pointer",e)}}function f$(e){return e.mozInputSource===0&&e.isTrusted?!0:e.detail===0&&!e.pointerType}function p$(e){f$(e)&&(zi=!0,Md="virtual")}function h$(e){e.target===window||e.target===document||(!zi&&!x1&&(Md="virtual",ox("virtual",e)),zi=!1,x1=!1)}function m$(){zi=!1,x1=!0}function Fw(){return Md!=="pointer"}function g$(){if(!c$()||Lw)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){zi=!0,e.apply(this,n)},document.addEventListener("keydown",zw,!0),document.addEventListener("keyup",zw,!0),document.addEventListener("click",p$,!0),window.addEventListener("focus",h$,!0),window.addEventListener("blur",m$,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",jl,!0),document.addEventListener("pointermove",jl,!0),document.addEventListener("pointerup",jl,!0)):(document.addEventListener("mousedown",jl,!0),document.addEventListener("mousemove",jl,!0),document.addEventListener("mouseup",jl,!0)),Lw=!0}function W5(e){g$(),e(Fw());const t=()=>e(Fw());return y1.add(t),()=>{y1.delete(t)}}function v$(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function V5(e={}){const t=nx(e),{isDisabled:n,isReadOnly:r,isRequired:o,isInvalid:s,id:i,onBlur:l,onFocus:u,"aria-describedby":p}=t,{defaultChecked:h,isChecked:m,isFocusable:v,onChange:b,isIndeterminate:y,name:x,value:w,tabIndex:k=void 0,"aria-label":_,"aria-labelledby":j,"aria-invalid":I,...E}=e,M=v$(E,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),D=nn(b),R=nn(l),A=nn(u),[O,T]=d.useState(!1),[K,F]=d.useState(!1),[V,X]=d.useState(!1),[W,z]=d.useState(!1);d.useEffect(()=>W5(T),[]);const Y=d.useRef(null),[B,q]=d.useState(!0),[re,Q]=d.useState(!!h),le=m!==void 0,se=le?m:re,U=d.useCallback(fe=>{if(r||n){fe.preventDefault();return}le||Q(se?fe.target.checked:y?!0:fe.target.checked),D==null||D(fe)},[r,n,se,le,y,D]);Zl(()=>{Y.current&&(Y.current.indeterminate=!!y)},[y]),ca(()=>{n&&F(!1)},[n,F]),Zl(()=>{const fe=Y.current;if(!(fe!=null&&fe.form))return;const De=()=>{Q(!!h)};return fe.form.addEventListener("reset",De),()=>{var je;return(je=fe.form)==null?void 0:je.removeEventListener("reset",De)}},[]);const G=n&&!v,te=d.useCallback(fe=>{fe.key===" "&&z(!0)},[z]),ae=d.useCallback(fe=>{fe.key===" "&&z(!1)},[z]);Zl(()=>{if(!Y.current)return;Y.current.checked!==se&&Q(Y.current.checked)},[Y.current]);const oe=d.useCallback((fe={},De=null)=>{const je=Be=>{K&&Be.preventDefault(),z(!0)};return{...fe,ref:De,"data-active":at(W),"data-hover":at(V),"data-checked":at(se),"data-focus":at(K),"data-focus-visible":at(K&&O),"data-indeterminate":at(y),"data-disabled":at(n),"data-invalid":at(s),"data-readonly":at(r),"aria-hidden":!0,onMouseDown:Fe(fe.onMouseDown,je),onMouseUp:Fe(fe.onMouseUp,()=>z(!1)),onMouseEnter:Fe(fe.onMouseEnter,()=>X(!0)),onMouseLeave:Fe(fe.onMouseLeave,()=>X(!1))}},[W,se,n,K,O,V,y,s,r]),pe=d.useCallback((fe={},De=null)=>({...fe,ref:De,"data-active":at(W),"data-hover":at(V),"data-checked":at(se),"data-focus":at(K),"data-focus-visible":at(K&&O),"data-indeterminate":at(y),"data-disabled":at(n),"data-invalid":at(s),"data-readonly":at(r)}),[W,se,n,K,O,V,y,s,r]),ue=d.useCallback((fe={},De=null)=>({...M,...fe,ref:Ct(De,je=>{je&&q(je.tagName==="LABEL")}),onClick:Fe(fe.onClick,()=>{var je;B||((je=Y.current)==null||je.click(),requestAnimationFrame(()=>{var Be;(Be=Y.current)==null||Be.focus({preventScroll:!0})}))}),"data-disabled":at(n),"data-checked":at(se),"data-invalid":at(s)}),[M,n,se,s,B]),me=d.useCallback((fe={},De=null)=>({...fe,ref:Ct(Y,De),type:"checkbox",name:x,value:w,id:i,tabIndex:k,onChange:Fe(fe.onChange,U),onBlur:Fe(fe.onBlur,R,()=>F(!1)),onFocus:Fe(fe.onFocus,A,()=>F(!0)),onKeyDown:Fe(fe.onKeyDown,te),onKeyUp:Fe(fe.onKeyUp,ae),required:o,checked:se,disabled:G,readOnly:r,"aria-label":_,"aria-labelledby":j,"aria-invalid":I?!!I:s,"aria-describedby":p,"aria-disabled":n,style:rx}),[x,w,i,U,R,A,te,ae,o,se,G,r,_,j,I,s,p,n,k]),Ce=d.useCallback((fe={},De=null)=>({...fe,ref:De,onMouseDown:Fe(fe.onMouseDown,b$),"data-disabled":at(n),"data-checked":at(se),"data-invalid":at(s)}),[se,n,s]);return{state:{isInvalid:s,isFocused:K,isChecked:se,isActive:W,isHovered:V,isIndeterminate:y,isDisabled:n,isReadOnly:r,isRequired:o},getRootProps:ue,getCheckboxProps:oe,getIndicatorProps:pe,getInputProps:me,getLabelProps:Ce,htmlProps:M}}function b$(e){e.preventDefault(),e.stopPropagation()}var x$={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},y$={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},C$=ia({from:{opacity:0,strokeDashoffset:16,transform:"scale(0.95)"},to:{opacity:1,strokeDashoffset:0,transform:"scale(1)"}}),w$=ia({from:{opacity:0},to:{opacity:1}}),S$=ia({from:{transform:"scaleX(0.65)"},to:{transform:"scaleX(1)"}}),Sm=Pe(function(t,n){const r=e$(),o={...r,...t},s=Wn("Checkbox",o),i=Yt(t),{spacing:l="0.5rem",className:u,children:p,iconColor:h,iconSize:m,icon:v=a.jsx(o$,{}),isChecked:b,isDisabled:y=r==null?void 0:r.isDisabled,onChange:x,inputProps:w,...k}=i;let _=b;r!=null&&r.value&&i.value&&(_=r.value.includes(i.value));let j=x;r!=null&&r.onChange&&i.value&&(j=fm(r.onChange,x));const{state:I,getInputProps:E,getCheckboxProps:M,getLabelProps:D,getRootProps:R}=V5({...k,isDisabled:y,isChecked:_,onChange:j}),A=t$(I.isChecked),O=d.useMemo(()=>({animation:A?I.isIndeterminate?`${w$} 20ms linear, ${S$} 200ms linear`:`${C$} 200ms linear`:void 0,fontSize:m,color:h,...s.icon}),[h,m,A,I.isIndeterminate,s.icon]),T=d.cloneElement(v,{__css:O,isIndeterminate:I.isIndeterminate,isChecked:I.isChecked});return a.jsxs(_e.label,{__css:{...y$,...s.container},className:et("chakra-checkbox",u),...R(),children:[a.jsx("input",{className:"chakra-checkbox__input",...E(w,n)}),a.jsx(_e.span,{__css:{...x$,...s.control},className:"chakra-checkbox__control",...M(),children:T}),p&&a.jsx(_e.span,{className:"chakra-checkbox__label",...D(),__css:{marginStart:l,...s.label},children:p})]})});Sm.displayName="Checkbox";function k$(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function sx(e,t){let n=k$(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function C1(e){if(!Number.isFinite(e))return 0;let t=1,n=0;for(;Math.round(e*t)/t!==e;)t*=10,n+=1;return n}function th(e,t,n){return(e-t)*100/(n-t)}function U5(e,t,n){return(n-t)*e+t}function w1(e,t,n){const r=Math.round((e-t)/n)*n+t,o=C1(n);return sx(r,o)}function tc(e,t,n){return e==null?e:(n{var O;return r==null?"":(O=nv(r,s,n))!=null?O:""}),v=typeof o<"u",b=v?o:h,y=G5(Ma(b),s),x=n??y,w=d.useCallback(O=>{O!==b&&(v||m(O.toString()),p==null||p(O.toString(),Ma(O)))},[p,v,b]),k=d.useCallback(O=>{let T=O;return u&&(T=tc(T,i,l)),sx(T,x)},[x,u,l,i]),_=d.useCallback((O=s)=>{let T;b===""?T=Ma(O):T=Ma(b)+O,T=k(T),w(T)},[k,s,w,b]),j=d.useCallback((O=s)=>{let T;b===""?T=Ma(-O):T=Ma(b)-O,T=k(T),w(T)},[k,s,w,b]),I=d.useCallback(()=>{var O;let T;r==null?T="":T=(O=nv(r,s,n))!=null?O:i,w(T)},[r,n,s,w,i]),E=d.useCallback(O=>{var T;const K=(T=nv(O,s,x))!=null?T:i;w(K)},[x,s,w,i]),M=Ma(b);return{isOutOfRange:M>l||M" `}),[P$,ax]=$t({name:"EditableContext",errorMessage:"useEditableContext: context is undefined. Seems you forgot to wrap the editable components in ``"}),q5={fontSize:"inherit",fontWeight:"inherit",textAlign:"inherit",bg:"transparent"},km=Pe(function(t,n){const{getInputProps:r}=ax(),o=K5(),s=r(t,n),i=et("chakra-editable__input",t.className);return a.jsx(_e.input,{...s,__css:{outline:0,...q5,...o.input},className:i})});km.displayName="EditableInput";var _m=Pe(function(t,n){const{getPreviewProps:r}=ax(),o=K5(),s=r(t,n),i=et("chakra-editable__preview",t.className);return a.jsx(_e.span,{...s,__css:{cursor:"text",display:"inline-block",...q5,...o.preview},className:i})});_m.displayName="EditablePreview";function _i(e,t,n,r){const o=nn(n);return d.useEffect(()=>{const s=typeof e=="function"?e():e??document;if(!(!n||!s))return s.addEventListener(t,o,r),()=>{s.removeEventListener(t,o,r)}},[t,e,r,o,n]),()=>{const s=typeof e=="function"?e():e??document;s==null||s.removeEventListener(t,o,r)}}function I$(e){return"current"in e}var X5=()=>typeof window<"u";function E$(){var e;const t=navigator.userAgentData;return(e=t==null?void 0:t.platform)!=null?e:navigator.platform}var M$=e=>X5()&&e.test(navigator.vendor),O$=e=>X5()&&e.test(E$()),D$=()=>O$(/mac|iphone|ipad|ipod/i),R$=()=>D$()&&M$(/apple/i);function Y5(e){const{ref:t,elements:n,enabled:r}=e,o=()=>{var s,i;return(i=(s=t.current)==null?void 0:s.ownerDocument)!=null?i:document};_i(o,"pointerdown",s=>{if(!R$()||!r)return;const i=s.target,u=(n??[t]).some(p=>{const h=I$(p)?p.current:p;return(h==null?void 0:h.contains(i))||h===i});o().activeElement!==i&&u&&(s.preventDefault(),i.focus())})}function Bw(e,t){return e?e===t||e.contains(t):!1}function A$(e={}){const{onChange:t,onCancel:n,onSubmit:r,onBlur:o,value:s,isDisabled:i,defaultValue:l,startWithEditView:u,isPreviewFocusable:p=!0,submitOnBlur:h=!0,selectAllOnFocus:m=!0,placeholder:v,onEdit:b,finalFocusRef:y,...x}=e,w=nn(b),k=!!(u&&!i),[_,j]=d.useState(k),[I,E]=Ac({defaultValue:l||"",value:s,onChange:t}),[M,D]=d.useState(I),R=d.useRef(null),A=d.useRef(null),O=d.useRef(null),T=d.useRef(null),K=d.useRef(null);Y5({ref:R,enabled:_,elements:[T,K]});const F=!_&&!i;Zl(()=>{var oe,pe;_&&((oe=R.current)==null||oe.focus(),m&&((pe=R.current)==null||pe.select()))},[]),ca(()=>{var oe,pe,ue,me;if(!_){y?(oe=y.current)==null||oe.focus():(pe=O.current)==null||pe.focus();return}(ue=R.current)==null||ue.focus(),m&&((me=R.current)==null||me.select()),w==null||w()},[_,w,m]);const V=d.useCallback(()=>{F&&j(!0)},[F]),X=d.useCallback(()=>{D(I)},[I]),W=d.useCallback(()=>{j(!1),E(M),n==null||n(M),o==null||o(M)},[n,o,E,M]),z=d.useCallback(()=>{j(!1),D(I),r==null||r(I),o==null||o(M)},[I,r,o,M]);d.useEffect(()=>{if(_)return;const oe=R.current;(oe==null?void 0:oe.ownerDocument.activeElement)===oe&&(oe==null||oe.blur())},[_]);const Y=d.useCallback(oe=>{E(oe.currentTarget.value)},[E]),B=d.useCallback(oe=>{const pe=oe.key,me={Escape:W,Enter:Ce=>{!Ce.shiftKey&&!Ce.metaKey&&z()}}[pe];me&&(oe.preventDefault(),me(oe))},[W,z]),q=d.useCallback(oe=>{const pe=oe.key,me={Escape:W}[pe];me&&(oe.preventDefault(),me(oe))},[W]),re=I.length===0,Q=d.useCallback(oe=>{var pe;if(!_)return;const ue=oe.currentTarget.ownerDocument,me=(pe=oe.relatedTarget)!=null?pe:ue.activeElement,Ce=Bw(T.current,me),ge=Bw(K.current,me);!Ce&&!ge&&(h?z():W())},[h,z,W,_]),le=d.useCallback((oe={},pe=null)=>{const ue=F&&p?0:void 0;return{...oe,ref:Ct(pe,A),children:re?v:I,hidden:_,"aria-disabled":po(i),tabIndex:ue,onFocus:Fe(oe.onFocus,V,X)}},[i,_,F,p,re,V,X,v,I]),se=d.useCallback((oe={},pe=null)=>({...oe,hidden:!_,placeholder:v,ref:Ct(pe,R),disabled:i,"aria-disabled":po(i),value:I,onBlur:Fe(oe.onBlur,Q),onChange:Fe(oe.onChange,Y),onKeyDown:Fe(oe.onKeyDown,B),onFocus:Fe(oe.onFocus,X)}),[i,_,Q,Y,B,X,v,I]),U=d.useCallback((oe={},pe=null)=>({...oe,hidden:!_,placeholder:v,ref:Ct(pe,R),disabled:i,"aria-disabled":po(i),value:I,onBlur:Fe(oe.onBlur,Q),onChange:Fe(oe.onChange,Y),onKeyDown:Fe(oe.onKeyDown,q),onFocus:Fe(oe.onFocus,X)}),[i,_,Q,Y,q,X,v,I]),G=d.useCallback((oe={},pe=null)=>({"aria-label":"Edit",...oe,type:"button",onClick:Fe(oe.onClick,V),ref:Ct(pe,O),disabled:i}),[V,i]),te=d.useCallback((oe={},pe=null)=>({...oe,"aria-label":"Submit",ref:Ct(K,pe),type:"button",onClick:Fe(oe.onClick,z),disabled:i}),[z,i]),ae=d.useCallback((oe={},pe=null)=>({"aria-label":"Cancel",id:"cancel",...oe,ref:Ct(T,pe),type:"button",onClick:Fe(oe.onClick,W),disabled:i}),[W,i]);return{isEditing:_,isDisabled:i,isValueEmpty:re,value:I,onEdit:V,onCancel:W,onSubmit:z,getPreviewProps:le,getInputProps:se,getTextareaProps:U,getEditButtonProps:G,getSubmitButtonProps:te,getCancelButtonProps:ae,htmlProps:x}}var jm=Pe(function(t,n){const r=Wn("Editable",t),o=Yt(t),{htmlProps:s,...i}=A$(o),{isEditing:l,onSubmit:u,onCancel:p,onEdit:h}=i,m=et("chakra-editable",t.className),v=Nb(t.children,{isEditing:l,onSubmit:u,onCancel:p,onEdit:h});return a.jsx(P$,{value:i,children:a.jsx(j$,{value:r,children:a.jsx(_e.div,{ref:n,...s,className:m,children:v})})})});jm.displayName="Editable";function Q5(){const{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}=ax();return{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}}var Z5={exports:{}},N$="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",T$=N$,$$=T$;function J5(){}function e3(){}e3.resetWarningCache=J5;var L$=function(){function e(r,o,s,i,l,u){if(u!==$$){var p=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw p.name="Invariant Violation",p}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:e3,resetWarningCache:J5};return n.PropTypes=n,n};Z5.exports=L$();var z$=Z5.exports;const Ht=Rc(z$);var S1="data-focus-lock",t3="data-focus-lock-disabled",F$="data-no-focus-lock",B$="data-autofocus-inside",H$="data-no-autofocus";function W$(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function V$(e,t){var n=d.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var o=n.value;o!==r&&(n.value=r,n.callback(r,o))}}}})[0];return n.callback=t,n.facade}function n3(e,t){return V$(t||null,function(n){return e.forEach(function(r){return W$(r,n)})})}var rv={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"},us=function(){return us=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&s[s.length-1])&&(p[0]===6||p[0]===2)){n=0;continue}if(p[0]===3&&(!s||p[1]>s[0]&&p[1]0)&&!(o=r.next()).done;)s.push(o.value)}catch(l){i={error:l}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(i)throw i.error}}return s}function k1(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,s;r=0}).sort(oL)},sL=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],ux=sL.join(","),aL="".concat(ux,", [data-focus-guard]"),y3=function(e,t){return _s((e.shadowRoot||e).children).reduce(function(n,r){return n.concat(r.matches(t?aL:ux)?[r]:[],y3(r))},[])},iL=function(e,t){var n;return e instanceof HTMLIFrameElement&&(!((n=e.contentDocument)===null||n===void 0)&&n.body)?Pm([e.contentDocument.body],t):[e]},Pm=function(e,t){return e.reduce(function(n,r){var o,s=y3(r,t),i=(o=[]).concat.apply(o,s.map(function(l){return iL(l,t)}));return n.concat(i,r.parentNode?_s(r.parentNode.querySelectorAll(ux)).filter(function(l){return l===r}):[])},[])},lL=function(e){var t=e.querySelectorAll("[".concat(B$,"]"));return _s(t).map(function(n){return Pm([n])}).reduce(function(n,r){return n.concat(r)},[])},dx=function(e,t){return _s(e).filter(function(n){return h3(t,n)}).filter(function(n){return tL(n)})},Ww=function(e,t){return t===void 0&&(t=new Map),_s(e).filter(function(n){return m3(t,n)})},j1=function(e,t,n){return x3(dx(Pm(e,n),t),!0,n)},Vw=function(e,t){return x3(dx(Pm(e),t),!1)},cL=function(e,t){return dx(lL(e),t)},nc=function(e,t){return e.shadowRoot?nc(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:_s(e.children).some(function(n){var r;if(n instanceof HTMLIFrameElement){var o=(r=n.contentDocument)===null||r===void 0?void 0:r.body;return o?nc(o,t):!1}return nc(n,t)})},uL=function(e){for(var t=new Set,n=e.length,r=0;r0&&t.add(o),(s&Node.DOCUMENT_POSITION_CONTAINS)>0&&t.add(r)}return e.filter(function(i,l){return!t.has(l)})},C3=function(e){return e.parentNode?C3(e.parentNode):e},fx=function(e){var t=nh(e);return t.filter(Boolean).reduce(function(n,r){var o=r.getAttribute(S1);return n.push.apply(n,o?uL(_s(C3(r).querySelectorAll("[".concat(S1,'="').concat(o,'"]:not([').concat(t3,'="disabled"])')))):[r]),n},[])},dL=function(e){try{return e()}catch{return}},Ju=function(e){if(e===void 0&&(e=document),!(!e||!e.activeElement)){var t=e.activeElement;return t.shadowRoot?Ju(t.shadowRoot):t instanceof HTMLIFrameElement&&dL(function(){return t.contentWindow.document})?Ju(t.contentWindow.document):t}},fL=function(e,t){return e===t},pL=function(e,t){return!!_s(e.querySelectorAll("iframe")).some(function(n){return fL(n,t)})},w3=function(e,t){return t===void 0&&(t=Ju(d3(e).ownerDocument)),!t||t.dataset&&t.dataset.focusGuard?!1:fx(e).some(function(n){return nc(n,t)||pL(n,t)})},hL=function(e){e===void 0&&(e=document);var t=Ju(e);return t?_s(e.querySelectorAll("[".concat(F$,"]"))).some(function(n){return nc(n,t)}):!1},mL=function(e,t){return t.filter(b3).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},px=function(e,t){return b3(e)&&e.name?mL(e,t):e},gL=function(e){var t=new Set;return e.forEach(function(n){return t.add(px(n,e))}),e.filter(function(n){return t.has(n)})},Uw=function(e){return e[0]&&e.length>1?px(e[0],e):e[0]},Gw=function(e,t){return e.length>1?e.indexOf(px(e[t],e)):t},S3="NEW_FOCUS",vL=function(e,t,n,r){var o=e.length,s=e[0],i=e[o-1],l=cx(n);if(!(n&&e.indexOf(n)>=0)){var u=n!==void 0?t.indexOf(n):-1,p=r?t.indexOf(r):u,h=r?e.indexOf(r):-1,m=u-p,v=t.indexOf(s),b=t.indexOf(i),y=gL(t),x=n!==void 0?y.indexOf(n):-1,w=x-(r?y.indexOf(r):u),k=Gw(e,0),_=Gw(e,o-1);if(u===-1||h===-1)return S3;if(!m&&h>=0)return h;if(u<=v&&l&&Math.abs(m)>1)return _;if(u>=b&&l&&Math.abs(m)>1)return k;if(m&&Math.abs(w)>1)return h;if(u<=v)return _;if(u>b)return k;if(m)return Math.abs(m)>1?h:(o+h+m)%o}},bL=function(e){return function(t){var n,r=(n=g3(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},xL=function(e,t,n){var r=e.map(function(s){var i=s.node;return i}),o=Ww(r.filter(bL(n)));return o&&o.length?Uw(o):Uw(Ww(t))},P1=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&P1(e.parentNode.host||e.parentNode,t),t},ov=function(e,t){for(var n=P1(e),r=P1(t),o=0;o=0)return s}return!1},k3=function(e,t,n){var r=nh(e),o=nh(t),s=r[0],i=!1;return o.filter(Boolean).forEach(function(l){i=ov(i||l,l)||i,n.filter(Boolean).forEach(function(u){var p=ov(s,u);p&&(!i||nc(p,i)?i=p:i=ov(p,i))})}),i},yL=function(e,t){return e.reduce(function(n,r){return n.concat(cL(r,t))},[])},CL=function(e,t){var n=new Map;return t.forEach(function(r){return n.set(r.node,r)}),e.map(function(r){return n.get(r)}).filter(rL)},wL=function(e,t){var n=Ju(nh(e).length>0?document:d3(e).ownerDocument),r=fx(e).filter(rh),o=k3(n||e,e,r),s=new Map,i=Vw(r,s),l=j1(r,s).filter(function(b){var y=b.node;return rh(y)});if(!(!l[0]&&(l=i,!l[0]))){var u=Vw([o],s).map(function(b){var y=b.node;return y}),p=CL(u,l),h=p.map(function(b){var y=b.node;return y}),m=vL(h,u,n,t);if(m===S3){var v=xL(i,h,yL(r,s));if(v)return{node:v};console.warn("focus-lock: cannot find any node to move focus into");return}return m===void 0?m:p[m]}},SL=function(e){var t=fx(e).filter(rh),n=k3(e,e,t),r=new Map,o=j1([n],r,!0),s=j1(t,r).filter(function(i){var l=i.node;return rh(l)}).map(function(i){var l=i.node;return l});return o.map(function(i){var l=i.node,u=i.index;return{node:l,index:u,lockItem:s.indexOf(l)>=0,guard:cx(l)}})},kL=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},sv=0,av=!1,_3=function(e,t,n){n===void 0&&(n={});var r=wL(e,t);if(!av&&r){if(sv>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),av=!0,setTimeout(function(){av=!1},1);return}sv++,kL(r.node,n.focusOptions),sv--}};function hx(e){setTimeout(e,1)}var _L=function(){return document&&document.activeElement===document.body},jL=function(){return _L()||hL()},rc=null,Kl=null,oc=null,ed=!1,PL=function(){return!0},IL=function(t){return(rc.whiteList||PL)(t)},EL=function(t,n){oc={observerNode:t,portaledElement:n}},ML=function(t){return oc&&oc.portaledElement===t};function Kw(e,t,n,r){var o=null,s=e;do{var i=r[s];if(i.guard)i.node.dataset.focusAutoGuard&&(o=i);else if(i.lockItem){if(s!==e)return;o=null}else break}while((s+=n)!==t);o&&(o.node.tabIndex=0)}var OL=function(t){return t&&"current"in t?t.current:t},DL=function(t){return t?!!ed:ed==="meanwhile"},RL=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},AL=function(t,n){return n.some(function(r){return RL(t,r,r)})},oh=function(){var t=!1;if(rc){var n=rc,r=n.observed,o=n.persistentFocus,s=n.autoFocus,i=n.shards,l=n.crossFrame,u=n.focusOptions,p=r||oc&&oc.portaledElement,h=document&&document.activeElement;if(p){var m=[p].concat(i.map(OL).filter(Boolean));if((!h||IL(h))&&(o||DL(l)||!jL()||!Kl&&s)&&(p&&!(w3(m)||h&&AL(h,m)||ML(h))&&(document&&!Kl&&h&&!s?(h.blur&&h.blur(),document.body.focus()):(t=_3(m,Kl,{focusOptions:u}),oc={})),ed=!1,Kl=document&&document.activeElement),document){var v=document&&document.activeElement,b=SL(m),y=b.map(function(x){var w=x.node;return w}).indexOf(v);y>-1&&(b.filter(function(x){var w=x.guard,k=x.node;return w&&k.dataset.focusAutoGuard}).forEach(function(x){var w=x.node;return w.removeAttribute("tabIndex")}),Kw(y,b.length,1,b),Kw(y,-1,-1,b))}}}return t},j3=function(t){oh()&&t&&(t.stopPropagation(),t.preventDefault())},mx=function(){return hx(oh)},NL=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||EL(r,n)},TL=function(){return null},P3=function(){ed="just",hx(function(){ed="meanwhile"})},$L=function(){document.addEventListener("focusin",j3),document.addEventListener("focusout",mx),window.addEventListener("blur",P3)},LL=function(){document.removeEventListener("focusin",j3),document.removeEventListener("focusout",mx),window.removeEventListener("blur",P3)};function zL(e){return e.filter(function(t){var n=t.disabled;return!n})}function FL(e){var t=e.slice(-1)[0];t&&!rc&&$L();var n=rc,r=n&&t&&t.id===n.id;rc=t,n&&!r&&(n.onDeactivation(),e.filter(function(o){var s=o.id;return s===n.id}).length||n.returnFocus(!t)),t?(Kl=null,(!r||n.observed!==t.observed)&&t.onActivation(),oh(),hx(oh)):(LL(),Kl=null)}l3.assignSyncMedium(NL);c3.assignMedium(mx);G$.assignMedium(function(e){return e({moveFocusInside:_3,focusInside:w3})});const BL=Y$(zL,FL)(TL);var I3=d.forwardRef(function(t,n){return d.createElement(u3,rn({sideCar:BL,ref:n},t))}),E3=u3.propTypes||{};E3.sideCar;KN(E3,["sideCar"]);I3.propTypes={};const qw=I3;function M3(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function gx(e){var t;if(!M3(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function HL(e){var t,n;return(n=(t=O3(e))==null?void 0:t.defaultView)!=null?n:window}function O3(e){return M3(e)?e.ownerDocument:document}function WL(e){return O3(e).activeElement}function VL(e){const t=e.ownerDocument.defaultView||window,{overflow:n,overflowX:r,overflowY:o}=t.getComputedStyle(e);return/auto|scroll|overlay|hidden/.test(n+o+r)}function UL(e){return e.localName==="html"?e:e.assignedSlot||e.parentElement||e.ownerDocument.documentElement}function D3(e){return["html","body","#document"].includes(e.localName)?e.ownerDocument.body:gx(e)&&VL(e)?e:D3(UL(e))}var R3=e=>e.hasAttribute("tabindex"),GL=e=>R3(e)&&e.tabIndex===-1;function KL(e){return!!e.getAttribute("disabled")||!!e.getAttribute("aria-disabled")}function A3(e){return e.parentElement&&A3(e.parentElement)?!0:e.hidden}function qL(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function N3(e){if(!gx(e)||A3(e)||KL(e))return!1;const{localName:t}=e;if(["input","select","textarea","button"].indexOf(t)>=0)return!0;const r={a:()=>e.hasAttribute("href"),audio:()=>e.hasAttribute("controls"),video:()=>e.hasAttribute("controls")};return t in r?r[t]():qL(e)?!0:R3(e)}function XL(e){return e?gx(e)&&N3(e)&&!GL(e):!1}var YL=["input:not(:disabled):not([disabled])","select:not(:disabled):not([disabled])","textarea:not(:disabled):not([disabled])","embed","iframe","object","a[href]","area[href]","button:not(:disabled):not([disabled])","[tabindex]","audio[controls]","video[controls]","*[tabindex]:not([aria-disabled])","*[contenteditable]"],QL=YL.join(),ZL=e=>e.offsetWidth>0&&e.offsetHeight>0;function T3(e){const t=Array.from(e.querySelectorAll(QL));return t.unshift(e),t.filter(n=>N3(n)&&ZL(n))}var Xw,JL=(Xw=qw.default)!=null?Xw:qw,$3=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:o,children:s,isDisabled:i,autoFocus:l,persistentFocus:u,lockFocusAcrossFrames:p}=e,h=d.useCallback(()=>{t!=null&&t.current?t.current.focus():r!=null&&r.current&&T3(r.current).length===0&&requestAnimationFrame(()=>{var y;(y=r.current)==null||y.focus()})},[t,r]),m=d.useCallback(()=>{var b;(b=n==null?void 0:n.current)==null||b.focus()},[n]),v=o&&!n;return a.jsx(JL,{crossFrame:p,persistentFocus:u,autoFocus:l,disabled:i,onActivation:h,onDeactivation:m,returnFocus:v,children:s})};$3.displayName="FocusLock";var ez=fT?d.useLayoutEffect:d.useEffect;function I1(e,t=[]){const n=d.useRef(e);return ez(()=>{n.current=e}),d.useCallback((...r)=>{var o;return(o=n.current)==null?void 0:o.call(n,...r)},t)}function tz(e,t,n,r){const o=I1(t);return d.useEffect(()=>{var s;const i=(s=$C(n))!=null?s:document;if(t)return i.addEventListener(e,o,r),()=>{i.removeEventListener(e,o,r)}},[e,n,r,o,t]),()=>{var s;((s=$C(n))!=null?s:document).removeEventListener(e,o,r)}}function nz(e,t){const n=d.useId();return d.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function rz(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function Mr(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=I1(n),i=I1(t),[l,u]=d.useState(e.defaultIsOpen||!1),[p,h]=rz(r,l),m=nz(o,"disclosure"),v=d.useCallback(()=>{p||u(!1),i==null||i()},[p,i]),b=d.useCallback(()=>{p||u(!0),s==null||s()},[p,s]),y=d.useCallback(()=>{(h?v:b)()},[h,b,v]);return{isOpen:!!h,onOpen:b,onClose:v,onToggle:y,isControlled:p,getButtonProps:(x={})=>({...x,"aria-expanded":h,"aria-controls":m,onClick:$7(x.onClick,y)}),getDisclosureProps:(x={})=>({...x,hidden:!h,id:m})}}var[oz,sz]=$t({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),L3=Pe(function(t,n){const r=Wn("Input",t),{children:o,className:s,...i}=Yt(t),l=et("chakra-input__group",s),u={},p=Id(o),h=r.field;p.forEach(v=>{var b,y;r&&(h&&v.type.id==="InputLeftElement"&&(u.paddingStart=(b=h.height)!=null?b:h.h),h&&v.type.id==="InputRightElement"&&(u.paddingEnd=(y=h.height)!=null?y:h.h),v.type.id==="InputRightAddon"&&(u.borderEndRadius=0),v.type.id==="InputLeftAddon"&&(u.borderStartRadius=0))});const m=p.map(v=>{var b,y;const x=Aj({size:((b=v.props)==null?void 0:b.size)||t.size,variant:((y=v.props)==null?void 0:y.variant)||t.variant});return v.type.id!=="Input"?d.cloneElement(v,x):d.cloneElement(v,Object.assign(x,u,v.props))});return a.jsx(_e.div,{className:l,ref:n,__css:{width:"100%",display:"flex",position:"relative",isolation:"isolate",...r.group},"data-group":!0,...i,children:a.jsx(oz,{value:r,children:m})})});L3.displayName="InputGroup";var az=_e("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),Im=Pe(function(t,n){var r,o;const{placement:s="left",...i}=t,l=sz(),u=l.field,h={[s==="left"?"insetStart":"insetEnd"]:"0",width:(r=u==null?void 0:u.height)!=null?r:u==null?void 0:u.h,height:(o=u==null?void 0:u.height)!=null?o:u==null?void 0:u.h,fontSize:u==null?void 0:u.fontSize,...l.element};return a.jsx(az,{ref:n,__css:h,...i})});Im.id="InputElement";Im.displayName="InputElement";var z3=Pe(function(t,n){const{className:r,...o}=t,s=et("chakra-input__left-element",r);return a.jsx(Im,{ref:n,placement:"left",className:s,...o})});z3.id="InputLeftElement";z3.displayName="InputLeftElement";var vx=Pe(function(t,n){const{className:r,...o}=t,s=et("chakra-input__right-element",r);return a.jsx(Im,{ref:n,placement:"right",className:s,...o})});vx.id="InputRightElement";vx.displayName="InputRightElement";var Em=Pe(function(t,n){const{htmlSize:r,...o}=t,s=Wn("Input",o),i=Yt(o),l=tx(i),u=et("chakra-input",t.className);return a.jsx(_e.input,{size:r,...l,__css:s.field,ref:n,className:u})});Em.displayName="Input";Em.id="Input";var Mm=Pe(function(t,n){const r=Qa("Link",t),{className:o,isExternal:s,...i}=Yt(t);return a.jsx(_e.a,{target:s?"_blank":void 0,rel:s?"noopener":void 0,ref:n,className:et("chakra-link",o),...i,__css:r})});Mm.displayName="Link";var[iz,F3]=$t({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),bx=Pe(function(t,n){const r=Wn("List",t),{children:o,styleType:s="none",stylePosition:i,spacing:l,...u}=Yt(t),p=Id(o),m=l?{["& > *:not(style) ~ *:not(style)"]:{mt:l}}:{};return a.jsx(iz,{value:r,children:a.jsx(_e.ul,{ref:n,listStyleType:s,listStylePosition:i,role:"list",__css:{...r.container,...m},...u,children:p})})});bx.displayName="List";var lz=Pe((e,t)=>{const{as:n,...r}=e;return a.jsx(bx,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});lz.displayName="OrderedList";var Od=Pe(function(t,n){const{as:r,...o}=t;return a.jsx(bx,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...o})});Od.displayName="UnorderedList";var lo=Pe(function(t,n){const r=F3();return a.jsx(_e.li,{ref:n,...t,__css:r.item})});lo.displayName="ListItem";var cz=Pe(function(t,n){const r=F3();return a.jsx(Tn,{ref:n,role:"presentation",...t,__css:r.icon})});cz.displayName="ListIcon";var Ga=Pe(function(t,n){const{templateAreas:r,gap:o,rowGap:s,columnGap:i,column:l,row:u,autoFlow:p,autoRows:h,templateRows:m,autoColumns:v,templateColumns:b,...y}=t,x={display:"grid",gridTemplateAreas:r,gridGap:o,gridRowGap:s,gridColumnGap:i,gridAutoColumns:v,gridColumn:l,gridRow:u,gridAutoFlow:p,gridAutoRows:h,gridTemplateRows:m,gridTemplateColumns:b};return a.jsx(_e.div,{ref:n,__css:x,...y})});Ga.displayName="Grid";function B3(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):r1(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var Za=_e("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});Za.displayName="Spacer";var H3=e=>a.jsx(_e.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});H3.displayName="StackItem";function uz(e){const{spacing:t,direction:n}=e,r={column:{my:t,mx:0,borderLeftWidth:0,borderBottomWidth:"1px"},"column-reverse":{my:t,mx:0,borderLeftWidth:0,borderBottomWidth:"1px"},row:{mx:t,my:0,borderLeftWidth:"1px",borderBottomWidth:0},"row-reverse":{mx:t,my:0,borderLeftWidth:"1px",borderBottomWidth:0}};return{"&":B3(n,o=>r[o])}}var xx=Pe((e,t)=>{const{isInline:n,direction:r,align:o,justify:s,spacing:i="0.5rem",wrap:l,children:u,divider:p,className:h,shouldWrapChildren:m,...v}=e,b=n?"row":r??"column",y=d.useMemo(()=>uz({spacing:i,direction:b}),[i,b]),x=!!p,w=!m&&!x,k=d.useMemo(()=>{const j=Id(u);return w?j:j.map((I,E)=>{const M=typeof I.key<"u"?I.key:E,D=E+1===j.length,A=m?a.jsx(H3,{children:I},M):I;if(!x)return A;const O=d.cloneElement(p,{__css:y}),T=D?null:O;return a.jsxs(d.Fragment,{children:[A,T]},M)})},[p,y,x,w,m,u]),_=et("chakra-stack",h);return a.jsx(_e.div,{ref:t,display:"flex",alignItems:o,justifyContent:s,flexDirection:b,flexWrap:l,gap:x?void 0:i,className:_,...v,children:k})});xx.displayName="Stack";var W3=Pe((e,t)=>a.jsx(xx,{align:"center",...e,direction:"column",ref:t}));W3.displayName="VStack";var Om=Pe((e,t)=>a.jsx(xx,{align:"center",...e,direction:"row",ref:t}));Om.displayName="HStack";function Yw(e){return B3(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var td=Pe(function(t,n){const{area:r,colSpan:o,colStart:s,colEnd:i,rowEnd:l,rowSpan:u,rowStart:p,...h}=t,m=Aj({gridArea:r,gridColumn:Yw(o),gridRow:Yw(u),gridColumnStart:s,gridColumnEnd:i,gridRowStart:p,gridRowEnd:l});return a.jsx(_e.div,{ref:n,__css:m,...h})});td.displayName="GridItem";var da=Pe(function(t,n){const r=Qa("Badge",t),{className:o,...s}=Yt(t);return a.jsx(_e.span,{ref:n,className:et("chakra-badge",t.className),...s,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});da.displayName="Badge";var Vr=Pe(function(t,n){const{borderLeftWidth:r,borderBottomWidth:o,borderTopWidth:s,borderRightWidth:i,borderWidth:l,borderStyle:u,borderColor:p,...h}=Qa("Divider",t),{className:m,orientation:v="horizontal",__css:b,...y}=Yt(t),x={vertical:{borderLeftWidth:r||i||l||"1px",height:"100%"},horizontal:{borderBottomWidth:o||s||l||"1px",width:"100%"}};return a.jsx(_e.hr,{ref:n,"aria-orientation":v,...y,__css:{...h,border:"0",borderColor:p,borderStyle:u,...x[v],...b},className:et("chakra-divider",m)})});Vr.displayName="Divider";function dz(e){const{key:t}=e;return t.length===1||t.length>1&&/[^a-zA-Z0-9]/.test(t)}function fz(e={}){const{timeout:t=300,preventDefault:n=()=>!0}=e,[r,o]=d.useState([]),s=d.useRef(),i=()=>{s.current&&(clearTimeout(s.current),s.current=null)},l=()=>{i(),s.current=setTimeout(()=>{o([]),s.current=null},t)};d.useEffect(()=>i,[]);function u(p){return h=>{if(h.key==="Backspace"){const m=[...r];m.pop(),o(m);return}if(dz(h)){const m=r.concat(h.key);n(h)&&(h.preventDefault(),h.stopPropagation()),o(m),p(m.join("")),l()}}}return u}function pz(e,t,n,r){if(t==null)return r;if(!r)return e.find(i=>n(i).toLowerCase().startsWith(t.toLowerCase()));const o=e.filter(s=>n(s).toLowerCase().startsWith(t.toLowerCase()));if(o.length>0){let s;return o.includes(r)?(s=o.indexOf(r)+1,s===o.length&&(s=0),o[s]):(s=e.indexOf(o[0]),e[s])}return r}function hz(){const e=d.useRef(new Map),t=e.current,n=d.useCallback((o,s,i,l)=>{e.current.set(i,{type:s,el:o,options:l}),o.addEventListener(s,i,l)},[]),r=d.useCallback((o,s,i,l)=>{o.removeEventListener(s,i,l),e.current.delete(i)},[]);return d.useEffect(()=>()=>{t.forEach((o,s)=>{r(o.el,o.type,s,o.options)})},[r,t]),{add:n,remove:r}}function iv(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function V3(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:o=!0,clickOnSpace:s=!0,onMouseDown:i,onMouseUp:l,onClick:u,onKeyDown:p,onKeyUp:h,tabIndex:m,onMouseOver:v,onMouseLeave:b,...y}=e,[x,w]=d.useState(!0),[k,_]=d.useState(!1),j=hz(),I=z=>{z&&z.tagName!=="BUTTON"&&w(!1)},E=x?m:m||0,M=n&&!r,D=d.useCallback(z=>{if(n){z.stopPropagation(),z.preventDefault();return}z.currentTarget.focus(),u==null||u(z)},[n,u]),R=d.useCallback(z=>{k&&iv(z)&&(z.preventDefault(),z.stopPropagation(),_(!1),j.remove(document,"keyup",R,!1))},[k,j]),A=d.useCallback(z=>{if(p==null||p(z),n||z.defaultPrevented||z.metaKey||!iv(z.nativeEvent)||x)return;const Y=o&&z.key==="Enter";s&&z.key===" "&&(z.preventDefault(),_(!0)),Y&&(z.preventDefault(),z.currentTarget.click()),j.add(document,"keyup",R,!1)},[n,x,p,o,s,j,R]),O=d.useCallback(z=>{if(h==null||h(z),n||z.defaultPrevented||z.metaKey||!iv(z.nativeEvent)||x)return;s&&z.key===" "&&(z.preventDefault(),_(!1),z.currentTarget.click())},[s,x,n,h]),T=d.useCallback(z=>{z.button===0&&(_(!1),j.remove(document,"mouseup",T,!1))},[j]),K=d.useCallback(z=>{if(z.button!==0)return;if(n){z.stopPropagation(),z.preventDefault();return}x||_(!0),z.currentTarget.focus({preventScroll:!0}),j.add(document,"mouseup",T,!1),i==null||i(z)},[n,x,i,j,T]),F=d.useCallback(z=>{z.button===0&&(x||_(!1),l==null||l(z))},[l,x]),V=d.useCallback(z=>{if(n){z.preventDefault();return}v==null||v(z)},[n,v]),X=d.useCallback(z=>{k&&(z.preventDefault(),_(!1)),b==null||b(z)},[k,b]),W=Ct(t,I);return x?{...y,ref:W,type:"button","aria-disabled":M?void 0:n,disabled:M,onClick:D,onMouseDown:i,onMouseUp:l,onKeyUp:h,onKeyDown:p,onMouseOver:v,onMouseLeave:b}:{...y,ref:W,role:"button","data-active":at(k),"aria-disabled":n?"true":void 0,tabIndex:M?void 0:E,onClick:D,onMouseDown:K,onMouseUp:F,onKeyUp:O,onKeyDown:A,onMouseOver:V,onMouseLeave:X}}function mz(e){const t=e.current;if(!t)return!1;const n=WL(t);return!n||t.contains(n)?!1:!!XL(n)}function U3(e,t){const{shouldFocus:n,visible:r,focusRef:o}=t,s=n&&!r;ca(()=>{if(!s||mz(e))return;const i=(o==null?void 0:o.current)||e.current;let l;if(i)return l=requestAnimationFrame(()=>{i.focus({preventScroll:!0})}),()=>{cancelAnimationFrame(l)}},[s,e,o])}var gz={preventScroll:!0,shouldFocus:!1};function vz(e,t=gz){const{focusRef:n,preventScroll:r,shouldFocus:o,visible:s}=t,i=bz(e)?e.current:e,l=o&&s,u=d.useRef(l),p=d.useRef(s);Zl(()=>{!p.current&&s&&(u.current=l),p.current=s},[s,l]);const h=d.useCallback(()=>{if(!(!s||!i||!u.current)&&(u.current=!1,!i.contains(document.activeElement)))if(n!=null&&n.current)requestAnimationFrame(()=>{var m;(m=n.current)==null||m.focus({preventScroll:r})});else{const m=T3(i);m.length>0&&requestAnimationFrame(()=>{m[0].focus({preventScroll:r})})}},[s,r,i,n]);ca(()=>{h()},[h]),_i(i,"transitionend",h)}function bz(e){return"current"in e}var Pl=(e,t)=>({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),jn={arrowShadowColor:Pl("--popper-arrow-shadow-color"),arrowSize:Pl("--popper-arrow-size","8px"),arrowSizeHalf:Pl("--popper-arrow-size-half"),arrowBg:Pl("--popper-arrow-bg"),transformOrigin:Pl("--popper-transform-origin"),arrowOffset:Pl("--popper-arrow-offset")};function xz(e){if(e.includes("top"))return"1px 1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("bottom"))return"-1px -1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("right"))return"-1px 1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("left"))return"1px -1px 0px 0 var(--popper-arrow-shadow-color)"}var yz={top:"bottom center","top-start":"bottom left","top-end":"bottom right",bottom:"top center","bottom-start":"top left","bottom-end":"top right",left:"right center","left-start":"right top","left-end":"right bottom",right:"left center","right-start":"left top","right-end":"left bottom"},Cz=e=>yz[e],Qw={scroll:!0,resize:!0};function wz(e){let t;return typeof e=="object"?t={enabled:!0,options:{...Qw,...e}}:t={enabled:e,options:Qw},t}var Sz={name:"matchWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:e})=>{e.styles.popper.width=`${e.rects.reference.width}px`},effect:({state:e})=>()=>{const t=e.elements.reference;e.elements.popper.style.width=`${t.offsetWidth}px`}},kz={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{Zw(e)},effect:({state:e})=>()=>{Zw(e)}},Zw=e=>{e.elements.popper.style.setProperty(jn.transformOrigin.var,Cz(e.placement))},_z={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{jz(e)}},jz=e=>{var t;if(!e.placement)return;const n=Pz(e.placement);if((t=e.elements)!=null&&t.arrow&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:jn.arrowSize.varRef,height:jn.arrowSize.varRef,zIndex:-1});const r={[jn.arrowSizeHalf.var]:`calc(${jn.arrowSize.varRef} / 2 - 1px)`,[jn.arrowOffset.var]:`calc(${jn.arrowSizeHalf.varRef} * -1)`};for(const o in r)e.elements.arrow.style.setProperty(o,r[o])}},Pz=e=>{if(e.startsWith("top"))return{property:"bottom",value:jn.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:jn.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:jn.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:jn.arrowOffset.varRef}},Iz={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{Jw(e)},effect:({state:e})=>()=>{Jw(e)}},Jw=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");if(!t)return;const n=xz(e.placement);n&&t.style.setProperty("--popper-arrow-default-shadow",n),Object.assign(t.style,{transform:"rotate(45deg)",background:jn.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:"var(--popper-arrow-shadow, var(--popper-arrow-default-shadow))"})},Ez={"start-start":{ltr:"left-start",rtl:"right-start"},"start-end":{ltr:"left-end",rtl:"right-end"},"end-start":{ltr:"right-start",rtl:"left-start"},"end-end":{ltr:"right-end",rtl:"left-end"},start:{ltr:"left",rtl:"right"},end:{ltr:"right",rtl:"left"}},Mz={"auto-start":"auto-end","auto-end":"auto-start","top-start":"top-end","top-end":"top-start","bottom-start":"bottom-end","bottom-end":"bottom-start"};function Oz(e,t="ltr"){var n,r;const o=((n=Ez[e])==null?void 0:n[t])||e;return t==="ltr"?o:(r=Mz[e])!=null?r:o}var _r="top",go="bottom",vo="right",jr="left",yx="auto",Dd=[_r,go,vo,jr],xc="start",nd="end",Dz="clippingParents",G3="viewport",Cu="popper",Rz="reference",eS=Dd.reduce(function(e,t){return e.concat([t+"-"+xc,t+"-"+nd])},[]),K3=[].concat(Dd,[yx]).reduce(function(e,t){return e.concat([t,t+"-"+xc,t+"-"+nd])},[]),Az="beforeRead",Nz="read",Tz="afterRead",$z="beforeMain",Lz="main",zz="afterMain",Fz="beforeWrite",Bz="write",Hz="afterWrite",Wz=[Az,Nz,Tz,$z,Lz,zz,Fz,Bz,Hz];function ms(e){return e?(e.nodeName||"").toLowerCase():null}function Ur(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Fi(e){var t=Ur(e).Element;return e instanceof t||e instanceof Element}function ho(e){var t=Ur(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Cx(e){if(typeof ShadowRoot>"u")return!1;var t=Ur(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Vz(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},o=t.attributes[n]||{},s=t.elements[n];!ho(s)||!ms(s)||(Object.assign(s.style,r),Object.keys(o).forEach(function(i){var l=o[i];l===!1?s.removeAttribute(i):s.setAttribute(i,l===!0?"":l)}))})}function Uz(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var o=t.elements[r],s=t.attributes[r]||{},i=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),l=i.reduce(function(u,p){return u[p]="",u},{});!ho(o)||!ms(o)||(Object.assign(o.style,l),Object.keys(s).forEach(function(u){o.removeAttribute(u)}))})}}const Gz={name:"applyStyles",enabled:!0,phase:"write",fn:Vz,effect:Uz,requires:["computeStyles"]};function hs(e){return e.split("-")[0]}var ji=Math.max,sh=Math.min,yc=Math.round;function E1(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function q3(){return!/^((?!chrome|android).)*safari/i.test(E1())}function Cc(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),o=1,s=1;t&&ho(e)&&(o=e.offsetWidth>0&&yc(r.width)/e.offsetWidth||1,s=e.offsetHeight>0&&yc(r.height)/e.offsetHeight||1);var i=Fi(e)?Ur(e):window,l=i.visualViewport,u=!q3()&&n,p=(r.left+(u&&l?l.offsetLeft:0))/o,h=(r.top+(u&&l?l.offsetTop:0))/s,m=r.width/o,v=r.height/s;return{width:m,height:v,top:h,right:p+m,bottom:h+v,left:p,x:p,y:h}}function wx(e){var t=Cc(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function X3(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Cx(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function ta(e){return Ur(e).getComputedStyle(e)}function Kz(e){return["table","td","th"].indexOf(ms(e))>=0}function Ja(e){return((Fi(e)?e.ownerDocument:e.document)||window.document).documentElement}function Dm(e){return ms(e)==="html"?e:e.assignedSlot||e.parentNode||(Cx(e)?e.host:null)||Ja(e)}function tS(e){return!ho(e)||ta(e).position==="fixed"?null:e.offsetParent}function qz(e){var t=/firefox/i.test(E1()),n=/Trident/i.test(E1());if(n&&ho(e)){var r=ta(e);if(r.position==="fixed")return null}var o=Dm(e);for(Cx(o)&&(o=o.host);ho(o)&&["html","body"].indexOf(ms(o))<0;){var s=ta(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Rd(e){for(var t=Ur(e),n=tS(e);n&&Kz(n)&&ta(n).position==="static";)n=tS(n);return n&&(ms(n)==="html"||ms(n)==="body"&&ta(n).position==="static")?t:n||qz(e)||t}function Sx(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Hu(e,t,n){return ji(e,sh(t,n))}function Xz(e,t,n){var r=Hu(e,t,n);return r>n?n:r}function Y3(){return{top:0,right:0,bottom:0,left:0}}function Q3(e){return Object.assign({},Y3(),e)}function Z3(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var Yz=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,Q3(typeof t!="number"?t:Z3(t,Dd))};function Qz(e){var t,n=e.state,r=e.name,o=e.options,s=n.elements.arrow,i=n.modifiersData.popperOffsets,l=hs(n.placement),u=Sx(l),p=[jr,vo].indexOf(l)>=0,h=p?"height":"width";if(!(!s||!i)){var m=Yz(o.padding,n),v=wx(s),b=u==="y"?_r:jr,y=u==="y"?go:vo,x=n.rects.reference[h]+n.rects.reference[u]-i[u]-n.rects.popper[h],w=i[u]-n.rects.reference[u],k=Rd(s),_=k?u==="y"?k.clientHeight||0:k.clientWidth||0:0,j=x/2-w/2,I=m[b],E=_-v[h]-m[y],M=_/2-v[h]/2+j,D=Hu(I,M,E),R=u;n.modifiersData[r]=(t={},t[R]=D,t.centerOffset=D-M,t)}}function Zz(e){var t=e.state,n=e.options,r=n.element,o=r===void 0?"[data-popper-arrow]":r;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||X3(t.elements.popper,o)&&(t.elements.arrow=o))}const Jz={name:"arrow",enabled:!0,phase:"main",fn:Qz,effect:Zz,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function wc(e){return e.split("-")[1]}var eF={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tF(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:yc(n*o)/o||0,y:yc(r*o)/o||0}}function nS(e){var t,n=e.popper,r=e.popperRect,o=e.placement,s=e.variation,i=e.offsets,l=e.position,u=e.gpuAcceleration,p=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=i.x,b=v===void 0?0:v,y=i.y,x=y===void 0?0:y,w=typeof h=="function"?h({x:b,y:x}):{x:b,y:x};b=w.x,x=w.y;var k=i.hasOwnProperty("x"),_=i.hasOwnProperty("y"),j=jr,I=_r,E=window;if(p){var M=Rd(n),D="clientHeight",R="clientWidth";if(M===Ur(n)&&(M=Ja(n),ta(M).position!=="static"&&l==="absolute"&&(D="scrollHeight",R="scrollWidth")),M=M,o===_r||(o===jr||o===vo)&&s===nd){I=go;var A=m&&M===E&&E.visualViewport?E.visualViewport.height:M[D];x-=A-r.height,x*=u?1:-1}if(o===jr||(o===_r||o===go)&&s===nd){j=vo;var O=m&&M===E&&E.visualViewport?E.visualViewport.width:M[R];b-=O-r.width,b*=u?1:-1}}var T=Object.assign({position:l},p&&eF),K=h===!0?tF({x:b,y:x},Ur(n)):{x:b,y:x};if(b=K.x,x=K.y,u){var F;return Object.assign({},T,(F={},F[I]=_?"0":"",F[j]=k?"0":"",F.transform=(E.devicePixelRatio||1)<=1?"translate("+b+"px, "+x+"px)":"translate3d("+b+"px, "+x+"px, 0)",F))}return Object.assign({},T,(t={},t[I]=_?x+"px":"",t[j]=k?b+"px":"",t.transform="",t))}function nF(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,s=n.adaptive,i=s===void 0?!0:s,l=n.roundOffsets,u=l===void 0?!0:l,p={placement:hs(t.placement),variation:wc(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,nS(Object.assign({},p,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:u})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,nS(Object.assign({},p,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const rF={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:nF,data:{}};var Qf={passive:!0};function oF(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,s=o===void 0?!0:o,i=r.resize,l=i===void 0?!0:i,u=Ur(t.elements.popper),p=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&p.forEach(function(h){h.addEventListener("scroll",n.update,Qf)}),l&&u.addEventListener("resize",n.update,Qf),function(){s&&p.forEach(function(h){h.removeEventListener("scroll",n.update,Qf)}),l&&u.removeEventListener("resize",n.update,Qf)}}const sF={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:oF,data:{}};var aF={left:"right",right:"left",bottom:"top",top:"bottom"};function Rp(e){return e.replace(/left|right|bottom|top/g,function(t){return aF[t]})}var iF={start:"end",end:"start"};function rS(e){return e.replace(/start|end/g,function(t){return iF[t]})}function kx(e){var t=Ur(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function _x(e){return Cc(Ja(e)).left+kx(e).scrollLeft}function lF(e,t){var n=Ur(e),r=Ja(e),o=n.visualViewport,s=r.clientWidth,i=r.clientHeight,l=0,u=0;if(o){s=o.width,i=o.height;var p=q3();(p||!p&&t==="fixed")&&(l=o.offsetLeft,u=o.offsetTop)}return{width:s,height:i,x:l+_x(e),y:u}}function cF(e){var t,n=Ja(e),r=kx(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=ji(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=ji(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),l=-r.scrollLeft+_x(e),u=-r.scrollTop;return ta(o||n).direction==="rtl"&&(l+=ji(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:l,y:u}}function jx(e){var t=ta(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function J3(e){return["html","body","#document"].indexOf(ms(e))>=0?e.ownerDocument.body:ho(e)&&jx(e)?e:J3(Dm(e))}function Wu(e,t){var n;t===void 0&&(t=[]);var r=J3(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Ur(r),i=o?[s].concat(s.visualViewport||[],jx(r)?r:[]):r,l=t.concat(i);return o?l:l.concat(Wu(Dm(i)))}function M1(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function uF(e,t){var n=Cc(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function oS(e,t,n){return t===G3?M1(lF(e,n)):Fi(t)?uF(t,n):M1(cF(Ja(e)))}function dF(e){var t=Wu(Dm(e)),n=["absolute","fixed"].indexOf(ta(e).position)>=0,r=n&&ho(e)?Rd(e):e;return Fi(r)?t.filter(function(o){return Fi(o)&&X3(o,r)&&ms(o)!=="body"}):[]}function fF(e,t,n,r){var o=t==="clippingParents"?dF(e):[].concat(t),s=[].concat(o,[n]),i=s[0],l=s.reduce(function(u,p){var h=oS(e,p,r);return u.top=ji(h.top,u.top),u.right=sh(h.right,u.right),u.bottom=sh(h.bottom,u.bottom),u.left=ji(h.left,u.left),u},oS(e,i,r));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function eP(e){var t=e.reference,n=e.element,r=e.placement,o=r?hs(r):null,s=r?wc(r):null,i=t.x+t.width/2-n.width/2,l=t.y+t.height/2-n.height/2,u;switch(o){case _r:u={x:i,y:t.y-n.height};break;case go:u={x:i,y:t.y+t.height};break;case vo:u={x:t.x+t.width,y:l};break;case jr:u={x:t.x-n.width,y:l};break;default:u={x:t.x,y:t.y}}var p=o?Sx(o):null;if(p!=null){var h=p==="y"?"height":"width";switch(s){case xc:u[p]=u[p]-(t[h]/2-n[h]/2);break;case nd:u[p]=u[p]+(t[h]/2-n[h]/2);break}}return u}function rd(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,s=n.strategy,i=s===void 0?e.strategy:s,l=n.boundary,u=l===void 0?Dz:l,p=n.rootBoundary,h=p===void 0?G3:p,m=n.elementContext,v=m===void 0?Cu:m,b=n.altBoundary,y=b===void 0?!1:b,x=n.padding,w=x===void 0?0:x,k=Q3(typeof w!="number"?w:Z3(w,Dd)),_=v===Cu?Rz:Cu,j=e.rects.popper,I=e.elements[y?_:v],E=fF(Fi(I)?I:I.contextElement||Ja(e.elements.popper),u,h,i),M=Cc(e.elements.reference),D=eP({reference:M,element:j,strategy:"absolute",placement:o}),R=M1(Object.assign({},j,D)),A=v===Cu?R:M,O={top:E.top-A.top+k.top,bottom:A.bottom-E.bottom+k.bottom,left:E.left-A.left+k.left,right:A.right-E.right+k.right},T=e.modifiersData.offset;if(v===Cu&&T){var K=T[o];Object.keys(O).forEach(function(F){var V=[vo,go].indexOf(F)>=0?1:-1,X=[_r,go].indexOf(F)>=0?"y":"x";O[F]+=K[X]*V})}return O}function pF(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,s=n.rootBoundary,i=n.padding,l=n.flipVariations,u=n.allowedAutoPlacements,p=u===void 0?K3:u,h=wc(r),m=h?l?eS:eS.filter(function(y){return wc(y)===h}):Dd,v=m.filter(function(y){return p.indexOf(y)>=0});v.length===0&&(v=m);var b=v.reduce(function(y,x){return y[x]=rd(e,{placement:x,boundary:o,rootBoundary:s,padding:i})[hs(x)],y},{});return Object.keys(b).sort(function(y,x){return b[y]-b[x]})}function hF(e){if(hs(e)===yx)return[];var t=Rp(e);return[rS(e),t,rS(t)]}function mF(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,l=i===void 0?!0:i,u=n.fallbackPlacements,p=n.padding,h=n.boundary,m=n.rootBoundary,v=n.altBoundary,b=n.flipVariations,y=b===void 0?!0:b,x=n.allowedAutoPlacements,w=t.options.placement,k=hs(w),_=k===w,j=u||(_||!y?[Rp(w)]:hF(w)),I=[w].concat(j).reduce(function(se,U){return se.concat(hs(U)===yx?pF(t,{placement:U,boundary:h,rootBoundary:m,padding:p,flipVariations:y,allowedAutoPlacements:x}):U)},[]),E=t.rects.reference,M=t.rects.popper,D=new Map,R=!0,A=I[0],O=0;O=0,X=V?"width":"height",W=rd(t,{placement:T,boundary:h,rootBoundary:m,altBoundary:v,padding:p}),z=V?F?vo:jr:F?go:_r;E[X]>M[X]&&(z=Rp(z));var Y=Rp(z),B=[];if(s&&B.push(W[K]<=0),l&&B.push(W[z]<=0,W[Y]<=0),B.every(function(se){return se})){A=T,R=!1;break}D.set(T,B)}if(R)for(var q=y?3:1,re=function(U){var G=I.find(function(te){var ae=D.get(te);if(ae)return ae.slice(0,U).every(function(oe){return oe})});if(G)return A=G,"break"},Q=q;Q>0;Q--){var le=re(Q);if(le==="break")break}t.placement!==A&&(t.modifiersData[r]._skip=!0,t.placement=A,t.reset=!0)}}const gF={name:"flip",enabled:!0,phase:"main",fn:mF,requiresIfExists:["offset"],data:{_skip:!1}};function sS(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function aS(e){return[_r,vo,go,jr].some(function(t){return e[t]>=0})}function vF(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=rd(t,{elementContext:"reference"}),l=rd(t,{altBoundary:!0}),u=sS(i,r),p=sS(l,o,s),h=aS(u),m=aS(p);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:p,isReferenceHidden:h,hasPopperEscaped:m},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":m})}const bF={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:vF};function xF(e,t,n){var r=hs(e),o=[jr,_r].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,i=s[0],l=s[1];return i=i||0,l=(l||0)*o,[jr,vo].indexOf(r)>=0?{x:l,y:i}:{x:i,y:l}}function yF(e){var t=e.state,n=e.options,r=e.name,o=n.offset,s=o===void 0?[0,0]:o,i=K3.reduce(function(h,m){return h[m]=xF(m,t.rects,s),h},{}),l=i[t.placement],u=l.x,p=l.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=p),t.modifiersData[r]=i}const CF={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:yF};function wF(e){var t=e.state,n=e.name;t.modifiersData[n]=eP({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const SF={name:"popperOffsets",enabled:!0,phase:"read",fn:wF,data:{}};function kF(e){return e==="x"?"y":"x"}function _F(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,l=i===void 0?!1:i,u=n.boundary,p=n.rootBoundary,h=n.altBoundary,m=n.padding,v=n.tether,b=v===void 0?!0:v,y=n.tetherOffset,x=y===void 0?0:y,w=rd(t,{boundary:u,rootBoundary:p,padding:m,altBoundary:h}),k=hs(t.placement),_=wc(t.placement),j=!_,I=Sx(k),E=kF(I),M=t.modifiersData.popperOffsets,D=t.rects.reference,R=t.rects.popper,A=typeof x=="function"?x(Object.assign({},t.rects,{placement:t.placement})):x,O=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,K={x:0,y:0};if(M){if(s){var F,V=I==="y"?_r:jr,X=I==="y"?go:vo,W=I==="y"?"height":"width",z=M[I],Y=z+w[V],B=z-w[X],q=b?-R[W]/2:0,re=_===xc?D[W]:R[W],Q=_===xc?-R[W]:-D[W],le=t.elements.arrow,se=b&&le?wx(le):{width:0,height:0},U=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Y3(),G=U[V],te=U[X],ae=Hu(0,D[W],se[W]),oe=j?D[W]/2-q-ae-G-O.mainAxis:re-ae-G-O.mainAxis,pe=j?-D[W]/2+q+ae+te+O.mainAxis:Q+ae+te+O.mainAxis,ue=t.elements.arrow&&Rd(t.elements.arrow),me=ue?I==="y"?ue.clientTop||0:ue.clientLeft||0:0,Ce=(F=T==null?void 0:T[I])!=null?F:0,ge=z+oe-Ce-me,fe=z+pe-Ce,De=Hu(b?sh(Y,ge):Y,z,b?ji(B,fe):B);M[I]=De,K[I]=De-z}if(l){var je,Be=I==="x"?_r:jr,rt=I==="x"?go:vo,Ue=M[E],wt=E==="y"?"height":"width",Ye=Ue+w[Be],tt=Ue-w[rt],be=[_r,jr].indexOf(k)!==-1,Re=(je=T==null?void 0:T[E])!=null?je:0,st=be?Ye:Ue-D[wt]-R[wt]-Re+O.altAxis,mt=be?Ue+D[wt]+R[wt]-Re-O.altAxis:tt,ve=b&&be?Xz(st,Ue,mt):Hu(b?st:Ye,Ue,b?mt:tt);M[E]=ve,K[E]=ve-Ue}t.modifiersData[r]=K}}const jF={name:"preventOverflow",enabled:!0,phase:"main",fn:_F,requiresIfExists:["offset"]};function PF(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function IF(e){return e===Ur(e)||!ho(e)?kx(e):PF(e)}function EF(e){var t=e.getBoundingClientRect(),n=yc(t.width)/e.offsetWidth||1,r=yc(t.height)/e.offsetHeight||1;return n!==1||r!==1}function MF(e,t,n){n===void 0&&(n=!1);var r=ho(t),o=ho(t)&&EF(t),s=Ja(t),i=Cc(e,o,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&((ms(t)!=="body"||jx(s))&&(l=IF(t)),ho(t)?(u=Cc(t,!0),u.x+=t.clientLeft,u.y+=t.clientTop):s&&(u.x=_x(s))),{x:i.left+l.scrollLeft-u.x,y:i.top+l.scrollTop-u.y,width:i.width,height:i.height}}function OF(e){var t=new Map,n=new Set,r=[];e.forEach(function(s){t.set(s.name,s)});function o(s){n.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(l){if(!n.has(l)){var u=t.get(l);u&&o(u)}}),r.push(s)}return e.forEach(function(s){n.has(s.name)||o(s)}),r}function DF(e){var t=OF(e);return Wz.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function RF(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function AF(e){var t=e.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var iS={placement:"bottom",modifiers:[],strategy:"absolute"};function lS(){for(var e=arguments.length,t=new Array(e),n=0;n{}),j=d.useCallback(()=>{var O;!t||!y.current||!x.current||((O=_.current)==null||O.call(_),w.current=$F(y.current,x.current,{placement:k,modifiers:[Iz,_z,kz,{...Sz,enabled:!!v},{name:"eventListeners",...wz(i)},{name:"arrow",options:{padding:s}},{name:"offset",options:{offset:l??[0,u]}},{name:"flip",enabled:!!p,options:{padding:8}},{name:"preventOverflow",enabled:!!m,options:{boundary:h}},...n??[]],strategy:o}),w.current.forceUpdate(),_.current=w.current.destroy)},[k,t,n,v,i,s,l,u,p,m,h,o]);d.useEffect(()=>()=>{var O;!y.current&&!x.current&&((O=w.current)==null||O.destroy(),w.current=null)},[]);const I=d.useCallback(O=>{y.current=O,j()},[j]),E=d.useCallback((O={},T=null)=>({...O,ref:Ct(I,T)}),[I]),M=d.useCallback(O=>{x.current=O,j()},[j]),D=d.useCallback((O={},T=null)=>({...O,ref:Ct(M,T),style:{...O.style,position:o,minWidth:v?void 0:"max-content",inset:"0 auto auto 0"}}),[o,M,v]),R=d.useCallback((O={},T=null)=>{const{size:K,shadowColor:F,bg:V,style:X,...W}=O;return{...W,ref:T,"data-popper-arrow":"",style:LF(O)}},[]),A=d.useCallback((O={},T=null)=>({...O,ref:T,"data-popper-arrow-inner":""}),[]);return{update(){var O;(O=w.current)==null||O.update()},forceUpdate(){var O;(O=w.current)==null||O.forceUpdate()},transformOrigin:jn.transformOrigin.varRef,referenceRef:I,popperRef:M,getPopperProps:D,getArrowProps:R,getArrowInnerProps:A,getReferenceProps:E}}function LF(e){const{size:t,shadowColor:n,bg:r,style:o}=e,s={...o,position:"absolute"};return t&&(s["--popper-arrow-size"]=t),n&&(s["--popper-arrow-shadow-color"]=n),r&&(s["--popper-arrow-bg"]=r),s}function Ix(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=nn(n),i=nn(t),[l,u]=d.useState(e.defaultIsOpen||!1),p=r!==void 0?r:l,h=r!==void 0,m=d.useId(),v=o??`disclosure-${m}`,b=d.useCallback(()=>{h||u(!1),i==null||i()},[h,i]),y=d.useCallback(()=>{h||u(!0),s==null||s()},[h,s]),x=d.useCallback(()=>{p?b():y()},[p,y,b]);function w(_={}){return{..._,"aria-expanded":p,"aria-controls":v,onClick(j){var I;(I=_.onClick)==null||I.call(_,j),x()}}}function k(_={}){return{..._,hidden:!p,id:v}}return{isOpen:p,onOpen:y,onClose:b,onToggle:x,isControlled:h,getButtonProps:w,getDisclosureProps:k}}function zF(e){const{ref:t,handler:n,enabled:r=!0}=e,o=nn(n),i=d.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;d.useEffect(()=>{if(!r)return;const l=m=>{lv(m,t)&&(i.isPointerDown=!0)},u=m=>{if(i.ignoreEmulatedMouseEvents){i.ignoreEmulatedMouseEvents=!1;return}i.isPointerDown&&n&&lv(m,t)&&(i.isPointerDown=!1,o(m))},p=m=>{i.ignoreEmulatedMouseEvents=!0,n&&i.isPointerDown&&lv(m,t)&&(i.isPointerDown=!1,o(m))},h=tP(t.current);return h.addEventListener("mousedown",l,!0),h.addEventListener("mouseup",u,!0),h.addEventListener("touchstart",l,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",l,!0),h.removeEventListener("mouseup",u,!0),h.removeEventListener("touchstart",l,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,i,r])}function lv(e,t){var n;const r=e.target;return r&&!tP(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}function tP(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function nP(e){const{isOpen:t,ref:n}=e,[r,o]=d.useState(t),[s,i]=d.useState(!1);return d.useEffect(()=>{s||(o(t),i(!0))},[t,s,r]),_i(()=>n.current,"animationend",()=>{o(t)}),{present:!(t?!1:!r),onComplete(){var u;const p=HL(n.current),h=new p.CustomEvent("animationend",{bubbles:!0});(u=n.current)==null||u.dispatchEvent(h)}}}function Ex(e){const{wasSelected:t,enabled:n,isSelected:r,mode:o="unmount"}=e;return!!(!n||r||o==="keepMounted"&&t)}var[FF,BF,HF,WF]=Zb(),[VF,Ad]=$t({strict:!1,name:"MenuContext"});function UF(e,...t){const n=d.useId(),r=e||n;return d.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}function rP(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function cS(e){return rP(e).activeElement===e}function GF(e={}){const{id:t,closeOnSelect:n=!0,closeOnBlur:r=!0,initialFocusRef:o,autoSelect:s=!0,isLazy:i,isOpen:l,defaultIsOpen:u,onClose:p,onOpen:h,placement:m="bottom-start",lazyBehavior:v="unmount",direction:b,computePositionOnMount:y=!1,...x}=e,w=d.useRef(null),k=d.useRef(null),_=HF(),j=d.useCallback(()=>{requestAnimationFrame(()=>{var le;(le=w.current)==null||le.focus({preventScroll:!1})})},[]),I=d.useCallback(()=>{const le=setTimeout(()=>{var se;if(o)(se=o.current)==null||se.focus();else{const U=_.firstEnabled();U&&F(U.index)}});Y.current.add(le)},[_,o]),E=d.useCallback(()=>{const le=setTimeout(()=>{const se=_.lastEnabled();se&&F(se.index)});Y.current.add(le)},[_]),M=d.useCallback(()=>{h==null||h(),s?I():j()},[s,I,j,h]),{isOpen:D,onOpen:R,onClose:A,onToggle:O}=Ix({isOpen:l,defaultIsOpen:u,onClose:p,onOpen:M});zF({enabled:D&&r,ref:w,handler:le=>{var se;(se=k.current)!=null&&se.contains(le.target)||A()}});const T=Px({...x,enabled:D||y,placement:m,direction:b}),[K,F]=d.useState(-1);ca(()=>{D||F(-1)},[D]),U3(w,{focusRef:k,visible:D,shouldFocus:!0});const V=nP({isOpen:D,ref:w}),[X,W]=UF(t,"menu-button","menu-list"),z=d.useCallback(()=>{R(),j()},[R,j]),Y=d.useRef(new Set([]));eB(()=>{Y.current.forEach(le=>clearTimeout(le)),Y.current.clear()});const B=d.useCallback(()=>{R(),I()},[I,R]),q=d.useCallback(()=>{R(),E()},[R,E]),re=d.useCallback(()=>{var le,se;const U=rP(w.current),G=(le=w.current)==null?void 0:le.contains(U.activeElement);if(!(D&&!G))return;const ae=(se=_.item(K))==null?void 0:se.node;ae==null||ae.focus()},[D,K,_]),Q=d.useRef(null);return{openAndFocusMenu:z,openAndFocusFirstItem:B,openAndFocusLastItem:q,onTransitionEnd:re,unstable__animationState:V,descendants:_,popper:T,buttonId:X,menuId:W,forceUpdate:T.forceUpdate,orientation:"vertical",isOpen:D,onToggle:O,onOpen:R,onClose:A,menuRef:w,buttonRef:k,focusedIndex:K,closeOnSelect:n,closeOnBlur:r,autoSelect:s,setFocusedIndex:F,isLazy:i,lazyBehavior:v,initialFocusRef:o,rafId:Q}}function KF(e={},t=null){const n=Ad(),{onToggle:r,popper:o,openAndFocusFirstItem:s,openAndFocusLastItem:i}=n,l=d.useCallback(u=>{const p=u.key,m={Enter:s,ArrowDown:s,ArrowUp:i}[p];m&&(u.preventDefault(),u.stopPropagation(),m(u))},[s,i]);return{...e,ref:Ct(n.buttonRef,t,o.referenceRef),id:n.buttonId,"data-active":at(n.isOpen),"aria-expanded":n.isOpen,"aria-haspopup":"menu","aria-controls":n.menuId,onClick:Fe(e.onClick,r),onKeyDown:Fe(e.onKeyDown,l)}}function O1(e){var t;return ZF(e)&&!!((t=e==null?void 0:e.getAttribute("role"))!=null&&t.startsWith("menuitem"))}function qF(e={},t=null){const n=Ad();if(!n)throw new Error("useMenuContext: context is undefined. Seems you forgot to wrap component within ");const{focusedIndex:r,setFocusedIndex:o,menuRef:s,isOpen:i,onClose:l,menuId:u,isLazy:p,lazyBehavior:h,unstable__animationState:m}=n,v=BF(),b=fz({preventDefault:k=>k.key!==" "&&O1(k.target)}),y=d.useCallback(k=>{if(!k.currentTarget.contains(k.target))return;const _=k.key,I={Tab:M=>M.preventDefault(),Escape:l,ArrowDown:()=>{const M=v.nextEnabled(r);M&&o(M.index)},ArrowUp:()=>{const M=v.prevEnabled(r);M&&o(M.index)}}[_];if(I){k.preventDefault(),I(k);return}const E=b(M=>{const D=pz(v.values(),M,R=>{var A,O;return(O=(A=R==null?void 0:R.node)==null?void 0:A.textContent)!=null?O:""},v.item(r));if(D){const R=v.indexOf(D.node);o(R)}});O1(k.target)&&E(k)},[v,r,b,l,o]),x=d.useRef(!1);i&&(x.current=!0);const w=Ex({wasSelected:x.current,enabled:p,mode:h,isSelected:m.present});return{...e,ref:Ct(s,t),children:w?e.children:null,tabIndex:-1,role:"menu",id:u,style:{...e.style,transformOrigin:"var(--popper-transform-origin)"},"aria-orientation":"vertical",onKeyDown:Fe(e.onKeyDown,y)}}function XF(e={}){const{popper:t,isOpen:n}=Ad();return t.getPopperProps({...e,style:{visibility:n?"visible":"hidden",...e.style}})}function oP(e={},t=null){const{onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onClick:s,onFocus:i,isDisabled:l,isFocusable:u,closeOnSelect:p,type:h,...m}=e,v=Ad(),{setFocusedIndex:b,focusedIndex:y,closeOnSelect:x,onClose:w,menuRef:k,isOpen:_,menuId:j,rafId:I}=v,E=d.useRef(null),M=`${j}-menuitem-${d.useId()}`,{index:D,register:R}=WF({disabled:l&&!u}),A=d.useCallback(z=>{n==null||n(z),!l&&b(D)},[b,D,l,n]),O=d.useCallback(z=>{r==null||r(z),E.current&&!cS(E.current)&&A(z)},[A,r]),T=d.useCallback(z=>{o==null||o(z),!l&&b(-1)},[b,l,o]),K=d.useCallback(z=>{s==null||s(z),O1(z.currentTarget)&&(p??x)&&w()},[w,s,x,p]),F=d.useCallback(z=>{i==null||i(z),b(D)},[b,i,D]),V=D===y,X=l&&!u;ca(()=>{_&&(V&&!X&&E.current?(I.current&&cancelAnimationFrame(I.current),I.current=requestAnimationFrame(()=>{var z;(z=E.current)==null||z.focus(),I.current=null})):k.current&&!cS(k.current)&&k.current.focus({preventScroll:!0}))},[V,X,k,_]);const W=V3({onClick:K,onFocus:F,onMouseEnter:A,onMouseMove:O,onMouseLeave:T,ref:Ct(R,E,t),isDisabled:l,isFocusable:u});return{...m,...W,type:h??W.type,id:M,role:"menuitem",tabIndex:V?0:-1}}function YF(e={},t=null){const{type:n="radio",isChecked:r,...o}=e;return{...oP(o,t),role:`menuitem${n}`,"aria-checked":r}}function QF(e={}){const{children:t,type:n="radio",value:r,defaultValue:o,onChange:s,...i}=e,u=n==="radio"?"":[],[p,h]=Ac({defaultValue:o??u,value:r,onChange:s}),m=d.useCallback(y=>{if(n==="radio"&&typeof p=="string"&&h(y),n==="checkbox"&&Array.isArray(p)){const x=p.includes(y)?p.filter(w=>w!==y):p.concat(y);h(x)}},[p,h,n]),b=Id(t).map(y=>{if(y.type.id!=="MenuItemOption")return y;const x=k=>{var _,j;m(y.props.value),(j=(_=y.props).onClick)==null||j.call(_,k)},w=n==="radio"?y.props.value===p:p.includes(y.props.value);return d.cloneElement(y,{type:n,onClick:x,isChecked:w})});return{...i,children:b}}function ZF(e){var t;if(!JF(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function JF(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function eB(e,t=[]){return d.useEffect(()=>()=>e(),t)}var[tB,$c]=$t({name:"MenuStylesContext",errorMessage:`useMenuStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Nd=e=>{const{children:t}=e,n=Wn("Menu",e),r=Yt(e),{direction:o}=yd(),{descendants:s,...i}=GF({...r,direction:o}),l=d.useMemo(()=>i,[i]),{isOpen:u,onClose:p,forceUpdate:h}=l;return a.jsx(FF,{value:s,children:a.jsx(VF,{value:l,children:a.jsx(tB,{value:n,children:Nb(t,{isOpen:u,onClose:p,forceUpdate:h})})})})};Nd.displayName="Menu";var sP=Pe((e,t)=>{const n=$c();return a.jsx(_e.span,{ref:t,...e,__css:n.command,className:"chakra-menu__command"})});sP.displayName="MenuCommand";var aP=Pe((e,t)=>{const{type:n,...r}=e,o=$c(),s=r.as||n?n??void 0:"button",i=d.useMemo(()=>({textDecoration:"none",color:"inherit",userSelect:"none",display:"flex",width:"100%",alignItems:"center",textAlign:"start",flex:"0 0 auto",outline:0,...o.item}),[o.item]);return a.jsx(_e.button,{ref:t,type:s,...r,__css:i})}),Mx=e=>{const{className:t,children:n,...r}=e,o=$c(),s=d.Children.only(n),i=d.isValidElement(s)?d.cloneElement(s,{focusable:"false","aria-hidden":!0,className:et("chakra-menu__icon",s.props.className)}):null,l=et("chakra-menu__icon-wrapper",t);return a.jsx(_e.span,{className:l,...r,__css:o.icon,children:i})};Mx.displayName="MenuIcon";var Wt=Pe((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",command:o,commandSpacing:s="0.75rem",children:i,...l}=e,u=oP(l,t),h=n||o?a.jsx("span",{style:{pointerEvents:"none",flex:1},children:i}):i;return a.jsxs(aP,{...u,className:et("chakra-menu__menuitem",u.className),children:[n&&a.jsx(Mx,{fontSize:"0.8em",marginEnd:r,children:n}),h,o&&a.jsx(sP,{marginStart:s,children:o})]})});Wt.displayName="MenuItem";var nB={enter:{visibility:"visible",opacity:1,scale:1,transition:{duration:.2,ease:[.4,0,.2,1]}},exit:{transitionEnd:{visibility:"hidden"},opacity:0,scale:.8,transition:{duration:.1,easings:"easeOut"}}},rB=_e(vn.div),Ka=Pe(function(t,n){var r,o;const{rootProps:s,motionProps:i,...l}=t,{isOpen:u,onTransitionEnd:p,unstable__animationState:h}=Ad(),m=qF(l,n),v=XF(s),b=$c();return a.jsx(_e.div,{...v,__css:{zIndex:(o=t.zIndex)!=null?o:(r=b.list)==null?void 0:r.zIndex},children:a.jsx(rB,{variants:nB,initial:!1,animate:u?"enter":"exit",__css:{outline:0,...b.list},...i,className:et("chakra-menu__menu-list",m.className),...m,onUpdate:p,onAnimationComplete:fm(h.onComplete,m.onAnimationComplete)})})});Ka.displayName="MenuList";var Sc=Pe((e,t)=>{const{title:n,children:r,className:o,...s}=e,i=et("chakra-menu__group__title",o),l=$c();return a.jsxs("div",{ref:t,className:"chakra-menu__group",role:"group",children:[n&&a.jsx(_e.p,{className:i,...s,__css:l.groupTitle,children:n}),r]})});Sc.displayName="MenuGroup";var iP=e=>{const{className:t,title:n,...r}=e,o=QF(r);return a.jsx(Sc,{title:n,className:et("chakra-menu__option-group",t),...o})};iP.displayName="MenuOptionGroup";var oB=Pe((e,t)=>{const n=$c();return a.jsx(_e.button,{ref:t,...e,__css:{display:"inline-flex",appearance:"none",alignItems:"center",outline:0,...n.button}})}),Td=Pe((e,t)=>{const{children:n,as:r,...o}=e,s=KF(o,t),i=r||oB;return a.jsx(i,{...s,className:et("chakra-menu__menu-button",e.className),children:a.jsx(_e.span,{__css:{pointerEvents:"none",flex:"1 1 auto",minW:0},children:e.children})})});Td.displayName="MenuButton";var sB=e=>a.jsx("svg",{viewBox:"0 0 14 14",width:"1em",height:"1em",...e,children:a.jsx("polygon",{fill:"currentColor",points:"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039"})}),ah=Pe((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",...o}=e,s=YF(o,t);return a.jsxs(aP,{...s,className:et("chakra-menu__menuitem-option",o.className),children:[n!==null&&a.jsx(Mx,{fontSize:"0.8em",marginEnd:r,opacity:e.isChecked?1:0,children:n||a.jsx(sB,{})}),a.jsx("span",{style:{flex:1},children:s.children})]})});ah.id="MenuItemOption";ah.displayName="MenuItemOption";var aB={slideInBottom:{...v1,custom:{offsetY:16,reverse:!0}},slideInRight:{...v1,custom:{offsetX:16,reverse:!0}},scale:{...$5,custom:{initialScale:.95,reverse:!0}},none:{}},iB=_e(vn.section),lB=e=>aB[e||"none"],lP=d.forwardRef((e,t)=>{const{preset:n,motionProps:r=lB(n),...o}=e;return a.jsx(iB,{ref:t,...r,...o})});lP.displayName="ModalTransition";var cB=Object.defineProperty,uB=(e,t,n)=>t in e?cB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,dB=(e,t,n)=>(uB(e,typeof t!="symbol"?t+"":t,n),n),fB=class{constructor(){dB(this,"modals"),this.modals=new Map}add(e){return this.modals.set(e,this.modals.size+1),this.modals.size}remove(e){this.modals.delete(e)}isTopModal(e){return e?this.modals.get(e)===this.modals.size:!1}},D1=new fB;function cP(e,t){const[n,r]=d.useState(0);return d.useEffect(()=>{const o=e.current;if(o){if(t){const s=D1.add(o);r(s)}return()=>{D1.remove(o),r(0)}}},[t,e]),n}var pB=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Il=new WeakMap,Zf=new WeakMap,Jf={},cv=0,uP=function(e){return e&&(e.host||uP(e.parentNode))},hB=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=uP(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},mB=function(e,t,n,r){var o=hB(t,Array.isArray(e)?e:[e]);Jf[n]||(Jf[n]=new WeakMap);var s=Jf[n],i=[],l=new Set,u=new Set(o),p=function(m){!m||l.has(m)||(l.add(m),p(m.parentNode))};o.forEach(p);var h=function(m){!m||u.has(m)||Array.prototype.forEach.call(m.children,function(v){if(l.has(v))h(v);else{var b=v.getAttribute(r),y=b!==null&&b!=="false",x=(Il.get(v)||0)+1,w=(s.get(v)||0)+1;Il.set(v,x),s.set(v,w),i.push(v),x===1&&y&&Zf.set(v,!0),w===1&&v.setAttribute(n,"true"),y||v.setAttribute(r,"true")}})};return h(t),l.clear(),cv++,function(){i.forEach(function(m){var v=Il.get(m)-1,b=s.get(m)-1;Il.set(m,v),s.set(m,b),v||(Zf.has(m)||m.removeAttribute(r),Zf.delete(m)),b||m.removeAttribute(n)}),cv--,cv||(Il=new WeakMap,Il=new WeakMap,Zf=new WeakMap,Jf={})}},gB=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||pB(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),mB(r,o,n,"aria-hidden")):function(){return null}};function vB(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:o=!0,closeOnEsc:s=!0,useInert:i=!0,onOverlayClick:l,onEsc:u}=e,p=d.useRef(null),h=d.useRef(null),[m,v,b]=xB(r,"chakra-modal","chakra-modal--header","chakra-modal--body");bB(p,t&&i);const y=cP(p,t),x=d.useRef(null),w=d.useCallback(A=>{x.current=A.target},[]),k=d.useCallback(A=>{A.key==="Escape"&&(A.stopPropagation(),s&&(n==null||n()),u==null||u())},[s,n,u]),[_,j]=d.useState(!1),[I,E]=d.useState(!1),M=d.useCallback((A={},O=null)=>({role:"dialog",...A,ref:Ct(O,p),id:m,tabIndex:-1,"aria-modal":!0,"aria-labelledby":_?v:void 0,"aria-describedby":I?b:void 0,onClick:Fe(A.onClick,T=>T.stopPropagation())}),[b,I,m,v,_]),D=d.useCallback(A=>{A.stopPropagation(),x.current===A.target&&D1.isTopModal(p.current)&&(o&&(n==null||n()),l==null||l())},[n,o,l]),R=d.useCallback((A={},O=null)=>({...A,ref:Ct(O,h),onClick:Fe(A.onClick,D),onKeyDown:Fe(A.onKeyDown,k),onMouseDown:Fe(A.onMouseDown,w)}),[k,w,D]);return{isOpen:t,onClose:n,headerId:v,bodyId:b,setBodyMounted:E,setHeaderMounted:j,dialogRef:p,overlayRef:h,getDialogProps:M,getDialogContainerProps:R,index:y}}function bB(e,t){const n=e.current;d.useEffect(()=>{if(!(!e.current||!t))return gB(e.current)},[t,e,n])}function xB(e,...t){const n=d.useId(),r=e||n;return d.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}var[yB,Lc]=$t({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[CB,Bi]=$t({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),Hi=e=>{const t={scrollBehavior:"outside",autoFocus:!0,trapFocus:!0,returnFocusOnClose:!0,blockScrollOnMount:!0,allowPinchZoom:!1,motionPreset:"scale",lockFocusAcrossFrames:!0,...e},{portalProps:n,children:r,autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:l,returnFocusOnClose:u,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b,onCloseComplete:y}=t,x=Wn("Modal",t),k={...vB(t),autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:l,returnFocusOnClose:u,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b};return a.jsx(CB,{value:k,children:a.jsx(yB,{value:x,children:a.jsx(nr,{onExitComplete:y,children:k.isOpen&&a.jsx(_d,{...n,children:r})})})})};Hi.displayName="Modal";var Ap="right-scroll-bar-position",Np="width-before-scroll-bar",wB="with-scroll-bars-hidden",SB="--removed-body-scroll-bar-size",dP=a3(),uv=function(){},Rm=d.forwardRef(function(e,t){var n=d.useRef(null),r=d.useState({onScrollCapture:uv,onWheelCapture:uv,onTouchMoveCapture:uv}),o=r[0],s=r[1],i=e.forwardProps,l=e.children,u=e.className,p=e.removeScrollBar,h=e.enabled,m=e.shards,v=e.sideCar,b=e.noIsolation,y=e.inert,x=e.allowPinchZoom,w=e.as,k=w===void 0?"div":w,_=e.gapMode,j=r3(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),I=v,E=n3([n,t]),M=us(us({},j),o);return d.createElement(d.Fragment,null,h&&d.createElement(I,{sideCar:dP,removeScrollBar:p,shards:m,noIsolation:b,inert:y,setCallbacks:s,allowPinchZoom:!!x,lockRef:n,gapMode:_}),i?d.cloneElement(d.Children.only(l),us(us({},M),{ref:E})):d.createElement(k,us({},M,{className:u,ref:E}),l))});Rm.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Rm.classNames={fullWidth:Np,zeroRight:Ap};var uS,kB=function(){if(uS)return uS;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function _B(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=kB();return t&&e.setAttribute("nonce",t),e}function jB(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function PB(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var IB=function(){var e=0,t=null;return{add:function(n){e==0&&(t=_B())&&(jB(t,n),PB(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},EB=function(){var e=IB();return function(t,n){d.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},fP=function(){var e=EB(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},MB={left:0,top:0,right:0,gap:0},dv=function(e){return parseInt(e||"",10)||0},OB=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],o=t[e==="padding"?"paddingRight":"marginRight"];return[dv(n),dv(r),dv(o)]},DB=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return MB;var t=OB(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},RB=fP(),AB=function(e,t,n,r){var o=e.left,s=e.top,i=e.right,l=e.gap;return n===void 0&&(n="margin"),` + .`.concat(wB,` { + overflow: hidden `).concat(r,`; + padding-right: `).concat(l,"px ").concat(r,`; + } + body { + overflow: hidden `).concat(r,`; + overscroll-behavior: contain; + `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` + padding-left: `.concat(o,`px; + padding-top: `).concat(s,`px; + padding-right: `).concat(i,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(l,"px ").concat(r,`; + `),n==="padding"&&"padding-right: ".concat(l,"px ").concat(r,";")].filter(Boolean).join(""),` + } + + .`).concat(Ap,` { + right: `).concat(l,"px ").concat(r,`; + } + + .`).concat(Np,` { + margin-right: `).concat(l,"px ").concat(r,`; + } + + .`).concat(Ap," .").concat(Ap,` { + right: 0 `).concat(r,`; + } + + .`).concat(Np," .").concat(Np,` { + margin-right: 0 `).concat(r,`; + } + + body { + `).concat(SB,": ").concat(l,`px; + } +`)},NB=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,s=d.useMemo(function(){return DB(o)},[o]);return d.createElement(RB,{styles:AB(s,!t,o,n?"":"!important")})},R1=!1;if(typeof window<"u")try{var ep=Object.defineProperty({},"passive",{get:function(){return R1=!0,!0}});window.addEventListener("test",ep,ep),window.removeEventListener("test",ep,ep)}catch{R1=!1}var El=R1?{passive:!1}:!1,TB=function(e){return e.tagName==="TEXTAREA"},pP=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!TB(e)&&n[t]==="visible")},$B=function(e){return pP(e,"overflowY")},LB=function(e){return pP(e,"overflowX")},dS=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=hP(e,r);if(o){var s=mP(e,r),i=s[1],l=s[2];if(i>l)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},zB=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},FB=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},hP=function(e,t){return e==="v"?$B(t):LB(t)},mP=function(e,t){return e==="v"?zB(t):FB(t)},BB=function(e,t){return e==="h"&&t==="rtl"?-1:1},HB=function(e,t,n,r,o){var s=BB(e,window.getComputedStyle(t).direction),i=s*r,l=n.target,u=t.contains(l),p=!1,h=i>0,m=0,v=0;do{var b=mP(e,l),y=b[0],x=b[1],w=b[2],k=x-w-s*y;(y||k)&&hP(e,l)&&(m+=k,v+=y),l=l.parentNode}while(!u&&l!==document.body||u&&(t.contains(l)||t===l));return(h&&(o&&m===0||!o&&i>m)||!h&&(o&&v===0||!o&&-i>v))&&(p=!0),p},tp=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},fS=function(e){return[e.deltaX,e.deltaY]},pS=function(e){return e&&"current"in e?e.current:e},WB=function(e,t){return e[0]===t[0]&&e[1]===t[1]},VB=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},UB=0,Ml=[];function GB(e){var t=d.useRef([]),n=d.useRef([0,0]),r=d.useRef(),o=d.useState(UB++)[0],s=d.useState(fP)[0],i=d.useRef(e);d.useEffect(function(){i.current=e},[e]),d.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var x=k1([e.lockRef.current],(e.shards||[]).map(pS),!0).filter(Boolean);return x.forEach(function(w){return w.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),x.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=d.useCallback(function(x,w){if("touches"in x&&x.touches.length===2)return!i.current.allowPinchZoom;var k=tp(x),_=n.current,j="deltaX"in x?x.deltaX:_[0]-k[0],I="deltaY"in x?x.deltaY:_[1]-k[1],E,M=x.target,D=Math.abs(j)>Math.abs(I)?"h":"v";if("touches"in x&&D==="h"&&M.type==="range")return!1;var R=dS(D,M);if(!R)return!0;if(R?E=D:(E=D==="v"?"h":"v",R=dS(D,M)),!R)return!1;if(!r.current&&"changedTouches"in x&&(j||I)&&(r.current=E),!E)return!0;var A=r.current||E;return HB(A,w,x,A==="h"?j:I,!0)},[]),u=d.useCallback(function(x){var w=x;if(!(!Ml.length||Ml[Ml.length-1]!==s)){var k="deltaY"in w?fS(w):tp(w),_=t.current.filter(function(E){return E.name===w.type&&E.target===w.target&&WB(E.delta,k)})[0];if(_&&_.should){w.cancelable&&w.preventDefault();return}if(!_){var j=(i.current.shards||[]).map(pS).filter(Boolean).filter(function(E){return E.contains(w.target)}),I=j.length>0?l(w,j[0]):!i.current.noIsolation;I&&w.cancelable&&w.preventDefault()}}},[]),p=d.useCallback(function(x,w,k,_){var j={name:x,delta:w,target:k,should:_};t.current.push(j),setTimeout(function(){t.current=t.current.filter(function(I){return I!==j})},1)},[]),h=d.useCallback(function(x){n.current=tp(x),r.current=void 0},[]),m=d.useCallback(function(x){p(x.type,fS(x),x.target,l(x,e.lockRef.current))},[]),v=d.useCallback(function(x){p(x.type,tp(x),x.target,l(x,e.lockRef.current))},[]);d.useEffect(function(){return Ml.push(s),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:v}),document.addEventListener("wheel",u,El),document.addEventListener("touchmove",u,El),document.addEventListener("touchstart",h,El),function(){Ml=Ml.filter(function(x){return x!==s}),document.removeEventListener("wheel",u,El),document.removeEventListener("touchmove",u,El),document.removeEventListener("touchstart",h,El)}},[]);var b=e.removeScrollBar,y=e.inert;return d.createElement(d.Fragment,null,y?d.createElement(s,{styles:VB(o)}):null,b?d.createElement(NB,{gapMode:e.gapMode}):null)}const KB=U$(dP,GB);var gP=d.forwardRef(function(e,t){return d.createElement(Rm,us({},e,{ref:t,sideCar:KB}))});gP.classNames=Rm.classNames;const qB=gP;function XB(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:o,blockScrollOnMount:s,allowPinchZoom:i,finalFocusRef:l,returnFocusOnClose:u,preserveScrollBarGap:p,lockFocusAcrossFrames:h,isOpen:m}=Bi(),[v,b]=L7();d.useEffect(()=>{!v&&b&&setTimeout(b)},[v,b]);const y=cP(r,m);return a.jsx($3,{autoFocus:t,isDisabled:!n,initialFocusRef:o,finalFocusRef:l,restoreFocus:u,contentRef:r,lockFocusAcrossFrames:h,children:a.jsx(qB,{removeScrollBar:!p,allowPinchZoom:i,enabled:y===1&&s,forwardProps:!0,children:e.children})})}var Wi=Pe((e,t)=>{const{className:n,children:r,containerProps:o,motionProps:s,...i}=e,{getDialogProps:l,getDialogContainerProps:u}=Bi(),p=l(i,t),h=u(o),m=et("chakra-modal__content",n),v=Lc(),b={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...v.dialog},y={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...v.dialogContainer},{motionPreset:x}=Bi();return a.jsx(XB,{children:a.jsx(_e.div,{...h,className:"chakra-modal__content-container",tabIndex:-1,__css:y,children:a.jsx(lP,{preset:x,motionProps:s,className:m,...p,__css:b,children:r})})})});Wi.displayName="ModalContent";function $d(e){const{leastDestructiveRef:t,...n}=e;return a.jsx(Hi,{...n,initialFocusRef:t})}var Ld=Pe((e,t)=>a.jsx(Wi,{ref:t,role:"alertdialog",...e})),gs=Pe((e,t)=>{const{className:n,...r}=e,o=et("chakra-modal__footer",n),i={display:"flex",alignItems:"center",justifyContent:"flex-end",...Lc().footer};return a.jsx(_e.footer,{ref:t,...r,__css:i,className:o})});gs.displayName="ModalFooter";var Ho=Pe((e,t)=>{const{className:n,...r}=e,{headerId:o,setHeaderMounted:s}=Bi();d.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=et("chakra-modal__header",n),u={flex:0,...Lc().header};return a.jsx(_e.header,{ref:t,className:i,id:o,...r,__css:u})});Ho.displayName="ModalHeader";var YB=_e(vn.div),Wo=Pe((e,t)=>{const{className:n,transition:r,motionProps:o,...s}=e,i=et("chakra-modal__overlay",n),u={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",...Lc().overlay},{motionPreset:p}=Bi(),m=o||(p==="none"?{}:T5);return a.jsx(YB,{...m,__css:u,ref:t,className:i,...s})});Wo.displayName="ModalOverlay";var Vo=Pe((e,t)=>{const{className:n,...r}=e,{bodyId:o,setBodyMounted:s}=Bi();d.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=et("chakra-modal__body",n),l=Lc();return a.jsx(_e.div,{ref:t,className:i,id:o,...r,__css:l.body})});Vo.displayName="ModalBody";var zd=Pe((e,t)=>{const{onClick:n,className:r,...o}=e,{onClose:s}=Bi(),i=et("chakra-modal__close-btn",r),l=Lc();return a.jsx(_N,{ref:t,__css:l.closeButton,className:i,onClick:Fe(n,u=>{u.stopPropagation(),s()}),...o})});zd.displayName="ModalCloseButton";var QB=e=>a.jsx(Tn,{viewBox:"0 0 24 24",...e,children:a.jsx("path",{fill:"currentColor",d:"M21,5H3C2.621,5,2.275,5.214,2.105,5.553C1.937,5.892,1.973,6.297,2.2,6.6l9,12 c0.188,0.252,0.485,0.4,0.8,0.4s0.611-0.148,0.8-0.4l9-12c0.228-0.303,0.264-0.708,0.095-1.047C21.725,5.214,21.379,5,21,5z"})}),ZB=e=>a.jsx(Tn,{viewBox:"0 0 24 24",...e,children:a.jsx("path",{fill:"currentColor",d:"M12.8,5.4c-0.377-0.504-1.223-0.504-1.6,0l-9,12c-0.228,0.303-0.264,0.708-0.095,1.047 C2.275,18.786,2.621,19,3,19h18c0.379,0,0.725-0.214,0.895-0.553c0.169-0.339,0.133-0.744-0.095-1.047L12.8,5.4z"})});function hS(e,t,n,r){d.useEffect(()=>{var o;if(!e.current||!r)return;const s=(o=e.current.ownerDocument.defaultView)!=null?o:window,i=Array.isArray(t)?t:[t],l=new s.MutationObserver(u=>{for(const p of u)p.type==="attributes"&&p.attributeName&&i.includes(p.attributeName)&&n(p)});return l.observe(e.current,{attributes:!0,attributeFilter:i}),()=>l.disconnect()})}function JB(e,t){const n=nn(e);d.useEffect(()=>{let r=null;const o=()=>n();return t!==null&&(r=window.setInterval(o,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var eH=50,mS=300;function tH(e,t){const[n,r]=d.useState(!1),[o,s]=d.useState(null),[i,l]=d.useState(!0),u=d.useRef(null),p=()=>clearTimeout(u.current);JB(()=>{o==="increment"&&e(),o==="decrement"&&t()},n?eH:null);const h=d.useCallback(()=>{i&&e(),u.current=setTimeout(()=>{l(!1),r(!0),s("increment")},mS)},[e,i]),m=d.useCallback(()=>{i&&t(),u.current=setTimeout(()=>{l(!1),r(!0),s("decrement")},mS)},[t,i]),v=d.useCallback(()=>{l(!0),r(!1),p()},[]);return d.useEffect(()=>()=>p(),[]),{up:h,down:m,stop:v,isSpinning:n}}var nH=/^[Ee0-9+\-.]$/;function rH(e){return nH.test(e)}function oH(e,t){if(e.key==null)return!0;const n=e.ctrlKey||e.altKey||e.metaKey;return!(e.key.length===1)||n?!0:t(e.key)}function sH(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:o=Number.MIN_SAFE_INTEGER,max:s=Number.MAX_SAFE_INTEGER,step:i=1,isReadOnly:l,isDisabled:u,isRequired:p,isInvalid:h,pattern:m="[0-9]*(.[0-9]+)?",inputMode:v="decimal",allowMouseWheel:b,id:y,onChange:x,precision:w,name:k,"aria-describedby":_,"aria-label":j,"aria-labelledby":I,onFocus:E,onBlur:M,onInvalid:D,getAriaValueText:R,isValidCharacter:A,format:O,parse:T,...K}=e,F=nn(E),V=nn(M),X=nn(D),W=nn(A??rH),z=nn(R),Y=_$(e),{update:B,increment:q,decrement:re}=Y,[Q,le]=d.useState(!1),se=!(l||u),U=d.useRef(null),G=d.useRef(null),te=d.useRef(null),ae=d.useRef(null),oe=d.useCallback(ve=>ve.split("").filter(W).join(""),[W]),pe=d.useCallback(ve=>{var Qe;return(Qe=T==null?void 0:T(ve))!=null?Qe:ve},[T]),ue=d.useCallback(ve=>{var Qe;return((Qe=O==null?void 0:O(ve))!=null?Qe:ve).toString()},[O]);ca(()=>{(Y.valueAsNumber>s||Y.valueAsNumber{if(!U.current)return;if(U.current.value!=Y.value){const Qe=pe(U.current.value);Y.setValue(oe(Qe))}},[pe,oe]);const me=d.useCallback((ve=i)=>{se&&q(ve)},[q,se,i]),Ce=d.useCallback((ve=i)=>{se&&re(ve)},[re,se,i]),ge=tH(me,Ce);hS(te,"disabled",ge.stop,ge.isSpinning),hS(ae,"disabled",ge.stop,ge.isSpinning);const fe=d.useCallback(ve=>{if(ve.nativeEvent.isComposing)return;const ot=pe(ve.currentTarget.value);B(oe(ot)),G.current={start:ve.currentTarget.selectionStart,end:ve.currentTarget.selectionEnd}},[B,oe,pe]),De=d.useCallback(ve=>{var Qe,ot,lt;F==null||F(ve),G.current&&(ve.target.selectionStart=(ot=G.current.start)!=null?ot:(Qe=ve.currentTarget.value)==null?void 0:Qe.length,ve.currentTarget.selectionEnd=(lt=G.current.end)!=null?lt:ve.currentTarget.selectionStart)},[F]),je=d.useCallback(ve=>{if(ve.nativeEvent.isComposing)return;oH(ve,W)||ve.preventDefault();const Qe=Be(ve)*i,ot=ve.key,Me={ArrowUp:()=>me(Qe),ArrowDown:()=>Ce(Qe),Home:()=>B(o),End:()=>B(s)}[ot];Me&&(ve.preventDefault(),Me(ve))},[W,i,me,Ce,B,o,s]),Be=ve=>{let Qe=1;return(ve.metaKey||ve.ctrlKey)&&(Qe=.1),ve.shiftKey&&(Qe=10),Qe},rt=d.useMemo(()=>{const ve=z==null?void 0:z(Y.value);if(ve!=null)return ve;const Qe=Y.value.toString();return Qe||void 0},[Y.value,z]),Ue=d.useCallback(()=>{let ve=Y.value;if(Y.value==="")return;/^[eE]/.test(Y.value.toString())?Y.setValue(""):(Y.valueAsNumbers&&(ve=s),Y.cast(ve))},[Y,s,o]),wt=d.useCallback(()=>{le(!1),n&&Ue()},[n,le,Ue]),Ye=d.useCallback(()=>{t&&requestAnimationFrame(()=>{var ve;(ve=U.current)==null||ve.focus()})},[t]),tt=d.useCallback(ve=>{ve.preventDefault(),ge.up(),Ye()},[Ye,ge]),be=d.useCallback(ve=>{ve.preventDefault(),ge.down(),Ye()},[Ye,ge]);_i(()=>U.current,"wheel",ve=>{var Qe,ot;const Me=((ot=(Qe=U.current)==null?void 0:Qe.ownerDocument)!=null?ot:document).activeElement===U.current;if(!b||!Me)return;ve.preventDefault();const $e=Be(ve)*i,At=Math.sign(ve.deltaY);At===-1?me($e):At===1&&Ce($e)},{passive:!1});const Re=d.useCallback((ve={},Qe=null)=>{const ot=u||r&&Y.isAtMax;return{...ve,ref:Ct(Qe,te),role:"button",tabIndex:-1,onPointerDown:Fe(ve.onPointerDown,lt=>{lt.button!==0||ot||tt(lt)}),onPointerLeave:Fe(ve.onPointerLeave,ge.stop),onPointerUp:Fe(ve.onPointerUp,ge.stop),disabled:ot,"aria-disabled":po(ot)}},[Y.isAtMax,r,tt,ge.stop,u]),st=d.useCallback((ve={},Qe=null)=>{const ot=u||r&&Y.isAtMin;return{...ve,ref:Ct(Qe,ae),role:"button",tabIndex:-1,onPointerDown:Fe(ve.onPointerDown,lt=>{lt.button!==0||ot||be(lt)}),onPointerLeave:Fe(ve.onPointerLeave,ge.stop),onPointerUp:Fe(ve.onPointerUp,ge.stop),disabled:ot,"aria-disabled":po(ot)}},[Y.isAtMin,r,be,ge.stop,u]),mt=d.useCallback((ve={},Qe=null)=>{var ot,lt,Me,$e;return{name:k,inputMode:v,type:"text",pattern:m,"aria-labelledby":I,"aria-label":j,"aria-describedby":_,id:y,disabled:u,...ve,readOnly:(ot=ve.readOnly)!=null?ot:l,"aria-readonly":(lt=ve.readOnly)!=null?lt:l,"aria-required":(Me=ve.required)!=null?Me:p,required:($e=ve.required)!=null?$e:p,ref:Ct(U,Qe),value:ue(Y.value),role:"spinbutton","aria-valuemin":o,"aria-valuemax":s,"aria-valuenow":Number.isNaN(Y.valueAsNumber)?void 0:Y.valueAsNumber,"aria-invalid":po(h??Y.isOutOfRange),"aria-valuetext":rt,autoComplete:"off",autoCorrect:"off",onChange:Fe(ve.onChange,fe),onKeyDown:Fe(ve.onKeyDown,je),onFocus:Fe(ve.onFocus,De,()=>le(!0)),onBlur:Fe(ve.onBlur,V,wt)}},[k,v,m,I,j,ue,_,y,u,p,l,h,Y.value,Y.valueAsNumber,Y.isOutOfRange,o,s,rt,fe,je,De,V,wt]);return{value:ue(Y.value),valueAsNumber:Y.valueAsNumber,isFocused:Q,isDisabled:u,isReadOnly:l,getIncrementButtonProps:Re,getDecrementButtonProps:st,getInputProps:mt,htmlProps:K}}var[aH,Am]=$t({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[iH,Ox]=$t({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),Nm=Pe(function(t,n){const r=Wn("NumberInput",t),o=Yt(t),s=nx(o),{htmlProps:i,...l}=sH(s),u=d.useMemo(()=>l,[l]);return a.jsx(iH,{value:u,children:a.jsx(aH,{value:r,children:a.jsx(_e.div,{...i,ref:n,className:et("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})})})});Nm.displayName="NumberInput";var Tm=Pe(function(t,n){const r=Am();return a.jsx(_e.div,{"aria-hidden":!0,ref:n,...t,__css:{display:"flex",flexDirection:"column",position:"absolute",top:"0",insetEnd:"0px",margin:"1px",height:"calc(100% - 2px)",zIndex:1,...r.stepperGroup}})});Tm.displayName="NumberInputStepper";var $m=Pe(function(t,n){const{getInputProps:r}=Ox(),o=r(t,n),s=Am();return a.jsx(_e.input,{...o,className:et("chakra-numberinput__field",t.className),__css:{width:"100%",...s.field}})});$m.displayName="NumberInputField";var vP=_e("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),Lm=Pe(function(t,n){var r;const o=Am(),{getDecrementButtonProps:s}=Ox(),i=s(t,n);return a.jsx(vP,{...i,__css:o.stepper,children:(r=t.children)!=null?r:a.jsx(QB,{})})});Lm.displayName="NumberDecrementStepper";var zm=Pe(function(t,n){var r;const{getIncrementButtonProps:o}=Ox(),s=o(t,n),i=Am();return a.jsx(vP,{...s,__css:i.stepper,children:(r=t.children)!=null?r:a.jsx(ZB,{})})});zm.displayName="NumberIncrementStepper";var[lH,zc]=$t({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[cH,Dx]=$t({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `});function Rx(e){const t=d.Children.only(e.children),{getTriggerProps:n}=zc();return d.cloneElement(t,n(t.props,t.ref))}Rx.displayName="PopoverTrigger";var Ol={click:"click",hover:"hover"};function uH(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:o,returnFocusOnClose:s=!0,autoFocus:i=!0,arrowSize:l,arrowShadowColor:u,trigger:p=Ol.click,openDelay:h=200,closeDelay:m=200,isLazy:v,lazyBehavior:b="unmount",computePositionOnMount:y,...x}=e,{isOpen:w,onClose:k,onOpen:_,onToggle:j}=Ix(e),I=d.useRef(null),E=d.useRef(null),M=d.useRef(null),D=d.useRef(!1),R=d.useRef(!1);w&&(R.current=!0);const[A,O]=d.useState(!1),[T,K]=d.useState(!1),F=d.useId(),V=o??F,[X,W,z,Y]=["popover-trigger","popover-content","popover-header","popover-body"].map(fe=>`${fe}-${V}`),{referenceRef:B,getArrowProps:q,getPopperProps:re,getArrowInnerProps:Q,forceUpdate:le}=Px({...x,enabled:w||!!y}),se=nP({isOpen:w,ref:M});Y5({enabled:w,ref:E}),U3(M,{focusRef:E,visible:w,shouldFocus:s&&p===Ol.click}),vz(M,{focusRef:r,visible:w,shouldFocus:i&&p===Ol.click});const U=Ex({wasSelected:R.current,enabled:v,mode:b,isSelected:se.present}),G=d.useCallback((fe={},De=null)=>{const je={...fe,style:{...fe.style,transformOrigin:jn.transformOrigin.varRef,[jn.arrowSize.var]:l?`${l}px`:void 0,[jn.arrowShadowColor.var]:u},ref:Ct(M,De),children:U?fe.children:null,id:W,tabIndex:-1,role:"dialog",onKeyDown:Fe(fe.onKeyDown,Be=>{n&&Be.key==="Escape"&&k()}),onBlur:Fe(fe.onBlur,Be=>{const rt=gS(Be),Ue=fv(M.current,rt),wt=fv(E.current,rt);w&&t&&(!Ue&&!wt)&&k()}),"aria-labelledby":A?z:void 0,"aria-describedby":T?Y:void 0};return p===Ol.hover&&(je.role="tooltip",je.onMouseEnter=Fe(fe.onMouseEnter,()=>{D.current=!0}),je.onMouseLeave=Fe(fe.onMouseLeave,Be=>{Be.nativeEvent.relatedTarget!==null&&(D.current=!1,setTimeout(()=>k(),m))})),je},[U,W,A,z,T,Y,p,n,k,w,t,m,u,l]),te=d.useCallback((fe={},De=null)=>re({...fe,style:{visibility:w?"visible":"hidden",...fe.style}},De),[w,re]),ae=d.useCallback((fe,De=null)=>({...fe,ref:Ct(De,I,B)}),[I,B]),oe=d.useRef(),pe=d.useRef(),ue=d.useCallback(fe=>{I.current==null&&B(fe)},[B]),me=d.useCallback((fe={},De=null)=>{const je={...fe,ref:Ct(E,De,ue),id:X,"aria-haspopup":"dialog","aria-expanded":w,"aria-controls":W};return p===Ol.click&&(je.onClick=Fe(fe.onClick,j)),p===Ol.hover&&(je.onFocus=Fe(fe.onFocus,()=>{oe.current===void 0&&_()}),je.onBlur=Fe(fe.onBlur,Be=>{const rt=gS(Be),Ue=!fv(M.current,rt);w&&t&&Ue&&k()}),je.onKeyDown=Fe(fe.onKeyDown,Be=>{Be.key==="Escape"&&k()}),je.onMouseEnter=Fe(fe.onMouseEnter,()=>{D.current=!0,oe.current=window.setTimeout(()=>_(),h)}),je.onMouseLeave=Fe(fe.onMouseLeave,()=>{D.current=!1,oe.current&&(clearTimeout(oe.current),oe.current=void 0),pe.current=window.setTimeout(()=>{D.current===!1&&k()},m)})),je},[X,w,W,p,ue,j,_,t,k,h,m]);d.useEffect(()=>()=>{oe.current&&clearTimeout(oe.current),pe.current&&clearTimeout(pe.current)},[]);const Ce=d.useCallback((fe={},De=null)=>({...fe,id:z,ref:Ct(De,je=>{O(!!je)})}),[z]),ge=d.useCallback((fe={},De=null)=>({...fe,id:Y,ref:Ct(De,je=>{K(!!je)})}),[Y]);return{forceUpdate:le,isOpen:w,onAnimationComplete:se.onComplete,onClose:k,getAnchorProps:ae,getArrowProps:q,getArrowInnerProps:Q,getPopoverPositionerProps:te,getPopoverProps:G,getTriggerProps:me,getHeaderProps:Ce,getBodyProps:ge}}function fv(e,t){return e===t||(e==null?void 0:e.contains(t))}function gS(e){var t;const n=e.currentTarget.ownerDocument.activeElement;return(t=e.relatedTarget)!=null?t:n}function Fm(e){const t=Wn("Popover",e),{children:n,...r}=Yt(e),o=yd(),s=uH({...r,direction:o.direction});return a.jsx(lH,{value:s,children:a.jsx(cH,{value:t,children:Nb(n,{isOpen:s.isOpen,onClose:s.onClose,forceUpdate:s.forceUpdate})})})}Fm.displayName="Popover";function bP(e){const t=d.Children.only(e.children),{getAnchorProps:n}=zc();return d.cloneElement(t,n(t.props,t.ref))}bP.displayName="PopoverAnchor";var pv=(e,t)=>t?`${e}.${t}, ${t}`:void 0;function xP(e){var t;const{bg:n,bgColor:r,backgroundColor:o,shadow:s,boxShadow:i,shadowColor:l}=e,{getArrowProps:u,getArrowInnerProps:p}=zc(),h=Dx(),m=(t=n??r)!=null?t:o,v=s??i;return a.jsx(_e.div,{...u(),className:"chakra-popover__arrow-positioner",children:a.jsx(_e.div,{className:et("chakra-popover__arrow",e.className),...p(e),__css:{"--popper-arrow-shadow-color":pv("colors",l),"--popper-arrow-bg":pv("colors",m),"--popper-arrow-shadow":pv("shadows",v),...h.arrow}})})}xP.displayName="PopoverArrow";var Ax=Pe(function(t,n){const{getBodyProps:r}=zc(),o=Dx();return a.jsx(_e.div,{...r(t,n),className:et("chakra-popover__body",t.className),__css:o.body})});Ax.displayName="PopoverBody";function dH(e){if(e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var fH={exit:{opacity:0,scale:.95,transition:{duration:.1,ease:[.4,0,1,1]}},enter:{scale:1,opacity:1,transition:{duration:.15,ease:[0,0,.2,1]}}},pH=_e(vn.section),yP=Pe(function(t,n){const{variants:r=fH,...o}=t,{isOpen:s}=zc();return a.jsx(pH,{ref:n,variants:dH(r),initial:!1,animate:s?"enter":"exit",...o})});yP.displayName="PopoverTransition";var Bm=Pe(function(t,n){const{rootProps:r,motionProps:o,...s}=t,{getPopoverProps:i,getPopoverPositionerProps:l,onAnimationComplete:u}=zc(),p=Dx(),h={position:"relative",display:"flex",flexDirection:"column",...p.content};return a.jsx(_e.div,{...l(r),__css:p.popper,className:"chakra-popover__popper",children:a.jsx(yP,{...o,...i(s,n),onAnimationComplete:fm(u,s.onAnimationComplete),className:et("chakra-popover__content",t.className),__css:h})})});Bm.displayName="PopoverContent";var A1=e=>a.jsx(_e.circle,{cx:50,cy:50,r:42,fill:"transparent",...e});A1.displayName="Circle";function hH(e,t,n){return(e-t)*100/(n-t)}var mH=ia({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}}),gH=ia({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),vH=ia({"0%":{left:"-40%"},"100%":{left:"100%"}}),bH=ia({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function CP(e){const{value:t=0,min:n,max:r,valueText:o,getValueText:s,isIndeterminate:i,role:l="progressbar"}=e,u=hH(t,n,r);return{bind:{"data-indeterminate":i?"":void 0,"aria-valuemax":r,"aria-valuemin":n,"aria-valuenow":i?void 0:t,"aria-valuetext":(()=>{if(t!=null)return typeof s=="function"?s(t,u):o})(),role:l},percent:u,value:t}}var wP=e=>{const{size:t,isIndeterminate:n,...r}=e;return a.jsx(_e.svg,{viewBox:"0 0 100 100",__css:{width:t,height:t,animation:n?`${gH} 2s linear infinite`:void 0},...r})};wP.displayName="Shape";var N1=Pe((e,t)=>{var n;const{size:r="48px",max:o=100,min:s=0,valueText:i,getValueText:l,value:u,capIsRound:p,children:h,thickness:m="10px",color:v="#0078d4",trackColor:b="#edebe9",isIndeterminate:y,...x}=e,w=CP({min:s,max:o,value:u,valueText:i,getValueText:l,isIndeterminate:y}),k=y?void 0:((n=w.percent)!=null?n:0)*2.64,_=k==null?void 0:`${k} ${264-k}`,j=y?{css:{animation:`${mH} 1.5s linear infinite`}}:{strokeDashoffset:66,strokeDasharray:_,transitionProperty:"stroke-dasharray, stroke",transitionDuration:"0.6s",transitionTimingFunction:"ease"},I={display:"inline-block",position:"relative",verticalAlign:"middle",fontSize:r};return a.jsxs(_e.div,{ref:t,className:"chakra-progress",...w.bind,...x,__css:I,children:[a.jsxs(wP,{size:r,isIndeterminate:y,children:[a.jsx(A1,{stroke:b,strokeWidth:m,className:"chakra-progress__track"}),a.jsx(A1,{stroke:v,strokeWidth:m,className:"chakra-progress__indicator",strokeLinecap:p?"round":void 0,opacity:w.value===0&&!y?0:void 0,...j})]}),h]})});N1.displayName="CircularProgress";var[xH,yH]=$t({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),CH=Pe((e,t)=>{const{min:n,max:r,value:o,isIndeterminate:s,role:i,...l}=e,u=CP({value:o,min:n,max:r,isIndeterminate:s,role:i}),h={height:"100%",...yH().filledTrack};return a.jsx(_e.div,{ref:t,style:{width:`${u.percent}%`,...l.style},...u.bind,...l,__css:h})}),SP=Pe((e,t)=>{var n;const{value:r,min:o=0,max:s=100,hasStripe:i,isAnimated:l,children:u,borderRadius:p,isIndeterminate:h,"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,title:y,role:x,...w}=Yt(e),k=Wn("Progress",e),_=p??((n=k.track)==null?void 0:n.borderRadius),j={animation:`${bH} 1s linear infinite`},M={...!h&&i&&l&&j,...h&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${vH} 1s ease infinite normal none running`}},D={overflow:"hidden",position:"relative",...k.track};return a.jsx(_e.div,{ref:t,borderRadius:_,__css:D,...w,children:a.jsxs(xH,{value:k,children:[a.jsx(CH,{"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,min:o,max:s,value:r,isIndeterminate:h,css:M,borderRadius:_,title:y,role:x}),u]})})});SP.displayName="Progress";function wH(e){return e&&r1(e)&&r1(e.target)}function SH(e={}){const{onChange:t,value:n,defaultValue:r,name:o,isDisabled:s,isFocusable:i,isNative:l,...u}=e,[p,h]=d.useState(r||""),m=typeof n<"u",v=m?n:p,b=d.useRef(null),y=d.useCallback(()=>{const E=b.current;if(!E)return;let M="input:not(:disabled):checked";const D=E.querySelector(M);if(D){D.focus();return}M="input:not(:disabled)";const R=E.querySelector(M);R==null||R.focus()},[]),w=`radio-${d.useId()}`,k=o||w,_=d.useCallback(E=>{const M=wH(E)?E.target.value:E;m||h(M),t==null||t(String(M))},[t,m]),j=d.useCallback((E={},M=null)=>({...E,ref:Ct(M,b),role:"radiogroup"}),[]),I=d.useCallback((E={},M=null)=>({...E,ref:M,name:k,[l?"checked":"isChecked"]:v!=null?E.value===v:void 0,onChange(R){_(R)},"data-radiogroup":!0}),[l,k,_,v]);return{getRootProps:j,getRadioProps:I,name:k,ref:b,focus:y,setValue:h,value:v,onChange:_,isDisabled:s,isFocusable:i,htmlProps:u}}var[kH,kP]=$t({name:"RadioGroupContext",strict:!1}),ih=Pe((e,t)=>{const{colorScheme:n,size:r,variant:o,children:s,className:i,isDisabled:l,isFocusable:u,...p}=e,{value:h,onChange:m,getRootProps:v,name:b,htmlProps:y}=SH(p),x=d.useMemo(()=>({name:b,size:r,onChange:m,colorScheme:n,value:h,variant:o,isDisabled:l,isFocusable:u}),[b,r,m,n,h,o,l,u]);return a.jsx(kH,{value:x,children:a.jsx(_e.div,{...v(y,t),className:et("chakra-radio-group",i),children:s})})});ih.displayName="RadioGroup";var _H={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"};function jH(e={}){const{defaultChecked:t,isChecked:n,isFocusable:r,isDisabled:o,isReadOnly:s,isRequired:i,onChange:l,isInvalid:u,name:p,value:h,id:m,"data-radiogroup":v,"aria-describedby":b,...y}=e,x=`radio-${d.useId()}`,w=Ed(),_=!!kP()||!!v;let I=!!w&&!_?w.id:x;I=m??I;const E=o??(w==null?void 0:w.isDisabled),M=s??(w==null?void 0:w.isReadOnly),D=i??(w==null?void 0:w.isRequired),R=u??(w==null?void 0:w.isInvalid),[A,O]=d.useState(!1),[T,K]=d.useState(!1),[F,V]=d.useState(!1),[X,W]=d.useState(!1),[z,Y]=d.useState(!!t),B=typeof n<"u",q=B?n:z;d.useEffect(()=>W5(O),[]);const re=d.useCallback(ue=>{if(M||E){ue.preventDefault();return}B||Y(ue.target.checked),l==null||l(ue)},[B,E,M,l]),Q=d.useCallback(ue=>{ue.key===" "&&W(!0)},[W]),le=d.useCallback(ue=>{ue.key===" "&&W(!1)},[W]),se=d.useCallback((ue={},me=null)=>({...ue,ref:me,"data-active":at(X),"data-hover":at(F),"data-disabled":at(E),"data-invalid":at(R),"data-checked":at(q),"data-focus":at(T),"data-focus-visible":at(T&&A),"data-readonly":at(M),"aria-hidden":!0,onMouseDown:Fe(ue.onMouseDown,()=>W(!0)),onMouseUp:Fe(ue.onMouseUp,()=>W(!1)),onMouseEnter:Fe(ue.onMouseEnter,()=>V(!0)),onMouseLeave:Fe(ue.onMouseLeave,()=>V(!1))}),[X,F,E,R,q,T,M,A]),{onFocus:U,onBlur:G}=w??{},te=d.useCallback((ue={},me=null)=>{const Ce=E&&!r;return{...ue,id:I,ref:me,type:"radio",name:p,value:h,onChange:Fe(ue.onChange,re),onBlur:Fe(G,ue.onBlur,()=>K(!1)),onFocus:Fe(U,ue.onFocus,()=>K(!0)),onKeyDown:Fe(ue.onKeyDown,Q),onKeyUp:Fe(ue.onKeyUp,le),checked:q,disabled:Ce,readOnly:M,required:D,"aria-invalid":po(R),"aria-disabled":po(Ce),"aria-required":po(D),"data-readonly":at(M),"aria-describedby":b,style:_H}},[E,r,I,p,h,re,G,U,Q,le,q,M,D,R,b]);return{state:{isInvalid:R,isFocused:T,isChecked:q,isActive:X,isHovered:F,isDisabled:E,isReadOnly:M,isRequired:D},getCheckboxProps:se,getRadioProps:se,getInputProps:te,getLabelProps:(ue={},me=null)=>({...ue,ref:me,onMouseDown:Fe(ue.onMouseDown,PH),"data-disabled":at(E),"data-checked":at(q),"data-invalid":at(R)}),getRootProps:(ue,me=null)=>({...ue,ref:me,"data-disabled":at(E),"data-checked":at(q),"data-invalid":at(R)}),htmlProps:y}}function PH(e){e.preventDefault(),e.stopPropagation()}function IH(e,t){const n={},r={};for(const[o,s]of Object.entries(e))t.includes(o)?n[o]=s:r[o]=s;return[n,r]}var zs=Pe((e,t)=>{var n;const r=kP(),{onChange:o,value:s}=e,i=Wn("Radio",{...r,...e}),l=Yt(e),{spacing:u="0.5rem",children:p,isDisabled:h=r==null?void 0:r.isDisabled,isFocusable:m=r==null?void 0:r.isFocusable,inputProps:v,...b}=l;let y=e.isChecked;(r==null?void 0:r.value)!=null&&s!=null&&(y=r.value===s);let x=o;r!=null&&r.onChange&&s!=null&&(x=fm(r.onChange,o));const w=(n=e==null?void 0:e.name)!=null?n:r==null?void 0:r.name,{getInputProps:k,getCheckboxProps:_,getLabelProps:j,getRootProps:I,htmlProps:E}=jH({...b,isChecked:y,isFocusable:m,isDisabled:h,onChange:x,name:w}),[M,D]=IH(E,Nj),R=_(D),A=k(v,t),O=j(),T=Object.assign({},M,I()),K={display:"inline-flex",alignItems:"center",verticalAlign:"top",cursor:"pointer",position:"relative",...i.container},F={display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,...i.control},V={userSelect:"none",marginStart:u,...i.label};return a.jsxs(_e.label,{className:"chakra-radio",...T,__css:K,children:[a.jsx("input",{className:"chakra-radio__input",...A}),a.jsx(_e.span,{className:"chakra-radio__control",...R,__css:F}),p&&a.jsx(_e.span,{className:"chakra-radio__label",...O,__css:V,children:p})]})});zs.displayName="Radio";var _P=Pe(function(t,n){const{children:r,placeholder:o,className:s,...i}=t;return a.jsxs(_e.select,{...i,ref:n,className:et("chakra-select",s),children:[o&&a.jsx("option",{value:"",children:o}),r]})});_P.displayName="SelectField";function EH(e,t){const n={},r={};for(const[o,s]of Object.entries(e))t.includes(o)?n[o]=s:r[o]=s;return[n,r]}var jP=Pe((e,t)=>{var n;const r=Wn("Select",e),{rootProps:o,placeholder:s,icon:i,color:l,height:u,h:p,minH:h,minHeight:m,iconColor:v,iconSize:b,...y}=Yt(e),[x,w]=EH(y,Nj),k=tx(w),_={width:"100%",height:"fit-content",position:"relative",color:l},j={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return a.jsxs(_e.div,{className:"chakra-select__wrapper",__css:_,...x,...o,children:[a.jsx(_P,{ref:t,height:p??u,minH:h??m,placeholder:s,...k,__css:j,children:e.children}),a.jsx(PP,{"data-disabled":at(k.disabled),...(v||l)&&{color:v||l},__css:r.icon,...b&&{fontSize:b},children:i})]})});jP.displayName="Select";var MH=e=>a.jsx("svg",{viewBox:"0 0 24 24",...e,children:a.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})}),OH=_e("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),PP=e=>{const{children:t=a.jsx(MH,{}),...n}=e,r=d.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return a.jsx(OH,{...n,className:"chakra-select__icon-wrapper",children:d.isValidElement(t)?r:null})};PP.displayName="SelectIcon";function DH(){const e=d.useRef(!0);return d.useEffect(()=>{e.current=!1},[]),e.current}function RH(e){const t=d.useRef();return d.useEffect(()=>{t.current=e},[e]),t.current}var AH=_e("div",{baseStyle:{boxShadow:"none",backgroundClip:"padding-box",cursor:"default",color:"transparent",pointerEvents:"none",userSelect:"none","&::before, &::after, *":{visibility:"hidden"}}}),T1=Tj("skeleton-start-color"),$1=Tj("skeleton-end-color"),NH=ia({from:{opacity:0},to:{opacity:1}}),TH=ia({from:{borderColor:T1.reference,background:T1.reference},to:{borderColor:$1.reference,background:$1.reference}}),Hm=Pe((e,t)=>{const n={...e,fadeDuration:typeof e.fadeDuration=="number"?e.fadeDuration:.4,speed:typeof e.speed=="number"?e.speed:.8},r=Qa("Skeleton",n),o=DH(),{startColor:s="",endColor:i="",isLoaded:l,fadeDuration:u,speed:p,className:h,fitContent:m,...v}=Yt(n),[b,y]=ds("colors",[s,i]),x=RH(l),w=et("chakra-skeleton",h),k={...b&&{[T1.variable]:b},...y&&{[$1.variable]:y}};if(l){const _=o||x?"none":`${NH} ${u}s`;return a.jsx(_e.div,{ref:t,className:w,__css:{animation:_},...v})}return a.jsx(AH,{ref:t,className:w,...v,__css:{width:m?"fit-content":void 0,...r,...k,_dark:{...r._dark,...k},animation:`${p}s linear infinite alternate ${TH}`}})});Hm.displayName="Skeleton";var ao=e=>e?"":void 0,sc=e=>e?!0:void 0,ei=(...e)=>e.filter(Boolean).join(" ");function ac(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function $H(e){return{root:`slider-root-${e}`,getThumb:t=>`slider-thumb-${e}-${t}`,getInput:t=>`slider-input-${e}-${t}`,track:`slider-track-${e}`,innerTrack:`slider-filled-track-${e}`,getMarker:t=>`slider-marker-${e}-${t}`,output:`slider-output-${e}`}}function Du(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var Tp={width:0,height:0},np=e=>e||Tp;function IP(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:o}=e,s=x=>{var w;const k=(w=r[x])!=null?w:Tp;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...Du({orientation:t,vertical:{bottom:`calc(${n[x]}% - ${k.height/2}px)`},horizontal:{left:`calc(${n[x]}% - ${k.width/2}px)`}})}},i=t==="vertical"?r.reduce((x,w)=>np(x).height>np(w).height?x:w,Tp):r.reduce((x,w)=>np(x).width>np(w).width?x:w,Tp),l={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...Du({orientation:t,vertical:i?{paddingLeft:i.width/2,paddingRight:i.width/2}:{},horizontal:i?{paddingTop:i.height/2,paddingBottom:i.height/2}:{}})},u={position:"absolute",...Du({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",height:"100%"},horizontal:{top:"50%",transform:"translateY(-50%)",width:"100%"}})},p=n.length===1,h=[0,o?100-n[0]:n[0]],m=p?h:n;let v=m[0];!p&&o&&(v=100-v);const b=Math.abs(m[m.length-1]-m[0]),y={...u,...Du({orientation:t,vertical:o?{height:`${b}%`,top:`${v}%`}:{height:`${b}%`,bottom:`${v}%`},horizontal:o?{width:`${b}%`,right:`${v}%`}:{width:`${b}%`,left:`${v}%`}})};return{trackStyle:u,innerTrackStyle:y,rootStyle:l,getThumbStyle:s}}function EP(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function LH(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function zH(e){const t=BH(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function MP(e){return!!e.touches}function FH(e){return MP(e)&&e.touches.length>1}function BH(e){var t;return(t=e.view)!=null?t:window}function HH(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function WH(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function OP(e,t="page"){return MP(e)?HH(e,t):WH(e,t)}function VH(e){return t=>{const n=zH(t);(!n||n&&t.button===0)&&e(t)}}function UH(e,t=!1){function n(o){e(o,{point:OP(o)})}return t?VH(n):n}function $p(e,t,n,r){return LH(e,t,UH(n,t==="pointerdown"),r)}var GH=Object.defineProperty,KH=(e,t,n)=>t in e?GH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Eo=(e,t,n)=>(KH(e,typeof t!="symbol"?t+"":t,n),n),qH=class{constructor(e,t,n){Eo(this,"history",[]),Eo(this,"startEvent",null),Eo(this,"lastEvent",null),Eo(this,"lastEventInfo",null),Eo(this,"handlers",{}),Eo(this,"removeListeners",()=>{}),Eo(this,"threshold",3),Eo(this,"win"),Eo(this,"updatePoint",()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const l=hv(this.lastEventInfo,this.history),u=this.startEvent!==null,p=ZH(l.offset,{x:0,y:0})>=this.threshold;if(!u&&!p)return;const{timestamp:h}=Dw();this.history.push({...l.point,timestamp:h});const{onStart:m,onMove:v}=this.handlers;u||(m==null||m(this.lastEvent,l),this.startEvent=this.lastEvent),v==null||v(this.lastEvent,l)}),Eo(this,"onPointerMove",(l,u)=>{this.lastEvent=l,this.lastEventInfo=u,gT.update(this.updatePoint,!0)}),Eo(this,"onPointerUp",(l,u)=>{const p=hv(u,this.history),{onEnd:h,onSessionEnd:m}=this.handlers;m==null||m(l,p),this.end(),!(!h||!this.startEvent)&&(h==null||h(l,p))});var r;if(this.win=(r=e.view)!=null?r:window,FH(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const o={point:OP(e)},{timestamp:s}=Dw();this.history=[{...o.point,timestamp:s}];const{onSessionStart:i}=t;i==null||i(e,hv(o,this.history)),this.removeListeners=QH($p(this.win,"pointermove",this.onPointerMove),$p(this.win,"pointerup",this.onPointerUp),$p(this.win,"pointercancel",this.onPointerUp))}updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),vT.update(this.updatePoint)}};function vS(e,t){return{x:e.x-t.x,y:e.y-t.y}}function hv(e,t){return{point:e.point,delta:vS(e.point,t[t.length-1]),offset:vS(e.point,t[0]),velocity:YH(t,.1)}}var XH=e=>e*1e3;function YH(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const o=e[e.length-1];for(;n>=0&&(r=e[n],!(o.timestamp-r.timestamp>XH(t)));)n--;if(!r)return{x:0,y:0};const s=(o.timestamp-r.timestamp)/1e3;if(s===0)return{x:0,y:0};const i={x:(o.x-r.x)/s,y:(o.y-r.y)/s};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function QH(...e){return t=>e.reduce((n,r)=>r(n),t)}function mv(e,t){return Math.abs(e-t)}function bS(e){return"x"in e&&"y"in e}function ZH(e,t){if(typeof e=="number"&&typeof t=="number")return mv(e,t);if(bS(e)&&bS(t)){const n=mv(e.x,t.x),r=mv(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function DP(e){const t=d.useRef(null);return t.current=e,t}function RP(e,t){const{onPan:n,onPanStart:r,onPanEnd:o,onPanSessionStart:s,onPanSessionEnd:i,threshold:l}=t,u=!!(n||r||o||s||i),p=d.useRef(null),h=DP({onSessionStart:s,onSessionEnd:i,onStart:r,onMove:n,onEnd(m,v){p.current=null,o==null||o(m,v)}});d.useEffect(()=>{var m;(m=p.current)==null||m.updateHandlers(h.current)}),d.useEffect(()=>{const m=e.current;if(!m||!u)return;function v(b){p.current=new qH(b,h.current,l)}return $p(m,"pointerdown",v)},[e,u,h,l]),d.useEffect(()=>()=>{var m;(m=p.current)==null||m.end(),p.current=null},[])}function JH(e,t){if(!e){t(void 0);return}t({width:e.offsetWidth,height:e.offsetHeight});const n=e.ownerDocument.defaultView??window,r=new n.ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const[s]=o;let i,l;if("borderBoxSize"in s){const u=s.borderBoxSize,p=Array.isArray(u)?u[0]:u;i=p.inlineSize,l=p.blockSize}else i=e.offsetWidth,l=e.offsetHeight;t({width:i,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var eW=globalThis!=null&&globalThis.document?d.useLayoutEffect:d.useEffect;function tW(e,t){var n,r;if(!e||!e.parentElement)return;const o=(r=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?r:window,s=new o.MutationObserver(()=>{t()});return s.observe(e.parentElement,{childList:!0}),()=>{s.disconnect()}}function AP({getNodes:e,observeMutation:t=!0}){const[n,r]=d.useState([]),[o,s]=d.useState(0);return eW(()=>{const i=e(),l=i.map((u,p)=>JH(u,h=>{r(m=>[...m.slice(0,p),h,...m.slice(p+1)])}));if(t){const u=i[0];l.push(tW(u,()=>{s(p=>p+1)}))}return()=>{l.forEach(u=>{u==null||u()})}},[o]),n}function nW(e){return typeof e=="object"&&e!==null&&"current"in e}function rW(e){const[t]=AP({observeMutation:!1,getNodes(){return[nW(e)?e.current:e]}});return t}function oW(e){const{min:t=0,max:n=100,onChange:r,value:o,defaultValue:s,isReversed:i,direction:l="ltr",orientation:u="horizontal",id:p,isDisabled:h,isReadOnly:m,onChangeStart:v,onChangeEnd:b,step:y=1,getAriaValueText:x,"aria-valuetext":w,"aria-label":k,"aria-labelledby":_,name:j,focusThumbOnChange:I=!0,minStepsBetweenThumbs:E=0,...M}=e,D=nn(v),R=nn(b),A=nn(x),O=EP({isReversed:i,direction:l,orientation:u}),[T,K]=Ac({value:o,defaultValue:s??[25,75],onChange:r});if(!Array.isArray(T))throw new TypeError(`[range-slider] You passed an invalid value for \`value\` or \`defaultValue\`, expected \`Array\` but got \`${typeof T}\``);const[F,V]=d.useState(!1),[X,W]=d.useState(!1),[z,Y]=d.useState(-1),B=!(h||m),q=d.useRef(T),re=T.map(ke=>tc(ke,t,n)),Q=E*y,le=sW(re,t,n,Q),se=d.useRef({eventSource:null,value:[],valueBounds:[]});se.current.value=re,se.current.valueBounds=le;const U=re.map(ke=>n-ke+t),te=(O?U:re).map(ke=>th(ke,t,n)),ae=u==="vertical",oe=d.useRef(null),pe=d.useRef(null),ue=AP({getNodes(){const ke=pe.current,ze=ke==null?void 0:ke.querySelectorAll("[role=slider]");return ze?Array.from(ze):[]}}),me=d.useId(),ge=$H(p??me),fe=d.useCallback(ke=>{var ze,Le;if(!oe.current)return;se.current.eventSource="pointer";const Ve=oe.current.getBoundingClientRect(),{clientX:ct,clientY:bn}=(Le=(ze=ke.touches)==null?void 0:ze[0])!=null?Le:ke,jt=ae?Ve.bottom-bn:ct-Ve.left,Pt=ae?Ve.height:Ve.width;let sr=jt/Pt;return O&&(sr=1-sr),U5(sr,t,n)},[ae,O,n,t]),De=(n-t)/10,je=y||(n-t)/100,Be=d.useMemo(()=>({setValueAtIndex(ke,ze){if(!B)return;const Le=se.current.valueBounds[ke];ze=parseFloat(w1(ze,Le.min,je)),ze=tc(ze,Le.min,Le.max);const Ve=[...se.current.value];Ve[ke]=ze,K(Ve)},setActiveIndex:Y,stepUp(ke,ze=je){const Le=se.current.value[ke],Ve=O?Le-ze:Le+ze;Be.setValueAtIndex(ke,Ve)},stepDown(ke,ze=je){const Le=se.current.value[ke],Ve=O?Le+ze:Le-ze;Be.setValueAtIndex(ke,Ve)},reset(){K(q.current)}}),[je,O,K,B]),rt=d.useCallback(ke=>{const ze=ke.key,Ve={ArrowRight:()=>Be.stepUp(z),ArrowUp:()=>Be.stepUp(z),ArrowLeft:()=>Be.stepDown(z),ArrowDown:()=>Be.stepDown(z),PageUp:()=>Be.stepUp(z,De),PageDown:()=>Be.stepDown(z,De),Home:()=>{const{min:ct}=le[z];Be.setValueAtIndex(z,ct)},End:()=>{const{max:ct}=le[z];Be.setValueAtIndex(z,ct)}}[ze];Ve&&(ke.preventDefault(),ke.stopPropagation(),Ve(ke),se.current.eventSource="keyboard")},[Be,z,De,le]),{getThumbStyle:Ue,rootStyle:wt,trackStyle:Ye,innerTrackStyle:tt}=d.useMemo(()=>IP({isReversed:O,orientation:u,thumbRects:ue,thumbPercents:te}),[O,u,te,ue]),be=d.useCallback(ke=>{var ze;const Le=ke??z;if(Le!==-1&&I){const Ve=ge.getThumb(Le),ct=(ze=pe.current)==null?void 0:ze.ownerDocument.getElementById(Ve);ct&&setTimeout(()=>ct.focus())}},[I,z,ge]);ca(()=>{se.current.eventSource==="keyboard"&&(R==null||R(se.current.value))},[re,R]);const Re=ke=>{const ze=fe(ke)||0,Le=se.current.value.map(Pt=>Math.abs(Pt-ze)),Ve=Math.min(...Le);let ct=Le.indexOf(Ve);const bn=Le.filter(Pt=>Pt===Ve);bn.length>1&&ze>se.current.value[ct]&&(ct=ct+bn.length-1),Y(ct),Be.setValueAtIndex(ct,ze),be(ct)},st=ke=>{if(z==-1)return;const ze=fe(ke)||0;Y(z),Be.setValueAtIndex(z,ze),be(z)};RP(pe,{onPanSessionStart(ke){B&&(V(!0),Re(ke),D==null||D(se.current.value))},onPanSessionEnd(){B&&(V(!1),R==null||R(se.current.value))},onPan(ke){B&&st(ke)}});const mt=d.useCallback((ke={},ze=null)=>({...ke,...M,id:ge.root,ref:Ct(ze,pe),tabIndex:-1,"aria-disabled":sc(h),"data-focused":ao(X),style:{...ke.style,...wt}}),[M,h,X,wt,ge]),ve=d.useCallback((ke={},ze=null)=>({...ke,ref:Ct(ze,oe),id:ge.track,"data-disabled":ao(h),style:{...ke.style,...Ye}}),[h,Ye,ge]),Qe=d.useCallback((ke={},ze=null)=>({...ke,ref:ze,id:ge.innerTrack,style:{...ke.style,...tt}}),[tt,ge]),ot=d.useCallback((ke,ze=null)=>{var Le;const{index:Ve,...ct}=ke,bn=re[Ve];if(bn==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${Ve}\`. The \`value\` or \`defaultValue\` length is : ${re.length}`);const jt=le[Ve];return{...ct,ref:ze,role:"slider",tabIndex:B?0:void 0,id:ge.getThumb(Ve),"data-active":ao(F&&z===Ve),"aria-valuetext":(Le=A==null?void 0:A(bn))!=null?Le:w==null?void 0:w[Ve],"aria-valuemin":jt.min,"aria-valuemax":jt.max,"aria-valuenow":bn,"aria-orientation":u,"aria-disabled":sc(h),"aria-readonly":sc(m),"aria-label":k==null?void 0:k[Ve],"aria-labelledby":k!=null&&k[Ve]||_==null?void 0:_[Ve],style:{...ke.style,...Ue(Ve)},onKeyDown:ac(ke.onKeyDown,rt),onFocus:ac(ke.onFocus,()=>{W(!0),Y(Ve)}),onBlur:ac(ke.onBlur,()=>{W(!1),Y(-1)})}},[ge,re,le,B,F,z,A,w,u,h,m,k,_,Ue,rt,W]),lt=d.useCallback((ke={},ze=null)=>({...ke,ref:ze,id:ge.output,htmlFor:re.map((Le,Ve)=>ge.getThumb(Ve)).join(" "),"aria-live":"off"}),[ge,re]),Me=d.useCallback((ke,ze=null)=>{const{value:Le,...Ve}=ke,ct=!(Len),bn=Le>=re[0]&&Le<=re[re.length-1];let jt=th(Le,t,n);jt=O?100-jt:jt;const Pt={position:"absolute",pointerEvents:"none",...Du({orientation:u,vertical:{bottom:`${jt}%`},horizontal:{left:`${jt}%`}})};return{...Ve,ref:ze,id:ge.getMarker(ke.value),role:"presentation","aria-hidden":!0,"data-disabled":ao(h),"data-invalid":ao(!ct),"data-highlighted":ao(bn),style:{...ke.style,...Pt}}},[h,O,n,t,u,re,ge]),$e=d.useCallback((ke,ze=null)=>{const{index:Le,...Ve}=ke;return{...Ve,ref:ze,id:ge.getInput(Le),type:"hidden",value:re[Le],name:Array.isArray(j)?j[Le]:`${j}-${Le}`}},[j,re,ge]);return{state:{value:re,isFocused:X,isDragging:F,getThumbPercent:ke=>te[ke],getThumbMinValue:ke=>le[ke].min,getThumbMaxValue:ke=>le[ke].max},actions:Be,getRootProps:mt,getTrackProps:ve,getInnerTrackProps:Qe,getThumbProps:ot,getMarkerProps:Me,getInputProps:$e,getOutputProps:lt}}function sW(e,t,n,r){return e.map((o,s)=>{const i=s===0?t:e[s-1]+r,l=s===e.length-1?n:e[s+1]-r;return{min:i,max:l}})}var[aW,Wm]=$t({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[iW,Vm]=$t({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Nx=Pe(function(t,n){const r={orientation:"horizontal",...t},o=Wn("Slider",r),s=Yt(r),{direction:i}=yd();s.direction=i;const{getRootProps:l,...u}=oW(s),p=d.useMemo(()=>({...u,name:r.name}),[u,r.name]);return a.jsx(aW,{value:p,children:a.jsx(iW,{value:o,children:a.jsx(_e.div,{...l({},n),className:"chakra-slider",__css:o.container,children:r.children})})})});Nx.displayName="RangeSlider";var od=Pe(function(t,n){const{getThumbProps:r,getInputProps:o,name:s}=Wm(),i=Vm(),l=r(t,n);return a.jsxs(_e.div,{...l,className:ei("chakra-slider__thumb",t.className),__css:i.thumb,children:[l.children,s&&a.jsx("input",{...o({index:t.index})})]})});od.displayName="RangeSliderThumb";var Tx=Pe(function(t,n){const{getTrackProps:r}=Wm(),o=Vm(),s=r(t,n);return a.jsx(_e.div,{...s,className:ei("chakra-slider__track",t.className),__css:o.track,"data-testid":"chakra-range-slider-track"})});Tx.displayName="RangeSliderTrack";var $x=Pe(function(t,n){const{getInnerTrackProps:r}=Wm(),o=Vm(),s=r(t,n);return a.jsx(_e.div,{...s,className:"chakra-slider__filled-track",__css:o.filledTrack})});$x.displayName="RangeSliderFilledTrack";var Pi=Pe(function(t,n){const{getMarkerProps:r}=Wm(),o=Vm(),s=r(t,n);return a.jsx(_e.div,{...s,className:ei("chakra-slider__marker",t.className),__css:o.mark})});Pi.displayName="RangeSliderMark";function lW(e){var t;const{min:n=0,max:r=100,onChange:o,value:s,defaultValue:i,isReversed:l,direction:u="ltr",orientation:p="horizontal",id:h,isDisabled:m,isReadOnly:v,onChangeStart:b,onChangeEnd:y,step:x=1,getAriaValueText:w,"aria-valuetext":k,"aria-label":_,"aria-labelledby":j,name:I,focusThumbOnChange:E=!0,...M}=e,D=nn(b),R=nn(y),A=nn(w),O=EP({isReversed:l,direction:u,orientation:p}),[T,K]=Ac({value:s,defaultValue:i??uW(n,r),onChange:o}),[F,V]=d.useState(!1),[X,W]=d.useState(!1),z=!(m||v),Y=(r-n)/10,B=x||(r-n)/100,q=tc(T,n,r),re=r-q+n,le=th(O?re:q,n,r),se=p==="vertical",U=DP({min:n,max:r,step:x,isDisabled:m,value:q,isInteractive:z,isReversed:O,isVertical:se,eventSource:null,focusThumbOnChange:E,orientation:p}),G=d.useRef(null),te=d.useRef(null),ae=d.useRef(null),oe=d.useId(),pe=h??oe,[ue,me]=[`slider-thumb-${pe}`,`slider-track-${pe}`],Ce=d.useCallback(Me=>{var $e,At;if(!G.current)return;const ke=U.current;ke.eventSource="pointer";const ze=G.current.getBoundingClientRect(),{clientX:Le,clientY:Ve}=(At=($e=Me.touches)==null?void 0:$e[0])!=null?At:Me,ct=se?ze.bottom-Ve:Le-ze.left,bn=se?ze.height:ze.width;let jt=ct/bn;O&&(jt=1-jt);let Pt=U5(jt,ke.min,ke.max);return ke.step&&(Pt=parseFloat(w1(Pt,ke.min,ke.step))),Pt=tc(Pt,ke.min,ke.max),Pt},[se,O,U]),ge=d.useCallback(Me=>{const $e=U.current;$e.isInteractive&&(Me=parseFloat(w1(Me,$e.min,B)),Me=tc(Me,$e.min,$e.max),K(Me))},[B,K,U]),fe=d.useMemo(()=>({stepUp(Me=B){const $e=O?q-Me:q+Me;ge($e)},stepDown(Me=B){const $e=O?q+Me:q-Me;ge($e)},reset(){ge(i||0)},stepTo(Me){ge(Me)}}),[ge,O,q,B,i]),De=d.useCallback(Me=>{const $e=U.current,ke={ArrowRight:()=>fe.stepUp(),ArrowUp:()=>fe.stepUp(),ArrowLeft:()=>fe.stepDown(),ArrowDown:()=>fe.stepDown(),PageUp:()=>fe.stepUp(Y),PageDown:()=>fe.stepDown(Y),Home:()=>ge($e.min),End:()=>ge($e.max)}[Me.key];ke&&(Me.preventDefault(),Me.stopPropagation(),ke(Me),$e.eventSource="keyboard")},[fe,ge,Y,U]),je=(t=A==null?void 0:A(q))!=null?t:k,Be=rW(te),{getThumbStyle:rt,rootStyle:Ue,trackStyle:wt,innerTrackStyle:Ye}=d.useMemo(()=>{const Me=U.current,$e=Be??{width:0,height:0};return IP({isReversed:O,orientation:Me.orientation,thumbRects:[$e],thumbPercents:[le]})},[O,Be,le,U]),tt=d.useCallback(()=>{U.current.focusThumbOnChange&&setTimeout(()=>{var $e;return($e=te.current)==null?void 0:$e.focus()})},[U]);ca(()=>{const Me=U.current;tt(),Me.eventSource==="keyboard"&&(R==null||R(Me.value))},[q,R]);function be(Me){const $e=Ce(Me);$e!=null&&$e!==U.current.value&&K($e)}RP(ae,{onPanSessionStart(Me){const $e=U.current;$e.isInteractive&&(V(!0),tt(),be(Me),D==null||D($e.value))},onPanSessionEnd(){const Me=U.current;Me.isInteractive&&(V(!1),R==null||R(Me.value))},onPan(Me){U.current.isInteractive&&be(Me)}});const Re=d.useCallback((Me={},$e=null)=>({...Me,...M,ref:Ct($e,ae),tabIndex:-1,"aria-disabled":sc(m),"data-focused":ao(X),style:{...Me.style,...Ue}}),[M,m,X,Ue]),st=d.useCallback((Me={},$e=null)=>({...Me,ref:Ct($e,G),id:me,"data-disabled":ao(m),style:{...Me.style,...wt}}),[m,me,wt]),mt=d.useCallback((Me={},$e=null)=>({...Me,ref:$e,style:{...Me.style,...Ye}}),[Ye]),ve=d.useCallback((Me={},$e=null)=>({...Me,ref:Ct($e,te),role:"slider",tabIndex:z?0:void 0,id:ue,"data-active":ao(F),"aria-valuetext":je,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":q,"aria-orientation":p,"aria-disabled":sc(m),"aria-readonly":sc(v),"aria-label":_,"aria-labelledby":_?void 0:j,style:{...Me.style,...rt(0)},onKeyDown:ac(Me.onKeyDown,De),onFocus:ac(Me.onFocus,()=>W(!0)),onBlur:ac(Me.onBlur,()=>W(!1))}),[z,ue,F,je,n,r,q,p,m,v,_,j,rt,De]),Qe=d.useCallback((Me,$e=null)=>{const At=!(Me.valuer),ke=q>=Me.value,ze=th(Me.value,n,r),Le={position:"absolute",pointerEvents:"none",...cW({orientation:p,vertical:{bottom:O?`${100-ze}%`:`${ze}%`},horizontal:{left:O?`${100-ze}%`:`${ze}%`}})};return{...Me,ref:$e,role:"presentation","aria-hidden":!0,"data-disabled":ao(m),"data-invalid":ao(!At),"data-highlighted":ao(ke),style:{...Me.style,...Le}}},[m,O,r,n,p,q]),ot=d.useCallback((Me={},$e=null)=>({...Me,ref:$e,type:"hidden",value:q,name:I}),[I,q]);return{state:{value:q,isFocused:X,isDragging:F},actions:fe,getRootProps:Re,getTrackProps:st,getInnerTrackProps:mt,getThumbProps:ve,getMarkerProps:Qe,getInputProps:ot}}function cW(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function uW(e,t){return t"}),[fW,Gm]=$t({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),Lx=Pe((e,t)=>{var n;const r={...e,orientation:(n=e==null?void 0:e.orientation)!=null?n:"horizontal"},o=Wn("Slider",r),s=Yt(r),{direction:i}=yd();s.direction=i;const{getInputProps:l,getRootProps:u,...p}=lW(s),h=u(),m=l({},t);return a.jsx(dW,{value:p,children:a.jsx(fW,{value:o,children:a.jsxs(_e.div,{...h,className:ei("chakra-slider",r.className),__css:o.container,children:[r.children,a.jsx("input",{...m})]})})})});Lx.displayName="Slider";var zx=Pe((e,t)=>{const{getThumbProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__thumb",e.className),__css:r.thumb})});zx.displayName="SliderThumb";var Fx=Pe((e,t)=>{const{getTrackProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__track",e.className),__css:r.track})});Fx.displayName="SliderTrack";var Bx=Pe((e,t)=>{const{getInnerTrackProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__filled-track",e.className),__css:r.filledTrack})});Bx.displayName="SliderFilledTrack";var Fl=Pe((e,t)=>{const{getMarkerProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__marker",e.className),__css:r.mark})});Fl.displayName="SliderMark";var Hx=Pe(function(t,n){const r=Wn("Switch",t),{spacing:o="0.5rem",children:s,...i}=Yt(t),{getIndicatorProps:l,getInputProps:u,getCheckboxProps:p,getRootProps:h,getLabelProps:m}=V5(i),v=d.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),b=d.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),y=d.useMemo(()=>({userSelect:"none",marginStart:o,...r.label}),[o,r.label]);return a.jsxs(_e.label,{...h(),className:et("chakra-switch",t.className),__css:v,children:[a.jsx("input",{className:"chakra-switch__input",...u({},n)}),a.jsx(_e.span,{...p(),className:"chakra-switch__track",__css:b,children:a.jsx(_e.span,{__css:r.thumb,className:"chakra-switch__thumb",...l()})}),s&&a.jsx(_e.span,{className:"chakra-switch__label",...m(),__css:y,children:s})]})});Hx.displayName="Switch";var[pW,hW,mW,gW]=Zb();function vW(e){var t;const{defaultIndex:n,onChange:r,index:o,isManual:s,isLazy:i,lazyBehavior:l="unmount",orientation:u="horizontal",direction:p="ltr",...h}=e,[m,v]=d.useState(n??0),[b,y]=Ac({defaultValue:n??0,value:o,onChange:r});d.useEffect(()=>{o!=null&&v(o)},[o]);const x=mW(),w=d.useId();return{id:`tabs-${(t=e.id)!=null?t:w}`,selectedIndex:b,focusedIndex:m,setSelectedIndex:y,setFocusedIndex:v,isManual:s,isLazy:i,lazyBehavior:l,orientation:u,descendants:x,direction:p,htmlProps:h}}var[bW,Km]=$t({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function xW(e){const{focusedIndex:t,orientation:n,direction:r}=Km(),o=hW(),s=d.useCallback(i=>{const l=()=>{var _;const j=o.nextEnabled(t);j&&((_=j.node)==null||_.focus())},u=()=>{var _;const j=o.prevEnabled(t);j&&((_=j.node)==null||_.focus())},p=()=>{var _;const j=o.firstEnabled();j&&((_=j.node)==null||_.focus())},h=()=>{var _;const j=o.lastEnabled();j&&((_=j.node)==null||_.focus())},m=n==="horizontal",v=n==="vertical",b=i.key,y=r==="ltr"?"ArrowLeft":"ArrowRight",x=r==="ltr"?"ArrowRight":"ArrowLeft",k={[y]:()=>m&&u(),[x]:()=>m&&l(),ArrowDown:()=>v&&l(),ArrowUp:()=>v&&u(),Home:p,End:h}[b];k&&(i.preventDefault(),k(i))},[o,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:Fe(e.onKeyDown,s)}}function yW(e){const{isDisabled:t=!1,isFocusable:n=!1,...r}=e,{setSelectedIndex:o,isManual:s,id:i,setFocusedIndex:l,selectedIndex:u}=Km(),{index:p,register:h}=gW({disabled:t&&!n}),m=p===u,v=()=>{o(p)},b=()=>{l(p),!s&&!(t&&n)&&o(p)},y=V3({...r,ref:Ct(h,e.ref),isDisabled:t,isFocusable:n,onClick:Fe(e.onClick,v)}),x="button";return{...y,id:NP(i,p),role:"tab",tabIndex:m?0:-1,type:x,"aria-selected":m,"aria-controls":TP(i,p),onFocus:t?void 0:Fe(e.onFocus,b)}}var[CW,wW]=$t({});function SW(e){const t=Km(),{id:n,selectedIndex:r}=t,s=Id(e.children).map((i,l)=>d.createElement(CW,{key:l,value:{isSelected:l===r,id:TP(n,l),tabId:NP(n,l),selectedIndex:r}},i));return{...e,children:s}}function kW(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:o}=Km(),{isSelected:s,id:i,tabId:l}=wW(),u=d.useRef(!1);s&&(u.current=!0);const p=Ex({wasSelected:u.current,isSelected:s,enabled:r,mode:o});return{tabIndex:0,...n,children:p?t:null,role:"tabpanel","aria-labelledby":l,hidden:!s,id:i}}function NP(e,t){return`${e}--tab-${t}`}function TP(e,t){return`${e}--tabpanel-${t}`}var[_W,qm]=$t({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Ji=Pe(function(t,n){const r=Wn("Tabs",t),{children:o,className:s,...i}=Yt(t),{htmlProps:l,descendants:u,...p}=vW(i),h=d.useMemo(()=>p,[p]),{isFitted:m,...v}=l;return a.jsx(pW,{value:u,children:a.jsx(bW,{value:h,children:a.jsx(_W,{value:r,children:a.jsx(_e.div,{className:et("chakra-tabs",s),ref:n,...v,__css:r.root,children:o})})})})});Ji.displayName="Tabs";var el=Pe(function(t,n){const r=xW({...t,ref:n}),s={display:"flex",...qm().tablist};return a.jsx(_e.div,{...r,className:et("chakra-tabs__tablist",t.className),__css:s})});el.displayName="TabList";var mo=Pe(function(t,n){const r=kW({...t,ref:n}),o=qm();return a.jsx(_e.div,{outline:"0",...r,className:et("chakra-tabs__tab-panel",t.className),__css:o.tabpanel})});mo.displayName="TabPanel";var Fc=Pe(function(t,n){const r=SW(t),o=qm();return a.jsx(_e.div,{...r,width:"100%",ref:n,className:et("chakra-tabs__tab-panels",t.className),__css:o.tabpanels})});Fc.displayName="TabPanels";var Pr=Pe(function(t,n){const r=qm(),o=yW({...t,ref:n}),s={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return a.jsx(_e.button,{...o,className:et("chakra-tabs__tab",t.className),__css:s})});Pr.displayName="Tab";function jW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var PW=["h","minH","height","minHeight"],$P=Pe((e,t)=>{const n=Qa("Textarea",e),{className:r,rows:o,...s}=Yt(e),i=tx(s),l=o?jW(n,PW):n;return a.jsx(_e.textarea,{ref:t,rows:o,...i,className:et("chakra-textarea",r),__css:l})});$P.displayName="Textarea";var IW={exit:{scale:.85,opacity:0,transition:{opacity:{duration:.15,easings:"easeInOut"},scale:{duration:.2,easings:"easeInOut"}}},enter:{scale:1,opacity:1,transition:{opacity:{easings:"easeOut",duration:.2},scale:{duration:.2,ease:[.175,.885,.4,1.1]}}}},L1=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},Lp=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function EW(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:o,closeOnScroll:s,closeOnPointerDown:i=o,closeOnEsc:l=!0,onOpen:u,onClose:p,placement:h,id:m,isOpen:v,defaultIsOpen:b,arrowSize:y=10,arrowShadowColor:x,arrowPadding:w,modifiers:k,isDisabled:_,gutter:j,offset:I,direction:E,...M}=e,{isOpen:D,onOpen:R,onClose:A}=Ix({isOpen:v,defaultIsOpen:b,onOpen:u,onClose:p}),{referenceRef:O,getPopperProps:T,getArrowInnerProps:K,getArrowProps:F}=Px({enabled:D,placement:h,arrowPadding:w,modifiers:k,gutter:j,offset:I,direction:E}),V=d.useId(),W=`tooltip-${m??V}`,z=d.useRef(null),Y=d.useRef(),B=d.useCallback(()=>{Y.current&&(clearTimeout(Y.current),Y.current=void 0)},[]),q=d.useRef(),re=d.useCallback(()=>{q.current&&(clearTimeout(q.current),q.current=void 0)},[]),Q=d.useCallback(()=>{re(),A()},[A,re]),le=MW(z,Q),se=d.useCallback(()=>{if(!_&&!Y.current){D&&le();const me=Lp(z);Y.current=me.setTimeout(R,t)}},[le,_,D,R,t]),U=d.useCallback(()=>{B();const me=Lp(z);q.current=me.setTimeout(Q,n)},[n,Q,B]),G=d.useCallback(()=>{D&&r&&U()},[r,U,D]),te=d.useCallback(()=>{D&&i&&U()},[i,U,D]),ae=d.useCallback(me=>{D&&me.key==="Escape"&&U()},[D,U]);_i(()=>L1(z),"keydown",l?ae:void 0),_i(()=>{const me=z.current;if(!me)return null;const Ce=D3(me);return Ce.localName==="body"?Lp(z):Ce},"scroll",()=>{D&&s&&Q()},{passive:!0,capture:!0}),d.useEffect(()=>{_&&(B(),D&&A())},[_,D,A,B]),d.useEffect(()=>()=>{B(),re()},[B,re]),_i(()=>z.current,"pointerleave",U);const oe=d.useCallback((me={},Ce=null)=>({...me,ref:Ct(z,Ce,O),onPointerEnter:Fe(me.onPointerEnter,fe=>{fe.pointerType!=="touch"&&se()}),onClick:Fe(me.onClick,G),onPointerDown:Fe(me.onPointerDown,te),onFocus:Fe(me.onFocus,se),onBlur:Fe(me.onBlur,U),"aria-describedby":D?W:void 0}),[se,U,te,D,W,G,O]),pe=d.useCallback((me={},Ce=null)=>T({...me,style:{...me.style,[jn.arrowSize.var]:y?`${y}px`:void 0,[jn.arrowShadowColor.var]:x}},Ce),[T,y,x]),ue=d.useCallback((me={},Ce=null)=>{const ge={...me.style,position:"relative",transformOrigin:jn.transformOrigin.varRef};return{ref:Ce,...M,...me,id:W,role:"tooltip",style:ge}},[M,W]);return{isOpen:D,show:se,hide:U,getTriggerProps:oe,getTooltipProps:ue,getTooltipPositionerProps:pe,getArrowProps:F,getArrowInnerProps:K}}var gv="chakra-ui:close-tooltip";function MW(e,t){return d.useEffect(()=>{const n=L1(e);return n.addEventListener(gv,t),()=>n.removeEventListener(gv,t)},[t,e]),()=>{const n=L1(e),r=Lp(e);n.dispatchEvent(new r.CustomEvent(gv))}}function OW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function DW(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var RW=_e(vn.div),Rt=Pe((e,t)=>{var n,r;const o=Qa("Tooltip",e),s=Yt(e),i=yd(),{children:l,label:u,shouldWrapChildren:p,"aria-label":h,hasArrow:m,bg:v,portalProps:b,background:y,backgroundColor:x,bgColor:w,motionProps:k,..._}=s,j=(r=(n=y??x)!=null?n:v)!=null?r:w;if(j){o.bg=j;const T=z7(i,"colors",j);o[jn.arrowBg.var]=T}const I=EW({..._,direction:i.direction}),E=typeof l=="string"||p;let M;if(E)M=a.jsx(_e.span,{display:"inline-block",tabIndex:0,...I.getTriggerProps(),children:l});else{const T=d.Children.only(l);M=d.cloneElement(T,I.getTriggerProps(T.props,T.ref))}const D=!!h,R=I.getTooltipProps({},t),A=D?OW(R,["role","id"]):R,O=DW(R,["role","id"]);return u?a.jsxs(a.Fragment,{children:[M,a.jsx(nr,{children:I.isOpen&&a.jsx(_d,{...b,children:a.jsx(_e.div,{...I.getTooltipPositionerProps(),__css:{zIndex:o.zIndex,pointerEvents:"none"},children:a.jsxs(RW,{variants:IW,initial:"exit",animate:"enter",exit:"exit",...k,...A,__css:o,children:[u,D&&a.jsx(_e.span,{srOnly:!0,...O,children:h}),m&&a.jsx(_e.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper",children:a.jsx(_e.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:o.bg}})})]})})})})]}):a.jsx(a.Fragment,{children:l})});Rt.displayName="Tooltip";const xo=e=>e.system,AW=e=>e.system.toastQueue,LP=ie(xo,e=>e.language,we),En=ie(e=>e,e=>e.system.isProcessing||!e.system.isConnected),NW=ie(xo,e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=e;return{consoleLogLevel:t,shouldLogToConsole:n}},{memoizeOptions:{resultEqualityCheck:_t}}),zP=e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=L(NW);return d.useEffect(()=>{n?(localStorage.setItem("ROARR_LOG","true"),localStorage.setItem("ROARR_FILTER",`context.logLevel:>=${F7[t]}`)):localStorage.setItem("ROARR_LOG","false"),LC.ROARR.write=B7.createLogWriter()},[t,n]),d.useEffect(()=>{const o={...H7};W7.set(LC.Roarr.child(o))},[]),d.useMemo(()=>Yi(e),[e])},TW=()=>{const e=ee(),t=L(AW),n=A5();return d.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(V7())},[e,n,t]),null},tl=()=>{const e=ee();return d.useCallback(n=>e(Tt(Ft(n))),[e])},$W=d.memo(TW);var LW=new Map([["aac","audio/aac"],["abw","application/x-abiword"],["arc","application/x-freearc"],["avif","image/avif"],["avi","video/x-msvideo"],["azw","application/vnd.amazon.ebook"],["bin","application/octet-stream"],["bmp","image/bmp"],["bz","application/x-bzip"],["bz2","application/x-bzip2"],["cda","application/x-cdf"],["csh","application/x-csh"],["css","text/css"],["csv","text/csv"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],["eot","application/vnd.ms-fontobject"],["epub","application/epub+zip"],["gz","application/gzip"],["gif","image/gif"],["heic","image/heic"],["heif","image/heif"],["htm","text/html"],["html","text/html"],["ico","image/vnd.microsoft.icon"],["ics","text/calendar"],["jar","application/java-archive"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["js","text/javascript"],["json","application/json"],["jsonld","application/ld+json"],["mid","audio/midi"],["midi","audio/midi"],["mjs","text/javascript"],["mp3","audio/mpeg"],["mp4","video/mp4"],["mpeg","video/mpeg"],["mpkg","application/vnd.apple.installer+xml"],["odp","application/vnd.oasis.opendocument.presentation"],["ods","application/vnd.oasis.opendocument.spreadsheet"],["odt","application/vnd.oasis.opendocument.text"],["oga","audio/ogg"],["ogv","video/ogg"],["ogx","application/ogg"],["opus","audio/opus"],["otf","font/otf"],["png","image/png"],["pdf","application/pdf"],["php","application/x-httpd-php"],["ppt","application/vnd.ms-powerpoint"],["pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation"],["rar","application/vnd.rar"],["rtf","application/rtf"],["sh","application/x-sh"],["svg","image/svg+xml"],["swf","application/x-shockwave-flash"],["tar","application/x-tar"],["tif","image/tiff"],["tiff","image/tiff"],["ts","video/mp2t"],["ttf","font/ttf"],["txt","text/plain"],["vsd","application/vnd.visio"],["wav","audio/wav"],["weba","audio/webm"],["webm","video/webm"],["webp","image/webp"],["woff","font/woff"],["woff2","font/woff2"],["xhtml","application/xhtml+xml"],["xls","application/vnd.ms-excel"],["xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],["xml","application/xml"],["xul","application/vnd.mozilla.xul+xml"],["zip","application/zip"],["7z","application/x-7z-compressed"],["mkv","video/x-matroska"],["mov","video/quicktime"],["msg","application/vnd.ms-outlook"]]);function Fd(e,t){var n=zW(e);if(typeof n.path!="string"){var r=e.webkitRelativePath;Object.defineProperty(n,"path",{value:typeof t=="string"?t:typeof r=="string"&&r.length>0?r:e.name,writable:!1,configurable:!1,enumerable:!0})}return n}function zW(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),o=LW.get(r);o&&Object.defineProperty(e,"type",{value:o,writable:!1,configurable:!1,enumerable:!0})}return e}var FW=[".DS_Store","Thumbs.db"];function BW(e){return Nc(this,void 0,void 0,function(){return Tc(this,function(t){return lh(e)&&HW(e.dataTransfer)?[2,GW(e.dataTransfer,e.type)]:WW(e)?[2,VW(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,UW(e)]:[2,[]]})})}function HW(e){return lh(e)}function WW(e){return lh(e)&&lh(e.target)}function lh(e){return typeof e=="object"&&e!==null}function VW(e){return z1(e.target.files).map(function(t){return Fd(t)})}function UW(e){return Nc(this,void 0,void 0,function(){var t;return Tc(this,function(n){switch(n.label){case 0:return[4,Promise.all(e.map(function(r){return r.getFile()}))];case 1:return t=n.sent(),[2,t.map(function(r){return Fd(r)})]}})})}function GW(e,t){return Nc(this,void 0,void 0,function(){var n,r;return Tc(this,function(o){switch(o.label){case 0:return e.items?(n=z1(e.items).filter(function(s){return s.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(KW))]):[3,2];case 1:return r=o.sent(),[2,xS(FP(r))];case 2:return[2,xS(z1(e.files).map(function(s){return Fd(s)}))]}})})}function xS(e){return e.filter(function(t){return FW.indexOf(t.name)===-1})}function z1(e){if(e===null)return[];for(var t=[],n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);nn)return[!1,kS(n)];if(e.sizen)return[!1,kS(n)]}return[!0,null]}function xi(e){return e!=null}function cV(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,s=e.multiple,i=e.maxFiles,l=e.validator;return!s&&t.length>1||s&&i>=1&&t.length>i?!1:t.every(function(u){var p=VP(u,n),h=sd(p,1),m=h[0],v=UP(u,r,o),b=sd(v,1),y=b[0],x=l?l(u):null;return m&&y&&!x})}function ch(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function rp(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(t){return t==="Files"||t==="application/x-moz-file"}):!!e.target&&!!e.target.files}function jS(e){e.preventDefault()}function uV(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function dV(e){return e.indexOf("Edge/")!==-1}function fV(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return uV(e)||dV(e)}function ss(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),i=1;ie.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function EV(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,s;for(s=0;s=0)&&(n[o]=e[o]);return n}var Wx=d.forwardRef(function(e,t){var n=e.children,r=uh(e,bV),o=Vx(r),s=o.open,i=uh(o,xV);return d.useImperativeHandle(t,function(){return{open:s}},[s]),H.createElement(d.Fragment,null,n(un(un({},i),{},{open:s})))});Wx.displayName="Dropzone";var XP={disabled:!1,getFilesFromEvent:BW,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};Wx.defaultProps=XP;Wx.propTypes={children:Ht.func,accept:Ht.objectOf(Ht.arrayOf(Ht.string)),multiple:Ht.bool,preventDropOnDocument:Ht.bool,noClick:Ht.bool,noKeyboard:Ht.bool,noDrag:Ht.bool,noDragEventsBubbling:Ht.bool,minSize:Ht.number,maxSize:Ht.number,maxFiles:Ht.number,disabled:Ht.bool,getFilesFromEvent:Ht.func,onFileDialogCancel:Ht.func,onFileDialogOpen:Ht.func,useFsAccessApi:Ht.bool,autoFocus:Ht.bool,onDragEnter:Ht.func,onDragLeave:Ht.func,onDragOver:Ht.func,onDrop:Ht.func,onDropAccepted:Ht.func,onDropRejected:Ht.func,onError:Ht.func,validator:Ht.func};var W1={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Vx(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=un(un({},XP),e),n=t.accept,r=t.disabled,o=t.getFilesFromEvent,s=t.maxSize,i=t.minSize,l=t.multiple,u=t.maxFiles,p=t.onDragEnter,h=t.onDragLeave,m=t.onDragOver,v=t.onDrop,b=t.onDropAccepted,y=t.onDropRejected,x=t.onFileDialogCancel,w=t.onFileDialogOpen,k=t.useFsAccessApi,_=t.autoFocus,j=t.preventDropOnDocument,I=t.noClick,E=t.noKeyboard,M=t.noDrag,D=t.noDragEventsBubbling,R=t.onError,A=t.validator,O=d.useMemo(function(){return mV(n)},[n]),T=d.useMemo(function(){return hV(n)},[n]),K=d.useMemo(function(){return typeof w=="function"?w:IS},[w]),F=d.useMemo(function(){return typeof x=="function"?x:IS},[x]),V=d.useRef(null),X=d.useRef(null),W=d.useReducer(MV,W1),z=vv(W,2),Y=z[0],B=z[1],q=Y.isFocused,re=Y.isFileDialogActive,Q=d.useRef(typeof window<"u"&&window.isSecureContext&&k&&pV()),le=function(){!Q.current&&re&&setTimeout(function(){if(X.current){var Re=X.current.files;Re.length||(B({type:"closeDialog"}),F())}},300)};d.useEffect(function(){return window.addEventListener("focus",le,!1),function(){window.removeEventListener("focus",le,!1)}},[X,re,F,Q]);var se=d.useRef([]),U=function(Re){V.current&&V.current.contains(Re.target)||(Re.preventDefault(),se.current=[])};d.useEffect(function(){return j&&(document.addEventListener("dragover",jS,!1),document.addEventListener("drop",U,!1)),function(){j&&(document.removeEventListener("dragover",jS),document.removeEventListener("drop",U))}},[V,j]),d.useEffect(function(){return!r&&_&&V.current&&V.current.focus(),function(){}},[V,_,r]);var G=d.useCallback(function(be){R?R(be):console.error(be)},[R]),te=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be),se.current=[].concat(wV(se.current),[be.target]),rp(be)&&Promise.resolve(o(be)).then(function(Re){if(!(ch(be)&&!D)){var st=Re.length,mt=st>0&&cV({files:Re,accept:O,minSize:i,maxSize:s,multiple:l,maxFiles:u,validator:A}),ve=st>0&&!mt;B({isDragAccept:mt,isDragReject:ve,isDragActive:!0,type:"setDraggedFiles"}),p&&p(be)}}).catch(function(Re){return G(Re)})},[o,p,G,D,O,i,s,l,u,A]),ae=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be);var Re=rp(be);if(Re&&be.dataTransfer)try{be.dataTransfer.dropEffect="copy"}catch{}return Re&&m&&m(be),!1},[m,D]),oe=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be);var Re=se.current.filter(function(mt){return V.current&&V.current.contains(mt)}),st=Re.indexOf(be.target);st!==-1&&Re.splice(st,1),se.current=Re,!(Re.length>0)&&(B({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),rp(be)&&h&&h(be))},[V,h,D]),pe=d.useCallback(function(be,Re){var st=[],mt=[];be.forEach(function(ve){var Qe=VP(ve,O),ot=vv(Qe,2),lt=ot[0],Me=ot[1],$e=UP(ve,i,s),At=vv($e,2),ke=At[0],ze=At[1],Le=A?A(ve):null;if(lt&&ke&&!Le)st.push(ve);else{var Ve=[Me,ze];Le&&(Ve=Ve.concat(Le)),mt.push({file:ve,errors:Ve.filter(function(ct){return ct})})}}),(!l&&st.length>1||l&&u>=1&&st.length>u)&&(st.forEach(function(ve){mt.push({file:ve,errors:[lV]})}),st.splice(0)),B({acceptedFiles:st,fileRejections:mt,type:"setFiles"}),v&&v(st,mt,Re),mt.length>0&&y&&y(mt,Re),st.length>0&&b&&b(st,Re)},[B,l,O,i,s,u,v,b,y,A]),ue=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be),se.current=[],rp(be)&&Promise.resolve(o(be)).then(function(Re){ch(be)&&!D||pe(Re,be)}).catch(function(Re){return G(Re)}),B({type:"reset"})},[o,pe,G,D]),me=d.useCallback(function(){if(Q.current){B({type:"openDialog"}),K();var be={multiple:l,types:T};window.showOpenFilePicker(be).then(function(Re){return o(Re)}).then(function(Re){pe(Re,null),B({type:"closeDialog"})}).catch(function(Re){gV(Re)?(F(Re),B({type:"closeDialog"})):vV(Re)?(Q.current=!1,X.current?(X.current.value=null,X.current.click()):G(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided."))):G(Re)});return}X.current&&(B({type:"openDialog"}),K(),X.current.value=null,X.current.click())},[B,K,F,k,pe,G,T,l]),Ce=d.useCallback(function(be){!V.current||!V.current.isEqualNode(be.target)||(be.key===" "||be.key==="Enter"||be.keyCode===32||be.keyCode===13)&&(be.preventDefault(),me())},[V,me]),ge=d.useCallback(function(){B({type:"focus"})},[]),fe=d.useCallback(function(){B({type:"blur"})},[]),De=d.useCallback(function(){I||(fV()?setTimeout(me,0):me())},[I,me]),je=function(Re){return r?null:Re},Be=function(Re){return E?null:je(Re)},rt=function(Re){return M?null:je(Re)},Ue=function(Re){D&&Re.stopPropagation()},wt=d.useMemo(function(){return function(){var be=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Re=be.refKey,st=Re===void 0?"ref":Re,mt=be.role,ve=be.onKeyDown,Qe=be.onFocus,ot=be.onBlur,lt=be.onClick,Me=be.onDragEnter,$e=be.onDragOver,At=be.onDragLeave,ke=be.onDrop,ze=uh(be,yV);return un(un(H1({onKeyDown:Be(ss(ve,Ce)),onFocus:Be(ss(Qe,ge)),onBlur:Be(ss(ot,fe)),onClick:je(ss(lt,De)),onDragEnter:rt(ss(Me,te)),onDragOver:rt(ss($e,ae)),onDragLeave:rt(ss(At,oe)),onDrop:rt(ss(ke,ue)),role:typeof mt=="string"&&mt!==""?mt:"presentation"},st,V),!r&&!E?{tabIndex:0}:{}),ze)}},[V,Ce,ge,fe,De,te,ae,oe,ue,E,M,r]),Ye=d.useCallback(function(be){be.stopPropagation()},[]),tt=d.useMemo(function(){return function(){var be=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Re=be.refKey,st=Re===void 0?"ref":Re,mt=be.onChange,ve=be.onClick,Qe=uh(be,CV),ot=H1({accept:O,multiple:l,type:"file",style:{display:"none"},onChange:je(ss(mt,ue)),onClick:je(ss(ve,Ye)),tabIndex:-1},st,X);return un(un({},ot),Qe)}},[X,n,l,ue,r]);return un(un({},Y),{},{isFocused:q&&!r,getRootProps:wt,getInputProps:tt,rootRef:V,inputRef:X,open:je(me)})}function MV(e,t){switch(t.type){case"focus":return un(un({},e),{},{isFocused:!0});case"blur":return un(un({},e),{},{isFocused:!1});case"openDialog":return un(un({},W1),{},{isFileDialogActive:!0});case"closeDialog":return un(un({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return un(un({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return un(un({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return un({},W1);default:return e}}function IS(){}function V1(){return V1=Object.assign?Object.assign.bind():function(e){for(var t=1;t'),!0):t?e.some(function(n){return t.includes(n)})||e.includes("*"):!0}var $V=function(t,n,r){r===void 0&&(r=!1);var o=n.alt,s=n.meta,i=n.mod,l=n.shift,u=n.ctrl,p=n.keys,h=t.key,m=t.code,v=t.ctrlKey,b=t.metaKey,y=t.shiftKey,x=t.altKey,w=La(m),k=h.toLowerCase();if(!r){if(o===!x&&k!=="alt"||l===!y&&k!=="shift")return!1;if(i){if(!b&&!v)return!1}else if(s===!b&&k!=="meta"&&k!=="os"||u===!v&&k!=="ctrl"&&k!=="control")return!1}return p&&p.length===1&&(p.includes(k)||p.includes(w))?!0:p?zp(p):!p},LV=d.createContext(void 0),zV=function(){return d.useContext(LV)};function eI(e,t){return e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).reduce(function(n,r){return n&&eI(e[r],t[r])},!0):e===t}var FV=d.createContext({hotkeys:[],enabledScopes:[],toggleScope:function(){},enableScope:function(){},disableScope:function(){}}),BV=function(){return d.useContext(FV)};function HV(e){var t=d.useRef(void 0);return eI(t.current,e)||(t.current=e),t.current}var ES=function(t){t.stopPropagation(),t.preventDefault(),t.stopImmediatePropagation()},WV=typeof window<"u"?d.useLayoutEffect:d.useEffect;function Ze(e,t,n,r){var o=d.useRef(null),s=d.useRef(!1),i=n instanceof Array?r instanceof Array?void 0:r:n,l=Ux(e)?e.join(i==null?void 0:i.splitKey):e,u=n instanceof Array?n:r instanceof Array?r:void 0,p=d.useCallback(t,u??[]),h=d.useRef(p);u?h.current=p:h.current=t;var m=HV(i),v=BV(),b=v.enabledScopes,y=zV();return WV(function(){if(!((m==null?void 0:m.enabled)===!1||!TV(b,m==null?void 0:m.scopes))){var x=function(I,E){var M;if(E===void 0&&(E=!1),!(NV(I)&&!JP(I,m==null?void 0:m.enableOnFormTags))&&!(m!=null&&m.ignoreEventWhen!=null&&m.ignoreEventWhen(I))){if(o.current!==null&&document.activeElement!==o.current&&!o.current.contains(document.activeElement)){ES(I);return}(M=I.target)!=null&&M.isContentEditable&&!(m!=null&&m.enableOnContentEditable)||bv(l,m==null?void 0:m.splitKey).forEach(function(D){var R,A=xv(D,m==null?void 0:m.combinationKey);if($V(I,A,m==null?void 0:m.ignoreModifiers)||(R=A.keys)!=null&&R.includes("*")){if(E&&s.current)return;if(RV(I,A,m==null?void 0:m.preventDefault),!AV(I,A,m==null?void 0:m.enabled)){ES(I);return}h.current(I,A),E||(s.current=!0)}})}},w=function(I){I.key!==void 0&&(QP(La(I.code)),((m==null?void 0:m.keydown)===void 0&&(m==null?void 0:m.keyup)!==!0||m!=null&&m.keydown)&&x(I))},k=function(I){I.key!==void 0&&(ZP(La(I.code)),s.current=!1,m!=null&&m.keyup&&x(I,!0))},_=o.current||(i==null?void 0:i.document)||document;return _.addEventListener("keyup",k),_.addEventListener("keydown",w),y&&bv(l,m==null?void 0:m.splitKey).forEach(function(j){return y.addHotkey(xv(j,m==null?void 0:m.combinationKey,m==null?void 0:m.description))}),function(){_.removeEventListener("keyup",k),_.removeEventListener("keydown",w),y&&bv(l,m==null?void 0:m.splitKey).forEach(function(j){return y.removeHotkey(xv(j,m==null?void 0:m.combinationKey,m==null?void 0:m.description))})}}},[l,m,b]),o}const VV=e=>{const{isDragAccept:t,isDragReject:n,setIsHandlingUpload:r}=e;return Ze("esc",()=>{r(!1)}),a.jsxs(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"100vw",height:"100vh",zIndex:999,backdropFilter:"blur(20px)"},children:[a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:"base.700",_dark:{bg:"base.900"},opacity:.7,alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"full",height:"full",alignItems:"center",justifyContent:"center",p:4},children:a.jsx($,{sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",flexDir:"column",gap:4,borderWidth:3,borderRadius:"xl",borderStyle:"dashed",color:"base.100",borderColor:"base.100",_dark:{borderColor:"base.200"}},children:t?a.jsx(io,{size:"lg",children:"Drop to Upload"}):a.jsxs(a.Fragment,{children:[a.jsx(io,{size:"lg",children:"Invalid Upload"}),a.jsx(io,{size:"md",children:"Must be single JPEG or PNG image"})]})})})]})},UV=d.memo(VV),GV=ie([xe,wn],({gallery:e},t)=>{let n={type:"TOAST"};t==="unifiedCanvas"&&(n={type:"SET_CANVAS_INITIAL_IMAGE"}),t==="img2img"&&(n={type:"SET_INITIAL_IMAGE"});const{autoAddBoardId:r}=e;return{autoAddBoardId:r,postUploadAction:n}},we),KV=e=>{const{children:t}=e,{autoAddBoardId:n,postUploadAction:r}=L(GV),o=L(En),s=tl(),{t:i}=Z(),[l,u]=d.useState(!1),[p]=$j(),h=d.useCallback(j=>{u(!0),s({title:i("toast.uploadFailed"),description:j.errors.map(I=>I.message).join(` +`),status:"error"})},[i,s]),m=d.useCallback(async j=>{p({file:j,image_category:"user",is_intermediate:!1,postUploadAction:r,board_id:n==="none"?void 0:n})},[n,r,p]),v=d.useCallback((j,I)=>{if(I.length>1){s({title:i("toast.uploadFailed"),description:i("toast.uploadFailedInvalidUploadDesc"),status:"error"});return}I.forEach(E=>{h(E)}),j.forEach(E=>{m(E)})},[i,s,m,h]),{getRootProps:b,getInputProps:y,isDragAccept:x,isDragReject:w,isDragActive:k,inputRef:_}=Vx({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:v,onDragOver:()=>u(!0),disabled:o,multiple:!1});return d.useEffect(()=>{const j=async I=>{var E,M;_.current&&(E=I.clipboardData)!=null&&E.files&&(_.current.files=I.clipboardData.files,(M=_.current)==null||M.dispatchEvent(new Event("change",{bubbles:!0})))};return document.addEventListener("paste",j),()=>{document.removeEventListener("paste",j)}},[_]),a.jsxs(Ie,{...b({style:{}}),onKeyDown:j=>{j.key},children:[a.jsx("input",{...y()}),t,a.jsx(nr,{children:k&&l&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(UV,{isDragAccept:x,isDragReject:w,setIsHandlingUpload:u})},"image-upload-overlay")})]})},qV=d.memo(KV),XV=Pe((e,t)=>{const{children:n,tooltip:r="",tooltipProps:{placement:o="top",hasArrow:s=!0,...i}={},isChecked:l,...u}=e;return a.jsx(Rt,{label:r,placement:o,hasArrow:s,...i,children:a.jsx(bc,{ref:t,colorScheme:l?"accent":"base",...u,children:n})})}),it=d.memo(XV);function YV(e){const t=d.createContext(null);return[({children:o,value:s})=>H.createElement(t.Provider,{value:s},o),()=>{const o=d.useContext(t);if(o===null)throw new Error(e);return o}]}function tI(e){return Array.isArray(e)?e:[e]}const QV=()=>{};function ZV(e,t={active:!0}){return typeof e!="function"||!t.active?t.onKeyDown||QV:n=>{var r;n.key==="Escape"&&(e(n),(r=t.onTrigger)==null||r.call(t))}}function nI({data:e}){const t=[],n=[],r=e.reduce((o,s,i)=>(s.group?o[s.group]?o[s.group].push(i):o[s.group]=[i]:n.push(i),o),{});return Object.keys(r).forEach(o=>{t.push(...r[o].map(s=>e[s]))}),t.push(...n.map(o=>e[o])),t}function rI(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==H.Fragment:!1}function oI(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;tr===t[o]).indexOf(!1)>=0)&&(n.current={v:e(),prevDeps:[...t]}),n.current.v}const tU=U7({key:"mantine",prepend:!0});function nU(){return j5()||tU}var rU=Object.defineProperty,MS=Object.getOwnPropertySymbols,oU=Object.prototype.hasOwnProperty,sU=Object.prototype.propertyIsEnumerable,OS=(e,t,n)=>t in e?rU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,aU=(e,t)=>{for(var n in t||(t={}))oU.call(t,n)&&OS(e,n,t[n]);if(MS)for(var n of MS(t))sU.call(t,n)&&OS(e,n,t[n]);return e};const yv="ref";function iU(e){let t;if(e.length!==1)return{args:e,ref:t};const[n]=e;if(!(n instanceof Object))return{args:e,ref:t};if(!(yv in n))return{args:e,ref:t};t=n[yv];const r=aU({},n);return delete r[yv],{args:[r],ref:t}}const{cssFactory:lU}=(()=>{function e(n,r,o){const s=[],i=q7(n,s,o);return s.length<2?o:i+r(s)}function t(n){const{cache:r}=n,o=(...i)=>{const{ref:l,args:u}=iU(i),p=G7(u,r.registered);return K7(r,p,!1),`${r.key}-${p.name}${l===void 0?"":` ${l}`}`};return{css:o,cx:(...i)=>e(r.registered,o,sI(i))}}return{cssFactory:t}})();function aI(){const e=nU();return eU(()=>lU({cache:e}),[e])}function cU({cx:e,classes:t,context:n,classNames:r,name:o,cache:s}){const i=n.reduce((l,u)=>(Object.keys(u.classNames).forEach(p=>{typeof l[p]!="string"?l[p]=`${u.classNames[p]}`:l[p]=`${l[p]} ${u.classNames[p]}`}),l),{});return Object.keys(t).reduce((l,u)=>(l[u]=e(t[u],i[u],r!=null&&r[u],Array.isArray(o)?o.filter(Boolean).map(p=>`${(s==null?void 0:s.key)||"mantine"}-${p}-${u}`).join(" "):o?`${(s==null?void 0:s.key)||"mantine"}-${o}-${u}`:null),l),{})}var uU=Object.defineProperty,DS=Object.getOwnPropertySymbols,dU=Object.prototype.hasOwnProperty,fU=Object.prototype.propertyIsEnumerable,RS=(e,t,n)=>t in e?uU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Cv=(e,t)=>{for(var n in t||(t={}))dU.call(t,n)&&RS(e,n,t[n]);if(DS)for(var n of DS(t))fU.call(t,n)&&RS(e,n,t[n]);return e};function U1(e,t){return t&&Object.keys(t).forEach(n=>{e[n]?e[n]=Cv(Cv({},e[n]),t[n]):e[n]=Cv({},t[n])}),e}function AS(e,t,n,r){const o=s=>typeof s=="function"?s(t,n||{},r):s||{};return Array.isArray(e)?e.map(s=>o(s.styles)).reduce((s,i)=>U1(s,i),{}):o(e)}function pU({ctx:e,theme:t,params:n,variant:r,size:o}){return e.reduce((s,i)=>(i.variants&&r in i.variants&&U1(s,i.variants[r](t,n,{variant:r,size:o})),i.sizes&&o in i.sizes&&U1(s,i.sizes[o](t,n,{variant:r,size:o})),s),{})}function or(e){const t=typeof e=="function"?e:()=>e;function n(r,o){const s=ua(),i=jN(o==null?void 0:o.name),l=j5(),u={variant:o==null?void 0:o.variant,size:o==null?void 0:o.size},{css:p,cx:h}=aI(),m=t(s,r,u),v=AS(o==null?void 0:o.styles,s,r,u),b=AS(i,s,r,u),y=pU({ctx:i,theme:s,params:r,variant:o==null?void 0:o.variant,size:o==null?void 0:o.size}),x=Object.fromEntries(Object.keys(m).map(w=>{const k=h({[p(m[w])]:!(o!=null&&o.unstyled)},p(y[w]),p(b[w]),p(v[w]));return[w,k]}));return{classes:cU({cx:h,classes:x,context:i,classNames:o==null?void 0:o.classNames,name:o==null?void 0:o.name,cache:l}),cx:h,theme:s}}return n}function NS(e){return`___ref-${e||""}`}var hU=Object.defineProperty,mU=Object.defineProperties,gU=Object.getOwnPropertyDescriptors,TS=Object.getOwnPropertySymbols,vU=Object.prototype.hasOwnProperty,bU=Object.prototype.propertyIsEnumerable,$S=(e,t,n)=>t in e?hU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wu=(e,t)=>{for(var n in t||(t={}))vU.call(t,n)&&$S(e,n,t[n]);if(TS)for(var n of TS(t))bU.call(t,n)&&$S(e,n,t[n]);return e},Su=(e,t)=>mU(e,gU(t));const ku={in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${Oe(10)})`},transitionProperty:"transform, opacity"},op={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:"opacity"},scale:{in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:"scale(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-y":{in:{opacity:1,transform:"scaleY(1)"},out:{opacity:0,transform:"scaleY(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-x":{in:{opacity:1,transform:"scaleX(1)"},out:{opacity:0,transform:"scaleX(0)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"skew-up":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(-${Oe(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"skew-down":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-left":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) rotate(-5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) rotate(5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-100%)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(100%)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"slide-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(100%)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"slide-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-100%)"},common:{transformOrigin:"right"},transitionProperty:"transform, opacity"},pop:Su(wu({},ku),{common:{transformOrigin:"center center"}}),"pop-bottom-left":Su(wu({},ku),{common:{transformOrigin:"bottom left"}}),"pop-bottom-right":Su(wu({},ku),{common:{transformOrigin:"bottom right"}}),"pop-top-left":Su(wu({},ku),{common:{transformOrigin:"top left"}}),"pop-top-right":Su(wu({},ku),{common:{transformOrigin:"top right"}})},LS=["mousedown","touchstart"];function xU(e,t,n){const r=d.useRef();return d.useEffect(()=>{const o=s=>{const{target:i}=s??{};if(Array.isArray(n)){const l=(i==null?void 0:i.hasAttribute("data-ignore-outside-clicks"))||!document.body.contains(i)&&i.tagName!=="HTML";n.every(p=>!!p&&!s.composedPath().includes(p))&&!l&&e()}else r.current&&!r.current.contains(i)&&e()};return(t||LS).forEach(s=>document.addEventListener(s,o)),()=>{(t||LS).forEach(s=>document.removeEventListener(s,o))}},[r,e,n]),r}function yU(e,t){try{return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}catch{return e.addListener(t),()=>e.removeListener(t)}}function CU(e,t){return typeof t=="boolean"?t:typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function wU(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[r,o]=d.useState(n?t:CU(e,t)),s=d.useRef();return d.useEffect(()=>{if("matchMedia"in window)return s.current=window.matchMedia(e),o(s.current.matches),yU(s.current,i=>o(i.matches))},[e]),r}const iI=typeof document<"u"?d.useLayoutEffect:d.useEffect;function $o(e,t){const n=d.useRef(!1);d.useEffect(()=>()=>{n.current=!1},[]),d.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function SU({opened:e,shouldReturnFocus:t=!0}){const n=d.useRef(),r=()=>{var o;n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&((o=n.current)==null||o.focus({preventScroll:!0}))};return $o(()=>{let o=-1;const s=i=>{i.key==="Tab"&&window.clearTimeout(o)};return document.addEventListener("keydown",s),e?n.current=document.activeElement:t&&(o=window.setTimeout(r,10)),()=>{window.clearTimeout(o),document.removeEventListener("keydown",s)}},[e,t]),r}const kU=/input|select|textarea|button|object/,lI="a, input, select, textarea, button, object, [tabindex]";function _U(e){return e.style.display==="none"}function jU(e){if(e.getAttribute("aria-hidden")||e.getAttribute("hidden")||e.getAttribute("type")==="hidden")return!1;let n=e;for(;n&&!(n===document.body||n.nodeType===11);){if(_U(n))return!1;n=n.parentNode}return!0}function cI(e){let t=e.getAttribute("tabindex");return t===null&&(t=void 0),parseInt(t,10)}function G1(e){const t=e.nodeName.toLowerCase(),n=!Number.isNaN(cI(e));return(kU.test(t)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&jU(e)}function uI(e){const t=cI(e);return(Number.isNaN(t)||t>=0)&&G1(e)}function PU(e){return Array.from(e.querySelectorAll(lI)).filter(uI)}function IU(e,t){const n=PU(e);if(!n.length){t.preventDefault();return}const r=n[t.shiftKey?0:n.length-1],o=e.getRootNode();if(!(r===o.activeElement||e===o.activeElement))return;t.preventDefault();const i=n[t.shiftKey?n.length-1:0];i&&i.focus()}function Kx(){return`mantine-${Math.random().toString(36).slice(2,11)}`}function EU(e,t="body > :not(script)"){const n=Kx(),r=Array.from(document.querySelectorAll(t)).map(o=>{var s;if((s=o==null?void 0:o.shadowRoot)!=null&&s.contains(e)||o.contains(e))return;const i=o.getAttribute("aria-hidden"),l=o.getAttribute("data-hidden"),u=o.getAttribute("data-focus-id");return o.setAttribute("data-focus-id",n),i===null||i==="false"?o.setAttribute("aria-hidden","true"):!l&&!u&&o.setAttribute("data-hidden",i),{node:o,ariaHidden:l||null}});return()=>{r.forEach(o=>{!o||n!==o.node.getAttribute("data-focus-id")||(o.ariaHidden===null?o.node.removeAttribute("aria-hidden"):o.node.setAttribute("aria-hidden",o.ariaHidden),o.node.removeAttribute("data-focus-id"),o.node.removeAttribute("data-hidden"))})}}function MU(e=!0){const t=d.useRef(),n=d.useRef(null),r=s=>{let i=s.querySelector("[data-autofocus]");if(!i){const l=Array.from(s.querySelectorAll(lI));i=l.find(uI)||l.find(G1)||null,!i&&G1(s)&&(i=s)}i&&i.focus({preventScroll:!0})},o=d.useCallback(s=>{if(e){if(s===null){n.current&&(n.current(),n.current=null);return}n.current=EU(s),t.current!==s&&(s?(setTimeout(()=>{s.getRootNode()&&r(s)}),t.current=s):t.current=null)}},[e]);return d.useEffect(()=>{if(!e)return;t.current&&setTimeout(()=>r(t.current));const s=i=>{i.key==="Tab"&&t.current&&IU(t.current,i)};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s),n.current&&n.current()}},[e]),o}const OU=H["useId".toString()]||(()=>{});function DU(){const e=OU();return e?`mantine-${e.replace(/:/g,"")}`:""}function qx(e){const t=DU(),[n,r]=d.useState(t);return iI(()=>{r(Kx())},[]),typeof e=="string"?e:typeof window>"u"?t:n}function zS(e,t,n){d.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t])}function dI(e,t){typeof e=="function"?e(t):typeof e=="object"&&e!==null&&"current"in e&&(e.current=t)}function RU(...e){return t=>{e.forEach(n=>dI(n,t))}}function Bd(...e){return d.useCallback(RU(...e),e)}function ad({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){const[o,s]=d.useState(t!==void 0?t:n),i=l=>{s(l),r==null||r(l)};return e!==void 0?[e,r,!0]:[o,i,!1]}function fI(e,t){return wU("(prefers-reduced-motion: reduce)",e,t)}const AU=e=>e<.5?2*e*e:-1+(4-2*e)*e,NU=({axis:e,target:t,parent:n,alignment:r,offset:o,isList:s})=>{if(!t||!n&&typeof document>"u")return 0;const i=!!n,u=(n||document.body).getBoundingClientRect(),p=t.getBoundingClientRect(),h=m=>p[m]-u[m];if(e==="y"){const m=h("top");if(m===0)return 0;if(r==="start"){const b=m-o;return b<=p.height*(s?0:1)||!s?b:0}const v=i?u.height:window.innerHeight;if(r==="end"){const b=m+o-v+p.height;return b>=-p.height*(s?0:1)||!s?b:0}return r==="center"?m-v/2+p.height/2:0}if(e==="x"){const m=h("left");if(m===0)return 0;if(r==="start"){const b=m-o;return b<=p.width||!s?b:0}const v=i?u.width:window.innerWidth;if(r==="end"){const b=m+o-v+p.width;return b>=-p.width||!s?b:0}return r==="center"?m-v/2+p.width/2:0}return 0},TU=({axis:e,parent:t})=>{if(!t&&typeof document>"u")return 0;const n=e==="y"?"scrollTop":"scrollLeft";if(t)return t[n];const{body:r,documentElement:o}=document;return r[n]+o[n]},$U=({axis:e,parent:t,distance:n})=>{if(!t&&typeof document>"u")return;const r=e==="y"?"scrollTop":"scrollLeft";if(t)t[r]=n;else{const{body:o,documentElement:s}=document;o[r]=n,s[r]=n}};function pI({duration:e=1250,axis:t="y",onScrollFinish:n,easing:r=AU,offset:o=0,cancelable:s=!0,isList:i=!1}={}){const l=d.useRef(0),u=d.useRef(0),p=d.useRef(!1),h=d.useRef(null),m=d.useRef(null),v=fI(),b=()=>{l.current&&cancelAnimationFrame(l.current)},y=d.useCallback(({alignment:w="start"}={})=>{var k;p.current=!1,l.current&&b();const _=(k=TU({parent:h.current,axis:t}))!=null?k:0,j=NU({parent:h.current,target:m.current,axis:t,alignment:w,offset:o,isList:i})-(h.current?0:_);function I(){u.current===0&&(u.current=performance.now());const M=performance.now()-u.current,D=v||e===0?1:M/e,R=_+j*r(D);$U({parent:h.current,axis:t,distance:R}),!p.current&&D<1?l.current=requestAnimationFrame(I):(typeof n=="function"&&n(),u.current=0,l.current=0,b())}I()},[t,e,r,i,o,n,v]),x=()=>{s&&(p.current=!0)};return zS("wheel",x,{passive:!0}),zS("touchmove",x,{passive:!0}),d.useEffect(()=>b,[]),{scrollableRef:h,targetRef:m,scrollIntoView:y,cancel:b}}var FS=Object.getOwnPropertySymbols,LU=Object.prototype.hasOwnProperty,zU=Object.prototype.propertyIsEnumerable,FU=(e,t)=>{var n={};for(var r in e)LU.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&FS)for(var r of FS(e))t.indexOf(r)<0&&zU.call(e,r)&&(n[r]=e[r]);return n};function Xm(e){const t=e,{m:n,mx:r,my:o,mt:s,mb:i,ml:l,mr:u,p,px:h,py:m,pt:v,pb:b,pl:y,pr:x,bg:w,c:k,opacity:_,ff:j,fz:I,fw:E,lts:M,ta:D,lh:R,fs:A,tt:O,td:T,w:K,miw:F,maw:V,h:X,mih:W,mah:z,bgsz:Y,bgp:B,bgr:q,bga:re,pos:Q,top:le,left:se,bottom:U,right:G,inset:te,display:ae}=t,oe=FU(t,["m","mx","my","mt","mb","ml","mr","p","px","py","pt","pb","pl","pr","bg","c","opacity","ff","fz","fw","lts","ta","lh","fs","tt","td","w","miw","maw","h","mih","mah","bgsz","bgp","bgr","bga","pos","top","left","bottom","right","inset","display"]);return{systemStyles:PN({m:n,mx:r,my:o,mt:s,mb:i,ml:l,mr:u,p,px:h,py:m,pt:v,pb:b,pl:y,pr:x,bg:w,c:k,opacity:_,ff:j,fz:I,fw:E,lts:M,ta:D,lh:R,fs:A,tt:O,td:T,w:K,miw:F,maw:V,h:X,mih:W,mah:z,bgsz:Y,bgp:B,bgr:q,bga:re,pos:Q,top:le,left:se,bottom:U,right:G,inset:te,display:ae}),rest:oe}}function BU(e,t){const n=Object.keys(e).filter(r=>r!=="base").sort((r,o)=>jw(ut({size:r,sizes:t.breakpoints}))-jw(ut({size:o,sizes:t.breakpoints})));return"base"in e?["base",...n]:n}function HU({value:e,theme:t,getValue:n,property:r}){if(e==null)return;if(typeof e=="object")return BU(e,t).reduce((i,l)=>{if(l==="base"&&e.base!==void 0){const p=n(e.base,t);return Array.isArray(r)?(r.forEach(h=>{i[h]=p}),i):(i[r]=p,i)}const u=n(e[l],t);return Array.isArray(r)?(i[t.fn.largerThan(l)]={},r.forEach(p=>{i[t.fn.largerThan(l)][p]=u}),i):(i[t.fn.largerThan(l)]={[r]:u},i)},{});const o=n(e,t);return Array.isArray(r)?r.reduce((s,i)=>(s[i]=o,s),{}):{[r]:o}}function WU(e,t){return e==="dimmed"?t.colorScheme==="dark"?t.colors.dark[2]:t.colors.gray[6]:t.fn.variant({variant:"filled",color:e,primaryFallback:!1}).background}function VU(e){return Oe(e)}function UU(e){return e}function GU(e,t){return ut({size:e,sizes:t.fontSizes})}const KU=["-xs","-sm","-md","-lg","-xl"];function qU(e,t){return KU.includes(e)?`calc(${ut({size:e.replace("-",""),sizes:t.spacing})} * -1)`:ut({size:e,sizes:t.spacing})}const XU={identity:UU,color:WU,size:VU,fontSize:GU,spacing:qU},YU={m:{type:"spacing",property:"margin"},mt:{type:"spacing",property:"marginTop"},mb:{type:"spacing",property:"marginBottom"},ml:{type:"spacing",property:"marginLeft"},mr:{type:"spacing",property:"marginRight"},mx:{type:"spacing",property:["marginRight","marginLeft"]},my:{type:"spacing",property:["marginTop","marginBottom"]},p:{type:"spacing",property:"padding"},pt:{type:"spacing",property:"paddingTop"},pb:{type:"spacing",property:"paddingBottom"},pl:{type:"spacing",property:"paddingLeft"},pr:{type:"spacing",property:"paddingRight"},px:{type:"spacing",property:["paddingRight","paddingLeft"]},py:{type:"spacing",property:["paddingTop","paddingBottom"]},bg:{type:"color",property:"background"},c:{type:"color",property:"color"},opacity:{type:"identity",property:"opacity"},ff:{type:"identity",property:"fontFamily"},fz:{type:"fontSize",property:"fontSize"},fw:{type:"identity",property:"fontWeight"},lts:{type:"size",property:"letterSpacing"},ta:{type:"identity",property:"textAlign"},lh:{type:"identity",property:"lineHeight"},fs:{type:"identity",property:"fontStyle"},tt:{type:"identity",property:"textTransform"},td:{type:"identity",property:"textDecoration"},w:{type:"spacing",property:"width"},miw:{type:"spacing",property:"minWidth"},maw:{type:"spacing",property:"maxWidth"},h:{type:"spacing",property:"height"},mih:{type:"spacing",property:"minHeight"},mah:{type:"spacing",property:"maxHeight"},bgsz:{type:"size",property:"backgroundSize"},bgp:{type:"identity",property:"backgroundPosition"},bgr:{type:"identity",property:"backgroundRepeat"},bga:{type:"identity",property:"backgroundAttachment"},pos:{type:"identity",property:"position"},top:{type:"identity",property:"top"},left:{type:"size",property:"left"},bottom:{type:"size",property:"bottom"},right:{type:"size",property:"right"},inset:{type:"size",property:"inset"},display:{type:"identity",property:"display"}};var QU=Object.defineProperty,BS=Object.getOwnPropertySymbols,ZU=Object.prototype.hasOwnProperty,JU=Object.prototype.propertyIsEnumerable,HS=(e,t,n)=>t in e?QU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WS=(e,t)=>{for(var n in t||(t={}))ZU.call(t,n)&&HS(e,n,t[n]);if(BS)for(var n of BS(t))JU.call(t,n)&&HS(e,n,t[n]);return e};function VS(e,t,n=YU){return Object.keys(n).reduce((o,s)=>(s in e&&e[s]!==void 0&&o.push(HU({value:e[s],getValue:XU[n[s].type],property:n[s].property,theme:t})),o),[]).reduce((o,s)=>(Object.keys(s).forEach(i=>{typeof s[i]=="object"&&s[i]!==null&&i in o?o[i]=WS(WS({},o[i]),s[i]):o[i]=s[i]}),o),{})}function US(e,t){return typeof e=="function"?e(t):e}function eG(e,t,n){const r=ua(),{css:o,cx:s}=aI();return Array.isArray(e)?s(n,o(VS(t,r)),e.map(i=>o(US(i,r)))):s(n,o(US(e,r)),o(VS(t,r)))}var tG=Object.defineProperty,dh=Object.getOwnPropertySymbols,hI=Object.prototype.hasOwnProperty,mI=Object.prototype.propertyIsEnumerable,GS=(e,t,n)=>t in e?tG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nG=(e,t)=>{for(var n in t||(t={}))hI.call(t,n)&&GS(e,n,t[n]);if(dh)for(var n of dh(t))mI.call(t,n)&&GS(e,n,t[n]);return e},rG=(e,t)=>{var n={};for(var r in e)hI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&dh)for(var r of dh(e))t.indexOf(r)<0&&mI.call(e,r)&&(n[r]=e[r]);return n};const gI=d.forwardRef((e,t)=>{var n=e,{className:r,component:o,style:s,sx:i}=n,l=rG(n,["className","component","style","sx"]);const{systemStyles:u,rest:p}=Xm(l),h=o||"div";return H.createElement(h,nG({ref:t,className:eG(i,u,r),style:s},p))});gI.displayName="@mantine/core/Box";const Or=gI;var oG=Object.defineProperty,sG=Object.defineProperties,aG=Object.getOwnPropertyDescriptors,KS=Object.getOwnPropertySymbols,iG=Object.prototype.hasOwnProperty,lG=Object.prototype.propertyIsEnumerable,qS=(e,t,n)=>t in e?oG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,XS=(e,t)=>{for(var n in t||(t={}))iG.call(t,n)&&qS(e,n,t[n]);if(KS)for(var n of KS(t))lG.call(t,n)&&qS(e,n,t[n]);return e},cG=(e,t)=>sG(e,aG(t)),uG=or(e=>({root:cG(XS(XS({},e.fn.focusStyles()),e.fn.fontStyles()),{cursor:"pointer",border:0,padding:0,appearance:"none",fontSize:e.fontSizes.md,backgroundColor:"transparent",textAlign:"left",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,textDecoration:"none",boxSizing:"border-box"})}));const dG=uG;var fG=Object.defineProperty,fh=Object.getOwnPropertySymbols,vI=Object.prototype.hasOwnProperty,bI=Object.prototype.propertyIsEnumerable,YS=(e,t,n)=>t in e?fG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,pG=(e,t)=>{for(var n in t||(t={}))vI.call(t,n)&&YS(e,n,t[n]);if(fh)for(var n of fh(t))bI.call(t,n)&&YS(e,n,t[n]);return e},hG=(e,t)=>{var n={};for(var r in e)vI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&fh)for(var r of fh(e))t.indexOf(r)<0&&bI.call(e,r)&&(n[r]=e[r]);return n};const xI=d.forwardRef((e,t)=>{const n=Sn("UnstyledButton",{},e),{className:r,component:o="button",unstyled:s,variant:i}=n,l=hG(n,["className","component","unstyled","variant"]),{classes:u,cx:p}=dG(null,{name:"UnstyledButton",unstyled:s,variant:i});return H.createElement(Or,pG({component:o,ref:t,className:p(u.root,r),type:o==="button"?"button":void 0},l))});xI.displayName="@mantine/core/UnstyledButton";const mG=xI;var gG=Object.defineProperty,vG=Object.defineProperties,bG=Object.getOwnPropertyDescriptors,QS=Object.getOwnPropertySymbols,xG=Object.prototype.hasOwnProperty,yG=Object.prototype.propertyIsEnumerable,ZS=(e,t,n)=>t in e?gG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,K1=(e,t)=>{for(var n in t||(t={}))xG.call(t,n)&&ZS(e,n,t[n]);if(QS)for(var n of QS(t))yG.call(t,n)&&ZS(e,n,t[n]);return e},JS=(e,t)=>vG(e,bG(t));const CG=["subtle","filled","outline","light","default","transparent","gradient"],sp={xs:Oe(18),sm:Oe(22),md:Oe(28),lg:Oe(34),xl:Oe(44)};function wG({variant:e,theme:t,color:n,gradient:r}){const o=t.fn.variant({color:n,variant:e,gradient:r});return e==="gradient"?{border:0,backgroundImage:o.background,color:o.color,"&:hover":t.fn.hover({backgroundSize:"200%"})}:CG.includes(e)?K1({border:`${Oe(1)} solid ${o.border}`,backgroundColor:o.background,color:o.color},t.fn.hover({backgroundColor:o.hover})):null}var SG=or((e,{radius:t,color:n,gradient:r},{variant:o,size:s})=>({root:JS(K1({position:"relative",borderRadius:e.fn.radius(t),padding:0,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",height:ut({size:s,sizes:sp}),minHeight:ut({size:s,sizes:sp}),width:ut({size:s,sizes:sp}),minWidth:ut({size:s,sizes:sp})},wG({variant:o,theme:e,color:n,gradient:r})),{"&:active":e.activeStyles,"& [data-action-icon-loader]":{maxWidth:"70%"},"&:disabled, &[data-disabled]":{color:e.colors.gray[e.colorScheme==="dark"?6:4],cursor:"not-allowed",backgroundColor:o==="transparent"?void 0:e.fn.themeColor("gray",e.colorScheme==="dark"?8:1),borderColor:o==="transparent"?void 0:e.fn.themeColor("gray",e.colorScheme==="dark"?8:1),backgroundImage:"none",pointerEvents:"none","&:active":{transform:"none"}},"&[data-loading]":{pointerEvents:"none","&::before":JS(K1({content:'""'},e.fn.cover(Oe(-1))),{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.colors.dark[7],.5):"rgba(255, 255, 255, .5)",borderRadius:e.fn.radius(t),cursor:"not-allowed"})}})}));const kG=SG;var _G=Object.defineProperty,ph=Object.getOwnPropertySymbols,yI=Object.prototype.hasOwnProperty,CI=Object.prototype.propertyIsEnumerable,e4=(e,t,n)=>t in e?_G(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,t4=(e,t)=>{for(var n in t||(t={}))yI.call(t,n)&&e4(e,n,t[n]);if(ph)for(var n of ph(t))CI.call(t,n)&&e4(e,n,t[n]);return e},n4=(e,t)=>{var n={};for(var r in e)yI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ph)for(var r of ph(e))t.indexOf(r)<0&&CI.call(e,r)&&(n[r]=e[r]);return n};function jG(e){var t=e,{size:n,color:r}=t,o=n4(t,["size","color"]);const s=o,{style:i}=s,l=n4(s,["style"]);return H.createElement("svg",t4({viewBox:"0 0 135 140",xmlns:"http://www.w3.org/2000/svg",fill:r,style:t4({width:n},i)},l),H.createElement("rect",{y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"30",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"60",width:"15",height:"140",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"90",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"120",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})))}var PG=Object.defineProperty,hh=Object.getOwnPropertySymbols,wI=Object.prototype.hasOwnProperty,SI=Object.prototype.propertyIsEnumerable,r4=(e,t,n)=>t in e?PG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,o4=(e,t)=>{for(var n in t||(t={}))wI.call(t,n)&&r4(e,n,t[n]);if(hh)for(var n of hh(t))SI.call(t,n)&&r4(e,n,t[n]);return e},s4=(e,t)=>{var n={};for(var r in e)wI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&hh)for(var r of hh(e))t.indexOf(r)<0&&SI.call(e,r)&&(n[r]=e[r]);return n};function IG(e){var t=e,{size:n,color:r}=t,o=s4(t,["size","color"]);const s=o,{style:i}=s,l=s4(s,["style"]);return H.createElement("svg",o4({viewBox:"0 0 38 38",xmlns:"http://www.w3.org/2000/svg",stroke:r,style:o4({width:n,height:n},i)},l),H.createElement("g",{fill:"none",fillRule:"evenodd"},H.createElement("g",{transform:"translate(2.5 2.5)",strokeWidth:"5"},H.createElement("circle",{strokeOpacity:".5",cx:"16",cy:"16",r:"16"}),H.createElement("path",{d:"M32 16c0-9.94-8.06-16-16-16"},H.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"1s",repeatCount:"indefinite"})))))}var EG=Object.defineProperty,mh=Object.getOwnPropertySymbols,kI=Object.prototype.hasOwnProperty,_I=Object.prototype.propertyIsEnumerable,a4=(e,t,n)=>t in e?EG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,i4=(e,t)=>{for(var n in t||(t={}))kI.call(t,n)&&a4(e,n,t[n]);if(mh)for(var n of mh(t))_I.call(t,n)&&a4(e,n,t[n]);return e},l4=(e,t)=>{var n={};for(var r in e)kI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&mh)for(var r of mh(e))t.indexOf(r)<0&&_I.call(e,r)&&(n[r]=e[r]);return n};function MG(e){var t=e,{size:n,color:r}=t,o=l4(t,["size","color"]);const s=o,{style:i}=s,l=l4(s,["style"]);return H.createElement("svg",i4({viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",fill:r,style:i4({width:n},i)},l),H.createElement("circle",{cx:"15",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"60",cy:"15",r:"9",fillOpacity:"0.3"},H.createElement("animate",{attributeName:"r",from:"9",to:"9",begin:"0s",dur:"0.8s",values:"9;15;9",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"0.5",to:"0.5",begin:"0s",dur:"0.8s",values:".5;1;.5",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"105",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})))}var OG=Object.defineProperty,gh=Object.getOwnPropertySymbols,jI=Object.prototype.hasOwnProperty,PI=Object.prototype.propertyIsEnumerable,c4=(e,t,n)=>t in e?OG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,DG=(e,t)=>{for(var n in t||(t={}))jI.call(t,n)&&c4(e,n,t[n]);if(gh)for(var n of gh(t))PI.call(t,n)&&c4(e,n,t[n]);return e},RG=(e,t)=>{var n={};for(var r in e)jI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&gh)for(var r of gh(e))t.indexOf(r)<0&&PI.call(e,r)&&(n[r]=e[r]);return n};const wv={bars:jG,oval:IG,dots:MG},AG={xs:Oe(18),sm:Oe(22),md:Oe(36),lg:Oe(44),xl:Oe(58)},NG={size:"md"};function II(e){const t=Sn("Loader",NG,e),{size:n,color:r,variant:o}=t,s=RG(t,["size","color","variant"]),i=ua(),l=o in wv?o:i.loader;return H.createElement(Or,DG({role:"presentation",component:wv[l]||wv.bars,size:ut({size:n,sizes:AG}),color:i.fn.variant({variant:"filled",primaryFallback:!1,color:r||i.primaryColor}).background},s))}II.displayName="@mantine/core/Loader";var TG=Object.defineProperty,vh=Object.getOwnPropertySymbols,EI=Object.prototype.hasOwnProperty,MI=Object.prototype.propertyIsEnumerable,u4=(e,t,n)=>t in e?TG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,d4=(e,t)=>{for(var n in t||(t={}))EI.call(t,n)&&u4(e,n,t[n]);if(vh)for(var n of vh(t))MI.call(t,n)&&u4(e,n,t[n]);return e},$G=(e,t)=>{var n={};for(var r in e)EI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&vh)for(var r of vh(e))t.indexOf(r)<0&&MI.call(e,r)&&(n[r]=e[r]);return n};const LG={color:"gray",size:"md",variant:"subtle"},OI=d.forwardRef((e,t)=>{const n=Sn("ActionIcon",LG,e),{className:r,color:o,children:s,radius:i,size:l,variant:u,gradient:p,disabled:h,loaderProps:m,loading:v,unstyled:b,__staticSelector:y}=n,x=$G(n,["className","color","children","radius","size","variant","gradient","disabled","loaderProps","loading","unstyled","__staticSelector"]),{classes:w,cx:k,theme:_}=kG({radius:i,color:o,gradient:p},{name:["ActionIcon",y],unstyled:b,size:l,variant:u}),j=H.createElement(II,d4({color:_.fn.variant({color:o,variant:u}).color,size:"100%","data-action-icon-loader":!0},m));return H.createElement(mG,d4({className:k(w.root,r),ref:t,disabled:h,"data-disabled":h||void 0,"data-loading":v||void 0,unstyled:b},x),v?j:s)});OI.displayName="@mantine/core/ActionIcon";const zG=OI;var FG=Object.defineProperty,BG=Object.defineProperties,HG=Object.getOwnPropertyDescriptors,bh=Object.getOwnPropertySymbols,DI=Object.prototype.hasOwnProperty,RI=Object.prototype.propertyIsEnumerable,f4=(e,t,n)=>t in e?FG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WG=(e,t)=>{for(var n in t||(t={}))DI.call(t,n)&&f4(e,n,t[n]);if(bh)for(var n of bh(t))RI.call(t,n)&&f4(e,n,t[n]);return e},VG=(e,t)=>BG(e,HG(t)),UG=(e,t)=>{var n={};for(var r in e)DI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&bh)for(var r of bh(e))t.indexOf(r)<0&&RI.call(e,r)&&(n[r]=e[r]);return n};function AI(e){const t=Sn("Portal",{},e),{children:n,target:r,className:o,innerRef:s}=t,i=UG(t,["children","target","className","innerRef"]),l=ua(),[u,p]=d.useState(!1),h=d.useRef();return iI(()=>(p(!0),h.current=r?typeof r=="string"?document.querySelector(r):r:document.createElement("div"),r||document.body.appendChild(h.current),()=>{!r&&document.body.removeChild(h.current)}),[r]),u?Fr.createPortal(H.createElement("div",VG(WG({className:o,dir:l.dir},i),{ref:s}),n),h.current):null}AI.displayName="@mantine/core/Portal";var GG=Object.defineProperty,xh=Object.getOwnPropertySymbols,NI=Object.prototype.hasOwnProperty,TI=Object.prototype.propertyIsEnumerable,p4=(e,t,n)=>t in e?GG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,KG=(e,t)=>{for(var n in t||(t={}))NI.call(t,n)&&p4(e,n,t[n]);if(xh)for(var n of xh(t))TI.call(t,n)&&p4(e,n,t[n]);return e},qG=(e,t)=>{var n={};for(var r in e)NI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&xh)for(var r of xh(e))t.indexOf(r)<0&&TI.call(e,r)&&(n[r]=e[r]);return n};function $I(e){var t=e,{withinPortal:n=!0,children:r}=t,o=qG(t,["withinPortal","children"]);return n?H.createElement(AI,KG({},o),r):H.createElement(H.Fragment,null,r)}$I.displayName="@mantine/core/OptionalPortal";var XG=Object.defineProperty,yh=Object.getOwnPropertySymbols,LI=Object.prototype.hasOwnProperty,zI=Object.prototype.propertyIsEnumerable,h4=(e,t,n)=>t in e?XG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,m4=(e,t)=>{for(var n in t||(t={}))LI.call(t,n)&&h4(e,n,t[n]);if(yh)for(var n of yh(t))zI.call(t,n)&&h4(e,n,t[n]);return e},YG=(e,t)=>{var n={};for(var r in e)LI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&yh)for(var r of yh(e))t.indexOf(r)<0&&zI.call(e,r)&&(n[r]=e[r]);return n};function FI(e){const t=e,{width:n,height:r,style:o}=t,s=YG(t,["width","height","style"]);return H.createElement("svg",m4({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:m4({width:n,height:r},o)},s),H.createElement("path",{d:"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}FI.displayName="@mantine/core/CloseIcon";var QG=Object.defineProperty,Ch=Object.getOwnPropertySymbols,BI=Object.prototype.hasOwnProperty,HI=Object.prototype.propertyIsEnumerable,g4=(e,t,n)=>t in e?QG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ZG=(e,t)=>{for(var n in t||(t={}))BI.call(t,n)&&g4(e,n,t[n]);if(Ch)for(var n of Ch(t))HI.call(t,n)&&g4(e,n,t[n]);return e},JG=(e,t)=>{var n={};for(var r in e)BI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ch)for(var r of Ch(e))t.indexOf(r)<0&&HI.call(e,r)&&(n[r]=e[r]);return n};const eK={xs:Oe(12),sm:Oe(16),md:Oe(20),lg:Oe(28),xl:Oe(34)},tK={size:"sm"},WI=d.forwardRef((e,t)=>{const n=Sn("CloseButton",tK,e),{iconSize:r,size:o,children:s}=n,i=JG(n,["iconSize","size","children"]),l=Oe(r||eK[o]);return H.createElement(zG,ZG({ref:t,__staticSelector:"CloseButton",size:o},i),s||H.createElement(FI,{width:l,height:l}))});WI.displayName="@mantine/core/CloseButton";const VI=WI;var nK=Object.defineProperty,rK=Object.defineProperties,oK=Object.getOwnPropertyDescriptors,v4=Object.getOwnPropertySymbols,sK=Object.prototype.hasOwnProperty,aK=Object.prototype.propertyIsEnumerable,b4=(e,t,n)=>t in e?nK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ap=(e,t)=>{for(var n in t||(t={}))sK.call(t,n)&&b4(e,n,t[n]);if(v4)for(var n of v4(t))aK.call(t,n)&&b4(e,n,t[n]);return e},iK=(e,t)=>rK(e,oK(t));function lK({underline:e,strikethrough:t}){const n=[];return e&&n.push("underline"),t&&n.push("line-through"),n.length>0?n.join(" "):"none"}function cK({theme:e,color:t}){return t==="dimmed"?e.fn.dimmed():typeof t=="string"&&(t in e.colors||t.split(".")[0]in e.colors)?e.fn.variant({variant:"filled",color:t}).background:t||"inherit"}function uK(e){return typeof e=="number"?{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:e,WebkitBoxOrient:"vertical"}:null}function dK({theme:e,truncate:t}){return t==="start"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",direction:e.dir==="ltr"?"rtl":"ltr",textAlign:e.dir==="ltr"?"right":"left"}:t?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:null}var fK=or((e,{color:t,lineClamp:n,truncate:r,inline:o,inherit:s,underline:i,gradient:l,weight:u,transform:p,align:h,strikethrough:m,italic:v},{size:b})=>{const y=e.fn.variant({variant:"gradient",gradient:l});return{root:iK(ap(ap(ap(ap({},e.fn.fontStyles()),e.fn.focusStyles()),uK(n)),dK({theme:e,truncate:r})),{color:cK({color:t,theme:e}),fontFamily:s?"inherit":e.fontFamily,fontSize:s||b===void 0?"inherit":ut({size:b,sizes:e.fontSizes}),lineHeight:s?"inherit":o?1:e.lineHeight,textDecoration:lK({underline:i,strikethrough:m}),WebkitTapHighlightColor:"transparent",fontWeight:s?"inherit":u,textTransform:p,textAlign:h,fontStyle:v?"italic":void 0}),gradient:{backgroundImage:y.background,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"}}});const pK=fK;var hK=Object.defineProperty,wh=Object.getOwnPropertySymbols,UI=Object.prototype.hasOwnProperty,GI=Object.prototype.propertyIsEnumerable,x4=(e,t,n)=>t in e?hK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mK=(e,t)=>{for(var n in t||(t={}))UI.call(t,n)&&x4(e,n,t[n]);if(wh)for(var n of wh(t))GI.call(t,n)&&x4(e,n,t[n]);return e},gK=(e,t)=>{var n={};for(var r in e)UI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&wh)for(var r of wh(e))t.indexOf(r)<0&&GI.call(e,r)&&(n[r]=e[r]);return n};const vK={variant:"text"},KI=d.forwardRef((e,t)=>{const n=Sn("Text",vK,e),{className:r,size:o,weight:s,transform:i,color:l,align:u,variant:p,lineClamp:h,truncate:m,gradient:v,inline:b,inherit:y,underline:x,strikethrough:w,italic:k,classNames:_,styles:j,unstyled:I,span:E,__staticSelector:M}=n,D=gK(n,["className","size","weight","transform","color","align","variant","lineClamp","truncate","gradient","inline","inherit","underline","strikethrough","italic","classNames","styles","unstyled","span","__staticSelector"]),{classes:R,cx:A}=pK({color:l,lineClamp:h,truncate:m,inline:b,inherit:y,underline:x,strikethrough:w,italic:k,weight:s,transform:i,align:u,gradient:v},{unstyled:I,name:M||"Text",variant:p,size:o});return H.createElement(Or,mK({ref:t,className:A(R.root,{[R.gradient]:p==="gradient"},r),component:E?"span":"div"},D))});KI.displayName="@mantine/core/Text";const kc=KI,ip={xs:Oe(1),sm:Oe(2),md:Oe(3),lg:Oe(4),xl:Oe(5)};function lp(e,t){const n=e.fn.variant({variant:"outline",color:t}).border;return typeof t=="string"&&(t in e.colors||t.split(".")[0]in e.colors)?n:t===void 0?e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4]:t}var bK=or((e,{color:t},{size:n,variant:r})=>({root:{},withLabel:{borderTop:"0 !important"},left:{"&::before":{display:"none"}},right:{"&::after":{display:"none"}},label:{display:"flex",alignItems:"center","&::before":{content:'""',flex:1,height:Oe(1),borderTop:`${ut({size:n,sizes:ip})} ${r} ${lp(e,t)}`,marginRight:e.spacing.xs},"&::after":{content:'""',flex:1,borderTop:`${ut({size:n,sizes:ip})} ${r} ${lp(e,t)}`,marginLeft:e.spacing.xs}},labelDefaultStyles:{color:t==="dark"?e.colors.dark[1]:e.fn.themeColor(t,e.colorScheme==="dark"?5:e.fn.primaryShade(),!1)},horizontal:{border:0,borderTopWidth:Oe(ut({size:n,sizes:ip})),borderTopColor:lp(e,t),borderTopStyle:r,margin:0},vertical:{border:0,alignSelf:"stretch",height:"auto",borderLeftWidth:Oe(ut({size:n,sizes:ip})),borderLeftColor:lp(e,t),borderLeftStyle:r}}));const xK=bK;var yK=Object.defineProperty,CK=Object.defineProperties,wK=Object.getOwnPropertyDescriptors,Sh=Object.getOwnPropertySymbols,qI=Object.prototype.hasOwnProperty,XI=Object.prototype.propertyIsEnumerable,y4=(e,t,n)=>t in e?yK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C4=(e,t)=>{for(var n in t||(t={}))qI.call(t,n)&&y4(e,n,t[n]);if(Sh)for(var n of Sh(t))XI.call(t,n)&&y4(e,n,t[n]);return e},SK=(e,t)=>CK(e,wK(t)),kK=(e,t)=>{var n={};for(var r in e)qI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Sh)for(var r of Sh(e))t.indexOf(r)<0&&XI.call(e,r)&&(n[r]=e[r]);return n};const _K={orientation:"horizontal",size:"xs",labelPosition:"left",variant:"solid"},q1=d.forwardRef((e,t)=>{const n=Sn("Divider",_K,e),{className:r,color:o,orientation:s,size:i,label:l,labelPosition:u,labelProps:p,variant:h,styles:m,classNames:v,unstyled:b}=n,y=kK(n,["className","color","orientation","size","label","labelPosition","labelProps","variant","styles","classNames","unstyled"]),{classes:x,cx:w}=xK({color:o},{classNames:v,styles:m,unstyled:b,name:"Divider",variant:h,size:i}),k=s==="vertical",_=s==="horizontal",j=!!l&&_,I=!(p!=null&&p.color);return H.createElement(Or,C4({ref:t,className:w(x.root,{[x.vertical]:k,[x.horizontal]:_,[x.withLabel]:j},r),role:"separator"},y),j&&H.createElement(kc,SK(C4({},p),{size:(p==null?void 0:p.size)||"xs",mt:Oe(2),className:w(x.label,x[u],{[x.labelDefaultStyles]:I})}),l))});q1.displayName="@mantine/core/Divider";var jK=Object.defineProperty,PK=Object.defineProperties,IK=Object.getOwnPropertyDescriptors,w4=Object.getOwnPropertySymbols,EK=Object.prototype.hasOwnProperty,MK=Object.prototype.propertyIsEnumerable,S4=(e,t,n)=>t in e?jK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,k4=(e,t)=>{for(var n in t||(t={}))EK.call(t,n)&&S4(e,n,t[n]);if(w4)for(var n of w4(t))MK.call(t,n)&&S4(e,n,t[n]);return e},OK=(e,t)=>PK(e,IK(t)),DK=or((e,t,{size:n})=>({item:OK(k4({},e.fn.fontStyles()),{boxSizing:"border-box",wordBreak:"break-all",textAlign:"left",width:"100%",padding:`calc(${ut({size:n,sizes:e.spacing})} / 1.5) ${ut({size:n,sizes:e.spacing})}`,cursor:"pointer",fontSize:ut({size:n,sizes:e.fontSizes}),color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,borderRadius:e.fn.radius(),"&[data-hovered]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[1]},"&[data-selected]":k4({backgroundColor:e.fn.variant({variant:"filled"}).background,color:e.fn.variant({variant:"filled"}).color},e.fn.hover({backgroundColor:e.fn.variant({variant:"filled"}).hover})),"&[data-disabled]":{cursor:"default",color:e.colors.dark[2]}}),nothingFound:{boxSizing:"border-box",color:e.colors.gray[6],paddingTop:`calc(${ut({size:n,sizes:e.spacing})} / 2)`,paddingBottom:`calc(${ut({size:n,sizes:e.spacing})} / 2)`,textAlign:"center"},separator:{boxSizing:"border-box",textAlign:"left",width:"100%",padding:`calc(${ut({size:n,sizes:e.spacing})} / 1.5) ${ut({size:n,sizes:e.spacing})}`},separatorLabel:{color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]}}));const RK=DK;var AK=Object.defineProperty,_4=Object.getOwnPropertySymbols,NK=Object.prototype.hasOwnProperty,TK=Object.prototype.propertyIsEnumerable,j4=(e,t,n)=>t in e?AK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$K=(e,t)=>{for(var n in t||(t={}))NK.call(t,n)&&j4(e,n,t[n]);if(_4)for(var n of _4(t))TK.call(t,n)&&j4(e,n,t[n]);return e};function Xx({data:e,hovered:t,classNames:n,styles:r,isItemSelected:o,uuid:s,__staticSelector:i,onItemHover:l,onItemSelect:u,itemsRefs:p,itemComponent:h,size:m,nothingFound:v,creatable:b,createLabel:y,unstyled:x,variant:w}){const{classes:k}=RK(null,{classNames:n,styles:r,unstyled:x,name:i,variant:w,size:m}),_=[],j=[];let I=null;const E=(D,R)=>{const A=typeof o=="function"?o(D.value):!1;return H.createElement(h,$K({key:D.value,className:k.item,"data-disabled":D.disabled||void 0,"data-hovered":!D.disabled&&t===R||void 0,"data-selected":!D.disabled&&A||void 0,selected:A,onMouseEnter:()=>l(R),id:`${s}-${R}`,role:"option",tabIndex:-1,"aria-selected":t===R,ref:O=>{p&&p.current&&(p.current[D.value]=O)},onMouseDown:D.disabled?null:O=>{O.preventDefault(),u(D)},disabled:D.disabled,variant:w},D))};let M=null;if(e.forEach((D,R)=>{D.creatable?I=R:D.group?(M!==D.group&&(M=D.group,j.push(H.createElement("div",{className:k.separator,key:`__mantine-divider-${R}`},H.createElement(q1,{classNames:{label:k.separatorLabel},label:D.group})))),j.push(E(D,R))):_.push(E(D,R))}),b){const D=e[I];_.push(H.createElement("div",{key:Kx(),className:k.item,"data-hovered":t===I||void 0,onMouseEnter:()=>l(I),onMouseDown:R=>{R.preventDefault(),u(D)},tabIndex:-1,ref:R=>{p&&p.current&&(p.current[D.value]=R)}},y))}return j.length>0&&_.length>0&&_.unshift(H.createElement("div",{className:k.separator,key:"empty-group-separator"},H.createElement(q1,null))),j.length>0||_.length>0?H.createElement(H.Fragment,null,j,_):H.createElement(kc,{size:m,unstyled:x,className:k.nothingFound},v)}Xx.displayName="@mantine/core/SelectItems";var LK=Object.defineProperty,kh=Object.getOwnPropertySymbols,YI=Object.prototype.hasOwnProperty,QI=Object.prototype.propertyIsEnumerable,P4=(e,t,n)=>t in e?LK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zK=(e,t)=>{for(var n in t||(t={}))YI.call(t,n)&&P4(e,n,t[n]);if(kh)for(var n of kh(t))QI.call(t,n)&&P4(e,n,t[n]);return e},FK=(e,t)=>{var n={};for(var r in e)YI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&kh)for(var r of kh(e))t.indexOf(r)<0&&QI.call(e,r)&&(n[r]=e[r]);return n};const Yx=d.forwardRef((e,t)=>{var n=e,{label:r,value:o}=n,s=FK(n,["label","value"]);return H.createElement("div",zK({ref:t},s),r||o)});Yx.displayName="@mantine/core/DefaultItem";function BK(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function ZI(...e){return t=>e.forEach(n=>BK(n,t))}function nl(...e){return d.useCallback(ZI(...e),e)}const JI=d.forwardRef((e,t)=>{const{children:n,...r}=e,o=d.Children.toArray(n),s=o.find(WK);if(s){const i=s.props.children,l=o.map(u=>u===s?d.Children.count(i)>1?d.Children.only(null):d.isValidElement(i)?i.props.children:null:u);return d.createElement(X1,rn({},r,{ref:t}),d.isValidElement(i)?d.cloneElement(i,void 0,l):null)}return d.createElement(X1,rn({},r,{ref:t}),n)});JI.displayName="Slot";const X1=d.forwardRef((e,t)=>{const{children:n,...r}=e;return d.isValidElement(n)?d.cloneElement(n,{...VK(r,n.props),ref:ZI(t,n.ref)}):d.Children.count(n)>1?d.Children.only(null):null});X1.displayName="SlotClone";const HK=({children:e})=>d.createElement(d.Fragment,null,e);function WK(e){return d.isValidElement(e)&&e.type===HK}function VK(e,t){const n={...t};for(const r in t){const o=e[r],s=t[r];/^on[A-Z]/.test(r)?o&&s?n[r]=(...l)=>{s(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...s}:r==="className"&&(n[r]=[o,s].filter(Boolean).join(" "))}return{...e,...n}}const UK=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],Hd=UK.reduce((e,t)=>{const n=d.forwardRef((r,o)=>{const{asChild:s,...i}=r,l=s?JI:t;return d.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),d.createElement(l,rn({},i,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Y1=globalThis!=null&&globalThis.document?d.useLayoutEffect:()=>{};function GK(e,t){return d.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const Wd=e=>{const{present:t,children:n}=e,r=KK(t),o=typeof n=="function"?n({present:r.isPresent}):d.Children.only(n),s=nl(r.ref,o.ref);return typeof n=="function"||r.isPresent?d.cloneElement(o,{ref:s}):null};Wd.displayName="Presence";function KK(e){const[t,n]=d.useState(),r=d.useRef({}),o=d.useRef(e),s=d.useRef("none"),i=e?"mounted":"unmounted",[l,u]=GK(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return d.useEffect(()=>{const p=cp(r.current);s.current=l==="mounted"?p:"none"},[l]),Y1(()=>{const p=r.current,h=o.current;if(h!==e){const v=s.current,b=cp(p);e?u("MOUNT"):b==="none"||(p==null?void 0:p.display)==="none"?u("UNMOUNT"):u(h&&v!==b?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,u]),Y1(()=>{if(t){const p=m=>{const b=cp(r.current).includes(m.animationName);m.target===t&&b&&Fr.flushSync(()=>u("ANIMATION_END"))},h=m=>{m.target===t&&(s.current=cp(r.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:d.useCallback(p=>{p&&(r.current=getComputedStyle(p)),n(p)},[])}}function cp(e){return(e==null?void 0:e.animationName)||"none"}function qK(e,t=[]){let n=[];function r(s,i){const l=d.createContext(i),u=n.length;n=[...n,i];function p(m){const{scope:v,children:b,...y}=m,x=(v==null?void 0:v[e][u])||l,w=d.useMemo(()=>y,Object.values(y));return d.createElement(x.Provider,{value:w},b)}function h(m,v){const b=(v==null?void 0:v[e][u])||l,y=d.useContext(b);if(y)return y;if(i!==void 0)return i;throw new Error(`\`${m}\` must be used within \`${s}\``)}return p.displayName=s+"Provider",[p,h]}const o=()=>{const s=n.map(i=>d.createContext(i));return function(l){const u=(l==null?void 0:l[e])||s;return d.useMemo(()=>({[`__scope${e}`]:{...l,[e]:u}}),[l,u])}};return o.scopeName=e,[r,XK(o,...t)]}function XK(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){const i=r.reduce((l,{useScope:u,scopeName:p})=>{const m=u(s)[`__scope${p}`];return{...l,...m}},{});return d.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}function yi(e){const t=d.useRef(e);return d.useEffect(()=>{t.current=e}),d.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}const YK=d.createContext(void 0);function QK(e){const t=d.useContext(YK);return e||t||"ltr"}function ZK(e,[t,n]){return Math.min(n,Math.max(t,e))}function Ii(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function JK(e,t){return d.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const e6="ScrollArea",[t6,E0e]=qK(e6),[eq,yo]=t6(e6),tq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...i}=e,[l,u]=d.useState(null),[p,h]=d.useState(null),[m,v]=d.useState(null),[b,y]=d.useState(null),[x,w]=d.useState(null),[k,_]=d.useState(0),[j,I]=d.useState(0),[E,M]=d.useState(!1),[D,R]=d.useState(!1),A=nl(t,T=>u(T)),O=QK(o);return d.createElement(eq,{scope:n,type:r,dir:O,scrollHideDelay:s,scrollArea:l,viewport:p,onViewportChange:h,content:m,onContentChange:v,scrollbarX:b,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:M,scrollbarY:x,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:R,onCornerWidthChange:_,onCornerHeightChange:I},d.createElement(Hd.div,rn({dir:O},i,{ref:A,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":j+"px",...e.style}})))}),nq="ScrollAreaViewport",rq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,...o}=e,s=yo(nq,n),i=d.useRef(null),l=nl(t,i,s.onViewportChange);return d.createElement(d.Fragment,null,d.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"}}),d.createElement(Hd.div,rn({"data-radix-scroll-area-viewport":""},o,{ref:l,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style}}),d.createElement("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"}},r)))}),fa="ScrollAreaScrollbar",oq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=yo(fa,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=o,l=e.orientation==="horizontal";return d.useEffect(()=>(l?s(!0):i(!0),()=>{l?s(!1):i(!1)}),[l,s,i]),o.type==="hover"?d.createElement(sq,rn({},r,{ref:t,forceMount:n})):o.type==="scroll"?d.createElement(aq,rn({},r,{ref:t,forceMount:n})):o.type==="auto"?d.createElement(n6,rn({},r,{ref:t,forceMount:n})):o.type==="always"?d.createElement(Qx,rn({},r,{ref:t})):null}),sq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=yo(fa,e.__scopeScrollArea),[s,i]=d.useState(!1);return d.useEffect(()=>{const l=o.scrollArea;let u=0;if(l){const p=()=>{window.clearTimeout(u),i(!0)},h=()=>{u=window.setTimeout(()=>i(!1),o.scrollHideDelay)};return l.addEventListener("pointerenter",p),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(u),l.removeEventListener("pointerenter",p),l.removeEventListener("pointerleave",h)}}},[o.scrollArea,o.scrollHideDelay]),d.createElement(Wd,{present:n||s},d.createElement(n6,rn({"data-state":s?"visible":"hidden"},r,{ref:t})))}),aq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=yo(fa,e.__scopeScrollArea),s=e.orientation==="horizontal",i=Qm(()=>u("SCROLL_END"),100),[l,u]=JK("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return d.useEffect(()=>{if(l==="idle"){const p=window.setTimeout(()=>u("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(p)}},[l,o.scrollHideDelay,u]),d.useEffect(()=>{const p=o.viewport,h=s?"scrollLeft":"scrollTop";if(p){let m=p[h];const v=()=>{const b=p[h];m!==b&&(u("SCROLL"),i()),m=b};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[o.viewport,s,u,i]),d.createElement(Wd,{present:n||l!=="hidden"},d.createElement(Qx,rn({"data-state":l==="hidden"?"hidden":"visible"},r,{ref:t,onPointerEnter:Ii(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:Ii(e.onPointerLeave,()=>u("POINTER_LEAVE"))})))}),n6=d.forwardRef((e,t)=>{const n=yo(fa,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,i]=d.useState(!1),l=e.orientation==="horizontal",u=Qm(()=>{if(n.viewport){const p=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=e,o=yo(fa,e.__scopeScrollArea),s=d.useRef(null),i=d.useRef(0),[l,u]=d.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=a6(l.viewport,l.content),h={...r,sizes:l,onSizesChange:u,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:v=>i.current=v};function m(v,b){return hq(v,i.current,l,b)}return n==="horizontal"?d.createElement(iq,rn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollLeft,b=I4(v,l,o.dir);s.current.style.transform=`translate3d(${b}px, 0, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollLeft=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollLeft=m(v,o.dir))}})):n==="vertical"?d.createElement(lq,rn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollTop,b=I4(v,l);s.current.style.transform=`translate3d(0, ${b}px, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollTop=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollTop=m(v))}})):null}),iq=d.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=yo(fa,e.__scopeScrollArea),[i,l]=d.useState(),u=d.useRef(null),p=nl(t,u,s.onScrollbarXChange);return d.useEffect(()=>{u.current&&l(getComputedStyle(u.current))},[u]),d.createElement(o6,rn({"data-orientation":"horizontal"},o,{ref:p,sizes:n,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Ym(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.x),onDragScroll:h=>e.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(s.viewport){const v=s.viewport.scrollLeft+h.deltaX;e.onWheelScroll(v),l6(v,m)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:_h(i.paddingLeft),paddingEnd:_h(i.paddingRight)}})}}))}),lq=d.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=yo(fa,e.__scopeScrollArea),[i,l]=d.useState(),u=d.useRef(null),p=nl(t,u,s.onScrollbarYChange);return d.useEffect(()=>{u.current&&l(getComputedStyle(u.current))},[u]),d.createElement(o6,rn({"data-orientation":"vertical"},o,{ref:p,sizes:n,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Ym(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.y),onDragScroll:h=>e.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(s.viewport){const v=s.viewport.scrollTop+h.deltaY;e.onWheelScroll(v),l6(v,m)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:_h(i.paddingTop),paddingEnd:_h(i.paddingBottom)}})}}))}),[cq,r6]=t6(fa),o6=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:i,onThumbPointerDown:l,onThumbPositionChange:u,onDragScroll:p,onWheelScroll:h,onResize:m,...v}=e,b=yo(fa,n),[y,x]=d.useState(null),w=nl(t,A=>x(A)),k=d.useRef(null),_=d.useRef(""),j=b.viewport,I=r.content-r.viewport,E=yi(h),M=yi(u),D=Qm(m,10);function R(A){if(k.current){const O=A.clientX-k.current.left,T=A.clientY-k.current.top;p({x:O,y:T})}}return d.useEffect(()=>{const A=O=>{const T=O.target;(y==null?void 0:y.contains(T))&&E(O,I)};return document.addEventListener("wheel",A,{passive:!1}),()=>document.removeEventListener("wheel",A,{passive:!1})},[j,y,I,E]),d.useEffect(M,[r,M]),_c(y,D),_c(b.content,D),d.createElement(cq,{scope:n,scrollbar:y,hasThumb:o,onThumbChange:yi(s),onThumbPointerUp:yi(i),onThumbPositionChange:M,onThumbPointerDown:yi(l)},d.createElement(Hd.div,rn({},v,{ref:w,style:{position:"absolute",...v.style},onPointerDown:Ii(e.onPointerDown,A=>{A.button===0&&(A.target.setPointerCapture(A.pointerId),k.current=y.getBoundingClientRect(),_.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",R(A))}),onPointerMove:Ii(e.onPointerMove,R),onPointerUp:Ii(e.onPointerUp,A=>{const O=A.target;O.hasPointerCapture(A.pointerId)&&O.releasePointerCapture(A.pointerId),document.body.style.webkitUserSelect=_.current,k.current=null})})))}),Q1="ScrollAreaThumb",uq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=r6(Q1,e.__scopeScrollArea);return d.createElement(Wd,{present:n||o.hasThumb},d.createElement(dq,rn({ref:t},r)))}),dq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=yo(Q1,n),i=r6(Q1,n),{onThumbPositionChange:l}=i,u=nl(t,m=>i.onThumbChange(m)),p=d.useRef(),h=Qm(()=>{p.current&&(p.current(),p.current=void 0)},100);return d.useEffect(()=>{const m=s.viewport;if(m){const v=()=>{if(h(),!p.current){const b=mq(m,l);p.current=b,l()}};return l(),m.addEventListener("scroll",v),()=>m.removeEventListener("scroll",v)}},[s.viewport,h,l]),d.createElement(Hd.div,rn({"data-state":i.hasThumb?"visible":"hidden"},o,{ref:u,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:Ii(e.onPointerDownCapture,m=>{const b=m.target.getBoundingClientRect(),y=m.clientX-b.left,x=m.clientY-b.top;i.onThumbPointerDown({x:y,y:x})}),onPointerUp:Ii(e.onPointerUp,i.onThumbPointerUp)}))}),s6="ScrollAreaCorner",fq=d.forwardRef((e,t)=>{const n=yo(s6,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?d.createElement(pq,rn({},e,{ref:t})):null}),pq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=yo(s6,n),[s,i]=d.useState(0),[l,u]=d.useState(0),p=!!(s&&l);return _c(o.scrollbarX,()=>{var h;const m=((h=o.scrollbarX)===null||h===void 0?void 0:h.offsetHeight)||0;o.onCornerHeightChange(m),u(m)}),_c(o.scrollbarY,()=>{var h;const m=((h=o.scrollbarY)===null||h===void 0?void 0:h.offsetWidth)||0;o.onCornerWidthChange(m),i(m)}),p?d.createElement(Hd.div,rn({},r,{ref:t,style:{width:s,height:l,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}})):null});function _h(e){return e?parseInt(e,10):0}function a6(e,t){const n=e/t;return isNaN(n)?0:n}function Ym(e){const t=a6(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function hq(e,t,n,r="ltr"){const o=Ym(n),s=o/2,i=t||s,l=o-i,u=n.scrollbar.paddingStart+i,p=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return i6([u,p],m)(e)}function I4(e,t,n="ltr"){const r=Ym(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,i=t.content-t.viewport,l=s-r,u=n==="ltr"?[0,i]:[i*-1,0],p=ZK(e,u);return i6([0,i],[0,l])(p)}function i6(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function l6(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},i=n.left!==s.left,l=n.top!==s.top;(i||l)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function Qm(e,t){const n=yi(e),r=d.useRef(0);return d.useEffect(()=>()=>window.clearTimeout(r.current),[]),d.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function _c(e,t){const n=yi(t);Y1(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}const gq=tq,vq=rq,E4=oq,M4=uq,bq=fq;var xq=or((e,{scrollbarSize:t,offsetScrollbars:n,scrollbarHovered:r,hidden:o})=>({root:{overflow:"hidden"},viewport:{width:"100%",height:"100%",paddingRight:n?Oe(t):void 0,paddingBottom:n?Oe(t):void 0},scrollbar:{display:o?"none":"flex",userSelect:"none",touchAction:"none",boxSizing:"border-box",padding:`calc(${Oe(t)} / 5)`,transition:"background-color 150ms ease, opacity 150ms ease","&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[8]:e.colors.gray[0],[`& .${NS("thumb")}`]:{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.5):e.fn.rgba(e.black,.5)}},'&[data-orientation="vertical"]':{width:Oe(t)},'&[data-orientation="horizontal"]':{flexDirection:"column",height:Oe(t)},'&[data-state="hidden"]':{display:"none",opacity:0}},thumb:{ref:NS("thumb"),flex:1,backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.4):e.fn.rgba(e.black,.4),borderRadius:Oe(t),position:"relative",transition:"background-color 150ms ease",display:o?"none":void 0,overflow:"hidden","&::before":{content:'""',position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"100%",height:"100%",minWidth:Oe(44),minHeight:Oe(44)}},corner:{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],transition:"opacity 150ms ease",opacity:r?1:0,display:o?"none":void 0}}));const yq=xq;var Cq=Object.defineProperty,wq=Object.defineProperties,Sq=Object.getOwnPropertyDescriptors,jh=Object.getOwnPropertySymbols,c6=Object.prototype.hasOwnProperty,u6=Object.prototype.propertyIsEnumerable,O4=(e,t,n)=>t in e?Cq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Z1=(e,t)=>{for(var n in t||(t={}))c6.call(t,n)&&O4(e,n,t[n]);if(jh)for(var n of jh(t))u6.call(t,n)&&O4(e,n,t[n]);return e},d6=(e,t)=>wq(e,Sq(t)),f6=(e,t)=>{var n={};for(var r in e)c6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&jh)for(var r of jh(e))t.indexOf(r)<0&&u6.call(e,r)&&(n[r]=e[r]);return n};const p6={scrollbarSize:12,scrollHideDelay:1e3,type:"hover",offsetScrollbars:!1},Zm=d.forwardRef((e,t)=>{const n=Sn("ScrollArea",p6,e),{children:r,className:o,classNames:s,styles:i,scrollbarSize:l,scrollHideDelay:u,type:p,dir:h,offsetScrollbars:m,viewportRef:v,onScrollPositionChange:b,unstyled:y,variant:x,viewportProps:w}=n,k=f6(n,["children","className","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","variant","viewportProps"]),[_,j]=d.useState(!1),I=ua(),{classes:E,cx:M}=yq({scrollbarSize:l,offsetScrollbars:m,scrollbarHovered:_,hidden:p==="never"},{name:"ScrollArea",classNames:s,styles:i,unstyled:y,variant:x});return H.createElement(gq,{type:p==="never"?"always":p,scrollHideDelay:u,dir:h||I.dir,ref:t,asChild:!0},H.createElement(Or,Z1({className:M(E.root,o)},k),H.createElement(vq,d6(Z1({},w),{className:E.viewport,ref:v,onScroll:typeof b=="function"?({currentTarget:D})=>b({x:D.scrollLeft,y:D.scrollTop}):void 0}),r),H.createElement(E4,{orientation:"horizontal",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1)},H.createElement(M4,{className:E.thumb})),H.createElement(E4,{orientation:"vertical",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1)},H.createElement(M4,{className:E.thumb})),H.createElement(bq,{className:E.corner})))}),h6=d.forwardRef((e,t)=>{const n=Sn("ScrollAreaAutosize",p6,e),{children:r,classNames:o,styles:s,scrollbarSize:i,scrollHideDelay:l,type:u,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,sx:y,variant:x,viewportProps:w}=n,k=f6(n,["children","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","sx","variant","viewportProps"]);return H.createElement(Or,d6(Z1({},k),{ref:t,sx:[{display:"flex"},...tI(y)]}),H.createElement(Or,{sx:{display:"flex",flexDirection:"column",flex:1}},H.createElement(Zm,{classNames:o,styles:s,scrollHideDelay:l,scrollbarSize:i,type:u,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,variant:x,viewportProps:w},r)))});h6.displayName="@mantine/core/ScrollAreaAutosize";Zm.displayName="@mantine/core/ScrollArea";Zm.Autosize=h6;const m6=Zm;var kq=Object.defineProperty,_q=Object.defineProperties,jq=Object.getOwnPropertyDescriptors,Ph=Object.getOwnPropertySymbols,g6=Object.prototype.hasOwnProperty,v6=Object.prototype.propertyIsEnumerable,D4=(e,t,n)=>t in e?kq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,R4=(e,t)=>{for(var n in t||(t={}))g6.call(t,n)&&D4(e,n,t[n]);if(Ph)for(var n of Ph(t))v6.call(t,n)&&D4(e,n,t[n]);return e},Pq=(e,t)=>_q(e,jq(t)),Iq=(e,t)=>{var n={};for(var r in e)g6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ph)for(var r of Ph(e))t.indexOf(r)<0&&v6.call(e,r)&&(n[r]=e[r]);return n};const Jm=d.forwardRef((e,t)=>{var n=e,{style:r}=n,o=Iq(n,["style"]);return H.createElement(m6,Pq(R4({},o),{style:R4({width:"100%"},r),viewportProps:{tabIndex:-1},viewportRef:t}),o.children)});Jm.displayName="@mantine/core/SelectScrollArea";var Eq=or(()=>({dropdown:{},itemsWrapper:{padding:Oe(4),display:"flex",width:"100%",boxSizing:"border-box"}}));const Mq=Eq;function Bc(e){return e.split("-")[1]}function Zx(e){return e==="y"?"height":"width"}function Lo(e){return e.split("-")[0]}function ti(e){return["top","bottom"].includes(Lo(e))?"x":"y"}function A4(e,t,n){let{reference:r,floating:o}=e;const s=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,l=ti(t),u=Zx(l),p=r[u]/2-o[u]/2,h=l==="x";let m;switch(Lo(t)){case"top":m={x:s,y:r.y-o.height};break;case"bottom":m={x:s,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:i};break;case"left":m={x:r.x-o.width,y:i};break;default:m={x:r.x,y:r.y}}switch(Bc(t)){case"start":m[l]-=p*(n&&h?-1:1);break;case"end":m[l]+=p*(n&&h?-1:1)}return m}const Oq=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=n,l=s.filter(Boolean),u=await(i.isRTL==null?void 0:i.isRTL(t));let p=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:h,y:m}=A4(p,r,u),v=r,b={},y=0;for(let x=0;x({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:s,platform:i,elements:l}=t,{element:u,padding:p=0}=na(e,t)||{};if(u==null)return{};const h=Jx(p),m={x:n,y:r},v=ti(o),b=Zx(v),y=await i.getDimensions(u),x=v==="y",w=x?"top":"left",k=x?"bottom":"right",_=x?"clientHeight":"clientWidth",j=s.reference[b]+s.reference[v]-m[v]-s.floating[b],I=m[v]-s.reference[v],E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(u));let M=E?E[_]:0;M&&await(i.isElement==null?void 0:i.isElement(E))||(M=l.floating[_]||s.floating[b]);const D=j/2-I/2,R=M/2-y[b]/2-1,A=qa(h[w],R),O=qa(h[k],R),T=A,K=M-y[b]-O,F=M/2-y[b]/2+D,V=J1(T,F,K),X=Bc(o)!=null&&F!=V&&s.reference[b]/2-(Fe.concat(t,t+"-start",t+"-end"),[]);const Rq={left:"right",right:"left",bottom:"top",top:"bottom"};function Ih(e){return e.replace(/left|right|bottom|top/g,t=>Rq[t])}function Aq(e,t,n){n===void 0&&(n=!1);const r=Bc(e),o=ti(e),s=Zx(o);let i=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=Ih(i)),{main:i,cross:Ih(i)}}const Nq={start:"end",end:"start"};function Sv(e){return e.replace(/start|end/g,t=>Nq[t])}const Tq=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:s,initialPlacement:i,platform:l,elements:u}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:b="none",flipAlignment:y=!0,...x}=na(e,t),w=Lo(r),k=Lo(i)===i,_=await(l.isRTL==null?void 0:l.isRTL(u.floating)),j=m||(k||!y?[Ih(i)]:function(T){const K=Ih(T);return[Sv(T),K,Sv(K)]}(i));m||b==="none"||j.push(...function(T,K,F,V){const X=Bc(T);let W=function(z,Y,B){const q=["left","right"],re=["right","left"],Q=["top","bottom"],le=["bottom","top"];switch(z){case"top":case"bottom":return B?Y?re:q:Y?q:re;case"left":case"right":return Y?Q:le;default:return[]}}(Lo(T),F==="start",V);return X&&(W=W.map(z=>z+"-"+X),K&&(W=W.concat(W.map(Sv)))),W}(i,y,b,_));const I=[i,...j],E=await ey(t,x),M=[];let D=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&M.push(E[w]),h){const{main:T,cross:K}=Aq(r,s,_);M.push(E[T],E[K])}if(D=[...D,{placement:r,overflows:M}],!M.every(T=>T<=0)){var R,A;const T=(((R=o.flip)==null?void 0:R.index)||0)+1,K=I[T];if(K)return{data:{index:T,overflows:D},reset:{placement:K}};let F=(A=D.filter(V=>V.overflows[0]<=0).sort((V,X)=>V.overflows[1]-X.overflows[1])[0])==null?void 0:A.placement;if(!F)switch(v){case"bestFit":{var O;const V=(O=D.map(X=>[X.placement,X.overflows.filter(W=>W>0).reduce((W,z)=>W+z,0)]).sort((X,W)=>X[1]-W[1])[0])==null?void 0:O[0];V&&(F=V);break}case"initialPlacement":F=i}if(r!==F)return{reset:{placement:F}}}return{}}}};function T4(e){const t=qa(...e.map(r=>r.left)),n=qa(...e.map(r=>r.top));return{x:t,y:n,width:ls(...e.map(r=>r.right))-t,height:ls(...e.map(r=>r.bottom))-n}}const $q=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){const{placement:n,elements:r,rects:o,platform:s,strategy:i}=t,{padding:l=2,x:u,y:p}=na(e,t),h=Array.from(await(s.getClientRects==null?void 0:s.getClientRects(r.reference))||[]),m=function(x){const w=x.slice().sort((j,I)=>j.y-I.y),k=[];let _=null;for(let j=0;j_.height/2?k.push([I]):k[k.length-1].push(I),_=I}return k.map(j=>jc(T4(j)))}(h),v=jc(T4(h)),b=Jx(l),y=await s.getElementRects({reference:{getBoundingClientRect:function(){if(m.length===2&&m[0].left>m[1].right&&u!=null&&p!=null)return m.find(x=>u>x.left-b.left&&ux.top-b.top&&p=2){if(ti(n)==="x"){const E=m[0],M=m[m.length-1],D=Lo(n)==="top",R=E.top,A=M.bottom,O=D?E.left:M.left,T=D?E.right:M.right;return{top:R,bottom:A,left:O,right:T,width:T-O,height:A-R,x:O,y:R}}const x=Lo(n)==="left",w=ls(...m.map(E=>E.right)),k=qa(...m.map(E=>E.left)),_=m.filter(E=>x?E.left===k:E.right===w),j=_[0].top,I=_[_.length-1].bottom;return{top:j,bottom:I,left:k,right:w,width:w-k,height:I-j,x:k,y:j}}return v}},floating:r.floating,strategy:i});return o.reference.x!==y.reference.x||o.reference.y!==y.reference.y||o.reference.width!==y.reference.width||o.reference.height!==y.reference.height?{reset:{rects:y}}:{}}}},Lq=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(s,i){const{placement:l,platform:u,elements:p}=s,h=await(u.isRTL==null?void 0:u.isRTL(p.floating)),m=Lo(l),v=Bc(l),b=ti(l)==="x",y=["left","top"].includes(m)?-1:1,x=h&&b?-1:1,w=na(i,s);let{mainAxis:k,crossAxis:_,alignmentAxis:j}=typeof w=="number"?{mainAxis:w,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...w};return v&&typeof j=="number"&&(_=v==="end"?-1*j:j),b?{x:_*x,y:k*y}:{x:k*y,y:_*x}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function b6(e){return e==="x"?"y":"x"}const zq=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:s=!0,crossAxis:i=!1,limiter:l={fn:w=>{let{x:k,y:_}=w;return{x:k,y:_}}},...u}=na(e,t),p={x:n,y:r},h=await ey(t,u),m=ti(Lo(o)),v=b6(m);let b=p[m],y=p[v];if(s){const w=m==="y"?"bottom":"right";b=J1(b+h[m==="y"?"top":"left"],b,b-h[w])}if(i){const w=v==="y"?"bottom":"right";y=J1(y+h[v==="y"?"top":"left"],y,y-h[w])}const x=l.fn({...t,[m]:b,[v]:y});return{...x,data:{x:x.x-n,y:x.y-r}}}}},Fq=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:i}=t,{offset:l=0,mainAxis:u=!0,crossAxis:p=!0}=na(e,t),h={x:n,y:r},m=ti(o),v=b6(m);let b=h[m],y=h[v];const x=na(l,t),w=typeof x=="number"?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(u){const j=m==="y"?"height":"width",I=s.reference[m]-s.floating[j]+w.mainAxis,E=s.reference[m]+s.reference[j]-w.mainAxis;bE&&(b=E)}if(p){var k,_;const j=m==="y"?"width":"height",I=["top","left"].includes(Lo(o)),E=s.reference[v]-s.floating[j]+(I&&((k=i.offset)==null?void 0:k[v])||0)+(I?0:w.crossAxis),M=s.reference[v]+s.reference[j]+(I?0:((_=i.offset)==null?void 0:_[v])||0)-(I?w.crossAxis:0);yM&&(y=M)}return{[m]:b,[v]:y}}}},Bq=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:s}=t,{apply:i=()=>{},...l}=na(e,t),u=await ey(t,l),p=Lo(n),h=Bc(n),m=ti(n)==="x",{width:v,height:b}=r.floating;let y,x;p==="top"||p==="bottom"?(y=p,x=h===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(x=p,y=h==="end"?"top":"bottom");const w=b-u[y],k=v-u[x],_=!t.middlewareData.shift;let j=w,I=k;if(m){const M=v-u.left-u.right;I=h||_?qa(k,M):M}else{const M=b-u.top-u.bottom;j=h||_?qa(w,M):M}if(_&&!h){const M=ls(u.left,0),D=ls(u.right,0),R=ls(u.top,0),A=ls(u.bottom,0);m?I=v-2*(M!==0||D!==0?M+D:ls(u.left,u.right)):j=b-2*(R!==0||A!==0?R+A:ls(u.top,u.bottom))}await i({...t,availableWidth:I,availableHeight:j});const E=await o.getDimensions(s.floating);return v!==E.width||b!==E.height?{reset:{rects:!0}}:{}}}};function Hr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function vs(e){return Hr(e).getComputedStyle(e)}function x6(e){return e instanceof Hr(e).Node}function Xa(e){return x6(e)?(e.nodeName||"").toLowerCase():"#document"}function Uo(e){return e instanceof HTMLElement||e instanceof Hr(e).HTMLElement}function $4(e){return typeof ShadowRoot<"u"&&(e instanceof Hr(e).ShadowRoot||e instanceof ShadowRoot)}function id(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=vs(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Hq(e){return["table","td","th"].includes(Xa(e))}function eb(e){const t=ty(),n=vs(e);return n.transform!=="none"||n.perspective!=="none"||!!n.containerType&&n.containerType!=="normal"||!t&&!!n.backdropFilter&&n.backdropFilter!=="none"||!t&&!!n.filter&&n.filter!=="none"||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function ty(){return!(typeof CSS>"u"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function eg(e){return["html","body","#document"].includes(Xa(e))}const tb=Math.min,ic=Math.max,Eh=Math.round,up=Math.floor,Ya=e=>({x:e,y:e});function y6(e){const t=vs(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Uo(e),s=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=Eh(n)!==s||Eh(r)!==i;return l&&(n=s,r=i),{width:n,height:r,$:l}}function Ys(e){return e instanceof Element||e instanceof Hr(e).Element}function ny(e){return Ys(e)?e:e.contextElement}function lc(e){const t=ny(e);if(!Uo(t))return Ya(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=y6(t);let i=(s?Eh(n.width):n.width)/r,l=(s?Eh(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const Wq=Ya(0);function C6(e){const t=Hr(e);return ty()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Wq}function Vi(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=ny(e);let i=Ya(1);t&&(r?Ys(r)&&(i=lc(r)):i=lc(e));const l=function(v,b,y){return b===void 0&&(b=!1),!(!y||b&&y!==Hr(v))&&b}(s,n,r)?C6(s):Ya(0);let u=(o.left+l.x)/i.x,p=(o.top+l.y)/i.y,h=o.width/i.x,m=o.height/i.y;if(s){const v=Hr(s),b=r&&Ys(r)?Hr(r):r;let y=v.frameElement;for(;y&&r&&b!==v;){const x=lc(y),w=y.getBoundingClientRect(),k=getComputedStyle(y),_=w.left+(y.clientLeft+parseFloat(k.paddingLeft))*x.x,j=w.top+(y.clientTop+parseFloat(k.paddingTop))*x.y;u*=x.x,p*=x.y,h*=x.x,m*=x.y,u+=_,p+=j,y=Hr(y).frameElement}}return jc({width:h,height:m,x:u,y:p})}function tg(e){return Ys(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Qs(e){var t;return(t=(x6(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function w6(e){return Vi(Qs(e)).left+tg(e).scrollLeft}function Pc(e){if(Xa(e)==="html")return e;const t=e.assignedSlot||e.parentNode||$4(e)&&e.host||Qs(e);return $4(t)?t.host:t}function S6(e){const t=Pc(e);return eg(t)?e.ownerDocument?e.ownerDocument.body:e.body:Uo(t)&&id(t)?t:S6(t)}function Mh(e,t){var n;t===void 0&&(t=[]);const r=S6(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Hr(r);return o?t.concat(s,s.visualViewport||[],id(r)?r:[]):t.concat(r,Mh(r))}function L4(e,t,n){let r;if(t==="viewport")r=function(o,s){const i=Hr(o),l=Qs(o),u=i.visualViewport;let p=l.clientWidth,h=l.clientHeight,m=0,v=0;if(u){p=u.width,h=u.height;const b=ty();(!b||b&&s==="fixed")&&(m=u.offsetLeft,v=u.offsetTop)}return{width:p,height:h,x:m,y:v}}(e,n);else if(t==="document")r=function(o){const s=Qs(o),i=tg(o),l=o.ownerDocument.body,u=ic(s.scrollWidth,s.clientWidth,l.scrollWidth,l.clientWidth),p=ic(s.scrollHeight,s.clientHeight,l.scrollHeight,l.clientHeight);let h=-i.scrollLeft+w6(o);const m=-i.scrollTop;return vs(l).direction==="rtl"&&(h+=ic(s.clientWidth,l.clientWidth)-u),{width:u,height:p,x:h,y:m}}(Qs(e));else if(Ys(t))r=function(o,s){const i=Vi(o,!0,s==="fixed"),l=i.top+o.clientTop,u=i.left+o.clientLeft,p=Uo(o)?lc(o):Ya(1);return{width:o.clientWidth*p.x,height:o.clientHeight*p.y,x:u*p.x,y:l*p.y}}(t,n);else{const o=C6(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return jc(r)}function k6(e,t){const n=Pc(e);return!(n===t||!Ys(n)||eg(n))&&(vs(n).position==="fixed"||k6(n,t))}function Vq(e,t,n){const r=Uo(t),o=Qs(t),s=n==="fixed",i=Vi(e,!0,s,t);let l={scrollLeft:0,scrollTop:0};const u=Ya(0);if(r||!r&&!s)if((Xa(t)!=="body"||id(o))&&(l=tg(t)),Uo(t)){const p=Vi(t,!0,s,t);u.x=p.x+t.clientLeft,u.y=p.y+t.clientTop}else o&&(u.x=w6(o));return{x:i.left+l.scrollLeft-u.x,y:i.top+l.scrollTop-u.y,width:i.width,height:i.height}}function z4(e,t){return Uo(e)&&vs(e).position!=="fixed"?t?t(e):e.offsetParent:null}function F4(e,t){const n=Hr(e);if(!Uo(e))return n;let r=z4(e,t);for(;r&&Hq(r)&&vs(r).position==="static";)r=z4(r,t);return r&&(Xa(r)==="html"||Xa(r)==="body"&&vs(r).position==="static"&&!eb(r))?n:r||function(o){let s=Pc(o);for(;Uo(s)&&!eg(s);){if(eb(s))return s;s=Pc(s)}return null}(e)||n}const Uq={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Uo(n),s=Qs(n);if(n===s)return t;let i={scrollLeft:0,scrollTop:0},l=Ya(1);const u=Ya(0);if((o||!o&&r!=="fixed")&&((Xa(n)!=="body"||id(s))&&(i=tg(n)),Uo(n))){const p=Vi(n);l=lc(n),u.x=p.x+n.clientLeft,u.y=p.y+n.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+u.x,y:t.y*l.y-i.scrollTop*l.y+u.y}},getDocumentElement:Qs,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?function(u,p){const h=p.get(u);if(h)return h;let m=Mh(u).filter(x=>Ys(x)&&Xa(x)!=="body"),v=null;const b=vs(u).position==="fixed";let y=b?Pc(u):u;for(;Ys(y)&&!eg(y);){const x=vs(y),w=eb(y);w||x.position!=="fixed"||(v=null),(b?!w&&!v:!w&&x.position==="static"&&v&&["absolute","fixed"].includes(v.position)||id(y)&&!w&&k6(u,y))?m=m.filter(k=>k!==y):v=x,y=Pc(y)}return p.set(u,m),m}(t,this._c):[].concat(n),r],i=s[0],l=s.reduce((u,p)=>{const h=L4(t,p,o);return u.top=ic(h.top,u.top),u.right=tb(h.right,u.right),u.bottom=tb(h.bottom,u.bottom),u.left=ic(h.left,u.left),u},L4(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:F4,getElementRects:async function(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||F4,s=this.getDimensions;return{reference:Vq(t,await o(n),r),floating:{x:0,y:0,...await s(n)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){return y6(e)},getScale:lc,isElement:Ys,isRTL:function(e){return getComputedStyle(e).direction==="rtl"}};function Gq(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:u=!1}=r,p=ny(e),h=o||s?[...p?Mh(p):[],...Mh(t)]:[];h.forEach(w=>{o&&w.addEventListener("scroll",n,{passive:!0}),s&&w.addEventListener("resize",n)});const m=p&&l?function(w,k){let _,j=null;const I=Qs(w);function E(){clearTimeout(_),j&&j.disconnect(),j=null}return function M(D,R){D===void 0&&(D=!1),R===void 0&&(R=1),E();const{left:A,top:O,width:T,height:K}=w.getBoundingClientRect();if(D||k(),!T||!K)return;const F={rootMargin:-up(O)+"px "+-up(I.clientWidth-(A+T))+"px "+-up(I.clientHeight-(O+K))+"px "+-up(A)+"px",threshold:ic(0,tb(1,R))||1};let V=!0;function X(W){const z=W[0].intersectionRatio;if(z!==R){if(!V)return M();z?M(!1,z):_=setTimeout(()=>{M(!1,1e-7)},100)}V=!1}try{j=new IntersectionObserver(X,{...F,root:I.ownerDocument})}catch{j=new IntersectionObserver(X,F)}j.observe(w)}(!0),E}(p,n):null;let v,b=-1,y=null;i&&(y=new ResizeObserver(w=>{let[k]=w;k&&k.target===p&&y&&(y.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{y&&y.observe(t)})),n()}),p&&!u&&y.observe(p),y.observe(t));let x=u?Vi(e):null;return u&&function w(){const k=Vi(e);!x||k.x===x.x&&k.y===x.y&&k.width===x.width&&k.height===x.height||n(),x=k,v=requestAnimationFrame(w)}(),n(),()=>{h.forEach(w=>{o&&w.removeEventListener("scroll",n),s&&w.removeEventListener("resize",n)}),m&&m(),y&&y.disconnect(),y=null,u&&cancelAnimationFrame(v)}}const Kq=(e,t,n)=>{const r=new Map,o={platform:Uq,...n},s={...o.platform,_c:r};return Oq(e,t,{...o,platform:s})},qq=e=>{const{element:t,padding:n}=e;function r(o){return Object.prototype.hasOwnProperty.call(o,"current")}return{name:"arrow",options:e,fn(o){return r(t)?t.current!=null?N4({element:t.current,padding:n}).fn(o):{}:t?N4({element:t,padding:n}).fn(o):{}}}};var Fp=typeof document<"u"?d.useLayoutEffect:d.useEffect;function Oh(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Oh(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const s=o[r];if(!(s==="_owner"&&e.$$typeof)&&!Oh(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function B4(e){const t=d.useRef(e);return Fp(()=>{t.current=e}),t}function Xq(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,whileElementsMounted:s,open:i}=e,[l,u]=d.useState({x:null,y:null,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=d.useState(r);Oh(p,r)||h(r);const m=d.useRef(null),v=d.useRef(null),b=d.useRef(l),y=B4(s),x=B4(o),[w,k]=d.useState(null),[_,j]=d.useState(null),I=d.useCallback(O=>{m.current!==O&&(m.current=O,k(O))},[]),E=d.useCallback(O=>{v.current!==O&&(v.current=O,j(O))},[]),M=d.useCallback(()=>{if(!m.current||!v.current)return;const O={placement:t,strategy:n,middleware:p};x.current&&(O.platform=x.current),Kq(m.current,v.current,O).then(T=>{const K={...T,isPositioned:!0};D.current&&!Oh(b.current,K)&&(b.current=K,Fr.flushSync(()=>{u(K)}))})},[p,t,n,x]);Fp(()=>{i===!1&&b.current.isPositioned&&(b.current.isPositioned=!1,u(O=>({...O,isPositioned:!1})))},[i]);const D=d.useRef(!1);Fp(()=>(D.current=!0,()=>{D.current=!1}),[]),Fp(()=>{if(w&&_){if(y.current)return y.current(w,_,M);M()}},[w,_,M,y]);const R=d.useMemo(()=>({reference:m,floating:v,setReference:I,setFloating:E}),[I,E]),A=d.useMemo(()=>({reference:w,floating:_}),[w,_]);return d.useMemo(()=>({...l,update:M,refs:R,elements:A,reference:I,floating:E}),[l,M,R,A,I,E])}var Yq=typeof document<"u"?d.useLayoutEffect:d.useEffect;function Qq(){const e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(o=>o(n))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){e.set(t,(e.get(t)||[]).filter(r=>r!==n))}}}const Zq=d.createContext(null),Jq=()=>d.useContext(Zq);function eX(e){return(e==null?void 0:e.ownerDocument)||document}function tX(e){return eX(e).defaultView||window}function dp(e){return e?e instanceof tX(e).Element:!1}const nX=Tb["useInsertionEffect".toString()],rX=nX||(e=>e());function oX(e){const t=d.useRef(()=>{});return rX(()=>{t.current=e}),d.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;oQq())[0],[p,h]=d.useState(null),m=d.useCallback(k=>{const _=dp(k)?{getBoundingClientRect:()=>k.getBoundingClientRect(),contextElement:k}:k;o.refs.setReference(_)},[o.refs]),v=d.useCallback(k=>{(dp(k)||k===null)&&(i.current=k,h(k)),(dp(o.refs.reference.current)||o.refs.reference.current===null||k!==null&&!dp(k))&&o.refs.setReference(k)},[o.refs]),b=d.useMemo(()=>({...o.refs,setReference:v,setPositionReference:m,domReference:i}),[o.refs,v,m]),y=d.useMemo(()=>({...o.elements,domReference:p}),[o.elements,p]),x=oX(n),w=d.useMemo(()=>({...o,refs:b,elements:y,dataRef:l,nodeId:r,events:u,open:t,onOpenChange:x}),[o,r,u,t,x,b,y]);return Yq(()=>{const k=s==null?void 0:s.nodesRef.current.find(_=>_.id===r);k&&(k.context=w)}),d.useMemo(()=>({...o,context:w,refs:b,reference:v,positionReference:m}),[o,b,w,v,m])}function aX({opened:e,floating:t,position:n,positionDependencies:r}){const[o,s]=d.useState(0);d.useEffect(()=>{if(t.refs.reference.current&&t.refs.floating.current)return Gq(t.refs.reference.current,t.refs.floating.current,t.update)},[t.refs.reference.current,t.refs.floating.current,e,o,n]),$o(()=>{t.update()},r),$o(()=>{s(i=>i+1)},[e])}function iX(e){const t=[Lq(e.offset)];return e.middlewares.shift&&t.push(zq({limiter:Fq()})),e.middlewares.flip&&t.push(Tq()),e.middlewares.inline&&t.push($q()),t.push(qq({element:e.arrowRef,padding:e.arrowOffset})),t}function lX(e){const[t,n]=ad({value:e.opened,defaultValue:e.defaultOpened,finalValue:!1,onChange:e.onChange}),r=()=>{var i;(i=e.onClose)==null||i.call(e),n(!1)},o=()=>{var i,l;t?((i=e.onClose)==null||i.call(e),n(!1)):((l=e.onOpen)==null||l.call(e),n(!0))},s=sX({placement:e.position,middleware:[...iX(e),...e.width==="target"?[Bq({apply({rects:i}){var l,u;Object.assign((u=(l=s.refs.floating.current)==null?void 0:l.style)!=null?u:{},{width:`${i.reference.width}px`})}})]:[]]});return aX({opened:e.opened,position:e.position,positionDependencies:e.positionDependencies,floating:s}),$o(()=>{var i;(i=e.onPositionChange)==null||i.call(e,s.placement)},[s.placement]),$o(()=>{var i,l;e.opened?(l=e.onOpen)==null||l.call(e):(i=e.onClose)==null||i.call(e)},[e.opened]),{floating:s,controlled:typeof e.opened=="boolean",opened:t,onClose:r,onToggle:o}}const _6={context:"Popover component was not found in the tree",children:"Popover.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported"},[cX,j6]=YV(_6.context);var uX=Object.defineProperty,dX=Object.defineProperties,fX=Object.getOwnPropertyDescriptors,Dh=Object.getOwnPropertySymbols,P6=Object.prototype.hasOwnProperty,I6=Object.prototype.propertyIsEnumerable,H4=(e,t,n)=>t in e?uX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fp=(e,t)=>{for(var n in t||(t={}))P6.call(t,n)&&H4(e,n,t[n]);if(Dh)for(var n of Dh(t))I6.call(t,n)&&H4(e,n,t[n]);return e},pX=(e,t)=>dX(e,fX(t)),hX=(e,t)=>{var n={};for(var r in e)P6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Dh)for(var r of Dh(e))t.indexOf(r)<0&&I6.call(e,r)&&(n[r]=e[r]);return n};const mX={refProp:"ref",popupType:"dialog"},E6=d.forwardRef((e,t)=>{const n=Sn("PopoverTarget",mX,e),{children:r,refProp:o,popupType:s}=n,i=hX(n,["children","refProp","popupType"]);if(!rI(r))throw new Error(_6.children);const l=i,u=j6(),p=Bd(u.reference,r.ref,t),h=u.withRoles?{"aria-haspopup":s,"aria-expanded":u.opened,"aria-controls":u.getDropdownId(),id:u.getTargetId()}:{};return d.cloneElement(r,fp(pX(fp(fp(fp({},l),h),u.targetProps),{className:sI(u.targetProps.className,l.className,r.props.className),[o]:p}),u.controlled?null:{onClick:u.onToggle}))});E6.displayName="@mantine/core/PopoverTarget";var gX=or((e,{radius:t,shadow:n})=>({dropdown:{position:"absolute",backgroundColor:e.white,background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,padding:`${e.spacing.sm} ${e.spacing.md}`,boxShadow:e.shadows[n]||n||"none",borderRadius:e.fn.radius(t),"&:focus":{outline:0}},arrow:{backgroundColor:"inherit",border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,zIndex:1}}));const vX=gX;var bX=Object.defineProperty,W4=Object.getOwnPropertySymbols,xX=Object.prototype.hasOwnProperty,yX=Object.prototype.propertyIsEnumerable,V4=(e,t,n)=>t in e?bX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Dl=(e,t)=>{for(var n in t||(t={}))xX.call(t,n)&&V4(e,n,t[n]);if(W4)for(var n of W4(t))yX.call(t,n)&&V4(e,n,t[n]);return e};const U4={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function CX({transition:e,state:t,duration:n,timingFunction:r}){const o={transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e=="string"?e in op?Dl(Dl(Dl({transitionProperty:op[e].transitionProperty},o),op[e].common),op[e][U4[t]]):null:Dl(Dl(Dl({transitionProperty:e.transitionProperty},o),e.common),e[U4[t]])}function wX({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:o,onExit:s,onEntered:i,onExited:l}){const u=ua(),p=fI(),h=u.respectReducedMotion?p:!1,[m,v]=d.useState(h?0:e),[b,y]=d.useState(r?"entered":"exited"),x=d.useRef(-1),w=k=>{const _=k?o:s,j=k?i:l;y(k?"pre-entering":"pre-exiting"),window.clearTimeout(x.current);const I=h?0:k?e:t;if(v(I),I===0)typeof _=="function"&&_(),typeof j=="function"&&j(),y(k?"entered":"exited");else{const E=window.setTimeout(()=>{typeof _=="function"&&_(),y(k?"entering":"exiting")},10);x.current=window.setTimeout(()=>{window.clearTimeout(E),typeof j=="function"&&j(),y(k?"entered":"exited")},I)}};return $o(()=>{w(r)},[r]),d.useEffect(()=>()=>window.clearTimeout(x.current),[]),{transitionDuration:m,transitionStatus:b,transitionTimingFunction:n||u.transitionTimingFunction}}function M6({keepMounted:e,transition:t,duration:n=250,exitDuration:r=n,mounted:o,children:s,timingFunction:i,onExit:l,onEntered:u,onEnter:p,onExited:h}){const{transitionDuration:m,transitionStatus:v,transitionTimingFunction:b}=wX({mounted:o,exitDuration:r,duration:n,timingFunction:i,onExit:l,onEntered:u,onEnter:p,onExited:h});return m===0?o?H.createElement(H.Fragment,null,s({})):e?s({display:"none"}):null:v==="exited"?e?s({display:"none"}):null:H.createElement(H.Fragment,null,s(CX({transition:t,duration:m,state:v,timingFunction:b})))}M6.displayName="@mantine/core/Transition";function O6({children:e,active:t=!0,refProp:n="ref"}){const r=MU(t),o=Bd(r,e==null?void 0:e.ref);return rI(e)?d.cloneElement(e,{[n]:o}):e}O6.displayName="@mantine/core/FocusTrap";var SX=Object.defineProperty,kX=Object.defineProperties,_X=Object.getOwnPropertyDescriptors,G4=Object.getOwnPropertySymbols,jX=Object.prototype.hasOwnProperty,PX=Object.prototype.propertyIsEnumerable,K4=(e,t,n)=>t in e?SX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pa=(e,t)=>{for(var n in t||(t={}))jX.call(t,n)&&K4(e,n,t[n]);if(G4)for(var n of G4(t))PX.call(t,n)&&K4(e,n,t[n]);return e},pp=(e,t)=>kX(e,_X(t));function q4(e,t,n,r){return e==="center"||r==="center"?{top:t}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function X4(e,t,n,r,o){return e==="center"||r==="center"?{left:t}:e==="end"?{[o==="ltr"?"right":"left"]:n}:e==="start"?{[o==="ltr"?"left":"right"]:n}:{}}const IX={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function EX({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:o,arrowX:s,arrowY:i,dir:l}){const[u,p="center"]=e.split("-"),h={width:Oe(t),height:Oe(t),transform:"rotate(45deg)",position:"absolute",[IX[u]]:Oe(r)},m=Oe(-t/2);return u==="left"?pp(Pa(Pa({},h),q4(p,i,n,o)),{right:m,borderLeftColor:"transparent",borderBottomColor:"transparent"}):u==="right"?pp(Pa(Pa({},h),q4(p,i,n,o)),{left:m,borderRightColor:"transparent",borderTopColor:"transparent"}):u==="top"?pp(Pa(Pa({},h),X4(p,s,n,o,l)),{bottom:m,borderTopColor:"transparent",borderLeftColor:"transparent"}):u==="bottom"?pp(Pa(Pa({},h),X4(p,s,n,o,l)),{top:m,borderBottomColor:"transparent",borderRightColor:"transparent"}):{}}var MX=Object.defineProperty,OX=Object.defineProperties,DX=Object.getOwnPropertyDescriptors,Rh=Object.getOwnPropertySymbols,D6=Object.prototype.hasOwnProperty,R6=Object.prototype.propertyIsEnumerable,Y4=(e,t,n)=>t in e?MX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,RX=(e,t)=>{for(var n in t||(t={}))D6.call(t,n)&&Y4(e,n,t[n]);if(Rh)for(var n of Rh(t))R6.call(t,n)&&Y4(e,n,t[n]);return e},AX=(e,t)=>OX(e,DX(t)),NX=(e,t)=>{var n={};for(var r in e)D6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Rh)for(var r of Rh(e))t.indexOf(r)<0&&R6.call(e,r)&&(n[r]=e[r]);return n};const A6=d.forwardRef((e,t)=>{var n=e,{position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:l,visible:u,arrowX:p,arrowY:h}=n,m=NX(n,["position","arrowSize","arrowOffset","arrowRadius","arrowPosition","visible","arrowX","arrowY"]);const v=ua();return u?H.createElement("div",AX(RX({},m),{ref:t,style:EX({position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:l,dir:v.dir,arrowX:p,arrowY:h})})):null});A6.displayName="@mantine/core/FloatingArrow";var TX=Object.defineProperty,$X=Object.defineProperties,LX=Object.getOwnPropertyDescriptors,Ah=Object.getOwnPropertySymbols,N6=Object.prototype.hasOwnProperty,T6=Object.prototype.propertyIsEnumerable,Q4=(e,t,n)=>t in e?TX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rl=(e,t)=>{for(var n in t||(t={}))N6.call(t,n)&&Q4(e,n,t[n]);if(Ah)for(var n of Ah(t))T6.call(t,n)&&Q4(e,n,t[n]);return e},hp=(e,t)=>$X(e,LX(t)),zX=(e,t)=>{var n={};for(var r in e)N6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ah)for(var r of Ah(e))t.indexOf(r)<0&&T6.call(e,r)&&(n[r]=e[r]);return n};const FX={};function $6(e){var t;const n=Sn("PopoverDropdown",FX,e),{style:r,className:o,children:s,onKeyDownCapture:i}=n,l=zX(n,["style","className","children","onKeyDownCapture"]),u=j6(),{classes:p,cx:h}=vX({radius:u.radius,shadow:u.shadow},{name:u.__staticSelector,classNames:u.classNames,styles:u.styles,unstyled:u.unstyled,variant:u.variant}),m=SU({opened:u.opened,shouldReturnFocus:u.returnFocus}),v=u.withRoles?{"aria-labelledby":u.getTargetId(),id:u.getDropdownId(),role:"dialog"}:{};return u.disabled?null:H.createElement($I,hp(Rl({},u.portalProps),{withinPortal:u.withinPortal}),H.createElement(M6,hp(Rl({mounted:u.opened},u.transitionProps),{transition:u.transitionProps.transition||"fade",duration:(t=u.transitionProps.duration)!=null?t:150,keepMounted:u.keepMounted,exitDuration:typeof u.transitionProps.exitDuration=="number"?u.transitionProps.exitDuration:u.transitionProps.duration}),b=>{var y,x;return H.createElement(O6,{active:u.trapFocus},H.createElement(Or,Rl(hp(Rl({},v),{tabIndex:-1,ref:u.floating,style:hp(Rl(Rl({},r),b),{zIndex:u.zIndex,top:(y=u.y)!=null?y:0,left:(x=u.x)!=null?x:0,width:u.width==="target"?void 0:Oe(u.width)}),className:h(p.dropdown,o),onKeyDownCapture:ZV(u.onClose,{active:u.closeOnEscape,onTrigger:m,onKeyDown:i}),"data-position":u.placement}),l),s,H.createElement(A6,{ref:u.arrowRef,arrowX:u.arrowX,arrowY:u.arrowY,visible:u.withArrow,position:u.placement,arrowSize:u.arrowSize,arrowRadius:u.arrowRadius,arrowOffset:u.arrowOffset,arrowPosition:u.arrowPosition,className:p.arrow})))}))}$6.displayName="@mantine/core/PopoverDropdown";function BX(e,t){if(e==="rtl"&&(t.includes("right")||t.includes("left"))){const[n,r]=t.split("-"),o=n==="right"?"left":"right";return r===void 0?o:`${o}-${r}`}return t}var Z4=Object.getOwnPropertySymbols,HX=Object.prototype.hasOwnProperty,WX=Object.prototype.propertyIsEnumerable,VX=(e,t)=>{var n={};for(var r in e)HX.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Z4)for(var r of Z4(e))t.indexOf(r)<0&&WX.call(e,r)&&(n[r]=e[r]);return n};const UX={position:"bottom",offset:8,positionDependencies:[],transitionProps:{transition:"fade",duration:150},middlewares:{flip:!0,shift:!0,inline:!1},arrowSize:7,arrowOffset:5,arrowRadius:0,arrowPosition:"side",closeOnClickOutside:!0,withinPortal:!1,closeOnEscape:!0,trapFocus:!1,withRoles:!0,returnFocus:!1,clickOutsideEvents:["mousedown","touchstart"],zIndex:Gx("popover"),__staticSelector:"Popover",width:"max-content"};function Hc(e){var t,n,r,o,s,i;const l=d.useRef(null),u=Sn("Popover",UX,e),{children:p,position:h,offset:m,onPositionChange:v,positionDependencies:b,opened:y,transitionProps:x,width:w,middlewares:k,withArrow:_,arrowSize:j,arrowOffset:I,arrowRadius:E,arrowPosition:M,unstyled:D,classNames:R,styles:A,closeOnClickOutside:O,withinPortal:T,portalProps:K,closeOnEscape:F,clickOutsideEvents:V,trapFocus:X,onClose:W,onOpen:z,onChange:Y,zIndex:B,radius:q,shadow:re,id:Q,defaultOpened:le,__staticSelector:se,withRoles:U,disabled:G,returnFocus:te,variant:ae,keepMounted:oe}=u,pe=VX(u,["children","position","offset","onPositionChange","positionDependencies","opened","transitionProps","width","middlewares","withArrow","arrowSize","arrowOffset","arrowRadius","arrowPosition","unstyled","classNames","styles","closeOnClickOutside","withinPortal","portalProps","closeOnEscape","clickOutsideEvents","trapFocus","onClose","onOpen","onChange","zIndex","radius","shadow","id","defaultOpened","__staticSelector","withRoles","disabled","returnFocus","variant","keepMounted"]),[ue,me]=d.useState(null),[Ce,ge]=d.useState(null),fe=qx(Q),De=ua(),je=lX({middlewares:k,width:w,position:BX(De.dir,h),offset:typeof m=="number"?m+(_?j/2:0):m,arrowRef:l,arrowOffset:I,onPositionChange:v,positionDependencies:b,opened:y,defaultOpened:le,onChange:Y,onOpen:z,onClose:W});xU(()=>je.opened&&O&&je.onClose(),V,[ue,Ce]);const Be=d.useCallback(Ue=>{me(Ue),je.floating.reference(Ue)},[je.floating.reference]),rt=d.useCallback(Ue=>{ge(Ue),je.floating.floating(Ue)},[je.floating.floating]);return H.createElement(cX,{value:{returnFocus:te,disabled:G,controlled:je.controlled,reference:Be,floating:rt,x:je.floating.x,y:je.floating.y,arrowX:(r=(n=(t=je.floating)==null?void 0:t.middlewareData)==null?void 0:n.arrow)==null?void 0:r.x,arrowY:(i=(s=(o=je.floating)==null?void 0:o.middlewareData)==null?void 0:s.arrow)==null?void 0:i.y,opened:je.opened,arrowRef:l,transitionProps:x,width:w,withArrow:_,arrowSize:j,arrowOffset:I,arrowRadius:E,arrowPosition:M,placement:je.floating.placement,trapFocus:X,withinPortal:T,portalProps:K,zIndex:B,radius:q,shadow:re,closeOnEscape:F,onClose:je.onClose,onToggle:je.onToggle,getTargetId:()=>`${fe}-target`,getDropdownId:()=>`${fe}-dropdown`,withRoles:U,targetProps:pe,__staticSelector:se,classNames:R,styles:A,unstyled:D,variant:ae,keepMounted:oe}},p)}Hc.Target=E6;Hc.Dropdown=$6;Hc.displayName="@mantine/core/Popover";var GX=Object.defineProperty,Nh=Object.getOwnPropertySymbols,L6=Object.prototype.hasOwnProperty,z6=Object.prototype.propertyIsEnumerable,J4=(e,t,n)=>t in e?GX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,KX=(e,t)=>{for(var n in t||(t={}))L6.call(t,n)&&J4(e,n,t[n]);if(Nh)for(var n of Nh(t))z6.call(t,n)&&J4(e,n,t[n]);return e},qX=(e,t)=>{var n={};for(var r in e)L6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Nh)for(var r of Nh(e))t.indexOf(r)<0&&z6.call(e,r)&&(n[r]=e[r]);return n};function XX(e){var t=e,{children:n,component:r="div",maxHeight:o=220,direction:s="column",id:i,innerRef:l,__staticSelector:u,styles:p,classNames:h,unstyled:m}=t,v=qX(t,["children","component","maxHeight","direction","id","innerRef","__staticSelector","styles","classNames","unstyled"]);const{classes:b}=Mq(null,{name:u,styles:p,classNames:h,unstyled:m});return H.createElement(Hc.Dropdown,KX({p:0,onMouseDown:y=>y.preventDefault()},v),H.createElement("div",{style:{maxHeight:Oe(o),display:"flex"}},H.createElement(Or,{component:r||"div",id:`${i}-items`,"aria-labelledby":`${i}-label`,role:"listbox",onMouseDown:y=>y.preventDefault(),style:{flex:1,overflowY:r!==Jm?"auto":void 0},"data-combobox-popover":!0,tabIndex:-1,ref:l},H.createElement("div",{className:b.itemsWrapper,style:{flexDirection:s}},n))))}function Ha({opened:e,transitionProps:t={transition:"fade",duration:0},shadow:n,withinPortal:r,portalProps:o,children:s,__staticSelector:i,onDirectionChange:l,switchDirectionOnFlip:u,zIndex:p,dropdownPosition:h,positionDependencies:m=[],classNames:v,styles:b,unstyled:y,readOnly:x,variant:w}){return H.createElement(Hc,{unstyled:y,classNames:v,styles:b,width:"target",withRoles:!1,opened:e,middlewares:{flip:h==="flip",shift:!1},position:h==="flip"?"bottom":h,positionDependencies:m,zIndex:p,__staticSelector:i,withinPortal:r,portalProps:o,transitionProps:t,shadow:n,disabled:x,onPositionChange:k=>u&&(l==null?void 0:l(k==="top"?"column-reverse":"column")),variant:w},s)}Ha.Target=Hc.Target;Ha.Dropdown=XX;var YX=Object.defineProperty,QX=Object.defineProperties,ZX=Object.getOwnPropertyDescriptors,Th=Object.getOwnPropertySymbols,F6=Object.prototype.hasOwnProperty,B6=Object.prototype.propertyIsEnumerable,ek=(e,t,n)=>t in e?YX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mp=(e,t)=>{for(var n in t||(t={}))F6.call(t,n)&&ek(e,n,t[n]);if(Th)for(var n of Th(t))B6.call(t,n)&&ek(e,n,t[n]);return e},JX=(e,t)=>QX(e,ZX(t)),eY=(e,t)=>{var n={};for(var r in e)F6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Th)for(var r of Th(e))t.indexOf(r)<0&&B6.call(e,r)&&(n[r]=e[r]);return n};function H6(e,t,n){const r=Sn(e,t,n),{label:o,description:s,error:i,required:l,classNames:u,styles:p,className:h,unstyled:m,__staticSelector:v,sx:b,errorProps:y,labelProps:x,descriptionProps:w,wrapperProps:k,id:_,size:j,style:I,inputContainer:E,inputWrapperOrder:M,withAsterisk:D,variant:R}=r,A=eY(r,["label","description","error","required","classNames","styles","className","unstyled","__staticSelector","sx","errorProps","labelProps","descriptionProps","wrapperProps","id","size","style","inputContainer","inputWrapperOrder","withAsterisk","variant"]),O=qx(_),{systemStyles:T,rest:K}=Xm(A),F=mp({label:o,description:s,error:i,required:l,classNames:u,className:h,__staticSelector:v,sx:b,errorProps:y,labelProps:x,descriptionProps:w,unstyled:m,styles:p,id:O,size:j,style:I,inputContainer:E,inputWrapperOrder:M,withAsterisk:D,variant:R},k);return JX(mp({},K),{classNames:u,styles:p,unstyled:m,wrapperProps:mp(mp({},F),T),inputProps:{required:l,classNames:u,styles:p,unstyled:m,id:O,size:j,__staticSelector:v,error:i,variant:R}})}var tY=or((e,t,{size:n})=>({label:{display:"inline-block",fontSize:ut({size:n,sizes:e.fontSizes}),fontWeight:500,color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[9],wordBreak:"break-word",cursor:"default",WebkitTapHighlightColor:"transparent"},required:{color:e.fn.variant({variant:"filled",color:"red"}).background}}));const nY=tY;var rY=Object.defineProperty,$h=Object.getOwnPropertySymbols,W6=Object.prototype.hasOwnProperty,V6=Object.prototype.propertyIsEnumerable,tk=(e,t,n)=>t in e?rY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,oY=(e,t)=>{for(var n in t||(t={}))W6.call(t,n)&&tk(e,n,t[n]);if($h)for(var n of $h(t))V6.call(t,n)&&tk(e,n,t[n]);return e},sY=(e,t)=>{var n={};for(var r in e)W6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&$h)for(var r of $h(e))t.indexOf(r)<0&&V6.call(e,r)&&(n[r]=e[r]);return n};const aY={labelElement:"label",size:"sm"},ry=d.forwardRef((e,t)=>{const n=Sn("InputLabel",aY,e),{labelElement:r,children:o,required:s,size:i,classNames:l,styles:u,unstyled:p,className:h,htmlFor:m,__staticSelector:v,variant:b,onMouseDown:y}=n,x=sY(n,["labelElement","children","required","size","classNames","styles","unstyled","className","htmlFor","__staticSelector","variant","onMouseDown"]),{classes:w,cx:k}=nY(null,{name:["InputWrapper",v],classNames:l,styles:u,unstyled:p,variant:b,size:i});return H.createElement(Or,oY({component:r,ref:t,className:k(w.label,h),htmlFor:r==="label"?m:void 0,onMouseDown:_=>{y==null||y(_),!_.defaultPrevented&&_.detail>1&&_.preventDefault()}},x),o,s&&H.createElement("span",{className:w.required,"aria-hidden":!0}," *"))});ry.displayName="@mantine/core/InputLabel";var iY=or((e,t,{size:n})=>({error:{wordBreak:"break-word",color:e.fn.variant({variant:"filled",color:"red"}).background,fontSize:`calc(${ut({size:n,sizes:e.fontSizes})} - ${Oe(2)})`,lineHeight:1.2,display:"block"}}));const lY=iY;var cY=Object.defineProperty,Lh=Object.getOwnPropertySymbols,U6=Object.prototype.hasOwnProperty,G6=Object.prototype.propertyIsEnumerable,nk=(e,t,n)=>t in e?cY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uY=(e,t)=>{for(var n in t||(t={}))U6.call(t,n)&&nk(e,n,t[n]);if(Lh)for(var n of Lh(t))G6.call(t,n)&&nk(e,n,t[n]);return e},dY=(e,t)=>{var n={};for(var r in e)U6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Lh)for(var r of Lh(e))t.indexOf(r)<0&&G6.call(e,r)&&(n[r]=e[r]);return n};const fY={size:"sm"},oy=d.forwardRef((e,t)=>{const n=Sn("InputError",fY,e),{children:r,className:o,classNames:s,styles:i,unstyled:l,size:u,__staticSelector:p,variant:h}=n,m=dY(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=lY(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:l,variant:h,size:u});return H.createElement(kc,uY({className:b(v.error,o),ref:t},m),r)});oy.displayName="@mantine/core/InputError";var pY=or((e,t,{size:n})=>({description:{wordBreak:"break-word",color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],fontSize:`calc(${ut({size:n,sizes:e.fontSizes})} - ${Oe(2)})`,lineHeight:1.2,display:"block"}}));const hY=pY;var mY=Object.defineProperty,zh=Object.getOwnPropertySymbols,K6=Object.prototype.hasOwnProperty,q6=Object.prototype.propertyIsEnumerable,rk=(e,t,n)=>t in e?mY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gY=(e,t)=>{for(var n in t||(t={}))K6.call(t,n)&&rk(e,n,t[n]);if(zh)for(var n of zh(t))q6.call(t,n)&&rk(e,n,t[n]);return e},vY=(e,t)=>{var n={};for(var r in e)K6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&zh)for(var r of zh(e))t.indexOf(r)<0&&q6.call(e,r)&&(n[r]=e[r]);return n};const bY={size:"sm"},sy=d.forwardRef((e,t)=>{const n=Sn("InputDescription",bY,e),{children:r,className:o,classNames:s,styles:i,unstyled:l,size:u,__staticSelector:p,variant:h}=n,m=vY(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=hY(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:l,variant:h,size:u});return H.createElement(kc,gY({color:"dimmed",className:b(v.description,o),ref:t,unstyled:l},m),r)});sy.displayName="@mantine/core/InputDescription";const X6=d.createContext({offsetBottom:!1,offsetTop:!1,describedBy:void 0}),xY=X6.Provider,yY=()=>d.useContext(X6);function CY(e,{hasDescription:t,hasError:n}){const r=e.findIndex(u=>u==="input"),o=e[r-1],s=e[r+1];return{offsetBottom:t&&s==="description"||n&&s==="error",offsetTop:t&&o==="description"||n&&o==="error"}}var wY=Object.defineProperty,SY=Object.defineProperties,kY=Object.getOwnPropertyDescriptors,ok=Object.getOwnPropertySymbols,_Y=Object.prototype.hasOwnProperty,jY=Object.prototype.propertyIsEnumerable,sk=(e,t,n)=>t in e?wY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,PY=(e,t)=>{for(var n in t||(t={}))_Y.call(t,n)&&sk(e,n,t[n]);if(ok)for(var n of ok(t))jY.call(t,n)&&sk(e,n,t[n]);return e},IY=(e,t)=>SY(e,kY(t)),EY=or(e=>({root:IY(PY({},e.fn.fontStyles()),{lineHeight:e.lineHeight})}));const MY=EY;var OY=Object.defineProperty,DY=Object.defineProperties,RY=Object.getOwnPropertyDescriptors,Fh=Object.getOwnPropertySymbols,Y6=Object.prototype.hasOwnProperty,Q6=Object.prototype.propertyIsEnumerable,ak=(e,t,n)=>t in e?OY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ia=(e,t)=>{for(var n in t||(t={}))Y6.call(t,n)&&ak(e,n,t[n]);if(Fh)for(var n of Fh(t))Q6.call(t,n)&&ak(e,n,t[n]);return e},ik=(e,t)=>DY(e,RY(t)),AY=(e,t)=>{var n={};for(var r in e)Y6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Fh)for(var r of Fh(e))t.indexOf(r)<0&&Q6.call(e,r)&&(n[r]=e[r]);return n};const NY={labelElement:"label",size:"sm",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},Z6=d.forwardRef((e,t)=>{const n=Sn("InputWrapper",NY,e),{className:r,label:o,children:s,required:i,id:l,error:u,description:p,labelElement:h,labelProps:m,descriptionProps:v,errorProps:b,classNames:y,styles:x,size:w,inputContainer:k,__staticSelector:_,unstyled:j,inputWrapperOrder:I,withAsterisk:E,variant:M}=n,D=AY(n,["className","label","children","required","id","error","description","labelElement","labelProps","descriptionProps","errorProps","classNames","styles","size","inputContainer","__staticSelector","unstyled","inputWrapperOrder","withAsterisk","variant"]),{classes:R,cx:A}=MY(null,{classNames:y,styles:x,name:["InputWrapper",_],unstyled:j,variant:M,size:w}),O={classNames:y,styles:x,unstyled:j,size:w,variant:M,__staticSelector:_},T=typeof E=="boolean"?E:i,K=l?`${l}-error`:b==null?void 0:b.id,F=l?`${l}-description`:v==null?void 0:v.id,X=`${!!u&&typeof u!="boolean"?K:""} ${p?F:""}`,W=X.trim().length>0?X.trim():void 0,z=o&&H.createElement(ry,Ia(Ia({key:"label",labelElement:h,id:l?`${l}-label`:void 0,htmlFor:l,required:T},O),m),o),Y=p&&H.createElement(sy,ik(Ia(Ia({key:"description"},v),O),{size:(v==null?void 0:v.size)||O.size,id:(v==null?void 0:v.id)||F}),p),B=H.createElement(d.Fragment,{key:"input"},k(s)),q=typeof u!="boolean"&&u&&H.createElement(oy,ik(Ia(Ia({},b),O),{size:(b==null?void 0:b.size)||O.size,key:"error",id:(b==null?void 0:b.id)||K}),u),re=I.map(Q=>{switch(Q){case"label":return z;case"input":return B;case"description":return Y;case"error":return q;default:return null}});return H.createElement(xY,{value:Ia({describedBy:W},CY(I,{hasDescription:!!Y,hasError:!!q}))},H.createElement(Or,Ia({className:A(R.root,r),ref:t},D),re))});Z6.displayName="@mantine/core/InputWrapper";var TY=Object.defineProperty,Bh=Object.getOwnPropertySymbols,J6=Object.prototype.hasOwnProperty,eE=Object.prototype.propertyIsEnumerable,lk=(e,t,n)=>t in e?TY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$Y=(e,t)=>{for(var n in t||(t={}))J6.call(t,n)&&lk(e,n,t[n]);if(Bh)for(var n of Bh(t))eE.call(t,n)&&lk(e,n,t[n]);return e},LY=(e,t)=>{var n={};for(var r in e)J6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Bh)for(var r of Bh(e))t.indexOf(r)<0&&eE.call(e,r)&&(n[r]=e[r]);return n};const zY={},tE=d.forwardRef((e,t)=>{const n=Sn("InputPlaceholder",zY,e),{sx:r}=n,o=LY(n,["sx"]);return H.createElement(Or,$Y({component:"span",sx:[s=>s.fn.placeholderStyles(),...tI(r)],ref:t},o))});tE.displayName="@mantine/core/InputPlaceholder";var FY=Object.defineProperty,BY=Object.defineProperties,HY=Object.getOwnPropertyDescriptors,ck=Object.getOwnPropertySymbols,WY=Object.prototype.hasOwnProperty,VY=Object.prototype.propertyIsEnumerable,uk=(e,t,n)=>t in e?FY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gp=(e,t)=>{for(var n in t||(t={}))WY.call(t,n)&&uk(e,n,t[n]);if(ck)for(var n of ck(t))VY.call(t,n)&&uk(e,n,t[n]);return e},kv=(e,t)=>BY(e,HY(t));const oo={xs:Oe(30),sm:Oe(36),md:Oe(42),lg:Oe(50),xl:Oe(60)},UY=["default","filled","unstyled"];function GY({theme:e,variant:t}){return UY.includes(t)?t==="default"?{border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4]}`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white,transition:"border-color 100ms ease","&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:t==="filled"?{border:`${Oe(1)} solid transparent`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[1],"&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:{borderWidth:0,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,backgroundColor:"transparent",minHeight:Oe(28),outline:0,"&:focus, &:focus-within":{outline:"none",borderColor:"transparent"},"&:disabled":{backgroundColor:"transparent","&:focus, &:focus-within":{outline:"none",borderColor:"transparent"}}}:null}var KY=or((e,{multiline:t,radius:n,invalid:r,rightSectionWidth:o,withRightSection:s,iconWidth:i,offsetBottom:l,offsetTop:u,pointer:p},{variant:h,size:m})=>{const v=e.fn.variant({variant:"filled",color:"red"}).background,b=h==="default"||h==="filled"?{minHeight:ut({size:m,sizes:oo}),paddingLeft:`calc(${ut({size:m,sizes:oo})} / 3)`,paddingRight:s?o||ut({size:m,sizes:oo}):`calc(${ut({size:m,sizes:oo})} / 3)`,borderRadius:e.fn.radius(n)}:h==="unstyled"&&s?{paddingRight:o||ut({size:m,sizes:oo})}:null;return{wrapper:{position:"relative",marginTop:u?`calc(${e.spacing.xs} / 2)`:void 0,marginBottom:l?`calc(${e.spacing.xs} / 2)`:void 0,"&:has(input:disabled)":{"& .mantine-Input-rightSection":{display:"none"}}},input:kv(gp(gp(kv(gp({},e.fn.fontStyles()),{height:t?h==="unstyled"?void 0:"auto":ut({size:m,sizes:oo}),WebkitTapHighlightColor:"transparent",lineHeight:t?e.lineHeight:`calc(${ut({size:m,sizes:oo})} - ${Oe(2)})`,appearance:"none",resize:"none",boxSizing:"border-box",fontSize:ut({size:m,sizes:e.fontSizes}),width:"100%",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,display:"block",textAlign:"left",cursor:p?"pointer":void 0}),GY({theme:e,variant:h})),b),{"&:disabled, &[data-disabled]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,cursor:"not-allowed",pointerEvents:"none","&::placeholder":{color:e.colors.dark[2]}},"&[data-invalid]":{color:v,borderColor:v,"&::placeholder":{opacity:1,color:v}},"&[data-with-icon]":{paddingLeft:typeof i=="number"?Oe(i):ut({size:m,sizes:oo})},"&::placeholder":kv(gp({},e.fn.placeholderStyles()),{opacity:1}),"&::-webkit-inner-spin-button, &::-webkit-outer-spin-button, &::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{appearance:"none"},"&[type=number]":{MozAppearance:"textfield"}}),icon:{pointerEvents:"none",position:"absolute",zIndex:1,left:0,top:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",width:i?Oe(i):ut({size:m,sizes:oo}),color:r?e.colors.red[e.colorScheme==="dark"?6:7]:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[5]},rightSection:{position:"absolute",top:0,bottom:0,right:0,display:"flex",alignItems:"center",justifyContent:"center",width:o||ut({size:m,sizes:oo})}}});const qY=KY;var XY=Object.defineProperty,YY=Object.defineProperties,QY=Object.getOwnPropertyDescriptors,Hh=Object.getOwnPropertySymbols,nE=Object.prototype.hasOwnProperty,rE=Object.prototype.propertyIsEnumerable,dk=(e,t,n)=>t in e?XY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,vp=(e,t)=>{for(var n in t||(t={}))nE.call(t,n)&&dk(e,n,t[n]);if(Hh)for(var n of Hh(t))rE.call(t,n)&&dk(e,n,t[n]);return e},fk=(e,t)=>YY(e,QY(t)),ZY=(e,t)=>{var n={};for(var r in e)nE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Hh)for(var r of Hh(e))t.indexOf(r)<0&&rE.call(e,r)&&(n[r]=e[r]);return n};const JY={size:"sm",variant:"default"},rl=d.forwardRef((e,t)=>{const n=Sn("Input",JY,e),{className:r,error:o,required:s,disabled:i,variant:l,icon:u,style:p,rightSectionWidth:h,iconWidth:m,rightSection:v,rightSectionProps:b,radius:y,size:x,wrapperProps:w,classNames:k,styles:_,__staticSelector:j,multiline:I,sx:E,unstyled:M,pointer:D}=n,R=ZY(n,["className","error","required","disabled","variant","icon","style","rightSectionWidth","iconWidth","rightSection","rightSectionProps","radius","size","wrapperProps","classNames","styles","__staticSelector","multiline","sx","unstyled","pointer"]),{offsetBottom:A,offsetTop:O,describedBy:T}=yY(),{classes:K,cx:F}=qY({radius:y,multiline:I,invalid:!!o,rightSectionWidth:h?Oe(h):void 0,iconWidth:m,withRightSection:!!v,offsetBottom:A,offsetTop:O,pointer:D},{classNames:k,styles:_,name:["Input",j],unstyled:M,variant:l,size:x}),{systemStyles:V,rest:X}=Xm(R);return H.createElement(Or,vp(vp({className:F(K.wrapper,r),sx:E,style:p},V),w),u&&H.createElement("div",{className:K.icon},u),H.createElement(Or,fk(vp({component:"input"},X),{ref:t,required:s,"aria-invalid":!!o,"aria-describedby":T,disabled:i,"data-disabled":i||void 0,"data-with-icon":!!u||void 0,"data-invalid":!!o||void 0,className:K.input})),v&&H.createElement("div",fk(vp({},b),{className:K.rightSection}),v))});rl.displayName="@mantine/core/Input";rl.Wrapper=Z6;rl.Label=ry;rl.Description=sy;rl.Error=oy;rl.Placeholder=tE;const Ic=rl;var eQ=Object.defineProperty,Wh=Object.getOwnPropertySymbols,oE=Object.prototype.hasOwnProperty,sE=Object.prototype.propertyIsEnumerable,pk=(e,t,n)=>t in e?eQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hk=(e,t)=>{for(var n in t||(t={}))oE.call(t,n)&&pk(e,n,t[n]);if(Wh)for(var n of Wh(t))sE.call(t,n)&&pk(e,n,t[n]);return e},tQ=(e,t)=>{var n={};for(var r in e)oE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Wh)for(var r of Wh(e))t.indexOf(r)<0&&sE.call(e,r)&&(n[r]=e[r]);return n};const nQ={multiple:!1},aE=d.forwardRef((e,t)=>{const n=Sn("FileButton",nQ,e),{onChange:r,children:o,multiple:s,accept:i,name:l,form:u,resetRef:p,disabled:h,capture:m,inputProps:v}=n,b=tQ(n,["onChange","children","multiple","accept","name","form","resetRef","disabled","capture","inputProps"]),y=d.useRef(),x=()=>{!h&&y.current.click()},w=_=>{r(s?Array.from(_.currentTarget.files):_.currentTarget.files[0]||null)};return dI(p,()=>{y.current.value=""}),H.createElement(H.Fragment,null,o(hk({onClick:x},b)),H.createElement("input",hk({style:{display:"none"},type:"file",accept:i,multiple:s,onChange:w,ref:Bd(t,y),name:l,form:u,capture:m},v)))});aE.displayName="@mantine/core/FileButton";const iE={xs:Oe(16),sm:Oe(22),md:Oe(26),lg:Oe(30),xl:Oe(36)},rQ={xs:Oe(10),sm:Oe(12),md:Oe(14),lg:Oe(16),xl:Oe(18)};var oQ=or((e,{disabled:t,radius:n,readOnly:r},{size:o,variant:s})=>({defaultValue:{display:"flex",alignItems:"center",backgroundColor:t?e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3]:e.colorScheme==="dark"?e.colors.dark[7]:s==="filled"?e.white:e.colors.gray[1],color:t?e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],height:ut({size:o,sizes:iE}),paddingLeft:`calc(${ut({size:o,sizes:e.spacing})} / 1.5)`,paddingRight:t||r?ut({size:o,sizes:e.spacing}):0,fontWeight:500,fontSize:ut({size:o,sizes:rQ}),borderRadius:ut({size:n,sizes:e.radius}),cursor:t?"not-allowed":"default",userSelect:"none",maxWidth:`calc(100% - ${Oe(10)})`},defaultValueRemove:{color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],marginLeft:`calc(${ut({size:o,sizes:e.spacing})} / 6)`},defaultValueLabel:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}));const sQ=oQ;var aQ=Object.defineProperty,Vh=Object.getOwnPropertySymbols,lE=Object.prototype.hasOwnProperty,cE=Object.prototype.propertyIsEnumerable,mk=(e,t,n)=>t in e?aQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,iQ=(e,t)=>{for(var n in t||(t={}))lE.call(t,n)&&mk(e,n,t[n]);if(Vh)for(var n of Vh(t))cE.call(t,n)&&mk(e,n,t[n]);return e},lQ=(e,t)=>{var n={};for(var r in e)lE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Vh)for(var r of Vh(e))t.indexOf(r)<0&&cE.call(e,r)&&(n[r]=e[r]);return n};const cQ={xs:16,sm:22,md:24,lg:26,xl:30};function uE(e){var t=e,{label:n,classNames:r,styles:o,className:s,onRemove:i,disabled:l,readOnly:u,size:p,radius:h="sm",variant:m,unstyled:v}=t,b=lQ(t,["label","classNames","styles","className","onRemove","disabled","readOnly","size","radius","variant","unstyled"]);const{classes:y,cx:x}=sQ({disabled:l,readOnly:u,radius:h},{name:"MultiSelect",classNames:r,styles:o,unstyled:v,size:p,variant:m});return H.createElement("div",iQ({className:x(y.defaultValue,s)},b),H.createElement("span",{className:y.defaultValueLabel},n),!l&&!u&&H.createElement(VI,{"aria-hidden":!0,onMouseDown:i,size:cQ[p],radius:2,color:"blue",variant:"transparent",iconSize:"70%",className:y.defaultValueRemove,tabIndex:-1,unstyled:v}))}uE.displayName="@mantine/core/MultiSelect/DefaultValue";function uQ({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,disableSelectedItemFiltering:i}){if(!t&&s.length===0)return e;if(!t){const u=[];for(let p=0;ph===e[p].value&&!e[p].disabled))&&u.push(e[p]);return u}const l=[];for(let u=0;up===e[u].value&&!e[u].disabled),e[u])&&l.push(e[u]),!(l.length>=n));u+=1);return l}var dQ=Object.defineProperty,Uh=Object.getOwnPropertySymbols,dE=Object.prototype.hasOwnProperty,fE=Object.prototype.propertyIsEnumerable,gk=(e,t,n)=>t in e?dQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,vk=(e,t)=>{for(var n in t||(t={}))dE.call(t,n)&&gk(e,n,t[n]);if(Uh)for(var n of Uh(t))fE.call(t,n)&&gk(e,n,t[n]);return e},fQ=(e,t)=>{var n={};for(var r in e)dE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Uh)for(var r of Uh(e))t.indexOf(r)<0&&fE.call(e,r)&&(n[r]=e[r]);return n};const pQ={xs:Oe(14),sm:Oe(18),md:Oe(20),lg:Oe(24),xl:Oe(28)};function hQ(e){var t=e,{size:n,error:r,style:o}=t,s=fQ(t,["size","error","style"]);const i=ua(),l=ut({size:n,sizes:pQ});return H.createElement("svg",vk({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:vk({color:r?i.colors.red[6]:i.colors.gray[6],width:l,height:l},o),"data-chevron":!0},s),H.createElement("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}var mQ=Object.defineProperty,gQ=Object.defineProperties,vQ=Object.getOwnPropertyDescriptors,bk=Object.getOwnPropertySymbols,bQ=Object.prototype.hasOwnProperty,xQ=Object.prototype.propertyIsEnumerable,xk=(e,t,n)=>t in e?mQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yQ=(e,t)=>{for(var n in t||(t={}))bQ.call(t,n)&&xk(e,n,t[n]);if(bk)for(var n of bk(t))xQ.call(t,n)&&xk(e,n,t[n]);return e},CQ=(e,t)=>gQ(e,vQ(t));function pE({shouldClear:e,clearButtonProps:t,onClear:n,size:r,error:o}){return e?H.createElement(VI,CQ(yQ({},t),{variant:"transparent",onClick:n,size:r,onMouseDown:s=>s.preventDefault()})):H.createElement(hQ,{error:o,size:r})}pE.displayName="@mantine/core/SelectRightSection";var wQ=Object.defineProperty,SQ=Object.defineProperties,kQ=Object.getOwnPropertyDescriptors,Gh=Object.getOwnPropertySymbols,hE=Object.prototype.hasOwnProperty,mE=Object.prototype.propertyIsEnumerable,yk=(e,t,n)=>t in e?wQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_v=(e,t)=>{for(var n in t||(t={}))hE.call(t,n)&&yk(e,n,t[n]);if(Gh)for(var n of Gh(t))mE.call(t,n)&&yk(e,n,t[n]);return e},Ck=(e,t)=>SQ(e,kQ(t)),_Q=(e,t)=>{var n={};for(var r in e)hE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Gh)for(var r of Gh(e))t.indexOf(r)<0&&mE.call(e,r)&&(n[r]=e[r]);return n};function gE(e){var t=e,{styles:n,rightSection:r,rightSectionWidth:o,theme:s}=t,i=_Q(t,["styles","rightSection","rightSectionWidth","theme"]);if(r)return{rightSection:r,rightSectionWidth:o,styles:n};const l=typeof n=="function"?n(s):n;return{rightSection:!i.readOnly&&!(i.disabled&&i.shouldClear)&&H.createElement(pE,_v({},i)),styles:Ck(_v({},l),{rightSection:Ck(_v({},l==null?void 0:l.rightSection),{pointerEvents:i.shouldClear?void 0:"none"})})}}var jQ=Object.defineProperty,PQ=Object.defineProperties,IQ=Object.getOwnPropertyDescriptors,wk=Object.getOwnPropertySymbols,EQ=Object.prototype.hasOwnProperty,MQ=Object.prototype.propertyIsEnumerable,Sk=(e,t,n)=>t in e?jQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,OQ=(e,t)=>{for(var n in t||(t={}))EQ.call(t,n)&&Sk(e,n,t[n]);if(wk)for(var n of wk(t))MQ.call(t,n)&&Sk(e,n,t[n]);return e},DQ=(e,t)=>PQ(e,IQ(t)),RQ=or((e,{invalid:t},{size:n})=>({wrapper:{position:"relative","&:has(input:disabled)":{cursor:"not-allowed",pointerEvents:"none","& .mantine-MultiSelect-input":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,"&::placeholder":{color:e.colors.dark[2]}},"& .mantine-MultiSelect-defaultValue":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3],color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]}}},values:{minHeight:`calc(${ut({size:n,sizes:oo})} - ${Oe(2)})`,display:"flex",alignItems:"center",flexWrap:"wrap",marginLeft:`calc(-${e.spacing.xs} / 2)`,boxSizing:"border-box","&[data-clearable]":{marginRight:ut({size:n,sizes:oo})}},value:{margin:`calc(${e.spacing.xs} / 2 - ${Oe(2)}) calc(${e.spacing.xs} / 2)`},searchInput:DQ(OQ({},e.fn.fontStyles()),{flex:1,minWidth:Oe(60),backgroundColor:"transparent",border:0,outline:0,fontSize:ut({size:n,sizes:e.fontSizes}),padding:0,marginLeft:`calc(${e.spacing.xs} / 2)`,appearance:"none",color:"inherit",maxHeight:ut({size:n,sizes:iE}),"&::placeholder":{opacity:1,color:t?e.colors.red[e.fn.primaryShade()]:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]},"&:disabled":{cursor:"not-allowed",pointerEvents:"none"}}),searchInputEmpty:{width:"100%"},searchInputInputHidden:{flex:0,width:0,minWidth:0,margin:0,overflow:"hidden"},searchInputPointer:{cursor:"pointer","&:disabled":{cursor:"not-allowed",pointerEvents:"none"}},input:{cursor:"pointer","&:disabled":{cursor:"not-allowed",pointerEvents:"none"}}}));const AQ=RQ;var NQ=Object.defineProperty,TQ=Object.defineProperties,$Q=Object.getOwnPropertyDescriptors,Kh=Object.getOwnPropertySymbols,vE=Object.prototype.hasOwnProperty,bE=Object.prototype.propertyIsEnumerable,kk=(e,t,n)=>t in e?NQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Al=(e,t)=>{for(var n in t||(t={}))vE.call(t,n)&&kk(e,n,t[n]);if(Kh)for(var n of Kh(t))bE.call(t,n)&&kk(e,n,t[n]);return e},_k=(e,t)=>TQ(e,$Q(t)),LQ=(e,t)=>{var n={};for(var r in e)vE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Kh)for(var r of Kh(e))t.indexOf(r)<0&&bE.call(e,r)&&(n[r]=e[r]);return n};function zQ(e,t,n){return t?!1:n.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function FQ(e,t){return!!e&&!t.some(n=>n.value.toLowerCase()===e.toLowerCase())}function jk(e,t){if(!Array.isArray(e))return;if(t.length===0)return[];const n=t.map(r=>typeof r=="object"?r.value:r);return e.filter(r=>n.includes(r))}const BQ={size:"sm",valueComponent:uE,itemComponent:Yx,transitionProps:{transition:"fade",duration:0},maxDropdownHeight:220,shadow:"sm",searchable:!1,filter:zQ,limit:1/0,clearSearchOnChange:!0,clearable:!1,clearSearchOnBlur:!1,disabled:!1,initiallyOpened:!1,creatable:!1,shouldCreate:FQ,switchDirectionOnFlip:!1,zIndex:Gx("popover"),selectOnBlur:!1,positionDependencies:[],dropdownPosition:"flip"},xE=d.forwardRef((e,t)=>{const n=Sn("MultiSelect",BQ,e),{className:r,style:o,required:s,label:i,description:l,size:u,error:p,classNames:h,styles:m,wrapperProps:v,value:b,defaultValue:y,data:x,onChange:w,valueComponent:k,itemComponent:_,id:j,transitionProps:I,maxDropdownHeight:E,shadow:M,nothingFound:D,onFocus:R,onBlur:A,searchable:O,placeholder:T,filter:K,limit:F,clearSearchOnChange:V,clearable:X,clearSearchOnBlur:W,variant:z,onSearchChange:Y,searchValue:B,disabled:q,initiallyOpened:re,radius:Q,icon:le,rightSection:se,rightSectionWidth:U,creatable:G,getCreateLabel:te,shouldCreate:ae,onCreate:oe,sx:pe,dropdownComponent:ue,onDropdownClose:me,onDropdownOpen:Ce,maxSelectedValues:ge,withinPortal:fe,portalProps:De,switchDirectionOnFlip:je,zIndex:Be,selectOnBlur:rt,name:Ue,dropdownPosition:wt,errorProps:Ye,labelProps:tt,descriptionProps:be,form:Re,positionDependencies:st,onKeyDown:mt,unstyled:ve,inputContainer:Qe,inputWrapperOrder:ot,readOnly:lt,withAsterisk:Me,clearButtonProps:$e,hoverOnSearchChange:At,disableSelectedItemFiltering:ke}=n,ze=LQ(n,["className","style","required","label","description","size","error","classNames","styles","wrapperProps","value","defaultValue","data","onChange","valueComponent","itemComponent","id","transitionProps","maxDropdownHeight","shadow","nothingFound","onFocus","onBlur","searchable","placeholder","filter","limit","clearSearchOnChange","clearable","clearSearchOnBlur","variant","onSearchChange","searchValue","disabled","initiallyOpened","radius","icon","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","onCreate","sx","dropdownComponent","onDropdownClose","onDropdownOpen","maxSelectedValues","withinPortal","portalProps","switchDirectionOnFlip","zIndex","selectOnBlur","name","dropdownPosition","errorProps","labelProps","descriptionProps","form","positionDependencies","onKeyDown","unstyled","inputContainer","inputWrapperOrder","readOnly","withAsterisk","clearButtonProps","hoverOnSearchChange","disableSelectedItemFiltering"]),{classes:Le,cx:Ve,theme:ct}=AQ({invalid:!!p},{name:"MultiSelect",classNames:h,styles:m,unstyled:ve,size:u,variant:z}),{systemStyles:bn,rest:jt}=Xm(ze),Pt=d.useRef(),sr=d.useRef({}),Mn=qx(j),[pn,an]=d.useState(re),[Qt,mr]=d.useState(-1),[wo,ar]=d.useState("column"),[ir,Is]=ad({value:B,defaultValue:"",finalValue:void 0,onChange:Y}),[Es,ha]=d.useState(!1),{scrollIntoView:ma,targetRef:cl,scrollableRef:ga}=pI({duration:0,offset:5,cancelable:!1,isList:!0}),ul=G&&typeof te=="function";let qe=null;const Nt=x.map(Je=>typeof Je=="string"?{label:Je,value:Je}:Je),On=nI({data:Nt}),[bt,va]=ad({value:jk(b,x),defaultValue:jk(y,x),finalValue:[],onChange:w}),Ar=d.useRef(!!ge&&ge{if(!lt){const St=bt.filter(xt=>xt!==Je);va(St),ge&&St.length{Is(Je.currentTarget.value),!q&&!Ar.current&&O&&an(!0)},Ng=Je=>{typeof R=="function"&&R(Je),!q&&!Ar.current&&O&&an(!0)},Dn=uQ({data:On,searchable:O,searchValue:ir,limit:F,filter:K,value:bt,disableSelectedItemFiltering:ke});ul&&ae(ir,On)&&(qe=te(ir),Dn.push({label:ir,value:ir,creatable:!0}));const Ms=Math.min(Qt,Dn.length-1),Jd=(Je,St,xt)=>{let kt=Je;for(;xt(kt);)if(kt=St(kt),!Dn[kt].disabled)return kt;return Je};$o(()=>{mr(At&&ir?0:-1)},[ir,At]),$o(()=>{!q&&bt.length>x.length&&an(!1),ge&&bt.length=ge&&(Ar.current=!0,an(!1))},[bt]);const dl=Je=>{if(!lt)if(V&&Is(""),bt.includes(Je.value))Zd(Je.value);else{if(Je.creatable&&typeof oe=="function"){const St=oe(Je.value);typeof St<"u"&&St!==null&&va(typeof St=="string"?[...bt,St]:[...bt,St.value])}else va([...bt,Je.value]);bt.length===ge-1&&(Ar.current=!0,an(!1)),Dn.length===1&&an(!1)}},Qc=Je=>{typeof A=="function"&&A(Je),rt&&Dn[Ms]&&pn&&dl(Dn[Ms]),W&&Is(""),an(!1)},ai=Je=>{if(Es||(mt==null||mt(Je),lt)||Je.key!=="Backspace"&&ge&&Ar.current)return;const St=wo==="column",xt=()=>{mr(qn=>{var Ut;const kn=Jd(qn,lr=>lr+1,lr=>lr{mr(qn=>{var Ut;const kn=Jd(qn,lr=>lr-1,lr=>lr>0);return pn&&(cl.current=sr.current[(Ut=Dn[kn])==null?void 0:Ut.value],ma({alignment:St?"start":"end"})),kn})};switch(Je.key){case"ArrowUp":{Je.preventDefault(),an(!0),St?kt():xt();break}case"ArrowDown":{Je.preventDefault(),an(!0),St?xt():kt();break}case"Enter":{Je.preventDefault(),Dn[Ms]&&pn?dl(Dn[Ms]):an(!0);break}case" ":{O||(Je.preventDefault(),Dn[Ms]&&pn?dl(Dn[Ms]):an(!0));break}case"Backspace":{bt.length>0&&ir.length===0&&(va(bt.slice(0,-1)),an(!0),ge&&(Ar.current=!1));break}case"Home":{if(!O){Je.preventDefault(),pn||an(!0);const qn=Dn.findIndex(Ut=>!Ut.disabled);mr(qn),ma({alignment:St?"end":"start"})}break}case"End":{if(!O){Je.preventDefault(),pn||an(!0);const qn=Dn.map(Ut=>!!Ut.disabled).lastIndexOf(!1);mr(qn),ma({alignment:St?"end":"start"})}break}case"Escape":an(!1)}},Zc=bt.map(Je=>{let St=On.find(xt=>xt.value===Je&&!xt.disabled);return!St&&ul&&(St={value:Je,label:Je}),St}).filter(Je=>!!Je).map((Je,St)=>H.createElement(k,_k(Al({},Je),{variant:z,disabled:q,className:Le.value,readOnly:lt,onRemove:xt=>{xt.preventDefault(),xt.stopPropagation(),Zd(Je.value)},key:Je.value,size:u,styles:m,classNames:h,radius:Q,index:St}))),Jc=Je=>bt.includes(Je),Tg=()=>{var Je;Is(""),va([]),(Je=Pt.current)==null||Je.focus(),ge&&(Ar.current=!1)},ba=!lt&&(Dn.length>0?pn:pn&&!!D);return $o(()=>{const Je=ba?Ce:me;typeof Je=="function"&&Je()},[ba]),H.createElement(Ic.Wrapper,Al(Al({required:s,id:Mn,label:i,error:p,description:l,size:u,className:r,style:o,classNames:h,styles:m,__staticSelector:"MultiSelect",sx:pe,errorProps:Ye,descriptionProps:be,labelProps:tt,inputContainer:Qe,inputWrapperOrder:ot,unstyled:ve,withAsterisk:Me,variant:z},bn),v),H.createElement(Ha,{opened:ba,transitionProps:I,shadow:"sm",withinPortal:fe,portalProps:De,__staticSelector:"MultiSelect",onDirectionChange:ar,switchDirectionOnFlip:je,zIndex:Be,dropdownPosition:wt,positionDependencies:[...st,ir],classNames:h,styles:m,unstyled:ve,variant:z},H.createElement(Ha.Target,null,H.createElement("div",{className:Le.wrapper,role:"combobox","aria-haspopup":"listbox","aria-owns":pn&&ba?`${Mn}-items`:null,"aria-controls":Mn,"aria-expanded":pn,onMouseLeave:()=>mr(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:Ue,value:bt.join(","),form:Re,disabled:q}),H.createElement(Ic,Al({__staticSelector:"MultiSelect",style:{overflow:"hidden"},component:"div",multiline:!0,size:u,variant:z,disabled:q,error:p,required:s,radius:Q,icon:le,unstyled:ve,onMouseDown:Je=>{var St;Je.preventDefault(),!q&&!Ar.current&&an(!pn),(St=Pt.current)==null||St.focus()},classNames:_k(Al({},h),{input:Ve({[Le.input]:!O},h==null?void 0:h.input)})},gE({theme:ct,rightSection:se,rightSectionWidth:U,styles:m,size:u,shouldClear:X&&bt.length>0,onClear:Tg,error:p,disabled:q,clearButtonProps:$e,readOnly:lt})),H.createElement("div",{className:Le.values,"data-clearable":X||void 0},Zc,H.createElement("input",Al({ref:Bd(t,Pt),type:"search",id:Mn,className:Ve(Le.searchInput,{[Le.searchInputPointer]:!O,[Le.searchInputInputHidden]:!pn&&bt.length>0||!O&&bt.length>0,[Le.searchInputEmpty]:bt.length===0}),onKeyDown:ai,value:ir,onChange:Ag,onFocus:Ng,onBlur:Qc,readOnly:!O||Ar.current||lt,placeholder:bt.length===0?T:void 0,disabled:q,"data-mantine-stop-propagation":pn,autoComplete:"off",onCompositionStart:()=>ha(!0),onCompositionEnd:()=>ha(!1)},jt)))))),H.createElement(Ha.Dropdown,{component:ue||Jm,maxHeight:E,direction:wo,id:Mn,innerRef:ga,__staticSelector:"MultiSelect",classNames:h,styles:m},H.createElement(Xx,{data:Dn,hovered:Ms,classNames:h,styles:m,uuid:Mn,__staticSelector:"MultiSelect",onItemHover:mr,onItemSelect:dl,itemsRefs:sr,itemComponent:_,size:u,nothingFound:D,isItemSelected:Jc,creatable:G&&!!qe,createLabel:qe,unstyled:ve,variant:z}))))});xE.displayName="@mantine/core/MultiSelect";var HQ=Object.defineProperty,WQ=Object.defineProperties,VQ=Object.getOwnPropertyDescriptors,qh=Object.getOwnPropertySymbols,yE=Object.prototype.hasOwnProperty,CE=Object.prototype.propertyIsEnumerable,Pk=(e,t,n)=>t in e?HQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jv=(e,t)=>{for(var n in t||(t={}))yE.call(t,n)&&Pk(e,n,t[n]);if(qh)for(var n of qh(t))CE.call(t,n)&&Pk(e,n,t[n]);return e},UQ=(e,t)=>WQ(e,VQ(t)),GQ=(e,t)=>{var n={};for(var r in e)yE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&qh)for(var r of qh(e))t.indexOf(r)<0&&CE.call(e,r)&&(n[r]=e[r]);return n};const KQ={type:"text",size:"sm",__staticSelector:"TextInput"},wE=d.forwardRef((e,t)=>{const n=H6("TextInput",KQ,e),{inputProps:r,wrapperProps:o}=n,s=GQ(n,["inputProps","wrapperProps"]);return H.createElement(Ic.Wrapper,jv({},o),H.createElement(Ic,UQ(jv(jv({},r),s),{ref:t})))});wE.displayName="@mantine/core/TextInput";function qQ({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,filterDataOnExactSearchMatch:i}){if(!t)return e;const l=s!=null&&e.find(p=>p.value===s)||null;if(l&&!i&&(l==null?void 0:l.label)===r){if(n){if(n>=e.length)return e;const p=e.indexOf(l),h=p+n,m=h-e.length;return m>0?e.slice(p-m):e.slice(p,h)}return e}const u=[];for(let p=0;p=n));p+=1);return u}var XQ=or(()=>({input:{"&:not(:disabled)":{cursor:"pointer","&::selection":{backgroundColor:"transparent"}}}}));const YQ=XQ;var QQ=Object.defineProperty,ZQ=Object.defineProperties,JQ=Object.getOwnPropertyDescriptors,Xh=Object.getOwnPropertySymbols,SE=Object.prototype.hasOwnProperty,kE=Object.prototype.propertyIsEnumerable,Ik=(e,t,n)=>t in e?QQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_u=(e,t)=>{for(var n in t||(t={}))SE.call(t,n)&&Ik(e,n,t[n]);if(Xh)for(var n of Xh(t))kE.call(t,n)&&Ik(e,n,t[n]);return e},Pv=(e,t)=>ZQ(e,JQ(t)),eZ=(e,t)=>{var n={};for(var r in e)SE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Xh)for(var r of Xh(e))t.indexOf(r)<0&&kE.call(e,r)&&(n[r]=e[r]);return n};function tZ(e,t){return t.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function nZ(e,t){return!!e&&!t.some(n=>n.label.toLowerCase()===e.toLowerCase())}const rZ={required:!1,size:"sm",shadow:"sm",itemComponent:Yx,transitionProps:{transition:"fade",duration:0},initiallyOpened:!1,filter:tZ,maxDropdownHeight:220,searchable:!1,clearable:!1,limit:1/0,disabled:!1,creatable:!1,shouldCreate:nZ,selectOnBlur:!1,switchDirectionOnFlip:!1,filterDataOnExactSearchMatch:!1,zIndex:Gx("popover"),positionDependencies:[],dropdownPosition:"flip"},ay=d.forwardRef((e,t)=>{const n=H6("Select",rZ,e),{inputProps:r,wrapperProps:o,shadow:s,data:i,value:l,defaultValue:u,onChange:p,itemComponent:h,onKeyDown:m,onBlur:v,onFocus:b,transitionProps:y,initiallyOpened:x,unstyled:w,classNames:k,styles:_,filter:j,maxDropdownHeight:I,searchable:E,clearable:M,nothingFound:D,limit:R,disabled:A,onSearchChange:O,searchValue:T,rightSection:K,rightSectionWidth:F,creatable:V,getCreateLabel:X,shouldCreate:W,selectOnBlur:z,onCreate:Y,dropdownComponent:B,onDropdownClose:q,onDropdownOpen:re,withinPortal:Q,portalProps:le,switchDirectionOnFlip:se,zIndex:U,name:G,dropdownPosition:te,allowDeselect:ae,placeholder:oe,filterDataOnExactSearchMatch:pe,form:ue,positionDependencies:me,readOnly:Ce,clearButtonProps:ge,hoverOnSearchChange:fe}=n,De=eZ(n,["inputProps","wrapperProps","shadow","data","value","defaultValue","onChange","itemComponent","onKeyDown","onBlur","onFocus","transitionProps","initiallyOpened","unstyled","classNames","styles","filter","maxDropdownHeight","searchable","clearable","nothingFound","limit","disabled","onSearchChange","searchValue","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","selectOnBlur","onCreate","dropdownComponent","onDropdownClose","onDropdownOpen","withinPortal","portalProps","switchDirectionOnFlip","zIndex","name","dropdownPosition","allowDeselect","placeholder","filterDataOnExactSearchMatch","form","positionDependencies","readOnly","clearButtonProps","hoverOnSearchChange"]),{classes:je,cx:Be,theme:rt}=YQ(),[Ue,wt]=d.useState(x),[Ye,tt]=d.useState(-1),be=d.useRef(),Re=d.useRef({}),[st,mt]=d.useState("column"),ve=st==="column",{scrollIntoView:Qe,targetRef:ot,scrollableRef:lt}=pI({duration:0,offset:5,cancelable:!1,isList:!0}),Me=ae===void 0?M:ae,$e=qe=>{if(Ue!==qe){wt(qe);const Nt=qe?re:q;typeof Nt=="function"&&Nt()}},At=V&&typeof X=="function";let ke=null;const ze=i.map(qe=>typeof qe=="string"?{label:qe,value:qe}:qe),Le=nI({data:ze}),[Ve,ct,bn]=ad({value:l,defaultValue:u,finalValue:null,onChange:p}),jt=Le.find(qe=>qe.value===Ve),[Pt,sr]=ad({value:T,defaultValue:(jt==null?void 0:jt.label)||"",finalValue:void 0,onChange:O}),Mn=qe=>{sr(qe),E&&typeof O=="function"&&O(qe)},pn=()=>{var qe;Ce||(ct(null),bn||Mn(""),(qe=be.current)==null||qe.focus())};d.useEffect(()=>{const qe=Le.find(Nt=>Nt.value===Ve);qe?Mn(qe.label):(!At||!Ve)&&Mn("")},[Ve]),d.useEffect(()=>{jt&&(!E||!Ue)&&Mn(jt.label)},[jt==null?void 0:jt.label]);const an=qe=>{if(!Ce)if(Me&&(jt==null?void 0:jt.value)===qe.value)ct(null),$e(!1);else{if(qe.creatable&&typeof Y=="function"){const Nt=Y(qe.value);typeof Nt<"u"&&Nt!==null&&ct(typeof Nt=="string"?Nt:Nt.value)}else ct(qe.value);bn||Mn(qe.label),tt(-1),$e(!1),be.current.focus()}},Qt=qQ({data:Le,searchable:E,limit:R,searchValue:Pt,filter:j,filterDataOnExactSearchMatch:pe,value:Ve});At&&W(Pt,Qt)&&(ke=X(Pt),Qt.push({label:Pt,value:Pt,creatable:!0}));const mr=(qe,Nt,On)=>{let bt=qe;for(;On(bt);)if(bt=Nt(bt),!Qt[bt].disabled)return bt;return qe};$o(()=>{tt(fe&&Pt?0:-1)},[Pt,fe]);const wo=Ve?Qt.findIndex(qe=>qe.value===Ve):0,ar=!Ce&&(Qt.length>0?Ue:Ue&&!!D),ir=()=>{tt(qe=>{var Nt;const On=mr(qe,bt=>bt-1,bt=>bt>0);return ot.current=Re.current[(Nt=Qt[On])==null?void 0:Nt.value],ar&&Qe({alignment:ve?"start":"end"}),On})},Is=()=>{tt(qe=>{var Nt;const On=mr(qe,bt=>bt+1,bt=>btwindow.setTimeout(()=>{var qe;ot.current=Re.current[(qe=Qt[wo])==null?void 0:qe.value],Qe({alignment:ve?"end":"start"})},50);$o(()=>{ar&&Es()},[ar]);const ha=qe=>{switch(typeof m=="function"&&m(qe),qe.key){case"ArrowUp":{qe.preventDefault(),Ue?ve?ir():Is():(tt(wo),$e(!0),Es());break}case"ArrowDown":{qe.preventDefault(),Ue?ve?Is():ir():(tt(wo),$e(!0),Es());break}case"Home":{if(!E){qe.preventDefault(),Ue||$e(!0);const Nt=Qt.findIndex(On=>!On.disabled);tt(Nt),ar&&Qe({alignment:ve?"end":"start"})}break}case"End":{if(!E){qe.preventDefault(),Ue||$e(!0);const Nt=Qt.map(On=>!!On.disabled).lastIndexOf(!1);tt(Nt),ar&&Qe({alignment:ve?"end":"start"})}break}case"Escape":{qe.preventDefault(),$e(!1),tt(-1);break}case" ":{E||(qe.preventDefault(),Qt[Ye]&&Ue?an(Qt[Ye]):($e(!0),tt(wo),Es()));break}case"Enter":E||qe.preventDefault(),Qt[Ye]&&Ue&&(qe.preventDefault(),an(Qt[Ye]))}},ma=qe=>{typeof v=="function"&&v(qe);const Nt=Le.find(On=>On.value===Ve);z&&Qt[Ye]&&Ue&&an(Qt[Ye]),Mn((Nt==null?void 0:Nt.label)||""),$e(!1)},cl=qe=>{typeof b=="function"&&b(qe),E&&$e(!0)},ga=qe=>{Ce||(Mn(qe.currentTarget.value),M&&qe.currentTarget.value===""&&ct(null),tt(-1),$e(!0))},ul=()=>{Ce||($e(!Ue),Ve&&!Ue&&tt(wo))};return H.createElement(Ic.Wrapper,Pv(_u({},o),{__staticSelector:"Select"}),H.createElement(Ha,{opened:ar,transitionProps:y,shadow:s,withinPortal:Q,portalProps:le,__staticSelector:"Select",onDirectionChange:mt,switchDirectionOnFlip:se,zIndex:U,dropdownPosition:te,positionDependencies:[...me,Pt],classNames:k,styles:_,unstyled:w,variant:r.variant},H.createElement(Ha.Target,null,H.createElement("div",{role:"combobox","aria-haspopup":"listbox","aria-owns":ar?`${r.id}-items`:null,"aria-controls":r.id,"aria-expanded":ar,onMouseLeave:()=>tt(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:G,value:Ve||"",form:ue,disabled:A}),H.createElement(Ic,_u(Pv(_u(_u({autoComplete:"off",type:"search"},r),De),{ref:Bd(t,be),onKeyDown:ha,__staticSelector:"Select",value:Pt,placeholder:oe,onChange:ga,"aria-autocomplete":"list","aria-controls":ar?`${r.id}-items`:null,"aria-activedescendant":Ye>=0?`${r.id}-${Ye}`:null,onMouseDown:ul,onBlur:ma,onFocus:cl,readOnly:!E||Ce,disabled:A,"data-mantine-stop-propagation":ar,name:null,classNames:Pv(_u({},k),{input:Be({[je.input]:!E},k==null?void 0:k.input)})}),gE({theme:rt,rightSection:K,rightSectionWidth:F,styles:_,size:r.size,shouldClear:M&&!!jt,onClear:pn,error:o.error,clearButtonProps:ge,disabled:A,readOnly:Ce}))))),H.createElement(Ha.Dropdown,{component:B||Jm,maxHeight:I,direction:st,id:r.id,innerRef:lt,__staticSelector:"Select",classNames:k,styles:_},H.createElement(Xx,{data:Qt,hovered:Ye,classNames:k,styles:_,isItemSelected:qe=>qe===Ve,uuid:r.id,__staticSelector:"Select",onItemHover:tt,onItemSelect:an,itemsRefs:Re,itemComponent:h,size:r.size,nothingFound:D,creatable:At&&!!ke,createLabel:ke,"aria-label":o.label,unstyled:w,variant:r.variant}))))});ay.displayName="@mantine/core/Select";const Vd=()=>{const[e,t,n,r,o,s,i,l,u,p,h,m,v,b,y,x,w,k,_,j,I,E,M,D,R,A,O,T,K,F,V,X,W,z,Y,B,q,re,Q,le,se,U,G,te,ae,oe,pe,ue,me,Ce,ge,fe,De,je,Be,rt,Ue,wt,Ye,tt,be,Re,st,mt,ve,Qe,ot,lt,Me,$e,At,ke,ze,Le,Ve,ct]=ds("colors",["base.50","base.100","base.150","base.200","base.250","base.300","base.350","base.400","base.450","base.500","base.550","base.600","base.650","base.700","base.750","base.800","base.850","base.900","base.950","accent.50","accent.100","accent.150","accent.200","accent.250","accent.300","accent.350","accent.400","accent.450","accent.500","accent.550","accent.600","accent.650","accent.700","accent.750","accent.800","accent.850","accent.900","accent.950","baseAlpha.50","baseAlpha.100","baseAlpha.150","baseAlpha.200","baseAlpha.250","baseAlpha.300","baseAlpha.350","baseAlpha.400","baseAlpha.450","baseAlpha.500","baseAlpha.550","baseAlpha.600","baseAlpha.650","baseAlpha.700","baseAlpha.750","baseAlpha.800","baseAlpha.850","baseAlpha.900","baseAlpha.950","accentAlpha.50","accentAlpha.100","accentAlpha.150","accentAlpha.200","accentAlpha.250","accentAlpha.300","accentAlpha.350","accentAlpha.400","accentAlpha.450","accentAlpha.500","accentAlpha.550","accentAlpha.600","accentAlpha.650","accentAlpha.700","accentAlpha.750","accentAlpha.800","accentAlpha.850","accentAlpha.900","accentAlpha.950"]);return{base50:e,base100:t,base150:n,base200:r,base250:o,base300:s,base350:i,base400:l,base450:u,base500:p,base550:h,base600:m,base650:v,base700:b,base750:y,base800:x,base850:w,base900:k,base950:_,accent50:j,accent100:I,accent150:E,accent200:M,accent250:D,accent300:R,accent350:A,accent400:O,accent450:T,accent500:K,accent550:F,accent600:V,accent650:X,accent700:W,accent750:z,accent800:Y,accent850:B,accent900:q,accent950:re,baseAlpha50:Q,baseAlpha100:le,baseAlpha150:se,baseAlpha200:U,baseAlpha250:G,baseAlpha300:te,baseAlpha350:ae,baseAlpha400:oe,baseAlpha450:pe,baseAlpha500:ue,baseAlpha550:me,baseAlpha600:Ce,baseAlpha650:ge,baseAlpha700:fe,baseAlpha750:De,baseAlpha800:je,baseAlpha850:Be,baseAlpha900:rt,baseAlpha950:Ue,accentAlpha50:wt,accentAlpha100:Ye,accentAlpha150:tt,accentAlpha200:be,accentAlpha250:Re,accentAlpha300:st,accentAlpha350:mt,accentAlpha400:ve,accentAlpha450:Qe,accentAlpha500:ot,accentAlpha550:lt,accentAlpha600:Me,accentAlpha650:$e,accentAlpha700:At,accentAlpha750:ke,accentAlpha800:ze,accentAlpha850:Le,accentAlpha900:Ve,accentAlpha950:ct}},Ae=(e,t)=>n=>n==="light"?e:t,_E=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:l,base800:u,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:y}=Vd(),{colorMode:x}=la(),[w]=ds("shadows",["dark-lg"]),[k,_,j]=ds("space",[1,2,6]),[I]=ds("radii",["base"]),[E]=ds("lineHeights",["base"]);return d.useCallback(()=>({label:{color:Ae(l,r)(x)},separatorLabel:{color:Ae(s,s)(x),"::after":{borderTopColor:Ae(r,l)(x)}},input:{border:"unset",backgroundColor:Ae(e,p)(x),borderRadius:I,borderStyle:"solid",borderWidth:"2px",borderColor:Ae(n,u)(x),color:Ae(p,t)(x),minHeight:"unset",lineHeight:E,height:"auto",paddingRight:0,paddingLeft:0,paddingInlineStart:_,paddingInlineEnd:j,paddingTop:k,paddingBottom:k,fontWeight:600,"&:hover":{borderColor:Ae(r,i)(x)},"&:focus":{borderColor:Ae(m,y)(x)},"&:is(:focus, :hover)":{borderColor:Ae(o,s)(x)},"&:focus-within":{borderColor:Ae(h,y)(x)},"&[data-disabled]":{backgroundColor:Ae(r,l)(x),color:Ae(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:Ae(t,p)(x),color:Ae(p,t)(x),button:{color:Ae(p,t)(x)},"&:hover":{backgroundColor:Ae(r,l)(x),cursor:"pointer"}},dropdown:{backgroundColor:Ae(n,u)(x),borderColor:Ae(n,u)(x),boxShadow:w},item:{backgroundColor:Ae(n,u)(x),color:Ae(u,n)(x),padding:6,"&[data-hovered]":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)},"&[data-active]":{backgroundColor:Ae(r,l)(x),"&:hover":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)}},"&[data-selected]":{backgroundColor:Ae(v,y)(x),color:Ae(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:Ae(b,b)(x),color:Ae("white",e)(x)}},"&[data-disabled]":{color:Ae(s,i)(x),cursor:"not-allowed"}},rightSection:{width:32,button:{color:Ae(p,t)(x)}}}),[h,m,v,b,y,t,n,r,o,e,s,i,l,u,p,w,x,E,I,k,_,j])},oZ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,onChange:o,label:s,disabled:i,...l}=e,u=ee(),[p,h]=d.useState(""),m=d.useCallback(x=>{x.shiftKey&&u(Ir(!0))},[u]),v=d.useCallback(x=>{x.shiftKey||u(Ir(!1))},[u]),b=d.useCallback(x=>{o&&o(x)},[o]),y=_E();return a.jsx(Rt,{label:n,placement:"top",hasArrow:!0,children:a.jsx(ay,{ref:r,label:s?a.jsx(sn,{isDisabled:i,children:a.jsx(Hn,{children:s})}):void 0,disabled:i,searchValue:p,onSearchChange:h,onChange:b,onKeyDown:m,onKeyUp:v,searchable:t,maxDropdownHeight:300,styles:y,...l})})},Kt=d.memo(oZ),sZ=ie([xe],({changeBoardModal:e})=>{const{isModalOpen:t,imagesToChange:n}=e;return{isModalOpen:t,imagesToChange:n}},we),aZ=()=>{const e=ee(),[t,n]=d.useState(),{data:r,isFetching:o}=pm(),{imagesToChange:s,isModalOpen:i}=L(sZ),[l]=X7(),[u]=Y7(),{t:p}=Z(),h=d.useMemo(()=>{const y=[{label:p("boards.uncategorized"),value:"none"}];return(r??[]).forEach(x=>y.push({label:x.board_name,value:x.board_id})),y},[r,p]),m=d.useCallback(()=>{e(zC()),e($b(!1))},[e]),v=d.useCallback(()=>{!s.length||!t||(t==="none"?u({imageDTOs:s}):l({imageDTOs:s,board_id:t}),n(null),e(zC()))},[l,e,s,u,t]),b=d.useRef(null);return a.jsx($d,{isOpen:i,onClose:m,leastDestructiveRef:b,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:p("boards.changeBoard")}),a.jsx(Vo,{children:a.jsxs($,{sx:{flexDir:"column",gap:4},children:[a.jsxs(ye,{children:["Moving ",`${s.length}`," image",`${s.length>1?"s":""}`," to board:"]}),a.jsx(Kt,{placeholder:p(o?"boards.loading":"boards.selectBoard"),disabled:o,onChange:y=>n(y),value:t,data:h})]})}),a.jsxs(gs,{children:[a.jsx(it,{ref:b,onClick:m,children:p("boards.cancel")}),a.jsx(it,{colorScheme:"accent",onClick:v,ml:3,children:p("boards.move")})]})]})})})},iZ=d.memo(aZ),lZ=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:o,formLabelProps:s,tooltip:i,helperText:l,...u}=e;return a.jsx(Rt,{label:i,hasArrow:!0,placement:"top",isDisabled:!i,children:a.jsx(sn,{isDisabled:n,width:r,alignItems:"center",...o,children:a.jsxs($,{sx:{flexDir:"column",w:"full"},children:[a.jsxs($,{sx:{alignItems:"center",w:"full"},children:[t&&a.jsx(Hn,{my:1,flexGrow:1,sx:{cursor:n?"not-allowed":"pointer",...s==null?void 0:s.sx,pe:4},...s,children:t}),a.jsx(Hx,{...u})]}),l&&a.jsx(F5,{children:a.jsx(ye,{variant:"subtext",children:l})})]})})})},Vt=d.memo(lZ),cZ=e=>{const{t}=Z(),{imageUsage:n,topMessage:r=t("gallery.currentlyInUse"),bottomMessage:o=t("gallery.featuresWillReset")}=e;return!n||!Br(n)?null:a.jsxs(a.Fragment,{children:[a.jsx(ye,{children:r}),a.jsxs(Od,{sx:{paddingInlineStart:6},children:[n.isInitialImage&&a.jsx(lo,{children:t("common.img2img")}),n.isCanvasImage&&a.jsx(lo,{children:t("common.unifiedCanvas")}),n.isControlNetImage&&a.jsx(lo,{children:t("common.controlNet")}),n.isIPAdapterImage&&a.jsx(lo,{children:t("common.ipAdapter")}),n.isNodesImage&&a.jsx(lo,{children:t("common.nodeEditor")})]}),a.jsx(ye,{children:o})]})},jE=d.memo(cZ),uZ=ie([xe,Q7],(e,t)=>{const{system:n,config:r,deleteImageModal:o}=e,{shouldConfirmOnDelete:s}=n,{canRestoreDeletedImagesFromBin:i}=r,{imagesToDelete:l,isModalOpen:u}=o,p=(l??[]).map(({image_name:m})=>Lj(e,m)),h={isInitialImage:Br(p,m=>m.isInitialImage),isCanvasImage:Br(p,m=>m.isCanvasImage),isNodesImage:Br(p,m=>m.isNodesImage),isControlNetImage:Br(p,m=>m.isControlNetImage),isIPAdapterImage:Br(p,m=>m.isIPAdapterImage)};return{shouldConfirmOnDelete:s,canRestoreDeletedImagesFromBin:i,imagesToDelete:l,imagesUsage:t,isModalOpen:u,imageUsageSummary:h}},we),dZ=()=>{const e=ee(),{t}=Z(),{shouldConfirmOnDelete:n,canRestoreDeletedImagesFromBin:r,imagesToDelete:o,imagesUsage:s,isModalOpen:i,imageUsageSummary:l}=L(uZ),u=d.useCallback(v=>e(zj(!v.target.checked)),[e]),p=d.useCallback(()=>{e(FC()),e(Z7(!1))},[e]),h=d.useCallback(()=>{!o.length||!s.length||(e(FC()),e(J7({imageDTOs:o,imagesUsage:s})))},[e,o,s]),m=d.useRef(null);return a.jsx($d,{isOpen:i,onClose:p,leastDestructiveRef:m,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:t("gallery.deleteImage")}),a.jsx(Vo,{children:a.jsxs($,{direction:"column",gap:3,children:[a.jsx(jE,{imageUsage:l}),a.jsx(Vr,{}),a.jsx(ye,{children:t(r?"gallery.deleteImageBin":"gallery.deleteImagePermanent")}),a.jsx(ye,{children:t("common.areYouSure")}),a.jsx(Vt,{label:t("common.dontAskMeAgain"),isChecked:!n,onChange:u})]})}),a.jsxs(gs,{children:[a.jsx(it,{ref:m,onClick:p,children:"Cancel"}),a.jsx(it,{colorScheme:"error",onClick:h,ml:3,children:"Delete"})]})]})})})},fZ=d.memo(dZ),PE=Pe((e,t)=>{const{role:n,tooltip:r="",tooltipProps:o,isChecked:s,...i}=e;return a.jsx(Rt,{label:r,hasArrow:!0,...o,...o!=null&&o.placement?{placement:o.placement}:{placement:"top"},children:a.jsx(ps,{ref:t,role:n,colorScheme:s?"accent":"base",...i})})});PE.displayName="IAIIconButton";const Te=d.memo(PE);var IE={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Ek=H.createContext&&H.createContext(IE),Wa=globalThis&&globalThis.__assign||function(){return Wa=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const t=L(i=>i.config.disabledTabs),n=L(i=>i.config.disabledFeatures),r=L(i=>i.config.disabledSDFeatures),o=d.useMemo(()=>n.includes(e)||r.includes(e)||t.includes(e),[n,r,t,e]),s=d.useMemo(()=>!(n.includes(e)||r.includes(e)||t.includes(e)),[n,r,t,e]);return{isFeatureDisabled:o,isFeatureEnabled:s}};function tJ(e){const{title:t,hotkey:n,description:r}=e;return a.jsxs(Ga,{sx:{gridTemplateColumns:"auto max-content",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs(Ga,{children:[a.jsx(ye,{fontWeight:600,children:t}),r&&a.jsx(ye,{sx:{fontSize:"sm"},variant:"subtext",children:r})]}),a.jsx(Ie,{sx:{fontSize:"sm",fontWeight:600,px:2,py:1},children:n})]})}function nJ({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Mr(),{t:o}=Z(),s=[{title:o("hotkeys.invoke.title"),desc:o("hotkeys.invoke.desc"),hotkey:"Ctrl+Enter"},{title:o("hotkeys.cancel.title"),desc:o("hotkeys.cancel.desc"),hotkey:"Shift+X"},{title:o("hotkeys.focusPrompt.title"),desc:o("hotkeys.focusPrompt.desc"),hotkey:"Alt+A"},{title:o("hotkeys.toggleOptions.title"),desc:o("hotkeys.toggleOptions.desc"),hotkey:"O"},{title:o("hotkeys.toggleGallery.title"),desc:o("hotkeys.toggleGallery.desc"),hotkey:"G"},{title:o("hotkeys.maximizeWorkSpace.title"),desc:o("hotkeys.maximizeWorkSpace.desc"),hotkey:"F"},{title:o("hotkeys.changeTabs.title"),desc:o("hotkeys.changeTabs.desc"),hotkey:"1-5"}],i=[{title:o("hotkeys.setPrompt.title"),desc:o("hotkeys.setPrompt.desc"),hotkey:"P"},{title:o("hotkeys.setSeed.title"),desc:o("hotkeys.setSeed.desc"),hotkey:"S"},{title:o("hotkeys.setParameters.title"),desc:o("hotkeys.setParameters.desc"),hotkey:"A"},{title:o("hotkeys.upscale.title"),desc:o("hotkeys.upscale.desc"),hotkey:"Shift+U"},{title:o("hotkeys.showInfo.title"),desc:o("hotkeys.showInfo.desc"),hotkey:"I"},{title:o("hotkeys.sendToImageToImage.title"),desc:o("hotkeys.sendToImageToImage.desc"),hotkey:"Shift+I"},{title:o("hotkeys.deleteImage.title"),desc:o("hotkeys.deleteImage.desc"),hotkey:"Del"},{title:o("hotkeys.closePanels.title"),desc:o("hotkeys.closePanels.desc"),hotkey:"Esc"}],l=[{title:o("hotkeys.previousImage.title"),desc:o("hotkeys.previousImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextImage.title"),desc:o("hotkeys.nextImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.increaseGalleryThumbSize.title"),desc:o("hotkeys.increaseGalleryThumbSize.desc"),hotkey:"Shift+Up"},{title:o("hotkeys.decreaseGalleryThumbSize.title"),desc:o("hotkeys.decreaseGalleryThumbSize.desc"),hotkey:"Shift+Down"}],u=[{title:o("hotkeys.selectBrush.title"),desc:o("hotkeys.selectBrush.desc"),hotkey:"B"},{title:o("hotkeys.selectEraser.title"),desc:o("hotkeys.selectEraser.desc"),hotkey:"E"},{title:o("hotkeys.decreaseBrushSize.title"),desc:o("hotkeys.decreaseBrushSize.desc"),hotkey:"["},{title:o("hotkeys.increaseBrushSize.title"),desc:o("hotkeys.increaseBrushSize.desc"),hotkey:"]"},{title:o("hotkeys.decreaseBrushOpacity.title"),desc:o("hotkeys.decreaseBrushOpacity.desc"),hotkey:"Shift + ["},{title:o("hotkeys.increaseBrushOpacity.title"),desc:o("hotkeys.increaseBrushOpacity.desc"),hotkey:"Shift + ]"},{title:o("hotkeys.moveTool.title"),desc:o("hotkeys.moveTool.desc"),hotkey:"V"},{title:o("hotkeys.fillBoundingBox.title"),desc:o("hotkeys.fillBoundingBox.desc"),hotkey:"Shift + F"},{title:o("hotkeys.eraseBoundingBox.title"),desc:o("hotkeys.eraseBoundingBox.desc"),hotkey:"Delete / Backspace"},{title:o("hotkeys.colorPicker.title"),desc:o("hotkeys.colorPicker.desc"),hotkey:"C"},{title:o("hotkeys.toggleSnap.title"),desc:o("hotkeys.toggleSnap.desc"),hotkey:"N"},{title:o("hotkeys.quickToggleMove.title"),desc:o("hotkeys.quickToggleMove.desc"),hotkey:"Hold Space"},{title:o("hotkeys.toggleLayer.title"),desc:o("hotkeys.toggleLayer.desc"),hotkey:"Q"},{title:o("hotkeys.clearMask.title"),desc:o("hotkeys.clearMask.desc"),hotkey:"Shift+C"},{title:o("hotkeys.hideMask.title"),desc:o("hotkeys.hideMask.desc"),hotkey:"H"},{title:o("hotkeys.showHideBoundingBox.title"),desc:o("hotkeys.showHideBoundingBox.desc"),hotkey:"Shift+H"},{title:o("hotkeys.mergeVisible.title"),desc:o("hotkeys.mergeVisible.desc"),hotkey:"Shift+M"},{title:o("hotkeys.saveToGallery.title"),desc:o("hotkeys.saveToGallery.desc"),hotkey:"Shift+S"},{title:o("hotkeys.copyToClipboard.title"),desc:o("hotkeys.copyToClipboard.desc"),hotkey:"Ctrl+C"},{title:o("hotkeys.downloadImage.title"),desc:o("hotkeys.downloadImage.desc"),hotkey:"Shift+D"},{title:o("hotkeys.undoStroke.title"),desc:o("hotkeys.undoStroke.desc"),hotkey:"Ctrl+Z"},{title:o("hotkeys.redoStroke.title"),desc:o("hotkeys.redoStroke.desc"),hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:o("hotkeys.resetView.title"),desc:o("hotkeys.resetView.desc"),hotkey:"R"},{title:o("hotkeys.previousStagingImage.title"),desc:o("hotkeys.previousStagingImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextStagingImage.title"),desc:o("hotkeys.nextStagingImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.acceptStagingImage.title"),desc:o("hotkeys.acceptStagingImage.desc"),hotkey:"Enter"}],p=[{title:o("hotkeys.addNodes.title"),desc:o("hotkeys.addNodes.desc"),hotkey:"Shift + A / Space"}],h=m=>a.jsx($,{flexDir:"column",gap:4,children:m.map((v,b)=>a.jsxs($,{flexDir:"column",px:2,gap:4,children:[a.jsx(tJ,{title:v.title,description:v.desc,hotkey:v.hotkey}),b{const{data:t}=eD(),n=d.useRef(null),r=UE(n);return a.jsxs($,{alignItems:"center",gap:5,ps:1,ref:n,children:[a.jsx(Qi,{src:Fj,alt:"invoke-ai-logo",sx:{w:"32px",h:"32px",minW:"32px",minH:"32px",userSelect:"none"}}),a.jsxs($,{sx:{gap:3,alignItems:"center"},children:[a.jsxs(ye,{sx:{fontSize:"xl",userSelect:"none"},children:["invoke ",a.jsx("strong",{children:"ai"})]}),a.jsx(nr,{children:e&&r&&t&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsx(ye,{sx:{fontWeight:600,marginTop:1,color:"base.300",fontSize:14},variant:"subtext",children:t.version})},"statusText")})]})]})},uJ=d.memo(cJ),dJ=e=>{const{tooltip:t,inputRef:n,label:r,disabled:o,required:s,...i}=e,l=_E();return a.jsx(Rt,{label:t,placement:"top",hasArrow:!0,children:a.jsx(ay,{label:r?a.jsx(sn,{isRequired:s,isDisabled:o,children:a.jsx(Hn,{children:r})}):void 0,disabled:o,ref:n,styles:l,...i})})},In=d.memo(dJ),fJ={ar:vt.t("common.langArabic",{lng:"ar"}),nl:vt.t("common.langDutch",{lng:"nl"}),en:vt.t("common.langEnglish",{lng:"en"}),fr:vt.t("common.langFrench",{lng:"fr"}),de:vt.t("common.langGerman",{lng:"de"}),he:vt.t("common.langHebrew",{lng:"he"}),it:vt.t("common.langItalian",{lng:"it"}),ja:vt.t("common.langJapanese",{lng:"ja"}),ko:vt.t("common.langKorean",{lng:"ko"}),pl:vt.t("common.langPolish",{lng:"pl"}),pt_BR:vt.t("common.langBrPortuguese",{lng:"pt_BR"}),pt:vt.t("common.langPortuguese",{lng:"pt"}),ru:vt.t("common.langRussian",{lng:"ru"}),zh_CN:vt.t("common.langSimplifiedChinese",{lng:"zh_CN"}),es:vt.t("common.langSpanish",{lng:"es"}),uk:vt.t("common.langUkranian",{lng:"ua"})};function Mo(e){const{t}=Z(),{label:n,textProps:r,useBadge:o=!1,badgeLabel:s=t("settings.experimental"),badgeProps:i,...l}=e;return a.jsxs($,{justifyContent:"space-between",py:1,children:[a.jsxs($,{gap:2,alignItems:"center",children:[a.jsx(ye,{sx:{fontSize:14,_dark:{color:"base.300"}},...r,children:n}),o&&a.jsx(da,{size:"xs",sx:{px:2,color:"base.700",bg:"accent.200",_dark:{bg:"accent.500",color:"base.200"}},...i,children:s})]}),a.jsx(Vt,{...l})]})}const pJ=e=>a.jsx($,{sx:{flexDirection:"column",gap:2,p:4,borderRadius:"base",bg:"base.100",_dark:{bg:"base.900"}},children:e.children}),Bl=d.memo(pJ);function hJ(){const e=ee(),{data:t,refetch:n}=tD(),[r,{isLoading:o}]=nD(),s=d.useCallback(()=>{r().unwrap().then(l=>{e(rD()),e(Bj()),e(Tt({title:`Cleared ${l} intermediates`,status:"info"}))})},[r,e]);d.useEffect(()=>{n()},[n]);const i=t?`Clear ${t} Intermediate${t>1?"s":""}`:"No Intermediates to Clear";return a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:"Clear Intermediates"}),a.jsx(it,{colorScheme:"warning",onClick:s,isLoading:o,isDisabled:!t,children:i}),a.jsx(ye,{fontWeight:"bold",children:"Clearing intermediates will reset your Canvas and ControlNet state."}),a.jsx(ye,{variant:"subtext",children:"Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space."}),a.jsx(ye,{variant:"subtext",children:"Your gallery images will not be deleted."})]})}const mJ=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:l,base800:u,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:y}=Vd(),{colorMode:x}=la(),[w]=ds("shadows",["dark-lg"]);return d.useCallback(()=>({label:{color:Ae(l,r)(x)},separatorLabel:{color:Ae(s,s)(x),"::after":{borderTopColor:Ae(r,l)(x)}},searchInput:{":placeholder":{color:Ae(r,l)(x)}},input:{backgroundColor:Ae(e,p)(x),borderWidth:"2px",borderColor:Ae(n,u)(x),color:Ae(p,t)(x),paddingRight:24,fontWeight:600,"&:hover":{borderColor:Ae(r,i)(x)},"&:focus":{borderColor:Ae(m,y)(x)},"&:is(:focus, :hover)":{borderColor:Ae(o,s)(x)},"&:focus-within":{borderColor:Ae(h,y)(x)},"&[data-disabled]":{backgroundColor:Ae(r,l)(x),color:Ae(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:Ae(n,u)(x),color:Ae(p,t)(x),button:{color:Ae(p,t)(x)},"&:hover":{backgroundColor:Ae(r,l)(x),cursor:"pointer"}},dropdown:{backgroundColor:Ae(n,u)(x),borderColor:Ae(n,u)(x),boxShadow:w},item:{backgroundColor:Ae(n,u)(x),color:Ae(u,n)(x),padding:6,"&[data-hovered]":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)},"&[data-active]":{backgroundColor:Ae(r,l)(x),"&:hover":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)}},"&[data-selected]":{backgroundColor:Ae(v,y)(x),color:Ae(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:Ae(b,b)(x),color:Ae("white",e)(x)}},"&[data-disabled]":{color:Ae(s,i)(x),cursor:"not-allowed"}},rightSection:{width:24,padding:20,button:{color:Ae(p,t)(x)}}}),[h,m,v,b,y,t,n,r,o,e,s,i,l,u,p,w,x])},gJ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,label:o,disabled:s,...i}=e,l=ee(),u=d.useCallback(m=>{m.shiftKey&&l(Ir(!0))},[l]),p=d.useCallback(m=>{m.shiftKey||l(Ir(!1))},[l]),h=mJ();return a.jsx(Rt,{label:n,placement:"top",hasArrow:!0,isOpen:!0,children:a.jsx(xE,{label:o?a.jsx(sn,{isDisabled:s,children:a.jsx(Hn,{children:o})}):void 0,ref:r,disabled:s,onKeyDown:u,onKeyUp:p,searchable:t,maxDropdownHeight:300,styles:h,...i})})},vJ=d.memo(gJ),bJ=rr(hm,(e,t)=>({value:t,label:e})).sort((e,t)=>e.label.localeCompare(t.label));function xJ(){const e=ee(),{t}=Z(),n=L(o=>o.ui.favoriteSchedulers),r=d.useCallback(o=>{e(oD(o))},[e]);return a.jsx(vJ,{label:t("settings.favoriteSchedulers"),value:n,data:bJ,onChange:r,clearable:!0,searchable:!0,maxSelectedValues:99,placeholder:t("settings.favoriteSchedulersPlaceholder")})}const yJ=ie([xe],({system:e,ui:t,generation:n})=>{const{shouldConfirmOnDelete:r,enableImageDebugging:o,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:l,shouldUseNSFWChecker:u,shouldUseWatermarker:p}=e,{shouldUseSliders:h,shouldShowProgressInViewer:m,shouldAutoChangeDimensions:v}=t,{shouldShowAdvancedOptions:b}=n;return{shouldConfirmOnDelete:r,enableImageDebugging:o,shouldUseSliders:h,shouldShowProgressInViewer:m,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:l,shouldShowAdvancedOptions:b,shouldUseNSFWChecker:u,shouldUseWatermarker:p,shouldAutoChangeDimensions:v}},{memoizeOptions:{resultEqualityCheck:_t}}),CJ=({children:e,config:t})=>{const n=ee(),{t:r}=Z(),[o,s]=d.useState(3),i=(t==null?void 0:t.shouldShowDeveloperSettings)??!0,l=(t==null?void 0:t.shouldShowResetWebUiText)??!0,u=(t==null?void 0:t.shouldShowAdvancedOptionsSettings)??!0,p=(t==null?void 0:t.shouldShowClearIntermediates)??!0,h=(t==null?void 0:t.shouldShowLocalizationToggle)??!0;d.useEffect(()=>{i||n(BC(!1))},[i,n]);const{isNSFWCheckerAvailable:m,isWatermarkerAvailable:v}=Hj(void 0,{selectFromResult:({data:Q})=>({isNSFWCheckerAvailable:(Q==null?void 0:Q.nsfw_methods.includes("nsfw_checker"))??!1,isWatermarkerAvailable:(Q==null?void 0:Q.watermarking_methods.includes("invisible_watermark"))??!1})}),{isOpen:b,onOpen:y,onClose:x}=Mr(),{isOpen:w,onOpen:k,onClose:_}=Mr(),{shouldConfirmOnDelete:j,enableImageDebugging:I,shouldUseSliders:E,shouldShowProgressInViewer:M,consoleLogLevel:D,shouldLogToConsole:R,shouldAntialiasProgressImage:A,shouldShowAdvancedOptions:O,shouldUseNSFWChecker:T,shouldUseWatermarker:K,shouldAutoChangeDimensions:F}=L(yJ),V=d.useCallback(()=>{Object.keys(window.localStorage).forEach(Q=>{(sD.includes(Q)||Q.startsWith(aD))&&localStorage.removeItem(Q)}),x(),k(),setInterval(()=>s(Q=>Q-1),1e3)},[x,k]);d.useEffect(()=>{o<=0&&window.location.reload()},[o]);const X=d.useCallback(Q=>{n(iD(Q))},[n]),W=d.useCallback(Q=>{n(lD(Q))},[n]),z=d.useCallback(Q=>{n(BC(Q.target.checked))},[n]),{colorMode:Y,toggleColorMode:B}=la(),q=Xt("localization").isFeatureEnabled,re=L(LP);return a.jsxs(a.Fragment,{children:[d.cloneElement(e,{onClick:y}),a.jsxs(Hi,{isOpen:b,onClose:x,size:"2xl",isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Wi,{children:[a.jsx(Ho,{bg:"none",children:r("common.settingsLabel")}),a.jsx(zd,{}),a.jsx(Vo,{children:a.jsxs($,{sx:{gap:4,flexDirection:"column"},children:[a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.general")}),a.jsx(Mo,{label:r("settings.confirmOnDelete"),isChecked:j,onChange:Q=>n(zj(Q.target.checked))}),u&&a.jsx(Mo,{label:r("settings.showAdvancedOptions"),isChecked:O,onChange:Q=>n(cD(Q.target.checked))})]}),a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.generation")}),a.jsx(xJ,{}),a.jsx(Mo,{label:"Enable NSFW Checker",isDisabled:!m,isChecked:T,onChange:Q=>n(uD(Q.target.checked))}),a.jsx(Mo,{label:"Enable Invisible Watermark",isDisabled:!v,isChecked:K,onChange:Q=>n(dD(Q.target.checked))})]}),a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.ui")}),a.jsx(Mo,{label:r("common.darkMode"),isChecked:Y==="dark",onChange:B}),a.jsx(Mo,{label:r("settings.useSlidersForAll"),isChecked:E,onChange:Q=>n(fD(Q.target.checked))}),a.jsx(Mo,{label:r("settings.showProgressInViewer"),isChecked:M,onChange:Q=>n(Wj(Q.target.checked))}),a.jsx(Mo,{label:r("settings.antialiasProgressImages"),isChecked:A,onChange:Q=>n(pD(Q.target.checked))}),a.jsx(Mo,{label:r("settings.autoChangeDimensions"),isChecked:F,onChange:Q=>n(hD(Q.target.checked))}),h&&a.jsx(In,{disabled:!q,label:r("common.languagePickerLabel"),value:re,data:Object.entries(fJ).map(([Q,le])=>({value:Q,label:le})),onChange:W})]}),i&&a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.developer")}),a.jsx(Mo,{label:r("settings.shouldLogToConsole"),isChecked:R,onChange:z}),a.jsx(In,{disabled:!R,label:r("settings.consoleLogLevel"),onChange:X,value:D,data:mD.concat()}),a.jsx(Mo,{label:r("settings.enableImageDebugging"),isChecked:I,onChange:Q=>n(gD(Q.target.checked))})]}),p&&a.jsx(hJ,{}),a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.resetWebUI")}),a.jsx(it,{colorScheme:"error",onClick:V,children:r("settings.resetWebUI")}),l&&a.jsxs(a.Fragment,{children:[a.jsx(ye,{variant:"subtext",children:r("settings.resetWebUIDesc1")}),a.jsx(ye,{variant:"subtext",children:r("settings.resetWebUIDesc2")})]})]})]})}),a.jsx(gs,{children:a.jsx(it,{onClick:x,children:r("common.close")})})]})]}),a.jsxs(Hi,{closeOnOverlayClick:!1,isOpen:w,onClose:_,isCentered:!0,closeOnEsc:!1,children:[a.jsx(Wo,{backdropFilter:"blur(40px)"}),a.jsxs(Wi,{children:[a.jsx(Ho,{}),a.jsx(Vo,{children:a.jsx($,{justifyContent:"center",children:a.jsx(ye,{fontSize:"lg",children:a.jsxs(ye,{children:[r("settings.resetComplete")," Reloading in ",o,"..."]})})})}),a.jsx(gs,{})]})]})]})},wJ=d.memo(CJ),SJ=ie(xo,e=>{const{isConnected:t,isProcessing:n,statusTranslationKey:r,currentIteration:o,totalIterations:s,currentStatusHasSteps:i}=e;return{isConnected:t,isProcessing:n,currentIteration:o,totalIterations:s,statusTranslationKey:r,currentStatusHasSteps:i}},we),Ak={ok:"green.400",working:"yellow.400",error:"red.400"},Nk={ok:"green.600",working:"yellow.500",error:"red.500"},kJ=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,statusTranslationKey:o}=L(SJ),{t:s}=Z(),i=d.useRef(null),l=d.useMemo(()=>t?"working":e?"ok":"error",[t,e]),u=d.useMemo(()=>{if(n&&r)return` (${n}/${r})`},[n,r]),p=UE(i);return a.jsxs($,{ref:i,h:"full",px:2,alignItems:"center",gap:5,children:[a.jsx(nr,{children:p&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsxs(ye,{sx:{fontSize:"sm",fontWeight:"600",pb:"1px",userSelect:"none",color:Nk[l],_dark:{color:Ak[l]}},children:[s(o),u]})},"statusText")}),a.jsx(Tn,{as:_Z,sx:{boxSize:"0.5rem",color:Nk[l],_dark:{color:Ak[l]}}})]})},_J=d.memo(kJ),jJ=()=>{const{t:e}=Z(),t=Xt("bugLink").isFeatureEnabled,n=Xt("discordLink").isFeatureEnabled,r=Xt("githubLink").isFeatureEnabled,o="http://github.com/invoke-ai/InvokeAI",s="https://discord.gg/ZmtBAhwWhy";return a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(uJ,{}),a.jsx(Za,{}),a.jsx(_J,{}),a.jsxs(Nd,{children:[a.jsx(Td,{as:Te,variant:"link","aria-label":e("accessibility.menu"),icon:a.jsx(SZ,{}),sx:{boxSize:8}}),a.jsxs(Ka,{motionProps:vc,children:[a.jsxs(Sc,{title:e("common.communityLabel"),children:[r&&a.jsx(Wt,{as:"a",href:o,target:"_blank",icon:a.jsx(gZ,{}),children:e("common.githubLabel")}),t&&a.jsx(Wt,{as:"a",href:`${o}/issues`,target:"_blank",icon:a.jsx(kZ,{}),children:e("common.reportBugLabel")}),n&&a.jsx(Wt,{as:"a",href:s,target:"_blank",icon:a.jsx(mZ,{}),children:e("common.discordLabel")})]}),a.jsxs(Sc,{title:e("common.settingsLabel"),children:[a.jsx(nJ,{children:a.jsx(Wt,{as:"button",icon:a.jsx(BZ,{}),children:e("common.hotkeysLabel")})}),a.jsx(wJ,{children:a.jsx(Wt,{as:"button",icon:a.jsx(RE,{}),children:e("common.settingsLabel")})})]})]})]})]})},PJ=d.memo(jJ),IJ=ie(xo,e=>{const{isUploading:t}=e;let n="";return t&&(n="Uploading..."),{tooltip:n,shouldShow:t}}),EJ=()=>{const{shouldShow:e,tooltip:t}=L(IJ);return e?a.jsx($,{sx:{alignItems:"center",justifyContent:"center",color:"base.600"},children:a.jsx(Rt,{label:t,placement:"right",hasArrow:!0,children:a.jsx(Xi,{})})}):null},MJ=d.memo(EJ);/*! + * OverlayScrollbars + * Version: 2.2.1 + * + * Copyright (c) Rene Haas | KingSora. + * https://github.com/KingSora + * + * Released under the MIT license. + */function Dt(e,t){if(ag(e))for(let n=0;nt(e[n],n,e));return e}function tr(e,t){const n=ni(t);if(Ko(t)||n){let o=n?"":{};if(e){const s=window.getComputedStyle(e,null);o=n?zk(e,s,t):t.reduce((i,l)=>(i[l]=zk(e,s,l),i),o)}return o}e&&Dt(Gr(t),o=>GJ(e,o,t[o]))}const Ro=(e,t)=>{const{o:n,u:r,_:o}=e;let s=n,i;const l=(h,m)=>{const v=s,b=h,y=m||(r?!r(v,b):v!==b);return(y||o)&&(s=b,i=v),[s,y,i]};return[t?h=>l(t(s,i),h):l,h=>[s,!!h,i]]},Gd=()=>typeof window<"u",GE=Gd()&&Node.ELEMENT_NODE,{toString:OJ,hasOwnProperty:Iv}=Object.prototype,pa=e=>e===void 0,sg=e=>e===null,DJ=e=>pa(e)||sg(e)?`${e}`:OJ.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase(),Va=e=>typeof e=="number",ni=e=>typeof e=="string",iy=e=>typeof e=="boolean",Go=e=>typeof e=="function",Ko=e=>Array.isArray(e),ld=e=>typeof e=="object"&&!Ko(e)&&!sg(e),ag=e=>{const t=!!e&&e.length,n=Va(t)&&t>-1&&t%1==0;return Ko(e)||!Go(e)&&n?t>0&&ld(e)?t-1 in e:!0:!1},nb=e=>{if(!e||!ld(e)||DJ(e)!=="object")return!1;let t;const n="constructor",r=e[n],o=r&&r.prototype,s=Iv.call(e,n),i=o&&Iv.call(o,"isPrototypeOf");if(r&&!s&&!i)return!1;for(t in e);return pa(t)||Iv.call(e,t)},Yh=e=>{const t=HTMLElement;return e?t?e instanceof t:e.nodeType===GE:!1},ig=e=>{const t=Element;return e?t?e instanceof t:e.nodeType===GE:!1},ly=(e,t,n)=>e.indexOf(t,n),zt=(e,t,n)=>(!n&&!ni(t)&&ag(t)?Array.prototype.push.apply(e,t):e.push(t),e),Gi=e=>{const t=Array.from,n=[];return t&&e?t(e):(e instanceof Set?e.forEach(r=>{zt(n,r)}):Dt(e,r=>{zt(n,r)}),n)},cy=e=>!!e&&e.length===0,js=(e,t,n)=>{Dt(e,o=>o&&o.apply(void 0,t||[])),!n&&(e.length=0)},lg=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Gr=e=>e?Object.keys(e):[],fn=(e,t,n,r,o,s,i)=>{const l=[t,n,r,o,s,i];return(typeof e!="object"||sg(e))&&!Go(e)&&(e={}),Dt(l,u=>{Dt(Gr(u),p=>{const h=u[p];if(e===h)return!0;const m=Ko(h);if(h&&(nb(h)||m)){const v=e[p];let b=v;m&&!Ko(v)?b=[]:!m&&!nb(v)&&(b={}),e[p]=fn(b,h)}else e[p]=h})}),e},uy=e=>{for(const t in e)return!1;return!0},KE=(e,t,n,r)=>{if(pa(r))return n?n[e]:t;n&&(ni(r)||Va(r))&&(n[e]=r)},er=(e,t,n)=>{if(pa(n))return e?e.getAttribute(t):null;e&&e.setAttribute(t,n)},Cr=(e,t)=>{e&&e.removeAttribute(t)},Ei=(e,t,n,r)=>{if(n){const o=er(e,t)||"",s=new Set(o.split(" "));s[r?"add":"delete"](n);const i=Gi(s).join(" ").trim();er(e,t,i)}},RJ=(e,t,n)=>{const r=er(e,t)||"";return new Set(r.split(" ")).has(n)},zo=(e,t)=>KE("scrollLeft",0,e,t),Zs=(e,t)=>KE("scrollTop",0,e,t),rb=Gd()&&Element.prototype,qE=(e,t)=>{const n=[],r=t?ig(t)?t:null:document;return r?zt(n,r.querySelectorAll(e)):n},AJ=(e,t)=>{const n=t?ig(t)?t:null:document;return n?n.querySelector(e):null},Qh=(e,t)=>ig(e)?(rb.matches||rb.msMatchesSelector).call(e,t):!1,dy=e=>e?Gi(e.childNodes):[],ra=e=>e?e.parentElement:null,ql=(e,t)=>{if(ig(e)){const n=rb.closest;if(n)return n.call(e,t);do{if(Qh(e,t))return e;e=ra(e)}while(e)}return null},NJ=(e,t,n)=>{const r=e&&ql(e,t),o=e&&AJ(n,r),s=ql(o,t)===r;return r&&o?r===e||o===e||s&&ql(ql(e,n),t)!==r:!1},fy=(e,t,n)=>{if(n&&e){let r=t,o;ag(n)?(o=document.createDocumentFragment(),Dt(n,s=>{s===r&&(r=s.previousSibling),o.appendChild(s)})):o=n,t&&(r?r!==t&&(r=r.nextSibling):r=e.firstChild),e.insertBefore(o,r||null)}},fo=(e,t)=>{fy(e,null,t)},TJ=(e,t)=>{fy(ra(e),e,t)},Tk=(e,t)=>{fy(ra(e),e&&e.nextSibling,t)},bs=e=>{if(ag(e))Dt(Gi(e),t=>bs(t));else if(e){const t=ra(e);t&&t.removeChild(e)}},Mi=e=>{const t=document.createElement("div");return e&&er(t,"class",e),t},XE=e=>{const t=Mi();return t.innerHTML=e.trim(),Dt(dy(t),n=>bs(n))},ob=e=>e.charAt(0).toUpperCase()+e.slice(1),$J=()=>Mi().style,LJ=["-webkit-","-moz-","-o-","-ms-"],zJ=["WebKit","Moz","O","MS","webkit","moz","o","ms"],Ev={},Mv={},FJ=e=>{let t=Mv[e];if(lg(Mv,e))return t;const n=ob(e),r=$J();return Dt(LJ,o=>{const s=o.replace(/-/g,"");return!(t=[e,o+e,s+n,ob(s)+n].find(l=>r[l]!==void 0))}),Mv[e]=t||""},Kd=e=>{if(Gd()){let t=Ev[e]||window[e];return lg(Ev,e)||(Dt(zJ,n=>(t=t||window[n+ob(e)],!t)),Ev[e]=t),t}},BJ=Kd("MutationObserver"),$k=Kd("IntersectionObserver"),Xl=Kd("ResizeObserver"),YE=Kd("cancelAnimationFrame"),QE=Kd("requestAnimationFrame"),Zh=Gd()&&window.setTimeout,sb=Gd()&&window.clearTimeout,HJ=/[^\x20\t\r\n\f]+/g,ZE=(e,t,n)=>{const r=e&&e.classList;let o,s=0,i=!1;if(r&&t&&ni(t)){const l=t.match(HJ)||[];for(i=l.length>0;o=l[s++];)i=!!n(r,o)&&i}return i},py=(e,t)=>{ZE(e,t,(n,r)=>n.remove(r))},Js=(e,t)=>(ZE(e,t,(n,r)=>n.add(r)),py.bind(0,e,t)),cg=(e,t,n,r)=>{if(e&&t){let o=!0;return Dt(n,s=>{const i=r?r(e[s]):e[s],l=r?r(t[s]):t[s];i!==l&&(o=!1)}),o}return!1},JE=(e,t)=>cg(e,t,["w","h"]),eM=(e,t)=>cg(e,t,["x","y"]),WJ=(e,t)=>cg(e,t,["t","r","b","l"]),Lk=(e,t,n)=>cg(e,t,["width","height"],n&&(r=>Math.round(r))),co=()=>{},Hl=e=>{let t;const n=e?Zh:QE,r=e?sb:YE;return[o=>{r(t),t=n(o,Go(e)?e():e)},()=>r(t)]},hy=(e,t)=>{let n,r,o,s=co;const{v:i,g:l,p:u}=t||{},p=function(y){s(),sb(n),n=r=void 0,s=co,e.apply(this,y)},h=b=>u&&r?u(r,b):b,m=()=>{s!==co&&p(h(o)||o)},v=function(){const y=Gi(arguments),x=Go(i)?i():i;if(Va(x)&&x>=0){const k=Go(l)?l():l,_=Va(k)&&k>=0,j=x>0?Zh:QE,I=x>0?sb:YE,M=h(y)||y,D=p.bind(0,M);s();const R=j(D,x);s=()=>I(R),_&&!n&&(n=Zh(m,k)),r=o=M}else p(y)};return v.m=m,v},VJ={opacity:1,zindex:1},bp=(e,t)=>{const n=t?parseFloat(e):parseInt(e,10);return n===n?n:0},UJ=(e,t)=>!VJ[e.toLowerCase()]&&Va(t)?`${t}px`:t,zk=(e,t,n)=>t!=null?t[n]||t.getPropertyValue(n):e.style[n],GJ=(e,t,n)=>{try{const{style:r}=e;pa(r[t])?r.setProperty(t,n):r[t]=UJ(t,n)}catch{}},cd=e=>tr(e,"direction")==="rtl",Fk=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",s=`${r}top${o}`,i=`${r}right${o}`,l=`${r}bottom${o}`,u=`${r}left${o}`,p=tr(e,[s,i,l,u]);return{t:bp(p[s],!0),r:bp(p[i],!0),b:bp(p[l],!0),l:bp(p[u],!0)}},{round:Bk}=Math,my={w:0,h:0},ud=e=>e?{w:e.offsetWidth,h:e.offsetHeight}:my,Bp=e=>e?{w:e.clientWidth,h:e.clientHeight}:my,Jh=e=>e?{w:e.scrollWidth,h:e.scrollHeight}:my,em=e=>{const t=parseFloat(tr(e,"height"))||0,n=parseFloat(tr(e,"width"))||0;return{w:n-Bk(n),h:t-Bk(t)}},fs=e=>e.getBoundingClientRect();let xp;const KJ=()=>{if(pa(xp)){xp=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get(){xp=!0}}))}catch{}}return xp},tM=e=>e.split(" "),qJ=(e,t,n,r)=>{Dt(tM(t),o=>{e.removeEventListener(o,n,r)})},$n=(e,t,n,r)=>{var o;const s=KJ(),i=(o=s&&r&&r.S)!=null?o:s,l=r&&r.$||!1,u=r&&r.C||!1,p=[],h=s?{passive:i,capture:l}:l;return Dt(tM(t),m=>{const v=u?b=>{e.removeEventListener(m,v,l),n&&n(b)}:n;zt(p,qJ.bind(null,e,m,v,l)),e.addEventListener(m,v,h)}),js.bind(0,p)},nM=e=>e.stopPropagation(),rM=e=>e.preventDefault(),XJ={x:0,y:0},Ov=e=>{const t=e?fs(e):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:XJ},Hk=(e,t)=>{Dt(Ko(t)?t:[t],e)},gy=e=>{const t=new Map,n=(s,i)=>{if(s){const l=t.get(s);Hk(u=>{l&&l[u?"delete":"clear"](u)},i)}else t.forEach(l=>{l.clear()}),t.clear()},r=(s,i)=>{if(ni(s)){const p=t.get(s)||new Set;return t.set(s,p),Hk(h=>{Go(h)&&p.add(h)},i),n.bind(0,s,i)}iy(i)&&i&&n();const l=Gr(s),u=[];return Dt(l,p=>{const h=s[p];h&&zt(u,r(p,h))}),js.bind(0,u)},o=(s,i)=>{const l=t.get(s);Dt(Gi(l),u=>{i&&!cy(i)?u.apply(0,i):u()})};return r(e||{}),[r,n,o]},Wk=e=>JSON.stringify(e,(t,n)=>{if(Go(n))throw new Error;return n}),YJ={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"never",autoHideDelay:1300,dragScroll:!0,clickScroll:!1,pointers:["mouse","touch","pen"]}},oM=(e,t)=>{const n={},r=Gr(t).concat(Gr(e));return Dt(r,o=>{const s=e[o],i=t[o];if(ld(s)&&ld(i))fn(n[o]={},oM(s,i)),uy(n[o])&&delete n[o];else if(lg(t,o)&&i!==s){let l=!0;if(Ko(s)||Ko(i))try{Wk(s)===Wk(i)&&(l=!1)}catch{}l&&(n[o]=i)}}),n},sM="os-environment",aM=`${sM}-flexbox-glue`,QJ=`${aM}-max`,iM="os-scrollbar-hidden",Dv="data-overlayscrollbars-initialize",Ao="data-overlayscrollbars",lM=`${Ao}-overflow-x`,cM=`${Ao}-overflow-y`,cc="overflowVisible",ZJ="scrollbarHidden",Vk="scrollbarPressed",tm="updating",Oa="data-overlayscrollbars-viewport",Rv="arrange",uM="scrollbarHidden",uc=cc,ab="data-overlayscrollbars-padding",JJ=uc,Uk="data-overlayscrollbars-content",vy="os-size-observer",eee=`${vy}-appear`,tee=`${vy}-listener`,nee="os-trinsic-observer",ree="os-no-css-vars",oee="os-theme-none",Dr="os-scrollbar",see=`${Dr}-rtl`,aee=`${Dr}-horizontal`,iee=`${Dr}-vertical`,dM=`${Dr}-track`,by=`${Dr}-handle`,lee=`${Dr}-visible`,cee=`${Dr}-cornerless`,Gk=`${Dr}-transitionless`,Kk=`${Dr}-interaction`,qk=`${Dr}-unusable`,Xk=`${Dr}-auto-hidden`,Yk=`${Dr}-wheel`,uee=`${dM}-interactive`,dee=`${by}-interactive`,fM={},Ki=()=>fM,fee=e=>{const t=[];return Dt(Ko(e)?e:[e],n=>{const r=Gr(n);Dt(r,o=>{zt(t,fM[o]=n[o])})}),t},pee="__osOptionsValidationPlugin",hee="__osSizeObserverPlugin",xy="__osScrollbarsHidingPlugin",mee="__osClickScrollPlugin";let Av;const Qk=(e,t,n,r)=>{fo(e,t);const o=Bp(t),s=ud(t),i=em(n);return r&&bs(t),{x:s.h-o.h+i.h,y:s.w-o.w+i.w}},gee=e=>{let t=!1;const n=Js(e,iM);try{t=tr(e,FJ("scrollbar-width"))==="none"||window.getComputedStyle(e,"::-webkit-scrollbar").getPropertyValue("display")==="none"}catch{}return n(),t},vee=(e,t)=>{const n="hidden";tr(e,{overflowX:n,overflowY:n,direction:"rtl"}),zo(e,0);const r=Ov(e),o=Ov(t);zo(e,-999);const s=Ov(t);return{i:r.x===o.x,n:o.x!==s.x}},bee=(e,t)=>{const n=Js(e,aM),r=fs(e),o=fs(t),s=Lk(o,r,!0),i=Js(e,QJ),l=fs(e),u=fs(t),p=Lk(u,l,!0);return n(),i(),s&&p},xee=()=>{const{body:e}=document,n=XE(`
`)[0],r=n.firstChild,[o,,s]=gy(),[i,l]=Ro({o:Qk(e,n,r),u:eM},Qk.bind(0,e,n,r,!0)),[u]=l(),p=gee(n),h={x:u.x===0,y:u.y===0},m={elements:{host:null,padding:!p,viewport:_=>p&&_===_.ownerDocument.body&&_,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},v=fn({},YJ),b=fn.bind(0,{},v),y=fn.bind(0,{},m),x={k:u,A:h,I:p,L:tr(n,"zIndex")==="-1",B:vee(n,r),V:bee(n,r),Y:o.bind(0,"z"),j:o.bind(0,"r"),N:y,q:_=>fn(m,_)&&y(),F:b,G:_=>fn(v,_)&&b(),X:fn({},m),U:fn({},v)},w=window.addEventListener,k=hy(_=>s(_?"z":"r"),{v:33,g:99});if(Cr(n,"style"),bs(n),w("resize",k.bind(0,!1)),!p&&(!h.x||!h.y)){let _;w("resize",()=>{const j=Ki()[xy];_=_||j&&j.R(),_&&_(x,i,k.bind(0,!0))})}return x},Rr=()=>(Av||(Av=xee()),Av),yy=(e,t)=>Go(t)?t.apply(0,e):t,yee=(e,t,n,r)=>{const o=pa(r)?n:r;return yy(e,o)||t.apply(0,e)},pM=(e,t,n,r)=>{const o=pa(r)?n:r,s=yy(e,o);return!!s&&(Yh(s)?s:t.apply(0,e))},Cee=(e,t,n)=>{const{nativeScrollbarsOverlaid:r,body:o}=n||{},{A:s,I:i}=Rr(),{nativeScrollbarsOverlaid:l,body:u}=t,p=r??l,h=pa(o)?u:o,m=(s.x||s.y)&&p,v=e&&(sg(h)?!i:h);return!!m||!!v},Cy=new WeakMap,wee=(e,t)=>{Cy.set(e,t)},See=e=>{Cy.delete(e)},hM=e=>Cy.get(e),Zk=(e,t)=>e?t.split(".").reduce((n,r)=>n&&lg(n,r)?n[r]:void 0,e):void 0,ib=(e,t,n)=>r=>[Zk(e,r),n||Zk(t,r)!==void 0],mM=e=>{let t=e;return[()=>t,n=>{t=fn({},t,n)}]},yp="tabindex",Cp=Mi.bind(0,""),Nv=e=>{fo(ra(e),dy(e)),bs(e)},kee=e=>{const t=Rr(),{N:n,I:r}=t,o=Ki()[xy],s=o&&o.T,{elements:i}=n(),{host:l,padding:u,viewport:p,content:h}=i,m=Yh(e),v=m?{}:e,{elements:b}=v,{host:y,padding:x,viewport:w,content:k}=b||{},_=m?e:v.target,j=Qh(_,"textarea"),I=_.ownerDocument,E=I.documentElement,M=_===I.body,D=I.defaultView,R=yee.bind(0,[_]),A=pM.bind(0,[_]),O=yy.bind(0,[_]),T=R.bind(0,Cp,p),K=A.bind(0,Cp,h),F=T(w),V=F===_,X=V&&M,W=!V&&K(k),z=!V&&Yh(F)&&F===W,Y=z&&!!O(h),B=Y?T():F,q=Y?W:K(),Q=X?E:z?B:F,le=j?R(Cp,l,y):_,se=X?Q:le,U=z?q:W,G=I.activeElement,te=!V&&D.top===D&&G===_,ae={W:_,Z:se,J:Q,K:!V&&A(Cp,u,x),tt:U,nt:!V&&!r&&s&&s(t),ot:X?E:Q,st:X?I:Q,et:D,ct:I,rt:j,it:M,lt:m,ut:V,dt:z,ft:(Ye,tt)=>RJ(Q,V?Ao:Oa,V?tt:Ye),_t:(Ye,tt,be)=>Ei(Q,V?Ao:Oa,V?tt:Ye,be)},oe=Gr(ae).reduce((Ye,tt)=>{const be=ae[tt];return zt(Ye,be&&!ra(be)?be:!1)},[]),pe=Ye=>Ye?ly(oe,Ye)>-1:null,{W:ue,Z:me,K:Ce,J:ge,tt:fe,nt:De}=ae,je=[()=>{Cr(me,Ao),Cr(me,Dv),Cr(ue,Dv),M&&(Cr(E,Ao),Cr(E,Dv))}],Be=j&&pe(me);let rt=j?ue:dy([fe,ge,Ce,me,ue].find(Ye=>pe(Ye)===!1));const Ue=X?ue:fe||ge;return[ae,()=>{er(me,Ao,V?"viewport":"host"),er(Ce,ab,""),er(fe,Uk,""),V||er(ge,Oa,"");const Ye=M&&!V?Js(ra(_),iM):co;if(Be&&(Tk(ue,me),zt(je,()=>{Tk(me,ue),bs(me)})),fo(Ue,rt),fo(me,Ce),fo(Ce||me,!V&&ge),fo(ge,fe),zt(je,()=>{Ye(),Cr(Ce,ab),Cr(fe,Uk),Cr(ge,lM),Cr(ge,cM),Cr(ge,Oa),pe(fe)&&Nv(fe),pe(ge)&&Nv(ge),pe(Ce)&&Nv(Ce)}),r&&!V&&(Ei(ge,Oa,uM,!0),zt(je,Cr.bind(0,ge,Oa))),De&&(TJ(ge,De),zt(je,bs.bind(0,De))),te){const tt=er(ge,yp);er(ge,yp,"-1"),ge.focus();const be=()=>tt?er(ge,yp,tt):Cr(ge,yp),Re=$n(I,"pointerdown keydown",()=>{be(),Re()});zt(je,[be,Re])}else G&&G.focus&&G.focus();rt=0},js.bind(0,je)]},_ee=(e,t)=>{const{tt:n}=e,[r]=t;return o=>{const{V:s}=Rr(),{ht:i}=r(),{vt:l}=o,u=(n||!s)&&l;return u&&tr(n,{height:i?"":"100%"}),{gt:u,wt:u}}},jee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,ut:l}=e,[u,p]=Ro({u:WJ,o:Fk()},Fk.bind(0,o,"padding",""));return(h,m,v)=>{let[b,y]=p(v);const{I:x,V:w}=Rr(),{bt:k}=n(),{gt:_,wt:j,yt:I}=h,[E,M]=m("paddingAbsolute");(_||y||!w&&j)&&([b,y]=u(v));const R=!l&&(M||I||y);if(R){const A=!E||!s&&!x,O=b.r+b.l,T=b.t+b.b,K={marginRight:A&&!k?-O:0,marginBottom:A?-T:0,marginLeft:A&&k?-O:0,top:A?-b.t:0,right:A?k?-b.r:"auto":0,left:A?k?"auto":-b.l:0,width:A?`calc(100% + ${O}px)`:""},F={paddingTop:A?b.t:0,paddingRight:A?b.r:0,paddingBottom:A?b.b:0,paddingLeft:A?b.l:0};tr(s||i,K),tr(i,F),r({K:b,St:!A,P:s?F:fn({},K,F)})}return{xt:R}}},{max:lb}=Math,Da=lb.bind(0,0),gM="visible",Jk="hidden",Pee=42,wp={u:JE,o:{w:0,h:0}},Iee={u:eM,o:{x:Jk,y:Jk}},Eee=(e,t)=>{const n=window.devicePixelRatio%1!==0?1:0,r={w:Da(e.w-t.w),h:Da(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},Sp=e=>e.indexOf(gM)===0,Mee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,nt:l,ut:u,_t:p,it:h,et:m}=e,{k:v,V:b,I:y,A:x}=Rr(),w=Ki()[xy],k=!u&&!y&&(x.x||x.y),_=h&&u,[j,I]=Ro(wp,em.bind(0,i)),[E,M]=Ro(wp,Jh.bind(0,i)),[D,R]=Ro(wp),[A,O]=Ro(wp),[T]=Ro(Iee),K=(Y,B)=>{if(tr(i,{height:""}),B){const{St:q,K:re}=n(),{$t:Q,D:le}=Y,se=em(o),U=Bp(o),G=tr(i,"boxSizing")==="content-box",te=q||G?re.b+re.t:0,ae=!(x.x&&G);tr(i,{height:U.h+se.h+(Q.x&&ae?le.x:0)-te})}},F=(Y,B)=>{const q=!y&&!Y?Pee:0,re=(pe,ue,me)=>{const Ce=tr(i,pe),fe=(B?B[pe]:Ce)==="scroll";return[Ce,fe,fe&&!y?ue?q:me:0,ue&&!!q]},[Q,le,se,U]=re("overflowX",x.x,v.x),[G,te,ae,oe]=re("overflowY",x.y,v.y);return{Ct:{x:Q,y:G},$t:{x:le,y:te},D:{x:se,y:ae},M:{x:U,y:oe}}},V=(Y,B,q,re)=>{const Q=(te,ae)=>{const oe=Sp(te),pe=ae&&oe&&te.replace(`${gM}-`,"")||"";return[ae&&!oe?te:"",Sp(pe)?"hidden":pe]},[le,se]=Q(q.x,B.x),[U,G]=Q(q.y,B.y);return re.overflowX=se&&U?se:le,re.overflowY=G&&le?G:U,F(Y,re)},X=(Y,B,q,re)=>{const{D:Q,M:le}=Y,{x:se,y:U}=le,{x:G,y:te}=Q,{P:ae}=n(),oe=B?"marginLeft":"marginRight",pe=B?"paddingLeft":"paddingRight",ue=ae[oe],me=ae.marginBottom,Ce=ae[pe],ge=ae.paddingBottom;re.width=`calc(100% + ${te+-1*ue}px)`,re[oe]=-te+ue,re.marginBottom=-G+me,q&&(re[pe]=Ce+(U?te:0),re.paddingBottom=ge+(se?G:0))},[W,z]=w?w.H(k,b,i,l,n,F,X):[()=>k,()=>[co]];return(Y,B,q)=>{const{gt:re,Ot:Q,wt:le,xt:se,vt:U,yt:G}=Y,{ht:te,bt:ae}=n(),[oe,pe]=B("showNativeOverlaidScrollbars"),[ue,me]=B("overflow"),Ce=oe&&x.x&&x.y,ge=!u&&!b&&(re||le||Q||pe||U),fe=Sp(ue.x),De=Sp(ue.y),je=fe||De;let Be=I(q),rt=M(q),Ue=R(q),wt=O(q),Ye;if(pe&&y&&p(uM,ZJ,!Ce),ge&&(Ye=F(Ce),K(Ye,te)),re||se||le||G||pe){je&&p(uc,cc,!1);const[ke,ze]=z(Ce,ae,Ye),[Le,Ve]=Be=j(q),[ct,bn]=rt=E(q),jt=Bp(i);let Pt=ct,sr=jt;ke(),(bn||Ve||pe)&&ze&&!Ce&&W(ze,ct,Le,ae)&&(sr=Bp(i),Pt=Jh(i));const Mn={w:Da(lb(ct.w,Pt.w)+Le.w),h:Da(lb(ct.h,Pt.h)+Le.h)},pn={w:Da((_?m.innerWidth:sr.w+Da(jt.w-ct.w))+Le.w),h:Da((_?m.innerHeight+Le.h:sr.h+Da(jt.h-ct.h))+Le.h)};wt=A(pn),Ue=D(Eee(Mn,pn),q)}const[tt,be]=wt,[Re,st]=Ue,[mt,ve]=rt,[Qe,ot]=Be,lt={x:Re.w>0,y:Re.h>0},Me=fe&&De&&(lt.x||lt.y)||fe&<.x&&!lt.y||De&<.y&&!lt.x;if(se||G||ot||ve||be||st||me||pe||ge){const ke={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},ze=V(Ce,lt,ue,ke),Le=W(ze,mt,Qe,ae);u||X(ze,ae,Le,ke),ge&&K(ze,te),u?(er(o,lM,ke.overflowX),er(o,cM,ke.overflowY)):tr(i,ke)}Ei(o,Ao,cc,Me),Ei(s,ab,JJ,Me),u||Ei(i,Oa,uc,je);const[$e,At]=T(F(Ce).Ct);return r({Ct:$e,zt:{x:tt.w,y:tt.h},Tt:{x:Re.w,y:Re.h},Et:lt}),{It:At,At:be,Lt:st}}},e_=(e,t,n)=>{const r={},o=t||{},s=Gr(e).concat(Gr(o));return Dt(s,i=>{const l=e[i],u=o[i];r[i]=!!(n||l||u)}),r},Oee=(e,t)=>{const{W:n,J:r,_t:o,ut:s}=e,{I:i,A:l,V:u}=Rr(),p=!i&&(l.x||l.y),h=[_ee(e,t),jee(e,t),Mee(e,t)];return(m,v,b)=>{const y=e_(fn({gt:!1,xt:!1,yt:!1,vt:!1,At:!1,Lt:!1,It:!1,Ot:!1,wt:!1},v),{},b),x=p||!u,w=x&&zo(r),k=x&&Zs(r);o("",tm,!0);let _=y;return Dt(h,j=>{_=e_(_,j(_,m,!!b)||{},b)}),zo(r,w),Zs(r,k),o("",tm),s||(zo(n,0),Zs(n,0)),_}},Dee=(e,t,n)=>{let r,o=!1;const s=()=>{o=!0},i=l=>{if(n){const u=n.reduce((p,h)=>{if(h){const[m,v]=h,b=v&&m&&(l?l(m):qE(m,e));b&&b.length&&v&&ni(v)&&zt(p,[b,v.trim()],!0)}return p},[]);Dt(u,p=>Dt(p[0],h=>{const m=p[1],v=r.get(h)||[];if(e.contains(h)){const y=$n(h,m,x=>{o?(y(),r.delete(h)):t(x)});r.set(h,zt(v,y))}else js(v),r.delete(h)}))}};return n&&(r=new WeakMap,i()),[s,i]},t_=(e,t,n,r)=>{let o=!1;const{Ht:s,Pt:i,Dt:l,Mt:u,Rt:p,kt:h}=r||{},m=hy(()=>{o&&n(!0)},{v:33,g:99}),[v,b]=Dee(e,m,l),y=s||[],x=i||[],w=y.concat(x),k=(j,I)=>{const E=p||co,M=h||co,D=new Set,R=new Set;let A=!1,O=!1;if(Dt(j,T=>{const{attributeName:K,target:F,type:V,oldValue:X,addedNodes:W,removedNodes:z}=T,Y=V==="attributes",B=V==="childList",q=e===F,re=Y&&ni(K)?er(F,K):0,Q=re!==0&&X!==re,le=ly(x,K)>-1&&Q;if(t&&(B||!q)){const se=!Y,U=Y&&Q,G=U&&u&&Qh(F,u),ae=(G?!E(F,K,X,re):se||U)&&!M(T,!!G,e,r);Dt(W,oe=>D.add(oe)),Dt(z,oe=>D.add(oe)),O=O||ae}!t&&q&&Q&&!E(F,K,X,re)&&(R.add(K),A=A||le)}),D.size>0&&b(T=>Gi(D).reduce((K,F)=>(zt(K,qE(T,F)),Qh(F,T)?zt(K,F):K),[])),t)return!I&&O&&n(!1),[!1];if(R.size>0||A){const T=[Gi(R),A];return!I&&n.apply(0,T),T}},_=new BJ(j=>k(j));return _.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:w,subtree:t,childList:t,characterData:t}),o=!0,[()=>{o&&(v(),_.disconnect(),o=!1)},()=>{if(o){m.m();const j=_.takeRecords();return!cy(j)&&k(j,!0)}}]},kp=3333333,_p=e=>e&&(e.height||e.width),vM=(e,t,n)=>{const{Bt:r=!1,Vt:o=!1}=n||{},s=Ki()[hee],{B:i}=Rr(),u=XE(`
`)[0],p=u.firstChild,h=cd.bind(0,e),[m]=Ro({o:void 0,_:!0,u:(x,w)=>!(!x||!_p(x)&&_p(w))}),v=x=>{const w=Ko(x)&&x.length>0&&ld(x[0]),k=!w&&iy(x[0]);let _=!1,j=!1,I=!0;if(w){const[E,,M]=m(x.pop().contentRect),D=_p(E),R=_p(M);_=!M||!D,j=!R&&D,I=!_}else k?[,I]=x:j=x===!0;if(r&&I){const E=k?x[0]:cd(u);zo(u,E?i.n?-kp:i.i?0:kp:kp),Zs(u,kp)}_||t({gt:!k,Yt:k?x:void 0,Vt:!!j})},b=[];let y=o?v:!1;return[()=>{js(b),bs(u)},()=>{if(Xl){const x=new Xl(v);x.observe(p),zt(b,()=>{x.disconnect()})}else if(s){const[x,w]=s.O(p,v,o);y=x,zt(b,w)}if(r){const[x]=Ro({o:void 0},h);zt(b,$n(u,"scroll",w=>{const k=x(),[_,j,I]=k;j&&(py(p,"ltr rtl"),_?Js(p,"rtl"):Js(p,"ltr"),v([!!_,j,I])),nM(w)}))}y&&(Js(u,eee),zt(b,$n(u,"animationstart",y,{C:!!Xl}))),(Xl||s)&&fo(e,u)}]},Ree=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,Aee=(e,t)=>{let n;const r=Mi(nee),o=[],[s]=Ro({o:!1}),i=(u,p)=>{if(u){const h=s(Ree(u)),[,m]=h;if(m)return!p&&t(h),[h]}},l=(u,p)=>{if(u&&u.length>0)return i(u.pop(),p)};return[()=>{js(o),bs(r)},()=>{if($k)n=new $k(u=>l(u),{root:e}),n.observe(r),zt(o,()=>{n.disconnect()});else{const u=()=>{const m=ud(r);i(m)},[p,h]=vM(r,u);zt(o,p),h(),u()}fo(e,r)},()=>{if(n)return l(n.takeRecords(),!0)}]},n_=`[${Ao}]`,Nee=`[${Oa}]`,Tv=["tabindex"],r_=["wrap","cols","rows"],$v=["id","class","style","open"],Tee=(e,t,n)=>{let r,o,s;const{Z:i,J:l,tt:u,rt:p,ut:h,ft:m,_t:v}=e,{V:b}=Rr(),[y]=Ro({u:JE,o:{w:0,h:0}},()=>{const V=m(uc,cc),X=m(Rv,""),W=X&&zo(l),z=X&&Zs(l);v(uc,cc),v(Rv,""),v("",tm,!0);const Y=Jh(u),B=Jh(l),q=em(l);return v(uc,cc,V),v(Rv,"",X),v("",tm),zo(l,W),Zs(l,z),{w:B.w+Y.w+q.w,h:B.h+Y.h+q.h}}),x=p?r_:$v.concat(r_),w=hy(n,{v:()=>r,g:()=>o,p(V,X){const[W]=V,[z]=X;return[Gr(W).concat(Gr(z)).reduce((Y,B)=>(Y[B]=W[B]||z[B],Y),{})]}}),k=V=>{Dt(V||Tv,X=>{if(ly(Tv,X)>-1){const W=er(i,X);ni(W)?er(l,X,W):Cr(l,X)}})},_=(V,X)=>{const[W,z]=V,Y={vt:z};return t({ht:W}),!X&&n(Y),Y},j=({gt:V,Yt:X,Vt:W})=>{const z=!V||W?n:w;let Y=!1;if(X){const[B,q]=X;Y=q,t({bt:B})}z({gt:V,yt:Y})},I=(V,X)=>{const[,W]=y(),z={wt:W};return W&&!X&&(V?n:w)(z),z},E=(V,X,W)=>{const z={Ot:X};return X?!W&&w(z):h||k(V),z},[M,D,R]=u||!b?Aee(i,_):[co,co,co],[A,O]=h?[co,co]:vM(i,j,{Vt:!0,Bt:!0}),[T,K]=t_(i,!1,E,{Pt:$v,Ht:$v.concat(Tv)}),F=h&&Xl&&new Xl(j.bind(0,{gt:!0}));return F&&F.observe(i),k(),[()=>{M(),A(),s&&s[0](),F&&F.disconnect(),T()},()=>{O(),D()},()=>{const V={},X=K(),W=R(),z=s&&s[1]();return X&&fn(V,E.apply(0,zt(X,!0))),W&&fn(V,_.apply(0,zt(W,!0))),z&&fn(V,I.apply(0,zt(z,!0))),V},V=>{const[X]=V("update.ignoreMutation"),[W,z]=V("update.attributes"),[Y,B]=V("update.elementEvents"),[q,re]=V("update.debounce"),Q=B||z,le=se=>Go(X)&&X(se);if(Q&&(s&&(s[1](),s[0]()),s=t_(u||l,!0,I,{Ht:x.concat(W||[]),Dt:Y,Mt:n_,kt:(se,U)=>{const{target:G,attributeName:te}=se;return(!U&&te&&!h?NJ(G,n_,Nee):!1)||!!ql(G,`.${Dr}`)||!!le(se)}})),re)if(w.m(),Ko(q)){const se=q[0],U=q[1];r=Va(se)&&se,o=Va(U)&&U}else Va(q)?(r=q,o=!1):(r=!1,o=!1)}]},o_={x:0,y:0},$ee=e=>({K:{t:0,r:0,b:0,l:0},St:!1,P:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},zt:o_,Tt:o_,Ct:{x:"hidden",y:"hidden"},Et:{x:!1,y:!1},ht:!1,bt:cd(e.Z)}),Lee=(e,t)=>{const n=ib(t,{}),[r,o,s]=gy(),[i,l,u]=kee(e),p=mM($ee(i)),[h,m]=p,v=Oee(i,p),b=(j,I,E)=>{const D=Gr(j).some(R=>j[R])||!uy(I)||E;return D&&s("u",[j,I,E]),D},[y,x,w,k]=Tee(i,m,j=>b(v(n,j),{},!1)),_=h.bind(0);return _.jt=j=>r("u",j),_.Nt=()=>{const{W:j,J:I}=i,E=zo(j),M=Zs(j);x(),l(),zo(I,E),Zs(I,M)},_.qt=i,[(j,I)=>{const E=ib(t,j,I);return k(E),b(v(E,w(),I),j,!!I)},_,()=>{o(),y(),u()}]},{round:s_}=Math,zee=e=>{const{width:t,height:n}=fs(e),{w:r,h:o}=ud(e);return{x:s_(t)/r||1,y:s_(n)/o||1}},Fee=(e,t,n)=>{const r=t.scrollbars,{button:o,isPrimary:s,pointerType:i}=e,{pointers:l}=r;return o===0&&s&&r[n?"dragScroll":"clickScroll"]&&(l||[]).includes(i)},Bee=(e,t)=>$n(e,"mousedown",$n.bind(0,t,"click",nM,{C:!0,$:!0}),{$:!0}),a_="pointerup pointerleave pointercancel lostpointercapture",Hee=(e,t,n,r,o,s,i)=>{const{B:l}=Rr(),{Ft:u,Gt:p,Xt:h}=r,m=`scroll${i?"Left":"Top"}`,v=`client${i?"X":"Y"}`,b=i?"width":"height",y=i?"left":"top",x=i?"w":"h",w=i?"x":"y",k=(_,j)=>I=>{const{Tt:E}=s(),M=ud(p)[x]-ud(u)[x],R=j*I/M*E[w],O=cd(h)&&i?l.n||l.i?1:-1:1;o[m]=_+R*O};return $n(p,"pointerdown",_=>{const j=ql(_.target,`.${by}`)===u,I=j?u:p;if(Ei(t,Ao,Vk,!0),Fee(_,e,j)){const E=!j&&_.shiftKey,M=()=>fs(u),D=()=>fs(p),R=(B,q)=>(B||M())[y]-(q||D())[y],A=k(o[m]||0,1/zee(o)[w]),O=_[v],T=M(),K=D(),F=T[b],V=R(T,K)+F/2,X=O-K[y],W=j?0:X-V,z=B=>{js(Y),I.releasePointerCapture(B.pointerId)},Y=[Ei.bind(0,t,Ao,Vk),$n(n,a_,z),$n(n,"selectstart",B=>rM(B),{S:!1}),$n(p,a_,z),$n(p,"pointermove",B=>{const q=B[v]-O;(j||E)&&A(W+q)})];if(E)A(W);else if(!j){const B=Ki()[mee];B&&zt(Y,B.O(A,R,W,F,X))}I.setPointerCapture(_.pointerId)}})},Wee=(e,t)=>(n,r,o,s,i,l)=>{const{Xt:u}=n,[p,h]=Hl(333),m=!!i.scrollBy;let v=!0;return js.bind(0,[$n(u,"pointerenter",()=>{r(Kk,!0)}),$n(u,"pointerleave pointercancel",()=>{r(Kk)}),$n(u,"wheel",b=>{const{deltaX:y,deltaY:x,deltaMode:w}=b;m&&v&&w===0&&ra(u)===s&&i.scrollBy({left:y,top:x,behavior:"smooth"}),v=!1,r(Yk,!0),p(()=>{v=!0,r(Yk)}),rM(b)},{S:!1,$:!0}),Bee(u,o),Hee(e,s,o,n,i,t,l),h])},{min:cb,max:i_,abs:Vee,round:Uee}=Math,bM=(e,t,n,r)=>{if(r){const l=n?"x":"y",{Tt:u,zt:p}=r,h=p[l],m=u[l];return i_(0,cb(1,h/(h+m)))}const o=n?"width":"height",s=fs(e)[o],i=fs(t)[o];return i_(0,cb(1,s/i))},Gee=(e,t,n,r,o,s)=>{const{B:i}=Rr(),l=s?"x":"y",u=s?"Left":"Top",{Tt:p}=r,h=Uee(p[l]),m=Vee(n[`scroll${u}`]),v=s&&o,b=i.i?m:h-m,x=cb(1,(v?b:m)/h),w=bM(e,t,s);return 1/w*(1-w)*x},Kee=(e,t,n)=>{const{N:r,L:o}=Rr(),{scrollbars:s}=r(),{slot:i}=s,{ct:l,W:u,Z:p,J:h,lt:m,ot:v,it:b,ut:y}=t,{scrollbars:x}=m?{}:e,{slot:w}=x||{},k=pM([u,p,h],()=>y&&b?u:p,i,w),_=(W,z,Y)=>{const B=Y?Js:py;Dt(W,q=>{B(q.Xt,z)})},j=(W,z)=>{Dt(W,Y=>{const[B,q]=z(Y);tr(B,q)})},I=(W,z,Y)=>{j(W,B=>{const{Ft:q,Gt:re}=B;return[q,{[Y?"width":"height"]:`${(100*bM(q,re,Y,z)).toFixed(3)}%`}]})},E=(W,z,Y)=>{const B=Y?"X":"Y";j(W,q=>{const{Ft:re,Gt:Q,Xt:le}=q,se=Gee(re,Q,v,z,cd(le),Y);return[re,{transform:se===se?`translate${B}(${(100*se).toFixed(3)}%)`:""}]})},M=[],D=[],R=[],A=(W,z,Y)=>{const B=iy(Y),q=B?Y:!0,re=B?!Y:!0;q&&_(D,W,z),re&&_(R,W,z)},O=W=>{I(D,W,!0),I(R,W)},T=W=>{E(D,W,!0),E(R,W)},K=W=>{const z=W?aee:iee,Y=W?D:R,B=cy(Y)?Gk:"",q=Mi(`${Dr} ${z} ${B}`),re=Mi(dM),Q=Mi(by),le={Xt:q,Gt:re,Ft:Q};return o||Js(q,ree),fo(q,re),fo(re,Q),zt(Y,le),zt(M,[bs.bind(0,q),n(le,A,l,p,v,W)]),le},F=K.bind(0,!0),V=K.bind(0,!1),X=()=>{fo(k,D[0].Xt),fo(k,R[0].Xt),Zh(()=>{A(Gk)},300)};return F(),V(),[{Ut:O,Wt:T,Zt:A,Jt:{Kt:D,Qt:F,tn:j.bind(0,D)},nn:{Kt:R,Qt:V,tn:j.bind(0,R)}},X,js.bind(0,M)]},qee=(e,t,n,r)=>{let o,s,i,l,u,p=0;const h=mM({}),[m]=h,[v,b]=Hl(),[y,x]=Hl(),[w,k]=Hl(100),[_,j]=Hl(100),[I,E]=Hl(()=>p),[M,D,R]=Kee(e,n.qt,Wee(t,n)),{Z:A,J:O,ot:T,st:K,ut:F,it:V}=n.qt,{Jt:X,nn:W,Zt:z,Ut:Y,Wt:B}=M,{tn:q}=X,{tn:re}=W,Q=te=>{const{Xt:ae}=te,oe=F&&!V&&ra(ae)===O&&ae;return[oe,{transform:oe?`translate(${zo(T)}px, ${Zs(T)}px)`:""}]},le=(te,ae)=>{if(E(),te)z(Xk);else{const oe=()=>z(Xk,!0);p>0&&!ae?I(oe):oe()}},se=()=>{l=s,l&&le(!0)},U=[k,E,j,x,b,R,$n(A,"pointerover",se,{C:!0}),$n(A,"pointerenter",se),$n(A,"pointerleave",()=>{l=!1,s&&le(!1)}),$n(A,"pointermove",()=>{o&&v(()=>{k(),le(!0),_(()=>{o&&le(!1)})})}),$n(K,"scroll",te=>{y(()=>{B(n()),i&&le(!0),w(()=>{i&&!l&&le(!1)})}),r(te),F&&q(Q),F&&re(Q)})],G=m.bind(0);return G.qt=M,G.Nt=D,[(te,ae,oe)=>{const{At:pe,Lt:ue,It:me,yt:Ce}=oe,{A:ge}=Rr(),fe=ib(t,te,ae),De=n(),{Tt:je,Ct:Be,bt:rt}=De,[Ue,wt]=fe("showNativeOverlaidScrollbars"),[Ye,tt]=fe("scrollbars.theme"),[be,Re]=fe("scrollbars.visibility"),[st,mt]=fe("scrollbars.autoHide"),[ve]=fe("scrollbars.autoHideDelay"),[Qe,ot]=fe("scrollbars.dragScroll"),[lt,Me]=fe("scrollbars.clickScroll"),$e=pe||ue||Ce,At=me||Re,ke=Ue&&ge.x&&ge.y,ze=(Le,Ve)=>{const ct=be==="visible"||be==="auto"&&Le==="scroll";return z(lee,ct,Ve),ct};if(p=ve,wt&&z(oee,ke),tt&&(z(u),z(Ye,!0),u=Ye),mt&&(o=st==="move",s=st==="leave",i=st!=="never",le(!i,!0)),ot&&z(dee,Qe),Me&&z(uee,lt),At){const Le=ze(Be.x,!0),Ve=ze(Be.y,!1);z(cee,!(Le&&Ve))}$e&&(Y(De),B(De),z(qk,!je.x,!0),z(qk,!je.y,!1),z(see,rt&&!V))},G,js.bind(0,U)]},xM=(e,t,n)=>{Go(e)&&e(t||void 0,n||void 0)},Fa=(e,t,n)=>{const{F:r,N:o,Y:s,j:i}=Rr(),l=Ki(),u=Yh(e),p=u?e:e.target,h=hM(p);if(t&&!h){let m=!1;const v=F=>{const V=Ki()[pee],X=V&&V.O;return X?X(F,!0):F},b=fn({},r(),v(t)),[y,x,w]=gy(n),[k,_,j]=Lee(e,b),[I,E,M]=qee(e,b,_,F=>w("scroll",[K,F])),D=(F,V)=>k(F,!!V),R=D.bind(0,{},!0),A=s(R),O=i(R),T=F=>{See(p),A(),O(),M(),j(),m=!0,w("destroyed",[K,!!F]),x()},K={options(F,V){if(F){const X=V?r():{},W=oM(b,fn(X,v(F)));uy(W)||(fn(b,W),D(W))}return fn({},b)},on:y,off:(F,V)=>{F&&V&&x(F,V)},state(){const{zt:F,Tt:V,Ct:X,Et:W,K:z,St:Y,bt:B}=_();return fn({},{overflowEdge:F,overflowAmount:V,overflowStyle:X,hasOverflow:W,padding:z,paddingAbsolute:Y,directionRTL:B,destroyed:m})},elements(){const{W:F,Z:V,K:X,J:W,tt:z,ot:Y,st:B}=_.qt,{Jt:q,nn:re}=E.qt,Q=se=>{const{Ft:U,Gt:G,Xt:te}=se;return{scrollbar:te,track:G,handle:U}},le=se=>{const{Kt:U,Qt:G}=se,te=Q(U[0]);return fn({},te,{clone:()=>{const ae=Q(G());return I({},!0,{}),ae}})};return fn({},{target:F,host:V,padding:X||W,viewport:W,content:z||W,scrollOffsetElement:Y,scrollEventElement:B,scrollbarHorizontal:le(q),scrollbarVertical:le(re)})},update:F=>D({},F),destroy:T.bind(0)};return _.jt((F,V,X)=>{I(V,X,F)}),wee(p,K),Dt(Gr(l),F=>xM(l[F],0,K)),Cee(_.qt.it,o().cancel,!u&&e.cancel)?(T(!0),K):(_.Nt(),E.Nt(),w("initialized",[K]),_.jt((F,V,X)=>{const{gt:W,yt:z,vt:Y,At:B,Lt:q,It:re,wt:Q,Ot:le}=F;w("updated",[K,{updateHints:{sizeChanged:W,directionChanged:z,heightIntrinsicChanged:Y,overflowEdgeChanged:B,overflowAmountChanged:q,overflowStyleChanged:re,contentMutation:Q,hostMutation:le},changedOptions:V,force:X}])}),K.update(!0),K)}return h};Fa.plugin=e=>{Dt(fee(e),t=>xM(t,Fa))};Fa.valid=e=>{const t=e&&e.elements,n=Go(t)&&t();return nb(n)&&!!hM(n.target)};Fa.env=()=>{const{k:e,A:t,I:n,B:r,V:o,L:s,X:i,U:l,N:u,q:p,F:h,G:m}=Rr();return fn({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,rtlScrollBehavior:r,flexboxGlue:o,cssCustomProperties:s,staticDefaultInitialization:i,staticDefaultOptions:l,getDefaultInitialization:u,setDefaultInitialization:p,getDefaultOptions:h,setDefaultOptions:m})};const Xee=()=>{if(typeof window>"u"){const p=()=>{};return[p,p]}let e,t;const n=window,r=typeof n.requestIdleCallback=="function",o=n.requestAnimationFrame,s=n.cancelAnimationFrame,i=r?n.requestIdleCallback:o,l=r?n.cancelIdleCallback:s,u=()=>{l(e),s(t)};return[(p,h)=>{u(),e=i(r?()=>{u(),t=o(p)}:p,typeof h=="object"?h:{timeout:2233})},u]},yM=e=>{const{options:t,events:n,defer:r}=e||{},[o,s]=d.useMemo(Xee,[]),i=d.useRef(null),l=d.useRef(r),u=d.useRef(t),p=d.useRef(n);return d.useEffect(()=>{l.current=r},[r]),d.useEffect(()=>{const{current:h}=i;u.current=t,Fa.valid(h)&&h.options(t||{},!0)},[t]),d.useEffect(()=>{const{current:h}=i;p.current=n,Fa.valid(h)&&h.on(n||{},!0)},[n]),d.useEffect(()=>()=>{var h;s(),(h=i.current)==null||h.destroy()},[]),d.useMemo(()=>[h=>{const m=i.current;if(Fa.valid(m))return;const v=l.current,b=u.current||{},y=p.current||{},x=()=>i.current=Fa(h,b,y);v?o(x,v):x()},()=>i.current],[])},Yee=(e,t)=>{const{element:n="div",options:r,events:o,defer:s,children:i,...l}=e,u=n,p=d.useRef(null),h=d.useRef(null),[m,v]=yM({options:r,events:o,defer:s});return d.useEffect(()=>{const{current:b}=p,{current:y}=h;return b&&y&&m({target:b,elements:{viewport:y,content:y}}),()=>{var x;return(x=v())==null?void 0:x.destroy()}},[m,n]),d.useImperativeHandle(t,()=>({osInstance:v,getElement:()=>p.current}),[]),H.createElement(u,{"data-overlayscrollbars-initialize":"",ref:p,...l},H.createElement("div",{ref:h},i))},ug=d.forwardRef(Yee),Qee=e=>{const{boardToDelete:t,setBoardToDelete:n}=e,{t:r}=Z(),o=L(_=>_.config.canRestoreDeletedImagesFromBin),{currentData:s,isFetching:i}=vD((t==null?void 0:t.board_id)??Er.skipToken),l=d.useMemo(()=>ie([xe],_=>{const j=(s??[]).map(E=>Lj(_,E));return{imageUsageSummary:{isInitialImage:Br(j,E=>E.isInitialImage),isCanvasImage:Br(j,E=>E.isCanvasImage),isNodesImage:Br(j,E=>E.isNodesImage),isControlNetImage:Br(j,E=>E.isControlNetImage),isIPAdapterImage:Br(j,E=>E.isIPAdapterImage)}}}),[s]),[u,{isLoading:p}]=bD(),[h,{isLoading:m}]=xD(),{imageUsageSummary:v}=L(l),b=d.useCallback(()=>{t&&(u(t.board_id),n(void 0))},[t,u,n]),y=d.useCallback(()=>{t&&(h(t.board_id),n(void 0))},[t,h,n]),x=d.useCallback(()=>{n(void 0)},[n]),w=d.useRef(null),k=d.useMemo(()=>m||p||i,[m,p,i]);return t?a.jsx($d,{isOpen:!!t,onClose:x,leastDestructiveRef:w,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsxs(Ho,{fontSize:"lg",fontWeight:"bold",children:["Delete ",t.board_name]}),a.jsx(Vo,{children:a.jsxs($,{direction:"column",gap:3,children:[i?a.jsx(Hm,{children:a.jsx($,{sx:{w:"full",h:32}})}):a.jsx(jE,{imageUsage:v,topMessage:r("boards.topMessage"),bottomMessage:r("boards.bottomMessage")}),a.jsx(ye,{children:"Deleted boards cannot be restored."}),a.jsx(ye,{children:r(o?"gallery.deleteImageBin":"gallery.deleteImagePermanent")})]})}),a.jsx(gs,{children:a.jsxs($,{sx:{justifyContent:"space-between",width:"full",gap:2},children:[a.jsx(it,{ref:w,onClick:x,children:"Cancel"}),a.jsx(it,{colorScheme:"warning",isLoading:k,onClick:b,children:"Delete Board Only"}),a.jsx(it,{colorScheme:"error",isLoading:k,onClick:y,children:"Delete Board and Images"})]})})]})})}):null},Zee=d.memo(Qee),Jee=()=>{const{t:e}=Z(),[t,{isLoading:n}]=yD(),r=e("boards.myBoard"),o=d.useCallback(()=>{t(r)},[t,r]);return a.jsx(Te,{icon:a.jsx(ol,{}),isLoading:n,tooltip:e("boards.addBoard"),"aria-label":e("boards.addBoard"),onClick:o,size:"sm"})},ete=d.memo(Jee);var CM=Pd({displayName:"ExternalLinkIcon",path:a.jsxs("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[a.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),a.jsx("path",{d:"M15 3h6v6"}),a.jsx("path",{d:"M10 14L21 3"})]})}),dg=Pd({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"}),tte=Pd({displayName:"CloseIcon",d:"M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"}),nte=Pd({displayName:"DeleteIcon",path:a.jsx("g",{fill:"currentColor",children:a.jsx("path",{d:"M19.452 7.5H4.547a.5.5 0 00-.5.545l1.287 14.136A2 2 0 007.326 24h9.347a2 2 0 001.992-1.819L19.95 8.045a.5.5 0 00-.129-.382.5.5 0 00-.369-.163zm-9.2 13a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zm5 0a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zM22 4h-4.75a.25.25 0 01-.25-.25V2.5A2.5 2.5 0 0014.5 0h-5A2.5 2.5 0 007 2.5v1.25a.25.25 0 01-.25.25H2a1 1 0 000 2h20a1 1 0 000-2zM9 3.75V2.5a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v1.25a.25.25 0 01-.25.25h-5.5A.25.25 0 019 3.75z"})})}),rte=Pd({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});const ote=ie([xe],({gallery:e})=>{const{boardSearchText:t}=e;return{boardSearchText:t}},we),ste=()=>{const e=ee(),{boardSearchText:t}=L(ote),n=d.useRef(null),{t:r}=Z(),o=d.useCallback(u=>{e(HC(u))},[e]),s=d.useCallback(()=>{e(HC(""))},[e]),i=d.useCallback(u=>{u.key==="Escape"&&s()},[s]),l=d.useCallback(u=>{o(u.target.value)},[o]);return d.useEffect(()=>{n.current&&n.current.focus()},[]),a.jsxs(L3,{children:[a.jsx(Em,{ref:n,placeholder:r("boards.searchBoard"),value:t,onKeyDown:i,onChange:l}),t&&t.length&&a.jsx(vx,{children:a.jsx(ps,{onClick:s,size:"xs",variant:"ghost","aria-label":r("boards.clearSearch"),opacity:.5,icon:a.jsx(tte,{boxSize:2})})})]})},ate=d.memo(ste);function wM(e){return CD(e)}function ite(e){return wD(e)}const SM=(e,t)=>{if(!e||!(t!=null&&t.data.current))return!1;const{actionType:n}=e,{payloadType:r}=t.data.current;if(e.id===t.data.current.id)return!1;switch(n){case"ADD_FIELD_TO_LINEAR":return r==="NODE_FIELD";case"SET_CURRENT_IMAGE":return r==="IMAGE_DTO";case"SET_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_CONTROLNET_IMAGE":return r==="IMAGE_DTO";case"SET_IP_ADAPTER_IMAGE":return r==="IMAGE_DTO";case"SET_CANVAS_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_NODES_IMAGE":return r==="IMAGE_DTO";case"SET_MULTI_NODES_IMAGE":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BATCH":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload,i=s.board_id??"none",l=e.context.boardId;return i!==l}return r==="IMAGE_DTOS"}case"REMOVE_FROM_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload;return s.board_id!=="none"}return r==="IMAGE_DTOS"}default:return!1}},lte=e=>{const{isOver:t,label:n="Drop"}=e,r=d.useRef(Ba()),{colorMode:o}=la();return a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsxs($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full"},children:[a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:Ae("base.700","base.900")(o),opacity:.7,borderRadius:"base",alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx($,{sx:{position:"absolute",top:.5,insetInlineStart:.5,insetInlineEnd:.5,bottom:.5,opacity:1,borderWidth:2,borderColor:t?Ae("base.50","base.50")(o):Ae("base.200","base.300")(o),borderRadius:"lg",borderStyle:"dashed",transitionProperty:"common",transitionDuration:"0.1s",alignItems:"center",justifyContent:"center"},children:a.jsx(Ie,{sx:{fontSize:"2xl",fontWeight:600,transform:t?"scale(1.1)":"scale(1)",color:t?Ae("base.50","base.50")(o):Ae("base.200","base.300")(o),transitionProperty:"common",transitionDuration:"0.1s"},children:n})})]})},r.current)},kM=d.memo(lte),cte=e=>{const{dropLabel:t,data:n,disabled:r}=e,o=d.useRef(Ba()),{isOver:s,setNodeRef:i,active:l}=wM({id:o.current,disabled:r,data:n});return a.jsx(Ie,{ref:i,position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",pointerEvents:"none",children:a.jsx(nr,{children:SM(n,l)&&a.jsx(kM,{isOver:s,label:t})})})},wy=d.memo(cte),ute=({isSelected:e,isHovered:t})=>a.jsx(Ie,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e?1:.7,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:e?t?"hoverSelected.light":"selected.light":t?"hoverUnselected.light":void 0,_dark:{shadow:e?t?"hoverSelected.dark":"selected.dark":t?"hoverUnselected.dark":void 0}}}),Sy=d.memo(ute),dte=()=>a.jsx($,{sx:{position:"absolute",insetInlineEnd:0,top:0,p:1},children:a.jsx(da,{variant:"solid",sx:{bg:"accent.400",_dark:{bg:"accent.500"}},children:"auto"})}),_M=d.memo(dte);function ky(e){const[t,n]=d.useState(!1),[r,o]=d.useState(!1),[s,i]=d.useState(!1),[l,u]=d.useState([0,0]),p=d.useRef(null),h=L(v=>v.ui.globalContextMenuCloseTrigger);d.useEffect(()=>{if(t)setTimeout(()=>{o(!0),setTimeout(()=>{i(!0)})});else{i(!1);const v=setTimeout(()=>{o(t)},1e3);return()=>clearTimeout(v)}},[t]),d.useEffect(()=>{n(!1),i(!1),o(!1)},[h]),tz("contextmenu",v=>{var b;(b=p.current)!=null&&b.contains(v.target)||v.target===p.current?(v.preventDefault(),n(!0),u([v.pageX,v.pageY])):n(!1)});const m=d.useCallback(()=>{var v,b;(b=(v=e.menuProps)==null?void 0:v.onClose)==null||b.call(v),n(!1)},[e.menuProps]);return a.jsxs(a.Fragment,{children:[e.children(p),r&&a.jsx(_d,{...e.portalProps,children:a.jsxs(Nd,{isOpen:s,gutter:0,...e.menuProps,onClose:m,children:[a.jsx(Td,{"aria-hidden":!0,w:1,h:1,style:{position:"absolute",left:l[0],top:l[1],cursor:"default"},...e.menuButtonProps}),e.renderMenu()]})})]})}const fg=e=>{const{boardName:t}=pm(void 0,{selectFromResult:({data:n})=>{const r=n==null?void 0:n.find(s=>s.board_id===e);return{boardName:(r==null?void 0:r.board_name)||"Uncategorized"}}});return t},fte=({board:e,setBoardToDelete:t})=>{const n=d.useCallback(()=>{t&&t(e)},[e,t]);return a.jsxs(a.Fragment,{children:[e.image_count>0&&a.jsx(a.Fragment,{}),a.jsx(Wt,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Kr,{}),onClick:n,children:"Delete Board"})]})},pte=d.memo(fte),hte=()=>a.jsx(a.Fragment,{}),mte=d.memo(hte),gte=({board:e,board_id:t,setBoardToDelete:n,children:r})=>{const o=ee(),s=d.useMemo(()=>ie(xe,({gallery:b,system:y})=>{const x=b.autoAddBoardId===t,w=y.isProcessing,k=b.autoAssignBoardOnClick;return{isAutoAdd:x,isProcessing:w,autoAssignBoardOnClick:k}},we),[t]),{isAutoAdd:i,isProcessing:l,autoAssignBoardOnClick:u}=L(s),p=fg(t),h=d.useCallback(()=>{o(mm(t))},[t,o]),m=d.useCallback(b=>{b.preventDefault()},[]),{t:v}=Z();return a.jsx(ky,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:m,children:a.jsxs(Sc,{title:p,children:[a.jsx(Wt,{icon:a.jsx(ol,{}),isDisabled:i||l||u,onClick:h,children:v("boards.menuItemAutoAdd")}),!e&&a.jsx(mte,{}),e&&a.jsx(pte,{board:e,setBoardToDelete:n})]})}),children:r})},jM=d.memo(gte),vte=({board:e,isSelected:t,setBoardToDelete:n})=>{const r=ee(),o=d.useMemo(()=>ie(xe,({gallery:O,system:T})=>{const K=e.board_id===O.autoAddBoardId,F=O.autoAssignBoardOnClick,V=T.isProcessing;return{isSelectedForAutoAdd:K,autoAssignBoardOnClick:F,isProcessing:V}},we),[e.board_id]),{isSelectedForAutoAdd:s,autoAssignBoardOnClick:i,isProcessing:l}=L(o),[u,p]=d.useState(!1),h=d.useCallback(()=>{p(!0)},[]),m=d.useCallback(()=>{p(!1)},[]),{data:v}=Vj(e.board_id),{data:b}=Uj(e.board_id),y=d.useMemo(()=>{if(!(!v||!b))return`${v} image${v>1?"s":""}, ${b} asset${b>1?"s":""}`},[b,v]),{currentData:x}=Wr(e.cover_image_name??Er.skipToken),{board_name:w,board_id:k}=e,[_,j]=d.useState(w),I=d.useCallback(()=>{r(Gj(k)),i&&!l&&r(mm(k))},[k,i,l,r]),[E,{isLoading:M}]=SD(),D=d.useMemo(()=>({id:k,actionType:"ADD_TO_BOARD",context:{boardId:k}}),[k]),R=d.useCallback(async O=>{if(!O.trim()){j(w);return}if(O!==w)try{const{board_name:T}=await E({board_id:k,changes:{board_name:O}}).unwrap();j(T)}catch{j(w)}},[k,w,E]),A=d.useCallback(O=>{j(O)},[]);return a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx($,{onMouseOver:h,onMouseOut:m,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",w:"full",h:"full"},children:a.jsx(jM,{board:e,board_id:k,setBoardToDelete:n,children:O=>a.jsx(Rt,{label:y,openDelay:1e3,hasArrow:!0,children:a.jsxs($,{ref:O,onClick:I,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[x!=null&&x.thumbnail_url?a.jsx(Qi,{src:x==null?void 0:x.thumbnail_url,draggable:!1,sx:{objectFit:"cover",w:"full",h:"full",maxH:"full",borderRadius:"base",borderBottomRadius:"lg"}}):a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(Tn,{boxSize:12,as:eJ,sx:{mt:-6,opacity:.7,color:"base.500",_dark:{color:"base.500"}}})}),s&&a.jsx(_M,{}),a.jsx(Sy,{isSelected:t,isHovered:u}),a.jsx($,{sx:{position:"absolute",bottom:0,left:0,p:1,justifyContent:"center",alignItems:"center",w:"full",maxW:"full",borderBottomRadius:"base",bg:t?"accent.400":"base.500",color:t?"base.50":"base.100",_dark:{bg:t?"accent.500":"base.600",color:t?"base.50":"base.100"},lineHeight:"short",fontSize:"xs"},children:a.jsxs(jm,{value:_,isDisabled:M,submitOnBlur:!0,onChange:A,onSubmit:R,sx:{w:"full"},children:[a.jsx(_m,{sx:{p:0,fontWeight:t?700:500,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis"},noOfLines:1}),a.jsx(km,{sx:{p:0,_focusVisible:{p:0,textAlign:"center",boxShadow:"none"}}})]})}),a.jsx(wy,{data:D,dropLabel:a.jsx(ye,{fontSize:"md",children:"Move"})})]})})})})})},bte=d.memo(vte),xte=ie(xe,({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},we),PM=d.memo(({isSelected:e})=>{const t=ee(),{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}=L(xte),s=fg("none"),i=d.useCallback(()=>{t(Gj("none")),r&&!o&&t(mm("none"))},[t,r,o]),[l,u]=d.useState(!1),p=d.useCallback(()=>{u(!0)},[]),h=d.useCallback(()=>{u(!1)},[]),m=d.useMemo(()=>({id:"no_board",actionType:"REMOVE_FROM_BOARD"}),[]);return a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx($,{onMouseOver:p,onMouseOut:h,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",borderRadius:"base",w:"full",h:"full"},children:a.jsx(jM,{board_id:"none",children:v=>a.jsxs($,{ref:v,onClick:i,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(Qi,{src:Fj,alt:"invoke-ai-logo",sx:{opacity:.4,filter:"grayscale(1)",mt:-6,w:16,h:16,minW:16,minH:16,userSelect:"none"}})}),n==="none"&&a.jsx(_M,{}),a.jsx($,{sx:{position:"absolute",bottom:0,left:0,p:1,justifyContent:"center",alignItems:"center",w:"full",maxW:"full",borderBottomRadius:"base",bg:e?"accent.400":"base.500",color:e?"base.50":"base.100",_dark:{bg:e?"accent.500":"base.600",color:e?"base.50":"base.100"},lineHeight:"short",fontSize:"xs",fontWeight:e?700:500},children:s}),a.jsx(Sy,{isSelected:e,isHovered:l}),a.jsx(wy,{data:m,dropLabel:a.jsx(ye,{fontSize:"md",children:"Move"})})]})})})})});PM.displayName="HoverableBoard";const yte=d.memo(PM),Cte=ie([xe],({gallery:e})=>{const{selectedBoardId:t,boardSearchText:n}=e;return{selectedBoardId:t,boardSearchText:n}},we),wte=e=>{const{isOpen:t}=e,{selectedBoardId:n,boardSearchText:r}=L(Cte),{data:o}=pm(),s=r?o==null?void 0:o.filter(u=>u.board_name.toLowerCase().includes(r.toLowerCase())):o,[i,l]=d.useState();return a.jsxs(a.Fragment,{children:[a.jsx(wm,{in:t,animateOpacity:!0,children:a.jsxs($,{layerStyle:"first",sx:{flexDir:"column",gap:2,p:2,mt:2,borderRadius:"base"},children:[a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(ate,{}),a.jsx(ete,{})]}),a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsxs(Ga,{className:"list-container",sx:{gridTemplateColumns:"repeat(auto-fill, minmax(108px, 1fr));",maxH:346},children:[a.jsx(td,{sx:{p:1.5},children:a.jsx(yte,{isSelected:n==="none"})}),s&&s.map(u=>a.jsx(td,{sx:{p:1.5},children:a.jsx(bte,{board:u,isSelected:n===u.board_id,setBoardToDelete:l})},u.board_id))]})})]})}),a.jsx(Zee,{boardToDelete:i,setBoardToDelete:l})]})},Ste=d.memo(wte),kte=ie([xe],e=>{const{selectedBoardId:t}=e.gallery;return{selectedBoardId:t}},we),_te=e=>{const{isOpen:t,onToggle:n}=e,{selectedBoardId:r}=L(kte),o=fg(r),s=d.useMemo(()=>o.length>20?`${o.substring(0,20)}...`:o,[o]);return a.jsxs($,{as:bc,onClick:n,size:"sm",sx:{position:"relative",gap:2,w:"full",justifyContent:"space-between",alignItems:"center",px:2},children:[a.jsx(ye,{noOfLines:1,sx:{fontWeight:600,w:"100%",textAlign:"center",color:"base.800",_dark:{color:"base.200"}},children:s}),a.jsx(dg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]})},jte=d.memo(_te),Pte=e=>{const{triggerComponent:t,children:n,hasArrow:r=!0,isLazy:o=!0,...s}=e;return a.jsxs(Fm,{isLazy:o,...s,children:[a.jsx(Rx,{children:t}),a.jsxs(Bm,{shadow:"dark-lg",children:[r&&a.jsx(xP,{}),n]})]})},qd=d.memo(Pte);function Ite(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12 16c1.671 0 3-1.331 3-3s-1.329-3-3-3-3 1.331-3 3 1.329 3 3 3z"}},{tag:"path",attr:{d:"M20.817 11.186a8.94 8.94 0 0 0-1.355-3.219 9.053 9.053 0 0 0-2.43-2.43 8.95 8.95 0 0 0-3.219-1.355 9.028 9.028 0 0 0-1.838-.18V2L8 5l3.975 3V6.002c.484-.002.968.044 1.435.14a6.961 6.961 0 0 1 2.502 1.053 7.005 7.005 0 0 1 1.892 1.892A6.967 6.967 0 0 1 19 13a7.032 7.032 0 0 1-.55 2.725 7.11 7.11 0 0 1-.644 1.188 7.2 7.2 0 0 1-.858 1.039 7.028 7.028 0 0 1-3.536 1.907 7.13 7.13 0 0 1-2.822 0 6.961 6.961 0 0 1-2.503-1.054 7.002 7.002 0 0 1-1.89-1.89A6.996 6.996 0 0 1 5 13H3a9.02 9.02 0 0 0 1.539 5.034 9.096 9.096 0 0 0 2.428 2.428A8.95 8.95 0 0 0 12 22a9.09 9.09 0 0 0 1.814-.183 9.014 9.014 0 0 0 3.218-1.355 8.886 8.886 0 0 0 1.331-1.099 9.228 9.228 0 0 0 1.1-1.332A8.952 8.952 0 0 0 21 13a9.09 9.09 0 0 0-.183-1.814z"}}]})(e)}const Ete=e=>{const[t,n]=d.useState(!1),{label:r,value:o,min:s=1,max:i=100,step:l=1,onChange:u,tooltipSuffix:p="",withSliderMarks:h=!1,withInput:m=!1,isInteger:v=!1,inputWidth:b=16,withReset:y=!1,hideTooltip:x=!1,isCompact:w=!1,isDisabled:k=!1,sliderMarks:_,handleReset:j,sliderFormControlProps:I,sliderFormLabelProps:E,sliderMarkProps:M,sliderTrackProps:D,sliderThumbProps:R,sliderNumberInputProps:A,sliderNumberInputFieldProps:O,sliderNumberInputStepperProps:T,sliderTooltipProps:K,sliderIAIIconButtonProps:F,...V}=e,X=ee(),{t:W}=Z(),[z,Y]=d.useState(String(o));d.useEffect(()=>{Y(o)},[o]);const B=d.useMemo(()=>A!=null&&A.min?A.min:s,[s,A==null?void 0:A.min]),q=d.useMemo(()=>A!=null&&A.max?A.max:i,[i,A==null?void 0:A.max]),re=d.useCallback(ae=>{u(ae)},[u]),Q=d.useCallback(ae=>{ae.target.value===""&&(ae.target.value=String(B));const oe=Ni(v?Math.floor(Number(ae.target.value)):Number(z),B,q),pe=Mu(oe,l);u(pe),Y(pe)},[v,z,B,q,u,l]),le=d.useCallback(ae=>{Y(ae)},[]),se=d.useCallback(()=>{j&&j()},[j]),U=d.useCallback(ae=>{ae.target instanceof HTMLDivElement&&ae.target.focus()},[]),G=d.useCallback(ae=>{ae.shiftKey&&X(Ir(!0))},[X]),te=d.useCallback(ae=>{ae.shiftKey||X(Ir(!1))},[X]);return a.jsxs(sn,{onClick:U,sx:w?{display:"flex",flexDirection:"row",alignItems:"center",columnGap:4,margin:0,padding:0}:{},isDisabled:k,...I,children:[r&&a.jsx(Hn,{sx:m?{mb:-1.5}:{},...E,children:r}),a.jsxs(Om,{w:"100%",gap:2,alignItems:"center",children:[a.jsxs(Lx,{"aria-label":r,value:o,min:s,max:i,step:l,onChange:re,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),focusThumbOnChange:!1,isDisabled:k,...V,children:[h&&!_&&a.jsxs(a.Fragment,{children:[a.jsx(Fl,{value:s,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...M,children:s}),a.jsx(Fl,{value:i,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...M,children:i})]}),h&&_&&a.jsx(a.Fragment,{children:_.map((ae,oe)=>oe===0?a.jsx(Fl,{value:ae,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...M,children:ae},ae):oe===_.length-1?a.jsx(Fl,{value:ae,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...M,children:ae},ae):a.jsx(Fl,{value:ae,sx:{transform:"translateX(-50%)"},...M,children:ae},ae))}),a.jsx(Fx,{...D,children:a.jsx(Bx,{})}),a.jsx(Rt,{hasArrow:!0,placement:"top",isOpen:t,label:`${o}${p}`,hidden:x,...K,children:a.jsx(zx,{...R,zIndex:0})})]}),m&&a.jsxs(Nm,{min:B,max:q,step:l,value:z,onChange:le,onBlur:Q,focusInputOnChange:!1,...A,children:[a.jsx($m,{onKeyDown:G,onKeyUp:te,minWidth:b,...O}),a.jsxs(Tm,{...T,children:[a.jsx(zm,{onClick:()=>u(Number(z))}),a.jsx(Lm,{onClick:()=>u(Number(z))})]})]}),y&&a.jsx(Te,{size:"sm","aria-label":W("accessibility.reset"),tooltip:W("accessibility.reset"),icon:a.jsx(Ite,{}),isDisabled:k,onClick:se,...F})]})]})},Xe=d.memo(Ete),IM=d.forwardRef(({label:e,tooltip:t,description:n,disabled:r,...o},s)=>a.jsx(Rt,{label:t,placement:"top",hasArrow:!0,openDelay:500,children:a.jsx(Ie,{ref:s,...o,children:a.jsxs(Ie,{children:[a.jsx(kc,{children:e}),n&&a.jsx(kc,{size:"xs",color:"base.600",children:n})]})})}));IM.displayName="IAIMantineSelectItemWithTooltip";const ri=d.memo(IM),Mte=ie([xe],({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},we),Ote=()=>{const e=ee(),{t}=Z(),{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}=L(Mte),s=d.useRef(null),{boards:i,hasBoards:l}=pm(void 0,{selectFromResult:({data:p})=>{const h=[{label:"None",value:"none"}];return p==null||p.forEach(({board_id:m,board_name:v})=>{h.push({label:v,value:m})}),{boards:h,hasBoards:h.length>1}}}),u=d.useCallback(p=>{p&&e(mm(p))},[e]);return a.jsx(Kt,{label:t("boards.autoAddBoard"),inputRef:s,autoFocus:!0,placeholder:t("boards.selectBoard"),value:n,data:i,nothingFound:t("boards.noMatching"),itemComponent:ri,disabled:!l||r||o,filter:(p,h)=>{var m;return((m=h.label)==null?void 0:m.toLowerCase().includes(p.toLowerCase().trim()))||h.value.toLowerCase().includes(p.toLowerCase().trim())},onChange:u})},Dte=d.memo(Ote),Rte=e=>{const{label:t,...n}=e,{colorMode:r}=la();return a.jsx(Sm,{colorScheme:"accent",...n,children:a.jsx(ye,{sx:{fontSize:"sm",color:Ae("base.800","base.200")(r)},children:t})})},ur=d.memo(Rte),Ate=ie([xe],e=>{const{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}=e.gallery;return{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}},we),Nte=()=>{const e=ee(),{t}=Z(),{galleryImageMinimumWidth:n,shouldAutoSwitch:r,autoAssignBoardOnClick:o}=L(Ate),s=d.useCallback(u=>{e(WC(u))},[e]),i=d.useCallback(()=>{e(WC(64))},[e]),l=d.useCallback(u=>{e(kD(u.target.checked))},[e]);return a.jsx(qd,{triggerComponent:a.jsx(Te,{tooltip:t("gallery.gallerySettings"),"aria-label":t("gallery.gallerySettings"),size:"sm",icon:a.jsx(VE,{})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(Xe,{value:n,onChange:s,min:45,max:256,hideTooltip:!0,label:t("gallery.galleryImageSize"),withReset:!0,handleReset:i}),a.jsx(Vt,{label:t("gallery.autoSwitchNewImages"),isChecked:r,onChange:l}),a.jsx(ur,{label:t("gallery.autoAssignBoardOnClick"),isChecked:o,onChange:u=>e(_D(u.target.checked))}),a.jsx(Dte,{})]})})},Tte=d.memo(Nte),$te=e=>e.image?a.jsx(Hm,{sx:{w:`${e.image.width}px`,h:"auto",objectFit:"contain",aspectRatio:`${e.image.width}/${e.image.height}`}}):a.jsx($,{sx:{opacity:.7,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(Xi,{size:"xl"})}),Kn=e=>{const{icon:t=Ui,boxSize:n=16}=e;return a.jsxs($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",flexDir:"column",gap:2,userSelect:"none",opacity:.7,color:"base.700",_dark:{color:"base.500"},...e.sx},children:[t&&a.jsx(Tn,{as:t,boxSize:n,opacity:.7}),e.label&&a.jsx(ye,{textAlign:"center",children:e.label})]})},pg=0,oi=1,Vc=2,EM=4;function Lte(e,t){return n=>e(t(n))}function zte(e,t){return t(e)}function MM(e,t){return n=>e(t,n)}function l_(e,t){return()=>e(t)}function _y(e,t){return t(e),e}function sl(...e){return e}function Fte(e){e()}function c_(e){return()=>e}function Bte(...e){return()=>{e.map(Fte)}}function hg(){}function pr(e,t){return e(oi,t)}function Nn(e,t){e(pg,t)}function jy(e){e(Vc)}function mg(e){return e(EM)}function Gt(e,t){return pr(e,MM(t,pg))}function u_(e,t){const n=e(oi,r=>{n(),t(r)});return n}function yn(){const e=[];return(t,n)=>{switch(t){case Vc:e.splice(0,e.length);return;case oi:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)};case pg:e.slice().forEach(r=>{r(n)});return;default:throw new Error(`unrecognized action ${t}`)}}}function dt(e){let t=e;const n=yn();return(r,o)=>{switch(r){case oi:o(t);break;case pg:t=o;break;case EM:return t}return n(r,o)}}function Hte(e){let t,n;const r=()=>t&&t();return function(o,s){switch(o){case oi:return s?n===s?void 0:(r(),n=s,t=pr(e,s),t):(r(),hg);case Vc:r(),n=null;return;default:throw new Error(`unrecognized action ${o}`)}}}function Vu(e){return _y(yn(),t=>Gt(e,t))}function dc(e,t){return _y(dt(t),n=>Gt(e,n))}function Wte(...e){return t=>e.reduceRight(zte,t)}function ft(e,...t){const n=Wte(...t);return(r,o)=>{switch(r){case oi:return pr(e,n(o));case Vc:jy(e);return}}}function OM(e,t){return e===t}function kr(e=OM){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function Gn(e){return t=>n=>{e(n)&&t(n)}}function tn(e){return t=>Lte(t,e)}function Ra(e){return t=>()=>t(e)}function jp(e,t){return n=>r=>n(t=e(t,r))}function ub(e){return t=>n=>{e>0?e--:t(n)}}function Ru(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function d_(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function cs(...e){const t=new Array(e.length);let n=0,r=null;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const l=Math.pow(2,i);pr(s,u=>{const p=n;n=n|l,t[i]=u,p!==o&&n===o&&r&&(r(),r=null)})}),s=>i=>{const l=()=>s([i].concat(t));n===o?l():r=l}}function f_(...e){return function(t,n){switch(t){case oi:return Bte(...e.map(r=>pr(r,n)));case Vc:return;default:throw new Error(`unrecognized action ${t}`)}}}function It(e,t=OM){return ft(e,kr(t))}function qs(...e){const t=yn(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const l=Math.pow(2,i);pr(s,u=>{n[i]=u,r=r|l,r===o&&Nn(t,n)})}),function(s,i){switch(s){case oi:return r===o&&i(n),pr(t,i);case Vc:return jy(t);default:throw new Error(`unrecognized action ${s}`)}}}function Ps(e,t=[],{singleton:n}={singleton:!0}){return{id:Vte(),constructor:e,dependencies:t,singleton:n}}const Vte=()=>Symbol();function Ute(e){const t=new Map,n=({id:r,constructor:o,dependencies:s,singleton:i})=>{if(i&&t.has(r))return t.get(r);const l=o(s.map(u=>n(u)));return i&&t.set(r,l),l};return n(e)}function Gte(e,t){const n={},r={};let o=0;const s=e.length;for(;o(w[k]=_=>{const j=x[t.methods[k]];Nn(j,_)},w),{})}function h(x){return i.reduce((w,k)=>(w[k]=Hte(x[t.events[k]]),w),{})}return{Component:H.forwardRef((x,w)=>{const{children:k,..._}=x,[j]=H.useState(()=>_y(Ute(e),E=>u(E,_))),[I]=H.useState(l_(h,j));return Pp(()=>{for(const E of i)E in _&&pr(I[E],_[E]);return()=>{Object.values(I).map(jy)}},[_,I,j]),Pp(()=>{u(j,_)}),H.useImperativeHandle(w,c_(p(j))),H.createElement(l.Provider,{value:j},n?H.createElement(n,Gte([...r,...o,...i],_),k):k)}),usePublisher:x=>H.useCallback(MM(Nn,H.useContext(l)[x]),[x]),useEmitterValue:x=>{const k=H.useContext(l)[x],[_,j]=H.useState(l_(mg,k));return Pp(()=>pr(k,I=>{I!==_&&j(c_(I))}),[k,_]),_},useEmitter:(x,w)=>{const _=H.useContext(l)[x];Pp(()=>pr(_,w),[w,_])}}}const qte=typeof document<"u"?H.useLayoutEffect:H.useEffect,Xte=qte;var Py=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Py||{});const Yte={0:"debug",1:"log",2:"warn",3:"error"},Qte=()=>typeof globalThis>"u"?window:globalThis,DM=Ps(()=>{const e=dt(3);return{log:dt((n,r,o=1)=>{var s;const i=(s=Qte().VIRTUOSO_LOG_LEVEL)!=null?s:mg(e);o>=i&&console[Yte[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,r)}),logLevel:e}},[],{singleton:!0});function RM(e,t=!0){const n=H.useRef(null);let r=o=>{};if(typeof ResizeObserver<"u"){const o=H.useMemo(()=>new ResizeObserver(s=>{const i=s[0].target;i.offsetParent!==null&&e(i)}),[e]);r=s=>{s&&t?(o.observe(s),n.current=s):(n.current&&o.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function gg(e,t=!0){return RM(e,t).callbackRef}function nm(e,t){return Math.round(e.getBoundingClientRect()[t])}function AM(e,t){return Math.abs(e-t)<1.01}function NM(e,t,n,r=hg,o){const s=H.useRef(null),i=H.useRef(null),l=H.useRef(null),u=H.useCallback(m=>{const v=m.target,b=v===window||v===document,y=b?window.pageYOffset||document.documentElement.scrollTop:v.scrollTop,x=b?document.documentElement.scrollHeight:v.scrollHeight,w=b?window.innerHeight:v.offsetHeight,k=()=>{e({scrollTop:Math.max(y,0),scrollHeight:x,viewportHeight:w})};m.suppressFlushSync?k():jD.flushSync(k),i.current!==null&&(y===i.current||y<=0||y===x-w)&&(i.current=null,t(!0),l.current&&(clearTimeout(l.current),l.current=null))},[e,t]);H.useEffect(()=>{const m=o||s.current;return r(o||s.current),u({target:m,suppressFlushSync:!0}),m.addEventListener("scroll",u,{passive:!0}),()=>{r(null),m.removeEventListener("scroll",u)}},[s,u,n,r,o]);function p(m){const v=s.current;if(!v||"offsetHeight"in v&&v.offsetHeight===0)return;const b=m.behavior==="smooth";let y,x,w;v===window?(x=Math.max(nm(document.documentElement,"height"),document.documentElement.scrollHeight),y=window.innerHeight,w=document.documentElement.scrollTop):(x=v.scrollHeight,y=nm(v,"height"),w=v.scrollTop);const k=x-y;if(m.top=Math.ceil(Math.max(Math.min(k,m.top),0)),AM(y,x)||m.top===w){e({scrollTop:w,scrollHeight:x,viewportHeight:y}),b&&t(!0);return}b?(i.current=m.top,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,i.current=null,t(!0)},1e3)):i.current=null,v.scrollTo(m)}function h(m){s.current.scrollBy(m)}return{scrollerRef:s,scrollByCallback:h,scrollToCallback:p}}const vg=Ps(()=>{const e=yn(),t=yn(),n=dt(0),r=yn(),o=dt(0),s=yn(),i=yn(),l=dt(0),u=dt(0),p=dt(0),h=dt(0),m=yn(),v=yn(),b=dt(!1);return Gt(ft(e,tn(({scrollTop:y})=>y)),t),Gt(ft(e,tn(({scrollHeight:y})=>y)),i),Gt(t,o),{scrollContainerState:e,scrollTop:t,viewportHeight:s,headerHeight:l,fixedHeaderHeight:u,fixedFooterHeight:p,footerHeight:h,scrollHeight:i,smoothScrollTargetReached:r,scrollTo:m,scrollBy:v,statefulScrollTop:o,deviation:n,scrollingInProgress:b}},[],{singleton:!0}),Zte=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function Jte(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!Zte)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const rm="up",Uu="down",ene="none",tne={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},nne=0,TM=Ps(([{scrollContainerState:e,scrollTop:t,viewportHeight:n,headerHeight:r,footerHeight:o,scrollBy:s}])=>{const i=dt(!1),l=dt(!0),u=yn(),p=yn(),h=dt(4),m=dt(nne),v=dc(ft(f_(ft(It(t),ub(1),Ra(!0)),ft(It(t),ub(1),Ra(!1),d_(100))),kr()),!1),b=dc(ft(f_(ft(s,Ra(!0)),ft(s,Ra(!1),d_(200))),kr()),!1);Gt(ft(qs(It(t),It(m)),tn(([_,j])=>_<=j),kr()),l),Gt(ft(l,Ru(50)),p);const y=Vu(ft(qs(e,It(n),It(r),It(o),It(h)),jp((_,[{scrollTop:j,scrollHeight:I},E,M,D,R])=>{const A=j+E-I>-R,O={viewportHeight:E,scrollTop:j,scrollHeight:I};if(A){let K,F;return j>_.state.scrollTop?(K="SCROLLED_DOWN",F=_.state.scrollTop-j):(K="SIZE_DECREASED",F=_.state.scrollTop-j||_.scrollTopDelta),{atBottom:!0,state:O,atBottomBecause:K,scrollTopDelta:F}}let T;return O.scrollHeight>_.state.scrollHeight?T="SIZE_INCREASED":E<_.state.viewportHeight?T="VIEWPORT_HEIGHT_DECREASING":j<_.state.scrollTop?T="SCROLLING_UPWARDS":T="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:T,state:O}},tne),kr((_,j)=>_&&_.atBottom===j.atBottom))),x=dc(ft(e,jp((_,{scrollTop:j,scrollHeight:I,viewportHeight:E})=>{if(AM(_.scrollHeight,I))return{scrollTop:j,scrollHeight:I,jump:0,changed:!1};{const M=I-(j+E)<1;return _.scrollTop!==j&&M?{scrollHeight:I,scrollTop:j,jump:_.scrollTop-j,changed:!0}:{scrollHeight:I,scrollTop:j,jump:0,changed:!0}}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),Gn(_=>_.changed),tn(_=>_.jump)),0);Gt(ft(y,tn(_=>_.atBottom)),i),Gt(ft(i,Ru(50)),u);const w=dt(Uu);Gt(ft(e,tn(({scrollTop:_})=>_),kr(),jp((_,j)=>mg(b)?{direction:_.direction,prevScrollTop:j}:{direction:j<_.prevScrollTop?rm:Uu,prevScrollTop:j},{direction:Uu,prevScrollTop:0}),tn(_=>_.direction)),w),Gt(ft(e,Ru(50),Ra(ene)),w);const k=dt(0);return Gt(ft(v,Gn(_=>!_),Ra(0)),k),Gt(ft(t,Ru(100),cs(v),Gn(([_,j])=>!!j),jp(([_,j],[I])=>[j,I],[0,0]),tn(([_,j])=>j-_)),k),{isScrolling:v,isAtTop:l,isAtBottom:i,atBottomState:y,atTopStateChange:p,atBottomStateChange:u,scrollDirection:w,atBottomThreshold:h,atTopThreshold:m,scrollVelocity:k,lastJumpDueToItemResize:x}},sl(vg)),rne=Ps(([{log:e}])=>{const t=dt(!1),n=Vu(ft(t,Gn(r=>r),kr()));return pr(t,r=>{r&&mg(e)("props updated",{},Py.DEBUG)}),{propsReady:t,didMount:n}},sl(DM),{singleton:!0});function $M(e,t){e==0?t():requestAnimationFrame(()=>$M(e-1,t))}function one(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}function db(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}function sne(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}const om="top",sm="bottom",p_="none";function h_(e,t,n){return typeof e=="number"?n===rm&&t===om||n===Uu&&t===sm?e:0:n===rm?t===om?e.main:e.reverse:t===sm?e.main:e.reverse}function m_(e,t){return typeof e=="number"?e:e[t]||0}const ane=Ps(([{scrollTop:e,viewportHeight:t,deviation:n,headerHeight:r,fixedHeaderHeight:o}])=>{const s=yn(),i=dt(0),l=dt(0),u=dt(0),p=dc(ft(qs(It(e),It(t),It(r),It(s,db),It(u),It(i),It(o),It(n),It(l)),tn(([h,m,v,[b,y],x,w,k,_,j])=>{const I=h-_,E=w+k,M=Math.max(v-I,0);let D=p_;const R=m_(j,om),A=m_(j,sm);return b-=_,b+=v+k,y+=v+k,y-=_,b>h+E-R&&(D=rm),yh!=null),kr(db)),[0,0]);return{listBoundary:s,overscan:u,topListHeight:i,increaseViewportBy:l,visibleRange:p}},sl(vg),{singleton:!0}),ine=Ps(([{scrollVelocity:e}])=>{const t=dt(!1),n=yn(),r=dt(!1);return Gt(ft(e,cs(r,t,n),Gn(([o,s])=>!!s),tn(([o,s,i,l])=>{const{exit:u,enter:p}=s;if(i){if(u(o,l))return!1}else if(p(o,l))return!0;return i}),kr()),t),pr(ft(qs(t,e,n),cs(r)),([[o,s,i],l])=>o&&l&&l.change&&l.change(s,i)),{isSeeking:t,scrollSeekConfiguration:r,scrollVelocity:e,scrollSeekRangeChanged:n}},sl(TM),{singleton:!0});function lne(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const cne=Ps(([{scrollTo:e,scrollContainerState:t}])=>{const n=yn(),r=yn(),o=yn(),s=dt(!1),i=dt(void 0);return Gt(ft(qs(n,r),tn(([{viewportHeight:l,scrollTop:u,scrollHeight:p},{offsetTop:h}])=>({scrollTop:Math.max(0,u-h),scrollHeight:p,viewportHeight:l}))),t),Gt(ft(e,cs(r),tn(([l,{offsetTop:u}])=>({...l,top:l.top+u}))),o),{useWindowScroll:s,customScrollParent:i,windowScrollContainerState:n,windowViewportRect:r,windowScrollTo:o}},sl(vg)),Lv="-webkit-sticky",g_="sticky",LM=lne(()=>{if(typeof document>"u")return g_;const e=document.createElement("div");return e.style.position=Lv,e.style.position===Lv?Lv:g_});function une(e,t){const n=H.useRef(null),r=H.useCallback(l=>{if(l===null||!l.offsetParent)return;const u=l.getBoundingClientRect(),p=u.width;let h,m;if(t){const v=t.getBoundingClientRect(),b=u.top-v.top;h=v.height-Math.max(0,b),m=b+t.scrollTop}else h=window.innerHeight-Math.max(0,u.top),m=u.top+window.pageYOffset;n.current={offsetTop:m,visibleHeight:h,visibleWidth:p},e(n.current)},[e,t]),{callbackRef:o,ref:s}=RM(r),i=H.useCallback(()=>{r(s.current)},[r,s]);return H.useEffect(()=>{if(t){t.addEventListener("scroll",i);const l=new ResizeObserver(i);return l.observe(t),()=>{t.removeEventListener("scroll",i),l.unobserve(t)}}else return window.addEventListener("scroll",i),window.addEventListener("resize",i),()=>{window.removeEventListener("scroll",i),window.removeEventListener("resize",i)}},[i,t]),o}H.createContext(void 0);const zM=H.createContext(void 0);function dne(e){return e}LM();const fne={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},FM={width:"100%",height:"100%",position:"absolute",top:0};LM();function Oi(e,t){if(typeof e!="string")return{context:t}}function pne({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...l}){const u=e("scrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("scrollerRef"),v=n("context"),{scrollerRef:b,scrollByCallback:y,scrollToCallback:x}=NM(u,h,p,m);return t("scrollTo",x),t("scrollBy",y),H.createElement(p,{ref:b,style:{...fne,...s},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...Oi(p,v)},i)})}function hne({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...l}){const u=e("windowScrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("totalListHeight"),v=n("deviation"),b=n("customScrollParent"),y=n("context"),{scrollerRef:x,scrollByCallback:w,scrollToCallback:k}=NM(u,h,p,hg,b);return Xte(()=>(x.current=b||window,()=>{x.current=null}),[x,b]),t("windowScrollTo",k),t("scrollBy",w),H.createElement(p,{style:{position:"relative",...s,...m!==0?{height:m+v}:{}},"data-virtuoso-scroller":!0,...l,...Oi(p,y)},i)})}const v_={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},mne={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:b_,ceil:x_,floor:am,min:zv,max:Gu}=Math;function gne(e){return{...mne,items:e}}function y_(e,t,n){return Array.from({length:t-e+1}).map((r,o)=>{const s=n===null?null:n[o+e];return{index:o+e,data:s}})}function vne(e,t){return e&&e.column===t.column&&e.row===t.row}function Ip(e,t){return e&&e.width===t.width&&e.height===t.height}const bne=Ps(([{overscan:e,visibleRange:t,listBoundary:n},{scrollTop:r,viewportHeight:o,scrollBy:s,scrollTo:i,smoothScrollTargetReached:l,scrollContainerState:u,footerHeight:p,headerHeight:h},m,v,{propsReady:b,didMount:y},{windowViewportRect:x,useWindowScroll:w,customScrollParent:k,windowScrollContainerState:_,windowScrollTo:j},I])=>{const E=dt(0),M=dt(0),D=dt(v_),R=dt({height:0,width:0}),A=dt({height:0,width:0}),O=yn(),T=yn(),K=dt(0),F=dt(null),V=dt({row:0,column:0}),X=yn(),W=yn(),z=dt(!1),Y=dt(0),B=dt(!0),q=dt(!1);pr(ft(y,cs(Y),Gn(([G,te])=>!!te)),()=>{Nn(B,!1),Nn(M,0)}),pr(ft(qs(y,B,A,R,Y,q),Gn(([G,te,ae,oe,,pe])=>G&&!te&&ae.height!==0&&oe.height!==0&&!pe)),([,,,,G])=>{Nn(q,!0),$M(1,()=>{Nn(O,G)}),u_(ft(r),()=>{Nn(n,[0,0]),Nn(B,!0)})}),Gt(ft(W,Gn(G=>G!=null&&G.scrollTop>0),Ra(0)),M),pr(ft(y,cs(W),Gn(([,G])=>G!=null)),([,G])=>{G&&(Nn(R,G.viewport),Nn(A,G==null?void 0:G.item),Nn(V,G.gap),G.scrollTop>0&&(Nn(z,!0),u_(ft(r,ub(1)),te=>{Nn(z,!1)}),Nn(i,{top:G.scrollTop})))}),Gt(ft(R,tn(({height:G})=>G)),o),Gt(ft(qs(It(R,Ip),It(A,Ip),It(V,(G,te)=>G&&G.column===te.column&&G.row===te.row),It(r)),tn(([G,te,ae,oe])=>({viewport:G,item:te,gap:ae,scrollTop:oe}))),X),Gt(ft(qs(It(E),t,It(V,vne),It(A,Ip),It(R,Ip),It(F),It(M),It(z),It(B),It(Y)),Gn(([,,,,,,,G])=>!G),tn(([G,[te,ae],oe,pe,ue,me,Ce,,ge,fe])=>{const{row:De,column:je}=oe,{height:Be,width:rt}=pe,{width:Ue}=ue;if(Ce===0&&(G===0||Ue===0))return v_;if(rt===0){const ot=one(fe,G),lt=ot===0?Math.max(Ce-1,0):ot;return gne(y_(ot,lt,me))}const wt=BM(Ue,rt,je);let Ye,tt;ge?te===0&&ae===0&&Ce>0?(Ye=0,tt=Ce-1):(Ye=wt*am((te+De)/(Be+De)),tt=wt*x_((ae+De)/(Be+De))-1,tt=zv(G-1,Gu(tt,wt-1)),Ye=zv(tt,Gu(0,Ye))):(Ye=0,tt=-1);const be=y_(Ye,tt,me),{top:Re,bottom:st}=C_(ue,oe,pe,be),mt=x_(G/wt),Qe=mt*Be+(mt-1)*De-st;return{items:be,offsetTop:Re,offsetBottom:Qe,top:Re,bottom:st,itemHeight:Be,itemWidth:rt}})),D),Gt(ft(F,Gn(G=>G!==null),tn(G=>G.length)),E),Gt(ft(qs(R,A,D,V),Gn(([G,te,{items:ae}])=>ae.length>0&&te.height!==0&&G.height!==0),tn(([G,te,{items:ae},oe])=>{const{top:pe,bottom:ue}=C_(G,oe,te,ae);return[pe,ue]}),kr(db)),n);const re=dt(!1);Gt(ft(r,cs(re),tn(([G,te])=>te||G!==0)),re);const Q=Vu(ft(It(D),Gn(({items:G})=>G.length>0),cs(E,re),Gn(([{items:G},te,ae])=>ae&&G[G.length-1].index===te-1),tn(([,G])=>G-1),kr())),le=Vu(ft(It(D),Gn(({items:G})=>G.length>0&&G[0].index===0),Ra(0),kr())),se=Vu(ft(It(D),cs(z),Gn(([{items:G},te])=>G.length>0&&!te),tn(([{items:G}])=>({startIndex:G[0].index,endIndex:G[G.length-1].index})),kr(sne),Ru(0)));Gt(se,v.scrollSeekRangeChanged),Gt(ft(O,cs(R,A,E,V),tn(([G,te,ae,oe,pe])=>{const ue=Jte(G),{align:me,behavior:Ce,offset:ge}=ue;let fe=ue.index;fe==="LAST"&&(fe=oe-1),fe=Gu(0,fe,zv(oe-1,fe));let De=fb(te,pe,ae,fe);return me==="end"?De=b_(De-te.height+ae.height):me==="center"&&(De=b_(De-te.height/2+ae.height/2)),ge&&(De+=ge),{top:De,behavior:Ce}})),i);const U=dc(ft(D,tn(G=>G.offsetBottom+G.bottom)),0);return Gt(ft(x,tn(G=>({width:G.visibleWidth,height:G.visibleHeight}))),R),{data:F,totalCount:E,viewportDimensions:R,itemDimensions:A,scrollTop:r,scrollHeight:T,overscan:e,scrollBy:s,scrollTo:i,scrollToIndex:O,smoothScrollTargetReached:l,windowViewportRect:x,windowScrollTo:j,useWindowScroll:w,customScrollParent:k,windowScrollContainerState:_,deviation:K,scrollContainerState:u,footerHeight:p,headerHeight:h,initialItemCount:M,gap:V,restoreStateFrom:W,...v,initialTopMostItemIndex:Y,gridState:D,totalListHeight:U,...m,startReached:le,endReached:Q,rangeChanged:se,stateChanged:X,propsReady:b,stateRestoreInProgress:z,...I}},sl(ane,vg,TM,ine,rne,cne,DM));function C_(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{top:0,bottom:0};const s=fb(e,t,n,r[0].index),i=fb(e,t,n,r[r.length-1].index)+o;return{top:s,bottom:i}}function fb(e,t,n,r){const o=BM(e.width,n.width,t.column),s=am(r/o),i=s*n.height+Gu(0,s-1)*t.row;return i>0?i+t.row:i}function BM(e,t,n){return Gu(1,am((e+n)/(am(t)+n)))}const xne=Ps(()=>{const e=dt(p=>`Item ${p}`),t=dt({}),n=dt(null),r=dt("virtuoso-grid-item"),o=dt("virtuoso-grid-list"),s=dt(dne),i=dt("div"),l=dt(hg),u=(p,h=null)=>dc(ft(t,tn(m=>m[p]),kr()),h);return{context:n,itemContent:e,components:t,computeItemKey:s,itemClassName:r,listClassName:o,headerFooterTag:i,scrollerRef:l,FooterComponent:u("Footer"),HeaderComponent:u("Header"),ListComponent:u("List","div"),ItemComponent:u("Item","div"),ScrollerComponent:u("Scroller","div"),ScrollSeekPlaceholder:u("ScrollSeekPlaceholder","div")}}),yne=Ps(([e,t])=>({...e,...t}),sl(bne,xne)),Cne=H.memo(function(){const t=dn("gridState"),n=dn("listClassName"),r=dn("itemClassName"),o=dn("itemContent"),s=dn("computeItemKey"),i=dn("isSeeking"),l=Fo("scrollHeight"),u=dn("ItemComponent"),p=dn("ListComponent"),h=dn("ScrollSeekPlaceholder"),m=dn("context"),v=Fo("itemDimensions"),b=Fo("gap"),y=dn("log"),x=dn("stateRestoreInProgress"),w=gg(k=>{const _=k.parentElement.parentElement.scrollHeight;l(_);const j=k.firstChild;if(j){const{width:I,height:E}=j.getBoundingClientRect();v({width:I,height:E})}b({row:w_("row-gap",getComputedStyle(k).rowGap,y),column:w_("column-gap",getComputedStyle(k).columnGap,y)})});return x?null:H.createElement(p,{ref:w,className:n,...Oi(p,m),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-test-id":"virtuoso-item-list"},t.items.map(k=>{const _=s(k.index,k.data,m);return i?H.createElement(h,{key:_,...Oi(h,m),index:k.index,height:t.itemHeight,width:t.itemWidth}):H.createElement(u,{...Oi(u,m),className:r,"data-index":k.index,key:_},o(k.index,k.data,m))}))}),wne=H.memo(function(){const t=dn("HeaderComponent"),n=Fo("headerHeight"),r=dn("headerFooterTag"),o=gg(i=>n(nm(i,"height"))),s=dn("context");return t?H.createElement(r,{ref:o},H.createElement(t,Oi(t,s))):null}),Sne=H.memo(function(){const t=dn("FooterComponent"),n=Fo("footerHeight"),r=dn("headerFooterTag"),o=gg(i=>n(nm(i,"height"))),s=dn("context");return t?H.createElement(r,{ref:o},H.createElement(t,Oi(t,s))):null}),kne=({children:e})=>{const t=H.useContext(zM),n=Fo("itemDimensions"),r=Fo("viewportDimensions"),o=gg(s=>{r(s.getBoundingClientRect())});return H.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),H.createElement("div",{style:FM,ref:o},e)},_ne=({children:e})=>{const t=H.useContext(zM),n=Fo("windowViewportRect"),r=Fo("itemDimensions"),o=dn("customScrollParent"),s=une(n,o);return H.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),H.createElement("div",{ref:s,style:FM},e)},jne=H.memo(function({...t}){const n=dn("useWindowScroll"),r=dn("customScrollParent"),o=r||n?Ene:Ine,s=r||n?_ne:kne;return H.createElement(o,{...t},H.createElement(s,null,H.createElement(wne,null),H.createElement(Cne,null),H.createElement(Sne,null)))}),{Component:Pne,usePublisher:Fo,useEmitterValue:dn,useEmitter:HM}=Kte(yne,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged"}},jne),Ine=pne({usePublisher:Fo,useEmitterValue:dn,useEmitter:HM}),Ene=hne({usePublisher:Fo,useEmitterValue:dn,useEmitter:HM});function w_(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Py.WARN),t==="normal"?0:parseInt(t??"0",10)}const Mne=Pne,One=e=>{const t=L(s=>s.gallery.galleryView),{data:n}=Vj(e),{data:r}=Uj(e),o=d.useMemo(()=>t==="images"?n:r,[t,r,n]);return{totalImages:n,totalAssets:r,currentViewTotal:o}};function bg(e,t={}){let n=d.useCallback(o=>t.keys?GN(e,t.keys,o):e.listen(o),[t.keys,e]),r=e.get.bind(e);return d.useSyncExternalStore(n,r,r)}const Dne=({imageDTO:e})=>a.jsx($,{sx:{pointerEvents:"none",flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,p:2,alignItems:"flex-start",gap:2},children:a.jsxs(da,{variant:"solid",colorScheme:"base",children:[e.width," × ",e.height]})}),Rne=d.memo(Dne),Iy=({postUploadAction:e,isDisabled:t})=>{const n=L(u=>u.gallery.autoAddBoardId),[r]=$j(),o=d.useCallback(u=>{const p=u[0];p&&r({file:p,image_category:"user",is_intermediate:!1,postUploadAction:e??{type:"TOAST"},board_id:n==="none"?void 0:n})},[n,e,r]),{getRootProps:s,getInputProps:i,open:l}=Vx({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},onDropAccepted:o,disabled:t,noDrag:!0,multiple:!1});return{getUploadButtonProps:s,getUploadInputProps:i,openUploader:l}},Ane=ie(xe,({generation:e})=>{const{model:t}=e;return{model:t}}),xg=()=>{const e=ee(),t=tl(),{t:n}=Z(),{model:r}=L(Ane),o=d.useCallback(()=>{t({title:n("toast.parameterSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),s=d.useCallback(O=>{t({title:n("toast.parameterNotSet"),description:O,status:"warning",duration:2500,isClosable:!0})},[n,t]),i=d.useCallback(()=>{t({title:n("toast.parametersSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),l=d.useCallback(O=>{t({title:n("toast.parametersNotSet"),status:"warning",description:O,duration:2500,isClosable:!0})},[n,t]),u=d.useCallback((O,T,K,F)=>{if(Gf(O)||Kf(T)||xu(K)||K0(F)){Gf(O)&&e(Lu(O)),Kf(T)&&e(zu(T)),xu(K)&&e(Fu(K)),xu(F)&&e(Bu(F)),o();return}s()},[e,o,s]),p=d.useCallback(O=>{if(!Gf(O)){s();return}e(Lu(O)),o()},[e,o,s]),h=d.useCallback(O=>{if(!Kf(O)){s();return}e(zu(O)),o()},[e,o,s]),m=d.useCallback(O=>{if(!xu(O)){s();return}e(Fu(O)),o()},[e,o,s]),v=d.useCallback(O=>{if(!K0(O)){s();return}e(Bu(O)),o()},[e,o,s]),b=d.useCallback(O=>{if(!VC(O)){s();return}e(Up(O)),o()},[e,o,s]),y=d.useCallback(O=>{if(!q0(O)){s();return}e(Gp(O)),o()},[e,o,s]),x=d.useCallback(O=>{if(!UC(O)){s();return}e(o1(O)),o()},[e,o,s]),w=d.useCallback(O=>{if(!X0(O)){s();return}e(s1(O)),o()},[e,o,s]),k=d.useCallback(O=>{if(!Y0(O)){s();return}e(Kp(O)),o()},[e,o,s]),_=d.useCallback(O=>{if(!GC(O)){s();return}e(Ti(O)),o()},[e,o,s]),j=d.useCallback(O=>{if(!KC(O)){s();return}e($i(O)),o()},[e,o,s]),I=d.useCallback(O=>{if(!qC(O)){s();return}e(qp(O)),o()},[e,o,s]),{loras:E}=Cd(void 0,{selectFromResult:O=>({loras:O.data?PD.getSelectors().selectAll(O.data):[]})}),M=d.useCallback(O=>{if(!Kj(O.lora))return{lora:null,error:"Invalid LoRA model"};const{base_model:T,model_name:K}=O.lora,F=E.find(X=>X.base_model===T&&X.model_name===K);return F?(F==null?void 0:F.base_model)===(r==null?void 0:r.base_model)?{lora:F,error:null}:{lora:null,error:"LoRA incompatible with currently-selected model"}:{lora:null,error:"LoRA model is not installed"}},[E,r==null?void 0:r.base_model]),D=d.useCallback(O=>{const T=M(O);if(!T.lora){s(T.error);return}e(XC({...T.lora,weight:O.weight})),o()},[M,e,o,s]),R=d.useCallback(O=>{e(gm(O))},[e]),A=d.useCallback(O=>{if(!O){l();return}const{cfg_scale:T,height:K,model:F,positive_prompt:V,negative_prompt:X,scheduler:W,seed:z,steps:Y,width:B,strength:q,positive_style_prompt:re,negative_style_prompt:Q,refiner_model:le,refiner_cfg_scale:se,refiner_steps:U,refiner_scheduler:G,refiner_positive_aesthetic_score:te,refiner_negative_aesthetic_score:ae,refiner_start:oe,loras:pe}=O;q0(T)&&e(Gp(T)),UC(F)&&e(o1(F)),Gf(V)&&e(Lu(V)),Kf(X)&&e(zu(X)),X0(W)&&e(s1(W)),VC(z)&&e(Up(z)),Y0(Y)&&e(Kp(Y)),GC(B)&&e(Ti(B)),KC(K)&&e($i(K)),qC(q)&&e(qp(q)),xu(re)&&e(Fu(re)),K0(Q)&&e(Bu(Q)),ID(le)&&e(qj(le)),Y0(U)&&e(a1(U)),q0(se)&&e(i1(se)),X0(G)&&e(Xj(G)),ED(te)&&e(l1(te)),MD(ae)&&e(c1(ae)),OD(oe)&&e(u1(oe)),pe==null||pe.forEach(ue=>{const me=M(ue);me.lora&&e(XC({...me.lora,weight:ue.weight}))}),i()},[l,i,e,M]);return{recallBothPrompts:u,recallPositivePrompt:p,recallNegativePrompt:h,recallSDXLPositiveStylePrompt:m,recallSDXLNegativeStylePrompt:v,recallSeed:b,recallCfgScale:y,recallModel:x,recallScheduler:w,recallSteps:k,recallWidth:_,recallHeight:j,recallStrength:I,recallLoRA:D,recallAllParameters:A,sendToImageToImage:R}},WM=()=>{const e=tl(),{t}=Z(),n=d.useMemo(()=>!!navigator.clipboard&&!!window.ClipboardItem,[]),r=d.useCallback(async o=>{n||e({title:t("toast.problemCopyingImage"),description:"Your browser doesn't support the Clipboard API.",status:"error",duration:2500,isClosable:!0});try{const i=await(await fetch(o)).blob();await navigator.clipboard.write([new ClipboardItem({[i.type]:i})]),e({title:t("toast.imageCopied"),status:"success",duration:2500,isClosable:!0})}catch(s){e({title:t("toast.problemCopyingImage"),description:String(s),status:"error",duration:2500,isClosable:!0})}},[n,t,e]);return{isClipboardAPIAvailable:n,copyImageToClipboard:r}};function Nne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M16.5 9c-.42 0-.83.04-1.24.11L1.01 3 1 10l9 2-9 2 .01 7 8.07-3.46C9.59 21.19 12.71 24 16.5 24c4.14 0 7.5-3.36 7.5-7.5S20.64 9 16.5 9zm0 13c-3.03 0-5.5-2.47-5.5-5.5s2.47-5.5 5.5-5.5 5.5 2.47 5.5 5.5-2.47 5.5-5.5 5.5z"}},{tag:"path",attr:{d:"M18.27 14.03l-1.77 1.76-1.77-1.76-.7.7 1.76 1.77-1.76 1.77.7.7 1.77-1.76 1.77 1.76.7-.7-1.76-1.77 1.76-1.77z"}}]})(e)}function yg(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M17 16l-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z"}}]})(e)}function Tne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z"}}]})(e)}function $ne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-11-4l2.03 2.71L16 11l4 5H8l3-4zM2 6v14c0 1.1.9 2 2 2h14v-2H4V6H2z"}}]})(e)}function Lne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}}]})(e)}function Ey(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"}}]})(e)}function My(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}}]})(e)}function VM(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z"}}]})(e)}const Oy=e=>e.config;Lb("gallery/requestedBoardImagesDeletion");const zne=Lb("gallery/sentImageToCanvas"),UM=Lb("gallery/sentImageToImg2Img"),Fne=e=>{const{imageDTO:t}=e,n=ee(),{t:r}=Z(),o=tl(),s=Xt("unifiedCanvas").isFeatureEnabled,{shouldFetchMetadataFromApi:i}=L(Oy),l=bg(zb),{metadata:u,workflow:p,isLoading:h}=Fb({image:t,shouldFetchMetadataFromApi:i},{selectFromResult:F=>{var V,X;return{isLoading:F.isFetching,metadata:(V=F==null?void 0:F.currentData)==null?void 0:V.metadata,workflow:(X=F==null?void 0:F.currentData)==null?void 0:X.workflow}}}),[m]=Bb(),[v]=Hb(),{isClipboardAPIAvailable:b,copyImageToClipboard:y}=WM(),x=d.useCallback(()=>{t&&n(vm([t]))},[n,t]),{recallBothPrompts:w,recallSeed:k,recallAllParameters:_}=xg(),j=d.useCallback(()=>{w(u==null?void 0:u.positive_prompt,u==null?void 0:u.negative_prompt,u==null?void 0:u.positive_style_prompt,u==null?void 0:u.negative_style_prompt)},[u==null?void 0:u.negative_prompt,u==null?void 0:u.positive_prompt,u==null?void 0:u.positive_style_prompt,u==null?void 0:u.negative_style_prompt,w]),I=d.useCallback(()=>{k(u==null?void 0:u.seed)},[u==null?void 0:u.seed,k]),E=d.useCallback(()=>{p&&n(Wb(p))},[n,p]),M=d.useCallback(()=>{n(UM()),n(gm(t))},[n,t]),D=d.useCallback(()=>{n(zne()),Fr.flushSync(()=>{n(Aa("unifiedCanvas"))}),n(Yj(t)),o({title:r("toast.sentToUnifiedCanvas"),status:"success",duration:2500,isClosable:!0})},[n,t,r,o]),R=d.useCallback(()=>{_(u)},[u,_]),A=d.useCallback(()=>{n(Qj([t])),n($b(!0))},[n,t]),O=d.useCallback(()=>{y(t.image_url)},[y,t.image_url]),T=d.useCallback(()=>{t&&m({imageDTOs:[t]})},[m,t]),K=d.useCallback(()=>{t&&v({imageDTOs:[t]})},[v,t]);return a.jsxs(a.Fragment,{children:[a.jsx(Wt,{as:"a",href:t.image_url,target:"_blank",icon:a.jsx(AE,{}),children:r("common.openInNewTab")}),b&&a.jsx(Wt,{icon:a.jsx(Wc,{}),onClickCapture:O,children:r("parameters.copyImage")}),a.jsx(Wt,{as:"a",download:!0,href:t.image_url,target:"_blank",icon:a.jsx(ng,{}),w:"100%",children:r("parameters.downloadImage")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(yg,{}),onClickCapture:E,isDisabled:h||!p,children:r("nodes.loadWorkflow")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(FE,{}),onClickCapture:j,isDisabled:h||(u==null?void 0:u.positive_prompt)===void 0&&(u==null?void 0:u.negative_prompt)===void 0,children:r("parameters.usePrompt")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(BE,{}),onClickCapture:I,isDisabled:h||(u==null?void 0:u.seed)===void 0,children:r("parameters.useSeed")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(ME,{}),onClickCapture:R,isDisabled:h||!u,children:r("parameters.useAll")}),a.jsx(Wt,{icon:a.jsx(Ok,{}),onClickCapture:M,id:"send-to-img2img",children:r("parameters.sendToImg2Img")}),s&&a.jsx(Wt,{icon:a.jsx(Ok,{}),onClickCapture:D,id:"send-to-canvas",children:r("parameters.sendToUnifiedCanvas")}),a.jsx(Wt,{icon:a.jsx(NE,{}),onClickCapture:A,children:"Change Board"}),t.starred?a.jsx(Wt,{icon:l?l.off.icon:a.jsx(My,{}),onClickCapture:K,children:l?l.off.text:"Unstar Image"}):a.jsx(Wt,{icon:l?l.on.icon:a.jsx(Ey,{}),onClickCapture:T,children:l?l.on.text:"Star Image"}),a.jsx(Wt,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Kr,{}),onClickCapture:x,children:r("gallery.deleteImage")})]})},GM=d.memo(Fne),Ep=()=>a.jsx($,{w:"14px",alignItems:"center",justifyContent:"center",children:a.jsx(Xi,{size:"xs"})}),Bne=()=>{const e=ee(),t=L(m=>m.gallery.selection),n=bg(zb),[r]=Bb(),[o]=Hb(),s=d.useCallback(()=>{e(Qj(t)),e($b(!0))},[e,t]),i=d.useCallback(()=>{e(vm(t))},[e,t]),l=d.useCallback(()=>{r({imageDTOs:t})},[r,t]),u=d.useCallback(()=>{o({imageDTOs:t})},[o,t]),p=d.useMemo(()=>t.every(m=>m.starred),[t]),h=d.useMemo(()=>t.every(m=>!m.starred),[t]);return a.jsxs(a.Fragment,{children:[p&&a.jsx(Wt,{icon:n?n.on.icon:a.jsx(Ey,{}),onClickCapture:u,children:n?n.off.text:"Unstar All"}),(h||!p&&!h)&&a.jsx(Wt,{icon:n?n.on.icon:a.jsx(My,{}),onClickCapture:l,children:n?n.on.text:"Star All"}),a.jsx(Wt,{icon:a.jsx(NE,{}),onClickCapture:s,children:"Change Board"}),a.jsx(Wt,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Kr,{}),onClickCapture:i,children:"Delete Selection"})]})},Hne=d.memo(Bne),Wne=ie([xe],({gallery:e})=>({selectionCount:e.selection.length}),we),Vne=({imageDTO:e,children:t})=>{const{selectionCount:n}=L(Wne),r=d.useCallback(o=>{o.preventDefault()},[]);return a.jsx(ky,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>e?n>1?a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:r,children:a.jsx(Hne,{})}):a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:r,children:a.jsx(GM,{imageDTO:e})}):null,children:t})},Une=d.memo(Vne),Gne=e=>{const{data:t,disabled:n,...r}=e,o=d.useRef(Ba()),{attributes:s,listeners:i,setNodeRef:l}=ite({id:o.current,disabled:n,data:t});return a.jsx(Ie,{ref:l,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,...s,...i,...r})},Kne=d.memo(Gne),qne=a.jsx(Tn,{as:og,sx:{boxSize:16}}),Xne=a.jsx(Kn,{icon:Ui}),Yne=e=>{const{imageDTO:t,onError:n,onClick:r,withMetadataOverlay:o=!1,isDropDisabled:s=!1,isDragDisabled:i=!1,isUploadDisabled:l=!1,minSize:u=24,postUploadAction:p,imageSx:h,fitContainer:m=!1,droppableData:v,draggableData:b,dropLabel:y,isSelected:x=!1,thumbnail:w=!1,noContentFallback:k=Xne,uploadElement:_=qne,useThumbailFallback:j,withHoverOverlay:I=!1,children:E,onMouseOver:M,onMouseOut:D}=e,{colorMode:R}=la(),[A,O]=d.useState(!1),T=d.useCallback(W=>{M&&M(W),O(!0)},[M]),K=d.useCallback(W=>{D&&D(W),O(!1)},[D]),{getUploadButtonProps:F,getUploadInputProps:V}=Iy({postUploadAction:p,isDisabled:l}),X=l?{}:{cursor:"pointer",bg:Ae("base.200","base.700")(R),_hover:{bg:Ae("base.300","base.650")(R),color:Ae("base.500","base.300")(R)}};return a.jsx(Une,{imageDTO:t,children:W=>a.jsxs($,{ref:W,onMouseOver:T,onMouseOut:K,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative",minW:u||void 0,minH:u||void 0,userSelect:"none",cursor:i||!t?"default":"pointer"},children:[t&&a.jsxs($,{sx:{w:"full",h:"full",position:m?"absolute":"relative",alignItems:"center",justifyContent:"center"},children:[a.jsx(Qi,{src:w?t.thumbnail_url:t.image_url,fallbackStrategy:"beforeLoadOrError",fallbackSrc:j?t.thumbnail_url:void 0,fallback:j?void 0:a.jsx($te,{image:t}),onError:n,draggable:!1,sx:{w:t.width,objectFit:"contain",maxW:"full",maxH:"full",borderRadius:"base",...h}}),o&&a.jsx(Rne,{imageDTO:t}),a.jsx(Sy,{isSelected:x,isHovered:I?A:!1})]}),!t&&!l&&a.jsx(a.Fragment,{children:a.jsxs($,{sx:{minH:u,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",transitionProperty:"common",transitionDuration:"0.1s",color:Ae("base.500","base.500")(R),...X},...F(),children:[a.jsx("input",{...V()}),_]})}),!t&&l&&k,t&&!i&&a.jsx(Kne,{data:b,disabled:i||!t,onClick:r}),E,!s&&a.jsx(wy,{data:v,disabled:s,dropLabel:y})]})})},oa=d.memo(Yne),Qne=()=>a.jsx(Hm,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full"}})}),Zne=d.memo(Qne),Jne=ie([xe,Vb],({gallery:e},t)=>{const n=e.selection;return{queryArgs:t,selection:n}},we),ere=e=>{const t=ee(),{queryArgs:n,selection:r}=L(Jne),{imageDTOs:o}=Zj(n,{selectFromResult:p=>({imageDTOs:p.data?DD.selectAll(p.data):[]})}),s=Xt("multiselect").isFeatureEnabled,i=d.useCallback(p=>{var h;if(e){if(!s){t(yu([e]));return}if(p.shiftKey){const m=e.image_name,v=(h=r[r.length-1])==null?void 0:h.image_name,b=o.findIndex(x=>x.image_name===v),y=o.findIndex(x=>x.image_name===m);if(b>-1&&y>-1){const x=Math.min(b,y),w=Math.max(b,y),k=o.slice(x,w+1);t(yu(Ew(r.concat(k))))}}else p.ctrlKey||p.metaKey?r.some(m=>m.image_name===e.image_name)&&r.length>1?t(yu(r.filter(m=>m.image_name!==e.image_name))):t(yu(Ew(r.concat(e)))):t(yu([e]))}},[t,e,o,r,s]),l=d.useMemo(()=>e?r.some(p=>p.image_name===e.image_name):!1,[e,r]),u=d.useMemo(()=>r.length,[r.length]);return{selection:r,selectionCount:u,isSelected:l,handleClick:i}},tre=e=>{const{onClick:t,tooltip:n,icon:r,styleOverrides:o}=e,s=Li("drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-600))","drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-800))");return a.jsx(Te,{onClick:t,"aria-label":n,tooltip:n,icon:r,size:"sm",variant:"link",sx:{position:"absolute",top:1,insetInlineEnd:1,p:0,minW:0,svg:{transitionProperty:"common",transitionDuration:"normal",fill:"base.100",_hover:{fill:"base.50"},filter:s},...o}})},Di=d.memo(tre),nre=e=>{const t=ee(),{imageName:n}=e,{currentData:r}=Wr(n),o=L(M=>M.hotkeys.shift),{t:s}=Z(),{handleClick:i,isSelected:l,selection:u,selectionCount:p}=ere(r),h=bg(zb),m=d.useCallback(M=>{M.stopPropagation(),r&&t(vm([r]))},[t,r]),v=d.useMemo(()=>{if(p>1)return{id:"gallery-image",payloadType:"IMAGE_DTOS",payload:{imageDTOs:u}};if(r)return{id:"gallery-image",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,u,p]),[b]=Bb(),[y]=Hb(),x=d.useCallback(()=>{r&&(r.starred&&y({imageDTOs:[r]}),r.starred||b({imageDTOs:[r]}))},[b,y,r]),[w,k]=d.useState(!1),_=d.useCallback(()=>{k(!0)},[]),j=d.useCallback(()=>{k(!1)},[]),I=d.useMemo(()=>{if(r!=null&&r.starred)return h?h.on.icon:a.jsx(My,{size:"20"});if(!(r!=null&&r.starred)&&w)return h?h.off.icon:a.jsx(Ey,{size:"20"})},[r==null?void 0:r.starred,w,h]),E=d.useMemo(()=>r!=null&&r.starred?h?h.off.text:"Unstar":r!=null&&r.starred?"":h?h.on.text:"Star",[r==null?void 0:r.starred,h]);return r?a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none"},children:a.jsx($,{userSelect:"none",sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:a.jsx(oa,{onClick:i,imageDTO:r,draggableData:v,isSelected:l,minSize:0,imageSx:{w:"full",h:"full"},isDropDisabled:!0,isUploadDisabled:!0,thumbnail:!0,withHoverOverlay:!0,onMouseOver:_,onMouseOut:j,children:a.jsxs(a.Fragment,{children:[a.jsx(Di,{onClick:x,icon:I,tooltip:E}),w&&o&&a.jsx(Di,{onClick:m,icon:a.jsx(Kr,{}),tooltip:s("gallery.deleteImage"),styleOverrides:{bottom:2,top:"auto"}})]})})})}):a.jsx(Zne,{})},rre=d.memo(nre),ore=Pe((e,t)=>a.jsx(Ie,{className:"item-container",ref:t,p:1.5,children:e.children})),sre=d.memo(ore),are=Pe((e,t)=>{const n=L(r=>r.gallery.galleryImageMinimumWidth);return a.jsx(Ga,{...e,className:"list-container",ref:t,sx:{gridTemplateColumns:`repeat(auto-fill, minmax(${n}px, 1fr));`},children:e.children})}),ire=d.memo(are),lre={defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}},cre=()=>{const{t:e}=Z(),t=d.useRef(null),[n,r]=d.useState(null),[o,s]=yM(lre),i=L(w=>w.gallery.selectedBoardId),{currentViewTotal:l}=One(i),u=L(Vb),{currentData:p,isFetching:h,isSuccess:m,isError:v}=Zj(u),[b]=Jj(),y=d.useMemo(()=>!p||!l?!1:p.ids.length{y&&b({...u,offset:(p==null?void 0:p.ids.length)??0,limit:e5})},[y,b,u,p==null?void 0:p.ids.length]);return d.useEffect(()=>{const{current:w}=t;return n&&w&&o({target:w,elements:{viewport:n}}),()=>{var k;return(k=s())==null?void 0:k.destroy()}},[n,o,s]),p?m&&(p==null?void 0:p.ids.length)===0?a.jsx($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(Kn,{label:e("gallery.noImagesInGallery"),icon:Ui})}):m&&p?a.jsxs(a.Fragment,{children:[a.jsx(Ie,{ref:t,"data-overlayscrollbars":"",h:"100%",children:a.jsx(Mne,{style:{height:"100%"},data:p.ids,endReached:x,components:{Item:sre,List:ire},scrollerRef:r,itemContent:(w,k)=>a.jsx(rre,{imageName:k},k)})}),a.jsx(it,{onClick:x,isDisabled:!y,isLoading:h,loadingText:e("gallery.loading"),flexShrink:0,children:`Load More (${p.ids.length} of ${l})`})]}):v?a.jsx(Ie,{sx:{w:"full",h:"full"},children:a.jsx(Kn,{label:e("gallery.unableToLoad"),icon:MZ})}):null:a.jsx($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(Kn,{label:e("gallery.loading"),icon:Ui})})},ure=d.memo(cre),dre=ie([xe],e=>{const{galleryView:t}=e.gallery;return{galleryView:t}},we),fre=()=>{const e=d.useRef(null),t=d.useRef(null),{galleryView:n}=L(dre),r=ee(),{isOpen:o,onToggle:s}=Mr({defaultIsOpen:!0}),i=d.useCallback(()=>{r(YC("images"))},[r]),l=d.useCallback(()=>{r(YC("assets"))},[r]);return a.jsxs(W3,{layerStyle:"first",sx:{flexDirection:"column",h:"full",w:"full",borderRadius:"base",p:2},children:[a.jsxs(Ie,{sx:{w:"full"},children:[a.jsxs($,{ref:e,sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:[a.jsx(jte,{isOpen:o,onToggle:s}),a.jsx(Tte,{})]}),a.jsx(Ie,{children:a.jsx(Ste,{isOpen:o})})]}),a.jsxs($,{ref:t,direction:"column",gap:2,h:"full",w:"full",children:[a.jsx($,{sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:a.jsx(Ji,{index:n==="images"?0:1,variant:"unstyled",size:"sm",sx:{w:"full"},children:a.jsx(el,{children:a.jsxs(mn,{isAttached:!0,sx:{w:"full"},children:[a.jsx(Pr,{as:it,size:"sm",isChecked:n==="images",onClick:i,sx:{w:"full"},leftIcon:a.jsx(FZ,{}),children:"Images"}),a.jsx(Pr,{as:it,size:"sm",isChecked:n==="assets",onClick:l,sx:{w:"full"},leftIcon:a.jsx(YZ,{}),children:"Assets"})]})})})}),a.jsx(ure,{})]})]})},pre=d.memo(fre),hre=ie(xo,e=>({isProcessing:e.isProcessing,isConnected:e.isConnected,isCancelable:e.isCancelable,currentIteration:e.currentIteration,totalIterations:e.totalIterations,sessionId:e.sessionId,cancelType:e.cancelType,isCancelScheduled:e.isCancelScheduled}),{memoizeOptions:{resultEqualityCheck:_t}}),mre=e=>{const t=ee(),{btnGroupWidth:n="auto",asIconButton:r=!1,...o}=e,{isProcessing:s,isConnected:i,isCancelable:l,cancelType:u,isCancelScheduled:p,sessionId:h}=L(hre),m=d.useCallback(()=>{if(h){if(u==="scheduled"){t(RD());return}t(AD({session_id:h}))}},[t,h,u]),{t:v}=Z(),b=d.useCallback(w=>{const k=Array.isArray(w)?w[0]:w;t(ND(k))},[t]);Ze("shift+x",()=>{(i||s)&&l&&m()},[i,s,l]);const y=d.useMemo(()=>v(p?"parameters.cancel.isScheduled":u==="immediate"?"parameters.cancel.immediate":"parameters.cancel.schedule"),[v,u,p]),x=d.useMemo(()=>p?a.jsx(eh,{}):u==="immediate"?a.jsx(Lne,{}):a.jsx(Nne,{}),[u,p]);return a.jsxs(mn,{isAttached:!0,width:n,children:[r?a.jsx(Te,{icon:x,tooltip:y,"aria-label":y,isDisabled:!i||!s||!l,onClick:m,colorScheme:"error",id:"cancel-button",...o}):a.jsx(it,{leftIcon:x,tooltip:y,"aria-label":y,isDisabled:!i||!s||!l,onClick:m,colorScheme:"error",id:"cancel-button",...o,children:v("parameters.cancel.cancel")}),a.jsxs(Nd,{closeOnSelect:!1,children:[a.jsx(Td,{as:Te,tooltip:v("parameters.cancel.setType"),"aria-label":v("parameters.cancel.setType"),icon:a.jsx(rte,{w:"1em",h:"1em"}),paddingX:0,paddingY:0,colorScheme:"error",minWidth:5,...o}),a.jsx(Ka,{minWidth:"240px",children:a.jsxs(iP,{value:u,title:"Cancel Type",type:"radio",onChange:b,children:[a.jsx(ah,{value:"immediate",children:v("parameters.cancel.immediate")}),a.jsx(ah,{value:"scheduled",children:v("parameters.cancel.schedule")})]})})]})]})},KM=d.memo(mre),gre=ie([xe,wn],(e,t)=>{const{generation:n,system:r,nodes:o}=e,{initialImage:s,model:i}=n,{isProcessing:l,isConnected:u}=r,p=[];return l&&p.push(vt.t("parameters.invoke.systemBusy")),u||p.push(vt.t("parameters.invoke.systemDisconnected")),t==="img2img"&&!s&&p.push(vt.t("parameters.invoke.noInitialImageSelected")),t==="nodes"?o.shouldValidateGraph&&(o.nodes.length||p.push(vt.t("parameters.invoke.noNodesInGraph")),o.nodes.forEach(h=>{if(!Cn(h))return;const m=o.nodeTemplates[h.data.type];if(!m){p.push(vt.t("parameters.invoke.missingNodeTemplate"));return}const v=TD([h],o.edges);Pn(h.data.inputs,b=>{const y=m.inputs[b.name],x=v.some(w=>w.target===h.id&&w.targetHandle===b.name);if(!y){p.push(vt.t("parameters.invoke.missingFieldTemplate"));return}if(y.required&&b.value===void 0&&!x){p.push(vt.t("parameters.invoke.missingInputForField",{nodeLabel:h.data.label||m.title,fieldLabel:b.label||y.title}));return}})})):(i||p.push(vt.t("parameters.invoke.noModelSelected")),e.controlNet.isEnabled&&rr(e.controlNet.controlNets).forEach((h,m)=>{h.isEnabled&&(h.model||p.push(vt.t("parameters.invoke.noModelForControlNet",{index:m+1})),(!h.controlImage||!h.processedControlImage&&h.processorType!=="none")&&p.push(vt.t("parameters.invoke.noControlImageForControlNet",{index:m+1})))})),{isReady:!p.length,isProcessing:l,reasons:p}},we),Xd=()=>{const{isReady:e,isProcessing:t,reasons:n}=L(gre);return{isReady:e,isProcessing:t,reasons:n}},vre=ie(xo,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:_t}}),bre=()=>{const{t:e}=Z(),{isProcessing:t,currentStep:n,totalSteps:r,currentStatusHasSteps:o}=L(vre),s=n?Math.round(n*100/r):0;return a.jsx(SP,{value:s,"aria-label":e("accessibility.invokeProgressBar"),isIndeterminate:t&&!o,height:"full",colorScheme:"accent"})},xre=d.memo(bre);function qM(e){const{asIconButton:t=!1,sx:n,...r}=e,o=ee(),{isReady:s,isProcessing:i}=Xd(),l=L(wn),u=d.useCallback(()=>{o(wd()),o(bm(l))},[o,l]),{t:p}=Z();return Ze(["ctrl+enter","meta+enter"],u,{enabled:()=>s,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[s,l]),a.jsx(Ie,{style:{flexGrow:4},position:"relative",children:a.jsxs(Ie,{style:{position:"relative"},children:[!s&&a.jsx(Ie,{sx:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip",borderRadius:"base",...n},...r,children:a.jsx(xre,{})}),t?a.jsx(Te,{"aria-label":p("parameters.invoke.invoke"),type:"submit",icon:a.jsx(Mk,{}),isDisabled:!s,onClick:u,tooltip:a.jsx(pb,{}),colorScheme:"accent",isLoading:i,id:"invoke-button","data-progress":i,sx:{w:"full",flexGrow:1,...n},...r}):a.jsx(it,{tooltip:a.jsx(pb,{}),"aria-label":p("parameters.invoke.invoke"),type:"submit","data-progress":i,isDisabled:!s,onClick:u,colorScheme:"accent",id:"invoke-button",leftIcon:i?void 0:a.jsx(Mk,{}),isLoading:i,loadingText:p("parameters.invoke.invoke"),sx:{w:"full",flexGrow:1,fontWeight:700,...n},...r,children:"Invoke"})]})})}const yre=ie([xe],({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},we),pb=d.memo(()=>{const{isReady:e,reasons:t}=Xd(),{autoAddBoardId:n}=L(yre),r=fg(n),{t:o}=Z();return a.jsxs($,{flexDir:"column",gap:1,children:[a.jsx(ye,{fontWeight:600,children:o(e?"parameters.invoke.readyToInvoke":"parameters.invoke.unableToInvoke")}),t.length>0&&a.jsx(Od,{children:t.map((s,i)=>a.jsx(lo,{children:a.jsx(ye,{fontWeight:400,children:s})},`${s}.${i}`))}),a.jsx(Vr,{opacity:.2,borderColor:"base.50",_dark:{borderColor:"base.900"}}),a.jsxs(ye,{fontWeight:400,fontStyle:"oblique 10deg",children:[o("parameters.invoke.addingImagesTo")," ",a.jsx(ye,{as:"span",fontWeight:600,children:r||"Uncategorized"})]})]})});pb.displayName="InvokeButtonTooltipContent";const Cre=()=>a.jsxs($,{layerStyle:"first",sx:{gap:2,borderRadius:"base",p:2},children:[a.jsx(qM,{}),a.jsx(KM,{})]}),XM=d.memo(Cre),{createElement:Ec,createContext:wre,forwardRef:YM,useCallback:Ls,useContext:QM,useEffect:ea,useImperativeHandle:ZM,useLayoutEffect:Sre,useMemo:kre,useRef:zr,useState:Ku}=Tb,S_=Tb["useId".toString()],qu=Sre,_re=typeof S_=="function"?S_:()=>null;let jre=0;function Dy(e=null){const t=_re(),n=zr(e||t||null);return n.current===null&&(n.current=""+jre++),n.current}const Cg=wre(null);Cg.displayName="PanelGroupContext";function JM({children:e=null,className:t="",collapsedSize:n=0,collapsible:r=!1,defaultSize:o=null,forwardedRef:s,id:i=null,maxSize:l=null,minSize:u,onCollapse:p=null,onResize:h=null,order:m=null,style:v={},tagName:b="div"}){const y=QM(Cg);if(y===null)throw Error("Panel components must be rendered within a PanelGroup container");const x=Dy(i),{collapsePanel:w,expandPanel:k,getPanelSize:_,getPanelStyle:j,registerPanel:I,resizePanel:E,units:M,unregisterPanel:D}=y;u==null&&(M==="percentages"?u=10:u=0);const R=zr({onCollapse:p,onResize:h});ea(()=>{R.current.onCollapse=p,R.current.onResize=h});const A=j(x,o),O=zr({size:k_(A)}),T=zr({callbacksRef:R,collapsedSize:n,collapsible:r,defaultSize:o,id:x,idWasAutoGenerated:i==null,maxSize:l,minSize:u,order:m});return qu(()=>{O.current.size=k_(A),T.current.callbacksRef=R,T.current.collapsedSize=n,T.current.collapsible=r,T.current.defaultSize=o,T.current.id=x,T.current.idWasAutoGenerated=i==null,T.current.maxSize=l,T.current.minSize=u,T.current.order=m}),qu(()=>(I(x,T),()=>{D(x)}),[m,x,I,D]),ZM(s,()=>({collapse:()=>w(x),expand:()=>k(x),getCollapsed(){return O.current.size===0},getId(){return x},getSize(K){return _(x,K)},resize:(K,F)=>E(x,K,F)}),[w,k,_,x,E]),Ec(b,{children:e,className:t,"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-id":x,"data-panel-size":parseFloat(""+A.flexGrow).toFixed(1),id:`data-panel-id-${x}`,style:{...A,...v}})}const Ua=YM((e,t)=>Ec(JM,{...e,forwardedRef:t}));JM.displayName="Panel";Ua.displayName="forwardRef(Panel)";function k_(e){const{flexGrow:t}=e;return typeof t=="string"?parseFloat(t):t}const qi=10;function Au(e,t,n,r,o,s,i,l){const{id:u,panels:p,units:h}=t,m=h==="pixels"?Na(u):NaN,{sizes:v}=l||{},b=v||s,y=Sr(p),x=b.concat();let w=0;{const j=o<0?r:n,I=y.findIndex(R=>R.current.id===j),E=y[I],M=b[I],D=hb(h,m,E,M,M+Math.abs(o),e);if(M===D)return b;D===0&&M>0&&i.set(j,M),o=o<0?M-D:D-M}let k=o<0?n:r,_=y.findIndex(j=>j.current.id===k);for(;;){const j=y[_],I=b[_],E=Math.abs(o)-Math.abs(w),M=hb(h,m,j,I,I-E,e);if(I!==M&&(M===0&&I>0&&i.set(j.current.id,I),w+=I-M,x[_]=M,w.toPrecision(qi).localeCompare(Math.abs(o).toPrecision(qi),void 0,{numeric:!0})>=0))break;if(o<0){if(--_<0)break}else if(++_>=y.length)break}return w===0?b:(k=o<0?r:n,_=y.findIndex(j=>j.current.id===k),x[_]=b[_]+w,x)}function Nl(e,t,n){t.forEach((r,o)=>{const s=e[o];if(!s)return;const{callbacksRef:i,collapsedSize:l,collapsible:u,id:p}=s.current,h=n[p];if(h!==r){n[p]=r;const{onCollapse:m,onResize:v}=i.current;v&&v(r,h),u&&m&&((h==null||h===l)&&r!==l?m(!1):h!==l&&r===l&&m(!0))}})}function Pre({groupId:e,panels:t,units:n}){const r=n==="pixels"?Na(e):NaN,o=Sr(t),s=Array(o.length);let i=0,l=100;for(let u=0;ui.current.id===e);if(n<0)return[null,null];const r=n===t.length-1,o=r?t[n-1].current.id:e,s=r?e:t[n+1].current.id;return[o,s]}function Na(e){const t=dd(e);if(t==null)return NaN;const n=t.getAttribute("data-panel-group-direction"),r=Ry(e);return n==="horizontal"?t.offsetWidth-r.reduce((o,s)=>o+s.offsetWidth,0):t.offsetHeight-r.reduce((o,s)=>o+s.offsetHeight,0)}function eO(e,t,n){if(e.size===1)return"100";const o=Sr(e).findIndex(i=>i.current.id===t),s=n[o];return s==null?"0":s.toPrecision(qi)}function Ire(e){const t=document.querySelector(`[data-panel-id="${e}"]`);return t||null}function dd(e){const t=document.querySelector(`[data-panel-group-id="${e}"]`);return t||null}function wg(e){const t=document.querySelector(`[data-panel-resize-handle-id="${e}"]`);return t||null}function Ere(e){return tO().findIndex(r=>r.getAttribute("data-panel-resize-handle-id")===e)??null}function tO(){return Array.from(document.querySelectorAll("[data-panel-resize-handle-id]"))}function Ry(e){return Array.from(document.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function Ay(e,t,n){var u,p,h,m;const r=wg(t),o=Ry(e),s=r?o.indexOf(r):-1,i=((p=(u=n[s])==null?void 0:u.current)==null?void 0:p.id)??null,l=((m=(h=n[s+1])==null?void 0:h.current)==null?void 0:m.id)??null;return[i,l]}function Sr(e){return Array.from(e.values()).sort((t,n)=>{const r=t.current.order,o=n.current.order;return r==null&&o==null?0:r==null?-1:o==null?1:r-o})}function hb(e,t,n,r,o,s=null){var h;let{collapsedSize:i,collapsible:l,maxSize:u,minSize:p}=n.current;if(e==="pixels"&&(i=i/t*100,u!=null&&(u=u/t*100),p=p/t*100),l){if(r>i){if(o<=p/2+i)return i}else if(!((h=s==null?void 0:s.type)==null?void 0:h.startsWith("key"))&&o100)&&(t.current.minSize=0),o!=null&&(o<0||e==="percentages"&&o>100)&&(t.current.maxSize=null),r!==null&&(r<0||e==="percentages"&&r>100?t.current.defaultSize=null:ro&&(t.current.defaultSize=o))}function Bv({groupId:e,panels:t,nextSizes:n,prevSizes:r,units:o}){n=[...n];const s=Sr(t),i=o==="pixels"?Na(e):NaN;let l=0;for(let u=0;u{const{direction:i,panels:l}=e.current,u=dd(t);nO(u!=null,`No group found for id "${t}"`);const{height:p,width:h}=u.getBoundingClientRect(),v=Ry(t).map(b=>{const y=b.getAttribute("data-panel-resize-handle-id"),x=Sr(l),[w,k]=Ay(t,y,x);if(w==null||k==null)return()=>{};let _=0,j=100,I=0,E=0;x.forEach(T=>{const{id:K,maxSize:F,minSize:V}=T.current;K===w?(_=V,j=F??100):(I+=V,E+=F??100)});const M=Math.min(j,100-I),D=Math.max(_,(x.length-1)*100-E),R=eO(l,w,o);b.setAttribute("aria-valuemax",""+Math.round(M)),b.setAttribute("aria-valuemin",""+Math.round(D)),b.setAttribute("aria-valuenow",""+Math.round(parseInt(R)));const A=T=>{if(!T.defaultPrevented)switch(T.key){case"Enter":{T.preventDefault();const K=x.findIndex(F=>F.current.id===w);if(K>=0){const F=x[K],V=o[K];if(V!=null){let X=0;V.toPrecision(qi)<=F.current.minSize.toPrecision(qi)?X=i==="horizontal"?h:p:X=-(i==="horizontal"?h:p);const W=Au(T,e.current,w,k,X,o,s.current,null);o!==W&&r(W)}}break}}};b.addEventListener("keydown",A);const O=Ire(w);return O!=null&&b.setAttribute("aria-controls",O.id),()=>{b.removeAttribute("aria-valuemax"),b.removeAttribute("aria-valuemin"),b.removeAttribute("aria-valuenow"),b.removeEventListener("keydown",A),O!=null&&b.removeAttribute("aria-controls")}});return()=>{v.forEach(b=>b())}},[e,t,n,s,r,o])}function Dre({disabled:e,handleId:t,resizeHandler:n}){ea(()=>{if(e||n==null)return;const r=wg(t);if(r==null)return;const o=s=>{if(!s.defaultPrevented)switch(s.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{s.preventDefault(),n(s);break}case"F6":{s.preventDefault();const i=tO(),l=Ere(t);nO(l!==null);const u=s.shiftKey?l>0?l-1:i.length-1:l+1{r.removeEventListener("keydown",o)}},[e,t,n])}function Hv(e,t){if(e.length!==t.length)return!1;for(let n=0;nD.current.id===I),M=r[E];if(M.current.collapsible){const D=h[E];(D===0||D.toPrecision(qi)===M.current.minSize.toPrecision(qi))&&(k=k<0?-M.current.minSize*y:M.current.minSize*y)}return k}else return rO(e,n,o,l,u)}function Are(e){return e.type==="keydown"}function mb(e){return e.type.startsWith("mouse")}function gb(e){return e.type.startsWith("touch")}let vb=null,wi=null;function oO(e){switch(e){case"horizontal":return"ew-resize";case"horizontal-max":return"w-resize";case"horizontal-min":return"e-resize";case"vertical":return"ns-resize";case"vertical-max":return"n-resize";case"vertical-min":return"s-resize"}}function Nre(){wi!==null&&(document.head.removeChild(wi),vb=null,wi=null)}function Wv(e){if(vb===e)return;vb=e;const t=oO(e);wi===null&&(wi=document.createElement("style"),document.head.appendChild(wi)),wi.innerHTML=`*{cursor: ${t}!important;}`}function Tre(e,t=10){let n=null;return(...o)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...o)},t)}}function sO(e){return e.map(t=>{const{minSize:n,order:r}=t.current;return r?`${r}:${n}`:`${n}`}).sort((t,n)=>t.localeCompare(n)).join(",")}function aO(e,t){try{const n=t.getItem(`PanelGroup:sizes:${e}`);if(n){const r=JSON.parse(n);if(typeof r=="object"&&r!=null)return r}}catch{}return null}function $re(e,t,n){const r=aO(e,n);if(r){const o=sO(t);return r[o]??null}return null}function Lre(e,t,n,r){const o=sO(t),s=aO(e,r)||{};s[o]=n;try{r.setItem(`PanelGroup:sizes:${e}`,JSON.stringify(s))}catch(i){console.error(i)}}const Vv={};function __(e){try{if(typeof localStorage<"u")e.getItem=t=>localStorage.getItem(t),e.setItem=(t,n)=>{localStorage.setItem(t,n)};else throw new Error("localStorage not supported in this environment")}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}const Nu={getItem:e=>(__(Nu),Nu.getItem(e)),setItem:(e,t)=>{__(Nu),Nu.setItem(e,t)}};function iO({autoSaveId:e,children:t=null,className:n="",direction:r,disablePointerEventsDuringResize:o=!1,forwardedRef:s,id:i=null,onLayout:l,storage:u=Nu,style:p={},tagName:h="div",units:m="percentages"}){const v=Dy(i),[b,y]=Ku(null),[x,w]=Ku(new Map),k=zr(null);zr({didLogDefaultSizeWarning:!1,didLogIdAndOrderWarning:!1,didLogInvalidLayoutWarning:!1,prevPanelIds:[]});const _=zr({onLayout:l});ea(()=>{_.current.onLayout=l});const j=zr({}),[I,E]=Ku([]),M=zr(new Map),D=zr(0),R=zr({direction:r,id:v,panels:x,sizes:I,units:m});ZM(s,()=>({getId:()=>v,getLayout:B=>{const{sizes:q,units:re}=R.current;if((B??re)==="pixels"){const le=Na(v);return q.map(se=>se/100*le)}else return q},setLayout:(B,q)=>{const{id:re,panels:Q,sizes:le,units:se}=R.current;if((q||se)==="pixels"){const ae=Na(re);B=B.map(oe=>oe/ae*100)}const U=j.current,G=Sr(Q),te=Bv({groupId:re,panels:Q,nextSizes:B,prevSizes:le,units:se});Hv(le,te)||(E(te),Nl(G,te,U))}}),[v]),qu(()=>{R.current.direction=r,R.current.id=v,R.current.panels=x,R.current.sizes=I,R.current.units=m}),Ore({committedValuesRef:R,groupId:v,panels:x,setSizes:E,sizes:I,panelSizeBeforeCollapse:M}),ea(()=>{const{onLayout:B}=_.current,{panels:q,sizes:re}=R.current;if(re.length>0){B&&B(re);const Q=j.current,le=Sr(q);Nl(le,re,Q)}},[I]),qu(()=>{const{id:B,sizes:q,units:re}=R.current;if(q.length===x.size)return;let Q=null;if(e){const le=Sr(x);Q=$re(e,le,u)}if(Q!=null){const le=Bv({groupId:B,panels:x,nextSizes:Q,prevSizes:Q,units:re});E(le)}else{const le=Pre({groupId:B,panels:x,units:re});E(le)}},[e,x,u]),ea(()=>{if(e){if(I.length===0||I.length!==x.size)return;const B=Sr(x);Vv[e]||(Vv[e]=Tre(Lre,100)),Vv[e](e,B,I,u)}},[e,x,I,u]),qu(()=>{if(m==="pixels"){const B=new ResizeObserver(()=>{const{panels:q,sizes:re}=R.current,Q=Bv({groupId:v,panels:q,nextSizes:re,prevSizes:re,units:m});Hv(re,Q)||E(Q)});return B.observe(dd(v)),()=>{B.disconnect()}}},[v,m]);const A=Ls((B,q)=>{const{panels:re,units:Q}=R.current,se=Sr(re).findIndex(te=>te.current.id===B),U=I[se];if((q??Q)==="pixels"){const te=Na(v);return U/100*te}else return U},[v,I]),O=Ls((B,q)=>{const{panels:re}=R.current;return re.size===0?{flexBasis:0,flexGrow:q??void 0,flexShrink:1,overflow:"hidden"}:{flexBasis:0,flexGrow:eO(re,B,I),flexShrink:1,overflow:"hidden",pointerEvents:o&&b!==null?"none":void 0}},[b,o,I]),T=Ls((B,q)=>{const{units:re}=R.current;Mre(re,q),w(Q=>{if(Q.has(B))return Q;const le=new Map(Q);return le.set(B,q),le})},[]),K=Ls(B=>re=>{re.preventDefault();const{direction:Q,panels:le,sizes:se}=R.current,U=Sr(le),[G,te]=Ay(v,B,U);if(G==null||te==null)return;let ae=Rre(re,v,B,U,Q,se,k.current);if(ae===0)return;const pe=dd(v).getBoundingClientRect(),ue=Q==="horizontal";document.dir==="rtl"&&ue&&(ae=-ae);const me=ue?pe.width:pe.height,Ce=ae/me*100,ge=Au(re,R.current,G,te,Ce,se,M.current,k.current),fe=!Hv(se,ge);if((mb(re)||gb(re))&&D.current!=Ce&&Wv(fe?ue?"horizontal":"vertical":ue?ae<0?"horizontal-min":"horizontal-max":ae<0?"vertical-min":"vertical-max"),fe){const De=j.current;E(ge),Nl(U,ge,De)}D.current=Ce},[v]),F=Ls(B=>{w(q=>{if(!q.has(B))return q;const re=new Map(q);return re.delete(B),re})},[]),V=Ls(B=>{const{panels:q,sizes:re}=R.current,Q=q.get(B);if(Q==null)return;const{collapsedSize:le,collapsible:se}=Q.current;if(!se)return;const U=Sr(q),G=U.indexOf(Q);if(G<0)return;const te=re[G];if(te===le)return;M.current.set(B,te);const[ae,oe]=Fv(B,U);if(ae==null||oe==null)return;const ue=G===U.length-1?te:le-te,me=Au(null,R.current,ae,oe,ue,re,M.current,null);if(re!==me){const Ce=j.current;E(me),Nl(U,me,Ce)}},[]),X=Ls(B=>{const{panels:q,sizes:re}=R.current,Q=q.get(B);if(Q==null)return;const{collapsedSize:le,minSize:se}=Q.current,U=M.current.get(B)||se;if(!U)return;const G=Sr(q),te=G.indexOf(Q);if(te<0||re[te]!==le)return;const[oe,pe]=Fv(B,G);if(oe==null||pe==null)return;const me=te===G.length-1?le-U:U,Ce=Au(null,R.current,oe,pe,me,re,M.current,null);if(re!==Ce){const ge=j.current;E(Ce),Nl(G,Ce,ge)}},[]),W=Ls((B,q,re)=>{const{id:Q,panels:le,sizes:se,units:U}=R.current;if((re||U)==="pixels"){const rt=Na(Q);q=q/rt*100}const G=le.get(B);if(G==null)return;let{collapsedSize:te,collapsible:ae,maxSize:oe,minSize:pe}=G.current;if(U==="pixels"){const rt=Na(Q);pe=pe/rt*100,oe!=null&&(oe=oe/rt*100)}const ue=Sr(le),me=ue.indexOf(G);if(me<0)return;const Ce=se[me];if(Ce===q)return;ae&&q===te||(q=Math.min(oe??100,Math.max(pe,q)));const[ge,fe]=Fv(B,ue);if(ge==null||fe==null)return;const je=me===ue.length-1?Ce-q:q-Ce,Be=Au(null,R.current,ge,fe,je,se,M.current,null);if(se!==Be){const rt=j.current;E(Be),Nl(ue,Be,rt)}},[]),z=kre(()=>({activeHandleId:b,collapsePanel:V,direction:r,expandPanel:X,getPanelSize:A,getPanelStyle:O,groupId:v,registerPanel:T,registerResizeHandle:K,resizePanel:W,startDragging:(B,q)=>{if(y(B),mb(q)||gb(q)){const re=wg(B);k.current={dragHandleRect:re.getBoundingClientRect(),dragOffset:rO(q,B,r),sizes:R.current.sizes}}},stopDragging:()=>{Nre(),y(null),k.current=null},units:m,unregisterPanel:F}),[b,V,r,X,A,O,v,T,K,W,m,F]),Y={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return Ec(Cg.Provider,{children:Ec(h,{children:t,className:n,"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":v,"data-panel-group-units":m,style:{...Y,...p}}),value:z})}const Sg=YM((e,t)=>Ec(iO,{...e,forwardedRef:t}));iO.displayName="PanelGroup";Sg.displayName="forwardRef(PanelGroup)";function bb({children:e=null,className:t="",disabled:n=!1,id:r=null,onDragging:o,style:s={},tagName:i="div"}){const l=zr(null),u=zr({onDragging:o});ea(()=>{u.current.onDragging=o});const p=QM(Cg);if(p===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{activeHandleId:h,direction:m,groupId:v,registerResizeHandle:b,startDragging:y,stopDragging:x}=p,w=Dy(r),k=h===w,[_,j]=Ku(!1),[I,E]=Ku(null),M=Ls(()=>{l.current.blur(),x();const{onDragging:A}=u.current;A&&A(!1)},[x]);ea(()=>{if(n)E(null);else{const R=b(w);E(()=>R)}},[n,w,b]),ea(()=>{if(n||I==null||!k)return;const R=K=>{I(K)},A=K=>{I(K)},T=l.current.ownerDocument;return T.body.addEventListener("contextmenu",M),T.body.addEventListener("mousemove",R),T.body.addEventListener("touchmove",R),T.body.addEventListener("mouseleave",A),window.addEventListener("mouseup",M),window.addEventListener("touchend",M),()=>{T.body.removeEventListener("contextmenu",M),T.body.removeEventListener("mousemove",R),T.body.removeEventListener("touchmove",R),T.body.removeEventListener("mouseleave",A),window.removeEventListener("mouseup",M),window.removeEventListener("touchend",M)}},[m,n,k,I,M]),Dre({disabled:n,handleId:w,resizeHandler:I});const D={cursor:oO(m),touchAction:"none",userSelect:"none"};return Ec(i,{children:e,className:t,"data-resize-handle-active":k?"pointer":_?"keyboard":void 0,"data-panel-group-direction":m,"data-panel-group-id":v,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":w,onBlur:()=>j(!1),onFocus:()=>j(!0),onMouseDown:R=>{y(w,R.nativeEvent);const{onDragging:A}=u.current;A&&A(!0)},onMouseUp:M,onTouchCancel:M,onTouchEnd:M,onTouchStart:R=>{y(w,R.nativeEvent);const{onDragging:A}=u.current;A&&A(!0)},ref:l,role:"separator",style:{...D,...s},tabIndex:0})}bb.displayName="PanelResizeHandle";const zre=e=>{const{direction:t="horizontal",collapsedDirection:n,isCollapsed:r=!1,...o}=e,s=Li("base.100","base.850"),i=Li("base.300","base.700");return t==="horizontal"?a.jsx(bb,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx($,{className:"resize-handle-horizontal",sx:{w:n?2.5:4,h:"full",justifyContent:n?n==="left"?"flex-start":"flex-end":"center",alignItems:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Ie,{sx:{w:1,h:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})}):a.jsx(bb,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx($,{className:"resize-handle-vertical",sx:{w:"full",h:n?2.5:4,alignItems:n?n==="top"?"flex-start":"flex-end":"center",justifyContent:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Ie,{sx:{h:1,w:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})})},im=d.memo(zre),Ny=()=>{const e=ee(),t=L(o=>o.ui.panels),n=d.useCallback(o=>t[o]??"",[t]),r=d.useCallback((o,s)=>{e($D({name:o,value:s}))},[e]);return{getItem:n,setItem:r}};const Fre=e=>{const{label:t,data:n,fileName:r,withDownload:o=!0,withCopy:s=!0}=e,i=d.useMemo(()=>LD(n)?n:JSON.stringify(n,null,2),[n]),l=d.useCallback(()=>{navigator.clipboard.writeText(i)},[i]),u=d.useCallback(()=>{const h=new Blob([i]),m=document.createElement("a");m.href=URL.createObjectURL(h),m.download=`${r||t}.json`,document.body.appendChild(m),m.click(),m.remove()},[i,t,r]),{t:p}=Z();return a.jsxs($,{layerStyle:"second",sx:{borderRadius:"base",flexGrow:1,w:"full",h:"full",position:"relative"},children:[a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"auto",p:4,fontSize:"sm"},children:a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsx("pre",{children:i})})}),a.jsxs($,{sx:{position:"absolute",top:0,insetInlineEnd:0,p:2},children:[o&&a.jsx(Rt,{label:`${p("gallery.download")} ${t} JSON`,children:a.jsx(ps,{"aria-label":`${p("gallery.download")} ${t} JSON`,icon:a.jsx(ng,{}),variant:"ghost",opacity:.7,onClick:u})}),s&&a.jsx(Rt,{label:`${p("gallery.copy")} ${t} JSON`,children:a.jsx(ps,{"aria-label":`${p("gallery.copy")} ${t} JSON`,icon:a.jsx(Wc,{}),variant:"ghost",opacity:.7,onClick:l})})]})]})},Ri=d.memo(Fre),Bre=ie(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(r=>r.id===t);return{data:n==null?void 0:n.data}},we),Hre=()=>{const{data:e}=L(Bre);return e?a.jsx(Ri,{data:e,label:"Node Data"}):a.jsx(Kn,{label:"No node selected",icon:null})},Wre=d.memo(Hre),Vre=e=>a.jsx($,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:e.children})})}),Ty=d.memo(Vre),Ure=({output:e})=>{const{image:t}=e,{data:n}=Wr(t.image_name);return a.jsx(oa,{imageDTO:n})},Gre=d.memo(Ure),Kre=ie(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(s=>s.id===t),r=n?e.nodeTemplates[n.data.type]:void 0,o=e.nodeExecutionStates[t??"__UNKNOWN_NODE__"];return{node:n,template:r,nes:o}},we),qre=()=>{const{node:e,template:t,nes:n}=L(Kre),{t:r}=Z();return!e||!n||!Cn(e)?a.jsx(Kn,{label:r("nodes.noNodeSelected"),icon:null}):n.outputs.length===0?a.jsx(Kn,{label:r("nodes.noOutputRecorded"),icon:null}):a.jsx(Ie,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(Ty,{children:a.jsx($,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:(t==null?void 0:t.outputType)==="image_output"?n.outputs.map((o,s)=>a.jsx(Gre,{output:o},Yre(o,s))):a.jsx(Ri,{data:n.outputs,label:r("nodes.nodesOutputs")})})})})},Xre=d.memo(qre),Yre=(e,t)=>`${e.type}-${t}`,Qre=ie(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(o=>o.id===t);return{template:n?e.nodeTemplates[n.data.type]:void 0}},we),Zre=()=>{const{template:e}=L(Qre),{t}=Z();return e?a.jsx(Ri,{data:e,label:t("nodes.NodeTemplate")}):a.jsx(Kn,{label:t("nodes.noNodeSelected"),icon:null})},Jre=d.memo(Zre),eoe=()=>a.jsx($,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Ji,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(el,{children:[a.jsx(Pr,{children:"Outputs"}),a.jsx(Pr,{children:"Data"}),a.jsx(Pr,{children:"Template"})]}),a.jsxs(Fc,{children:[a.jsx(mo,{children:a.jsx(Xre,{})}),a.jsx(mo,{children:a.jsx(Wre,{})}),a.jsx(mo,{children:a.jsx(Jre,{})})]})]})}),toe=d.memo(eoe),$y=e=>{e.stopPropagation()},noe={display:"flex",flexDirection:"row",alignItems:"center",gap:10},roe=e=>{const{label:t="",labelPos:n="top",isDisabled:r=!1,isInvalid:o,formControlProps:s,...i}=e,l=ee(),u=d.useCallback(h=>{h.shiftKey&&l(Ir(!0))},[l]),p=d.useCallback(h=>{h.shiftKey||l(Ir(!1))},[l]);return a.jsxs(sn,{isInvalid:o,isDisabled:r,...s,style:n==="side"?noe:void 0,children:[t!==""&&a.jsx(Hn,{children:t}),a.jsx(Em,{...i,onPaste:$y,onKeyDown:u,onKeyUp:p})]})},uo=d.memo(roe),ooe=Pe((e,t)=>{const n=ee(),r=d.useCallback(s=>{s.shiftKey&&n(Ir(!0))},[n]),o=d.useCallback(s=>{s.shiftKey||n(Ir(!1))},[n]);return a.jsx($P,{ref:t,onPaste:$y,onKeyDown:r,onKeyUp:o,...e})}),sa=d.memo(ooe),soe=ie(xe,({nodes:e})=>{const{author:t,name:n,description:r,tags:o,version:s,contact:i,notes:l}=e.workflow;return{name:n,author:t,description:r,tags:o,version:s,contact:i,notes:l}},we),aoe=()=>{const{author:e,name:t,description:n,tags:r,version:o,contact:s,notes:i}=L(soe),l=ee(),u=d.useCallback(w=>{l(zD(w.target.value))},[l]),p=d.useCallback(w=>{l(FD(w.target.value))},[l]),h=d.useCallback(w=>{l(BD(w.target.value))},[l]),m=d.useCallback(w=>{l(HD(w.target.value))},[l]),v=d.useCallback(w=>{l(WD(w.target.value))},[l]),b=d.useCallback(w=>{l(VD(w.target.value))},[l]),y=d.useCallback(w=>{l(UD(w.target.value))},[l]),{t:x}=Z();return a.jsx(Ty,{children:a.jsxs($,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:[a.jsxs($,{sx:{gap:2,w:"full"},children:[a.jsx(uo,{label:x("nodes.workflowName"),value:t,onChange:u}),a.jsx(uo,{label:x("nodes.workflowVersion"),value:o,onChange:m})]}),a.jsxs($,{sx:{gap:2,w:"full"},children:[a.jsx(uo,{label:x("nodes.workflowAuthor"),value:e,onChange:p}),a.jsx(uo,{label:x("nodes.workflowContact"),value:s,onChange:h})]}),a.jsx(uo,{label:x("nodes.workflowTags"),value:r,onChange:b}),a.jsxs(sn,{as:$,sx:{flexDir:"column"},children:[a.jsx(Hn,{children:x("nodes.workflowDescription")}),a.jsx(sa,{onChange:v,value:n,fontSize:"sm",sx:{resize:"none"}})]}),a.jsxs(sn,{as:$,sx:{flexDir:"column",h:"full"},children:[a.jsx(Hn,{children:x("nodes.workflowNotes")}),a.jsx(sa,{onChange:y,value:i,fontSize:"sm",sx:{h:"full",resize:"none"}})]})]})})},ioe=d.memo(aoe);function loe(e,t,n){var r=this,o=d.useRef(null),s=d.useRef(0),i=d.useRef(null),l=d.useRef([]),u=d.useRef(),p=d.useRef(),h=d.useRef(e),m=d.useRef(!0);d.useEffect(function(){h.current=e},[e]);var v=!t&&t!==0&&typeof window<"u";if(typeof e!="function")throw new TypeError("Expected a function");t=+t||0;var b=!!(n=n||{}).leading,y=!("trailing"in n)||!!n.trailing,x="maxWait"in n,w=x?Math.max(+n.maxWait||0,t):null;d.useEffect(function(){return m.current=!0,function(){m.current=!1}},[]);var k=d.useMemo(function(){var _=function(R){var A=l.current,O=u.current;return l.current=u.current=null,s.current=R,p.current=h.current.apply(O,A)},j=function(R,A){v&&cancelAnimationFrame(i.current),i.current=v?requestAnimationFrame(R):setTimeout(R,A)},I=function(R){if(!m.current)return!1;var A=R-o.current;return!o.current||A>=t||A<0||x&&R-s.current>=w},E=function(R){return i.current=null,y&&l.current?_(R):(l.current=u.current=null,p.current)},M=function R(){var A=Date.now();if(I(A))return E(A);if(m.current){var O=t-(A-o.current),T=x?Math.min(O,w-(A-s.current)):O;j(R,T)}},D=function(){var R=Date.now(),A=I(R);if(l.current=[].slice.call(arguments),u.current=r,o.current=R,A){if(!i.current&&m.current)return s.current=o.current,j(M,t),b?_(o.current):p.current;if(x)return j(M,t),_(o.current)}return i.current||j(M,t),p.current};return D.cancel=function(){i.current&&(v?cancelAnimationFrame(i.current):clearTimeout(i.current)),s.current=0,l.current=o.current=u.current=i.current=null},D.isPending=function(){return!!i.current},D.flush=function(){return i.current?E(Date.now()):p.current},D},[b,x,t,w,y,v]);return k}function coe(e,t){return e===t}function j_(e){return typeof e=="function"?function(){return e}:e}function uoe(e,t,n){var r,o,s=n&&n.equalityFn||coe,i=(r=d.useState(j_(e)),o=r[1],[r[0],d.useCallback(function(m){return o(j_(m))},[])]),l=i[0],u=i[1],p=loe(d.useCallback(function(m){return u(m)},[u]),t,n),h=d.useRef(e);return s(h.current,e)||(p(e),h.current=e),[l,p]}const lO=()=>{const e=L(r=>r.nodes),[t]=uoe(e,300);return d.useMemo(()=>GD(t),[t])},doe=()=>{const e=lO(),{t}=Z();return a.jsx($,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:a.jsx(Ri,{data:e,label:t("nodes.workflow")})})},foe=d.memo(doe),poe=({isSelected:e,isHovered:t})=>{const n=d.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.light";if(e)return"nodeSelected.light";if(t)return"nodeHovered.light"},[t,e]),r=d.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.dark";if(e)return"nodeSelected.dark";if(t)return"nodeHovered.dark"},[t,e]);return a.jsx(Ie,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e||t?1:.5,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:n,_dark:{shadow:r}}})},cO=d.memo(poe),uO=e=>{const t=ee(),n=d.useMemo(()=>ie(xe,({nodes:i})=>i.mouseOverNode===e,we),[e]),r=L(n),o=d.useCallback(()=>{!r&&t(QC(e))},[t,e,r]),s=d.useCallback(()=>{r&&t(QC(null))},[t,r]);return{isMouseOverNode:r,handleMouseOver:o,handleMouseOut:s}},dO=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{var i;const s=o.nodes.find(l=>l.id===e);if(Cn(s))return(i=s==null?void 0:s.data.inputs[t])==null?void 0:i.label},we),[t,e]);return L(n)},fO=(e,t,n)=>{const r=d.useMemo(()=>ie(xe,({nodes:s})=>{var u;const i=s.nodes.find(p=>p.id===e);if(!Cn(i))return;const l=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return(u=l==null?void 0:l[Ub[n]][t])==null?void 0:u.title},we),[t,n,e]);return L(r)},pO=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{const s=o.nodes.find(i=>i.id===e);if(Cn(s))return s==null?void 0:s.data.inputs[t]},we),[t,e]);return L(n)},kg=(e,t,n)=>{const r=d.useMemo(()=>ie(xe,({nodes:s})=>{const i=s.nodes.find(u=>u.id===e);if(!Cn(i))return;const l=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return l==null?void 0:l[Ub[n]][t]},we),[t,n,e]);return L(r)},hoe=({nodeId:e,fieldName:t,kind:n})=>{const r=pO(e,t),o=kg(e,t,n),s=KD(o),{t:i}=Z(),l=d.useMemo(()=>qD(r)?r.label&&(o!=null&&o.title)?`${r.label} (${o.title})`:r.label&&!o?r.label:!r.label&&o?o.title:i("nodes.unknownField"):(o==null?void 0:o.title)||i("nodes.unknownField"),[r,o,i]);return a.jsxs($,{sx:{flexDir:"column"},children:[a.jsx(ye,{sx:{fontWeight:600},children:l}),o&&a.jsx(ye,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:o.description}),o&&a.jsxs(ye,{children:["Type: ",Sd[o.type].title]}),s&&a.jsxs(ye,{children:["Input: ",XD(o.input)]})]})},Ly=d.memo(hoe),moe=Pe((e,t)=>{const{nodeId:n,fieldName:r,kind:o,isMissingInput:s=!1,withTooltip:i=!1}=e,l=dO(n,r),u=fO(n,r,o),{t:p}=Z(),h=ee(),[m,v]=d.useState(l||u||p("nodes.unknownFeild")),b=d.useCallback(async x=>{x&&(x===l||x===u)||(v(x||u||p("nodes.unknownField")),h(YD({nodeId:n,fieldName:r,label:x})))},[l,u,h,n,r,p]),y=d.useCallback(x=>{v(x)},[]);return d.useEffect(()=>{v(l||u||p("nodes.unknownField"))},[l,u,p]),a.jsx(Rt,{label:i?a.jsx(Ly,{nodeId:n,fieldName:r,kind:"input"}):void 0,openDelay:xm,placement:"top",hasArrow:!0,children:a.jsx($,{ref:t,sx:{position:"relative",overflow:"hidden",alignItems:"center",justifyContent:"flex-start",gap:1,h:"full"},children:a.jsxs(jm,{value:m,onChange:y,onSubmit:b,as:$,sx:{position:"relative",alignItems:"center",h:"full"},children:[a.jsx(_m,{sx:{p:0,fontWeight:s?600:400,textAlign:"left",_hover:{fontWeight:"600 !important"}},noOfLines:1}),a.jsx(km,{className:"nodrag",sx:{p:0,w:"full",fontWeight:600,color:"base.900",_dark:{color:"base.100"},_focusVisible:{p:0,textAlign:"left",boxShadow:"none"}}}),a.jsx(mO,{})]})})})}),hO=d.memo(moe),mO=d.memo(()=>{const{isEditing:e,getEditButtonProps:t}=Q5(),n=d.useCallback(r=>{const{onClick:o}=t();o&&(o(r),r.preventDefault())},[t]);return e?null:a.jsx($,{onClick:n,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,cursor:"text"})});mO.displayName="EditableControls";const goe=e=>{const{nodeId:t,field:n}=e,r=ee(),o=d.useCallback(s=>{r(QD({nodeId:t,fieldName:n.name,value:s.target.checked}))},[r,n.name,t]);return a.jsx(Hx,{className:"nodrag",onChange:o,isChecked:n.value})},voe=d.memo(goe);function _g(){return(_g=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function xb(e){var t=d.useRef(e),n=d.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var Mc=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:w.buttons>0)&&o.current?s(P_(o.current,w,l.current)):x(!1)},y=function(){return x(!1)};function x(w){var k=u.current,_=yb(o.current),j=w?_.addEventListener:_.removeEventListener;j(k?"touchmove":"mousemove",b),j(k?"touchend":"mouseup",y)}return[function(w){var k=w.nativeEvent,_=o.current;if(_&&(I_(k),!function(I,E){return E&&!Xu(I)}(k,u.current)&&_)){if(Xu(k)){u.current=!0;var j=k.changedTouches||[];j.length&&(l.current=j[0].identifier)}_.focus(),s(P_(_,k,l.current)),x(!0)}},function(w){var k=w.which||w.keyCode;k<37||k>40||(w.preventDefault(),i({left:k===39?.05:k===37?-.05:0,top:k===40?.05:k===38?-.05:0}))},x]},[i,s]),h=p[0],m=p[1],v=p[2];return d.useEffect(function(){return v},[v]),H.createElement("div",_g({},r,{onTouchStart:h,onMouseDown:h,className:"react-colorful__interactive",ref:o,onKeyDown:m,tabIndex:0,role:"slider"}))}),jg=function(e){return e.filter(Boolean).join(" ")},Fy=function(e){var t=e.color,n=e.left,r=e.top,o=r===void 0?.5:r,s=jg(["react-colorful__pointer",e.className]);return H.createElement("div",{className:s,style:{top:100*o+"%",left:100*n+"%"}},H.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},dr=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},vO=function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:dr(e.h),s:dr(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:dr(o/2),a:dr(r,2)}},Cb=function(e){var t=vO(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Uv=function(e){var t=vO(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},boe=function(e){var t=e.h,n=e.s,r=e.v,o=e.a;t=t/360*6,n/=100,r/=100;var s=Math.floor(t),i=r*(1-n),l=r*(1-(t-s)*n),u=r*(1-(1-t+s)*n),p=s%6;return{r:dr(255*[r,l,i,i,u,r][p]),g:dr(255*[u,r,r,l,i,i][p]),b:dr(255*[i,i,u,r,r,l][p]),a:dr(o,2)}},xoe=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,s=Math.max(t,n,r),i=s-Math.min(t,n,r),l=i?s===t?(n-r)/i:s===n?2+(r-t)/i:4+(t-n)/i:0;return{h:dr(60*(l<0?l+6:l)),s:dr(s?i/s*100:0),v:dr(s/255*100),a:o}},yoe=H.memo(function(e){var t=e.hue,n=e.onChange,r=jg(["react-colorful__hue",e.className]);return H.createElement("div",{className:r},H.createElement(zy,{onMove:function(o){n({h:360*o.left})},onKey:function(o){n({h:Mc(t+360*o.left,0,360)})},"aria-label":"Hue","aria-valuenow":dr(t),"aria-valuemax":"360","aria-valuemin":"0"},H.createElement(Fy,{className:"react-colorful__hue-pointer",left:t/360,color:Cb({h:t,s:100,v:100,a:1})})))}),Coe=H.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:Cb({h:t.h,s:100,v:100,a:1})};return H.createElement("div",{className:"react-colorful__saturation",style:r},H.createElement(zy,{onMove:function(o){n({s:100*o.left,v:100-100*o.top})},onKey:function(o){n({s:Mc(t.s+100*o.left,0,100),v:Mc(t.v-100*o.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+dr(t.s)+"%, Brightness "+dr(t.v)+"%"},H.createElement(Fy,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Cb(t)})))}),bO=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function woe(e,t,n){var r=xb(n),o=d.useState(function(){return e.toHsva(t)}),s=o[0],i=o[1],l=d.useRef({color:t,hsva:s});d.useEffect(function(){if(!e.equal(t,l.current.color)){var p=e.toHsva(t);l.current={hsva:p,color:t},i(p)}},[t,e]),d.useEffect(function(){var p;bO(s,l.current.hsva)||e.equal(p=e.fromHsva(s),l.current.color)||(l.current={hsva:s,color:p},r(p))},[s,e,r]);var u=d.useCallback(function(p){i(function(h){return Object.assign({},h,p)})},[]);return[s,u]}var Soe=typeof window<"u"?d.useLayoutEffect:d.useEffect,koe=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},E_=new Map,_oe=function(e){Soe(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!E_.has(t)){var n=t.createElement("style");n.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,E_.set(t,n);var r=koe();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},joe=function(e){var t=e.className,n=e.hsva,r=e.onChange,o={backgroundImage:"linear-gradient(90deg, "+Uv(Object.assign({},n,{a:0}))+", "+Uv(Object.assign({},n,{a:1}))+")"},s=jg(["react-colorful__alpha",t]),i=dr(100*n.a);return H.createElement("div",{className:s},H.createElement("div",{className:"react-colorful__alpha-gradient",style:o}),H.createElement(zy,{onMove:function(l){r({a:l.left})},onKey:function(l){r({a:Mc(n.a+l.left)})},"aria-label":"Alpha","aria-valuetext":i+"%","aria-valuenow":i,"aria-valuemin":"0","aria-valuemax":"100"},H.createElement(Fy,{className:"react-colorful__alpha-pointer",left:n.a,color:Uv(n)})))},Poe=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,s=e.onChange,i=gO(e,["className","colorModel","color","onChange"]),l=d.useRef(null);_oe(l);var u=woe(n,o,s),p=u[0],h=u[1],m=jg(["react-colorful",t]);return H.createElement("div",_g({},i,{ref:l,className:m}),H.createElement(Coe,{hsva:p,onChange:h}),H.createElement(yoe,{hue:p.h,onChange:h}),H.createElement(joe,{hsva:p,onChange:h,className:"react-colorful__last-control"}))},Ioe={defaultColor:{r:0,g:0,b:0,a:1},toHsva:xoe,fromHsva:boe,equal:bO},xO=function(e){return H.createElement(Poe,_g({},e,{colorModel:Ioe}))};const Eoe=e=>{const{nodeId:t,field:n}=e,r=ee(),o=d.useCallback(s=>{r(ZD({nodeId:t,fieldName:n.name,value:s}))},[r,n.name,t]);return a.jsx(xO,{className:"nodrag",color:n.value,onChange:o})},Moe=d.memo(Eoe),yO=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=JD.safeParse({base_model:n,model_name:o});if(!s.success){t.error({controlNetModelId:e,errors:s.error.format()},"Failed to parse ControlNet model id");return}return s.data},Ooe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=Gb(),i=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/controlnet/${r==null?void 0:r.model_name}`])??null,[r==null?void 0:r.base_model,r==null?void 0:r.model_name,s==null?void 0:s.entities]),l=d.useMemo(()=>{if(!s)return[];const p=[];return Pn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p},[s]),u=d.useCallback(p=>{if(!p)return;const h=yO(p);h&&o(eR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(In,{className:"nowheel nodrag",tooltip:i==null?void 0:i.description,value:(i==null?void 0:i.id)??null,placeholder:"Pick one",error:!i,data:l,onChange:u,sx:{width:"100%"}})},Doe=d.memo(Ooe),Roe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=ee(),s=d.useCallback(i=>{o(tR({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return a.jsx(jP,{className:"nowheel nodrag",onChange:s,value:n.value,children:r.options.map(i=>a.jsx("option",{value:i,children:r.ui_choice_labels?r.ui_choice_labels[i]:i},i))})},Aoe=d.memo(Roe),Noe=e=>{var p;const{nodeId:t,field:n}=e,r=ee(),{currentData:o}=Wr(((p=n.value)==null?void 0:p.image_name)??Er.skipToken),s=d.useCallback(()=>{r(nR({nodeId:t,fieldName:n.name,value:void 0}))},[r,n.name,t]),i=d.useMemo(()=>{if(o)return{id:`node-${t}-${n.name}`,payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[n.name,o,t]),l=d.useMemo(()=>({id:`node-${t}-${n.name}`,actionType:"SET_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}}),[n.name,t]),u=d.useMemo(()=>({type:"SET_NODES_IMAGE",nodeId:t,fieldName:n.name}),[t,n.name]);return a.jsx($,{className:"nodrag",sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(oa,{imageDTO:o,droppableData:l,draggableData:i,postUploadAction:u,useThumbailFallback:!0,uploadElement:a.jsx(CO,{}),dropLabel:a.jsx(wO,{}),minSize:8,children:a.jsx(Di,{onClick:s,icon:o?a.jsx(Ud,{}):void 0,tooltip:"Reset Image"})})})},Toe=d.memo(Noe),CO=d.memo(()=>a.jsx(ye,{fontSize:16,fontWeight:600,children:"Drop or Upload"}));CO.displayName="UploadElement";const wO=d.memo(()=>a.jsx(ye,{fontSize:16,fontWeight:600,children:"Drop"}));wO.displayName="DropLabel";const $oe=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=rR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({loraModelId:e,errors:s.error.format()},"Failed to parse LoRA model id");return}return s.data},Loe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=Cd(),{t:i}=Z(),l=d.useMemo(()=>{if(!s)return[];const h=[];return Pn(s.entities,(m,v)=>{m&&h.push({value:v,label:m.model_name,group:on[m.base_model]})}),h.sort((m,v)=>m.disabled&&!v.disabled?1:-1)},[s]),u=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/lora/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r==null?void 0:r.base_model,r==null?void 0:r.model_name]),p=d.useCallback(h=>{if(!h)return;const m=$oe(h);m&&o(oR({nodeId:t,fieldName:n.name,value:m}))},[o,n.name,t]);return(s==null?void 0:s.ids.length)===0?a.jsx($,{sx:{justifyContent:"center",p:2},children:a.jsx(ye,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Kt,{className:"nowheel nodrag",value:(u==null?void 0:u.id)??null,placeholder:l.length>0?i("models.selectLoRA"):i("models.noLoRAsAvailable"),data:l,nothingFound:i("models.noMatchingLoRAs"),itemComponent:ri,disabled:l.length===0,filter:(h,m)=>{var v;return((v=m.label)==null?void 0:v.toLowerCase().includes(h.toLowerCase().trim()))||m.value.toLowerCase().includes(h.toLowerCase().trim())},error:!u,onChange:p,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},zoe=d.memo(Loe),Pg=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=sR.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data};function Uc(e){const{iconMode:t=!1,...n}=e,r=ee(),{t:o}=Z(),[s,{isLoading:i}]=aR(),l=()=>{s().unwrap().then(u=>{r(Tt(Ft({title:`${o("modelManager.modelsSynced")}`,status:"success"})))}).catch(u=>{u&&r(Tt(Ft({title:`${o("modelManager.modelSyncFailed")}`,status:"error"})))})};return t?a.jsx(Te,{icon:a.jsx(WE,{}),tooltip:o("modelManager.syncModels"),"aria-label":o("modelManager.syncModels"),isLoading:i,onClick:l,size:"sm",...n}):a.jsx(it,{isLoading:i,onClick:l,minW:"max-content",...n,children:"Sync Models"})}const Foe=e=>{var y,x;const{nodeId:t,field:n}=e,r=ee(),o=Xt("syncModels").isFeatureEnabled,{t:s}=Z(),{data:i,isLoading:l}=Yu(ZC),{data:u,isLoading:p}=Bo(ZC),h=d.useMemo(()=>l||p,[l,p]),m=d.useMemo(()=>{if(!u)return[];const w=[];return Pn(u.entities,(k,_)=>{k&&w.push({value:_,label:k.model_name,group:on[k.base_model]})}),i&&Pn(i.entities,(k,_)=>{k&&w.push({value:_,label:k.model_name,group:on[k.base_model]})}),w},[u,i]),v=d.useMemo(()=>{var w,k,_,j;return((u==null?void 0:u.entities[`${(w=n.value)==null?void 0:w.base_model}/main/${(k=n.value)==null?void 0:k.model_name}`])||(i==null?void 0:i.entities[`${(_=n.value)==null?void 0:_.base_model}/onnx/${(j=n.value)==null?void 0:j.model_name}`]))??null},[(y=n.value)==null?void 0:y.base_model,(x=n.value)==null?void 0:x.model_name,u==null?void 0:u.entities,i==null?void 0:i.entities]),b=d.useCallback(w=>{if(!w)return;const k=Pg(w);k&&r(t5({nodeId:t,fieldName:n.name,value:k}))},[r,n.name,t]);return a.jsxs($,{sx:{w:"full",alignItems:"center",gap:2},children:[h?a.jsx(ye,{variant:"subtext",children:"Loading..."}):a.jsx(Kt,{className:"nowheel nodrag",tooltip:v==null?void 0:v.description,value:v==null?void 0:v.id,placeholder:m.length>0?s("models.selectModel"):s("models.noModelsAvailable"),data:m,error:!v,disabled:m.length===0,onChange:b,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),o&&a.jsx(Uc,{className:"nodrag",iconMode:!0})]})},Boe=d.memo(Foe),lm=/^-?(0\.)?\.?$/,Hoe=e=>{const{label:t,isDisabled:n=!1,showStepper:r=!0,isInvalid:o,value:s,onChange:i,min:l,max:u,isInteger:p=!0,formControlProps:h,formLabelProps:m,numberInputFieldProps:v,numberInputStepperProps:b,tooltipProps:y,...x}=e,w=ee(),[k,_]=d.useState(String(s));d.useEffect(()=>{!k.match(lm)&&s!==Number(k)&&_(String(s))},[s,k]);const j=D=>{_(D),D.match(lm)||i(p?Math.floor(Number(D)):Number(D))},I=D=>{const R=Ni(p?Math.floor(Number(D.target.value)):Number(D.target.value),l,u);_(String(R)),i(R)},E=d.useCallback(D=>{D.shiftKey&&w(Ir(!0))},[w]),M=d.useCallback(D=>{D.shiftKey||w(Ir(!1))},[w]);return a.jsx(Rt,{...y,children:a.jsxs(sn,{isDisabled:n,isInvalid:o,...h,children:[t&&a.jsx(Hn,{...m,children:t}),a.jsxs(Nm,{value:k,min:l,max:u,keepWithinRange:!0,clampValueOnBlur:!1,onChange:j,onBlur:I,...x,onPaste:$y,children:[a.jsx($m,{...v,onKeyDown:E,onKeyUp:M}),r&&a.jsxs(Tm,{children:[a.jsx(zm,{...b}),a.jsx(Lm,{...b})]})]})]})})},Gc=d.memo(Hoe),Woe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=ee(),[s,i]=d.useState(String(n.value)),l=d.useMemo(()=>r.type==="integer",[r.type]),u=p=>{i(p),p.match(lm)||o(iR({nodeId:t,fieldName:n.name,value:l?Math.floor(Number(p)):Number(p)}))};return d.useEffect(()=>{!s.match(lm)&&n.value!==Number(s)&&i(String(n.value))},[n.value,s]),a.jsxs(Nm,{onChange:u,value:s,step:l?1:.1,precision:l?0:3,children:[a.jsx($m,{className:"nodrag"}),a.jsxs(Tm,{children:[a.jsx(zm,{}),a.jsx(Lm,{})]})]})},Voe=d.memo(Woe),Uoe=e=>{var m,v;const{nodeId:t,field:n}=e,r=ee(),{t:o}=Z(),s=Xt("syncModels").isFeatureEnabled,{data:i,isLoading:l}=Bo(Kb),u=d.useMemo(()=>{if(!i)return[];const b=[];return Pn(i.entities,(y,x)=>{y&&b.push({value:x,label:y.model_name,group:on[y.base_model]})}),b},[i]),p=d.useMemo(()=>{var b,y;return(i==null?void 0:i.entities[`${(b=n.value)==null?void 0:b.base_model}/main/${(y=n.value)==null?void 0:y.model_name}`])??null},[(m=n.value)==null?void 0:m.base_model,(v=n.value)==null?void 0:v.model_name,i==null?void 0:i.entities]),h=d.useCallback(b=>{if(!b)return;const y=Pg(b);y&&r(lR({nodeId:t,fieldName:n.name,value:y}))},[r,n.name,t]);return l?a.jsx(Kt,{label:o("modelManager.model"),placeholder:o("models.loading"),disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kt,{className:"nowheel nodrag",tooltip:p==null?void 0:p.description,value:p==null?void 0:p.id,placeholder:u.length>0?o("models.selectModel"):o("models.noModelsAvailable"),data:u,error:!p,disabled:u.length===0,onChange:h,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Uc,{className:"nodrag",iconMode:!0})]})},Goe=d.memo(Uoe),Koe=e=>{var v,b;const{nodeId:t,field:n}=e,r=ee(),{t:o}=Z(),s=Xt("syncModels").isFeatureEnabled,{data:i}=Yu(JC),{data:l,isLoading:u}=Bo(JC),p=d.useMemo(()=>{if(!l)return[];const y=[];return Pn(l.entities,(x,w)=>{!x||x.base_model!=="sdxl"||y.push({value:w,label:x.model_name,group:on[x.base_model]})}),i&&Pn(i.entities,(x,w)=>{!x||x.base_model!=="sdxl"||y.push({value:w,label:x.model_name,group:on[x.base_model]})}),y},[l,i]),h=d.useMemo(()=>{var y,x,w,k;return((l==null?void 0:l.entities[`${(y=n.value)==null?void 0:y.base_model}/main/${(x=n.value)==null?void 0:x.model_name}`])||(i==null?void 0:i.entities[`${(w=n.value)==null?void 0:w.base_model}/onnx/${(k=n.value)==null?void 0:k.model_name}`]))??null},[(v=n.value)==null?void 0:v.base_model,(b=n.value)==null?void 0:b.model_name,l==null?void 0:l.entities,i==null?void 0:i.entities]),m=d.useCallback(y=>{if(!y)return;const x=Pg(y);x&&r(t5({nodeId:t,fieldName:n.name,value:x}))},[r,n.name,t]);return u?a.jsx(Kt,{label:o("modelManager.model"),placeholder:o("models.loading"),disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kt,{className:"nowheel nodrag",tooltip:h==null?void 0:h.description,value:h==null?void 0:h.id,placeholder:p.length>0?o("models.selectModel"):o("models.noModelsAvailable"),data:p,error:!h,disabled:p.length===0,onChange:m,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Uc,{className:"nodrag",iconMode:!0})]})},qoe=d.memo(Koe),Xoe=ie([xe],({ui:e})=>{const{favoriteSchedulers:t}=e;return{data:rr(hm,(r,o)=>({value:o,label:r,group:t.includes(o)?"Favorites":void 0})).sort((r,o)=>r.label.localeCompare(o.label))}},we),Yoe=e=>{const{nodeId:t,field:n}=e,r=ee(),{data:o}=L(Xoe),s=d.useCallback(i=>{i&&r(cR({nodeId:t,fieldName:n.name,value:i}))},[r,n.name,t]);return a.jsx(Kt,{className:"nowheel nodrag",sx:{".mantine-Select-dropdown":{width:"14rem !important"}},value:n.value,data:o,onChange:s})},Qoe=d.memo(Yoe),Zoe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=ee(),s=d.useCallback(i=>{o(uR({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return r.ui_component==="textarea"?a.jsx(sa,{className:"nodrag",onChange:s,value:n.value,rows:5,resize:"none"}):a.jsx(uo,{onChange:s,value:n.value})},Joe=d.memo(Zoe),SO=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=dR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({vaeModelId:e,errors:s.error.format()},"Failed to parse VAE model id");return}return s.data},ese=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=n5(),i=d.useMemo(()=>{if(!s)return[];const p=[{value:"default",label:"Default",group:"Default"}];return Pn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),l=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r]),u=d.useCallback(p=>{if(!p)return;const h=SO(p);h&&o(fR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(Kt,{className:"nowheel nodrag",itemComponent:ri,tooltip:l==null?void 0:l.description,value:(l==null?void 0:l.id)??"default",placeholder:"Default",data:i,onChange:u,disabled:i.length===0,error:!l,clearable:!0,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},tse=d.memo(ese),kO=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=pR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({ipAdapterModelId:e,errors:s.error.format()},"Failed to parse IP-Adapter model id");return}return s.data},nse=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=r5(),i=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/ip_adapter/${r==null?void 0:r.model_name}`])??null,[r==null?void 0:r.base_model,r==null?void 0:r.model_name,s==null?void 0:s.entities]),l=d.useMemo(()=>{if(!s)return[];const p=[];return Pn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p},[s]),u=d.useCallback(p=>{if(!p)return;const h=kO(p);h&&o(hR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(In,{className:"nowheel nodrag",tooltip:i==null?void 0:i.description,value:(i==null?void 0:i.id)??null,placeholder:"Pick one",error:!i,data:l,onChange:u,sx:{width:"100%"}})},rse=d.memo(nse),ose=({nodeId:e,fieldName:t})=>{const n=pO(e,t),r=kg(e,t,"input");return(r==null?void 0:r.fieldKind)==="output"?a.jsxs(Ie,{p:2,children:["Output field in input: ",n==null?void 0:n.type]}):(n==null?void 0:n.type)==="string"&&(r==null?void 0:r.type)==="string"?a.jsx(Joe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="boolean"&&(r==null?void 0:r.type)==="boolean"?a.jsx(voe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="integer"&&(r==null?void 0:r.type)==="integer"||(n==null?void 0:n.type)==="float"&&(r==null?void 0:r.type)==="float"?a.jsx(Voe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="enum"&&(r==null?void 0:r.type)==="enum"?a.jsx(Aoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ImageField"&&(r==null?void 0:r.type)==="ImageField"?a.jsx(Toe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="MainModelField"&&(r==null?void 0:r.type)==="MainModelField"?a.jsx(Boe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLRefinerModelField"&&(r==null?void 0:r.type)==="SDXLRefinerModelField"?a.jsx(Goe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="VaeModelField"&&(r==null?void 0:r.type)==="VaeModelField"?a.jsx(tse,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="LoRAModelField"&&(r==null?void 0:r.type)==="LoRAModelField"?a.jsx(zoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ControlNetModelField"&&(r==null?void 0:r.type)==="ControlNetModelField"?a.jsx(Doe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="IPAdapterModelField"&&(r==null?void 0:r.type)==="IPAdapterModelField"?a.jsx(rse,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ColorField"&&(r==null?void 0:r.type)==="ColorField"?a.jsx(Moe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLMainModelField"&&(r==null?void 0:r.type)==="SDXLMainModelField"?a.jsx(qoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="Scheduler"&&(r==null?void 0:r.type)==="Scheduler"?a.jsx(Qoe,{nodeId:e,field:n,fieldTemplate:r}):n&&r?null:a.jsx(Ie,{p:1,children:a.jsxs(ye,{sx:{fontSize:"sm",fontWeight:600,color:"error.400",_dark:{color:"error.300"}},children:["Unknown field type: ",n==null?void 0:n.type]})})},_O=d.memo(ose),sse=({nodeId:e,fieldName:t})=>{const n=ee(),{isMouseOverNode:r,handleMouseOut:o,handleMouseOver:s}=uO(e),{t:i}=Z(),l=d.useCallback(()=>{n(o5({nodeId:e,fieldName:t}))},[n,t,e]);return a.jsxs($,{onMouseEnter:s,onMouseLeave:o,layerStyle:"second",sx:{position:"relative",borderRadius:"base",w:"full",p:2},children:[a.jsxs(sn,{as:$,sx:{flexDir:"column",gap:1,flexShrink:1},children:[a.jsxs(Hn,{sx:{display:"flex",alignItems:"center",mb:0},children:[a.jsx(hO,{nodeId:e,fieldName:t,kind:"input"}),a.jsx(Za,{}),a.jsx(Rt,{label:a.jsx(Ly,{nodeId:e,fieldName:t,kind:"input"}),openDelay:xm,placement:"top",hasArrow:!0,children:a.jsx($,{h:"full",alignItems:"center",children:a.jsx(Tn,{as:TE})})}),a.jsx(Te,{"aria-label":i("nodes.removeLinearView"),tooltip:i("nodes.removeLinearView"),variant:"ghost",size:"sm",onClick:l,icon:a.jsx(Kr,{})})]}),a.jsx(_O,{nodeId:e,fieldName:t})]}),a.jsx(cO,{isSelected:!1,isHovered:r})]})},ase=d.memo(sse),ise=ie(xe,({nodes:e})=>({fields:e.workflow.exposedFields}),we),lse=()=>{const{fields:e}=L(ise),{t}=Z();return a.jsx(Ie,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(Ty,{children:a.jsx($,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:e.length?e.map(({nodeId:n,fieldName:r})=>a.jsx(ase,{nodeId:n,fieldName:r},`${n}.${r}`)):a.jsx(Kn,{label:t("nodes.noFieldsLinearview"),icon:null})})})})},cse=d.memo(lse),use=()=>a.jsx($,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Ji,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(el,{children:[a.jsx(Pr,{children:"Linear"}),a.jsx(Pr,{children:"Details"}),a.jsx(Pr,{children:"JSON"})]}),a.jsxs(Fc,{children:[a.jsx(mo,{children:a.jsx(cse,{})}),a.jsx(mo,{children:a.jsx(ioe,{})}),a.jsx(mo,{children:a.jsx(foe,{})})]})]})}),dse=d.memo(use),fse=()=>{const[e,t]=d.useState(!1),[n,r]=d.useState(!1),o=d.useRef(null),s=Ny(),i=d.useCallback(()=>{o.current&&o.current.setLayout([50,50])},[]);return a.jsxs($,{sx:{flexDir:"column",gap:2,height:"100%",width:"100%"},children:[a.jsx(XM,{}),a.jsxs(Sg,{ref:o,id:"workflow-panel-group",direction:"vertical",style:{height:"100%",width:"100%"},storage:s,children:[a.jsx(Ua,{id:"workflow",collapsible:!0,onCollapse:t,minSize:25,children:a.jsx(dse,{})}),a.jsx(im,{direction:"vertical",onDoubleClick:i,collapsedDirection:e?"top":n?"bottom":void 0}),a.jsx(Ua,{id:"inspector",collapsible:!0,onCollapse:r,minSize:25,children:a.jsx(toe,{})})]})]})},pse=d.memo(fse),M_=(e,t)=>{const n=d.useRef(null),[r,o]=d.useState(()=>{var p;return!!((p=n.current)!=null&&p.getCollapsed())}),s=d.useCallback(()=>{var p;(p=n.current)!=null&&p.getCollapsed()?Fr.flushSync(()=>{var h;(h=n.current)==null||h.expand()}):Fr.flushSync(()=>{var h;(h=n.current)==null||h.collapse()})},[]),i=d.useCallback(()=>{Fr.flushSync(()=>{var p;(p=n.current)==null||p.expand()})},[]),l=d.useCallback(()=>{Fr.flushSync(()=>{var p;(p=n.current)==null||p.collapse()})},[]),u=d.useCallback(()=>{Fr.flushSync(()=>{var p;(p=n.current)==null||p.resize(e,t)})},[e,t]);return{ref:n,minSize:e,isCollapsed:r,setIsCollapsed:o,reset:u,toggle:s,expand:i,collapse:l}},hse=({isGalleryCollapsed:e,galleryPanelRef:t})=>{const{t:n}=Z(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(_d,{children:a.jsx($,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineEnd:"1.63rem",children:a.jsx(Te,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":n("common.showGalleryPanel"),onClick:r,icon:a.jsx($ne,{}),sx:{p:0,px:3,h:48,borderStartEndRadius:0,borderEndEndRadius:0,shadow:"2xl"}})})}):null},mse=d.memo(hse),Gv={borderStartStartRadius:0,borderEndStartRadius:0,shadow:"2xl"},gse=({isSidePanelCollapsed:e,sidePanelRef:t})=>{const{t:n}=Z(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(_d,{children:a.jsxs($,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineStart:"5.13rem",direction:"column",gap:2,children:[a.jsx(Te,{tooltip:"Show Side Panel (O, T)","aria-label":n("common.showOptionsPanel"),onClick:r,sx:Gv,icon:a.jsx(HE,{})}),a.jsx(qM,{asIconButton:!0,sx:Gv}),a.jsx(KM,{sx:Gv,asIconButton:!0})]})}):null},vse=d.memo(gse),bse=e=>{const{label:t,activeLabel:n,children:r,defaultIsOpen:o=!1}=e,{isOpen:s,onToggle:i}=Mr({defaultIsOpen:o}),{colorMode:l}=la();return a.jsxs(Ie,{children:[a.jsxs($,{onClick:i,sx:{alignItems:"center",p:2,px:4,gap:2,borderTopRadius:"base",borderBottomRadius:s?0:"base",bg:Ae("base.250","base.750")(l),color:Ae("base.900","base.100")(l),_hover:{bg:Ae("base.300","base.700")(l)},fontSize:"sm",fontWeight:600,cursor:"pointer",transitionProperty:"common",transitionDuration:"normal",userSelect:"none"},children:[t,a.jsx(nr,{children:n&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(ye,{sx:{color:"accent.500",_dark:{color:"accent.300"}},children:n})},"statusText")}),a.jsx(Za,{}),a.jsx(dg,{sx:{w:"1rem",h:"1rem",transform:s?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]}),a.jsx(wm,{in:s,animateOpacity:!0,style:{overflow:"unset"},children:a.jsx(Ie,{sx:{p:4,pb:4,borderBottomRadius:"base",bg:"base.150",_dark:{bg:"base.800"}},children:r})})]})},hr=d.memo(bse),xse=ie(xe,e=>{const{combinatorial:t,isEnabled:n}=e.dynamicPrompts;return{combinatorial:t,isDisabled:!n}},we),yse=()=>{const{combinatorial:e,isDisabled:t}=L(xse),n=ee(),{t:r}=Z(),o=d.useCallback(()=>{n(mR())},[n]);return a.jsx(Vt,{isDisabled:t,label:r("prompt.combinatorial"),isChecked:e,onChange:o})},Cse=d.memo(yse),wse=ie(xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{isEnabled:t}},we),Sse=()=>{const e=ee(),{isEnabled:t}=L(wse),{t:n}=Z(),r=d.useCallback(()=>{e(gR())},[e]);return a.jsx(Vt,{label:n("prompt.enableDynamicPrompts"),isChecked:t,onChange:r})},kse=d.memo(Sse),_se=ie(xe,e=>{const{maxPrompts:t,combinatorial:n,isEnabled:r}=e.dynamicPrompts,{min:o,sliderMax:s,inputMax:i}=e.config.sd.dynamicPrompts.maxPrompts;return{maxPrompts:t,min:o,sliderMax:s,inputMax:i,isDisabled:!r||!n}},we),jse=()=>{const{maxPrompts:e,min:t,sliderMax:n,inputMax:r,isDisabled:o}=L(_se),s=ee(),{t:i}=Z(),l=d.useCallback(p=>{s(vR(p))},[s]),u=d.useCallback(()=>{s(bR())},[s]);return a.jsx(Xe,{label:i("prompt.maxPrompts"),isDisabled:o,min:t,max:n,value:e,onChange:l,sliderNumberInputProps:{max:r},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},Pse=d.memo(jse),Ise=ie(xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{activeLabel:t?"Enabled":void 0}},we),Ese=()=>{const{activeLabel:e}=L(Ise),{t}=Z();return Xt("dynamicPrompting").isFeatureEnabled?a.jsx(hr,{label:t("prompt.dynamicPrompts"),activeLabel:e,children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(kse,{}),a.jsx(Cse,{}),a.jsx(Pse,{})]})}):null},Kc=d.memo(Ese),Mse=e=>{const t=ee(),{lora:n}=e,r=d.useCallback(i=>{t(xR({id:n.id,weight:i}))},[t,n.id]),o=d.useCallback(()=>{t(yR(n.id))},[t,n.id]),s=d.useCallback(()=>{t(CR(n.id))},[t,n.id]);return a.jsxs($,{sx:{gap:2.5,alignItems:"flex-end"},children:[a.jsx(Xe,{label:n.model_name,value:n.weight,onChange:r,min:-1,max:2,step:.01,withInput:!0,withReset:!0,handleReset:o,withSliderMarks:!0,sliderMarks:[-1,0,1,2],sliderNumberInputProps:{min:-50,max:50}}),a.jsx(Te,{size:"sm",onClick:s,tooltip:"Remove LoRA","aria-label":"Remove LoRA",icon:a.jsx(Kr,{}),colorScheme:"error"})]})},Ose=d.memo(Mse),Dse=ie(xe,({lora:e})=>({lorasArray:rr(e.loras)}),we),Rse=()=>{const{lorasArray:e}=L(Dse);return a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[n>0&&a.jsx(Vr,{pt:1}),a.jsx(Ose,{lora:t})]},t.model_name))})},Ase=d.memo(Rse),Nse=ie(xe,({lora:e})=>({loras:e.loras}),we),Tse=()=>{const e=ee(),{loras:t}=L(Nse),{data:n}=Cd(),r=L(i=>i.generation.model),o=d.useMemo(()=>{if(!n)return[];const i=[];return Pn(n.entities,(l,u)=>{if(!l||u in t)return;const p=(r==null?void 0:r.base_model)!==l.base_model;i.push({value:u,label:l.model_name,disabled:p,group:on[l.base_model],tooltip:p?`Incompatible base model: ${l.base_model}`:void 0})}),i.sort((l,u)=>l.label&&!u.label?1:-1),i.sort((l,u)=>l.disabled&&!u.disabled?1:-1)},[t,n,r==null?void 0:r.base_model]),s=d.useCallback(i=>{if(!i)return;const l=n==null?void 0:n.entities[i];l&&e(wR(l))},[e,n==null?void 0:n.entities]);return(n==null?void 0:n.ids.length)===0?a.jsx($,{sx:{justifyContent:"center",p:2},children:a.jsx(ye,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Kt,{placeholder:o.length===0?"All LoRAs added":"Add LoRA",value:null,data:o,nothingFound:"No matching LoRAs",itemComponent:ri,disabled:o.length===0,filter:(i,l)=>{var u;return((u=l.label)==null?void 0:u.toLowerCase().includes(i.toLowerCase().trim()))||l.value.toLowerCase().includes(i.toLowerCase().trim())},onChange:s})},$se=d.memo(Tse),Lse=ie(xe,e=>{const t=s5(e.lora.loras);return{activeLabel:t>0?`${t} Active`:void 0}},we),zse=()=>{const{activeLabel:e}=L(Lse);return Xt("lora").isFeatureEnabled?a.jsx(hr,{label:"LoRA",activeLabel:e,children:a.jsxs($,{sx:{flexDir:"column",gap:2},children:[a.jsx($se,{}),a.jsx(Ase,{})]})}):null},qc=d.memo(zse),Fse=ie(xe,({generation:e})=>{const{model:t}=e;return{mainModel:t}},we),Bse=e=>{const{controlNetId:t,model:n,isEnabled:r}=e.controlNet,o=ee(),s=L(En),{mainModel:i}=L(Fse),{t:l}=Z(),{data:u}=Gb(),p=d.useMemo(()=>{if(!u)return[];const v=[];return Pn(u.entities,(b,y)=>{if(!b)return;const x=(b==null?void 0:b.base_model)!==(i==null?void 0:i.base_model);v.push({value:y,label:b.model_name,group:on[b.base_model],disabled:x,tooltip:x?`${l("controlnet.incompatibleBaseModel")} ${b.base_model}`:void 0})}),v},[u,i==null?void 0:i.base_model,l]),h=d.useMemo(()=>(u==null?void 0:u.entities[`${n==null?void 0:n.base_model}/controlnet/${n==null?void 0:n.model_name}`])??null,[n==null?void 0:n.base_model,n==null?void 0:n.model_name,u==null?void 0:u.entities]),m=d.useCallback(v=>{if(!v)return;const b=yO(v);b&&o(a5({controlNetId:t,model:b}))},[t,o]);return a.jsx(Kt,{itemComponent:ri,data:p,error:!h||(i==null?void 0:i.base_model)!==h.base_model,placeholder:l("controlnet.selectModel"),value:(h==null?void 0:h.id)??null,onChange:m,disabled:s||!r,tooltip:h==null?void 0:h.description})},Hse=d.memo(Bse),Wse=e=>{const{weight:t,isEnabled:n,controlNetId:r}=e.controlNet,o=ee(),{t:s}=Z(),i=d.useCallback(l=>{o(SR({controlNetId:r,weight:l}))},[r,o]);return a.jsx(Xe,{isDisabled:!n,label:s("controlnet.weight"),value:t,onChange:i,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2]})},Vse=d.memo(Wse),Use=ie(xe,({controlNet:e,gallery:t})=>{const{pendingControlImages:n}=e,{autoAddBoardId:r}=t;return{pendingControlImages:n,autoAddBoardId:r}},we),Gse=({isSmall:e,controlNet:t})=>{const{controlImage:n,processedControlImage:r,processorType:o,isEnabled:s,controlNetId:i}=t,l=ee(),{t:u}=Z(),{pendingControlImages:p,autoAddBoardId:h}=L(Use),m=L(wn),[v,b]=d.useState(!1),{currentData:y}=Wr(n??Er.skipToken),{currentData:x}=Wr(r??Er.skipToken),[w]=kR(),[k]=_R(),[_]=jR(),j=d.useCallback(()=>{l(PR({controlNetId:i,controlImage:null}))},[i,l]),I=d.useCallback(async()=>{x&&(await w({imageDTO:x,is_intermediate:!1}).unwrap(),h!=="none"?k({imageDTO:x,board_id:h}):_({imageDTO:x}))},[x,w,h,k,_]),E=d.useCallback(()=>{y&&(m==="unifiedCanvas"?l(No({width:y.width,height:y.height})):(l(Ti(y.width)),l($i(y.height))))},[y,m,l]),M=d.useCallback(()=>{b(!0)},[]),D=d.useCallback(()=>{b(!1)},[]),R=d.useMemo(()=>{if(y)return{id:i,payloadType:"IMAGE_DTO",payload:{imageDTO:y}}},[y,i]),A=d.useMemo(()=>({id:i,actionType:"SET_CONTROLNET_IMAGE",context:{controlNetId:i}}),[i]),O=d.useMemo(()=>({type:"SET_CONTROLNET_IMAGE",controlNetId:i}),[i]),T=y&&x&&!v&&!p.includes(i)&&o!=="none";return a.jsxs($,{onMouseEnter:M,onMouseLeave:D,sx:{position:"relative",w:"full",h:e?28:366,alignItems:"center",justifyContent:"center",pointerEvents:s?"auto":"none",opacity:s?1:.5},children:[a.jsx(oa,{draggableData:R,droppableData:A,imageDTO:y,isDropDisabled:T||!s,postUploadAction:O}),a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",opacity:T?1:0,transitionProperty:"common",transitionDuration:"normal",pointerEvents:"none"},children:a.jsx(oa,{draggableData:R,droppableData:A,imageDTO:x,isUploadDisabled:!0,isDropDisabled:!s})}),a.jsxs(a.Fragment,{children:[a.jsx(Di,{onClick:j,icon:y?a.jsx(Ud,{}):void 0,tooltip:u("controlnet.resetControlImage")}),a.jsx(Di,{onClick:I,icon:y?a.jsx(rg,{size:16}):void 0,tooltip:u("controlnet.saveControlImage"),styleOverrides:{marginTop:6}}),a.jsx(Di,{onClick:E,icon:y?a.jsx(qZ,{size:16}):void 0,tooltip:u("controlnet.setControlImageDimensions"),styleOverrides:{marginTop:12}})]}),p.includes(i)&&a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",alignItems:"center",justifyContent:"center",opacity:.8,borderRadius:"base",bg:"base.400",_dark:{bg:"base.900"}},children:a.jsx(Xi,{size:"xl",sx:{color:"base.100",_dark:{color:"base.400"}}})})]})},O_=d.memo(Gse),qo=()=>{const e=ee();return d.useCallback((n,r)=>{e(IR({controlNetId:n,changes:r}))},[e])};function Xo(e){return a.jsx($,{sx:{flexDirection:"column",gap:2},children:e.children})}const D_=bo.canny_image_processor.default,Kse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{low_threshold:o,high_threshold:s}=n,i=L(En),l=qo(),{t:u}=Z(),p=d.useCallback(b=>{l(t,{low_threshold:b})},[t,l]),h=d.useCallback(()=>{l(t,{low_threshold:D_.low_threshold})},[t,l]),m=d.useCallback(b=>{l(t,{high_threshold:b})},[t,l]),v=d.useCallback(()=>{l(t,{high_threshold:D_.high_threshold})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{isDisabled:i||!r,label:u("controlnet.lowThreshold"),value:o,onChange:p,handleReset:h,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0}),a.jsx(Xe,{isDisabled:i||!r,label:u("controlnet.highThreshold"),value:s,onChange:m,handleReset:v,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0})]})},qse=d.memo(Kse),ju=bo.content_shuffle_image_processor.default,Xse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,w:i,h:l,f:u}=n,p=qo(),h=L(En),{t:m}=Z(),v=d.useCallback(M=>{p(t,{detect_resolution:M})},[t,p]),b=d.useCallback(()=>{p(t,{detect_resolution:ju.detect_resolution})},[t,p]),y=d.useCallback(M=>{p(t,{image_resolution:M})},[t,p]),x=d.useCallback(()=>{p(t,{image_resolution:ju.image_resolution})},[t,p]),w=d.useCallback(M=>{p(t,{w:M})},[t,p]),k=d.useCallback(()=>{p(t,{w:ju.w})},[t,p]),_=d.useCallback(M=>{p(t,{h:M})},[t,p]),j=d.useCallback(()=>{p(t,{h:ju.h})},[t,p]),I=d.useCallback(M=>{p(t,{f:M})},[t,p]),E=d.useCallback(()=>{p(t,{f:ju.f})},[t,p]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:m("controlnet.detectResolution"),value:s,onChange:v,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.imageResolution"),value:o,onChange:y,handleReset:x,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.w"),value:i,onChange:w,handleReset:k,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.h"),value:l,onChange:_,handleReset:j,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.f"),value:u,onChange:I,handleReset:E,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r})]})},Yse=d.memo(Xse),R_=bo.hed_image_processor.default,Qse=e=>{const{controlNetId:t,processorNode:{detect_resolution:n,image_resolution:r,scribble:o},isEnabled:s}=e,i=L(En),l=qo(),{t:u}=Z(),p=d.useCallback(y=>{l(t,{detect_resolution:y})},[t,l]),h=d.useCallback(y=>{l(t,{image_resolution:y})},[t,l]),m=d.useCallback(y=>{l(t,{scribble:y.target.checked})},[t,l]),v=d.useCallback(()=>{l(t,{detect_resolution:R_.detect_resolution})},[t,l]),b=d.useCallback(()=>{l(t,{image_resolution:R_.image_resolution})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.detectResolution"),value:n,onChange:p,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(Xe,{label:u("controlnet.imageResolution"),value:r,onChange:h,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(Vt,{label:u("controlnet.scribble"),isChecked:o,onChange:m,isDisabled:i||!s})]})},Zse=d.memo(Qse),A_=bo.lineart_anime_image_processor.default,Jse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{detect_resolution:b})},[t,i]),h=d.useCallback(b=>{i(t,{image_resolution:b})},[t,i]),m=d.useCallback(()=>{i(t,{detect_resolution:A_.detect_resolution})},[t,i]),v=d.useCallback(()=>{i(t,{image_resolution:A_.image_resolution})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.detectResolution"),value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.imageResolution"),value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},eae=d.memo(Jse),N_=bo.lineart_image_processor.default,tae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,coarse:i}=n,l=qo(),u=L(En),{t:p}=Z(),h=d.useCallback(x=>{l(t,{detect_resolution:x})},[t,l]),m=d.useCallback(x=>{l(t,{image_resolution:x})},[t,l]),v=d.useCallback(()=>{l(t,{detect_resolution:N_.detect_resolution})},[t,l]),b=d.useCallback(()=>{l(t,{image_resolution:N_.image_resolution})},[t,l]),y=d.useCallback(x=>{l(t,{coarse:x.target.checked})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:p("controlnet.detectResolution"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Xe,{label:p("controlnet.imageResolution"),value:o,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Vt,{label:p("controlnet.coarse"),isChecked:i,onChange:y,isDisabled:u||!r})]})},nae=d.memo(tae),T_=bo.mediapipe_face_processor.default,rae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{max_faces:o,min_confidence:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{max_faces:b})},[t,i]),h=d.useCallback(b=>{i(t,{min_confidence:b})},[t,i]),m=d.useCallback(()=>{i(t,{max_faces:T_.max_faces})},[t,i]),v=d.useCallback(()=>{i(t,{min_confidence:T_.min_confidence})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.maxFaces"),value:o,onChange:p,handleReset:m,withReset:!0,min:1,max:20,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.minConfidence"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},oae=d.memo(rae),$_=bo.midas_depth_image_processor.default,sae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{a_mult:o,bg_th:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{a_mult:b})},[t,i]),h=d.useCallback(b=>{i(t,{bg_th:b})},[t,i]),m=d.useCallback(()=>{i(t,{a_mult:$_.a_mult})},[t,i]),v=d.useCallback(()=>{i(t,{bg_th:$_.bg_th})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.amult"),value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.bgth"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},aae=d.memo(sae),Mp=bo.mlsd_image_processor.default,iae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,thr_d:i,thr_v:l}=n,u=qo(),p=L(En),{t:h}=Z(),m=d.useCallback(j=>{u(t,{detect_resolution:j})},[t,u]),v=d.useCallback(j=>{u(t,{image_resolution:j})},[t,u]),b=d.useCallback(j=>{u(t,{thr_d:j})},[t,u]),y=d.useCallback(j=>{u(t,{thr_v:j})},[t,u]),x=d.useCallback(()=>{u(t,{detect_resolution:Mp.detect_resolution})},[t,u]),w=d.useCallback(()=>{u(t,{image_resolution:Mp.image_resolution})},[t,u]),k=d.useCallback(()=>{u(t,{thr_d:Mp.thr_d})},[t,u]),_=d.useCallback(()=>{u(t,{thr_v:Mp.thr_v})},[t,u]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:h("controlnet.detectResolution"),value:s,onChange:m,handleReset:x,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.imageResolution"),value:o,onChange:v,handleReset:w,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.w"),value:i,onChange:b,handleReset:k,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.h"),value:l,onChange:y,handleReset:_,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r})]})},lae=d.memo(iae),L_=bo.normalbae_image_processor.default,cae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{detect_resolution:b})},[t,i]),h=d.useCallback(b=>{i(t,{image_resolution:b})},[t,i]),m=d.useCallback(()=>{i(t,{detect_resolution:L_.detect_resolution})},[t,i]),v=d.useCallback(()=>{i(t,{image_resolution:L_.image_resolution})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.detectResolution"),value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.imageResolution"),value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},uae=d.memo(cae),z_=bo.openpose_image_processor.default,dae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,hand_and_face:i}=n,l=qo(),u=L(En),{t:p}=Z(),h=d.useCallback(x=>{l(t,{detect_resolution:x})},[t,l]),m=d.useCallback(x=>{l(t,{image_resolution:x})},[t,l]),v=d.useCallback(()=>{l(t,{detect_resolution:z_.detect_resolution})},[t,l]),b=d.useCallback(()=>{l(t,{image_resolution:z_.image_resolution})},[t,l]),y=d.useCallback(x=>{l(t,{hand_and_face:x.target.checked})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:p("controlnet.detectResolution"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Xe,{label:p("controlnet.imageResolution"),value:o,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Vt,{label:p("controlnet.handAndFace"),isChecked:i,onChange:y,isDisabled:u||!r})]})},fae=d.memo(dae),F_=bo.pidi_image_processor.default,pae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,scribble:i,safe:l}=n,u=qo(),p=L(En),{t:h}=Z(),m=d.useCallback(k=>{u(t,{detect_resolution:k})},[t,u]),v=d.useCallback(k=>{u(t,{image_resolution:k})},[t,u]),b=d.useCallback(()=>{u(t,{detect_resolution:F_.detect_resolution})},[t,u]),y=d.useCallback(()=>{u(t,{image_resolution:F_.image_resolution})},[t,u]),x=d.useCallback(k=>{u(t,{scribble:k.target.checked})},[t,u]),w=d.useCallback(k=>{u(t,{safe:k.target.checked})},[t,u]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:h("controlnet.detectResolution"),value:s,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.imageResolution"),value:o,onChange:v,handleReset:y,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Vt,{label:h("controlnet.scribble"),isChecked:i,onChange:x}),a.jsx(Vt,{label:h("controlnet.safe"),isChecked:l,onChange:w,isDisabled:p||!r})]})},hae=d.memo(pae),mae=e=>null,gae=d.memo(mae),vae=e=>{const{controlNetId:t,isEnabled:n,processorNode:r}=e.controlNet;return r.type==="canny_image_processor"?a.jsx(qse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="hed_image_processor"?a.jsx(Zse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_image_processor"?a.jsx(nae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="content_shuffle_image_processor"?a.jsx(Yse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_anime_image_processor"?a.jsx(eae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mediapipe_face_processor"?a.jsx(oae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="midas_depth_image_processor"?a.jsx(aae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mlsd_image_processor"?a.jsx(lae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="normalbae_image_processor"?a.jsx(uae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="openpose_image_processor"?a.jsx(fae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="pidi_image_processor"?a.jsx(hae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="zoe_depth_image_processor"?a.jsx(gae,{controlNetId:t,processorNode:r,isEnabled:n}):null},bae=d.memo(vae),xae=e=>{const{controlNetId:t,isEnabled:n,shouldAutoConfig:r}=e.controlNet,o=ee(),s=L(En),{t:i}=Z(),l=d.useCallback(()=>{o(ER({controlNetId:t}))},[t,o]);return a.jsx(Vt,{label:i("controlnet.autoConfigure"),"aria-label":i("controlnet.autoConfigure"),isChecked:r,onChange:l,isDisabled:s||!n})},yae=d.memo(xae),Cae=e=>{const{controlNet:t}=e,n=ee(),{t:r}=Z(),o=d.useCallback(()=>{n(MR({controlNet:t}))},[t,n]),s=d.useCallback(()=>{n(OR({controlNet:t}))},[t,n]);return a.jsxs($,{sx:{gap:2},children:[a.jsx(Te,{size:"sm",icon:a.jsx(Ui,{}),tooltip:r("controlnet.importImageFromCanvas"),"aria-label":r("controlnet.importImageFromCanvas"),onClick:o}),a.jsx(Te,{size:"sm",icon:a.jsx(zE,{}),tooltip:r("controlnet.importMaskFromCanvas"),"aria-label":r("controlnet.importMaskFromCanvas"),onClick:s})]})},wae=d.memo(Cae),B_=e=>`${Math.round(e*100)}%`,Sae=e=>{const{beginStepPct:t,endStepPct:n,isEnabled:r,controlNetId:o}=e.controlNet,s=ee(),{t:i}=Z(),l=d.useCallback(u=>{s(DR({controlNetId:o,beginStepPct:u[0]})),s(RR({controlNetId:o,endStepPct:u[1]}))},[o,s]);return a.jsxs(sn,{isDisabled:!r,children:[a.jsx(Hn,{children:i("controlnet.beginEndStepPercent")}),a.jsx(Om,{w:"100%",gap:2,alignItems:"center",children:a.jsxs(Nx,{"aria-label":["Begin Step %","End Step %!"],value:[t,n],onChange:l,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!r,children:[a.jsx(Tx,{children:a.jsx($x,{})}),a.jsx(Rt,{label:B_(t),placement:"top",hasArrow:!0,children:a.jsx(od,{index:0})}),a.jsx(Rt,{label:B_(n),placement:"top",hasArrow:!0,children:a.jsx(od,{index:1})}),a.jsx(Pi,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),a.jsx(Pi,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),a.jsx(Pi,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},kae=d.memo(Sae);function _ae(e){const{controlMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=ee(),{t:s}=Z(),i=[{label:s("controlnet.balanced"),value:"balanced"},{label:s("controlnet.prompt"),value:"more_prompt"},{label:s("controlnet.control"),value:"more_control"},{label:s("controlnet.megaControl"),value:"unbalanced"}],l=d.useCallback(u=>{o(AR({controlNetId:r,controlMode:u}))},[r,o]);return a.jsx(In,{disabled:!n,label:s("controlnet.controlMode"),data:i,value:String(t),onChange:l})}const jae=ie(Oy,e=>rr(bo,n=>({value:n.type,label:n.label})).sort((n,r)=>n.value==="none"?-1:r.value==="none"?1:n.label.localeCompare(r.label)).filter(n=>!e.sd.disabledControlNetProcessors.includes(n.value)),we),Pae=e=>{const t=ee(),{controlNetId:n,isEnabled:r,processorNode:o}=e.controlNet,s=L(En),i=L(jae),{t:l}=Z(),u=d.useCallback(p=>{t(NR({controlNetId:n,processorType:p}))},[n,t]);return a.jsx(Kt,{label:l("controlnet.processor"),value:o.type??"canny_image_processor",data:i,onChange:u,disabled:s||!r})},Iae=d.memo(Pae);function Eae(e){const{resizeMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=ee(),{t:s}=Z(),i=[{label:s("controlnet.resize"),value:"just_resize"},{label:s("controlnet.crop"),value:"crop_resize"},{label:s("controlnet.fill"),value:"fill_resize"}],l=d.useCallback(u=>{o(TR({controlNetId:r,resizeMode:u}))},[r,o]);return a.jsx(In,{disabled:!n,label:s("controlnet.resizeMode"),data:i,value:String(t),onChange:l})}const Mae=e=>{const{controlNet:t}=e,{controlNetId:n}=t,r=ee(),{t:o}=Z(),s=L(wn),i=ie(xe,({controlNet:y})=>{const x=y.controlNets[n];if(!x)return{isEnabled:!1,shouldAutoConfig:!1};const{isEnabled:w,shouldAutoConfig:k}=x;return{isEnabled:w,shouldAutoConfig:k}},we),{isEnabled:l,shouldAutoConfig:u}=L(i),[p,h]=sJ(!1),m=d.useCallback(()=>{r($R({controlNetId:n}))},[n,r]),v=d.useCallback(()=>{r(LR({sourceControlNetId:n,newControlNetId:Ba()}))},[n,r]),b=d.useCallback(()=>{r(zR({controlNetId:n}))},[n,r]);return a.jsxs($,{sx:{flexDir:"column",gap:3,p:2,borderRadius:"base",position:"relative",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(Vt,{tooltip:o("controlnet.toggleControlNet"),"aria-label":o("controlnet.toggleControlNet"),isChecked:l,onChange:b}),a.jsx(Ie,{sx:{w:"full",minW:0,opacity:l?1:.5,pointerEvents:l?"auto":"none",transitionProperty:"common",transitionDuration:"0.1s"},children:a.jsx(Hse,{controlNet:t})}),s==="unifiedCanvas"&&a.jsx(wae,{controlNet:t}),a.jsx(Te,{size:"sm",tooltip:o("controlnet.duplicate"),"aria-label":o("controlnet.duplicate"),onClick:v,icon:a.jsx(Wc,{})}),a.jsx(Te,{size:"sm",tooltip:o("controlnet.delete"),"aria-label":o("controlnet.delete"),colorScheme:"error",onClick:m,icon:a.jsx(Kr,{})}),a.jsx(Te,{size:"sm",tooltip:o(p?"controlnet.hideAdvanced":"controlnet.showAdvanced"),"aria-label":o(p?"controlnet.hideAdvanced":"controlnet.showAdvanced"),onClick:h,variant:"ghost",sx:{_hover:{bg:"none"}},icon:a.jsx(dg,{sx:{boxSize:4,color:"base.700",transform:p?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal",_dark:{color:"base.300"}}})}),!u&&a.jsx(Ie,{sx:{position:"absolute",w:1.5,h:1.5,borderRadius:"full",top:4,insetInlineEnd:4,bg:"accent.700",_dark:{bg:"accent.400"}}})]}),a.jsxs($,{sx:{w:"full",flexDirection:"column",gap:3},children:[a.jsxs($,{sx:{gap:4,w:"full",alignItems:"center"},children:[a.jsxs($,{sx:{flexDir:"column",gap:3,h:28,w:"full",paddingInlineStart:1,paddingInlineEnd:p?1:0,pb:2,justifyContent:"space-between"},children:[a.jsx(Vse,{controlNet:t}),a.jsx(kae,{controlNet:t})]}),!p&&a.jsx($,{sx:{alignItems:"center",justifyContent:"center",h:28,w:28,aspectRatio:"1/1"},children:a.jsx(O_,{controlNet:t,isSmall:!0})})]}),a.jsxs($,{sx:{gap:2},children:[a.jsx(_ae,{controlNet:t}),a.jsx(Eae,{controlNet:t})]}),a.jsx(Iae,{controlNet:t})]}),p&&a.jsxs(a.Fragment,{children:[a.jsx(O_,{controlNet:t}),a.jsx(yae,{controlNet:t}),a.jsx(bae,{controlNet:t})]})]})},Oae=d.memo(Mae),H_=e=>`${Math.round(e*100)}%`,Dae=()=>{const e=L(i=>i.controlNet.isIPAdapterEnabled),t=L(i=>i.controlNet.ipAdapterInfo.beginStepPct),n=L(i=>i.controlNet.ipAdapterInfo.endStepPct),r=ee(),{t:o}=Z(),s=d.useCallback(i=>{r(FR(i[0])),r(BR(i[1]))},[r]);return a.jsxs(sn,{isDisabled:!e,children:[a.jsx(Hn,{children:o("controlnet.beginEndStepPercent")}),a.jsx(Om,{w:"100%",gap:2,alignItems:"center",children:a.jsxs(Nx,{"aria-label":["Begin Step %","End Step %!"],value:[t,n],onChange:s,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!e,children:[a.jsx(Tx,{children:a.jsx($x,{})}),a.jsx(Rt,{label:H_(t),placement:"top",hasArrow:!0,children:a.jsx(od,{index:0})}),a.jsx(Rt,{label:H_(n),placement:"top",hasArrow:!0,children:a.jsx(od,{index:1})}),a.jsx(Pi,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),a.jsx(Pi,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),a.jsx(Pi,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},Rae=d.memo(Dae),Aae=ie(xe,e=>{const{isIPAdapterEnabled:t}=e.controlNet;return{isIPAdapterEnabled:t}},we),Nae=()=>{const{isIPAdapterEnabled:e}=L(Aae),t=ee(),{t:n}=Z(),r=d.useCallback(()=>{t(HR())},[t]);return a.jsx(Vt,{label:n("controlnet.enableIPAdapter"),isChecked:e,onChange:r,formControlProps:{width:"100%"}})},Tae=d.memo(Nae),$ae=()=>{var u;const e=L(p=>p.controlNet.ipAdapterInfo),t=L(p=>p.controlNet.isIPAdapterEnabled),n=ee(),{t:r}=Z(),{currentData:o}=Wr(((u=e.adapterImage)==null?void 0:u.image_name)??Er.skipToken),s=d.useMemo(()=>{if(o)return{id:"ip-adapter-image",payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[o]),i=d.useMemo(()=>({id:"ip-adapter-image",actionType:"SET_IP_ADAPTER_IMAGE"}),[]),l=d.useMemo(()=>({type:"SET_IP_ADAPTER_IMAGE"}),[]);return a.jsxs($,{sx:{position:"relative",w:"full",alignItems:"center",justifyContent:"center"},children:[a.jsx(oa,{imageDTO:o,droppableData:i,draggableData:s,postUploadAction:l,isUploadDisabled:!t,isDropDisabled:!t,dropLabel:r("toast.setIPAdapterImage"),noContentFallback:a.jsx(Kn,{label:r("controlnet.ipAdapterImageFallback")})}),a.jsx(Di,{onClick:()=>n(WR(null)),icon:e.adapterImage?a.jsx(Ud,{}):void 0,tooltip:r("controlnet.resetIPAdapterImage")})]})},Lae=d.memo($ae),zae=()=>{const e=L(u=>u.controlNet.ipAdapterInfo.model),t=L(u=>u.generation.model),n=ee(),{t:r}=Z(),{data:o}=r5(),s=d.useMemo(()=>(o==null?void 0:o.entities[`${e==null?void 0:e.base_model}/ip_adapter/${e==null?void 0:e.model_name}`])??null,[e==null?void 0:e.base_model,e==null?void 0:e.model_name,o==null?void 0:o.entities]),i=d.useMemo(()=>{if(!o)return[];const u=[];return Pn(o.entities,(p,h)=>{if(!p)return;const m=(t==null?void 0:t.base_model)!==p.base_model;u.push({value:h,label:p.model_name,group:on[p.base_model],disabled:m,tooltip:m?`Incompatible base model: ${p.base_model}`:void 0})}),u.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,t==null?void 0:t.base_model]),l=d.useCallback(u=>{if(!u)return;const p=kO(u);p&&n(VR(p))},[n]);return a.jsx(In,{label:r("controlnet.ipAdapterModel"),className:"nowheel nodrag",tooltip:s==null?void 0:s.description,value:(s==null?void 0:s.id)??null,placeholder:"Pick one",error:!s,data:i,onChange:l,sx:{width:"100%"}})},Fae=d.memo(zae),Bae=()=>{const e=L(i=>i.controlNet.isIPAdapterEnabled),t=L(i=>i.controlNet.ipAdapterInfo.weight),n=ee(),{t:r}=Z(),o=d.useCallback(i=>{n(ew(i))},[n]),s=d.useCallback(()=>{n(ew(1))},[n]);return a.jsx(Xe,{isDisabled:!e,label:r("controlnet.weight"),value:t,onChange:o,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2],withReset:!0,handleReset:s})},Hae=d.memo(Bae),Wae=()=>a.jsxs($,{sx:{flexDir:"column",gap:3,paddingInline:3,paddingBlock:2,paddingBottom:5,borderRadius:"base",position:"relative",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsx(Tae,{}),a.jsx(Lae,{}),a.jsx(Fae,{}),a.jsx(Hae,{}),a.jsx(Rae,{})]}),Vae=d.memo(Wae),Uae=ie(xe,e=>{const{isEnabled:t}=e.controlNet;return{isEnabled:t}},we),Gae=()=>{const{isEnabled:e}=L(Uae),t=ee(),n=d.useCallback(()=>{t(UR())},[t]);return a.jsx(Vt,{label:"Enable ControlNet",isChecked:e,onChange:n,formControlProps:{width:"100%"}})},Kae=d.memo(Gae),qae=ie([xe],({controlNet:e})=>{const{controlNets:t,isEnabled:n,isIPAdapterEnabled:r}=e,o=GR(t);let s;return n&&o.length>0&&(s=`${o.length} ControlNet`),r&&(s?s=`${s}, IP Adapter`:s="IP Adapter"),{controlNetsArray:rr(t),activeLabel:s}},we),Xae=()=>{const{controlNetsArray:e,activeLabel:t}=L(qae),n=Xt("controlNet").isFeatureDisabled,r=ee(),{firstModel:o}=Gb(void 0,{selectFromResult:i=>({firstModel:i.data?KR.getSelectors().selectAll(i.data)[0]:void 0})}),s=d.useCallback(()=>{if(!o)return;const i=Ba();r(qR({controlNetId:i})),r(a5({controlNetId:i,model:o}))},[r,o]);return n?null:a.jsx(hr,{label:"Control Adapters",activeLabel:t,children:a.jsxs($,{sx:{flexDir:"column",gap:2},children:[a.jsxs($,{sx:{w:"100%",gap:2,p:2,ps:3,borderRadius:"base",alignItems:"center",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsx(Kae,{}),a.jsx(Te,{tooltip:"Add ControlNet","aria-label":"Add ControlNet",icon:a.jsx(ol,{}),isDisabled:!o,flexGrow:1,size:"sm",onClick:s})]}),e.map((i,l)=>a.jsxs(d.Fragment,{children:[l>0&&a.jsx(Vr,{}),a.jsx(Oae,{controlNet:i})]},i.controlNetId)),a.jsx(Vae,{})]})})},Xc=d.memo(Xae),Yae=ie(xe,e=>{const{shouldUseNoiseSettings:t,shouldUseCpuNoise:n}=e.generation;return{isDisabled:!t,shouldUseCpuNoise:n}},we),Qae=()=>{const e=ee(),{isDisabled:t,shouldUseCpuNoise:n}=L(Yae),{t:r}=Z(),o=s=>e(XR(s.target.checked));return a.jsx(Vt,{isDisabled:t,label:r("parameters.useCpuNoise"),isChecked:n,onChange:o})},Zae=ie(xe,e=>{const{shouldUseNoiseSettings:t,threshold:n}=e.generation;return{isDisabled:!t,threshold:n}},we);function Jae(){const e=ee(),{threshold:t,isDisabled:n}=L(Zae),{t:r}=Z();return a.jsx(Xe,{isDisabled:n,label:r("parameters.noiseThreshold"),min:0,max:20,step:.1,onChange:o=>e(tw(o)),handleReset:()=>e(tw(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const eie=()=>{const e=ee(),{t}=Z(),n=L(o=>o.generation.shouldUseNoiseSettings),r=o=>e(YR(o.target.checked));return a.jsx(Vt,{label:t("parameters.enableNoiseSettings"),isChecked:n,onChange:r})},tie=ie(xe,e=>{const{shouldUseNoiseSettings:t,perlin:n}=e.generation;return{isDisabled:!t,perlin:n}},we);function nie(){const e=ee(),{perlin:t,isDisabled:n}=L(tie),{t:r}=Z();return a.jsx(Xe,{isDisabled:n,label:r("parameters.perlinNoise"),min:0,max:1,step:.05,onChange:o=>e(nw(o)),handleReset:()=>e(nw(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const rie=ie(xe,e=>{const{shouldUseNoiseSettings:t}=e.generation;return{activeLabel:t?"Enabled":void 0}},we),oie=()=>{const{t:e}=Z(),t=Xt("noise").isFeatureEnabled,n=Xt("perlinNoise").isFeatureEnabled,r=Xt("noiseThreshold").isFeatureEnabled,{activeLabel:o}=L(rie);return t?a.jsx(hr,{label:e("parameters.noiseSettings"),activeLabel:o,children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(eie,{}),a.jsx(Qae,{}),n&&a.jsx(nie,{}),r&&a.jsx(Jae,{})]})}):null},Yd=d.memo(oie),qr=e=>e.generation,sie=ie(qr,e=>{const{seamlessXAxis:t}=e;return{seamlessXAxis:t}},we),aie=()=>{const{t:e}=Z(),{seamlessXAxis:t}=L(sie),n=ee(),r=d.useCallback(o=>{n(QR(o.target.checked))},[n]);return a.jsx(Vt,{label:e("parameters.seamlessXAxis"),"aria-label":e("parameters.seamlessXAxis"),isChecked:t,onChange:r})},iie=d.memo(aie),lie=ie(qr,e=>{const{seamlessYAxis:t}=e;return{seamlessYAxis:t}},we),cie=()=>{const{t:e}=Z(),{seamlessYAxis:t}=L(lie),n=ee(),r=d.useCallback(o=>{n(ZR(o.target.checked))},[n]);return a.jsx(Vt,{label:e("parameters.seamlessYAxis"),"aria-label":e("parameters.seamlessYAxis"),isChecked:t,onChange:r})},uie=d.memo(cie),die=(e,t)=>{if(e&&t)return"X & Y";if(e)return"X";if(t)return"Y"},fie=ie(qr,e=>{const{seamlessXAxis:t,seamlessYAxis:n}=e;return{activeLabel:die(t,n)}},we),pie=()=>{const{t:e}=Z(),{activeLabel:t}=L(fie);return Xt("seamless").isFeatureEnabled?a.jsx(hr,{label:e("parameters.seamlessTiling"),activeLabel:t,children:a.jsxs($,{sx:{gap:5},children:[a.jsx(Ie,{flexGrow:1,children:a.jsx(iie,{})}),a.jsx(Ie,{flexGrow:1,children:a.jsx(uie,{})})]})}):null},Yc=d.memo(pie),hie=e=>{const{onClick:t}=e,{t:n}=Z();return a.jsx(Te,{size:"sm","aria-label":n("embedding.addEmbedding"),tooltip:n("embedding.addEmbedding"),icon:a.jsx(DE,{}),sx:{p:2,color:"base.500",_hover:{color:"base.600"},_active:{color:"base.700"},_dark:{color:"base.500",_hover:{color:"base.400"},_active:{color:"base.300"}}},variant:"link",onClick:t})},Ig=d.memo(hie),mie="28rem",gie=e=>{const{onSelect:t,isOpen:n,onClose:r,children:o}=e,{data:s}=JR(),i=d.useRef(null),{t:l}=Z(),u=L(m=>m.generation.model),p=d.useMemo(()=>{if(!s)return[];const m=[];return Pn(s.entities,(v,b)=>{if(!v)return;const y=(u==null?void 0:u.base_model)!==v.base_model;m.push({value:v.model_name,label:v.model_name,group:on[v.base_model],disabled:y,tooltip:y?`${l("embedding.incompatibleModel")} ${v.base_model}`:void 0})}),m.sort((v,b)=>{var y;return v.label&&b.label?(y=v.label)!=null&&y.localeCompare(b.label)?-1:1:-1}),m.sort((v,b)=>v.disabled&&!b.disabled?1:-1)},[s,u==null?void 0:u.base_model,l]),h=d.useCallback(m=>{m&&t(m)},[t]);return a.jsxs(Fm,{initialFocusRef:i,isOpen:n,onClose:r,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(Rx,{children:o}),a.jsx(Bm,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(Ax,{sx:{p:0,w:`calc(${mie} - 2rem )`},children:p.length===0?a.jsx($,{sx:{justifyContent:"center",p:2,fontSize:"sm",color:"base.500",_dark:{color:"base.700"}},children:a.jsx(ye,{children:"No Embeddings Loaded"})}):a.jsx(Kt,{inputRef:i,autoFocus:!0,placeholder:l("embedding.addEmbedding"),value:null,data:p,nothingFound:l("embedding.noMatchingEmbedding"),itemComponent:ri,disabled:p.length===0,onDropdownClose:r,filter:(m,v)=>{var b;return((b=v.label)==null?void 0:b.toLowerCase().includes(m.toLowerCase().trim()))||v.value.toLowerCase().includes(m.toLowerCase().trim())},onChange:h})})})]})},Eg=d.memo(gie),vie=()=>{const e=L(m=>m.generation.negativePrompt),t=d.useRef(null),{isOpen:n,onClose:r,onOpen:o}=Mr(),s=ee(),{t:i}=Z(),l=d.useCallback(m=>{s(zu(m.target.value))},[s]),u=d.useCallback(m=>{m.key==="<"&&o()},[o]),p=d.useCallback(m=>{if(!t.current)return;const v=t.current.selectionStart;if(v===void 0)return;let b=e.slice(0,v);b[b.length-1]!=="<"&&(b+="<"),b+=`${m}>`;const y=b.length;b+=e.slice(v),Fr.flushSync(()=>{s(zu(b))}),t.current.selectionEnd=y,r()},[s,r,e]),h=Xt("embedding").isFeatureEnabled;return a.jsxs(sn,{children:[a.jsx(Eg,{isOpen:n,onClose:r,onSelect:p,children:a.jsx(sa,{id:"negativePrompt",name:"negativePrompt",ref:t,value:e,placeholder:i("parameters.negativePromptPlaceholder"),onChange:l,resize:"vertical",fontSize:"sm",minH:16,...h&&{onKeyDown:u}})}),!n&&h&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:o})})]})},jO=d.memo(vie),bie=ie([xe,wn],({generation:e},t)=>({prompt:e.positivePrompt,activeTabName:t}),{memoizeOptions:{resultEqualityCheck:_t}}),xie=()=>{const e=ee(),{prompt:t,activeTabName:n}=L(bie),r=Xd(),o=d.useRef(null),{isOpen:s,onClose:i,onOpen:l}=Mr(),{t:u}=Z(),p=d.useCallback(b=>{e(Lu(b.target.value))},[e]);Ze("alt+a",()=>{var b;(b=o.current)==null||b.focus()},[]);const h=d.useCallback(b=>{if(!o.current)return;const y=o.current.selectionStart;if(y===void 0)return;let x=t.slice(0,y);x[x.length-1]!=="<"&&(x+="<"),x+=`${b}>`;const w=x.length;x+=t.slice(y),Fr.flushSync(()=>{e(Lu(x))}),o.current.selectionStart=w,o.current.selectionEnd=w,i()},[e,i,t]),m=Xt("embedding").isFeatureEnabled,v=d.useCallback(b=>{b.key==="Enter"&&b.shiftKey===!1&&r&&(b.preventDefault(),e(wd()),e(bm(n))),m&&b.key==="<"&&l()},[r,e,n,l,m]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(sn,{children:a.jsx(Eg,{isOpen:s,onClose:i,onSelect:h,children:a.jsx(sa,{id:"prompt",name:"prompt",ref:o,value:t,placeholder:u("parameters.positivePromptPlaceholder"),onChange:p,onKeyDown:v,resize:"vertical",minH:32})})}),!s&&m&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:l})})]})},PO=d.memo(xie);function yie(){const e=L(o=>o.sdxl.shouldConcatSDXLStylePrompt),t=ee(),{t:n}=Z(),r=()=>{t(eA(!e))};return a.jsx(Te,{"aria-label":n("sdxl.concatPromptStyle"),tooltip:n("sdxl.concatPromptStyle"),variant:"outline",isChecked:e,onClick:r,icon:a.jsx($E,{}),size:"xs",sx:{position:"absolute",insetInlineEnd:1,top:6,border:"none",color:e?"accent.500":"base.500",_hover:{bg:"none"}}})}const W_={position:"absolute",bg:"none",w:"full",minH:2,borderRadius:0,borderLeft:"none",borderRight:"none",zIndex:2,maskImage:"radial-gradient(circle at center, black, black 65%, black 30%, black 15%, transparent)"};function IO(){return a.jsxs($,{children:[a.jsx(Ie,{as:vn.div,initial:{scaleX:0,borderWidth:0,display:"none"},animate:{display:["block","block","block","none"],scaleX:[0,.25,.5,1],borderWidth:[0,3,3,0],transition:{duration:.37,times:[0,.25,.5,1]}},sx:{top:"1px",borderTop:"none",borderColor:"base.400",...W_,_dark:{borderColor:"accent.500"}}}),a.jsx(Ie,{as:vn.div,initial:{opacity:0,scale:0},animate:{opacity:[0,1,1,1],scale:[0,.75,1.5,1],transition:{duration:.42,times:[0,.25,.5,1]}},exit:{opacity:0,scale:0},sx:{zIndex:3,position:"absolute",left:"48%",top:"3px",p:1,borderRadius:4,bg:"accent.400",color:"base.50",_dark:{bg:"accent.500"}},children:a.jsx($E,{size:12})}),a.jsx(Ie,{as:vn.div,initial:{scaleX:0,borderWidth:0,display:"none"},animate:{display:["block","block","block","none"],scaleX:[0,.25,.5,1],borderWidth:[0,3,3,0],transition:{duration:.37,times:[0,.25,.5,1]}},sx:{top:"17px",borderBottom:"none",borderColor:"base.400",...W_,_dark:{borderColor:"accent.500"}}})]})}const Cie=ie([xe,wn],({sdxl:e},t)=>{const{negativeStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}}),wie=()=>{const e=ee(),t=Xd(),n=d.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Mr(),{t:i}=Z(),{prompt:l,activeTabName:u,shouldConcatSDXLStylePrompt:p}=L(Cie),h=d.useCallback(y=>{e(Bu(y.target.value))},[e]),m=d.useCallback(y=>{if(!n.current)return;const x=n.current.selectionStart;if(x===void 0)return;let w=l.slice(0,x);w[w.length-1]!=="<"&&(w+="<"),w+=`${y}>`;const k=w.length;w+=l.slice(x),Fr.flushSync(()=>{e(Bu(w))}),n.current.selectionStart=k,n.current.selectionEnd=k,o()},[e,o,l]),v=Xt("embedding").isFeatureEnabled,b=d.useCallback(y=>{y.key==="Enter"&&y.shiftKey===!1&&t&&(y.preventDefault(),e(wd()),e(bm(u))),v&&y.key==="<"&&s()},[t,e,u,s,v]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(nr,{children:p&&a.jsx(Ie,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(IO,{})})}),a.jsx(sn,{children:a.jsx(Eg,{isOpen:r,onClose:o,onSelect:m,children:a.jsx(sa,{id:"prompt",name:"prompt",ref:n,value:l,placeholder:i("sdxl.negStylePrompt"),onChange:h,onKeyDown:b,resize:"vertical",fontSize:"sm",minH:16})})}),!r&&v&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:s})})]})},Sie=d.memo(wie),kie=ie([xe,wn],({sdxl:e},t)=>{const{positiveStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}}),_ie=()=>{const e=ee(),t=Xd(),n=d.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Mr(),{t:i}=Z(),{prompt:l,activeTabName:u,shouldConcatSDXLStylePrompt:p}=L(kie),h=d.useCallback(y=>{e(Fu(y.target.value))},[e]),m=d.useCallback(y=>{if(!n.current)return;const x=n.current.selectionStart;if(x===void 0)return;let w=l.slice(0,x);w[w.length-1]!=="<"&&(w+="<"),w+=`${y}>`;const k=w.length;w+=l.slice(x),Fr.flushSync(()=>{e(Fu(w))}),n.current.selectionStart=k,n.current.selectionEnd=k,o()},[e,o,l]),v=Xt("embedding").isFeatureEnabled,b=d.useCallback(y=>{y.key==="Enter"&&y.shiftKey===!1&&t&&(y.preventDefault(),e(wd()),e(bm(u))),v&&y.key==="<"&&s()},[t,e,u,s,v]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(nr,{children:p&&a.jsx(Ie,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(IO,{})})}),a.jsx(sn,{children:a.jsx(Eg,{isOpen:r,onClose:o,onSelect:m,children:a.jsx(sa,{id:"prompt",name:"prompt",ref:n,value:l,placeholder:i("sdxl.posStylePrompt"),onChange:h,onKeyDown:b,resize:"vertical",minH:16})})}),!r&&v&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:s})})]})},jie=d.memo(_ie);function By(){return a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(PO,{}),a.jsx(yie,{}),a.jsx(jie,{}),a.jsx(jO,{}),a.jsx(Sie,{})]})}const al=()=>{const{isRefinerAvailable:e}=Bo(Kb,{selectFromResult:({data:t})=>({isRefinerAvailable:t?t.ids.length>0:!1})});return e},Pie=ie([xe],({sdxl:e,ui:t,hotkeys:n})=>{const{refinerCFGScale:r}=e,{shouldUseSliders:o}=t,{shift:s}=n;return{refinerCFGScale:r,shouldUseSliders:o,shift:s}},we),Iie=()=>{const{refinerCFGScale:e,shouldUseSliders:t,shift:n}=L(Pie),r=al(),o=ee(),{t:s}=Z(),i=d.useCallback(u=>o(i1(u)),[o]),l=d.useCallback(()=>o(i1(7)),[o]);return t?a.jsx(Xe,{label:s("sdxl.cfgScale"),step:n?.1:.5,min:1,max:20,onChange:i,handleReset:l,value:e,sliderNumberInputProps:{max:200},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!r}):a.jsx(Gc,{label:s("sdxl.cfgScale"),step:.5,min:1,max:200,onChange:i,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"},isDisabled:!r})},Eie=d.memo(Iie),Mie=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=tA.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data},Oie=ie(xe,e=>({model:e.sdxl.refinerModel}),we),Die=()=>{const e=ee(),t=Xt("syncModels").isFeatureEnabled,{model:n}=L(Oie),{t:r}=Z(),{data:o,isLoading:s}=Bo(Kb),i=d.useMemo(()=>{if(!o)return[];const p=[];return Pn(o.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p},[o]),l=d.useMemo(()=>(o==null?void 0:o.entities[`${n==null?void 0:n.base_model}/main/${n==null?void 0:n.model_name}`])??null,[o==null?void 0:o.entities,n]),u=d.useCallback(p=>{if(!p)return;const h=Mie(p);h&&e(qj(h))},[e]);return s?a.jsx(Kt,{label:r("sdxl.refinermodel"),placeholder:r("sdxl.loading"),disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kt,{tooltip:l==null?void 0:l.description,label:r("sdxl.refinermodel"),value:l==null?void 0:l.id,placeholder:i.length>0?r("sdxl.selectAModel"):r("sdxl.noModelsAvailable"),data:i,error:i.length===0,disabled:i.length===0,onChange:u,w:"100%"}),t&&a.jsx(Ie,{mt:7,children:a.jsx(Uc,{iconMode:!0})})]})},Rie=d.memo(Die),Aie=ie([xe],({sdxl:e,hotkeys:t})=>{const{refinerNegativeAestheticScore:n}=e,{shift:r}=t;return{refinerNegativeAestheticScore:n,shift:r}},we),Nie=()=>{const{refinerNegativeAestheticScore:e,shift:t}=L(Aie),n=al(),r=ee(),{t:o}=Z(),s=d.useCallback(l=>r(c1(l)),[r]),i=d.useCallback(()=>r(c1(2.5)),[r]);return a.jsx(Xe,{label:o("sdxl.negAestheticScore"),step:t?.1:.5,min:1,max:10,onChange:s,handleReset:i,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},Tie=d.memo(Nie),$ie=ie([xe],({sdxl:e,hotkeys:t})=>{const{refinerPositiveAestheticScore:n}=e,{shift:r}=t;return{refinerPositiveAestheticScore:n,shift:r}},we),Lie=()=>{const{refinerPositiveAestheticScore:e,shift:t}=L($ie),n=al(),r=ee(),{t:o}=Z(),s=d.useCallback(l=>r(l1(l)),[r]),i=d.useCallback(()=>r(l1(6)),[r]);return a.jsx(Xe,{label:o("sdxl.posAestheticScore"),step:t?.1:.5,min:1,max:10,onChange:s,handleReset:i,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},zie=d.memo(Lie),Fie=ie(xe,({ui:e,sdxl:t})=>{const{refinerScheduler:n}=t,{favoriteSchedulers:r}=e,o=rr(hm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{refinerScheduler:n,data:o}},we),Bie=()=>{const e=ee(),{t}=Z(),{refinerScheduler:n,data:r}=L(Fie),o=al(),s=d.useCallback(i=>{i&&e(Xj(i))},[e]);return a.jsx(Kt,{w:"100%",label:t("sdxl.scheduler"),value:n,data:r,onChange:s,disabled:!o})},Hie=d.memo(Bie),Wie=ie([xe],({sdxl:e})=>{const{refinerStart:t}=e;return{refinerStart:t}},we),Vie=()=>{const{refinerStart:e}=L(Wie),t=ee(),n=al(),r=d.useCallback(i=>t(u1(i)),[t]),{t:o}=Z(),s=d.useCallback(()=>t(u1(.8)),[t]);return a.jsx(Xe,{label:o("sdxl.refinerStart"),step:.01,min:0,max:1,onChange:r,handleReset:s,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},Uie=d.memo(Vie),Gie=ie([xe],({sdxl:e,ui:t})=>{const{refinerSteps:n}=e,{shouldUseSliders:r}=t;return{refinerSteps:n,shouldUseSliders:r}},we),Kie=()=>{const{refinerSteps:e,shouldUseSliders:t}=L(Gie),n=al(),r=ee(),{t:o}=Z(),s=d.useCallback(l=>{r(a1(l))},[r]),i=d.useCallback(()=>{r(a1(20))},[r]);return t?a.jsx(Xe,{label:o("sdxl.steps"),min:1,max:100,step:1,onChange:s,handleReset:i,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:500},isDisabled:!n}):a.jsx(Gc,{label:o("sdxl.steps"),min:1,max:500,step:1,onChange:s,value:e,numberInputFieldProps:{textAlign:"center"},isDisabled:!n})},qie=d.memo(Kie);function Xie(){const e=L(s=>s.sdxl.shouldUseSDXLRefiner),t=al(),n=ee(),{t:r}=Z(),o=s=>{n(nA(s.target.checked))};return a.jsx(Vt,{label:r("sdxl.useRefiner"),isChecked:e,onChange:o,isDisabled:!t})}const Yie=ie(xe,e=>{const{shouldUseSDXLRefiner:t}=e.sdxl,{shouldUseSliders:n}=e.ui;return{activeLabel:t?"Enabled":void 0,shouldUseSliders:n}},we),Qie=()=>{const{activeLabel:e,shouldUseSliders:t}=L(Yie),{t:n}=Z();return a.jsx(hr,{label:n("sdxl.refiner"),activeLabel:e,children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(Xie,{}),a.jsx(Rie,{}),a.jsxs($,{gap:2,flexDirection:t?"column":"row",children:[a.jsx(qie,{}),a.jsx(Eie,{})]}),a.jsx(Hie,{}),a.jsx(zie,{}),a.jsx(Tie,{}),a.jsx(Uie,{})]})})},Hy=d.memo(Qie),Zie=ie([xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:l}=t.sd.guidance,{cfgScale:u}=e,{shouldUseSliders:p}=n,{shift:h}=r;return{cfgScale:u,initial:o,min:s,sliderMax:i,inputMax:l,shouldUseSliders:p,shift:h}},we),Jie=()=>{const{cfgScale:e,initial:t,min:n,sliderMax:r,inputMax:o,shouldUseSliders:s,shift:i}=L(Zie),l=ee(),{t:u}=Z(),p=d.useCallback(m=>l(Gp(m)),[l]),h=d.useCallback(()=>l(Gp(t)),[l,t]);return s?a.jsx(Xe,{label:u("parameters.cfgScale"),step:i?.1:.5,min:n,max:r,onChange:p,handleReset:h,value:e,sliderNumberInputProps:{max:o},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1}):a.jsx(Gc,{label:u("parameters.cfgScale"),step:.5,min:n,max:o,onChange:p,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"}})},xs=d.memo(Jie),ele=ie([xe],e=>{const{initial:t,min:n,sliderMax:r,inputMax:o,fineStep:s,coarseStep:i}=e.config.sd.iterations,{iterations:l}=e.generation,{shouldUseSliders:u}=e.ui,p=e.dynamicPrompts.isEnabled&&e.dynamicPrompts.combinatorial,h=e.hotkeys.shift?s:i;return{iterations:l,initial:t,min:n,sliderMax:r,inputMax:o,step:h,shouldUseSliders:u,isDisabled:p}},we),tle=()=>{const{iterations:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i,isDisabled:l}=L(ele),u=ee(),{t:p}=Z(),h=d.useCallback(v=>{u(rw(v))},[u]),m=d.useCallback(()=>{u(rw(t))},[u,t]);return i?a.jsx(Xe,{isDisabled:l,label:p("parameters.images"),step:s,min:n,max:r,onChange:h,handleReset:m,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Gc,{isDisabled:l,label:p("parameters.images"),step:s,min:n,max:o,onChange:h,value:e,numberInputFieldProps:{textAlign:"center"}})},ys=d.memo(tle),nle=ie(xe,e=>({model:e.generation.model}),we),rle=()=>{const e=ee(),{t}=Z(),{model:n}=L(nle),r=Xt("syncModels").isFeatureEnabled,{data:o,isLoading:s}=Bo(ow),{data:i,isLoading:l}=Yu(ow),u=L(wn),p=d.useMemo(()=>{if(!o)return[];const v=[];return Pn(o.entities,(b,y)=>{b&&v.push({value:y,label:b.model_name,group:on[b.base_model]})}),Pn(i==null?void 0:i.entities,(b,y)=>{!b||u==="unifiedCanvas"||u==="img2img"||v.push({value:y,label:b.model_name,group:on[b.base_model]})}),v},[o,i,u]),h=d.useMemo(()=>((o==null?void 0:o.entities[`${n==null?void 0:n.base_model}/main/${n==null?void 0:n.model_name}`])||(i==null?void 0:i.entities[`${n==null?void 0:n.base_model}/onnx/${n==null?void 0:n.model_name}`]))??null,[o==null?void 0:o.entities,n,i==null?void 0:i.entities]),m=d.useCallback(v=>{if(!v)return;const b=Pg(v);b&&e(o1(b))},[e]);return s||l?a.jsx(Kt,{label:t("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:3,children:[a.jsx(Kt,{tooltip:h==null?void 0:h.description,label:t("modelManager.model"),value:h==null?void 0:h.id,placeholder:p.length>0?"Select a model":"No models available",data:p,error:p.length===0,disabled:p.length===0,onChange:m,w:"100%"}),r&&a.jsx(Ie,{mt:7,children:a.jsx(Uc,{iconMode:!0})})]})},ole=d.memo(rle),sle=ie(xe,({generation:e})=>{const{model:t,vae:n}=e;return{model:t,vae:n}},we),ale=()=>{const e=ee(),{t}=Z(),{model:n,vae:r}=L(sle),{data:o}=n5(),s=d.useMemo(()=>{if(!o)return[];const u=[{value:"default",label:"Default",group:"Default"}];return Pn(o.entities,(p,h)=>{if(!p)return;const m=(n==null?void 0:n.base_model)!==p.base_model;u.push({value:h,label:p.model_name,group:on[p.base_model],disabled:m,tooltip:m?`Incompatible base model: ${p.base_model}`:void 0})}),u.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,n==null?void 0:n.base_model]),i=d.useMemo(()=>(o==null?void 0:o.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[o==null?void 0:o.entities,r]),l=d.useCallback(u=>{if(!u||u==="default"){e(sw(null));return}const p=SO(u);p&&e(sw(p))},[e]);return a.jsx(Kt,{itemComponent:ri,tooltip:i==null?void 0:i.description,label:t("modelManager.vae"),value:(i==null?void 0:i.id)??"default",placeholder:"Default",data:s,onChange:l,disabled:s.length===0,clearable:!0})},ile=d.memo(ale),lle=ie([qb,qr],(e,t)=>{const{scheduler:n}=t,{favoriteSchedulers:r}=e,o=rr(hm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{scheduler:n,data:o}},we),cle=()=>{const e=ee(),{t}=Z(),{scheduler:n,data:r}=L(lle),o=d.useCallback(s=>{s&&e(s1(s))},[e]);return a.jsx(Kt,{label:t("parameters.scheduler"),value:n,data:r,onChange:o})},ule=d.memo(cle),dle=ie(xe,({generation:e})=>{const{vaePrecision:t}=e;return{vaePrecision:t}},we),fle=["fp16","fp32"],ple=()=>{const e=ee(),{vaePrecision:t}=L(dle),n=d.useCallback(r=>{r&&e(rA(r))},[e]);return a.jsx(In,{label:"VAE Precision",value:t,data:fle,onChange:n})},hle=d.memo(ple),mle=()=>{const e=Xt("vae").isFeatureEnabled;return a.jsxs($,{gap:3,w:"full",flexWrap:e?"wrap":"nowrap",children:[a.jsx(Ie,{w:"full",children:a.jsx(ole,{})}),a.jsx(Ie,{w:"full",children:a.jsx(ule,{})}),e&&a.jsxs($,{w:"full",gap:3,children:[a.jsx(ile,{}),a.jsx(hle,{})]})]})},Cs=d.memo(mle),EO=[{name:"Free",value:null},{name:"2:3",value:2/3},{name:"16:9",value:16/9},{name:"1:1",value:1/1}],MO=EO.map(e=>e.value);function OO(){const e=L(o=>o.generation.aspectRatio),t=ee(),n=L(o=>o.generation.shouldFitToWidthHeight),r=L(wn);return a.jsx($,{gap:2,flexGrow:1,children:a.jsx(mn,{isAttached:!0,children:EO.map(o=>a.jsx(it,{size:"sm",isChecked:e===o.value,isDisabled:r==="img2img"?!n:!1,onClick:()=>{t(Do(o.value)),t(Qu(!1))},children:o.name},o.name))})})}const gle=ie([xe],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:l}=n.sd.height,{model:u,height:p}=e,{aspectRatio:h}=e,m=t.shift?i:l;return{model:u,height:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},we),vle=e=>{const{model:t,height:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:l}=L(gle),u=ee(),{t:p}=Z(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=d.useCallback(b=>{if(u($i(b)),l){const y=fr(b*l,8);u(Ti(y))}},[u,l]),v=d.useCallback(()=>{if(u($i(h)),l){const b=fr(h*l,8);u(Ti(b))}},[u,h,l]);return a.jsx(Xe,{label:p("parameters.height"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},ble=d.memo(vle),xle=ie([xe],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:l}=n.sd.width,{model:u,width:p,aspectRatio:h}=e,m=t.shift?i:l;return{model:u,width:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},we),yle=e=>{const{model:t,width:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:l}=L(xle),u=ee(),{t:p}=Z(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=d.useCallback(b=>{if(u(Ti(b)),l){const y=fr(b/l,8);u($i(y))}},[u,l]),v=d.useCallback(()=>{if(u(Ti(h)),l){const b=fr(h/l,8);u($i(b))}},[u,h,l]);return a.jsx(Xe,{label:p("parameters.width"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},Cle=d.memo(yle),wle=ie([qr,wn],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}=e;return{activeTabName:t,shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}});function Oc(){const{t:e}=Z(),t=ee(),{activeTabName:n,shouldFitToWidthHeight:r,shouldLockAspectRatio:o,width:s,height:i}=L(wle),l=d.useCallback(()=>{o?(t(Qu(!1)),MO.includes(s/i)?t(Do(s/i)):t(Do(null))):(t(Qu(!0)),t(Do(s/i)))},[o,s,i,t]),u=d.useCallback(()=>{t(oA()),t(Do(null)),o&&t(Do(i/s))},[t,o,s,i]);return a.jsxs($,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[a.jsxs($,{alignItems:"center",gap:2,children:[a.jsx(ye,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:e("parameters.aspectRatio")}),a.jsx(Za,{}),a.jsx(OO,{}),a.jsx(Te,{tooltip:e("ui.swapSizes"),"aria-label":e("ui.swapSizes"),size:"sm",icon:a.jsx(VM,{}),fontSize:20,isDisabled:n==="img2img"?!r:!1,onClick:u}),a.jsx(Te,{tooltip:e("ui.lockRatio"),"aria-label":e("ui.lockRatio"),size:"sm",icon:a.jsx(LE,{}),isChecked:o,isDisabled:n==="img2img"?!r:!1,onClick:l})]}),a.jsx($,{gap:2,alignItems:"center",children:a.jsxs($,{gap:2,flexDirection:"column",width:"full",children:[a.jsx(Cle,{isDisabled:n==="img2img"?!r:!1}),a.jsx(ble,{isDisabled:n==="img2img"?!r:!1})]})})]})}const Sle=ie([xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:l,fineStep:u,coarseStep:p}=t.sd.steps,{steps:h}=e,{shouldUseSliders:m}=n,v=r.shift?u:p;return{steps:h,initial:o,min:s,sliderMax:i,inputMax:l,step:v,shouldUseSliders:m}},we),kle=()=>{const{steps:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i}=L(Sle),l=ee(),{t:u}=Z(),p=d.useCallback(v=>{l(Kp(v))},[l]),h=d.useCallback(()=>{l(Kp(t))},[l,t]),m=d.useCallback(()=>{l(wd())},[l]);return i?a.jsx(Xe,{label:u("parameters.steps"),min:n,max:r,step:s,onChange:p,handleReset:h,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Gc,{label:u("parameters.steps"),min:n,max:o,step:s,onChange:p,value:e,numberInputFieldProps:{textAlign:"center"},onBlur:m})},ws=d.memo(kle);function DO(){const e=ee(),t=L(o=>o.generation.shouldFitToWidthHeight),n=o=>e(sA(o.target.checked)),{t:r}=Z();return a.jsx(Vt,{label:r("parameters.imageFit"),isChecked:t,onChange:n})}function _le(){const e=L(i=>i.generation.seed),t=L(i=>i.generation.shouldRandomizeSeed),n=L(i=>i.generation.shouldGenerateVariations),{t:r}=Z(),o=ee(),s=i=>o(Up(i));return a.jsx(Gc,{label:r("parameters.seed"),step:1,precision:0,flexGrow:1,min:i5,max:l5,isDisabled:t,isInvalid:e<0&&n,onChange:s,value:e})}const jle=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function Ple(){const e=ee(),t=L(o=>o.generation.shouldRandomizeSeed),{t:n}=Z(),r=()=>e(Up(jle(i5,l5)));return a.jsx(Te,{size:"sm",isDisabled:t,"aria-label":n("parameters.shuffle"),tooltip:n("parameters.shuffle"),onClick:r,icon:a.jsx(GZ,{})})}const Ile=()=>{const e=ee(),{t}=Z(),n=L(o=>o.generation.shouldRandomizeSeed),r=o=>e(aA(o.target.checked));return a.jsx(Vt,{label:t("common.random"),isChecked:n,onChange:r})},Ele=d.memo(Ile),Mle=()=>a.jsxs($,{sx:{gap:3,alignItems:"flex-end"},children:[a.jsx(_le,{}),a.jsx(Ple,{}),a.jsx(Ele,{})]}),Ss=d.memo(Mle),RO=e=>a.jsxs($,{sx:{flexDir:"column",gap:2,bg:"base.100",px:4,pt:2,pb:4,borderRadius:"base",_dark:{bg:"base.750"}},children:[e.label&&a.jsx(ye,{fontSize:"sm",fontWeight:"bold",sx:{color:"base.600",_dark:{color:"base.300"}},children:e.label}),e.children]});RO.displayName="SubSettingsWrapper";const Dc=d.memo(RO),Ole=ie([xe],({sdxl:e})=>{const{sdxlImg2ImgDenoisingStrength:t}=e;return{sdxlImg2ImgDenoisingStrength:t}},we),Dle=()=>{const{sdxlImg2ImgDenoisingStrength:e}=L(Ole),t=ee(),{t:n}=Z(),r=d.useCallback(s=>t(aw(s)),[t]),o=d.useCallback(()=>{t(aw(.7))},[t]);return a.jsx(Dc,{children:a.jsx(Xe,{label:n("sdxl.denoisingStrength"),step:.01,min:0,max:1,onChange:r,handleReset:o,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0})})},AO=d.memo(Dle),Rle=ie([qb,qr],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),Ale=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Rle);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}),a.jsx(AO,{}),a.jsx(DO,{})]})})},Nle=d.memo(Ale),Tle=()=>a.jsxs(a.Fragment,{children:[a.jsx(By,{}),a.jsx(Nle,{}),a.jsx(Hy,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Yc,{})]}),$le=d.memo(Tle),Lle=ie(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),zle=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Lle);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsx($,{sx:{flexDirection:"column",gap:3},children:e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]})})})},NO=d.memo(zle),Fle=()=>a.jsxs(a.Fragment,{children:[a.jsx(By,{}),a.jsx(NO,{}),a.jsx(Hy,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Yc,{})]}),Ble=d.memo(Fle),Hle=[{label:"Unmasked",value:"unmasked"},{label:"Mask",value:"mask"},{label:"Mask Edge",value:"edge"}],Wle=()=>{const e=ee(),t=L(o=>o.generation.canvasCoherenceMode),{t:n}=Z(),r=o=>{o&&e(iA(o))};return a.jsx(In,{label:n("parameters.coherenceMode"),data:Hle,value:t,onChange:r})},Vle=d.memo(Wle),Ule=()=>{const e=ee(),t=L(r=>r.generation.canvasCoherenceSteps),{t:n}=Z();return a.jsx(Xe,{label:n("parameters.coherenceSteps"),min:1,max:100,step:1,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(iw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(iw(20))}})},Gle=d.memo(Ule),Kle=()=>{const e=ee(),t=L(r=>r.generation.canvasCoherenceStrength),{t:n}=Z();return a.jsx(Xe,{label:n("parameters.coherenceStrength"),min:0,max:1,step:.01,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(lw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(lw(.3))}})},qle=d.memo(Kle);function Xle(){const e=ee(),t=L(r=>r.generation.maskBlur),{t:n}=Z();return a.jsx(Xe,{label:n("parameters.maskBlur"),min:0,max:64,sliderNumberInputProps:{max:512},value:t,onChange:r=>{e(cw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(cw(16))}})}const Yle=[{label:"Box Blur",value:"box"},{label:"Gaussian Blur",value:"gaussian"}];function Qle(){const e=L(o=>o.generation.maskBlurMethod),t=ee(),{t:n}=Z(),r=o=>{o&&t(lA(o))};return a.jsx(In,{value:e,onChange:r,label:n("parameters.maskBlurMethod"),data:Yle})}const Zle=()=>{const{t:e}=Z();return a.jsx(hr,{label:e("parameters.compositingSettingsHeader"),children:a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsxs(Dc,{label:e("parameters.coherencePassHeader"),children:[a.jsx(Vle,{}),a.jsx(Gle,{}),a.jsx(qle,{})]}),a.jsx(Vr,{}),a.jsxs(Dc,{label:e("parameters.maskAdjustmentsHeader"),children:[a.jsx(Xle,{}),a.jsx(Qle,{})]})]})})},TO=d.memo(Zle),Jle=ie([xe],({generation:e})=>{const{infillMethod:t}=e;return{infillMethod:t}},we),ece=()=>{const e=ee(),{infillMethod:t}=L(Jle),{data:n,isLoading:r}=Hj(),o=n==null?void 0:n.infill_methods,{t:s}=Z(),i=d.useCallback(l=>{e(cA(l))},[e]);return a.jsx(In,{disabled:(o==null?void 0:o.length)===0,placeholder:r?"Loading...":void 0,label:s("parameters.infillMethod"),value:t,data:o??[],onChange:i})},tce=d.memo(ece),nce=ie([qr],e=>{const{infillPatchmatchDownscaleSize:t,infillMethod:n}=e;return{infillPatchmatchDownscaleSize:t,infillMethod:n}},we),rce=()=>{const e=ee(),{infillPatchmatchDownscaleSize:t,infillMethod:n}=L(nce),{t:r}=Z(),o=d.useCallback(i=>{e(uw(i))},[e]),s=d.useCallback(()=>{e(uw(2))},[e]);return a.jsx(Xe,{isDisabled:n!=="patchmatch",label:r("parameters.patchmatchDownScaleSize"),min:1,max:10,value:t,onChange:o,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:s})},oce=d.memo(rce),sce=ie([qr],e=>{const{infillTileSize:t,infillMethod:n}=e;return{infillTileSize:t,infillMethod:n}},we),ace=()=>{const e=ee(),{infillTileSize:t,infillMethod:n}=L(sce),{t:r}=Z(),o=d.useCallback(i=>{e(dw(i))},[e]),s=d.useCallback(()=>{e(dw(32))},[e]);return a.jsx(Xe,{isDisabled:n!=="tile",label:r("parameters.tileSize"),min:16,max:64,sliderNumberInputProps:{max:256},value:t,onChange:o,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:s})},ice=d.memo(ace),lce=ie([qr],e=>{const{infillMethod:t}=e;return{infillMethod:t}},we);function cce(){const{infillMethod:e}=L(lce);return a.jsxs($,{children:[e==="tile"&&a.jsx(ice,{}),e==="patchmatch"&&a.jsx(oce,{})]})}const Lt=e=>e.canvas,Co=ie([Lt,wn,xo],(e,t,n)=>e.layerState.stagingArea.images.length>0||t==="unifiedCanvas"&&n.isProcessing),uce=ie([Lt],e=>{const{boundingBoxScaleMethod:t}=e;return{boundingBoxScale:t}},we),dce=()=>{const e=ee(),{boundingBoxScale:t}=L(uce),{t:n}=Z(),r=o=>{e(dA(o))};return a.jsx(Kt,{label:n("parameters.scaleBeforeProcessing"),data:uA,value:t,onChange:r})},fce=d.memo(dce),pce=ie([qr,Lt],(e,t)=>{const{scaledBoundingBoxDimensions:n,boundingBoxScaleMethod:r}=t,{model:o,aspectRatio:s}=e;return{model:o,scaledBoundingBoxDimensions:n,isManual:r==="manual",aspectRatio:s}},we),hce=()=>{const e=ee(),{model:t,isManual:n,scaledBoundingBoxDimensions:r,aspectRatio:o}=L(pce),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=Z(),l=p=>{let h=r.width;const m=Math.floor(p);o&&(h=fr(m*o,64)),e(Xp({width:h,height:m}))},u=()=>{let p=r.width;const h=Math.floor(s);o&&(p=fr(h*o,64)),e(Xp({width:p,height:h}))};return a.jsx(Xe,{isDisabled:!n,label:i("parameters.scaledHeight"),min:64,max:1536,step:64,value:r.height,onChange:l,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},mce=d.memo(hce),gce=ie([Lt,qr],(e,t)=>{const{boundingBoxScaleMethod:n,scaledBoundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,scaledBoundingBoxDimensions:r,aspectRatio:s,isManual:n==="manual"}},we),vce=()=>{const e=ee(),{model:t,isManual:n,scaledBoundingBoxDimensions:r,aspectRatio:o}=L(gce),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=Z(),l=p=>{const h=Math.floor(p);let m=r.height;o&&(m=fr(h/o,64)),e(Xp({width:h,height:m}))},u=()=>{const p=Math.floor(s);let h=r.height;o&&(h=fr(p/o,64)),e(Xp({width:p,height:h}))};return a.jsx(Xe,{isDisabled:!n,label:i("parameters.scaledWidth"),min:64,max:1536,step:64,value:r.width,onChange:l,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},bce=d.memo(vce),xce=()=>{const{t:e}=Z();return a.jsx(hr,{label:e("parameters.infillScalingHeader"),children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsxs(Dc,{children:[a.jsx(tce,{}),a.jsx(cce,{})]}),a.jsx(Vr,{}),a.jsxs(Dc,{children:[a.jsx(fce,{}),a.jsx(bce,{}),a.jsx(mce,{})]})]})})},$O=d.memo(xce),yce=ie([xe,Co],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},we),Cce=()=>{const e=ee(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=L(yce),{t:s}=Z(),i=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,l=p=>{if(e(No({...n,height:Math.floor(p)})),o){const h=fr(p*o,64);e(No({width:h,height:Math.floor(p)}))}},u=()=>{if(e(No({...n,height:Math.floor(i)})),o){const p=fr(i*o,64);e(No({width:p,height:Math.floor(i)}))}};return a.jsx(Xe,{label:s("parameters.boundingBoxHeight"),min:64,max:1536,step:64,value:n.height,onChange:l,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},wce=d.memo(Cce),Sce=ie([xe,Co],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},we),kce=()=>{const e=ee(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=L(Sce),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=Z(),l=p=>{if(e(No({...n,width:Math.floor(p)})),o){const h=fr(p/o,64);e(No({width:Math.floor(p),height:h}))}},u=()=>{if(e(No({...n,width:Math.floor(s)})),o){const p=fr(s/o,64);e(No({width:Math.floor(s),height:p}))}};return a.jsx(Xe,{label:i("parameters.boundingBoxWidth"),min:64,max:1536,step:64,value:n.width,onChange:l,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},_ce=d.memo(kce),jce=ie([qr,Lt],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r}=e,{boundingBoxDimensions:o}=t;return{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,boundingBoxDimensions:o}});function cm(){const e=ee(),{t}=Z(),{shouldLockAspectRatio:n,boundingBoxDimensions:r}=L(jce),o=d.useCallback(()=>{n?(e(Qu(!1)),MO.includes(r.width/r.height)?e(Do(r.width/r.height)):e(Do(null))):(e(Qu(!0)),e(Do(r.width/r.height)))},[n,r,e]),s=d.useCallback(()=>{e(fA()),e(Do(null)),n&&e(Do(r.height/r.width))},[e,n,r]);return a.jsxs($,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.100",_dark:{bg:"base.750"}},children:[a.jsxs($,{alignItems:"center",gap:2,children:[a.jsx(ye,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:t("parameters.aspectRatio")}),a.jsx(Za,{}),a.jsx(OO,{}),a.jsx(Te,{tooltip:t("ui.swapSizes"),"aria-label":t("ui.swapSizes"),size:"sm",icon:a.jsx(VM,{}),fontSize:20,onClick:s}),a.jsx(Te,{tooltip:t("ui.lockRatio"),"aria-label":t("ui.lockRatio"),size:"sm",icon:a.jsx(LE,{}),isChecked:n,onClick:o})]}),a.jsx(_ce,{}),a.jsx(wce,{})]})}const Pce=ie(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),Ice=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Pce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}),a.jsx(AO,{})]})})},Ece=d.memo(Ice);function Mce(){return a.jsxs(a.Fragment,{children:[a.jsx(By,{}),a.jsx(Ece,{}),a.jsx(Hy,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx($O,{}),a.jsx(TO,{}),a.jsx(Yc,{})]})}function Oce(){const e=L(u=>u.generation.clipSkip),{model:t}=L(u=>u.generation),n=ee(),{t:r}=Z(),o=d.useCallback(u=>{n(fw(u))},[n]),s=d.useCallback(()=>{n(fw(0))},[n]),i=d.useMemo(()=>t?qf[t.base_model].maxClip:qf["sd-1"].maxClip,[t]),l=d.useMemo(()=>t?qf[t.base_model].markers:qf["sd-1"].markers,[t]);return a.jsx(Xe,{label:r("parameters.clipSkip"),"aria-label":r("parameters.clipSkip"),min:0,max:i,step:1,value:e,onChange:o,withSliderMarks:!0,sliderMarks:l,withInput:!0,withReset:!0,handleReset:s})}const Dce=ie(xe,e=>({activeLabel:e.generation.clipSkip>0?"Clip Skip":void 0}),we);function Wy(){const{activeLabel:e}=L(Dce),t=L(r=>r.generation.shouldShowAdvancedOptions),{t:n}=Z();return t?a.jsx(hr,{label:n("common.advanced"),activeLabel:e,children:a.jsx($,{sx:{flexDir:"column",gap:2},children:a.jsx(Oce,{})})}):null}function Vy(){return a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(PO,{}),a.jsx(jO,{})]})}function Rce(){const e=L(o=>o.generation.horizontalSymmetrySteps),t=L(o=>o.generation.steps),n=ee(),{t:r}=Z();return a.jsx(Xe,{label:r("parameters.hSymmetryStep"),value:e,onChange:o=>n(pw(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(pw(0))})}function Ace(){const e=L(o=>o.generation.verticalSymmetrySteps),t=L(o=>o.generation.steps),n=ee(),{t:r}=Z();return a.jsx(Xe,{label:r("parameters.vSymmetryStep"),value:e,onChange:o=>n(hw(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(hw(0))})}function Nce(){const e=L(n=>n.generation.shouldUseSymmetry),t=ee();return a.jsx(Vt,{label:"Enable Symmetry",isChecked:e,onChange:n=>t(pA(n.target.checked))})}const Tce=ie(xe,e=>({activeLabel:e.generation.shouldUseSymmetry?"Enabled":void 0}),we),$ce=()=>{const{t:e}=Z(),{activeLabel:t}=L(Tce);return Xt("symmetry").isFeatureEnabled?a.jsx(hr,{label:e("parameters.symmetry"),activeLabel:t,children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(Nce,{}),a.jsx(Rce,{}),a.jsx(Ace,{})]})}):null},Uy=d.memo($ce),Lce=ie([xe],({generation:e,hotkeys:t,config:n})=>{const{initial:r,min:o,sliderMax:s,inputMax:i,fineStep:l,coarseStep:u}=n.sd.img2imgStrength,{img2imgStrength:p}=e,h=t.shift?l:u;return{img2imgStrength:p,initial:r,min:o,sliderMax:s,inputMax:i,step:h}},we),zce=()=>{const{img2imgStrength:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s}=L(Lce),i=ee(),{t:l}=Z(),u=d.useCallback(h=>i(qp(h)),[i]),p=d.useCallback(()=>{i(qp(t))},[i,t]);return a.jsx(Dc,{children:a.jsx(Xe,{label:`${l("parameters.denoisingStrength")}`,step:s,min:n,max:r,onChange:u,handleReset:p,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0,sliderNumberInputProps:{max:o}})})},LO=d.memo(zce),Fce=ie([qb,qr],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),Bce=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Fce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}),a.jsx(LO,{}),a.jsx(DO,{})]})})},Hce=d.memo(Bce),Wce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Vy,{}),a.jsx(Hce,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Uy,{}),a.jsx(Yc,{}),a.jsx(Wy,{})]}),Vce=d.memo(Wce),Uce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Vy,{}),a.jsx(NO,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Uy,{}),a.jsx(Yc,{}),a.jsx(Wy,{})]}),Gce=d.memo(Uce),Kce=ie(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),qce=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Kce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}),a.jsx(LO,{})]})})},Xce=d.memo(qce),Yce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Vy,{}),a.jsx(Xce,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Uy,{}),a.jsx($O,{}),a.jsx(TO,{}),a.jsx(Yc,{}),a.jsx(Wy,{})]}),Qce=d.memo(Yce),Zce=()=>{const e=L(wn),t=L(n=>n.generation.model);return e==="txt2img"?a.jsx(Hp,{children:t&&t.base_model==="sdxl"?a.jsx(Ble,{}):a.jsx(Gce,{})}):e==="img2img"?a.jsx(Hp,{children:t&&t.base_model==="sdxl"?a.jsx($le,{}):a.jsx(Vce,{})}):e==="unifiedCanvas"?a.jsx(Hp,{children:t&&t.base_model==="sdxl"?a.jsx(Mce,{}):a.jsx(Qce,{})}):null},Jce=d.memo(Zce),Hp=d.memo(e=>a.jsxs($,{sx:{w:"full",h:"full",flexDir:"column",gap:2},children:[a.jsx(XM,{}),a.jsx($,{layerStyle:"first",sx:{w:"full",h:"full",position:"relative",borderRadius:"base",p:2},children:a.jsx($,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:800,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:a.jsx($,{sx:{gap:2,flexDirection:"column",h:"full",w:"full"},children:e.children})})})})})]}));Hp.displayName="ParametersPanelWrapper";const eue=ie([xe],e=>{const{initialImage:t}=e.generation;return{initialImage:t,isResetButtonDisabled:!t}},we),tue=()=>{const{initialImage:e}=L(eue),{currentData:t}=Wr((e==null?void 0:e.imageName)??Er.skipToken),n=d.useMemo(()=>{if(t)return{id:"initial-image",payloadType:"IMAGE_DTO",payload:{imageDTO:t}}},[t]),r=d.useMemo(()=>({id:"initial-image",actionType:"SET_INITIAL_IMAGE"}),[]);return a.jsx(oa,{imageDTO:t,droppableData:r,draggableData:n,isUploadDisabled:!0,fitContainer:!0,dropLabel:"Set as Initial Image",noContentFallback:a.jsx(Kn,{label:"No initial image selected"})})},nue=d.memo(tue),rue=ie([xe],e=>{const{initialImage:t}=e.generation;return{isResetButtonDisabled:!t}},we),oue={type:"SET_INITIAL_IMAGE"},sue=()=>{const{isResetButtonDisabled:e}=L(rue),t=ee(),{getUploadButtonProps:n,getUploadInputProps:r}=Iy({postUploadAction:oue}),o=d.useCallback(()=>{t(hA())},[t]);return a.jsxs($,{layerStyle:"first",sx:{position:"relative",flexDirection:"column",height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",p:2,gap:4},children:[a.jsxs($,{sx:{w:"full",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},children:[a.jsx(ye,{sx:{ps:2,fontWeight:600,userSelect:"none",color:"base.700",_dark:{color:"base.200"}},children:"Initial Image"}),a.jsx(Za,{}),a.jsx(Te,{tooltip:"Upload Initial Image","aria-label":"Upload Initial Image",icon:a.jsx(og,{}),...n()}),a.jsx(Te,{tooltip:"Reset Initial Image","aria-label":"Reset Initial Image",icon:a.jsx(Ud,{}),onClick:o,isDisabled:e})]}),a.jsx(nue,{}),a.jsx("input",{...r()})]})},aue=d.memo(sue),iue=ie([xe],({system:e})=>{const{isProcessing:t,isConnected:n}=e;return n&&!t}),lue=e=>{const{onClick:t,isDisabled:n}=e,{t:r}=Z(),o=L(iue);return a.jsx(Te,{onClick:t,icon:a.jsx(Kr,{}),tooltip:`${r("gallery.deleteImage")} (Del)`,"aria-label":`${r("gallery.deleteImage")} (Del)`,isDisabled:n||!o,colorScheme:"error"})},cue=[{label:"RealESRGAN x2 Plus",value:"RealESRGAN_x2plus.pth",tooltip:"Attempts to retain sharpness, low smoothing",group:"x2 Upscalers"},{label:"RealESRGAN x4 Plus",value:"RealESRGAN_x4plus.pth",tooltip:"Best for photos and highly detailed images, medium smoothing",group:"x4 Upscalers"},{label:"RealESRGAN x4 Plus (anime 6B)",value:"RealESRGAN_x4plus_anime_6B.pth",tooltip:"Best for anime/manga, high smoothing",group:"x4 Upscalers"},{label:"ESRGAN SRx4",value:"ESRGAN_SRx4_DF2KOST_official-ff704c30.pth",tooltip:"Retains sharpness, low smoothing",group:"x4 Upscalers"}];function uue(){const e=L(r=>r.postprocessing.esrganModelName),t=ee(),n=r=>t(mA(r));return a.jsx(In,{label:"ESRGAN Model",value:e,itemComponent:ri,onChange:n,data:cue})}const due=e=>{const{imageDTO:t}=e,n=ee(),r=L(En),{t:o}=Z(),{isOpen:s,onOpen:i,onClose:l}=Mr(),u=d.useCallback(()=>{l(),t&&n(c5({image_name:t.image_name}))},[n,t,l]);return a.jsx(qd,{isOpen:s,onClose:l,triggerComponent:a.jsx(Te,{onClick:i,icon:a.jsx(DZ,{}),"aria-label":o("parameters.upscale")}),children:a.jsxs($,{sx:{flexDirection:"column",gap:4},children:[a.jsx(uue,{}),a.jsx(it,{size:"sm",isDisabled:!t||r,onClick:u,children:o("parameters.upscaleImage")})]})})},fue=d.memo(due),pue=ie([xe,wn],({gallery:e,system:t,ui:n,config:r},o)=>{const{isProcessing:s,isConnected:i,shouldConfirmOnDelete:l,progressImage:u}=t,{shouldShowImageDetails:p,shouldHidePreview:h,shouldShowProgressInViewer:m}=n,{shouldFetchMetadataFromApi:v}=r,b=e.selection[e.selection.length-1];return{canDeleteImage:i&&!s,shouldConfirmOnDelete:l,isProcessing:s,isConnected:i,shouldDisableToolbarButtons:!!u||!b,shouldShowImageDetails:p,activeTabName:o,shouldHidePreview:h,shouldShowProgressInViewer:m,lastSelectedImage:b,shouldFetchMetadataFromApi:v}},{memoizeOptions:{resultEqualityCheck:_t}}),hue=e=>{const t=ee(),{isProcessing:n,isConnected:r,shouldDisableToolbarButtons:o,shouldShowImageDetails:s,lastSelectedImage:i,shouldShowProgressInViewer:l,shouldFetchMetadataFromApi:u}=L(pue),p=Xt("upscaling").isFeatureEnabled,h=tl(),{t:m}=Z(),{recallBothPrompts:v,recallSeed:b,recallAllParameters:y}=xg(),{currentData:x}=Wr((i==null?void 0:i.image_name)??Er.skipToken),w=d.useMemo(()=>i?{image:i,shouldFetchMetadataFromApi:u}:Er.skipToken,[i,u]),{metadata:k,workflow:_,isLoading:j}=Fb(w,{selectFromResult:F=>{var V,X;return{isLoading:F.isFetching,metadata:(V=F==null?void 0:F.currentData)==null?void 0:V.metadata,workflow:(X=F==null?void 0:F.currentData)==null?void 0:X.workflow}}}),I=d.useCallback(()=>{_&&t(Wb(_))},[t,_]),E=d.useCallback(()=>{y(k)},[k,y]);Ze("a",()=>{},[k,y]);const M=d.useCallback(()=>{b(k==null?void 0:k.seed)},[k==null?void 0:k.seed,b]);Ze("s",M,[x]);const D=d.useCallback(()=>{v(k==null?void 0:k.positive_prompt,k==null?void 0:k.negative_prompt,k==null?void 0:k.positive_style_prompt,k==null?void 0:k.negative_style_prompt)},[k==null?void 0:k.negative_prompt,k==null?void 0:k.positive_prompt,k==null?void 0:k.positive_style_prompt,k==null?void 0:k.negative_style_prompt,v]);Ze("p",D,[x]),Ze("w",I,[_]);const R=d.useCallback(()=>{t(UM()),t(gm(x))},[t,x]);Ze("shift+i",R,[x]);const A=d.useCallback(()=>{x&&t(c5({image_name:x.image_name}))},[t,x]),O=d.useCallback(()=>{x&&t(vm([x]))},[t,x]);Ze("Shift+U",()=>{A()},{enabled:()=>!!(p&&!o&&r&&!n)},[p,x,o,r,n]);const T=d.useCallback(()=>t(gA(!s)),[t,s]);Ze("i",()=>{x?T():h({title:m("toast.metadataLoadFailed"),status:"error",duration:2500,isClosable:!0})},[x,s,h]),Ze("delete",()=>{O()},[t,x]);const K=d.useCallback(()=>{t(Wj(!l))},[t,l]);return a.jsx(a.Fragment,{children:a.jsxs($,{sx:{flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},...e,children:[a.jsx(mn,{isAttached:!0,isDisabled:o,children:a.jsxs(Nd,{children:[a.jsx(Td,{as:Te,"aria-label":`${m("parameters.sendTo")}...`,tooltip:`${m("parameters.sendTo")}...`,isDisabled:!x,icon:a.jsx(QZ,{})}),a.jsx(Ka,{motionProps:vc,children:x&&a.jsx(GM,{imageDTO:x})})]})}),a.jsxs(mn,{isAttached:!0,isDisabled:o,children:[a.jsx(Te,{isLoading:j,icon:a.jsx(yg,{}),tooltip:`${m("nodes.loadWorkflow")} (W)`,"aria-label":`${m("nodes.loadWorkflow")} (W)`,isDisabled:!_,onClick:I}),a.jsx(Te,{isLoading:j,icon:a.jsx(FE,{}),tooltip:`${m("parameters.usePrompt")} (P)`,"aria-label":`${m("parameters.usePrompt")} (P)`,isDisabled:!(k!=null&&k.positive_prompt),onClick:D}),a.jsx(Te,{isLoading:j,icon:a.jsx(BE,{}),tooltip:`${m("parameters.useSeed")} (S)`,"aria-label":`${m("parameters.useSeed")} (S)`,isDisabled:!(k!=null&&k.seed),onClick:M}),a.jsx(Te,{isLoading:j,icon:a.jsx(ME,{}),tooltip:`${m("parameters.useAll")} (A)`,"aria-label":`${m("parameters.useAll")} (A)`,isDisabled:!k,onClick:E})]}),p&&a.jsx(mn,{isAttached:!0,isDisabled:o,children:p&&a.jsx(fue,{imageDTO:x})}),a.jsx(mn,{isAttached:!0,isDisabled:o,children:a.jsx(Te,{icon:a.jsx(DE,{}),tooltip:`${m("parameters.info")} (I)`,"aria-label":`${m("parameters.info")} (I)`,isChecked:s,onClick:T})}),a.jsx(mn,{isAttached:!0,children:a.jsx(Te,{"aria-label":m("settings.displayInProgress"),tooltip:m("settings.displayInProgress"),icon:a.jsx(zZ,{}),isChecked:l,onClick:K})}),a.jsx(mn,{isAttached:!0,children:a.jsx(lue,{onClick:O,isDisabled:o})})]})})},mue=d.memo(hue),gue=ie([xe,Vb],(e,t)=>{var _,j;const{data:n,status:r}=vA.endpoints.listImages.select(t)(e),{data:o}=e.gallery.galleryView==="images"?mw.endpoints.getBoardImagesTotal.select(t.board_id??"none")(e):mw.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(e),s=e.gallery.selection[e.gallery.selection.length-1],i=r==="pending";if(!n||!s||o===0)return{isFetching:i,queryArgs:t,isOnFirstImage:!0,isOnLastImage:!0};const l={...t,offset:n.ids.length,limit:e5},u=bA.getSelectors(),p=u.selectAll(n),h=p.findIndex(I=>I.image_name===s.image_name),m=Ni(h+1,0,p.length-1),v=Ni(h-1,0,p.length-1),b=(_=p[m])==null?void 0:_.image_name,y=(j=p[v])==null?void 0:j.image_name,x=b?u.selectById(n,b):void 0,w=y?u.selectById(n,y):void 0,k=p.length;return{loadedImagesCount:p.length,currentImageIndex:h,areMoreImagesAvailable:(o??0)>k,isFetching:r==="pending",nextImage:x,prevImage:w,queryArgs:l}},{memoizeOptions:{resultEqualityCheck:_t}}),zO=()=>{const e=ee(),{nextImage:t,prevImage:n,areMoreImagesAvailable:r,isFetching:o,queryArgs:s,loadedImagesCount:i,currentImageIndex:l}=L(gue),u=d.useCallback(()=>{n&&e(gw(n))},[e,n]),p=d.useCallback(()=>{t&&e(gw(t))},[e,t]),[h]=Jj(),m=d.useCallback(()=>{h(s)},[h,s]);return{handlePrevImage:u,handleNextImage:p,isOnFirstImage:l===0,isOnLastImage:l!==void 0&&l===i-1,nextImage:t,prevImage:n,areMoreImagesAvailable:r,handleLoadMoreImages:m,isFetching:o}};function vue(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M245.09 327.74v-37.32c57.07 0 84.51 13.47 108.58 38.68 5.4 5.65 15 1.32 14.29-6.43-5.45-61.45-34.14-117.09-122.87-117.09v-37.32a8.32 8.32 0 00-14.05-6L146.58 242a8.2 8.2 0 000 11.94L231 333.71a8.32 8.32 0 0014.09-5.97z"}},{tag:"path",attr:{fill:"none",strokeMiterlimit:"10",strokeWidth:"32",d:"M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z"}}]})(e)}const bue=({label:e,value:t,onClick:n,isLink:r,labelPosition:o,withCopy:s=!1})=>{const{t:i}=Z();return t?a.jsxs($,{gap:2,children:[n&&a.jsx(Rt,{label:`Recall ${e}`,children:a.jsx(ps,{"aria-label":i("accessibility.useThisParameter"),icon:a.jsx(vue,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),s&&a.jsx(Rt,{label:`Copy ${e}`,children:a.jsx(ps,{"aria-label":`Copy ${e}`,icon:a.jsx(Wc,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(t.toString())})}),a.jsxs($,{direction:o?"column":"row",children:[a.jsxs(ye,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?a.jsxs(Mm,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",a.jsx(CM,{mx:"2px"})]}):a.jsx(ye,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}):null},$r=d.memo(bue),xue=e=>{const{metadata:t}=e,{t:n}=Z(),{recallPositivePrompt:r,recallNegativePrompt:o,recallSeed:s,recallCfgScale:i,recallModel:l,recallScheduler:u,recallSteps:p,recallWidth:h,recallHeight:m,recallStrength:v,recallLoRA:b}=xg(),y=d.useCallback(()=>{r(t==null?void 0:t.positive_prompt)},[t==null?void 0:t.positive_prompt,r]),x=d.useCallback(()=>{o(t==null?void 0:t.negative_prompt)},[t==null?void 0:t.negative_prompt,o]),w=d.useCallback(()=>{s(t==null?void 0:t.seed)},[t==null?void 0:t.seed,s]),k=d.useCallback(()=>{l(t==null?void 0:t.model)},[t==null?void 0:t.model,l]),_=d.useCallback(()=>{h(t==null?void 0:t.width)},[t==null?void 0:t.width,h]),j=d.useCallback(()=>{m(t==null?void 0:t.height)},[t==null?void 0:t.height,m]),I=d.useCallback(()=>{u(t==null?void 0:t.scheduler)},[t==null?void 0:t.scheduler,u]),E=d.useCallback(()=>{p(t==null?void 0:t.steps)},[t==null?void 0:t.steps,p]),M=d.useCallback(()=>{i(t==null?void 0:t.cfg_scale)},[t==null?void 0:t.cfg_scale,i]),D=d.useCallback(()=>{v(t==null?void 0:t.strength)},[t==null?void 0:t.strength,v]),R=d.useCallback(A=>{b(A)},[b]);return!t||Object.keys(t).length===0?null:a.jsxs(a.Fragment,{children:[t.created_by&&a.jsx($r,{label:n("metadata.createdBy"),value:t.created_by}),t.generation_mode&&a.jsx($r,{label:n("metadata.generationMode"),value:t.generation_mode}),t.positive_prompt&&a.jsx($r,{label:n("metadata.positivePrompt"),labelPosition:"top",value:t.positive_prompt,onClick:y}),t.negative_prompt&&a.jsx($r,{label:n("metadata.NegativePrompt"),labelPosition:"top",value:t.negative_prompt,onClick:x}),t.seed!==void 0&&t.seed!==null&&a.jsx($r,{label:n("metadata.seed"),value:t.seed,onClick:w}),t.model!==void 0&&t.model!==null&&t.model.model_name&&a.jsx($r,{label:n("metadata.model"),value:t.model.model_name,onClick:k}),t.width&&a.jsx($r,{label:n("metadata.width"),value:t.width,onClick:_}),t.height&&a.jsx($r,{label:n("metadata.height"),value:t.height,onClick:j}),t.scheduler&&a.jsx($r,{label:n("metadata.scheduler"),value:t.scheduler,onClick:I}),t.steps&&a.jsx($r,{label:n("metadata.steps"),value:t.steps,onClick:E}),t.cfg_scale!==void 0&&t.cfg_scale!==null&&a.jsx($r,{label:n("metadata.cfgScale"),value:t.cfg_scale,onClick:M}),t.strength&&a.jsx($r,{label:n("metadata.strength"),value:t.strength,onClick:D}),t.loras&&t.loras.map((A,O)=>{if(Kj(A.lora))return a.jsx($r,{label:"LoRA",value:`${A.lora.model_name} - ${A.weight}`,onClick:()=>R(A)},O)})]})},yue=d.memo(xue),Cue=({image:e})=>{const{t}=Z(),{shouldFetchMetadataFromApi:n}=L(Oy),{metadata:r,workflow:o}=Fb({image:e,shouldFetchMetadataFromApi:n},{selectFromResult:s=>{var i,l;return{metadata:(i=s==null?void 0:s.currentData)==null?void 0:i.metadata,workflow:(l=s==null?void 0:s.currentData)==null?void 0:l.workflow}}});return a.jsxs($,{layerStyle:"first",sx:{padding:4,gap:1,flexDirection:"column",width:"full",height:"full",borderRadius:"base",position:"absolute",overflow:"hidden"},children:[a.jsxs($,{gap:2,children:[a.jsx(ye,{fontWeight:"semibold",children:"File:"}),a.jsxs(Mm,{href:e.image_url,isExternal:!0,maxW:"calc(100% - 3rem)",children:[e.image_name,a.jsx(CM,{mx:"2px"})]})]}),a.jsx(yue,{metadata:r}),a.jsxs(Ji,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(el,{children:[a.jsx(Pr,{children:t("metadata.metadata")}),a.jsx(Pr,{children:t("metadata.imageDetails")}),a.jsx(Pr,{children:t("metadata.workflow")})]}),a.jsxs(Fc,{children:[a.jsx(mo,{children:r?a.jsx(Ri,{data:r,label:t("metadata.metadata")}):a.jsx(Kn,{label:t("metadata.noMetaData")})}),a.jsx(mo,{children:e?a.jsx(Ri,{data:e,label:t("metadata.imageDetails")}):a.jsx(Kn,{label:t("metadata.noImageDetails")})}),a.jsx(mo,{children:o?a.jsx(Ri,{data:o,label:t("metadata.workflow")}):a.jsx(Kn,{label:t("metadata.noWorkFlow")})})]})]})]})},wue=d.memo(Cue),Kv={color:"base.100",pointerEvents:"auto"},Sue=()=>{const{t:e}=Z(),{handlePrevImage:t,handleNextImage:n,isOnFirstImage:r,isOnLastImage:o,handleLoadMoreImages:s,areMoreImagesAvailable:i,isFetching:l}=zO();return a.jsxs(Ie,{sx:{position:"relative",height:"100%",width:"100%"},children:[a.jsx(Ie,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineStart:0},children:!r&&a.jsx(ps,{"aria-label":e("accessibility.previousImage"),icon:a.jsx(bZ,{size:64}),variant:"unstyled",onClick:t,boxSize:16,sx:Kv})}),a.jsxs(Ie,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineEnd:0},children:[!o&&a.jsx(ps,{"aria-label":e("accessibility.nextImage"),icon:a.jsx(xZ,{size:64}),variant:"unstyled",onClick:n,boxSize:16,sx:Kv}),o&&i&&!l&&a.jsx(ps,{"aria-label":e("accessibility.loadMore"),icon:a.jsx(vZ,{size:64}),variant:"unstyled",onClick:s,boxSize:16,sx:Kv}),o&&i&&l&&a.jsx($,{sx:{w:16,h:16,alignItems:"center",justifyContent:"center"},children:a.jsx(Xi,{opacity:.5,size:"xl"})})]})]})},FO=d.memo(Sue),kue=ie([xe,xA],({ui:e,system:t},n)=>{const{shouldShowImageDetails:r,shouldHidePreview:o,shouldShowProgressInViewer:s}=e,{progressImage:i,shouldAntialiasProgressImage:l}=t;return{shouldShowImageDetails:r,shouldHidePreview:o,imageName:n==null?void 0:n.image_name,progressImage:i,shouldShowProgressInViewer:s,shouldAntialiasProgressImage:l}},{memoizeOptions:{resultEqualityCheck:_t}}),_ue=()=>{const{shouldShowImageDetails:e,imageName:t,progressImage:n,shouldShowProgressInViewer:r,shouldAntialiasProgressImage:o}=L(kue),{handlePrevImage:s,handleNextImage:i,isOnLastImage:l,handleLoadMoreImages:u,areMoreImagesAvailable:p,isFetching:h}=zO();Ze("left",()=>{s()},[s]),Ze("right",()=>{if(l&&p&&!h){u();return}l||i()},[l,p,u,h,i]);const{currentData:m}=Wr(t??Er.skipToken),v=d.useMemo(()=>{if(m)return{id:"current-image",payloadType:"IMAGE_DTO",payload:{imageDTO:m}}},[m]),b=d.useMemo(()=>({id:"current-image",actionType:"SET_CURRENT_IMAGE"}),[]),[y,x]=d.useState(!1),w=d.useRef(0),{t:k}=Z(),_=d.useCallback(()=>{x(!0),window.clearTimeout(w.current)},[]),j=d.useCallback(()=>{w.current=window.setTimeout(()=>{x(!1)},500)},[]);return a.jsxs($,{onMouseOver:_,onMouseOut:j,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative"},children:[n&&r?a.jsx(Qi,{src:n.dataURL,width:n.width,height:n.height,draggable:!1,sx:{objectFit:"contain",maxWidth:"full",maxHeight:"full",height:"auto",position:"absolute",borderRadius:"base",imageRendering:o?"auto":"pixelated"}}):a.jsx(oa,{imageDTO:m,droppableData:b,draggableData:v,isUploadDisabled:!0,fitContainer:!0,useThumbailFallback:!0,dropLabel:k("gallery.setCurrentImage"),noContentFallback:a.jsx(Kn,{icon:Ui,label:"No image selected"})}),e&&m&&a.jsx(Ie,{sx:{position:"absolute",top:"0",width:"full",height:"full",borderRadius:"base"},children:a.jsx(wue,{image:m})}),a.jsx(nr,{children:!e&&m&&y&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},style:{position:"absolute",top:"0",width:"100%",height:"100%",pointerEvents:"none"},children:a.jsx(FO,{})},"nextPrevButtons")})]})},jue=d.memo(_ue),Pue=()=>a.jsxs($,{sx:{position:"relative",flexDirection:"column",height:"100%",width:"100%",rowGap:4,alignItems:"center",justifyContent:"center"},children:[a.jsx(mue,{}),a.jsx(jue,{})]}),Iue=d.memo(Pue),Eue=()=>a.jsx(Ie,{layerStyle:"first",sx:{position:"relative",width:"100%",height:"100%",p:2,borderRadius:"base"},children:a.jsx($,{sx:{width:"100%",height:"100%"},children:a.jsx(Iue,{})})}),BO=d.memo(Eue),Mue=()=>{const e=d.useRef(null),t=d.useCallback(()=>{e.current&&e.current.setLayout([50,50])},[]),n=Ny();return a.jsx(Ie,{sx:{w:"full",h:"full"},children:a.jsxs(Sg,{ref:e,autoSaveId:"imageTab.content",direction:"horizontal",style:{height:"100%",width:"100%"},storage:n,units:"percentages",children:[a.jsx(Ua,{id:"imageTab.content.initImage",order:0,defaultSize:50,minSize:25,style:{position:"relative"},children:a.jsx(aue,{})}),a.jsx(im,{onDoubleClick:t}),a.jsx(Ua,{id:"imageTab.content.selectedImage",order:1,defaultSize:50,minSize:25,children:a.jsx(BO,{})})]})})},Oue=d.memo(Mue);var Due=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var r,o,s;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(o=r;o--!==0;)if(!e(t[o],n[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(s=Object.keys(t),r=s.length,r!==Object.keys(n).length)return!1;for(o=r;o--!==0;)if(!Object.prototype.hasOwnProperty.call(n,s[o]))return!1;for(o=r;o--!==0;){var i=s[o];if(!e(t[i],n[i]))return!1}return!0}return t!==t&&n!==n};const V_=Rc(Due);function wb(e){return e===null||typeof e!="object"?{}:Object.keys(e).reduce((t,n)=>{const r=e[n];return r!=null&&r!==!1&&(t[n]=r),t},{})}var Rue=Object.defineProperty,U_=Object.getOwnPropertySymbols,Aue=Object.prototype.hasOwnProperty,Nue=Object.prototype.propertyIsEnumerable,G_=(e,t,n)=>t in e?Rue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Tue=(e,t)=>{for(var n in t||(t={}))Aue.call(t,n)&&G_(e,n,t[n]);if(U_)for(var n of U_(t))Nue.call(t,n)&&G_(e,n,t[n]);return e};function HO(e,t){if(t===null||typeof t!="object")return{};const n=Tue({},t);return Object.keys(t).forEach(r=>{r.includes(`${String(e)}.`)&&delete n[r]}),n}const $ue="__MANTINE_FORM_INDEX__";function K_(e,t){return t?typeof t=="boolean"?t:Array.isArray(t)?t.includes(e.replace(/[.][0-9]/g,`.${$ue}`)):!1:!1}function q_(e,t,n){typeof n.value=="object"&&(n.value=Yl(n.value)),!n.enumerable||n.get||n.set||!n.configurable||!n.writable||t==="__proto__"?Object.defineProperty(e,t,n):e[t]=n.value}function Yl(e){if(typeof e!="object")return e;var t=0,n,r,o,s=Object.prototype.toString.call(e);if(s==="[object Object]"?o=Object.create(e.__proto__||null):s==="[object Array]"?o=Array(e.length):s==="[object Set]"?(o=new Set,e.forEach(function(i){o.add(Yl(i))})):s==="[object Map]"?(o=new Map,e.forEach(function(i,l){o.set(Yl(l),Yl(i))})):s==="[object Date]"?o=new Date(+e):s==="[object RegExp]"?o=new RegExp(e.source,e.flags):s==="[object DataView]"?o=new e.constructor(Yl(e.buffer)):s==="[object ArrayBuffer]"?o=e.slice(0):s.slice(-6)==="Array]"&&(o=new e.constructor(e)),o){for(r=Object.getOwnPropertySymbols(e);t0,errors:t}}function Sb(e,t,n="",r={}){return typeof e!="object"||e===null?r:Object.keys(e).reduce((o,s)=>{const i=e[s],l=`${n===""?"":`${n}.`}${s}`,u=Vs(l,t);let p=!1;return typeof i=="function"&&(o[l]=i(u,t,l)),typeof i=="object"&&Array.isArray(u)&&(p=!0,u.forEach((h,m)=>Sb(i,t,`${l}.${m}`,o))),typeof i=="object"&&typeof u=="object"&&u!==null&&(p||Sb(i,t,l,o)),o},r)}function kb(e,t){return X_(typeof e=="function"?e(t):Sb(e,t))}function Op(e,t,n){if(typeof e!="string")return{hasError:!1,error:null};const r=kb(t,n),o=Object.keys(r.errors).find(s=>e.split(".").every((i,l)=>i===s.split(".")[l]));return{hasError:!!o,error:o?r.errors[o]:null}}function Lue(e,{from:t,to:n},r){const o=Vs(e,r);if(!Array.isArray(o))return r;const s=[...o],i=o[t];return s.splice(t,1),s.splice(n,0,i),Mg(e,s,r)}var zue=Object.defineProperty,Y_=Object.getOwnPropertySymbols,Fue=Object.prototype.hasOwnProperty,Bue=Object.prototype.propertyIsEnumerable,Q_=(e,t,n)=>t in e?zue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hue=(e,t)=>{for(var n in t||(t={}))Fue.call(t,n)&&Q_(e,n,t[n]);if(Y_)for(var n of Y_(t))Bue.call(t,n)&&Q_(e,n,t[n]);return e};function Wue(e,{from:t,to:n},r){const o=`${e}.${t}`,s=`${e}.${n}`,i=Hue({},r);return Object.keys(r).every(l=>{let u,p;if(l.startsWith(o)&&(u=l,p=l.replace(o,s)),l.startsWith(s)&&(u=l.replace(s,o),p=l),u&&p){const h=i[u],m=i[p];return m===void 0?delete i[u]:i[u]=m,h===void 0?delete i[p]:i[p]=h,!1}return!0}),i}function Vue(e,t,n){const r=Vs(e,n);return Array.isArray(r)?Mg(e,r.filter((o,s)=>s!==t),n):n}var Uue=Object.defineProperty,Z_=Object.getOwnPropertySymbols,Gue=Object.prototype.hasOwnProperty,Kue=Object.prototype.propertyIsEnumerable,J_=(e,t,n)=>t in e?Uue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,que=(e,t)=>{for(var n in t||(t={}))Gue.call(t,n)&&J_(e,n,t[n]);if(Z_)for(var n of Z_(t))Kue.call(t,n)&&J_(e,n,t[n]);return e};function ej(e,t){const n=e.substring(t.length+1).split(".")[0];return parseInt(n,10)}function tj(e,t,n,r){if(t===void 0)return n;const o=`${String(e)}`;let s=n;r===-1&&(s=HO(`${o}.${t}`,s));const i=que({},s),l=new Set;return Object.entries(s).filter(([u])=>{if(!u.startsWith(`${o}.`))return!1;const p=ej(u,o);return Number.isNaN(p)?!1:p>=t}).forEach(([u,p])=>{const h=ej(u,o),m=u.replace(`${o}.${h}`,`${o}.${h+r}`);i[m]=p,l.add(m),l.has(u)||delete i[u]}),i}function Xue(e,t,n,r){const o=Vs(e,r);if(!Array.isArray(o))return r;const s=[...o];return s.splice(typeof n=="number"?n:s.length,0,t),Mg(e,s,r)}function nj(e,t){const n=Object.keys(e);if(typeof t=="string"){const r=n.filter(o=>o.startsWith(`${t}.`));return e[t]||r.some(o=>e[o])||!1}return n.some(r=>e[r])}function Yue(e){return t=>{if(!t)e(t);else if(typeof t=="function")e(t);else if(typeof t=="object"&&"nativeEvent"in t){const{currentTarget:n}=t;n instanceof HTMLInputElement?n.type==="checkbox"?e(n.checked):e(n.value):(n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)&&e(n.value)}else e(t)}}var Que=Object.defineProperty,Zue=Object.defineProperties,Jue=Object.getOwnPropertyDescriptors,rj=Object.getOwnPropertySymbols,ede=Object.prototype.hasOwnProperty,tde=Object.prototype.propertyIsEnumerable,oj=(e,t,n)=>t in e?Que(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ea=(e,t)=>{for(var n in t||(t={}))ede.call(t,n)&&oj(e,n,t[n]);if(rj)for(var n of rj(t))tde.call(t,n)&&oj(e,n,t[n]);return e},qv=(e,t)=>Zue(e,Jue(t));function il({initialValues:e={},initialErrors:t={},initialDirty:n={},initialTouched:r={},clearInputErrorOnChange:o=!0,validateInputOnChange:s=!1,validateInputOnBlur:i=!1,transformValues:l=p=>p,validate:u}={}){const[p,h]=d.useState(r),[m,v]=d.useState(n),[b,y]=d.useState(e),[x,w]=d.useState(wb(t)),k=d.useRef(e),_=U=>{k.current=U},j=d.useCallback(()=>h({}),[]),I=U=>{const G=U?Ea(Ea({},b),U):b;_(G),v({})},E=d.useCallback(U=>w(G=>wb(typeof U=="function"?U(G):U)),[]),M=d.useCallback(()=>w({}),[]),D=d.useCallback(()=>{y(e),M(),_(e),v({}),j()},[]),R=d.useCallback((U,G)=>E(te=>qv(Ea({},te),{[U]:G})),[]),A=d.useCallback(U=>E(G=>{if(typeof U!="string")return G;const te=Ea({},G);return delete te[U],te}),[]),O=d.useCallback(U=>v(G=>{if(typeof U!="string")return G;const te=HO(U,G);return delete te[U],te}),[]),T=d.useCallback((U,G)=>{const te=K_(U,s);O(U),h(ae=>qv(Ea({},ae),{[U]:!0})),y(ae=>{const oe=Mg(U,G,ae);if(te){const pe=Op(U,u,oe);pe.hasError?R(U,pe.error):A(U)}return oe}),!te&&o&&R(U,null)},[]),K=d.useCallback(U=>{y(G=>{const te=typeof U=="function"?U(G):U;return Ea(Ea({},G),te)}),o&&M()},[]),F=d.useCallback((U,G)=>{O(U),y(te=>Lue(U,G,te)),w(te=>Wue(U,G,te))},[]),V=d.useCallback((U,G)=>{O(U),y(te=>Vue(U,G,te)),w(te=>tj(U,G,te,-1))},[]),X=d.useCallback((U,G,te)=>{O(U),y(ae=>Xue(U,G,te,ae)),w(ae=>tj(U,te,ae,1))},[]),W=d.useCallback(()=>{const U=kb(u,b);return w(U.errors),U},[b,u]),z=d.useCallback(U=>{const G=Op(U,u,b);return G.hasError?R(U,G.error):A(U),G},[b,u]),Y=(U,{type:G="input",withError:te=!0,withFocus:ae=!0}={})=>{const pe={onChange:Yue(ue=>T(U,ue))};return te&&(pe.error=x[U]),G==="checkbox"?pe.checked=Vs(U,b):pe.value=Vs(U,b),ae&&(pe.onFocus=()=>h(ue=>qv(Ea({},ue),{[U]:!0})),pe.onBlur=()=>{if(K_(U,i)){const ue=Op(U,u,b);ue.hasError?R(U,ue.error):A(U)}}),pe},B=(U,G)=>te=>{te==null||te.preventDefault();const ae=W();ae.hasErrors?G==null||G(ae.errors,b,te):U==null||U(l(b),te)},q=U=>l(U||b),re=d.useCallback(U=>{U.preventDefault(),D()},[]),Q=U=>{if(U){const te=Vs(U,m);if(typeof te=="boolean")return te;const ae=Vs(U,b),oe=Vs(U,k.current);return!V_(ae,oe)}return Object.keys(m).length>0?nj(m):!V_(b,k.current)},le=d.useCallback(U=>nj(p,U),[p]),se=d.useCallback(U=>U?!Op(U,u,b).hasError:!kb(u,b).hasErrors,[b,u]);return{values:b,errors:x,setValues:K,setErrors:E,setFieldValue:T,setFieldError:R,clearFieldError:A,clearErrors:M,reset:D,validate:W,validateField:z,reorderListItem:F,removeListItem:V,insertListItem:X,getInputProps:Y,onSubmit:B,onReset:re,isDirty:Q,isTouched:le,setTouched:h,setDirty:v,resetTouched:j,resetDirty:I,isValid:se,getTransformedValues:q}}function gn(e){const{...t}=e,{base50:n,base100:r,base200:o,base300:s,base800:i,base700:l,base900:u,accent500:p,accent300:h}=Vd(),{colorMode:m}=la();return a.jsx(wE,{styles:()=>({input:{color:Ae(u,r)(m),backgroundColor:Ae(n,u)(m),borderColor:Ae(o,i)(m),borderWidth:2,outline:"none",":focus":{borderColor:Ae(h,p)(m)}},label:{color:Ae(l,s)(m),fontWeight:"normal",marginBottom:4}}),...t})}const nde=[{value:"sd-1",label:on["sd-1"]},{value:"sd-2",label:on["sd-2"]},{value:"sdxl",label:on.sdxl},{value:"sdxl-refiner",label:on["sdxl-refiner"]}];function Qd(e){const{...t}=e,{t:n}=Z();return a.jsx(In,{label:n("modelManager.baseModel"),data:nde,...t})}function VO(e){const{data:t}=u5(),{...n}=e;return a.jsx(In,{label:"Config File",placeholder:"Select A Config File",data:t||[],...n})}const rde=[{value:"normal",label:"Normal"},{value:"inpaint",label:"Inpaint"},{value:"depth",label:"Depth"}];function Og(e){const{...t}=e,{t:n}=Z();return a.jsx(In,{label:n("modelManager.variant"),data:rde,...t})}function um(e,t=!0){let n;t?n=new RegExp("[^\\\\/]+(?=\\.)"):n=new RegExp("[^\\\\/]+(?=[\\\\/]?$)");const r=e.match(n);return r?r[0]:""}function UO(e){const{t}=Z(),n=ee(),{model_path:r}=e,o=il({initialValues:{model_name:r?um(r):"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"checkpoint",error:void 0,vae:"",variant:"normal",config:"configs\\stable-diffusion\\v1-inference.yaml"}}),[s]=d5(),[i,l]=d.useState(!1),u=p=>{s({body:p}).unwrap().then(h=>{n(Tt(Ft({title:t("modelManager.modelAdded",{modelName:p.model_name}),status:"success"}))),o.reset(),r&&n(kd(null))}).catch(h=>{h&&n(Tt(Ft({title:t("toast.modelAddFailed"),status:"error"})))})};return a.jsx("form",{onSubmit:o.onSubmit(p=>u(p)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",gap:2,children:[a.jsx(gn,{label:t("modelManager.model"),required:!0,...o.getInputProps("model_name")}),a.jsx(Qd,{label:t("modelManager.baseModel"),...o.getInputProps("base_model")}),a.jsx(gn,{label:t("modelManager.modelLocation"),required:!0,...o.getInputProps("path"),onBlur:p=>{if(o.values.model_name===""){const h=um(p.currentTarget.value);h&&o.setFieldValue("model_name",h)}}}),a.jsx(gn,{label:t("modelManager.description"),...o.getInputProps("description")}),a.jsx(gn,{label:t("modelManager.vaeLocation"),...o.getInputProps("vae")}),a.jsx(Og,{label:t("modelManager.variant"),...o.getInputProps("variant")}),a.jsxs($,{flexDirection:"column",width:"100%",gap:2,children:[i?a.jsx(gn,{required:!0,label:t("modelManager.customConfigFileLocation"),...o.getInputProps("config")}):a.jsx(VO,{required:!0,width:"100%",...o.getInputProps("config")}),a.jsx(ur,{isChecked:i,onChange:()=>l(!i),label:t("modelManager.useCustomConfig")}),a.jsx(it,{mt:2,type:"submit",children:t("modelManager.addModel")})]})]})})}function GO(e){const{t}=Z(),n=ee(),{model_path:r}=e,[o]=d5(),s=il({initialValues:{model_name:r?um(r,!1):"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"diffusers",error:void 0,vae:"",variant:"normal"}}),i=l=>{o({body:l}).unwrap().then(u=>{n(Tt(Ft({title:t("modelManager.modelAdded",{modelName:l.model_name}),status:"success"}))),s.reset(),r&&n(kd(null))}).catch(u=>{u&&n(Tt(Ft({title:t("toast.modelAddFailed"),status:"error"})))})};return a.jsx("form",{onSubmit:s.onSubmit(l=>i(l)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",gap:2,children:[a.jsx(gn,{required:!0,label:t("modelManager.model"),...s.getInputProps("model_name")}),a.jsx(Qd,{label:t("modelManager.baseModel"),...s.getInputProps("base_model")}),a.jsx(gn,{required:!0,label:t("modelManager.modelLocation"),placeholder:t("modelManager.modelLocationValidationMsg"),...s.getInputProps("path"),onBlur:l=>{if(s.values.model_name===""){const u=um(l.currentTarget.value,!1);u&&s.setFieldValue("model_name",u)}}}),a.jsx(gn,{label:t("modelManager.description"),...s.getInputProps("description")}),a.jsx(gn,{label:t("modelManager.vaeLocation"),...s.getInputProps("vae")}),a.jsx(Og,{label:t("modelManager.variant"),...s.getInputProps("variant")}),a.jsx(it,{mt:2,type:"submit",children:t("modelManager.addModel")})]})})}const KO=[{label:"Diffusers",value:"diffusers"},{label:"Checkpoint / Safetensors",value:"checkpoint"}];function ode(){const[e,t]=d.useState("diffusers"),{t:n}=Z();return a.jsxs($,{flexDirection:"column",gap:4,width:"100%",children:[a.jsx(In,{label:n("modelManager.modelType"),value:e,data:KO,onChange:r=>{r&&t(r)}}),a.jsxs($,{sx:{p:4,borderRadius:4,bg:"base.300",_dark:{bg:"base.850"}},children:[e==="diffusers"&&a.jsx(GO,{}),e==="checkpoint"&&a.jsx(UO,{})]})]})}const sde=[{label:"None",value:"none"},{label:"v_prediction",value:"v_prediction"},{label:"epsilon",value:"epsilon"},{label:"sample",value:"sample"}];function ade(){const e=ee(),{t}=Z(),n=L(l=>l.system.isProcessing),[r,{isLoading:o}]=f5(),s=il({initialValues:{location:"",prediction_type:void 0}}),i=l=>{const u={location:l.location,prediction_type:l.prediction_type==="none"?void 0:l.prediction_type};r({body:u}).unwrap().then(p=>{e(Tt(Ft({title:t("toast.modelAddSimple"),status:"success"}))),s.reset()}).catch(p=>{p&&(console.log(p),e(Tt(Ft({title:`${p.data.detail} `,status:"error"}))))})};return a.jsx("form",{onSubmit:s.onSubmit(l=>i(l)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",width:"100%",gap:4,children:[a.jsx(gn,{label:t("modelManager.modelLocation"),placeholder:t("modelManager.simpleModelDesc"),w:"100%",...s.getInputProps("location")}),a.jsx(In,{label:t("modelManager.predictionType"),data:sde,defaultValue:"none",...s.getInputProps("prediction_type")}),a.jsx(it,{type:"submit",isLoading:o,isDisabled:o||n,children:t("modelManager.addModel")})]})})}function ide(){const[e,t]=d.useState("simple");return a.jsxs($,{flexDirection:"column",width:"100%",overflow:"scroll",maxHeight:window.innerHeight-250,gap:4,children:[a.jsxs(mn,{isAttached:!0,children:[a.jsx(it,{size:"sm",isChecked:e=="simple",onClick:()=>t("simple"),children:"Simple"}),a.jsx(it,{size:"sm",isChecked:e=="advanced",onClick:()=>t("advanced"),children:"Advanced"})]}),a.jsxs($,{sx:{p:4,borderRadius:4,background:"base.200",_dark:{background:"base.800"}},children:[e==="simple"&&a.jsx(ade,{}),e==="advanced"&&a.jsx(ode,{})]})]})}function lde(e){const{...t}=e;return a.jsx(m6,{w:"100%",...t,children:e.children})}function cde(){const e=L(x=>x.modelmanager.searchFolder),[t,n]=d.useState(""),{data:r}=Bo(Ci),{foundModels:o,alreadyInstalled:s,filteredModels:i}=p5({search_path:e||""},{selectFromResult:({data:x})=>{const w=RN(r==null?void 0:r.entities),k=rr(w,"path"),_=ON(x,k),j=LN(x,k);return{foundModels:x,alreadyInstalled:sj(j,t),filteredModels:sj(_,t)}}}),[l,{isLoading:u}]=f5(),p=ee(),{t:h}=Z(),m=d.useCallback(x=>{const w=x.currentTarget.id.split("\\").splice(-1)[0];l({body:{location:x.currentTarget.id}}).unwrap().then(k=>{p(Tt(Ft({title:`Added Model: ${w}`,status:"success"})))}).catch(k=>{k&&p(Tt(Ft({title:h("toast.modelAddFailed"),status:"error"})))})},[p,l,h]),v=d.useCallback(x=>{n(x.target.value)},[]),b=({models:x,showActions:w=!0})=>x.map(k=>a.jsxs($,{sx:{p:4,gap:4,alignItems:"center",borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{w:"100%",sx:{flexDirection:"column",minW:"25%"},children:[a.jsx(ye,{sx:{fontWeight:600},children:k.split("\\").slice(-1)[0]}),a.jsx(ye,{sx:{fontSize:"sm",color:"base.600",_dark:{color:"base.400"}},children:k})]}),w?a.jsxs($,{gap:2,children:[a.jsx(it,{id:k,onClick:m,isLoading:u,children:h("modelManager.quickAdd")}),a.jsx(it,{onClick:()=>p(kd(k)),isLoading:u,children:h("modelManager.advanced")})]}):a.jsx(ye,{sx:{fontWeight:600,p:2,borderRadius:4,color:"accent.50",bg:"accent.400",_dark:{color:"accent.100",bg:"accent.600"}},children:"Installed"})]},k));return(()=>e?!o||o.length===0?a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",height:96,userSelect:"none",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(ye,{variant:"subtext",children:h("modelManager.noModels")})}):a.jsxs($,{sx:{flexDirection:"column",gap:2,w:"100%",minW:"50%"},children:[a.jsx(uo,{onChange:v,label:h("modelManager.search"),labelPos:"side"}),a.jsxs($,{p:2,gap:2,children:[a.jsxs(ye,{sx:{fontWeight:600},children:["Models Found: ",o.length]}),a.jsxs(ye,{sx:{fontWeight:600,color:"accent.500",_dark:{color:"accent.200"}},children:["Not Installed: ",i.length]})]}),a.jsx(lde,{offsetScrollbars:!0,children:a.jsxs($,{gap:2,flexDirection:"column",children:[b({models:i}),b({models:s,showActions:!1})]})})]}):null)()}const sj=(e,t)=>{const n=[];return Pn(e,r=>{if(!r)return null;r.includes(t)&&n.push(r)}),n};function ude(){const e=L(l=>l.modelmanager.advancedAddScanModel),{t}=Z(),[n,r]=d.useState("diffusers"),[o,s]=d.useState(!0);d.useEffect(()=>{e&&[".ckpt",".safetensors",".pth",".pt"].some(l=>e.endsWith(l))?r("checkpoint"):r("diffusers")},[e,r,o]);const i=ee();return e?a.jsxs(Ie,{as:vn.div,initial:{x:-100,opacity:0},animate:{x:0,opacity:1,transition:{duration:.2}},sx:{display:"flex",flexDirection:"column",minWidth:"40%",maxHeight:window.innerHeight-300,overflow:"scroll",p:4,gap:4,borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{justifyContent:"space-between",alignItems:"center",children:[a.jsx(ye,{size:"xl",fontWeight:600,children:o||n==="checkpoint"?"Add Checkpoint Model":"Add Diffusers Model"}),a.jsx(Te,{icon:a.jsx(JZ,{}),"aria-label":t("modelManager.closeAdvanced"),onClick:()=>i(kd(null)),size:"sm"})]}),a.jsx(In,{label:t("modelManager.modelType"),value:n,data:KO,onChange:l=>{l&&(r(l),s(l==="checkpoint"))}}),o?a.jsx(UO,{model_path:e},e):a.jsx(GO,{model_path:e},e)]}):null}function dde(){const e=ee(),{t}=Z(),n=L(l=>l.modelmanager.searchFolder),{refetch:r}=p5({search_path:n||""}),o=il({initialValues:{folder:""}}),s=d.useCallback(l=>{e(vw(l.folder))},[e]),i=()=>{r()};return a.jsx("form",{onSubmit:o.onSubmit(l=>s(l)),style:{width:"100%"},children:a.jsxs($,{sx:{w:"100%",gap:2,borderRadius:4,alignItems:"center"},children:[a.jsxs($,{w:"100%",alignItems:"center",gap:4,minH:12,children:[a.jsx(ye,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",minW:"max-content",_dark:{color:"base.300"}},children:"Folder"}),n?a.jsx($,{sx:{w:"100%",p:2,px:4,bg:"base.300",borderRadius:4,fontSize:"sm",fontWeight:"bold",_dark:{bg:"base.700"}},children:n}):a.jsx(uo,{w:"100%",size:"md",...o.getInputProps("folder")})]}),a.jsxs($,{gap:2,children:[n?a.jsx(Te,{"aria-label":t("modelManager.scanAgain"),tooltip:t("modelManager.scanAgain"),icon:a.jsx(WE,{}),onClick:i,fontSize:18,size:"sm"}):a.jsx(Te,{"aria-label":t("modelManager.findModels"),tooltip:t("modelManager.findModels"),icon:a.jsx(XZ,{}),fontSize:18,size:"sm",type:"submit"}),a.jsx(Te,{"aria-label":t("modelManager.clearCheckpointFolder"),tooltip:t("modelManager.clearCheckpointFolder"),icon:a.jsx(Kr,{}),size:"sm",onClick:()=>{e(vw(null)),e(kd(null))},isDisabled:!n,colorScheme:"red"})]})]})})}const fde=d.memo(dde);function pde(){return a.jsxs($,{flexDirection:"column",w:"100%",gap:4,children:[a.jsx(fde,{}),a.jsxs($,{gap:4,children:[a.jsx($,{sx:{maxHeight:window.innerHeight-300,overflow:"scroll",gap:4,w:"100%"},children:a.jsx(cde,{})}),a.jsx(ude,{})]})]})}function hde(){const[e,t]=d.useState("add"),{t:n}=Z();return a.jsxs($,{flexDirection:"column",gap:4,children:[a.jsxs(mn,{isAttached:!0,children:[a.jsx(it,{onClick:()=>t("add"),isChecked:e=="add",size:"sm",width:"100%",children:n("modelManager.addModel")}),a.jsx(it,{onClick:()=>t("scan"),isChecked:e=="scan",size:"sm",width:"100%",children:n("modelManager.scanForModels")})]}),e=="add"&&a.jsx(ide,{}),e=="scan"&&a.jsx(pde,{})]})}const mde=[{label:"Stable Diffusion 1",value:"sd-1"},{label:"Stable Diffusion 2",value:"sd-2"}];function gde(){var z,Y;const{t:e}=Z(),t=ee(),{data:n}=Bo(Ci),[r,{isLoading:o}]=yA(),[s,i]=d.useState("sd-1"),l=Pw(n==null?void 0:n.entities,(B,q)=>(B==null?void 0:B.model_format)==="diffusers"&&(B==null?void 0:B.base_model)==="sd-1"),u=Pw(n==null?void 0:n.entities,(B,q)=>(B==null?void 0:B.model_format)==="diffusers"&&(B==null?void 0:B.base_model)==="sd-2"),p=d.useMemo(()=>({"sd-1":l,"sd-2":u}),[l,u]),[h,m]=d.useState(((z=Object.keys(p[s]))==null?void 0:z[0])??null),[v,b]=d.useState(((Y=Object.keys(p[s]))==null?void 0:Y[1])??null),[y,x]=d.useState(null),[w,k]=d.useState(""),[_,j]=d.useState(.5),[I,E]=d.useState("weighted_sum"),[M,D]=d.useState("root"),[R,A]=d.useState(""),[O,T]=d.useState(!1),K=Object.keys(p[s]).filter(B=>B!==v&&B!==y),F=Object.keys(p[s]).filter(B=>B!==h&&B!==y),V=Object.keys(p[s]).filter(B=>B!==h&&B!==v),X=B=>{i(B),m(null),b(null)},W=()=>{const B=[];let q=[h,v,y];q=q.filter(Q=>Q!==null),q.forEach(Q=>{var se;const le=(se=Q==null?void 0:Q.split("/"))==null?void 0:se[2];le&&B.push(le)});const re={model_names:B,merged_model_name:w!==""?w:B.join("-"),alpha:_,interp:I,force:O,merge_dest_directory:M==="root"?void 0:R};r({base_model:s,body:re}).unwrap().then(Q=>{t(Tt(Ft({title:e("modelManager.modelsMerged"),status:"success"})))}).catch(Q=>{Q&&t(Tt(Ft({title:e("modelManager.modelsMergeFailed"),status:"error"})))})};return a.jsxs($,{flexDirection:"column",rowGap:4,children:[a.jsxs($,{sx:{flexDirection:"column",rowGap:1},children:[a.jsx(ye,{children:e("modelManager.modelMergeHeaderHelp1")}),a.jsx(ye,{fontSize:"sm",variant:"subtext",children:e("modelManager.modelMergeHeaderHelp2")})]}),a.jsxs($,{columnGap:4,children:[a.jsx(In,{label:"Model Type",w:"100%",data:mde,value:s,onChange:X}),a.jsx(Kt,{label:e("modelManager.modelOne"),w:"100%",value:h,placeholder:e("modelManager.selectModel"),data:K,onChange:B=>m(B)}),a.jsx(Kt,{label:e("modelManager.modelTwo"),w:"100%",placeholder:e("modelManager.selectModel"),value:v,data:F,onChange:B=>b(B)}),a.jsx(Kt,{label:e("modelManager.modelThree"),data:V,w:"100%",placeholder:e("modelManager.selectModel"),clearable:!0,onChange:B=>{B?(x(B),E("weighted_sum")):(x(null),E("add_difference"))}})]}),a.jsx(uo,{label:e("modelManager.mergedModelName"),value:w,onChange:B=>k(B.target.value)}),a.jsxs($,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(Xe,{label:e("modelManager.alpha"),min:.01,max:.99,step:.01,value:_,onChange:B=>j(B),withInput:!0,withReset:!0,handleReset:()=>j(.5),withSliderMarks:!0}),a.jsx(ye,{variant:"subtext",fontSize:"sm",children:e("modelManager.modelMergeAlphaHelp")})]}),a.jsxs($,{sx:{padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(ye,{fontWeight:500,fontSize:"sm",variant:"subtext",children:e("modelManager.interpolationType")}),a.jsx(ih,{value:I,onChange:B=>E(B),children:a.jsx($,{columnGap:4,children:y===null?a.jsxs(a.Fragment,{children:[a.jsx(zs,{value:"weighted_sum",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.weightedSum")})}),a.jsx(zs,{value:"sigmoid",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.sigmoid")})}),a.jsx(zs,{value:"inv_sigmoid",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.inverseSigmoid")})})]}):a.jsx(zs,{value:"add_difference",children:a.jsx(Rt,{label:e("modelManager.modelMergeInterpAddDifferenceHelp"),children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.addDifference")})})})})})]}),a.jsxs($,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.900"}},children:[a.jsxs($,{columnGap:4,children:[a.jsx(ye,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:e("modelManager.mergedModelSaveLocation")}),a.jsx(ih,{value:M,onChange:B=>D(B),children:a.jsxs($,{columnGap:4,children:[a.jsx(zs,{value:"root",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.invokeAIFolder")})}),a.jsx(zs,{value:"custom",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.custom")})})]})})]}),M==="custom"&&a.jsx(uo,{label:e("modelManager.mergedModelCustomSaveLocation"),value:R,onChange:B=>A(B.target.value)})]}),a.jsx(ur,{label:e("modelManager.ignoreMismatch"),isChecked:O,onChange:B=>T(B.target.checked),fontWeight:"500"}),a.jsx(it,{onClick:W,isLoading:o,isDisabled:h===null||v===null,children:e("modelManager.merge")})]})}const vde=Pe((e,t)=>{const{t:n}=Z(),{acceptButtonText:r=n("common.accept"),acceptCallback:o,cancelButtonText:s=n("common.cancel"),cancelCallback:i,children:l,title:u,triggerComponent:p}=e,{isOpen:h,onOpen:m,onClose:v}=Mr(),b=d.useRef(null),y=()=>{o(),v()},x=()=>{i&&i(),v()};return a.jsxs(a.Fragment,{children:[d.cloneElement(p,{onClick:m,ref:t}),a.jsx($d,{isOpen:h,leastDestructiveRef:b,onClose:v,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:u}),a.jsx(Vo,{children:l}),a.jsxs(gs,{children:[a.jsx(it,{ref:b,onClick:x,children:s}),a.jsx(it,{colorScheme:"error",onClick:y,ml:3,children:r})]})]})})})]})}),Gy=d.memo(vde);function bde(e){const{model:t}=e,n=ee(),{t:r}=Z(),[o,{isLoading:s}]=CA(),[i,l]=d.useState("InvokeAIRoot"),[u,p]=d.useState("");d.useEffect(()=>{l("InvokeAIRoot")},[t]);const h=()=>{l("InvokeAIRoot")},m=()=>{const v={base_model:t.base_model,model_name:t.model_name,convert_dest_directory:i==="Custom"?u:void 0};if(i==="Custom"&&u===""){n(Tt(Ft({title:r("modelManager.noCustomLocationProvided"),status:"error"})));return}n(Tt(Ft({title:`${r("modelManager.convertingModelBegin")}: ${t.model_name}`,status:"info"}))),o(v).unwrap().then(()=>{n(Tt(Ft({title:`${r("modelManager.modelConverted")}: ${t.model_name}`,status:"success"})))}).catch(()=>{n(Tt(Ft({title:`${r("modelManager.modelConversionFailed")}: ${t.model_name}`,status:"error"})))})};return a.jsxs(Gy,{title:`${r("modelManager.convert")} ${t.model_name}`,acceptCallback:m,cancelCallback:h,acceptButtonText:`${r("modelManager.convert")}`,triggerComponent:a.jsxs(it,{size:"sm","aria-label":r("modelManager.convertToDiffusers"),className:" modal-close-btn",isLoading:s,children:["🧨 ",r("modelManager.convertToDiffusers")]}),motionPreset:"slideInBottom",children:[a.jsxs($,{flexDirection:"column",rowGap:4,children:[a.jsx(ye,{children:r("modelManager.convertToDiffusersHelpText1")}),a.jsxs(Od,{children:[a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText2")}),a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText3")}),a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText4")}),a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText5")})]}),a.jsx(ye,{children:r("modelManager.convertToDiffusersHelpText6")})]}),a.jsxs($,{flexDir:"column",gap:2,children:[a.jsxs($,{marginTop:4,flexDir:"column",gap:2,children:[a.jsx(ye,{fontWeight:"600",children:r("modelManager.convertToDiffusersSaveLocation")}),a.jsx(ih,{value:i,onChange:v=>l(v),children:a.jsxs($,{gap:4,children:[a.jsx(zs,{value:"InvokeAIRoot",children:a.jsx(Rt,{label:"Save converted model in the InvokeAI root folder",children:r("modelManager.invokeRoot")})}),a.jsx(zs,{value:"Custom",children:a.jsx(Rt,{label:"Save converted model in a custom folder",children:r("modelManager.custom")})})]})})]}),i==="Custom"&&a.jsxs($,{flexDirection:"column",rowGap:2,children:[a.jsx(ye,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:r("modelManager.customSaveLocation")}),a.jsx(uo,{value:u,onChange:v=>{p(v.target.value)},width:"full"})]})]})]})}function xde(e){const t=L(En),{model:n}=e,[r,{isLoading:o}]=h5(),{data:s}=u5(),[i,l]=d.useState(!1);d.useEffect(()=>{s!=null&&s.includes(n.config)||l(!0)},[s,n.config]);const u=ee(),{t:p}=Z(),h=il({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"checkpoint",vae:n.vae?n.vae:"",config:n.config?n.config:"",variant:n.variant},validate:{path:v=>v.trim().length===0?"Must provide a path":null}}),m=d.useCallback(v=>{const b={base_model:n.base_model,model_name:n.model_name,body:v};r(b).unwrap().then(y=>{h.setValues(y),u(Tt(Ft({title:p("modelManager.modelUpdated"),status:"success"})))}).catch(y=>{h.reset(),u(Tt(Ft({title:p("modelManager.modelUpdateFailed"),status:"error"})))})},[h,u,n.base_model,n.model_name,p,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{justifyContent:"space-between",alignItems:"center",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(ye,{fontSize:"sm",color:"base.400",children:[on[n.base_model]," Model"]})]}),[""].includes(n.base_model)?a.jsx(da,{sx:{p:2,borderRadius:4,bg:"error.200",_dark:{bg:"error.400"}},children:"Conversion Not Supported"}):a.jsx(bde,{model:n})]}),a.jsx(Vr,{}),a.jsx($,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",children:a.jsx("form",{onSubmit:h.onSubmit(v=>m(v)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(gn,{label:p("modelManager.name"),...h.getInputProps("model_name")}),a.jsx(gn,{label:p("modelManager.description"),...h.getInputProps("description")}),a.jsx(Qd,{required:!0,...h.getInputProps("base_model")}),a.jsx(Og,{required:!0,...h.getInputProps("variant")}),a.jsx(gn,{required:!0,label:p("modelManager.modelLocation"),...h.getInputProps("path")}),a.jsx(gn,{label:p("modelManager.vaeLocation"),...h.getInputProps("vae")}),a.jsxs($,{flexDirection:"column",gap:2,children:[i?a.jsx(gn,{required:!0,label:p("modelManager.config"),...h.getInputProps("config")}):a.jsx(VO,{required:!0,...h.getInputProps("config")}),a.jsx(ur,{isChecked:i,onChange:()=>l(!i),label:"Use Custom Config"})]}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:p("modelManager.updateModel")})]})})})]})}function yde(e){const t=L(En),{model:n}=e,[r,{isLoading:o}]=h5(),s=ee(),{t:i}=Z(),l=il({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"diffusers",vae:n.vae?n.vae:"",variant:n.variant},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),u=d.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{l.setValues(m),s(Tt(Ft({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{l.reset(),s(Tt(Ft({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[l,s,n.base_model,n.model_name,i,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(ye,{fontSize:"sm",color:"base.400",children:[on[n.base_model]," Model"]})]}),a.jsx(Vr,{}),a.jsx("form",{onSubmit:l.onSubmit(p=>u(p)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(gn,{label:i("modelManager.name"),...l.getInputProps("model_name")}),a.jsx(gn,{label:i("modelManager.description"),...l.getInputProps("description")}),a.jsx(Qd,{required:!0,...l.getInputProps("base_model")}),a.jsx(Og,{required:!0,...l.getInputProps("variant")}),a.jsx(gn,{required:!0,label:i("modelManager.modelLocation"),...l.getInputProps("path")}),a.jsx(gn,{label:i("modelManager.vaeLocation"),...l.getInputProps("vae")}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function Cde(e){const t=L(En),{model:n}=e,[r,{isLoading:o}]=wA(),s=ee(),{t:i}=Z(),l=il({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"lora",path:n.path?n.path:"",description:n.description?n.description:"",model_format:n.model_format},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),u=d.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{l.setValues(m),s(Tt(Ft({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{l.reset(),s(Tt(Ft({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[s,l,n.base_model,n.model_name,i,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(ye,{fontSize:"sm",color:"base.400",children:[on[n.base_model]," Model ⋅"," ",SA[n.model_format]," format"]})]}),a.jsx(Vr,{}),a.jsx("form",{onSubmit:l.onSubmit(p=>u(p)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(gn,{label:i("modelManager.name"),...l.getInputProps("model_name")}),a.jsx(gn,{label:i("modelManager.description"),...l.getInputProps("description")}),a.jsx(Qd,{...l.getInputProps("base_model")}),a.jsx(gn,{label:i("modelManager.modelLocation"),...l.getInputProps("path")}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function wde(e){const t=L(En),{t:n}=Z(),r=ee(),[o]=kA(),[s]=_A(),{model:i,isSelected:l,setSelectedModelId:u}=e,p=d.useCallback(()=>{u(i.id)},[i.id,u]),h=d.useCallback(()=>{const m={main:o,lora:s,onnx:o}[i.model_type];m(i).unwrap().then(v=>{r(Tt(Ft({title:`${n("modelManager.modelDeleted")}: ${i.model_name}`,status:"success"})))}).catch(v=>{v&&r(Tt(Ft({title:`${n("modelManager.modelDeleteFailed")}: ${i.model_name}`,status:"error"})))}),u(void 0)},[o,s,i,u,r,n]);return a.jsxs($,{sx:{gap:2,alignItems:"center",w:"full"},children:[a.jsx($,{as:it,isChecked:l,sx:{justifyContent:"start",p:2,borderRadius:"base",w:"full",alignItems:"center",bg:l?"accent.400":"base.100",color:l?"base.50":"base.800",_hover:{bg:l?"accent.500":"base.300",color:l?"base.50":"base.800"},_dark:{color:l?"base.50":"base.100",bg:l?"accent.600":"base.850",_hover:{color:l?"base.50":"base.100",bg:l?"accent.550":"base.700"}}},onClick:p,children:a.jsxs($,{gap:4,alignItems:"center",children:[a.jsx(da,{minWidth:14,p:.5,fontSize:"sm",variant:"solid",children:jA[i.base_model]}),a.jsx(Rt,{label:i.description,hasArrow:!0,placement:"bottom",children:a.jsx(ye,{sx:{fontWeight:500},children:i.model_name})})]})}),a.jsx(Gy,{title:n("modelManager.deleteModel"),acceptCallback:h,acceptButtonText:n("modelManager.delete"),triggerComponent:a.jsx(Te,{icon:a.jsx(nte,{}),"aria-label":n("modelManager.deleteConfig"),isDisabled:t,colorScheme:"error"}),children:a.jsxs($,{rowGap:4,flexDirection:"column",children:[a.jsx("p",{style:{fontWeight:"bold"},children:n("modelManager.deleteMsg1")}),a.jsx("p",{children:n("modelManager.deleteMsg2")})]})})]})}const Sde=e=>{const{selectedModelId:t,setSelectedModelId:n}=e,{t:r}=Z(),[o,s]=d.useState(""),[i,l]=d.useState("all"),{filteredDiffusersModels:u,isLoadingDiffusersModels:p}=Bo(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredDiffusersModels:Pu(j,"main","diffusers",o),isLoadingDiffusersModels:I})}),{filteredCheckpointModels:h,isLoadingCheckpointModels:m}=Bo(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredCheckpointModels:Pu(j,"main","checkpoint",o),isLoadingCheckpointModels:I})}),{filteredLoraModels:v,isLoadingLoraModels:b}=Cd(void 0,{selectFromResult:({data:j,isLoading:I})=>({filteredLoraModels:Pu(j,"lora",void 0,o),isLoadingLoraModels:I})}),{filteredOnnxModels:y,isLoadingOnnxModels:x}=Yu(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredOnnxModels:Pu(j,"onnx","onnx",o),isLoadingOnnxModels:I})}),{filteredOliveModels:w,isLoadingOliveModels:k}=Yu(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredOliveModels:Pu(j,"onnx","olive",o),isLoadingOliveModels:I})}),_=d.useCallback(j=>{s(j.target.value)},[]);return a.jsx($,{flexDirection:"column",rowGap:4,width:"50%",minWidth:"50%",children:a.jsxs($,{flexDirection:"column",gap:4,paddingInlineEnd:4,children:[a.jsxs(mn,{isAttached:!0,children:[a.jsx(it,{onClick:()=>l("all"),isChecked:i==="all",size:"sm",children:r("modelManager.allModels")}),a.jsx(it,{size:"sm",onClick:()=>l("diffusers"),isChecked:i==="diffusers",children:r("modelManager.diffusersModels")}),a.jsx(it,{size:"sm",onClick:()=>l("checkpoint"),isChecked:i==="checkpoint",children:r("modelManager.checkpointModels")}),a.jsx(it,{size:"sm",onClick:()=>l("onnx"),isChecked:i==="onnx",children:r("modelManager.onnxModels")}),a.jsx(it,{size:"sm",onClick:()=>l("olive"),isChecked:i==="olive",children:r("modelManager.oliveModels")}),a.jsx(it,{size:"sm",onClick:()=>l("lora"),isChecked:i==="lora",children:r("modelManager.loraModels")})]}),a.jsx(uo,{onChange:_,label:r("modelManager.search"),labelPos:"side"}),a.jsxs($,{flexDirection:"column",gap:4,maxHeight:window.innerHeight-280,overflow:"scroll",children:[p&&a.jsx(Vl,{loadingMessage:"Loading Diffusers..."}),["all","diffusers"].includes(i)&&!p&&u.length>0&&a.jsx(Wl,{title:"Diffusers",modelList:u,selected:{selectedModelId:t,setSelectedModelId:n}},"diffusers"),m&&a.jsx(Vl,{loadingMessage:"Loading Checkpoints..."}),["all","checkpoint"].includes(i)&&!m&&h.length>0&&a.jsx(Wl,{title:"Checkpoints",modelList:h,selected:{selectedModelId:t,setSelectedModelId:n}},"checkpoints"),b&&a.jsx(Vl,{loadingMessage:"Loading LoRAs..."}),["all","lora"].includes(i)&&!b&&v.length>0&&a.jsx(Wl,{title:"LoRAs",modelList:v,selected:{selectedModelId:t,setSelectedModelId:n}},"loras"),k&&a.jsx(Vl,{loadingMessage:"Loading Olives..."}),["all","olive"].includes(i)&&!k&&w.length>0&&a.jsx(Wl,{title:"Olives",modelList:w,selected:{selectedModelId:t,setSelectedModelId:n}},"olive"),x&&a.jsx(Vl,{loadingMessage:"Loading ONNX..."}),["all","onnx"].includes(i)&&!x&&y.length>0&&a.jsx(Wl,{title:"ONNX",modelList:y,selected:{selectedModelId:t,setSelectedModelId:n}},"onnx")]})]})})},kde=d.memo(Sde),Pu=(e,t,n,r)=>{const o=[];return Pn(e==null?void 0:e.entities,s=>{if(!s)return;const i=s.model_name.toLowerCase().includes(r.toLowerCase()),l=n===void 0||s.model_format===n,u=s.model_type===t;i&&l&&u&&o.push(s)}),o},Ky=d.memo(e=>a.jsx($,{flexDirection:"column",gap:4,borderRadius:4,p:4,sx:{bg:"base.200",_dark:{bg:"base.800"}},children:e.children}));Ky.displayName="StyledModelContainer";const Wl=d.memo(e=>{const{title:t,modelList:n,selected:r}=e;return a.jsx(Ky,{children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(ye,{variant:"subtext",fontSize:"sm",children:t}),n.map(o=>a.jsx(wde,{model:o,isSelected:r.selectedModelId===o.id,setSelectedModelId:r.setSelectedModelId},o.id))]})})});Wl.displayName="ModelListWrapper";const Vl=d.memo(({loadingMessage:e})=>a.jsx(Ky,{children:a.jsxs($,{justifyContent:"center",alignItems:"center",flexDirection:"column",p:4,gap:8,children:[a.jsx(Xi,{}),a.jsx(ye,{variant:"subtext",children:e||"Fetching..."})]})}));Vl.displayName="FetchingModelsLoader";function _de(){const[e,t]=d.useState(),{mainModel:n}=Bo(Ci,{selectFromResult:({data:s})=>({mainModel:e?s==null?void 0:s.entities[e]:void 0})}),{loraModel:r}=Cd(void 0,{selectFromResult:({data:s})=>({loraModel:e?s==null?void 0:s.entities[e]:void 0})}),o=n||r;return a.jsxs($,{sx:{gap:8,w:"full",h:"full"},children:[a.jsx(kde,{selectedModelId:e,setSelectedModelId:t}),a.jsx(jde,{model:o})]})}const jde=e=>{const{model:t}=e;return(t==null?void 0:t.model_format)==="checkpoint"?a.jsx(xde,{model:t},t.id):(t==null?void 0:t.model_format)==="diffusers"?a.jsx(yde,{model:t},t.id):(t==null?void 0:t.model_type)==="lora"?a.jsx(Cde,{model:t},t.id):a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",maxH:96,userSelect:"none"},children:a.jsx(ye,{variant:"subtext",children:"No Model Selected"})})};function Pde(){const{t:e}=Z();return a.jsxs($,{sx:{w:"full",p:4,borderRadius:4,gap:4,justifyContent:"space-between",alignItems:"center",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(ye,{sx:{fontWeight:600},children:e("modelManager.syncModels")}),a.jsx(ye,{fontSize:"sm",sx:{_dark:{color:"base.400"}},children:e("modelManager.syncModelsDesc")})]}),a.jsx(Uc,{})]})}function Ide(){return a.jsx($,{children:a.jsx(Pde,{})})}const aj=[{id:"modelManager",label:vt.t("modelManager.modelManager"),content:a.jsx(_de,{})},{id:"importModels",label:vt.t("modelManager.importModels"),content:a.jsx(hde,{})},{id:"mergeModels",label:vt.t("modelManager.mergeModels"),content:a.jsx(gde,{})},{id:"settings",label:vt.t("modelManager.settings"),content:a.jsx(Ide,{})}],Ede=()=>a.jsxs(Ji,{isLazy:!0,variant:"line",layerStyle:"first",sx:{w:"full",h:"full",p:4,gap:4,borderRadius:"base"},children:[a.jsx(el,{children:aj.map(e=>a.jsx(Pr,{sx:{borderTopRadius:"base"},children:e.label},e.id))}),a.jsx(Fc,{sx:{w:"full",h:"full"},children:aj.map(e=>a.jsx(mo,{sx:{w:"full",h:"full"},children:e.content},e.id))})]}),Mde=d.memo(Ede),Ode={enum:"",boolean:!1,BooleanCollection:[],BooleanPolymorphic:!1,ClipField:void 0,Collection:[],CollectionItem:void 0,ColorCollection:[],ColorField:void 0,ColorPolymorphic:void 0,ConditioningCollection:[],ConditioningField:void 0,ConditioningPolymorphic:void 0,ControlCollection:[],ControlField:void 0,ControlNetModelField:void 0,ControlPolymorphic:void 0,DenoiseMaskField:void 0,float:0,FloatCollection:[],FloatPolymorphic:0,ImageCollection:[],ImageField:void 0,ImagePolymorphic:void 0,integer:0,IntegerCollection:[],IntegerPolymorphic:0,IPAdapterField:void 0,IPAdapterModelField:void 0,LatentsCollection:[],LatentsField:void 0,LatentsPolymorphic:void 0,LoRAModelField:void 0,MainModelField:void 0,ONNXModelField:void 0,Scheduler:"euler",SDXLMainModelField:void 0,SDXLRefinerModelField:void 0,string:"",StringCollection:[],StringPolymorphic:"",UNetField:void 0,VaeField:void 0,VaeModelField:void 0},Dde=(e,t)=>{const n={id:e,name:t.name,type:t.type,label:"",fieldKind:"input"};return n.value=t.default??Ode[t.type],n},Rde=ie([e=>e.nodes],e=>e.nodeTemplates),Xv={dragHandle:`.${Zi}`},Ade=()=>{const e=L(Rde),t=Xb();return d.useCallback(n=>{var b;const r=Ba();let o=window.innerWidth/2,s=window.innerHeight/2;const i=(b=document.querySelector("#workflow-editor"))==null?void 0:b.getBoundingClientRect();i&&(o=i.width/2-d1/2,s=i.height/2-d1/2);const{x:l,y:u}=t.project({x:o,y:s});if(n==="current_image")return{...Xv,id:r,type:"current_image",position:{x:l,y:u},data:{id:r,type:"current_image",isOpen:!0,label:"Current Image"}};if(n==="notes")return{...Xv,id:r,type:"notes",position:{x:l,y:u},data:{id:r,isOpen:!0,label:"Notes",notes:"",type:"notes"}};const p=e[n];if(p===void 0){console.error(`Unable to find template ${n}.`);return}const h=bw(p.inputs,(y,x,w)=>{const k=Ba(),_=Dde(k,x);return y[w]=_,y},{}),m=bw(p.outputs,(y,x,w)=>{const _={id:Ba(),name:w,type:x.type,fieldKind:"output"};return y[w]=_,y},{});return{...Xv,id:r,type:"invocation",position:{x:l,y:u},data:{id:r,type:n,version:p.version,label:"",notes:"",isOpen:!0,embedWorkflow:!1,isIntermediate:!0,inputs:h,outputs:m}}},[e,t])},qO=d.forwardRef(({label:e,description:t,...n},r)=>a.jsx("div",{ref:r,...n,children:a.jsxs("div",{children:[a.jsx(ye,{fontWeight:600,children:e}),a.jsx(ye,{size:"xs",sx:{color:"base.600",_dark:{color:"base.500"}},children:t})]})}));qO.displayName="AddNodePopoverSelectItem";const Nde=(e,t)=>{const n=new RegExp(e.trim().replace(/[-[\]{}()*+!<=:?./\\^$|#,]/g,"").split(" ").join(".*"),"gi");return n.test(t.label)||n.test(t.description)||t.tags.some(r=>n.test(r))},Tde=()=>{const e=ee(),t=Ade(),n=tl(),{t:r}=Z(),o=ie([xe],({nodes:y})=>{const x=rr(y.nodeTemplates,w=>({label:w.title,value:w.type,description:w.description,tags:w.tags}));return x.push({label:r("nodes.currentImage"),value:"current_image",description:r("nodes.currentImageDescription"),tags:["progress"]}),x.push({label:r("nodes.notes"),value:"notes",description:r("nodes.notesDescription"),tags:["notes"]}),x.sort((w,k)=>w.label.localeCompare(k.label)),{data:x,t:r}},we),{data:s}=L(o),i=L(y=>y.nodes.isAddNodePopoverOpen),l=d.useRef(null),u=d.useCallback(y=>{const x=t(y);if(!x){const w=r("nodes.unknownInvocation",{nodeType:y});n({status:"error",title:w});return}e(PA(x))},[e,t,n,r]),p=d.useCallback(y=>{y&&u(y)},[u]),h=d.useCallback(()=>{e(IA())},[e]),m=d.useCallback(()=>{e(m5())},[e]),v=d.useCallback(y=>{y.preventDefault(),m(),setTimeout(()=>{var x;(x=l.current)==null||x.focus()},0)},[m]),b=d.useCallback(()=>{h()},[h]);return Ze(["shift+a","space"],v),Ze(["escape"],b),a.jsxs(Fm,{initialFocusRef:l,isOpen:i,onClose:h,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(bP,{children:a.jsx($,{sx:{position:"absolute",top:"15%",insetInlineStart:"50%",pointerEvents:"none"}})}),a.jsx(Bm,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(Ax,{sx:{p:0},children:a.jsx(Kt,{inputRef:l,selectOnBlur:!1,placeholder:r("nodes.nodeSearch"),value:null,data:s,maxDropdownHeight:400,nothingFound:r("nodes.noMatchingNodes"),itemComponent:qO,filter:Nde,onChange:p,hoverOnSearchChange:!0,onDropdownClose:h,sx:{width:"32rem",input:{padding:"0.5rem"}}})})})]})},$de=d.memo(Tde);var Lde="\0",gi="\0",ij="",wr,Si,Lr,hd,fc,pc,so,as,Ta,is,$a,Fs,Bs,hc,mc,Hs,Oo,md,_b,_j;let zde=(_j=class{constructor(t){en(this,md);en(this,wr,!0);en(this,Si,!1);en(this,Lr,!1);en(this,hd,void 0);en(this,fc,()=>{});en(this,pc,()=>{});en(this,so,{});en(this,as,{});en(this,Ta,{});en(this,is,{});en(this,$a,{});en(this,Fs,{});en(this,Bs,{});en(this,hc,0);en(this,mc,0);en(this,Hs,void 0);en(this,Oo,void 0);t&&(ro(this,wr,t.hasOwnProperty("directed")?t.directed:!0),ro(this,Si,t.hasOwnProperty("multigraph")?t.multigraph:!1),ro(this,Lr,t.hasOwnProperty("compound")?t.compound:!1)),Se(this,Lr)&&(ro(this,Hs,{}),ro(this,Oo,{}),Se(this,Oo)[gi]={})}isDirected(){return Se(this,wr)}isMultigraph(){return Se(this,Si)}isCompound(){return Se(this,Lr)}setGraph(t){return ro(this,hd,t),this}graph(){return Se(this,hd)}setDefaultNodeLabel(t){return ro(this,fc,t),typeof t!="function"&&ro(this,fc,()=>t),this}nodeCount(){return Se(this,hc)}nodes(){return Object.keys(Se(this,so))}sources(){var t=this;return this.nodes().filter(n=>Object.keys(Se(t,as)[n]).length===0)}sinks(){var t=this;return this.nodes().filter(n=>Object.keys(Se(t,is)[n]).length===0)}setNodes(t,n){var r=arguments,o=this;return t.forEach(function(s){r.length>1?o.setNode(s,n):o.setNode(s)}),this}setNode(t,n){return Se(this,so).hasOwnProperty(t)?(arguments.length>1&&(Se(this,so)[t]=n),this):(Se(this,so)[t]=arguments.length>1?n:Se(this,fc).call(this,t),Se(this,Lr)&&(Se(this,Hs)[t]=gi,Se(this,Oo)[t]={},Se(this,Oo)[gi][t]=!0),Se(this,as)[t]={},Se(this,Ta)[t]={},Se(this,is)[t]={},Se(this,$a)[t]={},++bu(this,hc)._,this)}node(t){return Se(this,so)[t]}hasNode(t){return Se(this,so).hasOwnProperty(t)}removeNode(t){var n=this;if(Se(this,so).hasOwnProperty(t)){var r=o=>n.removeEdge(Se(n,Fs)[o]);delete Se(this,so)[t],Se(this,Lr)&&(os(this,md,_b).call(this,t),delete Se(this,Hs)[t],this.children(t).forEach(function(o){n.setParent(o)}),delete Se(this,Oo)[t]),Object.keys(Se(this,as)[t]).forEach(r),delete Se(this,as)[t],delete Se(this,Ta)[t],Object.keys(Se(this,is)[t]).forEach(r),delete Se(this,is)[t],delete Se(this,$a)[t],--bu(this,hc)._}return this}setParent(t,n){if(!Se(this,Lr))throw new Error("Cannot set parent in a non-compound graph");if(n===void 0)n=gi;else{n+="";for(var r=n;r!==void 0;r=this.parent(r))if(r===t)throw new Error("Setting "+n+" as parent of "+t+" would create a cycle");this.setNode(n)}return this.setNode(t),os(this,md,_b).call(this,t),Se(this,Hs)[t]=n,Se(this,Oo)[n][t]=!0,this}parent(t){if(Se(this,Lr)){var n=Se(this,Hs)[t];if(n!==gi)return n}}children(t=gi){if(Se(this,Lr)){var n=Se(this,Oo)[t];if(n)return Object.keys(n)}else{if(t===gi)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var n=Se(this,Ta)[t];if(n)return Object.keys(n)}successors(t){var n=Se(this,$a)[t];if(n)return Object.keys(n)}neighbors(t){var n=this.predecessors(t);if(n){const o=new Set(n);for(var r of this.successors(t))o.add(r);return Array.from(o.values())}}isLeaf(t){var n;return this.isDirected()?n=this.successors(t):n=this.neighbors(t),n.length===0}filterNodes(t){var n=new this.constructor({directed:Se(this,wr),multigraph:Se(this,Si),compound:Se(this,Lr)});n.setGraph(this.graph());var r=this;Object.entries(Se(this,so)).forEach(function([i,l]){t(i)&&n.setNode(i,l)}),Object.values(Se(this,Fs)).forEach(function(i){n.hasNode(i.v)&&n.hasNode(i.w)&&n.setEdge(i,r.edge(i))});var o={};function s(i){var l=r.parent(i);return l===void 0||n.hasNode(l)?(o[i]=l,l):l in o?o[l]:s(l)}return Se(this,Lr)&&n.nodes().forEach(i=>n.setParent(i,s(i))),n}setDefaultEdgeLabel(t){return ro(this,pc,t),typeof t!="function"&&ro(this,pc,()=>t),this}edgeCount(){return Se(this,mc)}edges(){return Object.values(Se(this,Fs))}setPath(t,n){var r=this,o=arguments;return t.reduce(function(s,i){return o.length>1?r.setEdge(s,i,n):r.setEdge(s,i),i}),this}setEdge(){var t,n,r,o,s=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(t=i.v,n=i.w,r=i.name,arguments.length===2&&(o=arguments[1],s=!0)):(t=i,n=arguments[1],r=arguments[3],arguments.length>2&&(o=arguments[2],s=!0)),t=""+t,n=""+n,r!==void 0&&(r=""+r);var l=Tu(Se(this,wr),t,n,r);if(Se(this,Bs).hasOwnProperty(l))return s&&(Se(this,Bs)[l]=o),this;if(r!==void 0&&!Se(this,Si))throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(n),Se(this,Bs)[l]=s?o:Se(this,pc).call(this,t,n,r);var u=Fde(Se(this,wr),t,n,r);return t=u.v,n=u.w,Object.freeze(u),Se(this,Fs)[l]=u,lj(Se(this,Ta)[n],t),lj(Se(this,$a)[t],n),Se(this,as)[n][l]=u,Se(this,is)[t][l]=u,bu(this,mc)._++,this}edge(t,n,r){var o=arguments.length===1?Yv(Se(this,wr),arguments[0]):Tu(Se(this,wr),t,n,r);return Se(this,Bs)[o]}edgeAsObj(){const t=this.edge(...arguments);return typeof t!="object"?{label:t}:t}hasEdge(t,n,r){var o=arguments.length===1?Yv(Se(this,wr),arguments[0]):Tu(Se(this,wr),t,n,r);return Se(this,Bs).hasOwnProperty(o)}removeEdge(t,n,r){var o=arguments.length===1?Yv(Se(this,wr),arguments[0]):Tu(Se(this,wr),t,n,r),s=Se(this,Fs)[o];return s&&(t=s.v,n=s.w,delete Se(this,Bs)[o],delete Se(this,Fs)[o],cj(Se(this,Ta)[n],t),cj(Se(this,$a)[t],n),delete Se(this,as)[n][o],delete Se(this,is)[t][o],bu(this,mc)._--),this}inEdges(t,n){var r=Se(this,as)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.v===n):o}}outEdges(t,n){var r=Se(this,is)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.w===n):o}}nodeEdges(t,n){var r=this.inEdges(t,n);if(r)return r.concat(this.outEdges(t,n))}},wr=new WeakMap,Si=new WeakMap,Lr=new WeakMap,hd=new WeakMap,fc=new WeakMap,pc=new WeakMap,so=new WeakMap,as=new WeakMap,Ta=new WeakMap,is=new WeakMap,$a=new WeakMap,Fs=new WeakMap,Bs=new WeakMap,hc=new WeakMap,mc=new WeakMap,Hs=new WeakMap,Oo=new WeakMap,md=new WeakSet,_b=function(t){delete Se(this,Oo)[Se(this,Hs)[t]][t]},_j);function lj(e,t){e[t]?e[t]++:e[t]=1}function cj(e,t){--e[t]||delete e[t]}function Tu(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}return o+ij+s+ij+(r===void 0?Lde:r)}function Fde(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}var l={v:o,w:s};return r&&(l.name=r),l}function Yv(e,t){return Tu(e,t.v,t.w,t.name)}var qy=zde,Bde="2.1.13",Hde={Graph:qy,version:Bde},Wde=qy,Vde={write:Ude,read:qde};function Ude(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Gde(e),edges:Kde(e)};return e.graph()!==void 0&&(t.value=structuredClone(e.graph())),t}function Gde(e){return e.nodes().map(function(t){var n=e.node(t),r=e.parent(t),o={v:t};return n!==void 0&&(o.value=n),r!==void 0&&(o.parent=r),o})}function Kde(e){return e.edges().map(function(t){var n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function qde(e){var t=new Wde(e.options).setGraph(e.value);return e.nodes.forEach(function(n){t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),e.edges.forEach(function(n){t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var Xde=Yde;function Yde(e){var t={},n=[],r;function o(s){t.hasOwnProperty(s)||(t[s]=!0,r.push(s),e.successors(s).forEach(o),e.predecessors(s).forEach(o))}return e.nodes().forEach(function(s){r=[],o(s),r.length&&n.push(r)}),n}var Jn,Ws,gd,jb,vd,Pb,gc,Wp,jj;let Qde=(jj=class{constructor(){en(this,gd);en(this,vd);en(this,gc);en(this,Jn,[]);en(this,Ws,{})}size(){return Se(this,Jn).length}keys(){return Se(this,Jn).map(function(t){return t.key})}has(t){return Se(this,Ws).hasOwnProperty(t)}priority(t){var n=Se(this,Ws)[t];if(n!==void 0)return Se(this,Jn)[n].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return Se(this,Jn)[0].key}add(t,n){var r=Se(this,Ws);if(t=String(t),!r.hasOwnProperty(t)){var o=Se(this,Jn),s=o.length;return r[t]=s,o.push({key:t,priority:n}),os(this,vd,Pb).call(this,s),!0}return!1}removeMin(){os(this,gc,Wp).call(this,0,Se(this,Jn).length-1);var t=Se(this,Jn).pop();return delete Se(this,Ws)[t.key],os(this,gd,jb).call(this,0),t.key}decrease(t,n){var r=Se(this,Ws)[t];if(n>Se(this,Jn)[r].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+Se(this,Jn)[r].priority+" New: "+n);Se(this,Jn)[r].priority=n,os(this,vd,Pb).call(this,r)}},Jn=new WeakMap,Ws=new WeakMap,gd=new WeakSet,jb=function(t){var n=Se(this,Jn),r=2*t,o=r+1,s=t;r>1,!(n[o].priority1;function efe(e,t,n,r){return tfe(e,String(t),n||Jde,r||function(o){return e.outEdges(o)})}function tfe(e,t,n,r){var o={},s=new Zde,i,l,u=function(p){var h=p.v!==i?p.v:p.w,m=o[h],v=n(p),b=l.distance+v;if(v<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+p+" Weight: "+v);b0&&(i=s.removeMin(),l=o[i],l.distance!==Number.POSITIVE_INFINITY);)r(i).forEach(u);return o}var nfe=YO,rfe=ofe;function ofe(e,t,n){return e.nodes().reduce(function(r,o){return r[o]=nfe(e,o,t,n),r},{})}var QO=sfe;function sfe(e){var t=0,n=[],r={},o=[];function s(i){var l=r[i]={onStack:!0,lowlink:t,index:t++};if(n.push(i),e.successors(i).forEach(function(h){r.hasOwnProperty(h)?r[h].onStack&&(l.lowlink=Math.min(l.lowlink,r[h].index)):(s(h),l.lowlink=Math.min(l.lowlink,r[h].lowlink))}),l.lowlink===l.index){var u=[],p;do p=n.pop(),r[p].onStack=!1,u.push(p);while(i!==p);o.push(u)}}return e.nodes().forEach(function(i){r.hasOwnProperty(i)||s(i)}),o}var afe=QO,ife=lfe;function lfe(e){return afe(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}var cfe=dfe,ufe=()=>1;function dfe(e,t,n){return ffe(e,t||ufe,n||function(r){return e.outEdges(r)})}function ffe(e,t,n){var r={},o=e.nodes();return o.forEach(function(s){r[s]={},r[s][s]={distance:0},o.forEach(function(i){s!==i&&(r[s][i]={distance:Number.POSITIVE_INFINITY})}),n(s).forEach(function(i){var l=i.v===s?i.w:i.v,u=t(i);r[s][l]={distance:u,predecessor:s}})}),o.forEach(function(s){var i=r[s];o.forEach(function(l){var u=r[l];o.forEach(function(p){var h=u[s],m=i[p],v=u[p],b=h.distance+m.distance;be.successors(l):l=>e.neighbors(l),o=n==="post"?gfe:vfe,s=[],i={};return t.forEach(l=>{if(!e.hasNode(l))throw new Error("Graph does not have node: "+l);o(l,r,i,s)}),s}function gfe(e,t,n,r){for(var o=[[e,!1]];o.length>0;){var s=o.pop();s[1]?r.push(s[0]):n.hasOwnProperty(s[0])||(n[s[0]]=!0,o.push([s[0],!0]),t8(t(s[0]),i=>o.push([i,!1])))}}function vfe(e,t,n,r){for(var o=[e];o.length>0;){var s=o.pop();n.hasOwnProperty(s)||(n[s]=!0,r.push(s),t8(t(s),i=>o.push(i)))}}function t8(e,t){for(var n=e.length;n--;)t(e[n],n,e);return e}var bfe=e8,xfe=yfe;function yfe(e,t){return bfe(e,t,"post")}var Cfe=e8,wfe=Sfe;function Sfe(e,t){return Cfe(e,t,"pre")}var kfe=qy,_fe=XO,jfe=Pfe;function Pfe(e,t){var n=new kfe,r={},o=new _fe,s;function i(u){var p=u.v===s?u.w:u.v,h=o.priority(p);if(h!==void 0){var m=t(u);m0;){if(s=o.removeMin(),r.hasOwnProperty(s))n.setEdge(s,r[s]);else{if(l)throw new Error("Input graph is not connected: "+e);l=!0}e.nodeEdges(s).forEach(i)}return n}var Ife={components:Xde,dijkstra:YO,dijkstraAll:rfe,findCycles:ife,floydWarshall:cfe,isAcyclic:pfe,postorder:xfe,preorder:wfe,prim:jfe,tarjan:QO,topsort:JO},dj=Hde,Efe={Graph:dj.Graph,json:Vde,alg:Ife,version:dj.version};const fj=Rc(Efe),Mfe=()=>{const e=Xb(),t=L(r=>r.nodes.shouldValidateGraph);return d.useCallback(({source:r,sourceHandle:o,target:s,targetHandle:i})=>{var b,y;if(!t)return!0;const l=e.getEdges(),u=e.getNodes();if(!(r&&o&&s&&i))return!1;const p=e.getNode(r),h=e.getNode(s);if(!(p&&h&&p.data&&h.data))return!1;const m=(b=p.data.outputs[o])==null?void 0:b.type,v=(y=h.data.inputs[i])==null?void 0:y.type;if(!m||!v||l.filter(x=>x.target===s&&x.targetHandle===i).find(x=>{x.source===r&&x.sourceHandle})||l.find(x=>x.target===s&&x.targetHandle===i)&&v!=="CollectionItem")return!1;if(m!==v){const x=m==="CollectionItem"&&!Us.includes(v),w=v==="CollectionItem"&&!Us.includes(m)&&!Gs.includes(m),k=Gs.includes(v)&&(()=>{if(!Gs.includes(v))return!1;const E=g5[v],M=v5[E];return m===E||m===M})(),_=m==="Collection"&&(Us.includes(v)||Gs.includes(v)),j=v==="Collection"&&Us.includes(m);return x||w||k||_||j||m==="integer"&&v==="float"}return n8(r,s,u,l)},[e,t])},n8=(e,t,n,r)=>{const o=new fj.Graph;return n.forEach(s=>{o.setNode(s.id)}),r.forEach(s=>{o.setEdge(s.source,s.target)}),o.setEdge(e,t),fj.alg.isAcyclic(o)},fd=e=>`var(--invokeai-colors-${e.split(".").join("-")})`,Ofe=ie(xe,({nodes:e})=>{const{shouldAnimateEdges:t,currentConnectionFieldType:n,shouldColorEdges:r}=e,o=fd(n&&r?Sd[n].color:"base.500");let s="react-flow__custom_connection-path";return t&&(s=s.concat(" animated")),{stroke:o,className:s}}),Dfe=({fromX:e,fromY:t,fromPosition:n,toX:r,toY:o,toPosition:s})=>{const{stroke:i,className:l}=L(Ofe),u={sourceX:e,sourceY:t,sourcePosition:n,targetX:r,targetY:o,targetPosition:s},[p]=Yb(u);return a.jsx("g",{children:a.jsx("path",{fill:"none",stroke:i,strokeWidth:2,className:l,d:p,style:{opacity:.8}})})},Rfe=d.memo(Dfe),r8=(e,t,n,r,o)=>ie(xe,({nodes:s})=>{var v,b;const i=s.nodes.find(y=>y.id===e),l=s.nodes.find(y=>y.id===n),u=Cn(i)&&Cn(l),p=(i==null?void 0:i.selected)||(l==null?void 0:l.selected)||o,h=u?(b=(v=i==null?void 0:i.data)==null?void 0:v.outputs[t||""])==null?void 0:b.type:void 0,m=h&&s.shouldColorEdges?fd(Sd[h].color):fd("base.500");return{isSelected:p,shouldAnimate:s.shouldAnimateEdges&&p,stroke:m}},we),Afe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,data:l,selected:u,source:p,target:h,sourceHandleId:m,targetHandleId:v})=>{const b=d.useMemo(()=>r8(p,m,h,v,u),[u,p,m,h,v]),{isSelected:y,shouldAnimate:x}=L(b),[w,k,_]=Yb({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s}),{base500:j}=Vd();return a.jsxs(a.Fragment,{children:[a.jsx(b5,{path:w,markerEnd:i,style:{strokeWidth:y?3:2,stroke:j,opacity:y?.8:.5,animation:x?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:x?5:"none"}}),(l==null?void 0:l.count)&&l.count>1&&a.jsx(EA,{children:a.jsx($,{sx:{position:"absolute",transform:`translate(-50%, -50%) translate(${k}px,${_}px)`},className:"nodrag nopan",children:a.jsx(da,{variant:"solid",sx:{bg:"base.500",opacity:y?.8:.5,boxShadow:"base"},children:l.count})})})]})},Nfe=d.memo(Afe),Tfe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,selected:l,source:u,target:p,sourceHandleId:h,targetHandleId:m})=>{const v=d.useMemo(()=>r8(u,h,p,m,l),[u,h,p,m,l]),{isSelected:b,shouldAnimate:y,stroke:x}=L(v),[w]=Yb({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s});return a.jsx(b5,{path:w,markerEnd:i,style:{strokeWidth:b?3:2,stroke:x,opacity:b?.8:.5,animation:y?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:y?5:"none"}})},$fe=d.memo(Tfe),Lfe=e=>{const{nodeId:t,width:n,children:r,selected:o}=e,{isMouseOverNode:s,handleMouseOut:i,handleMouseOver:l}=uO(t),u=d.useMemo(()=>ie(xe,({nodes:_})=>{var j;return((j=_.nodeExecutionStates[t])==null?void 0:j.status)===Ks.IN_PROGRESS}),[t]),p=L(u),[h,m,v,b]=ds("shadows",["nodeInProgress.light","nodeInProgress.dark","shadows.xl","shadows.base"]),y=ee(),x=Li(h,m),w=L(_=>_.nodes.nodeOpacity),k=d.useCallback(_=>{!_.ctrlKey&&!_.altKey&&!_.metaKey&&!_.shiftKey&&y(MA(t)),y(x5())},[y,t]);return a.jsxs(Ie,{onClick:k,onMouseEnter:l,onMouseLeave:i,className:Zi,sx:{h:"full",position:"relative",borderRadius:"base",w:n??d1,transitionProperty:"common",transitionDuration:"0.1s",cursor:"grab",opacity:w},children:[a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",pointerEvents:"none",shadow:`${v}, ${b}, ${b}`,zIndex:-1}}),a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"md",pointerEvents:"none",transitionProperty:"common",transitionDuration:"normal",opacity:.7,shadow:p?x:void 0,zIndex:-1}}),r,a.jsx(cO,{isSelected:o,isHovered:s})]})},Dg=d.memo(Lfe),zfe=ie(xe,({system:e,gallery:t})=>({imageDTO:t.selection[t.selection.length-1],progressImage:e.progressImage})),Ffe=e=>{const{progressImage:t,imageDTO:n}=OA(zfe);return t?a.jsx(Qv,{nodeProps:e,children:a.jsx(Qi,{src:t.dataURL,sx:{w:"full",h:"full",objectFit:"contain",borderRadius:"base"}})}):n?a.jsx(Qv,{nodeProps:e,children:a.jsx(oa,{imageDTO:n,isDragDisabled:!0,useThumbailFallback:!0})}):a.jsx(Qv,{nodeProps:e,children:a.jsx(Kn,{})})},Bfe=d.memo(Ffe),Qv=e=>{const[t,n]=d.useState(!1),r=()=>{n(!0)},o=()=>{n(!1)};return a.jsx(Dg,{nodeId:e.nodeProps.id,selected:e.nodeProps.selected,width:384,children:a.jsxs($,{onMouseEnter:r,onMouseLeave:o,className:Zi,sx:{position:"relative",flexDirection:"column"},children:[a.jsx($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",alignItems:"center",justifyContent:"center",h:8},children:a.jsx(ye,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",_dark:{color:"base.200"}},children:"Current Image"})}),a.jsxs($,{layerStyle:"nodeBody",sx:{w:"full",h:"full",borderBottomRadius:"base",p:2},children:[e.children,t&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},style:{position:"absolute",top:40,left:-2,right:-2,bottom:0,pointerEvents:"none"},children:a.jsx(FO,{})},"nextPrevButtons")]})]})})},Hfe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.embedWorkflow:!1},we),[e]);return L(t)},o8=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?Br(o.data.outputs,s=>DA.includes(s.type)):!1},we),[e]);return L(t)},Wfe=({nodeId:e})=>{const t=ee(),n=o8(e),r=Hfe(e),o=d.useCallback(s=>{t(RA({nodeId:e,embedWorkflow:s.target.checked}))},[t,e]);return n?a.jsxs(sn,{as:$,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Hn,{sx:{fontSize:"xs",mb:"1px"},children:"Embed Workflow"}),a.jsx(Sm,{className:"nopan",size:"sm",onChange:o,isChecked:r})]}):null},Vfe=d.memo(Wfe),Ufe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.isIntermediate:!1},we),[e]);return L(t)},Gfe=({nodeId:e})=>{const t=ee(),n=o8(e),r=Ufe(e),o=d.useCallback(s=>{t(AA({nodeId:e,isIntermediate:!s.target.checked}))},[t,e]);return n?a.jsxs(sn,{as:$,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Hn,{sx:{fontSize:"xs",mb:"1px"},children:"Save to Gallery"}),a.jsx(Sm,{className:"nopan",size:"sm",onChange:o,isChecked:!r})]}):null},Kfe=d.memo(Gfe),qfe=({nodeId:e})=>a.jsxs($,{className:Zi,layerStyle:"nodeFooter",sx:{w:"full",borderBottomRadius:"base",px:2,py:0,h:6,justifyContent:"space-between"},children:[a.jsx(Vfe,{nodeId:e}),a.jsx(Kfe,{nodeId:e})]}),Xfe=d.memo(qfe),Yfe=({nodeId:e,isOpen:t})=>{const n=ee(),r=NA(),o=d.useCallback(()=>{n(TA({nodeId:e,isOpen:!t})),r(e)},[n,t,e,r]);return a.jsx(Te,{className:"nodrag",onClick:o,"aria-label":"Minimize",sx:{minW:8,w:8,h:8,color:"base.500",_dark:{color:"base.500"},_hover:{color:"base.700",_dark:{color:"base.300"}}},variant:"link",icon:a.jsx(dg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})})},Xy=d.memo(Yfe),s8=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.label:!1},we),[e]);return L(t)},a8=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return!1;const s=o?r.nodeTemplates[o.data.type]:void 0;return s==null?void 0:s.title},we),[e]);return L(t)},Qfe=({nodeId:e,title:t})=>{const n=ee(),r=s8(e),o=a8(e),{t:s}=Z(),[i,l]=d.useState(""),u=d.useCallback(async h=>{n($A({nodeId:e,label:h})),l(r||t||o||s("nodes.problemSettingTitle"))},[n,e,t,o,r,s]),p=d.useCallback(h=>{l(h)},[]);return d.useEffect(()=>{l(r||t||o||s("nodes.problemSettingTitle"))},[r,o,t,s]),a.jsx($,{sx:{overflow:"hidden",w:"full",h:"full",alignItems:"center",justifyContent:"center",cursor:"text"},children:a.jsxs(jm,{as:$,value:i,onChange:p,onSubmit:u,sx:{alignItems:"center",position:"relative",w:"full",h:"full"},children:[a.jsx(_m,{fontSize:"sm",sx:{p:0,w:"full"},noOfLines:1}),a.jsx(km,{className:"nodrag",fontSize:"sm",sx:{p:0,fontWeight:700,_focusVisible:{p:0,boxShadow:"none"}}}),a.jsx(Zfe,{})]})})},i8=d.memo(Qfe);function Zfe(){const{isEditing:e,getEditButtonProps:t}=Q5(),n=d.useCallback(r=>{const{onClick:o}=t();o&&o(r)},[t]);return e?null:a.jsx(Ie,{className:Zi,onDoubleClick:n,sx:{position:"absolute",w:"full",h:"full",top:0,cursor:"grab"}})}const Yy=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return o==null?void 0:o.data},we),[e]);return L(t)},Jfe=({nodeId:e})=>{const t=Yy(e),{base400:n,base600:r}=Vd(),o=Li(n,r),s=d.useMemo(()=>({borderWidth:0,borderRadius:"3px",width:"1rem",height:"1rem",backgroundColor:o,zIndex:-1}),[o]);return Yp(t)?a.jsxs(a.Fragment,{children:[a.jsx(Ou,{type:"target",id:`${t.id}-collapsed-target`,isConnectable:!1,position:Ul.Left,style:{...s,left:"-0.5rem"}}),rr(t.inputs,i=>a.jsx(Ou,{type:"target",id:i.name,isConnectable:!1,position:Ul.Left,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-input-handle`)),a.jsx(Ou,{type:"source",id:`${t.id}-collapsed-source`,isConnectable:!1,position:Ul.Right,style:{...s,right:"-0.5rem"}}),rr(t.outputs,i=>a.jsx(Ou,{type:"source",id:i.name,isConnectable:!1,position:Ul.Right,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-output-handle`))]}):null},epe=d.memo(Jfe),tpe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);return r.nodeTemplates[(o==null?void 0:o.data.type)??""]},we),[e]);return L(t)},npe=({nodeId:e})=>{const t=ee(),n=Yy(e),{t:r}=Z(),o=d.useCallback(s=>{t(LA({nodeId:e,notes:s.target.value}))},[t,e]);return Yp(n)?a.jsxs(sn,{children:[a.jsx(Hn,{children:r("nodes.notes")}),a.jsx(sa,{value:n==null?void 0:n.notes,onChange:o,rows:10})]}):null},rpe=d.memo(npe),ope=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{var i;const o=r.nodes.find(l=>l.id===e);if(!Cn(o))return!1;const s=r.nodeTemplates[(o==null?void 0:o.data.type)??""];return!(s!=null&&s.version)||!((i=o.data)!=null&&i.version)?!1:Rj(s.version,o.data.version)===0},we),[e]);return L(t)},spe=({nodeId:e})=>{const{isOpen:t,onOpen:n,onClose:r}=Mr(),o=s8(e),s=a8(e),i=ope(e),{t:l}=Z();return a.jsxs(a.Fragment,{children:[a.jsx(Rt,{label:a.jsx(l8,{nodeId:e}),placement:"top",shouldWrapChildren:!0,children:a.jsx($,{className:"nodrag",onClick:n,sx:{alignItems:"center",justifyContent:"center",w:8,h:8,cursor:"pointer"},children:a.jsx(Tn,{as:TE,sx:{boxSize:4,w:8,color:i?"base.400":"error.400"}})})}),a.jsxs(Hi,{isOpen:t,onClose:r,isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Wi,{children:[a.jsx(Ho,{children:o||s||l("nodes.unknownNode")}),a.jsx(zd,{}),a.jsx(Vo,{children:a.jsx(rpe,{nodeId:e})}),a.jsx(gs,{})]})]})]})},ape=d.memo(spe),l8=d.memo(({nodeId:e})=>{const t=Yy(e),n=tpe(e),{t:r}=Z(),o=d.useMemo(()=>t!=null&&t.label&&(n!=null&&n.title)?`${t.label} (${n.title})`:t!=null&&t.label&&!n?t.label:!(t!=null&&t.label)&&n?n.title:r("nodes.unknownNode"),[t,n,r]),s=d.useMemo(()=>!Yp(t)||!n?null:t.version?n.version?Mw(t.version,n.version,"<")?a.jsxs(ye,{as:"span",sx:{color:"error.500"},children:[r("nodes.version")," ",t.version," (",r("nodes.updateNode"),")"]}):Mw(t.version,n.version,">")?a.jsxs(ye,{as:"span",sx:{color:"error.500"},children:[r("nodes.version")," ",t.version," (",r("nodes.updateApp"),")"]}):a.jsxs(ye,{as:"span",children:[r("nodes.version")," ",t.version]}):a.jsxs(ye,{as:"span",sx:{color:"error.500"},children:[r("nodes.version")," ",t.version," (",r("nodes.unknownTemplate"),")"]}):a.jsx(ye,{as:"span",sx:{color:"error.500"},children:r("nodes.versionUnknown")}),[t,n,r]);return Yp(t)?a.jsxs($,{sx:{flexDir:"column"},children:[a.jsx(ye,{as:"span",sx:{fontWeight:600},children:o}),a.jsx(ye,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:n==null?void 0:n.description}),s,(t==null?void 0:t.notes)&&a.jsx(ye,{children:t.notes})]}):a.jsx(ye,{sx:{fontWeight:600},children:r("nodes.unknownNode")})});l8.displayName="TooltipContent";const Zv=3,pj={circle:{transitionProperty:"none",transitionDuration:"0s"},".chakra-progress__track":{stroke:"transparent"}},ipe=({nodeId:e})=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>r.nodeExecutionStates[e]),[e]),n=L(t);return n?a.jsx(Rt,{label:a.jsx(c8,{nodeExecutionState:n}),placement:"top",children:a.jsx($,{className:Zi,sx:{w:5,h:"full",alignItems:"center",justifyContent:"flex-end"},children:a.jsx(u8,{nodeExecutionState:n})})}):null},lpe=d.memo(ipe),c8=d.memo(({nodeExecutionState:e})=>{const{status:t,progress:n,progressImage:r}=e,{t:o}=Z();return t===Ks.PENDING?a.jsx(ye,{children:"Pending"}):t===Ks.IN_PROGRESS?r?a.jsxs($,{sx:{pos:"relative",pt:1.5,pb:.5},children:[a.jsx(Qi,{src:r.dataURL,sx:{w:32,h:32,borderRadius:"base",objectFit:"contain"}}),n!==null&&a.jsxs(da,{variant:"solid",sx:{pos:"absolute",top:2.5,insetInlineEnd:1},children:[Math.round(n*100),"%"]})]}):n!==null?a.jsxs(ye,{children:[o("nodes.executionStateInProgress")," (",Math.round(n*100),"%)"]}):a.jsx(ye,{children:o("nodes.executionStateInProgress")}):t===Ks.COMPLETED?a.jsx(ye,{children:o("nodes.executionStateCompleted")}):t===Ks.FAILED?a.jsx(ye,{children:o("nodes.executionStateError")}):null});c8.displayName="TooltipLabel";const u8=d.memo(e=>{const{progress:t,status:n}=e.nodeExecutionState;return n===Ks.PENDING?a.jsx(Tn,{as:IZ,sx:{boxSize:Zv,color:"base.600",_dark:{color:"base.300"}}}):n===Ks.IN_PROGRESS?t===null?a.jsx(N1,{isIndeterminate:!0,size:"14px",color:"base.500",thickness:14,sx:pj}):a.jsx(N1,{value:Math.round(t*100),size:"14px",color:"base.500",thickness:14,sx:pj}):n===Ks.COMPLETED?a.jsx(Tn,{as:OE,sx:{boxSize:Zv,color:"ok.600",_dark:{color:"ok.300"}}}):n===Ks.FAILED?a.jsx(Tn,{as:OZ,sx:{boxSize:Zv,color:"error.600",_dark:{color:"error.300"}}}):null});u8.displayName="StatusIcon";const cpe=({nodeId:e,isOpen:t})=>a.jsxs($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",justifyContent:"space-between",h:8,textAlign:"center",fontWeight:500,color:"base.700",_dark:{color:"base.200"}},children:[a.jsx(Xy,{nodeId:e,isOpen:t}),a.jsx(i8,{nodeId:e}),a.jsxs($,{alignItems:"center",children:[a.jsx(lpe,{nodeId:e}),a.jsx(ape,{nodeId:e})]}),!t&&a.jsx(epe,{nodeId:e})]}),upe=d.memo(cpe),dpe=(e,t,n,r)=>ie(xe,o=>{if(!r)return vt.t("nodes.noFieldType");const{currentConnectionFieldType:s,connectionStartParams:i,nodes:l,edges:u}=o.nodes;if(!i||!s)return vt.t("nodes.noConnectionInProgress");const{handleType:p,nodeId:h,handleId:m}=i;if(!p||!h||!m)return vt.t("nodes.noConnectionData");const v=n==="target"?r:s,b=n==="source"?r:s;if(e===h)return vt.t("nodes.cannotConnectToSelf");if(n===p)return n==="source"?vt.t("nodes.cannotConnectOutputToOutput"):vt.t("nodes.cannotConnectInputToInput");if(u.find(x=>x.target===e&&x.targetHandle===t)&&v!=="CollectionItem")return vt.t("nodes.inputMayOnlyHaveOneConnection");if(b!==v){const x=b==="CollectionItem"&&!Us.includes(v),w=v==="CollectionItem"&&!Us.includes(b)&&!Gs.includes(b),k=Gs.includes(v)&&(()=>{if(!Gs.includes(v))return!1;const E=g5[v],M=v5[E];return b===E||b===M})(),_=b==="Collection"&&(Us.includes(v)||Gs.includes(v)),j=v==="Collection"&&Us.includes(b);if(!(x||w||k||_||j||b==="integer"&&v==="float"))return vt.t("nodes.fieldTypesMustMatch")}return n8(p==="source"?h:e,p==="source"?e:h,l,u)?null:vt.t("nodes.connectionWouldCreateCycle")}),fpe=(e,t,n)=>{const r=d.useMemo(()=>ie(xe,({nodes:s})=>{var l;const i=s.nodes.find(u=>u.id===e);if(Cn(i))return(l=i==null?void 0:i.data[Ub[n]][t])==null?void 0:l.type},we),[t,n,e]);return L(r)},ppe=ie(xe,({nodes:e})=>e.currentConnectionFieldType!==null&&e.connectionStartParams!==null),d8=({nodeId:e,fieldName:t,kind:n})=>{const r=fpe(e,t,n),o=d.useMemo(()=>ie(xe,({nodes:v})=>!!v.edges.filter(b=>(n==="input"?b.target:b.source)===e&&(n==="input"?b.targetHandle:b.sourceHandle)===t).length),[t,n,e]),s=d.useMemo(()=>dpe(e,t,n==="input"?"target":"source",r),[e,t,n,r]),i=d.useMemo(()=>ie(xe,({nodes:v})=>{var b,y,x;return((b=v.connectionStartParams)==null?void 0:b.nodeId)===e&&((y=v.connectionStartParams)==null?void 0:y.handleId)===t&&((x=v.connectionStartParams)==null?void 0:x.handleType)==={input:"target",output:"source"}[n]}),[t,n,e]),l=L(o),u=L(ppe),p=L(i),h=L(s),m=d.useMemo(()=>!!(u&&h&&!p),[h,u,p]);return{isConnected:l,isConnectionInProgress:u,isConnectionStartField:p,connectionError:h,shouldDim:m}},hpe=e=>{const{fieldTemplate:t,handleType:n,isConnectionInProgress:r,isConnectionStartField:o,connectionError:s}=e,{name:i,type:l}=t,{color:u,title:p}=Sd[l],h=d.useMemo(()=>{const v=Us.includes(l),b=Gs.includes(l),y=zA.includes(l),x=fd(u),w={backgroundColor:v||b?"var(--invokeai-colors-base-900)":x,position:"absolute",width:"1rem",height:"1rem",borderWidth:v||b?4:0,borderStyle:"solid",borderColor:x,borderRadius:y?4:"100%",zIndex:1};return n==="target"?w.insetInlineStart="-1rem":w.insetInlineEnd="-1rem",r&&!o&&s&&(w.filter="opacity(0.4) grayscale(0.7)"),r&&s?o?w.cursor="grab":w.cursor="not-allowed":w.cursor="crosshair",w},[s,n,r,o,l,u]),m=d.useMemo(()=>r&&o?p:r&&s?s??p:p,[s,r,o,p]);return a.jsx(Rt,{label:m,placement:n==="target"?"start":"end",hasArrow:!0,openDelay:xm,children:a.jsx(Ou,{type:n,id:i,position:n==="target"?Ul.Left:Ul.Right,style:h})})},f8=d.memo(hpe),mpe=({nodeId:e,fieldName:t})=>{const n=kg(e,t,"output"),{isConnected:r,isConnectionInProgress:o,isConnectionStartField:s,connectionError:i,shouldDim:l}=d8({nodeId:e,fieldName:t,kind:"output"});return(n==null?void 0:n.fieldKind)!=="output"?a.jsx(Eb,{shouldDim:l,children:a.jsxs(sn,{sx:{color:"error.400",textAlign:"right",fontSize:"sm"},children:["Unknown output: ",t]})}):a.jsxs(Eb,{shouldDim:l,children:[a.jsx(Rt,{label:a.jsx(Ly,{nodeId:e,fieldName:t,kind:"output"}),openDelay:xm,placement:"top",shouldWrapChildren:!0,hasArrow:!0,children:a.jsx(sn,{isDisabled:r,pe:2,children:a.jsx(Hn,{sx:{mb:0,fontWeight:500},children:n==null?void 0:n.title})})}),a.jsx(f8,{fieldTemplate:n,handleType:"source",isConnectionInProgress:o,isConnectionStartField:s,connectionError:i})]})},gpe=d.memo(mpe),Eb=d.memo(({shouldDim:e,children:t})=>a.jsx($,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",justifyContent:"flex-end"},children:t}));Eb.displayName="OutputFieldWrapper";const vpe=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{var i;const s=o.nodes.find(l=>l.id===e);if(Cn(s))return((i=s==null?void 0:s.data.inputs[t])==null?void 0:i.value)!==void 0},we),[t,e]);return L(n)},bpe=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{const s=o.nodes.find(u=>u.id===e);if(!Cn(s))return;const i=o.nodeTemplates[(s==null?void 0:s.data.type)??""],l=i==null?void 0:i.inputs[t];return l==null?void 0:l.input},we),[t,e]);return L(n)},xpe=({nodeId:e,fieldName:t,kind:n,children:r})=>{const o=ee(),s=dO(e,t),i=fO(e,t,n),l=bpe(e,t),{t:u}=Z(),p=d.useCallback(w=>{w.preventDefault()},[]),h=d.useMemo(()=>ie(xe,({nodes:w})=>({isExposed:!!w.workflow.exposedFields.find(_=>_.nodeId===e&&_.fieldName===t)}),we),[t,e]),m=d.useMemo(()=>["any","direct"].includes(l??"__UNKNOWN_INPUT__"),[l]),{isExposed:v}=L(h),b=d.useCallback(()=>{o(FA({nodeId:e,fieldName:t}))},[o,t,e]),y=d.useCallback(()=>{o(o5({nodeId:e,fieldName:t}))},[o,t,e]),x=d.useMemo(()=>{const w=[];return m&&!v&&w.push(a.jsx(Wt,{icon:a.jsx(ol,{}),onClick:b,children:"Add to Linear View"},`${e}.${t}.expose-field`)),m&&v&&w.push(a.jsx(Wt,{icon:a.jsx(VZ,{}),onClick:y,children:"Remove from Linear View"},`${e}.${t}.unexpose-field`)),w},[t,b,y,v,m,e]);return a.jsx(ky,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>x.length?a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:p,children:a.jsx(Sc,{title:s||i||u("nodes.unknownField"),children:x})}):null,children:r})},ype=d.memo(xpe),Cpe=({nodeId:e,fieldName:t})=>{const n=kg(e,t,"input"),r=vpe(e,t),{isConnected:o,isConnectionInProgress:s,isConnectionStartField:i,connectionError:l,shouldDim:u}=d8({nodeId:e,fieldName:t,kind:"input"}),p=d.useMemo(()=>{if((n==null?void 0:n.fieldKind)!=="input"||!n.required)return!1;if(!o&&n.input==="connection"||!r&&!o&&n.input==="any")return!0},[n,o,r]);return(n==null?void 0:n.fieldKind)!=="input"?a.jsx(Mb,{shouldDim:u,children:a.jsxs(sn,{sx:{color:"error.400",textAlign:"left",fontSize:"sm"},children:["Unknown input: ",t]})}):a.jsxs(Mb,{shouldDim:u,children:[a.jsxs(sn,{isInvalid:p,isDisabled:o,sx:{alignItems:"stretch",justifyContent:"space-between",ps:n.input==="direct"?0:2,gap:2,h:"full",w:"full"},children:[a.jsx(ype,{nodeId:e,fieldName:t,kind:"input",children:h=>a.jsx(Hn,{sx:{display:"flex",alignItems:"center",h:"full",mb:0,px:1,gap:2},children:a.jsx(hO,{ref:h,nodeId:e,fieldName:t,kind:"input",isMissingInput:p,withTooltip:!0})})}),a.jsx(Ie,{children:a.jsx(_O,{nodeId:e,fieldName:t})})]}),n.input!=="direct"&&a.jsx(f8,{fieldTemplate:n,handleType:"target",isConnectionInProgress:s,isConnectionStartField:i,connectionError:l})]})},hj=d.memo(Cpe),Mb=d.memo(({shouldDim:e,children:t})=>a.jsx($,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",w:"full",h:"full"},children:t}));Mb.displayName="InputFieldWrapper";const wpe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.outputs).filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},we),[e]);return L(t)},Spe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?Br(o.data.outputs,s=>BA.includes(s.type)):!1},we),[e]);return L(t)},kpe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.inputs).filter(i=>i.input==="connection").filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},we),[e]);return L(t)},_pe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.inputs).filter(i=>["any","direct"].includes(i.input)).filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},we),[e]);return L(t)},jpe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>{const s=kpe(e),i=_pe(e),l=wpe(e),u=Spe(e);return a.jsxs(Dg,{nodeId:e,selected:o,children:[a.jsx(upe,{nodeId:e,isOpen:t,label:n,selected:o,type:r}),t&&a.jsxs(a.Fragment,{children:[a.jsx($,{layerStyle:"nodeBody",sx:{flexDirection:"column",w:"full",h:"full",py:2,gap:1,borderBottomRadius:u?0:"base"},children:a.jsxs($,{sx:{flexDir:"column",px:2,w:"full",h:"full"},children:[a.jsxs(Ga,{gridTemplateColumns:"1fr auto",gridAutoRows:"1fr",children:[s.map((p,h)=>a.jsx(td,{gridColumnStart:1,gridRowStart:h+1,children:a.jsx(hj,{nodeId:e,fieldName:p})},`${e}.${p}.input-field`)),l.map((p,h)=>a.jsx(td,{gridColumnStart:2,gridRowStart:h+1,children:a.jsx(gpe,{nodeId:e,fieldName:p})},`${e}.${p}.output-field`))]}),i.map(p=>a.jsx(hj,{nodeId:e,fieldName:p},`${e}.${p}.input-field`))]})}),u&&a.jsx(Xfe,{nodeId:e})]})]})},Ppe=d.memo(jpe),Ipe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>a.jsxs(Dg,{nodeId:e,selected:o,children:[a.jsxs($,{className:Zi,layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",h:8,fontWeight:600,fontSize:"sm"},children:[a.jsx(Xy,{nodeId:e,isOpen:t}),a.jsx(ye,{sx:{w:"full",textAlign:"center",pe:8,color:"error.500",_dark:{color:"error.300"}},children:n?`${n} (${r})`:r})]}),t&&a.jsx($,{layerStyle:"nodeBody",sx:{userSelect:"auto",flexDirection:"column",w:"full",h:"full",p:4,gap:1,borderBottomRadius:"base",fontSize:"sm"},children:a.jsxs(Ie,{children:[a.jsx(ye,{as:"span",children:"Unknown node type: "}),a.jsx(ye,{as:"span",fontWeight:600,children:r})]})})]}),Epe=d.memo(Ipe),Mpe=e=>{const{data:t,selected:n}=e,{id:r,type:o,isOpen:s,label:i}=t,l=d.useMemo(()=>ie(xe,({nodes:p})=>!!p.nodeTemplates[o]),[o]);return L(l)?a.jsx(Ppe,{nodeId:r,isOpen:s,label:i,type:o,selected:n}):a.jsx(Epe,{nodeId:r,isOpen:s,label:i,type:o,selected:n})},Ope=d.memo(Mpe),Dpe=e=>{const{id:t,data:n,selected:r}=e,{notes:o,isOpen:s}=n,i=ee(),l=d.useCallback(u=>{i(HA({nodeId:t,value:u.target.value}))},[i,t]);return a.jsxs(Dg,{nodeId:t,selected:r,children:[a.jsxs($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:s?0:"base",alignItems:"center",justifyContent:"space-between",h:8},children:[a.jsx(Xy,{nodeId:t,isOpen:s}),a.jsx(i8,{nodeId:t,title:"Notes"}),a.jsx(Ie,{minW:8})]}),s&&a.jsx(a.Fragment,{children:a.jsx($,{layerStyle:"nodeBody",className:"nopan",sx:{cursor:"auto",flexDirection:"column",borderBottomRadius:"base",w:"full",h:"full",p:2,gap:1},children:a.jsx($,{className:"nopan",sx:{flexDir:"column",w:"full",h:"full"},children:a.jsx(sa,{value:o,onChange:l,rows:8,resize:"none",sx:{fontSize:"xs"}})})})})]})},Rpe=d.memo(Dpe),Ape=["Delete","Backspace"],Npe={collapsed:Nfe,default:$fe},Tpe={invocation:Ope,current_image:Bfe,notes:Rpe},$pe={hideAttribution:!0},Lpe=ie(xe,({nodes:e})=>{const{shouldSnapToGrid:t,selectionMode:n}=e;return{shouldSnapToGrid:t,selectionMode:n}},we),zpe=()=>{const e=ee(),t=L(j=>j.nodes.nodes),n=L(j=>j.nodes.edges),r=L(j=>j.nodes.viewport),{shouldSnapToGrid:o,selectionMode:s}=L(Lpe),i=Mfe(),[l]=ds("radii",["base"]),u=d.useCallback(j=>{e(WA(j))},[e]),p=d.useCallback(j=>{e(VA(j))},[e]),h=d.useCallback((j,I)=>{e(UA(I))},[e]),m=d.useCallback(j=>{e(GA(j))},[e]),v=d.useCallback(()=>{e(KA())},[e]),b=d.useCallback(j=>{e(qA(j))},[e]),y=d.useCallback(j=>{e(XA(j))},[e]),x=d.useCallback(({nodes:j,edges:I})=>{e(YA(j?j.map(E=>E.id):[])),e(QA(I?I.map(E=>E.id):[]))},[e]),w=d.useCallback((j,I)=>{e(ZA(I))},[e]),k=d.useCallback(()=>{e(x5())},[e]),_=d.useCallback(j=>{JA.set(j),j.fitView()},[]);return Ze(["Ctrl+c","Meta+c"],j=>{j.preventDefault(),e(e9())}),Ze(["Ctrl+a","Meta+a"],j=>{j.preventDefault(),e(t9())}),Ze(["Ctrl+v","Meta+v"],j=>{j.preventDefault(),e(n9())}),a.jsx(r9,{id:"workflow-editor",defaultViewport:r,nodeTypes:Tpe,edgeTypes:Npe,nodes:t,edges:n,onInit:_,onNodesChange:u,onEdgesChange:p,onEdgesDelete:b,onNodesDelete:y,onConnectStart:h,onConnect:m,onConnectEnd:v,onMoveEnd:w,connectionLineComponent:Rfe,onSelectionChange:x,isValidConnection:i,minZoom:.1,snapToGrid:o,snapGrid:[25,25],connectionRadius:30,proOptions:$pe,style:{borderRadius:l},onPaneClick:k,deleteKeyCode:Ape,selectionMode:s,children:a.jsx(cT,{})})},Fpe=()=>{const e=ee(),{t}=Z(),n=d.useCallback(()=>{e(m5())},[e]);return a.jsx($,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:2},children:a.jsx(Te,{tooltip:t("nodes.addNodeToolTip"),"aria-label":t("nodes.addNode"),icon:a.jsx(ol,{}),onClick:n})})},Bpe=d.memo(Fpe),Hpe=()=>{const e=ee(),t=zP("nodes"),{t:n}=Z();return d.useCallback(o=>{if(!o)return;const s=new FileReader;s.onload=async()=>{const i=s.result;try{const l=JSON.parse(String(i)),u=o9.safeParse(l);if(!u.success){const{message:p}=s9(u.error,{prefix:n("nodes.workflowValidation")});t.error({error:a9(u.error)},p),e(Tt(Ft({title:n("nodes.unableToValidateWorkflow"),status:"error",duration:5e3}))),s.abort();return}e(Wb(u.data)),s.abort()}catch{e(Tt(Ft({title:n("nodes.unableToLoadWorkflow"),status:"error"})))}},s.readAsText(o)},[e,t,n])},Wpe=d.memo(e=>e.error.issues[0]?a.jsx(ye,{children:xw(e.error.issues[0],{prefix:null}).toString()}):a.jsx(Od,{children:e.error.issues.map((t,n)=>a.jsx(lo,{children:a.jsx(ye,{children:xw(t,{prefix:null}).toString()})},n))}));Wpe.displayName="WorkflowValidationErrorContent";const Vpe=()=>{const{t:e}=Z(),t=d.useRef(null),n=Hpe();return a.jsx(aE,{resetRef:t,accept:"application/json",onChange:n,children:r=>a.jsx(Te,{icon:a.jsx(og,{}),tooltip:e("nodes.loadWorkflow"),"aria-label":e("nodes.loadWorkflow"),...r})})},Upe=d.memo(Vpe),Gpe=()=>{const{t:e}=Z(),t=ee(),{isOpen:n,onOpen:r,onClose:o}=Mr(),s=d.useRef(null),i=L(u=>u.nodes.nodes.length),l=d.useCallback(()=>{t(i9()),t(Tt(Ft({title:e("toast.nodesCleared"),status:"success"}))),o()},[t,e,o]);return a.jsxs(a.Fragment,{children:[a.jsx(Te,{icon:a.jsx(Kr,{}),tooltip:e("nodes.resetWorkflow"),"aria-label":e("nodes.resetWorkflow"),onClick:r,isDisabled:!i,colorScheme:"error"}),a.jsxs($d,{isOpen:n,onClose:o,leastDestructiveRef:s,isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:e("nodes.resetWorkflow")}),a.jsx(Vo,{py:4,children:a.jsxs($,{flexDir:"column",gap:2,children:[a.jsx(ye,{children:e("nodes.resetWorkflowDesc")}),a.jsx(ye,{variant:"subtext",children:e("nodes.resetWorkflowDesc2")})]})}),a.jsxs(gs,{children:[a.jsx(bc,{ref:s,onClick:o,children:e("common.cancel")}),a.jsx(bc,{colorScheme:"error",ml:3,onClick:l,children:e("common.accept")})]})]})]})]})},Kpe=d.memo(Gpe),qpe=()=>{const{t:e}=Z(),t=lO(),n=d.useCallback(()=>{const r=new Blob([JSON.stringify(t,null,2)]),o=document.createElement("a");o.href=URL.createObjectURL(r),o.download=`${t.name||"My Workflow"}.json`,document.body.appendChild(o),o.click(),o.remove()},[t]);return a.jsx(Te,{icon:a.jsx(ng,{}),tooltip:e("nodes.downloadWorkflow"),"aria-label":e("nodes.downloadWorkflow"),onClick:n})},Xpe=d.memo(qpe),Ype=()=>a.jsxs($,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:"50%",transform:"translate(-50%)"},children:[a.jsx(Xpe,{}),a.jsx(Upe,{}),a.jsx(Kpe,{})]}),Qpe=d.memo(Ype),Zpe=()=>a.jsx($,{sx:{gap:2,flexDir:"column"},children:rr(Sd,({title:e,description:t,color:n},r)=>a.jsx(Rt,{label:t,children:a.jsx(da,{sx:{userSelect:"none",color:parseInt(n.split(".")[1]??"0",10)<500?"base.800":"base.50",bg:n},textAlign:"center",children:e})},r))}),Jpe=d.memo(Zpe),ehe=()=>{const{t:e}=Z(),t=ee(),n=d.useCallback(()=>{t(l9())},[t]);return a.jsx(it,{leftIcon:a.jsx(ZZ,{}),tooltip:e("nodes.reloadNodeTemplates"),"aria-label":e("nodes.reloadNodeTemplates"),onClick:n,children:e("nodes.reloadNodeTemplates")})},the=d.memo(ehe),Iu={fontWeight:600},nhe=ie(xe,({nodes:e})=>{const{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionMode:s}=e;return{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionModeIsChecked:s===c9.Full}},we),rhe=Pe((e,t)=>{const{isOpen:n,onOpen:r,onClose:o}=Mr(),s=ee(),{shouldAnimateEdges:i,shouldValidateGraph:l,shouldSnapToGrid:u,shouldColorEdges:p,selectionModeIsChecked:h}=L(nhe),m=d.useCallback(k=>{s(u9(k.target.checked))},[s]),v=d.useCallback(k=>{s(d9(k.target.checked))},[s]),b=d.useCallback(k=>{s(f9(k.target.checked))},[s]),y=d.useCallback(k=>{s(p9(k.target.checked))},[s]),x=d.useCallback(k=>{s(h9(k.target.checked))},[s]),{t:w}=Z();return a.jsxs(a.Fragment,{children:[a.jsx(Te,{ref:t,"aria-label":w("nodes.workflowSettings"),tooltip:w("nodes.workflowSettings"),icon:a.jsx(RE,{}),onClick:r}),a.jsxs(Hi,{isOpen:n,onClose:o,size:"2xl",isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Wi,{children:[a.jsx(Ho,{children:w("nodes.workflowSettings")}),a.jsx(zd,{}),a.jsx(Vo,{children:a.jsxs($,{sx:{flexDirection:"column",gap:4,py:4},children:[a.jsx(io,{size:"sm",children:"General"}),a.jsx(Vt,{formLabelProps:Iu,onChange:v,isChecked:i,label:w("nodes.animatedEdges"),helperText:w("nodes.animatedEdgesHelp")}),a.jsx(Vr,{}),a.jsx(Vt,{formLabelProps:Iu,isChecked:u,onChange:b,label:w("nodes.snapToGrid"),helperText:w("nodes.snapToGridHelp")}),a.jsx(Vr,{}),a.jsx(Vt,{formLabelProps:Iu,isChecked:p,onChange:y,label:w("nodes.colorCodeEdges"),helperText:w("nodes.colorCodeEdgesHelp")}),a.jsx(Vt,{formLabelProps:Iu,isChecked:h,onChange:x,label:w("nodes.fullyContainNodes"),helperText:w("nodes.fullyContainNodesHelp")}),a.jsx(io,{size:"sm",pt:4,children:"Advanced"}),a.jsx(Vt,{formLabelProps:Iu,isChecked:l,onChange:m,label:w("nodes.validateConnections"),helperText:w("nodes.validateConnectionsHelp")}),a.jsx(the,{})]})})]})]})]})}),ohe=d.memo(rhe),she=()=>{const e=L(t=>t.nodes.shouldShowFieldTypeLegend);return a.jsxs($,{sx:{gap:2,position:"absolute",top:2,insetInlineEnd:2},children:[a.jsx(ohe,{}),e&&a.jsx(Jpe,{})]})},ahe=d.memo(she);function ihe(){const e=ee(),t=L(o=>o.nodes.nodeOpacity),{t:n}=Z(),r=d.useCallback(o=>{e(m9(o))},[e]);return a.jsx($,{alignItems:"center",children:a.jsxs(Lx,{"aria-label":n("nodes.nodeOpacity"),value:t,min:.5,max:1,step:.01,onChange:r,orientation:"vertical",defaultValue:30,h:"calc(100% - 0.5rem)",children:[a.jsx(Fx,{children:a.jsx(Bx,{})}),a.jsx(zx,{})]})})}function lhe(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"}}]})(e)}function che(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z"}}]})(e)}function uhe(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"}}]})(e)}const dhe=()=>{const{t:e}=Z(),{zoomIn:t,zoomOut:n,fitView:r}=Xb(),o=ee(),s=L(h=>h.nodes.shouldShowMinimapPanel),i=d.useCallback(()=>{t()},[t]),l=d.useCallback(()=>{n()},[n]),u=d.useCallback(()=>{r()},[r]),p=d.useCallback(()=>{o(g9(!s))},[s,o]);return a.jsxs(mn,{isAttached:!0,orientation:"vertical",children:[a.jsx(Te,{tooltip:e("nodes.zoomInNodes"),"aria-label":e("nodes.zoomInNodes"),onClick:i,icon:a.jsx(uhe,{})}),a.jsx(Te,{tooltip:e("nodes.zoomOutNodes"),"aria-label":e("nodes.zoomOutNodes"),onClick:l,icon:a.jsx(che,{})}),a.jsx(Te,{tooltip:e("nodes.fitViewportNodes"),"aria-label":e("nodes.fitViewportNodes"),onClick:u,icon:a.jsx(RZ,{})}),a.jsx(Te,{tooltip:e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),"aria-label":e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),isChecked:s,onClick:p,icon:a.jsx(WZ,{})})]})},fhe=d.memo(dhe),phe=()=>a.jsxs($,{sx:{gap:2,position:"absolute",bottom:2,insetInlineStart:2},children:[a.jsx(fhe,{}),a.jsx(ihe,{})]}),hhe=d.memo(phe),mhe=_e(rT),ghe=()=>{const e=L(r=>r.nodes.shouldShowMinimapPanel),t=Li("var(--invokeai-colors-accent-300)","var(--invokeai-colors-accent-600)"),n=Li("var(--invokeai-colors-blackAlpha-300)","var(--invokeai-colors-blackAlpha-600)");return a.jsx($,{sx:{gap:2,position:"absolute",bottom:2,insetInlineEnd:2},children:e&&a.jsx(mhe,{pannable:!0,zoomable:!0,nodeBorderRadius:15,sx:{m:"0 !important",backgroundColor:"base.200 !important",borderRadius:"base",_dark:{backgroundColor:"base.500 !important"},svg:{borderRadius:"inherit"}},nodeColor:t,maskColor:n})})},vhe=d.memo(ghe),bhe=()=>{const e=L(n=>n.nodes.isReady),{t}=Z();return a.jsxs($,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center"},children:[a.jsx(nr,{children:e&&a.jsxs(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"relative",width:"100%",height:"100%"},children:[a.jsx(zpe,{}),a.jsx($de,{}),a.jsx(Bpe,{}),a.jsx(Qpe,{}),a.jsx(ahe,{}),a.jsx(hhe,{}),a.jsx(vhe,{})]})}),a.jsx(nr,{children:!e&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"absolute",width:"100%",height:"100%"},children:a.jsx($,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center",pointerEvents:"none"},children:a.jsx(Kn,{label:t("nodes.loadingNodes"),icon:yg})})})})]})},xhe=d.memo(bhe),yhe=()=>a.jsx(v9,{children:a.jsx(xhe,{})}),Che=d.memo(yhe),whe=()=>a.jsx(BO,{}),She=d.memo(whe);var Ob={exports:{}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Konva=void 0;var n=yw;Object.defineProperty(t,"Konva",{enumerable:!0,get:function(){return n.Konva}});const r=yw;e.exports=r.Konva})(Ob,Ob.exports);var khe=Ob.exports;const pd=Rc(khe);var p8={exports:{}};/** + * @license React + * react-reconciler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var _he=function(t){var n={},r=d,o=Dp,s=Object.assign;function i(c){for(var f="https://reactjs.org/docs/error-decoder.html?invariant="+c,g=1;gJ||S[N]!==P[J]){var de=` +`+S[N].replace(" at new "," at ");return c.displayName&&de.includes("")&&(de=de.replace("",c.displayName)),de}while(1<=N&&0<=J);break}}}finally{Zc=!1,Error.prepareStackTrace=g}return(c=c?c.displayName||c.name:"")?ai(c):""}var Tg=Object.prototype.hasOwnProperty,ba=[],Je=-1;function St(c){return{current:c}}function xt(c){0>Je||(c.current=ba[Je],ba[Je]=null,Je--)}function kt(c,f){Je++,ba[Je]=c.current,c.current=f}var qn={},Ut=St(qn),kn=St(!1),lr=qn;function fl(c,f){var g=c.type.contextTypes;if(!g)return qn;var C=c.stateNode;if(C&&C.__reactInternalMemoizedUnmaskedChildContext===f)return C.__reactInternalMemoizedMaskedChildContext;var S={},P;for(P in g)S[P]=f[P];return C&&(c=c.stateNode,c.__reactInternalMemoizedUnmaskedChildContext=f,c.__reactInternalMemoizedMaskedChildContext=S),S}function gr(c){return c=c.childContextTypes,c!=null}function ef(){xt(kn),xt(Ut)}function e2(c,f,g){if(Ut.current!==qn)throw Error(i(168));kt(Ut,f),kt(kn,g)}function t2(c,f,g){var C=c.stateNode;if(f=f.childContextTypes,typeof C.getChildContext!="function")return g;C=C.getChildContext();for(var S in C)if(!(S in f))throw Error(i(108,R(c)||"Unknown",S));return s({},g,C)}function tf(c){return c=(c=c.stateNode)&&c.__reactInternalMemoizedMergedChildContext||qn,lr=Ut.current,kt(Ut,c),kt(kn,kn.current),!0}function n2(c,f,g){var C=c.stateNode;if(!C)throw Error(i(169));g?(c=t2(c,f,lr),C.__reactInternalMemoizedMergedChildContext=c,xt(kn),xt(Ut),kt(Ut,c)):xt(kn),kt(kn,g)}var So=Math.clz32?Math.clz32:P8,_8=Math.log,j8=Math.LN2;function P8(c){return c>>>=0,c===0?32:31-(_8(c)/j8|0)|0}var nf=64,rf=4194304;function eu(c){switch(c&-c){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return c&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return c&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return c}}function of(c,f){var g=c.pendingLanes;if(g===0)return 0;var C=0,S=c.suspendedLanes,P=c.pingedLanes,N=g&268435455;if(N!==0){var J=N&~S;J!==0?C=eu(J):(P&=N,P!==0&&(C=eu(P)))}else N=g&~S,N!==0?C=eu(N):P!==0&&(C=eu(P));if(C===0)return 0;if(f!==0&&f!==C&&!(f&S)&&(S=C&-C,P=f&-f,S>=P||S===16&&(P&4194240)!==0))return f;if(C&4&&(C|=g&16),f=c.entangledLanes,f!==0)for(c=c.entanglements,f&=C;0g;g++)f.push(c);return f}function tu(c,f,g){c.pendingLanes|=f,f!==536870912&&(c.suspendedLanes=0,c.pingedLanes=0),c=c.eventTimes,f=31-So(f),c[f]=g}function M8(c,f){var g=c.pendingLanes&~f;c.pendingLanes=f,c.suspendedLanes=0,c.pingedLanes=0,c.expiredLanes&=f,c.mutableReadLanes&=f,c.entangledLanes&=f,f=c.entanglements;var C=c.eventTimes;for(c=c.expirationTimes;0>=N,S-=N,Ds=1<<32-So(f)+S|g<Mt?(Bn=ht,ht=null):Bn=ht.sibling;var Ot=He(ce,ht,he[Mt],We);if(Ot===null){ht===null&&(ht=Bn);break}c&&ht&&Ot.alternate===null&&f(ce,ht),ne=P(Ot,ne,Mt),gt===null?nt=Ot:gt.sibling=Ot,gt=Ot,ht=Bn}if(Mt===he.length)return g(ce,ht),Zt&&li(ce,Mt),nt;if(ht===null){for(;MtMt?(Bn=ht,ht=null):Bn=ht.sibling;var ja=He(ce,ht,Ot.value,We);if(ja===null){ht===null&&(ht=Bn);break}c&&ht&&ja.alternate===null&&f(ce,ht),ne=P(ja,ne,Mt),gt===null?nt=ja:gt.sibling=ja,gt=ja,ht=Bn}if(Ot.done)return g(ce,ht),Zt&&li(ce,Mt),nt;if(ht===null){for(;!Ot.done;Mt++,Ot=he.next())Ot=pt(ce,Ot.value,We),Ot!==null&&(ne=P(Ot,ne,Mt),gt===null?nt=Ot:gt.sibling=Ot,gt=Ot);return Zt&&li(ce,Mt),nt}for(ht=C(ce,ht);!Ot.done;Mt++,Ot=he.next())Ot=qt(ht,ce,Mt,Ot.value,We),Ot!==null&&(c&&Ot.alternate!==null&&ht.delete(Ot.key===null?Mt:Ot.key),ne=P(Ot,ne,Mt),gt===null?nt=Ot:gt.sibling=Ot,gt=Ot);return c&&ht.forEach(function(m7){return f(ce,m7)}),Zt&&li(ce,Mt),nt}function $s(ce,ne,he,We){if(typeof he=="object"&&he!==null&&he.type===h&&he.key===null&&(he=he.props.children),typeof he=="object"&&he!==null){switch(he.$$typeof){case u:e:{for(var nt=he.key,gt=ne;gt!==null;){if(gt.key===nt){if(nt=he.type,nt===h){if(gt.tag===7){g(ce,gt.sibling),ne=S(gt,he.props.children),ne.return=ce,ce=ne;break e}}else if(gt.elementType===nt||typeof nt=="object"&&nt!==null&&nt.$$typeof===j&&C2(nt)===gt.type){g(ce,gt.sibling),ne=S(gt,he.props),ne.ref=ru(ce,gt,he),ne.return=ce,ce=ne;break e}g(ce,gt);break}else f(ce,gt);gt=gt.sibling}he.type===h?(ne=mi(he.props.children,ce.mode,We,he.key),ne.return=ce,ce=ne):(We=Wf(he.type,he.key,he.props,null,ce.mode,We),We.ref=ru(ce,ne,he),We.return=ce,ce=We)}return N(ce);case p:e:{for(gt=he.key;ne!==null;){if(ne.key===gt)if(ne.tag===4&&ne.stateNode.containerInfo===he.containerInfo&&ne.stateNode.implementation===he.implementation){g(ce,ne.sibling),ne=S(ne,he.children||[]),ne.return=ce,ce=ne;break e}else{g(ce,ne);break}else f(ce,ne);ne=ne.sibling}ne=V0(he,ce.mode,We),ne.return=ce,ce=ne}return N(ce);case j:return gt=he._init,$s(ce,ne,gt(he._payload),We)}if(X(he))return Bt(ce,ne,he,We);if(M(he))return yr(ce,ne,he,We);vf(ce,he)}return typeof he=="string"&&he!==""||typeof he=="number"?(he=""+he,ne!==null&&ne.tag===6?(g(ce,ne.sibling),ne=S(ne,he),ne.return=ce,ce=ne):(g(ce,ne),ne=W0(he,ce.mode,We),ne.return=ce,ce=ne),N(ce)):g(ce,ne)}return $s}var bl=w2(!0),S2=w2(!1),ou={},Jr=St(ou),su=St(ou),xl=St(ou);function Jo(c){if(c===ou)throw Error(i(174));return c}function r0(c,f){kt(xl,f),kt(su,c),kt(Jr,ou),c=z(f),xt(Jr),kt(Jr,c)}function yl(){xt(Jr),xt(su),xt(xl)}function k2(c){var f=Jo(xl.current),g=Jo(Jr.current);f=Y(g,c.type,f),g!==f&&(kt(su,c),kt(Jr,f))}function o0(c){su.current===c&&(xt(Jr),xt(su))}var ln=St(0);function bf(c){for(var f=c;f!==null;){if(f.tag===13){var g=f.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||Es(g)||ha(g)))return f}else if(f.tag===19&&f.memoizedProps.revealOrder!==void 0){if(f.flags&128)return f}else if(f.child!==null){f.child.return=f,f=f.child;continue}if(f===c)break;for(;f.sibling===null;){if(f.return===null||f.return===c)return null;f=f.return}f.sibling.return=f.return,f=f.sibling}return null}var s0=[];function a0(){for(var c=0;cg?g:4,c(!0);var C=i0.transition;i0.transition={};try{c(!1),f()}finally{Et=g,i0.transition=C}}function H2(){return eo().memoizedState}function H8(c,f,g){var C=Sa(c);if(g={lane:C,action:g,hasEagerState:!1,eagerState:null,next:null},W2(c))V2(f,g);else if(g=p2(c,f,g,C),g!==null){var S=Zn();to(g,c,C,S),U2(g,f,C)}}function W8(c,f,g){var C=Sa(c),S={lane:C,action:g,hasEagerState:!1,eagerState:null,next:null};if(W2(c))V2(f,S);else{var P=c.alternate;if(c.lanes===0&&(P===null||P.lanes===0)&&(P=f.lastRenderedReducer,P!==null))try{var N=f.lastRenderedState,J=P(N,g);if(S.hasEagerState=!0,S.eagerState=J,ko(J,N)){var de=f.interleaved;de===null?(S.next=S,Jg(f)):(S.next=de.next,de.next=S),f.interleaved=S;return}}catch{}finally{}g=p2(c,f,S,C),g!==null&&(S=Zn(),to(g,c,C,S),U2(g,f,C))}}function W2(c){var f=c.alternate;return c===cn||f!==null&&f===cn}function V2(c,f){au=yf=!0;var g=c.pending;g===null?f.next=f:(f.next=g.next,g.next=f),c.pending=f}function U2(c,f,g){if(g&4194240){var C=f.lanes;C&=c.pendingLanes,g|=C,f.lanes=g,zg(c,g)}}var Sf={readContext:Zr,useCallback:Xn,useContext:Xn,useEffect:Xn,useImperativeHandle:Xn,useInsertionEffect:Xn,useLayoutEffect:Xn,useMemo:Xn,useReducer:Xn,useRef:Xn,useState:Xn,useDebugValue:Xn,useDeferredValue:Xn,useTransition:Xn,useMutableSource:Xn,useSyncExternalStore:Xn,useId:Xn,unstable_isNewReconciler:!1},V8={readContext:Zr,useCallback:function(c,f){return es().memoizedState=[c,f===void 0?null:f],c},useContext:Zr,useEffect:A2,useImperativeHandle:function(c,f,g){return g=g!=null?g.concat([c]):null,Cf(4194308,4,$2.bind(null,f,c),g)},useLayoutEffect:function(c,f){return Cf(4194308,4,c,f)},useInsertionEffect:function(c,f){return Cf(4,2,c,f)},useMemo:function(c,f){var g=es();return f=f===void 0?null:f,c=c(),g.memoizedState=[c,f],c},useReducer:function(c,f,g){var C=es();return f=g!==void 0?g(f):f,C.memoizedState=C.baseState=f,c={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:c,lastRenderedState:f},C.queue=c,c=c.dispatch=H8.bind(null,cn,c),[C.memoizedState,c]},useRef:function(c){var f=es();return c={current:c},f.memoizedState=c},useState:D2,useDebugValue:h0,useDeferredValue:function(c){return es().memoizedState=c},useTransition:function(){var c=D2(!1),f=c[0];return c=B8.bind(null,c[1]),es().memoizedState=c,[f,c]},useMutableSource:function(){},useSyncExternalStore:function(c,f,g){var C=cn,S=es();if(Zt){if(g===void 0)throw Error(i(407));g=g()}else{if(g=f(),Fn===null)throw Error(i(349));ui&30||P2(C,f,g)}S.memoizedState=g;var P={value:g,getSnapshot:f};return S.queue=P,A2(E2.bind(null,C,P,c),[c]),C.flags|=2048,cu(9,I2.bind(null,C,P,g,f),void 0,null),g},useId:function(){var c=es(),f=Fn.identifierPrefix;if(Zt){var g=Rs,C=Ds;g=(C&~(1<<32-So(C)-1)).toString(32)+g,f=":"+f+"R"+g,g=iu++,0N0&&(f.flags|=128,C=!0,fu(S,!1),f.lanes=4194304)}else{if(!C)if(c=bf(P),c!==null){if(f.flags|=128,C=!0,c=c.updateQueue,c!==null&&(f.updateQueue=c,f.flags|=4),fu(S,!0),S.tail===null&&S.tailMode==="hidden"&&!P.alternate&&!Zt)return Yn(f),null}else 2*Ln()-S.renderingStartTime>N0&&g!==1073741824&&(f.flags|=128,C=!0,fu(S,!1),f.lanes=4194304);S.isBackwards?(P.sibling=f.child,f.child=P):(c=S.last,c!==null?c.sibling=P:f.child=P,S.last=P)}return S.tail!==null?(f=S.tail,S.rendering=f,S.tail=f.sibling,S.renderingStartTime=Ln(),f.sibling=null,c=ln.current,kt(ln,C?c&1|2:c&1),f):(Yn(f),null);case 22:case 23:return F0(),g=f.memoizedState!==null,c!==null&&c.memoizedState!==null!==g&&(f.flags|=8192),g&&f.mode&1?Tr&1073741824&&(Yn(f),ue&&f.subtreeFlags&6&&(f.flags|=8192)):Yn(f),null;case 24:return null;case 25:return null}throw Error(i(156,f.tag))}function Z8(c,f){switch(Ug(f),f.tag){case 1:return gr(f.type)&&ef(),c=f.flags,c&65536?(f.flags=c&-65537|128,f):null;case 3:return yl(),xt(kn),xt(Ut),a0(),c=f.flags,c&65536&&!(c&128)?(f.flags=c&-65537|128,f):null;case 5:return o0(f),null;case 13:if(xt(ln),c=f.memoizedState,c!==null&&c.dehydrated!==null){if(f.alternate===null)throw Error(i(340));ml()}return c=f.flags,c&65536?(f.flags=c&-65537|128,f):null;case 19:return xt(ln),null;case 4:return yl(),null;case 10:return Qg(f.type._context),null;case 22:case 23:return F0(),null;case 24:return null;default:return null}}var If=!1,Qn=!1,J8=typeof WeakSet=="function"?WeakSet:Set,Ge=null;function wl(c,f){var g=c.ref;if(g!==null)if(typeof g=="function")try{g(null)}catch(C){Jt(c,f,C)}else g.current=null}function S0(c,f,g){try{g()}catch(C){Jt(c,f,C)}}var uC=!1;function e7(c,f){for(B(c.containerInfo),Ge=f;Ge!==null;)if(c=Ge,f=c.child,(c.subtreeFlags&1028)!==0&&f!==null)f.return=c,Ge=f;else for(;Ge!==null;){c=Ge;try{var g=c.alternate;if(c.flags&1024)switch(c.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var C=g.memoizedProps,S=g.memoizedState,P=c.stateNode,N=P.getSnapshotBeforeUpdate(c.elementType===c.type?C:jo(c.type,C),S);P.__reactInternalSnapshotBeforeUpdate=N}break;case 3:ue&&Pt(c.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(J){Jt(c,c.return,J)}if(f=c.sibling,f!==null){f.return=c.return,Ge=f;break}Ge=c.return}return g=uC,uC=!1,g}function pu(c,f,g){var C=f.updateQueue;if(C=C!==null?C.lastEffect:null,C!==null){var S=C=C.next;do{if((S.tag&c)===c){var P=S.destroy;S.destroy=void 0,P!==void 0&&S0(f,g,P)}S=S.next}while(S!==C)}}function Ef(c,f){if(f=f.updateQueue,f=f!==null?f.lastEffect:null,f!==null){var g=f=f.next;do{if((g.tag&c)===c){var C=g.create;g.destroy=C()}g=g.next}while(g!==f)}}function k0(c){var f=c.ref;if(f!==null){var g=c.stateNode;switch(c.tag){case 5:c=W(g);break;default:c=g}typeof f=="function"?f(c):f.current=c}}function dC(c){var f=c.alternate;f!==null&&(c.alternate=null,dC(f)),c.child=null,c.deletions=null,c.sibling=null,c.tag===5&&(f=c.stateNode,f!==null&&je(f)),c.stateNode=null,c.return=null,c.dependencies=null,c.memoizedProps=null,c.memoizedState=null,c.pendingProps=null,c.stateNode=null,c.updateQueue=null}function fC(c){return c.tag===5||c.tag===3||c.tag===4}function pC(c){e:for(;;){for(;c.sibling===null;){if(c.return===null||fC(c.return))return null;c=c.return}for(c.sibling.return=c.return,c=c.sibling;c.tag!==5&&c.tag!==6&&c.tag!==18;){if(c.flags&2||c.child===null||c.tag===4)continue e;c.child.return=c,c=c.child}if(!(c.flags&2))return c.stateNode}}function _0(c,f,g){var C=c.tag;if(C===5||C===6)c=c.stateNode,f?At(g,c,f):Qe(g,c);else if(C!==4&&(c=c.child,c!==null))for(_0(c,f,g),c=c.sibling;c!==null;)_0(c,f,g),c=c.sibling}function j0(c,f,g){var C=c.tag;if(C===5||C===6)c=c.stateNode,f?$e(g,c,f):ve(g,c);else if(C!==4&&(c=c.child,c!==null))for(j0(c,f,g),c=c.sibling;c!==null;)j0(c,f,g),c=c.sibling}var Vn=null,Po=!1;function ns(c,f,g){for(g=g.child;g!==null;)P0(c,f,g),g=g.sibling}function P0(c,f,g){if(Yo&&typeof Yo.onCommitFiberUnmount=="function")try{Yo.onCommitFiberUnmount(sf,g)}catch{}switch(g.tag){case 5:Qn||wl(g,f);case 6:if(ue){var C=Vn,S=Po;Vn=null,ns(c,f,g),Vn=C,Po=S,Vn!==null&&(Po?ze(Vn,g.stateNode):ke(Vn,g.stateNode))}else ns(c,f,g);break;case 18:ue&&Vn!==null&&(Po?Dn(Vn,g.stateNode):Ng(Vn,g.stateNode));break;case 4:ue?(C=Vn,S=Po,Vn=g.stateNode.containerInfo,Po=!0,ns(c,f,g),Vn=C,Po=S):(me&&(C=g.stateNode.containerInfo,S=Mn(C),Qt(C,S)),ns(c,f,g));break;case 0:case 11:case 14:case 15:if(!Qn&&(C=g.updateQueue,C!==null&&(C=C.lastEffect,C!==null))){S=C=C.next;do{var P=S,N=P.destroy;P=P.tag,N!==void 0&&(P&2||P&4)&&S0(g,f,N),S=S.next}while(S!==C)}ns(c,f,g);break;case 1:if(!Qn&&(wl(g,f),C=g.stateNode,typeof C.componentWillUnmount=="function"))try{C.props=g.memoizedProps,C.state=g.memoizedState,C.componentWillUnmount()}catch(J){Jt(g,f,J)}ns(c,f,g);break;case 21:ns(c,f,g);break;case 22:g.mode&1?(Qn=(C=Qn)||g.memoizedState!==null,ns(c,f,g),Qn=C):ns(c,f,g);break;default:ns(c,f,g)}}function hC(c){var f=c.updateQueue;if(f!==null){c.updateQueue=null;var g=c.stateNode;g===null&&(g=c.stateNode=new J8),f.forEach(function(C){var S=c7.bind(null,c,C);g.has(C)||(g.add(C),C.then(S,S))})}}function Io(c,f){var g=f.deletions;if(g!==null)for(var C=0;C";case Of:return":has("+(M0(c)||"")+")";case Df:return'[role="'+c.value+'"]';case Af:return'"'+c.value+'"';case Rf:return'[data-testname="'+c.value+'"]';default:throw Error(i(365))}}function yC(c,f){var g=[];c=[c,0];for(var C=0;CS&&(S=N),C&=~P}if(C=S,C=Ln()-C,C=(120>C?120:480>C?480:1080>C?1080:1920>C?1920:3e3>C?3e3:4320>C?4320:1960*n7(C/1960))-C,10c?16:c,wa===null)var C=!1;else{if(c=wa,wa=null,zf=0,yt&6)throw Error(i(331));var S=yt;for(yt|=4,Ge=c.current;Ge!==null;){var P=Ge,N=P.child;if(Ge.flags&16){var J=P.deletions;if(J!==null){for(var de=0;deLn()-A0?fi(c,0):R0|=g),xr(c,f)}function EC(c,f){f===0&&(c.mode&1?(f=rf,rf<<=1,!(rf&130023424)&&(rf=4194304)):f=1);var g=Zn();c=Zo(c,f),c!==null&&(tu(c,f,g),xr(c,g))}function l7(c){var f=c.memoizedState,g=0;f!==null&&(g=f.retryLane),EC(c,g)}function c7(c,f){var g=0;switch(c.tag){case 13:var C=c.stateNode,S=c.memoizedState;S!==null&&(g=S.retryLane);break;case 19:C=c.stateNode;break;default:throw Error(i(314))}C!==null&&C.delete(f),EC(c,g)}var MC;MC=function(c,f,g){if(c!==null)if(c.memoizedProps!==f.pendingProps||kn.current)vr=!0;else{if(!(c.lanes&g)&&!(f.flags&128))return vr=!1,Y8(c,f,g);vr=!!(c.flags&131072)}else vr=!1,Zt&&f.flags&1048576&&i2(f,cf,f.index);switch(f.lanes=0,f.tag){case 2:var C=f.type;_f(c,f),c=f.pendingProps;var S=fl(f,Ut.current);vl(f,g),S=c0(null,f,C,c,S,g);var P=u0();return f.flags|=1,typeof S=="object"&&S!==null&&typeof S.render=="function"&&S.$$typeof===void 0?(f.tag=1,f.memoizedState=null,f.updateQueue=null,gr(C)?(P=!0,tf(f)):P=!1,f.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,e0(f),S.updater=gf,f.stateNode=S,S._reactInternals=f,n0(f,C,c,g),f=b0(null,f,C,!0,P,g)):(f.tag=0,Zt&&P&&Vg(f),cr(null,f,S,g),f=f.child),f;case 16:C=f.elementType;e:{switch(_f(c,f),c=f.pendingProps,S=C._init,C=S(C._payload),f.type=C,S=f.tag=d7(C),c=jo(C,c),S){case 0:f=v0(null,f,C,c,g);break e;case 1:f=nC(null,f,C,c,g);break e;case 11:f=Q2(null,f,C,c,g);break e;case 14:f=Z2(null,f,C,jo(C.type,c),g);break e}throw Error(i(306,C,""))}return f;case 0:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),v0(c,f,C,S,g);case 1:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),nC(c,f,C,S,g);case 3:e:{if(rC(f),c===null)throw Error(i(387));C=f.pendingProps,P=f.memoizedState,S=P.element,h2(c,f),mf(f,C,null,g);var N=f.memoizedState;if(C=N.element,Ce&&P.isDehydrated)if(P={element:C,isDehydrated:!1,cache:N.cache,pendingSuspenseBoundaries:N.pendingSuspenseBoundaries,transitions:N.transitions},f.updateQueue.baseState=P,f.memoizedState=P,f.flags&256){S=Cl(Error(i(423)),f),f=oC(c,f,C,g,S);break e}else if(C!==S){S=Cl(Error(i(424)),f),f=oC(c,f,C,g,S);break e}else for(Ce&&(Qr=qe(f.stateNode.containerInfo),Nr=f,Zt=!0,_o=null,nu=!1),g=S2(f,null,C,g),f.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(ml(),C===S){f=Ns(c,f,g);break e}cr(c,f,C,g)}f=f.child}return f;case 5:return k2(f),c===null&&Kg(f),C=f.type,S=f.pendingProps,P=c!==null?c.memoizedProps:null,N=S.children,U(C,S)?N=null:P!==null&&U(C,P)&&(f.flags|=32),tC(c,f),cr(c,f,N,g),f.child;case 6:return c===null&&Kg(f),null;case 13:return sC(c,f,g);case 4:return r0(f,f.stateNode.containerInfo),C=f.pendingProps,c===null?f.child=bl(f,null,C,g):cr(c,f,C,g),f.child;case 11:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),Q2(c,f,C,S,g);case 7:return cr(c,f,f.pendingProps,g),f.child;case 8:return cr(c,f,f.pendingProps.children,g),f.child;case 12:return cr(c,f,f.pendingProps.children,g),f.child;case 10:e:{if(C=f.type._context,S=f.pendingProps,P=f.memoizedProps,N=S.value,f2(f,C,N),P!==null)if(ko(P.value,N)){if(P.children===S.children&&!kn.current){f=Ns(c,f,g);break e}}else for(P=f.child,P!==null&&(P.return=f);P!==null;){var J=P.dependencies;if(J!==null){N=P.child;for(var de=J.firstContext;de!==null;){if(de.context===C){if(P.tag===1){de=As(-1,g&-g),de.tag=2;var Ee=P.updateQueue;if(Ee!==null){Ee=Ee.shared;var Ke=Ee.pending;Ke===null?de.next=de:(de.next=Ke.next,Ke.next=de),Ee.pending=de}}P.lanes|=g,de=P.alternate,de!==null&&(de.lanes|=g),Zg(P.return,g,f),J.lanes|=g;break}de=de.next}}else if(P.tag===10)N=P.type===f.type?null:P.child;else if(P.tag===18){if(N=P.return,N===null)throw Error(i(341));N.lanes|=g,J=N.alternate,J!==null&&(J.lanes|=g),Zg(N,g,f),N=P.sibling}else N=P.child;if(N!==null)N.return=P;else for(N=P;N!==null;){if(N===f){N=null;break}if(P=N.sibling,P!==null){P.return=N.return,N=P;break}N=N.return}P=N}cr(c,f,S.children,g),f=f.child}return f;case 9:return S=f.type,C=f.pendingProps.children,vl(f,g),S=Zr(S),C=C(S),f.flags|=1,cr(c,f,C,g),f.child;case 14:return C=f.type,S=jo(C,f.pendingProps),S=jo(C.type,S),Z2(c,f,C,S,g);case 15:return J2(c,f,f.type,f.pendingProps,g);case 17:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),_f(c,f),f.tag=1,gr(C)?(c=!0,tf(f)):c=!1,vl(f,g),x2(f,C,S),n0(f,C,S,g),b0(null,f,C,!0,c,g);case 19:return iC(c,f,g);case 22:return eC(c,f,g)}throw Error(i(156,f.tag))};function OC(c,f){return Fg(c,f)}function u7(c,f,g,C){this.tag=c,this.key=g,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=f,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=C,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function no(c,f,g,C){return new u7(c,f,g,C)}function H0(c){return c=c.prototype,!(!c||!c.isReactComponent)}function d7(c){if(typeof c=="function")return H0(c)?1:0;if(c!=null){if(c=c.$$typeof,c===x)return 11;if(c===_)return 14}return 2}function _a(c,f){var g=c.alternate;return g===null?(g=no(c.tag,f,c.key,c.mode),g.elementType=c.elementType,g.type=c.type,g.stateNode=c.stateNode,g.alternate=c,c.alternate=g):(g.pendingProps=f,g.type=c.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=c.flags&14680064,g.childLanes=c.childLanes,g.lanes=c.lanes,g.child=c.child,g.memoizedProps=c.memoizedProps,g.memoizedState=c.memoizedState,g.updateQueue=c.updateQueue,f=c.dependencies,g.dependencies=f===null?null:{lanes:f.lanes,firstContext:f.firstContext},g.sibling=c.sibling,g.index=c.index,g.ref=c.ref,g}function Wf(c,f,g,C,S,P){var N=2;if(C=c,typeof c=="function")H0(c)&&(N=1);else if(typeof c=="string")N=5;else e:switch(c){case h:return mi(g.children,S,P,f);case m:N=8,S|=8;break;case v:return c=no(12,g,f,S|2),c.elementType=v,c.lanes=P,c;case w:return c=no(13,g,f,S),c.elementType=w,c.lanes=P,c;case k:return c=no(19,g,f,S),c.elementType=k,c.lanes=P,c;case I:return Vf(g,S,P,f);default:if(typeof c=="object"&&c!==null)switch(c.$$typeof){case b:N=10;break e;case y:N=9;break e;case x:N=11;break e;case _:N=14;break e;case j:N=16,C=null;break e}throw Error(i(130,c==null?c:typeof c,""))}return f=no(N,g,f,S),f.elementType=c,f.type=C,f.lanes=P,f}function mi(c,f,g,C){return c=no(7,c,C,f),c.lanes=g,c}function Vf(c,f,g,C){return c=no(22,c,C,f),c.elementType=I,c.lanes=g,c.stateNode={isHidden:!1},c}function W0(c,f,g){return c=no(6,c,null,f),c.lanes=g,c}function V0(c,f,g){return f=no(4,c.children!==null?c.children:[],c.key,f),f.lanes=g,f.stateNode={containerInfo:c.containerInfo,pendingChildren:null,implementation:c.implementation},f}function f7(c,f,g,C,S){this.tag=f,this.containerInfo=c,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=oe,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Lg(0),this.expirationTimes=Lg(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Lg(0),this.identifierPrefix=C,this.onRecoverableError=S,Ce&&(this.mutableSourceEagerHydrationData=null)}function DC(c,f,g,C,S,P,N,J,de){return c=new f7(c,f,g,J,de),f===1?(f=1,P===!0&&(f|=8)):f=0,P=no(3,null,null,f),c.current=P,P.stateNode=c,P.memoizedState={element:C,isDehydrated:g,cache:null,transitions:null,pendingSuspenseBoundaries:null},e0(P),c}function RC(c){if(!c)return qn;c=c._reactInternals;e:{if(A(c)!==c||c.tag!==1)throw Error(i(170));var f=c;do{switch(f.tag){case 3:f=f.stateNode.context;break e;case 1:if(gr(f.type)){f=f.stateNode.__reactInternalMemoizedMergedChildContext;break e}}f=f.return}while(f!==null);throw Error(i(171))}if(c.tag===1){var g=c.type;if(gr(g))return t2(c,g,f)}return f}function AC(c){var f=c._reactInternals;if(f===void 0)throw typeof c.render=="function"?Error(i(188)):(c=Object.keys(c).join(","),Error(i(268,c)));return c=K(f),c===null?null:c.stateNode}function NC(c,f){if(c=c.memoizedState,c!==null&&c.dehydrated!==null){var g=c.retryLane;c.retryLane=g!==0&&g=Ee&&P>=pt&&S<=Ke&&N<=He){c.splice(f,1);break}else if(C!==Ee||g.width!==de.width||HeN){if(!(P!==pt||g.height!==de.height||KeS)){Ee>C&&(de.width+=Ee-C,de.x=C),KeP&&(de.height+=pt-P,de.y=P),Heg&&(g=N)),N ")+` + +No matching component was found for: + `)+c.join(" > ")}return null},n.getPublicRootInstance=function(c){if(c=c.current,!c.child)return null;switch(c.child.tag){case 5:return W(c.child.stateNode);default:return c.child.stateNode}},n.injectIntoDevTools=function(c){if(c={bundleType:c.bundleType,version:c.version,rendererPackageName:c.rendererPackageName,rendererConfig:c.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:l.ReactCurrentDispatcher,findHostInstanceByFiber:p7,findFiberByHostInstance:c.findFiberByHostInstance||h7,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")c=!1;else{var f=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(f.isDisabled||!f.supportsFiber)c=!0;else{try{sf=f.inject(c),Yo=f}catch{}c=!!f.checkDCE}}return c},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(c,f,g,C){if(!Ue)throw Error(i(363));c=O0(c,f);var S=mt(c,g,C).disconnect;return{disconnect:function(){S()}}},n.registerMutableSourceForHydration=function(c,f){var g=f._getVersion;g=g(f._source),c.mutableSourceEagerHydrationData==null?c.mutableSourceEagerHydrationData=[f,g]:c.mutableSourceEagerHydrationData.push(f,g)},n.runWithPriority=function(c,f){var g=Et;try{return Et=c,f()}finally{Et=g}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(c,f,g,C){var S=f.current,P=Zn(),N=Sa(S);return g=RC(g),f.context===null?f.context=g:f.pendingContext=g,f=As(P,N),f.payload={element:c},C=C===void 0?null:C,C!==null&&(f.callback=C),c=ya(S,f,N),c!==null&&(to(c,S,N,P),hf(c,S,N)),N},n};p8.exports=_he;var jhe=p8.exports;const Phe=Rc(jhe);var h8={exports:{}},ll={};/** + * @license React + * react-reconciler-constants.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ll.ConcurrentRoot=1;ll.ContinuousEventPriority=4;ll.DefaultEventPriority=16;ll.DiscreteEventPriority=1;ll.IdleEventPriority=536870912;ll.LegacyRoot=0;h8.exports=ll;var m8=h8.exports;const mj={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let gj=!1,vj=!1;const Qy=".react-konva-event",Ihe=`ReactKonva: You have a Konva node with draggable = true and position defined but no onDragMove or onDragEnd events are handled. +Position of a node will be changed during drag&drop, so you should update state of the react app as well. +Consider to add onDragMove or onDragEnd events. +For more info see: https://github.com/konvajs/react-konva/issues/256 +`,Ehe=`ReactKonva: You are using "zIndex" attribute for a Konva node. +react-konva may get confused with ordering. Just define correct order of elements in your render function of a component. +For more info see: https://github.com/konvajs/react-konva/issues/194 +`,Mhe={};function Rg(e,t,n=Mhe){if(!gj&&"zIndex"in t&&(console.warn(Ehe),gj=!0),!vj&&t.draggable){var r=t.x!==void 0||t.y!==void 0,o=t.onDragEnd||t.onDragMove;r&&!o&&(console.warn(Ihe),vj=!0)}for(var s in n)if(!mj[s]){var i=s.slice(0,2)==="on",l=n[s]!==t[s];if(i&&l){var u=s.substr(2).toLowerCase();u.substr(0,7)==="content"&&(u="content"+u.substr(7,1).toUpperCase()+u.substr(8)),e.off(u,n[s])}var p=!t.hasOwnProperty(s);p&&e.setAttr(s,void 0)}var h=t._useStrictMode,m={},v=!1;const b={};for(var s in t)if(!mj[s]){var i=s.slice(0,2)==="on",y=n[s]!==t[s];if(i&&y){var u=s.substr(2).toLowerCase();u.substr(0,7)==="content"&&(u="content"+u.substr(7,1).toUpperCase()+u.substr(8)),t[s]&&(b[u]=t[s])}!i&&(t[s]!==n[s]||h&&t[s]!==e.getAttr(s))&&(v=!0,m[s]=t[s])}v&&(e.setAttrs(m),si(e));for(var u in b)e.on(u+Qy,b[u])}function si(e){if(!b9.Konva.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const g8={},Ohe={};pd.Node.prototype._applyProps=Rg;function Dhe(e,t){if(typeof t=="string"){console.error(`Do not use plain text as child of Konva.Node. You are using text: ${t}`);return}e.add(t),si(e)}function Rhe(e,t,n){let r=pd[e];r||(console.error(`Konva has no node with the type ${e}. Group will be used instead. If you use minimal version of react-konva, just import required nodes into Konva: "import "konva/lib/shapes/${e}" If you want to render DOM elements as part of canvas tree take a look into this demo: https://konvajs.github.io/docs/react/DOM_Portal.html`),r=pd.Group);const o={},s={};for(var i in t){var l=i.slice(0,2)==="on";l?s[i]=t[i]:o[i]=t[i]}const u=new r(o);return Rg(u,s),u}function Ahe(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function Nhe(e,t,n){return!1}function The(e){return e}function $he(){return null}function Lhe(){return null}function zhe(e,t,n,r){return Ohe}function Fhe(){}function Bhe(e){}function Hhe(e,t){return!1}function Whe(){return g8}function Vhe(){return g8}const Uhe=setTimeout,Ghe=clearTimeout,Khe=-1;function qhe(e,t){return!1}const Xhe=!1,Yhe=!0,Qhe=!0;function Zhe(e,t){t.parent===e?t.moveToTop():e.add(t),si(e)}function Jhe(e,t){t.parent===e?t.moveToTop():e.add(t),si(e)}function v8(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),si(e)}function eme(e,t,n){v8(e,t,n)}function tme(e,t){t.destroy(),t.off(Qy),si(e)}function nme(e,t){t.destroy(),t.off(Qy),si(e)}function rme(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function ome(e,t,n){}function sme(e,t,n,r,o){Rg(e,o,r)}function ame(e){e.hide(),si(e)}function ime(e){}function lme(e,t){(t.visible==null||t.visible)&&e.show()}function cme(e,t){}function ume(e){}function dme(){}const fme=()=>m8.DefaultEventPriority,pme=Object.freeze(Object.defineProperty({__proto__:null,appendChild:Zhe,appendChildToContainer:Jhe,appendInitialChild:Dhe,cancelTimeout:Ghe,clearContainer:ume,commitMount:ome,commitTextUpdate:rme,commitUpdate:sme,createInstance:Rhe,createTextInstance:Ahe,detachDeletedInstance:dme,finalizeInitialChildren:Nhe,getChildHostContext:Vhe,getCurrentEventPriority:fme,getPublicInstance:The,getRootHostContext:Whe,hideInstance:ame,hideTextInstance:ime,idlePriority:Dp.unstable_IdlePriority,insertBefore:v8,insertInContainerBefore:eme,isPrimaryRenderer:Xhe,noTimeout:Khe,now:Dp.unstable_now,prepareForCommit:$he,preparePortalMount:Lhe,prepareUpdate:zhe,removeChild:tme,removeChildFromContainer:nme,resetAfterCommit:Fhe,resetTextContent:Bhe,run:Dp.unstable_runWithPriority,scheduleTimeout:Uhe,shouldDeprioritizeSubtree:Hhe,shouldSetTextContent:qhe,supportsMutation:Qhe,unhideInstance:lme,unhideTextInstance:cme,warnsIfNotActing:Yhe},Symbol.toStringTag,{value:"Module"}));var hme=Object.defineProperty,mme=Object.defineProperties,gme=Object.getOwnPropertyDescriptors,bj=Object.getOwnPropertySymbols,vme=Object.prototype.hasOwnProperty,bme=Object.prototype.propertyIsEnumerable,xj=(e,t,n)=>t in e?hme(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yj=(e,t)=>{for(var n in t||(t={}))vme.call(t,n)&&xj(e,n,t[n]);if(bj)for(var n of bj(t))bme.call(t,n)&&xj(e,n,t[n]);return e},xme=(e,t)=>mme(e,gme(t));function b8(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const o=b8(r,t,n);if(o)return o;r=t?null:r.sibling}}function x8(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const Zy=x8(d.createContext(null));class y8 extends d.Component{render(){return d.createElement(Zy.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:Cj,ReactCurrentDispatcher:wj}=d.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function yme(){const e=d.useContext(Zy);if(e===null)throw new Error("its-fine: useFiber must be called within a !");const t=d.useId();return d.useMemo(()=>{for(const r of[Cj==null?void 0:Cj.current,e,e==null?void 0:e.alternate]){if(!r)continue;const o=b8(r,!1,s=>{let i=s.memoizedState;for(;i;){if(i.memoizedState===t)return!0;i=i.next}});if(o)return o}},[e,t])}function Cme(){var e,t;const n=yme(),[r]=d.useState(()=>new Map);r.clear();let o=n;for(;o;){const s=(e=o.type)==null?void 0:e._context;s&&s!==Zy&&!r.has(s)&&r.set(s,(t=wj==null?void 0:wj.current)==null?void 0:t.readContext(x8(s))),o=o.return}return r}function wme(){const e=Cme();return d.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>r=>d.createElement(t,null,d.createElement(n.Provider,xme(yj({},r),{value:e.get(n)}))),t=>d.createElement(y8,yj({},t))),[e])}function Sme(e){const t=H.useRef({});return H.useLayoutEffect(()=>{t.current=e}),H.useLayoutEffect(()=>()=>{t.current={}},[]),t.current}const kme=e=>{const t=H.useRef(),n=H.useRef(),r=H.useRef(),o=Sme(e),s=wme(),i=l=>{const{forwardedRef:u}=e;u&&(typeof u=="function"?u(l):u.current=l)};return H.useLayoutEffect(()=>(n.current=new pd.Stage({width:e.width,height:e.height,container:t.current}),i(n.current),r.current=$u.createContainer(n.current,m8.LegacyRoot,!1,null),$u.updateContainer(H.createElement(s,{},e.children),r.current),()=>{pd.isBrowser&&(i(null),$u.updateContainer(null,r.current,null),n.current.destroy())}),[]),H.useLayoutEffect(()=>{i(n.current),Rg(n.current,e,o),$u.updateContainer(H.createElement(s,{},e.children),r.current,null)}),H.createElement("div",{ref:t,id:e.id,accessKey:e.accessKey,className:e.className,role:e.role,style:e.style,tabIndex:e.tabIndex,title:e.title})},Eu="Layer",aa="Group",ks="Rect",vi="Circle",dm="Line",C8="Image",_me="Transformer",$u=Phe(pme);$u.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:H.version,rendererPackageName:"react-konva"});const jme=H.forwardRef((e,t)=>H.createElement(y8,{},H.createElement(kme,{...e,forwardedRef:t}))),Pme=ie([Lt,Co],(e,t)=>{const{tool:n,isMovingBoundingBox:r}=e;return{tool:n,isStaging:t,isMovingBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:_t}}),Ime=()=>{const e=ee(),{tool:t,isStaging:n,isMovingBoundingBox:r}=L(Pme);return{handleDragStart:d.useCallback(()=>{(t==="move"||n)&&!r&&e(Qp(!0))},[e,r,n,t]),handleDragMove:d.useCallback(o=>{if(!((t==="move"||n)&&!r))return;const s={x:o.target.x(),y:o.target.y()};e(y5(s))},[e,r,n,t]),handleDragEnd:d.useCallback(()=>{(t==="move"||n)&&!r&&e(Qp(!1))},[e,r,n,t])}},Eme=ie([Lt,wn,Co],(e,t,n)=>{const{cursorPosition:r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isMaskEnabled:l,shouldSnapToGrid:u}=e;return{activeTabName:t,isCursorOnCanvas:!!r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isStaging:n,isMaskEnabled:l,shouldSnapToGrid:u}},{memoizeOptions:{resultEqualityCheck:_t}}),Mme=()=>{const e=ee(),{activeTabName:t,shouldShowBoundingBox:n,tool:r,isStaging:o,isMaskEnabled:s,shouldSnapToGrid:i}=L(Eme),l=d.useRef(null),u=C5(),p=()=>e(w5());Ze(["shift+c"],()=>{p()},{enabled:()=>!o,preventDefault:!0},[]);const h=()=>e(Qb(!s));Ze(["h"],()=>{h()},{enabled:()=>!o,preventDefault:!0},[s]),Ze(["n"],()=>{e(Zp(!i))},{enabled:!0,preventDefault:!0},[i]),Ze("esc",()=>{e(x9())},{enabled:()=>!0,preventDefault:!0}),Ze("shift+h",()=>{e(y9(!n))},{enabled:()=>!o,preventDefault:!0},[t,n]),Ze(["space"],m=>{m.repeat||(u==null||u.container().focus(),r!=="move"&&(l.current=r,e(Jl("move"))),r==="move"&&l.current&&l.current!=="move"&&(e(Jl(l.current)),l.current="move"))},{keyup:!0,keydown:!0,preventDefault:!0},[r,l])},Jy=e=>{const t=e.getPointerPosition(),n=e.getAbsoluteTransform().copy();if(!t||!n)return;const r=n.invert().point(t);return{x:r.x,y:r.y}},w8=()=>{const e=ee(),t=f1(),n=C5();return{updateColorUnderCursor:()=>{if(!n||!t)return;const r=n.getPointerPosition();if(!r)return;const o=C9.pixelRatio,[s,i,l,u]=t.getContext().getImageData(r.x*o,r.y*o,1,1).data;u&&s&&i&&l&&e(w9({r:s,g:i,b:l,a:u}))},commitColorUnderCursor:()=>{e(S9())}}},Ome=ie([wn,Lt,Co],(e,t,n)=>{const{tool:r}=t;return{tool:r,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:_t}}),Dme=e=>{const t=ee(),{tool:n,isStaging:r}=L(Ome),{commitColorUnderCursor:o}=w8();return d.useCallback(s=>{if(!e.current)return;if(e.current.container().focus(),n==="move"||r){t(Qp(!0));return}if(n==="colorPicker"){o();return}const i=Jy(e.current);i&&(s.evt.preventDefault(),t(S5(!0)),t(k9([i.x,i.y])))},[e,n,r,t,o])},Rme=ie([wn,Lt,Co],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:_t}}),Ame=(e,t,n)=>{const r=ee(),{isDrawing:o,tool:s,isStaging:i}=L(Rme),{updateColorUnderCursor:l}=w8();return d.useCallback(()=>{if(!e.current)return;const u=Jy(e.current);if(u){if(r(_9(u)),n.current=u,s==="colorPicker"){l();return}!o||s==="move"||i||(t.current=!0,r(k5([u.x,u.y])))}},[t,r,o,i,n,e,s,l])},Nme=()=>{const e=ee();return d.useCallback(()=>{e(j9())},[e])},Tme=ie([wn,Lt,Co],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:_t}}),$me=(e,t)=>{const n=ee(),{tool:r,isDrawing:o,isStaging:s}=L(Tme);return d.useCallback(()=>{if(r==="move"||s){n(Qp(!1));return}if(!t.current&&o&&e.current){const i=Jy(e.current);if(!i)return;n(k5([i.x,i.y]))}else t.current=!1;n(S5(!1))},[t,n,o,s,e,r])},Lme=ie([Lt],e=>{const{isMoveStageKeyHeld:t,stageScale:n}=e;return{isMoveStageKeyHeld:t,stageScale:n}},{memoizeOptions:{resultEqualityCheck:_t}}),zme=e=>{const t=ee(),{isMoveStageKeyHeld:n,stageScale:r}=L(Lme);return d.useCallback(o=>{if(!e.current||n)return;o.evt.preventDefault();const s=e.current.getPointerPosition();if(!s)return;const i={x:(s.x-e.current.x())/r,y:(s.y-e.current.y())/r};let l=o.evt.deltaY;o.evt.ctrlKey&&(l=-l);const u=Ni(r*E9**l,I9,P9),p={x:s.x-i.x*u,y:s.y-i.y*u};t(M9(u)),t(y5(p))},[e,n,r,t])},Fme=ie(Lt,e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,stageDimensions:r,stageScale:o,shouldDarkenOutsideBoundingBox:s,stageCoordinates:i}=e;return{boundingBoxCoordinates:t,boundingBoxDimensions:n,shouldDarkenOutsideBoundingBox:s,stageCoordinates:i,stageDimensions:r,stageScale:o}},{memoizeOptions:{resultEqualityCheck:_t}}),Bme=()=>{const{boundingBoxCoordinates:e,boundingBoxDimensions:t,shouldDarkenOutsideBoundingBox:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=L(Fme);return a.jsxs(aa,{children:[a.jsx(ks,{offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fill:"rgba(0,0,0,0.4)",listening:!1,visible:n}),a.jsx(ks,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,visible:n,globalCompositeOperation:"destination-out"})]})},Hme=d.memo(Bme),Wme=ie([Lt],e=>{const{stageScale:t,stageCoordinates:n,stageDimensions:r}=e;return{stageScale:t,stageCoordinates:n,stageDimensions:r}},{memoizeOptions:{resultEqualityCheck:_t}}),Vme=()=>{const{stageScale:e,stageCoordinates:t,stageDimensions:n}=L(Wme),{colorMode:r}=la(),[o,s]=d.useState([]),[i,l]=ds("colors",["base.800","base.200"]),u=d.useCallback(p=>p/e,[e]);return d.useLayoutEffect(()=>{const{width:p,height:h}=n,{x:m,y:v}=t,b={x1:0,y1:0,x2:p,y2:h,offset:{x:u(m),y:u(v)}},y={x:Math.ceil(u(m)/64)*64,y:Math.ceil(u(v)/64)*64},x={x1:-y.x,y1:-y.y,x2:u(p)-y.x+64,y2:u(h)-y.y+64},k={x1:Math.min(b.x1,x.x1),y1:Math.min(b.y1,x.y1),x2:Math.max(b.x2,x.x2),y2:Math.max(b.y2,x.y2)},_=k.x2-k.x1,j=k.y2-k.y1,I=Math.round(_/64)+1,E=Math.round(j/64)+1,M=Iw(0,I).map(R=>a.jsx(dm,{x:k.x1+R*64,y:k.y1,points:[0,0,0,j],stroke:r==="dark"?i:l,strokeWidth:1},`x_${R}`)),D=Iw(0,E).map(R=>a.jsx(dm,{x:k.x1,y:k.y1+R*64,points:[0,0,_,0],stroke:r==="dark"?i:l,strokeWidth:1},`y_${R}`));s(M.concat(D))},[e,t,n,u,r,i,l]),a.jsx(aa,{children:o})},Ume=d.memo(Vme),Gme=ie([xo,Lt],(e,t)=>{const{progressImage:n,sessionId:r}=e,{sessionId:o,boundingBox:s}=t.layerState.stagingArea;return{boundingBox:s,progressImage:r===o?n:void 0}},{memoizeOptions:{resultEqualityCheck:_t}}),Kme=e=>{const{...t}=e,{progressImage:n,boundingBox:r}=L(Gme),[o,s]=d.useState(null);return d.useEffect(()=>{if(!n)return;const i=new Image;i.onload=()=>{s(i)},i.src=n.dataURL},[n]),n&&r&&o?a.jsx(C8,{x:r.x,y:r.y,width:r.width,height:r.height,image:o,listening:!1,...t}):null},qme=d.memo(Kme),Ai=e=>{const{r:t,g:n,b:r,a:o}=e;return`rgba(${t}, ${n}, ${r}, ${o})`},Xme=ie(Lt,e=>{const{maskColor:t,stageCoordinates:n,stageDimensions:r,stageScale:o}=e;return{stageCoordinates:n,stageDimensions:r,stageScale:o,maskColorString:Ai(t)}}),Sj=e=>`data:image/svg+xml;utf8, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`.replaceAll("black",e),Yme=e=>{const{...t}=e,{maskColorString:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=L(Xme),[i,l]=d.useState(null),[u,p]=d.useState(0),h=d.useRef(null),m=d.useCallback(()=>{p(u+1),setTimeout(m,500)},[u]);return d.useEffect(()=>{if(i)return;const v=new Image;v.onload=()=>{l(v)},v.src=Sj(n)},[i,n]),d.useEffect(()=>{i&&(i.src=Sj(n))},[i,n]),d.useEffect(()=>{const v=setInterval(()=>p(b=>(b+1)%5),50);return()=>clearInterval(v)},[]),!i||!_l(r.x)||!_l(r.y)||!_l(s)||!_l(o.width)||!_l(o.height)?null:a.jsx(ks,{ref:h,offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fillPatternImage:i,fillPatternOffsetY:_l(u)?u:0,fillPatternRepeat:"repeat",fillPatternScale:{x:1/s,y:1/s},listening:!0,globalCompositeOperation:"source-in",...t})},Qme=d.memo(Yme),Zme=ie([Lt],e=>({objects:e.layerState.objects}),{memoizeOptions:{resultEqualityCheck:_t}}),Jme=e=>{const{...t}=e,{objects:n}=L(Zme);return a.jsx(aa,{listening:!1,...t,children:n.filter(O9).map((r,o)=>a.jsx(dm,{points:r.points,stroke:"rgb(0,0,0)",strokeWidth:r.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,listening:!1,globalCompositeOperation:r.tool==="brush"?"source-over":"destination-out"},o))})},ege=d.memo(Jme);var bi=d,tge=function(t,n,r){const o=bi.useRef("loading"),s=bi.useRef(),[i,l]=bi.useState(0),u=bi.useRef(),p=bi.useRef(),h=bi.useRef();return(u.current!==t||p.current!==n||h.current!==r)&&(o.current="loading",s.current=void 0,u.current=t,p.current=n,h.current=r),bi.useLayoutEffect(function(){if(!t)return;var m=document.createElement("img");function v(){o.current="loaded",s.current=m,l(Math.random())}function b(){o.current="failed",s.current=void 0,l(Math.random())}return m.addEventListener("load",v),m.addEventListener("error",b),n&&(m.crossOrigin=n),r&&(m.referrerPolicy=r),m.src=t,function(){m.removeEventListener("load",v),m.removeEventListener("error",b)}},[t,n,r]),[s.current,o.current]};const nge=Rc(tge),rge=e=>{const{width:t,height:n,x:r,y:o,imageName:s}=e.canvasImage,{currentData:i,isError:l}=Wr(s??Er.skipToken),[u]=nge((i==null?void 0:i.image_url)??"",D9.get()?"use-credentials":"anonymous");return l?a.jsx(ks,{x:r,y:o,width:t,height:n,fill:"red"}):a.jsx(C8,{x:r,y:o,image:u,listening:!1})},S8=d.memo(rge),oge=ie([Lt],e=>{const{layerState:{objects:t}}=e;return{objects:t}},{memoizeOptions:{resultEqualityCheck:_t}}),sge=()=>{const{objects:e}=L(oge);return e?a.jsx(aa,{name:"outpainting-objects",listening:!1,children:e.map((t,n)=>{if(R9(t))return a.jsx(S8,{canvasImage:t},n);if(A9(t)){const r=a.jsx(dm,{points:t.points,stroke:t.color?Ai(t.color):"rgb(0,0,0)",strokeWidth:t.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,listening:!1,globalCompositeOperation:t.tool==="brush"?"source-over":"destination-out"},n);return t.clip?a.jsx(aa,{clipX:t.clip.x,clipY:t.clip.y,clipWidth:t.clip.width,clipHeight:t.clip.height,children:r},n):r}else{if(N9(t))return a.jsx(ks,{x:t.x,y:t.y,width:t.width,height:t.height,fill:Ai(t.color)},n);if(T9(t))return a.jsx(ks,{x:t.x,y:t.y,width:t.width,height:t.height,fill:"rgb(255, 255, 255)",globalCompositeOperation:"destination-out"},n)}})}):null},age=d.memo(sge),ige=ie([Lt],e=>{const{layerState:t,shouldShowStagingImage:n,shouldShowStagingOutline:r,boundingBoxCoordinates:{x:o,y:s},boundingBoxDimensions:{width:i,height:l}}=e,{selectedImageIndex:u,images:p}=t.stagingArea;return{currentStagingAreaImage:p.length>0&&u!==void 0?p[u]:void 0,isOnFirstImage:u===0,isOnLastImage:u===p.length-1,shouldShowStagingImage:n,shouldShowStagingOutline:r,x:o,y:s,width:i,height:l}},{memoizeOptions:{resultEqualityCheck:_t}}),lge=e=>{const{...t}=e,{currentStagingAreaImage:n,shouldShowStagingImage:r,shouldShowStagingOutline:o,x:s,y:i,width:l,height:u}=L(ige);return a.jsxs(aa,{...t,children:[r&&n&&a.jsx(S8,{canvasImage:n}),o&&a.jsxs(aa,{children:[a.jsx(ks,{x:s,y:i,width:l,height:u,strokeWidth:1,stroke:"white",strokeScaleEnabled:!1}),a.jsx(ks,{x:s,y:i,width:l,height:u,dash:[4,4],strokeWidth:1,stroke:"black",strokeScaleEnabled:!1})]})]})},cge=d.memo(lge),uge=ie([Lt],e=>{const{layerState:{stagingArea:{images:t,selectedImageIndex:n,sessionId:r}},shouldShowStagingOutline:o,shouldShowStagingImage:s}=e;return{currentStagingAreaImage:t.length>0?t[n]:void 0,isOnFirstImage:n===0,isOnLastImage:n===t.length-1,shouldShowStagingImage:s,shouldShowStagingOutline:o,sessionId:r}},{memoizeOptions:{resultEqualityCheck:_t}}),dge=()=>{const e=ee(),{isOnFirstImage:t,isOnLastImage:n,currentStagingAreaImage:r,shouldShowStagingImage:o,sessionId:s}=L(uge),{t:i}=Z(),l=d.useCallback(()=>{e(Cw(!0))},[e]),u=d.useCallback(()=>{e(Cw(!1))},[e]);Ze(["left"],()=>{p()},{enabled:()=>!0,preventDefault:!0}),Ze(["right"],()=>{h()},{enabled:()=>!0,preventDefault:!0}),Ze(["enter"],()=>{m()},{enabled:()=>!0,preventDefault:!0});const p=d.useCallback(()=>e($9()),[e]),h=d.useCallback(()=>e(L9()),[e]),m=d.useCallback(()=>e(z9(s)),[e,s]),{data:v}=Wr((r==null?void 0:r.imageName)??Er.skipToken);return r?a.jsx($,{pos:"absolute",bottom:4,w:"100%",align:"center",justify:"center",onMouseOver:l,onMouseOut:u,children:a.jsxs(mn,{isAttached:!0,borderRadius:"base",shadow:"dark-lg",children:[a.jsx(Te,{tooltip:`${i("unifiedCanvas.previous")} (Left)`,"aria-label":`${i("unifiedCanvas.previous")} (Left)`,icon:a.jsx(yZ,{}),onClick:p,colorScheme:"accent",isDisabled:t}),a.jsx(Te,{tooltip:`${i("unifiedCanvas.next")} (Right)`,"aria-label":`${i("unifiedCanvas.next")} (Right)`,icon:a.jsx(CZ,{}),onClick:h,colorScheme:"accent",isDisabled:n}),a.jsx(Te,{tooltip:`${i("unifiedCanvas.accept")} (Enter)`,"aria-label":`${i("unifiedCanvas.accept")} (Enter)`,icon:a.jsx(OE,{}),onClick:m,colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.showHide"),"aria-label":i("unifiedCanvas.showHide"),"data-alert":!o,icon:o?a.jsx(TZ,{}):a.jsx(NZ,{}),onClick:()=>e(F9(!o)),colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.saveToGallery"),"aria-label":i("unifiedCanvas.saveToGallery"),isDisabled:!v||!v.is_intermediate,icon:a.jsx(rg,{}),onClick:()=>{v&&e(B9({imageDTO:v}))},colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.discardAll"),"aria-label":i("unifiedCanvas.discardAll"),icon:a.jsx(ol,{style:{transform:"rotate(45deg)"}}),onClick:()=>e(H9()),colorScheme:"error",fontSize:20})]})}):null},fge=d.memo(dge),pge=()=>{const e=L(l=>l.canvas.layerState),t=L(l=>l.canvas.boundingBoxCoordinates),n=L(l=>l.canvas.boundingBoxDimensions),r=L(l=>l.canvas.isMaskEnabled),o=L(l=>l.canvas.shouldPreserveMaskedArea),[s,i]=d.useState();return d.useEffect(()=>{i(void 0)},[e,t,n,r,o]),iJ(async()=>{const l=await W9(e,t,n,r,o);if(!l)return;const{baseImageData:u,maskImageData:p}=l,h=V9(u,p);i(h)},1e3,[e,t,n,r,o]),s},hge={txt2img:"Text to Image",img2img:"Image to Image",inpaint:"Inpaint",outpaint:"Inpaint"},mge=()=>{const e=pge();return a.jsxs(Ie,{children:["Mode: ",e?hge[e]:"..."]})},gge=d.memo(mge),Ql=e=>Math.round(e*100)/100,vge=ie([Lt],e=>{const{cursorPosition:t}=e,{cursorX:n,cursorY:r}=t?{cursorX:t.x,cursorY:t.y}:{cursorX:-1,cursorY:-1};return{cursorCoordinatesString:`(${Ql(n)}, ${Ql(r)})`}},{memoizeOptions:{resultEqualityCheck:_t}});function bge(){const{cursorCoordinatesString:e}=L(vge),{t}=Z();return a.jsx(Ie,{children:`${t("unifiedCanvas.cursorPosition")}: ${e}`})}const Db="var(--invokeai-colors-warning-500)",xge=ie([Lt],e=>{const{stageDimensions:{width:t,height:n},stageCoordinates:{x:r,y:o},boundingBoxDimensions:{width:s,height:i},scaledBoundingBoxDimensions:{width:l,height:u},boundingBoxCoordinates:{x:p,y:h},stageScale:m,shouldShowCanvasDebugInfo:v,layer:b,boundingBoxScaleMethod:y,shouldPreserveMaskedArea:x}=e;let w="inherit";return(y==="none"&&(s<512||i<512)||y==="manual"&&l*u<512*512)&&(w=Db),{activeLayerColor:b==="mask"?Db:"inherit",activeLayerString:b.charAt(0).toUpperCase()+b.slice(1),boundingBoxColor:w,boundingBoxCoordinatesString:`(${Ql(p)}, ${Ql(h)})`,boundingBoxDimensionsString:`${s}×${i}`,scaledBoundingBoxDimensionsString:`${l}×${u}`,canvasCoordinatesString:`${Ql(r)}×${Ql(o)}`,canvasDimensionsString:`${t}×${n}`,canvasScaleString:Math.round(m*100),shouldShowCanvasDebugInfo:v,shouldShowBoundingBox:y!=="auto",shouldShowScaledBoundingBox:y!=="none",shouldPreserveMaskedArea:x}},{memoizeOptions:{resultEqualityCheck:_t}}),yge=()=>{const{activeLayerColor:e,activeLayerString:t,boundingBoxColor:n,boundingBoxCoordinatesString:r,boundingBoxDimensionsString:o,scaledBoundingBoxDimensionsString:s,shouldShowScaledBoundingBox:i,canvasCoordinatesString:l,canvasDimensionsString:u,canvasScaleString:p,shouldShowCanvasDebugInfo:h,shouldShowBoundingBox:m,shouldPreserveMaskedArea:v}=L(xge),{t:b}=Z();return a.jsxs($,{sx:{flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,opacity:.65,display:"flex",fontSize:"sm",padding:1,px:2,minWidth:48,margin:1,borderRadius:"base",pointerEvents:"none",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(gge,{}),a.jsx(Ie,{style:{color:e},children:`${b("unifiedCanvas.activeLayer")}: ${t}`}),a.jsx(Ie,{children:`${b("unifiedCanvas.canvasScale")}: ${p}%`}),v&&a.jsx(Ie,{style:{color:Db},children:"Preserve Masked Area: On"}),m&&a.jsx(Ie,{style:{color:n},children:`${b("unifiedCanvas.boundingBox")}: ${o}`}),i&&a.jsx(Ie,{style:{color:n},children:`${b("unifiedCanvas.scaledBoundingBox")}: ${s}`}),h&&a.jsxs(a.Fragment,{children:[a.jsx(Ie,{children:`${b("unifiedCanvas.boundingBoxPosition")}: ${r}`}),a.jsx(Ie,{children:`${b("unifiedCanvas.canvasDimensions")}: ${u}`}),a.jsx(Ie,{children:`${b("unifiedCanvas.canvasPosition")}: ${l}`}),a.jsx(bge,{})]})]})},Cge=d.memo(yge),wge=ie([xe],({canvas:e,generation:t})=>{const{boundingBoxCoordinates:n,boundingBoxDimensions:r,stageScale:o,isDrawing:s,isTransformingBoundingBox:i,isMovingBoundingBox:l,tool:u,shouldSnapToGrid:p}=e,{aspectRatio:h}=t;return{boundingBoxCoordinates:n,boundingBoxDimensions:r,isDrawing:s,isMovingBoundingBox:l,isTransformingBoundingBox:i,stageScale:o,shouldSnapToGrid:p,tool:u,hitStrokeWidth:20/o,aspectRatio:h}},{memoizeOptions:{resultEqualityCheck:_t}}),Sge=e=>{const{...t}=e,n=ee(),{boundingBoxCoordinates:r,boundingBoxDimensions:o,isDrawing:s,isMovingBoundingBox:i,isTransformingBoundingBox:l,stageScale:u,shouldSnapToGrid:p,tool:h,hitStrokeWidth:m,aspectRatio:v}=L(wge),b=d.useRef(null),y=d.useRef(null),[x,w]=d.useState(!1);d.useEffect(()=>{var F;!b.current||!y.current||(b.current.nodes([y.current]),(F=b.current.getLayer())==null||F.batchDraw())},[]);const k=64*u;Ze("N",()=>{n(Zp(!p))});const _=d.useCallback(F=>{if(!p){n(Q0({x:Math.floor(F.target.x()),y:Math.floor(F.target.y())}));return}const V=F.target.x(),X=F.target.y(),W=fr(V,64),z=fr(X,64);F.target.x(W),F.target.y(z),n(Q0({x:W,y:z}))},[n,p]),j=d.useCallback(()=>{if(!y.current)return;const F=y.current,V=F.scaleX(),X=F.scaleY(),W=Math.round(F.width()*V),z=Math.round(F.height()*X),Y=Math.round(F.x()),B=Math.round(F.y());if(v){const q=fr(W/v,64);n(No({width:W,height:q}))}else n(No({width:W,height:z}));n(Q0({x:p?Mu(Y,64):Y,y:p?Mu(B,64):B})),F.scaleX(1),F.scaleY(1)},[n,p,v]),I=d.useCallback((F,V,X)=>{const W=F.x%k,z=F.y%k;return{x:Mu(V.x,k)+W,y:Mu(V.y,k)+z}},[k]),E=()=>{n(Z0(!0))},M=()=>{n(Z0(!1)),n(J0(!1)),n(Xf(!1)),w(!1)},D=()=>{n(J0(!0))},R=()=>{n(Z0(!1)),n(J0(!1)),n(Xf(!1)),w(!1)},A=()=>{w(!0)},O=()=>{!l&&!i&&w(!1)},T=()=>{n(Xf(!0))},K=()=>{n(Xf(!1))};return a.jsxs(aa,{...t,children:[a.jsx(ks,{height:o.height,width:o.width,x:r.x,y:r.y,onMouseEnter:T,onMouseOver:T,onMouseLeave:K,onMouseOut:K}),a.jsx(ks,{draggable:!0,fillEnabled:!1,height:o.height,hitStrokeWidth:m,listening:!s&&h==="move",onDragStart:D,onDragEnd:R,onDragMove:_,onMouseDown:D,onMouseOut:O,onMouseOver:A,onMouseEnter:A,onMouseUp:R,onTransform:j,onTransformEnd:M,ref:y,stroke:x?"rgba(255,255,255,0.7)":"white",strokeWidth:(x?8:1)/u,width:o.width,x:r.x,y:r.y}),a.jsx(_me,{anchorCornerRadius:3,anchorDragBoundFunc:I,anchorFill:"rgba(212,216,234,1)",anchorSize:15,anchorStroke:"rgb(42,42,42)",borderDash:[4,4],borderEnabled:!0,borderStroke:"black",draggable:!1,enabledAnchors:h==="move"?void 0:[],flipEnabled:!1,ignoreStroke:!0,keepRatio:!1,listening:!s&&h==="move",onDragStart:D,onDragEnd:R,onMouseDown:E,onMouseUp:M,onTransformEnd:M,ref:b,rotateEnabled:!1})]})},kge=d.memo(Sge),_ge=ie(Lt,e=>{const{cursorPosition:t,brushSize:n,colorPickerColor:r,maskColor:o,brushColor:s,tool:i,layer:l,shouldShowBrush:u,isMovingBoundingBox:p,isTransformingBoundingBox:h,stageScale:m,stageDimensions:v,boundingBoxCoordinates:b,boundingBoxDimensions:y,shouldRestrictStrokesToBox:x}=e,w=x?{clipX:b.x,clipY:b.y,clipWidth:y.width,clipHeight:y.height}:{};return{cursorPosition:t,brushX:t?t.x:v.width/2,brushY:t?t.y:v.height/2,radius:n/2,colorPickerOuterRadius:ww/m,colorPickerInnerRadius:(ww-p1+1)/m,maskColorString:Ai({...o,a:.5}),brushColorString:Ai(s),colorPickerColorString:Ai(r),tool:i,layer:l,shouldShowBrush:u,shouldDrawBrushPreview:!(p||h||!t)&&u,strokeWidth:1.5/m,dotRadius:1.5/m,clip:w}},{memoizeOptions:{resultEqualityCheck:_t}}),jge=e=>{const{...t}=e,{brushX:n,brushY:r,radius:o,maskColorString:s,tool:i,layer:l,shouldDrawBrushPreview:u,dotRadius:p,strokeWidth:h,brushColorString:m,colorPickerColorString:v,colorPickerInnerRadius:b,colorPickerOuterRadius:y,clip:x}=L(_ge);return u?a.jsxs(aa,{listening:!1,...x,...t,children:[i==="colorPicker"?a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:y,stroke:m,strokeWidth:p1,strokeScaleEnabled:!1}),a.jsx(vi,{x:n,y:r,radius:b,stroke:v,strokeWidth:p1,strokeScaleEnabled:!1})]}):a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:o,fill:l==="mask"?s:m,globalCompositeOperation:i==="eraser"?"destination-out":"source-out"}),a.jsx(vi,{x:n,y:r,radius:o,stroke:"rgba(255,255,255,0.4)",strokeWidth:h*2,strokeEnabled:!0,listening:!1}),a.jsx(vi,{x:n,y:r,radius:o,stroke:"rgba(0,0,0,1)",strokeWidth:h,strokeEnabled:!0,listening:!1})]}),a.jsx(vi,{x:n,y:r,radius:p*2,fill:"rgba(255,255,255,0.4)",listening:!1}),a.jsx(vi,{x:n,y:r,radius:p,fill:"rgba(0,0,0,1)",listening:!1})]}):null},Pge=d.memo(jge),Ige=ie([Lt,Co],(e,t)=>{const{isMaskEnabled:n,stageScale:r,shouldShowBoundingBox:o,isTransformingBoundingBox:s,isMouseOverBoundingBox:i,isMovingBoundingBox:l,stageDimensions:u,stageCoordinates:p,tool:h,isMovingStage:m,shouldShowIntermediates:v,shouldShowGrid:b,shouldRestrictStrokesToBox:y,shouldAntialias:x}=e;let w="none";return h==="move"||t?m?w="grabbing":w="grab":s?w=void 0:y&&!i&&(w="default"),{isMaskEnabled:n,isModifyingBoundingBox:s||l,shouldShowBoundingBox:o,shouldShowGrid:b,stageCoordinates:p,stageCursor:w,stageDimensions:u,stageScale:r,tool:h,isStaging:t,shouldShowIntermediates:v,shouldAntialias:x}},we),Ege=_e(jme,{shouldForwardProp:e=>!["sx"].includes(e)}),Mge=()=>{const{isMaskEnabled:e,isModifyingBoundingBox:t,shouldShowBoundingBox:n,shouldShowGrid:r,stageCoordinates:o,stageCursor:s,stageDimensions:i,stageScale:l,tool:u,isStaging:p,shouldShowIntermediates:h,shouldAntialias:m}=L(Ige);Mme();const v=ee(),b=d.useRef(null),y=d.useRef(null),x=d.useRef(null),w=d.useCallback(K=>{U9(K),y.current=K},[]),k=d.useCallback(K=>{G9(K),x.current=K},[]),_=d.useRef({x:0,y:0}),j=d.useRef(!1),I=zme(y),E=Dme(y),M=$me(y,j),D=Ame(y,j,_),R=Nme(),{handleDragStart:A,handleDragMove:O,handleDragEnd:T}=Ime();return d.useEffect(()=>{if(!b.current)return;const K=new ResizeObserver(F=>{for(const V of F)if(V.contentBoxSize){const{width:X,height:W}=V.contentRect;v(Sw({width:X,height:W}))}});return K.observe(b.current),v(Sw(b.current.getBoundingClientRect())),()=>{K.disconnect()}},[v]),a.jsxs($,{id:"canvas-container",ref:b,sx:{position:"relative",height:"100%",width:"100%",borderRadius:"base"},children:[a.jsx(Ie,{sx:{position:"absolute"},children:a.jsxs(Ege,{tabIndex:-1,ref:w,sx:{outline:"none",overflow:"hidden",cursor:s||void 0,canvas:{outline:"none"}},x:o.x,y:o.y,width:i.width,height:i.height,scale:{x:l,y:l},onTouchStart:E,onTouchMove:D,onTouchEnd:M,onMouseDown:E,onMouseLeave:R,onMouseMove:D,onMouseUp:M,onDragStart:A,onDragMove:O,onDragEnd:T,onContextMenu:K=>K.evt.preventDefault(),onWheel:I,draggable:(u==="move"||p)&&!t,children:[a.jsx(Eu,{id:"grid",visible:r,children:a.jsx(Ume,{})}),a.jsx(Eu,{id:"base",ref:k,listening:!1,imageSmoothingEnabled:m,children:a.jsx(age,{})}),a.jsxs(Eu,{id:"mask",visible:e,listening:!1,children:[a.jsx(ege,{visible:!0,listening:!1}),a.jsx(Qme,{listening:!1})]}),a.jsx(Eu,{children:a.jsx(Hme,{})}),a.jsxs(Eu,{id:"preview",imageSmoothingEnabled:m,children:[!p&&a.jsx(Pge,{visible:u!=="move",listening:!1}),a.jsx(cge,{visible:p}),h&&a.jsx(qme,{}),a.jsx(kge,{visible:n&&!p})]})]})}),a.jsx(Cge,{}),a.jsx(fge,{})]})},Oge=d.memo(Mge);function Dge(e,t,n=250){const[r,o]=d.useState(0);return d.useEffect(()=>{const s=setTimeout(()=>{r===1&&e(),o(0)},n);return r===2&&t(),()=>clearTimeout(s)},[r,e,t,n]),()=>o(s=>s+1)}const Rge=_e(xO,{baseStyle:{paddingInline:4},shouldForwardProp:e=>!["pickerColor"].includes(e)}),Jv={width:6,height:6,borderColor:"base.100"},Age=e=>{const{styleClass:t="",...n}=e;return a.jsx(Rge,{sx:{".react-colorful__hue-pointer":Jv,".react-colorful__saturation-pointer":Jv,".react-colorful__alpha-pointer":Jv},className:t,...n})},k8=d.memo(Age),Nge=ie([Lt,Co],(e,t)=>{const{maskColor:n,layer:r,isMaskEnabled:o,shouldPreserveMaskedArea:s}=e;return{layer:r,maskColor:n,maskColorString:Ai(n),isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:t}},{memoizeOptions:{resultEqualityCheck:_t}}),Tge=()=>{const e=ee(),{t}=Z(),{layer:n,maskColor:r,isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:i}=L(Nge);Ze(["q"],()=>{l()},{enabled:()=>!i,preventDefault:!0},[n]),Ze(["shift+c"],()=>{u()},{enabled:()=>!i,preventDefault:!0},[]),Ze(["h"],()=>{p()},{enabled:()=>!i,preventDefault:!0},[o]);const l=()=>{e(_5(n==="mask"?"base":"mask"))},u=()=>e(w5()),p=()=>e(Qb(!o)),h=async()=>{e(X9())};return a.jsx(qd,{triggerComponent:a.jsx(mn,{children:a.jsx(Te,{"aria-label":t("unifiedCanvas.maskingOptions"),tooltip:t("unifiedCanvas.maskingOptions"),icon:a.jsx(zE,{}),isChecked:n==="mask",isDisabled:i})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(ur,{label:`${t("unifiedCanvas.enableMask")} (H)`,isChecked:o,onChange:p}),a.jsx(ur,{label:t("unifiedCanvas.preserveMaskedArea"),isChecked:s,onChange:m=>e(K9(m.target.checked))}),a.jsx(k8,{sx:{paddingTop:2,paddingBottom:2},pickerColor:r,onChange:m=>e(q9(m))}),a.jsx(it,{size:"sm",leftIcon:a.jsx(rg,{}),onClick:h,children:"Save Mask"}),a.jsxs(it,{size:"sm",leftIcon:a.jsx(Kr,{}),onClick:u,children:[t("unifiedCanvas.clearMask")," (Shift+C)"]})]})})},$ge=d.memo(Tge),Lge=ie([Lt,wn,xo],(e,t,n)=>{const{futureLayerStates:r}=e;return{canRedo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}});function zge(){const e=ee(),{canRedo:t,activeTabName:n}=L(Lge),{t:r}=Z(),o=()=>{e(Y9())};return Ze(["meta+shift+z","ctrl+shift+z","control+y","meta+y"],()=>{o()},{enabled:()=>t,preventDefault:!0},[n,t]),a.jsx(Te,{"aria-label":`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,tooltip:`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,icon:a.jsx(KZ,{}),onClick:o,isDisabled:!t})}const Fge=()=>{const e=L(Co),t=ee(),{t:n}=Z();return a.jsxs(Gy,{title:n("unifiedCanvas.clearCanvasHistory"),acceptCallback:()=>t(Q9()),acceptButtonText:n("unifiedCanvas.clearHistory"),triggerComponent:a.jsx(it,{size:"sm",leftIcon:a.jsx(Kr,{}),isDisabled:e,children:n("unifiedCanvas.clearCanvasHistory")}),children:[a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryMessage")}),a.jsx("br",{}),a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryConfirm")})]})},Bge=d.memo(Fge),Hge=ie([Lt],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:l,shouldRestrictStrokesToBox:u,shouldAntialias:p}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:l,shouldRestrictStrokesToBox:u,shouldAntialias:p}},{memoizeOptions:{resultEqualityCheck:_t}}),Wge=()=>{const e=ee(),{t}=Z(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldDarkenOutsideBoundingBox:o,shouldShowCanvasDebugInfo:s,shouldShowGrid:i,shouldShowIntermediates:l,shouldSnapToGrid:u,shouldRestrictStrokesToBox:p,shouldAntialias:h}=L(Hge);Ze(["n"],()=>{e(Zp(!u))},{enabled:!0,preventDefault:!0},[u]);const m=v=>e(Zp(v.target.checked));return a.jsx(qd,{isLazy:!1,triggerComponent:a.jsx(Te,{tooltip:t("unifiedCanvas.canvasSettings"),"aria-label":t("unifiedCanvas.canvasSettings"),icon:a.jsx(VE,{})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(ur,{label:t("unifiedCanvas.showIntermediates"),isChecked:l,onChange:v=>e(Z9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.showGrid"),isChecked:i,onChange:v=>e(J9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.snapToGrid"),isChecked:u,onChange:m}),a.jsx(ur,{label:t("unifiedCanvas.darkenOutsideSelection"),isChecked:o,onChange:v=>e(eN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:v=>e(tN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:v=>e(nN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.limitStrokesToBox"),isChecked:p,onChange:v=>e(rN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:s,onChange:v=>e(oN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.antialiasing"),isChecked:h,onChange:v=>e(sN(v.target.checked))}),a.jsx(Bge,{})]})})},Vge=d.memo(Wge),Uge=ie([Lt,Co,xo],(e,t,n)=>{const{isProcessing:r}=n,{tool:o,brushColor:s,brushSize:i}=e;return{tool:o,isStaging:t,isProcessing:r,brushColor:s,brushSize:i}},{memoizeOptions:{resultEqualityCheck:_t}}),Gge=()=>{const e=ee(),{tool:t,brushColor:n,brushSize:r,isStaging:o}=L(Uge),{t:s}=Z();Ze(["b"],()=>{i()},{enabled:()=>!o,preventDefault:!0},[]),Ze(["e"],()=>{l()},{enabled:()=>!o,preventDefault:!0},[t]),Ze(["c"],()=>{u()},{enabled:()=>!o,preventDefault:!0},[t]),Ze(["shift+f"],()=>{p()},{enabled:()=>!o,preventDefault:!0}),Ze(["delete","backspace"],()=>{h()},{enabled:()=>!o,preventDefault:!0}),Ze(["BracketLeft"],()=>{r-5<=5?e(Yf(Math.max(r-1,1))):e(Yf(Math.max(r-5,1)))},{enabled:()=>!o,preventDefault:!0},[r]),Ze(["BracketRight"],()=>{e(Yf(Math.min(r+5,500)))},{enabled:()=>!o,preventDefault:!0},[r]),Ze(["Shift+BracketLeft"],()=>{e(ev({...n,a:Ni(n.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]),Ze(["Shift+BracketRight"],()=>{e(ev({...n,a:Ni(n.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]);const i=()=>e(Jl("brush")),l=()=>e(Jl("eraser")),u=()=>e(Jl("colorPicker")),p=()=>e(aN()),h=()=>e(iN());return a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${s("unifiedCanvas.brush")} (B)`,tooltip:`${s("unifiedCanvas.brush")} (B)`,icon:a.jsx(UZ,{}),isChecked:t==="brush"&&!o,onClick:i,isDisabled:o}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.eraser")} (E)`,tooltip:`${s("unifiedCanvas.eraser")} (E)`,icon:a.jsx(EZ,{}),isChecked:t==="eraser"&&!o,isDisabled:o,onClick:l}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:a.jsx($Z,{}),isDisabled:o,onClick:p}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:a.jsx(ol,{style:{transform:"rotate(45deg)"}}),isDisabled:o,onClick:h}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.colorPicker")} (C)`,tooltip:`${s("unifiedCanvas.colorPicker")} (C)`,icon:a.jsx(AZ,{}),isChecked:t==="colorPicker"&&!o,isDisabled:o,onClick:u}),a.jsx(qd,{triggerComponent:a.jsx(Te,{"aria-label":s("unifiedCanvas.brushOptions"),tooltip:s("unifiedCanvas.brushOptions"),icon:a.jsx(HE,{})}),children:a.jsxs($,{minWidth:60,direction:"column",gap:4,width:"100%",children:[a.jsx($,{gap:4,justifyContent:"space-between",children:a.jsx(Xe,{label:s("unifiedCanvas.brushSize"),value:r,withInput:!0,onChange:m=>e(Yf(m)),sliderNumberInputProps:{max:500}})}),a.jsx(k8,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:m=>e(ev(m))})]})})]})},Kge=d.memo(Gge),qge=ie([Lt,wn,xo],(e,t,n)=>{const{pastLayerStates:r}=e;return{canUndo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}});function Xge(){const e=ee(),{t}=Z(),{canUndo:n,activeTabName:r}=L(qge),o=()=>{e(lN())};return Ze(["meta+z","ctrl+z"],()=>{o()},{enabled:()=>n,preventDefault:!0},[r,n]),a.jsx(Te,{"aria-label":`${t("unifiedCanvas.undo")} (Ctrl+Z)`,tooltip:`${t("unifiedCanvas.undo")} (Ctrl+Z)`,icon:a.jsx(Ud,{}),onClick:o,isDisabled:!n})}const Yge=ie([xo,Lt,Co],(e,t,n)=>{const{isProcessing:r}=e,{tool:o,shouldCropToBoundingBoxOnSave:s,layer:i,isMaskEnabled:l}=t;return{isProcessing:r,isStaging:n,isMaskEnabled:l,tool:o,layer:i,shouldCropToBoundingBoxOnSave:s}},{memoizeOptions:{resultEqualityCheck:_t}}),Qge=()=>{const e=ee(),{isProcessing:t,isStaging:n,isMaskEnabled:r,layer:o,tool:s}=L(Yge),i=f1(),{t:l}=Z(),{isClipboardAPIAvailable:u}=WM(),{getUploadButtonProps:p,getUploadInputProps:h}=Iy({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}});Ze(["v"],()=>{m()},{enabled:()=>!n,preventDefault:!0},[]),Ze(["r"],()=>{b()},{enabled:()=>!0,preventDefault:!0},[i]),Ze(["shift+m"],()=>{x()},{enabled:()=>!n,preventDefault:!0},[i,t]),Ze(["shift+s"],()=>{w()},{enabled:()=>!n,preventDefault:!0},[i,t]),Ze(["meta+c","ctrl+c"],()=>{k()},{enabled:()=>!n&&u,preventDefault:!0},[i,t,u]),Ze(["shift+d"],()=>{_()},{enabled:()=>!n,preventDefault:!0},[i,t]);const m=()=>e(Jl("move")),v=Dge(()=>b(!1),()=>b(!0)),b=(I=!1)=>{const E=f1();if(!E)return;const M=E.getClientRect({skipTransform:!0});e(uN({contentRect:M,shouldScaleTo1:I}))},y=()=>{e(Bj())},x=()=>{e(dN())},w=()=>{e(fN())},k=()=>{u&&e(pN())},_=()=>{e(hN())},j=I=>{const E=I;e(_5(E)),E==="mask"&&!r&&e(Qb(!0))};return a.jsxs($,{sx:{alignItems:"center",gap:2,flexWrap:"wrap"},children:[a.jsx(Ie,{w:24,children:a.jsx(In,{tooltip:`${l("unifiedCanvas.layer")} (Q)`,value:o,data:cN,onChange:j,disabled:n})}),a.jsx($ge,{}),a.jsx(Kge,{}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("unifiedCanvas.move")} (V)`,tooltip:`${l("unifiedCanvas.move")} (V)`,icon:a.jsx(wZ,{}),isChecked:s==="move"||n,onClick:m}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.resetView")} (R)`,tooltip:`${l("unifiedCanvas.resetView")} (R)`,icon:a.jsx(jZ,{}),onClick:v})]}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${l("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:a.jsx(HZ,{}),onClick:x,isDisabled:n}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${l("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:a.jsx(rg,{}),onClick:w,isDisabled:n}),u&&a.jsx(Te,{"aria-label":`${l("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${l("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:a.jsx(Wc,{}),onClick:k,isDisabled:n}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${l("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:a.jsx(ng,{}),onClick:_,isDisabled:n})]}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Xge,{}),a.jsx(zge,{})]}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("common.upload")}`,tooltip:`${l("common.upload")}`,icon:a.jsx(og,{}),isDisabled:n,...p()}),a.jsx("input",{...h()}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.clearCanvas")}`,tooltip:`${l("unifiedCanvas.clearCanvas")}`,icon:a.jsx(Kr,{}),onClick:y,colorScheme:"error",isDisabled:n})]}),a.jsx(mn,{isAttached:!0,children:a.jsx(Vge,{})})]})},Zge=d.memo(Qge),kj={id:"canvas-intial-image",actionType:"SET_CANVAS_INITIAL_IMAGE"},Jge=()=>{const{isOver:e,setNodeRef:t,active:n}=wM({id:"unifiedCanvas",data:kj});return a.jsxs($,{layerStyle:"first",ref:t,tabIndex:-1,sx:{flexDirection:"column",alignItems:"center",gap:4,p:2,borderRadius:"base",w:"full",h:"full"},children:[a.jsx(Zge,{}),a.jsx(Oge,{}),SM(kj,n)&&a.jsx(kM,{isOver:e,label:"Set Canvas Initial Image"})]})},e0e=d.memo(Jge),t0e=()=>a.jsx(e0e,{}),n0e=d.memo(t0e),r0e=[{id:"txt2img",translationKey:"common.txt2img",icon:a.jsx(Tn,{as:LZ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(She,{})},{id:"img2img",translationKey:"common.img2img",icon:a.jsx(Tn,{as:Ui,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Oue,{})},{id:"unifiedCanvas",translationKey:"common.unifiedCanvas",icon:a.jsx(Tn,{as:Tne,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(n0e,{})},{id:"nodes",translationKey:"common.nodes",icon:a.jsx(Tn,{as:yg,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Che,{})},{id:"modelManager",translationKey:"modelManager.modelManager",icon:a.jsx(Tn,{as:PZ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Mde,{})}],o0e=ie([xe],({config:e})=>{const{disabledTabs:t}=e;return r0e.filter(r=>!t.includes(r.id))},{memoizeOptions:{resultEqualityCheck:_t}}),s0e=448,a0e=448,i0e=360,l0e=["modelManager"],c0e=["modelManager"],u0e=()=>{const e=L(mN),t=L(wn),n=L(o0e),{t:r}=Z(),o=ee(),s=d.useCallback(O=>{O.target instanceof HTMLElement&&O.target.blur()},[]),i=d.useMemo(()=>n.map(O=>a.jsx(Rt,{hasArrow:!0,label:String(r(O.translationKey)),placement:"end",children:a.jsxs(Pr,{onClick:s,children:[a.jsx(H5,{children:String(r(O.translationKey))}),O.icon]})},O.id)),[n,r,s]),l=d.useMemo(()=>n.map(O=>a.jsx(mo,{children:O.content},O.id)),[n]),u=d.useCallback(O=>{const T=gN[O];T&&o(Aa(T))},[o]),{minSize:p,isCollapsed:h,setIsCollapsed:m,ref:v,reset:b,expand:y,collapse:x,toggle:w}=M_(s0e,"pixels"),{ref:k,minSize:_,isCollapsed:j,setIsCollapsed:I,reset:E,expand:M,collapse:D,toggle:R}=M_(i0e,"pixels");Ze("f",()=>{j||h?(M(),y()):(x(),D())},[o,j,h]),Ze(["t","o"],()=>{w()},[o]),Ze("g",()=>{R()},[o]);const A=Ny();return a.jsxs(Ji,{variant:"appTabs",defaultIndex:e,index:e,onChange:u,sx:{flexGrow:1,gap:4},isLazy:!0,children:[a.jsxs(el,{sx:{pt:2,gap:4,flexDir:"column"},children:[i,a.jsx(Za,{}),a.jsx(MJ,{})]}),a.jsxs(Sg,{id:"app",autoSaveId:"app",direction:"horizontal",style:{height:"100%",width:"100%"},storage:A,units:"pixels",children:[!c0e.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(Ua,{order:0,id:"side",ref:v,defaultSize:p,minSize:p,onCollapse:m,collapsible:!0,children:t==="nodes"?a.jsx(pse,{}):a.jsx(Jce,{})}),a.jsx(im,{onDoubleClick:b,collapsedDirection:h?"left":void 0}),a.jsx(vse,{isSidePanelCollapsed:h,sidePanelRef:v})]}),a.jsx(Ua,{id:"main",order:1,minSize:a0e,children:a.jsx(Fc,{style:{height:"100%",width:"100%"},children:l})}),!l0e.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(im,{onDoubleClick:E,collapsedDirection:j?"right":void 0}),a.jsx(Ua,{id:"gallery",ref:k,order:2,defaultSize:_,minSize:_,onCollapse:I,collapsible:!0,children:a.jsx(pre,{})}),a.jsx(mse,{isGalleryCollapsed:j,galleryPanelRef:k})]})]})]})},d0e=d.memo(u0e),f0e=d.createContext(null),e1={didCatch:!1,error:null};class p0e extends d.Component{constructor(t){super(t),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=e1}static getDerivedStateFromError(t){return{didCatch:!0,error:t}}resetErrorBoundary(){const{error:t}=this.state;if(t!==null){for(var n,r,o=arguments.length,s=new Array(o),i=0;i0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return e.length!==t.length||e.some((n,r)=>!Object.is(n,t[r]))}const m0e=()=>{const e=ee(),[t,n]=d.useState(),[r,o]=d.useState(),{recallAllParameters:s}=xg(),i=tl(),{currentData:l}=Wr(t??Er.skipToken),{currentData:u}=vN(r??Er.skipToken);return{handlePreselectedImage:d.useCallback(h=>{h&&(h.action==="sendToCanvas"&&(n(h==null?void 0:h.imageName),l&&(e(Yj(l)),e(Aa("unifiedCanvas")),i({title:bN("toast.sentToUnifiedCanvas"),status:"info",duration:2500,isClosable:!0}))),h.action==="sendToImg2Img"&&(n(h==null?void 0:h.imageName),l&&e(gm(l))),h.action==="useAllParameters"&&(o(h==null?void 0:h.imageName),u&&s(u.metadata)))},[e,l,u,s,i])}};function g0e(e={}){let t;if(e.repoUrl)t=e.repoUrl;else if(e.user&&e.repo)t=`https://github.com/${e.user}/${e.repo}`;else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options");const n=new URL(`${t}/issues/new`),r=["body","title","labels","template","milestone","assignee","projects"];for(const o of r){let s=e[o];if(s!==void 0){if(o==="labels"||o==="projects"){if(!Array.isArray(s))throw new TypeError(`The \`${o}\` option should be an array`);s=s.join(",")}n.searchParams.set(o,s)}}return n.toString()}const v0e=({error:e,resetErrorBoundary:t})=>{const n=A5(),r=d.useCallback(()=>{const s=JSON.stringify(xN(e),null,2);navigator.clipboard.writeText(`\`\`\` +${s} +\`\`\``),n({title:"Error Copied"})},[e,n]),o=d.useMemo(()=>g0e({user:"invoke-ai",repo:"InvokeAI",template:"BUG_REPORT.yml",title:`[bug]: ${e.name}: ${e.message}`}),[e.message,e.name]);return a.jsx($,{layerStyle:"body",sx:{w:"100vw",h:"100vh",alignItems:"center",justifyContent:"center",p:4},children:a.jsxs($,{layerStyle:"first",sx:{flexDir:"column",borderRadius:"base",justifyContent:"center",gap:8,p:16},children:[a.jsx(io,{children:"Something went wrong"}),a.jsx($,{layerStyle:"second",sx:{px:8,py:4,borderRadius:"base",gap:4,justifyContent:"space-between",alignItems:"center"},children:a.jsxs(ye,{sx:{fontWeight:600,color:"error.500",_dark:{color:"error.400"}},children:[e.name,": ",e.message]})}),a.jsxs($,{sx:{gap:4},children:[a.jsx(it,{leftIcon:a.jsx(lhe,{}),onClick:t,children:"Reset UI"}),a.jsx(it,{leftIcon:a.jsx(Wc,{}),onClick:r,children:"Copy Error"}),a.jsx(Mm,{href:o,isExternal:!0,children:a.jsx(it,{leftIcon:a.jsx(AE,{}),children:"Create Issue"})})]})]})})},b0e=d.memo(v0e),x0e=ie([xe],({hotkeys:e})=>{const{shift:t,ctrl:n,meta:r}=e;return{shift:t,ctrl:n,meta:r}},{memoizeOptions:{resultEqualityCheck:_t}}),y0e=()=>{const e=ee(),{shift:t,ctrl:n,meta:r}=L(x0e);return Ze("*",()=>{zp("shift")?!t&&e(Ir(!0)):t&&e(Ir(!1)),zp("ctrl")?!n&&e(kw(!0)):n&&e(kw(!1)),zp("meta")?!r&&e(_w(!0)):r&&e(_w(!1))},{keyup:!0,keydown:!0},[t,n,r]),Ze("1",()=>{e(Aa("txt2img"))}),Ze("2",()=>{e(Aa("img2img"))}),Ze("3",()=>{e(Aa("unifiedCanvas"))}),Ze("4",()=>{e(Aa("nodes"))}),Ze("5",()=>{e(Aa("modelManager"))}),null},C0e=d.memo(y0e),w0e={},S0e=({config:e=w0e,selectedImage:t})=>{const n=L(LP),r=zP("system"),o=ee(),{handlePreselectedImage:s}=m0e(),i=d.useCallback(()=>(localStorage.clear(),location.reload(),!1),[]);d.useEffect(()=>{vt.changeLanguage(n)},[n]),d.useEffect(()=>{s5(e)&&(r.info({config:e},"Received config"),o(yN(e)))},[o,e,r]),d.useEffect(()=>{o(CN())},[o]),d.useEffect(()=>{s(t)},[s,t]);const l=bg(wN);return a.jsxs(p0e,{onReset:i,FallbackComponent:b0e,children:[a.jsx(Ga,{w:"100vw",h:"100vh",position:"relative",overflow:"hidden",children:a.jsx(qV,{children:a.jsxs(Ga,{sx:{gap:4,p:4,gridAutoRows:"min-content auto",w:"full",h:"full"},children:[l||a.jsx(PJ,{}),a.jsx($,{sx:{gap:4,w:"full",h:"full"},children:a.jsx(d0e,{})})]})})}),a.jsx(fZ,{}),a.jsx(iZ,{}),a.jsx($W,{}),a.jsx(C0e,{})]})},D0e=d.memo(S0e);export{D0e as default}; diff --git a/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-374b1ae5.js b/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a3380d0c.js similarity index 99% rename from invokeai/frontend/web/dist/assets/ThemeLocaleProvider-374b1ae5.js rename to invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a3380d0c.js index cc63fa693d..05d04a6ad3 100644 --- a/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-374b1ae5.js +++ b/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a3380d0c.js @@ -1,4 +1,4 @@ -import{v as m,h5 as Je,u as y,Y as Xa,h6 as Ja,a7 as ua,ab as d,h7 as b,h8 as o,h9 as Qa,ha as h,hb as fa,hc as Za,hd as eo,aE as ro,he as ao,a4 as oo,hf as to}from"./index-f83c2c5c.js";import{s as ha,n as t,t as io,o as ma,p as no,q as ga,v as ya,w as pa,x as lo,y as Sa,z as xa,A as xr,B as so,D as co,E as bo,F as $a,G as ka,H as _a,J as vo,K as wa,L as uo,M as fo,N as ho,O as mo,Q as za,R as go,S as yo,T as po,U as So,V as xo,W as $o,e as ko,X as _o}from"./menu-31376327.js";var Ca=String.raw,Aa=Ca` +import{v as m,hj as Je,u as y,Y as Xa,hk as Ja,a7 as ua,ab as d,hl as b,hm as o,hn as Qa,ho as h,hp as fa,hq as Za,hr as eo,aE as ro,hs as ao,a4 as oo,ht as to}from"./index-f6c3f475.js";import{s as ha,n as t,t as io,o as ma,p as no,q as ga,v as ya,w as pa,x as lo,y as Sa,z as xa,A as xr,B as so,D as co,E as bo,F as $a,G as ka,H as _a,J as vo,K as wa,L as uo,M as fo,N as ho,O as mo,Q as za,R as go,S as yo,T as po,U as So,V as xo,W as $o,e as ko,X as _o}from"./menu-c9cc8c3d.js";var Ca=String.raw,Aa=Ca` :root, :host { --chakra-vh: 100vh; diff --git a/invokeai/frontend/web/dist/assets/index-f6c3f475.js b/invokeai/frontend/web/dist/assets/index-f6c3f475.js new file mode 100644 index 0000000000..4bfec9568f --- /dev/null +++ b/invokeai/frontend/web/dist/assets/index-f6c3f475.js @@ -0,0 +1,128 @@ +var DV=Object.defineProperty;var LV=(e,t,n)=>t in e?DV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var e2=(e,t,n)=>(LV(e,typeof t!="symbol"?t+"":t,n),n);function NO(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var dt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Uc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Y1(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var DO={exports:{}},Z1={},LO={exports:{}},Mt={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var om=Symbol.for("react.element"),$V=Symbol.for("react.portal"),FV=Symbol.for("react.fragment"),BV=Symbol.for("react.strict_mode"),zV=Symbol.for("react.profiler"),UV=Symbol.for("react.provider"),jV=Symbol.for("react.context"),VV=Symbol.for("react.forward_ref"),GV=Symbol.for("react.suspense"),HV=Symbol.for("react.memo"),qV=Symbol.for("react.lazy"),D4=Symbol.iterator;function WV(e){return e===null||typeof e!="object"?null:(e=D4&&e[D4]||e["@@iterator"],typeof e=="function"?e:null)}var $O={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},FO=Object.assign,BO={};function eh(e,t,n){this.props=e,this.context=t,this.refs=BO,this.updater=n||$O}eh.prototype.isReactComponent={};eh.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};eh.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function zO(){}zO.prototype=eh.prototype;function Z3(e,t,n){this.props=e,this.context=t,this.refs=BO,this.updater=n||$O}var J3=Z3.prototype=new zO;J3.constructor=Z3;FO(J3,eh.prototype);J3.isPureReactComponent=!0;var L4=Array.isArray,UO=Object.prototype.hasOwnProperty,eE={current:null},jO={key:!0,ref:!0,__self:!0,__source:!0};function VO(e,t,n){var r,i={},o=null,s=null;if(t!=null)for(r in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(o=""+t.key),t)UO.call(t,r)&&!jO.hasOwnProperty(r)&&(i[r]=t[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,U=R[F];if(0>>1;Fi(Y,O))Qi(j,Y)?(R[F]=j,R[Q]=O,F=Q):(R[F]=Y,R[H]=O,F=H);else if(Qi(j,O))R[F]=j,R[Q]=O,F=Q;else break e}}return I}function i(R,I){var O=R.sortIndex-I.sortIndex;return O!==0?O:R.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,a=s.now();e.unstable_now=function(){return s.now()-a}}var l=[],u=[],c=1,d=null,f=3,h=!1,p=!1,m=!1,b=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(R){for(var I=n(u);I!==null;){if(I.callback===null)r(u);else if(I.startTime<=R)r(u),I.sortIndex=I.expirationTime,t(l,I);else break;I=n(u)}}function v(R){if(m=!1,g(R),!p)if(n(l)!==null)p=!0,D(S);else{var I=n(u);I!==null&&B(v,I.startTime-R)}}function S(R,I){p=!1,m&&(m=!1,_(C),C=-1),h=!0;var O=f;try{for(g(I),d=n(l);d!==null&&(!(d.expirationTime>I)||R&&!k());){var F=d.callback;if(typeof F=="function"){d.callback=null,f=d.priorityLevel;var U=F(d.expirationTime<=I);I=e.unstable_now(),typeof U=="function"?d.callback=U:d===n(l)&&r(l),g(I)}else r(l);d=n(l)}if(d!==null)var V=!0;else{var H=n(u);H!==null&&B(v,H.startTime-I),V=!1}return V}finally{d=null,f=O,h=!1}}var w=!1,x=null,C=-1,A=5,T=-1;function k(){return!(e.unstable_now()-TR||125F?(R.sortIndex=O,t(u,R),n(l)===null&&R===n(u)&&(m?(_(C),C=-1):m=!0,B(v,O-F))):(R.sortIndex=U,t(l,R),p||h||(p=!0,D(S))),R},e.unstable_shouldYield=k,e.unstable_wrapCallback=function(R){var I=f;return function(){var O=f;f=I;try{return R.apply(this,arguments)}finally{f=O}}}})(WO);qO.exports=WO;var iG=qO.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var KO=M,Mo=iG;function se(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ox=Object.prototype.hasOwnProperty,oG=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,B4={},z4={};function sG(e){return ox.call(z4,e)?!0:ox.call(B4,e)?!1:oG.test(e)?z4[e]=!0:(B4[e]=!0,!1)}function aG(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function lG(e,t,n,r){if(t===null||typeof t>"u"||aG(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Zi(e,t,n,r,i,o,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=s}var wi={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){wi[e]=new Zi(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];wi[t]=new Zi(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){wi[e]=new Zi(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){wi[e]=new Zi(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){wi[e]=new Zi(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){wi[e]=new Zi(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){wi[e]=new Zi(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){wi[e]=new Zi(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){wi[e]=new Zi(e,5,!1,e.toLowerCase(),null,!1,!1)});var nE=/[\-:]([a-z])/g;function rE(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(nE,rE);wi[t]=new Zi(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(nE,rE);wi[t]=new Zi(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(nE,rE);wi[t]=new Zi(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){wi[e]=new Zi(e,1,!1,e.toLowerCase(),null,!1,!1)});wi.xlinkHref=new Zi("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){wi[e]=new Zi(e,1,!1,e.toLowerCase(),null,!0,!0)});function iE(e,t,n,r){var i=wi.hasOwnProperty(t)?wi[t]:null;(i!==null?i.type!==0:r||!(2a||i[s]!==o[a]){var l=` +`+i[s].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=s&&0<=a);break}}}finally{r2=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Zh(e):""}function uG(e){switch(e.tag){case 5:return Zh(e.type);case 16:return Zh("Lazy");case 13:return Zh("Suspense");case 19:return Zh("SuspenseList");case 0:case 2:case 15:return e=i2(e.type,!1),e;case 11:return e=i2(e.type.render,!1),e;case 1:return e=i2(e.type,!0),e;default:return""}}function ux(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Dd:return"Fragment";case Nd:return"Portal";case sx:return"Profiler";case oE:return"StrictMode";case ax:return"Suspense";case lx:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case YO:return(e.displayName||"Context")+".Consumer";case QO:return(e._context.displayName||"Context")+".Provider";case sE:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case aE:return t=e.displayName||null,t!==null?t:ux(e.type)||"Memo";case Pl:t=e._payload,e=e._init;try{return ux(e(t))}catch{}}return null}function cG(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ux(t);case 8:return t===oE?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function uu(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function JO(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function dG(e){var t=JO(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(s){r=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ny(e){e._valueTracker||(e._valueTracker=dG(e))}function e9(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=JO(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ev(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function cx(e,t){var n=t.checked;return or({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function j4(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=uu(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function t9(e,t){t=t.checked,t!=null&&iE(e,"checked",t,!1)}function dx(e,t){t9(e,t);var n=uu(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?fx(e,t.type,n):t.hasOwnProperty("defaultValue")&&fx(e,t.type,uu(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function V4(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function fx(e,t,n){(t!=="number"||ev(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Jh=Array.isArray;function Zd(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=ry.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Dp(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var cp={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},fG=["Webkit","ms","Moz","O"];Object.keys(cp).forEach(function(e){fG.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),cp[t]=cp[e]})});function o9(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||cp.hasOwnProperty(e)&&cp[e]?(""+t).trim():t+"px"}function s9(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=o9(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var hG=or({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function gx(e,t){if(t){if(hG[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(se(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(se(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(se(61))}if(t.style!=null&&typeof t.style!="object")throw Error(se(62))}}function mx(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var yx=null;function lE(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var vx=null,Jd=null,ef=null;function q4(e){if(e=lm(e)){if(typeof vx!="function")throw Error(se(280));var t=e.stateNode;t&&(t=r_(t),vx(e.stateNode,e.type,t))}}function a9(e){Jd?ef?ef.push(e):ef=[e]:Jd=e}function l9(){if(Jd){var e=Jd,t=ef;if(ef=Jd=null,q4(e),t)for(e=0;e>>=0,e===0?32:31-(CG(e)/EG|0)|0}var iy=64,oy=4194304;function ep(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function iv(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,s=n&268435455;if(s!==0){var a=s&~i;a!==0?r=ep(a):(o&=s,o!==0&&(r=ep(o)))}else s=n&~i,s!==0?r=ep(s):o!==0&&(r=ep(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function sm(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ps(t),e[t]=n}function PG(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=fp),tA=String.fromCharCode(32),nA=!1;function k9(e,t){switch(e){case"keyup":return rH.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function P9(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ld=!1;function oH(e,t){switch(e){case"compositionend":return P9(t);case"keypress":return t.which!==32?null:(nA=!0,tA);case"textInput":return e=t.data,e===tA&&nA?null:e;default:return null}}function sH(e,t){if(Ld)return e==="compositionend"||!mE&&k9(e,t)?(e=T9(),v0=hE=zl=null,Ld=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=sA(n)}}function M9(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?M9(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function N9(){for(var e=window,t=ev();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ev(e.document)}return t}function yE(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function gH(e){var t=N9(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&M9(n.ownerDocument.documentElement,n)){if(r!==null&&yE(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=aA(n,o);var s=aA(n,r);i&&s&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,$d=null,Cx=null,pp=null,Ex=!1;function lA(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ex||$d==null||$d!==ev(r)||(r=$d,"selectionStart"in r&&yE(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),pp&&Up(pp,r)||(pp=r,r=av(Cx,"onSelect"),0zd||(e.current=Ix[zd],Ix[zd]=null,zd--)}function An(e,t){zd++,Ix[zd]=e.current,e.current=t}var cu={},Bi=Tu(cu),fo=Tu(!1),xc=cu;function Cf(e,t){var n=e.type.contextTypes;if(!n)return cu;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function ho(e){return e=e.childContextTypes,e!=null}function uv(){jn(fo),jn(Bi)}function gA(e,t,n){if(Bi.current!==cu)throw Error(se(168));An(Bi,t),An(fo,n)}function V9(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(se(108,cG(e)||"Unknown",i));return or({},n,r)}function cv(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||cu,xc=Bi.current,An(Bi,e),An(fo,fo.current),!0}function mA(e,t,n){var r=e.stateNode;if(!r)throw Error(se(169));n?(e=V9(e,t,xc),r.__reactInternalMemoizedMergedChildContext=e,jn(fo),jn(Bi),An(Bi,e)):jn(fo),An(fo,n)}var za=null,i_=!1,v2=!1;function G9(e){za===null?za=[e]:za.push(e)}function AH(e){i_=!0,G9(e)}function Au(){if(!v2&&za!==null){v2=!0;var e=0,t=ln;try{var n=za;for(ln=1;e>=s,i-=s,Ha=1<<32-Ps(t)+i|n<C?(A=x,x=null):A=x.sibling;var T=f(_,x,g[C],v);if(T===null){x===null&&(x=A);break}e&&x&&T.alternate===null&&t(_,x),y=o(T,y,C),w===null?S=T:w.sibling=T,w=T,x=A}if(C===g.length)return n(_,x),Kn&&Qu(_,C),S;if(x===null){for(;CC?(A=x,x=null):A=x.sibling;var k=f(_,x,T.value,v);if(k===null){x===null&&(x=A);break}e&&x&&k.alternate===null&&t(_,x),y=o(k,y,C),w===null?S=k:w.sibling=k,w=k,x=A}if(T.done)return n(_,x),Kn&&Qu(_,C),S;if(x===null){for(;!T.done;C++,T=g.next())T=d(_,T.value,v),T!==null&&(y=o(T,y,C),w===null?S=T:w.sibling=T,w=T);return Kn&&Qu(_,C),S}for(x=r(_,x);!T.done;C++,T=g.next())T=h(x,_,C,T.value,v),T!==null&&(e&&T.alternate!==null&&x.delete(T.key===null?C:T.key),y=o(T,y,C),w===null?S=T:w.sibling=T,w=T);return e&&x.forEach(function(L){return t(_,L)}),Kn&&Qu(_,C),S}function b(_,y,g,v){if(typeof g=="object"&&g!==null&&g.type===Dd&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case ty:e:{for(var S=g.key,w=y;w!==null;){if(w.key===S){if(S=g.type,S===Dd){if(w.tag===7){n(_,w.sibling),y=i(w,g.props.children),y.return=_,_=y;break e}}else if(w.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Pl&&xA(S)===w.type){n(_,w.sibling),y=i(w,g.props),y.ref=Ph(_,w,g),y.return=_,_=y;break e}n(_,w);break}else t(_,w);w=w.sibling}g.type===Dd?(y=yc(g.props.children,_.mode,v,g.key),y.return=_,_=y):(v=T0(g.type,g.key,g.props,null,_.mode,v),v.ref=Ph(_,y,g),v.return=_,_=v)}return s(_);case Nd:e:{for(w=g.key;y!==null;){if(y.key===w)if(y.tag===4&&y.stateNode.containerInfo===g.containerInfo&&y.stateNode.implementation===g.implementation){n(_,y.sibling),y=i(y,g.children||[]),y.return=_,_=y;break e}else{n(_,y);break}else t(_,y);y=y.sibling}y=T2(g,_.mode,v),y.return=_,_=y}return s(_);case Pl:return w=g._init,b(_,y,w(g._payload),v)}if(Jh(g))return p(_,y,g,v);if(Ch(g))return m(_,y,g,v);fy(_,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,y!==null&&y.tag===6?(n(_,y.sibling),y=i(y,g),y.return=_,_=y):(n(_,y),y=E2(g,_.mode,v),y.return=_,_=y),s(_)):n(_,y)}return b}var Tf=Z9(!0),J9=Z9(!1),um={},ua=Tu(um),Hp=Tu(um),qp=Tu(um);function sc(e){if(e===um)throw Error(se(174));return e}function TE(e,t){switch(An(qp,t),An(Hp,e),An(ua,um),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:px(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=px(t,e)}jn(ua),An(ua,t)}function Af(){jn(ua),jn(Hp),jn(qp)}function eM(e){sc(qp.current);var t=sc(ua.current),n=px(t,e.type);t!==n&&(An(Hp,e),An(ua,n))}function AE(e){Hp.current===e&&(jn(ua),jn(Hp))}var tr=Tu(0);function mv(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var _2=[];function kE(){for(var e=0;e<_2.length;e++)_2[e]._workInProgressVersionPrimary=null;_2.length=0}var S0=dl.ReactCurrentDispatcher,b2=dl.ReactCurrentBatchConfig,Ec=0,ir=null,Lr=null,ei=null,yv=!1,gp=!1,Wp=0,PH=0;function ki(){throw Error(se(321))}function PE(e,t){if(t===null)return!1;for(var n=0;nn?n:4,e(!0);var r=b2.transition;b2.transition={};try{e(!1),t()}finally{ln=n,b2.transition=r}}function mM(){return ts().memoizedState}function IH(e,t,n){var r=Jl(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},yM(e))vM(t,n);else if(n=K9(e,t,n,r),n!==null){var i=Ki();Rs(n,e,r,i),_M(n,t,r)}}function OH(e,t,n){var r=Jl(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(yM(e))vM(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var s=t.lastRenderedState,a=o(s,n);if(i.hasEagerState=!0,i.eagerState=a,Ds(a,s)){var l=t.interleaved;l===null?(i.next=i,CE(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=K9(e,t,i,r),n!==null&&(i=Ki(),Rs(n,e,r,i),_M(n,t,r))}}function yM(e){var t=e.alternate;return e===ir||t!==null&&t===ir}function vM(e,t){gp=yv=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function _M(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,cE(e,n)}}var vv={readContext:es,useCallback:ki,useContext:ki,useEffect:ki,useImperativeHandle:ki,useInsertionEffect:ki,useLayoutEffect:ki,useMemo:ki,useReducer:ki,useRef:ki,useState:ki,useDebugValue:ki,useDeferredValue:ki,useTransition:ki,useMutableSource:ki,useSyncExternalStore:ki,useId:ki,unstable_isNewReconciler:!1},MH={readContext:es,useCallback:function(e,t){return Xs().memoizedState=[e,t===void 0?null:t],e},useContext:es,useEffect:EA,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,w0(4194308,4,dM.bind(null,t,e),n)},useLayoutEffect:function(e,t){return w0(4194308,4,e,t)},useInsertionEffect:function(e,t){return w0(4,2,e,t)},useMemo:function(e,t){var n=Xs();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Xs();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=IH.bind(null,ir,e),[r.memoizedState,e]},useRef:function(e){var t=Xs();return e={current:e},t.memoizedState=e},useState:CA,useDebugValue:ME,useDeferredValue:function(e){return Xs().memoizedState=e},useTransition:function(){var e=CA(!1),t=e[0];return e=RH.bind(null,e[1]),Xs().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ir,i=Xs();if(Kn){if(n===void 0)throw Error(se(407));n=n()}else{if(n=t(),ri===null)throw Error(se(349));Ec&30||rM(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,EA(oM.bind(null,r,o,e),[e]),r.flags|=2048,Xp(9,iM.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Xs(),t=ri.identifierPrefix;if(Kn){var n=qa,r=Ha;n=(r&~(1<<32-Ps(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Wp++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),n==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[ea]=t,e[Gp]=r,kM(e,t,!1,!1),t.stateNode=e;e:{switch(s=mx(n,r),n){case"dialog":Nn("cancel",e),Nn("close",e),i=r;break;case"iframe":case"object":case"embed":Nn("load",e),i=r;break;case"video":case"audio":for(i=0;iPf&&(t.flags|=128,r=!0,Rh(o,!1),t.lanes=4194304)}else{if(!r)if(e=mv(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Rh(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Kn)return Pi(t),null}else 2*vr()-o.renderingStartTime>Pf&&n!==1073741824&&(t.flags|=128,r=!0,Rh(o,!1),t.lanes=4194304);o.isBackwards?(s.sibling=t.child,t.child=s):(n=o.last,n!==null?n.sibling=s:t.child=s,o.last=s)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=vr(),t.sibling=null,n=tr.current,An(tr,r?n&1|2:n&1),t):(Pi(t),null);case 22:case 23:return BE(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?To&1073741824&&(Pi(t),t.subtreeFlags&6&&(t.flags|=8192)):Pi(t),null;case 24:return null;case 25:return null}throw Error(se(156,t.tag))}function UH(e,t){switch(_E(t),t.tag){case 1:return ho(t.type)&&uv(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Af(),jn(fo),jn(Bi),kE(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return AE(t),null;case 13:if(jn(tr),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(se(340));Ef()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return jn(tr),null;case 4:return Af(),null;case 10:return xE(t.type._context),null;case 22:case 23:return BE(),null;case 24:return null;default:return null}}var py=!1,Ni=!1,jH=typeof WeakSet=="function"?WeakSet:Set,De=null;function Gd(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ur(e,t,r)}else n.current=null}function Vx(e,t,n){try{n()}catch(r){ur(e,t,r)}}var NA=!1;function VH(e,t){if(Tx=ov,e=N9(),yE(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var s=0,a=-1,l=-1,u=0,c=0,d=e,f=null;t:for(;;){for(var h;d!==n||i!==0&&d.nodeType!==3||(a=s+i),d!==o||r!==0&&d.nodeType!==3||(l=s+r),d.nodeType===3&&(s+=d.nodeValue.length),(h=d.firstChild)!==null;)f=d,d=h;for(;;){if(d===e)break t;if(f===n&&++u===i&&(a=s),f===o&&++c===r&&(l=s),(h=d.nextSibling)!==null)break;d=f,f=d.parentNode}d=h}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Ax={focusedElem:e,selectionRange:n},ov=!1,De=t;De!==null;)if(t=De,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,De=e;else for(;De!==null;){t=De;try{var p=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var m=p.memoizedProps,b=p.memoizedState,_=t.stateNode,y=_.getSnapshotBeforeUpdate(t.elementType===t.type?m:_s(t.type,m),b);_.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(se(163))}}catch(v){ur(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,De=e;break}De=t.return}return p=NA,NA=!1,p}function mp(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&Vx(t,n,o)}i=i.next}while(i!==r)}}function a_(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Gx(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function IM(e){var t=e.alternate;t!==null&&(e.alternate=null,IM(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ea],delete t[Gp],delete t[Rx],delete t[EH],delete t[TH])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function OM(e){return e.tag===5||e.tag===3||e.tag===4}function DA(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||OM(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Hx(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=lv));else if(r!==4&&(e=e.child,e!==null))for(Hx(e,t,n),e=e.sibling;e!==null;)Hx(e,t,n),e=e.sibling}function qx(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(qx(e,t,n),e=e.sibling;e!==null;)qx(e,t,n),e=e.sibling}var gi=null,bs=!1;function wl(e,t,n){for(n=n.child;n!==null;)MM(e,t,n),n=n.sibling}function MM(e,t,n){if(la&&typeof la.onCommitFiberUnmount=="function")try{la.onCommitFiberUnmount(J1,n)}catch{}switch(n.tag){case 5:Ni||Gd(n,t);case 6:var r=gi,i=bs;gi=null,wl(e,t,n),gi=r,bs=i,gi!==null&&(bs?(e=gi,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):gi.removeChild(n.stateNode));break;case 18:gi!==null&&(bs?(e=gi,n=n.stateNode,e.nodeType===8?y2(e.parentNode,n):e.nodeType===1&&y2(e,n),Bp(e)):y2(gi,n.stateNode));break;case 4:r=gi,i=bs,gi=n.stateNode.containerInfo,bs=!0,wl(e,t,n),gi=r,bs=i;break;case 0:case 11:case 14:case 15:if(!Ni&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,s=o.destroy;o=o.tag,s!==void 0&&(o&2||o&4)&&Vx(n,t,s),i=i.next}while(i!==r)}wl(e,t,n);break;case 1:if(!Ni&&(Gd(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){ur(n,t,a)}wl(e,t,n);break;case 21:wl(e,t,n);break;case 22:n.mode&1?(Ni=(r=Ni)||n.memoizedState!==null,wl(e,t,n),Ni=r):wl(e,t,n);break;default:wl(e,t,n)}}function LA(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new jH),t.forEach(function(r){var i=ZH.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function ys(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=s),r&=~o}if(r=i,r=vr()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*HH(r/1960))-r,10e?16:e,Ul===null)var r=!1;else{if(e=Ul,Ul=null,Sv=0,Bt&6)throw Error(se(331));var i=Bt;for(Bt|=4,De=e.current;De!==null;){var o=De,s=o.child;if(De.flags&16){var a=o.deletions;if(a!==null){for(var l=0;lvr()-$E?mc(e,0):LE|=n),po(e,t)}function UM(e,t){t===0&&(e.mode&1?(t=oy,oy<<=1,!(oy&130023424)&&(oy=4194304)):t=1);var n=Ki();e=il(e,t),e!==null&&(sm(e,t,n),po(e,n))}function YH(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),UM(e,n)}function ZH(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(se(314))}r!==null&&r.delete(t),UM(e,n)}var jM;jM=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||fo.current)ao=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ao=!1,BH(e,t,n);ao=!!(e.flags&131072)}else ao=!1,Kn&&t.flags&1048576&&H9(t,fv,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;x0(e,t),e=t.pendingProps;var i=Cf(t,Bi.current);nf(t,n),i=RE(null,t,r,e,i,n);var o=IE();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ho(r)?(o=!0,cv(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,EE(t),i.updater=o_,t.stateNode=i,i._reactInternals=t,Lx(t,r,e,n),t=Bx(null,t,r,!0,o,n)):(t.tag=0,Kn&&o&&vE(t),qi(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(x0(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=eq(r),e=_s(r,e),i){case 0:t=Fx(null,t,r,e,n);break e;case 1:t=IA(null,t,r,e,n);break e;case 11:t=PA(null,t,r,e,n);break e;case 14:t=RA(null,t,r,_s(r.type,e),n);break e}throw Error(se(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:_s(r,i),Fx(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:_s(r,i),IA(e,t,r,i,n);case 3:e:{if(EM(t),e===null)throw Error(se(387));r=t.pendingProps,o=t.memoizedState,i=o.element,X9(e,t),gv(t,r,null,n);var s=t.memoizedState;if(r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=kf(Error(se(423)),t),t=OA(e,t,r,n,i);break e}else if(r!==i){i=kf(Error(se(424)),t),t=OA(e,t,r,n,i);break e}else for(Po=Ql(t.stateNode.containerInfo.firstChild),Io=t,Kn=!0,ws=null,n=J9(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ef(),r===i){t=ol(e,t,n);break e}qi(e,t,r,n)}t=t.child}return t;case 5:return eM(t),e===null&&Mx(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,s=i.children,kx(r,i)?s=null:o!==null&&kx(r,o)&&(t.flags|=32),CM(e,t),qi(e,t,s,n),t.child;case 6:return e===null&&Mx(t),null;case 13:return TM(e,t,n);case 4:return TE(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Tf(t,null,r,n):qi(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:_s(r,i),PA(e,t,r,i,n);case 7:return qi(e,t,t.pendingProps,n),t.child;case 8:return qi(e,t,t.pendingProps.children,n),t.child;case 12:return qi(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,s=i.value,An(hv,r._currentValue),r._currentValue=s,o!==null)if(Ds(o.value,s)){if(o.children===i.children&&!fo.current){t=ol(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var a=o.dependencies;if(a!==null){s=o.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=Xa(-1,n&-n),l.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?l.next=l:(l.next=c.next,c.next=l),u.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Nx(o.return,n,t),a.lanes|=n;break}l=l.next}}else if(o.tag===10)s=o.type===t.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(se(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),Nx(s,n,t),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===t){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}qi(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,nf(t,n),i=es(i),r=r(i),t.flags|=1,qi(e,t,r,n),t.child;case 14:return r=t.type,i=_s(r,t.pendingProps),i=_s(r.type,i),RA(e,t,r,i,n);case 15:return wM(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:_s(r,i),x0(e,t),t.tag=1,ho(r)?(e=!0,cv(t)):e=!1,nf(t,n),Y9(t,r,i),Lx(t,r,i,n),Bx(null,t,r,!0,e,n);case 19:return AM(e,t,n);case 22:return xM(e,t,n)}throw Error(se(156,t.tag))};function VM(e,t){return g9(e,t)}function JH(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Yo(e,t,n,r){return new JH(e,t,n,r)}function UE(e){return e=e.prototype,!(!e||!e.isReactComponent)}function eq(e){if(typeof e=="function")return UE(e)?1:0;if(e!=null){if(e=e.$$typeof,e===sE)return 11;if(e===aE)return 14}return 2}function eu(e,t){var n=e.alternate;return n===null?(n=Yo(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function T0(e,t,n,r,i,o){var s=2;if(r=e,typeof e=="function")UE(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case Dd:return yc(n.children,i,o,t);case oE:s=8,i|=8;break;case sx:return e=Yo(12,n,t,i|2),e.elementType=sx,e.lanes=o,e;case ax:return e=Yo(13,n,t,i),e.elementType=ax,e.lanes=o,e;case lx:return e=Yo(19,n,t,i),e.elementType=lx,e.lanes=o,e;case ZO:return u_(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case QO:s=10;break e;case YO:s=9;break e;case sE:s=11;break e;case aE:s=14;break e;case Pl:s=16,r=null;break e}throw Error(se(130,e==null?e:typeof e,""))}return t=Yo(s,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function yc(e,t,n,r){return e=Yo(7,e,r,t),e.lanes=n,e}function u_(e,t,n,r){return e=Yo(22,e,r,t),e.elementType=ZO,e.lanes=n,e.stateNode={isHidden:!1},e}function E2(e,t,n){return e=Yo(6,e,null,t),e.lanes=n,e}function T2(e,t,n){return t=Yo(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function tq(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=s2(0),this.expirationTimes=s2(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=s2(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function jE(e,t,n,r,i,o,s,a,l){return e=new tq(e,t,n,a,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Yo(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},EE(o),e}function nq(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(WM)}catch(e){console.error(e)}}WM(),HO.exports=$o;var Cs=HO.exports;const y6e=Uc(Cs);var GA=Cs;ix.createRoot=GA.createRoot,ix.hydrateRoot=GA.hydrateRoot;const aq="modulepreload",lq=function(e,t){return new URL(e,t).href},HA={},KM=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=lq(o,r),o in HA)return;HA[o]=!0;const s=o.endsWith(".css"),a=s?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const d=i[c];if(d.href===o&&(!s||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${a}`))return;const u=document.createElement("link");if(u.rel=s?"stylesheet":aq,s||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),s)return new Promise((c,d)=>{u.addEventListener("load",c),u.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o})};function ni(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r3?t.i-4:t.i:Array.isArray(e)?1:p_(e)?2:g_(e)?3:0}function tu(e,t){return du(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function A0(e,t){return du(e)===2?e.get(t):e[t]}function XM(e,t,n){var r=du(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function QM(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function p_(e){return pq&&e instanceof Map}function g_(e){return gq&&e instanceof Set}function Xr(e){return e.o||e.t}function WE(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=ZM(e);delete t[yt];for(var n=sf(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=uq),Object.freeze(e),t&&sl(e,function(n,r){return cm(r,!0)},!0)),e}function uq(){ni(2)}function KE(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function ca(e){var t=Zx[e];return t||ni(18,e),t}function XE(e,t){Zx[e]||(Zx[e]=t)}function Yp(){return Jp}function A2(e,t){t&&(ca("Patches"),e.u=[],e.s=[],e.v=t)}function Cv(e){Yx(e),e.p.forEach(cq),e.p=null}function Yx(e){e===Jp&&(Jp=e.l)}function qA(e){return Jp={p:[],l:Jp,h:e,m:!0,_:0}}function cq(e){var t=e[yt];t.i===0||t.i===1?t.j():t.g=!0}function k2(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.O||ca("ES5").S(t,e,r),r?(n[yt].P&&(Cv(t),ni(4)),go(e)&&(e=Ev(t,e),t.l||Tv(t,e)),t.u&&ca("Patches").M(n[yt].t,e,t.u,t.s)):e=Ev(t,n,[]),Cv(t),t.u&&t.v(t.u,t.s),e!==y_?e:void 0}function Ev(e,t,n){if(KE(t))return t;var r=t[yt];if(!r)return sl(t,function(a,l){return WA(e,r,t,a,l,n)},!0),t;if(r.A!==e)return t;if(!r.P)return Tv(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=WE(r.k):r.o,o=i,s=!1;r.i===3&&(o=new Set(i),i.clear(),s=!0),sl(o,function(a,l){return WA(e,r,i,a,l,n,s)}),Tv(e,i,!1),n&&e.u&&ca("Patches").N(r,n,e.u,e.s)}return r.o}function WA(e,t,n,r,i,o,s){if(Xi(i)){var a=Ev(e,i,o&&t&&t.i!==3&&!tu(t.R,r)?o.concat(r):void 0);if(XM(n,r,a),!Xi(a))return;e.m=!1}else s&&n.add(i);if(go(i)&&!KE(i)){if(!e.h.D&&e._<1)return;Ev(e,i),t&&t.A.l||Tv(e,i)}}function Tv(e,t,n){n===void 0&&(n=!1),!e.l&&e.h.D&&e.m&&cm(t,n)}function P2(e,t){var n=e[yt];return(n?Xr(n):e)[t]}function KA(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function so(e){e.P||(e.P=!0,e.l&&so(e.l))}function R2(e){e.o||(e.o=WE(e.t))}function Zp(e,t,n){var r=p_(t)?ca("MapSet").F(t,n):g_(t)?ca("MapSet").T(t,n):e.O?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Yp(),P:!1,I:!1,R:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=a,u=eg;s&&(l=[a],u=np);var c=Proxy.revocable(l,u),d=c.revoke,f=c.proxy;return a.k=f,a.j=d,f}(t,n):ca("ES5").J(t,n);return(n?n.A:Yp()).p.push(r),r}function m_(e){return Xi(e)||ni(22,e),function t(n){if(!go(n))return n;var r,i=n[yt],o=du(n);if(i){if(!i.P&&(i.i<4||!ca("ES5").K(i)))return i.t;i.I=!0,r=XA(n,o),i.I=!1}else r=XA(n,o);return sl(r,function(s,a){i&&A0(i.t,s)===a||XM(r,s,t(a))}),o===3?new Set(r):r}(e)}function XA(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return WE(e)}function QE(){function e(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var l=this[yt];return eg.get(l,o)},set:function(l){var u=this[yt];eg.set(u,o,l)}},a}function t(o){for(var s=o.length-1;s>=0;s--){var a=o[s][yt];if(!a.P)switch(a.i){case 5:r(a)&&so(a);break;case 4:n(a)&&so(a)}}}function n(o){for(var s=o.t,a=o.k,l=sf(a),u=l.length-1;u>=0;u--){var c=l[u];if(c!==yt){var d=s[c];if(d===void 0&&!tu(s,c))return!0;var f=a[c],h=f&&f[yt];if(h?h.t!==d:!QM(f,d))return!0}}var p=!!s[yt];return l.length!==sf(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);if(a&&!a.get)return!0;for(var l=0;l1?_-1:0),g=1;g<_;g++)y[g-1]=arguments[g];return l.produce(m,function(v){var S;return(S=o).call.apply(S,[b,v].concat(y))})}}var u;if(typeof o!="function"&&ni(6),s!==void 0&&typeof s!="function"&&ni(7),go(i)){var c=qA(r),d=Zp(r,i,void 0),f=!0;try{u=o(d),f=!1}finally{f?Cv(c):Yx(c)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return A2(c,s),k2(m,c)},function(m){throw Cv(c),m}):(A2(c,s),k2(u,c))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===y_&&(u=void 0),r.D&&cm(u,!0),s){var h=[],p=[];ca("Patches").M(i,u,h,p),s(h,p)}return u}ni(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var s=ca("Patches").$;return Xi(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},e}(),No=new JM,eN=No.produce,JE=No.produceWithPatches.bind(No),yq=No.setAutoFreeze.bind(No),vq=No.setUseProxies.bind(No),Jx=No.applyPatches.bind(No),_q=No.createDraft.bind(No),bq=No.finishDraft.bind(No);const ku=eN,Sq=Object.freeze(Object.defineProperty({__proto__:null,Immer:JM,applyPatches:Jx,castDraft:fq,castImmutable:hq,createDraft:_q,current:m_,default:ku,enableAllPlugins:dq,enableES5:QE,enableMapSet:YM,enablePatches:YE,finishDraft:bq,freeze:cm,immerable:of,isDraft:Xi,isDraftable:go,nothing:y_,original:qE,produce:eN,produceWithPatches:JE,setAutoFreeze:yq,setUseProxies:vq},Symbol.toStringTag,{value:"Module"}));function tg(e){"@babel/helpers - typeof";return tg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},tg(e)}function wq(e,t){if(tg(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(tg(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function xq(e){var t=wq(e,"string");return tg(t)==="symbol"?t:String(t)}function Cq(e,t,n){return t=xq(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ZA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function JA(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(mi(1));return n(dm)(e,t)}if(typeof e!="function")throw new Error(mi(2));var i=e,o=t,s=[],a=s,l=!1;function u(){a===s&&(a=s.slice())}function c(){if(l)throw new Error(mi(3));return o}function d(m){if(typeof m!="function")throw new Error(mi(4));if(l)throw new Error(mi(5));var b=!0;return u(),a.push(m),function(){if(b){if(l)throw new Error(mi(6));b=!1,u();var y=a.indexOf(m);a.splice(y,1),s=null}}}function f(m){if(!Eq(m))throw new Error(mi(7));if(typeof m.type>"u")throw new Error(mi(8));if(l)throw new Error(mi(9));try{l=!0,o=i(o,m)}finally{l=!1}for(var b=s=a,_=0;_"u")throw new Error(mi(12));if(typeof n(void 0,{type:Rf.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(mi(13))})}function rh(e){for(var t=Object.keys(e),n={},r=0;r"u")throw u&&u.type,new Error(mi(14));d[h]=b,c=c||b!==m}return c=c||o.length!==Object.keys(l).length,c?d:l}}function tk(e,t){return function(){return t(e.apply(this,arguments))}}function nN(e,t){if(typeof e=="function")return tk(e,t);if(typeof e!="object"||e===null)throw new Error(mi(16));var n={};for(var r in e){var i=e[r];typeof i=="function"&&(n[r]=tk(i,t))}return n}function If(){for(var e=arguments.length,t=new Array(e),n=0;n-1){var u=n[l];return l>0&&(n.splice(l,1),n.unshift(u)),u.value}return Av}function i(a,l){r(a)===Av&&(n.unshift({key:a,value:l}),n.length>e&&n.pop())}function o(){return n}function s(){n=[]}return{get:r,put:i,getEntries:o,clear:s}}var rN=function(t,n){return t===n};function Rq(e){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o1?t-1:0),r=1;r0&&o[o.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]",value:e};if(typeof e!="object"||e===null||o!=null&&o.has(e))return!1;for(var a=r!=null?r(e):Object.entries(e),l=i.length>0,u=function(b,_){var y=t?t+"."+b:b;if(l){var g=i.some(function(v){return v instanceof RegExp?v.test(y):y===v});if(g)return"continue"}if(!n(_))return{value:{keyPath:y,value:_}};if(typeof _=="object"&&(s=dN(_,y,n,r,i,o),s))return{value:s}},c=0,d=a;c-1}function Wq(e){return""+e}function mN(e){var t={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return e(i),[t,n,r]}function Kq(e){return typeof e=="function"}function yN(e,t,n,r){n===void 0&&(n=[]);var i=typeof t=="function"?mN(t):[t,n,r],o=i[0],s=i[1],a=i[2],l;if(Kq(e))l=function(){return eC(e())};else{var u=eC(e);l=function(){return u}}function c(d,f){d===void 0&&(d=l());var h=fu([o[f.type]],s.filter(function(p){var m=p.matcher;return m(f)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[a]),h.reduce(function(p,m){if(m)if(Xi(p)){var b=p,_=m(b,f);return _===void 0?p:_}else{if(go(p))return ku(p,function(y){return m(y,f)});var _=m(p,f);if(_===void 0){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return _}return p},d)}return c.getInitialState=l,c}function Xq(e,t){return e+"/"+t}function nr(e){var t=e.name;if(!t)throw new Error("`name` is a required option for createSlice");typeof process<"u";var n=typeof e.initialState=="function"?e.initialState:eC(e.initialState),r=e.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(c){var d=r[c],f=Xq(t,c),h,p;"reducer"in d?(h=d.reducer,p=d.prepare):h=d,o[c]=h,s[f]=h,a[c]=p?Le(f,p):Le(f)});function l(){var c=typeof e.extraReducers=="function"?mN(e.extraReducers):[e.extraReducers],d=c[0],f=d===void 0?{}:d,h=c[1],p=h===void 0?[]:h,m=c[2],b=m===void 0?void 0:m,_=lo(lo({},f),s);return yN(n,function(y){for(var g in _)y.addCase(g,_[g]);for(var v=0,S=p;v0;if(y){var g=p.filter(function(v){return u(b,v,m)}).length>0;g&&(m.ids=Object.keys(m.entities))}}function f(p,m){return h([p],m)}function h(p,m){var b=vN(p,e,m),_=b[0],y=b[1];d(y,m),n(_,m)}return{removeAll:Jq(l),addOne:mr(t),addMany:mr(n),setOne:mr(r),setMany:mr(i),setAll:mr(o),updateOne:mr(c),updateMany:mr(d),upsertOne:mr(f),upsertMany:mr(h),removeOne:mr(s),removeMany:mr(a)}}function eW(e,t){var n=_N(e),r=n.removeOne,i=n.removeMany,o=n.removeAll;function s(y,g){return a([y],g)}function a(y,g){y=vc(y);var v=y.filter(function(S){return!(_p(S,e)in g.entities)});v.length!==0&&b(v,g)}function l(y,g){return u([y],g)}function u(y,g){y=vc(y),y.length!==0&&b(y,g)}function c(y,g){y=vc(y),g.entities={},g.ids=[],a(y,g)}function d(y,g){return f([y],g)}function f(y,g){for(var v=!1,S=0,w=y;S-1;return n&&r}function pm(e){return typeof e[0]=="function"&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function b_(){for(var e=[],t=0;t0)for(var g=h.getState(),v=Array.from(n.values()),S=0,w=v;SMath.floor(e/t)*t,xs=(e,t)=>Math.round(e/t)*t;var _W=typeof global=="object"&&global&&global.Object===Object&&global;const $N=_W;var bW=typeof self=="object"&&self&&self.Object===Object&&self,SW=$N||bW||Function("return this")();const wa=SW;var wW=wa.Symbol;const ns=wW;var FN=Object.prototype,xW=FN.hasOwnProperty,CW=FN.toString,Oh=ns?ns.toStringTag:void 0;function EW(e){var t=xW.call(e,Oh),n=e[Oh];try{e[Oh]=void 0;var r=!0}catch{}var i=CW.call(e);return r&&(t?e[Oh]=n:delete e[Oh]),i}var TW=Object.prototype,AW=TW.toString;function kW(e){return AW.call(e)}var PW="[object Null]",RW="[object Undefined]",uk=ns?ns.toStringTag:void 0;function Bs(e){return e==null?e===void 0?RW:PW:uk&&uk in Object(e)?EW(e):kW(e)}function mo(e){return e!=null&&typeof e=="object"}var IW="[object Symbol]";function S_(e){return typeof e=="symbol"||mo(e)&&Bs(e)==IW}function i5(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=dK)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function gK(e){return function(){return e}}var mK=function(){try{var e=Hc(Object,"defineProperty");return e({},"",{}),e}catch{}}();const Ov=mK;var yK=Ov?function(e,t){return Ov(e,"toString",{configurable:!0,enumerable:!1,value:gK(t),writable:!0})}:w_;const vK=yK;var _K=pK(vK);const jN=_K;function VN(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var EK=9007199254740991,TK=/^(?:0|[1-9]\d*)$/;function s5(e,t){var n=typeof e;return t=t??EK,!!t&&(n=="number"||n!="symbol"&&TK.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=PK}function qc(e){return e!=null&&a5(e.length)&&!o5(e)}function WN(e,t,n){if(!zi(n))return!1;var r=typeof t;return(r=="number"?qc(n)&&s5(t,n.length):r=="string"&&t in n)?vm(n[t],e):!1}function KN(e){return qN(function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(i--,o):void 0,s&&WN(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r-1}function GX(e,t){var n=this.__data__,r=E_(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function hl(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?t7(a,t-1,n,r,i):h5(i,a):r||(i[i.length]=a)}return i}function aQ(e){var t=e==null?0:e.length;return t?t7(e,1):[]}function lQ(e){return jN(HN(e,void 0,aQ),e+"")}var uQ=JN(Object.getPrototypeOf,Object);const p5=uQ;var cQ="[object Object]",dQ=Function.prototype,fQ=Object.prototype,n7=dQ.toString,hQ=fQ.hasOwnProperty,pQ=n7.call(Object);function r7(e){if(!mo(e)||Bs(e)!=cQ)return!1;var t=p5(e);if(t===null)return!0;var n=hQ.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&n7.call(n)==pQ}function i7(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r=r?e:i7(e,t,n)}var gQ="\\ud800-\\udfff",mQ="\\u0300-\\u036f",yQ="\\ufe20-\\ufe2f",vQ="\\u20d0-\\u20ff",_Q=mQ+yQ+vQ,bQ="\\ufe0e\\ufe0f",SQ="\\u200d",wQ=RegExp("["+SQ+gQ+_Q+bQ+"]");function k_(e){return wQ.test(e)}function xQ(e){return e.split("")}var s7="\\ud800-\\udfff",CQ="\\u0300-\\u036f",EQ="\\ufe20-\\ufe2f",TQ="\\u20d0-\\u20ff",AQ=CQ+EQ+TQ,kQ="\\ufe0e\\ufe0f",PQ="["+s7+"]",iC="["+AQ+"]",oC="\\ud83c[\\udffb-\\udfff]",RQ="(?:"+iC+"|"+oC+")",a7="[^"+s7+"]",l7="(?:\\ud83c[\\udde6-\\uddff]){2}",u7="[\\ud800-\\udbff][\\udc00-\\udfff]",IQ="\\u200d",c7=RQ+"?",d7="["+kQ+"]?",OQ="(?:"+IQ+"(?:"+[a7,l7,u7].join("|")+")"+d7+c7+")*",MQ=d7+c7+OQ,NQ="(?:"+[a7+iC+"?",iC,l7,u7,PQ].join("|")+")",DQ=RegExp(oC+"(?="+oC+")|"+NQ+MQ,"g");function LQ(e){return e.match(DQ)||[]}function f7(e){return k_(e)?LQ(e):xQ(e)}function $Q(e){return function(t){t=Mf(t);var n=k_(t)?f7(t):void 0,r=n?n[0]:t.charAt(0),i=n?o7(n,1).join(""):t.slice(1);return r[e]()+i}}var FQ=$Q("toUpperCase");const h7=FQ;function p7(e,t,n,r){var i=-1,o=e==null?0:e.length;for(r&&o&&(n=e[++i]);++i=t?e:t)),e}function jl(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=P0(n),n=n===n?n:0),t!==void 0&&(t=P0(t),t=t===t?t:0),kY(P0(e),t,n)}function PY(){this.__data__=new hl,this.size=0}function RY(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function IY(e){return this.__data__.get(e)}function OY(e){return this.__data__.has(e)}var MY=200;function NY(e,t){var n=this.__data__;if(n instanceof hl){var r=n.__data__;if(!og||r.lengtha))return!1;var u=o.get(e),c=o.get(t);if(u&&c)return u==t&&c==e;var d=-1,f=!0,h=n&pJ?new sg:void 0;for(o.set(e,t),o.set(t,e);++d1),o}),ih(e,N7(e),n),r&&(n=Sp(n,Oee|Mee|Nee,Iee));for(var i=t.length;i--;)Q7(n,t[i]);return n});const I_=Dee;var Lee=H7("length");const $ee=Lee;var Y7="\\ud800-\\udfff",Fee="\\u0300-\\u036f",Bee="\\ufe20-\\ufe2f",zee="\\u20d0-\\u20ff",Uee=Fee+Bee+zee,jee="\\ufe0e\\ufe0f",Vee="["+Y7+"]",dC="["+Uee+"]",fC="\\ud83c[\\udffb-\\udfff]",Gee="(?:"+dC+"|"+fC+")",Z7="[^"+Y7+"]",J7="(?:\\ud83c[\\udde6-\\uddff]){2}",eD="[\\ud800-\\udbff][\\udc00-\\udfff]",Hee="\\u200d",tD=Gee+"?",nD="["+jee+"]?",qee="(?:"+Hee+"(?:"+[Z7,J7,eD].join("|")+")"+nD+tD+")*",Wee=nD+tD+qee,Kee="(?:"+[Z7+dC+"?",dC,J7,eD,Vee].join("|")+")",Gk=RegExp(fC+"(?="+fC+")|"+Kee+Wee,"g");function Xee(e){for(var t=Gk.lastIndex=0;Gk.test(e);)++t;return t}function rD(e){return k_(e)?Xee(e):$ee(e)}function Qee(e,t,n,r,i){return i(e,function(o,s,a){n=r?(r=!1,o):t(n,o,s,a)}),n}function hC(e,t,n){var r=Ir(e)?p7:Qee,i=arguments.length<3;return r(e,oh(t),n,i,sh)}var Yee="[object Map]",Zee="[object Set]";function O_(e){if(e==null)return 0;if(qc(e))return K7(e)?rD(e):e.length;var t=Nf(e);return t==Yee||t==Zee?e.size:e7(e).length}function Jee(e,t){var n;return sh(e,function(r,i,o){return n=t(r,i,o),!n}),!!n}function wp(e,t,n){var r=Ir(e)?z7:Jee;return n&&WN(e,t,n)&&(t=void 0),r(e,oh(t))}var ete=AY(function(e,t,n){return e+(n?" ":"")+h7(t)});const tte=ete;var nte=30,rte="...",ite=/\w*$/;function $2(e,t){var n=nte,r=rte;if(zi(t)){var i="separator"in t?t.separator:i;n="length"in t?BN(t.length):n,r="omission"in t?Iv(t.omission):r}e=Mf(e);var o=e.length;if(k_(e)){var s=f7(e);o=s.length}if(n>=o)return e;var a=n-rD(r);if(a<1)return r;var l=s?o7(s,0,a).join(""):e.slice(0,a);if(i===void 0)return l+r;if(s&&(a+=l.length-a),Aee(i)){if(e.slice(a).search(i)){var u,c=l;for(i.global||(i=RegExp(i.source,Mf(ite.exec(i))+"g")),i.lastIndex=0;u=i.exec(c);)var d=u.index;l=l.slice(0,d===void 0?a:d)}}else if(e.indexOf(Iv(i),a)!=a){var f=l.lastIndexOf(i);f>-1&&(l=l.slice(0,f))}return l+r}var ote=1/0,ste=cf&&1/y5(new cf([,-0]))[1]==ote?function(e){return new cf(e)}:cK;const ate=ste;var lte=200;function ute(e,t,n){var r=-1,i=CK,o=e.length,s=!0,a=[],l=a;if(n)s=!1,i=dee;else if(o>=lte){var u=t?null:ate(e);if(u)return y5(u);s=!1,i=U7,l=new sg}else l=t?[]:a;e:for(;++r{Ree(e,t.payload)}}}),{configChanged:dte}=oD.actions,fte=oD.reducer,v6e={any:"Any","sd-1":"Stable Diffusion 1.x","sd-2":"Stable Diffusion 2.x",sdxl:"Stable Diffusion XL","sdxl-refiner":"Stable Diffusion XL Refiner"},_6e={any:"Any","sd-1":"SD1","sd-2":"SD2",sdxl:"SDXL","sdxl-refiner":"SDXLR"},hte={any:{maxClip:0,markers:[]},"sd-1":{maxClip:12,markers:[0,1,2,3,4,8,12]},"sd-2":{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]},sdxl:{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]},"sdxl-refiner":{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]}},b6e={lycoris:"LyCORIS",diffusers:"Diffusers"},S6e=0,pte=4294967295;var Vt;(function(e){e.assertEqual=i=>i;function t(i){}e.assertIs=t;function n(i){throw new Error}e.assertNever=n,e.arrayToEnum=i=>{const o={};for(const s of i)o[s]=s;return o},e.getValidEnumValues=i=>{const o=e.objectKeys(i).filter(a=>typeof i[i[a]]!="number"),s={};for(const a of o)s[a]=i[a];return e.objectValues(s)},e.objectValues=i=>e.objectKeys(i).map(function(o){return i[o]}),e.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{const o=[];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&o.push(s);return o},e.find=(i,o)=>{for(const s of i)if(o(s))return s},e.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&isFinite(i)&&Math.floor(i)===i;function r(i,o=" | "){return i.map(s=>typeof s=="string"?`'${s}'`:s).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(i,o)=>typeof o=="bigint"?o.toString():o})(Vt||(Vt={}));var pC;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(pC||(pC={}));const Ie=Vt.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),$l=e=>{switch(typeof e){case"undefined":return Ie.undefined;case"string":return Ie.string;case"number":return isNaN(e)?Ie.nan:Ie.number;case"boolean":return Ie.boolean;case"function":return Ie.function;case"bigint":return Ie.bigint;case"symbol":return Ie.symbol;case"object":return Array.isArray(e)?Ie.array:e===null?Ie.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?Ie.promise:typeof Map<"u"&&e instanceof Map?Ie.map:typeof Set<"u"&&e instanceof Set?Ie.set:typeof Date<"u"&&e instanceof Date?Ie.date:Ie.object;default:return Ie.unknown}},de=Vt.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),gte=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class Os extends Error{constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}get errors(){return this.issues}format(t){const n=t||function(o){return o.message},r={_errors:[]},i=o=>{for(const s of o.issues)if(s.code==="invalid_union")s.unionErrors.map(i);else if(s.code==="invalid_return_type")i(s.returnTypeError);else if(s.code==="invalid_arguments")i(s.argumentsError);else if(s.path.length===0)r._errors.push(n(s));else{let a=r,l=0;for(;ln.message){const n={},r=[];for(const i of this.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}Os.create=e=>new Os(e);const ag=(e,t)=>{let n;switch(e.code){case de.invalid_type:e.received===Ie.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case de.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Vt.jsonStringifyReplacer)}`;break;case de.unrecognized_keys:n=`Unrecognized key(s) in object: ${Vt.joinValues(e.keys,", ")}`;break;case de.invalid_union:n="Invalid input";break;case de.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Vt.joinValues(e.options)}`;break;case de.invalid_enum_value:n=`Invalid enum value. Expected ${Vt.joinValues(e.options)}, received '${e.received}'`;break;case de.invalid_arguments:n="Invalid function arguments";break;case de.invalid_return_type:n="Invalid function return type";break;case de.invalid_date:n="Invalid date";break;case de.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:Vt.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case de.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case de.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case de.custom:n="Invalid input";break;case de.invalid_intersection_types:n="Intersection results could not be merged";break;case de.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case de.not_finite:n="Number must be finite";break;default:n=t.defaultError,Vt.assertNever(e)}return{message:n}};let sD=ag;function mte(e){sD=e}function Dv(){return sD}const Lv=e=>{const{data:t,path:n,errorMaps:r,issueData:i}=e,o=[...n,...i.path||[]],s={...i,path:o};let a="";const l=r.filter(u=>!!u).slice().reverse();for(const u of l)a=u(s,{data:t,defaultError:a}).message;return{...i,path:o,message:i.message||a}},yte=[];function Me(e,t){const n=Lv({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,Dv(),ag].filter(r=>!!r)});e.common.issues.push(n)}class Ui{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const i of n){if(i.status==="aborted")return ft;i.status==="dirty"&&t.dirty(),r.push(i.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const i of n)r.push({key:await i.key,value:await i.value});return Ui.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const i of n){const{key:o,value:s}=i;if(o.status==="aborted"||s.status==="aborted")return ft;o.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const ft=Object.freeze({status:"aborted"}),aD=e=>({status:"dirty",value:e}),Qi=e=>({status:"valid",value:e}),gC=e=>e.status==="aborted",mC=e=>e.status==="dirty",lg=e=>e.status==="valid",$v=e=>typeof Promise<"u"&&e instanceof Promise;var et;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(et||(et={}));class ya{constructor(t,n,r,i){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=i}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const qk=(e,t)=>{if(lg(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new Os(e.common.issues);return this._error=n,this._error}}};function vt(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(s,a)=>s.code!=="invalid_type"?{message:a.defaultError}:typeof a.data>"u"?{message:r??a.defaultError}:{message:n??a.defaultError},description:i}}class wt{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return $l(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:$l(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Ui,ctx:{common:t.parent.common,data:t.data,parsedType:$l(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if($v(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){var r;const i={common:{issues:[],async:(r=n==null?void 0:n.async)!==null&&r!==void 0?r:!1,contextualErrorMap:n==null?void 0:n.errorMap},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:$l(t)},o=this._parseSync({data:t,path:i.path,parent:i});return qk(i,o)}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n==null?void 0:n.errorMap,async:!0},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:$l(t)},i=this._parse({data:t,path:r.path,parent:r}),o=await($v(i)?i:Promise.resolve(i));return qk(r,o)}refine(t,n){const r=i=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(i):n;return this._refinement((i,o)=>{const s=t(i),a=()=>o.addIssue({code:de.custom,...r(i)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>l?!0:(a(),!1)):s?!0:(a(),!1)})}refinement(t,n){return this._refinement((r,i)=>t(r)?!0:(i.addIssue(typeof n=="function"?n(r,i):n),!1))}_refinement(t){return new $s({schema:this,typeName:it.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Qa.create(this,this._def)}nullable(){return Ic.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ms.create(this,this._def)}promise(){return Lf.create(this,this._def)}or(t){return fg.create([this,t],this._def)}and(t){return hg.create(this,t,this._def)}transform(t){return new $s({...vt(this._def),schema:this,typeName:it.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new vg({...vt(this._def),innerType:this,defaultValue:n,typeName:it.ZodDefault})}brand(){return new uD({typeName:it.ZodBranded,type:this,...vt(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new Uv({...vt(this._def),innerType:this,catchValue:n,typeName:it.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return xm.create(this,t)}readonly(){return Vv.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const vte=/^c[^\s-]{8,}$/i,_te=/^[a-z][a-z0-9]*$/,bte=/[0-9A-HJKMNP-TV-Z]{26}/,Ste=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,wte=/^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,xte=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,Cte=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,Ete=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,Tte=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):e.precision===0?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function Ate(e,t){return!!((t==="v4"||!t)&&Cte.test(e)||(t==="v6"||!t)&&Ete.test(e))}class ks extends wt{constructor(){super(...arguments),this._regex=(t,n,r)=>this.refinement(i=>t.test(i),{validation:n,code:de.invalid_string,...et.errToObj(r)}),this.nonempty=t=>this.min(1,et.errToObj(t)),this.trim=()=>new ks({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new ks({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new ks({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==Ie.string){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.string,received:o.parsedType}),ft}const r=new Ui;let i;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(i=this._getOrReturnCtx(t,i),Me(i,{code:de.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){const s=t.data.length>o.value,a=t.data.length"u"?null:t==null?void 0:t.precision,offset:(n=t==null?void 0:t.offset)!==null&&n!==void 0?n:!1,...et.errToObj(t==null?void 0:t.message)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...et.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n==null?void 0:n.position,...et.errToObj(n==null?void 0:n.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...et.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...et.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...et.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...et.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...et.errToObj(n)})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get minLength(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new ks({checks:[],typeName:it.ZodString,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...vt(e)})};function kte(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,i=n>r?n:r,o=parseInt(e.toFixed(i).replace(".","")),s=parseInt(t.toFixed(i).replace(".",""));return o%s/Math.pow(10,i)}class gu extends wt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==Ie.number){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.number,received:o.parsedType}),ft}let r;const i=new Ui;for(const o of this._def.checks)o.kind==="int"?Vt.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),Me(r,{code:de.invalid_type,expected:"integer",received:"float",message:o.message}),i.dirty()):o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?kte(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),Me(r,{code:de.not_finite,message:o.message}),i.dirty()):Vt.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,et.toString(n))}gt(t,n){return this.setLimit("min",t,!1,et.toString(n))}lte(t,n){return this.setLimit("max",t,!0,et.toString(n))}lt(t,n){return this.setLimit("max",t,!1,et.toString(n))}setLimit(t,n,r,i){return new gu({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:et.toString(i)}]})}_addCheck(t){return new gu({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:et.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:et.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:et.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:et.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:et.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:et.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:et.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:et.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:et.toString(t)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuet.kind==="int"||t.kind==="multipleOf"&&Vt.isInteger(t.value))}get isFinite(){let t=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.valuenew gu({checks:[],typeName:it.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...vt(e)});class mu extends wt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce&&(t.data=BigInt(t.data)),this._getType(t)!==Ie.bigint){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.bigint,received:o.parsedType}),ft}let r;const i=new Ui;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),i.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):Vt.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,et.toString(n))}gt(t,n){return this.setLimit("min",t,!1,et.toString(n))}lte(t,n){return this.setLimit("max",t,!0,et.toString(n))}lt(t,n){return this.setLimit("max",t,!1,et.toString(n))}setLimit(t,n,r,i){return new mu({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:et.toString(i)}]})}_addCheck(t){return new mu({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:et.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:et.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:et.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:et.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:et.toString(n)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new mu({checks:[],typeName:it.ZodBigInt,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...vt(e)})};class ug extends wt{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==Ie.boolean){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.boolean,received:r.parsedType}),ft}return Qi(t.data)}}ug.create=e=>new ug({typeName:it.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...vt(e)});class Pc extends wt{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==Ie.date){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.date,received:o.parsedType}),ft}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_date}),ft}const r=new Ui;let i;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(i=this._getOrReturnCtx(t,i),Me(i,{code:de.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Vt.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new Pc({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:et.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:et.toString(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew Pc({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:it.ZodDate,...vt(e)});class Fv extends wt{_parse(t){if(this._getType(t)!==Ie.symbol){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.symbol,received:r.parsedType}),ft}return Qi(t.data)}}Fv.create=e=>new Fv({typeName:it.ZodSymbol,...vt(e)});class cg extends wt{_parse(t){if(this._getType(t)!==Ie.undefined){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.undefined,received:r.parsedType}),ft}return Qi(t.data)}}cg.create=e=>new cg({typeName:it.ZodUndefined,...vt(e)});class dg extends wt{_parse(t){if(this._getType(t)!==Ie.null){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.null,received:r.parsedType}),ft}return Qi(t.data)}}dg.create=e=>new dg({typeName:it.ZodNull,...vt(e)});class Df extends wt{constructor(){super(...arguments),this._any=!0}_parse(t){return Qi(t.data)}}Df.create=e=>new Df({typeName:it.ZodAny,...vt(e)});class _c extends wt{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Qi(t.data)}}_c.create=e=>new _c({typeName:it.ZodUnknown,...vt(e)});class al extends wt{_parse(t){const n=this._getOrReturnCtx(t);return Me(n,{code:de.invalid_type,expected:Ie.never,received:n.parsedType}),ft}}al.create=e=>new al({typeName:it.ZodNever,...vt(e)});class Bv extends wt{_parse(t){if(this._getType(t)!==Ie.undefined){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.void,received:r.parsedType}),ft}return Qi(t.data)}}Bv.create=e=>new Bv({typeName:it.ZodVoid,...vt(e)});class Ms extends wt{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),i=this._def;if(n.parsedType!==Ie.array)return Me(n,{code:de.invalid_type,expected:Ie.array,received:n.parsedType}),ft;if(i.exactLength!==null){const s=n.data.length>i.exactLength.value,a=n.data.lengthi.maxLength.value&&(Me(n,{code:de.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((s,a)=>i.type._parseAsync(new ya(n,s,n.path,a)))).then(s=>Ui.mergeArray(r,s));const o=[...n.data].map((s,a)=>i.type._parseSync(new ya(n,s,n.path,a)));return Ui.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new Ms({...this._def,minLength:{value:t,message:et.toString(n)}})}max(t,n){return new Ms({...this._def,maxLength:{value:t,message:et.toString(n)}})}length(t,n){return new Ms({...this._def,exactLength:{value:t,message:et.toString(n)}})}nonempty(t){return this.min(1,t)}}Ms.create=(e,t)=>new Ms({type:e,minLength:null,maxLength:null,exactLength:null,typeName:it.ZodArray,...vt(t)});function kd(e){if(e instanceof er){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Qa.create(kd(r))}return new er({...e._def,shape:()=>t})}else return e instanceof Ms?new Ms({...e._def,type:kd(e.element)}):e instanceof Qa?Qa.create(kd(e.unwrap())):e instanceof Ic?Ic.create(kd(e.unwrap())):e instanceof va?va.create(e.items.map(t=>kd(t))):e}class er extends wt{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),n=Vt.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==Ie.object){const u=this._getOrReturnCtx(t);return Me(u,{code:de.invalid_type,expected:Ie.object,received:u.parsedType}),ft}const{status:r,ctx:i}=this._processInputParams(t),{shape:o,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof al&&this._def.unknownKeys==="strip"))for(const u in i.data)s.includes(u)||a.push(u);const l=[];for(const u of s){const c=o[u],d=i.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new ya(i,d,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof al){const u=this._def.unknownKeys;if(u==="passthrough")for(const c of a)l.push({key:{status:"valid",value:c},value:{status:"valid",value:i.data[c]}});else if(u==="strict")a.length>0&&(Me(i,{code:de.unrecognized_keys,keys:a}),r.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const c of a){const d=i.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new ya(i,d,i.path,c)),alwaysSet:c in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const u=[];for(const c of l){const d=await c.key;u.push({key:d,value:await c.value,alwaysSet:c.alwaysSet})}return u}).then(u=>Ui.mergeObjectSync(r,u)):Ui.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return et.errToObj,new er({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{var i,o,s,a;const l=(s=(o=(i=this._def).errorMap)===null||o===void 0?void 0:o.call(i,n,r).message)!==null&&s!==void 0?s:r.defaultError;return n.code==="unrecognized_keys"?{message:(a=et.errToObj(t).message)!==null&&a!==void 0?a:l}:{message:l}}}:{}})}strip(){return new er({...this._def,unknownKeys:"strip"})}passthrough(){return new er({...this._def,unknownKeys:"passthrough"})}extend(t){return new er({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new er({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:it.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new er({...this._def,catchall:t})}pick(t){const n={};return Vt.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new er({...this._def,shape:()=>n})}omit(t){const n={};return Vt.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new er({...this._def,shape:()=>n})}deepPartial(){return kd(this)}partial(t){const n={};return Vt.objectKeys(this.shape).forEach(r=>{const i=this.shape[r];t&&!t[r]?n[r]=i:n[r]=i.optional()}),new er({...this._def,shape:()=>n})}required(t){const n={};return Vt.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof Qa;)o=o._def.innerType;n[r]=o}}),new er({...this._def,shape:()=>n})}keyof(){return lD(Vt.objectKeys(this.shape))}}er.create=(e,t)=>new er({shape:()=>e,unknownKeys:"strip",catchall:al.create(),typeName:it.ZodObject,...vt(t)});er.strictCreate=(e,t)=>new er({shape:()=>e,unknownKeys:"strict",catchall:al.create(),typeName:it.ZodObject,...vt(t)});er.lazycreate=(e,t)=>new er({shape:e,unknownKeys:"strip",catchall:al.create(),typeName:it.ZodObject,...vt(t)});class fg extends wt{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function i(o){for(const a of o)if(a.result.status==="valid")return a.result;for(const a of o)if(a.result.status==="dirty")return n.common.issues.push(...a.ctx.common.issues),a.result;const s=o.map(a=>new Os(a.ctx.common.issues));return Me(n,{code:de.invalid_union,unionErrors:s}),ft}if(n.common.async)return Promise.all(r.map(async o=>{const s={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:s}),ctx:s}})).then(i);{let o;const s=[];for(const l of r){const u={...n,common:{...n.common,issues:[]},parent:null},c=l._parseSync({data:n.data,path:n.path,parent:u});if(c.status==="valid")return c;c.status==="dirty"&&!o&&(o={result:c,ctx:u}),u.common.issues.length&&s.push(u.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;const a=s.map(l=>new Os(l));return Me(n,{code:de.invalid_union,unionErrors:a}),ft}}get options(){return this._def.options}}fg.create=(e,t)=>new fg({options:e,typeName:it.ZodUnion,...vt(t)});const R0=e=>e instanceof gg?R0(e.schema):e instanceof $s?R0(e.innerType()):e instanceof mg?[e.value]:e instanceof yu?e.options:e instanceof yg?Object.keys(e.enum):e instanceof vg?R0(e._def.innerType):e instanceof cg?[void 0]:e instanceof dg?[null]:null;class M_ extends wt{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Ie.object)return Me(n,{code:de.invalid_type,expected:Ie.object,received:n.parsedType}),ft;const r=this.discriminator,i=n.data[r],o=this.optionsMap.get(i);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(Me(n,{code:de.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),ft)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const i=new Map;for(const o of n){const s=R0(o.shape[t]);if(!s)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const a of s){if(i.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);i.set(a,o)}}return new M_({typeName:it.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...vt(r)})}}function yC(e,t){const n=$l(e),r=$l(t);if(e===t)return{valid:!0,data:e};if(n===Ie.object&&r===Ie.object){const i=Vt.objectKeys(t),o=Vt.objectKeys(e).filter(a=>i.indexOf(a)!==-1),s={...e,...t};for(const a of o){const l=yC(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}else if(n===Ie.array&&r===Ie.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{if(gC(o)||gC(s))return ft;const a=yC(o.value,s.value);return a.valid?((mC(o)||mC(s))&&n.dirty(),{status:n.value,value:a.data}):(Me(r,{code:de.invalid_intersection_types}),ft)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,s])=>i(o,s)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}hg.create=(e,t,n)=>new hg({left:e,right:t,typeName:it.ZodIntersection,...vt(n)});class va extends wt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.array)return Me(r,{code:de.invalid_type,expected:Ie.array,received:r.parsedType}),ft;if(r.data.lengththis._def.items.length&&(Me(r,{code:de.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const o=[...r.data].map((s,a)=>{const l=this._def.items[a]||this._def.rest;return l?l._parse(new ya(r,s,r.path,a)):null}).filter(s=>!!s);return r.common.async?Promise.all(o).then(s=>Ui.mergeArray(n,s)):Ui.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new va({...this._def,rest:t})}}va.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new va({items:e,typeName:it.ZodTuple,rest:null,...vt(t)})};class pg extends wt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.object)return Me(r,{code:de.invalid_type,expected:Ie.object,received:r.parsedType}),ft;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new ya(r,a,r.path,a)),value:s._parse(new ya(r,r.data[a],r.path,a))});return r.common.async?Ui.mergeObjectAsync(n,i):Ui.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof wt?new pg({keyType:t,valueType:n,typeName:it.ZodRecord,...vt(r)}):new pg({keyType:ks.create(),valueType:t,typeName:it.ZodRecord,...vt(n)})}}class zv extends wt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.map)return Me(r,{code:de.invalid_type,expected:Ie.map,received:r.parsedType}),ft;const i=this._def.keyType,o=this._def.valueType,s=[...r.data.entries()].map(([a,l],u)=>({key:i._parse(new ya(r,a,r.path,[u,"key"])),value:o._parse(new ya(r,l,r.path,[u,"value"]))}));if(r.common.async){const a=new Map;return Promise.resolve().then(async()=>{for(const l of s){const u=await l.key,c=await l.value;if(u.status==="aborted"||c.status==="aborted")return ft;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}})}else{const a=new Map;for(const l of s){const u=l.key,c=l.value;if(u.status==="aborted"||c.status==="aborted")return ft;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}}}}zv.create=(e,t,n)=>new zv({valueType:t,keyType:e,typeName:it.ZodMap,...vt(n)});class Rc extends wt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.set)return Me(r,{code:de.invalid_type,expected:Ie.set,received:r.parsedType}),ft;const i=this._def;i.minSize!==null&&r.data.sizei.maxSize.value&&(Me(r,{code:de.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),n.dirty());const o=this._def.valueType;function s(l){const u=new Set;for(const c of l){if(c.status==="aborted")return ft;c.status==="dirty"&&n.dirty(),u.add(c.value)}return{status:n.value,value:u}}const a=[...r.data.values()].map((l,u)=>o._parse(new ya(r,l,r.path,u)));return r.common.async?Promise.all(a).then(l=>s(l)):s(a)}min(t,n){return new Rc({...this._def,minSize:{value:t,message:et.toString(n)}})}max(t,n){return new Rc({...this._def,maxSize:{value:t,message:et.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}Rc.create=(e,t)=>new Rc({valueType:e,minSize:null,maxSize:null,typeName:it.ZodSet,...vt(t)});class df extends wt{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Ie.function)return Me(n,{code:de.invalid_type,expected:Ie.function,received:n.parsedType}),ft;function r(a,l){return Lv({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Dv(),ag].filter(u=>!!u),issueData:{code:de.invalid_arguments,argumentsError:l}})}function i(a,l){return Lv({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Dv(),ag].filter(u=>!!u),issueData:{code:de.invalid_return_type,returnTypeError:l}})}const o={errorMap:n.common.contextualErrorMap},s=n.data;if(this._def.returns instanceof Lf){const a=this;return Qi(async function(...l){const u=new Os([]),c=await a._def.args.parseAsync(l,o).catch(h=>{throw u.addIssue(r(l,h)),u}),d=await Reflect.apply(s,this,c);return await a._def.returns._def.type.parseAsync(d,o).catch(h=>{throw u.addIssue(i(d,h)),u})})}else{const a=this;return Qi(function(...l){const u=a._def.args.safeParse(l,o);if(!u.success)throw new Os([r(l,u.error)]);const c=Reflect.apply(s,this,u.data),d=a._def.returns.safeParse(c,o);if(!d.success)throw new Os([i(c,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new df({...this._def,args:va.create(t).rest(_c.create())})}returns(t){return new df({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new df({args:t||va.create([]).rest(_c.create()),returns:n||_c.create(),typeName:it.ZodFunction,...vt(r)})}}class gg extends wt{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}gg.create=(e,t)=>new gg({getter:e,typeName:it.ZodLazy,...vt(t)});class mg extends wt{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return Me(n,{received:n.data,code:de.invalid_literal,expected:this._def.value}),ft}return{status:"valid",value:t.data}}get value(){return this._def.value}}mg.create=(e,t)=>new mg({value:e,typeName:it.ZodLiteral,...vt(t)});function lD(e,t){return new yu({values:e,typeName:it.ZodEnum,...vt(t)})}class yu extends wt{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return Me(n,{expected:Vt.joinValues(r),received:n.parsedType,code:de.invalid_type}),ft}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return Me(n,{received:n.data,code:de.invalid_enum_value,options:r}),ft}return Qi(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t){return yu.create(t)}exclude(t){return yu.create(this.options.filter(n=>!t.includes(n)))}}yu.create=lD;class yg extends wt{_parse(t){const n=Vt.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==Ie.string&&r.parsedType!==Ie.number){const i=Vt.objectValues(n);return Me(r,{expected:Vt.joinValues(i),received:r.parsedType,code:de.invalid_type}),ft}if(n.indexOf(t.data)===-1){const i=Vt.objectValues(n);return Me(r,{received:r.data,code:de.invalid_enum_value,options:i}),ft}return Qi(t.data)}get enum(){return this._def.values}}yg.create=(e,t)=>new yg({values:e,typeName:it.ZodNativeEnum,...vt(t)});class Lf extends wt{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Ie.promise&&n.common.async===!1)return Me(n,{code:de.invalid_type,expected:Ie.promise,received:n.parsedType}),ft;const r=n.parsedType===Ie.promise?n.data:Promise.resolve(n.data);return Qi(r.then(i=>this._def.type.parseAsync(i,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Lf.create=(e,t)=>new Lf({type:e,typeName:it.ZodPromise,...vt(t)});class $s extends wt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===it.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),i=this._def.effect||null,o={addIssue:s=>{Me(r,s),s.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),i.type==="preprocess"){const s=i.transform(r.data,o);return r.common.issues.length?{status:"dirty",value:r.data}:r.common.async?Promise.resolve(s).then(a=>this._def.schema._parseAsync({data:a,path:r.path,parent:r})):this._def.schema._parseSync({data:s,path:r.path,parent:r})}if(i.type==="refinement"){const s=a=>{const l=i.refinement(a,o);if(r.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){const a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?ft:(a.status==="dirty"&&n.dirty(),s(a.value),{status:n.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?ft:(a.status==="dirty"&&n.dirty(),s(a.value).then(()=>({status:n.value,value:a.value}))))}if(i.type==="transform")if(r.common.async===!1){const s=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!lg(s))return s;const a=i.transform(s.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(s=>lg(s)?Promise.resolve(i.transform(s.value,o)).then(a=>({status:n.value,value:a})):s);Vt.assertNever(i)}}$s.create=(e,t,n)=>new $s({schema:e,typeName:it.ZodEffects,effect:t,...vt(n)});$s.createWithPreprocess=(e,t,n)=>new $s({schema:t,effect:{type:"preprocess",transform:e},typeName:it.ZodEffects,...vt(n)});class Qa extends wt{_parse(t){return this._getType(t)===Ie.undefined?Qi(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Qa.create=(e,t)=>new Qa({innerType:e,typeName:it.ZodOptional,...vt(t)});class Ic extends wt{_parse(t){return this._getType(t)===Ie.null?Qi(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ic.create=(e,t)=>new Ic({innerType:e,typeName:it.ZodNullable,...vt(t)});class vg extends wt{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===Ie.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}vg.create=(e,t)=>new vg({innerType:e,typeName:it.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...vt(t)});class Uv extends wt{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},i=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return $v(i)?i.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Os(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Os(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}Uv.create=(e,t)=>new Uv({innerType:e,typeName:it.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...vt(t)});class jv extends wt{_parse(t){if(this._getType(t)!==Ie.nan){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.nan,received:r.parsedType}),ft}return{status:"valid",value:t.data}}}jv.create=e=>new jv({typeName:it.ZodNaN,...vt(e)});const Pte=Symbol("zod_brand");class uD extends wt{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class xm extends wt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?ft:o.status==="dirty"?(n.dirty(),aD(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{const i=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?ft:i.status==="dirty"?(n.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:r.path,parent:r})}}static create(t,n){return new xm({in:t,out:n,typeName:it.ZodPipeline})}}class Vv extends wt{_parse(t){const n=this._def.innerType._parse(t);return lg(n)&&(n.value=Object.freeze(n.value)),n}}Vv.create=(e,t)=>new Vv({innerType:e,typeName:it.ZodReadonly,...vt(t)});const cD=(e,t={},n)=>e?Df.create().superRefine((r,i)=>{var o,s;if(!e(r)){const a=typeof t=="function"?t(r):typeof t=="string"?{message:t}:t,l=(s=(o=a.fatal)!==null&&o!==void 0?o:n)!==null&&s!==void 0?s:!0,u=typeof a=="string"?{message:a}:a;i.addIssue({code:"custom",...u,fatal:l})}}):Df.create(),Rte={object:er.lazycreate};var it;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(it||(it={}));const Ite=(e,t={message:`Input not instance of ${e.name}`})=>cD(n=>n instanceof e,t),dD=ks.create,fD=gu.create,Ote=jv.create,Mte=mu.create,hD=ug.create,Nte=Pc.create,Dte=Fv.create,Lte=cg.create,$te=dg.create,Fte=Df.create,Bte=_c.create,zte=al.create,Ute=Bv.create,jte=Ms.create,Vte=er.create,Gte=er.strictCreate,Hte=fg.create,qte=M_.create,Wte=hg.create,Kte=va.create,Xte=pg.create,Qte=zv.create,Yte=Rc.create,Zte=df.create,Jte=gg.create,ene=mg.create,tne=yu.create,nne=yg.create,rne=Lf.create,Wk=$s.create,ine=Qa.create,one=Ic.create,sne=$s.createWithPreprocess,ane=xm.create,lne=()=>dD().optional(),une=()=>fD().optional(),cne=()=>hD().optional(),dne={string:e=>ks.create({...e,coerce:!0}),number:e=>gu.create({...e,coerce:!0}),boolean:e=>ug.create({...e,coerce:!0}),bigint:e=>mu.create({...e,coerce:!0}),date:e=>Pc.create({...e,coerce:!0})},fne=ft;var z=Object.freeze({__proto__:null,defaultErrorMap:ag,setErrorMap:mte,getErrorMap:Dv,makeIssue:Lv,EMPTY_PATH:yte,addIssueToContext:Me,ParseStatus:Ui,INVALID:ft,DIRTY:aD,OK:Qi,isAborted:gC,isDirty:mC,isValid:lg,isAsync:$v,get util(){return Vt},get objectUtil(){return pC},ZodParsedType:Ie,getParsedType:$l,ZodType:wt,ZodString:ks,ZodNumber:gu,ZodBigInt:mu,ZodBoolean:ug,ZodDate:Pc,ZodSymbol:Fv,ZodUndefined:cg,ZodNull:dg,ZodAny:Df,ZodUnknown:_c,ZodNever:al,ZodVoid:Bv,ZodArray:Ms,ZodObject:er,ZodUnion:fg,ZodDiscriminatedUnion:M_,ZodIntersection:hg,ZodTuple:va,ZodRecord:pg,ZodMap:zv,ZodSet:Rc,ZodFunction:df,ZodLazy:gg,ZodLiteral:mg,ZodEnum:yu,ZodNativeEnum:yg,ZodPromise:Lf,ZodEffects:$s,ZodTransformer:$s,ZodOptional:Qa,ZodNullable:Ic,ZodDefault:vg,ZodCatch:Uv,ZodNaN:jv,BRAND:Pte,ZodBranded:uD,ZodPipeline:xm,ZodReadonly:Vv,custom:cD,Schema:wt,ZodSchema:wt,late:Rte,get ZodFirstPartyTypeKind(){return it},coerce:dne,any:Fte,array:jte,bigint:Mte,boolean:hD,date:Nte,discriminatedUnion:qte,effect:Wk,enum:tne,function:Zte,instanceof:Ite,intersection:Wte,lazy:Jte,literal:ene,map:Qte,nan:Ote,nativeEnum:nne,never:zte,null:$te,nullable:one,number:fD,object:Vte,oboolean:cne,onumber:une,optional:ine,ostring:lne,pipeline:ane,preprocess:sne,promise:rne,record:Xte,set:Yte,strictObject:Gte,string:dD,symbol:Dte,transformer:Wk,tuple:Kte,undefined:Lte,union:Hte,unknown:Bte,void:Ute,NEVER:fne,ZodIssueCode:de,quotelessJson:gte,ZodError:Os});const hne=z.string(),w6e=e=>hne.safeParse(e).success,pne=z.string(),x6e=e=>pne.safeParse(e).success,gne=z.string(),C6e=e=>gne.safeParse(e).success,mne=z.string(),E6e=e=>mne.safeParse(e).success,yne=z.number().int().min(1),T6e=e=>yne.safeParse(e).success,vne=z.number().min(1),A6e=e=>vne.safeParse(e).success,pD=z.enum(["euler","deis","ddim","ddpm","dpmpp_2s","dpmpp_2m","dpmpp_2m_sde","dpmpp_sde","heun","kdpm_2","lms","pndm","unipc","euler_k","dpmpp_2s_k","dpmpp_2m_k","dpmpp_2m_sde_k","dpmpp_sde_k","heun_k","lms_k","euler_a","kdpm_2_a"]),k6e=e=>pD.safeParse(e).success,P6e={euler:"Euler",deis:"DEIS",ddim:"DDIM",ddpm:"DDPM",dpmpp_sde:"DPM++ SDE",dpmpp_2s:"DPM++ 2S",dpmpp_2m:"DPM++ 2M",dpmpp_2m_sde:"DPM++ 2M SDE",heun:"Heun",kdpm_2:"KDPM 2",lms:"LMS",pndm:"PNDM",unipc:"UniPC",euler_k:"Euler Karras",dpmpp_sde_k:"DPM++ SDE Karras",dpmpp_2s_k:"DPM++ 2S Karras",dpmpp_2m_k:"DPM++ 2M Karras",dpmpp_2m_sde_k:"DPM++ 2M SDE Karras",heun_k:"Heun Karras",lms_k:"LMS Karras",euler_a:"Euler Ancestral",kdpm_2_a:"KDPM 2 Ancestral"},_ne=z.number().int().min(0).max(pte),R6e=e=>_ne.safeParse(e).success,bne=z.number().multipleOf(8).min(64),I6e=e=>bne.safeParse(e).success,Sne=z.number().multipleOf(8).min(64),O6e=e=>Sne.safeParse(e).success,Wc=z.enum(["any","sd-1","sd-2","sdxl","sdxl-refiner"]),N_=z.object({model_name:z.string().min(1),base_model:Wc,model_type:z.literal("main")}),M6e=e=>N_.safeParse(e).success,_5=z.object({model_name:z.string().min(1),base_model:z.literal("sdxl-refiner"),model_type:z.literal("main")}),N6e=e=>_5.safeParse(e).success,gD=z.object({model_name:z.string().min(1),base_model:Wc,model_type:z.literal("onnx")}),Cm=z.union([N_,gD]),wne=z.object({model_name:z.string().min(1),base_model:Wc}),xne=z.object({model_name:z.string().min(1),base_model:Wc}),D6e=e=>xne.safeParse(e).success,L6e=z.object({model_name:z.string().min(1),base_model:Wc}),$6e=z.object({model_name:z.string().min(1),base_model:Wc}),Cne=z.number().min(0).max(1),F6e=e=>Cne.safeParse(e).success;z.enum(["fp16","fp32"]);const Ene=z.number().min(1).max(10),B6e=e=>Ene.safeParse(e).success,Tne=z.number().min(1).max(10),z6e=e=>Tne.safeParse(e).success,Ane=z.number().min(0).max(1),U6e=e=>Ane.safeParse(e).success;z.enum(["box","gaussian"]);z.enum(["unmasked","mask","edge"]);const zs={cfgScale:7.5,height:512,img2imgStrength:.75,infillMethod:"patchmatch",iterations:1,perlin:0,positivePrompt:"",negativePrompt:"",scheduler:"euler",maskBlur:16,maskBlurMethod:"box",canvasCoherenceMode:"unmasked",canvasCoherenceSteps:20,canvasCoherenceStrength:.3,seed:0,seedWeights:"",shouldFitToWidthHeight:!0,shouldGenerateVariations:!1,shouldRandomizeSeed:!0,shouldUseNoiseSettings:!1,steps:50,threshold:0,infillTileSize:32,infillPatchmatchDownscaleSize:1,variationAmount:.1,width:512,shouldUseSymmetry:!1,horizontalSymmetrySteps:0,verticalSymmetrySteps:0,model:null,vae:null,vaePrecision:"fp32",seamlessXAxis:!1,seamlessYAxis:!1,clipSkip:0,shouldUseCpuNoise:!0,shouldShowAdvancedOptions:!1,aspectRatio:null,shouldLockAspectRatio:!1},kne=zs,mD=nr({name:"generation",initialState:kne,reducers:{setPositivePrompt:(e,t)=>{e.positivePrompt=t.payload},setNegativePrompt:(e,t)=>{e.negativePrompt=t.payload},setIterations:(e,t)=>{e.iterations=t.payload},setSteps:(e,t)=>{e.steps=t.payload},clampSymmetrySteps:e=>{e.horizontalSymmetrySteps=jl(e.horizontalSymmetrySteps,0,e.steps),e.verticalSymmetrySteps=jl(e.verticalSymmetrySteps,0,e.steps)},setCfgScale:(e,t)=>{e.cfgScale=t.payload},setThreshold:(e,t)=>{e.threshold=t.payload},setPerlin:(e,t)=>{e.perlin=t.payload},setHeight:(e,t)=>{e.height=t.payload},setWidth:(e,t)=>{e.width=t.payload},toggleSize:e=>{const[t,n]=[e.width,e.height];e.width=n,e.height=t},setScheduler:(e,t)=>{e.scheduler=t.payload},setSeed:(e,t)=>{e.seed=t.payload,e.shouldRandomizeSeed=!1},setImg2imgStrength:(e,t)=>{e.img2imgStrength=t.payload},setSeamlessXAxis:(e,t)=>{e.seamlessXAxis=t.payload},setSeamlessYAxis:(e,t)=>{e.seamlessYAxis=t.payload},setShouldFitToWidthHeight:(e,t)=>{e.shouldFitToWidthHeight=t.payload},resetSeed:e=>{e.seed=-1},setShouldGenerateVariations:(e,t)=>{e.shouldGenerateVariations=t.payload},setVariationAmount:(e,t)=>{e.variationAmount=t.payload},setSeedWeights:(e,t)=>{e.seedWeights=t.payload,e.shouldGenerateVariations=!0,e.variationAmount=0},resetParametersState:e=>({...e,...zs}),setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setMaskBlur:(e,t)=>{e.maskBlur=t.payload},setMaskBlurMethod:(e,t)=>{e.maskBlurMethod=t.payload},setCanvasCoherenceMode:(e,t)=>{e.canvasCoherenceMode=t.payload},setCanvasCoherenceSteps:(e,t)=>{e.canvasCoherenceSteps=t.payload},setCanvasCoherenceStrength:(e,t)=>{e.canvasCoherenceStrength=t.payload},setInfillMethod:(e,t)=>{e.infillMethod=t.payload},setInfillTileSize:(e,t)=>{e.infillTileSize=t.payload},setInfillPatchmatchDownscaleSize:(e,t)=>{e.infillPatchmatchDownscaleSize=t.payload},setShouldUseSymmetry:(e,t)=>{e.shouldUseSymmetry=t.payload},setHorizontalSymmetrySteps:(e,t)=>{e.horizontalSymmetrySteps=t.payload},setVerticalSymmetrySteps:(e,t)=>{e.verticalSymmetrySteps=t.payload},setShouldUseNoiseSettings:(e,t)=>{e.shouldUseNoiseSettings=t.payload},initialImageChanged:(e,t)=>{const{image_name:n,width:r,height:i}=t.payload;e.initialImage={imageName:n,width:r,height:i}},modelChanged:(e,t)=>{if(e.model=t.payload,e.model===null)return;const{maxClip:n}=hte[e.model.base_model];e.clipSkip=jl(e.clipSkip,0,n)},vaeSelected:(e,t)=>{e.vae=t.payload},vaePrecisionChanged:(e,t)=>{e.vaePrecision=t.payload},setClipSkip:(e,t)=>{e.clipSkip=t.payload},shouldUseCpuNoiseChanged:(e,t)=>{e.shouldUseCpuNoise=t.payload},setShouldShowAdvancedOptions:(e,t)=>{e.shouldShowAdvancedOptions=t.payload,t.payload||(e.clipSkip=0)},setAspectRatio:(e,t)=>{const n=t.payload;e.aspectRatio=n,n&&(e.height=xs(e.width/n,8))},setShouldLockAspectRatio:(e,t)=>{e.shouldLockAspectRatio=t.payload}},extraReducers:e=>{e.addCase(dte,(t,n)=>{var i;const r=(i=n.payload.sd)==null?void 0:i.defaultModel;if(r&&!t.model){const[o,s,a]=r.split("/"),l=N_.safeParse({model_name:a,base_model:o,model_type:s});l.success&&(t.model=l.data)}}),e.addCase(Rne,(t,n)=>{n.payload||(t.clipSkip=0)})}}),{clampSymmetrySteps:j6e,clearInitialImage:b5,resetParametersState:V6e,resetSeed:G6e,setCfgScale:H6e,setWidth:Kk,setHeight:Xk,toggleSize:q6e,setImg2imgStrength:W6e,setInfillMethod:Pne,setIterations:K6e,setPerlin:X6e,setPositivePrompt:Q6e,setNegativePrompt:Y6e,setScheduler:Z6e,setMaskBlur:J6e,setMaskBlurMethod:e8e,setCanvasCoherenceMode:t8e,setCanvasCoherenceSteps:n8e,setCanvasCoherenceStrength:r8e,setSeed:i8e,setSeedWeights:o8e,setShouldFitToWidthHeight:s8e,setShouldGenerateVariations:a8e,setShouldRandomizeSeed:l8e,setSteps:u8e,setThreshold:c8e,setInfillTileSize:d8e,setInfillPatchmatchDownscaleSize:f8e,setVariationAmount:h8e,setShouldUseSymmetry:p8e,setHorizontalSymmetrySteps:g8e,setVerticalSymmetrySteps:m8e,initialImageChanged:D_,modelChanged:Vl,vaeSelected:yD,setShouldUseNoiseSettings:y8e,setSeamlessXAxis:v8e,setSeamlessYAxis:_8e,setClipSkip:b8e,shouldUseCpuNoiseChanged:S8e,setShouldShowAdvancedOptions:Rne,setAspectRatio:Ine,setShouldLockAspectRatio:w8e,vaePrecisionChanged:x8e}=mD.actions,One=mD.reducer;let Gi=[],Ru=(e,t)=>{let n=[],r={get(){return r.lc||r.listen(()=>{})(),r.value},l:t||0,lc:0,listen(i,o){return r.lc=n.push(i,o||r.l)/2,()=>{let s=n.indexOf(i);~s&&(n.splice(s,2),r.lc--,r.lc||r.off())}},notify(i){let o=!Gi.length;for(let s=0;s(e.events=e.events||{},e.events[n+Sy]||(e.events[n+Sy]=r(i=>{e.events[n].reduceRight((o,s)=>(s(o),o),{shared:{},...i})})),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let i=e.events[n],o=i.indexOf(t);i.splice(o,1),i.length||(delete e.events[n],e.events[n+Sy](),delete e.events[n+Sy])}),Dne=1e3,Lne=(e,t)=>Nne(e,r=>{let i=t(r);i&&e.events[by].push(i)},Mne,r=>{let i=e.listen;e.listen=(...s)=>(!e.lc&&!e.active&&(e.active=!0,r()),i(...s));let o=e.off;return e.events[by]=[],e.off=()=>{o(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let s of e.events[by])s();e.events[by]=[]}},Dne)},()=>{e.listen=i,e.off=o}}),$ne=(e,t)=>{Array.isArray(e)||(e=[e]);let n,r=()=>{let o=e.map(s=>s.get());(n===void 0||o.some((s,a)=>s!==n[a]))&&(n=o,i.set(t(...o)))},i=Ru(void 0,Math.max(...e.map(o=>o.l))+1);return Lne(i,()=>{let o=e.map(s=>s.listen(r,i.l));return r(),()=>{for(let s of o)s()}}),i};const Fne={"Content-Type":"application/json"},Bne=/\/*$/;function zne(e={}){const{fetch:t=globalThis.fetch,querySerializer:n,bodySerializer:r,...i}=e;async function o(s,a){const{headers:l,body:u,params:c={},parseAs:d="json",querySerializer:f=n??Une,bodySerializer:h=r??jne,...p}=a||{},m=Vne(s,{baseUrl:i.baseUrl,params:c,querySerializer:f}),b=Gne(Fne,e==null?void 0:e.headers,l,c.header),_={redirect:"follow",...i,...p,headers:b};u&&(_.body=h(u)),_.body instanceof FormData&&b.delete("Content-Type");const y=await t(m,_);if(y.status===204||y.headers.get("Content-Length")==="0")return y.ok?{data:{},response:y}:{error:{},response:y};if(y.ok){let v=y.body;if(d!=="stream"){const S=y.clone();v=typeof S[d]=="function"?await S[d]():await S.text()}return{data:v,response:y}}let g={};try{g=await y.clone().json()}catch{g=await y.clone().text()}return{error:g,response:y}}return{async GET(s,a){return o(s,{...a,method:"GET"})},async PUT(s,a){return o(s,{...a,method:"PUT"})},async POST(s,a){return o(s,{...a,method:"POST"})},async DELETE(s,a){return o(s,{...a,method:"DELETE"})},async OPTIONS(s,a){return o(s,{...a,method:"OPTIONS"})},async HEAD(s,a){return o(s,{...a,method:"HEAD"})},async PATCH(s,a){return o(s,{...a,method:"PATCH"})},async TRACE(s,a){return o(s,{...a,method:"TRACE"})}}}function Une(e){const t=new URLSearchParams;if(e&&typeof e=="object")for(const[n,r]of Object.entries(e))r!=null&&t.set(n,r);return t.toString()}function jne(e){return JSON.stringify(e)}function Vne(e,t){let n=`${t.baseUrl?t.baseUrl.replace(Bne,""):""}${e}`;if(t.params.path)for(const[r,i]of Object.entries(t.params.path))n=n.replace(`{${r}}`,encodeURIComponent(String(i)));if(t.params.query){const r=t.querySerializer(t.params.query);r&&(n+=`?${r}`)}return n}function Gne(...e){const t=new Headers;for(const n of e){if(!n||typeof n!="object")continue;const r=n instanceof Headers?n.entries():Object.entries(n);for(const[i,o]of r)o===null?t.delete(i):o!==void 0&&t.set(i,o)}return t}const $f=Ru(),_g=Ru(),bg=Ru(),L_=$ne([$f,_g,bg],(e,t,n)=>zne({headers:{...e?{Authorization:`Bearer ${e}`}:{},...n?{"project-id":n}:{}},baseUrl:`${t??""}`})),xi=hu("api/sessionCreated",async(e,{rejectWithValue:t})=>{const{graph:n}=e,{POST:r}=L_.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/",{body:n});return o?t({arg:e,status:s.status,error:o}):i}),Hne=e=>zi(e)&&"status"in e,qne=e=>zi(e)&&"detail"in e,ah=hu("api/sessionInvoked",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{PUT:r}=L_.get(),{error:i,response:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{query:{all:!0},path:{session_id:n}}});if(i){if(Hne(i)&&i.status===403)return t({arg:e,status:o.status,error:i.body.detail});if(qne(i)&&o.status===403)return t({arg:e,status:o.status,error:i.detail});if(i)return t({arg:e,status:o.status,error:i})}}),Iu=hu("api/sessionCanceled",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{DELETE:r}=L_.get(),{data:i,error:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{path:{session_id:n}}});return o?t({arg:e,error:o}):i});hu("api/listSessions",async(e,{rejectWithValue:t})=>{const{params:n}=e,{GET:r}=L_.get(),{data:i,error:o}=await r("/api/v1/sessions/",{params:n});return o?t({arg:e,error:o}):i});const vD=os(xi.rejected,ah.rejected),wy=(e,t,n,r,i,o,s)=>{const a=Math.floor(e/2-(n+i/2)*s),l=Math.floor(t/2-(r+o/2)*s);return{x:a,y:l}},xy=(e,t,n,r,i=.95)=>{const o=e*i/n,s=t*i/r,a=Math.min(1,Math.min(o,s));return a||1},C8e=.999,E8e=.1,T8e=20,Cy=.95,A8e=30,k8e=10,Wne=e=>({x:Math.floor(e.x),y:Math.floor(e.y)}),hd=e=>{const{width:t,height:n}=e,r={width:t,height:n},i=512*512,o=t/n;let s=t*n,a=448;for(;s1?(r.width=a,r.height=xs(a/o,64)):o<1&&(r.height=a,r.width=xs(a*o,64)),s=r.width*r.height;return r},Kne=e=>({width:xs(e.width,64),height:xs(e.height,64)}),P8e=[{label:"Base",value:"base"},{label:"Mask",value:"mask"}],R8e=[{label:"None",value:"none"},{label:"Auto",value:"auto"},{label:"Manual",value:"manual"}],_D=e=>e.kind==="line"&&e.layer==="mask",I8e=e=>e.kind==="line"&&e.layer==="base",Xne=e=>e.kind==="image"&&e.layer==="base",O8e=e=>e.kind==="fillRect"&&e.layer==="base",M8e=e=>e.kind==="eraseRect"&&e.layer==="base",Qne=e=>e.kind==="line",Pd={objects:[],stagingArea:{images:[],selectedImageIndex:-1}},bD={boundingBoxCoordinates:{x:0,y:0},boundingBoxDimensions:{width:512,height:512},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},boundingBoxScaleMethod:"none",brushColor:{r:90,g:90,b:255,a:1},brushSize:50,colorPickerColor:{r:90,g:90,b:255,a:1},cursorPosition:null,futureLayerStates:[],isDrawing:!1,isMaskEnabled:!0,isMouseOverBoundingBox:!1,isMoveBoundingBoxKeyHeld:!1,isMoveStageKeyHeld:!1,isMovingBoundingBox:!1,isMovingStage:!1,isTransformingBoundingBox:!1,layer:"base",layerState:Pd,maskColor:{r:255,g:90,b:90,a:1},maxHistory:128,minimumStageScale:1,pastLayerStates:[],scaledBoundingBoxDimensions:{width:512,height:512},shouldAntialias:!0,shouldAutoSave:!1,shouldCropToBoundingBoxOnSave:!1,shouldDarkenOutsideBoundingBox:!1,shouldLockBoundingBox:!1,shouldPreserveMaskedArea:!1,shouldRestrictStrokesToBox:!0,shouldShowBoundingBox:!0,shouldShowBrush:!0,shouldShowBrushPreview:!1,shouldShowCanvasDebugInfo:!1,shouldShowCheckboardTransparency:!1,shouldShowGrid:!0,shouldShowIntermediates:!0,shouldShowStagingImage:!0,shouldShowStagingOutline:!0,shouldSnapToGrid:!0,stageCoordinates:{x:0,y:0},stageDimensions:{width:0,height:0},stageScale:1,tool:"brush"},SD=nr({name:"canvas",initialState:bD,reducers:{setTool:(e,t)=>{const n=t.payload;e.tool=t.payload,n!=="move"&&(e.isTransformingBoundingBox=!1,e.isMouseOverBoundingBox=!1,e.isMovingBoundingBox=!1,e.isMovingStage=!1)},setLayer:(e,t)=>{e.layer=t.payload},toggleTool:e=>{const t=e.tool;t!=="move"&&(e.tool=t==="brush"?"eraser":"brush")},setMaskColor:(e,t)=>{e.maskColor=t.payload},setBrushColor:(e,t)=>{e.brushColor=t.payload},setBrushSize:(e,t)=>{e.brushSize=t.payload},clearMask:e=>{e.pastLayerStates.push(Jn(e.layerState)),e.layerState.objects=e.layerState.objects.filter(t=>!_D(t)),e.futureLayerStates=[],e.shouldPreserveMaskedArea=!1},toggleShouldInvertMask:e=>{e.shouldPreserveMaskedArea=!e.shouldPreserveMaskedArea},toggleShouldShowMask:e=>{e.isMaskEnabled=!e.isMaskEnabled},setShouldPreserveMaskedArea:(e,t)=>{e.shouldPreserveMaskedArea=t.payload},setIsMaskEnabled:(e,t)=>{e.isMaskEnabled=t.payload,e.layer=t.payload?"mask":"base"},setShouldShowCheckboardTransparency:(e,t)=>{e.shouldShowCheckboardTransparency=t.payload},setShouldShowBrushPreview:(e,t)=>{e.shouldShowBrushPreview=t.payload},setShouldShowBrush:(e,t)=>{e.shouldShowBrush=t.payload},setCursorPosition:(e,t)=>{e.cursorPosition=t.payload},setInitialCanvasImage:(e,t)=>{const n=t.payload,{width:r,height:i}=n,{stageDimensions:o}=e,s={width:vy(jl(r,64,512),64),height:vy(jl(i,64,512),64)},a={x:xs(r/2-s.width/2,64),y:xs(i/2-s.height/2,64)};if(e.boundingBoxScaleMethod==="auto"){const c=hd(s);e.scaledBoundingBoxDimensions=c}e.boundingBoxDimensions=s,e.boundingBoxCoordinates=a,e.pastLayerStates.push(Jn(e.layerState)),e.layerState={...Pd,objects:[{kind:"image",layer:"base",x:0,y:0,width:r,height:i,imageName:n.image_name}]},e.futureLayerStates=[];const l=xy(o.width,o.height,r,i,Cy),u=wy(o.width,o.height,0,0,r,i,l);e.stageScale=l,e.stageCoordinates=u},setBoundingBoxDimensions:(e,t)=>{const n=Kne(t.payload);if(e.boundingBoxDimensions=n,e.boundingBoxScaleMethod==="auto"){const r=hd(n);e.scaledBoundingBoxDimensions=r}},flipBoundingBoxAxes:e=>{const[t,n]=[e.boundingBoxDimensions.width,e.boundingBoxDimensions.height],[r,i]=[e.scaledBoundingBoxDimensions.width,e.scaledBoundingBoxDimensions.height];e.boundingBoxDimensions={width:n,height:t},e.scaledBoundingBoxDimensions={width:i,height:r}},setBoundingBoxCoordinates:(e,t)=>{e.boundingBoxCoordinates=Wne(t.payload)},setStageCoordinates:(e,t)=>{e.stageCoordinates=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=t.payload},setStageScale:(e,t)=>{e.stageScale=t.payload},setShouldDarkenOutsideBoundingBox:(e,t)=>{e.shouldDarkenOutsideBoundingBox=t.payload},setIsDrawing:(e,t)=>{e.isDrawing=t.payload},clearCanvasHistory:e=>{e.pastLayerStates=[],e.futureLayerStates=[]},setShouldLockBoundingBox:(e,t)=>{e.shouldLockBoundingBox=t.payload},toggleShouldLockBoundingBox:e=>{e.shouldLockBoundingBox=!e.shouldLockBoundingBox},setShouldShowBoundingBox:(e,t)=>{e.shouldShowBoundingBox=t.payload},setIsTransformingBoundingBox:(e,t)=>{e.isTransformingBoundingBox=t.payload},setIsMovingBoundingBox:(e,t)=>{e.isMovingBoundingBox=t.payload},setIsMouseOverBoundingBox:(e,t)=>{e.isMouseOverBoundingBox=t.payload},setIsMoveBoundingBoxKeyHeld:(e,t)=>{e.isMoveBoundingBoxKeyHeld=t.payload},setIsMoveStageKeyHeld:(e,t)=>{e.isMoveStageKeyHeld=t.payload},canvasSessionIdChanged:(e,t)=>{e.layerState.stagingArea.sessionId=t.payload},stagingAreaInitialized:(e,t)=>{const{sessionId:n,boundingBox:r}=t.payload;e.layerState.stagingArea={boundingBox:r,sessionId:n,images:[],selectedImageIndex:-1}},addImageToStagingArea:(e,t)=>{const n=t.payload;!n||!e.layerState.stagingArea.boundingBox||(e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea.images.push({kind:"image",layer:"base",...e.layerState.stagingArea.boundingBox,imageName:n.image_name}),e.layerState.stagingArea.selectedImageIndex=e.layerState.stagingArea.images.length-1,e.futureLayerStates=[])},discardStagedImages:e=>{e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea={...Pd.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingOutline=!0},addFillRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,brushColor:r}=e;e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.objects.push({kind:"fillRect",layer:"base",...t,...n,color:r}),e.futureLayerStates=[]},addEraseRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n}=e;e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.objects.push({kind:"eraseRect",layer:"base",...t,...n}),e.futureLayerStates=[]},addLine:(e,t)=>{const{tool:n,layer:r,brushColor:i,brushSize:o,shouldRestrictStrokesToBox:s}=e;if(n==="move"||n==="colorPicker")return;const a=o/2,l=r==="base"&&n==="brush"?{color:i}:{};e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift();const u={kind:"line",layer:r,tool:n,strokeWidth:a,points:t.payload,...l};s&&(u.clip={...e.boundingBoxCoordinates,...e.boundingBoxDimensions}),e.layerState.objects.push(u),e.futureLayerStates=[]},addPointToCurrentLine:(e,t)=>{const n=e.layerState.objects.findLast(Qne);n&&n.points.push(...t.payload)},undo:e=>{const t=e.pastLayerStates.pop();t&&(e.futureLayerStates.unshift(Jn(e.layerState)),e.futureLayerStates.length>e.maxHistory&&e.futureLayerStates.pop(),e.layerState=t)},redo:e=>{const t=e.futureLayerStates.shift();t&&(e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState=t)},setShouldShowGrid:(e,t)=>{e.shouldShowGrid=t.payload},setIsMovingStage:(e,t)=>{e.isMovingStage=t.payload},setShouldSnapToGrid:(e,t)=>{e.shouldSnapToGrid=t.payload},setShouldAutoSave:(e,t)=>{e.shouldAutoSave=t.payload},setShouldShowIntermediates:(e,t)=>{e.shouldShowIntermediates=t.payload},resetCanvas:e=>{e.pastLayerStates.push(Jn(e.layerState)),e.layerState=Pd,e.futureLayerStates=[]},canvasResized:(e,t)=>{const{width:n,height:r}=t.payload,i={width:Math.floor(n),height:Math.floor(r)};if(e.stageDimensions=i,!e.layerState.objects.find(Xne)){const o=xy(i.width,i.height,512,512,Cy),s=wy(i.width,i.height,0,0,512,512,o),a={width:512,height:512};if(e.stageScale=o,e.stageCoordinates=s,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=a,e.boundingBoxScaleMethod==="auto"){const l=hd(a);e.scaledBoundingBoxDimensions=l}}},resetCanvasView:(e,t)=>{const{contentRect:n,shouldScaleTo1:r}=t.payload,{stageDimensions:{width:i,height:o}}=e,{x:s,y:a,width:l,height:u}=n;if(l!==0&&u!==0){const c=r?1:xy(i,o,l,u,Cy),d=wy(i,o,s,a,l,u,c);e.stageScale=c,e.stageCoordinates=d}else{const c=xy(i,o,512,512,Cy),d=wy(i,o,0,0,512,512,c),f={width:512,height:512};if(e.stageScale=c,e.stageCoordinates=d,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=f,e.boundingBoxScaleMethod==="auto"){const h=hd(f);e.scaledBoundingBoxDimensions=h}}},nextStagingAreaImage:e=>{if(!e.layerState.stagingArea.images.length)return;const t=e.layerState.stagingArea.selectedImageIndex,n=e.layerState.stagingArea.images.length;e.layerState.stagingArea.selectedImageIndex=Math.min(t+1,n-1)},prevStagingAreaImage:e=>{if(!e.layerState.stagingArea.images.length)return;const t=e.layerState.stagingArea.selectedImageIndex;e.layerState.stagingArea.selectedImageIndex=Math.max(t-1,0)},commitStagingAreaImage:(e,t)=>{if(!e.layerState.stagingArea.images.length)return;const{images:n,selectedImageIndex:r}=e.layerState.stagingArea;e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift();const i=n[r];i&&e.layerState.objects.push({...i}),e.layerState.stagingArea={...Pd.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingImage=!0},fitBoundingBoxToStage:e=>{const{boundingBoxDimensions:t,boundingBoxCoordinates:n,stageDimensions:r,stageScale:i}=e,o=r.width/i,s=r.height/i;if(n.x<0||n.x+t.width>o||n.y<0||n.y+t.height>s){const a={width:vy(jl(o,64,512),64),height:vy(jl(s,64,512),64)},l={x:xs(o/2-a.width/2,64),y:xs(s/2-a.height/2,64)};if(e.boundingBoxDimensions=a,e.boundingBoxCoordinates=l,e.boundingBoxScaleMethod==="auto"){const u=hd(a);e.scaledBoundingBoxDimensions=u}}},setBoundingBoxScaleMethod:(e,t)=>{if(e.boundingBoxScaleMethod=t.payload,t.payload==="auto"){const n=hd(e.boundingBoxDimensions);e.scaledBoundingBoxDimensions=n}},setScaledBoundingBoxDimensions:(e,t)=>{e.scaledBoundingBoxDimensions=t.payload},setShouldShowStagingImage:(e,t)=>{e.shouldShowStagingImage=t.payload},setShouldShowStagingOutline:(e,t)=>{e.shouldShowStagingOutline=t.payload},setShouldShowCanvasDebugInfo:(e,t)=>{e.shouldShowCanvasDebugInfo=t.payload},setShouldRestrictStrokesToBox:(e,t)=>{e.shouldRestrictStrokesToBox=t.payload},setShouldAntialias:(e,t)=>{e.shouldAntialias=t.payload},setShouldCropToBoundingBoxOnSave:(e,t)=>{e.shouldCropToBoundingBoxOnSave=t.payload},setColorPickerColor:(e,t)=>{e.colorPickerColor=t.payload},commitColorPickerColor:e=>{e.brushColor={...e.colorPickerColor,a:e.brushColor.a},e.tool="brush"},setMergedCanvas:(e,t)=>{e.pastLayerStates.push(Jn(e.layerState)),e.futureLayerStates=[],e.layerState.objects=[t.payload]},resetCanvasInteractionState:e=>{e.cursorPosition=null,e.isDrawing=!1,e.isMouseOverBoundingBox=!1,e.isMoveBoundingBoxKeyHeld=!1,e.isMoveStageKeyHeld=!1,e.isMovingBoundingBox=!1,e.isMovingStage=!1,e.isTransformingBoundingBox=!1},mouseLeftCanvas:e=>{e.cursorPosition=null,e.isDrawing=!1,e.isMouseOverBoundingBox=!1,e.isMovingBoundingBox=!1,e.isTransformingBoundingBox=!1}},extraReducers:e=>{e.addCase(Iu.pending,t=>{t.layerState.stagingArea.images.length||(t.layerState.stagingArea=Pd.stagingArea)}),e.addCase(Ine,(t,n)=>{const r=n.payload;r&&(t.boundingBoxDimensions.height=xs(t.boundingBoxDimensions.width/r,64),t.scaledBoundingBoxDimensions.height=xs(t.scaledBoundingBoxDimensions.width/r,64))})}}),{addEraseRect:N8e,addFillRect:D8e,addImageToStagingArea:Yne,addLine:L8e,addPointToCurrentLine:$8e,clearCanvasHistory:F8e,clearMask:B8e,commitColorPickerColor:z8e,commitStagingAreaImage:Zne,discardStagedImages:U8e,fitBoundingBoxToStage:j8e,mouseLeftCanvas:V8e,nextStagingAreaImage:G8e,prevStagingAreaImage:H8e,redo:q8e,resetCanvas:S5,resetCanvasInteractionState:W8e,resetCanvasView:K8e,setBoundingBoxCoordinates:X8e,setBoundingBoxDimensions:Qk,setBoundingBoxPreviewFill:Q8e,setBoundingBoxScaleMethod:Y8e,flipBoundingBoxAxes:Z8e,setBrushColor:J8e,setBrushSize:eRe,setColorPickerColor:tRe,setCursorPosition:nRe,setInitialCanvasImage:wD,setIsDrawing:rRe,setIsMaskEnabled:iRe,setIsMouseOverBoundingBox:oRe,setIsMoveBoundingBoxKeyHeld:sRe,setIsMoveStageKeyHeld:aRe,setIsMovingBoundingBox:lRe,setIsMovingStage:uRe,setIsTransformingBoundingBox:cRe,setLayer:dRe,setMaskColor:fRe,setMergedCanvas:Jne,setShouldAutoSave:hRe,setShouldCropToBoundingBoxOnSave:pRe,setShouldDarkenOutsideBoundingBox:gRe,setShouldLockBoundingBox:mRe,setShouldPreserveMaskedArea:yRe,setShouldShowBoundingBox:vRe,setShouldShowBrush:_Re,setShouldShowBrushPreview:bRe,setShouldShowCanvasDebugInfo:SRe,setShouldShowCheckboardTransparency:wRe,setShouldShowGrid:xRe,setShouldShowIntermediates:CRe,setShouldShowStagingImage:ERe,setShouldShowStagingOutline:TRe,setShouldSnapToGrid:ARe,setStageCoordinates:kRe,setStageScale:PRe,setTool:RRe,toggleShouldLockBoundingBox:IRe,toggleTool:ORe,undo:MRe,setScaledBoundingBoxDimensions:NRe,setShouldRestrictStrokesToBox:DRe,stagingAreaInitialized:ere,canvasSessionIdChanged:tre,setShouldAntialias:LRe,canvasResized:$Re}=SD.actions,nre=SD.reducer,rre={isModalOpen:!1,imagesToChange:[]},xD=nr({name:"changeBoardModal",initialState:rre,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToChangeSelected:(e,t)=>{e.imagesToChange=t.payload},changeBoardReset:e=>{e.imagesToChange=[],e.isModalOpen=!1}}}),{isModalOpenChanged:FRe,imagesToChangeSelected:BRe,changeBoardReset:zRe}=xD.actions,ire=xD.reducer;var CD={exports:{}},ED={};const wo=Y1(vW),Mh=Y1(Sq),ore=Y1(Mq);(function(e){var t,n,r=dt&&dt.__generator||function(W,ee){var ne,ue,ie,Fe,je={label:0,sent:function(){if(1&ie[0])throw ie[1];return ie[1]},trys:[],ops:[]};return Fe={next:ot(0),throw:ot(1),return:ot(2)},typeof Symbol=="function"&&(Fe[Symbol.iterator]=function(){return this}),Fe;function ot(Ne){return function(Ve){return function(Re){if(ne)throw new TypeError("Generator is already executing.");for(;je;)try{if(ne=1,ue&&(ie=2&Re[0]?ue.return:Re[0]?ue.throw||((ie=ue.return)&&ie.call(ue),0):ue.next)&&!(ie=ie.call(ue,Re[1])).done)return ie;switch(ue=0,ie&&(Re=[2&Re[0],ie.value]),Re[0]){case 0:case 1:ie=Re;break;case 4:return je.label++,{value:Re[1],done:!1};case 5:je.label++,ue=Re[1],Re=[0];continue;case 7:Re=je.ops.pop(),je.trys.pop();continue;default:if(!((ie=(ie=je.trys).length>0&&ie[ie.length-1])||Re[0]!==6&&Re[0]!==2)){je=0;continue}if(Re[0]===3&&(!ie||Re[1]>ie[0]&&Re[1]=200&&W.status<=299},L=function(W){return/ion\/(vnd\.api\+)?json/.test(W.get("content-type")||"")};function N(W){if(!(0,A.isPlainObject)(W))return W;for(var ee=b({},W),ne=0,ue=Object.entries(ee);ne"u"&&je===T&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(bt,xt){return S(ee,null,function(){var tn,nn,Ti,So,Ai,pr,ui,Vn,io,ms,tt,rn,Xt,Yn,gr,ci,fn,Rt,zt,hn,Qt,an,_e,Ye,Be,Ae,Ge,lt,ze,be,ae,xe,ce,he,Se,Ze;return r(this,function(qe){switch(qe.label){case 0:return tn=xt.signal,nn=xt.getState,Ti=xt.extra,So=xt.endpoint,Ai=xt.forced,pr=xt.type,io=(Vn=typeof bt=="string"?{url:bt}:bt).url,tt=(ms=Vn.headers)===void 0?new Headers(at.headers):ms,Xt=(rn=Vn.params)===void 0?void 0:rn,gr=(Yn=Vn.responseHandler)===void 0?Qe??"json":Yn,fn=(ci=Vn.validateStatus)===void 0?st??k:ci,zt=(Rt=Vn.timeout)===void 0?Xe:Rt,hn=g(Vn,["url","headers","params","responseHandler","validateStatus","timeout"]),Qt=b(_(b({},at),{signal:tn}),hn),tt=new Headers(N(tt)),an=Qt,[4,ie(tt,{getState:nn,extra:Ti,endpoint:So,forced:Ai,type:pr})];case 1:an.headers=qe.sent()||tt,_e=function(ke){return typeof ke=="object"&&((0,A.isPlainObject)(ke)||Array.isArray(ke)||typeof ke.toJSON=="function")},!Qt.headers.has("content-type")&&_e(Qt.body)&&Qt.headers.set("content-type",re),_e(Qt.body)&&Ve(Qt.headers)&&(Qt.body=JSON.stringify(Qt.body,ve)),Xt&&(Ye=~io.indexOf("?")?"&":"?",Be=ot?ot(Xt):new URLSearchParams(N(Xt)),io+=Ye+Be),io=function(ke,Ct){if(!ke)return Ct;if(!Ct)return ke;if(function(Ft){return new RegExp("(^|:)//").test(Ft)}(Ct))return Ct;var $t=ke.endsWith("/")||!Ct.startsWith("?")?"/":"";return ke=function(Ft){return Ft.replace(/\/$/,"")}(ke),""+ke+$t+function(Ft){return Ft.replace(/^\//,"")}(Ct)}(ne,io),Ae=new Request(io,Qt),Ge=Ae.clone(),ui={request:Ge},ze=!1,be=zt&&setTimeout(function(){ze=!0,xt.abort()},zt),qe.label=2;case 2:return qe.trys.push([2,4,5,6]),[4,je(Ae)];case 3:return lt=qe.sent(),[3,6];case 4:return ae=qe.sent(),[2,{error:{status:ze?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(ae)},meta:ui}];case 5:return be&&clearTimeout(be),[7];case 6:xe=lt.clone(),ui.response=xe,he="",qe.label=7;case 7:return qe.trys.push([7,9,,10]),[4,Promise.all([mt(lt,gr).then(function(ke){return ce=ke},function(ke){return Se=ke}),xe.text().then(function(ke){return he=ke},function(){})])];case 8:if(qe.sent(),Se)throw Se;return[3,10];case 9:return Ze=qe.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:lt.status,data:he,error:String(Ze)},meta:ui}];case 10:return[2,fn(lt,ce)?{data:ce,meta:ui}:{error:{status:lt.status,data:ce},meta:ui}]}})})};function mt(bt,xt){return S(this,null,function(){var tn;return r(this,function(nn){switch(nn.label){case 0:return typeof xt=="function"?[2,xt(bt)]:(xt==="content-type"&&(xt=Ve(bt.headers)?"json":"text"),xt!=="json"?[3,2]:[4,bt.text()]);case 1:return[2,(tn=nn.sent()).length?JSON.parse(tn):null];case 2:return[2,bt.text()]}})})}}var P=function(W,ee){ee===void 0&&(ee=void 0),this.value=W,this.meta=ee};function D(W,ee){return W===void 0&&(W=0),ee===void 0&&(ee=5),S(this,null,function(){var ne,ue;return r(this,function(ie){switch(ie.label){case 0:return ne=Math.min(W,ee),ue=~~((Math.random()+.4)*(300<=xe)}var hn=(0,qt.createAsyncThunk)(Xt+"/executeQuery",Rt,{getPendingMeta:function(){var _e;return(_e={startedTimeStamp:Date.now()})[qt.SHOULD_AUTOBATCH]=!0,_e},condition:function(_e,Ye){var Be,Ae,Ge,lt=(0,Ye.getState)(),ze=(Ae=(Be=lt[Xt])==null?void 0:Be.queries)==null?void 0:Ae[_e.queryCacheKey],be=ze==null?void 0:ze.fulfilledTimeStamp,ae=_e.originalArgs,xe=ze==null?void 0:ze.originalArgs,ce=gr[_e.endpointName];return!(!$e(_e)&&((ze==null?void 0:ze.status)==="pending"||!zt(_e,lt)&&(!te(ce)||!((Ge=ce==null?void 0:ce.forceRefetch)!=null&&Ge.call(ce,{currentArg:ae,previousArg:xe,endpointState:ze,state:lt})))&&be))},dispatchConditionRejection:!0}),Qt=(0,qt.createAsyncThunk)(Xt+"/executeMutation",Rt,{getPendingMeta:function(){var _e;return(_e={startedTimeStamp:Date.now()})[qt.SHOULD_AUTOBATCH]=!0,_e}});function an(_e){return function(Ye){var Be,Ae;return((Ae=(Be=Ye==null?void 0:Ye.meta)==null?void 0:Be.arg)==null?void 0:Ae.endpointName)===_e}}return{queryThunk:hn,mutationThunk:Qt,prefetch:function(_e,Ye,Be){return function(Ae,Ge){var lt=function(ce){return"force"in ce}(Be)&&Be.force,ze=function(ce){return"ifOlderThan"in ce}(Be)&&Be.ifOlderThan,be=function(ce){return ce===void 0&&(ce=!0),fn.endpoints[_e].initiate(Ye,{forceRefetch:ce})},ae=fn.endpoints[_e].select(Ye)(Ge());if(lt)Ae(be());else if(ze){var xe=ae==null?void 0:ae.fulfilledTimeStamp;if(!xe)return void Ae(be());(Number(new Date)-Number(new Date(xe)))/1e3>=ze&&Ae(be())}else Ae(be(!1))}},updateQueryData:function(_e,Ye,Be){return function(Ae,Ge){var lt,ze,be=fn.endpoints[_e].select(Ye)(Ge()),ae={patches:[],inversePatches:[],undo:function(){return Ae(fn.util.patchQueryData(_e,Ye,ae.inversePatches))}};if(be.status===t.uninitialized)return ae;if("data"in be)if((0,Pe.isDraftable)(be.data)){var xe=(0,Pe.produceWithPatches)(be.data,Be),ce=xe[2];(lt=ae.patches).push.apply(lt,xe[1]),(ze=ae.inversePatches).push.apply(ze,ce)}else{var he=Be(be.data);ae.patches.push({op:"replace",path:[],value:he}),ae.inversePatches.push({op:"replace",path:[],value:be.data})}return Ae(fn.util.patchQueryData(_e,Ye,ae.patches)),ae}},upsertQueryData:function(_e,Ye,Be){return function(Ae){var Ge;return Ae(fn.endpoints[_e].initiate(Ye,((Ge={subscribe:!1,forceRefetch:!0})[nt]=function(){return{data:Be}},Ge)))}},patchQueryData:function(_e,Ye,Be){return function(Ae){Ae(fn.internalActions.queryResultPatched({queryCacheKey:ci({queryArgs:Ye,endpointDefinition:gr[_e],endpointName:_e}),patches:Be}))}},buildMatchThunkActions:function(_e,Ye){return{matchPending:(0,ct.isAllOf)((0,ct.isPending)(_e),an(Ye)),matchFulfilled:(0,ct.isAllOf)((0,ct.isFulfilled)(_e),an(Ye)),matchRejected:(0,ct.isAllOf)((0,ct.isRejected)(_e),an(Ye))}}}}({baseQuery:ue,reducerPath:ie,context:ne,api:W,serializeQueryArgs:Fe}),ve=re.queryThunk,Xe=re.mutationThunk,Qe=re.patchQueryData,st=re.updateQueryData,at=re.upsertQueryData,mt=re.prefetch,bt=re.buildMatchThunkActions,xt=function(tt){var rn=tt.reducerPath,Xt=tt.queryThunk,Yn=tt.mutationThunk,gr=tt.context,ci=gr.endpointDefinitions,fn=gr.apiUid,Rt=gr.extractRehydrationInfo,zt=gr.hasRehydrationInfo,hn=tt.assertTagType,Qt=tt.config,an=(0,le.createAction)(rn+"/resetApiState"),_e=(0,le.createSlice)({name:rn+"/queries",initialState:Gr,reducers:{removeQueryResult:{reducer:function(be,ae){delete be[ae.payload.queryCacheKey]},prepare:(0,le.prepareAutoBatched)()},queryResultPatched:function(be,ae){var xe=ae.payload,ce=xe.patches;Rn(be,xe.queryCacheKey,function(he){he.data=(0,Wt.applyPatches)(he.data,ce.concat())})}},extraReducers:function(be){be.addCase(Xt.pending,function(ae,xe){var ce,he=xe.meta,Se=xe.meta.arg,Ze=$e(Se);(Se.subscribe||Ze)&&(ae[ce=Se.queryCacheKey]!=null||(ae[ce]={status:t.uninitialized,endpointName:Se.endpointName})),Rn(ae,Se.queryCacheKey,function(qe){qe.status=t.pending,qe.requestId=Ze&&qe.requestId?qe.requestId:he.requestId,Se.originalArgs!==void 0&&(qe.originalArgs=Se.originalArgs),qe.startedTimeStamp=he.startedTimeStamp})}).addCase(Xt.fulfilled,function(ae,xe){var ce=xe.meta,he=xe.payload;Rn(ae,ce.arg.queryCacheKey,function(Se){var Ze;if(Se.requestId===ce.requestId||$e(ce.arg)){var qe=ci[ce.arg.endpointName].merge;if(Se.status=t.fulfilled,qe)if(Se.data!==void 0){var ke=ce.fulfilledTimeStamp,Ct=ce.arg,$t=ce.baseQueryMeta,Ft=ce.requestId,Zn=(0,le.createNextState)(Se.data,function(lr){return qe(lr,he,{arg:Ct.originalArgs,baseQueryMeta:$t,fulfilledTimeStamp:ke,requestId:Ft})});Se.data=Zn}else Se.data=he;else Se.data=(Ze=ci[ce.arg.endpointName].structuralSharing)==null||Ze?C((0,bn.isDraft)(Se.data)?(0,Wt.original)(Se.data):Se.data,he):he;delete Se.error,Se.fulfilledTimeStamp=ce.fulfilledTimeStamp}})}).addCase(Xt.rejected,function(ae,xe){var ce=xe.meta,he=ce.condition,Se=ce.requestId,Ze=xe.error,qe=xe.payload;Rn(ae,ce.arg.queryCacheKey,function(ke){if(!he){if(ke.requestId!==Se)return;ke.status=t.rejected,ke.error=qe??Ze}})}).addMatcher(zt,function(ae,xe){for(var ce=Rt(xe).queries,he=0,Se=Object.entries(ce);he"u"||navigator.onLine===void 0||navigator.onLine,focused:typeof document>"u"||document.visibilityState!=="hidden",middlewareRegistered:!1},Qt),reducers:{middlewareRegistered:function(be,ae){be.middlewareRegistered=be.middlewareRegistered!=="conflict"&&fn===ae.payload||"conflict"}},extraReducers:function(be){be.addCase(U,function(ae){ae.online=!0}).addCase(V,function(ae){ae.online=!1}).addCase(O,function(ae){ae.focused=!0}).addCase(F,function(ae){ae.focused=!1}).addMatcher(zt,function(ae){return b({},ae)})}}),ze=(0,le.combineReducers)({queries:_e.reducer,mutations:Ye.reducer,provided:Be.reducer,subscriptions:Ge.reducer,config:lt.reducer});return{reducer:function(be,ae){return ze(an.match(ae)?void 0:be,ae)},actions:_(b(b(b(b(b({},lt.actions),_e.actions),Ae.actions),Ge.actions),Ye.actions),{unsubscribeMutationResult:Ye.actions.removeMutationResult,resetApiState:an})}}({context:ne,queryThunk:ve,mutationThunk:Xe,reducerPath:ie,assertTagType:Re,config:{refetchOnFocus:Ne,refetchOnReconnect:Ve,refetchOnMountOrArgChange:ot,keepUnusedDataFor:je,reducerPath:ie}}),tn=xt.reducer,nn=xt.actions;li(W.util,{patchQueryData:Qe,updateQueryData:st,upsertQueryData:at,prefetch:mt,resetApiState:nn.resetApiState}),li(W.internalActions,nn);var Ti=function(tt){var rn=tt.reducerPath,Xt=tt.queryThunk,Yn=tt.api,gr=tt.context,ci=gr.apiUid,fn={invalidateTags:(0,Aa.createAction)(rn+"/invalidateTags")},Rt=[Nr,On,Mr,Cr,Ei,ai];return{middleware:function(hn){var Qt=!1,an=_(b({},tt),{internalState:{currentSubscriptions:{}},refetchQuery:zt}),_e=Rt.map(function(Ae){return Ae(an)}),Ye=function(Ae){var Ge=Ae.api,lt=Ae.queryThunk,ze=Ae.internalState,be=Ge.reducerPath+"/subscriptions",ae=null,xe=!1,ce=Ge.internalActions,he=ce.updateSubscriptionOptions,Se=ce.unsubscribeQueryResult;return function(Ze,qe){var ke,Ct;if(ae||(ae=JSON.parse(JSON.stringify(ze.currentSubscriptions))),Ge.util.resetApiState.match(Ze))return ae=ze.currentSubscriptions={},[!0,!1];if(Ge.internalActions.internal_probeSubscription.match(Ze)){var $t=Ze.payload;return[!1,!!((ke=ze.currentSubscriptions[$t.queryCacheKey])!=null&&ke[$t.requestId])]}var Ft=function(Mn,Sn){var Vi,$,G,X,fe,St,on,wn,Tt;if(he.match(Sn)){var pn=Sn.payload,di=pn.queryCacheKey,Gn=pn.requestId;return(Vi=Mn==null?void 0:Mn[di])!=null&&Vi[Gn]&&(Mn[di][Gn]=pn.options),!0}if(Se.match(Sn)){var bl=Sn.payload;return Gn=bl.requestId,Mn[di=bl.queryCacheKey]&&delete Mn[di][Gn],!0}if(Ge.internalActions.removeQueryResult.match(Sn))return delete Mn[Sn.payload.queryCacheKey],!0;if(lt.pending.match(Sn)){var ud=Sn.meta;if(Gn=ud.requestId,(dd=ud.arg).subscribe)return(Sl=(G=Mn[$=dd.queryCacheKey])!=null?G:Mn[$]={})[Gn]=(fe=(X=dd.subscriptionOptions)!=null?X:Sl[Gn])!=null?fe:{},!0}if(lt.rejected.match(Sn)){var Sl,cd=Sn.meta,dd=cd.arg;if(Gn=cd.requestId,cd.condition&&dd.subscribe)return(Sl=(on=Mn[St=dd.queryCacheKey])!=null?on:Mn[St]={})[Gn]=(Tt=(wn=dd.subscriptionOptions)!=null?wn:Sl[Gn])!=null?Tt:{},!0}return!1}(ze.currentSubscriptions,Ze);if(Ft){xe||(Vs(function(){var Mn=JSON.parse(JSON.stringify(ze.currentSubscriptions)),Sn=(0,gs.produceWithPatches)(ae,function(){return Mn});qe.next(Ge.internalActions.subscriptionsUpdated(Sn[1])),ae=Mn,xe=!1}),xe=!0);var Zn=!!((Ct=Ze.type)!=null&&Ct.startsWith(be)),lr=lt.rejected.match(Ze)&&Ze.meta.condition&&!!Ze.meta.arg.subscribe;return[!Zn&&!lr,!1]}return[!0,!1]}}(an),Be=function(Ae){var Ge=Ae.reducerPath,lt=Ae.context,ze=Ae.refetchQuery,be=Ae.internalState,ae=Ae.api.internalActions.removeQueryResult;function xe(ce,he){var Se=ce.getState()[Ge],Ze=Se.queries,qe=be.currentSubscriptions;lt.batch(function(){for(var ke=0,Ct=Object.keys(qe);ke1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||lre,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]=this.observers[r]||[],this.observers[r].push(n)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t]=this.observers[t].filter(r=>r!==n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{s(...r)}),this.observers["*"]&&[].concat(this.observers["*"]).forEach(s=>{s.apply(s,[t,...r])})}}function Nh(){let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n}function Yk(e){return e==null?"":""+e}function ure(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}function w5(e,t,n){function r(s){return s&&s.indexOf("###")>-1?s.replace(/###/g,"."):s}function i(){return!e||typeof e=="string"}const o=typeof t!="string"?[].concat(t):t.split(".");for(;o.length>1;){if(i())return{};const s=r(o.shift());!e[s]&&n&&(e[s]=new n),Object.prototype.hasOwnProperty.call(e,s)?e=e[s]:e={}}return i()?{}:{obj:e,k:r(o.shift())}}function Zk(e,t,n){const{obj:r,k:i}=w5(e,t,Object);r[i]=n}function cre(e,t,n,r){const{obj:i,k:o}=w5(e,t,Object);i[o]=i[o]||[],r&&(i[o]=i[o].concat(n)),r||i[o].push(n)}function Hv(e,t){const{obj:n,k:r}=w5(e,t);if(n)return n[r]}function dre(e,t,n){const r=Hv(e,n);return r!==void 0?r:Hv(t,n)}function TD(e,t,n){for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?typeof e[r]=="string"||e[r]instanceof String||typeof t[r]=="string"||t[r]instanceof String?n&&(e[r]=t[r]):TD(e[r],t[r],n):e[r]=t[r]);return e}function pd(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var fre={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function hre(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>fre[t]):e}const pre=[" ",",","?","!",";"];function gre(e,t,n){t=t||"",n=n||"";const r=pre.filter(s=>t.indexOf(s)<0&&n.indexOf(s)<0);if(r.length===0)return!0;const i=new RegExp(`(${r.map(s=>s==="?"?"\\?":s).join("|")})`);let o=!i.test(e);if(!o){const s=e.indexOf(n);s>0&&!i.test(e.substring(0,s))&&(o=!0)}return o}function qv(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let i=e;for(let o=0;oo+s;)s++,a=r.slice(o,o+s).join(n),l=i[a];if(l===void 0)return;if(l===null)return null;if(t.endsWith(a)){if(typeof l=="string")return l;if(a&&typeof l[a]=="string")return l[a]}const u=r.slice(o+s).join(n);return u?qv(l,u,n):void 0}i=i[r[o]]}return i}function Wv(e){return e&&e.indexOf("_")>0?e.replace("_","-"):e}class Jk extends $_{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const o=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,s=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a=[t,n];r&&typeof r!="string"&&(a=a.concat(r)),r&&typeof r=="string"&&(a=a.concat(o?r.split(o):r)),t.indexOf(".")>-1&&(a=t.split("."));const l=Hv(this.data,a);return l||!s||typeof r!="string"?l:qv(this.data&&this.data[t]&&this.data[t][n],r,o)}addResource(t,n,r,i){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const s=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator;let a=[t,n];r&&(a=a.concat(s?r.split(s):r)),t.indexOf(".")>-1&&(a=t.split("."),i=n,n=a[1]),this.addNamespaces(n),Zk(this.data,a,i),o.silent||this.emit("added",t,n,r,i)}addResources(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const o in r)(typeof r[o]=="string"||Object.prototype.toString.apply(r[o])==="[object Array]")&&this.addResource(t,n,o,r[o],{silent:!0});i.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,i,o){let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},a=[t,n];t.indexOf(".")>-1&&(a=t.split("."),i=r,r=n,n=a[1]),this.addNamespaces(n);let l=Hv(this.data,a)||{};i?TD(l,r,o):l={...l,...r},Zk(this.data,a,l),s.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,n)}:this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var AD={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(o=>{this.processors[o]&&(t=this.processors[o].process(t,n,r,i))}),t}};const eP={};class Kv extends $_{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),ure(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ia.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let o=n.ns||this.options.defaultNS||[];const s=r&&t.indexOf(r)>-1,a=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!gre(t,r,i);if(s&&!a){const l=t.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:t,namespaces:o};const u=t.split(r);(r!==i||r===i&&this.options.ns.indexOf(u[0])>-1)&&(o=u.shift()),t=u.join(i)}return typeof o=="string"&&(o=[o]),{key:t,namespaces:o}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,o=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:s,namespaces:a}=this.extractFromKey(t[t.length-1],n),l=a[a.length-1],u=n.lng||this.language,c=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(u&&u.toLowerCase()==="cimode"){if(c){const v=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${v}${s}`,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:`${l}${v}${s}`}return i?{res:s,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:s}const d=this.resolve(t,n);let f=d&&d.res;const h=d&&d.usedKey||s,p=d&&d.exactUsedKey||s,m=Object.prototype.toString.apply(f),b=["[object Number]","[object Function]","[object RegExp]"],_=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject;if(y&&f&&(typeof f!="string"&&typeof f!="boolean"&&typeof f!="number")&&b.indexOf(m)<0&&!(typeof _=="string"&&m==="[object Array]")){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const v=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,f,{...n,ns:a}):`key '${s} (${this.language})' returned an object instead of string.`;return i?(d.res=v,d):v}if(o){const v=m==="[object Array]",S=v?[]:{},w=v?p:h;for(const x in f)if(Object.prototype.hasOwnProperty.call(f,x)){const C=`${w}${o}${x}`;S[x]=this.translate(C,{...n,joinArrays:!1,ns:a}),S[x]===C&&(S[x]=f[x])}f=S}}else if(y&&typeof _=="string"&&m==="[object Array]")f=f.join(_),f&&(f=this.extendTranslation(f,t,n,r));else{let v=!1,S=!1;const w=n.count!==void 0&&typeof n.count!="string",x=Kv.hasDefaultValue(n),C=w?this.pluralResolver.getSuffix(u,n.count,n):"",A=n.ordinal&&w?this.pluralResolver.getSuffix(u,n.count,{ordinal:!1}):"",T=n[`defaultValue${C}`]||n[`defaultValue${A}`]||n.defaultValue;!this.isValidLookup(f)&&x&&(v=!0,f=T),this.isValidLookup(f)||(S=!0,f=s);const L=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&S?void 0:f,N=x&&T!==f&&this.options.updateMissing;if(S||v||N){if(this.logger.log(N?"updateKey":"missingKey",u,l,s,N?T:f),o){const B=this.resolve(s,{...n,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let E=[];const P=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&P&&P[0])for(let B=0;B{const O=x&&I!==f?I:L;this.options.missingKeyHandler?this.options.missingKeyHandler(B,l,R,O,N,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(B,l,R,O,N,n),this.emit("missingKey",B,l,R,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?E.forEach(B=>{this.pluralResolver.getSuffixes(B,n).forEach(R=>{D([B],s+R,n[`defaultValue${R}`]||T)})}):D(E,s,T))}f=this.extendTranslation(f,t,n,d,r),S&&f===s&&this.options.appendNamespaceToMissingKey&&(f=`${l}:${s}`),(S||v)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${s}`:s,v?f:void 0):f=this.options.parseMissingKeyHandler(f))}return i?(d.res=f,d):f}extendTranslation(t,n,r,i,o){var s=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const u=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(u){const f=t.match(this.interpolator.nestingRegexp);c=f&&f.length}let d=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(d={...this.options.interpolation.defaultVariables,...d}),t=this.interpolator.interpolate(t,d,r.lng||this.language,r),u){const f=t.match(this.interpolator.nestingRegexp),h=f&&f.length;c1&&arguments[1]!==void 0?arguments[1]:{},r,i,o,s,a;return typeof t=="string"&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const u=this.extractFromKey(l,n),c=u.key;i=c;let d=u.namespaces;this.options.fallbackNS&&(d=d.concat(this.options.fallbackNS));const f=n.count!==void 0&&typeof n.count!="string",h=f&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),p=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",m=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);d.forEach(b=>{this.isValidLookup(r)||(a=b,!eP[`${m[0]}-${b}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(a)&&(eP[`${m[0]}-${b}`]=!0,this.logger.warn(`key "${i}" for languages "${m.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),m.forEach(_=>{if(this.isValidLookup(r))return;s=_;const y=[c];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(y,c,_,b,n);else{let v;f&&(v=this.pluralResolver.getSuffix(_,n.count,n));const S=`${this.options.pluralSeparator}zero`,w=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(f&&(y.push(c+v),n.ordinal&&v.indexOf(w)===0&&y.push(c+v.replace(w,this.options.pluralSeparator)),h&&y.push(c+S)),p){const x=`${c}${this.options.contextSeparator}${n.context}`;y.push(x),f&&(y.push(x+v),n.ordinal&&v.indexOf(w)===0&&y.push(x+v.replace(w,this.options.pluralSeparator)),h&&y.push(x+S))}}let g;for(;g=y.pop();)this.isValidLookup(r)||(o=g,r=this.getResource(_,b,g,n))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}function F2(e){return e.charAt(0).toUpperCase()+e.slice(1)}class tP{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ia.create("languageUtils")}getScriptPartFromCode(t){if(t=Wv(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=Wv(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(i=>i.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=F2(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=F2(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=F2(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const i=this.getLanguagePartFromCode(r);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(o=>{if(o===i)return o;if(!(o.indexOf("-")<0&&i.indexOf("-")<0)&&o.indexOf(i)===0)return o})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),typeof t=="string"&&(t=[t]),Object.prototype.toString.apply(t)==="[object Array]")return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),i=[],o=s=>{s&&(this.isSupportedCode(s)?i.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(t))):typeof t=="string"&&o(this.formatLanguageCode(t)),r.forEach(s=>{i.indexOf(s)<0&&o(this.formatLanguageCode(s))}),i}}let mre=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],yre={1:function(e){return+(e>1)},2:function(e){return+(e!=1)},3:function(e){return 0},4:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},5:function(e){return e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},6:function(e){return e==1?0:e>=2&&e<=4?1:2},7:function(e){return e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},8:function(e){return e==1?0:e==2?1:e!=8&&e!=11?2:3},9:function(e){return+(e>=2)},10:function(e){return e==1?0:e==2?1:e<7?2:e<11?3:4},11:function(e){return e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3},12:function(e){return+(e%10!=1||e%100==11)},13:function(e){return+(e!==0)},14:function(e){return e==1?0:e==2?1:e==3?2:3},15:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2},16:function(e){return e%10==1&&e%100!=11?0:e!==0?1:2},17:function(e){return e==1||e%10==1&&e%100!=11?0:1},18:function(e){return e==0?0:e==1?1:2},19:function(e){return e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3},20:function(e){return e==1?0:e==0||e%100>0&&e%100<20?1:2},21:function(e){return e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0},22:function(e){return e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3}};const vre=["v1","v2","v3"],_re=["v4"],nP={zero:0,one:1,two:2,few:3,many:4,other:5};function bre(){const e={};return mre.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:yre[t.fc]}})}),e}class Sre{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=ia.create("pluralResolver"),(!this.options.compatibilityJSON||_re.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=bre()}addRule(t,n){this.rules[t]=n}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(Wv(t),{type:n.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(i=>`${n}${i}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((i,o)=>nP[i]-nP[o]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):r.numbers.map(i=>this.getSuffix(t,i,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(t,r);return i?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:this.getSuffixRetroCompatible(i,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let i=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(i===2?i="plural":i===1&&(i=""));const o=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return this.options.compatibilityJSON==="v1"?i===1?"":typeof i=="number"?`_plural_${i.toString()}`:o():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?o():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!vre.includes(this.options.compatibilityJSON)}}function rP(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=dre(e,t,n);return!o&&i&&typeof n=="string"&&(o=qv(e,n,r),o===void 0&&(o=qv(t,n,r))),o}class wre{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ia.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const n=t.interpolation;this.escape=n.escape!==void 0?n.escape:hre,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?pd(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?pd(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?pd(n.nestingPrefix):n.nestingPrefixEscaped||pd("$t("),this.nestingSuffix=n.nestingSuffix?pd(n.nestingSuffix):n.nestingSuffixEscaped||pd(")"),this.nestingOptionsSeparator=n.nestingOptionsSeparator?n.nestingOptionsSeparator:n.nestingOptionsSeparator||",",this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.alwaysFormat=n.alwaysFormat!==void 0?n.alwaysFormat:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=`${this.prefix}(.+?)${this.suffix}`;this.regexp=new RegExp(t,"g");const n=`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;this.regexpUnescape=new RegExp(n,"g");const r=`${this.nestingPrefix}(.+?)${this.nestingSuffix}`;this.nestingRegexp=new RegExp(r,"g")}interpolate(t,n,r,i){let o,s,a;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function u(p){return p.replace(/\$/g,"$$$$")}const c=p=>{if(p.indexOf(this.formatSeparator)<0){const y=rP(n,l,p,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(y,void 0,r,{...i,...n,interpolationkey:p}):y}const m=p.split(this.formatSeparator),b=m.shift().trim(),_=m.join(this.formatSeparator).trim();return this.format(rP(n,l,b,this.options.keySeparator,this.options.ignoreJSONStructure),_,r,{...i,...n,interpolationkey:b})};this.resetRegExp();const d=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,f=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:p=>u(p)},{regex:this.regexp,safeValue:p=>this.escapeValue?u(this.escape(p)):u(p)}].forEach(p=>{for(a=0;o=p.regex.exec(t);){const m=o[1].trim();if(s=c(m),s===void 0)if(typeof d=="function"){const _=d(t,o,i);s=typeof _=="string"?_:""}else if(i&&Object.prototype.hasOwnProperty.call(i,m))s="";else if(f){s=o[0];continue}else this.logger.warn(`missed to pass in variable ${m} for interpolating ${t}`),s="";else typeof s!="string"&&!this.useRawValueToEscape&&(s=Yk(s));const b=p.safeValue(s);if(t=t.replace(o[0],b),f?(p.regex.lastIndex+=s.length,p.regex.lastIndex-=o[0].length):p.regex.lastIndex=0,a++,a>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,o,s;function a(l,u){const c=this.nestingOptionsSeparator;if(l.indexOf(c)<0)return l;const d=l.split(new RegExp(`${c}[ ]*{`));let f=`{${d[1]}`;l=d[0],f=this.interpolate(f,s);const h=f.match(/'/g),p=f.match(/"/g);(h&&h.length%2===0&&!p||p.length%2!==0)&&(f=f.replace(/'/g,'"'));try{s=JSON.parse(f),u&&(s={...u,...s})}catch(m){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,m),`${l}${c}${f}`}return delete s.defaultValue,l}for(;i=this.nestingRegexp.exec(t);){let l=[];s={...r},s=s.replace&&typeof s.replace!="string"?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;let u=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const c=i[1].split(this.formatSeparator).map(d=>d.trim());i[1]=c.shift(),l=c,u=!0}if(o=n(a.call(this,i[1].trim(),s),s),o&&i[0]===t&&typeof o!="string")return o;typeof o!="string"&&(o=Yk(o)),o||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),o=""),u&&(o=l.reduce((c,d)=>this.format(c,d,r.lng,{...r,interpolationkey:i[1].trim()}),o.trim())),t=t.replace(i[0],o),this.regexp.lastIndex=0}return t}}function xre(e){let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);t==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(s=>{if(!s)return;const[a,...l]=s.split(":"),u=l.join(":").trim().replace(/^'+|'+$/g,"");n[a.trim()]||(n[a.trim()]=u),u==="false"&&(n[a.trim()]=!1),u==="true"&&(n[a.trim()]=!0),isNaN(u)||(n[a.trim()]=parseInt(u,10))})}return{formatName:t,formatOptions:n}}function gd(e){const t={};return function(r,i,o){const s=i+JSON.stringify(o);let a=t[s];return a||(a=e(Wv(i),o),t[s]=a),a(r)}}class Cre{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ia.create("formatter"),this.options=t,this.formats={number:gd((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return o=>i.format(o)}),currency:gd((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>i.format(o)}),datetime:gd((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return o=>i.format(o)}),relativetime:gd((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return o=>i.format(o,r.range||"day")}),list:gd((n,r)=>{const i=new Intl.ListFormat(n,{...r});return o=>i.format(o)})},this.init(t)}init(t){const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=gd(n)}format(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n.split(this.formatSeparator).reduce((a,l)=>{const{formatName:u,formatOptions:c}=xre(l);if(this.formats[u]){let d=a;try{const f=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},h=f.locale||f.lng||i.locale||i.lng||r;d=this.formats[u](a,h,{...c,...i,...f})}catch(f){this.logger.warn(f)}return d}else this.logger.warn(`there was no format function for ${u}`);return a},t)}}function Ere(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class Tre extends $_{constructor(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=ia.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,i.backend,i)}queueLoad(t,n,r,i){const o={},s={},a={},l={};return t.forEach(u=>{let c=!0;n.forEach(d=>{const f=`${u}|${d}`;!r.reload&&this.store.hasResourceBundle(u,d)?this.state[f]=2:this.state[f]<0||(this.state[f]===1?s[f]===void 0&&(s[f]=!0):(this.state[f]=1,c=!1,s[f]===void 0&&(s[f]=!0),o[f]===void 0&&(o[f]=!0),l[d]===void 0&&(l[d]=!0)))}),c||(a[u]=!0)}),(Object.keys(o).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(o),pending:Object.keys(s),toLoadLanguages:Object.keys(a),toLoadNamespaces:Object.keys(l)}}loaded(t,n,r){const i=t.split("|"),o=i[0],s=i[1];n&&this.emit("failedLoading",o,s,n),r&&this.store.addResourceBundle(o,s,r),this.state[t]=n?-1:2;const a={};this.queue.forEach(l=>{cre(l.loaded,[o],s),Ere(l,t),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(u=>{a[u]||(a[u]={});const c=l.loaded[u];c.length&&c.forEach(d=>{a[u][d]===void 0&&(a[u][d]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",a),this.queue=this.queue.filter(l=>!l.done)}read(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,s=arguments.length>5?arguments[5]:void 0;if(!t.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:i,wait:o,callback:s});return}this.readingCalls++;const a=(u,c)=>{if(this.readingCalls--,this.waitingReads.length>0){const d=this.waitingReads.shift();this.read(d.lng,d.ns,d.fcName,d.tried,d.wait,d.callback)}if(u&&c&&i{this.read.call(this,t,n,r,i+1,o*2,s)},o);return}s(u,c)},l=this.backend[r].bind(this.backend);if(l.length===2){try{const u=l(t,n);u&&typeof u.then=="function"?u.then(c=>a(null,c)).catch(a):a(null,u)}catch(u){a(u)}return}return l(t,n,a)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof n=="string"&&(n=[n]);const o=this.queueLoad(t,n,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(s=>{this.loadOne(s)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),i=r[0],o=r[1];this.read(i,o,"read",void 0,void 0,(s,a)=>{s&&this.logger.warn(`${n}loading namespace ${o} for language ${i} failed`,s),!s&&a&&this.logger.log(`${n}loaded namespace ${o} for language ${i}`,a),this.loaded(t,s,a)})}saveMissing(t,n,r,i,o){let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},a=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const l={...s,isUpdate:o},u=this.backend.create.bind(this.backend);if(u.length<6)try{let c;u.length===5?c=u(t,n,r,i,l):c=u(t,n,r,i),c&&typeof c.then=="function"?c.then(d=>a(null,d)).catch(a):a(null,c)}catch(c){a(c)}else u(t,n,r,i,a,l)}!t||!t[0]||this.store.addResource(t[0],n,r,i)}}}function iP(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let n={};if(typeof t[1]=="object"&&(n=t[1]),typeof t[1]=="string"&&(n.defaultValue=t[1]),typeof t[2]=="string"&&(n.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const r=t[3]||t[2];Object.keys(r).forEach(i=>{n[i]=r[i]})}return n},interpolation:{escapeValue:!0,format:(e,t,n,r)=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function oP(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function Ty(){}function Are(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}class Sg extends $_{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=oP(t),this.services={},this.logger=ia,this.modules={external:[]},Are(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(typeof n.ns=="string"?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=iP();this.options={...i,...this.options,...oP(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...i.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);function o(c){return c?typeof c=="function"?new c:c:null}if(!this.options.isClone){this.modules.logger?ia.init(o(this.modules.logger),this.options):ia.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:typeof Intl<"u"&&(c=Cre);const d=new tP(this.options);this.store=new Jk(this.options.resources,this.options);const f=this.services;f.logger=ia,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new Sre(d,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),c&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(f.formatter=o(c),f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new wre(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new Tre(o(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",function(h){for(var p=arguments.length,m=new Array(p>1?p-1:0),b=1;b1?p-1:0),b=1;b{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Ty),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=function(){return t.store[c](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=function(){return t.store[c](...arguments),t}});const l=Nh(),u=()=>{const c=(d,f)=>{this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(f),r(d,f)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initImmediate?u():setTimeout(u,0),l}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ty;const i=typeof t=="string"?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(i&&i.toLowerCase()==="cimode")return r();const o=[],s=a=>{if(!a)return;this.services.languageUtils.toResolveHierarchy(a).forEach(u=>{o.indexOf(u)<0&&o.push(u)})};i?s(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>s(l)),this.options.preload&&this.options.preload.forEach(a=>s(a)),this.services.backendConnector.load(o,this.options.ns,a=>{!a&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(a)})}else r(null)}reloadResources(t,n,r){const i=Nh();return t||(t=this.languages),n||(n=this.options.ns),r||(r=Ty),this.services.backendConnector.reload(t,n,o=>{i.resolve(),r(o)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&AD.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const i=Nh();this.emit("languageChanging",t);const o=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},s=(l,u)=>{u?(o(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,i.resolve(function(){return r.t(...arguments)}),n&&n(l,function(){return r.t(...arguments)})},a=l=>{!t&&!l&&this.services.languageDetector&&(l=[]);const u=typeof l=="string"?l:this.services.languageUtils.getBestMatchFromCodes(l);u&&(this.language||o(u),this.translator.language||this.translator.changeLanguage(u),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(u)),this.loadResources(u,c=>{s(c,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(t),i}getFixedT(t,n,r){var i=this;const o=function(s,a){let l;if(typeof a!="object"){for(var u=arguments.length,c=new Array(u>2?u-2:0),d=2;d`${l.keyPrefix}${f}${p}`):h=l.keyPrefix?`${l.keyPrefix}${f}${s}`:s,i.t(h,l)};return typeof t=="string"?o.lng=t:o.lngs=t,o.ns=n,o.keyPrefix=r,o}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,o=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const s=(a,l)=>{const u=this.services.backendConnector.state[`${a}|${l}`];return u===-1||u===2};if(n.precheck){const a=n.precheck(this,s);if(a!==void 0)return a}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(r,t)&&(!i||s(o,t)))}loadNamespaces(t,n){const r=Nh();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),n&&n(i)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=Nh();typeof t=="string"&&(t=[t]);const i=this.options.preload||[],o=t.filter(s=>i.indexOf(s)<0);return o.length?(this.options.preload=i.concat(o),this.loadResources(s=>{r.resolve(),n&&n(s)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new tP(iP());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new Sg(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ty;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},o=new Sg(i);return(t.debug!==void 0||t.prefix!==void 0)&&(o.logger=o.logger.clone(t)),["store","services","language"].forEach(a=>{o[a]=this[a]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},r&&(o.store=new Jk(this.store.data,i),o.services.resourceStore=o.store),o.translator=new Kv(o.services,i),o.translator.on("*",function(a){for(var l=arguments.length,u=new Array(l>1?l-1:0),c=1;ckD.safeParse(e).success||kre.safeParse(e).success;z.enum(["connection","direct","any"]);const PD=z.object({id:z.string().trim().min(1),name:z.string().trim().min(1),type:kD}),Pre=PD.extend({fieldKind:z.literal("output")}),gt=PD.extend({fieldKind:z.literal("input"),label:z.string()}),Kc=z.object({model_name:z.string().trim().min(1),base_model:Wc}),Ff=z.object({image_name:z.string().trim().min(1)}),Xv=z.object({latents_name:z.string().trim().min(1),seed:z.number().int().optional()}),Qv=z.object({conditioning_name:z.string().trim().min(1)}),Rre=z.object({mask_name:z.string().trim().min(1),masked_latents_name:z.string().trim().min(1).optional()}),Ire=gt.extend({type:z.literal("integer"),value:z.number().int().optional()}),Ore=gt.extend({type:z.literal("IntegerCollection"),value:z.array(z.number().int()).optional()}),Mre=gt.extend({type:z.literal("IntegerPolymorphic"),value:z.union([z.number().int(),z.array(z.number().int())]).optional()}),Nre=gt.extend({type:z.literal("float"),value:z.number().optional()}),Dre=gt.extend({type:z.literal("FloatCollection"),value:z.array(z.number()).optional()}),Lre=gt.extend({type:z.literal("FloatPolymorphic"),value:z.union([z.number(),z.array(z.number())]).optional()}),$re=gt.extend({type:z.literal("string"),value:z.string().optional()}),Fre=gt.extend({type:z.literal("StringCollection"),value:z.array(z.string()).optional()}),Bre=gt.extend({type:z.literal("StringPolymorphic"),value:z.union([z.string(),z.array(z.string())]).optional()}),zre=gt.extend({type:z.literal("boolean"),value:z.boolean().optional()}),Ure=gt.extend({type:z.literal("BooleanCollection"),value:z.array(z.boolean()).optional()}),jre=gt.extend({type:z.literal("BooleanPolymorphic"),value:z.union([z.boolean(),z.array(z.boolean())]).optional()}),Vre=gt.extend({type:z.literal("enum"),value:z.string().optional()}),Gre=gt.extend({type:z.literal("LatentsField"),value:Xv.optional()}),Hre=gt.extend({type:z.literal("LatentsCollection"),value:z.array(Xv).optional()}),qre=gt.extend({type:z.literal("LatentsPolymorphic"),value:z.union([Xv,z.array(Xv)]).optional()}),Wre=gt.extend({type:z.literal("DenoiseMaskField"),value:Rre.optional()}),Kre=gt.extend({type:z.literal("ConditioningField"),value:Qv.optional()}),Xre=gt.extend({type:z.literal("ConditioningCollection"),value:z.array(Qv).optional()}),Qre=gt.extend({type:z.literal("ConditioningPolymorphic"),value:z.union([Qv,z.array(Qv)]).optional()}),Yre=Kc,wg=z.object({image:Ff,control_model:Yre,control_weight:z.union([z.number(),z.array(z.number())]).optional(),begin_step_percent:z.number().optional(),end_step_percent:z.number().optional(),control_mode:z.enum(["balanced","more_prompt","more_control","unbalanced"]).optional(),resize_mode:z.enum(["just_resize","crop_resize","fill_resize","just_resize_simple"]).optional()}),Zre=gt.extend({type:z.literal("ControlField"),value:wg.optional()}),Jre=gt.extend({type:z.literal("ControlPolymorphic"),value:z.union([wg,z.array(wg)]).optional()}),eie=gt.extend({type:z.literal("ControlCollection"),value:z.array(wg).optional()}),tie=Kc,nie=z.object({image:Ff,ip_adapter_model:tie,image_encoder_model:z.string().trim().min(1),weight:z.number()}),rie=gt.extend({type:z.literal("IPAdapterField"),value:nie.optional()}),iie=z.enum(["onnx","main","vae","lora","controlnet","embedding"]),oie=z.enum(["unet","text_encoder","text_encoder_2","tokenizer","tokenizer_2","vae","vae_decoder","vae_encoder","scheduler","safety_checker"]),Bf=Kc.extend({model_type:iie,submodel:oie.optional()}),RD=Bf.extend({weight:z.number().optional()}),sie=z.object({unet:Bf,scheduler:Bf,loras:z.array(RD)}),aie=gt.extend({type:z.literal("UNetField"),value:sie.optional()}),lie=z.object({tokenizer:Bf,text_encoder:Bf,skipped_layers:z.number(),loras:z.array(RD)}),uie=gt.extend({type:z.literal("ClipField"),value:lie.optional()}),cie=z.object({vae:Bf}),die=gt.extend({type:z.literal("VaeField"),value:cie.optional()}),fie=gt.extend({type:z.literal("ImageField"),value:Ff.optional()}),hie=gt.extend({type:z.literal("ImagePolymorphic"),value:z.union([Ff,z.array(Ff)]).optional()}),pie=gt.extend({type:z.literal("ImageCollection"),value:z.array(Ff).optional()}),gie=gt.extend({type:z.literal("MainModelField"),value:Cm.optional()}),mie=gt.extend({type:z.literal("SDXLMainModelField"),value:Cm.optional()}),yie=gt.extend({type:z.literal("SDXLRefinerModelField"),value:Cm.optional()}),ID=Kc,vie=gt.extend({type:z.literal("VaeModelField"),value:ID.optional()}),OD=Kc,_ie=gt.extend({type:z.literal("LoRAModelField"),value:OD.optional()}),bie=Kc,Sie=gt.extend({type:z.literal("ControlNetModelField"),value:bie.optional()}),wie=Kc,xie=gt.extend({type:z.literal("IPAdapterModelField"),value:wie.optional()}),Cie=gt.extend({type:z.literal("Collection"),value:z.array(z.any()).optional()}),Eie=gt.extend({type:z.literal("CollectionItem"),value:z.any().optional()}),Yv=z.object({r:z.number().int().min(0).max(255),g:z.number().int().min(0).max(255),b:z.number().int().min(0).max(255),a:z.number().int().min(0).max(255)}),Tie=gt.extend({type:z.literal("ColorField"),value:Yv.optional()}),Aie=gt.extend({type:z.literal("ColorCollection"),value:z.array(Yv).optional()}),kie=gt.extend({type:z.literal("ColorPolymorphic"),value:z.union([Yv,z.array(Yv)]).optional()}),Pie=gt.extend({type:z.literal("Scheduler"),value:pD.optional()}),Rie=z.discriminatedUnion("type",[Ure,zre,jre,uie,Cie,Eie,Tie,Aie,kie,Kre,Xre,Qre,Zre,Sie,eie,Jre,Wre,Vre,Dre,Nre,Lre,pie,hie,fie,Ore,Mre,Ire,rie,xie,Gre,Hre,qre,_ie,gie,Pie,mie,yie,Fre,Bre,$re,aie,die,vie]),URe=e=>!!(e&&e.fieldKind==="input"),jRe=e=>!!(e&&e.fieldKind==="input"),Iie=e=>!!(e&&!("$ref"in e)),aP=e=>!!(e&&!("$ref"in e)&&e.type==="array"),Ay=e=>!!(e&&!("$ref"in e)&&e.type!=="array"),Dh=e=>!!(e&&"$ref"in e),Oie=e=>"class"in e&&e.class==="invocation",Mie=e=>"class"in e&&e.class==="output",lP=e=>!("$ref"in e),Nie=z.object({lora:OD.deepPartial(),weight:z.number()}),MD=z.object({app_version:z.string().nullish(),generation_mode:z.string().nullish(),created_by:z.string().nullish(),positive_prompt:z.string().nullish(),negative_prompt:z.string().nullish(),width:z.number().int().nullish(),height:z.number().int().nullish(),seed:z.number().int().nullish(),rand_device:z.string().nullish(),cfg_scale:z.number().nullish(),steps:z.number().int().nullish(),scheduler:z.string().nullish(),clip_skip:z.number().int().nullish(),model:z.union([N_.deepPartial(),gD.deepPartial()]).nullish(),controlnets:z.array(wg.deepPartial()).nullish(),loras:z.array(Nie).nullish(),vae:ID.nullish(),strength:z.number().nullish(),init_image:z.string().nullish(),positive_style_prompt:z.string().nullish(),negative_style_prompt:z.string().nullish(),refiner_model:_5.deepPartial().nullish(),refiner_cfg_scale:z.number().nullish(),refiner_steps:z.number().int().nullish(),refiner_scheduler:z.string().nullish(),refiner_positive_aesthetic_score:z.number().nullish(),refiner_negative_aesthetic_score:z.number().nullish(),refiner_start:z.number().nullish()}).passthrough(),x5=z.string().refine(e=>{const[t,n,r]=e.split(".");return t!==void 0&&Number.isInteger(Number(t))&&n!==void 0&&Number.isInteger(Number(n))&&r!==void 0&&Number.isInteger(Number(r))});x5.transform(e=>{const[t,n,r]=e.split(".");return{major:Number(t),minor:Number(n),patch:Number(r)}});const Die=z.object({id:z.string().trim().min(1),type:z.string().trim().min(1),inputs:z.record(Rie),outputs:z.record(Pre),label:z.string(),isOpen:z.boolean(),notes:z.string(),embedWorkflow:z.boolean(),isIntermediate:z.boolean(),version:x5.optional()}),Lie=z.object({id:z.string().trim().min(1),type:z.literal("notes"),label:z.string(),isOpen:z.boolean(),notes:z.string()}),ND=z.object({x:z.number(),y:z.number()}).default({x:0,y:0}),Zv=z.number().gt(0).nullish(),DD=z.object({id:z.string().trim().min(1),type:z.literal("invocation"),data:Die,width:Zv,height:Zv,position:ND}),vC=e=>DD.safeParse(e).success,$ie=z.object({id:z.string().trim().min(1),type:z.literal("notes"),data:Lie,width:Zv,height:Zv,position:ND}),LD=z.discriminatedUnion("type",[DD,$ie]),Fie=z.object({source:z.string().trim().min(1),sourceHandle:z.string().trim().min(1),target:z.string().trim().min(1),targetHandle:z.string().trim().min(1),id:z.string().trim().min(1),type:z.literal("default")}),Bie=z.object({source:z.string().trim().min(1),target:z.string().trim().min(1),id:z.string().trim().min(1),type:z.literal("collapsed")}),$D=z.union([Fie,Bie]),zie=z.object({nodeId:z.string().trim().min(1),fieldName:z.string().trim().min(1)}),FD=z.object({name:z.string().default(""),author:z.string().default(""),description:z.string().default(""),version:z.string().default(""),contact:z.string().default(""),tags:z.string().default(""),notes:z.string().default(""),nodes:z.array(LD).default([]),edges:z.array($D).default([]),exposedFields:z.array(zie).default([]),meta:z.object({version:x5}).default({version:"1.0.0"})});FD.transform(e=>{const{nodes:t,edges:n}=e,r=[],i=t.filter(vC),o=v5(i,"id");return n.forEach((s,a)=>{const l=o[s.source],u=o[s.target],c=[];if(l?s.type==="default"&&!(s.sourceHandle in l.data.outputs)&&c.push(`${we.t("nodes.outputField")}"${s.source}.${s.sourceHandle}" ${we.t("nodes.doesNotExist")}`):c.push(`${we.t("nodes.outputNode")} ${s.source} ${we.t("nodes.doesNotExist")}`),u?s.type==="default"&&!(s.targetHandle in u.data.inputs)&&c.push(`${we.t("nodes.inputField")} "${s.target}.${s.targetHandle}" ${we.t("nodes.doesNotExist")}`):c.push(`${we.t("nodes.inputNode")} ${s.target} ${we.t("nodes.doesNotExist")}`),c.length){delete n[a];const d=s.type==="default"?s.sourceHandle:s.source,f=s.type==="default"?s.targetHandle:s.target;r.push({message:`${we.t("nodes.edge")} "${d} -> ${f}" ${we.t("nodes.skipped")}`,issues:c,data:s})}}),{workflow:e,warnings:r}});const Kr=e=>!!(e&&e.type==="invocation"),VRe=e=>!!(e&&!["notes","current_image"].includes(e.type)),uP=e=>!!(e&&e.type==="notes");var Fa=(e=>(e[e.PENDING=0]="PENDING",e[e.IN_PROGRESS=1]="IN_PROGRESS",e[e.COMPLETED=2]="COMPLETED",e[e.FAILED=3]="FAILED",e))(Fa||{});/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const Uie=4,cP=0,dP=1,jie=2;function lh(e){let t=e.length;for(;--t>=0;)e[t]=0}const Vie=0,BD=1,Gie=2,Hie=3,qie=258,C5=29,Em=256,xg=Em+1+C5,ff=30,E5=19,zD=2*xg+1,lc=15,B2=16,Wie=7,T5=256,UD=16,jD=17,VD=18,_C=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),I0=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Kie=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),GD=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Xie=512,Ua=new Array((xg+2)*2);lh(Ua);const xp=new Array(ff*2);lh(xp);const Cg=new Array(Xie);lh(Cg);const Eg=new Array(qie-Hie+1);lh(Eg);const A5=new Array(C5);lh(A5);const Jv=new Array(ff);lh(Jv);function z2(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let HD,qD,WD;function U2(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}const KD=e=>e<256?Cg[e]:Cg[256+(e>>>7)],Tg=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},uo=(e,t,n)=>{e.bi_valid>B2-n?(e.bi_buf|=t<>B2-e.bi_valid,e.bi_valid+=n-B2):(e.bi_buf|=t<{uo(e,n[t*2],n[t*2+1])},XD=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},Qie=e=>{e.bi_valid===16?(Tg(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},Yie=(e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,o=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let u,c,d,f,h,p,m=0;for(f=0;f<=lc;f++)e.bl_count[f]=0;for(n[e.heap[e.heap_max]*2+1]=0,u=e.heap_max+1;ul&&(f=l,m++),n[c*2+1]=f,!(c>r)&&(e.bl_count[f]++,h=0,c>=a&&(h=s[c-a]),p=n[c*2],e.opt_len+=p*(f+h),o&&(e.static_len+=p*(i[c*2+1]+h)));if(m!==0){do{for(f=l-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[l]--,m-=2}while(m>0);for(f=l;f!==0;f--)for(c=e.bl_count[f];c!==0;)d=e.heap[--u],!(d>r)&&(n[d*2+1]!==f&&(e.opt_len+=(f-n[d*2+1])*n[d*2],n[d*2+1]=f),c--)}},QD=(e,t,n)=>{const r=new Array(lc+1);let i=0,o,s;for(o=1;o<=lc;o++)i=i+n[o-1]<<1,r[o]=i;for(s=0;s<=t;s++){let a=e[s*2+1];a!==0&&(e[s*2]=XD(r[a]++,a))}},Zie=()=>{let e,t,n,r,i;const o=new Array(lc+1);for(n=0,r=0;r>=7;r{let t;for(t=0;t{e.bi_valid>8?Tg(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},fP=(e,t,n,r)=>{const i=t*2,o=n*2;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,o=0,s,a;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+o++]&255,r+=(e.pending_buf[e.sym_buf+o++]&255)<<8,i=e.pending_buf[e.sym_buf+o++],r===0?ta(e,i,t):(s=Eg[i],ta(e,s+Em+1,t),a=_C[s],a!==0&&(i-=A5[s],uo(e,i,a)),r--,s=KD(r),ta(e,s,n),a=I0[s],a!==0&&(r-=Jv[s],uo(e,r,a)));while(o{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,o=t.stat_desc.elems;let s,a,l=-1,u;for(e.heap_len=0,e.heap_max=zD,s=0;s>1;s>=1;s--)j2(e,n,s);u=o;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j2(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=a,n[u*2]=n[s*2]+n[a*2],e.depth[u]=(e.depth[s]>=e.depth[a]?e.depth[s]:e.depth[a])+1,n[s*2+1]=n[a*2+1]=u,e.heap[1]=u++,j2(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Yie(e,t),QD(n,l,e.bl_count)},pP=(e,t,n)=>{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)o=s,s=t[(r+1)*2+1],!(++a{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),r=0;r<=n;r++)if(o=s,s=t[(r+1)*2+1],!(++a{let t;for(pP(e,e.dyn_ltree,e.l_desc.max_code),pP(e,e.dyn_dtree,e.d_desc.max_code),bC(e,e.bl_desc),t=E5-1;t>=3&&e.bl_tree[GD[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},eoe=(e,t,n,r)=>{let i;for(uo(e,t-257,5),uo(e,n-1,5),uo(e,r-4,4),i=0;i{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return cP;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return dP;for(n=32;n{mP||(Zie(),mP=!0),e.l_desc=new U2(e.dyn_ltree,HD),e.d_desc=new U2(e.dyn_dtree,qD),e.bl_desc=new U2(e.bl_tree,WD),e.bi_buf=0,e.bi_valid=0,YD(e)},JD=(e,t,n,r)=>{uo(e,(Vie<<1)+(r?1:0),3),ZD(e),Tg(e,n),Tg(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},roe=e=>{uo(e,BD<<1,3),ta(e,T5,Ua),Qie(e)},ioe=(e,t,n,r)=>{let i,o,s=0;e.level>0?(e.strm.data_type===jie&&(e.strm.data_type=toe(e)),bC(e,e.l_desc),bC(e,e.d_desc),s=Jie(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&t!==-1?JD(e,t,n,r):e.strategy===Uie||o===i?(uo(e,(BD<<1)+(r?1:0),3),hP(e,Ua,xp)):(uo(e,(Gie<<1)+(r?1:0),3),eoe(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),hP(e,e.dyn_ltree,e.dyn_dtree)),YD(e),r&&ZD(e)},ooe=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Eg[n]+Em+1)*2]++,e.dyn_dtree[KD(t)*2]++),e.sym_next===e.sym_end);var soe=noe,aoe=JD,loe=ioe,uoe=ooe,coe=roe,doe={_tr_init:soe,_tr_stored_block:aoe,_tr_flush_block:loe,_tr_tally:uoe,_tr_align:coe};const foe=(e,t,n,r)=>{let i=e&65535|0,o=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do i=i+t[r++]|0,o=o+i|0;while(--s);i%=65521,o%=65521}return i|o<<16|0};var Ag=foe;const hoe=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},poe=new Uint32Array(hoe()),goe=(e,t,n,r)=>{const i=poe,o=r+n;e^=-1;for(let s=r;s>>8^i[(e^t[s])&255];return e^-1};var Zr=goe,zf={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Tm={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:moe,_tr_stored_block:SC,_tr_flush_block:yoe,_tr_tally:nu,_tr_align:voe}=doe,{Z_NO_FLUSH:ru,Z_PARTIAL_FLUSH:_oe,Z_FULL_FLUSH:boe,Z_FINISH:Qo,Z_BLOCK:yP,Z_OK:yi,Z_STREAM_END:vP,Z_STREAM_ERROR:da,Z_DATA_ERROR:Soe,Z_BUF_ERROR:V2,Z_DEFAULT_COMPRESSION:woe,Z_FILTERED:xoe,Z_HUFFMAN_ONLY:ky,Z_RLE:Coe,Z_FIXED:Eoe,Z_DEFAULT_STRATEGY:Toe,Z_UNKNOWN:Aoe,Z_DEFLATED:F_}=Tm,koe=9,Poe=15,Roe=8,Ioe=29,Ooe=256,wC=Ooe+1+Ioe,Moe=30,Noe=19,Doe=2*wC+1,Loe=15,Dt=3,Hl=258,fa=Hl+Dt+1,$oe=32,Uf=42,k5=57,xC=69,CC=73,EC=91,TC=103,uc=113,rp=666,Wi=1,uh=2,Oc=3,ch=4,Foe=3,cc=(e,t)=>(e.msg=zf[t],t),_P=e=>e*2-(e>4?9:0),Fl=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Boe=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)};let zoe=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Ro=(e,t)=>{yoe(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Co(e.strm)},Yt=(e,t)=>{e.pending_buf[e.pending++]=t},Lh=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},AC=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=Ag(e.adler,t,i,n):e.state.wrap===2&&(e.adler=Zr(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},eL=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,o,s=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-fa?e.strstart-(e.w_size-fa):0,u=e.window,c=e.w_mask,d=e.prev,f=e.strstart+Hl;let h=u[r+s-1],p=u[r+s];e.prev_length>=e.good_match&&(n>>=2),a>e.lookahead&&(a=e.lookahead);do if(i=t,!(u[i+s]!==p||u[i+s-1]!==h||u[i]!==u[r]||u[++i]!==u[r+1])){r+=2,i++;do;while(u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&rs){if(e.match_start=t,s=o,o>=a)break;h=u[r+s-1],p=u[r+s]}}while((t=d[t&c])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},jf=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-fa)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Boe(e),r+=t),e.strm.avail_in===0)break;if(n=AC(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=Dt)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=iu(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=iu(e,e.ins_h,e.window[i+Dt-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,o,s=0,a=e.strm.avail_in;do{if(r=65535,o=e.bi_valid+42>>3,e.strm.avail_outi+e.strm.avail_in&&(r=i+e.strm.avail_in),r>o&&(r=o),r>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,Co(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(AC(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(s===0);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_watero&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(AC(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,n=o>e.w_size?e.w_size:o,i=e.strstart-e.block_start,(i>=n||(i||t===Qo)&&t!==ru&&e.strm.avail_in===0&&i<=o)&&(r=i>o?o:i,s=t===Qo&&e.strm.avail_in===0&&r===i?1:0,SC(e,e.block_start,r,s),e.block_start+=r,Co(e.strm)),s?Oc:Wi)},G2=(e,t)=>{let n,r;for(;;){if(e.lookahead=Dt&&(e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-fa&&(e.match_length=eL(e,n)),e.match_length>=Dt)if(r=nu(e,e.strstart-e.match_start,e.match_length-Dt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=Dt){e.match_length--;do e.strstart++,e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=iu(e,e.ins_h,e.window[e.strstart+1]);else r=nu(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Ro(e,!1),e.strm.avail_out===0))return Wi}return e.insert=e.strstart{let n,r,i;for(;;){if(e.lookahead=Dt&&(e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=Dt-1,n!==0&&e.prev_length4096)&&(e.match_length=Dt-1)),e.prev_length>=Dt&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-Dt,r=nu(e,e.strstart-1-e.prev_match,e.prev_length-Dt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=Dt-1,e.strstart++,r&&(Ro(e,!1),e.strm.avail_out===0))return Wi}else if(e.match_available){if(r=nu(e,0,e.window[e.strstart-1]),r&&Ro(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Wi}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=nu(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let n,r,i,o;const s=e.window;for(;;){if(e.lookahead<=Hl){if(jf(e),e.lookahead<=Hl&&t===ru)return Wi;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=Dt&&e.strstart>0&&(i=e.strstart-1,r=s[i],r===s[++i]&&r===s[++i]&&r===s[++i])){o=e.strstart+Hl;do;while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=Dt?(n=nu(e,1,e.match_length-Dt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=nu(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ro(e,!1),e.strm.avail_out===0))return Wi}return e.insert=0,t===Qo?(Ro(e,!0),e.strm.avail_out===0?Oc:ch):e.sym_next&&(Ro(e,!1),e.strm.avail_out===0)?Wi:uh},joe=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(jf(e),e.lookahead===0)){if(t===ru)return Wi;break}if(e.match_length=0,n=nu(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ro(e,!1),e.strm.avail_out===0))return Wi}return e.insert=0,t===Qo?(Ro(e,!0),e.strm.avail_out===0?Oc:ch):e.sym_next&&(Ro(e,!1),e.strm.avail_out===0)?Wi:uh};function Hs(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const ip=[new Hs(0,0,0,0,tL),new Hs(4,4,8,4,G2),new Hs(4,5,16,8,G2),new Hs(4,6,32,32,G2),new Hs(4,4,16,16,md),new Hs(8,16,32,32,md),new Hs(8,16,128,128,md),new Hs(8,32,128,256,md),new Hs(32,128,258,1024,md),new Hs(32,258,258,4096,md)],Voe=e=>{e.window_size=2*e.w_size,Fl(e.head),e.max_lazy_match=ip[e.level].max_lazy,e.good_match=ip[e.level].good_length,e.nice_match=ip[e.level].nice_length,e.max_chain_length=ip[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=Dt-1,e.match_available=0,e.ins_h=0};function Goe(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=F_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Doe*2),this.dyn_dtree=new Uint16Array((2*Moe+1)*2),this.bl_tree=new Uint16Array((2*Noe+1)*2),Fl(this.dyn_ltree),Fl(this.dyn_dtree),Fl(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Loe+1),this.heap=new Uint16Array(2*wC+1),Fl(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*wC+1),Fl(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Am=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Uf&&t.status!==k5&&t.status!==xC&&t.status!==CC&&t.status!==EC&&t.status!==TC&&t.status!==uc&&t.status!==rp?1:0},nL=e=>{if(Am(e))return cc(e,da);e.total_in=e.total_out=0,e.data_type=Aoe;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?k5:t.wrap?Uf:uc,e.adler=t.wrap===2?0:1,t.last_flush=-2,moe(t),yi},rL=e=>{const t=nL(e);return t===yi&&Voe(e.state),t},Hoe=(e,t)=>Am(e)||e.state.wrap!==2?da:(e.state.gzhead=t,yi),iL=(e,t,n,r,i,o)=>{if(!e)return da;let s=1;if(t===woe&&(t=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),i<1||i>koe||n!==F_||r<8||r>15||t<0||t>9||o<0||o>Eoe||r===8&&s!==1)return cc(e,da);r===8&&(r=9);const a=new Goe;return e.state=a,a.strm=e,a.status=Uf,a.wrap=s,a.gzhead=null,a.w_bits=r,a.w_size=1<iL(e,t,F_,Poe,Roe,Toe),Woe=(e,t)=>{if(Am(e)||t>yP||t<0)return e?cc(e,da):da;const n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===rp&&t!==Qo)return cc(e,e.avail_out===0?V2:da);const r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Co(e),e.avail_out===0)return n.last_flush=-1,yi}else if(e.avail_in===0&&_P(t)<=_P(r)&&t!==Qo)return cc(e,V2);if(n.status===rp&&e.avail_in!==0)return cc(e,V2);if(n.status===Uf&&n.wrap===0&&(n.status=uc),n.status===Uf){let i=F_+(n.w_bits-8<<4)<<8,o=-1;if(n.strategy>=ky||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,i|=o<<6,n.strstart!==0&&(i|=$oe),i+=31-i%31,Lh(n,i),n.strstart!==0&&(Lh(n,e.adler>>>16),Lh(n,e.adler&65535)),e.adler=1,n.status=uc,Co(e),n.pending!==0)return n.last_flush=-1,yi}if(n.status===k5){if(e.adler=0,Yt(n,31),Yt(n,139),Yt(n,8),n.gzhead)Yt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Yt(n,n.gzhead.time&255),Yt(n,n.gzhead.time>>8&255),Yt(n,n.gzhead.time>>16&255),Yt(n,n.gzhead.time>>24&255),Yt(n,n.level===9?2:n.strategy>=ky||n.level<2?4:0),Yt(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Yt(n,n.gzhead.extra.length&255),Yt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Zr(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=xC;else if(Yt(n,0),Yt(n,0),Yt(n,0),Yt(n,0),Yt(n,0),Yt(n,n.level===9?2:n.strategy>=ky||n.level<2?4:0),Yt(n,Foe),n.status=uc,Co(e),n.pending!==0)return n.last_flush=-1,yi}if(n.status===xC){if(n.gzhead.extra){let i=n.pending,o=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+o>n.pending_buf_size;){let a=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=a,Co(e),n.pending!==0)return n.last_flush=-1,yi;i=0,o-=a}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending+=o,n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=CC}if(n.status===CC){if(n.gzhead.name){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),Co(e),n.pending!==0)return n.last_flush=-1,yi;i=0}n.gzindexi&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=EC}if(n.status===EC){if(n.gzhead.comment){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),Co(e),n.pending!==0)return n.last_flush=-1,yi;i=0}n.gzindexi&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i))}n.status=TC}if(n.status===TC){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Co(e),n.pending!==0))return n.last_flush=-1,yi;Yt(n,e.adler&255),Yt(n,e.adler>>8&255),e.adler=0}if(n.status=uc,Co(e),n.pending!==0)return n.last_flush=-1,yi}if(e.avail_in!==0||n.lookahead!==0||t!==ru&&n.status!==rp){let i=n.level===0?tL(n,t):n.strategy===ky?joe(n,t):n.strategy===Coe?Uoe(n,t):ip[n.level].func(n,t);if((i===Oc||i===ch)&&(n.status=rp),i===Wi||i===Oc)return e.avail_out===0&&(n.last_flush=-1),yi;if(i===uh&&(t===_oe?voe(n):t!==yP&&(SC(n,0,0,!1),t===boe&&(Fl(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Co(e),e.avail_out===0))return n.last_flush=-1,yi}return t!==Qo?yi:n.wrap<=0?vP:(n.wrap===2?(Yt(n,e.adler&255),Yt(n,e.adler>>8&255),Yt(n,e.adler>>16&255),Yt(n,e.adler>>24&255),Yt(n,e.total_in&255),Yt(n,e.total_in>>8&255),Yt(n,e.total_in>>16&255),Yt(n,e.total_in>>24&255)):(Lh(n,e.adler>>>16),Lh(n,e.adler&65535)),Co(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?yi:vP)},Koe=e=>{if(Am(e))return da;const t=e.state.status;return e.state=null,t===uc?cc(e,Soe):yi},Xoe=(e,t)=>{let n=t.length;if(Am(e))return da;const r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==Uf||r.lookahead)return da;if(i===1&&(e.adler=Ag(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(Fl(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(t.subarray(n-r.w_size,n),0),t=l,n=r.w_size}const o=e.avail_in,s=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,jf(r);r.lookahead>=Dt;){let l=r.strstart,u=r.lookahead-(Dt-1);do r.ins_h=iu(r,r.ins_h,r.window[l+Dt-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--u);r.strstart=l,r.lookahead=Dt-1,jf(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=Dt-1,r.match_available=0,e.next_in=s,e.input=a,e.avail_in=o,r.wrap=i,yi};var Qoe=qoe,Yoe=iL,Zoe=rL,Joe=nL,ese=Hoe,tse=Woe,nse=Koe,rse=Xoe,ise="pako deflate (from Nodeca project)",Cp={deflateInit:Qoe,deflateInit2:Yoe,deflateReset:Zoe,deflateResetKeep:Joe,deflateSetHeader:ese,deflate:tse,deflateEnd:nse,deflateSetDictionary:rse,deflateInfo:ise};const ose=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var sse=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(const r in n)ose(n,r)&&(e[r]=n[r])}}return e},ase=e=>{let t=0;for(let r=0,i=e.length;r=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;kg[254]=kg[254]=1;var lse=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,o,s=e.length,a=0;for(i=0;i>>6,t[o++]=128|n&63):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|n&63):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|n&63);return t};const use=(e,t)=>{if(t<65534&&e.subarray&&oL)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{const n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i;const o=new Array(n*2);for(i=0,r=0;r4){o[i++]=65533,r+=a-1;continue}for(s&=a===2?31:a===3?15:7;a>1&&r1){o[i++]=65533;continue}s<65536?o[i++]=s:(s-=65536,o[i++]=55296|s>>10&1023,o[i++]=56320|s&1023)}return use(o,i)},dse=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+kg[e[n]]>t?n:t},Pg={string2buf:lse,buf2string:cse,utf8border:dse};function fse(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var sL=fse;const aL=Object.prototype.toString,{Z_NO_FLUSH:hse,Z_SYNC_FLUSH:pse,Z_FULL_FLUSH:gse,Z_FINISH:mse,Z_OK:e1,Z_STREAM_END:yse,Z_DEFAULT_COMPRESSION:vse,Z_DEFAULT_STRATEGY:_se,Z_DEFLATED:bse}=Tm;function P5(e){this.options=B_.assign({level:vse,method:bse,chunkSize:16384,windowBits:15,memLevel:8,strategy:_se},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new sL,this.strm.avail_out=0;let n=Cp.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==e1)throw new Error(zf[n]);if(t.header&&Cp.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=Pg.string2buf(t.dictionary):aL.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Cp.deflateSetDictionary(this.strm,r),n!==e1)throw new Error(zf[n]);this._dict_set=!0}}P5.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,o;if(this.ended)return!1;for(t===~~t?o=t:o=t===!0?mse:hse,typeof e=="string"?n.input=Pg.string2buf(e):aL.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(o===pse||o===gse)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Cp.deflate(n,o),i===yse)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Cp.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===e1;if(n.avail_out===0){this.onData(n.output);continue}if(o>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};P5.prototype.onData=function(e){this.chunks.push(e)};P5.prototype.onEnd=function(e){e===e1&&(this.result=B_.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const Py=16209,Sse=16191;var wse=function(t,n){let r,i,o,s,a,l,u,c,d,f,h,p,m,b,_,y,g,v,S,w,x,C,A,T;const k=t.state;r=t.next_in,A=t.input,i=r+(t.avail_in-5),o=t.next_out,T=t.output,s=o-(n-t.avail_out),a=o+(t.avail_out-257),l=k.dmax,u=k.wsize,c=k.whave,d=k.wnext,f=k.window,h=k.hold,p=k.bits,m=k.lencode,b=k.distcode,_=(1<>>24,h>>>=v,p-=v,v=g>>>16&255,v===0)T[o++]=g&65535;else if(v&16){S=g&65535,v&=15,v&&(p>>=v,p-=v),p<15&&(h+=A[r++]<>>24,h>>>=v,p-=v,v=g>>>16&255,v&16){if(w=g&65535,v&=15,pl){t.msg="invalid distance too far back",k.mode=Py;break e}if(h>>>=v,p-=v,v=o-s,w>v){if(v=w-v,v>c&&k.sane){t.msg="invalid distance too far back",k.mode=Py;break e}if(x=0,C=f,d===0){if(x+=u-v,v2;)T[o++]=C[x++],T[o++]=C[x++],T[o++]=C[x++],S-=3;S&&(T[o++]=C[x++],S>1&&(T[o++]=C[x++]))}else{x=o-w;do T[o++]=T[x++],T[o++]=T[x++],T[o++]=T[x++],S-=3;while(S>2);S&&(T[o++]=T[x++],S>1&&(T[o++]=T[x++]))}}else if(v&64){t.msg="invalid distance code",k.mode=Py;break e}else{g=b[(g&65535)+(h&(1<>3,r-=S,p-=S<<3,h&=(1<{const l=a.bits;let u=0,c=0,d=0,f=0,h=0,p=0,m=0,b=0,_=0,y=0,g,v,S,w,x,C=null,A;const T=new Uint16Array(yd+1),k=new Uint16Array(yd+1);let L=null,N,E,P;for(u=0;u<=yd;u++)T[u]=0;for(c=0;c=1&&T[f]===0;f--);if(h>f&&(h=f),f===0)return i[o++]=1<<24|64<<16|0,i[o++]=1<<24|64<<16|0,a.bits=1,0;for(d=1;d0&&(e===wP||f!==1))return-1;for(k[1]=0,u=1;ubP||e===xP&&_>SP)return 1;for(;;){N=u-m,s[c]+1=A?(E=L[s[c]-A],P=C[s[c]-A]):(E=32+64,P=0),g=1<>m)+v]=N<<24|E<<16|P|0;while(v!==0);for(g=1<>=1;if(g!==0?(y&=g-1,y+=g):y=0,c++,--T[u]===0){if(u===f)break;u=t[n+s[c]]}if(u>h&&(y&w)!==S){for(m===0&&(m=h),x+=d,p=u-m,b=1<bP||e===xP&&_>SP)return 1;S=y&w,i[S]=h<<24|p<<16|x-o|0}}return y!==0&&(i[x+y]=u-m<<24|64<<16|0),a.bits=h,0};var Ep=Ase;const kse=0,lL=1,uL=2,{Z_FINISH:CP,Z_BLOCK:Pse,Z_TREES:Ry,Z_OK:Mc,Z_STREAM_END:Rse,Z_NEED_DICT:Ise,Z_STREAM_ERROR:is,Z_DATA_ERROR:cL,Z_MEM_ERROR:dL,Z_BUF_ERROR:Ose,Z_DEFLATED:EP}=Tm,z_=16180,TP=16181,AP=16182,kP=16183,PP=16184,RP=16185,IP=16186,OP=16187,MP=16188,NP=16189,t1=16190,Pa=16191,q2=16192,DP=16193,W2=16194,LP=16195,$P=16196,FP=16197,BP=16198,Iy=16199,Oy=16200,zP=16201,UP=16202,jP=16203,VP=16204,GP=16205,K2=16206,HP=16207,qP=16208,Hn=16209,fL=16210,hL=16211,Mse=852,Nse=592,Dse=15,Lse=Dse,WP=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function $se(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Xc=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.modehL?1:0},pL=e=>{if(Xc(e))return is;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=z_,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(Mse),t.distcode=t.distdyn=new Int32Array(Nse),t.sane=1,t.back=-1,Mc},gL=e=>{if(Xc(e))return is;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,pL(e)},mL=(e,t)=>{let n;if(Xc(e))return is;const r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?is:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,gL(e))},yL=(e,t)=>{if(!e)return is;const n=new $se;e.state=n,n.strm=e,n.window=null,n.mode=z_;const r=mL(e,t);return r!==Mc&&(e.state=null),r},Fse=e=>yL(e,Lse);let KP=!0,X2,Q2;const Bse=e=>{if(KP){X2=new Int32Array(512),Q2=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Ep(lL,e.lens,0,288,X2,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ep(uL,e.lens,0,32,Q2,0,e.work,{bits:5}),KP=!1}e.lencode=X2,e.lenbits=9,e.distcode=Q2,e.distbits=5},vL=(e,t,n,r)=>{let i;const o=e.state;return o.window===null&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(n-o.wsize,n),0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),o.window.set(t.subarray(n-r,n-r+i),o.wnext),r-=i,r?(o.window.set(t.subarray(n-r,n),0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave{let n,r,i,o,s,a,l,u,c,d,f,h,p,m,b=0,_,y,g,v,S,w,x,C;const A=new Uint8Array(4);let T,k;const L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Xc(e)||!e.output||!e.input&&e.avail_in!==0)return is;n=e.state,n.mode===Pa&&(n.mode=q2),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,d=a,f=l,C=Mc;e:for(;;)switch(n.mode){case z_:if(n.wrap===0){n.mode=q2;break}for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Zr(n.check,A,2,0),u=0,c=0,n.mode=TP;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((u&255)<<8)+(u>>8))%31){e.msg="incorrect header check",n.mode=Hn;break}if((u&15)!==EP){e.msg="unknown compression method",n.mode=Hn;break}if(u>>>=4,c-=4,x=(u&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>n.wbits){e.msg="invalid window size",n.mode=Hn;break}n.dmax=1<>8&1),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Zr(n.check,A,2,0)),u=0,c=0,n.mode=AP;case AP:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>8&255,A[2]=u>>>16&255,A[3]=u>>>24&255,n.check=Zr(n.check,A,4,0)),u=0,c=0,n.mode=kP;case kP:for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>8),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Zr(n.check,A,2,0)),u=0,c=0,n.mode=PP;case PP:if(n.flags&1024){for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Zr(n.check,A,2,0)),u=0,c=0}else n.head&&(n.head.extra=null);n.mode=RP;case RP:if(n.flags&1024&&(h=n.length,h>a&&(h=a),h&&(n.head&&(x=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(o,o+h),x)),n.flags&512&&n.wrap&4&&(n.check=Zr(n.check,r,h,o)),a-=h,o+=h,n.length-=h),n.length))break e;n.length=0,n.mode=IP;case IP:if(n.flags&2048){if(a===0)break e;h=0;do x=r[o+h++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&h>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Pa;break;case NP:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>=c&7,c-=c&7,n.mode=K2;break}for(;c<3;){if(a===0)break e;a--,u+=r[o++]<>>=1,c-=1,u&3){case 0:n.mode=DP;break;case 1:if(Bse(n),n.mode=Iy,t===Ry){u>>>=2,c-=2;break e}break;case 2:n.mode=$P;break;case 3:e.msg="invalid block type",n.mode=Hn}u>>>=2,c-=2;break;case DP:for(u>>>=c&7,c-=c&7;c<32;){if(a===0)break e;a--,u+=r[o++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Hn;break}if(n.length=u&65535,u=0,c=0,n.mode=W2,t===Ry)break e;case W2:n.mode=LP;case LP:if(h=n.length,h){if(h>a&&(h=a),h>l&&(h=l),h===0)break e;i.set(r.subarray(o,o+h),s),a-=h,o+=h,l-=h,s+=h,n.length-=h;break}n.mode=Pa;break;case $P:for(;c<14;){if(a===0)break e;a--,u+=r[o++]<>>=5,c-=5,n.ndist=(u&31)+1,u>>>=5,c-=5,n.ncode=(u&15)+4,u>>>=4,c-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Hn;break}n.have=0,n.mode=FP;case FP:for(;n.have>>=3,c-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,T={bits:n.lenbits},C=Ep(kse,n.lens,0,19,n.lencode,0,n.work,T),n.lenbits=T.bits,C){e.msg="invalid code lengths set",n.mode=Hn;break}n.have=0,n.mode=BP;case BP:for(;n.have>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=_,c-=_,n.lens[n.have++]=g;else{if(g===16){for(k=_+2;c>>=_,c-=_,n.have===0){e.msg="invalid bit length repeat",n.mode=Hn;break}x=n.lens[n.have-1],h=3+(u&3),u>>>=2,c-=2}else if(g===17){for(k=_+3;c>>=_,c-=_,x=0,h=3+(u&7),u>>>=3,c-=3}else{for(k=_+7;c>>=_,c-=_,x=0,h=11+(u&127),u>>>=7,c-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Hn;break}for(;h--;)n.lens[n.have++]=x}}if(n.mode===Hn)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=Hn;break}if(n.lenbits=9,T={bits:n.lenbits},C=Ep(lL,n.lens,0,n.nlen,n.lencode,0,n.work,T),n.lenbits=T.bits,C){e.msg="invalid literal/lengths set",n.mode=Hn;break}if(n.distbits=6,n.distcode=n.distdyn,T={bits:n.distbits},C=Ep(uL,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,T),n.distbits=T.bits,C){e.msg="invalid distances set",n.mode=Hn;break}if(n.mode=Iy,t===Ry)break e;case Iy:n.mode=Oy;case Oy:if(a>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=o,e.avail_in=a,n.hold=u,n.bits=c,wse(e,f),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,n.mode===Pa&&(n.back=-1);break}for(n.back=0;b=n.lencode[u&(1<>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>v)],_=b>>>24,y=b>>>16&255,g=b&65535,!(v+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=v,c-=v,n.back+=v}if(u>>>=_,c-=_,n.back+=_,n.length=g,y===0){n.mode=GP;break}if(y&32){n.back=-1,n.mode=Pa;break}if(y&64){e.msg="invalid literal/length code",n.mode=Hn;break}n.extra=y&15,n.mode=zP;case zP:if(n.extra){for(k=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=UP;case UP:for(;b=n.distcode[u&(1<>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>v)],_=b>>>24,y=b>>>16&255,g=b&65535,!(v+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=v,c-=v,n.back+=v}if(u>>>=_,c-=_,n.back+=_,y&64){e.msg="invalid distance code",n.mode=Hn;break}n.offset=g,n.extra=y&15,n.mode=jP;case jP:if(n.extra){for(k=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Hn;break}n.mode=VP;case VP:if(l===0)break e;if(h=f-l,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Hn;break}h>n.wnext?(h-=n.wnext,p=n.wsize-h):p=n.wnext-h,h>n.length&&(h=n.length),m=n.window}else m=i,p=s-n.offset,h=n.length;h>l&&(h=l),l-=h,n.length-=h;do i[s++]=m[p++];while(--h);n.length===0&&(n.mode=Oy);break;case GP:if(l===0)break e;i[s++]=n.length,l--,n.mode=Oy;break;case K2:if(n.wrap){for(;c<32;){if(a===0)break e;a--,u|=r[o++]<{if(Xc(e))return is;let t=e.state;return t.window&&(t.window=null),e.state=null,Mc},jse=(e,t)=>{if(Xc(e))return is;const n=e.state;return n.wrap&2?(n.head=t,t.done=!1,Mc):is},Vse=(e,t)=>{const n=t.length;let r,i,o;return Xc(e)||(r=e.state,r.wrap!==0&&r.mode!==t1)?is:r.mode===t1&&(i=1,i=Ag(i,t,n,0),i!==r.check)?cL:(o=vL(e,t,n,n),o?(r.mode=fL,dL):(r.havedict=1,Mc))};var Gse=gL,Hse=mL,qse=pL,Wse=Fse,Kse=yL,Xse=zse,Qse=Use,Yse=jse,Zse=Vse,Jse="pako inflate (from Nodeca project)",ja={inflateReset:Gse,inflateReset2:Hse,inflateResetKeep:qse,inflateInit:Wse,inflateInit2:Kse,inflate:Xse,inflateEnd:Qse,inflateGetHeader:Yse,inflateSetDictionary:Zse,inflateInfo:Jse};function eae(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var tae=eae;const _L=Object.prototype.toString,{Z_NO_FLUSH:nae,Z_FINISH:rae,Z_OK:Rg,Z_STREAM_END:Y2,Z_NEED_DICT:Z2,Z_STREAM_ERROR:iae,Z_DATA_ERROR:XP,Z_MEM_ERROR:oae}=Tm;function km(e){this.options=B_.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new sL,this.strm.avail_out=0;let n=ja.inflateInit2(this.strm,t.windowBits);if(n!==Rg)throw new Error(zf[n]);if(this.header=new tae,ja.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Pg.string2buf(t.dictionary):_L.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ja.inflateSetDictionary(this.strm,t.dictionary),n!==Rg)))throw new Error(zf[n])}km.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let o,s,a;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?rae:nae,_L.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),o=ja.inflate(n,s),o===Z2&&i&&(o=ja.inflateSetDictionary(n,i),o===Rg?o=ja.inflate(n,s):o===XP&&(o=Z2));n.avail_in>0&&o===Y2&&n.state.wrap>0&&e[n.next_in]!==0;)ja.inflateReset(n),o=ja.inflate(n,s);switch(o){case iae:case XP:case Z2:case oae:return this.onEnd(o),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(n.avail_out===0||o===Y2))if(this.options.to==="string"){let l=Pg.utf8border(n.output,n.next_out),u=n.next_out-l,c=Pg.buf2string(n.output,l);n.next_out=u,n.avail_out=r-u,u&&n.output.set(n.output.subarray(l,l+u),0),this.onData(c)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(o===Rg&&a===0)){if(o===Y2)return o=ja.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};km.prototype.onData=function(e){this.chunks.push(e)};km.prototype.onEnd=function(e){e===Rg&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=B_.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function R5(e,t){const n=new km(t);if(n.push(e),n.err)throw n.msg||zf[n.err];return n.result}function sae(e,t){return t=t||{},t.raw=!0,R5(e,t)}var aae=km,lae=R5,uae=sae,cae=R5,dae=Tm,fae={Inflate:aae,inflate:lae,inflateRaw:uae,ungzip:cae,constants:dae};const{Inflate:GRe,inflate:hae,inflateRaw:HRe,ungzip:qRe}=fae;var bL=hae;const SL=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=3988292384^t>>>1:t=t>>>1;SL[e]=t}function pae(e){let t=-1;for(let n=0;n>>8;return t^-1}var qn;(function(e){e[e.GRAYSCALE=0]="GRAYSCALE",e[e.TRUE_COLOR=2]="TRUE_COLOR",e[e.PALETTE=3]="PALETTE",e[e.GRAYSCALE_WITH_ALPHA=4]="GRAYSCALE_WITH_ALPHA",e[e.TRUE_COLOR_WITH_ALPHA=6]="TRUE_COLOR_WITH_ALPHA"})(qn||(qn={}));const gae={[qn.GRAYSCALE]:1,[qn.TRUE_COLOR]:3,[qn.PALETTE]:1,[qn.GRAYSCALE_WITH_ALPHA]:2,[qn.TRUE_COLOR_WITH_ALPHA]:4},mae=1;var Ao;(function(e){e[e.NONE=0]="NONE",e[e.SUB=1]="SUB",e[e.UP=2]="UP",e[e.AVERAGE=3]="AVERAGE",e[e.PAETH=4]="PAETH"})(Ao||(Ao={}));const yae={[Ao.NONE](e){return e},[Ao.SUB](e,t){const n=new Uint8Array(e.length);for(let r=0;r>1;r[i]=e[i]+a}return r},[Ao.PAETH](e,t,n){const r=new Uint8Array(e.length);for(let i=0;i>7&1,i>>6&1,i>>5&1,i>>4&1,i>>3&1,i>>2&1,i>>1&1,i&1)}else if(t===2){const i=e[r++];n.push(i>>6&3,i>>4&3,i>>2&3,i&3)}else if(t===4){const i=e[r++];n.push(i>>4&15,i&15)}else if(t===8){const i=e[r++];n.push(i)}else if(t===16)n.push(e[r++]<<8|e[r++]);else throw new Error("Unsupported depth: "+t);return n}const xL=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];function _ae(e,t,n){if(!e)return[{passWidth:t,passHeight:n,passIndex:0}];const r=[];return xL.forEach(function({x:i,y:o},s){const a=t%8,l=n%8,u=t-a>>3,c=n-l>>3;let d=u*i.length;for(let h=0;h>3||1;let p=0,m=new Uint8Array;for(let b=0;b>3)+mae,w=u[p];if(!(w in Ao))throw new Error("Unsupported filter type: "+w);const x=yae[w],C=x(u.slice(p+1,p+S),h,m);m=C;let A=0;const T=vae(C,o);for(let L=0;L<_;L++){const N=k();a&&N[0]===a[0]&&N[1]===a[1]&&N[2]===a[2]&&(N[3]=0);const E=bae(t,r,g,L,v);for(let P=0;P127)if(r>191&&r<224){if(t>=e.length)throw new Error("UTF-8 decode: incomplete 2-byte sequence");r=(r&31)<<6|e[t++]&63}else if(r>223&&r<240){if(t+1>=e.length)throw new Error("UTF-8 decode: incomplete 3-byte sequence");r=(r&15)<<12|(e[t++]&63)<<6|e[t++]&63}else if(r>239&&r<248){if(t+2>=e.length)throw new Error("UTF-8 decode: incomplete 4-byte sequence");r=(r&7)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63}else throw new Error("UTF-8 decode: unknown multibyte start 0x"+r.toString(16)+" at index "+(t-1));if(r<=65535)n+=String.fromCharCode(r);else if(r<=1114111)r-=65536,n+=String.fromCharCode(r>>10|55296),n+=String.fromCharCode(r&1023|56320);else throw new Error("UTF-8 decode: code point 0x"+r.toString(16)+" exceeds UTF-16 reach")}return n}function xae(e,t){const n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}const xl=1e5;function Cae(e){const t=new Uint8Array(e);let n=new Uint8Array;const r={width:0,height:0,depth:0,colorType:0,compression:0,interlace:0,filter:0,data:[]};let i=0;function o(){return t[i++]<<24|t[i++]<<16|t[i++]<<8|t[i++]}function s(){return t[i++]<<8|t[i++]}function a(){return t[i++]}function l(){const R=[];let I=0;for(;(I=t[i++])!==0;)R.push(I);return new Uint8Array(R)}function u(R){const I=i+R;let O="";for(;i=0&&QP.call(t.callee)==="[object Function]"),r},tw,YP;function kae(){if(YP)return tw;YP=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=EL,i=Object.prototype.propertyIsEnumerable,o=!i.call({toString:null},"toString"),s=i.call(function(){},"prototype"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],l=function(f){var h=f.constructor;return h&&h.prototype===f},u={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},c=function(){if(typeof window>"u")return!1;for(var f in window)try{if(!u["$"+f]&&t.call(window,f)&&window[f]!==null&&typeof window[f]=="object")try{l(window[f])}catch{return!0}}catch{return!0}return!1}(),d=function(f){if(typeof window>"u"||!c)return l(f);try{return l(f)}catch{return!1}};e=function(h){var p=h!==null&&typeof h=="object",m=n.call(h)==="[object Function]",b=r(h),_=p&&n.call(h)==="[object String]",y=[];if(!p&&!m&&!b)throw new TypeError("Object.keys called on a non-object");var g=s&&m;if(_&&h.length>0&&!t.call(h,0))for(var v=0;v0)for(var S=0;S"u"||!Yr?Ot:Yr(Uint8Array),Sc={"%AggregateError%":typeof AggregateError>"u"?Ot:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ot:ArrayBuffer,"%ArrayIteratorPrototype%":vd&&Yr?Yr([][Symbol.iterator]()):Ot,"%AsyncFromSyncIteratorPrototype%":Ot,"%AsyncFunction%":Rd,"%AsyncGenerator%":Rd,"%AsyncGeneratorFunction%":Rd,"%AsyncIteratorPrototype%":Rd,"%Atomics%":typeof Atomics>"u"?Ot:Atomics,"%BigInt%":typeof BigInt>"u"?Ot:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ot:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ot:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ot:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?Ot:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ot:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ot:FinalizationRegistry,"%Function%":AL,"%GeneratorFunction%":Rd,"%Int8Array%":typeof Int8Array>"u"?Ot:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ot:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ot:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":vd&&Yr?Yr(Yr([][Symbol.iterator]())):Ot,"%JSON%":typeof JSON=="object"?JSON:Ot,"%Map%":typeof Map>"u"?Ot:Map,"%MapIteratorPrototype%":typeof Map>"u"||!vd||!Yr?Ot:Yr(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ot:Promise,"%Proxy%":typeof Proxy>"u"?Ot:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?Ot:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ot:Set,"%SetIteratorPrototype%":typeof Set>"u"||!vd||!Yr?Ot:Yr(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ot:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":vd&&Yr?Yr(""[Symbol.iterator]()):Ot,"%Symbol%":vd?Symbol:Ot,"%SyntaxError%":Vf,"%ThrowTypeError%":Gae,"%TypedArray%":qae,"%TypeError%":hf,"%Uint8Array%":typeof Uint8Array>"u"?Ot:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ot:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ot:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ot:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?Ot:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ot:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ot:WeakSet};if(Yr)try{null.error}catch(e){var Wae=Yr(Yr(e));Sc["%Error.prototype%"]=Wae}var Kae=function e(t){var n;if(t==="%AsyncFunction%")n=rw("async function () {}");else if(t==="%GeneratorFunction%")n=rw("function* () {}");else if(t==="%AsyncGeneratorFunction%")n=rw("async function* () {}");else if(t==="%AsyncGenerator%"){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Yr&&(n=Yr(i.prototype))}return Sc[t]=n,n},n6={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Pm=TL,n1=Vae,Xae=Pm.call(Function.call,Array.prototype.concat),Qae=Pm.call(Function.apply,Array.prototype.splice),r6=Pm.call(Function.call,String.prototype.replace),r1=Pm.call(Function.call,String.prototype.slice),Yae=Pm.call(Function.call,RegExp.prototype.exec),Zae=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Jae=/\\(\\)?/g,ele=function(t){var n=r1(t,0,1),r=r1(t,-1);if(n==="%"&&r!=="%")throw new Vf("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new Vf("invalid intrinsic syntax, expected opening `%`");var i=[];return r6(t,Zae,function(o,s,a,l){i[i.length]=a?r6(l,Jae,"$1"):s||o}),i},tle=function(t,n){var r=t,i;if(n1(n6,r)&&(i=n6[r],r="%"+i[0]+"%"),n1(Sc,r)){var o=Sc[r];if(o===Rd&&(o=Kae(r)),typeof o>"u"&&!n)throw new hf("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:r,value:o}}throw new Vf("intrinsic "+t+" does not exist!")},nle=function(t,n){if(typeof t!="string"||t.length===0)throw new hf("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new hf('"allowMissing" argument must be a boolean');if(Yae(/^%?[^%]*%?$/,t)===null)throw new Vf("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=ele(t),i=r.length>0?r[0]:"",o=tle("%"+i+"%",n),s=o.name,a=o.value,l=!1,u=o.alias;u&&(i=u[0],Qae(r,Xae([0,1],u)));for(var c=1,d=!0;c=r.length){var m=bc(a,f);d=!!m,d&&"get"in m&&!("originalValue"in m.get)?a=m.get:a=a[f]}else d=n1(a,f),a=a[f];d&&!l&&(Sc[s]=a)}}return a},rle=nle,kC=rle("%Object.defineProperty%",!0),PC=function(){if(kC)try{return kC({},"a",{value:1}),!0}catch{return!1}return!1};PC.hasArrayLengthDefineBug=function(){if(!PC())return null;try{return kC([],"length",{value:1}).length!==1}catch{return!0}};var ile=PC,ole=Iae,sle=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",ale=Object.prototype.toString,lle=Array.prototype.concat,kL=Object.defineProperty,ule=function(e){return typeof e=="function"&&ale.call(e)==="[object Function]"},cle=ile(),PL=kL&&cle,dle=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!ule(r)||!r())return}PL?kL(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n},RL=function(e,t){var n=arguments.length>2?arguments[2]:{},r=ole(t);sle&&(r=lle.call(r,Object.getOwnPropertySymbols(t)));for(var i=0;i":return t>e;case":<":return t=":return t>=e;case":<=":return t<=e;default:throw new Error("Unimplemented comparison operator: ".concat(n))}};K_.testComparisonRange=Ole;var X_={};Object.defineProperty(X_,"__esModule",{value:!0});X_.testRange=void 0;var Mle=function(e,t){return typeof e=="number"?!(et.max||e===t.max&&!t.maxInclusive):!1};X_.testRange=Mle;(function(e){var t=dt&&dt.__assign||function(){return t=Object.assign||function(c){for(var d,f=1,h=arguments.length;f0?{path:l.path,query:new RegExp("("+l.keywords.map(function(u){return(0,Lle.escapeRegexString)(u.trim())}).join("|")+")")}:{path:l.path}})};Q_.highlight=Fle;var Y_={},$L={exports:{}};(function(e){(function(t,n){e.exports?e.exports=n():t.nearley=n()})(dt,function(){function t(u,c,d){return this.id=++t.highestId,this.name=u,this.symbols=c,this.postprocess=d,this}t.highestId=0,t.prototype.toString=function(u){var c=typeof u>"u"?this.symbols.map(l).join(" "):this.symbols.slice(0,u).map(l).join(" ")+" ● "+this.symbols.slice(u).map(l).join(" ");return this.name+" → "+c};function n(u,c,d,f){this.rule=u,this.dot=c,this.reference=d,this.data=[],this.wantedBy=f,this.isComplete=this.dot===u.symbols.length}n.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},n.prototype.nextState=function(u){var c=new n(this.rule,this.dot+1,this.reference,this.wantedBy);return c.left=this,c.right=u,c.isComplete&&(c.data=c.build(),c.right=void 0),c},n.prototype.build=function(){var u=[],c=this;do u.push(c.right.data),c=c.left;while(c.left);return u.reverse(),u},n.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,s.fail))};function r(u,c){this.grammar=u,this.index=c,this.states=[],this.wants={},this.scannable=[],this.completed={}}r.prototype.process=function(u){for(var c=this.states,d=this.wants,f=this.completed,h=0;h0&&c.push(" ^ "+f+" more lines identical to this"),f=0,c.push(" "+m)),d=m}},s.prototype.getSymbolDisplay=function(u){return a(u)},s.prototype.buildFirstStateStack=function(u,c){if(c.indexOf(u)!==-1)return null;if(u.wantedBy.length===0)return[u];var d=u.wantedBy[0],f=[u].concat(c),h=this.buildFirstStateStack(d,f);return h===null?null:[u].concat(h)},s.prototype.save=function(){var u=this.table[this.current];return u.lexerState=this.lexerState,u},s.prototype.restore=function(u){var c=u.index;this.current=c,this.table[c]=u,this.table.splice(c+1),this.lexerState=u.lexerState,this.results=this.finish()},s.prototype.rewind=function(u){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[u])},s.prototype.finish=function(){var u=[],c=this.grammar.start,d=this.table[this.table.length-1];return d.states.forEach(function(f){f.rule.name===c&&f.dot===f.rule.symbols.length&&f.reference===0&&f.data!==s.fail&&u.push(f)}),u.map(function(f){return f.data})};function a(u){var c=typeof u;if(c==="string")return u;if(c==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return"character matching "+u;if(u.type)return u.type+" token";if(u.test)return"token matching "+String(u.test);throw new Error("Unknown symbol type: "+u)}}function l(u){var c=typeof u;if(c==="string")return u;if(c==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return u.toString();if(u.type)return"%"+u.type;if(u.test)return"<"+String(u.test)+">";throw new Error("Unknown symbol type: "+u)}}return{Parser:s,Grammar:i,Rule:t}})})($L);var Ble=$L.exports,Nc={},FL={},Ou={};Ou.__esModule=void 0;Ou.__esModule=!0;var zle=typeof Object.setPrototypeOf=="function",Ule=typeof Object.getPrototypeOf=="function",jle=typeof Object.defineProperty=="function",Vle=typeof Object.create=="function",Gle=typeof Object.prototype.hasOwnProperty=="function",Hle=function(t,n){zle?Object.setPrototypeOf(t,n):t.__proto__=n};Ou.setPrototypeOf=Hle;var qle=function(t){return Ule?Object.getPrototypeOf(t):t.__proto__||t.prototype};Ou.getPrototypeOf=qle;var i6=!1,Wle=function e(t,n,r){if(jle&&!i6)try{Object.defineProperty(t,n,r)}catch{i6=!0,e(t,n,r)}else t[n]=r.value};Ou.defineProperty=Wle;var BL=function(t,n){return Gle?t.hasOwnProperty(t,n):t[n]===void 0};Ou.hasOwnProperty=BL;var Kle=function(t,n){if(Vle)return Object.create(t,n);var r=function(){};r.prototype=t;var i=new r;if(typeof n>"u")return i;if(typeof n=="null")throw new Error("PropertyDescriptors must not be null.");if(typeof n=="object")for(var o in n)BL(n,o)&&(i[o]=n[o].value);return i};Ou.objectCreate=Kle;(function(e){e.__esModule=void 0,e.__esModule=!0;var t=Ou,n=t.setPrototypeOf,r=t.getPrototypeOf,i=t.defineProperty,o=t.objectCreate,s=new Error().toString()==="[object Error]",a="";function l(u){var c=this.constructor,d=c.name||function(){var b=c.toString().match(/^function\s*([^\s(]+)/);return b===null?a||"Error":b[1]}(),f=d==="Error",h=f?a:d,p=Error.apply(this,arguments);if(n(p,r(this)),!(p instanceof c)||!(p instanceof l)){var p=this;Error.apply(this,arguments),i(p,"message",{configurable:!0,enumerable:!1,value:u,writable:!0})}if(i(p,"name",{configurable:!0,enumerable:!1,value:h,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(p,f?l:c),p.stack===void 0){var m=new Error(u);m.name=p.name,p.stack=m.stack}return s&&i(p,"toString",{configurable:!0,enumerable:!1,value:function(){return(this.name||"Error")+(typeof this.message>"u"?"":": "+this.message)},writable:!0}),p}a=l.name||"ExtendableError",l.prototype=o(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),e.ExtendableError=l,e.default=e.ExtendableError})(FL);var zL=dt&&dt.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},e(t,n)};return function(t,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(Nc,"__esModule",{value:!0});Nc.SyntaxError=Nc.LiqeError=void 0;var Xle=FL,UL=function(e){zL(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(Xle.ExtendableError);Nc.LiqeError=UL;var Qle=function(e){zL(t,e);function t(n,r,i,o){var s=e.call(this,n)||this;return s.message=n,s.offset=r,s.line=i,s.column=o,s}return t}(UL);Nc.SyntaxError=Qle;var N5={},i1=dt&&dt.__assign||function(){return i1=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$2"]},{name:"comparison_operator$subexpression$1$string$3",symbols:[{literal:":"},{literal:"<"}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$3"]},{name:"comparison_operator$subexpression$1$string$4",symbols:[{literal:":"},{literal:">"},{literal:"="}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$4"]},{name:"comparison_operator$subexpression$1$string$5",symbols:[{literal:":"},{literal:"<"},{literal:"="}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$5"]},{name:"comparison_operator",symbols:["comparison_operator$subexpression$1"],postprocess:function(e,t){return{location:{start:t,end:t+e[0][0].length},type:"ComparisonOperator",operator:e[0][0]}}},{name:"regex",symbols:["regex_body","regex_flags"],postprocess:function(e){return e.join("")}},{name:"regex_body$ebnf$1",symbols:[]},{name:"regex_body$ebnf$1",symbols:["regex_body$ebnf$1","regex_body_char"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"regex_body",symbols:[{literal:"/"},"regex_body$ebnf$1",{literal:"/"}],postprocess:function(e){return"/"+e[1].join("")+"/"}},{name:"regex_body_char",symbols:[/[^\\]/],postprocess:Ra},{name:"regex_body_char",symbols:[{literal:"\\"},/[^\\]/],postprocess:function(e){return"\\"+e[1]}},{name:"regex_flags",symbols:[]},{name:"regex_flags$ebnf$1",symbols:[/[gmiyusd]/]},{name:"regex_flags$ebnf$1",symbols:["regex_flags$ebnf$1",/[gmiyusd]/],postprocess:function(e){return e[0].concat([e[1]])}},{name:"regex_flags",symbols:["regex_flags$ebnf$1"],postprocess:function(e){return e[0].join("")}},{name:"unquoted_value$ebnf$1",symbols:[]},{name:"unquoted_value$ebnf$1",symbols:["unquoted_value$ebnf$1",/[a-zA-Z\.\-_*@#$]/],postprocess:function(e){return e[0].concat([e[1]])}},{name:"unquoted_value",symbols:[/[a-zA-Z_*@#$]/,"unquoted_value$ebnf$1"],postprocess:function(e){return e[0]+e[1].join("")}}],ParserStart:"main"};N5.default=Yle;var jL={},Z_={},Om={};Object.defineProperty(Om,"__esModule",{value:!0});Om.isSafePath=void 0;var Zle=/^(\.(?:[_a-zA-Z][a-zA-Z\d_]*|\0|[1-9]\d*))+$/u,Jle=function(e){return Zle.test(e)};Om.isSafePath=Jle;Object.defineProperty(Z_,"__esModule",{value:!0});Z_.createGetValueFunctionBody=void 0;var eue=Om,tue=function(e){if(!(0,eue.isSafePath)(e))throw new Error("Unsafe path.");var t="return subject"+e;return t.replace(/(\.(\d+))/g,".[$2]").replace(/\./g,"?.")};Z_.createGetValueFunctionBody=tue;(function(e){var t=dt&&dt.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,l=arguments.length;a\d+) col (?\d+)/,aue=function(e){if(e.trim()==="")return{location:{end:0,start:0},type:"EmptyExpression"};var t=new GL.default.Parser(oue),n;try{n=t.feed(e).results}catch(o){if(typeof(o==null?void 0:o.message)=="string"&&typeof(o==null?void 0:o.offset)=="number"){var r=o.message.match(sue);throw r?new nue.SyntaxError("Syntax error at line ".concat(r.groups.line," column ").concat(r.groups.column),o.offset,Number(r.groups.line),Number(r.groups.column)):o}throw o}if(n.length===0)throw new Error("Found no parsings.");if(n.length>1)throw new Error("Ambiguous results.");var i=(0,iue.hydrateAst)(n[0]);return i};Y_.parse=aue;var J_={};Object.defineProperty(J_,"__esModule",{value:!0});J_.test=void 0;var lue=Rm,uue=function(e,t){return(0,lue.filter)(e,[t]).length===1};J_.test=uue;var HL={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.serialize=void 0;var t=function(o,s){return s==="double"?'"'.concat(o,'"'):s==="single"?"'".concat(o,"'"):o},n=function(o){if(o.type==="LiteralExpression")return o.quoted&&typeof o.value=="string"?t(o.value,o.quotes):String(o.value);if(o.type==="RegexExpression")return String(o.value);if(o.type==="RangeExpression"){var s=o.range,a=s.min,l=s.max,u=s.minInclusive,c=s.maxInclusive;return"".concat(u?"[":"{").concat(a," TO ").concat(l).concat(c?"]":"}")}if(o.type==="EmptyExpression")return"";throw new Error("Unexpected AST type.")},r=function(o){if(o.type!=="Tag")throw new Error("Expected a tag expression.");var s=o.field,a=o.expression,l=o.operator;if(s.type==="ImplicitField")return n(a);var u=s.quoted?t(s.name,s.quotes):s.name,c=" ".repeat(a.location.start-l.location.end);return u+l.operator+c+n(a)},i=function(o){if(o.type==="ParenthesizedExpression"){if(!("location"in o.expression))throw new Error("Expected location in expression.");if(!o.location.end)throw new Error("Expected location end.");var s=" ".repeat(o.expression.location.start-(o.location.start+1)),a=" ".repeat(o.location.end-o.expression.location.end-1);return"(".concat(s).concat((0,e.serialize)(o.expression)).concat(a,")")}if(o.type==="Tag")return r(o);if(o.type==="LogicalExpression"){var l="";return o.operator.type==="BooleanOperator"?(l+=" ".repeat(o.operator.location.start-o.left.location.end),l+=o.operator.operator,l+=" ".repeat(o.right.location.start-o.operator.location.end)):l=" ".repeat(o.right.location.start-o.left.location.end),"".concat((0,e.serialize)(o.left)).concat(l).concat((0,e.serialize)(o.right))}if(o.type==="UnaryOperator")return(o.operator==="NOT"?"NOT ":o.operator)+(0,e.serialize)(o.operand);if(o.type==="EmptyExpression")return"";throw new Error("Unexpected AST type.")};e.serialize=i})(HL);var eb={};Object.defineProperty(eb,"__esModule",{value:!0});eb.isSafeUnquotedExpression=void 0;var cue=function(e){return/^[#$*@A-Z_a-z][#$*.@A-Z_a-z-]*$/.test(e)};eb.isSafeUnquotedExpression=cue;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isSafeUnquotedExpression=e.serialize=e.SyntaxError=e.LiqeError=e.test=e.parse=e.highlight=e.filter=void 0;var t=Rm;Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return t.filter}});var n=Q_;Object.defineProperty(e,"highlight",{enumerable:!0,get:function(){return n.highlight}});var r=Y_;Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return r.parse}});var i=J_;Object.defineProperty(e,"test",{enumerable:!0,get:function(){return i.test}});var o=Nc;Object.defineProperty(e,"LiqeError",{enumerable:!0,get:function(){return o.LiqeError}}),Object.defineProperty(e,"SyntaxError",{enumerable:!0,get:function(){return o.SyntaxError}});var s=HL;Object.defineProperty(e,"serialize",{enumerable:!0,get:function(){return s.serialize}});var a=eb;Object.defineProperty(e,"isSafeUnquotedExpression",{enumerable:!0,get:function(){return a.isSafeUnquotedExpression}})})(LL);var Mm={},qL={},Dc={};Object.defineProperty(Dc,"__esModule",{value:!0});Dc.ROARR_LOG_FORMAT_VERSION=Dc.ROARR_VERSION=void 0;Dc.ROARR_VERSION="5.0.0";Dc.ROARR_LOG_FORMAT_VERSION="2.0.0";var Nm={};Object.defineProperty(Nm,"__esModule",{value:!0});Nm.logLevels=void 0;Nm.logLevels={debug:20,error:50,fatal:60,info:30,trace:10,warn:40};var WL={},tb={};Object.defineProperty(tb,"__esModule",{value:!0});tb.hasOwnProperty=void 0;const due=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);tb.hasOwnProperty=due;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hasOwnProperty=void 0;var t=tb;Object.defineProperty(e,"hasOwnProperty",{enumerable:!0,get:function(){return t.hasOwnProperty}})})(WL);var KL={},nb={},rb={};Object.defineProperty(rb,"__esModule",{value:!0});rb.tokenize=void 0;const fue=/(?:%(?([+0-]|-\+))?(?\d+)?(?\d+\$)?(?\.\d+)?(?[%BCESb-iosux]))|(\\%)/g,hue=e=>{let t;const n=[];let r=0,i=0,o=null;for(;(t=fue.exec(e))!==null;){t.index>i&&(o={literal:e.slice(i,t.index),type:"literal"},n.push(o));const s=t[0];i=t.index+s.length,s==="\\%"||s==="%%"?o&&o.type==="literal"?o.literal+="%":(o={literal:"%",type:"literal"},n.push(o)):t.groups&&(o={conversion:t.groups.conversion,flag:t.groups.flag||null,placeholder:s,position:t.groups.position?Number.parseInt(t.groups.position,10)-1:r++,precision:t.groups.precision?Number.parseInt(t.groups.precision.slice(1),10):null,type:"placeholder",width:t.groups.width?Number.parseInt(t.groups.width,10):null},n.push(o))}return i<=e.length-1&&(o&&o.type==="literal"?o.literal+=e.slice(i):n.push({literal:e.slice(i),type:"literal"})),n};rb.tokenize=hue;Object.defineProperty(nb,"__esModule",{value:!0});nb.createPrintf=void 0;const o6=I5,pue=rb,gue=(e,t)=>t.placeholder,mue=e=>{var t;const n=(o,s,a)=>a==="-"?o.padEnd(s," "):a==="-+"?((Number(o)>=0?"+":"")+o).padEnd(s," "):a==="+"?((Number(o)>=0?"+":"")+o).padStart(s," "):a==="0"?o.padStart(s,"0"):o.padStart(s," "),r=(t=e==null?void 0:e.formatUnboundExpression)!==null&&t!==void 0?t:gue,i={};return(o,...s)=>{let a=i[o];a||(a=i[o]=pue.tokenize(o));let l="";for(const u of a)if(u.type==="literal")l+=u.literal;else{let c=s[u.position];if(c===void 0)l+=r(o,u,s);else if(u.conversion==="b")l+=o6.boolean(c)?"true":"false";else if(u.conversion==="B")l+=o6.boolean(c)?"TRUE":"FALSE";else if(u.conversion==="c")l+=c;else if(u.conversion==="C")l+=String(c).toUpperCase();else if(u.conversion==="i"||u.conversion==="d")c=String(Math.trunc(c)),u.width!==null&&(c=n(c,u.width,u.flag)),l+=c;else if(u.conversion==="e")l+=Number(c).toExponential();else if(u.conversion==="E")l+=Number(c).toExponential().toUpperCase();else if(u.conversion==="f")u.precision!==null&&(c=Number(c).toFixed(u.precision)),u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else if(u.conversion==="o")l+=(Number.parseInt(String(c),10)>>>0).toString(8);else if(u.conversion==="s")u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else if(u.conversion==="S")u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=String(c).toUpperCase();else if(u.conversion==="u")l+=Number.parseInt(String(c),10)>>>0;else if(u.conversion==="x")c=(Number.parseInt(String(c),10)>>>0).toString(16),u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else throw new Error("Unknown format specifier.")}return l}};nb.createPrintf=mue;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.printf=e.createPrintf=void 0;const t=nb;Object.defineProperty(e,"createPrintf",{enumerable:!0,get:function(){return t.createPrintf}}),e.printf=t.createPrintf()})(KL);var RC={exports:{}};(function(e,t){const{hasOwnProperty:n}=Object.prototype,r=b();r.configure=b,r.stringify=r,r.default=r,t.stringify=r,t.configure=b,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function o(_){return _.length<5e3&&!i.test(_)?`"${_}"`:JSON.stringify(_)}function s(_){if(_.length>200)return _.sort();for(let y=1;y<_.length;y++){const g=_[y];let v=y;for(;v!==0&&_[v-1]>g;)_[v]=_[v-1],v--;_[v]=g}return _}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function l(_){return a.call(_)!==void 0&&_.length!==0}function u(_,y,g){_.length= 1`)}return g===void 0?1/0:g}function h(_){return _===1?"1 item":`${_} items`}function p(_){const y=new Set;for(const g of _)(typeof g=="string"||typeof g=="number")&&y.add(String(g));return y}function m(_){if(n.call(_,"strict")){const y=_.strict;if(typeof y!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(y)return g=>{let v=`Object can not safely be stringified. Received type ${typeof g}`;throw typeof g!="function"&&(v+=` (${g.toString()})`),new Error(v)}}}function b(_){_={..._};const y=m(_);y&&(_.bigint===void 0&&(_.bigint=!1),"circularValue"in _||(_.circularValue=Error));const g=c(_),v=d(_,"bigint"),S=d(_,"deterministic"),w=f(_,"maximumDepth"),x=f(_,"maximumBreadth");function C(N,E,P,D,B,R){let I=E[N];switch(typeof I=="object"&&I!==null&&typeof I.toJSON=="function"&&(I=I.toJSON(N)),I=D.call(E,N,I),typeof I){case"string":return o(I);case"object":{if(I===null)return"null";if(P.indexOf(I)!==-1)return g;let O="",F=",";const U=R;if(Array.isArray(I)){if(I.length===0)return"[]";if(wx){const me=I.length-x-1;O+=`${F}"... ${h(me)} not stringified"`}return B!==""&&(O+=` +${U}`),P.pop(),`[${O}]`}let V=Object.keys(I);const H=V.length;if(H===0)return"{}";if(wx){const K=H-x;O+=`${Q}"...":${Y}"${h(K)} not stringified"`,Q=F}return B!==""&&Q.length>1&&(O=` +${R}${O} +${U}`),P.pop(),`{${O}}`}case"number":return isFinite(I)?String(I):y?y(I):"null";case"boolean":return I===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(I);default:return y?y(I):void 0}}function A(N,E,P,D,B,R){switch(typeof E=="object"&&E!==null&&typeof E.toJSON=="function"&&(E=E.toJSON(N)),typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(P.indexOf(E)!==-1)return g;const I=R;let O="",F=",";if(Array.isArray(E)){if(E.length===0)return"[]";if(wx){const j=E.length-x-1;O+=`${F}"... ${h(j)} not stringified"`}return B!==""&&(O+=` +${I}`),P.pop(),`[${O}]`}P.push(E);let U="";B!==""&&(R+=B,F=`, +${R}`,U=" ");let V="";for(const H of D){const Y=A(H,E[H],P,D,B,R);Y!==void 0&&(O+=`${V}${o(H)}:${U}${Y}`,V=F)}return B!==""&&V.length>1&&(O=` +${R}${O} +${I}`),P.pop(),`{${O}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function T(N,E,P,D,B){switch(typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(typeof E.toJSON=="function"){if(E=E.toJSON(N),typeof E!="object")return T(N,E,P,D,B);if(E===null)return"null"}if(P.indexOf(E)!==-1)return g;const R=B;if(Array.isArray(E)){if(E.length===0)return"[]";if(wx){const oe=E.length-x-1;Y+=`${Q}"... ${h(oe)} not stringified"`}return Y+=` +${R}`,P.pop(),`[${Y}]`}let I=Object.keys(E);const O=I.length;if(O===0)return"{}";if(wx){const Y=O-x;U+=`${V}"...": "${h(Y)} not stringified"`,V=F}return V!==""&&(U=` +${B}${U} +${R}`),P.pop(),`{${U}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function k(N,E,P){switch(typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(typeof E.toJSON=="function"){if(E=E.toJSON(N),typeof E!="object")return k(N,E,P);if(E===null)return"null"}if(P.indexOf(E)!==-1)return g;let D="";if(Array.isArray(E)){if(E.length===0)return"[]";if(wx){const H=E.length-x-1;D+=`,"... ${h(H)} not stringified"`}return P.pop(),`[${D}]`}let B=Object.keys(E);const R=B.length;if(R===0)return"{}";if(wx){const F=R-x;D+=`${I}"...":"${h(F)} not stringified"`}return P.pop(),`{${D}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function L(N,E,P){if(arguments.length>1){let D="";if(typeof P=="number"?D=" ".repeat(Math.min(P,10)):typeof P=="string"&&(D=P.slice(0,10)),E!=null){if(typeof E=="function")return C("",{"":N},[],E,D,"");if(Array.isArray(E))return A("",N,[],p(E),D,"")}if(D.length!==0)return T("",N,[],D,"")}return k("",N,[])}return L}})(RC,RC.exports);var yue=RC.exports;(function(e){var t=dt&&dt.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(e,"__esModule",{value:!0}),e.createLogger=void 0;const n=Dc,r=Nm,i=WL,o=KL,s=t(O5),a=t(yue);let l=!1;const u=(0,s.default)(),c=()=>u.ROARR,d=()=>({messageContext:{},transforms:[]}),f=()=>{const g=c().asyncLocalStorage;if(!g)throw new Error("AsyncLocalContext is unavailable.");const v=g.getStore();return v||d()},h=()=>!!c().asyncLocalStorage,p=()=>{if(h()){const g=f();return(0,i.hasOwnProperty)(g,"sequenceRoot")&&(0,i.hasOwnProperty)(g,"sequence")&&typeof g.sequence=="number"?String(g.sequenceRoot)+"."+String(g.sequence++):String(c().sequence++)}return String(c().sequence++)},m=(g,v)=>(S,w,x,C,A,T,k,L,N,E)=>{g.child({logLevel:v})(S,w,x,C,A,T,k,L,N,E)},b=1e3,_=(g,v)=>(S,w,x,C,A,T,k,L,N,E)=>{const P=(0,a.default)({a:S,b:w,c:x,d:C,e:A,f:T,g:k,h:L,i:N,j:E,logLevel:v});if(!P)throw new Error("Expected key to be a string");const D=c().onceLog;D.has(P)||(D.add(P),D.size>b&&D.clear(),g.child({logLevel:v})(S,w,x,C,A,T,k,L,N,E))},y=(g,v={},S=[])=>{const w=(x,C,A,T,k,L,N,E,P,D)=>{const B=Date.now(),R=p();let I;h()?I=f():I=d();let O,F;if(typeof x=="string"?O={...I.messageContext,...v}:O={...I.messageContext,...v,...x},typeof x=="string"&&C===void 0)F=x;else if(typeof x=="string"){if(!x.includes("%"))throw new Error("When a string parameter is followed by other arguments, then it is assumed that you are attempting to format a message using printf syntax. You either forgot to add printf bindings or if you meant to add context to the log message, pass them in an object as the first parameter.");F=(0,o.printf)(x,C,A,T,k,L,N,E,P,D)}else{let V=C;if(typeof C!="string")if(C===void 0)V="";else throw new TypeError("Message must be a string. Received "+typeof C+".");F=(0,o.printf)(V,A,T,k,L,N,E,P,D)}let U={context:O,message:F,sequence:R,time:B,version:n.ROARR_LOG_FORMAT_VERSION};for(const V of[...I.transforms,...S])if(U=V(U),typeof U!="object"||U===null)throw new Error("Message transform function must return a message object.");g(U)};return w.child=x=>{let C;return h()?C=f():C=d(),typeof x=="function"?(0,e.createLogger)(g,{...C.messageContext,...v,...x},[x,...S]):(0,e.createLogger)(g,{...C.messageContext,...v,...x},S)},w.getContext=()=>{let x;return h()?x=f():x=d(),{...x.messageContext,...v}},w.adopt=async(x,C)=>{if(!h())return l===!1&&(l=!0,g({context:{logLevel:r.logLevels.warn,package:"roarr"},message:"async_hooks are unavailable; Roarr.adopt will not function as expected",sequence:p(),time:Date.now(),version:n.ROARR_LOG_FORMAT_VERSION})),x();const A=f();let T;(0,i.hasOwnProperty)(A,"sequenceRoot")&&(0,i.hasOwnProperty)(A,"sequence")&&typeof A.sequence=="number"?T=A.sequenceRoot+"."+String(A.sequence++):T=String(c().sequence++);let k={...A.messageContext};const L=[...A.transforms];typeof C=="function"?L.push(C):k={...k,...C};const N=c().asyncLocalStorage;if(!N)throw new Error("Async local context unavailable.");return N.run({messageContext:k,sequence:0,sequenceRoot:T,transforms:L},()=>x())},w.debug=m(w,r.logLevels.debug),w.debugOnce=_(w,r.logLevels.debug),w.error=m(w,r.logLevels.error),w.errorOnce=_(w,r.logLevels.error),w.fatal=m(w,r.logLevels.fatal),w.fatalOnce=_(w,r.logLevels.fatal),w.info=m(w,r.logLevels.info),w.infoOnce=_(w,r.logLevels.info),w.trace=m(w,r.logLevels.trace),w.traceOnce=_(w,r.logLevels.trace),w.warn=m(w,r.logLevels.warn),w.warnOnce=_(w,r.logLevels.warn),w};e.createLogger=y})(qL);var ib={},vue=function(t,n){for(var r=t.split("."),i=n.split("."),o=0;o<3;o++){var s=Number(r[o]),a=Number(i[o]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0},_ue=dt&&dt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ib,"__esModule",{value:!0});ib.createRoarrInitialGlobalStateBrowser=void 0;const s6=Dc,a6=_ue(vue),bue=e=>{const t=(e.versions||[]).concat();return t.length>1&&t.sort(a6.default),t.includes(s6.ROARR_VERSION)||t.push(s6.ROARR_VERSION),t.sort(a6.default),{sequence:0,...e,versions:t}};ib.createRoarrInitialGlobalStateBrowser=bue;var ob={};Object.defineProperty(ob,"__esModule",{value:!0});ob.getLogLevelName=void 0;const Sue=e=>e<=10?"trace":e<=20?"debug":e<=30?"info":e<=40?"warn":e<=50?"error":"fatal";ob.getLogLevelName=Sue;(function(e){var t=dt&&dt.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(e,"__esModule",{value:!0}),e.getLogLevelName=e.logLevels=e.Roarr=e.ROARR=void 0;const n=qL,r=ib,o=(0,t(O5).default)(),s=(0,r.createRoarrInitialGlobalStateBrowser)(o.ROARR||{});e.ROARR=s,o.ROARR=s;const a=d=>JSON.stringify(d),l=(0,n.createLogger)(d=>{var f;s.write&&s.write(((f=s.serializeMessage)!==null&&f!==void 0?f:a)(d))});e.Roarr=l;var u=Nm;Object.defineProperty(e,"logLevels",{enumerable:!0,get:function(){return u.logLevels}});var c=ob;Object.defineProperty(e,"getLogLevelName",{enumerable:!0,get:function(){return c.getLogLevelName}})})(Mm);var wue=dt&&dt.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);i0?h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message," %O"),m,b,_,d):h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message),m,b,_)}}};U_.createLogWriter=Iue;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createLogWriter=void 0;var t=U_;Object.defineProperty(e,"createLogWriter",{enumerable:!0,get:function(){return t.createLogWriter}})})(CL);Mm.ROARR.write=CL.createLogWriter();const QL={};Mm.Roarr.child(QL);const sb=Ru(Mm.Roarr.child(QL)),ge=e=>sb.get().child({namespace:e}),WRe=["trace","debug","info","warn","error","fatal"],KRe={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},mn=e=>{try{return JSON.parse(JSON.stringify(e))}catch{return"Error parsing object"}},Oue=async e=>{const t={},n=await e.arrayBuffer(),r=Cae(n).text,i=Mv(r,"invokeai_metadata");if(i){const s=MD.safeParse(JSON.parse(i));s.success?t.metadata=s.data:ge("system").error({error:mn(s.error)},"Problem reading metadata from image")}const o=Mv(r,"invokeai_workflow");if(o){const s=FD.safeParse(JSON.parse(o));s.success?t.workflow=s.data:ge("system").error({error:mn(s.error)},"Problem reading workflow from image")}return t};var o1=globalThis&&globalThis.__generator||function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(u){return function(c){return l([u,c])}}function l(u){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(o=u[0]&2?i.return:u[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,u[1])).done)return o;switch(i=0,o&&(u=[u[0]&2,o.value]),u[0]){case 0:case 1:o=u;break;case 4:return n.label++,{value:u[1],done:!1};case 5:n.label++,i=u[1],u=[0];continue;case 7:u=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]"u"||navigator.onLine===void 0?!0:navigator.onLine}function jue(){return typeof document>"u"?!0:document.visibilityState!=="hidden"}var f6=Ls;function JL(e,t){if(e===t||!(f6(e)&&f6(t)||Array.isArray(e)&&Array.isArray(t)))return t;for(var n=Object.keys(t),r=Object.keys(e),i=n.length===r.length,o=Array.isArray(t)?[]:{},s=0,a=n;s=200&&e.status<=299},Gue=function(e){return/ion\/(vnd\.api\+)?json/.test(e.get("content-type")||"")};function p6(e){if(!Ls(e))return e;for(var t=yr({},e),n=0,r=Object.entries(t);n"u"&&a===h6&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(g,v){return l1(t,null,function(){var S,w,x,C,A,T,k,L,N,E,P,D,B,R,I,O,F,U,V,H,Y,Q,j,K,te,oe,me,le,ht,nt,$e,ct,Pe,qt,Sr,Pn;return o1(this,function(bn){switch(bn.label){case 0:return S=v.signal,w=v.getState,x=v.extra,C=v.endpoint,A=v.forced,T=v.type,L=typeof g=="string"?{url:g}:g,N=L.url,E=L.headers,P=E===void 0?new Headers(_.headers):E,D=L.params,B=D===void 0?void 0:D,R=L.responseHandler,I=R===void 0?m??"json":R,O=L.validateStatus,F=O===void 0?b??Vue:O,U=L.timeout,V=U===void 0?p:U,H=c6(L,["url","headers","params","responseHandler","validateStatus","timeout"]),Y=yr(oa(yr({},_),{signal:S}),H),P=new Headers(p6(P)),Q=Y,[4,o(P,{getState:w,extra:x,endpoint:C,forced:A,type:T})];case 1:Q.headers=bn.sent()||P,j=function(Wt){return typeof Wt=="object"&&(Ls(Wt)||Array.isArray(Wt)||typeof Wt.toJSON=="function")},!Y.headers.has("content-type")&&j(Y.body)&&Y.headers.set("content-type",f),j(Y.body)&&c(Y.headers)&&(Y.body=JSON.stringify(Y.body,h)),B&&(K=~N.indexOf("?")?"&":"?",te=l?l(B):new URLSearchParams(p6(B)),N+=K+te),N=zue(r,N),oe=new Request(N,Y),me=oe.clone(),k={request:me},ht=!1,nt=V&&setTimeout(function(){ht=!0,v.abort()},V),bn.label=2;case 2:return bn.trys.push([2,4,5,6]),[4,a(oe)];case 3:return le=bn.sent(),[3,6];case 4:return $e=bn.sent(),[2,{error:{status:ht?"TIMEOUT_ERROR":"FETCH_ERROR",error:String($e)},meta:k}];case 5:return nt&&clearTimeout(nt),[7];case 6:ct=le.clone(),k.response=ct,qt="",bn.label=7;case 7:return bn.trys.push([7,9,,10]),[4,Promise.all([y(le,I).then(function(Wt){return Pe=Wt},function(Wt){return Sr=Wt}),ct.text().then(function(Wt){return qt=Wt},function(){})])];case 8:if(bn.sent(),Sr)throw Sr;return[3,10];case 9:return Pn=bn.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:le.status,data:qt,error:String(Pn)},meta:k}];case 10:return[2,F(le,Pe)?{data:Pe,meta:k}:{error:{status:le.status,data:Pe},meta:k}]}})})};function y(g,v){return l1(this,null,function(){var S;return o1(this,function(w){switch(w.label){case 0:return typeof v=="function"?[2,v(g)]:(v==="content-type"&&(v=c(g.headers)?"json":"text"),v!=="json"?[3,2]:[4,g.text()]);case 1:return S=w.sent(),[2,S.length?JSON.parse(S):null];case 2:return[2,g.text()]}})})}}var g6=function(){function e(t,n){n===void 0&&(n=void 0),this.value=t,this.meta=n}return e}(),D5=Le("__rtkq/focused"),e$=Le("__rtkq/unfocused"),L5=Le("__rtkq/online"),t$=Le("__rtkq/offline"),_a;(function(e){e.query="query",e.mutation="mutation"})(_a||(_a={}));function n$(e){return e.type===_a.query}function que(e){return e.type===_a.mutation}function r$(e,t,n,r,i,o){return Wue(e)?e(t,n,r,i).map(IC).map(o):Array.isArray(e)?e.map(IC).map(o):[]}function Wue(e){return typeof e=="function"}function IC(e){return typeof e=="string"?{type:e}:e}function sw(e){return e!=null}var Ig=Symbol("forceQueryFn"),OC=function(e){return typeof e[Ig]=="function"};function Kue(e){var t=e.serializeQueryArgs,n=e.queryThunk,r=e.mutationThunk,i=e.api,o=e.context,s=new Map,a=new Map,l=i.internalActions,u=l.unsubscribeQueryResult,c=l.removeMutationResult,d=l.updateSubscriptionOptions;return{buildInitiateQuery:y,buildInitiateMutation:g,getRunningQueryThunk:p,getRunningMutationThunk:m,getRunningQueriesThunk:b,getRunningMutationsThunk:_,getRunningOperationPromises:h,removalWarning:f};function f(){throw new Error(`This method had to be removed due to a conceptual bug in RTK. + Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details. + See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.`)}function h(){typeof process<"u";var v=function(S){return Array.from(S.values()).flatMap(function(w){return w?Object.values(w):[]})};return s1(s1([],v(s)),v(a)).filter(sw)}function p(v,S){return function(w){var x,C=o.endpointDefinitions[v],A=t({queryArgs:S,endpointDefinition:C,endpointName:v});return(x=s.get(w))==null?void 0:x[A]}}function m(v,S){return function(w){var x;return(x=a.get(w))==null?void 0:x[S]}}function b(){return function(v){return Object.values(s.get(v)||{}).filter(sw)}}function _(){return function(v){return Object.values(a.get(v)||{}).filter(sw)}}function y(v,S){var w=function(x,C){var A=C===void 0?{}:C,T=A.subscribe,k=T===void 0?!0:T,L=A.forceRefetch,N=A.subscriptionOptions,E=Ig,P=A[E];return function(D,B){var R,I,O=t({queryArgs:x,endpointDefinition:S,endpointName:v}),F=n((R={type:"query",subscribe:k,forceRefetch:L,subscriptionOptions:N,endpointName:v,originalArgs:x,queryCacheKey:O},R[Ig]=P,R)),U=i.endpoints[v].select(x),V=D(F),H=U(B()),Y=V.requestId,Q=V.abort,j=H.requestId!==Y,K=(I=s.get(D))==null?void 0:I[O],te=function(){return U(B())},oe=Object.assign(P?V.then(te):j&&!K?Promise.resolve(H):Promise.all([K,V]).then(te),{arg:x,requestId:Y,subscriptionOptions:N,queryCacheKey:O,abort:Q,unwrap:function(){return l1(this,null,function(){var le;return o1(this,function(ht){switch(ht.label){case 0:return[4,oe];case 1:if(le=ht.sent(),le.isError)throw le.error;return[2,le.data]}})})},refetch:function(){return D(w(x,{subscribe:!1,forceRefetch:!0}))},unsubscribe:function(){k&&D(u({queryCacheKey:O,requestId:Y}))},updateSubscriptionOptions:function(le){oe.subscriptionOptions=le,D(d({endpointName:v,requestId:Y,queryCacheKey:O,options:le}))}});if(!K&&!j&&!P){var me=s.get(D)||{};me[O]=oe,s.set(D,me),oe.then(function(){delete me[O],Object.keys(me).length||s.delete(D)})}return oe}};return w}function g(v){return function(S,w){var x=w===void 0?{}:w,C=x.track,A=C===void 0?!0:C,T=x.fixedCacheKey;return function(k,L){var N=r({type:"mutation",endpointName:v,originalArgs:S,track:A,fixedCacheKey:T}),E=k(N),P=E.requestId,D=E.abort,B=E.unwrap,R=E.unwrap().then(function(U){return{data:U}}).catch(function(U){return{error:U}}),I=function(){k(c({requestId:P,fixedCacheKey:T}))},O=Object.assign(R,{arg:E.arg,requestId:P,abort:D,unwrap:B,unsubscribe:I,reset:I}),F=a.get(k)||{};return a.set(k,F),F[P]=O,O.then(function(){delete F[P],Object.keys(F).length||a.delete(k)}),T&&(F[T]=O,O.then(function(){F[T]===O&&(delete F[T],Object.keys(F).length||a.delete(k))})),O}}}}function m6(e){return e}function Xue(e){var t=this,n=e.reducerPath,r=e.baseQuery,i=e.context.endpointDefinitions,o=e.serializeQueryArgs,s=e.api,a=function(g,v,S){return function(w){var x=i[g];w(s.internalActions.queryResultPatched({queryCacheKey:o({queryArgs:v,endpointDefinition:x,endpointName:g}),patches:S}))}},l=function(g,v,S){return function(w,x){var C,A,T=s.endpoints[g].select(v)(x()),k={patches:[],inversePatches:[],undo:function(){return w(s.util.patchQueryData(g,v,k.inversePatches))}};if(T.status===Wn.uninitialized)return k;if("data"in T)if(go(T.data)){var L=JE(T.data,S),N=L[1],E=L[2];(C=k.patches).push.apply(C,N),(A=k.inversePatches).push.apply(A,E)}else{var P=S(T.data);k.patches.push({op:"replace",path:[],value:P}),k.inversePatches.push({op:"replace",path:[],value:T.data})}return w(s.util.patchQueryData(g,v,k.patches)),k}},u=function(g,v,S){return function(w){var x;return w(s.endpoints[g].initiate(v,(x={subscribe:!1,forceRefetch:!0},x[Ig]=function(){return{data:S}},x)))}},c=function(g,v){return l1(t,[g,v],function(S,w){var x,C,A,T,k,L,N,E,P,D,B,R,I,O,F,U,V,H,Y=w.signal,Q=w.abort,j=w.rejectWithValue,K=w.fulfillWithValue,te=w.dispatch,oe=w.getState,me=w.extra;return o1(this,function(le){switch(le.label){case 0:x=i[S.endpointName],le.label=1;case 1:return le.trys.push([1,8,,13]),C=m6,A=void 0,T={signal:Y,abort:Q,dispatch:te,getState:oe,extra:me,endpoint:S.endpointName,type:S.type,forced:S.type==="query"?d(S,oe()):void 0},k=S.type==="query"?S[Ig]:void 0,k?(A=k(),[3,6]):[3,2];case 2:return x.query?[4,r(x.query(S.originalArgs),T,x.extraOptions)]:[3,4];case 3:return A=le.sent(),x.transformResponse&&(C=x.transformResponse),[3,6];case 4:return[4,x.queryFn(S.originalArgs,T,x.extraOptions,function(ht){return r(ht,T,x.extraOptions)})];case 5:A=le.sent(),le.label=6;case 6:if(typeof process<"u",A.error)throw new g6(A.error,A.meta);return B=K,[4,C(A.data,A.meta,S.originalArgs)];case 7:return[2,B.apply(void 0,[le.sent(),(V={fulfilledTimeStamp:Date.now(),baseQueryMeta:A.meta},V[ac]=!0,V)])];case 8:if(R=le.sent(),I=R,!(I instanceof g6))return[3,12];O=m6,x.query&&x.transformErrorResponse&&(O=x.transformErrorResponse),le.label=9;case 9:return le.trys.push([9,11,,12]),F=j,[4,O(I.value,I.meta,S.originalArgs)];case 10:return[2,F.apply(void 0,[le.sent(),(H={baseQueryMeta:I.meta},H[ac]=!0,H)])];case 11:return U=le.sent(),I=U,[3,12];case 12:throw typeof process<"u",console.error(I),I;case 13:return[2]}})})};function d(g,v){var S,w,x,C,A=(w=(S=v[n])==null?void 0:S.queries)==null?void 0:w[g.queryCacheKey],T=(x=v[n])==null?void 0:x.config.refetchOnMountOrArgChange,k=A==null?void 0:A.fulfilledTimeStamp,L=(C=g.forceRefetch)!=null?C:g.subscribe&&T;return L?L===!0||(Number(new Date)-Number(k))/1e3>=L:!1}var f=hu(n+"/executeQuery",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[ac]=!0,g},condition:function(g,v){var S=v.getState,w,x,C,A=S(),T=(x=(w=A[n])==null?void 0:w.queries)==null?void 0:x[g.queryCacheKey],k=T==null?void 0:T.fulfilledTimeStamp,L=g.originalArgs,N=T==null?void 0:T.originalArgs,E=i[g.endpointName];return OC(g)?!0:(T==null?void 0:T.status)==="pending"?!1:d(g,A)||n$(E)&&((C=E==null?void 0:E.forceRefetch)!=null&&C.call(E,{currentArg:L,previousArg:N,endpointState:T,state:A}))?!0:!k},dispatchConditionRejection:!0}),h=hu(n+"/executeMutation",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[ac]=!0,g}}),p=function(g){return"force"in g},m=function(g){return"ifOlderThan"in g},b=function(g,v,S){return function(w,x){var C=p(S)&&S.force,A=m(S)&&S.ifOlderThan,T=function(E){return E===void 0&&(E=!0),s.endpoints[g].initiate(v,{forceRefetch:E})},k=s.endpoints[g].select(v)(x());if(C)w(T());else if(A){var L=k==null?void 0:k.fulfilledTimeStamp;if(!L){w(T());return}var N=(Number(new Date)-Number(new Date(L)))/1e3>=A;N&&w(T())}else w(T(!1))}};function _(g){return function(v){var S,w;return((w=(S=v==null?void 0:v.meta)==null?void 0:S.arg)==null?void 0:w.endpointName)===g}}function y(g,v){return{matchPending:af(b_(g),_(v)),matchFulfilled:af(Pu(g),_(v)),matchRejected:af(Of(g),_(v))}}return{queryThunk:f,mutationThunk:h,prefetch:b,updateQueryData:l,upsertQueryData:u,patchQueryData:a,buildMatchThunkActions:y}}function i$(e,t,n,r){return r$(n[e.meta.arg.endpointName][t],Pu(e)?e.payload:void 0,gm(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function My(e,t,n){var r=e[t];r&&n(r)}function Og(e){var t;return(t="arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)!=null?t:e.requestId}function y6(e,t,n){var r=e[Og(t)];r&&n(r)}var $h={};function Que(e){var t=e.reducerPath,n=e.queryThunk,r=e.mutationThunk,i=e.context,o=i.endpointDefinitions,s=i.apiUid,a=i.extractRehydrationInfo,l=i.hasRehydrationInfo,u=e.assertTagType,c=e.config,d=Le(t+"/resetApiState"),f=nr({name:t+"/queries",initialState:$h,reducers:{removeQueryResult:{reducer:function(S,w){var x=w.payload.queryCacheKey;delete S[x]},prepare:k0()},queryResultPatched:function(S,w){var x=w.payload,C=x.queryCacheKey,A=x.patches;My(S,C,function(T){T.data=Jx(T.data,A.concat())})}},extraReducers:function(S){S.addCase(n.pending,function(w,x){var C=x.meta,A=x.meta.arg,T,k,L=OC(A);(A.subscribe||L)&&((k=w[T=A.queryCacheKey])!=null||(w[T]={status:Wn.uninitialized,endpointName:A.endpointName})),My(w,A.queryCacheKey,function(N){N.status=Wn.pending,N.requestId=L&&N.requestId?N.requestId:C.requestId,A.originalArgs!==void 0&&(N.originalArgs=A.originalArgs),N.startedTimeStamp=C.startedTimeStamp})}).addCase(n.fulfilled,function(w,x){var C=x.meta,A=x.payload;My(w,C.arg.queryCacheKey,function(T){var k;if(!(T.requestId!==C.requestId&&!OC(C.arg))){var L=o[C.arg.endpointName].merge;if(T.status=Wn.fulfilled,L)if(T.data!==void 0){var N=C.fulfilledTimeStamp,E=C.arg,P=C.baseQueryMeta,D=C.requestId,B=ku(T.data,function(R){return L(R,A,{arg:E.originalArgs,baseQueryMeta:P,fulfilledTimeStamp:N,requestId:D})});T.data=B}else T.data=A;else T.data=(k=o[C.arg.endpointName].structuralSharing)==null||k?JL(Xi(T.data)?qE(T.data):T.data,A):A;delete T.error,T.fulfilledTimeStamp=C.fulfilledTimeStamp}})}).addCase(n.rejected,function(w,x){var C=x.meta,A=C.condition,T=C.arg,k=C.requestId,L=x.error,N=x.payload;My(w,T.queryCacheKey,function(E){if(!A){if(E.requestId!==k)return;E.status=Wn.rejected,E.error=N??L}})}).addMatcher(l,function(w,x){for(var C=a(x).queries,A=0,T=Object.entries(C);A"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?_ce:vce;a$.useSyncExternalStore=Gf.useSyncExternalStore!==void 0?Gf.useSyncExternalStore:bce;s$.exports=a$;var Sce=s$.exports,l$={exports:{}},u$={};/** + * @license React + * use-sync-external-store-shim/with-selector.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ab=M,wce=Sce;function xce(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Cce=typeof Object.is=="function"?Object.is:xce,Ece=wce.useSyncExternalStore,Tce=ab.useRef,Ace=ab.useEffect,kce=ab.useMemo,Pce=ab.useDebugValue;u$.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=Tce(null);if(o.current===null){var s={hasValue:!1,value:null};o.current=s}else s=o.current;o=kce(function(){function l(h){if(!u){if(u=!0,c=h,h=r(h),i!==void 0&&s.hasValue){var p=s.value;if(i(p,h))return d=p}return d=h}if(p=d,Cce(c,h))return p;var m=r(h);return i!==void 0&&i(p,m)?p:(c=h,d=m)}var u=!1,c,d,f=n===void 0?null:n;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,n,r,i]);var a=Ece(e,o[0],o[1]);return Ace(function(){s.hasValue=!0,s.value=a},[a]),Pce(a),a};l$.exports=u$;var c$=l$.exports;const Rce=Uc(c$);function Ice(e){e()}let d$=Ice;const Oce=e=>d$=e,Mce=()=>d$,C6=Symbol.for("react-redux-context"),E6=typeof globalThis<"u"?globalThis:{};function Nce(){var e;if(!M.createContext)return{};const t=(e=E6[C6])!=null?e:E6[C6]=new Map;let n=t.get(M.createContext);return n||(n=M.createContext(null),t.set(M.createContext,n)),n}const vu=Nce();function $5(e=vu){return function(){return M.useContext(e)}}const f$=$5(),Dce=()=>{throw new Error("uSES not initialized!")};let h$=Dce;const Lce=e=>{h$=e},$ce=(e,t)=>e===t;function Fce(e=vu){const t=e===vu?f$:$5(e);return function(r,i={}){const{equalityFn:o=$ce,stabilityCheck:s=void 0,noopCheck:a=void 0}=typeof i=="function"?{equalityFn:i}:i,{store:l,subscription:u,getServerState:c,stabilityCheck:d,noopCheck:f}=t();M.useRef(!0);const h=M.useCallback({[r.name](m){return r(m)}}[r.name],[r,d,s]),p=h$(u.addNestedSub,l.getState,c||l.getState,h,o);return M.useDebugValue(p),p}}const p$=Fce();function u1(){return u1=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let r=t;for(;r;)r.callback(),r=r.next})},get(){let r=[],i=t;for(;i;)r.push(i),i=i.next;return r},subscribe(r){let i=!0,o=n={callback:r,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){!i||t===null||(i=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}const T6={notify(){},get:()=>[]};function Qce(e,t){let n,r=T6;function i(d){return l(),r.subscribe(d)}function o(){r.notify()}function s(){c.onStateChange&&c.onStateChange()}function a(){return!!n}function l(){n||(n=t?t.addNestedSub(s):e.subscribe(s),r=Xce())}function u(){n&&(n(),n=void 0,r.clear(),r=T6)}const c={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:s,isSubscribed:a,trySubscribe:l,tryUnsubscribe:u,getListeners:()=>r};return c}const Yce=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Zce=Yce?M.useLayoutEffect:M.useEffect;function A6(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function c1(e,t){if(A6(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i=0;i{const u=Qce(e);return{store:e,subscription:u,getServerState:r?()=>r:void 0,stabilityCheck:i,noopCheck:o}},[e,r,i,o]),a=M.useMemo(()=>e.getState(),[e]);Zce(()=>{const{subscription:u}=s;return u.onStateChange=u.notifyNestedSubs,u.trySubscribe(),a!==e.getState()&&u.notifyNestedSubs(),()=>{u.tryUnsubscribe(),u.onStateChange=void 0}},[s,a]);const l=t||vu;return M.createElement(l.Provider,{value:s},n)}function b$(e=vu){const t=e===vu?f$:$5(e);return function(){const{store:r}=t();return r}}const S$=b$();function ede(e=vu){const t=e===vu?S$:b$(e);return function(){return t().dispatch}}const w$=ede();Lce(c$.useSyncExternalStoreWithSelector);Oce(Cs.unstable_batchedUpdates);var tde=globalThis&&globalThis.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n{const r=_g.get(),i=$f.get(),o=bg.get();return Hue({baseUrl:`${r??""}/api/v1`,prepareHeaders:a=>(i&&a.set("Authorization",`Bearer ${i}`),o&&a.set("project-id",o),a)})(e,t,n)},_u=mde({baseQuery:vde,reducerPath:"api",tagTypes:yde,endpoints:()=>({})}),_de=(e,t)=>{const n=new Date(e),r=new Date(t);return n>r?1:ne==null,Ede=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),NC=Symbol("encodeFragmentIdentifier");function Tde(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const i=n.length;return r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Tr(t,e),"[",i,"]"].join("")]:[...n,[Tr(t,e),"[",Tr(i,e),"]=",Tr(r,e)].join("")]};case"bracket":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Tr(t,e),"[]"].join("")]:[...n,[Tr(t,e),"[]=",Tr(r,e)].join("")];case"colon-list-separator":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Tr(t,e),":list="].join("")]:[...n,[Tr(t,e),":list=",Tr(r,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t=e.arrayFormat==="bracket-separator"?"[]=":"=";return n=>(r,i)=>i===void 0||e.skipNull&&i===null||e.skipEmptyString&&i===""?r:(i=i===null?"":i,r.length===0?[[Tr(n,e),t,Tr(i,e)].join("")]:[[r,Tr(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,Tr(t,e)]:[...n,[Tr(t,e),"=",Tr(r,e)].join("")]}}function Ade(e){let t;switch(e.arrayFormat){case"index":return(n,r,i)=>{if(t=/\[(\d*)]$/.exec(n),n=n.replace(/\[\d*]$/,""),!t){i[n]=r;return}i[n]===void 0&&(i[n]={}),i[n][t[1]]=r};case"bracket":return(n,r,i)=>{if(t=/(\[])$/.exec(n),n=n.replace(/\[]$/,""),!t){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"colon-list-separator":return(n,r,i)=>{if(t=/(:list)$/.exec(n),n=n.replace(/:list$/,""),!t){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"comma":case"separator":return(n,r,i)=>{const o=typeof r=="string"&&r.includes(e.arrayFormatSeparator),s=typeof r=="string"&&!o&&Va(r,e).includes(e.arrayFormatSeparator);r=s?Va(r,e):r;const a=o||s?r.split(e.arrayFormatSeparator).map(l=>Va(l,e)):r===null?r:Va(r,e);i[n]=a};case"bracket-separator":return(n,r,i)=>{const o=/(\[])$/.test(n);if(n=n.replace(/\[]$/,""),!o){i[n]=r&&Va(r,e);return}const s=r===null?[]:r.split(e.arrayFormatSeparator).map(a=>Va(a,e));if(i[n]===void 0){i[n]=s;return}i[n]=[...i[n],...s]};default:return(n,r,i)=>{if(i[n]===void 0){i[n]=r;return}i[n]=[...[i[n]].flat(),r]}}}function E$(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Tr(e,t){return t.encode?t.strict?Ede(e):encodeURIComponent(e):e}function Va(e,t){return t.decode?wde(e):e}function T$(e){return Array.isArray(e)?e.sort():typeof e=="object"?T$(Object.keys(e)).sort((t,n)=>Number(t)-Number(n)).map(t=>e[t]):e}function A$(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function kde(e){let t="";const n=e.indexOf("#");return n!==-1&&(t=e.slice(n)),t}function M6(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""?e=Number(e):t.parseBooleans&&e!==null&&(e.toLowerCase()==="true"||e.toLowerCase()==="false")&&(e=e.toLowerCase()==="true"),e}function V5(e){e=A$(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function G5(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t},E$(t.arrayFormatSeparator);const n=Ade(t),r=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return r;for(const i of e.split("&")){if(i==="")continue;const o=t.decode?i.replace(/\+/g," "):i;let[s,a]=C$(o,"=");s===void 0&&(s=o),a=a===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:Va(a,t),n(Va(s,t),a,r)}for(const[i,o]of Object.entries(r))if(typeof o=="object"&&o!==null)for(const[s,a]of Object.entries(o))o[s]=M6(a,t);else r[i]=M6(o,t);return t.sort===!1?r:(t.sort===!0?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce((i,o)=>{const s=r[o];return s&&typeof s=="object"&&!Array.isArray(s)?i[o]=T$(s):i[o]=s,i},Object.create(null))}function k$(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},E$(t.arrayFormatSeparator);const n=s=>t.skipNull&&Cde(e[s])||t.skipEmptyString&&e[s]==="",r=Tde(t),i={};for(const[s,a]of Object.entries(e))n(s)||(i[s]=a);const o=Object.keys(i);return t.sort!==!1&&o.sort(t.sort),o.map(s=>{const a=e[s];return a===void 0?"":a===null?Tr(s,t):Array.isArray(a)?a.length===0&&t.arrayFormat==="bracket-separator"?Tr(s,t)+"[]":a.reduce(r(s),[]).join("&"):Tr(s,t)+"="+Tr(a,t)}).filter(s=>s.length>0).join("&")}function P$(e,t){var i;t={decode:!0,...t};let[n,r]=C$(e,"#");return n===void 0&&(n=e),{url:((i=n==null?void 0:n.split("?"))==null?void 0:i[0])??"",query:G5(V5(e),t),...t&&t.parseFragmentIdentifier&&r?{fragmentIdentifier:Va(r,t)}:{}}}function R$(e,t){t={encode:!0,strict:!0,[NC]:!0,...t};const n=A$(e.url).split("?")[0]||"",r=V5(e.url),i={...G5(r,{sort:!1}),...e.query};let o=k$(i,t);o&&(o=`?${o}`);let s=kde(e.url);if(e.fragmentIdentifier){const a=new URL(n);a.hash=e.fragmentIdentifier,s=t[NC]?a.hash:`#${e.fragmentIdentifier}`}return`${n}${o}${s}`}function I$(e,t,n){n={parseFragmentIdentifier:!0,[NC]:!1,...n};const{url:r,query:i,fragmentIdentifier:o}=P$(e,n);return R$({url:r,query:xde(i,t),fragmentIdentifier:o},n)}function Pde(e,t,n){const r=Array.isArray(t)?i=>!t.includes(i):(i,o)=>!t(i,o);return I$(e,r,n)}const D0=Object.freeze(Object.defineProperty({__proto__:null,exclude:Pde,extract:V5,parse:G5,parseUrl:P$,pick:I$,stringify:k$,stringifyUrl:R$},Symbol.toStringTag,{value:"Module"})),ju=(e,t)=>{if(!e)return!1;const n=f1.selectAll(e);if(n.length<=1)return!0;const r=[],i=[];for(let o=0;o=a}else{const o=i[i.length-1];if(!o)return!1;const s=new Date(t.created_at),a=new Date(o.created_at);return s>=a}},Uo=e=>Qr.includes(e.image_category)?Qr:Gl,Ln=fl({selectId:e=>e.image_name,sortComparer:(e,t)=>e.starred&&!t.starred?-1:!e.starred&&t.starred?1:_de(t.created_at,e.created_at)}),f1=Ln.getSelectors(),Eo=e=>`images/?${D0.stringify(e,{arrayFormat:"none"})}`,pi=_u.injectEndpoints({endpoints:e=>({listBoards:e.query({query:t=>({url:"boards/",params:t}),providesTags:t=>{const n=[{type:"Board",id:pt}];return t&&n.push(...t.items.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllBoards:e.query({query:()=>({url:"boards/",params:{all:!0}}),providesTags:t=>{const n=[{type:"Board",id:pt}];return t&&n.push(...t.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllImageNamesForBoard:e.query({query:t=>({url:`boards/${t}/image_names`}),providesTags:(t,n,r)=>[{type:"ImageNameList",id:r}],keepUnusedDataFor:0}),getBoardImagesTotal:e.query({query:t=>({url:Eo({board_id:t??"none",categories:Qr,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardImagesTotal",id:r??"none"}],transformResponse:t=>t.total}),getBoardAssetsTotal:e.query({query:t=>({url:Eo({board_id:t??"none",categories:Gl,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardAssetsTotal",id:r??"none"}],transformResponse:t=>t.total}),createBoard:e.mutation({query:t=>({url:"boards/",method:"POST",params:{board_name:t}}),invalidatesTags:[{type:"Board",id:pt}]}),updateBoard:e.mutation({query:({board_id:t,changes:n})=>({url:`boards/${t}`,method:"PATCH",body:n}),invalidatesTags:(t,n,r)=>[{type:"Board",id:r.board_id}]})})}),{useListBoardsQuery:XRe,useListAllBoardsQuery:QRe,useGetBoardImagesTotalQuery:YRe,useGetBoardAssetsTotalQuery:ZRe,useCreateBoardMutation:JRe,useUpdateBoardMutation:eIe,useListAllImageNamesForBoardQuery:tIe}=pi,pe=_u.injectEndpoints({endpoints:e=>({listImages:e.query({query:t=>({url:Eo(t),method:"GET"}),providesTags:(t,n,{board_id:r,categories:i})=>[{type:"ImageList",id:Eo({board_id:r,categories:i})}],serializeQueryArgs:({queryArgs:t})=>{const{board_id:n,categories:r}=t;return Eo({board_id:n,categories:r})},transformResponse(t){const{items:n}=t;return Ln.addMany(Ln.getInitialState(),n)},merge:(t,n)=>{Ln.addMany(t,f1.selectAll(n))},forceRefetch({currentArg:t,previousArg:n}){return(t==null?void 0:t.offset)!==(n==null?void 0:n.offset)},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;f1.selectAll(i).forEach(o=>{n(pe.util.upsertQueryData("getImageDTO",o.image_name,o))})}catch{}},keepUnusedDataFor:86400}),getIntermediatesCount:e.query({query:()=>({url:Eo({is_intermediate:!0})}),providesTags:["IntermediatesCount"],transformResponse:t=>t.total}),getImageDTO:e.query({query:t=>({url:`images/i/${t}`}),providesTags:(t,n,r)=>[{type:"Image",id:r}],keepUnusedDataFor:86400}),getImageMetadata:e.query({query:t=>({url:`images/i/${t}/metadata`}),providesTags:(t,n,r)=>[{type:"ImageMetadata",id:r}],keepUnusedDataFor:86400}),getImageMetadataFromFile:e.query({queryFn:async(t,n,r,i)=>{var o;if(t.shouldFetchMetadataFromApi){let s;const a=await i(`images/i/${t.image.image_name}/metadata`);if(a.data){const l=MD.safeParse((o=a.data)==null?void 0:o.metadata);l.success&&(s=l.data)}return{data:{metadata:s}}}else{const s=$f.get(),a=bg.get(),u=await sre.fetchBaseQuery({baseUrl:"",prepareHeaders:d=>(s&&d.set("Authorization",`Bearer ${s}`),a&&d.set("project-id",a),d),responseHandler:async d=>await d.blob()})(t.image.image_url,n,r);return{data:await Oue(u.data)}}},providesTags:(t,n,{image:r})=>[{type:"ImageMetadataFromFile",id:r.image_name}],keepUnusedDataFor:86400}),clearIntermediates:e.mutation({query:()=>({url:"images/clear-intermediates",method:"POST"}),invalidatesTags:["IntermediatesCount"]}),deleteImage:e.mutation({query:({image_name:t})=>({url:`images/i/${t}`,method:"DELETE"}),invalidatesTags:(t,n,{board_id:r})=>[{type:"BoardImagesTotal",id:r??"none"},{type:"BoardAssetsTotal",id:r??"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){const{image_name:i,board_id:o}=t,s={board_id:o??"none",categories:Uo(t)},a=n(pe.util.updateQueryData("listImages",s,l=>{Ln.removeOne(l,i)}));try{await r}catch{a.undo()}}}),deleteImages:e.mutation({query:({imageDTOs:t})=>({url:"images/delete",method:"POST",body:{image_names:t.map(r=>r.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{var o;const i=(o=r[0])==null?void 0:o.board_id;return[{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"}]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,o=v5(t,"image_name");i.deleted_images.forEach(s=>{const a=o[s];if(a){const l={board_id:a.board_id??"none",categories:Uo(a)};n(pe.util.updateQueryData("listImages",l,u=>{Ln.removeOne(u,s)}))}})}catch{}}}),changeImageIsIntermediate:e.mutation({query:({imageDTO:t,is_intermediate:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{is_intermediate:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,is_intermediate:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[];s.push(r(pe.util.updateQueryData("getImageDTO",t.image_name,l=>{Object.assign(l,{is_intermediate:n})})));const a=Uo(t);if(n)s.push(r(pe.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:a},l=>{Ln.removeOne(l,t.image_name)})));else{const l={board_id:t.board_id??"none",categories:a},u=pe.endpoints.listImages.select(l)(o()),{data:c}=Qr.includes(t.image_category)?pi.endpoints.getBoardImagesTotal.select(t.board_id??"none")(o()):pi.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=ju(u.data,t);(d||f)&&s.push(r(pe.util.updateQueryData("listImages",l,h=>{Ln.upsertOne(h,t)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),changeImageSessionId:e.mutation({query:({imageDTO:t,session_id:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{session_id:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,session_id:n},{dispatch:r,queryFulfilled:i}){const o=[];o.push(r(pe.util.updateQueryData("getImageDTO",t.image_name,s=>{Object.assign(s,{session_id:n})})));try{await i}catch{o.forEach(s=>s.undo())}}}),starImages:e.mutation({query:({imageDTOs:t})=>({url:"images/star",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=Uo(r[0]),o=r[0].board_id;return[{type:"ImageList",id:Eo({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=Uo(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(pe.util.updateQueryData("getImageDTO",c,b=>{b.starred=!0}));const d={board_id:l??"none",categories:a},f=pe.endpoints.listImages.select(d)(i()),{data:h}=Qr.includes(u.image_category)?pi.endpoints.getBoardImagesTotal.select(l??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=Ey?ju(f.data,u):!0;(p||m)&&n(pe.util.updateQueryData("listImages",d,b=>{Ln.upsertOne(b,{...u,starred:!0})}))})}catch{}}}),unstarImages:e.mutation({query:({imageDTOs:t})=>({url:"images/unstar",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=Uo(r[0]),o=r[0].board_id;return[{type:"ImageList",id:Eo({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=Uo(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(pe.util.updateQueryData("getImageDTO",c,b=>{b.starred=!1}));const d={board_id:l??"none",categories:a},f=pe.endpoints.listImages.select(d)(i()),{data:h}=Qr.includes(u.image_category)?pi.endpoints.getBoardImagesTotal.select(l??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=Ey?ju(f.data,u):!0;(p||m)&&n(pe.util.updateQueryData("listImages",d,b=>{Ln.upsertOne(b,{...u,starred:!1})}))})}catch{}}}),uploadImage:e.mutation({query:({file:t,image_category:n,is_intermediate:r,session_id:i,board_id:o,crop_visible:s})=>{const a=new FormData;return a.append("file",t),{url:"images/upload",method:"POST",body:a,params:{image_category:n,is_intermediate:r,session_id:i,board_id:o==="none"?void 0:o,crop_visible:s}}},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;if(i.is_intermediate)return;n(pe.util.upsertQueryData("getImageDTO",i.image_name,i));const o=Uo(i);n(pe.util.updateQueryData("listImages",{board_id:i.board_id??"none",categories:o},s=>{Ln.addOne(s,i)})),n(pe.util.invalidateTags([{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}]))}catch{}}}),deleteBoard:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE"}),invalidatesTags:()=>[{type:"Board",id:pt},{type:"ImageList",id:Eo({board_id:"none",categories:Qr})},{type:"ImageList",id:Eo({board_id:"none",categories:Gl})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_board_images:o}=i;o.forEach(l=>{n(pe.util.updateQueryData("getImageDTO",l,u=>{u.board_id=void 0}))});const s=[{categories:Qr},{categories:Gl}],a=o.map(l=>({id:l,changes:{board_id:void 0}}));s.forEach(l=>{n(pe.util.updateQueryData("listImages",l,u=>{Ln.updateMany(u,a)}))})}catch{}}}),deleteBoardAndImages:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE",params:{include_images:!0}}),invalidatesTags:()=>[{type:"Board",id:pt},{type:"ImageList",id:Eo({board_id:"none",categories:Qr})},{type:"ImageList",id:Eo({board_id:"none",categories:Gl})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_images:o}=i;[{categories:Qr},{categories:Gl}].forEach(a=>{n(pe.util.updateQueryData("listImages",a,l=>{Ln.removeMany(l,o)}))})}catch{}}}),addImageToBoard:e.mutation({query:({board_id:t,imageDTO:n})=>{const{image_name:r}=n;return{url:"board_images/",method:"POST",body:{board_id:t,image_name:r}}},invalidatesTags:(t,n,{board_id:r,imageDTO:i})=>[{type:"Board",id:r},{type:"BoardImagesTotal",id:r},{type:"BoardAssetsTotal",id:r},{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}],async onQueryStarted({board_id:t,imageDTO:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[],a=Uo(n);if(s.push(r(pe.util.updateQueryData("getImageDTO",n.image_name,l=>{l.board_id=t}))),!n.is_intermediate){s.push(r(pe.util.updateQueryData("listImages",{board_id:n.board_id??"none",categories:a},h=>{Ln.removeOne(h,n.image_name)})));const l={board_id:t??"none",categories:a},u=pe.endpoints.listImages.select(l)(o()),{data:c}=Qr.includes(n.image_category)?pi.endpoints.getBoardImagesTotal.select(n.board_id??"none")(o()):pi.endpoints.getBoardAssetsTotal.select(n.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=ju(u.data,n);(d||f)&&s.push(r(pe.util.updateQueryData("listImages",l,h=>{Ln.addOne(h,n)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),removeImageFromBoard:e.mutation({query:({imageDTO:t})=>{const{image_name:n}=t;return{url:"board_images/",method:"DELETE",body:{image_name:n}}},invalidatesTags:(t,n,{imageDTO:r})=>{const{board_id:i}=r;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({imageDTO:t},{dispatch:n,queryFulfilled:r,getState:i}){const o=Uo(t),s=[];s.push(n(pe.util.updateQueryData("getImageDTO",t.image_name,f=>{f.board_id=void 0}))),s.push(n(pe.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:o},f=>{Ln.removeOne(f,t.image_name)})));const a={board_id:"none",categories:o},l=pe.endpoints.listImages.select(a)(i()),{data:u}=Qr.includes(t.image_category)?pi.endpoints.getBoardImagesTotal.select(t.board_id??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(i()),c=l.data&&l.data.ids.length>=(u??0),d=ju(l.data,t);(c||d)&&s.push(n(pe.util.updateQueryData("listImages",a,f=>{Ln.upsertOne(f,t)})));try{await r}catch{s.forEach(f=>f.undo())}}}),addImagesToBoard:e.mutation({query:({board_id:t,imageDTOs:n})=>({url:"board_images/batch",method:"POST",body:{image_names:n.map(r=>r.image_name),board_id:t}}),invalidatesTags:(t,n,{imageDTOs:r,board_id:i})=>{var s;const o=(s=r[0])==null?void 0:s.board_id;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:o??"none"},{type:"BoardAssetsTotal",id:o??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({board_id:t,imageDTOs:n},{dispatch:r,queryFulfilled:i,getState:o}){try{const{data:s}=await i,{added_image_names:a}=s;a.forEach(l=>{r(pe.util.updateQueryData("getImageDTO",l,_=>{_.board_id=t}));const u=n.find(_=>_.image_name===l);if(!u)return;const c=Uo(u),d=u.board_id;r(pe.util.updateQueryData("listImages",{board_id:d??"none",categories:c},_=>{Ln.removeOne(_,u.image_name)}));const f={board_id:t,categories:c},h=pe.endpoints.listImages.select(f)(o()),{data:p}=Qr.includes(u.image_category)?pi.endpoints.getBoardImagesTotal.select(t??"none")(o()):pi.endpoints.getBoardAssetsTotal.select(t??"none")(o()),m=h.data&&h.data.ids.length>=(p??0),b=(p||0)>=Ey?ju(h.data,u):!0;(m||b)&&r(pe.util.updateQueryData("listImages",f,_=>{Ln.upsertOne(_,{...u,board_id:t})}))})}catch{}}}),removeImagesFromBoard:e.mutation({query:({imageDTOs:t})=>({url:"board_images/batch/delete",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{const i=[],o=[{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}];return t==null||t.removed_image_names.forEach(s=>{var l;const a=(l=r.find(u=>u.image_name===s))==null?void 0:l.board_id;!a||i.includes(a)||(o.push({type:"Board",id:a}),o.push({type:"BoardImagesTotal",id:a}),o.push({type:"BoardAssetsTotal",id:a}))}),o},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{removed_image_names:s}=o;s.forEach(a=>{n(pe.util.updateQueryData("getImageDTO",a,m=>{m.board_id=void 0}));const l=t.find(m=>m.image_name===a);if(!l)return;const u=Uo(l);n(pe.util.updateQueryData("listImages",{board_id:l.board_id??"none",categories:u},m=>{Ln.removeOne(m,l.image_name)}));const c={board_id:"none",categories:u},d=pe.endpoints.listImages.select(c)(i()),{data:f}=Qr.includes(l.image_category)?pi.endpoints.getBoardImagesTotal.select(l.board_id??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(l.board_id??"none")(i()),h=d.data&&d.data.ids.length>=(f??0),p=(f||0)>=Ey?ju(d.data,l):!0;(h||p)&&n(pe.util.updateQueryData("listImages",c,m=>{Ln.upsertOne(m,{...l,board_id:"none"})}))})}catch{}}})})}),{useGetIntermediatesCountQuery:nIe,useListImagesQuery:rIe,useLazyListImagesQuery:iIe,useGetImageDTOQuery:oIe,useGetImageMetadataQuery:sIe,useDeleteImageMutation:aIe,useDeleteImagesMutation:lIe,useUploadImageMutation:uIe,useClearIntermediatesMutation:cIe,useAddImagesToBoardMutation:dIe,useRemoveImagesFromBoardMutation:fIe,useAddImageToBoardMutation:hIe,useRemoveImageFromBoardMutation:pIe,useChangeImageIsIntermediateMutation:gIe,useChangeImageSessionIdMutation:mIe,useDeleteBoardAndImagesMutation:yIe,useDeleteBoardMutation:vIe,useStarImagesMutation:_Ie,useUnstarImagesMutation:bIe,useGetImageMetadataFromFileQuery:SIe}=pe,O$=Le("socket/socketConnected"),M$=Le("socket/appSocketConnected"),N$=Le("socket/socketDisconnected"),D$=Le("socket/appSocketDisconnected"),H5=Le("socket/socketSubscribed"),L$=Le("socket/appSocketSubscribed"),$$=Le("socket/socketUnsubscribed"),F$=Le("socket/appSocketUnsubscribed"),B$=Le("socket/socketInvocationStarted"),q5=Le("socket/appSocketInvocationStarted"),W5=Le("socket/socketInvocationComplete"),K5=Le("socket/appSocketInvocationComplete"),z$=Le("socket/socketInvocationError"),kb=Le("socket/appSocketInvocationError"),U$=Le("socket/socketGraphExecutionStateComplete"),j$=Le("socket/appSocketGraphExecutionStateComplete"),V$=Le("socket/socketGeneratorProgress"),X5=Le("socket/appSocketGeneratorProgress"),G$=Le("socket/socketModelLoadStarted"),Rde=Le("socket/appSocketModelLoadStarted"),H$=Le("socket/socketModelLoadCompleted"),Ide=Le("socket/appSocketModelLoadCompleted"),q$=Le("socket/socketSessionRetrievalError"),W$=Le("socket/appSocketSessionRetrievalError"),K$=Le("socket/socketInvocationRetrievalError"),X$=Le("socket/appSocketInvocationRetrievalError"),Q5=Le("controlNet/imageProcessed"),Id={none:{type:"none",get label(){return we.t("controlnet.none")},get description(){return we.t("controlnet.noneDescription")},default:{type:"none"}},canny_image_processor:{type:"canny_image_processor",get label(){return we.t("controlnet.canny")},get description(){return we.t("controlnet.cannyDescription")},default:{id:"canny_image_processor",type:"canny_image_processor",low_threshold:100,high_threshold:200}},content_shuffle_image_processor:{type:"content_shuffle_image_processor",get label(){return we.t("controlnet.contentShuffle")},get description(){return we.t("controlnet.contentShuffleDescription")},default:{id:"content_shuffle_image_processor",type:"content_shuffle_image_processor",detect_resolution:512,image_resolution:512,h:512,w:512,f:256}},hed_image_processor:{type:"hed_image_processor",get label(){return we.t("controlnet.hed")},get description(){return we.t("controlnet.hedDescription")},default:{id:"hed_image_processor",type:"hed_image_processor",detect_resolution:512,image_resolution:512,scribble:!1}},lineart_anime_image_processor:{type:"lineart_anime_image_processor",get label(){return we.t("controlnet.lineartAnime")},get description(){return we.t("controlnet.lineartAnimeDescription")},default:{id:"lineart_anime_image_processor",type:"lineart_anime_image_processor",detect_resolution:512,image_resolution:512}},lineart_image_processor:{type:"lineart_image_processor",get label(){return we.t("controlnet.lineart")},get description(){return we.t("controlnet.lineartDescription")},default:{id:"lineart_image_processor",type:"lineart_image_processor",detect_resolution:512,image_resolution:512,coarse:!1}},mediapipe_face_processor:{type:"mediapipe_face_processor",get label(){return we.t("controlnet.mediapipeFace")},get description(){return we.t("controlnet.mediapipeFaceDescription")},default:{id:"mediapipe_face_processor",type:"mediapipe_face_processor",max_faces:1,min_confidence:.5}},midas_depth_image_processor:{type:"midas_depth_image_processor",get label(){return we.t("controlnet.depthMidas")},get description(){return we.t("controlnet.depthMidasDescription")},default:{id:"midas_depth_image_processor",type:"midas_depth_image_processor",a_mult:2,bg_th:.1}},mlsd_image_processor:{type:"mlsd_image_processor",get label(){return we.t("controlnet.mlsd")},get description(){return we.t("controlnet.mlsdDescription")},default:{id:"mlsd_image_processor",type:"mlsd_image_processor",detect_resolution:512,image_resolution:512,thr_d:.1,thr_v:.1}},normalbae_image_processor:{type:"normalbae_image_processor",get label(){return we.t("controlnet.normalBae")},get description(){return we.t("controlnet.normalBaeDescription")},default:{id:"normalbae_image_processor",type:"normalbae_image_processor",detect_resolution:512,image_resolution:512}},openpose_image_processor:{type:"openpose_image_processor",get label(){return we.t("controlnet.openPose")},get description(){return we.t("controlnet.openPoseDescription")},default:{id:"openpose_image_processor",type:"openpose_image_processor",detect_resolution:512,image_resolution:512,hand_and_face:!1}},pidi_image_processor:{type:"pidi_image_processor",get label(){return we.t("controlnet.pidi")},get description(){return we.t("controlnet.pidiDescription")},default:{id:"pidi_image_processor",type:"pidi_image_processor",detect_resolution:512,image_resolution:512,scribble:!1,safe:!1}},zoe_depth_image_processor:{type:"zoe_depth_image_processor",get label(){return we.t("controlnet.depthZoe")},get description(){return we.t("controlnet.depthZoeDescription")},default:{id:"zoe_depth_image_processor",type:"zoe_depth_image_processor"}}},$y={canny:"canny_image_processor",mlsd:"mlsd_image_processor",depth:"midas_depth_image_processor",bae:"normalbae_image_processor",lineart:"lineart_image_processor",lineart_anime:"lineart_anime_image_processor",softedge:"hed_image_processor",shuffle:"content_shuffle_image_processor",openpose:"openpose_image_processor",mediapipe:"mediapipe_face_processor",pidi:"pidi_image_processor",zoe:"zoe_depth_image_processor"},N6={isEnabled:!0,model:null,weight:1,beginStepPct:0,endStepPct:1,controlMode:"balanced",resizeMode:"just_resize",controlImage:null,processedControlImage:null,processorType:"canny_image_processor",processorNode:Id.canny_image_processor.default,shouldAutoConfig:!0},Q$={adapterImage:null,model:null,weight:1,beginStepPct:0,endStepPct:1},DC={controlNets:{},isEnabled:!1,pendingControlImages:[],isIPAdapterEnabled:!1,ipAdapterInfo:{...Q$}},Y$=nr({name:"controlNet",initialState:DC,reducers:{isControlNetEnabledToggled:e=>{e.isEnabled=!e.isEnabled},controlNetAdded:(e,t)=>{const{controlNetId:n,controlNet:r}=t.payload;e.controlNets[n]={...r??N6,controlNetId:n}},controlNetDuplicated:(e,t)=>{const{sourceControlNetId:n,newControlNetId:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=Jn(i);o.controlNetId=r,e.controlNets[r]=o},controlNetAddedFromImage:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n]={...N6,controlNetId:n,controlImage:r}},controlNetRemoved:(e,t)=>{const{controlNetId:n}=t.payload;delete e.controlNets[n]},controlNetToggled:(e,t)=>{const{controlNetId:n}=t.payload,r=e.controlNets[n];r&&(r.isEnabled=!r.isEnabled)},controlNetImageChanged:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload,i=e.controlNets[n];i&&(i.controlImage=r,i.processedControlImage=null,r!==null&&i.processorType!=="none"&&e.pendingControlImages.push(n))},controlNetProcessedImageChanged:(e,t)=>{const{controlNetId:n,processedControlImage:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=r,e.pendingControlImages=e.pendingControlImages.filter(o=>o!==n))},controlNetModelChanged:(e,t)=>{const{controlNetId:n,model:r}=t.payload,i=e.controlNets[n];if(i&&(i.model=r,i.processedControlImage=null,i.shouldAutoConfig)){let o;for(const s in $y)if(r.model_name.includes(s)){o=$y[s];break}o?(i.processorType=o,i.processorNode=Id[o].default):(i.processorType="none",i.processorNode=Id.none.default)}},controlNetWeightChanged:(e,t)=>{const{controlNetId:n,weight:r}=t.payload,i=e.controlNets[n];i&&(i.weight=r)},controlNetBeginStepPctChanged:(e,t)=>{const{controlNetId:n,beginStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.beginStepPct=r)},controlNetEndStepPctChanged:(e,t)=>{const{controlNetId:n,endStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.endStepPct=r)},controlNetControlModeChanged:(e,t)=>{const{controlNetId:n,controlMode:r}=t.payload,i=e.controlNets[n];i&&(i.controlMode=r)},controlNetResizeModeChanged:(e,t)=>{const{controlNetId:n,resizeMode:r}=t.payload,i=e.controlNets[n];i&&(i.resizeMode=r)},controlNetProcessorParamsChanged:(e,t)=>{const{controlNetId:n,changes:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=i.processorNode;i.processorNode={...o,...r},i.shouldAutoConfig=!1},controlNetProcessorTypeChanged:(e,t)=>{const{controlNetId:n,processorType:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=null,i.processorType=r,i.processorNode=Id[r].default,i.shouldAutoConfig=!1)},controlNetAutoConfigToggled:(e,t)=>{var o;const{controlNetId:n}=t.payload,r=e.controlNets[n];if(!r)return;const i=!r.shouldAutoConfig;if(i){let s;for(const a in $y)if((o=r.model)!=null&&o.model_name.includes(a)){s=$y[a];break}s?(r.processorType=s,r.processorNode=Id[s].default):(r.processorType="none",r.processorNode=Id.none.default)}r.shouldAutoConfig=i},controlNetReset:()=>({...DC}),isIPAdapterEnableToggled:e=>{e.isIPAdapterEnabled=!e.isIPAdapterEnabled},ipAdapterImageChanged:(e,t)=>{e.ipAdapterInfo.adapterImage=t.payload},ipAdapterWeightChanged:(e,t)=>{e.ipAdapterInfo.weight=t.payload},ipAdapterModelChanged:(e,t)=>{e.ipAdapterInfo.model=t.payload},ipAdapterBeginStepPctChanged:(e,t)=>{e.ipAdapterInfo.beginStepPct=t.payload},ipAdapterEndStepPctChanged:(e,t)=>{e.ipAdapterInfo.endStepPct=t.payload},ipAdapterStateReset:e=>{e.isIPAdapterEnabled=!1,e.ipAdapterInfo={...Q$}}},extraReducers:e=>{e.addCase(Q5,(t,n)=>{const r=t.controlNets[n.payload.controlNetId];r&&r.controlImage!==null&&t.pendingControlImages.push(n.payload.controlNetId)}),e.addCase(kb,t=>{t.pendingControlImages=[]}),e.addMatcher(vD,t=>{t.pendingControlImages=[]}),e.addMatcher(pe.endpoints.deleteImage.matchFulfilled,(t,n)=>{const{image_name:r}=n.meta.arg.originalArgs;rs(t.controlNets,i=>{i.controlImage===r&&(i.controlImage=null,i.processedControlImage=null),i.processedControlImage===r&&(i.processedControlImage=null)})})}}),{isControlNetEnabledToggled:wIe,controlNetAdded:xIe,controlNetDuplicated:CIe,controlNetAddedFromImage:EIe,controlNetRemoved:Z$,controlNetImageChanged:Qc,controlNetProcessedImageChanged:Y5,controlNetToggled:TIe,controlNetModelChanged:D6,controlNetWeightChanged:AIe,controlNetBeginStepPctChanged:kIe,controlNetEndStepPctChanged:PIe,controlNetControlModeChanged:RIe,controlNetResizeModeChanged:IIe,controlNetProcessorParamsChanged:Ode,controlNetProcessorTypeChanged:Mde,controlNetReset:Nde,controlNetAutoConfigToggled:L6,isIPAdapterEnableToggled:OIe,ipAdapterImageChanged:Pb,ipAdapterWeightChanged:MIe,ipAdapterModelChanged:NIe,ipAdapterBeginStepPctChanged:DIe,ipAdapterEndStepPctChanged:LIe,ipAdapterStateReset:J$}=Y$.actions,Dde=Y$.reducer,Lde={imagesToDelete:[],isModalOpen:!1},eF=nr({name:"deleteImageModal",initialState:Lde,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToDeleteSelected:(e,t)=>{e.imagesToDelete=t.payload},imageDeletionCanceled:e=>{e.imagesToDelete=[],e.isModalOpen=!1}}}),{isModalOpenChanged:Z5,imagesToDeleteSelected:$de,imageDeletionCanceled:$Ie}=eF.actions,Fde=eF.reducer,tF={isEnabled:!1,maxPrompts:100,combinatorial:!0},Bde=tF,nF=nr({name:"dynamicPrompts",initialState:Bde,reducers:{maxPromptsChanged:(e,t)=>{e.maxPrompts=t.payload},maxPromptsReset:e=>{e.maxPrompts=tF.maxPrompts},combinatorialToggled:e=>{e.combinatorial=!e.combinatorial},isEnabledToggled:e=>{e.isEnabled=!e.isEnabled}}}),{isEnabledToggled:FIe,maxPromptsChanged:BIe,maxPromptsReset:zIe,combinatorialToggled:UIe}=nF.actions,zde=nF.reducer,rF={selection:[],shouldAutoSwitch:!0,autoAssignBoardOnClick:!0,autoAddBoardId:"none",galleryImageMinimumWidth:96,selectedBoardId:"none",galleryView:"images",boardSearchText:""},iF=nr({name:"gallery",initialState:rF,reducers:{imageSelected:(e,t)=>{e.selection=t.payload?[t.payload]:[]},selectionChanged:(e,t)=>{e.selection=t.payload},shouldAutoSwitchChanged:(e,t)=>{e.shouldAutoSwitch=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},autoAssignBoardOnClickChanged:(e,t)=>{e.autoAssignBoardOnClick=t.payload},boardIdSelected:(e,t)=>{e.selectedBoardId=t.payload,e.galleryView="images"},autoAddBoardIdChanged:(e,t)=>{if(!t.payload){e.autoAddBoardId="none";return}e.autoAddBoardId=t.payload},galleryViewChanged:(e,t)=>{e.galleryView=t.payload},boardSearchTextChanged:(e,t)=>{e.boardSearchText=t.payload}},extraReducers:e=>{e.addMatcher(jde,(t,n)=>{const r=n.meta.arg.originalArgs;r===t.selectedBoardId&&(t.selectedBoardId="none",t.galleryView="images"),r===t.autoAddBoardId&&(t.autoAddBoardId="none")}),e.addMatcher(pi.endpoints.listAllBoards.matchFulfilled,(t,n)=>{const r=n.payload;t.autoAddBoardId&&(r.map(i=>i.board_id).includes(t.autoAddBoardId)||(t.autoAddBoardId="none"))})}}),{imageSelected:ha,shouldAutoSwitchChanged:jIe,autoAssignBoardOnClickChanged:VIe,setGalleryImageMinimumWidth:GIe,boardIdSelected:LC,autoAddBoardIdChanged:HIe,galleryViewChanged:h1,selectionChanged:oF,boardSearchTextChanged:qIe}=iF.actions,Ude=iF.reducer,jde=os(pe.endpoints.deleteBoard.matchFulfilled,pe.endpoints.deleteBoardAndImages.matchFulfilled),$6={weight:.75},Vde={loras:{}},sF=nr({name:"lora",initialState:Vde,reducers:{loraAdded:(e,t)=>{const{model_name:n,id:r,base_model:i}=t.payload;e.loras[r]={id:r,model_name:n,base_model:i,...$6}},loraRecalled:(e,t)=>{const{model_name:n,id:r,base_model:i,weight:o}=t.payload;e.loras[r]={id:r,model_name:n,base_model:i,weight:o}},loraRemoved:(e,t)=>{const n=t.payload;delete e.loras[n]},lorasCleared:e=>{e.loras={}},loraWeightChanged:(e,t)=>{const{id:n,weight:r}=t.payload,i=e.loras[n];i&&(i.weight=r)},loraWeightReset:(e,t)=>{const n=t.payload,r=e.loras[n];r&&(r.weight=$6.weight)}}}),{loraAdded:WIe,loraRemoved:aF,loraWeightChanged:KIe,loraWeightReset:XIe,lorasCleared:QIe,loraRecalled:YIe}=sF.actions,Gde=sF.reducer;function as(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n{let t;const n=new Set,r=(l,u)=>{const c=typeof l=="function"?l(t):l;if(!Object.is(c,t)){const d=t;t=u??typeof c!="object"?c:Object.assign({},t,c),n.forEach(f=>f(t,d))}},i=()=>t,a={setState:r,getState:i,subscribe:l=>(n.add(l),()=>n.delete(l)),destroy:()=>{n.clear()}};return t=e(r,i,a),a},Hde=e=>e?F6(e):F6,{useSyncExternalStoreWithSelector:qde}=Rce;function lF(e,t=e.getState,n){const r=qde(e.subscribe,e.getState,e.getServerState||e.getState,t,n);return M.useDebugValue(r),r}const B6=(e,t)=>{const n=Hde(e),r=(i,o=t)=>lF(n,i,o);return Object.assign(r,n),r},Wde=(e,t)=>e?B6(e,t):B6;function yo(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[r,i]of e)if(!Object.is(i,t.get(r)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r=0;r{}};function Rb(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}L0.prototype=Rb.prototype={constructor:L0,on:function(e,t){var n=this._,r=Xde(e+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o0)for(var n=new Array(i),r=0,i,o;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),U6.hasOwnProperty(t)?{space:U6[t],local:e}:e}function Yde(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===$C&&t.documentElement.namespaceURI===$C?t.createElement(e):t.createElementNS(n,e)}}function Zde(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function uF(e){var t=Ib(e);return(t.local?Zde:Yde)(t)}function Jde(){}function J5(e){return e==null?Jde:function(){return this.querySelector(e)}}function efe(e){typeof e!="function"&&(e=J5(e));for(var t=this._groups,n=t.length,r=new Array(n),i=0;i=g&&(g=y+1);!(S=b[g])&&++g=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Efe(e){e||(e=Tfe);function t(d,f){return d&&f?e(d.__data__,f.__data__):!d-!f}for(var n=this._groups,r=n.length,i=new Array(r),o=0;ot?1:e>=t?0:NaN}function Afe(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function kfe(){return Array.from(this)}function Pfe(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?zfe:typeof t=="function"?jfe:Ufe)(e,t,n??"")):Hf(this.node(),e)}function Hf(e,t){return e.style.getPropertyValue(t)||pF(e).getComputedStyle(e,null).getPropertyValue(t)}function Gfe(e){return function(){delete this[e]}}function Hfe(e,t){return function(){this[e]=t}}function qfe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Wfe(e,t){return arguments.length>1?this.each((t==null?Gfe:typeof t=="function"?qfe:Hfe)(e,t)):this.node()[e]}function gF(e){return e.trim().split(/^|\s+/)}function eT(e){return e.classList||new mF(e)}function mF(e){this._node=e,this._names=gF(e.getAttribute("class")||"")}mF.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function yF(e,t){for(var n=eT(e),r=-1,i=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function She(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,o;n()=>e;function FC(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:o,x:s,y:a,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}FC.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Ihe(e){return!e.ctrlKey&&!e.button}function Ohe(){return this.parentNode}function Mhe(e,t){return t??{x:e.x,y:e.y}}function Nhe(){return navigator.maxTouchPoints||"ontouchstart"in this}function Dhe(){var e=Ihe,t=Ohe,n=Mhe,r=Nhe,i={},o=Rb("start","drag","end"),s=0,a,l,u,c,d=0;function f(v){v.on("mousedown.drag",h).filter(r).on("touchstart.drag",b).on("touchmove.drag",_,Rhe).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(v,S){if(!(c||!e.call(this,v,S))){var w=g(this,t.call(this,v,S),v,S,"mouse");w&&(Es(v.view).on("mousemove.drag",p,Mg).on("mouseup.drag",m,Mg),SF(v.view),dw(v),u=!1,a=v.clientX,l=v.clientY,w("start",v))}}function p(v){if(pf(v),!u){var S=v.clientX-a,w=v.clientY-l;u=S*S+w*w>d}i.mouse("drag",v)}function m(v){Es(v.view).on("mousemove.drag mouseup.drag",null),wF(v.view,u),pf(v),i.mouse("end",v)}function b(v,S){if(e.call(this,v,S)){var w=v.changedTouches,x=t.call(this,v,S),C=w.length,A,T;for(A=0;A>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?By(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?By(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=$he.exec(e))?new co(t[1],t[2],t[3],1):(t=Fhe.exec(e))?new co(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Bhe.exec(e))?By(t[1],t[2],t[3],t[4]):(t=zhe.exec(e))?By(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Uhe.exec(e))?K6(t[1],t[2]/100,t[3]/100,1):(t=jhe.exec(e))?K6(t[1],t[2]/100,t[3]/100,t[4]):j6.hasOwnProperty(e)?H6(j6[e]):e==="transparent"?new co(NaN,NaN,NaN,0):null}function H6(e){return new co(e>>16&255,e>>8&255,e&255,1)}function By(e,t,n,r){return r<=0&&(e=t=n=NaN),new co(e,t,n,r)}function Hhe(e){return e instanceof Lm||(e=Lg(e)),e?(e=e.rgb(),new co(e.r,e.g,e.b,e.opacity)):new co}function BC(e,t,n,r){return arguments.length===1?Hhe(e):new co(e,t,n,r??1)}function co(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}tT(co,BC,xF(Lm,{brighter(e){return e=e==null?g1:Math.pow(g1,e),new co(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ng:Math.pow(Ng,e),new co(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new co(wc(this.r),wc(this.g),wc(this.b),m1(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:q6,formatHex:q6,formatHex8:qhe,formatRgb:W6,toString:W6}));function q6(){return`#${fc(this.r)}${fc(this.g)}${fc(this.b)}`}function qhe(){return`#${fc(this.r)}${fc(this.g)}${fc(this.b)}${fc((isNaN(this.opacity)?1:this.opacity)*255)}`}function W6(){const e=m1(this.opacity);return`${e===1?"rgb(":"rgba("}${wc(this.r)}, ${wc(this.g)}, ${wc(this.b)}${e===1?")":`, ${e})`}`}function m1(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function wc(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function fc(e){return e=wc(e),(e<16?"0":"")+e.toString(16)}function K6(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ts(e,t,n,r)}function CF(e){if(e instanceof Ts)return new Ts(e.h,e.s,e.l,e.opacity);if(e instanceof Lm||(e=Lg(e)),!e)return new Ts;if(e instanceof Ts)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),o=Math.max(t,n,r),s=NaN,a=o-i,l=(o+i)/2;return a?(t===o?s=(n-r)/a+(n0&&l<1?0:s,new Ts(s,a,l,e.opacity)}function Whe(e,t,n,r){return arguments.length===1?CF(e):new Ts(e,t,n,r??1)}function Ts(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}tT(Ts,Whe,xF(Lm,{brighter(e){return e=e==null?g1:Math.pow(g1,e),new Ts(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ng:Math.pow(Ng,e),new Ts(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new co(fw(e>=240?e-240:e+120,i,r),fw(e,i,r),fw(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ts(X6(this.h),zy(this.s),zy(this.l),m1(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=m1(this.opacity);return`${e===1?"hsl(":"hsla("}${X6(this.h)}, ${zy(this.s)*100}%, ${zy(this.l)*100}%${e===1?")":`, ${e})`}`}}));function X6(e){return e=(e||0)%360,e<0?e+360:e}function zy(e){return Math.max(0,Math.min(1,e||0))}function fw(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const EF=e=>()=>e;function Khe(e,t){return function(n){return e+n*t}}function Xhe(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function Qhe(e){return(e=+e)==1?TF:function(t,n){return n-t?Xhe(t,n,e):EF(isNaN(t)?n:t)}}function TF(e,t){var n=t-e;return n?Khe(e,n):EF(isNaN(e)?t:e)}const Q6=function e(t){var n=Qhe(t);function r(i,o){var s=n((i=BC(i)).r,(o=BC(o)).r),a=n(i.g,o.g),l=n(i.b,o.b),u=TF(i.opacity,o.opacity);return function(c){return i.r=s(c),i.g=a(c),i.b=l(c),i.opacity=u(c),i+""}}return r.gamma=e,r}(1);function Il(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var zC=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hw=new RegExp(zC.source,"g");function Yhe(e){return function(){return e}}function Zhe(e){return function(t){return e(t)+""}}function Jhe(e,t){var n=zC.lastIndex=hw.lastIndex=0,r,i,o,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=zC.exec(e))&&(i=hw.exec(t));)(o=i.index)>n&&(o=t.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,l.push({i:s,x:Il(r,i)})),n=hw.lastIndex;return n180?c+=360:c-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:Il(u,c)})):c&&d.push(i(d)+"rotate("+c+r)}function a(u,c,d,f){u!==c?f.push({i:d.push(i(d)+"skewX(",null,r)-2,x:Il(u,c)}):c&&d.push(i(d)+"skewX("+c+r)}function l(u,c,d,f,h,p){if(u!==d||c!==f){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:Il(u,d)},{i:m-2,x:Il(c,f)})}else(d!==1||f!==1)&&h.push(i(h)+"scale("+d+","+f+")")}return function(u,c){var d=[],f=[];return u=e(u),c=e(c),o(u.translateX,u.translateY,c.translateX,c.translateY,d,f),s(u.rotate,c.rotate,d,f),a(u.skewX,c.skewX,d,f),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,f),u=c=null,function(h){for(var p=-1,m=f.length,b;++p=0&&e._call.call(void 0,t),e=e._next;--qf}function J6(){Lc=(v1=$g.now())+Ob,qf=op=0;try{upe()}finally{qf=0,dpe(),Lc=0}}function cpe(){var e=$g.now(),t=e-v1;t>PF&&(Ob-=t,v1=e)}function dpe(){for(var e,t=y1,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:y1=n);sp=e,jC(r)}function jC(e){if(!qf){op&&(op=clearTimeout(op));var t=e-Lc;t>24?(e<1/0&&(op=setTimeout(J6,e-$g.now()-Ob)),Fh&&(Fh=clearInterval(Fh))):(Fh||(v1=$g.now(),Fh=setInterval(cpe,PF)),qf=1,RF(J6))}}function e8(e,t,n){var r=new _1;return t=t==null?0:+t,r.restart(i=>{r.stop(),e(i+t)},t,n),r}var fpe=Rb("start","end","cancel","interrupt"),hpe=[],OF=0,t8=1,VC=2,$0=3,n8=4,GC=5,F0=6;function Mb(e,t,n,r,i,o){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;ppe(e,n,{name:t,index:r,group:i,on:fpe,tween:hpe,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:OF})}function rT(e,t){var n=Us(e,t);if(n.state>OF)throw new Error("too late; already scheduled");return n}function xa(e,t){var n=Us(e,t);if(n.state>$0)throw new Error("too late; already running");return n}function Us(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function ppe(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=IF(o,0,n.time);function o(u){n.state=t8,n.timer.restart(s,n.delay,n.time),n.delay<=u&&s(u-n.delay)}function s(u){var c,d,f,h;if(n.state!==t8)return l();for(c in r)if(h=r[c],h.name===n.name){if(h.state===$0)return e8(s);h.state===n8?(h.state=F0,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[c]):+cVC&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function Gpe(e,t,n){var r,i,o=Vpe(t)?rT:xa;return function(){var s=o(this,e),a=s.on;a!==r&&(i=(r=a).copy()).on(t,n),s.on=i}}function Hpe(e,t){var n=this._id;return arguments.length<2?Us(this.node(),n).on.on(e):this.each(Gpe(n,e,t))}function qpe(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Wpe(){return this.on("end.remove",qpe(this._id))}function Kpe(e){var t=this._name,n=this._id;typeof e!="function"&&(e=J5(e));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s()=>e;function _ge(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Wa(e,t,n){this.k=e,this.x=t,this.y=n}Wa.prototype={constructor:Wa,scale:function(e){return e===1?this:new Wa(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Wa(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ou=new Wa(1,0,0);Wa.prototype;function pw(e){e.stopImmediatePropagation()}function Bh(e){e.preventDefault(),e.stopImmediatePropagation()}function bge(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Sge(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function r8(){return this.__zoom||ou}function wge(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function xge(){return navigator.maxTouchPoints||"ontouchstart"in this}function Cge(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],o=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function Ege(){var e=bge,t=Sge,n=Cge,r=wge,i=xge,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=ape,u=Rb("start","zoom","end"),c,d,f,h=500,p=150,m=0,b=10;function _(E){E.property("__zoom",r8).on("wheel.zoom",C,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",T).filter(i).on("touchstart.zoom",k).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",N).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(E,P,D,B){var R=E.selection?E.selection():E;R.property("__zoom",r8),E!==R?S(E,P,D,B):R.interrupt().each(function(){w(this,arguments).event(B).start().zoom(null,typeof P=="function"?P.apply(this,arguments):P).end()})},_.scaleBy=function(E,P,D,B){_.scaleTo(E,function(){var R=this.__zoom.k,I=typeof P=="function"?P.apply(this,arguments):P;return R*I},D,B)},_.scaleTo=function(E,P,D,B){_.transform(E,function(){var R=t.apply(this,arguments),I=this.__zoom,O=D==null?v(R):typeof D=="function"?D.apply(this,arguments):D,F=I.invert(O),U=typeof P=="function"?P.apply(this,arguments):P;return n(g(y(I,U),O,F),R,s)},D,B)},_.translateBy=function(E,P,D,B){_.transform(E,function(){return n(this.__zoom.translate(typeof P=="function"?P.apply(this,arguments):P,typeof D=="function"?D.apply(this,arguments):D),t.apply(this,arguments),s)},null,B)},_.translateTo=function(E,P,D,B,R){_.transform(E,function(){var I=t.apply(this,arguments),O=this.__zoom,F=B==null?v(I):typeof B=="function"?B.apply(this,arguments):B;return n(ou.translate(F[0],F[1]).scale(O.k).translate(typeof P=="function"?-P.apply(this,arguments):-P,typeof D=="function"?-D.apply(this,arguments):-D),I,s)},B,R)};function y(E,P){return P=Math.max(o[0],Math.min(o[1],P)),P===E.k?E:new Wa(P,E.x,E.y)}function g(E,P,D){var B=P[0]-D[0]*E.k,R=P[1]-D[1]*E.k;return B===E.x&&R===E.y?E:new Wa(E.k,B,R)}function v(E){return[(+E[0][0]+ +E[1][0])/2,(+E[0][1]+ +E[1][1])/2]}function S(E,P,D,B){E.on("start.zoom",function(){w(this,arguments).event(B).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event(B).end()}).tween("zoom",function(){var R=this,I=arguments,O=w(R,I).event(B),F=t.apply(R,I),U=D==null?v(F):typeof D=="function"?D.apply(R,I):D,V=Math.max(F[1][0]-F[0][0],F[1][1]-F[0][1]),H=R.__zoom,Y=typeof P=="function"?P.apply(R,I):P,Q=l(H.invert(U).concat(V/H.k),Y.invert(U).concat(V/Y.k));return function(j){if(j===1)j=Y;else{var K=Q(j),te=V/K[2];j=new Wa(te,U[0]-K[0]*te,U[1]-K[1]*te)}O.zoom(null,j)}})}function w(E,P,D){return!D&&E.__zooming||new x(E,P)}function x(E,P){this.that=E,this.args=P,this.active=0,this.sourceEvent=null,this.extent=t.apply(E,P),this.taps=0}x.prototype={event:function(E){return E&&(this.sourceEvent=E),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(E,P){return this.mouse&&E!=="mouse"&&(this.mouse[1]=P.invert(this.mouse[0])),this.touch0&&E!=="touch"&&(this.touch0[1]=P.invert(this.touch0[0])),this.touch1&&E!=="touch"&&(this.touch1[1]=P.invert(this.touch1[0])),this.that.__zoom=P,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(E){var P=Es(this.that).datum();u.call(E,this.that,new _ge(E,{sourceEvent:this.sourceEvent,target:_,type:E,transform:this.that.__zoom,dispatch:u}),P)}};function C(E,...P){if(!e.apply(this,arguments))return;var D=w(this,P).event(E),B=this.__zoom,R=Math.max(o[0],Math.min(o[1],B.k*Math.pow(2,r.apply(this,arguments)))),I=Ys(E);if(D.wheel)(D.mouse[0][0]!==I[0]||D.mouse[0][1]!==I[1])&&(D.mouse[1]=B.invert(D.mouse[0]=I)),clearTimeout(D.wheel);else{if(B.k===R)return;D.mouse=[I,B.invert(I)],B0(this),D.start()}Bh(E),D.wheel=setTimeout(O,p),D.zoom("mouse",n(g(y(B,R),D.mouse[0],D.mouse[1]),D.extent,s));function O(){D.wheel=null,D.end()}}function A(E,...P){if(f||!e.apply(this,arguments))return;var D=E.currentTarget,B=w(this,P,!0).event(E),R=Es(E.view).on("mousemove.zoom",U,!0).on("mouseup.zoom",V,!0),I=Ys(E,D),O=E.clientX,F=E.clientY;SF(E.view),pw(E),B.mouse=[I,this.__zoom.invert(I)],B0(this),B.start();function U(H){if(Bh(H),!B.moved){var Y=H.clientX-O,Q=H.clientY-F;B.moved=Y*Y+Q*Q>m}B.event(H).zoom("mouse",n(g(B.that.__zoom,B.mouse[0]=Ys(H,D),B.mouse[1]),B.extent,s))}function V(H){R.on("mousemove.zoom mouseup.zoom",null),wF(H.view,B.moved),Bh(H),B.event(H).end()}}function T(E,...P){if(e.apply(this,arguments)){var D=this.__zoom,B=Ys(E.changedTouches?E.changedTouches[0]:E,this),R=D.invert(B),I=D.k*(E.shiftKey?.5:2),O=n(g(y(D,I),B,R),t.apply(this,P),s);Bh(E),a>0?Es(this).transition().duration(a).call(S,O,B,E):Es(this).call(_.transform,O,B,E)}}function k(E,...P){if(e.apply(this,arguments)){var D=E.touches,B=D.length,R=w(this,P,E.changedTouches.length===B).event(E),I,O,F,U;for(pw(E),O=0;O"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},LF=ul.error001();function hr(e,t){const n=M.useContext(Nb);if(n===null)throw new Error(LF);return lF(n,e,t)}const oi=()=>{const e=M.useContext(Nb);if(e===null)throw new Error(LF);return M.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Age=e=>e.userSelectionActive?"none":"all";function kge({position:e,children:t,className:n,style:r,...i}){const o=hr(Age),s=`${e}`.split("-");return Z.jsx("div",{className:as(["react-flow__panel",n,...s]),style:{...r,pointerEvents:o},...i,children:t})}function Pge({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:Z.jsx(kge,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:Z.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const Rge=({x:e,y:t,label:n,labelStyle:r={},labelShowBg:i=!0,labelBgStyle:o={},labelBgPadding:s=[2,4],labelBgBorderRadius:a=2,children:l,className:u,...c})=>{const d=M.useRef(null),[f,h]=M.useState({x:0,y:0,width:0,height:0}),p=as(["react-flow__edge-textwrapper",u]);return M.useEffect(()=>{if(d.current){const m=d.current.getBBox();h({x:m.x,y:m.y,width:m.width,height:m.height})}},[n]),typeof n>"u"||!n?null:Z.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:p,visibility:f.width?"visible":"hidden",...c,children:[i&&Z.jsx("rect",{width:f.width+2*s[0],x:-s[0],y:-s[1],height:f.height+2*s[1],className:"react-flow__edge-textbg",style:o,rx:a,ry:a}),Z.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:d,style:r,children:n}),l]})};var Ige=M.memo(Rge);const oT=e=>({width:e.offsetWidth,height:e.offsetHeight}),Wf=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),sT=(e={x:0,y:0},t)=>({x:Wf(e.x,t[0][0],t[1][0]),y:Wf(e.y,t[0][1],t[1][1])}),i8=(e,t,n)=>en?-Wf(Math.abs(e-n),1,50)/50:0,$F=(e,t)=>{const n=i8(e.x,35,t.width-35)*20,r=i8(e.y,35,t.height-35)*20;return[n,r]},FF=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},BF=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Fg=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),zF=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),o8=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),ZIe=(e,t)=>zF(BF(Fg(e),Fg(t))),HC=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},Oge=e=>Zo(e.width)&&Zo(e.height)&&Zo(e.x)&&Zo(e.y),Zo=e=>!isNaN(e)&&isFinite(e),Ur=Symbol.for("internals"),UF=["Enter"," ","Escape"],Mge=(e,t)=>{},Nge=e=>"nativeEvent"in e;function qC(e){var i,o;const t=Nge(e)?e.nativeEvent:e,n=((o=(i=t.composedPath)==null?void 0:i.call(t))==null?void 0:o[0])||e.target;return["INPUT","SELECT","TEXTAREA"].includes(n==null?void 0:n.nodeName)||(n==null?void 0:n.hasAttribute("contenteditable"))||!!(n!=null&&n.closest(".nokey"))}const jF=e=>"clientX"in e,su=(e,t)=>{var o,s;const n=jF(e),r=n?e.clientX:(o=e.touches)==null?void 0:o[0].clientX,i=n?e.clientY:(s=e.touches)==null?void 0:s[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:i-((t==null?void 0:t.top)??0)}},b1=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0},$m=({id:e,path:t,labelX:n,labelY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h=20})=>Z.jsxs(Z.Fragment,{children:[Z.jsx("path",{id:e,style:c,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:f}),h&&Z.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),i&&Zo(n)&&Zo(r)?Z.jsx(Ige,{x:n,y:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u}):null]});$m.displayName="BaseEdge";function zh(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(o=>o.id===e);i&&n(r,{...i})}}function VF({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(n-e)/2,o=n{const[b,_,y]=HF({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o});return Z.jsx($m,{path:b,labelX:_,labelY:y,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:m})});aT.displayName="SimpleBezierEdge";const a8={[Je.Left]:{x:-1,y:0},[Je.Right]:{x:1,y:0},[Je.Top]:{x:0,y:-1},[Je.Bottom]:{x:0,y:1}},Dge=({source:e,sourcePosition:t=Je.Bottom,target:n})=>t===Je.Left||t===Je.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Lge({source:e,sourcePosition:t=Je.Bottom,target:n,targetPosition:r=Je.Top,center:i,offset:o}){const s=a8[t],a=a8[r],l={x:e.x+s.x*o,y:e.y+s.y*o},u={x:n.x+a.x*o,y:n.y+a.y*o},c=Dge({source:l,sourcePosition:t,target:u}),d=c.x!==0?"x":"y",f=c[d];let h=[],p,m;const b={x:0,y:0},_={x:0,y:0},[y,g,v,S]=VF({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[d]*a[d]===-1){p=i.x||y,m=i.y||g;const x=[{x:p,y:l.y},{x:p,y:u.y}],C=[{x:l.x,y:m},{x:u.x,y:m}];s[d]===f?h=d==="x"?x:C:h=d==="x"?C:x}else{const x=[{x:l.x,y:u.y}],C=[{x:u.x,y:l.y}];if(d==="x"?h=s.x===f?C:x:h=s.y===f?x:C,t===r){const N=Math.abs(e[d]-n[d]);if(N<=o){const E=Math.min(o-1,o-N);s[d]===f?b[d]=(l[d]>e[d]?-1:1)*E:_[d]=(u[d]>n[d]?-1:1)*E}}if(t!==r){const N=d==="x"?"y":"x",E=s[d]===a[N],P=l[N]>u[N],D=l[N]=L?(p=(A.x+T.x)/2,m=h[0].y):(p=h[0].x,m=(A.y+T.y)/2)}return[[e,{x:l.x+b.x,y:l.y+b.y},...h,{x:u.x+_.x,y:u.y+_.y},n],p,m,v,S]}function $ge(e,t,n,r){const i=Math.min(l8(e,t)/2,l8(t,n)/2,r),{x:o,y:s}=t;if(e.x===o&&o===n.x||e.y===s&&s===n.y)return`L${o} ${s}`;if(e.y===s){const u=e.x{let g="";return y>0&&y{const[_,y,g]=WC({sourceX:e,sourceY:t,sourcePosition:d,targetX:n,targetY:r,targetPosition:f,borderRadius:m==null?void 0:m.borderRadius,offset:m==null?void 0:m.offset});return Z.jsx($m,{path:_,labelX:y,labelY:g,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:h,markerStart:p,interactionWidth:b})});Db.displayName="SmoothStepEdge";const lT=M.memo(e=>{var t;return Z.jsx(Db,{...e,pathOptions:M.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});lT.displayName="StepEdge";function Fge({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,o,s,a]=VF({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,o,s,a]}const uT=M.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})=>{const[p,m,b]=Fge({sourceX:e,sourceY:t,targetX:n,targetY:r});return Z.jsx($m,{path:p,labelX:m,labelY:b,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})});uT.displayName="StraightEdge";function Vy(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function u8({pos:e,x1:t,y1:n,x2:r,y2:i,c:o}){switch(e){case Je.Left:return[t-Vy(t-r,o),n];case Je.Right:return[t+Vy(r-t,o),n];case Je.Top:return[t,n-Vy(n-i,o)];case Je.Bottom:return[t,n+Vy(i-n,o)]}}function qF({sourceX:e,sourceY:t,sourcePosition:n=Je.Bottom,targetX:r,targetY:i,targetPosition:o=Je.Top,curvature:s=.25}){const[a,l]=u8({pos:n,x1:e,y1:t,x2:r,y2:i,c:s}),[u,c]=u8({pos:o,x1:r,y1:i,x2:e,y2:t,c:s}),[d,f,h,p]=GF({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:a,sourceControlY:l,targetControlX:u,targetControlY:c});return[`M${e},${t} C${a},${l} ${u},${c} ${r},${i}`,d,f,h,p]}const w1=M.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i=Je.Bottom,targetPosition:o=Je.Top,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,pathOptions:m,interactionWidth:b})=>{const[_,y,g]=qF({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o,curvature:m==null?void 0:m.curvature});return Z.jsx($m,{path:_,labelX:y,labelY:g,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:b})});w1.displayName="BezierEdge";const cT=M.createContext(null),Bge=cT.Provider;cT.Consumer;const zge=()=>M.useContext(cT),Uge=e=>"id"in e&&"source"in e&&"target"in e,WF=e=>"id"in e&&!("source"in e)&&!("target"in e),jge=(e,t,n)=>{if(!WF(e))return[];const r=n.filter(i=>i.source===e.id).map(i=>i.target);return t.filter(i=>r.includes(i.id))},Vge=(e,t,n)=>{if(!WF(e))return[];const r=n.filter(i=>i.target===e.id).map(i=>i.source);return t.filter(i=>r.includes(i.id))},Gge=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,KC=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,Hge=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),KF=(e,t)=>{if(!e.source||!e.target)return t;let n;return Uge(e)?n={...e}:n={...e,id:Gge(e)},Hge(n,t)?t:t.concat(n)},XF=({x:e,y:t},[n,r,i],o,[s,a])=>{const l={x:(e-n)/i,y:(t-r)/i};return o?{x:s*Math.round(l.x/s),y:a*Math.round(l.y/a)}:l},qge=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r}),mf=(e,t=[0,0])=>{if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(e.width??0)*t[0],r=(e.height??0)*t[1],i={x:e.position.x-n,y:e.position.y-r};return{...i,positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-n,y:e.positionAbsolute.y-r}:i}},dT=(e,t=[0,0])=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,i)=>{const{x:o,y:s}=mf(i,t).positionAbsolute;return BF(r,Fg({x:o,y:s,width:i.width||0,height:i.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return zF(n)},QF=(e,t,[n,r,i]=[0,0,1],o=!1,s=!1,a=[0,0])=>{const l={x:(t.x-n)/i,y:(t.y-r)/i,width:t.width/i,height:t.height/i},u=[];return e.forEach(c=>{const{width:d,height:f,selectable:h=!0,hidden:p=!1}=c;if(s&&!h||p)return!1;const{positionAbsolute:m}=mf(c,a),b={x:m.x,y:m.y,width:d||0,height:f||0},_=HC(l,b),y=typeof d>"u"||typeof f>"u"||d===null||f===null,g=o&&_>0,v=(d||0)*(f||0);(y||g||_>=v||c.dragging)&&u.push(c)}),u},fT=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},YF=(e,t,n,r,i,o=.1)=>{const s=t/(e.width*(1+o)),a=n/(e.height*(1+o)),l=Math.min(s,a),u=Wf(l,r,i),c=e.x+e.width/2,d=e.y+e.height/2,f=t/2-c*u,h=n/2-d*u;return[f,h,u]},Ju=(e,t=0)=>e.transition().duration(t);function c8(e,t,n,r){return(t[n]||[]).reduce((i,o)=>{var s,a;return`${e.id}-${o.id}-${n}`!==r&&i.push({id:o.id||null,type:n,nodeId:e.id,x:(((s=e.positionAbsolute)==null?void 0:s.x)??0)+o.x+o.width/2,y:(((a=e.positionAbsolute)==null?void 0:a.y)??0)+o.y+o.height/2}),i},[])}function Wge(e,t,n,r,i,o){const{x:s,y:a}=su(e),u=t.elementsFromPoint(s,a).find(p=>p.classList.contains("react-flow__handle"));if(u){const p=u.getAttribute("data-nodeid");if(p){const m=hT(void 0,u),b=u.getAttribute("data-handleid"),_=o({nodeId:p,id:b,type:m});if(_)return{handle:{id:b,type:m,nodeId:p,x:n.x,y:n.y},validHandleResult:_}}}let c=[],d=1/0;if(i.forEach(p=>{const m=Math.sqrt((p.x-n.x)**2+(p.y-n.y)**2);if(m<=r){const b=o(p);m<=d&&(mp.isValid),h=c.some(({handle:p})=>p.type==="target");return c.find(({handle:p,validHandleResult:m})=>h?p.type==="target":f?m.isValid:!0)||c[0]}const Kge={source:null,target:null,sourceHandle:null,targetHandle:null},ZF=()=>({handleDomNode:null,isValid:!1,connection:Kge,endHandle:null});function JF(e,t,n,r,i,o,s){const a=i==="target",l=s.querySelector(`.react-flow__handle[data-id="${e==null?void 0:e.nodeId}-${e==null?void 0:e.id}-${e==null?void 0:e.type}"]`),u={...ZF(),handleDomNode:l};if(l){const c=hT(void 0,l),d=l.getAttribute("data-nodeid"),f=l.getAttribute("data-handleid"),h=l.classList.contains("connectable"),p=l.classList.contains("connectableend"),m={source:a?d:n,sourceHandle:a?f:r,target:a?n:d,targetHandle:a?r:f};u.connection=m,h&&p&&(t===$c.Strict?a&&c==="source"||!a&&c==="target":d!==n||f!==r)&&(u.endHandle={nodeId:d,handleId:f,type:c},u.isValid=o(m))}return u}function Xge({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((i,o)=>{if(o[Ur]){const{handleBounds:s}=o[Ur];let a=[],l=[];s&&(a=c8(o,s,"source",`${t}-${n}-${r}`),l=c8(o,s,"target",`${t}-${n}-${r}`)),i.push(...a,...l)}return i},[])}function hT(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function gw(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function Qge(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function eB({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState:o,setState:s,isValidConnection:a,edgeUpdaterType:l,onEdgeUpdateEnd:u}){const c=FF(e.target),{connectionMode:d,domNode:f,autoPanOnConnect:h,connectionRadius:p,onConnectStart:m,panBy:b,getNodes:_,cancelConnection:y}=o();let g=0,v;const{x:S,y:w}=su(e),x=c==null?void 0:c.elementFromPoint(S,w),C=hT(l,x),A=f==null?void 0:f.getBoundingClientRect();if(!A||!C)return;let T,k=su(e,A),L=!1,N=null,E=!1,P=null;const D=Xge({nodes:_(),nodeId:n,handleId:t,handleType:C}),B=()=>{if(!h)return;const[O,F]=$F(k,A);b({x:O,y:F}),g=requestAnimationFrame(B)};s({connectionPosition:k,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:C,connectionStartHandle:{nodeId:n,handleId:t,type:C},connectionEndHandle:null}),m==null||m(e,{nodeId:n,handleId:t,handleType:C});function R(O){const{transform:F}=o();k=su(O,A);const{handle:U,validHandleResult:V}=Wge(O,c,XF(k,F,!1,[1,1]),p,D,H=>JF(H,d,n,t,i?"target":"source",a,c));if(v=U,L||(B(),L=!0),P=V.handleDomNode,N=V.connection,E=V.isValid,s({connectionPosition:v&&E?qge({x:v.x,y:v.y},F):k,connectionStatus:Qge(!!v,E),connectionEndHandle:V.endHandle}),!v&&!E&&!P)return gw(T);N.source!==N.target&&P&&(gw(T),T=P,P.classList.add("connecting","react-flow__handle-connecting"),P.classList.toggle("valid",E),P.classList.toggle("react-flow__handle-valid",E))}function I(O){var F,U;(v||P)&&N&&E&&(r==null||r(N)),(U=(F=o()).onConnectEnd)==null||U.call(F,O),l&&(u==null||u(O)),gw(T),y(),cancelAnimationFrame(g),L=!1,E=!1,N=null,P=null,c.removeEventListener("mousemove",R),c.removeEventListener("mouseup",I),c.removeEventListener("touchmove",R),c.removeEventListener("touchend",I)}c.addEventListener("mousemove",R),c.addEventListener("mouseup",I),c.addEventListener("touchmove",R),c.addEventListener("touchend",I)}const d8=()=>!0,Yge=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),Zge=(e,t,n)=>r=>{const{connectionStartHandle:i,connectionEndHandle:o,connectionClickStartHandle:s}=r;return{connecting:(i==null?void 0:i.nodeId)===e&&(i==null?void 0:i.handleId)===t&&(i==null?void 0:i.type)===n||(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.handleId)===t&&(o==null?void 0:o.type)===n,clickConnecting:(s==null?void 0:s.nodeId)===e&&(s==null?void 0:s.handleId)===t&&(s==null?void 0:s.type)===n}},tB=M.forwardRef(({type:e="source",position:t=Je.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:o=!0,id:s,onConnect:a,children:l,className:u,onMouseDown:c,onTouchStart:d,...f},h)=>{var A,T;const p=s||null,m=e==="target",b=oi(),_=zge(),{connectOnClick:y,noPanClassName:g}=hr(Yge,yo),{connecting:v,clickConnecting:S}=hr(Zge(_,p,e),yo);_||(T=(A=b.getState()).onError)==null||T.call(A,"010",ul.error010());const w=k=>{const{defaultEdgeOptions:L,onConnect:N,hasDefaultEdges:E}=b.getState(),P={...L,...k};if(E){const{edges:D,setEdges:B}=b.getState();B(KF(P,D))}N==null||N(P),a==null||a(P)},x=k=>{if(!_)return;const L=jF(k);i&&(L&&k.button===0||!L)&&eB({event:k,handleId:p,nodeId:_,onConnect:w,isTarget:m,getState:b.getState,setState:b.setState,isValidConnection:n||b.getState().isValidConnection||d8}),L?c==null||c(k):d==null||d(k)},C=k=>{const{onClickConnectStart:L,onClickConnectEnd:N,connectionClickStartHandle:E,connectionMode:P,isValidConnection:D}=b.getState();if(!_||!E&&!i)return;if(!E){L==null||L(k,{nodeId:_,handleId:p,handleType:e}),b.setState({connectionClickStartHandle:{nodeId:_,type:e,handleId:p}});return}const B=FF(k.target),R=n||D||d8,{connection:I,isValid:O}=JF({nodeId:_,id:p,type:e},P,E.nodeId,E.handleId||null,E.type,R,B);O&&w(I),N==null||N(k),b.setState({connectionClickStartHandle:null})};return Z.jsx("div",{"data-handleid":p,"data-nodeid":_,"data-handlepos":t,"data-id":`${_}-${p}-${e}`,className:as(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,u,{source:!m,target:m,connectable:r,connectablestart:i,connectableend:o,connecting:S,connectionindicator:r&&(i&&!v||o&&v)}]),onMouseDown:x,onTouchStart:x,onClick:y?C:void 0,ref:h,...f,children:l})});tB.displayName="Handle";var x1=M.memo(tB);const nB=({data:e,isConnectable:t,targetPosition:n=Je.Top,sourcePosition:r=Je.Bottom})=>Z.jsxs(Z.Fragment,{children:[Z.jsx(x1,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,Z.jsx(x1,{type:"source",position:r,isConnectable:t})]});nB.displayName="DefaultNode";var XC=M.memo(nB);const rB=({data:e,isConnectable:t,sourcePosition:n=Je.Bottom})=>Z.jsxs(Z.Fragment,{children:[e==null?void 0:e.label,Z.jsx(x1,{type:"source",position:n,isConnectable:t})]});rB.displayName="InputNode";var iB=M.memo(rB);const oB=({data:e,isConnectable:t,targetPosition:n=Je.Top})=>Z.jsxs(Z.Fragment,{children:[Z.jsx(x1,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]});oB.displayName="OutputNode";var sB=M.memo(oB);const pT=()=>null;pT.displayName="GroupNode";const Jge=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected)}),Gy=e=>e.id;function eme(e,t){return yo(e.selectedNodes.map(Gy),t.selectedNodes.map(Gy))&&yo(e.selectedEdges.map(Gy),t.selectedEdges.map(Gy))}const aB=M.memo(({onSelectionChange:e})=>{const t=oi(),{selectedNodes:n,selectedEdges:r}=hr(Jge,eme);return M.useEffect(()=>{var o,s;const i={nodes:n,edges:r};e==null||e(i),(s=(o=t.getState()).onSelectionChange)==null||s.call(o,i)},[n,r,e]),null});aB.displayName="SelectionListener";const tme=e=>!!e.onSelectionChange;function nme({onSelectionChange:e}){const t=hr(tme);return e||t?Z.jsx(aB,{onSelectionChange:e}):null}const rme=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset});function _d(e,t){M.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function kt(e,t,n){M.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const ime=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:i,onConnectStart:o,onConnectEnd:s,onClickConnectStart:a,onClickConnectEnd:l,nodesDraggable:u,nodesConnectable:c,nodesFocusable:d,edgesFocusable:f,edgesUpdatable:h,elevateNodesOnSelect:p,minZoom:m,maxZoom:b,nodeExtent:_,onNodesChange:y,onEdgesChange:g,elementsSelectable:v,connectionMode:S,snapGrid:w,snapToGrid:x,translateExtent:C,connectOnClick:A,defaultEdgeOptions:T,fitView:k,fitViewOptions:L,onNodesDelete:N,onEdgesDelete:E,onNodeDrag:P,onNodeDragStart:D,onNodeDragStop:B,onSelectionDrag:R,onSelectionDragStart:I,onSelectionDragStop:O,noPanClassName:F,nodeOrigin:U,rfId:V,autoPanOnConnect:H,autoPanOnNodeDrag:Y,onError:Q,connectionRadius:j,isValidConnection:K})=>{const{setNodes:te,setEdges:oe,setDefaultNodesAndEdges:me,setMinZoom:le,setMaxZoom:ht,setTranslateExtent:nt,setNodeExtent:$e,reset:ct}=hr(rme,yo),Pe=oi();return M.useEffect(()=>{const qt=r==null?void 0:r.map(Sr=>({...Sr,...T}));return me(n,qt),()=>{ct()}},[]),kt("defaultEdgeOptions",T,Pe.setState),kt("connectionMode",S,Pe.setState),kt("onConnect",i,Pe.setState),kt("onConnectStart",o,Pe.setState),kt("onConnectEnd",s,Pe.setState),kt("onClickConnectStart",a,Pe.setState),kt("onClickConnectEnd",l,Pe.setState),kt("nodesDraggable",u,Pe.setState),kt("nodesConnectable",c,Pe.setState),kt("nodesFocusable",d,Pe.setState),kt("edgesFocusable",f,Pe.setState),kt("edgesUpdatable",h,Pe.setState),kt("elementsSelectable",v,Pe.setState),kt("elevateNodesOnSelect",p,Pe.setState),kt("snapToGrid",x,Pe.setState),kt("snapGrid",w,Pe.setState),kt("onNodesChange",y,Pe.setState),kt("onEdgesChange",g,Pe.setState),kt("connectOnClick",A,Pe.setState),kt("fitViewOnInit",k,Pe.setState),kt("fitViewOnInitOptions",L,Pe.setState),kt("onNodesDelete",N,Pe.setState),kt("onEdgesDelete",E,Pe.setState),kt("onNodeDrag",P,Pe.setState),kt("onNodeDragStart",D,Pe.setState),kt("onNodeDragStop",B,Pe.setState),kt("onSelectionDrag",R,Pe.setState),kt("onSelectionDragStart",I,Pe.setState),kt("onSelectionDragStop",O,Pe.setState),kt("noPanClassName",F,Pe.setState),kt("nodeOrigin",U,Pe.setState),kt("rfId",V,Pe.setState),kt("autoPanOnConnect",H,Pe.setState),kt("autoPanOnNodeDrag",Y,Pe.setState),kt("onError",Q,Pe.setState),kt("connectionRadius",j,Pe.setState),kt("isValidConnection",K,Pe.setState),_d(e,te),_d(t,oe),_d(m,le),_d(b,ht),_d(C,nt),_d(_,$e),null},f8={display:"none"},ome={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},lB="react-flow__node-desc",uB="react-flow__edge-desc",sme="react-flow__aria-live",ame=e=>e.ariaLiveMessage;function lme({rfId:e}){const t=hr(ame);return Z.jsx("div",{id:`${sme}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:ome,children:t})}function ume({rfId:e,disableKeyboardA11y:t}){return Z.jsxs(Z.Fragment,{children:[Z.jsxs("div",{id:`${lB}-${e}`,style:f8,children:["Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "]}),Z.jsx("div",{id:`${uB}-${e}`,style:f8,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&Z.jsx(lme,{rfId:e})]})}const cme=typeof document<"u"?document:null;var Bg=(e=null,t={target:cme})=>{const[n,r]=M.useState(!1),i=M.useRef(!1),o=M.useRef(new Set([])),[s,a]=M.useMemo(()=>{if(e!==null){const u=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.split("+")),c=u.reduce((d,f)=>d.concat(...f),[]);return[u,c]}return[[],[]]},[e]);return M.useEffect(()=>{var l,u;if(e!==null){const c=h=>{if(i.current=h.ctrlKey||h.metaKey||h.shiftKey,!i.current&&qC(h))return!1;const p=p8(h.code,a);o.current.add(h[p]),h8(s,o.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if(!i.current&&qC(h))return!1;const p=p8(h.code,a);h8(s,o.current,!0)?(r(!1),o.current.clear()):o.current.delete(h[p]),h.key==="Meta"&&o.current.clear(),i.current=!1},f=()=>{o.current.clear(),r(!1)};return(l=t==null?void 0:t.target)==null||l.addEventListener("keydown",c),(u=t==null?void 0:t.target)==null||u.addEventListener("keyup",d),window.addEventListener("blur",f),()=>{var h,p;(h=t==null?void 0:t.target)==null||h.removeEventListener("keydown",c),(p=t==null?void 0:t.target)==null||p.removeEventListener("keyup",d),window.removeEventListener("blur",f)}}},[e,r]),n};function h8(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(i=>t.has(i)))}function p8(e,t){return t.includes(e)?"code":"key"}function cB(e,t,n,r){var s,a;if(!e.parentNode)return n;const i=t.get(e.parentNode),o=mf(i,r);return cB(i,t,{x:(n.x??0)+o.x,y:(n.y??0)+o.y,z:(((s=i[Ur])==null?void 0:s.z)??0)>(n.z??0)?((a=i[Ur])==null?void 0:a.z)??0:n.z??0},r)}function dB(e,t,n){e.forEach(r=>{var i;if(r.parentNode&&!e.has(r.parentNode))throw new Error(`Parent node ${r.parentNode} not found`);if(r.parentNode||n!=null&&n[r.id]){const{x:o,y:s,z:a}=cB(r,e,{...r.position,z:((i=r[Ur])==null?void 0:i.z)??0},t);r.positionAbsolute={x:o,y:s},r[Ur].z=a,n!=null&&n[r.id]&&(r[Ur].isParent=!0)}})}function mw(e,t,n,r){const i=new Map,o={},s=r?1e3:0;return e.forEach(a=>{var d;const l=(Zo(a.zIndex)?a.zIndex:0)+(a.selected?s:0),u=t.get(a.id),c={width:u==null?void 0:u.width,height:u==null?void 0:u.height,...a,positionAbsolute:{x:a.position.x,y:a.position.y}};a.parentNode&&(c.parentNode=a.parentNode,o[a.parentNode]=!0),Object.defineProperty(c,Ur,{enumerable:!1,value:{handleBounds:(d=u==null?void 0:u[Ur])==null?void 0:d.handleBounds,z:l}}),i.set(a.id,c)}),dB(i,n,o),i}function fB(e,t={}){const{getNodes:n,width:r,height:i,minZoom:o,maxZoom:s,d3Zoom:a,d3Selection:l,fitViewOnInitDone:u,fitViewOnInit:c,nodeOrigin:d}=e(),f=t.initial&&!u&&c;if(a&&l&&(f||!t.initial)){const p=n().filter(b=>{var y;const _=t.includeHiddenNodes?b.width&&b.height:!b.hidden;return(y=t.nodes)!=null&&y.length?_&&t.nodes.some(g=>g.id===b.id):_}),m=p.every(b=>b.width&&b.height);if(p.length>0&&m){const b=dT(p,d),[_,y,g]=YF(b,r,i,t.minZoom??o,t.maxZoom??s,t.padding??.1),v=ou.translate(_,y).scale(g);return typeof t.duration=="number"&&t.duration>0?a.transform(Ju(l,t.duration),v):a.transform(l,v),!0}}return!1}function dme(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[Ur]:r[Ur],selected:n.selected})}),new Map(t)}function fme(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return r&&(n.selected=r.selected),n})}function Hy({changedNodes:e,changedEdges:t,get:n,set:r}){const{nodeInternals:i,edges:o,onNodesChange:s,onEdgesChange:a,hasDefaultNodes:l,hasDefaultEdges:u}=n();e!=null&&e.length&&(l&&r({nodeInternals:dme(e,i)}),s==null||s(e)),t!=null&&t.length&&(u&&r({edges:fme(t,o)}),a==null||a(t))}const bd=()=>{},hme={zoomIn:bd,zoomOut:bd,zoomTo:bd,getZoom:()=>1,setViewport:bd,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:bd,fitBounds:bd,project:e=>e,viewportInitialized:!1},pme=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),gme=()=>{const e=oi(),{d3Zoom:t,d3Selection:n}=hr(pme,yo);return M.useMemo(()=>n&&t?{zoomIn:i=>t.scaleBy(Ju(n,i==null?void 0:i.duration),1.2),zoomOut:i=>t.scaleBy(Ju(n,i==null?void 0:i.duration),1/1.2),zoomTo:(i,o)=>t.scaleTo(Ju(n,o==null?void 0:o.duration),i),getZoom:()=>e.getState().transform[2],setViewport:(i,o)=>{const[s,a,l]=e.getState().transform,u=ou.translate(i.x??s,i.y??a).scale(i.zoom??l);t.transform(Ju(n,o==null?void 0:o.duration),u)},getViewport:()=>{const[i,o,s]=e.getState().transform;return{x:i,y:o,zoom:s}},fitView:i=>fB(e.getState,i),setCenter:(i,o,s)=>{const{width:a,height:l,maxZoom:u}=e.getState(),c=typeof(s==null?void 0:s.zoom)<"u"?s.zoom:u,d=a/2-i*c,f=l/2-o*c,h=ou.translate(d,f).scale(c);t.transform(Ju(n,s==null?void 0:s.duration),h)},fitBounds:(i,o)=>{const{width:s,height:a,minZoom:l,maxZoom:u}=e.getState(),[c,d,f]=YF(i,s,a,l,u,(o==null?void 0:o.padding)??.1),h=ou.translate(c,d).scale(f);t.transform(Ju(n,o==null?void 0:o.duration),h)},project:i=>{const{transform:o,snapToGrid:s,snapGrid:a}=e.getState();return XF(i,o,s,a)},viewportInitialized:!0}:hme,[t,n])};function hB(){const e=gme(),t=oi(),n=M.useCallback(()=>t.getState().getNodes().map(m=>({...m})),[]),r=M.useCallback(m=>t.getState().nodeInternals.get(m),[]),i=M.useCallback(()=>{const{edges:m=[]}=t.getState();return m.map(b=>({...b}))},[]),o=M.useCallback(m=>{const{edges:b=[]}=t.getState();return b.find(_=>_.id===m)},[]),s=M.useCallback(m=>{const{getNodes:b,setNodes:_,hasDefaultNodes:y,onNodesChange:g}=t.getState(),v=b(),S=typeof m=="function"?m(v):m;if(y)_(S);else if(g){const w=S.length===0?v.map(x=>({type:"remove",id:x.id})):S.map(x=>({item:x,type:"reset"}));g(w)}},[]),a=M.useCallback(m=>{const{edges:b=[],setEdges:_,hasDefaultEdges:y,onEdgesChange:g}=t.getState(),v=typeof m=="function"?m(b):m;if(y)_(v);else if(g){const S=v.length===0?b.map(w=>({type:"remove",id:w.id})):v.map(w=>({item:w,type:"reset"}));g(S)}},[]),l=M.useCallback(m=>{const b=Array.isArray(m)?m:[m],{getNodes:_,setNodes:y,hasDefaultNodes:g,onNodesChange:v}=t.getState();if(g){const w=[..._(),...b];y(w)}else if(v){const S=b.map(w=>({item:w,type:"add"}));v(S)}},[]),u=M.useCallback(m=>{const b=Array.isArray(m)?m:[m],{edges:_=[],setEdges:y,hasDefaultEdges:g,onEdgesChange:v}=t.getState();if(g)y([..._,...b]);else if(v){const S=b.map(w=>({item:w,type:"add"}));v(S)}},[]),c=M.useCallback(()=>{const{getNodes:m,edges:b=[],transform:_}=t.getState(),[y,g,v]=_;return{nodes:m().map(S=>({...S})),edges:b.map(S=>({...S})),viewport:{x:y,y:g,zoom:v}}},[]),d=M.useCallback(({nodes:m,edges:b})=>{const{nodeInternals:_,getNodes:y,edges:g,hasDefaultNodes:v,hasDefaultEdges:S,onNodesDelete:w,onEdgesDelete:x,onNodesChange:C,onEdgesChange:A}=t.getState(),T=(m||[]).map(P=>P.id),k=(b||[]).map(P=>P.id),L=y().reduce((P,D)=>{const B=!T.includes(D.id)&&D.parentNode&&P.find(I=>I.id===D.parentNode);return(typeof D.deletable=="boolean"?D.deletable:!0)&&(T.includes(D.id)||B)&&P.push(D),P},[]),N=g.filter(P=>typeof P.deletable=="boolean"?P.deletable:!0),E=N.filter(P=>k.includes(P.id));if(L||E){const P=fT(L,N),D=[...E,...P],B=D.reduce((R,I)=>(R.includes(I.id)||R.push(I.id),R),[]);if((S||v)&&(S&&t.setState({edges:g.filter(R=>!B.includes(R.id))}),v&&(L.forEach(R=>{_.delete(R.id)}),t.setState({nodeInternals:new Map(_)}))),B.length>0&&(x==null||x(D),A&&A(B.map(R=>({id:R,type:"remove"})))),L.length>0&&(w==null||w(L),C)){const R=L.map(I=>({id:I.id,type:"remove"}));C(R)}}},[]),f=M.useCallback(m=>{const b=Oge(m),_=b?null:t.getState().nodeInternals.get(m.id);return[b?m:o8(_),_,b]},[]),h=M.useCallback((m,b=!0,_)=>{const[y,g,v]=f(m);return y?(_||t.getState().getNodes()).filter(S=>{if(!v&&(S.id===g.id||!S.positionAbsolute))return!1;const w=o8(S),x=HC(w,y);return b&&x>0||x>=m.width*m.height}):[]},[]),p=M.useCallback((m,b,_=!0)=>{const[y]=f(m);if(!y)return!1;const g=HC(y,b);return _&&g>0||g>=m.width*m.height},[]);return M.useMemo(()=>({...e,getNodes:n,getNode:r,getEdges:i,getEdge:o,setNodes:s,setEdges:a,addNodes:l,addEdges:u,toObject:c,deleteElements:d,getIntersectingNodes:h,isNodeIntersecting:p}),[e,n,r,i,o,s,a,l,u,c,d,h,p])}var mme=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=oi(),{deleteElements:r}=hB(),i=Bg(e),o=Bg(t);M.useEffect(()=>{if(i){const{edges:s,getNodes:a}=n.getState(),l=a().filter(c=>c.selected),u=s.filter(c=>c.selected);r({nodes:l,edges:u}),n.setState({nodesSelectionActive:!1})}},[i]),M.useEffect(()=>{n.setState({multiSelectionActive:o})},[o])};function yme(e){const t=oi();M.useEffect(()=>{let n;const r=()=>{var o,s;if(!e.current)return;const i=oT(e.current);(i.height===0||i.width===0)&&((s=(o=t.getState()).onError)==null||s.call(o,"004",ul.error004())),t.setState({width:i.width||500,height:i.height||500})};return r(),window.addEventListener("resize",r),e.current&&(n=new ResizeObserver(()=>r()),n.observe(e.current)),()=>{window.removeEventListener("resize",r),n&&e.current&&n.unobserve(e.current)}},[])}const gT={position:"absolute",width:"100%",height:"100%",top:0,left:0},vme=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,qy=e=>({x:e.x,y:e.y,zoom:e.k}),Sd=(e,t)=>e.target.closest(`.${t}`),g8=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),m8=e=>{const t=e.ctrlKey&&b1()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},_me=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),bme=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:i=!0,zoomOnPinch:o=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=hc.Free,zoomOnDoubleClick:u=!0,elementsSelectable:c,panOnDrag:d=!0,defaultViewport:f,translateExtent:h,minZoom:p,maxZoom:m,zoomActivationKeyCode:b,preventScrolling:_=!0,children:y,noWheelClassName:g,noPanClassName:v})=>{const S=M.useRef(),w=oi(),x=M.useRef(!1),C=M.useRef(!1),A=M.useRef(null),T=M.useRef({x:0,y:0,zoom:0}),{d3Zoom:k,d3Selection:L,d3ZoomHandler:N,userSelectionActive:E}=hr(_me,yo),P=Bg(b),D=M.useRef(0),B=M.useRef(!1),R=M.useRef();return yme(A),M.useEffect(()=>{if(A.current){const I=A.current.getBoundingClientRect(),O=Ege().scaleExtent([p,m]).translateExtent(h),F=Es(A.current).call(O),U=ou.translate(f.x,f.y).scale(Wf(f.zoom,p,m)),V=[[0,0],[I.width,I.height]],H=O.constrain()(U,V,h);O.transform(F,H),O.wheelDelta(m8),w.setState({d3Zoom:O,d3Selection:F,d3ZoomHandler:F.on("wheel.zoom"),transform:[H.x,H.y,H.k],domNode:A.current.closest(".react-flow")})}},[]),M.useEffect(()=>{L&&k&&(s&&!P&&!E?L.on("wheel.zoom",I=>{if(Sd(I,g))return!1;I.preventDefault(),I.stopImmediatePropagation();const O=L.property("__zoom").k||1,F=b1();if(I.ctrlKey&&o&&F){const te=Ys(I),oe=m8(I),me=O*Math.pow(2,oe);k.scaleTo(L,me,te,I);return}const U=I.deltaMode===1?20:1;let V=l===hc.Vertical?0:I.deltaX*U,H=l===hc.Horizontal?0:I.deltaY*U;!F&&I.shiftKey&&l!==hc.Vertical&&(V=I.deltaY*U,H=0),k.translateBy(L,-(V/O)*a,-(H/O)*a,{internal:!0});const Y=qy(L.property("__zoom")),{onViewportChangeStart:Q,onViewportChange:j,onViewportChangeEnd:K}=w.getState();clearTimeout(R.current),B.current||(B.current=!0,t==null||t(I,Y),Q==null||Q(Y)),B.current&&(e==null||e(I,Y),j==null||j(Y),R.current=setTimeout(()=>{n==null||n(I,Y),K==null||K(Y),B.current=!1},150))},{passive:!1}):typeof N<"u"&&L.on("wheel.zoom",function(I,O){if(!_||Sd(I,g))return null;I.preventDefault(),N.call(this,I,O)},{passive:!1}))},[E,s,l,L,k,N,P,o,_,g,t,e,n]),M.useEffect(()=>{k&&k.on("start",I=>{var U,V;if(!I.sourceEvent||I.sourceEvent.internal)return null;D.current=(U=I.sourceEvent)==null?void 0:U.button;const{onViewportChangeStart:O}=w.getState(),F=qy(I.transform);x.current=!0,T.current=F,((V=I.sourceEvent)==null?void 0:V.type)==="mousedown"&&w.setState({paneDragging:!0}),O==null||O(F),t==null||t(I.sourceEvent,F)})},[k,t]),M.useEffect(()=>{k&&(E&&!x.current?k.on("zoom",null):E||k.on("zoom",I=>{var F;const{onViewportChange:O}=w.getState();if(w.setState({transform:[I.transform.x,I.transform.y,I.transform.k]}),C.current=!!(r&&g8(d,D.current??0)),(e||O)&&!((F=I.sourceEvent)!=null&&F.internal)){const U=qy(I.transform);O==null||O(U),e==null||e(I.sourceEvent,U)}}))},[E,k,e,d,r]),M.useEffect(()=>{k&&k.on("end",I=>{if(!I.sourceEvent||I.sourceEvent.internal)return null;const{onViewportChangeEnd:O}=w.getState();if(x.current=!1,w.setState({paneDragging:!1}),r&&g8(d,D.current??0)&&!C.current&&r(I.sourceEvent),C.current=!1,(n||O)&&vme(T.current,I.transform)){const F=qy(I.transform);T.current=F,clearTimeout(S.current),S.current=setTimeout(()=>{O==null||O(F),n==null||n(I.sourceEvent,F)},s?150:0)}})},[k,s,d,n,r]),M.useEffect(()=>{k&&k.filter(I=>{const O=P||i,F=o&&I.ctrlKey;if(I.button===1&&I.type==="mousedown"&&(Sd(I,"react-flow__node")||Sd(I,"react-flow__edge")))return!0;if(!d&&!O&&!s&&!u&&!o||E||!u&&I.type==="dblclick"||Sd(I,g)&&I.type==="wheel"||Sd(I,v)&&I.type!=="wheel"||!o&&I.ctrlKey&&I.type==="wheel"||!O&&!s&&!F&&I.type==="wheel"||!d&&(I.type==="mousedown"||I.type==="touchstart")||Array.isArray(d)&&!d.includes(I.button)&&(I.type==="mousedown"||I.type==="touchstart"))return!1;const U=Array.isArray(d)&&d.includes(I.button)||!I.button||I.button<=1;return(!I.ctrlKey||I.type==="wheel")&&U})},[E,k,i,o,s,u,d,c,P]),Z.jsx("div",{className:"react-flow__renderer",ref:A,style:gT,children:y})},Sme=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function wme(){const{userSelectionActive:e,userSelectionRect:t}=hr(Sme,yo);return e&&t?Z.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function y8(e,t){const n=e.find(r=>r.id===t.parentNode);if(n){const r=t.position.x+t.width-n.width,i=t.position.y+t.height-n.height;if(r>0||i>0||t.position.x<0||t.position.y<0){if(n.style={...n.style},n.style.width=n.style.width??n.width,n.style.height=n.style.height??n.height,r>0&&(n.style.width+=r),i>0&&(n.style.height+=i),t.position.x<0){const o=Math.abs(t.position.x);n.position.x=n.position.x-o,n.style.width+=o,t.position.x=0}if(t.position.y<0){const o=Math.abs(t.position.y);n.position.y=n.position.y-o,n.style.height+=o,t.position.y=0}n.width=n.style.width,n.height=n.style.height}}}function pB(e,t){if(e.some(r=>r.type==="reset"))return e.filter(r=>r.type==="reset").map(r=>r.item);const n=e.filter(r=>r.type==="add").map(r=>r.item);return t.reduce((r,i)=>{const o=e.filter(a=>a.id===i.id);if(o.length===0)return r.push(i),r;const s={...i};for(const a of o)if(a)switch(a.type){case"select":{s.selected=a.selected;break}case"position":{typeof a.position<"u"&&(s.position=a.position),typeof a.positionAbsolute<"u"&&(s.positionAbsolute=a.positionAbsolute),typeof a.dragging<"u"&&(s.dragging=a.dragging),s.expandParent&&y8(r,s);break}case"dimensions":{typeof a.dimensions<"u"&&(s.width=a.dimensions.width,s.height=a.dimensions.height),typeof a.updateStyle<"u"&&(s.style={...s.style||{},...a.dimensions}),typeof a.resizing=="boolean"&&(s.resizing=a.resizing),s.expandParent&&y8(r,s);break}case"remove":return r}return r.push(s),r},n)}function ec(e,t){return pB(e,t)}function Vu(e,t){return pB(e,t)}const Ol=(e,t)=>({id:e,type:"select",selected:t});function qd(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return!r.selected&&i?(r.selected=!0,n.push(Ol(r.id,!0))):r.selected&&!i&&(r.selected=!1,n.push(Ol(r.id,!1))),n},[])}const yw=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},xme=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),gB=M.memo(({isSelecting:e,selectionMode:t=bu.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:i,onPaneClick:o,onPaneContextMenu:s,onPaneScroll:a,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:c,children:d})=>{const f=M.useRef(null),h=oi(),p=M.useRef(0),m=M.useRef(0),b=M.useRef(),{userSelectionActive:_,elementsSelectable:y,dragging:g}=hr(xme,yo),v=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),p.current=0,m.current=0},S=N=>{o==null||o(N),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},w=N=>{if(Array.isArray(n)&&(n!=null&&n.includes(2))){N.preventDefault();return}s==null||s(N)},x=a?N=>a(N):void 0,C=N=>{const{resetSelectedElements:E,domNode:P}=h.getState();if(b.current=P==null?void 0:P.getBoundingClientRect(),!y||!e||N.button!==0||N.target!==f.current||!b.current)return;const{x:D,y:B}=su(N,b.current);E(),h.setState({userSelectionRect:{width:0,height:0,startX:D,startY:B,x:D,y:B}}),r==null||r(N)},A=N=>{const{userSelectionRect:E,nodeInternals:P,edges:D,transform:B,onNodesChange:R,onEdgesChange:I,nodeOrigin:O,getNodes:F}=h.getState();if(!e||!b.current||!E)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const U=su(N,b.current),V=E.startX??0,H=E.startY??0,Y={...E,x:U.xoe.id),te=j.map(oe=>oe.id);if(p.current!==te.length){p.current=te.length;const oe=qd(Q,te);oe.length&&(R==null||R(oe))}if(m.current!==K.length){m.current=K.length;const oe=qd(D,K);oe.length&&(I==null||I(oe))}h.setState({userSelectionRect:Y})},T=N=>{if(N.button!==0)return;const{userSelectionRect:E}=h.getState();!_&&E&&N.target===f.current&&(S==null||S(N)),h.setState({nodesSelectionActive:p.current>0}),v(),i==null||i(N)},k=N=>{_&&(h.setState({nodesSelectionActive:p.current>0}),i==null||i(N)),v()},L=y&&(e||_);return Z.jsxs("div",{className:as(["react-flow__pane",{dragging:g,selection:e}]),onClick:L?void 0:yw(S,f),onContextMenu:yw(w,f),onWheel:yw(x,f),onMouseEnter:L?void 0:l,onMouseDown:L?C:void 0,onMouseMove:L?A:u,onMouseUp:L?T:void 0,onMouseLeave:L?k:c,ref:f,style:gT,children:[d,Z.jsx(wme,{})]})});gB.displayName="Pane";function mB(e,t){if(!e.parentNode)return!1;const n=t.get(e.parentNode);return n?n.selected?!0:mB(n,t):!1}function v8(e,t,n){let r=e;do{if(r!=null&&r.matches(t))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function Cme(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected||i.id===r)&&(!i.parentNode||!mB(i,e))&&(i.draggable||t&&typeof i.draggable>"u")).map(i=>{var o,s;return{id:i.id,position:i.position||{x:0,y:0},positionAbsolute:i.positionAbsolute||{x:0,y:0},distance:{x:n.x-(((o=i.positionAbsolute)==null?void 0:o.x)??0),y:n.y-(((s=i.positionAbsolute)==null?void 0:s.y)??0)},delta:{x:0,y:0},extent:i.extent,parentNode:i.parentNode,width:i.width,height:i.height}})}function Eme(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function yB(e,t,n,r,i=[0,0],o){const s=Eme(e,e.extent||r);let a=s;if(e.extent==="parent")if(e.parentNode&&e.width&&e.height){const c=n.get(e.parentNode),{x:d,y:f}=mf(c,i).positionAbsolute;a=c&&Zo(d)&&Zo(f)&&Zo(c.width)&&Zo(c.height)?[[d+e.width*i[0],f+e.height*i[1]],[d+c.width-e.width+e.width*i[0],f+c.height-e.height+e.height*i[1]]]:a}else o==null||o("005",ul.error005()),a=s;else if(e.extent&&e.parentNode){const c=n.get(e.parentNode),{x:d,y:f}=mf(c,i).positionAbsolute;a=[[e.extent[0][0]+d,e.extent[0][1]+f],[e.extent[1][0]+d,e.extent[1][1]+f]]}let l={x:0,y:0};if(e.parentNode){const c=n.get(e.parentNode);l=mf(c,i).positionAbsolute}const u=a&&a!=="parent"?sT(t,a):t;return{position:{x:u.x-l.x,y:u.y-l.y},positionAbsolute:u}}function vw({nodeId:e,dragItems:t,nodeInternals:n}){const r=t.map(i=>({...n.get(i.id),position:i.position,positionAbsolute:i.positionAbsolute}));return[e?r.find(i=>i.id===e):r[0],r]}const _8=(e,t,n,r)=>{const i=t.querySelectorAll(e);if(!i||!i.length)return null;const o=Array.from(i),s=t.getBoundingClientRect(),a={x:s.width*r[0],y:s.height*r[1]};return o.map(l=>{const u=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),position:l.getAttribute("data-handlepos"),x:(u.left-s.left-a.x)/n,y:(u.top-s.top-a.y)/n,...oT(l)}})};function Uh(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get(e);i&&n(r,{...i})}}function QC({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:i,unselectNodesAndEdges:o,multiSelectionActive:s,nodeInternals:a,onError:l}=t.getState(),u=a.get(e);if(!u){l==null||l("012",ul.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&s)&&(o({nodes:[u]}),requestAnimationFrame(()=>{var c;return(c=r==null?void 0:r.current)==null?void 0:c.blur()})):i([e])}function Tme(){const e=oi();return M.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:i,snapToGrid:o}=e.getState(),s=n.touches?n.touches[0].clientX:n.clientX,a=n.touches?n.touches[0].clientY:n.clientY,l={x:(s-r[0])/r[2],y:(a-r[1])/r[2]};return{xSnapped:o?i[0]*Math.round(l.x/i[0]):l.x,ySnapped:o?i[1]*Math.round(l.y/i[1]):l.y,...l}},[])}function _w(e){return(t,n,r)=>e==null?void 0:e(t,r)}function vB({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:o,selectNodesOnDrag:s}){const a=oi(),[l,u]=M.useState(!1),c=M.useRef([]),d=M.useRef({x:null,y:null}),f=M.useRef(0),h=M.useRef(null),p=M.useRef({x:0,y:0}),m=M.useRef(null),b=M.useRef(!1),_=Tme();return M.useEffect(()=>{if(e!=null&&e.current){const y=Es(e.current),g=({x:S,y:w})=>{const{nodeInternals:x,onNodeDrag:C,onSelectionDrag:A,updateNodePositions:T,nodeExtent:k,snapGrid:L,snapToGrid:N,nodeOrigin:E,onError:P}=a.getState();d.current={x:S,y:w};let D=!1,B={x:0,y:0,x2:0,y2:0};if(c.current.length>1&&k){const I=dT(c.current,E);B=Fg(I)}if(c.current=c.current.map(I=>{const O={x:S-I.distance.x,y:w-I.distance.y};N&&(O.x=L[0]*Math.round(O.x/L[0]),O.y=L[1]*Math.round(O.y/L[1]));const F=[[k[0][0],k[0][1]],[k[1][0],k[1][1]]];c.current.length>1&&k&&!I.extent&&(F[0][0]=I.positionAbsolute.x-B.x+k[0][0],F[1][0]=I.positionAbsolute.x+(I.width??0)-B.x2+k[1][0],F[0][1]=I.positionAbsolute.y-B.y+k[0][1],F[1][1]=I.positionAbsolute.y+(I.height??0)-B.y2+k[1][1]);const U=yB(I,O,x,F,E,P);return D=D||I.position.x!==U.position.x||I.position.y!==U.position.y,I.position=U.position,I.positionAbsolute=U.positionAbsolute,I}),!D)return;T(c.current,!0,!0),u(!0);const R=i?C:_w(A);if(R&&m.current){const[I,O]=vw({nodeId:i,dragItems:c.current,nodeInternals:x});R(m.current,I,O)}},v=()=>{if(!h.current)return;const[S,w]=$F(p.current,h.current);if(S!==0||w!==0){const{transform:x,panBy:C}=a.getState();d.current.x=(d.current.x??0)-S/x[2],d.current.y=(d.current.y??0)-w/x[2],C({x:S,y:w})&&g(d.current)}f.current=requestAnimationFrame(v)};if(t)y.on(".drag",null);else{const S=Dhe().on("start",w=>{var D;const{nodeInternals:x,multiSelectionActive:C,domNode:A,nodesDraggable:T,unselectNodesAndEdges:k,onNodeDragStart:L,onSelectionDragStart:N}=a.getState(),E=i?L:_w(N);!s&&!C&&i&&((D=x.get(i))!=null&&D.selected||k()),i&&o&&s&&QC({id:i,store:a,nodeRef:e});const P=_(w);if(d.current=P,c.current=Cme(x,T,P,i),E&&c.current){const[B,R]=vw({nodeId:i,dragItems:c.current,nodeInternals:x});E(w.sourceEvent,B,R)}h.current=(A==null?void 0:A.getBoundingClientRect())||null,p.current=su(w.sourceEvent,h.current)}).on("drag",w=>{const x=_(w),{autoPanOnNodeDrag:C}=a.getState();!b.current&&C&&(b.current=!0,v()),(d.current.x!==x.xSnapped||d.current.y!==x.ySnapped)&&c.current&&(m.current=w.sourceEvent,p.current=su(w.sourceEvent,h.current),g(x))}).on("end",w=>{if(u(!1),b.current=!1,cancelAnimationFrame(f.current),c.current){const{updateNodePositions:x,nodeInternals:C,onNodeDragStop:A,onSelectionDragStop:T}=a.getState(),k=i?A:_w(T);if(x(c.current,!1,!1),k){const[L,N]=vw({nodeId:i,dragItems:c.current,nodeInternals:C});k(w.sourceEvent,L,N)}}}).filter(w=>{const x=w.target;return!w.button&&(!n||!v8(x,`.${n}`,e))&&(!r||v8(x,r,e))});return y.call(S),()=>{y.on(".drag",null)}}}},[e,t,n,r,o,a,i,s,_]),l}function _B(){const e=oi();return M.useCallback(n=>{const{nodeInternals:r,nodeExtent:i,updateNodePositions:o,getNodes:s,snapToGrid:a,snapGrid:l,onError:u,nodesDraggable:c}=e.getState(),d=s().filter(y=>y.selected&&(y.draggable||c&&typeof y.draggable>"u")),f=a?l[0]:5,h=a?l[1]:5,p=n.isShiftPressed?4:1,m=n.x*f*p,b=n.y*h*p,_=d.map(y=>{if(y.positionAbsolute){const g={x:y.positionAbsolute.x+m,y:y.positionAbsolute.y+b};a&&(g.x=l[0]*Math.round(g.x/l[0]),g.y=l[1]*Math.round(g.y/l[1]));const{positionAbsolute:v,position:S}=yB(y,g,r,i,void 0,u);y.position=S,y.positionAbsolute=v}return y});o(_,!0,!1)},[])}const yf={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var jh=e=>{const t=({id:n,type:r,data:i,xPos:o,yPos:s,xPosOrigin:a,yPosOrigin:l,selected:u,onClick:c,onMouseEnter:d,onMouseMove:f,onMouseLeave:h,onContextMenu:p,onDoubleClick:m,style:b,className:_,isDraggable:y,isSelectable:g,isConnectable:v,isFocusable:S,selectNodesOnDrag:w,sourcePosition:x,targetPosition:C,hidden:A,resizeObserver:T,dragHandle:k,zIndex:L,isParent:N,noDragClassName:E,noPanClassName:P,initialized:D,disableKeyboardA11y:B,ariaLabel:R,rfId:I})=>{const O=oi(),F=M.useRef(null),U=M.useRef(x),V=M.useRef(C),H=M.useRef(r),Y=g||y||c||d||f||h,Q=_B(),j=Uh(n,O.getState,d),K=Uh(n,O.getState,f),te=Uh(n,O.getState,h),oe=Uh(n,O.getState,p),me=Uh(n,O.getState,m),le=$e=>{if(g&&(!w||!y)&&QC({id:n,store:O,nodeRef:F}),c){const ct=O.getState().nodeInternals.get(n);ct&&c($e,{...ct})}},ht=$e=>{if(!qC($e))if(UF.includes($e.key)&&g){const ct=$e.key==="Escape";QC({id:n,store:O,unselect:ct,nodeRef:F})}else!B&&y&&u&&Object.prototype.hasOwnProperty.call(yf,$e.key)&&(O.setState({ariaLiveMessage:`Moved selected node ${$e.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~o}, y: ${~~s}`}),Q({x:yf[$e.key].x,y:yf[$e.key].y,isShiftPressed:$e.shiftKey}))};M.useEffect(()=>{if(F.current&&!A){const $e=F.current;return T==null||T.observe($e),()=>T==null?void 0:T.unobserve($e)}},[A]),M.useEffect(()=>{const $e=H.current!==r,ct=U.current!==x,Pe=V.current!==C;F.current&&($e||ct||Pe)&&($e&&(H.current=r),ct&&(U.current=x),Pe&&(V.current=C),O.getState().updateNodeDimensions([{id:n,nodeElement:F.current,forceUpdate:!0}]))},[n,r,x,C]);const nt=vB({nodeRef:F,disabled:A||!y,noDragClassName:E,handleSelector:k,nodeId:n,isSelectable:g,selectNodesOnDrag:w});return A?null:Z.jsx("div",{className:as(["react-flow__node",`react-flow__node-${r}`,{[P]:y},_,{selected:u,selectable:g,parent:N,dragging:nt}]),ref:F,style:{zIndex:L,transform:`translate(${a}px,${l}px)`,pointerEvents:Y?"all":"none",visibility:D?"visible":"hidden",...b},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:j,onMouseMove:K,onMouseLeave:te,onContextMenu:oe,onClick:le,onDoubleClick:me,onKeyDown:S?ht:void 0,tabIndex:S?0:void 0,role:S?"button":void 0,"aria-describedby":B?void 0:`${lB}-${I}`,"aria-label":R,children:Z.jsx(Bge,{value:n,children:Z.jsx(e,{id:n,data:i,type:r,xPos:o,yPos:s,selected:u,isConnectable:v,sourcePosition:x,targetPosition:C,dragging:nt,dragHandle:k,zIndex:L})})})};return t.displayName="NodeWrapper",M.memo(t)};const Ame=e=>{const t=e.getNodes().filter(n=>n.selected);return{...dT(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function kme({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=oi(),{width:i,height:o,x:s,y:a,transformString:l,userSelectionActive:u}=hr(Ame,yo),c=_B(),d=M.useRef(null);if(M.useEffect(()=>{var p;n||(p=d.current)==null||p.focus({preventScroll:!0})},[n]),vB({nodeRef:d}),u||!i||!o)return null;const f=e?p=>{const m=r.getState().getNodes().filter(b=>b.selected);e(p,m)}:void 0,h=p=>{Object.prototype.hasOwnProperty.call(yf,p.key)&&c({x:yf[p.key].x,y:yf[p.key].y,isShiftPressed:p.shiftKey})};return Z.jsx("div",{className:as(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l},children:Z.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:h,style:{width:i,height:o,top:a,left:s}})})}var Pme=M.memo(kme);const Rme=e=>e.nodesSelectionActive,bB=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,deleteKeyCode:a,onMove:l,onMoveStart:u,onMoveEnd:c,selectionKeyCode:d,selectionOnDrag:f,selectionMode:h,onSelectionStart:p,onSelectionEnd:m,multiSelectionKeyCode:b,panActivationKeyCode:_,zoomActivationKeyCode:y,elementsSelectable:g,zoomOnScroll:v,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:C,zoomOnDoubleClick:A,panOnDrag:T,defaultViewport:k,translateExtent:L,minZoom:N,maxZoom:E,preventScrolling:P,onSelectionContextMenu:D,noWheelClassName:B,noPanClassName:R,disableKeyboardA11y:I})=>{const O=hr(Rme),F=Bg(d),V=Bg(_)||T,H=F||f&&V!==!0;return mme({deleteKeyCode:a,multiSelectionKeyCode:b}),Z.jsx(bme,{onMove:l,onMoveStart:u,onMoveEnd:c,onPaneContextMenu:o,elementsSelectable:g,zoomOnScroll:v,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:C,zoomOnDoubleClick:A,panOnDrag:!F&&V,defaultViewport:k,translateExtent:L,minZoom:N,maxZoom:E,zoomActivationKeyCode:y,preventScrolling:P,noWheelClassName:B,noPanClassName:R,children:Z.jsxs(gB,{onSelectionStart:p,onSelectionEnd:m,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,panOnDrag:V,isSelecting:!!H,selectionMode:h,children:[e,O&&Z.jsx(Pme,{onSelectionContextMenu:D,noPanClassName:R,disableKeyboardA11y:I})]})})};bB.displayName="FlowRenderer";var Ime=M.memo(bB);function Ome(e){return hr(M.useCallback(n=>e?QF(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function Mme(e){const t={input:jh(e.input||iB),default:jh(e.default||XC),output:jh(e.output||sB),group:jh(e.group||pT)},n={},r=Object.keys(e).filter(i=>!["input","default","output","group"].includes(i)).reduce((i,o)=>(i[o]=jh(e[o]||XC),i),n);return{...t,...r}}const Nme=({x:e,y:t,width:n,height:r,origin:i})=>!n||!r?{x:e,y:t}:i[0]<0||i[1]<0||i[0]>1||i[1]>1?{x:e,y:t}:{x:e-n*i[0],y:t-r*i[1]},Dme=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),SB=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,updateNodeDimensions:o,onError:s}=hr(Dme,yo),a=Ome(e.onlyRenderVisibleElements),l=M.useRef(),u=M.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const c=new ResizeObserver(d=>{const f=d.map(h=>({id:h.target.getAttribute("data-id"),nodeElement:h.target,forceUpdate:!0}));o(f)});return l.current=c,c},[]);return M.useEffect(()=>()=>{var c;(c=l==null?void 0:l.current)==null||c.disconnect()},[]),Z.jsx("div",{className:"react-flow__nodes",style:gT,children:a.map(c=>{var S,w;let d=c.type||"default";e.nodeTypes[d]||(s==null||s("003",ul.error003(d)),d="default");const f=e.nodeTypes[d]||e.nodeTypes.default,h=!!(c.draggable||t&&typeof c.draggable>"u"),p=!!(c.selectable||i&&typeof c.selectable>"u"),m=!!(c.connectable||n&&typeof c.connectable>"u"),b=!!(c.focusable||r&&typeof c.focusable>"u"),_=e.nodeExtent?sT(c.positionAbsolute,e.nodeExtent):c.positionAbsolute,y=(_==null?void 0:_.x)??0,g=(_==null?void 0:_.y)??0,v=Nme({x:y,y:g,width:c.width??0,height:c.height??0,origin:e.nodeOrigin});return Z.jsx(f,{id:c.id,className:c.className,style:c.style,type:d,data:c.data,sourcePosition:c.sourcePosition||Je.Bottom,targetPosition:c.targetPosition||Je.Top,hidden:c.hidden,xPos:y,yPos:g,xPosOrigin:v.x,yPosOrigin:v.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!c.selected,isDraggable:h,isSelectable:p,isConnectable:m,isFocusable:b,resizeObserver:u,dragHandle:c.dragHandle,zIndex:((S=c[Ur])==null?void 0:S.z)??0,isParent:!!((w=c[Ur])!=null&&w.isParent),noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!c.width&&!!c.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:c.ariaLabel},c.id)})})};SB.displayName="NodeRenderer";var Lme=M.memo(SB);const $me=(e,t,n)=>n===Je.Left?e-t:n===Je.Right?e+t:e,Fme=(e,t,n)=>n===Je.Top?e-t:n===Je.Bottom?e+t:e,b8="react-flow__edgeupdater",S8=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:o,onMouseOut:s,type:a})=>Z.jsx("circle",{onMouseDown:i,onMouseEnter:o,onMouseOut:s,className:as([b8,`${b8}-${a}`]),cx:$me(t,r,e),cy:Fme(n,r,e),r,stroke:"transparent",fill:"transparent"}),Bme=()=>!0;var wd=e=>{const t=({id:n,className:r,type:i,data:o,onClick:s,onEdgeDoubleClick:a,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,style:b,source:_,target:y,sourceX:g,sourceY:v,targetX:S,targetY:w,sourcePosition:x,targetPosition:C,elementsSelectable:A,hidden:T,sourceHandleId:k,targetHandleId:L,onContextMenu:N,onMouseEnter:E,onMouseMove:P,onMouseLeave:D,edgeUpdaterRadius:B,onEdgeUpdate:R,onEdgeUpdateStart:I,onEdgeUpdateEnd:O,markerEnd:F,markerStart:U,rfId:V,ariaLabel:H,isFocusable:Y,isUpdatable:Q,pathOptions:j,interactionWidth:K})=>{const te=M.useRef(null),[oe,me]=M.useState(!1),[le,ht]=M.useState(!1),nt=oi(),$e=M.useMemo(()=>`url(#${KC(U,V)})`,[U,V]),ct=M.useMemo(()=>`url(#${KC(F,V)})`,[F,V]);if(T)return null;const Pe=In=>{const{edges:dn,addSelectedEdges:Ci}=nt.getState();if(A&&(nt.setState({nodesSelectionActive:!1}),Ci([n])),s){const si=dn.find(ji=>ji.id===n);s(In,si)}},qt=zh(n,nt.getState,a),Sr=zh(n,nt.getState,N),Pn=zh(n,nt.getState,E),bn=zh(n,nt.getState,P),Wt=zh(n,nt.getState,D),Rn=(In,dn)=>{if(In.button!==0)return;const{edges:Ci,isValidConnection:si}=nt.getState(),ji=dn?y:_,ps=(dn?L:k)||null,xr=dn?"target":"source",no=si||Bme,Ta=dn,bo=Ci.find(Kt=>Kt.id===n);ht(!0),I==null||I(In,bo,xr);const Aa=Kt=>{ht(!1),O==null||O(Kt,bo,xr)};eB({event:In,handleId:ps,nodeId:ji,onConnect:Kt=>R==null?void 0:R(bo,Kt),isTarget:Ta,getState:nt.getState,setState:nt.setState,isValidConnection:no,edgeUpdaterType:xr,onEdgeUpdateEnd:Aa})},wr=In=>Rn(In,!0),to=In=>Rn(In,!1),Gr=()=>me(!0),ar=()=>me(!1),Or=!A&&!s,Hr=In=>{var dn;if(UF.includes(In.key)&&A){const{unselectNodesAndEdges:Ci,addSelectedEdges:si,edges:ji}=nt.getState();In.key==="Escape"?((dn=te.current)==null||dn.blur(),Ci({edges:[ji.find(xr=>xr.id===n)]})):si([n])}};return Z.jsxs("g",{className:as(["react-flow__edge",`react-flow__edge-${i}`,r,{selected:l,animated:u,inactive:Or,updating:oe}]),onClick:Pe,onDoubleClick:qt,onContextMenu:Sr,onMouseEnter:Pn,onMouseMove:bn,onMouseLeave:Wt,onKeyDown:Y?Hr:void 0,tabIndex:Y?0:void 0,role:Y?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":H===null?void 0:H||`Edge from ${_} to ${y}`,"aria-describedby":Y?`${uB}-${V}`:void 0,ref:te,children:[!le&&Z.jsx(e,{id:n,source:_,target:y,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,data:o,style:b,sourceX:g,sourceY:v,targetX:S,targetY:w,sourcePosition:x,targetPosition:C,sourceHandleId:k,targetHandleId:L,markerStart:$e,markerEnd:ct,pathOptions:j,interactionWidth:K}),Q&&Z.jsxs(Z.Fragment,{children:[(Q==="source"||Q===!0)&&Z.jsx(S8,{position:x,centerX:g,centerY:v,radius:B,onMouseDown:wr,onMouseEnter:Gr,onMouseOut:ar,type:"source"}),(Q==="target"||Q===!0)&&Z.jsx(S8,{position:C,centerX:S,centerY:w,radius:B,onMouseDown:to,onMouseEnter:Gr,onMouseOut:ar,type:"target"})]})]})};return t.displayName="EdgeWrapper",M.memo(t)};function zme(e){const t={default:wd(e.default||w1),straight:wd(e.bezier||uT),step:wd(e.step||lT),smoothstep:wd(e.step||Db),simplebezier:wd(e.simplebezier||aT)},n={},r=Object.keys(e).filter(i=>!["default","bezier"].includes(i)).reduce((i,o)=>(i[o]=wd(e[o]||w1),i),n);return{...t,...r}}function w8(e,t,n=null){const r=((n==null?void 0:n.x)||0)+t.x,i=((n==null?void 0:n.y)||0)+t.y,o=(n==null?void 0:n.width)||t.width,s=(n==null?void 0:n.height)||t.height;switch(e){case Je.Top:return{x:r+o/2,y:i};case Je.Right:return{x:r+o,y:i+s/2};case Je.Bottom:return{x:r+o/2,y:i+s};case Je.Left:return{x:r,y:i+s/2}}}function x8(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Ume=(e,t,n,r,i,o)=>{const s=w8(n,e,t),a=w8(o,r,i);return{sourceX:s.x,sourceY:s.y,targetX:a.x,targetY:a.y}};function jme({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,targetWidth:i,targetHeight:o,width:s,height:a,transform:l}){const u={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+i),y2:Math.max(e.y+r,t.y+o)};u.x===u.x2&&(u.x2+=1),u.y===u.y2&&(u.y2+=1);const c=Fg({x:(0-l[0])/l[2],y:(0-l[1])/l[2],width:s/l[2],height:a/l[2]}),d=Math.max(0,Math.min(c.x2,u.x2)-Math.max(c.x,u.x)),f=Math.max(0,Math.min(c.y2,u.y2)-Math.max(c.y,u.y));return Math.ceil(d*f)>0}function C8(e){var r,i,o,s,a;const t=((r=e==null?void 0:e[Ur])==null?void 0:r.handleBounds)||null,n=t&&(e==null?void 0:e.width)&&(e==null?void 0:e.height)&&typeof((i=e==null?void 0:e.positionAbsolute)==null?void 0:i.x)<"u"&&typeof((o=e==null?void 0:e.positionAbsolute)==null?void 0:o.y)<"u";return[{x:((s=e==null?void 0:e.positionAbsolute)==null?void 0:s.x)||0,y:((a=e==null?void 0:e.positionAbsolute)==null?void 0:a.y)||0,width:(e==null?void 0:e.width)||0,height:(e==null?void 0:e.height)||0},t,!!n]}const Vme=[{level:0,isMaxLevel:!0,edges:[]}];function Gme(e,t,n=!1){let r=-1;const i=e.reduce((s,a)=>{var c,d;const l=Zo(a.zIndex);let u=l?a.zIndex:0;if(n){const f=t.get(a.target),h=t.get(a.source),p=a.selected||(f==null?void 0:f.selected)||(h==null?void 0:h.selected),m=Math.max(((c=h==null?void 0:h[Ur])==null?void 0:c.z)||0,((d=f==null?void 0:f[Ur])==null?void 0:d.z)||0,1e3);u=(l?a.zIndex:0)+(p?m:0)}return s[u]?s[u].push(a):s[u]=[a],r=u>r?u:r,s},{}),o=Object.entries(i).map(([s,a])=>{const l=+s;return{edges:a,level:l,isMaxLevel:l===r}});return o.length===0?Vme:o}function Hme(e,t,n){const r=hr(M.useCallback(i=>e?i.edges.filter(o=>{const s=t.get(o.source),a=t.get(o.target);return(s==null?void 0:s.width)&&(s==null?void 0:s.height)&&(a==null?void 0:a.width)&&(a==null?void 0:a.height)&&jme({sourcePos:s.positionAbsolute||{x:0,y:0},targetPos:a.positionAbsolute||{x:0,y:0},sourceWidth:s.width,sourceHeight:s.height,targetWidth:a.width,targetHeight:a.height,width:i.width,height:i.height,transform:i.transform})}):i.edges,[e,t]));return Gme(r,t,n)}const qme=({color:e="none",strokeWidth:t=1})=>Z.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:"none",points:"-5,-4 0,0 -5,4"}),Wme=({color:e="none",strokeWidth:t=1})=>Z.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:e,points:"-5,-4 0,0 -5,4 -5,-4"}),E8={[S1.Arrow]:qme,[S1.ArrowClosed]:Wme};function Kme(e){const t=oi();return M.useMemo(()=>{var i,o;return Object.prototype.hasOwnProperty.call(E8,e)?E8[e]:((o=(i=t.getState()).onError)==null||o.call(i,"009",ul.error009(e)),null)},[e])}const Xme=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:o="strokeWidth",strokeWidth:s,orient:a="auto-start-reverse"})=>{const l=Kme(t);return l?Z.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:"-10 -10 20 20",markerUnits:o,orient:a,refX:"0",refY:"0",children:Z.jsx(l,{color:n,strokeWidth:s})}):null},Qme=({defaultColor:e,rfId:t})=>n=>{const r=[];return n.edges.reduce((i,o)=>([o.markerStart,o.markerEnd].forEach(s=>{if(s&&typeof s=="object"){const a=KC(s,t);r.includes(a)||(i.push({id:a,color:s.color||e,...s}),r.push(a))}}),i),[]).sort((i,o)=>i.id.localeCompare(o.id))},wB=({defaultColor:e,rfId:t})=>{const n=hr(M.useCallback(Qme({defaultColor:e,rfId:t}),[e,t]),(r,i)=>!(r.length!==i.length||r.some((o,s)=>o.id!==i[s].id)));return Z.jsx("defs",{children:n.map(r=>Z.jsx(Xme,{id:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient},r.id))})};wB.displayName="MarkerDefinitions";var Yme=M.memo(wB);const Zme=e=>({nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,edgesUpdatable:e.edgesUpdatable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals,onError:e.onError}),xB=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:r,edgeTypes:i,noPanClassName:o,onEdgeUpdate:s,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:u,onEdgeMouseLeave:c,onEdgeClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,children:b})=>{const{edgesFocusable:_,edgesUpdatable:y,elementsSelectable:g,width:v,height:S,connectionMode:w,nodeInternals:x,onError:C}=hr(Zme,yo),A=Hme(t,x,n);return v?Z.jsxs(Z.Fragment,{children:[A.map(({level:T,edges:k,isMaxLevel:L})=>Z.jsxs("svg",{style:{zIndex:T},width:v,height:S,className:"react-flow__edges react-flow__container",children:[L&&Z.jsx(Yme,{defaultColor:e,rfId:r}),Z.jsx("g",{children:k.map(N=>{const[E,P,D]=C8(x.get(N.source)),[B,R,I]=C8(x.get(N.target));if(!D||!I)return null;let O=N.type||"default";i[O]||(C==null||C("011",ul.error011(O)),O="default");const F=i[O]||i.default,U=w===$c.Strict?R.target:(R.target??[]).concat(R.source??[]),V=x8(P.source,N.sourceHandle),H=x8(U,N.targetHandle),Y=(V==null?void 0:V.position)||Je.Bottom,Q=(H==null?void 0:H.position)||Je.Top,j=!!(N.focusable||_&&typeof N.focusable>"u"),K=typeof s<"u"&&(N.updatable||y&&typeof N.updatable>"u");if(!V||!H)return C==null||C("008",ul.error008(V,N)),null;const{sourceX:te,sourceY:oe,targetX:me,targetY:le}=Ume(E,V,Y,B,H,Q);return Z.jsx(F,{id:N.id,className:as([N.className,o]),type:O,data:N.data,selected:!!N.selected,animated:!!N.animated,hidden:!!N.hidden,label:N.label,labelStyle:N.labelStyle,labelShowBg:N.labelShowBg,labelBgStyle:N.labelBgStyle,labelBgPadding:N.labelBgPadding,labelBgBorderRadius:N.labelBgBorderRadius,style:N.style,source:N.source,target:N.target,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerEnd:N.markerEnd,markerStart:N.markerStart,sourceX:te,sourceY:oe,targetX:me,targetY:le,sourcePosition:Y,targetPosition:Q,elementsSelectable:g,onEdgeUpdate:s,onContextMenu:a,onMouseEnter:l,onMouseMove:u,onMouseLeave:c,onClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,rfId:r,ariaLabel:N.ariaLabel,isFocusable:j,isUpdatable:K,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth},N.id)})})]},T)),b]}):null};xB.displayName="EdgeRenderer";var Jme=M.memo(xB);const eye=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function tye({children:e}){const t=hr(eye);return Z.jsx("div",{className:"react-flow__viewport react-flow__container",style:{transform:t},children:e})}function nye(e){const t=hB(),n=M.useRef(!1);M.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const rye={[Je.Left]:Je.Right,[Je.Right]:Je.Left,[Je.Top]:Je.Bottom,[Je.Bottom]:Je.Top},CB=({nodeId:e,handleType:t,style:n,type:r=Bl.Bezier,CustomComponent:i,connectionStatus:o})=>{var w,x,C;const{fromNode:s,handleId:a,toX:l,toY:u,connectionMode:c}=hr(M.useCallback(A=>({fromNode:A.nodeInternals.get(e),handleId:A.connectionHandleId,toX:(A.connectionPosition.x-A.transform[0])/A.transform[2],toY:(A.connectionPosition.y-A.transform[1])/A.transform[2],connectionMode:A.connectionMode}),[e]),yo),d=(w=s==null?void 0:s[Ur])==null?void 0:w.handleBounds;let f=d==null?void 0:d[t];if(c===$c.Loose&&(f=f||(d==null?void 0:d[t==="source"?"target":"source"])),!s||!f)return null;const h=a?f.find(A=>A.id===a):f[0],p=h?h.x+h.width/2:(s.width??0)/2,m=h?h.y+h.height/2:s.height??0,b=(((x=s.positionAbsolute)==null?void 0:x.x)??0)+p,_=(((C=s.positionAbsolute)==null?void 0:C.y)??0)+m,y=h==null?void 0:h.position,g=y?rye[y]:null;if(!y||!g)return null;if(i)return Z.jsx(i,{connectionLineType:r,connectionLineStyle:n,fromNode:s,fromHandle:h,fromX:b,fromY:_,toX:l,toY:u,fromPosition:y,toPosition:g,connectionStatus:o});let v="";const S={sourceX:b,sourceY:_,sourcePosition:y,targetX:l,targetY:u,targetPosition:g};return r===Bl.Bezier?[v]=qF(S):r===Bl.Step?[v]=WC({...S,borderRadius:0}):r===Bl.SmoothStep?[v]=WC(S):r===Bl.SimpleBezier?[v]=HF(S):v=`M${b},${_} ${l},${u}`,Z.jsx("path",{d:v,fill:"none",className:"react-flow__connection-path",style:n})};CB.displayName="ConnectionLine";const iye=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function oye({containerStyle:e,style:t,type:n,component:r}){const{nodeId:i,handleType:o,nodesConnectable:s,width:a,height:l,connectionStatus:u}=hr(iye,yo);return!(i&&o&&a&&s)?null:Z.jsx("svg",{style:e,width:a,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container",children:Z.jsx("g",{className:as(["react-flow__connection",u]),children:Z.jsx(CB,{nodeId:i,handleType:o,style:t,type:n,CustomComponent:r,connectionStatus:u})})})}function T8(e,t){return M.useRef(null),oi(),M.useMemo(()=>t(e),[e])}const EB=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:r,onMoveEnd:i,onInit:o,onNodeClick:s,onEdgeClick:a,onNodeDoubleClick:l,onEdgeDoubleClick:u,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,onSelectionContextMenu:p,onSelectionStart:m,onSelectionEnd:b,connectionLineType:_,connectionLineStyle:y,connectionLineComponent:g,connectionLineContainerStyle:v,selectionKeyCode:S,selectionOnDrag:w,selectionMode:x,multiSelectionKeyCode:C,panActivationKeyCode:A,zoomActivationKeyCode:T,deleteKeyCode:k,onlyRenderVisibleElements:L,elementsSelectable:N,selectNodesOnDrag:E,defaultViewport:P,translateExtent:D,minZoom:B,maxZoom:R,preventScrolling:I,defaultMarkerColor:O,zoomOnScroll:F,zoomOnPinch:U,panOnScroll:V,panOnScrollSpeed:H,panOnScrollMode:Y,zoomOnDoubleClick:Q,panOnDrag:j,onPaneClick:K,onPaneMouseEnter:te,onPaneMouseMove:oe,onPaneMouseLeave:me,onPaneScroll:le,onPaneContextMenu:ht,onEdgeUpdate:nt,onEdgeContextMenu:$e,onEdgeMouseEnter:ct,onEdgeMouseMove:Pe,onEdgeMouseLeave:qt,edgeUpdaterRadius:Sr,onEdgeUpdateStart:Pn,onEdgeUpdateEnd:bn,noDragClassName:Wt,noWheelClassName:Rn,noPanClassName:wr,elevateEdgesOnSelect:to,disableKeyboardA11y:Gr,nodeOrigin:ar,nodeExtent:Or,rfId:Hr})=>{const In=T8(e,Mme),dn=T8(t,zme);return nye(o),Z.jsx(Ime,{onPaneClick:K,onPaneMouseEnter:te,onPaneMouseMove:oe,onPaneMouseLeave:me,onPaneContextMenu:ht,onPaneScroll:le,deleteKeyCode:k,selectionKeyCode:S,selectionOnDrag:w,selectionMode:x,onSelectionStart:m,onSelectionEnd:b,multiSelectionKeyCode:C,panActivationKeyCode:A,zoomActivationKeyCode:T,elementsSelectable:N,onMove:n,onMoveStart:r,onMoveEnd:i,zoomOnScroll:F,zoomOnPinch:U,zoomOnDoubleClick:Q,panOnScroll:V,panOnScrollSpeed:H,panOnScrollMode:Y,panOnDrag:j,defaultViewport:P,translateExtent:D,minZoom:B,maxZoom:R,onSelectionContextMenu:p,preventScrolling:I,noDragClassName:Wt,noWheelClassName:Rn,noPanClassName:wr,disableKeyboardA11y:Gr,children:Z.jsxs(tye,{children:[Z.jsx(Jme,{edgeTypes:dn,onEdgeClick:a,onEdgeDoubleClick:u,onEdgeUpdate:nt,onlyRenderVisibleElements:L,onEdgeContextMenu:$e,onEdgeMouseEnter:ct,onEdgeMouseMove:Pe,onEdgeMouseLeave:qt,onEdgeUpdateStart:Pn,onEdgeUpdateEnd:bn,edgeUpdaterRadius:Sr,defaultMarkerColor:O,noPanClassName:wr,elevateEdgesOnSelect:!!to,disableKeyboardA11y:Gr,rfId:Hr,children:Z.jsx(oye,{style:y,type:_,component:g,containerStyle:v})}),Z.jsx("div",{className:"react-flow__edgelabel-renderer"}),Z.jsx(Lme,{nodeTypes:In,onNodeClick:s,onNodeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,selectNodesOnDrag:E,onlyRenderVisibleElements:L,noPanClassName:wr,noDragClassName:Wt,disableKeyboardA11y:Gr,nodeOrigin:ar,nodeExtent:Or,rfId:Hr})]})})};EB.displayName="GraphView";var sye=M.memo(EB);const YC=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],El={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:YC,nodeExtent:YC,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:$c.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:Mge,isValidConnection:void 0},aye=()=>Wde((e,t)=>({...El,setNodes:n=>{const{nodeInternals:r,nodeOrigin:i,elevateNodesOnSelect:o}=t();e({nodeInternals:mw(n,r,i,o)})},getNodes:()=>Array.from(t().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=t();e({edges:n.map(i=>({...r,...i}))})},setDefaultNodesAndEdges:(n,r)=>{const i=typeof n<"u",o=typeof r<"u",s=i?mw(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:s,edges:o?r:[],hasDefaultNodes:i,hasDefaultEdges:o})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:i,fitViewOnInit:o,fitViewOnInitDone:s,fitViewOnInitOptions:a,domNode:l,nodeOrigin:u}=t(),c=l==null?void 0:l.querySelector(".react-flow__viewport");if(!c)return;const d=window.getComputedStyle(c),{m22:f}=new window.DOMMatrixReadOnly(d.transform),h=n.reduce((m,b)=>{const _=i.get(b.id);if(_){const y=oT(b.nodeElement);!!(y.width&&y.height&&(_.width!==y.width||_.height!==y.height||b.forceUpdate))&&(i.set(_.id,{..._,[Ur]:{..._[Ur],handleBounds:{source:_8(".source",b.nodeElement,f,u),target:_8(".target",b.nodeElement,f,u)}},...y}),m.push({id:_.id,type:"dimensions",dimensions:y}))}return m},[]);dB(i,u);const p=s||o&&!s&&fB(t,{initial:!0,...a});e({nodeInternals:new Map(i),fitViewOnInitDone:p}),(h==null?void 0:h.length)>0&&(r==null||r(h))},updateNodePositions:(n,r=!0,i=!1)=>{const{triggerNodeChanges:o}=t(),s=n.map(a=>{const l={id:a.id,type:"position",dragging:i};return r&&(l.positionAbsolute=a.positionAbsolute,l.position=a.position),l});o(s)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:i,hasDefaultNodes:o,nodeOrigin:s,getNodes:a,elevateNodesOnSelect:l}=t();if(n!=null&&n.length){if(o){const u=ec(n,a()),c=mw(u,i,s,l);e({nodeInternals:c})}r==null||r(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:i,getNodes:o}=t();let s,a=null;r?s=n.map(l=>Ol(l,!0)):(s=qd(o(),n),a=qd(i,[])),Hy({changedNodes:s,changedEdges:a,get:t,set:e})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:i,getNodes:o}=t();let s,a=null;r?s=n.map(l=>Ol(l,!0)):(s=qd(i,n),a=qd(o(),[])),Hy({changedNodes:a,changedEdges:s,get:t,set:e})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:i,getNodes:o}=t(),s=n||o(),a=r||i,l=s.map(c=>(c.selected=!1,Ol(c.id,!1))),u=a.map(c=>Ol(c.id,!1));Hy({changedNodes:l,changedEdges:u,get:t,set:e})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:i}=t();r==null||r.scaleExtent([n,i]),e({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:i}=t();r==null||r.scaleExtent([i,n]),e({maxZoom:n})},setTranslateExtent:n=>{var r;(r=t().d3Zoom)==null||r.translateExtent(n),e({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=t(),o=r().filter(a=>a.selected).map(a=>Ol(a.id,!1)),s=n.filter(a=>a.selected).map(a=>Ol(a.id,!1));Hy({changedNodes:o,changedEdges:s,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(i=>{i.positionAbsolute=sT(i.position,n)}),e({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:i,height:o,d3Zoom:s,d3Selection:a,translateExtent:l}=t();if(!s||!a||!n.x&&!n.y)return!1;const u=ou.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),c=[[0,0],[i,o]],d=s==null?void 0:s.constrain()(u,c,l);return s.transform(a,d),r[0]!==d.x||r[1]!==d.y||r[2]!==d.k},cancelConnection:()=>e({connectionNodeId:El.connectionNodeId,connectionHandleId:El.connectionHandleId,connectionHandleType:El.connectionHandleType,connectionStatus:El.connectionStatus,connectionStartHandle:El.connectionStartHandle,connectionEndHandle:El.connectionEndHandle}),reset:()=>e({...El})}),Object.is),TB=({children:e})=>{const t=M.useRef(null);return t.current||(t.current=aye()),Z.jsx(Tge,{value:t.current,children:e})};TB.displayName="ReactFlowProvider";const AB=({children:e})=>M.useContext(Nb)?Z.jsx(Z.Fragment,{children:e}):Z.jsx(TB,{children:e});AB.displayName="ReactFlowWrapper";const lye={input:iB,default:XC,output:sB,group:pT},uye={default:w1,straight:uT,step:lT,smoothstep:Db,simplebezier:aT},cye=[0,0],dye=[15,15],fye={x:0,y:0,zoom:1},hye={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},pye=M.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:o=lye,edgeTypes:s=uye,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:v,onNodeContextMenu:S,onNodeDoubleClick:w,onNodeDragStart:x,onNodeDrag:C,onNodeDragStop:A,onNodesDelete:T,onEdgesDelete:k,onSelectionChange:L,onSelectionDragStart:N,onSelectionDrag:E,onSelectionDragStop:P,onSelectionContextMenu:D,onSelectionStart:B,onSelectionEnd:R,connectionMode:I=$c.Strict,connectionLineType:O=Bl.Bezier,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,deleteKeyCode:H="Backspace",selectionKeyCode:Y="Shift",selectionOnDrag:Q=!1,selectionMode:j=bu.Full,panActivationKeyCode:K="Space",multiSelectionKeyCode:te=b1()?"Meta":"Control",zoomActivationKeyCode:oe=b1()?"Meta":"Control",snapToGrid:me=!1,snapGrid:le=dye,onlyRenderVisibleElements:ht=!1,selectNodesOnDrag:nt=!0,nodesDraggable:$e,nodesConnectable:ct,nodesFocusable:Pe,nodeOrigin:qt=cye,edgesFocusable:Sr,edgesUpdatable:Pn,elementsSelectable:bn,defaultViewport:Wt=fye,minZoom:Rn=.5,maxZoom:wr=2,translateExtent:to=YC,preventScrolling:Gr=!0,nodeExtent:ar,defaultMarkerColor:Or="#b1b1b7",zoomOnScroll:Hr=!0,zoomOnPinch:In=!0,panOnScroll:dn=!1,panOnScrollSpeed:Ci=.5,panOnScrollMode:si=hc.Free,zoomOnDoubleClick:ji=!0,panOnDrag:ps=!0,onPaneClick:xr,onPaneMouseEnter:no,onPaneMouseMove:Ta,onPaneMouseLeave:bo,onPaneScroll:Aa,onPaneContextMenu:On,children:Kt,onEdgeUpdate:Mr,onEdgeContextMenu:Cr,onEdgeDoubleClick:Er,onEdgeMouseEnter:qr,onEdgeMouseMove:Ei,onEdgeMouseLeave:ro,onEdgeUpdateStart:ai,onEdgeUpdateEnd:Nr,edgeUpdaterRadius:gs=10,onNodesChange:Vs,onEdgesChange:li,noDragClassName:_l="nodrag",noWheelClassName:zo="nowheel",noPanClassName:Wr="nopan",fitView:ka=!1,fitViewOptions:W,connectOnClick:ee=!0,attributionPosition:ne,proOptions:ue,defaultEdgeOptions:ie,elevateNodesOnSelect:Fe=!0,elevateEdgesOnSelect:je=!1,disableKeyboardA11y:ot=!1,autoPanOnConnect:Ne=!0,autoPanOnNodeDrag:Ve=!0,connectionRadius:Re=20,isValidConnection:re,onError:ve,style:Xe,id:Qe,...st},at)=>{const mt=Qe||"1";return Z.jsx("div",{...st,style:{...Xe,...hye},ref:at,className:as(["react-flow",i]),"data-testid":"rf__wrapper",id:Qe,children:Z.jsxs(AB,{children:[Z.jsx(sye,{onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:v,onNodeContextMenu:S,onNodeDoubleClick:w,nodeTypes:o,edgeTypes:s,connectionLineType:O,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,selectionKeyCode:Y,selectionOnDrag:Q,selectionMode:j,deleteKeyCode:H,multiSelectionKeyCode:te,panActivationKeyCode:K,zoomActivationKeyCode:oe,onlyRenderVisibleElements:ht,selectNodesOnDrag:nt,defaultViewport:Wt,translateExtent:to,minZoom:Rn,maxZoom:wr,preventScrolling:Gr,zoomOnScroll:Hr,zoomOnPinch:In,zoomOnDoubleClick:ji,panOnScroll:dn,panOnScrollSpeed:Ci,panOnScrollMode:si,panOnDrag:ps,onPaneClick:xr,onPaneMouseEnter:no,onPaneMouseMove:Ta,onPaneMouseLeave:bo,onPaneScroll:Aa,onPaneContextMenu:On,onSelectionContextMenu:D,onSelectionStart:B,onSelectionEnd:R,onEdgeUpdate:Mr,onEdgeContextMenu:Cr,onEdgeDoubleClick:Er,onEdgeMouseEnter:qr,onEdgeMouseMove:Ei,onEdgeMouseLeave:ro,onEdgeUpdateStart:ai,onEdgeUpdateEnd:Nr,edgeUpdaterRadius:gs,defaultMarkerColor:Or,noDragClassName:_l,noWheelClassName:zo,noPanClassName:Wr,elevateEdgesOnSelect:je,rfId:mt,disableKeyboardA11y:ot,nodeOrigin:qt,nodeExtent:ar}),Z.jsx(ime,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,nodesDraggable:$e,nodesConnectable:ct,nodesFocusable:Pe,edgesFocusable:Sr,edgesUpdatable:Pn,elementsSelectable:bn,elevateNodesOnSelect:Fe,minZoom:Rn,maxZoom:wr,nodeExtent:ar,onNodesChange:Vs,onEdgesChange:li,snapToGrid:me,snapGrid:le,connectionMode:I,translateExtent:to,connectOnClick:ee,defaultEdgeOptions:ie,fitView:ka,fitViewOptions:W,onNodesDelete:T,onEdgesDelete:k,onNodeDragStart:x,onNodeDrag:C,onNodeDragStop:A,onSelectionDrag:E,onSelectionDragStart:N,onSelectionDragStop:P,noPanClassName:Wr,nodeOrigin:qt,rfId:mt,autoPanOnConnect:Ne,autoPanOnNodeDrag:Ve,onError:ve,connectionRadius:Re,isValidConnection:re}),Z.jsx(nme,{onSelectionChange:L}),Kt,Z.jsx(Pge,{proOptions:ue,position:ne}),Z.jsx(ume,{rfId:mt,disableKeyboardA11y:ot})]})})});pye.displayName="ReactFlow";const gye=e=>{var t;return(t=e.domNode)==null?void 0:t.querySelector(".react-flow__edgelabel-renderer")};function JIe({children:e}){const t=hr(gye);return t?Cs.createPortal(e,t):null}function eOe(){const e=oi();return M.useCallback(t=>{const{domNode:n,updateNodeDimensions:r}=e.getState(),o=(Array.isArray(t)?t:[t]).reduce((s,a)=>{const l=n==null?void 0:n.querySelector(`.react-flow__node[data-id="${a}"]`);return l&&s.push({id:a,nodeElement:l,forceUpdate:!0}),s},[]);requestAnimationFrame(()=>r(o))},[])}function mye(){const e=[];return function(t,n){if(typeof n!="object"||n===null)return n;for(;e.length>0&&e.at(-1)!==this;)e.pop();return e.includes(n)?"[Circular]":(e.push(n),n)}}const zg=hu("nodes/receivedOpenAPISchema",async(e,{rejectWithValue:t})=>{try{const n=[window.location.origin,"openapi.json"].join("/"),i=await(await fetch(n)).json();return JSON.parse(JSON.stringify(i,mye()))}catch(n){return t({error:n})}});let Wy;const yye=new Uint8Array(16);function vye(){if(!Wy&&(Wy=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Wy))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Wy(yye)}const hi=[];for(let e=0;e<256;++e)hi.push((e+256).toString(16).slice(1));function _ye(e,t=0){return(hi[e[t+0]]+hi[e[t+1]]+hi[e[t+2]]+hi[e[t+3]]+"-"+hi[e[t+4]]+hi[e[t+5]]+"-"+hi[e[t+6]]+hi[e[t+7]]+"-"+hi[e[t+8]]+hi[e[t+9]]+"-"+hi[e[t+10]]+hi[e[t+11]]+hi[e[t+12]]+hi[e[t+13]]+hi[e[t+14]]+hi[e[t+15]]).toLowerCase()}const bye=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),A8={randomUUID:bye};function kB(e,t,n){if(A8.randomUUID&&!t&&!e)return A8.randomUUID();e=e||{};const r=e.random||(e.rng||vye)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){n=n||0;for(let i=0;i<16;++i)t[n+i]=r[i];return t}return _ye(r)}const tOe=500,nOe=320,Sye="node-drag-handle",wye=["ImageField","ImageCollection"],rOe=wye,iOe={input:"inputs",output:"outputs"},oOe=["Collection","IntegerCollection","BooleanCollection","FloatCollection","StringCollection","ImageCollection","LatentsCollection","ConditioningCollection","ControlCollection","ColorCollection"],xye=["IntegerPolymorphic","BooleanPolymorphic","FloatPolymorphic","StringPolymorphic","ImagePolymorphic","LatentsPolymorphic","ConditioningPolymorphic","ControlPolymorphic","ColorPolymorphic"],sOe=["IPAdapterModelField","ControlNetModelField","LoRAModelField","MainModelField","ONNXModelField","SDXLMainModelField","SDXLRefinerModelField","VaeModelField","UNetField","VaeField","ClipField"],PB={integer:"IntegerCollection",boolean:"BooleanCollection",number:"FloatCollection",float:"FloatCollection",string:"StringCollection",ImageField:"ImageCollection",LatentsField:"LatentsCollection",ConditioningField:"ConditioningCollection",ControlField:"ControlCollection",ColorField:"ColorCollection"},Cye=e=>!!(e&&e in PB),RB={integer:"IntegerPolymorphic",boolean:"BooleanPolymorphic",number:"FloatPolymorphic",float:"FloatPolymorphic",string:"StringPolymorphic",ImageField:"ImagePolymorphic",LatentsField:"LatentsPolymorphic",ConditioningField:"ConditioningPolymorphic",ControlField:"ControlPolymorphic",ColorField:"ColorPolymorphic"},aOe={IntegerPolymorphic:"integer",BooleanPolymorphic:"boolean",FloatPolymorphic:"float",StringPolymorphic:"string",ImagePolymorphic:"ImageField",LatentsPolymorphic:"LatentsField",ConditioningPolymorphic:"ConditioningField",ControlPolymorphic:"ControlField",ColorPolymorphic:"ColorField"},Eye=e=>!!(e&&e in RB),lOe={boolean:{color:"green.500",description:J("nodes.booleanDescription"),title:J("nodes.boolean")},BooleanCollection:{color:"green.500",description:J("nodes.booleanCollectionDescription"),title:J("nodes.booleanCollection")},BooleanPolymorphic:{color:"green.500",description:J("nodes.booleanPolymorphicDescription"),title:J("nodes.booleanPolymorphic")},ClipField:{color:"green.500",description:J("nodes.clipFieldDescription"),title:J("nodes.clipField")},Collection:{color:"base.500",description:J("nodes.collectionDescription"),title:J("nodes.collection")},CollectionItem:{color:"base.500",description:J("nodes.collectionItemDescription"),title:J("nodes.collectionItem")},ColorCollection:{color:"pink.300",description:J("nodes.colorCollectionDescription"),title:J("nodes.colorCollection")},ColorField:{color:"pink.300",description:J("nodes.colorFieldDescription"),title:J("nodes.colorField")},ColorPolymorphic:{color:"pink.300",description:J("nodes.colorPolymorphicDescription"),title:J("nodes.colorPolymorphic")},ConditioningCollection:{color:"cyan.500",description:J("nodes.conditioningCollectionDescription"),title:J("nodes.conditioningCollection")},ConditioningField:{color:"cyan.500",description:J("nodes.conditioningFieldDescription"),title:J("nodes.conditioningField")},ConditioningPolymorphic:{color:"cyan.500",description:J("nodes.conditioningPolymorphicDescription"),title:J("nodes.conditioningPolymorphic")},ControlCollection:{color:"teal.500",description:J("nodes.controlCollectionDescription"),title:J("nodes.controlCollection")},ControlField:{color:"teal.500",description:J("nodes.controlFieldDescription"),title:J("nodes.controlField")},ControlNetModelField:{color:"teal.500",description:"TODO",title:"ControlNet"},ControlPolymorphic:{color:"teal.500",description:"Control info passed between nodes.",title:"Control Polymorphic"},DenoiseMaskField:{color:"blue.300",description:J("nodes.denoiseMaskFieldDescription"),title:J("nodes.denoiseMaskField")},enum:{color:"blue.500",description:J("nodes.enumDescription"),title:J("nodes.enum")},float:{color:"orange.500",description:J("nodes.floatDescription"),title:J("nodes.float")},FloatCollection:{color:"orange.500",description:J("nodes.floatCollectionDescription"),title:J("nodes.floatCollection")},FloatPolymorphic:{color:"orange.500",description:J("nodes.floatPolymorphicDescription"),title:J("nodes.floatPolymorphic")},ImageCollection:{color:"purple.500",description:J("nodes.imageCollectionDescription"),title:J("nodes.imageCollection")},ImageField:{color:"purple.500",description:J("nodes.imageFieldDescription"),title:J("nodes.imageField")},ImagePolymorphic:{color:"purple.500",description:J("nodes.imagePolymorphicDescription"),title:J("nodes.imagePolymorphic")},integer:{color:"red.500",description:J("nodes.integerDescription"),title:J("nodes.integer")},IntegerCollection:{color:"red.500",description:J("nodes.integerCollectionDescription"),title:J("nodes.integerCollection")},IntegerPolymorphic:{color:"red.500",description:J("nodes.integerPolymorphicDescription"),title:J("nodes.integerPolymorphic")},IPAdapterField:{color:"green.300",description:"IP-Adapter info passed between nodes.",title:"IP-Adapter"},IPAdapterModelField:{color:"teal.500",description:"IP-Adapter model",title:"IP-Adapter Model"},LatentsCollection:{color:"pink.500",description:J("nodes.latentsCollectionDescription"),title:J("nodes.latentsCollection")},LatentsField:{color:"pink.500",description:J("nodes.latentsFieldDescription"),title:J("nodes.latentsField")},LatentsPolymorphic:{color:"pink.500",description:J("nodes.latentsPolymorphicDescription"),title:J("nodes.latentsPolymorphic")},LoRAModelField:{color:"teal.500",description:J("nodes.loRAModelFieldDescription"),title:J("nodes.loRAModelField")},MainModelField:{color:"teal.500",description:J("nodes.mainModelFieldDescription"),title:J("nodes.mainModelField")},ONNXModelField:{color:"teal.500",description:J("nodes.oNNXModelFieldDescription"),title:J("nodes.oNNXModelField")},Scheduler:{color:"base.500",description:J("nodes.schedulerDescription"),title:J("nodes.scheduler")},SDXLMainModelField:{color:"teal.500",description:J("nodes.sDXLMainModelFieldDescription"),title:J("nodes.sDXLMainModelField")},SDXLRefinerModelField:{color:"teal.500",description:J("nodes.sDXLRefinerModelFieldDescription"),title:J("nodes.sDXLRefinerModelField")},string:{color:"yellow.500",description:J("nodes.stringDescription"),title:J("nodes.string")},StringCollection:{color:"yellow.500",description:J("nodes.stringCollectionDescription"),title:J("nodes.stringCollection")},StringPolymorphic:{color:"yellow.500",description:J("nodes.stringPolymorphicDescription"),title:J("nodes.stringPolymorphic")},UNetField:{color:"red.500",description:J("nodes.uNetFieldDescription"),title:J("nodes.uNetField")},VaeField:{color:"blue.500",description:J("nodes.vaeFieldDescription"),title:J("nodes.vaeField")},VaeModelField:{color:"teal.500",description:J("nodes.vaeModelFieldDescription"),title:J("nodes.vaeModelField")}},k8=(e,t,n)=>{let r=t,i=n;for(;e.find(o=>o.position.x===r&&o.position.y===i);)r=r+50,i=i+50;return{x:r,y:i}},Tye="1.0.0",bw={status:Fa.PENDING,error:null,progress:null,progressImage:null,outputs:[]},ZC={meta:{version:Tye},name:"",author:"",description:"",notes:"",tags:"",contact:"",version:"",exposedFields:[]},IB={nodes:[],edges:[],nodeTemplates:{},isReady:!1,connectionStartParams:null,currentConnectionFieldType:null,shouldShowFieldTypeLegend:!1,shouldShowMinimapPanel:!0,shouldValidateGraph:!0,shouldAnimateEdges:!0,shouldSnapToGrid:!1,shouldColorEdges:!0,isAddNodePopoverOpen:!1,nodeOpacity:1,selectedNodes:[],selectedEdges:[],workflow:ZC,nodeExecutionStates:{},viewport:{x:0,y:0,zoom:1},mouseOverField:null,mouseOverNode:null,nodesToCopy:[],edgesToCopy:[],selectionMode:bu.Partial},xo=(e,t)=>{var l,u;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(c=>c.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!Kr(s))return;const a=(u=s.data)==null?void 0:u.inputs[r];a&&o>-1&&(a.value=i)},OB=nr({name:"nodes",initialState:IB,reducers:{nodesChanged:(e,t)=>{e.nodes=ec(t.payload,e.nodes)},nodeAdded:(e,t)=>{const n=t.payload,r=k8(e.nodes,n.position.x,n.position.y);n.position=r,n.selected=!0,e.nodes=ec(e.nodes.map(i=>({id:i.id,type:"select",selected:!1})),e.nodes),e.edges=Vu(e.edges.map(i=>({id:i.id,type:"select",selected:!1})),e.edges),e.nodes.push(n),Kr(n)&&(e.nodeExecutionStates[n.id]={nodeId:n.id,...bw})},edgesChanged:(e,t)=>{e.edges=Vu(t.payload,e.edges)},connectionStarted:(e,t)=>{var l;e.connectionStartParams=t.payload;const{nodeId:n,handleId:r,handleType:i}=t.payload;if(!n||!r)return;const o=e.nodes.findIndex(u=>u.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!Kr(s))return;const a=i==="source"?s.data.outputs[r]:s.data.inputs[r];e.currentConnectionFieldType=(a==null?void 0:a.type)??null},connectionMade:(e,t)=>{e.currentConnectionFieldType&&(e.edges=KF({...t.payload,type:"default"},e.edges))},connectionEnded:e=>{e.connectionStartParams=null,e.currentConnectionFieldType=null},workflowExposedFieldAdded:(e,t)=>{e.workflow.exposedFields=Hk(e.workflow.exposedFields.concat(t.payload),n=>`${n.nodeId}-${n.fieldName}`)},workflowExposedFieldRemoved:(e,t)=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(n=>!wm(n,t.payload))},fieldLabelChanged:(e,t)=>{const{nodeId:n,fieldName:r,label:i}=t.payload,o=e.nodes.find(a=>a.id===n);if(!Kr(o))return;const s=o.data.inputs[r];s&&(s.label=i)},nodeEmbedWorkflowChanged:(e,t)=>{var s;const{nodeId:n,embedWorkflow:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.embedWorkflow=r)},nodeIsIntermediateChanged:(e,t)=>{var s;const{nodeId:n,isIntermediate:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.isIntermediate=r)},nodeIsOpenChanged:(e,t)=>{var a;const{nodeId:n,isOpen:r}=t.payload,i=e.nodes.findIndex(l=>l.id===n),o=(a=e.nodes)==null?void 0:a[i];if(!Kr(o)&&!uP(o)||(o.data.isOpen=r,!Kr(o)))return;const s=fT([o],e.edges);if(r)s.forEach(l=>{delete l.hidden}),s.forEach(l=>{l.type==="collapsed"&&(e.edges=e.edges.filter(u=>u.id!==l.id))});else{const l=Vge(o,e.nodes,e.edges).filter(d=>Kr(d)&&d.data.isOpen===!1),u=jge(o,e.nodes,e.edges).filter(d=>Kr(d)&&d.data.isOpen===!1),c=[];s.forEach(d=>{var f,h;if(d.target===n&&l.find(p=>p.id===d.source)){d.hidden=!0;const p=c.find(m=>m.source===d.source&&m.target===d.target);p?p.data={count:(((f=p.data)==null?void 0:f.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}if(d.source===n&&u.find(p=>p.id===d.target)){const p=c.find(m=>m.source===d.source&&m.target===d.target);d.hidden=!0,p?p.data={count:(((h=p.data)==null?void 0:h.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}}),c.length&&(e.edges=Vu(c.map(d=>({type:"add",item:d})),e.edges))}},edgesDeleted:(e,t)=>{const r=t.payload.filter(i=>i.type==="collapsed");if(r.length){const i=[];r.forEach(o=>{e.edges.forEach(s=>{s.source===o.source&&s.target===o.target&&i.push({id:s.id,type:"remove"})})}),e.edges=Vu(i,e.edges)}},nodesDeleted:(e,t)=>{t.payload.forEach(n=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(r=>r.nodeId!==n.id),Kr(n)&&delete e.nodeExecutionStates[n.id]})},nodeLabelChanged:(e,t)=>{var s;const{nodeId:n,label:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.label=r)},nodeNotesChanged:(e,t)=>{var s;const{nodeId:n,notes:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.notes=r)},nodeExclusivelySelected:(e,t)=>{const n=t.payload;e.nodes=ec(e.nodes.map(r=>({id:r.id,type:"select",selected:r.id===n})),e.nodes)},selectedNodesChanged:(e,t)=>{e.selectedNodes=t.payload},selectedEdgesChanged:(e,t)=>{e.selectedEdges=t.payload},fieldStringValueChanged:(e,t)=>{xo(e,t)},fieldNumberValueChanged:(e,t)=>{xo(e,t)},fieldBooleanValueChanged:(e,t)=>{xo(e,t)},fieldImageValueChanged:(e,t)=>{xo(e,t)},fieldColorValueChanged:(e,t)=>{xo(e,t)},fieldMainModelValueChanged:(e,t)=>{xo(e,t)},fieldRefinerModelValueChanged:(e,t)=>{xo(e,t)},fieldVaeModelValueChanged:(e,t)=>{xo(e,t)},fieldLoRAModelValueChanged:(e,t)=>{xo(e,t)},fieldControlNetModelValueChanged:(e,t)=>{xo(e,t)},fieldIPAdapterModelValueChanged:(e,t)=>{xo(e,t)},fieldEnumModelValueChanged:(e,t)=>{xo(e,t)},fieldSchedulerValueChanged:(e,t)=>{xo(e,t)},imageCollectionFieldValueChanged:(e,t)=>{var u,c;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(d=>d.id===n);if(o===-1)return;const s=(u=e.nodes)==null?void 0:u[o];if(!Kr(s))return;const a=(c=s.data)==null?void 0:c.inputs[r];if(!a)return;const l=Jn(a.value);if(!l){a.value=i;return}a.value=Hk(l.concat(i),"image_name")},notesNodeValueChanged:(e,t)=>{var s;const{nodeId:n,value:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];uP(o)&&(o.data.notes=r)},shouldShowFieldTypeLegendChanged:(e,t)=>{e.shouldShowFieldTypeLegend=t.payload},shouldShowMinimapPanelChanged:(e,t)=>{e.shouldShowMinimapPanel=t.payload},nodeTemplatesBuilt:(e,t)=>{e.nodeTemplates=t.payload,e.isReady=!0},nodeEditorReset:e=>{e.nodes=[],e.edges=[],e.workflow=Jn(ZC)},shouldValidateGraphChanged:(e,t)=>{e.shouldValidateGraph=t.payload},shouldAnimateEdgesChanged:(e,t)=>{e.shouldAnimateEdges=t.payload},shouldSnapToGridChanged:(e,t)=>{e.shouldSnapToGrid=t.payload},shouldColorEdgesChanged:(e,t)=>{e.shouldColorEdges=t.payload},nodeOpacityChanged:(e,t)=>{e.nodeOpacity=t.payload},workflowNameChanged:(e,t)=>{e.workflow.name=t.payload},workflowDescriptionChanged:(e,t)=>{e.workflow.description=t.payload},workflowTagsChanged:(e,t)=>{e.workflow.tags=t.payload},workflowAuthorChanged:(e,t)=>{e.workflow.author=t.payload},workflowNotesChanged:(e,t)=>{e.workflow.notes=t.payload},workflowVersionChanged:(e,t)=>{e.workflow.version=t.payload},workflowContactChanged:(e,t)=>{e.workflow.contact=t.payload},workflowLoaded:(e,t)=>{const{nodes:n,edges:r,...i}=t.payload;e.workflow=i,e.nodes=ec(n.map(o=>({item:{...o,dragHandle:`.${Sye}`},type:"add"})),[]),e.edges=Vu(r.map(o=>({item:o,type:"add"})),[]),e.nodeExecutionStates=n.reduce((o,s)=>(o[s.id]={nodeId:s.id,...bw},o),{})},workflowReset:e=>{e.workflow=Jn(ZC)},viewportChanged:(e,t)=>{e.viewport=t.payload},mouseOverFieldChanged:(e,t)=>{e.mouseOverField=t.payload},mouseOverNodeChanged:(e,t)=>{e.mouseOverNode=t.payload},selectedAll:e=>{e.nodes=ec(e.nodes.map(t=>({id:t.id,type:"select",selected:!0})),e.nodes),e.edges=Vu(e.edges.map(t=>({id:t.id,type:"select",selected:!0})),e.edges)},selectionCopied:e=>{e.nodesToCopy=e.nodes.filter(t=>t.selected).map(Jn),e.edgesToCopy=e.edges.filter(t=>t.selected).map(Jn)},selectionPasted:e=>{const t=e.nodesToCopy.map(Jn),n=t.map(l=>l.data.id),r=e.edgesToCopy.filter(l=>n.includes(l.source)&&n.includes(l.target)).map(Jn);r.forEach(l=>l.selected=!0),t.forEach(l=>{const u=kB();r.forEach(d=>{d.source===l.data.id&&(d.source=u,d.id=d.id.replace(l.data.id,u)),d.target===l.data.id&&(d.target=u,d.id=d.id.replace(l.data.id,u))}),l.selected=!0,l.id=u,l.data.id=u;const c=k8(e.nodes,l.position.x,l.position.y);l.position=c});const i=t.map(l=>({item:l,type:"add"})),o=e.nodes.map(l=>({id:l.data.id,type:"select",selected:!1})),s=r.map(l=>({item:l,type:"add"})),a=e.edges.map(l=>({id:l.id,type:"select",selected:!1}));e.nodes=ec(i.concat(o),e.nodes),e.edges=Vu(s.concat(a),e.edges),t.forEach(l=>{e.nodeExecutionStates[l.id]={nodeId:l.id,...bw}})},addNodePopoverOpened:e=>{e.isAddNodePopoverOpen=!0},addNodePopoverClosed:e=>{e.isAddNodePopoverOpen=!1},addNodePopoverToggled:e=>{e.isAddNodePopoverOpen=!e.isAddNodePopoverOpen},selectionModeChanged:(e,t)=>{e.selectionMode=t.payload?bu.Full:bu.Partial}},extraReducers:e=>{e.addCase(zg.pending,t=>{t.isReady=!1}),e.addCase(q5,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=Fa.IN_PROGRESS)}),e.addCase(K5,(t,n)=>{const{source_node_id:r,result:i}=n.payload.data,o=t.nodeExecutionStates[r];o&&(o.status=Fa.COMPLETED,o.progress!==null&&(o.progress=1),o.outputs.push(i))}),e.addCase(kb,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=Fa.FAILED,i.error=n.payload.data.error,i.progress=null,i.progressImage=null)}),e.addCase(X5,(t,n)=>{const{source_node_id:r,step:i,total_steps:o,progress_image:s}=n.payload.data,a=t.nodeExecutionStates[r];a&&(a.status=Fa.IN_PROGRESS,a.progress=(i+1)/o,a.progressImage=s??null)}),e.addCase(ah.fulfilled,t=>{rs(t.nodeExecutionStates,n=>{n.status=Fa.PENDING,n.error=null,n.progress=null,n.progressImage=null,n.outputs=[]})}),e.addCase(Iu.fulfilled,t=>{yee(t.nodeExecutionStates,n=>{n.status===Fa.IN_PROGRESS&&(n.status=Fa.PENDING)})})}}),{nodesChanged:uOe,edgesChanged:cOe,nodeAdded:dOe,nodesDeleted:fOe,connectionMade:hOe,connectionStarted:pOe,connectionEnded:gOe,shouldShowFieldTypeLegendChanged:mOe,shouldShowMinimapPanelChanged:yOe,nodeTemplatesBuilt:MB,nodeEditorReset:Aye,imageCollectionFieldValueChanged:vOe,fieldStringValueChanged:_Oe,fieldNumberValueChanged:bOe,fieldBooleanValueChanged:SOe,fieldImageValueChanged:Lb,fieldColorValueChanged:wOe,fieldMainModelValueChanged:xOe,fieldVaeModelValueChanged:COe,fieldLoRAModelValueChanged:EOe,fieldEnumModelValueChanged:TOe,fieldControlNetModelValueChanged:AOe,fieldIPAdapterModelValueChanged:kOe,fieldRefinerModelValueChanged:POe,fieldSchedulerValueChanged:ROe,nodeIsOpenChanged:IOe,nodeLabelChanged:OOe,nodeNotesChanged:MOe,edgesDeleted:NOe,shouldValidateGraphChanged:DOe,shouldAnimateEdgesChanged:LOe,nodeOpacityChanged:$Oe,shouldSnapToGridChanged:FOe,shouldColorEdgesChanged:BOe,selectedNodesChanged:zOe,selectedEdgesChanged:UOe,workflowNameChanged:jOe,workflowDescriptionChanged:VOe,workflowTagsChanged:GOe,workflowAuthorChanged:HOe,workflowNotesChanged:qOe,workflowVersionChanged:WOe,workflowContactChanged:KOe,workflowLoaded:kye,notesNodeValueChanged:XOe,workflowExposedFieldAdded:Pye,workflowExposedFieldRemoved:QOe,fieldLabelChanged:YOe,viewportChanged:ZOe,mouseOverFieldChanged:JOe,selectionCopied:e9e,selectionPasted:t9e,selectedAll:n9e,addNodePopoverOpened:r9e,addNodePopoverClosed:i9e,addNodePopoverToggled:o9e,selectionModeChanged:s9e,nodeEmbedWorkflowChanged:a9e,nodeIsIntermediateChanged:l9e,mouseOverNodeChanged:u9e,nodeExclusivelySelected:c9e}=OB.actions,Rye=OB.reducer,NB={esrganModelName:"RealESRGAN_x4plus.pth"},DB=nr({name:"postprocessing",initialState:NB,reducers:{esrganModelNameChanged:(e,t)=>{e.esrganModelName=t.payload}}}),{esrganModelNameChanged:d9e}=DB.actions,Iye=DB.reducer,Oye={positiveStylePrompt:"",negativeStylePrompt:"",shouldConcatSDXLStylePrompt:!0,shouldUseSDXLRefiner:!1,sdxlImg2ImgDenoisingStrength:.7,refinerModel:null,refinerSteps:20,refinerCFGScale:7.5,refinerScheduler:"euler",refinerPositiveAestheticScore:6,refinerNegativeAestheticScore:2.5,refinerStart:.8},LB=nr({name:"sdxl",initialState:Oye,reducers:{setPositiveStylePromptSDXL:(e,t)=>{e.positiveStylePrompt=t.payload},setNegativeStylePromptSDXL:(e,t)=>{e.negativeStylePrompt=t.payload},setShouldConcatSDXLStylePrompt:(e,t)=>{e.shouldConcatSDXLStylePrompt=t.payload},setShouldUseSDXLRefiner:(e,t)=>{e.shouldUseSDXLRefiner=t.payload},setSDXLImg2ImgDenoisingStrength:(e,t)=>{e.sdxlImg2ImgDenoisingStrength=t.payload},refinerModelChanged:(e,t)=>{e.refinerModel=t.payload},setRefinerSteps:(e,t)=>{e.refinerSteps=t.payload},setRefinerCFGScale:(e,t)=>{e.refinerCFGScale=t.payload},setRefinerScheduler:(e,t)=>{e.refinerScheduler=t.payload},setRefinerPositiveAestheticScore:(e,t)=>{e.refinerPositiveAestheticScore=t.payload},setRefinerNegativeAestheticScore:(e,t)=>{e.refinerNegativeAestheticScore=t.payload},setRefinerStart:(e,t)=>{e.refinerStart=t.payload}}}),{setPositiveStylePromptSDXL:f9e,setNegativeStylePromptSDXL:h9e,setShouldConcatSDXLStylePrompt:p9e,setShouldUseSDXLRefiner:Mye,setSDXLImg2ImgDenoisingStrength:g9e,refinerModelChanged:P8,setRefinerSteps:m9e,setRefinerCFGScale:y9e,setRefinerScheduler:v9e,setRefinerPositiveAestheticScore:_9e,setRefinerNegativeAestheticScore:b9e,setRefinerStart:S9e}=LB.actions,Nye=LB.reducer,Fm=Le("app/userInvoked"),sa=e=>typeof e=="string"?{title:e,status:"info",isClosable:!0,duration:2500}:{status:"info",isClosable:!0,duration:2500,...e},Dye=z.object({status:z.literal(422),error:z.object({detail:z.array(z.object({loc:z.array(z.string()),msg:z.string(),type:z.string()}))})}),$B={isConnected:!1,isProcessing:!1,isGFPGANAvailable:!0,isESRGANAvailable:!0,shouldConfirmOnDelete:!0,currentStep:0,totalSteps:0,currentIteration:0,totalIterations:0,currentStatusHasSteps:!1,isCancelable:!0,enableImageDebugging:!1,toastQueue:[],progressImage:null,shouldAntialiasProgressImage:!1,sessionId:null,cancelType:"immediate",isCancelScheduled:!1,subscribedNodeIds:[],wereModelsReceived:!1,consoleLogLevel:"debug",shouldLogToConsole:!0,statusTranslationKey:"common.statusDisconnected",canceledSession:"",isPersisted:!1,language:"en",isUploading:!1,shouldUseNSFWChecker:!1,shouldUseWatermarker:!1},FB=nr({name:"system",initialState:$B,reducers:{setIsProcessing:(e,t)=>{e.isProcessing=t.payload},setCurrentStatus:(e,t)=>{e.statusTranslationKey=t.payload},setShouldConfirmOnDelete:(e,t)=>{e.shouldConfirmOnDelete=t.payload},setIsCancelable:(e,t)=>{e.isCancelable=t.payload},setEnableImageDebugging:(e,t)=>{e.enableImageDebugging=t.payload},addToast:(e,t)=>{e.toastQueue.push(t.payload)},clearToastQueue:e=>{e.toastQueue=[]},cancelScheduled:e=>{e.isCancelScheduled=!0},scheduledCancelAborted:e=>{e.isCancelScheduled=!1},cancelTypeChanged:(e,t)=>{e.cancelType=t.payload},subscribedNodeIdsSet:(e,t)=>{e.subscribedNodeIds=t.payload},consoleLogLevelChanged:(e,t)=>{e.consoleLogLevel=t.payload},shouldLogToConsoleChanged:(e,t)=>{e.shouldLogToConsole=t.payload},shouldAntialiasProgressImageChanged:(e,t)=>{e.shouldAntialiasProgressImage=t.payload},isPersistedChanged:(e,t)=>{e.isPersisted=t.payload},languageChanged:(e,t)=>{e.language=t.payload},progressImageSet(e,t){e.progressImage=t.payload},shouldUseNSFWCheckerChanged(e,t){e.shouldUseNSFWChecker=t.payload},shouldUseWatermarkerChanged(e,t){e.shouldUseWatermarker=t.payload}},extraReducers(e){e.addCase(L$,(t,n)=>{t.sessionId=n.payload.sessionId,t.canceledSession=""}),e.addCase(F$,t=>{t.sessionId=null}),e.addCase(M$,t=>{t.isConnected=!0,t.isCancelable=!0,t.isProcessing=!1,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.currentIteration=0,t.totalIterations=0,t.statusTranslationKey="common.statusConnected"}),e.addCase(D$,t=>{t.isConnected=!1,t.isProcessing=!1,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusDisconnected"}),e.addCase(q5,t=>{t.isCancelable=!0,t.isProcessing=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusGenerating"}),e.addCase(X5,(t,n)=>{const{step:r,total_steps:i,progress_image:o}=n.payload.data;t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!0,t.currentStep=r+1,t.totalSteps=i,t.progressImage=o??null,t.statusTranslationKey="common.statusGenerating"}),e.addCase(K5,(t,n)=>{const{data:r}=n.payload;t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusProcessingComplete",t.canceledSession===r.graph_execution_state_id&&(t.isProcessing=!1,t.isCancelable=!0)}),e.addCase(j$,t=>{t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null}),e.addCase(Fm,t=>{t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.statusTranslationKey="common.statusPreparing"}),e.addCase(Iu.fulfilled,(t,n)=>{t.canceledSession=n.meta.arg.session_id,t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null,t.toastQueue.push(sa({title:J("toast.canceled"),status:"warning"}))}),e.addMatcher(vD,(t,n)=>{var o,s,a;t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null;let r;const i=5e3;if(((o=n.payload)==null?void 0:o.status)===422){const l=Dye.safeParse(n.payload);if(l.success){l.data.error.detail.map(u=>{t.toastQueue.push(sa({title:$2(h7(u.msg),{length:128}),status:"error",description:$2(`Path: + ${u.loc.join(".")}`,{length:128}),duration:i}))});return}}else(s=n.payload)!=null&&s.error&&(r=(a=n.payload)==null?void 0:a.error);t.toastQueue.push(sa({title:J("toast.serverError"),status:"error",description:$2(Mv(r,"detail","Unknown Error"),{length:128}),duration:i}))}),e.addMatcher(zye,(t,n)=>{t.isProcessing=!1,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusError",t.progressImage=null,t.toastQueue.push(sa({title:J("toast.serverError"),status:"error",description:tte(n.payload.data.error_type)}))})}}),{setIsProcessing:w9e,setShouldConfirmOnDelete:x9e,setCurrentStatus:C9e,setIsCancelable:E9e,setEnableImageDebugging:T9e,addToast:Tn,clearToastQueue:A9e,cancelScheduled:k9e,scheduledCancelAborted:P9e,cancelTypeChanged:R9e,subscribedNodeIdsSet:I9e,consoleLogLevelChanged:O9e,shouldLogToConsoleChanged:M9e,isPersistedChanged:N9e,shouldAntialiasProgressImageChanged:D9e,languageChanged:L9e,progressImageSet:Lye,shouldUseNSFWCheckerChanged:$ye,shouldUseWatermarkerChanged:Fye}=FB.actions,Bye=FB.reducer,zye=os(kb,W$,X$),Uye={searchFolder:null,advancedAddScanModel:null},BB=nr({name:"modelmanager",initialState:Uye,reducers:{setSearchFolder:(e,t)=>{e.searchFolder=t.payload},setAdvancedAddScanModel:(e,t)=>{e.advancedAddScanModel=t.payload}}}),{setSearchFolder:$9e,setAdvancedAddScanModel:F9e}=BB.actions,jye=BB.reducer,zB={shift:!1,ctrl:!1,meta:!1},UB=nr({name:"hotkeys",initialState:zB,reducers:{shiftKeyPressed:(e,t)=>{e.shift=t.payload},ctrlKeyPressed:(e,t)=>{e.ctrl=t.payload},metaKeyPressed:(e,t)=>{e.meta=t.payload}}}),{shiftKeyPressed:B9e,ctrlKeyPressed:z9e,metaKeyPressed:U9e}=UB.actions,Vye=UB.reducer,jB=["txt2img","img2img","unifiedCanvas","nodes","modelManager","batch"],R8=(e,t)=>{typeof t=="number"?e.activeTab=t:e.activeTab=jB.indexOf(t)},VB={activeTab:0,shouldShowImageDetails:!1,shouldUseCanvasBetaLayout:!1,shouldShowExistingModelsInSearch:!1,shouldUseSliders:!1,shouldHidePreview:!1,shouldShowProgressInViewer:!0,shouldShowEmbeddingPicker:!1,shouldAutoChangeDimensions:!1,favoriteSchedulers:[],globalContextMenuCloseTrigger:0,panels:{}},GB=nr({name:"ui",initialState:VB,reducers:{setActiveTab:(e,t)=>{R8(e,t.payload)},setShouldShowImageDetails:(e,t)=>{e.shouldShowImageDetails=t.payload},setShouldUseCanvasBetaLayout:(e,t)=>{e.shouldUseCanvasBetaLayout=t.payload},setShouldHidePreview:(e,t)=>{e.shouldHidePreview=t.payload},setShouldShowExistingModelsInSearch:(e,t)=>{e.shouldShowExistingModelsInSearch=t.payload},setShouldUseSliders:(e,t)=>{e.shouldUseSliders=t.payload},setShouldShowProgressInViewer:(e,t)=>{e.shouldShowProgressInViewer=t.payload},favoriteSchedulersChanged:(e,t)=>{e.favoriteSchedulers=t.payload},toggleEmbeddingPicker:e=>{e.shouldShowEmbeddingPicker=!e.shouldShowEmbeddingPicker},setShouldAutoChangeDimensions:(e,t)=>{e.shouldAutoChangeDimensions=t.payload},contextMenusClosed:e=>{e.globalContextMenuCloseTrigger+=1},panelsChanged:(e,t)=>{e.panels[t.payload.name]=t.payload.value}},extraReducers(e){e.addCase(D_,t=>{R8(t,"img2img")})}}),{setActiveTab:HB,setShouldShowImageDetails:j9e,setShouldUseCanvasBetaLayout:V9e,setShouldShowExistingModelsInSearch:G9e,setShouldUseSliders:H9e,setShouldHidePreview:q9e,setShouldShowProgressInViewer:W9e,favoriteSchedulersChanged:K9e,toggleEmbeddingPicker:X9e,setShouldAutoChangeDimensions:Q9e,contextMenusClosed:Y9e,panelsChanged:Z9e}=GB.actions,Gye=GB.reducer,Hye=Y1(Aq);qB=JC=void 0;var qye=Hye,Wye=function(){var t=[],n=[],r=void 0,i=function(u){return r=u,function(c){return function(d){return qye.compose.apply(void 0,n)(c)(d)}}},o=function(){for(var u,c,d=arguments.length,f=Array(d),h=0;h=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(u){throw u},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,s=!1,a;return{s:function(){n=n.call(e)},n:function(){var u=n.next();return o=u.done,u},e:function(u){s=!0,a=u},f:function(){try{!o&&n.return!=null&&n.return()}finally{if(s)throw a}}}}function KB(e,t){if(e){if(typeof e=="string")return O8(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return O8(e,t)}}function O8(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,i=r.prefix,o=r.driver,s=r.persistWholeStore,a=r.serialize;try{var l=s?a0e:l0e;yield l(t,n,{prefix:i,driver:o,serialize:a})}catch(u){console.warn("redux-remember: persist error",u)}});return function(){return e.apply(this,arguments)}}();function L8(e,t,n,r,i,o,s){try{var a=e[o](s),l=a.value}catch(u){n(u);return}a.done?t(l):Promise.resolve(l).then(r,i)}function $8(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){L8(o,r,i,s,a,"next",l)}function a(l){L8(o,r,i,s,a,"throw",l)}s(void 0)})}}var c0e=function(){var e=$8(function*(t,n,r){var i=r.prefix,o=r.driver,s=r.serialize,a=r.unserialize,l=r.persistThrottle,u=r.persistDebounce,c=r.persistWholeStore;yield n0e(t,n,{prefix:i,driver:o,unserialize:a,persistWholeStore:c});var d={},f=function(){var h=$8(function*(){var p=WB(t.getState(),n);yield u0e(p,d,{prefix:i,driver:o,serialize:s,persistWholeStore:c}),yT(p,d)||t.dispatch({type:Yye,payload:p}),d=p});return function(){return h.apply(this,arguments)}}();u&&u>0?t.subscribe(Jye(f,u)):t.subscribe(Zye(f,l))});return function(n,r,i){return e.apply(this,arguments)}}();const d0e=c0e;function Ug(e){"@babel/helpers - typeof";return Ug=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ug(e)}function F8(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function xw(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:n.state,i=arguments.length>1?arguments[1]:void 0;i.type&&(i.type==="@@INIT"||i.type.startsWith("@@redux/INIT"))&&(n.state=xw({},r));var o=typeof t=="function"?t:rh(t);switch(i.type){case e3:{var s=xw(xw({},n.state),i.payload||{});return n.state=o(s,{type:e3,payload:s}),n.state}default:return o(r,i)}}},m0e=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=r.prefix,o=i===void 0?"@@remember-":i,s=r.serialize,a=s===void 0?function(b,_){return JSON.stringify(b)}:s,l=r.unserialize,u=l===void 0?function(b,_){return JSON.parse(b)}:l,c=r.persistThrottle,d=c===void 0?100:c,f=r.persistDebounce,h=r.persistWholeStore,p=h===void 0?!1:h;if(!t)throw Error("redux-remember error: driver required");if(!Array.isArray(n))throw Error("redux-remember error: rememberedKeys needs to be an array");var m=function(_){return function(y,g,v){var S=_(y,g,v);return d0e(S,n,{driver:t,prefix:o,serialize:a,unserialize:u,persistThrottle:d,persistDebounce:f,persistWholeStore:p}),S}};return m};const J9e=["chakra-ui-color-mode","i18nextLng","ROARR_FILTER","ROARR_LOG"],y0e="@@invokeai-",v0e=["cursorPosition"],_0e=["pendingControlImages"],b0e=["selection","selectedBoardId","galleryView"],S0e=["nodeTemplates","connectionStartParams","currentConnectionFieldType","selectedNodes","selectedEdges","isReady","nodesToCopy","edgesToCopy"],w0e=[],x0e=[],C0e=["currentIteration","currentStep","isCancelable","isConnected","isESRGANAvailable","isGFPGANAvailable","isProcessing","totalIterations","totalSteps","isCancelScheduled","progressImage","wereModelsReceived","isPersisted","isUploading"],E0e=["shouldShowImageDetails","globalContextMenuCloseTrigger","panels"],T0e={canvas:v0e,gallery:b0e,generation:w0e,nodes:S0e,postprocessing:x0e,system:C0e,ui:E0e,controlNet:_0e},A0e=(e,t)=>{const n=I_(e,T0e[t]??[]);return JSON.stringify(n)},k0e={canvas:bD,gallery:rF,generation:zs,nodes:IB,postprocessing:NB,system:$B,config:iD,ui:VB,hotkeys:zB,controlNet:DC},P0e=(e,t)=>cee(JSON.parse(e),k0e[t]),QB=Le("nodes/textToImageGraphBuilt"),YB=Le("nodes/imageToImageGraphBuilt"),ZB=Le("nodes/canvasGraphBuilt"),JB=Le("nodes/nodesGraphBuilt"),R0e=os(QB,YB,ZB,JB),I0e=Le("nodes/workflowLoadRequested"),O0e=e=>{if(R0e(e)&&e.payload.nodes){const t={};return{...e,payload:{...e.payload,nodes:t}}}return zg.fulfilled.match(e)?{...e,payload:""}:MB.match(e)?{...e,payload:""}:e},M0e=["canvas/setCursorPosition","canvas/setStageCoordinates","canvas/setStageScale","canvas/setIsDrawing","canvas/setBoundingBoxCoordinates","canvas/setBoundingBoxDimensions","canvas/setIsDrawing","canvas/addPointToCurrentLine","socket/socketGeneratorProgress","socket/appSocketGeneratorProgress","@@REMEMBER_PERSISTED"],N0e=e=>e,D0e=()=>{Te({actionCreator:Zne,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),{sessionId:o,isProcessing:s}=i.system,a=e.payload;if(s){if(!a){r.debug("No canvas session, skipping cancel");return}if(a!==o){r.debug({canvasSessionId:a,session_id:o},"Canvas session does not match global session, skipping cancel");return}t(Iu({session_id:o}))}}})};Le("app/appStarted");const L0e=()=>{Te({matcher:pe.endpoints.listImages.matchFulfilled,effect:async(e,{dispatch:t,unsubscribe:n,cancelActiveListeners:r})=>{if(e.meta.arg.queryCacheKey!==Eo({board_id:"none",categories:Qr}))return;r(),n();const i=e.payload;if(i.ids.length>0){const o=Ln.getSelectors().selectAll(i)[0];t(ha(o??null))}}})},vT=_u.injectEndpoints({endpoints:e=>({getAppVersion:e.query({query:()=>({url:"app/version",method:"GET"}),providesTags:["AppVersion"],keepUnusedDataFor:864e5}),getAppConfig:e.query({query:()=>({url:"app/config",method:"GET"}),providesTags:["AppConfig"],keepUnusedDataFor:864e5})})}),{useGetAppVersionQuery:eMe,useGetAppConfigQuery:tMe}=vT,$0e=()=>{Te({matcher:vT.endpoints.getAppConfig.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const{infill_methods:r=[],nsfw_methods:i=[],watermarking_methods:o=[]}=e.payload,s=t().generation.infillMethod;r.includes(s)||n(Pne(r[0])),i.includes("nsfw_checker")||n($ye(!1)),o.includes("invisible_watermark")||n(Fye(!1))}})},F0e=Le("app/appStarted"),B0e=()=>{Te({actionCreator:F0e,effect:async(e,{unsubscribe:t,cancelActiveListeners:n})=>{n(),t()}})},_T={memoizeOptions:{resultEqualityCheck:wm}},ez=(e,t)=>{var f,h;const{generation:n,canvas:r,nodes:i,controlNet:o}=e,s=((f=n.initialImage)==null?void 0:f.imageName)===t,a=r.layerState.objects.some(p=>p.kind==="image"&&p.imageName===t),l=i.nodes.filter(Kr).some(p=>wp(p.data.inputs,m=>{var b;return m.type==="ImageField"&&((b=m.value)==null?void 0:b.image_name)===t})),u=wp(o.controlNets,p=>p.controlImage===t||p.processedControlImage===t),c=((h=o.ipAdapterInfo.adapterImage)==null?void 0:h.image_name)===t;return{isInitialImage:s,isCanvasImage:a,isNodesImage:l,isControlNetImage:u,isIPAdapterImage:c}},z0e=Fi([e=>e],e=>{const{imagesToDelete:t}=e.deleteImageModal;return t.length?t.map(r=>ez(e,r.image_name)):[]},_T),U0e=()=>{Te({matcher:pe.endpoints.deleteBoardAndImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{deleted_images:r}=e.payload;let i=!1,o=!1,s=!1,a=!1,l=!1;const u=n();r.forEach(c=>{const d=ez(u,c);d.isInitialImage&&!i&&(t(b5()),i=!0),d.isCanvasImage&&!o&&(t(S5()),o=!0),d.isNodesImage&&!s&&(t(Aye()),s=!0),d.isControlNetImage&&!a&&(t(Nde()),a=!0),d.isIPAdapterImage&&!l&&(t(J$()),l=!0)})}})},j0e=()=>{Te({matcher:os(LC,h1),effect:async(e,{getState:t,dispatch:n,condition:r,cancelActiveListeners:i})=>{i();const o=t(),s=LC.match(e)?e.payload:o.gallery.selectedBoardId,l=(h1.match(e)?e.payload:o.gallery.galleryView)==="images"?Qr:Gl,u={board_id:s??"none",categories:l};if(await r(()=>pe.endpoints.listImages.select(u)(t()).isSuccess,5e3)){const{data:d}=pe.endpoints.listImages.select(u)(t());if(d){const f=f1.selectAll(d)[0];n(ha(f??null))}else n(ha(null))}else n(ha(null))}})},V0e=Le("canvas/canvasSavedToGallery"),G0e=Le("canvas/canvasMaskSavedToGallery"),H0e=Le("canvas/canvasCopiedToClipboard"),q0e=Le("canvas/canvasDownloadedAsImage"),W0e=Le("canvas/canvasMerged"),K0e=Le("canvas/stagingAreaImageSaved"),X0e=Le("canvas/canvasMaskToControlNet"),Q0e=Le("canvas/canvasImageToControlNet");let tz=null,nz=null;const nMe=e=>{tz=e},Fb=()=>tz,rMe=e=>{nz=e},Y0e=()=>nz,Z0e=async e=>new Promise((t,n)=>{e.toBlob(r=>{if(r){t(r);return}n("Unable to create Blob")})}),E1=async(e,t)=>await Z0e(e.toCanvas(t)),Bb=async e=>{const t=Fb();if(!t)return;const{shouldCropToBoundingBoxOnSave:n,boundingBoxCoordinates:r,boundingBoxDimensions:i}=e.canvas,o=t.clone();o.scale({x:1,y:1});const s=o.getAbsolutePosition(),a=n?{x:r.x+s.x,y:r.y+s.y,width:i.width,height:i.height}:o.getClientRect();return E1(o,a)},J0e=e=>{navigator.clipboard.write([new ClipboardItem({[e.type]:e})])},eve=()=>{Te({actionCreator:H0e,effect:async(e,{dispatch:t,getState:n})=>{const r=sb.get().child({namespace:"canvasCopiedToClipboardListener"}),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemCopyingCanvas"),description:J("toast.problemCopyingCanvasDesc"),status:"error"}));return}J0e(o),t(Tn({title:J("toast.canvasCopiedClipboard"),status:"success"}))}})},tve=(e,t)=>{const n=URL.createObjectURL(e),r=document.createElement("a");r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),r.remove()},nve=()=>{Te({actionCreator:q0e,effect:async(e,{dispatch:t,getState:n})=>{const r=sb.get().child({namespace:"canvasSavedToGalleryListener"}),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemDownloadingCanvas"),description:J("toast.problemDownloadingCanvasDesc"),status:"error"}));return}tve(o,"canvas.png"),t(Tn({title:J("toast.canvasDownloaded"),status:"success"}))}})},rve=()=>{Te({actionCreator:Q0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemSavingCanvas"),description:J("toast.problemSavingCanvasDesc"),status:"error"}));return}const{autoAddBoardId:s}=i.gallery,a=await t(pe.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.canvasSentControlnetAssets")}}})).unwrap(),{image_name:l}=a;t(Qc({controlNetId:e.payload.controlNet.controlNetId,controlImage:l}))}})};var bT={exports:{}},zb={},rz={},At={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e._registerNode=e.Konva=e.glob=void 0;var t=Math.PI/180;function n(){return typeof window<"u"&&({}.toString.call(window)==="[object Window]"||{}.toString.call(window)==="[object global]")}e.glob=typeof dt<"u"?dt:typeof window<"u"?window:typeof WorkerGlobalScope<"u"?self:{},e.Konva={_global:e.glob,version:"9.2.0",isBrowser:n(),isUnminified:/param/.test((function(i){}).toString()),dblClickWindow:400,getAngle(i){return e.Konva.angleDeg?i*t:i},enableTrace:!1,pointerEventsEnabled:!0,autoDrawEnabled:!0,hitOnDragEnabled:!1,capturePointerEventsEnabled:!1,_mouseListenClick:!1,_touchListenClick:!1,_pointerListenClick:!1,_mouseInDblClickWindow:!1,_touchInDblClickWindow:!1,_pointerInDblClickWindow:!1,_mouseDblClickPointerId:null,_touchDblClickPointerId:null,_pointerDblClickPointerId:null,pixelRatio:typeof window<"u"&&window.devicePixelRatio||1,dragDistance:3,angleDeg:!0,showWarnings:!0,dragButtons:[0,1],isDragging(){return e.Konva.DD.isDragging},isDragReady(){return!!e.Konva.DD.node},releaseCanvasOnDestroy:!0,document:e.glob.document,_injectGlobal(i){e.glob.Konva=i}};const r=i=>{e.Konva[i.prototype.getClassName()]=i};e._registerNode=r,e.Konva._injectGlobal(e.Konva)})(At);var sr={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Util=e.Transform=void 0;const t=At;class n{constructor(v=[1,0,0,1,0,0]){this.dirty=!1,this.m=v&&v.slice()||[1,0,0,1,0,0]}reset(){this.m[0]=1,this.m[1]=0,this.m[2]=0,this.m[3]=1,this.m[4]=0,this.m[5]=0}copy(){return new n(this.m)}copyInto(v){v.m[0]=this.m[0],v.m[1]=this.m[1],v.m[2]=this.m[2],v.m[3]=this.m[3],v.m[4]=this.m[4],v.m[5]=this.m[5]}point(v){var S=this.m;return{x:S[0]*v.x+S[2]*v.y+S[4],y:S[1]*v.x+S[3]*v.y+S[5]}}translate(v,S){return this.m[4]+=this.m[0]*v+this.m[2]*S,this.m[5]+=this.m[1]*v+this.m[3]*S,this}scale(v,S){return this.m[0]*=v,this.m[1]*=v,this.m[2]*=S,this.m[3]*=S,this}rotate(v){var S=Math.cos(v),w=Math.sin(v),x=this.m[0]*S+this.m[2]*w,C=this.m[1]*S+this.m[3]*w,A=this.m[0]*-w+this.m[2]*S,T=this.m[1]*-w+this.m[3]*S;return this.m[0]=x,this.m[1]=C,this.m[2]=A,this.m[3]=T,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(v,S){var w=this.m[0]+this.m[2]*S,x=this.m[1]+this.m[3]*S,C=this.m[2]+this.m[0]*v,A=this.m[3]+this.m[1]*v;return this.m[0]=w,this.m[1]=x,this.m[2]=C,this.m[3]=A,this}multiply(v){var S=this.m[0]*v.m[0]+this.m[2]*v.m[1],w=this.m[1]*v.m[0]+this.m[3]*v.m[1],x=this.m[0]*v.m[2]+this.m[2]*v.m[3],C=this.m[1]*v.m[2]+this.m[3]*v.m[3],A=this.m[0]*v.m[4]+this.m[2]*v.m[5]+this.m[4],T=this.m[1]*v.m[4]+this.m[3]*v.m[5]+this.m[5];return this.m[0]=S,this.m[1]=w,this.m[2]=x,this.m[3]=C,this.m[4]=A,this.m[5]=T,this}invert(){var v=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),S=this.m[3]*v,w=-this.m[1]*v,x=-this.m[2]*v,C=this.m[0]*v,A=v*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),T=v*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=S,this.m[1]=w,this.m[2]=x,this.m[3]=C,this.m[4]=A,this.m[5]=T,this}getMatrix(){return this.m}decompose(){var v=this.m[0],S=this.m[1],w=this.m[2],x=this.m[3],C=this.m[4],A=this.m[5],T=v*x-S*w;let k={x:C,y:A,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(v!=0||S!=0){var L=Math.sqrt(v*v+S*S);k.rotation=S>0?Math.acos(v/L):-Math.acos(v/L),k.scaleX=L,k.scaleY=T/L,k.skewX=(v*w+S*x)/T,k.skewY=0}else if(w!=0||x!=0){var N=Math.sqrt(w*w+x*x);k.rotation=Math.PI/2-(x>0?Math.acos(-w/N):-Math.acos(w/N)),k.scaleX=T/N,k.scaleY=N,k.skewX=0,k.skewY=(v*w+S*x)/T}return k.rotation=e.Util._getRotation(k.rotation),k}}e.Transform=n;var r="[object Array]",i="[object Number]",o="[object String]",s="[object Boolean]",a=Math.PI/180,l=180/Math.PI,u="#",c="",d="0",f="Konva warning: ",h="Konva error: ",p="rgb(",m={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},b=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,_=[];const y=typeof requestAnimationFrame<"u"&&requestAnimationFrame||function(g){setTimeout(g,60)};e.Util={_isElement(g){return!!(g&&g.nodeType==1)},_isFunction(g){return!!(g&&g.constructor&&g.call&&g.apply)},_isPlainObject(g){return!!g&&g.constructor===Object},_isArray(g){return Object.prototype.toString.call(g)===r},_isNumber(g){return Object.prototype.toString.call(g)===i&&!isNaN(g)&&isFinite(g)},_isString(g){return Object.prototype.toString.call(g)===o},_isBoolean(g){return Object.prototype.toString.call(g)===s},isObject(g){return g instanceof Object},isValidSelector(g){if(typeof g!="string")return!1;var v=g[0];return v==="#"||v==="."||v===v.toUpperCase()},_sign(g){return g===0||g>0?1:-1},requestAnimFrame(g){_.push(g),_.length===1&&y(function(){const v=_;_=[],v.forEach(function(S){S()})})},createCanvasElement(){var g=document.createElement("canvas");try{g.style=g.style||{}}catch{}return g},createImageElement(){return document.createElement("img")},_isInDocument(g){for(;g=g.parentNode;)if(g==document)return!0;return!1},_urlToImage(g,v){var S=e.Util.createImageElement();S.onload=function(){v(S)},S.src=g},_rgbToHex(g,v,S){return((1<<24)+(g<<16)+(v<<8)+S).toString(16).slice(1)},_hexToRgb(g){g=g.replace(u,c);var v=parseInt(g,16);return{r:v>>16&255,g:v>>8&255,b:v&255}},getRandomColor(){for(var g=(Math.random()*16777215<<0).toString(16);g.length<6;)g=d+g;return u+g},getRGB(g){var v;return g in m?(v=m[g],{r:v[0],g:v[1],b:v[2]}):g[0]===u?this._hexToRgb(g.substring(1)):g.substr(0,4)===p?(v=b.exec(g.replace(/ /g,"")),{r:parseInt(v[1],10),g:parseInt(v[2],10),b:parseInt(v[3],10)}):{r:0,g:0,b:0}},colorToRGBA(g){return g=g||"black",e.Util._namedColorToRBA(g)||e.Util._hex3ColorToRGBA(g)||e.Util._hex4ColorToRGBA(g)||e.Util._hex6ColorToRGBA(g)||e.Util._hex8ColorToRGBA(g)||e.Util._rgbColorToRGBA(g)||e.Util._rgbaColorToRGBA(g)||e.Util._hslColorToRGBA(g)},_namedColorToRBA(g){var v=m[g.toLowerCase()];return v?{r:v[0],g:v[1],b:v[2],a:1}:null},_rgbColorToRGBA(g){if(g.indexOf("rgb(")===0){g=g.match(/rgb\(([^)]+)\)/)[1];var v=g.split(/ *, */).map(Number);return{r:v[0],g:v[1],b:v[2],a:1}}},_rgbaColorToRGBA(g){if(g.indexOf("rgba(")===0){g=g.match(/rgba\(([^)]+)\)/)[1];var v=g.split(/ *, */).map((S,w)=>S.slice(-1)==="%"?w===3?parseInt(S)/100:parseInt(S)/100*255:Number(S));return{r:v[0],g:v[1],b:v[2],a:v[3]}}},_hex8ColorToRGBA(g){if(g[0]==="#"&&g.length===9)return{r:parseInt(g.slice(1,3),16),g:parseInt(g.slice(3,5),16),b:parseInt(g.slice(5,7),16),a:parseInt(g.slice(7,9),16)/255}},_hex6ColorToRGBA(g){if(g[0]==="#"&&g.length===7)return{r:parseInt(g.slice(1,3),16),g:parseInt(g.slice(3,5),16),b:parseInt(g.slice(5,7),16),a:1}},_hex4ColorToRGBA(g){if(g[0]==="#"&&g.length===5)return{r:parseInt(g[1]+g[1],16),g:parseInt(g[2]+g[2],16),b:parseInt(g[3]+g[3],16),a:parseInt(g[4]+g[4],16)/255}},_hex3ColorToRGBA(g){if(g[0]==="#"&&g.length===4)return{r:parseInt(g[1]+g[1],16),g:parseInt(g[2]+g[2],16),b:parseInt(g[3]+g[3],16),a:1}},_hslColorToRGBA(g){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(g)){const[v,...S]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(g),w=Number(S[0])/360,x=Number(S[1])/100,C=Number(S[2])/100;let A,T,k;if(x===0)return k=C*255,{r:Math.round(k),g:Math.round(k),b:Math.round(k),a:1};C<.5?A=C*(1+x):A=C+x-C*x;const L=2*C-A,N=[0,0,0];for(let E=0;E<3;E++)T=w+1/3*-(E-1),T<0&&T++,T>1&&T--,6*T<1?k=L+(A-L)*6*T:2*T<1?k=A:3*T<2?k=L+(A-L)*(2/3-T)*6:k=L,N[E]=k*255;return{r:Math.round(N[0]),g:Math.round(N[1]),b:Math.round(N[2]),a:1}}},haveIntersection(g,v){return!(v.x>g.x+g.width||v.x+v.widthg.y+g.height||v.y+v.height1?(A=S,T=w,k=(S-x)*(S-x)+(w-C)*(w-C)):(A=g+N*(S-g),T=v+N*(w-v),k=(A-x)*(A-x)+(T-C)*(T-C))}return[A,T,k]},_getProjectionToLine(g,v,S){var w=e.Util.cloneObject(g),x=Number.MAX_VALUE;return v.forEach(function(C,A){if(!(!S&&A===v.length-1)){var T=v[(A+1)%v.length],k=e.Util._getProjectionToSegment(C.x,C.y,T.x,T.y,g.x,g.y),L=k[0],N=k[1],E=k[2];Ev.length){var A=v;v=g,g=A}for(w=0;w{v.width=0,v.height=0})},drawRoundedRectPath(g,v,S,w){let x=0,C=0,A=0,T=0;typeof w=="number"?x=C=A=T=Math.min(w,v/2,S/2):(x=Math.min(w[0]||0,v/2,S/2),C=Math.min(w[1]||0,v/2,S/2),T=Math.min(w[2]||0,v/2,S/2),A=Math.min(w[3]||0,v/2,S/2)),g.moveTo(x,0),g.lineTo(v-C,0),g.arc(v-C,C,C,Math.PI*3/2,0,!1),g.lineTo(v,S-T),g.arc(v-T,S-T,T,0,Math.PI/2,!1),g.lineTo(A,S),g.arc(A,S-A,A,Math.PI/2,Math.PI,!1),g.lineTo(0,x),g.arc(x,x,x,Math.PI,Math.PI*3/2,!1)}}})(sr);var Qn={},Et={},We={};Object.defineProperty(We,"__esModule",{value:!0});We.getComponentValidator=We.getBooleanValidator=We.getNumberArrayValidator=We.getFunctionValidator=We.getStringOrGradientValidator=We.getStringValidator=We.getNumberOrAutoValidator=We.getNumberOrArrayOfNumbersValidator=We.getNumberValidator=We.alphaComponent=We.RGBComponent=void 0;const gl=At,fr=sr;function ml(e){return fr.Util._isString(e)?'"'+e+'"':Object.prototype.toString.call(e)==="[object Number]"||fr.Util._isBoolean(e)?e:Object.prototype.toString.call(e)}function ive(e){return e>255?255:e<0?0:Math.round(e)}We.RGBComponent=ive;function ove(e){return e>1?1:e<1e-4?1e-4:e}We.alphaComponent=ove;function sve(){if(gl.Konva.isUnminified)return function(e,t){return fr.Util._isNumber(e)||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}We.getNumberValidator=sve;function ave(e){if(gl.Konva.isUnminified)return function(t,n){let r=fr.Util._isNumber(t),i=fr.Util._isArray(t)&&t.length==e;return!r&&!i&&fr.Util.warn(ml(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}We.getNumberOrArrayOfNumbersValidator=ave;function lve(){if(gl.Konva.isUnminified)return function(e,t){var n=fr.Util._isNumber(e),r=e==="auto";return n||r||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}We.getNumberOrAutoValidator=lve;function uve(){if(gl.Konva.isUnminified)return function(e,t){return fr.Util._isString(e)||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}We.getStringValidator=uve;function cve(){if(gl.Konva.isUnminified)return function(e,t){const n=fr.Util._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}We.getStringOrGradientValidator=cve;function dve(){if(gl.Konva.isUnminified)return function(e,t){return fr.Util._isFunction(e)||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a function.'),e}}We.getFunctionValidator=dve;function fve(){if(gl.Konva.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(fr.Util._isArray(e)?e.forEach(function(r){fr.Util._isNumber(r)||fr.Util.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}We.getNumberArrayValidator=fve;function hve(){if(gl.Konva.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}We.getBooleanValidator=hve;function pve(e){if(gl.Konva.isUnminified)return function(t,n){return t==null||fr.Util.isObject(t)||fr.Util.warn(ml(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}We.getComponentValidator=pve;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Factory=void 0;const t=sr,n=We;var r="get",i="set";e.Factory={addGetterSetter(o,s,a,l,u){e.Factory.addGetter(o,s,a),e.Factory.addSetter(o,s,l,u),e.Factory.addOverloadedGetterSetter(o,s)},addGetter(o,s,a){var l=r+t.Util._capitalize(s);o.prototype[l]=o.prototype[l]||function(){var u=this.attrs[s];return u===void 0?a:u}},addSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]||e.Factory.overWriteSetter(o,s,a,l)},overWriteSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]=function(c){return a&&c!==void 0&&c!==null&&(c=a.call(this,c,s)),this._setAttr(s,c),l&&l.call(this),this}},addComponentsGetterSetter(o,s,a,l,u){var c=a.length,d=t.Util._capitalize,f=r+d(s),h=i+d(s),p,m;o.prototype[f]=function(){var _={};for(p=0;p{this._setAttr(s+d(v),void 0)}),this._fireChangeEvent(s,y,_),u&&u.call(this),this},e.Factory.addOverloadedGetterSetter(o,s)},addOverloadedGetterSetter(o,s){var a=t.Util._capitalize(s),l=i+a,u=r+a;o.prototype[s]=function(){return arguments.length?(this[l](arguments[0]),this):this[u]()}},addDeprecatedGetterSetter(o,s,a,l){t.Util.error("Adding deprecated "+s);var u=r+t.Util._capitalize(s),c=s+" property is deprecated and will be removed soon. Look at Konva change log for more information.";o.prototype[u]=function(){t.Util.error(c);var d=this.attrs[s];return d===void 0?a:d},e.Factory.addSetter(o,s,l,function(){t.Util.error(c)}),e.Factory.addOverloadedGetterSetter(o,s)},backCompat(o,s){t.Util.each(s,function(a,l){var u=o.prototype[l],c=r+t.Util._capitalize(a),d=i+t.Util._capitalize(a);function f(){u.apply(this,arguments),t.Util.error('"'+a+'" method is deprecated and will be removed soon. Use ""'+l+'" instead.')}o.prototype[a]=f,o.prototype[c]=f,o.prototype[d]=f})},afterSetFilter(){this._filterUpToDate=!1}}})(Et);var Ns={},Ya={};Object.defineProperty(Ya,"__esModule",{value:!0});Ya.HitContext=Ya.SceneContext=Ya.Context=void 0;const iz=sr,gve=At;function mve(e){var t=[],n=e.length,r=iz.Util,i,o;for(i=0;itypeof c=="number"?Math.floor(c):c)),o+=yve+u.join(B8)+vve)):(o+=a.property,t||(o+=xve+a.val)),o+=Sve;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=Eve&&n.shift()}reset(){var t=this.getCanvas().getPixelRatio();this.setTransform(1*t,0,0,1*t,0,0)}getCanvas(){return this.canvas}clear(t){var n=this.getCanvas();t?this.clearRect(t.x||0,t.y||0,t.width||0,t.height||0):this.clearRect(0,0,n.getWidth()/n.pixelRatio,n.getHeight()/n.pixelRatio)}_applyLineCap(t){const n=t.attrs.lineCap;n&&this.setAttr("lineCap",n)}_applyOpacity(t){var n=t.getAbsoluteOpacity();n!==1&&this.setAttr("globalAlpha",n)}_applyLineJoin(t){const n=t.attrs.lineJoin;n&&this.setAttr("lineJoin",n)}setAttr(t,n){this._context[t]=n}arc(t,n,r,i,o,s){this._context.arc(t,n,r,i,o,s)}arcTo(t,n,r,i,o){this._context.arcTo(t,n,r,i,o)}beginPath(){this._context.beginPath()}bezierCurveTo(t,n,r,i,o,s){this._context.bezierCurveTo(t,n,r,i,o,s)}clearRect(t,n,r,i){this._context.clearRect(t,n,r,i)}clip(...t){this._context.clip.apply(this._context,t)}closePath(){this._context.closePath()}createImageData(t,n){var r=arguments;if(r.length===2)return this._context.createImageData(t,n);if(r.length===1)return this._context.createImageData(t)}createLinearGradient(t,n,r,i){return this._context.createLinearGradient(t,n,r,i)}createPattern(t,n){return this._context.createPattern(t,n)}createRadialGradient(t,n,r,i,o,s){return this._context.createRadialGradient(t,n,r,i,o,s)}drawImage(t,n,r,i,o,s,a,l,u){var c=arguments,d=this._context;c.length===3?d.drawImage(t,n,r):c.length===5?d.drawImage(t,n,r,i,o):c.length===9&&d.drawImage(t,n,r,i,o,s,a,l,u)}ellipse(t,n,r,i,o,s,a,l){this._context.ellipse(t,n,r,i,o,s,a,l)}isPointInPath(t,n,r,i){return r?this._context.isPointInPath(r,t,n,i):this._context.isPointInPath(t,n,i)}fill(...t){this._context.fill.apply(this._context,t)}fillRect(t,n,r,i){this._context.fillRect(t,n,r,i)}strokeRect(t,n,r,i){this._context.strokeRect(t,n,r,i)}fillText(t,n,r,i){i?this._context.fillText(t,n,r,i):this._context.fillText(t,n,r)}measureText(t){return this._context.measureText(t)}getImageData(t,n,r,i){return this._context.getImageData(t,n,r,i)}lineTo(t,n){this._context.lineTo(t,n)}moveTo(t,n){this._context.moveTo(t,n)}rect(t,n,r,i){this._context.rect(t,n,r,i)}putImageData(t,n,r){this._context.putImageData(t,n,r)}quadraticCurveTo(t,n,r,i){this._context.quadraticCurveTo(t,n,r,i)}restore(){this._context.restore()}rotate(t){this._context.rotate(t)}save(){this._context.save()}scale(t,n){this._context.scale(t,n)}setLineDash(t){this._context.setLineDash?this._context.setLineDash(t):"mozDash"in this._context?this._context.mozDash=t:"webkitLineDash"in this._context&&(this._context.webkitLineDash=t)}getLineDash(){return this._context.getLineDash()}setTransform(t,n,r,i,o,s){this._context.setTransform(t,n,r,i,o,s)}stroke(t){t?this._context.stroke(t):this._context.stroke()}strokeText(t,n,r,i){this._context.strokeText(t,n,r,i)}transform(t,n,r,i,o,s){this._context.transform(t,n,r,i,o,s)}translate(t,n){this._context.translate(t,n)}_enableTrace(){var t=this,n=z8.length,r=this.setAttr,i,o,s=function(a){var l=t[a],u;t[a]=function(){return o=mve(Array.prototype.slice.call(arguments,0)),u=l.apply(t,arguments),t._trace({method:a,args:o}),u}};for(i=0;i{i.dragStatus==="dragging"&&(r=!0)}),r},justDragged:!1,get node(){var r;return e.DD._dragElements.forEach(i=>{r=i.node}),r},_dragElements:new Map,_drag(r){const i=[];e.DD._dragElements.forEach((o,s)=>{const{node:a}=o,l=a.getStage();l.setPointersPositions(r),o.pointerId===void 0&&(o.pointerId=n.Util._getFirstPointerId(r));const u=l._changedPointerPositions.find(f=>f.id===o.pointerId);if(u){if(o.dragStatus!=="dragging"){var c=a.dragDistance(),d=Math.max(Math.abs(u.x-o.startPointerPos.x),Math.abs(u.y-o.startPointerPos.y));if(d{o.fire("dragmove",{type:"dragmove",target:o,evt:r},!0)})},_endDragBefore(r){const i=[];e.DD._dragElements.forEach(o=>{const{node:s}=o,a=s.getStage();if(r&&a.setPointersPositions(r),!a._changedPointerPositions.find(c=>c.id===o.pointerId))return;(o.dragStatus==="dragging"||o.dragStatus==="stopped")&&(e.DD.justDragged=!0,t.Konva._mouseListenClick=!1,t.Konva._touchListenClick=!1,t.Konva._pointerListenClick=!1,o.dragStatus="stopped");const u=o.node.getLayer()||o.node instanceof t.Konva.Stage&&o.node;u&&i.indexOf(u)===-1&&i.push(u)}),i.forEach(o=>{o.draw()})},_endDragAfter(r){e.DD._dragElements.forEach((i,o)=>{i.dragStatus==="stopped"&&i.node.fire("dragend",{type:"dragend",target:i.node,evt:r},!0),i.dragStatus!=="dragging"&&e.DD._dragElements.delete(o)})}},t.Konva.isBrowser&&(window.addEventListener("mouseup",e.DD._endDragBefore,!0),window.addEventListener("touchend",e.DD._endDragBefore,!0),window.addEventListener("mousemove",e.DD._drag),window.addEventListener("touchmove",e.DD._drag),window.addEventListener("mouseup",e.DD._endDragAfter,!1),window.addEventListener("touchend",e.DD._endDragAfter,!1))})(Vb);Object.defineProperty(Qn,"__esModule",{value:!0});Qn.Node=void 0;const It=sr,Bm=Et,Xy=Ns,Gu=At,jo=Vb,_r=We;var z0="absoluteOpacity",Qy="allEventListeners",La="absoluteTransform",U8="absoluteScale",Hu="canvas",Mve="Change",Nve="children",Dve="konva",n3="listening",j8="mouseenter",V8="mouseleave",G8="set",H8="Shape",U0=" ",q8="stage",Al="transform",Lve="Stage",r3="visible",$ve=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(U0);let Fve=1;class ut{constructor(t){this._id=Fve++,this.eventListeners={},this.attrs={},this.index=0,this._allEventListeners=null,this.parent=null,this._cache=new Map,this._attachedDepsListeners=new Map,this._lastPos=null,this._batchingTransformChange=!1,this._needClearTransformCache=!1,this._filterUpToDate=!1,this._isUnderCache=!1,this._dragEventId=null,this._shouldFireChangeEvents=!1,this.setAttrs(t),this._shouldFireChangeEvents=!0}hasChildren(){return!1}_clearCache(t){(t===Al||t===La)&&this._cache.get(t)?this._cache.get(t).dirty=!0:t?this._cache.delete(t):this._cache.clear()}_getCache(t,n){var r=this._cache.get(t),i=t===Al||t===La,o=r===void 0||i&&r.dirty===!0;return o&&(r=n.call(this),this._cache.set(t,r)),r}_calculate(t,n,r){if(!this._attachedDepsListeners.get(t)){const i=n.map(o=>o+"Change.konva").join(U0);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(Hu)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===La&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(Hu)){const{scene:t,filter:n,hit:r}=this._cache.get(Hu);It.Util.releaseCanvas(t,n,r),this._cache.delete(Hu)}return this._clearSelfAndDescendantCache(),this._requestDraw(),this}cache(t){var n=t||{},r={};(n.x===void 0||n.y===void 0||n.width===void 0||n.height===void 0)&&(r=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()}));var i=Math.ceil(n.width||r.width),o=Math.ceil(n.height||r.height),s=n.pixelRatio,a=n.x===void 0?Math.floor(r.x):n.x,l=n.y===void 0?Math.floor(r.y):n.y,u=n.offset||0,c=n.drawBorder||!1,d=n.hitCanvasPixelRatio||1;if(!i||!o){It.Util.error("Can not cache the node. Width or height of the node equals 0. Caching is skipped.");return}i+=u*2+1,o+=u*2+1,a-=u,l-=u;var f=new Xy.SceneCanvas({pixelRatio:s,width:i,height:o}),h=new Xy.SceneCanvas({pixelRatio:s,width:0,height:0,willReadFrequently:!0}),p=new Xy.HitCanvas({pixelRatio:d,width:i,height:o}),m=f.getContext(),b=p.getContext();return p.isCache=!0,f.isCache=!0,this._cache.delete(Hu),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(f.getContext()._context.imageSmoothingEnabled=!1,h.getContext()._context.imageSmoothingEnabled=!1),m.save(),b.save(),m.translate(-a,-l),b.translate(-a,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(z0),this._clearSelfAndDescendantCache(U8),this.drawScene(f,this),this.drawHit(p,this),this._isUnderCache=!1,m.restore(),b.restore(),c&&(m.save(),m.beginPath(),m.rect(0,0,i,o),m.closePath(),m.setAttr("strokeStyle","red"),m.setAttr("lineWidth",5),m.stroke(),m.restore()),this._cache.set(Hu,{scene:f,filter:h,hit:p,x:a,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(Hu)}getClientRect(t){throw new Error('abstract "getClientRect" method call')}_transformedRect(t,n){var r=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],i,o,s,a,l=this.getAbsoluteTransform(n);return r.forEach(function(u){var c=l.point(u);i===void 0&&(i=s=c.x,o=a=c.y),i=Math.min(i,c.x),o=Math.min(o,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}),{x:i,y:o,width:s-i,height:a-o}}_drawCachedSceneCanvas(t){t.save(),t._applyOpacity(this),t._applyGlobalCompositeOperation(this);const n=this._getCanvasCache();t.translate(n.x,n.y);var r=this._getCachedSceneCanvas(),i=r.pixelRatio;t.drawImage(r._canvas,0,0,r.width/i,r.height/i),t.restore()}_drawCachedHitCanvas(t){var n=this._getCanvasCache(),r=n.hit;t.save(),t.translate(n.x,n.y),t.drawImage(r._canvas,0,0,r.width/r.pixelRatio,r.height/r.pixelRatio),t.restore()}_getCachedSceneCanvas(){var t=this.filters(),n=this._getCanvasCache(),r=n.scene,i=n.filter,o=i.getContext(),s,a,l,u;if(t){if(!this._filterUpToDate){var c=r.pixelRatio;i.setSize(r.width/r.pixelRatio,r.height/r.pixelRatio);try{for(s=t.length,o.clear(),o.drawImage(r._canvas,0,0,r.getWidth()/c,r.getHeight()/c),a=o.getImageData(0,0,i.getWidth(),i.getHeight()),l=0;l{var n,r;if(!t)return this;for(n in t)n!==Nve&&(r=G8+It.Util._capitalize(n),It.Util._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(n3,this._isListening)}_isListening(t){if(!this.listening())return!1;const r=this.getParent();return r&&r!==t&&this!==t?r._isListening(t):!0}isVisible(){return this._getCache(r3,this._isVisible)}_isVisible(t){if(!this.visible())return!1;const r=this.getParent();return r&&r!==t&&this!==t?r._isVisible(t):!0}shouldDrawHit(t,n=!1){if(t)return this._isVisible(t)&&this._isListening(t);var r=this.getLayer(),i=!1;jo.DD._dragElements.forEach(s=>{s.dragStatus==="dragging"&&(s.node.nodeType==="Stage"||s.node.getLayer()===r)&&(i=!0)});var o=!n&&!Gu.Konva.hitOnDragEnabled&&i;return this.isListening()&&this.isVisible()&&!o}show(){return this.visible(!0),this}hide(){return this.visible(!1),this}getZIndex(){return this.index||0}getAbsoluteZIndex(){var t=this.getDepth(),n=this,r=0,i,o,s,a;function l(u){for(i=[],o=u.length,s=0;s0&&i[0].getDepth()<=t&&l(i)}return n.nodeType!==Lve&&l(n.getStage().getChildren()),r}getDepth(){for(var t=0,n=this.parent;n;)t++,n=n.parent;return t}_batchTransformChanges(t){this._batchingTransformChange=!0,t(),this._batchingTransformChange=!1,this._needClearTransformCache&&(this._clearCache(Al),this._clearSelfAndDescendantCache(La)),this._needClearTransformCache=!1}setPosition(t){return this._batchTransformChanges(()=>{this.x(t.x),this.y(t.y)}),this}getPosition(){return{x:this.x(),y:this.y()}}getRelativePointerPosition(){if(!this.getStage())return null;var t=this.getStage().getPointerPosition();if(!t)return null;var n=this.getAbsoluteTransform().copy();return n.invert(),n.point(t)}getAbsolutePosition(t){let n=!1,r=this.parent;for(;r;){if(r.isCached()){n=!0;break}r=r.parent}n&&!t&&(t=!0);var i=this.getAbsoluteTransform(t).getMatrix(),o=new It.Transform,s=this.offset();return o.m=i.slice(),o.translate(s.x,s.y),o.getTranslation()}setAbsolutePosition(t){var n=this._clearTransform();this.attrs.x=n.x,this.attrs.y=n.y,delete n.x,delete n.y,this._clearCache(Al);var r=this._getAbsoluteTransform().copy();return r.invert(),r.translate(t.x,t.y),t={x:this.attrs.x+r.getTranslation().x,y:this.attrs.y+r.getTranslation().y},this._setTransform(n),this.setPosition({x:t.x,y:t.y}),this._clearCache(Al),this._clearSelfAndDescendantCache(La),this}_setTransform(t){var n;for(n in t)this.attrs[n]=t[n]}_clearTransform(){var t={x:this.x(),y:this.y(),rotation:this.rotation(),scaleX:this.scaleX(),scaleY:this.scaleY(),offsetX:this.offsetX(),offsetY:this.offsetY(),skewX:this.skewX(),skewY:this.skewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,t}move(t){var n=t.x,r=t.y,i=this.x(),o=this.y();return n!==void 0&&(i+=n),r!==void 0&&(o+=r),this.setPosition({x:i,y:o}),this}_eachAncestorReverse(t,n){var r=[],i=this.getParent(),o,s;if(!(n&&n._id===this._id)){for(r.unshift(this);i&&(!n||i._id!==n._id);)r.unshift(i),i=i.parent;for(o=r.length,s=0;s0?(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return It.Util.warn("Node has no parent. moveToBottom function is ignored."),!1;var t=this.index;return t>0?(this.parent.children.splice(t,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0):!1}setZIndex(t){if(!this.parent)return It.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&It.Util.warn("Unexpected value "+t+" for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to "+(this.parent.children.length-1)+".");var n=this.index;return this.parent.children.splice(n,1),this.parent.children.splice(t,0,this),this.parent._setChildrenIndices(),this}getAbsoluteOpacity(){return this._getCache(z0,this._getAbsoluteOpacity)}_getAbsoluteOpacity(){var t=this.opacity(),n=this.getParent();return n&&!n._isUnderCache&&(t*=n.getAbsoluteOpacity()),t}moveTo(t){return this.getParent()!==t&&(this._remove(),t.add(this)),this}toObject(){var t={},n=this.getAttrs(),r,i,o,s,a;t.attrs={};for(r in n)i=n[r],a=It.Util.isObject(i)&&!It.Util._isPlainObject(i)&&!It.Util._isArray(i),!a&&(o=typeof this[r]=="function"&&this[r],delete n[r],s=o?o.call(this):null,n[r]=i,s!==i&&(t.attrs[r]=i));return t.className=this.getClassName(),It.Util._prepareToStringify(t)}toJSON(){return JSON.stringify(this.toObject())}getParent(){return this.parent}findAncestors(t,n,r){var i=[];n&&this._isMatch(t)&&i.push(this);for(var o=this.parent;o;){if(o===r)return i;o._isMatch(t)&&i.push(o),o=o.parent}return i}isAncestorOf(t){return!1}findAncestor(t,n,r){return this.findAncestors(t,n,r)[0]}_isMatch(t){if(!t)return!1;if(typeof t=="function")return t(this);var n=t.replace(/ /g,"").split(","),r=n.length,i,o;for(i=0;i{try{const i=t==null?void 0:t.callback;i&&delete t.callback,It.Util._urlToImage(this.toDataURL(t),function(o){n(o),i==null||i(o)})}catch(i){r(i)}})}toBlob(t){return new Promise((n,r)=>{try{const i=t==null?void 0:t.callback;i&&delete t.callback,this.toCanvas(t).toBlob(o=>{n(o),i==null||i(o)})}catch(i){r(i)}})}setSize(t){return this.width(t.width),this.height(t.height),this}getSize(){return{width:this.width(),height:this.height()}}getClassName(){return this.className||this.nodeType}getType(){return this.nodeType}getDragDistance(){return this.attrs.dragDistance!==void 0?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():Gu.Konva.dragDistance}_off(t,n,r){var i=this.eventListeners[t],o,s,a;for(o=0;o=0;if(r&&!this.isDragging()){var i=!1;jo.DD._dragElements.forEach(o=>{this.isAncestorOf(o.node)&&(i=!0)}),i||this._createDragElement(t)}})}_dragChange(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var t=this.getStage();if(!t)return;const n=jo.DD._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&jo.DD._dragElements.delete(this._id)}}_dragCleanup(){this.off("mousedown.konva"),this.off("touchstart.konva")}isClientRectOnScreen(t={x:0,y:0}){const n=this.getStage();if(!n)return!1;const r={x:-t.x,y:-t.y,width:n.width()+2*t.x,height:n.height()+2*t.y};return It.Util.haveIntersection(r,this.getClientRect())}static create(t,n){return It.Util._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=ut.prototype.getClassName.call(t),i=t.children,o,s,a;n&&(t.attrs.container=n),Gu.Konva[r]||(It.Util.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=Gu.Konva[r];if(o=new l(t.attrs),i)for(s=i.length,a=0;a0}removeChildren(){return this.getChildren().forEach(t=>{t.parent=null,t.index=0,t.remove()}),this.children=[],this._requestDraw(),this}destroyChildren(){return this.getChildren().forEach(t=>{t.parent=null,t.index=0,t.destroy()}),this.children=[],this._requestDraw(),this}add(...t){if(t.length===0)return this;if(t.length>1){for(var n=0;n0?n[0]:void 0}_generalFind(t,n){var r=[];return this._descendants(i=>{const o=i._isMatch(t);return o&&r.push(i),!!(o&&n)}),r}_descendants(t){let n=!1;const r=this.getChildren();for(const i of r){if(n=t(i),n)return!0;if(i.hasChildren()&&(n=i._descendants(t),n))return!0}return!1}toObject(){var t=Cw.Node.prototype.toObject.call(this);return t.children=[],this.getChildren().forEach(n=>{t.children.push(n.toObject())}),t}isAncestorOf(t){for(var n=t.getParent();n;){if(n._id===this._id)return!0;n=n.getParent()}return!1}clone(t){var n=Cw.Node.prototype.clone.call(this,t);return this.getChildren().forEach(function(r){n.add(r.clone())}),n}getAllIntersections(t){var n=[];return this.find("Shape").forEach(function(r){r.isVisible()&&r.intersects(t)&&n.push(r)}),n}_clearSelfAndDescendantCache(t){var n;super._clearSelfAndDescendantCache(t),!this.isCached()&&((n=this.children)===null||n===void 0||n.forEach(function(r){r._clearSelfAndDescendantCache(t)}))}_setChildrenIndices(){var t;(t=this.children)===null||t===void 0||t.forEach(function(n,r){n.index=r}),this._requestDraw()}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas(),o=i&&i.getContext(),s=this._getCanvasCache(),a=s&&s.scene,l=i&&i.isCache;if(!this.isVisible()&&!l)return this;if(a){o.save();var u=this.getAbsoluteTransform(n).getMatrix();o.transform(u[0],u[1],u[2],u[3],u[4],u[5]),this._drawCachedSceneCanvas(o),o.restore()}else this._drawChildren("drawScene",i,n);return this}drawHit(t,n){if(!this.shouldDrawHit(n))return this;var r=this.getLayer(),i=t||r&&r.hitCanvas,o=i&&i.getContext(),s=this._getCanvasCache(),a=s&&s.hit;if(a){o.save();var l=this.getAbsoluteTransform(n).getMatrix();o.transform(l[0],l[1],l[2],l[3],l[4],l[5]),this._drawCachedHitCanvas(o),o.restore()}else this._drawChildren("drawHit",i,n);return this}_drawChildren(t,n,r){var i,o=n&&n.getContext(),s=this.clipWidth(),a=this.clipHeight(),l=this.clipFunc(),u=s&&a||l;const c=r===this;if(u){o.save();var d=this.getAbsoluteTransform(r),f=d.getMatrix();o.transform(f[0],f[1],f[2],f[3],f[4],f[5]),o.beginPath();let b;if(l)b=l.call(this,o,this);else{var h=this.clipX(),p=this.clipY();o.rect(h,p,s,a)}o.clip.apply(o,b),f=d.copy().invert().getMatrix(),o.transform(f[0],f[1],f[2],f[3],f[4],f[5])}var m=!c&&this.globalCompositeOperation()!=="source-over"&&t==="drawScene";m&&(o.save(),o._applyGlobalCompositeOperation(this)),(i=this.children)===null||i===void 0||i.forEach(function(b){b[t](n,r)}),m&&o.restore(),u&&o.restore()}getClientRect(t){var n;t=t||{};var r=t.skipTransform,i=t.relativeTo,o,s,a,l,u={x:1/0,y:1/0,width:0,height:0},c=this;(n=this.children)===null||n===void 0||n.forEach(function(m){if(m.visible()){var b=m.getClientRect({relativeTo:c,skipShadow:t.skipShadow,skipStroke:t.skipStroke});b.width===0&&b.height===0||(o===void 0?(o=b.x,s=b.y,a=b.x+b.width,l=b.y+b.height):(o=Math.min(o,b.x),s=Math.min(s,b.y),a=Math.max(a,b.x+b.width),l=Math.max(l,b.y+b.height)))}});for(var d=this.find("Shape"),f=!1,h=0;hQ.indexOf("pointer")>=0?"pointer":Q.indexOf("touch")>=0?"touch":"mouse",U=Q=>{const j=F(Q);if(j==="pointer")return i.Konva.pointerEventsEnabled&&O.pointer;if(j==="touch")return O.touch;if(j==="mouse")return O.mouse};function V(Q={}){return(Q.clipFunc||Q.clipWidth||Q.clipHeight)&&t.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),Q}const H="Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);";e.stages=[];class Y extends r.Container{constructor(j){super(V(j)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),e.stages.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{V(this.attrs)}),this._checkVisibility()}_validateAdd(j){const K=j.getType()==="Layer",te=j.getType()==="FastLayer";K||te||t.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const j=this.visible()?"":"none";this.content.style.display=j}setContainer(j){if(typeof j===c){if(j.charAt(0)==="."){var K=j.slice(1);j=document.getElementsByClassName(K)[0]}else{var te;j.charAt(0)!=="#"?te=j:te=j.slice(1),j=document.getElementById(te)}if(!j)throw"Can not find container in document with id "+te}return this._setAttr("container",j),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),j.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var j=this.children,K=j.length,te;for(te=0;te-1&&e.stages.splice(K,1),t.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const j=this._pointerPositions[0]||this._changedPointerPositions[0];return j?{x:j.x,y:j.y}:(t.Util.warn(H),null)}_getPointerById(j){return this._pointerPositions.find(K=>K.id===j)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(j){j=j||{},j.x=j.x||0,j.y=j.y||0,j.width=j.width||this.width(),j.height=j.height||this.height();var K=new o.SceneCanvas({width:j.width,height:j.height,pixelRatio:j.pixelRatio||1}),te=K.getContext()._context,oe=this.children;return(j.x||j.y)&&te.translate(-1*j.x,-1*j.y),oe.forEach(function(me){if(me.isVisible()){var le=me._toKonvaCanvas(j);te.drawImage(le._canvas,j.x,j.y,le.getWidth()/le.getPixelRatio(),le.getHeight()/le.getPixelRatio())}}),K}getIntersection(j){if(!j)return null;var K=this.children,te=K.length,oe=te-1,me;for(me=oe;me>=0;me--){const le=K[me].getIntersection(j);if(le)return le}return null}_resizeDOM(){var j=this.width(),K=this.height();this.content&&(this.content.style.width=j+d,this.content.style.height=K+d),this.bufferCanvas.setSize(j,K),this.bufferHitCanvas.setSize(j,K),this.children.forEach(te=>{te.setSize({width:j,height:K}),te.draw()})}add(j,...K){if(arguments.length>1){for(var te=0;teR&&t.Util.warn("The stage has "+oe+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),j.setSize({width:this.width(),height:this.height()}),j.draw(),i.Konva.isBrowser&&this.content.appendChild(j.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(j){return l.hasPointerCapture(j,this)}setPointerCapture(j){l.setPointerCapture(j,this)}releaseCapture(j){l.releaseCapture(j,this)}getLayers(){return this.children}_bindContentEvents(){i.Konva.isBrowser&&I.forEach(([j,K])=>{this.content.addEventListener(j,te=>{this[K](te)},{passive:!1})})}_pointerenter(j){this.setPointersPositions(j);const K=U(j.type);this._fire(K.pointerenter,{evt:j,target:this,currentTarget:this})}_pointerover(j){this.setPointersPositions(j);const K=U(j.type);this._fire(K.pointerover,{evt:j,target:this,currentTarget:this})}_getTargetShape(j){let K=this[j+"targetShape"];return K&&!K.getStage()&&(K=null),K}_pointerleave(j){const K=U(j.type),te=F(j.type);if(K){this.setPointersPositions(j);var oe=this._getTargetShape(te),me=!s.DD.isDragging||i.Konva.hitOnDragEnabled;oe&&me?(oe._fireAndBubble(K.pointerout,{evt:j}),oe._fireAndBubble(K.pointerleave,{evt:j}),this._fire(K.pointerleave,{evt:j,target:this,currentTarget:this}),this[te+"targetShape"]=null):me&&(this._fire(K.pointerleave,{evt:j,target:this,currentTarget:this}),this._fire(K.pointerout,{evt:j,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(j){const K=U(j.type),te=F(j.type);if(K){this.setPointersPositions(j);var oe=!1;this._changedPointerPositions.forEach(me=>{var le=this.getIntersection(me);if(s.DD.justDragged=!1,i.Konva["_"+te+"ListenClick"]=!0,!(le&&le.isListening()))return;i.Konva.capturePointerEventsEnabled&&le.setPointerCapture(me.id),this[te+"ClickStartShape"]=le,le._fireAndBubble(K.pointerdown,{evt:j,pointerId:me.id}),oe=!0;const nt=j.type.indexOf("touch")>=0;le.preventDefault()&&j.cancelable&&nt&&j.preventDefault()}),oe||this._fire(K.pointerdown,{evt:j,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(j){const K=U(j.type),te=F(j.type);if(!K)return;s.DD.isDragging&&s.DD.node.preventDefault()&&j.cancelable&&j.preventDefault(),this.setPointersPositions(j);var oe=!s.DD.isDragging||i.Konva.hitOnDragEnabled;if(!oe)return;var me={};let le=!1;var ht=this._getTargetShape(te);this._changedPointerPositions.forEach(nt=>{const $e=l.getCapturedShape(nt.id)||this.getIntersection(nt),ct=nt.id,Pe={evt:j,pointerId:ct};var qt=ht!==$e;if(qt&&ht&&(ht._fireAndBubble(K.pointerout,Object.assign({},Pe),$e),ht._fireAndBubble(K.pointerleave,Object.assign({},Pe),$e)),$e){if(me[$e._id])return;me[$e._id]=!0}$e&&$e.isListening()?(le=!0,qt&&($e._fireAndBubble(K.pointerover,Object.assign({},Pe),ht),$e._fireAndBubble(K.pointerenter,Object.assign({},Pe),ht),this[te+"targetShape"]=$e),$e._fireAndBubble(K.pointermove,Object.assign({},Pe))):ht&&(this._fire(K.pointerover,{evt:j,target:this,currentTarget:this,pointerId:ct}),this[te+"targetShape"]=null)}),le||this._fire(K.pointermove,{evt:j,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(j){const K=U(j.type),te=F(j.type);if(!K)return;this.setPointersPositions(j);const oe=this[te+"ClickStartShape"],me=this[te+"ClickEndShape"];var le={};let ht=!1;this._changedPointerPositions.forEach(nt=>{const $e=l.getCapturedShape(nt.id)||this.getIntersection(nt);if($e){if($e.releaseCapture(nt.id),le[$e._id])return;le[$e._id]=!0}const ct=nt.id,Pe={evt:j,pointerId:ct};let qt=!1;i.Konva["_"+te+"InDblClickWindow"]?(qt=!0,clearTimeout(this[te+"DblTimeout"])):s.DD.justDragged||(i.Konva["_"+te+"InDblClickWindow"]=!0,clearTimeout(this[te+"DblTimeout"])),this[te+"DblTimeout"]=setTimeout(function(){i.Konva["_"+te+"InDblClickWindow"]=!1},i.Konva.dblClickWindow),$e&&$e.isListening()?(ht=!0,this[te+"ClickEndShape"]=$e,$e._fireAndBubble(K.pointerup,Object.assign({},Pe)),i.Konva["_"+te+"ListenClick"]&&oe&&oe===$e&&($e._fireAndBubble(K.pointerclick,Object.assign({},Pe)),qt&&me&&me===$e&&$e._fireAndBubble(K.pointerdblclick,Object.assign({},Pe)))):(this[te+"ClickEndShape"]=null,i.Konva["_"+te+"ListenClick"]&&this._fire(K.pointerclick,{evt:j,target:this,currentTarget:this,pointerId:ct}),qt&&this._fire(K.pointerdblclick,{evt:j,target:this,currentTarget:this,pointerId:ct}))}),ht||this._fire(K.pointerup,{evt:j,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),i.Konva["_"+te+"ListenClick"]=!1,j.cancelable&&te!=="touch"&&j.preventDefault()}_contextmenu(j){this.setPointersPositions(j);var K=this.getIntersection(this.getPointerPosition());K&&K.isListening()?K._fireAndBubble(L,{evt:j}):this._fire(L,{evt:j,target:this,currentTarget:this})}_wheel(j){this.setPointersPositions(j);var K=this.getIntersection(this.getPointerPosition());K&&K.isListening()?K._fireAndBubble(B,{evt:j}):this._fire(B,{evt:j,target:this,currentTarget:this})}_pointercancel(j){this.setPointersPositions(j);const K=l.getCapturedShape(j.pointerId)||this.getIntersection(this.getPointerPosition());K&&K._fireAndBubble(S,l.createEvent(j)),l.releaseCapture(j.pointerId)}_lostpointercapture(j){l.releaseCapture(j.pointerId)}setPointersPositions(j){var K=this._getContentPosition(),te=null,oe=null;j=j||window.event,j.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(j.touches,me=>{this._pointerPositions.push({id:me.identifier,x:(me.clientX-K.left)/K.scaleX,y:(me.clientY-K.top)/K.scaleY})}),Array.prototype.forEach.call(j.changedTouches||j.touches,me=>{this._changedPointerPositions.push({id:me.identifier,x:(me.clientX-K.left)/K.scaleX,y:(me.clientY-K.top)/K.scaleY})})):(te=(j.clientX-K.left)/K.scaleX,oe=(j.clientY-K.top)/K.scaleY,this.pointerPos={x:te,y:oe},this._pointerPositions=[{x:te,y:oe,id:t.Util._getFirstPointerId(j)}],this._changedPointerPositions=[{x:te,y:oe,id:t.Util._getFirstPointerId(j)}])}_setPointerPosition(j){t.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(j)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var j=this.content.getBoundingClientRect();return{top:j.top,left:j.left,scaleX:j.width/this.content.clientWidth||1,scaleY:j.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new o.SceneCanvas({width:this.width(),height:this.height()}),this.bufferHitCanvas=new o.HitCanvas({pixelRatio:1,width:this.width(),height:this.height()}),!!i.Konva.isBrowser){var j=this.container();if(!j)throw"Stage has no container. A container is required.";j.innerHTML="",this.content=document.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),j.appendChild(this.content),this._resizeDOM()}}cache(){return t.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach(function(j){j.batchDraw()}),this}}e.Stage=Y,Y.prototype.nodeType=u,(0,a._registerNode)(Y),n.Factory.addGetterSetter(Y,"container")})(az);var zm={},jr={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.shapes=void 0;const t=At,n=sr,r=Et,i=Qn,o=We,s=At,a=ko;var l="hasShadow",u="shadowRGBA",c="patternImage",d="linearGradient",f="radialGradient";let h;function p(){return h||(h=n.Util.createCanvasElement().getContext("2d"),h)}e.shapes={};function m(A){const T=this.attrs.fillRule;T?A.fill(T):A.fill()}function b(A){A.stroke()}function _(A){A.fill()}function y(A){A.stroke()}function g(){this._clearCache(l)}function v(){this._clearCache(u)}function S(){this._clearCache(c)}function w(){this._clearCache(d)}function x(){this._clearCache(f)}class C extends i.Node{constructor(T){super(T);let k;for(;k=n.Util.getRandomColor(),!(k&&!(k in e.shapes)););this.colorKey=k,e.shapes[k]=this}getContext(){return n.Util.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return n.Util.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(l,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(c,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var T=p();const k=T.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(k&&k.setTransform){const L=new n.Transform;L.translate(this.fillPatternX(),this.fillPatternY()),L.rotate(t.Konva.getAngle(this.fillPatternRotation())),L.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),L.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const N=L.getMatrix(),E=typeof DOMMatrix>"u"?{a:N[0],b:N[1],c:N[2],d:N[3],e:N[4],f:N[5]}:new DOMMatrix(N);k.setTransform(E)}return k}}_getLinearGradient(){return this._getCache(d,this.__getLinearGradient)}__getLinearGradient(){var T=this.fillLinearGradientColorStops();if(T){for(var k=p(),L=this.fillLinearGradientStartPoint(),N=this.fillLinearGradientEndPoint(),E=k.createLinearGradient(L.x,L.y,N.x,N.y),P=0;Pthis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops()))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],()=>this.strokeEnabled()&&this.strokeWidth()&&!!(this.stroke()||this.strokeLinearGradientColorStops()))}hasHitStroke(){const T=this.hitStrokeWidth();return T==="auto"?this.hasStroke():this.strokeEnabled()&&!!T}intersects(T){var k=this.getStage(),L=k.bufferHitCanvas,N;return L.getContext().clear(),this.drawHit(L,null,!0),N=L.context.getImageData(Math.round(T.x),Math.round(T.y),1,1).data,N[3]>0}destroy(){return i.Node.prototype.destroy.call(this),delete e.shapes[this.colorKey],delete this.colorKey,this}_useBufferCanvas(T){var k;if(!this.getStage()||!((k=this.attrs.perfectDrawEnabled)!==null&&k!==void 0?k:!0))return!1;const N=T||this.hasFill(),E=this.hasStroke(),P=this.getAbsoluteOpacity()!==1;if(N&&E&&P)return!0;const D=this.hasShadow(),B=this.shadowForStrokeEnabled();return!!(N&&E&&D&&B)}setStrokeHitEnabled(T){n.Util.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),T?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var T=this.size();return{x:this._centroid?-T.width/2:0,y:this._centroid?-T.height/2:0,width:T.width,height:T.height}}getClientRect(T={}){const k=T.skipTransform,L=T.relativeTo,N=this.getSelfRect(),P=!T.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,D=N.width+P,B=N.height+P,R=!T.skipShadow&&this.hasShadow(),I=R?this.shadowOffsetX():0,O=R?this.shadowOffsetY():0,F=D+Math.abs(I),U=B+Math.abs(O),V=R&&this.shadowBlur()||0,H=F+V*2,Y=U+V*2,Q={width:H,height:Y,x:-(P/2+V)+Math.min(I,0)+N.x,y:-(P/2+V)+Math.min(O,0)+N.y};return k?Q:this._transformedRect(Q,L)}drawScene(T,k){var L=this.getLayer(),N=T||L.getCanvas(),E=N.getContext(),P=this._getCanvasCache(),D=this.getSceneFunc(),B=this.hasShadow(),R,I,O,F=N.isCache,U=k===this;if(!this.isVisible()&&!U)return this;if(P){E.save();var V=this.getAbsoluteTransform(k).getMatrix();return E.transform(V[0],V[1],V[2],V[3],V[4],V[5]),this._drawCachedSceneCanvas(E),E.restore(),this}if(!D)return this;if(E.save(),this._useBufferCanvas()&&!F){R=this.getStage(),I=R.bufferCanvas,O=I.getContext(),O.clear(),O.save(),O._applyLineJoin(this);var H=this.getAbsoluteTransform(k).getMatrix();O.transform(H[0],H[1],H[2],H[3],H[4],H[5]),D.call(this,O,this),O.restore();var Y=I.pixelRatio;B&&E._applyShadow(this),E._applyOpacity(this),E._applyGlobalCompositeOperation(this),E.drawImage(I._canvas,0,0,I.width/Y,I.height/Y)}else{if(E._applyLineJoin(this),!U){var H=this.getAbsoluteTransform(k).getMatrix();E.transform(H[0],H[1],H[2],H[3],H[4],H[5]),E._applyOpacity(this),E._applyGlobalCompositeOperation(this)}B&&E._applyShadow(this),D.call(this,E,this)}return E.restore(),this}drawHit(T,k,L=!1){if(!this.shouldDrawHit(k,L))return this;var N=this.getLayer(),E=T||N.hitCanvas,P=E&&E.getContext(),D=this.hitFunc()||this.sceneFunc(),B=this._getCanvasCache(),R=B&&B.hit;if(this.colorKey||n.Util.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),R){P.save();var I=this.getAbsoluteTransform(k).getMatrix();return P.transform(I[0],I[1],I[2],I[3],I[4],I[5]),this._drawCachedHitCanvas(P),P.restore(),this}if(!D)return this;if(P.save(),P._applyLineJoin(this),!(this===k)){var F=this.getAbsoluteTransform(k).getMatrix();P.transform(F[0],F[1],F[2],F[3],F[4],F[5])}return D.call(this,P,this),P.restore(),this}drawHitFromCache(T=0){var k=this._getCanvasCache(),L=this._getCachedSceneCanvas(),N=k.hit,E=N.getContext(),P=N.getWidth(),D=N.getHeight(),B,R,I,O,F,U;E.clear(),E.drawImage(L._canvas,0,0,P,D);try{for(B=E.getImageData(0,0,P,D),R=B.data,I=R.length,O=n.Util._hexToRgb(this.colorKey),F=0;FT?(R[F]=O.r,R[F+1]=O.g,R[F+2]=O.b,R[F+3]=255):R[F+3]=0;E.putImageData(B,0,0)}catch(V){n.Util.error("Unable to draw hit graph from cached scene canvas. "+V.message)}return this}hasPointerCapture(T){return a.hasPointerCapture(T,this)}setPointerCapture(T){a.setPointerCapture(T,this)}releaseCapture(T){a.releaseCapture(T,this)}}e.Shape=C,C.prototype._fillFunc=m,C.prototype._strokeFunc=b,C.prototype._fillFuncHit=_,C.prototype._strokeFuncHit=y,C.prototype._centroid=!1,C.prototype.nodeType="Shape",(0,s._registerNode)(C),C.prototype.eventListeners={},C.prototype.on.call(C.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",g),C.prototype.on.call(C.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",v),C.prototype.on.call(C.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",S),C.prototype.on.call(C.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",w),C.prototype.on.call(C.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",x),r.Factory.addGetterSetter(C,"stroke",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(C,"strokeWidth",2,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillAfterStrokeEnabled",!1),r.Factory.addGetterSetter(C,"hitStrokeWidth","auto",(0,o.getNumberOrAutoValidator)()),r.Factory.addGetterSetter(C,"strokeHitEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(C,"perfectDrawEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(C,"shadowForStrokeEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(C,"lineJoin"),r.Factory.addGetterSetter(C,"lineCap"),r.Factory.addGetterSetter(C,"sceneFunc"),r.Factory.addGetterSetter(C,"hitFunc"),r.Factory.addGetterSetter(C,"dash"),r.Factory.addGetterSetter(C,"dashOffset",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"shadowColor",void 0,(0,o.getStringValidator)()),r.Factory.addGetterSetter(C,"shadowBlur",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"shadowOpacity",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(C,"shadowOffset",["x","y"]),r.Factory.addGetterSetter(C,"shadowOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"shadowOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternImage"),r.Factory.addGetterSetter(C,"fill",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(C,"fillPatternX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillLinearGradientColorStops"),r.Factory.addGetterSetter(C,"strokeLinearGradientColorStops"),r.Factory.addGetterSetter(C,"fillRadialGradientStartRadius",0),r.Factory.addGetterSetter(C,"fillRadialGradientEndRadius",0),r.Factory.addGetterSetter(C,"fillRadialGradientColorStops"),r.Factory.addGetterSetter(C,"fillPatternRepeat","repeat"),r.Factory.addGetterSetter(C,"fillEnabled",!0),r.Factory.addGetterSetter(C,"strokeEnabled",!0),r.Factory.addGetterSetter(C,"shadowEnabled",!0),r.Factory.addGetterSetter(C,"dashEnabled",!0),r.Factory.addGetterSetter(C,"strokeScaleEnabled",!0),r.Factory.addGetterSetter(C,"fillPriority","color"),r.Factory.addComponentsGetterSetter(C,"fillPatternOffset",["x","y"]),r.Factory.addGetterSetter(C,"fillPatternOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(C,"fillPatternScale",["x","y"]),r.Factory.addGetterSetter(C,"fillPatternScaleX",1,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternScaleY",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(C,"fillLinearGradientStartPoint",["x","y"]),r.Factory.addComponentsGetterSetter(C,"strokeLinearGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillLinearGradientStartPointX",0),r.Factory.addGetterSetter(C,"strokeLinearGradientStartPointX",0),r.Factory.addGetterSetter(C,"fillLinearGradientStartPointY",0),r.Factory.addGetterSetter(C,"strokeLinearGradientStartPointY",0),r.Factory.addComponentsGetterSetter(C,"fillLinearGradientEndPoint",["x","y"]),r.Factory.addComponentsGetterSetter(C,"strokeLinearGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillLinearGradientEndPointX",0),r.Factory.addGetterSetter(C,"strokeLinearGradientEndPointX",0),r.Factory.addGetterSetter(C,"fillLinearGradientEndPointY",0),r.Factory.addGetterSetter(C,"strokeLinearGradientEndPointY",0),r.Factory.addComponentsGetterSetter(C,"fillRadialGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillRadialGradientStartPointX",0),r.Factory.addGetterSetter(C,"fillRadialGradientStartPointY",0),r.Factory.addComponentsGetterSetter(C,"fillRadialGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillRadialGradientEndPointX",0),r.Factory.addGetterSetter(C,"fillRadialGradientEndPointY",0),r.Factory.addGetterSetter(C,"fillPatternRotation",0),r.Factory.addGetterSetter(C,"fillRule",void 0,(0,o.getStringValidator)()),r.Factory.backCompat(C,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"})})(jr);Object.defineProperty(zm,"__esModule",{value:!0});zm.Layer=void 0;const Oa=sr,Ew=Yc,xd=Qn,wT=Et,W8=Ns,Vve=We,Gve=jr,Hve=At;var qve="#",Wve="beforeDraw",Kve="draw",cz=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],Xve=cz.length;class fh extends Ew.Container{constructor(t){super(t),this.canvas=new W8.SceneCanvas,this.hitCanvas=new W8.HitCanvas({pixelRatio:1}),this._waitingForDraw=!1,this.on("visibleChange.konva",this._checkVisibility),this._checkVisibility(),this.on("imageSmoothingEnabledChange.konva",this._setSmoothEnabled),this._setSmoothEnabled()}createPNGStream(){return this.canvas._canvas.createPNGStream()}getCanvas(){return this.canvas}getNativeCanvasElement(){return this.canvas._canvas}getHitCanvas(){return this.hitCanvas}getContext(){return this.getCanvas().getContext()}clear(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this}setZIndex(t){super.setZIndex(t);var n=this.getStage();return n&&n.content&&(n.content.removeChild(this.getNativeCanvasElement()),t{this.draw(),this._waitingForDraw=!1})),this}getIntersection(t){if(!this.isListening()||!this.isVisible())return null;for(var n=1,r=!1;;){for(let i=0;i0)return{antialiased:!0};return{}}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas();return this._fire(Wve,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),Ew.Container.prototype.drawScene.call(this,i,n),this._fire(Kve,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),Ew.Container.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){Oa.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return Oa.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening()}toggleHitCanvas(){if(!(!this.parent||!this.parent.content)){var t=this.parent,n=!!this.hitCanvas._canvas.parentNode;n?t.content.removeChild(this.hitCanvas._canvas):t.content.appendChild(this.hitCanvas._canvas)}}destroy(){return Oa.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}zm.Layer=fh;fh.prototype.nodeType="Layer";(0,Hve._registerNode)(fh);wT.Factory.addGetterSetter(fh,"imageSmoothingEnabled",!0);wT.Factory.addGetterSetter(fh,"clearBeforeDraw",!0);wT.Factory.addGetterSetter(fh,"hitGraphEnabled",!0,(0,Vve.getBooleanValidator)());var Hb={};Object.defineProperty(Hb,"__esModule",{value:!0});Hb.FastLayer=void 0;const Qve=sr,Yve=zm,Zve=At;class xT extends Yve.Layer{constructor(t){super(t),this.listening(!1),Qve.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}Hb.FastLayer=xT;xT.prototype.nodeType="FastLayer";(0,Zve._registerNode)(xT);var hh={};Object.defineProperty(hh,"__esModule",{value:!0});hh.Group=void 0;const Jve=sr,e1e=Yc,t1e=At;class CT extends e1e.Container{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&Jve.Util.throw("You may only add groups and shapes to groups.")}}hh.Group=CT;CT.prototype.nodeType="Group";(0,t1e._registerNode)(CT);var ph={};Object.defineProperty(ph,"__esModule",{value:!0});ph.Animation=void 0;const Tw=At,K8=sr;var Aw=function(){return Tw.glob.performance&&Tw.glob.performance.now?function(){return Tw.glob.performance.now()}:function(){return new Date().getTime()}}();class na{constructor(t,n){this.id=na.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:Aw(),frameRate:0},this.func=t,this.setLayers(n)}setLayers(t){var n=[];return t?t.length>0?n=t:n=[t]:n=[],this.layers=n,this}getLayers(){return this.layers}addLayer(t){var n=this.layers,r=n.length,i;for(i=0;ithis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():p<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=p,this.update())}getTime(){return this._time}setPosition(p){this.prevPos=this._pos,this.propFunc(p),this._pos=p}getPosition(p){return p===void 0&&(p=this._time),this.func(p,this.begin,this._change,this.duration)}play(){this.state=a,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=l,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(p){this.pause(),this._time=p,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){var p=this.getTimer()-this._startTime;this.state===a?this.setTime(p):this.state===l&&this.setTime(this.duration-p)}pause(){this.state=s,this.fire("onPause")}getTimer(){return new Date().getTime()}}class f{constructor(p){var m=this,b=p.node,_=b._id,y,g=p.easing||e.Easings.Linear,v=!!p.yoyo,S;typeof p.duration>"u"?y=.3:p.duration===0?y=.001:y=p.duration,this.node=b,this._id=u++;var w=b.getLayer()||(b instanceof i.Konva.Stage?b.getLayers():null);w||t.Util.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new n.Animation(function(){m.tween.onEnterFrame()},w),this.tween=new d(S,function(x){m._tweenFunc(x)},g,0,1,y*1e3,v),this._addListeners(),f.attrs[_]||(f.attrs[_]={}),f.attrs[_][this._id]||(f.attrs[_][this._id]={}),f.tweens[_]||(f.tweens[_]={});for(S in p)o[S]===void 0&&this._addAttr(S,p[S]);this.reset(),this.onFinish=p.onFinish,this.onReset=p.onReset,this.onUpdate=p.onUpdate}_addAttr(p,m){var b=this.node,_=b._id,y,g,v,S,w,x,C,A;if(v=f.tweens[_][p],v&&delete f.attrs[_][v][p],y=b.getAttr(p),t.Util._isArray(m))if(g=[],w=Math.max(m.length,y.length),p==="points"&&m.length!==y.length&&(m.length>y.length?(C=y,y=t.Util._prepareArrayForTween(y,m,b.closed())):(x=m,m=t.Util._prepareArrayForTween(m,y,b.closed()))),p.indexOf("fill")===0)for(S=0;S{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueEnd&&p.setAttr("points",m.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueStart&&p.points(m.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(p){return this.tween.seek(p*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var p=this.node._id,m=this._id,b=f.tweens[p],_;this.pause();for(_ in b)delete f.tweens[p][_];delete f.attrs[p][m]}}e.Tween=f,f.attrs={},f.tweens={},r.Node.prototype.to=function(h){var p=h.onFinish;h.node=this,h.onFinish=function(){this.destroy(),p&&p()};var m=new f(h);m.play()},e.Easings={BackEaseIn(h,p,m,b){var _=1.70158;return m*(h/=b)*h*((_+1)*h-_)+p},BackEaseOut(h,p,m,b){var _=1.70158;return m*((h=h/b-1)*h*((_+1)*h+_)+1)+p},BackEaseInOut(h,p,m,b){var _=1.70158;return(h/=b/2)<1?m/2*(h*h*(((_*=1.525)+1)*h-_))+p:m/2*((h-=2)*h*(((_*=1.525)+1)*h+_)+2)+p},ElasticEaseIn(h,p,m,b,_,y){var g=0;return h===0?p:(h/=b)===1?p+m:(y||(y=b*.3),!_||_0?t:n),c=s*n,d=a*(a>0?t:n),f=l*(l>0?n:t);return{x:u,y:r?-1*f:d,width:c-u,height:f-d}}}qb.Arc=yl;yl.prototype._centroid=!0;yl.prototype.className="Arc";yl.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,r1e._registerNode)(yl);Wb.Factory.addGetterSetter(yl,"innerRadius",0,(0,Kb.getNumberValidator)());Wb.Factory.addGetterSetter(yl,"outerRadius",0,(0,Kb.getNumberValidator)());Wb.Factory.addGetterSetter(yl,"angle",0,(0,Kb.getNumberValidator)());Wb.Factory.addGetterSetter(yl,"clockwise",!1,(0,Kb.getBooleanValidator)());var Xb={},Um={};Object.defineProperty(Um,"__esModule",{value:!0});Um.Line=void 0;const Qb=Et,i1e=jr,fz=We,o1e=At;function i3(e,t,n,r,i,o,s){var a=Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2)),l=Math.sqrt(Math.pow(i-n,2)+Math.pow(o-r,2)),u=s*a/(a+l),c=s*l/(a+l),d=n-u*(i-e),f=r-u*(o-t),h=n+c*(i-e),p=r+c*(o-t);return[d,f,h,p]}function Q8(e,t){var n=e.length,r=[],i,o;for(i=2;i4){for(a=this.getTensionPoints(),l=a.length,u=o?0:4,o||t.quadraticCurveTo(a[0],a[1],a[2],a[3]);u{let u,c,d;u=l/2,c=0;for(let h=0;h<20;h++)d=u*e.tValues[20][h]+u,c+=e.cValues[20][h]*r(s,a,d);return u*c};e.getCubicArcLength=t;const n=(s,a,l)=>{l===void 0&&(l=1);const u=s[0]-2*s[1]+s[2],c=a[0]-2*a[1]+a[2],d=2*s[1]-2*s[0],f=2*a[1]-2*a[0],h=4*(u*u+c*c),p=4*(u*d+c*f),m=d*d+f*f;if(h===0)return l*Math.sqrt(Math.pow(s[2]-s[0],2)+Math.pow(a[2]-a[0],2));const b=p/(2*h),_=m/h,y=l+b,g=_-b*b,v=y*y+g>0?Math.sqrt(y*y+g):0,S=b*b+g>0?Math.sqrt(b*b+g):0,w=b+Math.sqrt(b*b+g)!==0?g*Math.log(Math.abs((y+v)/(b+S))):0;return Math.sqrt(h)/2*(y*v-b*S+w)};e.getQuadraticArcLength=n;function r(s,a,l){const u=i(1,l,s),c=i(1,l,a),d=u*u+c*c;return Math.sqrt(d)}const i=(s,a,l)=>{const u=l.length-1;let c,d;if(u===0)return 0;if(s===0){d=0;for(let f=0;f<=u;f++)d+=e.binomialCoefficients[u][f]*Math.pow(1-a,u-f)*Math.pow(a,f)*l[f];return d}else{c=new Array(u);for(let f=0;f{let u=1,c=s/a,d=(s-l(c))/a,f=0;for(;u>.001;){const h=l(c+d),p=Math.abs(s-h)/a;if(p500)break}return c};e.t2length=o})(hz);Object.defineProperty(gh,"__esModule",{value:!0});gh.Path=void 0;const s1e=Et,a1e=jr,l1e=At,Cd=hz;class Dr extends a1e.Shape{constructor(t){super(t),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=Dr.parsePathData(this.data()),this.pathLength=Dr.getPathLength(this.dataArray)}_sceneFunc(t){var n=this.dataArray;t.beginPath();for(var r=!1,i=0;ic?u:c,b=u>c?1:u/c,_=u>c?c/u:1;t.translate(a,l),t.rotate(h),t.scale(b,_),t.arc(0,0,m,d,d+f,1-p),t.scale(1/b,1/_),t.rotate(-h),t.translate(-a,-l);break;case"z":r=!0,t.closePath();break}}!r&&!this.hasFill()?t.strokeShape(this):t.fillStrokeShape(this)}getSelfRect(){var t=[];this.dataArray.forEach(function(u){if(u.command==="A"){var c=u.points[4],d=u.points[5],f=u.points[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;p-=h){const m=Dr.getPointOnEllipticalArc(u.points[0],u.points[1],u.points[2],u.points[3],p,0);t.push(m.x,m.y)}else for(let p=c+h;pn[i].pathLength;)t-=n[i].pathLength,++i;if(i===o)return r=n[i-1].points.slice(-2),{x:r[0],y:r[1]};if(t<.01)return r=n[i].points.slice(0,2),{x:r[0],y:r[1]};var s=n[i],a=s.points;switch(s.command){case"L":return Dr.getPointOnLine(t,s.start.x,s.start.y,a[0],a[1]);case"C":return Dr.getPointOnCubicBezier((0,Cd.t2length)(t,Dr.getPathLength(n),m=>(0,Cd.getCubicArcLength)([s.start.x,a[0],a[2],a[4]],[s.start.y,a[1],a[3],a[5]],m)),s.start.x,s.start.y,a[0],a[1],a[2],a[3],a[4],a[5]);case"Q":return Dr.getPointOnQuadraticBezier((0,Cd.t2length)(t,Dr.getPathLength(n),m=>(0,Cd.getQuadraticArcLength)([s.start.x,a[0],a[2]],[s.start.y,a[1],a[3]],m)),s.start.x,s.start.y,a[0],a[1],a[2],a[3]);case"A":var l=a[0],u=a[1],c=a[2],d=a[3],f=a[4],h=a[5],p=a[6];return f+=h*t/s.pathLength,Dr.getPointOnEllipticalArc(l,u,c,d,f,p)}return null}static getPointOnLine(t,n,r,i,o,s,a){s===void 0&&(s=n),a===void 0&&(a=r);var l=(o-r)/(i-n+1e-8),u=Math.sqrt(t*t/(1+l*l));i0&&!isNaN(p[0]);){var y=null,g=[],v=l,S=u,w,x,C,A,T,k,L,N,E,P;switch(h){case"l":l+=p.shift(),u+=p.shift(),y="L",g.push(l,u);break;case"L":l=p.shift(),u=p.shift(),g.push(l,u);break;case"m":var D=p.shift(),B=p.shift();if(l+=D,u+=B,y="M",s.length>2&&s[s.length-1].command==="z"){for(var R=s.length-2;R>=0;R--)if(s[R].command==="M"){l=s[R].points[0]+D,u=s[R].points[1]+B;break}}g.push(l,u),h="l";break;case"M":l=p.shift(),u=p.shift(),y="M",g.push(l,u),h="L";break;case"h":l+=p.shift(),y="L",g.push(l,u);break;case"H":l=p.shift(),y="L",g.push(l,u);break;case"v":u+=p.shift(),y="L",g.push(l,u);break;case"V":u=p.shift(),y="L",g.push(l,u);break;case"C":g.push(p.shift(),p.shift(),p.shift(),p.shift()),l=p.shift(),u=p.shift(),g.push(l,u);break;case"c":g.push(l+p.shift(),u+p.shift(),l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="C",g.push(l,u);break;case"S":x=l,C=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),C=u+(u-w.points[3])),g.push(x,C,p.shift(),p.shift()),l=p.shift(),u=p.shift(),y="C",g.push(l,u);break;case"s":x=l,C=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),C=u+(u-w.points[3])),g.push(x,C,l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="C",g.push(l,u);break;case"Q":g.push(p.shift(),p.shift()),l=p.shift(),u=p.shift(),g.push(l,u);break;case"q":g.push(l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="Q",g.push(l,u);break;case"T":x=l,C=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),C=u+(u-w.points[1])),l=p.shift(),u=p.shift(),y="Q",g.push(x,C,l,u);break;case"t":x=l,C=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),C=u+(u-w.points[1])),l+=p.shift(),u+=p.shift(),y="Q",g.push(x,C,l,u);break;case"A":A=p.shift(),T=p.shift(),k=p.shift(),L=p.shift(),N=p.shift(),E=l,P=u,l=p.shift(),u=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(E,P,l,u,L,N,A,T,k);break;case"a":A=p.shift(),T=p.shift(),k=p.shift(),L=p.shift(),N=p.shift(),E=l,P=u,l+=p.shift(),u+=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(E,P,l,u,L,N,A,T,k);break}s.push({command:y||h,points:g,start:{x:v,y:S},pathLength:this.calcLength(v,S,y||h,g)})}(h==="z"||h==="Z")&&s.push({command:"z",points:[],start:void 0,pathLength:0})}return s}static calcLength(t,n,r,i){var o,s,a,l,u=Dr;switch(r){case"L":return u.getLineLength(t,n,i[0],i[1]);case"C":return(0,Cd.getCubicArcLength)([t,i[0],i[2],i[4]],[n,i[1],i[3],i[5]],1);case"Q":return(0,Cd.getQuadraticArcLength)([t,i[0],i[2]],[n,i[1],i[3]],1);case"A":o=0;var c=i[4],d=i[5],f=i[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;l-=h)a=u.getPointOnEllipticalArc(i[0],i[1],i[2],i[3],l,0),o+=u.getLineLength(s.x,s.y,a.x,a.y),s=a;else for(l=c+h;l1&&(a*=Math.sqrt(h),l*=Math.sqrt(h));var p=Math.sqrt((a*a*(l*l)-a*a*(f*f)-l*l*(d*d))/(a*a*(f*f)+l*l*(d*d)));o===s&&(p*=-1),isNaN(p)&&(p=0);var m=p*a*f/l,b=p*-l*d/a,_=(t+r)/2+Math.cos(c)*m-Math.sin(c)*b,y=(n+i)/2+Math.sin(c)*m+Math.cos(c)*b,g=function(T){return Math.sqrt(T[0]*T[0]+T[1]*T[1])},v=function(T,k){return(T[0]*k[0]+T[1]*k[1])/(g(T)*g(k))},S=function(T,k){return(T[0]*k[1]=1&&(A=0),s===0&&A>0&&(A=A-2*Math.PI),s===1&&A<0&&(A=A+2*Math.PI),[_,y,a,l,w,A,c,s]}}gh.Path=Dr;Dr.prototype.className="Path";Dr.prototype._attrsAffectingSize=["data"];(0,l1e._registerNode)(Dr);s1e.Factory.addGetterSetter(Dr,"data");Object.defineProperty(Xb,"__esModule",{value:!0});Xb.Arrow=void 0;const Yb=Et,u1e=Um,pz=We,c1e=At,Y8=gh;class Jc extends u1e.Line{_sceneFunc(t){super._sceneFunc(t);var n=Math.PI*2,r=this.points(),i=r,o=this.tension()!==0&&r.length>4;o&&(i=this.getTensionPoints());var s=this.pointerLength(),a=r.length,l,u;if(o){const f=[i[i.length-4],i[i.length-3],i[i.length-2],i[i.length-1],r[a-2],r[a-1]],h=Y8.Path.calcLength(i[i.length-4],i[i.length-3],"C",f),p=Y8.Path.getPointOnQuadraticBezier(Math.min(1,1-s/h),f[0],f[1],f[2],f[3],f[4],f[5]);l=r[a-2]-p.x,u=r[a-1]-p.y}else l=r[a-2]-r[a-4],u=r[a-1]-r[a-3];var c=(Math.atan2(u,l)+n)%n,d=this.pointerWidth();this.pointerAtEnding()&&(t.save(),t.beginPath(),t.translate(r[a-2],r[a-1]),t.rotate(c),t.moveTo(0,0),t.lineTo(-s,d/2),t.lineTo(-s,-d/2),t.closePath(),t.restore(),this.__fillStroke(t)),this.pointerAtBeginning()&&(t.save(),t.beginPath(),t.translate(r[0],r[1]),o?(l=(i[0]+i[2])/2-r[0],u=(i[1]+i[3])/2-r[1]):(l=r[2]-r[0],u=r[3]-r[1]),t.rotate((Math.atan2(-u,-l)+n)%n),t.moveTo(0,0),t.lineTo(-s,d/2),t.lineTo(-s,-d/2),t.closePath(),t.restore(),this.__fillStroke(t))}__fillStroke(t){var n=this.dashEnabled();n&&(this.attrs.dashEnabled=!1,t.setLineDash([])),t.fillStrokeShape(this),n&&(this.attrs.dashEnabled=!0)}getSelfRect(){const t=super.getSelfRect(),n=this.pointerWidth()/2;return{x:t.x-n,y:t.y-n,width:t.width+n*2,height:t.height+n*2}}}Xb.Arrow=Jc;Jc.prototype.className="Arrow";(0,c1e._registerNode)(Jc);Yb.Factory.addGetterSetter(Jc,"pointerLength",10,(0,pz.getNumberValidator)());Yb.Factory.addGetterSetter(Jc,"pointerWidth",10,(0,pz.getNumberValidator)());Yb.Factory.addGetterSetter(Jc,"pointerAtBeginning",!1);Yb.Factory.addGetterSetter(Jc,"pointerAtEnding",!0);var Zb={};Object.defineProperty(Zb,"__esModule",{value:!0});Zb.Circle=void 0;const d1e=Et,f1e=jr,h1e=We,p1e=At;let mh=class extends f1e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.attrs.radius||0,0,Math.PI*2,!1),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius()!==t/2&&this.radius(t/2)}setHeight(t){this.radius()!==t/2&&this.radius(t/2)}};Zb.Circle=mh;mh.prototype._centroid=!0;mh.prototype.className="Circle";mh.prototype._attrsAffectingSize=["radius"];(0,p1e._registerNode)(mh);d1e.Factory.addGetterSetter(mh,"radius",0,(0,h1e.getNumberValidator)());var Jb={};Object.defineProperty(Jb,"__esModule",{value:!0});Jb.Ellipse=void 0;const ET=Et,g1e=jr,gz=We,m1e=At;class Nu extends g1e.Shape{_sceneFunc(t){var n=this.radiusX(),r=this.radiusY();t.beginPath(),t.save(),n!==r&&t.scale(1,r/n),t.arc(0,0,n,0,Math.PI*2,!1),t.restore(),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radiusX()*2}getHeight(){return this.radiusY()*2}setWidth(t){this.radiusX(t/2)}setHeight(t){this.radiusY(t/2)}}Jb.Ellipse=Nu;Nu.prototype.className="Ellipse";Nu.prototype._centroid=!0;Nu.prototype._attrsAffectingSize=["radiusX","radiusY"];(0,m1e._registerNode)(Nu);ET.Factory.addComponentsGetterSetter(Nu,"radius",["x","y"]);ET.Factory.addGetterSetter(Nu,"radiusX",0,(0,gz.getNumberValidator)());ET.Factory.addGetterSetter(Nu,"radiusY",0,(0,gz.getNumberValidator)());var eS={};Object.defineProperty(eS,"__esModule",{value:!0});eS.Image=void 0;const kw=sr,ed=Et,y1e=jr,v1e=At,jm=We;let Ca=class mz extends y1e.Shape{constructor(t){super(t),this.on("imageChange.konva",()=>{this._setImageLoad()}),this._setImageLoad()}_setImageLoad(){const t=this.image();t&&t.complete||t&&t.readyState===4||t&&t.addEventListener&&t.addEventListener("load",()=>{this._requestDraw()})}_useBufferCanvas(){return super._useBufferCanvas(!0)}_sceneFunc(t){const n=this.getWidth(),r=this.getHeight(),i=this.cornerRadius(),o=this.attrs.image;let s;if(o){const a=this.attrs.cropWidth,l=this.attrs.cropHeight;a&&l?s=[o,this.cropX(),this.cropY(),a,l,0,0,n,r]:s=[o,0,0,n,r]}(this.hasFill()||this.hasStroke()||i)&&(t.beginPath(),i?kw.Util.drawRoundedRectPath(t,n,r,i):t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)),o&&(i&&t.clip(),t.drawImage.apply(t,s))}_hitFunc(t){var n=this.width(),r=this.height(),i=this.cornerRadius();t.beginPath(),i?kw.Util.drawRoundedRectPath(t,n,r,i):t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}getWidth(){var t,n;return(t=this.attrs.width)!==null&&t!==void 0?t:(n=this.image())===null||n===void 0?void 0:n.width}getHeight(){var t,n;return(t=this.attrs.height)!==null&&t!==void 0?t:(n=this.image())===null||n===void 0?void 0:n.height}static fromURL(t,n,r=null){var i=kw.Util.createImageElement();i.onload=function(){var o=new mz({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}};eS.Image=Ca;Ca.prototype.className="Image";(0,v1e._registerNode)(Ca);ed.Factory.addGetterSetter(Ca,"cornerRadius",0,(0,jm.getNumberOrArrayOfNumbersValidator)(4));ed.Factory.addGetterSetter(Ca,"image");ed.Factory.addComponentsGetterSetter(Ca,"crop",["x","y","width","height"]);ed.Factory.addGetterSetter(Ca,"cropX",0,(0,jm.getNumberValidator)());ed.Factory.addGetterSetter(Ca,"cropY",0,(0,jm.getNumberValidator)());ed.Factory.addGetterSetter(Ca,"cropWidth",0,(0,jm.getNumberValidator)());ed.Factory.addGetterSetter(Ca,"cropHeight",0,(0,jm.getNumberValidator)());var Kf={};Object.defineProperty(Kf,"__esModule",{value:!0});Kf.Tag=Kf.Label=void 0;const tS=Et,_1e=jr,b1e=hh,TT=We,yz=At;var vz=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],S1e="Change.konva",w1e="none",o3="up",s3="right",a3="down",l3="left",x1e=vz.length;class AT extends b1e.Group{constructor(t){super(t),this.on("add.konva",function(n){this._addListeners(n.child),this._sync()})}getText(){return this.find("Text")[0]}getTag(){return this.find("Tag")[0]}_addListeners(t){var n=this,r,i=function(){n._sync()};for(r=0;r{n=Math.min(n,s.x),r=Math.max(r,s.x),i=Math.min(i,s.y),o=Math.max(o,s.y)}),{x:n,y:i,width:r-n,height:o-i}}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}rS.RegularPolygon=nd;nd.prototype.className="RegularPolygon";nd.prototype._centroid=!0;nd.prototype._attrsAffectingSize=["radius"];(0,R1e._registerNode)(nd);_z.Factory.addGetterSetter(nd,"radius",0,(0,bz.getNumberValidator)());_z.Factory.addGetterSetter(nd,"sides",0,(0,bz.getNumberValidator)());var iS={};Object.defineProperty(iS,"__esModule",{value:!0});iS.Ring=void 0;const Sz=Et,I1e=jr,wz=We,O1e=At;var Z8=Math.PI*2;class rd extends I1e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,Z8,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),Z8,0,!0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.outerRadius()*2}getHeight(){return this.outerRadius()*2}setWidth(t){this.outerRadius(t/2)}setHeight(t){this.outerRadius(t/2)}}iS.Ring=rd;rd.prototype.className="Ring";rd.prototype._centroid=!0;rd.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,O1e._registerNode)(rd);Sz.Factory.addGetterSetter(rd,"innerRadius",0,(0,wz.getNumberValidator)());Sz.Factory.addGetterSetter(rd,"outerRadius",0,(0,wz.getNumberValidator)());var oS={};Object.defineProperty(oS,"__esModule",{value:!0});oS.Sprite=void 0;const id=Et,M1e=jr,N1e=ph,xz=We,D1e=At;class Ea extends M1e.Shape{constructor(t){super(t),this._updated=!0,this.anim=new N1e.Animation(()=>{var n=this._updated;return this._updated=!1,n}),this.on("animationChange.konva",function(){this.frameIndex(0)}),this.on("frameIndexChange.konva",function(){this._updated=!0}),this.on("frameRateChange.konva",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())})}_sceneFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],s=this.frameOffsets(),a=o[i+0],l=o[i+1],u=o[i+2],c=o[i+3],d=this.image();if((this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,u,c),t.closePath(),t.fillStrokeShape(this)),d)if(s){var f=s[n],h=r*2;t.drawImage(d,a,l,u,c,f[h+0],f[h+1],u,c)}else t.drawImage(d,a,l,u,c,0,0,u,c)}_hitFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],s=this.frameOffsets(),a=o[i+2],l=o[i+3];if(t.beginPath(),s){var u=s[n],c=r*2;t.rect(u[c+0],u[c+1],a,l)}else t.rect(0,0,a,l);t.closePath(),t.fillShape(this)}_useBufferCanvas(){return super._useBufferCanvas(!0)}_setInterval(){var t=this;this.interval=setInterval(function(){t._updateIndex()},1e3/this.frameRate())}start(){if(!this.isRunning()){var t=this.getLayer();this.anim.setLayers(t),this._setInterval(),this.anim.start()}}stop(){this.anim.stop(),clearInterval(this.interval)}isRunning(){return this.anim.isRunning()}_updateIndex(){var t=this.frameIndex(),n=this.animation(),r=this.animations(),i=r[n],o=i.length/4;t{t=t.trim();const n=t.indexOf(" ")>=0,r=t.indexOf('"')>=0||t.indexOf("'")>=0;return n&&!r&&(t=`"${t}"`),t}).join(", ")}var Zy;function Rw(){return Zy||(Zy=u3.Util.createCanvasElement().getContext(j1e),Zy)}function J1e(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function e_e(e){e.setAttr("miterLimit",2),e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function t_e(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}let br=class extends F1e.Shape{constructor(t){super(t_e(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(_+=s)}}}_hitFunc(t){var n=this.getWidth(),r=this.getHeight();t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}setText(t){var n=u3.Util._isString(t)?t:t==null?"":t+"";return this._setAttr(V1e,n),this}getWidth(){var t=this.attrs.width===Ed||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===Ed||this.attrs.height===void 0;return t?this.fontSize()*this.textArr.length*this.lineHeight()+this.padding()*2:this.attrs.height}getTextWidth(){return this.textWidth}getTextHeight(){return u3.Util.warn("text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height."),this.textHeight}measureSize(t){var n=Rw(),r=this.fontSize(),i;return n.save(),n.font=this._getContextFont(),i=n.measureText(t),n.restore(),{width:i.width,height:r}}_getContextFont(){return this.fontStyle()+Yy+this.fontVariant()+Yy+(this.fontSize()+W1e)+Z1e(this.fontFamily())}_addTextLine(t){this.align()===Vh&&(t=t.trim());var r=this._getTextWidth(t);return this.textArr.push({text:t,width:r,lastInParagraph:!1})}_getTextWidth(t){var n=this.letterSpacing(),r=t.length;return Rw().measureText(t).width+(r?n*(r-1):0)}_setTextData(){var t=this.text().split(` +`),n=+this.fontSize(),r=0,i=this.lineHeight()*n,o=this.attrs.width,s=this.attrs.height,a=o!==Ed&&o!==void 0,l=s!==Ed&&s!==void 0,u=this.padding(),c=o-u*2,d=s-u*2,f=0,h=this.wrap(),p=h!==tR,m=h!==Q1e&&p,b=this.ellipsis();this.textArr=[],Rw().font=this._getContextFont();for(var _=b?this._getTextWidth(Pw):0,y=0,g=t.length;yc)for(;v.length>0;){for(var w=0,x=v.length,C="",A=0;w>>1,k=v.slice(0,T+1),L=this._getTextWidth(k)+_;L<=c?(w=T+1,C=k,A=L):x=T}if(C){if(m){var N,E=v[C.length],P=E===Yy||E===J8;P&&A<=c?N=C.length:N=Math.max(C.lastIndexOf(Yy),C.lastIndexOf(J8))+1,N>0&&(w=N,C=C.slice(0,w),A=this._getTextWidth(C))}C=C.trimRight(),this._addTextLine(C),r=Math.max(r,A),f+=i;var D=this._shouldHandleEllipsis(f);if(D){this._tryToAddEllipsisToLastLine();break}if(v=v.slice(w),v=v.trimLeft(),v.length>0&&(S=this._getTextWidth(v),S<=c)){this._addTextLine(v),f+=i,r=Math.max(r,S);break}}else break}else this._addTextLine(v),f+=i,r=Math.max(r,S),this._shouldHandleEllipsis(f)&&yd)break}this.textHeight=n,this.textWidth=r}_shouldHandleEllipsis(t){var n=+this.fontSize(),r=this.lineHeight()*n,i=this.attrs.height,o=i!==Ed&&i!==void 0,s=this.padding(),a=i-s*2,l=this.wrap(),u=l!==tR;return!u||o&&t+r>a}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==Ed&&t!==void 0,r=this.padding(),i=t-r*2,o=this.ellipsis(),s=this.textArr[this.textArr.length-1];if(!(!s||!o)){if(n){var a=this._getTextWidth(s.text+Pw)n?null:Gh.Path.getPointAtLengthOfDataArray(t,this.dataArray)}_readDataAttribute(){this.dataArray=Gh.Path.parsePathData(this.attrs.data),this.pathLength=this._getTextPathLength()}_sceneFunc(t){t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline",this.textBaseline()),t.setAttr("textAlign","left"),t.save();var n=this.textDecoration(),r=this.fill(),i=this.fontSize(),o=this.glyphInfo;n==="underline"&&t.beginPath();for(var s=0;s=1){var r=n[0].p0;t.moveTo(r.x,r.y)}for(var i=0;ie+`.${Oz}`).join(" "),iR="nodesRect",u_e=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],c_e={"top-left":-45,"top-center":0,"top-right":45,"middle-right":-90,"middle-left":90,"bottom-left":-135,"bottom-center":180,"bottom-right":135};const d_e="ontouchstart"in vs.Konva._global;function f_e(e,t){if(e==="rotater")return"crosshair";t+=gn.Util.degToRad(c_e[e]||0);var n=(gn.Util.radToDeg(t)%360+360)%360;return gn.Util._inRange(n,315+22.5,360)||gn.Util._inRange(n,0,22.5)?"ns-resize":gn.Util._inRange(n,45-22.5,45+22.5)?"nesw-resize":gn.Util._inRange(n,90-22.5,90+22.5)?"ew-resize":gn.Util._inRange(n,135-22.5,135+22.5)?"nwse-resize":gn.Util._inRange(n,180-22.5,180+22.5)?"ns-resize":gn.Util._inRange(n,225-22.5,225+22.5)?"nesw-resize":gn.Util._inRange(n,270-22.5,270+22.5)?"ew-resize":gn.Util._inRange(n,315-22.5,315+22.5)?"nwse-resize":(gn.Util.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var A1=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],oR=1e8;function h_e(e){return{x:e.x+e.width/2*Math.cos(e.rotation)+e.height/2*Math.sin(-e.rotation),y:e.y+e.height/2*Math.cos(e.rotation)+e.width/2*Math.sin(e.rotation)}}function Mz(e,t,n){const r=n.x+(e.x-n.x)*Math.cos(t)-(e.y-n.y)*Math.sin(t),i=n.y+(e.x-n.x)*Math.sin(t)+(e.y-n.y)*Math.cos(t);return Object.assign(Object.assign({},e),{rotation:e.rotation+t,x:r,y:i})}function p_e(e,t){const n=h_e(e);return Mz(e,t,n)}function g_e(e,t,n){let r=t;for(let i=0;ii.isAncestorOf(this)?(gn.Util.error("Konva.Transformer cannot be an a child of the node you are trying to attach"),!1):!0);this._nodes=t=n,t.length===1&&this.useSingleNodeRotation()?this.rotation(t[0].getAbsoluteRotation()):this.rotation(0),this._nodes.forEach(i=>{const o=()=>{this.nodes().length===1&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),!this._transforming&&!this.isDragging()&&this.update()},s=i._attrsAffectingSize.map(a=>a+"Change."+this._getEventNamespace()).join(" ");i.on(s,o),i.on(u_e.map(a=>a+`.${this._getEventNamespace()}`).join(" "),o),i.on(`absoluteTransformChange.${this._getEventNamespace()}`,o),this._proxyDrag(i)}),this._resetTransformCache();var r=!!this.findOne(".top-left");return r&&this.update(),this}_proxyDrag(t){let n;t.on(`dragstart.${this._getEventNamespace()}`,r=>{n=t.getAbsolutePosition(),!this.isDragging()&&t!==this.findOne(".back")&&this.startDrag(r,!1)}),t.on(`dragmove.${this._getEventNamespace()}`,r=>{if(!n)return;const i=t.getAbsolutePosition(),o=i.x-n.x,s=i.y-n.y;this.nodes().forEach(a=>{if(a===t||a.isDragging())return;const l=a.getAbsolutePosition();a.setAbsolutePosition({x:l.x+o,y:l.y+s}),a.startDrag(r)}),n=null})}getNodes(){return this._nodes||[]}getActiveAnchor(){return this._movingAnchorName}detach(){this._nodes&&this._nodes.forEach(t=>{t.off("."+this._getEventNamespace())}),this._nodes=[],this._resetTransformCache()}_resetTransformCache(){this._clearCache(iR),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(iR,this.__getNodeRect)}__getNodeShape(t,n=this.rotation(),r){var i=t.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),o=t.getAbsoluteScale(r),s=t.getAbsolutePosition(r),a=i.x*o.x-t.offsetX()*o.x,l=i.y*o.y-t.offsetY()*o.y;const u=(vs.Konva.getAngle(t.getAbsoluteRotation())+Math.PI*2)%(Math.PI*2),c={x:s.x+a*Math.cos(u)+l*Math.sin(-u),y:s.y+l*Math.cos(u)+a*Math.sin(u),width:i.width*o.x,height:i.height*o.y,rotation:u};return Mz(c,-vs.Konva.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-oR,y:-oR,width:0,height:0,rotation:0};const n=[];this.nodes().map(u=>{const c=u.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()});var d=[{x:c.x,y:c.y},{x:c.x+c.width,y:c.y},{x:c.x+c.width,y:c.y+c.height},{x:c.x,y:c.y+c.height}],f=u.getAbsoluteTransform();d.forEach(function(h){var p=f.point(h);n.push(p)})});const r=new gn.Transform;r.rotate(-vs.Konva.getAngle(this.rotation()));var i,o,s,a;n.forEach(function(u){var c=r.point(u);i===void 0&&(i=s=c.x,o=a=c.y),i=Math.min(i,c.x),o=Math.min(o,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}),r.invert();const l=r.point({x:i,y:o});return{x:l.x,y:l.y,width:s-i,height:a-o,rotation:vs.Konva.getAngle(this.rotation())}}getX(){return this._getNodeRect().x}getY(){return this._getNodeRect().y}getWidth(){return this._getNodeRect().width}getHeight(){return this._getNodeRect().height}_createElements(){this._createBack(),A1.forEach((function(t){this._createAnchor(t)}).bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new s_e.Rect({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:d_e?10:"auto"}),r=this;n.on("mousedown touchstart",function(i){r._handleMouseDown(i)}),n.on("dragstart",i=>{n.stopDrag(),i.cancelBubble=!0}),n.on("dragend",i=>{i.cancelBubble=!0}),n.on("mouseenter",()=>{var i=vs.Konva.getAngle(this.rotation()),o=f_e(t,i);n.getStage().content&&(n.getStage().content.style.cursor=o),this._cursorChange=!0}),n.on("mouseout",()=>{n.getStage().content&&(n.getStage().content.style.cursor=""),this._cursorChange=!1}),this.add(n)}_createBack(){var t=new o_e.Shape({name:"back",width:0,height:0,draggable:!0,sceneFunc(n){var r=this.getParent(),i=r.padding();n.beginPath(),n.rect(-i,-i,this.width()+i*2,this.height()+i*2),n.moveTo(this.width()/2,-i),r.rotateEnabled()&&n.lineTo(this.width()/2,-r.rotateAnchorOffset()*gn.Util._sign(this.height())-i),n.fillStrokeShape(this)},hitFunc:(n,r)=>{if(this.shouldOverdrawWholeArea()){var i=this.padding();n.beginPath(),n.rect(-i,-i,r.width()+i*2,r.height()+i*2),n.fillStrokeShape(r)}}});this.add(t),this._proxyDrag(t),t.on("dragstart",n=>{n.cancelBubble=!0}),t.on("dragmove",n=>{n.cancelBubble=!0}),t.on("dragend",n=>{n.cancelBubble=!0}),this.on("dragmove",n=>{this.update()})}_handleMouseDown(t){this._movingAnchorName=t.target.name().split(" ")[0];var n=this._getNodeRect(),r=n.width,i=n.height,o=Math.sqrt(Math.pow(r,2)+Math.pow(i,2));this.sin=Math.abs(i/o),this.cos=Math.abs(r/o),typeof window<"u"&&(window.addEventListener("mousemove",this._handleMouseMove),window.addEventListener("touchmove",this._handleMouseMove),window.addEventListener("mouseup",this._handleMouseUp,!0),window.addEventListener("touchend",this._handleMouseUp,!0)),this._transforming=!0;var s=t.target.getAbsolutePosition(),a=t.target.getStage().getPointerPosition();this._anchorDragOffset={x:a.x-s.x,y:a.y-s.y},this._fire("transformstart",{evt:t.evt,target:this.getNode()}),this._nodes.forEach(l=>{l._fire("transformstart",{evt:t.evt,target:l})})}_handleMouseMove(t){var n,r,i,o=this.findOne("."+this._movingAnchorName),s=o.getStage();s.setPointersPositions(t);const a=s.getPointerPosition();let l={x:a.x-this._anchorDragOffset.x,y:a.y-this._anchorDragOffset.y};const u=o.getAbsolutePosition();this.anchorDragBoundFunc()&&(l=this.anchorDragBoundFunc()(u,l,t)),o.setAbsolutePosition(l);const c=o.getAbsolutePosition();if(!(u.x===c.x&&u.y===c.y)){if(this._movingAnchorName==="rotater"){var d=this._getNodeRect();n=o.x()-d.width/2,r=-o.y()+d.height/2;let N=Math.atan2(-r,n)+Math.PI/2;d.height<0&&(N-=Math.PI);var f=vs.Konva.getAngle(this.rotation());const E=f+N,P=vs.Konva.getAngle(this.rotationSnapTolerance()),B=g_e(this.rotationSnaps(),E,P)-d.rotation,R=p_e(d,B);this._fitNodesInto(R,t);return}var h=this.shiftBehavior(),p;h==="inverted"?p=this.keepRatio()&&!t.shiftKey:h==="none"?p=this.keepRatio():p=this.keepRatio()||t.shiftKey;var g=this.centeredScaling()||t.altKey;if(this._movingAnchorName==="top-left"){if(p){var m=g?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-right").x(),y:this.findOne(".bottom-right").y()};i=Math.sqrt(Math.pow(m.x-o.x(),2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-left").x()>m.x?-1:1,_=this.findOne(".top-left").y()>m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-left").x(m.x-n),this.findOne(".top-left").y(m.y-r)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(o.y());else if(this._movingAnchorName==="top-right"){if(p){var m=g?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-left").x(),y:this.findOne(".bottom-left").y()};i=Math.sqrt(Math.pow(o.x()-m.x,2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-right").x()m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-right").x(m.x+n),this.findOne(".top-right").y(m.y-r)}var y=o.position();this.findOne(".top-left").y(y.y),this.findOne(".bottom-right").x(y.x)}else if(this._movingAnchorName==="middle-left")this.findOne(".top-left").x(o.x());else if(this._movingAnchorName==="middle-right")this.findOne(".bottom-right").x(o.x());else if(this._movingAnchorName==="bottom-left"){if(p){var m=g?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".top-right").x(),y:this.findOne(".top-right").y()};i=Math.sqrt(Math.pow(m.x-o.x(),2)+Math.pow(o.y()-m.y,2));var b=m.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(gn.Util._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(gn.Util._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var s=new gn.Transform;if(s.rotate(vs.Konva.getAngle(this.rotation())),this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("left")>=0){const d=s.point({x:-this.padding()*2,y:0});if(t.x+=d.x,t.y+=d.y,t.width+=this.padding()*2,this._movingAnchorName=this._movingAnchorName.replace("left","right"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,!o){this.update();return}}else if(this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("right")>=0){const d=s.point({x:this.padding()*2,y:0});if(this._movingAnchorName=this._movingAnchorName.replace("right","left"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.width+=this.padding()*2,!o){this.update();return}}if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("top")>=0){const d=s.point({x:0,y:-this.padding()*2});if(t.x+=d.x,t.y+=d.y,this._movingAnchorName=this._movingAnchorName.replace("top","bottom"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.height+=this.padding()*2,!o){this.update();return}}else if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const d=s.point({x:0,y:this.padding()*2});if(this._movingAnchorName=this._movingAnchorName.replace("bottom","top"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.height+=this.padding()*2,!o){this.update();return}}if(this.boundBoxFunc()){const d=this.boundBoxFunc()(r,t);d?t=d:gn.Util.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const a=1e7,l=new gn.Transform;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/a,r.height/a);const u=new gn.Transform;u.translate(t.x,t.y),u.rotate(t.rotation),u.scale(t.width/a,t.height/a);const c=u.multiply(l.invert());this._nodes.forEach(d=>{var f;const h=d.getParent().getAbsoluteTransform(),p=d.getTransform().copy();p.translate(d.offsetX(),d.offsetY());const m=new gn.Transform;m.multiply(h.copy().invert()).multiply(c).multiply(h).multiply(p);const b=m.decompose();d.setAttrs(b),this._fire("transform",{evt:n,target:d}),d._fire("transform",{evt:n,target:d}),(f=d.getLayer())===null||f===void 0||f.batchDraw()}),this.rotation(gn.Util._getRotation(t.rotation)),this._resetTransformCache(),this.update(),this.getLayer().batchDraw()}forceUpdate(){this._resetTransformCache(),this.update()}_batchChangeChild(t,n){this.findOne(t).setAttrs(n)}update(){var t,n=this._getNodeRect();this.rotation(gn.Util._getRotation(n.rotation));var r=n.width,i=n.height,o=this.enabledAnchors(),s=this.resizeEnabled(),a=this.padding(),l=this.anchorSize();const u=this.find("._anchor");u.forEach(d=>{d.setAttrs({width:l,height:l,offsetX:l/2,offsetY:l/2,stroke:this.anchorStroke(),strokeWidth:this.anchorStrokeWidth(),fill:this.anchorFill(),cornerRadius:this.anchorCornerRadius()})}),this._batchChangeChild(".top-left",{x:0,y:0,offsetX:l/2+a,offsetY:l/2+a,visible:s&&o.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:r/2,y:0,offsetY:l/2+a,visible:s&&o.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:r,y:0,offsetX:l/2-a,offsetY:l/2+a,visible:s&&o.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:i/2,offsetX:l/2+a,visible:s&&o.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:r,y:i/2,offsetX:l/2-a,visible:s&&o.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:i,offsetX:l/2+a,offsetY:l/2-a,visible:s&&o.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:r/2,y:i,offsetY:l/2-a,visible:s&&o.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:r,y:i,offsetX:l/2-a,offsetY:l/2-a,visible:s&&o.indexOf("bottom-right")>=0}),this._batchChangeChild(".rotater",{x:r/2,y:-this.rotateAnchorOffset()*gn.Util._sign(i)-a,visible:this.rotateEnabled()}),this._batchChangeChild(".back",{width:r,height:i,visible:this.borderEnabled(),stroke:this.borderStroke(),strokeWidth:this.borderStrokeWidth(),dash:this.borderDash(),x:0,y:0});const c=this.anchorStyleFunc();c&&u.forEach(d=>{c(d)}),(t=this.getLayer())===null||t===void 0||t.batchDraw()}isTransforming(){return this._transforming}stopTransform(){if(this._transforming){this._removeEvents();var t=this.findOne("."+this._movingAnchorName);t&&t.stopDrag()}}destroy(){return this.getStage()&&this._cursorChange&&this.getStage().content&&(this.getStage().content.style.cursor=""),rR.Group.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return nR.Node.prototype.toObject.call(this)}clone(t){var n=nR.Node.prototype.clone.call(this,t);return n}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}lS.Transformer=Ht;function m_e(e){return e instanceof Array||gn.Util.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){A1.indexOf(t)===-1&&gn.Util.warn("Unknown anchor name: "+t+". Available names are: "+A1.join(", "))}),e||[]}Ht.prototype.className="Transformer";(0,a_e._registerNode)(Ht);cn.Factory.addGetterSetter(Ht,"enabledAnchors",A1,m_e);cn.Factory.addGetterSetter(Ht,"flipEnabled",!0,(0,$u.getBooleanValidator)());cn.Factory.addGetterSetter(Ht,"resizeEnabled",!0);cn.Factory.addGetterSetter(Ht,"anchorSize",10,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"rotateEnabled",!0);cn.Factory.addGetterSetter(Ht,"rotationSnaps",[]);cn.Factory.addGetterSetter(Ht,"rotateAnchorOffset",50,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"rotationSnapTolerance",5,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"borderEnabled",!0);cn.Factory.addGetterSetter(Ht,"anchorStroke","rgb(0, 161, 255)");cn.Factory.addGetterSetter(Ht,"anchorStrokeWidth",1,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"anchorFill","white");cn.Factory.addGetterSetter(Ht,"anchorCornerRadius",0,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"borderStroke","rgb(0, 161, 255)");cn.Factory.addGetterSetter(Ht,"borderStrokeWidth",1,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"borderDash");cn.Factory.addGetterSetter(Ht,"keepRatio",!0);cn.Factory.addGetterSetter(Ht,"shiftBehavior","default");cn.Factory.addGetterSetter(Ht,"centeredScaling",!1);cn.Factory.addGetterSetter(Ht,"ignoreStroke",!1);cn.Factory.addGetterSetter(Ht,"padding",0,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"node");cn.Factory.addGetterSetter(Ht,"nodes");cn.Factory.addGetterSetter(Ht,"boundBoxFunc");cn.Factory.addGetterSetter(Ht,"anchorDragBoundFunc");cn.Factory.addGetterSetter(Ht,"anchorStyleFunc");cn.Factory.addGetterSetter(Ht,"shouldOverdrawWholeArea",!1);cn.Factory.addGetterSetter(Ht,"useSingleNodeRotation",!0);cn.Factory.backCompat(Ht,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});var uS={};Object.defineProperty(uS,"__esModule",{value:!0});uS.Wedge=void 0;const cS=Et,y_e=jr,v_e=At,Nz=We,__e=At;class vl extends y_e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,v_e.Konva.getAngle(this.angle()),this.clockwise()),t.lineTo(0,0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}uS.Wedge=vl;vl.prototype.className="Wedge";vl.prototype._centroid=!0;vl.prototype._attrsAffectingSize=["radius"];(0,__e._registerNode)(vl);cS.Factory.addGetterSetter(vl,"radius",0,(0,Nz.getNumberValidator)());cS.Factory.addGetterSetter(vl,"angle",0,(0,Nz.getNumberValidator)());cS.Factory.addGetterSetter(vl,"clockwise",!1);cS.Factory.backCompat(vl,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});var dS={};Object.defineProperty(dS,"__esModule",{value:!0});dS.Blur=void 0;const sR=Et,b_e=Qn,S_e=We;function aR(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var w_e=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],x_e=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function C_e(e,t){var n=e.data,r=e.width,i=e.height,o,s,a,l,u,c,d,f,h,p,m,b,_,y,g,v,S,w,x,C,A,T,k,L,N=t+t+1,E=r-1,P=i-1,D=t+1,B=D*(D+1)/2,R=new aR,I=null,O=R,F=null,U=null,V=w_e[t],H=x_e[t];for(a=1;a>H,k!==0?(k=255/k,n[c]=(f*V>>H)*k,n[c+1]=(h*V>>H)*k,n[c+2]=(p*V>>H)*k):n[c]=n[c+1]=n[c+2]=0,f-=b,h-=_,p-=y,m-=g,b-=F.r,_-=F.g,y-=F.b,g-=F.a,l=d+((l=o+t+1)>H,k>0?(k=255/k,n[l]=(f*V>>H)*k,n[l+1]=(h*V>>H)*k,n[l+2]=(p*V>>H)*k):n[l]=n[l+1]=n[l+2]=0,f-=b,h-=_,p-=y,m-=g,b-=F.r,_-=F.g,y-=F.b,g-=F.a,l=o+((l=s+D)0&&C_e(t,n)};dS.Blur=E_e;sR.Factory.addGetterSetter(b_e.Node,"blurRadius",0,(0,S_e.getNumberValidator)(),sR.Factory.afterSetFilter);var fS={};Object.defineProperty(fS,"__esModule",{value:!0});fS.Brighten=void 0;const lR=Et,T_e=Qn,A_e=We,k_e=function(e){var t=this.brightness()*255,n=e.data,r=n.length,i;for(i=0;i255?255:i,o=o<0?0:o>255?255:o,s=s<0?0:s>255?255:s,n[a]=i,n[a+1]=o,n[a+2]=s};hS.Contrast=I_e;uR.Factory.addGetterSetter(P_e.Node,"contrast",0,(0,R_e.getNumberValidator)(),uR.Factory.afterSetFilter);var pS={};Object.defineProperty(pS,"__esModule",{value:!0});pS.Emboss=void 0;const Su=Et,gS=Qn,O_e=sr,Dz=We,M_e=function(e){var t=this.embossStrength()*10,n=this.embossWhiteLevel()*255,r=this.embossDirection(),i=this.embossBlend(),o=0,s=0,a=e.data,l=e.width,u=e.height,c=l*4,d=u;switch(r){case"top-left":o=-1,s=-1;break;case"top":o=-1,s=0;break;case"top-right":o=-1,s=1;break;case"right":o=0,s=1;break;case"bottom-right":o=1,s=1;break;case"bottom":o=1,s=0;break;case"bottom-left":o=1,s=-1;break;case"left":o=0,s=-1;break;default:O_e.Util.error("Unknown emboss direction: "+r)}do{var f=(d-1)*c,h=o;d+h<1&&(h=0),d+h>u&&(h=0);var p=(d-1+h)*l*4,m=l;do{var b=f+(m-1)*4,_=s;m+_<1&&(_=0),m+_>l&&(_=0);var y=p+(m-1+_)*4,g=a[b]-a[y],v=a[b+1]-a[y+1],S=a[b+2]-a[y+2],w=g,x=w>0?w:-w,C=v>0?v:-v,A=S>0?S:-S;if(C>x&&(w=v),A>x&&(w=S),w*=t,i){var T=a[b]+w,k=a[b+1]+w,L=a[b+2]+w;a[b]=T>255?255:T<0?0:T,a[b+1]=k>255?255:k<0?0:k,a[b+2]=L>255?255:L<0?0:L}else{var N=n-w;N<0?N=0:N>255&&(N=255),a[b]=a[b+1]=a[b+2]=N}}while(--m)}while(--d)};pS.Emboss=M_e;Su.Factory.addGetterSetter(gS.Node,"embossStrength",.5,(0,Dz.getNumberValidator)(),Su.Factory.afterSetFilter);Su.Factory.addGetterSetter(gS.Node,"embossWhiteLevel",.5,(0,Dz.getNumberValidator)(),Su.Factory.afterSetFilter);Su.Factory.addGetterSetter(gS.Node,"embossDirection","top-left",null,Su.Factory.afterSetFilter);Su.Factory.addGetterSetter(gS.Node,"embossBlend",!1,null,Su.Factory.afterSetFilter);var mS={};Object.defineProperty(mS,"__esModule",{value:!0});mS.Enhance=void 0;const cR=Et,N_e=Qn,D_e=We;function Mw(e,t,n,r,i){var o=n-t,s=i-r,a;return o===0?r+s/2:s===0?r:(a=(e-t)/o,a=s*a+r,a)}const L_e=function(e){var t=e.data,n=t.length,r=t[0],i=r,o,s=t[1],a=s,l,u=t[2],c=u,d,f,h=this.enhance();if(h!==0){for(f=0;fi&&(i=o),l=t[f+1],la&&(a=l),d=t[f+2],dc&&(c=d);i===r&&(i=255,r=0),a===s&&(a=255,s=0),c===u&&(c=255,u=0);var p,m,b,_,y,g,v,S,w;for(h>0?(m=i+h*(255-i),b=r-h*(r-0),y=a+h*(255-a),g=s-h*(s-0),S=c+h*(255-c),w=u-h*(u-0)):(p=(i+r)*.5,m=i+h*(i-p),b=r+h*(r-p),_=(a+s)*.5,y=a+h*(a-_),g=s+h*(s-_),v=(c+u)*.5,S=c+h*(c-v),w=u+h*(u-v)),f=0;f_?b:_;var y=s,g=o,v,S,w=360/g*Math.PI/180,x,C;for(S=0;Sg?y:g;var v=s,S=o,w,x,C=n.polarRotation||0,A,T;for(c=0;ct&&(v=g,S=0,w=-1),i=0;i=0&&h=0&&p=0&&h=0&&p=255*4?255:0}return s}function Y_e(e,t,n){for(var r=[.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111],i=Math.round(Math.sqrt(r.length)),o=Math.floor(i/2),s=[],a=0;a=0&&h=0&&p=n))for(o=m;o=r||(s=(n*o+i)*4,a+=v[s+0],l+=v[s+1],u+=v[s+2],c+=v[s+3],g+=1);for(a=a/g,l=l/g,u=u/g,c=c/g,i=h;i=n))for(o=m;o=r||(s=(n*o+i)*4,v[s+0]=a,v[s+1]=l,v[s+2]=u,v[s+3]=c)}};CS.Pixelate=obe;pR.Factory.addGetterSetter(rbe.Node,"pixelSize",8,(0,ibe.getNumberValidator)(),pR.Factory.afterSetFilter);var ES={};Object.defineProperty(ES,"__esModule",{value:!0});ES.Posterize=void 0;const gR=Et,sbe=Qn,abe=We,lbe=function(e){var t=Math.round(this.levels()*254)+1,n=e.data,r=n.length,i=255/t,o;for(o=0;o255?255:e<0?0:Math.round(e)});P1.Factory.addGetterSetter(NT.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});P1.Factory.addGetterSetter(NT.Node,"blue",0,ube.RGBComponent,P1.Factory.afterSetFilter);var AS={};Object.defineProperty(AS,"__esModule",{value:!0});AS.RGBA=void 0;const Vg=Et,kS=Qn,dbe=We,fbe=function(e){var t=e.data,n=t.length,r=this.red(),i=this.green(),o=this.blue(),s=this.alpha(),a,l;for(a=0;a255?255:e<0?0:Math.round(e)});Vg.Factory.addGetterSetter(kS.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});Vg.Factory.addGetterSetter(kS.Node,"blue",0,dbe.RGBComponent,Vg.Factory.afterSetFilter);Vg.Factory.addGetterSetter(kS.Node,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});var PS={};Object.defineProperty(PS,"__esModule",{value:!0});PS.Sepia=void 0;const hbe=function(e){var t=e.data,n=t.length,r,i,o,s;for(r=0;r127&&(u=255-u),c>127&&(c=255-c),d>127&&(d=255-d),t[l]=u,t[l+1]=c,t[l+2]=d}while(--a)}while(--o)};RS.Solarize=pbe;var IS={};Object.defineProperty(IS,"__esModule",{value:!0});IS.Threshold=void 0;const mR=Et,gbe=Qn,mbe=We,ybe=function(e){var t=this.threshold()*255,n=e.data,r=n.length,i;for(i=0;i{const{width:r,height:i}=t,o=document.createElement("div"),s=new qh.Stage({container:o,width:r,height:i}),a=new qh.Layer,l=new qh.Layer;return a.add(new qh.Rect({...t,fill:n?"black":"white"})),e.forEach(u=>l.add(new qh.Line({points:u.points,stroke:n?"white":"black",strokeWidth:u.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,globalCompositeOperation:u.tool==="brush"?"source-over":"destination-out"}))),s.add(a),s.add(l),o.remove(),s},rSe=async(e,t,n)=>new Promise((r,i)=>{const o=document.createElement("canvas");o.width=t,o.height=n;const s=o.getContext("2d"),a=new Image;if(!s){o.remove(),i("Unable to get context");return}a.onload=function(){s.drawImage(a,0,0),o.remove(),r(s.getImageData(0,0,t,n))},a.src=e}),_R=async(e,t)=>{const n=e.toDataURL(t);return await rSe(n,t.width,t.height)},DT=async(e,t,n,r,i)=>{const o=ge("canvas"),s=Fb(),a=Y0e();if(!s||!a){o.error("Unable to find canvas / stage");return}const l={...t,...n},u=s.clone();u.scale({x:1,y:1});const c=u.getAbsolutePosition(),d={x:l.x+c.x,y:l.y+c.y,width:l.width,height:l.height},f=await E1(u,d),h=await _R(u,d),p=await nSe(r?e.objects.filter(_D):[],l,i),m=await E1(p,l),b=await _R(p,l);return{baseBlob:f,baseImageData:h,maskBlob:m,maskImageData:b}},iSe=()=>{Te({actionCreator:G0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await DT(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Tn({title:J("toast.problemSavingMask"),description:J("toast.problemSavingMaskDesc"),status:"error"}));return}const{autoAddBoardId:a}=i.gallery;t(pe.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.maskSavedAssets")}}}))}})},oSe=()=>{Te({actionCreator:X0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await DT(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Tn({title:J("toast.problemImportingMask"),description:J("toast.problemImportingMaskDesc"),status:"error"}));return}const{autoAddBoardId:a}=i.gallery,l=await t(pe.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.maskSentControlnetAssets")}}})).unwrap(),{image_name:u}=l;t(Qc({controlNetId:e.payload.controlNet.controlNetId,controlImage:u}))}})},sSe=async()=>{const e=Fb();if(!e)return;const t=e.clone();return t.scale({x:1,y:1}),E1(t,t.getClientRect())},aSe=()=>{Te({actionCreator:W0e,effect:async(e,{dispatch:t})=>{const n=sb.get().child({namespace:"canvasCopiedToClipboardListener"}),r=await sSe();if(!r){n.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemMergingCanvas"),description:J("toast.problemMergingCanvasDesc"),status:"error"}));return}const i=Fb();if(!i){n.error("Problem getting canvas base layer"),t(Tn({title:J("toast.problemMergingCanvas"),description:J("toast.problemMergingCanvasDesc"),status:"error"}));return}const o=i.getClientRect({relativeTo:i.getParent()}),s=await t(pe.endpoints.uploadImage.initiate({file:new File([r],"mergedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.canvasMerged")}}})).unwrap(),{image_name:a}=s;t(Jne({kind:"image",layer:"base",imageName:a,...o}))}})},lSe=()=>{Te({actionCreator:V0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemSavingCanvas"),description:J("toast.problemSavingCanvasDesc"),status:"error"}));return}const{autoAddBoardId:s}=i.gallery;t(pe.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.canvasSavedGallery")}}}))}})},uSe=(e,t,n)=>{var d;if(!(Ode.match(e)||D6.match(e)||Qc.match(e)||Mde.match(e)||L6.match(e))||L6.match(e)&&((d=n.controlNet.controlNets[e.payload.controlNetId])==null?void 0:d.shouldAutoConfig)===!0)return!1;const i=t.controlNet.controlNets[e.payload.controlNetId];if(!i)return!1;const{controlImage:o,processorType:s,shouldAutoConfig:a}=i;if(D6.match(e)&&!a)return!1;const l=s!=="none",u=t.system.isProcessing;return l&&!u&&!!o},cSe=()=>{Te({predicate:uSe,effect:async(e,{dispatch:t,cancelActiveListeners:n,delay:r})=>{const i=ge("session"),{controlNetId:o}=e.payload;n(),i.trace("ControlNet auto-process triggered"),await r(300),t(Q5({controlNetId:o}))}})},od=Le("system/sessionReadyToInvoke"),Fz=e=>(e==null?void 0:e.type)==="image_output",dSe=()=>{Te({actionCreator:Q5,effect:async(e,{dispatch:t,getState:n,take:r})=>{const i=ge("session"),{controlNetId:o}=e.payload,s=n().controlNet.controlNets[o];if(!(s!=null&&s.controlImage)){i.error("Unable to process ControlNet image");return}const a={nodes:{[s.processorNode.id]:{...s.processorNode,is_intermediate:!0,image:{image_name:s.controlImage}}}},l=t(xi({graph:a})),[u]=await r(f=>xi.fulfilled.match(f)&&f.meta.requestId===l.requestId),c=u.payload.id;t(od());const[d]=await r(f=>W5.match(f)&&f.payload.data.graph_execution_state_id===c);if(Fz(d.payload.data.result)){const{image_name:f}=d.payload.data.result.image,[{payload:h}]=await r(m=>pe.endpoints.getImageDTO.matchFulfilled(m)&&m.payload.image_name===f),p=h;i.debug({controlNetId:e.payload,processedControlImage:p},"ControlNet image processed"),t(Y5({controlNetId:o,processedControlImage:p.image_name}))}}})},fSe=()=>{Te({matcher:pe.endpoints.addImageToBoard.matchFulfilled,effect:e=>{const t=ge("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Image added to board")}})},hSe=()=>{Te({matcher:pe.endpoints.addImageToBoard.matchRejected,effect:e=>{const t=ge("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Problem adding image to board")}})},LT=Le("deleteImageModal/imageDeletionConfirmed"),aMe=Fi(e=>e,e=>e.gallery.selection[e.gallery.selection.length-1],_T),Bz=Fi([e=>e],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{board_id:t,categories:n==="images"?Qr:Gl,offset:0,limit:are,is_intermediate:!1}},_T),pSe=()=>{Te({actionCreator:LT,effect:async(e,{dispatch:t,getState:n,condition:r})=>{var f;const{imageDTOs:i,imagesUsage:o}=e.payload;if(i.length!==1||o.length!==1)return;const s=i[0],a=o[0];if(!s||!a)return;t(Z5(!1));const l=n(),u=(f=l.gallery.selection[l.gallery.selection.length-1])==null?void 0:f.image_name;if(s&&(s==null?void 0:s.image_name)===u){const{image_name:h}=s,p=Bz(l),{data:m}=pe.endpoints.listImages.select(p)(l),b=m?Ln.getSelectors().selectAll(m):[],_=b.findIndex(S=>S.image_name===h),y=b.filter(S=>S.image_name!==h),g=jl(_,0,y.length-1),v=y[g];t(ha(v||null))}a.isCanvasImage&&t(S5()),i.forEach(h=>{var p,m;((p=n().generation.initialImage)==null?void 0:p.imageName)===h.image_name&&t(b5()),rs(n().controlNet.controlNets,b=>{(b.controlImage===h.image_name||b.processedControlImage===h.image_name)&&(t(Qc({controlNetId:b.controlNetId,controlImage:null})),t(Y5({controlNetId:b.controlNetId,processedControlImage:null})))}),((m=n().controlNet.ipAdapterInfo.adapterImage)==null?void 0:m.image_name)===h.image_name&&t(Pb(null)),n().nodes.nodes.forEach(b=>{Kr(b)&&rs(b.data.inputs,_=>{var y;_.type==="ImageField"&&((y=_.value)==null?void 0:y.image_name)===h.image_name&&t(Lb({nodeId:b.data.id,fieldName:_.name,value:void 0}))})})});const{requestId:c}=t(pe.endpoints.deleteImage.initiate(s));await r(h=>pe.endpoints.deleteImage.matchFulfilled(h)&&h.meta.requestId===c,3e4)&&t(_u.util.invalidateTags([{type:"Board",id:s.board_id}]))}})},gSe=()=>{Te({actionCreator:LT,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTOs:r,imagesUsage:i}=e.payload;if(!(r.length<=1||i.length<=1))try{await t(pe.endpoints.deleteImages.initiate({imageDTOs:r})).unwrap();const o=n(),s=Bz(o),{data:a}=pe.endpoints.listImages.select(s)(o),l=a?Ln.getSelectors().selectAll(a)[0]:void 0;t(ha(l||null)),t(Z5(!1)),i.some(u=>u.isCanvasImage)&&t(S5()),r.forEach(u=>{var c,d;((c=n().generation.initialImage)==null?void 0:c.imageName)===u.image_name&&t(b5()),rs(n().controlNet.controlNets,f=>{(f.controlImage===u.image_name||f.processedControlImage===u.image_name)&&(t(Qc({controlNetId:f.controlNetId,controlImage:null})),t(Y5({controlNetId:f.controlNetId,processedControlImage:null})))}),((d=n().controlNet.ipAdapterInfo.adapterImage)==null?void 0:d.image_name)===u.image_name&&t(Pb(null)),n().nodes.nodes.forEach(f=>{Kr(f)&&rs(f.data.inputs,h=>{var p;h.type==="ImageField"&&((p=h.value)==null?void 0:p.image_name)===u.image_name&&t(Lb({nodeId:f.data.id,fieldName:h.name,value:void 0}))})})})}catch{}}})},mSe=()=>{Te({matcher:pe.endpoints.deleteImage.matchPending,effect:()=>{}})},ySe=()=>{Te({matcher:pe.endpoints.deleteImage.matchFulfilled,effect:e=>{ge("images").debug({imageDTO:e.meta.arg.originalArgs},"Image deleted")}})},vSe=()=>{Te({matcher:pe.endpoints.deleteImage.matchRejected,effect:e=>{ge("images").debug({imageDTO:e.meta.arg.originalArgs},"Unable to delete image")}})},zz=Le("dnd/dndDropped"),_Se=()=>{Te({actionCreator:zz,effect:async(e,{dispatch:t})=>{const n=ge("dnd"),{activeData:r,overData:i}=e.payload;if(r.payloadType==="IMAGE_DTO"?n.debug({activeData:r,overData:i},"Image dropped"):r.payloadType==="IMAGE_DTOS"?n.debug({activeData:r,overData:i},`Images (${r.payload.imageDTOs.length}) dropped`):r.payloadType==="NODE_FIELD"?n.debug({activeData:mn(r),overData:mn(i)},"Node field dropped"):n.debug({activeData:r,overData:i},"Unknown payload dropped"),i.actionType==="ADD_FIELD_TO_LINEAR"&&r.payloadType==="NODE_FIELD"){const{nodeId:o,field:s}=r.payload;t(Pye({nodeId:o,fieldName:s.name}))}if(i.actionType==="SET_CURRENT_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(ha(r.payload.imageDTO));return}if(i.actionType==="SET_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(D_(r.payload.imageDTO));return}if(i.actionType==="SET_CONTROLNET_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{controlNetId:o}=i.context;t(Qc({controlImage:r.payload.imageDTO.image_name,controlNetId:o}));return}if(i.actionType==="SET_IP_ADAPTER_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(Pb(r.payload.imageDTO));return}if(i.actionType==="SET_CANVAS_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(wD(r.payload.imageDTO));return}if(i.actionType==="SET_NODES_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{fieldName:o,nodeId:s}=i.context;t(Lb({nodeId:s,fieldName:o,value:r.payload.imageDTO}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload,{boardId:s}=i.context;t(pe.endpoints.addImageToBoard.initiate({imageDTO:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload;t(pe.endpoints.removeImageFromBoard.initiate({imageDTO:o}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload,{boardId:s}=i.context;t(pe.endpoints.addImagesToBoard.initiate({imageDTOs:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload;t(pe.endpoints.removeImagesFromBoard.initiate({imageDTOs:o}));return}}})},bSe=()=>{Te({matcher:pe.endpoints.removeImageFromBoard.matchFulfilled,effect:e=>{const t=ge("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Image removed from board")}})},SSe=()=>{Te({matcher:pe.endpoints.removeImageFromBoard.matchRejected,effect:e=>{const t=ge("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Problem removing image from board")}})},wSe=()=>{Te({actionCreator:$de,effect:async(e,{dispatch:t,getState:n})=>{const r=e.payload,i=n(),{shouldConfirmOnDelete:o}=i.system,s=z0e(n()),a=s.some(l=>l.isCanvasImage)||s.some(l=>l.isInitialImage)||s.some(l=>l.isControlNetImage)||s.some(l=>l.isIPAdapterImage)||s.some(l=>l.isNodesImage);if(o||a){t(Z5(!0));return}t(LT({imageDTOs:r,imagesUsage:s}))}})},qu={title:J("toast.imageUploaded"),status:"success"},xSe=()=>{Te({matcher:pe.endpoints.uploadImage.matchFulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=ge("images"),i=e.payload,o=n(),{autoAddBoardId:s}=o.gallery;r.debug({imageDTO:i},"Image uploaded");const{postUploadAction:a}=e.meta.arg.originalArgs;if(!(e.payload.is_intermediate&&!a)){if((a==null?void 0:a.type)==="TOAST"){const{toastOptions:l}=a;if(!s||s==="none")t(Tn({...qu,...l}));else{t(pe.endpoints.addImageToBoard.initiate({board_id:s,imageDTO:i}));const{data:u}=pi.endpoints.listAllBoards.select()(o),c=u==null?void 0:u.find(f=>f.board_id===s),d=c?`${J("toast.addedToBoard")} ${c.board_name}`:`${J("toast.addedToBoard")} ${s}`;t(Tn({...qu,description:d}))}return}if((a==null?void 0:a.type)==="SET_CANVAS_INITIAL_IMAGE"){t(wD(i)),t(Tn({...qu,description:J("toast.setCanvasInitialImage")}));return}if((a==null?void 0:a.type)==="SET_CONTROLNET_IMAGE"){const{controlNetId:l}=a;t(Qc({controlNetId:l,controlImage:i.image_name})),t(Tn({...qu,description:J("toast.setControlImage")}));return}if((a==null?void 0:a.type)==="SET_IP_ADAPTER_IMAGE"){t(Pb(i)),t(Tn({...qu,description:J("toast.setIPAdapterImage")}));return}if((a==null?void 0:a.type)==="SET_INITIAL_IMAGE"){t(D_(i)),t(Tn({...qu,description:J("toast.setInitialImage")}));return}if((a==null?void 0:a.type)==="SET_NODES_IMAGE"){const{nodeId:l,fieldName:u}=a;t(Lb({nodeId:l,fieldName:u,value:i})),t(Tn({...qu,description:`${J("toast.setNodeField")} ${u}`}));return}}}})},CSe=()=>{Te({matcher:pe.endpoints.uploadImage.matchRejected,effect:(e,{dispatch:t})=>{const n=ge("images"),r={arg:{...I_(e.meta.arg.originalArgs,["file","postUploadAction"]),file:""}};n.error({...r},"Image upload failed"),t(Tn({title:J("toast.imageUploadFailed"),description:e.error.message,status:"error"}))}})},ESe=()=>{Te({matcher:pe.endpoints.starImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!0}):s.push(a)}),t(oF(s))}})},TSe=()=>{Te({matcher:pe.endpoints.unstarImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!1}):s.push(a)}),t(oF(s))}})},ASe=Le("generation/initialImageSelected"),kSe=Le("generation/modelSelected"),PSe=()=>{Te({actionCreator:ASe,effect:(e,{dispatch:t})=>{if(!e.payload){t(Tn(sa({title:J("toast.imageNotLoadedDesc"),status:"error"})));return}t(D_(e.payload)),t(Tn(sa(J("toast.sentToImageToImage"))))}})},RSe=()=>{Te({actionCreator:kSe,effect:(e,{getState:t,dispatch:n})=>{var l,u;const r=ge("models"),i=t(),o=Cm.safeParse(e.payload);if(!o.success){r.error({error:o.error.format()},"Failed to parse main model");return}const s=o.data,{base_model:a}=s;if(((l=i.generation.model)==null?void 0:l.base_model)!==a){let c=0;rs(i.lora.loras,(p,m)=>{p.base_model!==a&&(n(aF(m)),c+=1)});const{vae:d}=i.generation;d&&d.base_model!==a&&(n(yD(null)),c+=1);const{controlNets:f}=i.controlNet;rs(f,(p,m)=>{var b;((b=p.model)==null?void 0:b.base_model)!==a&&(n(Z$({controlNetId:m})),c+=1)});const{ipAdapterInfo:h}=i.controlNet;h.model&&h.model.base_model!==a&&(n(J$()),c+=1),c>0&&n(Tn(sa({title:`${J("toast.baseModelChangedCleared")} ${c} ${J("toast.incompatibleSubmodel")}${c===1?"":"s"}`,status:"warning"})))}((u=i.generation.model)==null?void 0:u.base_model)!==s.base_model&&i.ui.shouldAutoChangeDimensions&&(["sdxl","sdxl-refiner"].includes(s.base_model)?(n(Kk(1024)),n(Xk(1024)),n(Qk({width:1024,height:1024}))):(n(Kk(512)),n(Xk(512)),n(Qk({width:512,height:512})))),n(Vl(s))}})},Gg=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),bR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),SR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),wR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),xR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),CR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),c3=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),ISe=({base_model:e,model_type:t,model_name:n})=>`${e}/${t}/${n}`,Wu=e=>{const t=[];return e.forEach(n=>{const r={...Jn(n),id:ISe(n)};t.push(r)}),t},Ga=_u.injectEndpoints({endpoints:e=>({getOnnxModels:e.query({query:t=>{const n={model_type:"onnx",base_models:t};return`models/?${D0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"OnnxModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"OnnxModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return bR.setAll(bR.getInitialState(),n)}}),getMainModels:e.query({query:t=>{const n={model_type:"main",base_models:t};return`models/?${D0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"MainModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"MainModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return Gg.setAll(Gg.getInitialState(),n)}}),updateMainModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/main/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),importMainModels:e.mutation({query:({body:t})=>({url:"models/import",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),addMainModels:e.mutation({query:({body:t})=>({url:"models/add",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),deleteMainModels:e.mutation({query:({base_model:t,model_name:n,model_type:r})=>({url:`models/${t}/${r}/${n}`,method:"DELETE"}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),convertMainModels:e.mutation({query:({base_model:t,model_name:n,convert_dest_directory:r})=>({url:`models/convert/${t}/main/${n}`,method:"PUT",params:{convert_dest_directory:r}}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),mergeMainModels:e.mutation({query:({base_model:t,body:n})=>({url:`models/merge/${t}`,method:"PUT",body:n}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),syncModels:e.mutation({query:()=>({url:"models/sync",method:"POST"}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),getLoRAModels:e.query({query:()=>({url:"models/",params:{model_type:"lora"}}),providesTags:t=>{const n=[{type:"LoRAModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"LoRAModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return SR.setAll(SR.getInitialState(),n)}}),updateLoRAModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/lora/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"LoRAModel",id:pt}]}),deleteLoRAModels:e.mutation({query:({base_model:t,model_name:n})=>({url:`models/${t}/lora/${n}`,method:"DELETE"}),invalidatesTags:[{type:"LoRAModel",id:pt}]}),getControlNetModels:e.query({query:()=>({url:"models/",params:{model_type:"controlnet"}}),providesTags:t=>{const n=[{type:"ControlNetModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"ControlNetModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return wR.setAll(wR.getInitialState(),n)}}),getIPAdapterModels:e.query({query:()=>({url:"models/",params:{model_type:"ip_adapter"}}),providesTags:t=>{const n=[{type:"IPAdapterModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"IPAdapterModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return xR.setAll(xR.getInitialState(),n)}}),getVaeModels:e.query({query:()=>({url:"models/",params:{model_type:"vae"}}),providesTags:t=>{const n=[{type:"VaeModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"VaeModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return c3.setAll(c3.getInitialState(),n)}}),getTextualInversionModels:e.query({query:()=>({url:"models/",params:{model_type:"embedding"}}),providesTags:t=>{const n=[{type:"TextualInversionModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"TextualInversionModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return CR.setAll(CR.getInitialState(),n)}}),getModelsInFolder:e.query({query:t=>({url:`/models/search?${D0.stringify(t,{})}`}),providesTags:t=>{const n=[{type:"ScannedModels",id:pt}];return t&&n.push(...t.map(r=>({type:"ScannedModels",id:r}))),n}}),getCheckpointConfigs:e.query({query:()=>({url:"/models/ckpt_confs"})})})}),{useGetMainModelsQuery:lMe,useGetOnnxModelsQuery:uMe,useGetControlNetModelsQuery:cMe,useGetIPAdapterModelsQuery:dMe,useGetLoRAModelsQuery:fMe,useGetTextualInversionModelsQuery:hMe,useGetVaeModelsQuery:pMe,useUpdateMainModelsMutation:gMe,useDeleteMainModelsMutation:mMe,useImportMainModelsMutation:yMe,useAddMainModelsMutation:vMe,useConvertMainModelsMutation:_Me,useMergeMainModelsMutation:bMe,useDeleteLoRAModelsMutation:SMe,useUpdateLoRAModelsMutation:wMe,useSyncModelsMutation:xMe,useGetModelsInFolderQuery:CMe,useGetCheckpointConfigsQuery:EMe}=Ga,OSe=()=>{Te({predicate:e=>Ga.endpoints.getMainModels.matchFulfilled(e)&&!e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=ge("models");r.info({models:e.payload.entities},`Main models loaded (${e.payload.ids.length})`);const i=t().generation.model,o=Gg.getSelectors().selectAll(e.payload);if(o.length===0){n(Vl(null));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=Cm.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse main model");return}n(Vl(a.data))}}),Te({predicate:e=>Ga.endpoints.getMainModels.matchFulfilled(e)&&e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=ge("models");r.info({models:e.payload.entities},`SDXL Refiner models loaded (${e.payload.ids.length})`);const i=t().sdxl.refinerModel,o=Gg.getSelectors().selectAll(e.payload);if(o.length===0){n(P8(null)),n(Mye(!1));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=_5.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse SDXL Refiner Model");return}n(P8(a.data))}}),Te({matcher:Ga.endpoints.getVaeModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=ge("models");r.info({models:e.payload.entities},`VAEs loaded (${e.payload.ids.length})`);const i=t().generation.vae;if(i===null||wp(e.payload.entities,l=>(l==null?void 0:l.model_name)===(i==null?void 0:i.model_name)&&(l==null?void 0:l.base_model)===(i==null?void 0:i.base_model)))return;const s=c3.getSelectors().selectAll(e.payload)[0];if(!s){n(Vl(null));return}const a=wne.safeParse(s);if(!a.success){r.error({error:a.error.format()},"Failed to parse VAE model");return}n(yD(a.data))}}),Te({matcher:Ga.endpoints.getLoRAModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{ge("models").info({models:e.payload.entities},`LoRAs loaded (${e.payload.ids.length})`);const i=t().lora.loras;rs(i,(o,s)=>{wp(e.payload.entities,l=>(l==null?void 0:l.model_name)===(o==null?void 0:o.model_name)&&(l==null?void 0:l.base_model)===(o==null?void 0:o.base_model))||n(aF(s))})}}),Te({matcher:Ga.endpoints.getControlNetModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{ge("models").info({models:e.payload.entities},`ControlNet models loaded (${e.payload.ids.length})`);const i=t().controlNet.controlNets;rs(i,(o,s)=>{wp(e.payload.entities,l=>{var u,c;return(l==null?void 0:l.model_name)===((u=o==null?void 0:o.model)==null?void 0:u.model_name)&&(l==null?void 0:l.base_model)===((c=o==null?void 0:o.model)==null?void 0:c.base_model)})||n(Z$({controlNetId:s}))})}}),Te({matcher:Ga.endpoints.getTextualInversionModels.matchFulfilled,effect:async e=>{ge("models").info({models:e.payload.entities},`Embeddings loaded (${e.payload.ids.length})`)}})},Td=e=>e.$ref.split("/").slice(-1)[0],MSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"integer",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},NSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"IntegerPolymorphic",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},DSe=({schemaObject:e,baseField:t})=>{const n=X7(e.item_default)&&wee(e.item_default)?e.item_default:0;return{...t,type:"IntegerCollection",default:e.default??[],item_default:n}},LSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"float",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},$Se=({schemaObject:e,baseField:t})=>{const n={...t,type:"FloatPolymorphic",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},FSe=({schemaObject:e,baseField:t})=>{const n=X7(e.item_default)?e.item_default:0;return{...t,type:"FloatCollection",default:e.default??[],item_default:n}},BSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"string",default:e.default??""};return e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern!==void 0&&(n.pattern=e.pattern),n},zSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"StringPolymorphic",default:e.default??""};return e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern!==void 0&&(n.pattern=e.pattern),n},USe=({schemaObject:e,baseField:t})=>{const n=K7(e.item_default)?e.item_default:"";return{...t,type:"StringCollection",default:e.default??[],item_default:n}},jSe=({schemaObject:e,baseField:t})=>({...t,type:"boolean",default:e.default??!1}),VSe=({schemaObject:e,baseField:t})=>({...t,type:"BooleanPolymorphic",default:e.default??!1}),GSe=({schemaObject:e,baseField:t})=>{const n=e.item_default&&See(e.item_default)?e.item_default:!1;return{...t,type:"BooleanCollection",default:e.default??[],item_default:n}},HSe=({schemaObject:e,baseField:t})=>({...t,type:"MainModelField",default:e.default??void 0}),qSe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLMainModelField",default:e.default??void 0}),WSe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLRefinerModelField",default:e.default??void 0}),KSe=({schemaObject:e,baseField:t})=>({...t,type:"VaeModelField",default:e.default??void 0}),XSe=({schemaObject:e,baseField:t})=>({...t,type:"LoRAModelField",default:e.default??void 0}),QSe=({schemaObject:e,baseField:t})=>({...t,type:"ControlNetModelField",default:e.default??void 0}),YSe=({schemaObject:e,baseField:t})=>({...t,type:"IPAdapterModelField",default:e.default??void 0}),ZSe=({schemaObject:e,baseField:t})=>({...t,type:"ImageField",default:e.default??void 0}),JSe=({schemaObject:e,baseField:t})=>({...t,type:"ImagePolymorphic",default:e.default??void 0}),e2e=({schemaObject:e,baseField:t})=>({...t,type:"ImageCollection",default:e.default??[],item_default:e.item_default??void 0}),t2e=({schemaObject:e,baseField:t})=>({...t,type:"DenoiseMaskField",default:e.default??void 0}),n2e=({schemaObject:e,baseField:t})=>({...t,type:"LatentsField",default:e.default??void 0}),r2e=({schemaObject:e,baseField:t})=>({...t,type:"LatentsPolymorphic",default:e.default??void 0}),i2e=({schemaObject:e,baseField:t})=>({...t,type:"LatentsCollection",default:e.default??[],item_default:e.item_default??void 0}),o2e=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningField",default:e.default??void 0}),s2e=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningPolymorphic",default:e.default??void 0}),a2e=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningCollection",default:e.default??[],item_default:e.item_default??void 0}),l2e=({schemaObject:e,baseField:t})=>({...t,type:"UNetField",default:e.default??void 0}),u2e=({schemaObject:e,baseField:t})=>({...t,type:"ClipField",default:e.default??void 0}),c2e=({schemaObject:e,baseField:t})=>({...t,type:"VaeField",default:e.default??void 0}),d2e=({schemaObject:e,baseField:t})=>({...t,type:"ControlField",default:e.default??void 0}),f2e=({schemaObject:e,baseField:t})=>({...t,type:"ControlPolymorphic",default:e.default??void 0}),h2e=({schemaObject:e,baseField:t})=>({...t,type:"ControlCollection",default:e.default??[],item_default:e.item_default??void 0}),p2e=({schemaObject:e,baseField:t})=>({...t,type:"IPAdapterField",default:e.default??void 0}),g2e=({schemaObject:e,baseField:t})=>{const n=e.enum??[];return{...t,type:"enum",options:n,ui_choice_labels:e.ui_choice_labels,default:e.default??n[0]}},m2e=({baseField:e})=>({...e,type:"Collection",default:[]}),y2e=({baseField:e})=>({...e,type:"CollectionItem",default:void 0}),v2e=({schemaObject:e,baseField:t})=>({...t,type:"ColorField",default:e.default??{r:127,g:127,b:127,a:255}}),_2e=({schemaObject:e,baseField:t})=>({...t,type:"ColorPolymorphic",default:e.default??{r:127,g:127,b:127,a:255}}),b2e=({schemaObject:e,baseField:t})=>({...t,type:"ColorCollection",default:e.default??[]}),S2e=({schemaObject:e,baseField:t})=>({...t,type:"Scheduler",default:e.default??"euler"}),ER=e=>{if(e!=null&&e.ui_type)return e.ui_type;if(e.type){if(e.enum)return"enum";if(e.type){if(e.type==="number")return"float";if(e.type==="array"){const t=Iie(e.items)?e.items.type:Td(e.items);return Cye(t)?PB[t]:void 0}else return e.type}}else if(e.allOf){const t=e.allOf;if(t&&t[0]&&Dh(t[0]))return Td(t[0])}else if(e.anyOf){const t=e.anyOf;let n,r;if(aP(t[0])){const i=t[0].items,o=t[1];Dh(i)&&Dh(o)?(n=Td(i),r=Td(o)):Ay(i)&&Ay(o)&&(n=i.type,r=o.type)}else if(aP(t[1])){const i=t[0],o=t[1].items;Dh(i)&&Dh(o)?(n=Td(i),r=Td(o)):Ay(i)&&Ay(o)&&(n=i.type,r=o.type)}if(n===r&&Eye(n))return RB[n]}},Uz={boolean:jSe,BooleanCollection:GSe,BooleanPolymorphic:VSe,ClipField:u2e,Collection:m2e,CollectionItem:y2e,ColorCollection:b2e,ColorField:v2e,ColorPolymorphic:_2e,ConditioningCollection:a2e,ConditioningField:o2e,ConditioningPolymorphic:s2e,ControlCollection:h2e,ControlField:d2e,ControlNetModelField:QSe,ControlPolymorphic:f2e,DenoiseMaskField:t2e,enum:g2e,float:LSe,FloatCollection:FSe,FloatPolymorphic:$Se,ImageCollection:e2e,ImageField:ZSe,ImagePolymorphic:JSe,integer:MSe,IntegerCollection:DSe,IntegerPolymorphic:NSe,IPAdapterField:p2e,IPAdapterModelField:YSe,LatentsCollection:i2e,LatentsField:n2e,LatentsPolymorphic:r2e,LoRAModelField:XSe,MainModelField:HSe,Scheduler:S2e,SDXLMainModelField:qSe,SDXLRefinerModelField:WSe,string:BSe,StringCollection:USe,StringPolymorphic:zSe,UNetField:l2e,VaeField:c2e,VaeModelField:KSe},w2e=e=>!!(e&&e in Uz),x2e=(e,t,n,r)=>{var d;const{input:i,ui_hidden:o,ui_component:s,ui_type:a,ui_order:l}=t,u={input:xye.includes(r)?"connection":i,ui_hidden:o,ui_component:s,ui_type:a,required:((d=e.required)==null?void 0:d.includes(n))??!1,ui_order:l},c={name:n,title:t.title??"",description:t.description??"",fieldKind:"input",...u};if(w2e(r))return Uz[r]({schemaObject:t,baseField:c})},C2e=["id","type","metadata"],E2e=["type"],T2e=["WorkflowField","MetadataField","IsIntermediate"],A2e=["graph","metadata_accumulator"],k2e=(e,t)=>!!(C2e.includes(t)||e==="collect"&&t==="collection"||e==="iterate"&&t==="index"),P2e=e=>!!T2e.includes(e),R2e=(e,t)=>!E2e.includes(t),I2e=e=>!A2e.includes(e.properties.type.default),O2e=(e,t=void 0,n=void 0)=>{var o;return Object.values(((o=e.components)==null?void 0:o.schemas)??{}).filter(Oie).filter(I2e).filter(s=>t?t.includes(s.properties.type.default):!0).filter(s=>n?!n.includes(s.properties.type.default):!0).reduce((s,a)=>{var g,v;const l=a.properties.type.default,u=a.title.replace("Invocation",""),c=a.tags??[],d=a.description??"",f=a.version,h=hC(a.properties,(S,w,x)=>{if(k2e(l,x))return ge("nodes").trace({node:l,fieldName:x,field:mn(w)},"Skipped reserved input field"),S;if(!lP(w))return ge("nodes").warn({node:l,propertyName:x,property:mn(w)},"Unhandled input property"),S;const C=ER(w);if(!sP(C))return ge("nodes").warn({node:l,fieldName:x,fieldType:C,field:mn(w)},"Skipping unknown input field type"),S;if(P2e(C))return ge("nodes").trace({node:l,fieldName:x,fieldType:C,field:mn(w)},"Skipping reserved field type"),S;const A=x2e(a,w,x,C);return A?(S[x]=A,S):(ge("nodes").debug({node:l,fieldName:x,fieldType:C,field:mn(w)},"Skipping input field with no template"),S)},{}),p=a.output.$ref.split("/").pop();if(!p)return ge("nodes").warn({outputRefObject:mn(a.output)},"No output schema name found in ref object"),s;const m=(v=(g=e.components)==null?void 0:g.schemas)==null?void 0:v[p];if(!m)return ge("nodes").warn({outputSchemaName:p},"Output schema not found"),s;if(!Mie(m))return ge("nodes").error({outputSchema:mn(m)},"Invalid output schema"),s;const b=m.properties.type.default,_=hC(m.properties,(S,w,x)=>{if(!R2e(l,x))return ge("nodes").trace({type:l,propertyName:x,property:mn(w)},"Skipped reserved output field"),S;if(!lP(w))return ge("nodes").warn({type:l,propertyName:x,property:mn(w)},"Unhandled output property"),S;const C=ER(w);return sP(C)?(S[x]={fieldKind:"output",name:x,title:w.title??"",description:w.description??"",type:C,ui_hidden:w.ui_hidden??!1,ui_type:w.ui_type,ui_order:w.ui_order},S):(ge("nodes").warn({fieldName:x,fieldType:C,field:mn(w)},"Skipping unknown output field type"),S)},{}),y={title:u,type:l,version:f,tags:c,description:d,outputType:b,inputs:h,outputs:_};return Object.assign(s,{[l]:y}),s},{})},M2e=()=>{Te({actionCreator:zg.fulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=ge("system"),i=e.payload;r.debug({schemaJSON:i},"Received OpenAPI schema");const{nodesAllowlist:o,nodesDenylist:s}=n().config,a=O2e(i,o,s);r.debug({nodeTemplates:mn(a)},`Built ${O_(a)} node templates`),t(MB(a))}}),Te({actionCreator:zg.rejected,effect:e=>{ge("system").error({error:mn(e.error)},"Problem retrieving OpenAPI Schema")}})},N2e=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),D2e=new Map(N2e),L2e=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],d3=new WeakSet,$2e=e=>{d3.add(e);const t=e.toJSON();return d3.delete(e),t},F2e=e=>D2e.get(e)??Error,jz=({from:e,seen:t,to:n,forceEnumerable:r,maxDepth:i,depth:o,useToJSON:s,serialize:a})=>{if(!n)if(Array.isArray(e))n=[];else if(!a&&TR(e)){const u=F2e(e.name);n=new u}else n={};if(t.push(e),o>=i)return n;if(s&&typeof e.toJSON=="function"&&!d3.has(e))return $2e(e);const l=u=>jz({from:u,seen:[...t],forceEnumerable:r,maxDepth:i,depth:o,useToJSON:s,serialize:a});for(const[u,c]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(c)){n[u]="[object Buffer]";continue}if(c!==null&&typeof c=="object"&&typeof c.pipe=="function"){n[u]="[object Stream]";continue}if(typeof c!="function"){if(!c||typeof c!="object"){n[u]=c;continue}if(!t.includes(e[u])){o++,n[u]=l(e[u]);continue}n[u]="[Circular]"}}for(const{property:u,enumerable:c}of L2e)typeof e[u]<"u"&&e[u]!==null&&Object.defineProperty(n,u,{value:TR(e[u])?l(e[u]):e[u],enumerable:r?!0:c,configurable:!0,writable:!0});return n};function $T(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return typeof e=="object"&&e!==null?jz({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):typeof e=="function"?`[Function: ${e.name??"anonymous"}]`:e}function TR(e){return!!e&&typeof e=="object"&&"name"in e&&"message"in e&&"stack"in e}const B2e=()=>{Te({actionCreator:Iu.pending,effect:()=>{}})},z2e=()=>{Te({actionCreator:Iu.fulfilled,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session canceled (${n})`)}})},U2e=()=>{Te({actionCreator:Iu.rejected,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:$T(r)},"Problem canceling session")}}})},j2e=()=>{Te({actionCreator:xi.pending,effect:()=>{}})},V2e=()=>{Te({actionCreator:xi.fulfilled,effect:e=>{const t=ge("session"),n=e.payload;t.debug({session:mn(n)},`Session created (${n.id})`)}})},G2e=()=>{Te({actionCreator:xi.rejected,effect:e=>{const t=ge("session");if(e.payload){const{error:n,status:r}=e.payload,i=mn(e.meta.arg);t.error({graph:i,status:r,error:$T(n)},"Problem creating session")}}})},H2e=()=>{Te({actionCreator:ah.pending,effect:()=>{}})},q2e=()=>{Te({actionCreator:ah.fulfilled,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session invoked (${n})`)}})},W2e=()=>{Te({actionCreator:ah.rejected,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:$T(r)},"Problem invoking session")}}})},K2e=()=>{Te({actionCreator:od,effect:(e,{getState:t,dispatch:n})=>{const r=ge("session"),{sessionId:i}=t().system;i&&(r.debug({session_id:i},`Session ready to invoke (${i})})`),n(ah({session_id:i})))}})},X2e=()=>{Te({actionCreator:O$,effect:(e,{dispatch:t,getState:n})=>{ge("socketio").debug("Connected");const{nodes:i,config:o}=n(),{disabledTabs:s}=o;!O_(i.nodeTemplates)&&!s.includes("nodes")&&t(zg()),t(M$(e.payload)),t(Ga.util.invalidateTags([{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"LoRAModel",id:pt},{type:"ControlNetModel",id:pt},{type:"VaeModel",id:pt},{type:"TextualInversionModel",id:pt},{type:"ScannedModels",id:pt}])),t(vT.util.invalidateTags(["AppConfig","AppVersion"]))}})},Q2e=()=>{Te({actionCreator:N$,effect:(e,{dispatch:t})=>{ge("socketio").debug("Disconnected"),t(D$(e.payload))}})},Y2e=()=>{Te({actionCreator:V$,effect:(e,{dispatch:t,getState:n})=>{const r=ge("socketio");if(n().system.canceledSession===e.payload.data.graph_execution_state_id){r.trace(e.payload,"Ignored generator progress for canceled session");return}r.trace(e.payload,`Generator progress (${e.payload.data.node.type})`),t(X5(e.payload))}})},Z2e=()=>{Te({actionCreator:U$,effect:(e,{dispatch:t})=>{ge("socketio").debug(e.payload,"Session complete"),t(j$(e.payload))}})},Ue="positive_conditioning",He="negative_conditioning",Oe="denoise_latents",Ke="latents_to_image",Wd="nsfw_checker",Wh="invisible_watermark",Ee="noise",$r="rand_int",Xn="range_of_size",sn="iterate",Fu="main_model_loader",OS="onnx_model_loader",qs="vae_loader",Vz="lora_loader",Gt="clip_skip",Fn="image_to_latents",ra="resize_image",vf="img2img_resize",ye="canvas_output",Un="inpaint_image",bi="inpaint_image_resize_up",Di="inpaint_image_resize_down",Ut="inpaint_infill",ql="inpaint_infill_resize_down",Bn="inpaint_create_mask",_t="canvas_coherence_denoise_latents",yn="canvas_coherence_noise",Li="canvas_coherence_noise_increment",cr="canvas_coherence_mask_edge",Lt="canvas_coherence_inpaint_create_mask",_f="tomask",Oi="mask_blur",vi="mask_combine",zn="mask_resize_up",$i="mask_resize_down",e0="control_net_collect",J2e="ip_adapter",Nw="dynamic_prompt",Pt="metadata_accumulator",AR="esrgan",Mi="sdxl_model_loader",Ce="sdxl_denoise_latents",Ku="sdxl_refiner_model_loader",t0="sdxl_refiner_positive_conditioning",n0="sdxl_refiner_negative_conditioning",Ws="sdxl_refiner_denoise_latents",Ba="refiner_inpaint_create_mask",Br="seamless",As="refiner_seamless",Gz="text_to_image_graph",f3="image_to_image_graph",Hz="canvas_text_to_image_graph",h3="canvas_image_to_image_graph",MS="canvas_inpaint_graph",NS="canvas_outpaint_graph",FT="sdxl_text_to_image_graph",R1="sxdl_image_to_image_graph",DS="sdxl_canvas_text_to_image_graph",Hg="sdxl_canvas_image_to_image_graph",Bc="sdxl_canvas_inpaint_graph",zc="sdxl_canvas_outpaint_graph",ewe=["load_image"],twe=()=>{Te({actionCreator:W5,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("socketio"),{data:i}=e.payload;r.debug({data:mn(i)},`Invocation complete (${e.payload.data.node.type})`);const o=e.payload.data.graph_execution_state_id,{cancelType:s,isCancelScheduled:a}=n().system;s==="scheduled"&&a&&t(Iu({session_id:o}));const{result:l,node:u,graph_execution_state_id:c}=i;if(Fz(l)&&!ewe.includes(u.type)){const{image_name:d}=l.image,{canvas:f,gallery:h}=n(),p=await t(pe.endpoints.getImageDTO.initiate(d)).unwrap();if(c===f.layerState.stagingArea.sessionId&&[ye].includes(i.source_node_id)&&t(Yne(p)),!p.is_intermediate){const{autoAddBoardId:m}=h;t(m&&m!=="none"?pe.endpoints.addImageToBoard.initiate({board_id:m,imageDTO:p}):pe.util.updateQueryData("listImages",{board_id:"none",categories:Qr},y=>{Ln.addOne(y,p)})),t(pe.util.invalidateTags([{type:"BoardImagesTotal",id:m},{type:"BoardAssetsTotal",id:m}]));const{selectedBoardId:b,shouldAutoSwitch:_}=h;_&&(m&&m!==b?(t(LC(m)),t(h1("images"))):m||t(h1("images")),t(ha(p)))}t(Lye(null))}t(K5(e.payload))}})},nwe=()=>{Te({actionCreator:z$,effect:(e,{dispatch:t})=>{ge("socketio").error(e.payload,`Invocation error (${e.payload.data.node.type})`),t(kb(e.payload))}})},rwe=()=>{Te({actionCreator:K$,effect:(e,{dispatch:t})=>{ge("socketio").error(e.payload,`Invocation retrieval error (${e.payload.data.graph_execution_state_id})`),t(X$(e.payload))}})},iwe=()=>{Te({actionCreator:B$,effect:(e,{dispatch:t,getState:n})=>{const r=ge("socketio");if(n().system.canceledSession===e.payload.data.graph_execution_state_id){r.trace(e.payload,"Ignored invocation started for canceled session");return}r.debug(e.payload,`Invocation started (${e.payload.data.node.type})`),t(q5(e.payload))}})},owe=()=>{Te({actionCreator:G$,effect:(e,{dispatch:t})=>{const n=ge("socketio"),{base_model:r,model_name:i,model_type:o,submodel:s}=e.payload.data;let a=`Model load started: ${r}/${o}/${i}`;s&&(a=a.concat(`/${s}`)),n.debug(e.payload,a),t(Rde(e.payload))}}),Te({actionCreator:H$,effect:(e,{dispatch:t})=>{const n=ge("socketio"),{base_model:r,model_name:i,model_type:o,submodel:s}=e.payload.data;let a=`Model load complete: ${r}/${o}/${i}`;s&&(a=a.concat(`/${s}`)),n.debug(e.payload,a),t(Ide(e.payload))}})},swe=()=>{Te({actionCreator:q$,effect:(e,{dispatch:t})=>{ge("socketio").error(e.payload,`Session retrieval error (${e.payload.data.graph_execution_state_id})`),t(W$(e.payload))}})},awe=()=>{Te({actionCreator:H5,effect:(e,{dispatch:t})=>{ge("socketio").debug(e.payload,"Subscribed"),t(L$(e.payload))}})},lwe=()=>{Te({actionCreator:$$,effect:(e,{dispatch:t})=>{ge("socketio").debug(e.payload,"Unsubscribed"),t(F$(e.payload))}})},uwe=()=>{Te({actionCreator:K0e,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTO:r}=e.payload;try{const i=await t(pe.endpoints.changeImageIsIntermediate.initiate({imageDTO:r,is_intermediate:!1})).unwrap(),{autoAddBoardId:o}=n().gallery;o&&o!=="none"&&await t(pe.endpoints.addImageToBoard.initiate({imageDTO:i,board_id:o})),t(Tn({title:J("toast.imageSaved"),status:"success"}))}catch(i){t(Tn({title:J("toast.imageSavingFailed"),description:i==null?void 0:i.message,status:"error"}))}}})},TMe=["sd-1","sd-2","sdxl","sdxl-refiner"],cwe=["sd-1","sd-2","sdxl"],AMe=["sdxl"],kMe=["sd-1","sd-2"],PMe=["sdxl-refiner"],dwe=()=>{Te({actionCreator:HB,effect:async(e,{getState:t,dispatch:n})=>{var i;if(e.payload==="unifiedCanvas"){const o=(i=t().generation.model)==null?void 0:i.base_model;if(o&&["sd-1","sd-2","sdxl"].includes(o))return;try{const s=n(Ga.endpoints.getMainModels.initiate(cwe)),a=await s.unwrap();if(s.unsubscribe(),!a.ids.length){n(Vl(null));return}const u=Gg.getSelectors().selectAll(a).filter(h=>["sd-1","sd-2","sxdl"].includes(h.base_model))[0];if(!u){n(Vl(null));return}const{base_model:c,model_name:d,model_type:f}=u;n(Vl({base_model:c,model_name:d,model_type:f}))}catch{n(Vl(null))}}}})},fwe=({image_name:e,esrganModelName:t})=>{const n={id:AR,type:"esrgan",image:{image_name:e},model_name:t,is_intermediate:!1};return{id:"adhoc-esrgan-graph",nodes:{[AR]:n},edges:[]}},hwe=Le("upscale/upscaleRequested"),pwe=()=>{Te({actionCreator:hwe,effect:async(e,{dispatch:t,getState:n,take:r})=>{const{image_name:i}=e.payload,{esrganModelName:o}=n().postprocessing,s=fwe({image_name:i,esrganModelName:o});t(xi({graph:s})),await r(xi.fulfilled.match),t(od())}})},gwe=e=>{const t=window.open("");t&&e.forEach(n=>{const r=new Image;r.src=n.base64,t.document.write(n.caption),t.document.write("
"),t.document.write(r.outerHTML),t.document.write("

")})},kR=e=>new Promise((t,n)=>{const r=new FileReader;r.onload=i=>t(r.result),r.onerror=i=>n(r.error),r.onabort=i=>n(new Error("Read aborted")),r.readAsDataURL(e)}),mwe=e=>{let t=!0,n=!1;const r=e.length;let i=3;for(i;i{const t=e.length;let n=0;for(n;n{const{isPartiallyTransparent:n,isFullyTransparent:r}=mwe(e.data),i=ywe(t.data);return n?r?"txt2img":"outpaint":i?"inpaint":"img2img"},_we=e=>gee(e,n=>n.isEnabled&&(!!n.processedControlImage||n.processorType==="none"&&!!n.controlImage)),ls=(e,t,n)=>{const{isEnabled:r,controlNets:i}=e.controlNet,o=_we(i),s=t.nodes[Pt];if(r&&o.length&&o.length){const a={id:e0,type:"collect",is_intermediate:!0};t.nodes[e0]=a,t.edges.push({source:{node_id:e0,field:"collection"},destination:{node_id:n,field:"control"}}),o.forEach(l=>{const{controlNetId:u,controlImage:c,processedControlImage:d,beginStepPct:f,endStepPct:h,controlMode:p,resizeMode:m,model:b,processorType:_,weight:y}=l,g={id:`control_net_${u}`,type:"controlnet",is_intermediate:!0,begin_step_percent:f,end_step_percent:h,control_mode:p,resize_mode:m,control_model:b,control_weight:y};if(d&&_!=="none")g.image={image_name:d};else if(c)g.image={image_name:c};else return;if(t.nodes[g.id]=g,s!=null&&s.controlnets){const v=I_(g,["id","type"]);s.controlnets.push(v)}t.edges.push({source:{node_id:g.id,field:"control"},destination:{node_id:e0,field:"item"}})})}},Bu=(e,t)=>{const{positivePrompt:n,iterations:r,seed:i,shouldRandomizeSeed:o}=e.generation,{combinatorial:s,isEnabled:a,maxPrompts:l}=e.dynamicPrompts,u=t.nodes[Pt];if(a){cte(t.nodes[Ue],"prompt");const c={id:Nw,type:"dynamic_prompt",is_intermediate:!0,max_prompts:s?l:r,combinatorial:s,prompt:n},d={id:sn,type:"iterate",is_intermediate:!0};if(t.nodes[Nw]=c,t.nodes[sn]=d,t.edges.push({source:{node_id:Nw,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ue,field:"prompt"}}),u&&t.edges.push({source:{node_id:sn,field:"item"},destination:{node_id:Pt,field:"positive_prompt"}}),o){const f={id:$r,type:"rand_int",is_intermediate:!0};t.nodes[$r]=f,t.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Ee,field:"seed"}}),u&&t.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Pt,field:"seed"}})}else t.nodes[Ee].seed=i,u&&(u.seed=i)}else{u&&(u.positive_prompt=n);const c={id:Xn,type:"range_of_size",is_intermediate:!0,size:r,step:1},d={id:sn,type:"iterate",is_intermediate:!0};if(t.nodes[sn]=d,t.nodes[Xn]=c,t.edges.push({source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}}),t.edges.push({source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}}),u&&t.edges.push({source:{node_id:sn,field:"item"},destination:{node_id:Pt,field:"seed"}}),o){const f={id:$r,type:"rand_int",is_intermediate:!0};t.nodes[$r]=f,t.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else c.start=i}},us=(e,t,n)=>{var o,s;const{isIPAdapterEnabled:r,ipAdapterInfo:i}=e.controlNet;if(r&&i.model){const a={id:J2e,type:"ip_adapter",is_intermediate:!0,weight:i.weight,ip_adapter_model:{base_model:(o=i.model)==null?void 0:o.base_model,model_name:(s=i.model)==null?void 0:s.model_name},begin_step_percent:i.beginStepPct,end_step_percent:i.endStepPct};if(i.adapterImage)a.image={image_name:i.adapterImage.image_name};else return;t.nodes[a.id]=a,t.edges.push({source:{node_id:a.id,field:"ip_adapter"},destination:{node_id:n,field:"ip_adapter"}})}},yh=(e,t,n,r=Fu)=>{const{loras:i}=e.lora,o=O_(i),s=t.nodes[Pt];o>0&&(t.edges=t.edges.filter(u=>!(u.source.node_id===r&&["unet"].includes(u.source.field))),t.edges=t.edges.filter(u=>!(u.source.node_id===Gt&&["clip"].includes(u.source.field))));let a="",l=0;rs(i,u=>{const{model_name:c,base_model:d,weight:f}=u,h=`${Vz}_${c.replace(".","_")}`,p={type:"lora_loader",id:h,is_intermediate:!0,lora:{model_name:c,base_model:d},weight:f};s!=null&&s.loras&&s.loras.push({lora:{model_name:c,base_model:d},weight:f}),t.nodes[h]=p,l===0?(t.edges.push({source:{node_id:r,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:Gt,field:"clip"},destination:{node_id:h,field:"clip"}})):(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:a,field:"clip"},destination:{node_id:h,field:"clip"}})),l===o-1&&(t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[MS,NS].includes(t.id)&&t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:_t,field:"unet"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:Ue,field:"clip"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:He,field:"clip"}})),a=h,l+=1})},BT=Fi(e=>e.ui,e=>jB[e.activeTab],{memoizeOptions:{equalityCheck:wm}}),RMe=Fi(e=>e.ui,e=>e.activeTab,{memoizeOptions:{equalityCheck:wm}}),IMe=Fi(e=>e.ui,e=>e,{memoizeOptions:{equalityCheck:wm}}),cs=(e,t,n=Ke)=>{const i=BT(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Pt];if(!o)return;o.is_intermediate=!0;const a={id:Wd,type:"img_nsfw",is_intermediate:i};t.nodes[Wd]=a,t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Wd,field:"image"}}),s&&t.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Wd,field:"metadata"}})},ds=(e,t,n)=>{const{seamlessXAxis:r,seamlessYAxis:i}=e.generation;t.nodes[Br]={id:Br,type:"seamless",seamless_x:r,seamless_y:i};let o=Oe;(t.id===FT||t.id===R1||t.id===DS||t.id===Hg||t.id===Bc||t.id===zc)&&(o=Ce),t.edges=t.edges.filter(s=>!(s.source.node_id===n&&["unet"].includes(s.source.field))&&!(s.source.node_id===n&&["vae"].includes(s.source.field))),t.edges.push({source:{node_id:n,field:"unet"},destination:{node_id:Br,field:"unet"}},{source:{node_id:n,field:"vae"},destination:{node_id:Br,field:"vae"}},{source:{node_id:Br,field:"unet"},destination:{node_id:o,field:"unet"}}),(t.id==MS||t.id===NS||t.id===Bc||t.id===zc)&&t.edges.push({source:{node_id:Br,field:"unet"},destination:{node_id:_t,field:"unet"}})},fs=(e,t,n=Fu)=>{const{vae:r,canvasCoherenceMode:i}=e.generation,{boundingBoxScaleMethod:o}=e.canvas,{shouldUseSDXLRefiner:s}=e.sdxl,a=["auto","manual"].includes(o),l=!r,u=t.nodes[Pt];l||(t.nodes[qs]={type:"vae_loader",id:qs,is_intermediate:!0,vae_model:r});const c=n==OS;(t.id===Gz||t.id===f3||t.id===FT||t.id===R1)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Ke,field:"vae"}}),(t.id===Hz||t.id===h3||t.id===DS||t.id==Hg)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:a?Ke:ye,field:"vae"}}),(t.id===f3||t.id===R1||t.id===h3||t.id===Hg)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Fn,field:"vae"}}),(t.id===MS||t.id===NS||t.id===Bc||t.id===zc)&&(t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Un,field:"vae"}},{source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Bn,field:"vae"}},{source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Ke,field:"vae"}}),i!=="unmasked"&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Lt,field:"vae"}})),s&&(t.id===Bc||t.id===zc)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Ba,field:"vae"}}),r&&u&&(u.vae=r)},hs=(e,t,n=Ke)=>{const i=BT(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Wd],a=t.nodes[Pt];if(!o)return;const l={id:Wh,type:"img_watermark",is_intermediate:i};t.nodes[Wh]=l,o.is_intermediate=!0,s?(s.is_intermediate=!0,t.edges.push({source:{node_id:Wd,field:"image"},destination:{node_id:Wh,field:"image"}})):t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Wh,field:"image"}}),a&&t.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Wh,field:"metadata"}})},bwe=(e,t)=>{const n=ge("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,img2imgStrength:u,vaePrecision:c,clipSkip:d,shouldUseCpuNoise:f,shouldUseNoiseSettings:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{width:b,height:_}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:y,boundingBoxScaleMethod:g,shouldAutoSave:v}=e.canvas,S=c==="fp32",w=["auto","manual"].includes(g);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let x=Fu;const C=h?f:zs.shouldUseCpuNoise,A={id:h3,nodes:{[x]:{type:"main_model_loader",id:x,is_intermediate:!0,model:o},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:d},[Ue]:{type:"compel",id:Ue,is_intermediate:!0,prompt:r},[He]:{type:"compel",id:He,is_intermediate:!0,prompt:i},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,use_cpu:C,width:w?y.width:b,height:w?y.height:_},[Fn]:{type:"i2l",id:Fn,is_intermediate:!0},[Oe]:{type:"denoise_latents",id:Oe,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:1-u,denoising_end:1},[ye]:{type:"l2i",id:ye,is_intermediate:!v}},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Oe,field:"latents"}}]};return w?(A.nodes[vf]={id:vf,type:"img_resize",is_intermediate:!0,image:t,width:y.width,height:y.height},A.nodes[Ke]={id:Ke,type:"l2i",is_intermediate:!0,fp32:S},A.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!v,width:b,height:_},A.edges.push({source:{node_id:vf,field:"image"},destination:{node_id:Fn,field:"image"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(A.nodes[ye]={type:"l2i",id:ye,is_intermediate:!v,fp32:S},A.nodes[Fn].image=t,A.edges.push({source:{node_id:Oe,field:"latents"},destination:{node_id:ye,field:"latents"}})),A.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:w?y.width:b,height:w?y.height:_,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:C?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:d,strength:u,init_image:t.image_name},A.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(p||m)&&(ds(e,A,x),x=Br),yh(e,A,Oe),fs(e,A,x),Bu(e,A),ls(e,A,Oe),us(e,A,Oe),e.system.shouldUseNSFWChecker&&cs(e,A,ye),e.system.shouldUseWatermarker&&hs(e,A,ye),A},Swe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,maskBlurMethod:y,canvasCoherenceMode:g,canvasCoherenceSteps:v,canvasCoherenceStrength:S,clipSkip:w,seamlessXAxis:x,seamlessYAxis:C}=e.generation;if(!s)throw r.error("No Image found in state"),new Error("No Image found in state");const{width:A,height:T}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:k,boundingBoxScaleMethod:L,shouldAutoSave:N}=e.canvas,E=p==="fp32",P=["auto","manual"].includes(L);let D=Fu;const B=b,R={id:MS,nodes:{[D]:{type:"main_model_loader",id:D,is_intermediate:!0,model:s},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:w},[Ue]:{type:"compel",id:Ue,is_intermediate:!0,prompt:i},[He]:{type:"compel",id:He,is_intermediate:!0,prompt:o},[Oi]:{type:"img_blur",id:Oi,is_intermediate:!0,radius:_,blur_type:y},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:E},[Ee]:{type:"noise",id:Ee,use_cpu:B,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:E},[Oe]:{type:"denoise_latents",id:Oe,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[yn]:{type:"noise",id:Ee,use_cpu:B,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:v,cfg_scale:a,scheduler:l,denoising_start:1-S,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:E},[ye]:{type:"color_correct",id:ye,is_intermediate:!N,reference:t},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:d,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:D,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:D,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Oe,field:"latents"}},{source:{node_id:Oi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Oe,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:D,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(P){const I=k.width,O=k.height;R.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:I,height:O,image:t},R.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:I,height:O,image:n},R.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:A,height:T},R.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:A,height:T},R.nodes[Ee].width=I,R.nodes[Ee].height=O,R.nodes[yn].width=I,R.nodes[yn].height=O,R.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:Oi,field:"image"}},{source:{node_id:bi,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else R.nodes[Ee].width=A,R.nodes[Ee].height=T,R.nodes[yn].width=A,R.nodes[yn].height=T,R.nodes[Un]={...R.nodes[Un],image:t},R.nodes[Oi]={...R.nodes[Oi],image:n},R.nodes[Bn]={...R.nodes[Bn],image:t},R.edges.push({source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:ye,field:"mask"}});if(g!=="unmasked"&&(R.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:E},P?R.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Lt,field:"image"}}):R.nodes[Lt]={...R.nodes[Lt],image:t},g==="mask"&&(P?R.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):R.nodes[Lt]={...R.nodes[Lt],mask:n}),g==="edge"&&(R.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:_,edge_size:_*2,low_threshold:100,high_threshold:200},P?R.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):R.nodes[cr]={...R.nodes[cr],image:n},R.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),R.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),h){const I={id:$r,type:"rand_int"};R.nodes[$r]=I,R.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else R.nodes[Xn].start=f;return(x||C)&&(ds(e,R,D),D=Br),fs(e,R,D),yh(e,R,Oe,D),ls(e,R,Oe),us(e,R,Oe),e.system.shouldUseNSFWChecker&&cs(e,R,ye),e.system.shouldUseWatermarker&&hs(e,R,ye),R},wwe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,canvasCoherenceMode:y,canvasCoherenceSteps:g,canvasCoherenceStrength:v,infillTileSize:S,infillPatchmatchDownscaleSize:w,infillMethod:x,clipSkip:C,seamlessXAxis:A,seamlessYAxis:T}=e.generation;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:k,height:L}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:N,boundingBoxScaleMethod:E,shouldAutoSave:P}=e.canvas,D=p==="fp32",B=["auto","manual"].includes(E);let R=Fu;const I=b,O={id:NS,nodes:{[R]:{type:"main_model_loader",id:R,is_intermediate:!0,model:s},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:C},[Ue]:{type:"compel",id:Ue,is_intermediate:!0,prompt:i},[He]:{type:"compel",id:He,is_intermediate:!0,prompt:o},[_f]:{type:"tomask",id:_f,is_intermediate:!0,image:t},[vi]:{type:"mask_combine",id:vi,is_intermediate:!0,mask2:n},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:D},[Ee]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:D},[Oe]:{type:"denoise_latents",id:Oe,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[yn]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-v,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:D},[ye]:{type:"color_correct",id:ye,is_intermediate:!P},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:d,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:R,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:R,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:_f,field:"image"},destination:{node_id:vi,field:"mask1"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Oe,field:"latents"}},{source:{node_id:B?zn:vi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Oe,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:R,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(x==="patchmatch"&&(O.nodes[Ut]={type:"infill_patchmatch",id:Ut,is_intermediate:!0,downscale:w}),x==="lama"&&(O.nodes[Ut]={type:"infill_lama",id:Ut,is_intermediate:!0}),x==="cv2"&&(O.nodes[Ut]={type:"infill_cv2",id:Ut,is_intermediate:!0}),x==="tile"&&(O.nodes[Ut]={type:"infill_tile",id:Ut,is_intermediate:!0,tile_size:S}),B){const F=N.width,U=N.height;O.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:F,height:U,image:t},O.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:F,height:U},O.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:k,height:L},O.nodes[ql]={type:"img_resize",id:ql,is_intermediate:!0,width:k,height:L},O.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:k,height:L},O.nodes[Ee].width=F,O.nodes[Ee].height=U,O.nodes[yn].width=F,O.nodes[yn].height=U,O.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Ut,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:zn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:Ut,field:"image"},destination:{node_id:ql,field:"image"}},{source:{node_id:ql,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else O.nodes[Ut]={...O.nodes[Ut],image:t},O.nodes[Ee].width=k,O.nodes[Ee].height=L,O.nodes[yn].width=k,O.nodes[yn].height=L,O.nodes[Un]={...O.nodes[Un],image:t},O.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:ye,field:"mask"}});if(y!=="unmasked"&&(O.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:D},O.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:Lt,field:"image"}}),y==="mask"&&(B?O.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):O.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Lt,field:"mask"}})),y==="edge"&&(O.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:_,edge_size:_*2,low_threshold:100,high_threshold:200},B?O.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):O.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:cr,field:"image"}}),O.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),O.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),h){const F={id:$r,type:"rand_int"};O.nodes[$r]=F,O.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else O.nodes[Xn].start=f;return(A||T)&&(ds(e,O,R),R=Br),fs(e,O,R),yh(e,O,Oe,R),ls(e,O,Oe),us(e,O,Oe),e.system.shouldUseNSFWChecker&&cs(e,O,ye),e.system.shouldUseWatermarker&&hs(e,O,ye),O},vh=(e,t,n,r=Mi)=>{const{loras:i}=e.lora,o=O_(i),s=t.nodes[Pt],a=r;let l=r;[Br,Ba].includes(r)&&(l=Mi),o>0&&(t.edges=t.edges.filter(d=>!(d.source.node_id===a&&["unet"].includes(d.source.field))&&!(d.source.node_id===l&&["clip"].includes(d.source.field))&&!(d.source.node_id===l&&["clip2"].includes(d.source.field))));let u="",c=0;rs(i,d=>{const{model_name:f,base_model:h,weight:p}=d,m=`${Vz}_${f.replace(".","_")}`,b={type:"sdxl_lora_loader",id:m,is_intermediate:!0,lora:{model_name:f,base_model:h},weight:p};s&&(s.loras||(s.loras=[]),s.loras.push({lora:{model_name:f,base_model:h},weight:p})),t.nodes[m]=b,c===0?(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:l,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:l,field:"clip2"},destination:{node_id:m,field:"clip2"}})):(t.edges.push({source:{node_id:u,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:u,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:u,field:"clip2"},destination:{node_id:m,field:"clip2"}})),c===o-1&&(t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[Bc,zc].includes(t.id)&&t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:_t,field:"unet"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:Ue,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:He,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:Ue,field:"clip2"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:He,field:"clip2"}})),u=m,c+=1})},sd=(e,t)=>{const{positivePrompt:n,negativePrompt:r}=e.generation,{positiveStylePrompt:i,negativeStylePrompt:o}=e.sdxl;let s=i,a=o;return t&&(i.length>0?s=`${n} ${i}`:s=n,o.length>0?a=`${r} ${o}`:a=r),{craftedPositiveStylePrompt:s,craftedNegativeStylePrompt:a}},_h=(e,t,n,r,i)=>{const{refinerModel:o,refinerPositiveAestheticScore:s,refinerNegativeAestheticScore:a,refinerSteps:l,refinerScheduler:u,refinerCFGScale:c,refinerStart:d}=e.sdxl,{seamlessXAxis:f,seamlessYAxis:h,vaePrecision:p}=e.generation,{boundingBoxScaleMethod:m}=e.canvas,b=p==="fp32",_=["auto","manual"].includes(m);if(!o)return;const y=t.nodes[Pt];y&&(y.refiner_model=o,y.refiner_positive_aesthetic_score=s,y.refiner_negative_aesthetic_score=a,y.refiner_cfg_scale=c,y.refiner_scheduler=u,y.refiner_start=d,y.refiner_steps=l);const g=r||Mi,{craftedPositiveStylePrompt:v,craftedNegativeStylePrompt:S}=sd(e,!0);t.edges=t.edges.filter(w=>!(w.source.node_id===n&&["latents"].includes(w.source.field))),t.edges=t.edges.filter(w=>!(w.source.node_id===g&&["vae"].includes(w.source.field))),t.nodes[Ku]={type:"sdxl_refiner_model_loader",id:Ku,model:o},t.nodes[t0]={type:"sdxl_refiner_compel_prompt",id:t0,style:v,aesthetic_score:s},t.nodes[n0]={type:"sdxl_refiner_compel_prompt",id:n0,style:S,aesthetic_score:a},t.nodes[Ws]={type:"denoise_latents",id:Ws,cfg_scale:c,steps:l,scheduler:u,denoising_start:d,denoising_end:1},f||h?(t.nodes[As]={id:As,type:"seamless",seamless_x:f,seamless_y:h},t.edges.push({source:{node_id:Ku,field:"unet"},destination:{node_id:As,field:"unet"}},{source:{node_id:Ku,field:"vae"},destination:{node_id:As,field:"vae"}},{source:{node_id:As,field:"unet"},destination:{node_id:Ws,field:"unet"}})):t.edges.push({source:{node_id:Ku,field:"unet"},destination:{node_id:Ws,field:"unet"}}),t.edges.push({source:{node_id:Ku,field:"clip2"},destination:{node_id:t0,field:"clip2"}},{source:{node_id:Ku,field:"clip2"},destination:{node_id:n0,field:"clip2"}},{source:{node_id:t0,field:"conditioning"},destination:{node_id:Ws,field:"positive_conditioning"}},{source:{node_id:n0,field:"conditioning"},destination:{node_id:Ws,field:"negative_conditioning"}},{source:{node_id:n,field:"latents"},destination:{node_id:Ws,field:"latents"}}),(t.id===Bc||t.id===zc)&&(t.nodes[Ba]={type:"create_denoise_mask",id:Ba,is_intermediate:!0,fp32:b},_?t.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Ba,field:"image"}}):t.nodes[Ba]={...t.nodes[Ba],image:i},t.edges.push({source:{node_id:_?zn:vi,field:"image"},destination:{node_id:Ba,field:"mask"}},{source:{node_id:Ba,field:"denoise_mask"},destination:{node_id:Ws,field:"denoise_mask"}})),t.id===DS||t.id===Hg?t.edges.push({source:{node_id:Ws,field:"latents"},destination:{node_id:_?Ke:ye,field:"latents"}}):t.edges.push({source:{node_id:Ws,field:"latents"},destination:{node_id:Ke,field:"latents"}})},xwe=(e,t)=>{const n=ge("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,vaePrecision:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,seamlessXAxis:h,seamlessYAxis:p}=e.generation,{shouldUseSDXLRefiner:m,refinerStart:b,sdxlImg2ImgDenoisingStrength:_,shouldConcatSDXLStylePrompt:y}=e.sdxl,{width:g,height:v}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:S,boundingBoxScaleMethod:w,shouldAutoSave:x}=e.canvas,C=u==="fp32",A=["auto","manual"].includes(w);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let T=Mi;const k=f?d:zs.shouldUseCpuNoise,{craftedPositiveStylePrompt:L,craftedNegativeStylePrompt:N}=sd(e,y),E={id:Hg,nodes:{[T]:{type:"sdxl_model_loader",id:T,model:o},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:r,style:L},[He]:{type:"sdxl_compel_prompt",id:He,prompt:i,style:N},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,use_cpu:k,width:A?S.width:g,height:A?S.height:v},[Fn]:{type:"i2l",id:Fn,is_intermediate:!0,fp32:C},[Ce]:{type:"denoise_latents",id:Ce,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:m?Math.min(b,1-_):1-_,denoising_end:m?b:1}},edges:[{source:{node_id:T,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:T,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:T,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Ce,field:"latents"}}]};return A?(E.nodes[vf]={id:vf,type:"img_resize",is_intermediate:!0,image:t,width:S.width,height:S.height},E.nodes[Ke]={id:Ke,type:"l2i",is_intermediate:!0,fp32:C},E.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!x,width:g,height:v},E.edges.push({source:{node_id:vf,field:"image"},destination:{node_id:Fn,field:"image"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(E.nodes[ye]={type:"l2i",id:ye,is_intermediate:!x,fp32:C},E.nodes[Fn].image=t,E.edges.push({source:{node_id:Ce,field:"latents"},destination:{node_id:ye,field:"latents"}})),E.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:A?S.width:g,height:A?S.height:v,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:k?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:c,strength:_,init_image:t.image_name},E.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(h||p)&&(ds(e,E,T),T=Br),m&&(_h(e,E,Ce,T),(h||p)&&(T=As)),fs(e,E,T),vh(e,E,Ce,T),Bu(e,E),ls(e,E,Ce),us(e,E,Ce),e.system.shouldUseNSFWChecker&&cs(e,E,ye),e.system.shouldUseWatermarker&&hs(e,E,ye),E},Cwe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,maskBlurMethod:_,canvasCoherenceMode:y,canvasCoherenceSteps:g,canvasCoherenceStrength:v,seamlessXAxis:S,seamlessYAxis:w}=e.generation,{sdxlImg2ImgDenoisingStrength:x,shouldUseSDXLRefiner:C,refinerStart:A,shouldConcatSDXLStylePrompt:T}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:k,height:L}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:N,boundingBoxScaleMethod:E,shouldAutoSave:P}=e.canvas,D=h==="fp32",B=["auto","manual"].includes(E);let R=Mi;const I=m,{craftedPositiveStylePrompt:O,craftedNegativeStylePrompt:F}=sd(e,T),U={id:Bc,nodes:{[R]:{type:"sdxl_model_loader",id:R,model:s},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:i,style:O},[He]:{type:"sdxl_compel_prompt",id:He,prompt:o,style:F},[Oi]:{type:"img_blur",id:Oi,is_intermediate:!0,radius:b,blur_type:_},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:D},[Ee]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:D},[Ce]:{type:"denoise_latents",id:Ce,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:C?Math.min(A,1-x):1-x,denoising_end:C?A:1},[yn]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-v,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:D},[ye]:{type:"color_correct",id:ye,is_intermediate:!P,reference:t},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:c,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:R,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:R,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:R,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:R,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:R,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Ce,field:"latents"}},{source:{node_id:Oi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Ce,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:R,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(B){const V=N.width,H=N.height;U.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:V,height:H,image:t},U.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:V,height:H,image:n},U.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:k,height:L},U.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:k,height:L},U.nodes[Ee].width=V,U.nodes[Ee].height=H,U.nodes[yn].width=V,U.nodes[yn].height=H,U.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:Oi,field:"image"}},{source:{node_id:bi,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else U.nodes[Ee].width=k,U.nodes[Ee].height=L,U.nodes[yn].width=k,U.nodes[yn].height=L,U.nodes[Un]={...U.nodes[Un],image:t},U.nodes[Oi]={...U.nodes[Oi],image:n},U.nodes[Bn]={...U.nodes[Bn],image:t},U.edges.push({source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:ye,field:"mask"}});if(y!=="unmasked"&&(U.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:D},B?U.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Lt,field:"image"}}):U.nodes[Lt]={...U.nodes[Lt],image:t},y==="mask"&&(B?U.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):U.nodes[Lt]={...U.nodes[Lt],mask:n}),y==="edge"&&(U.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:b,edge_size:b*2,low_threshold:100,high_threshold:200},B?U.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):U.nodes[cr]={...U.nodes[cr],image:n},U.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),U.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),f){const V={id:$r,type:"rand_int"};U.nodes[$r]=V,U.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else U.nodes[Xn].start=d;return(S||w)&&(ds(e,U,R),R=Br),C&&(_h(e,U,_t,R,t),(S||w)&&(R=As)),fs(e,U,R),vh(e,U,Ce,R),ls(e,U,Ce),us(e,U,Ce),e.system.shouldUseNSFWChecker&&cs(e,U,ye),e.system.shouldUseWatermarker&&hs(e,U,ye),U},Ewe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,canvasCoherenceMode:_,canvasCoherenceSteps:y,canvasCoherenceStrength:g,infillTileSize:v,infillPatchmatchDownscaleSize:S,infillMethod:w,seamlessXAxis:x,seamlessYAxis:C}=e.generation,{sdxlImg2ImgDenoisingStrength:A,shouldUseSDXLRefiner:T,refinerStart:k,shouldConcatSDXLStylePrompt:L}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:N,height:E}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:P,boundingBoxScaleMethod:D,shouldAutoSave:B}=e.canvas,R=h==="fp32",I=["auto","manual"].includes(D);let O=Mi;const F=m,{craftedPositiveStylePrompt:U,craftedNegativeStylePrompt:V}=sd(e,L),H={id:zc,nodes:{[Mi]:{type:"sdxl_model_loader",id:Mi,model:s},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:i,style:U},[He]:{type:"sdxl_compel_prompt",id:He,prompt:o,style:V},[_f]:{type:"tomask",id:_f,is_intermediate:!0,image:t},[vi]:{type:"mask_combine",id:vi,is_intermediate:!0,mask2:n},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:R},[Ee]:{type:"noise",id:Ee,use_cpu:F,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:R},[Ce]:{type:"denoise_latents",id:Ce,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:T?Math.min(k,1-A):1-A,denoising_end:T?k:1},[yn]:{type:"noise",id:Ee,use_cpu:F,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:y,cfg_scale:a,scheduler:l,denoising_start:1-g,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:R},[ye]:{type:"color_correct",id:ye,is_intermediate:!B},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:c,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:Mi,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:Mi,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Mi,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:Mi,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Mi,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:_f,field:"image"},destination:{node_id:vi,field:"mask1"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Ce,field:"latents"}},{source:{node_id:I?zn:vi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Ce,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:O,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(w==="patchmatch"&&(H.nodes[Ut]={type:"infill_patchmatch",id:Ut,is_intermediate:!0,downscale:S}),w==="lama"&&(H.nodes[Ut]={type:"infill_lama",id:Ut,is_intermediate:!0}),w==="cv2"&&(H.nodes[Ut]={type:"infill_cv2",id:Ut,is_intermediate:!0}),w==="tile"&&(H.nodes[Ut]={type:"infill_tile",id:Ut,is_intermediate:!0,tile_size:v}),I){const Y=P.width,Q=P.height;H.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:Y,height:Q,image:t},H.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:Y,height:Q},H.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:N,height:E},H.nodes[ql]={type:"img_resize",id:ql,is_intermediate:!0,width:N,height:E},H.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:N,height:E},H.nodes[Ee].width=Y,H.nodes[Ee].height=Q,H.nodes[yn].width=Y,H.nodes[yn].height=Q,H.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Ut,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:zn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:Ut,field:"image"},destination:{node_id:ql,field:"image"}},{source:{node_id:ql,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else H.nodes[Ut]={...H.nodes[Ut],image:t},H.nodes[Ee].width=N,H.nodes[Ee].height=E,H.nodes[yn].width=N,H.nodes[yn].height=E,H.nodes[Un]={...H.nodes[Un],image:t},H.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:ye,field:"mask"}});if(_!=="unmasked"&&(H.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:R},H.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:Lt,field:"image"}}),_==="mask"&&(I?H.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):H.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Lt,field:"mask"}})),_==="edge"&&(H.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:b,edge_size:b*2,low_threshold:100,high_threshold:200},I?H.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):H.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:cr,field:"image"}}),H.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),H.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),f){const Y={id:$r,type:"rand_int"};H.nodes[$r]=Y,H.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else H.nodes[Xn].start=d;return(x||C)&&(ds(e,H,O),O=Br),T&&(_h(e,H,_t,O,t),(x||C)&&(O=As)),fs(e,H,O),vh(e,H,Ce,O),ls(e,H,Ce),us(e,H,Ce),e.system.shouldUseNSFWChecker&&cs(e,H,ye),e.system.shouldUseWatermarker&&hs(e,H,ye),H},Twe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:y}=e.canvas,g=l==="fp32",v=["auto","manual"].includes(_),{shouldUseSDXLRefiner:S,refinerStart:w,shouldConcatSDXLStylePrompt:x}=e.sdxl;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const C=d?c:zs.shouldUseCpuNoise,A=i.model_type==="onnx";let T=A?OS:Mi;const k=A?"onnx_model_loader":"sdxl_model_loader",L=A?{type:"t2l_onnx",id:Ce,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Ce,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:S?w:1},{craftedPositiveStylePrompt:N,craftedNegativeStylePrompt:E}=sd(e,x),P={id:DS,nodes:{[T]:{type:k,id:T,is_intermediate:!0,model:i},[Ue]:{type:A?"prompt_onnx":"sdxl_compel_prompt",id:Ue,is_intermediate:!0,prompt:n,style:N},[He]:{type:A?"prompt_onnx":"sdxl_compel_prompt",id:He,is_intermediate:!0,prompt:r,style:E},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,width:v?b.width:p,height:v?b.height:m,use_cpu:C},[L.id]:L},edges:[{source:{node_id:T,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:T,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:T,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}}]};return v?(P.nodes[Ke]={id:Ke,type:A?"l2i_onnx":"l2i",is_intermediate:!0,fp32:g},P.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!y,width:p,height:m},P.edges.push({source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(P.nodes[ye]={type:A?"l2i_onnx":"l2i",id:ye,is_intermediate:!y,fp32:g},P.edges.push({source:{node_id:Ce,field:"latents"},destination:{node_id:ye,field:"latents"}})),P.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:v?b.width:p,height:v?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:C?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},P.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(f||h)&&(ds(e,P,T),T=Br),S&&(_h(e,P,Ce,T),(f||h)&&(T=As)),vh(e,P,Ce,T),fs(e,P,T),Bu(e,P),ls(e,P,Ce),us(e,P,Ce),e.system.shouldUseNSFWChecker&&cs(e,P,ye),e.system.shouldUseWatermarker&&hs(e,P,ye),P},Awe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:y}=e.canvas,g=l==="fp32",v=["auto","manual"].includes(_);if(!i)throw t.error("No model found in state"),new Error("No model found in state");const S=d?c:zs.shouldUseCpuNoise,w=i.model_type==="onnx";let x=w?OS:Fu;const C=w?"onnx_model_loader":"main_model_loader",A=w?{type:"t2l_onnx",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},T={id:Hz,nodes:{[x]:{type:C,id:x,is_intermediate:!0,model:i},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:u},[Ue]:{type:w?"prompt_onnx":"compel",id:Ue,is_intermediate:!0,prompt:n},[He]:{type:w?"prompt_onnx":"compel",id:He,is_intermediate:!0,prompt:r},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,width:v?b.width:p,height:v?b.height:m,use_cpu:S},[A.id]:A},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}}]};return v?(T.nodes[Ke]={id:Ke,type:w?"l2i_onnx":"l2i",is_intermediate:!0,fp32:g},T.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!y,width:p,height:m},T.edges.push({source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(T.nodes[ye]={type:w?"l2i_onnx":"l2i",id:ye,is_intermediate:!y,fp32:g},T.edges.push({source:{node_id:Oe,field:"latents"},destination:{node_id:ye,field:"latents"}})),T.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:v?b.width:p,height:v?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},T.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(f||h)&&(ds(e,T,x),x=Br),fs(e,T,x),yh(e,T,Oe,x),Bu(e,T),ls(e,T,Oe),us(e,T,Oe),e.system.shouldUseNSFWChecker&&cs(e,T,ye),e.system.shouldUseWatermarker&&hs(e,T,ye),T},kwe=(e,t,n,r)=>{let i;if(t==="txt2img")e.generation.model&&e.generation.model.base_model==="sdxl"?i=Twe(e):i=Awe(e);else if(t==="img2img"){if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=xwe(e,n):i=bwe(e,n)}else if(t==="inpaint"){if(!n||!r)throw new Error("Missing canvas init and mask images");e.generation.model&&e.generation.model.base_model==="sdxl"?i=Cwe(e,n,r):i=Swe(e,n,r)}else{if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=Ewe(e,n,r):i=wwe(e,n,r)}return i},Pwe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="unifiedCanvas",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),{layerState:s,boundingBoxCoordinates:a,boundingBoxDimensions:l,isMaskEnabled:u,shouldPreserveMaskedArea:c}=o.canvas,d=await DT(s,a,l,u,c);if(!d){i.error("Unable to create canvas data");return}const{baseBlob:f,baseImageData:h,maskBlob:p,maskImageData:m}=d,b=vwe(h,m);if(o.system.enableImageDebugging){const x=await kR(f),C=await kR(p);gwe([{base64:C,caption:"mask b64"},{base64:x,caption:"image b64"}])}i.debug(`Generation mode: ${b}`);let _,y;["img2img","inpaint","outpaint"].includes(b)&&(_=await n(pe.endpoints.uploadImage.initiate({file:new File([f],"canvasInitImage.png",{type:"image/png"}),image_category:"general",is_intermediate:!0})).unwrap()),["inpaint","outpaint"].includes(b)&&(y=await n(pe.endpoints.uploadImage.initiate({file:new File([p],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!0})).unwrap());const g=kwe(o,b,_,y);i.debug({graph:mn(g)},"Canvas graph built"),n(ZB(g));const{requestId:v}=n(xi({graph:g})),[S]=await r(x=>xi.fulfilled.match(x)&&x.meta.requestId===v),w=S.payload.id;["img2img","inpaint"].includes(b)&&_&&n(pe.endpoints.changeImageSessionId.initiate({imageDTO:_,session_id:w})),["inpaint"].includes(b)&&y&&n(pe.endpoints.changeImageSessionId.initiate({imageDTO:y,session_id:w})),o.canvas.layerState.stagingArea.boundingBox||n(ere({sessionId:w,boundingBox:{...o.canvas.boundingBoxCoordinates,...o.canvas.boundingBoxDimensions}})),n(tre(w)),n(od())}})},Rwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,img2imgStrength:u,shouldFitToWidthHeight:c,width:d,height:f,clipSkip:h,shouldUseCpuNoise:p,shouldUseNoiseSettings:m,vaePrecision:b,seamlessXAxis:_,seamlessYAxis:y}=e.generation;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");const g=b==="fp32";let v=Fu;const S=m?p:zs.shouldUseCpuNoise,w={id:f3,nodes:{[v]:{type:"main_model_loader",id:v,model:i},[Gt]:{type:"clip_skip",id:Gt,skipped_layers:h},[Ue]:{type:"compel",id:Ue,prompt:n},[He]:{type:"compel",id:He,prompt:r},[Ee]:{type:"noise",id:Ee,use_cpu:S},[Ke]:{type:"l2i",id:Ke,fp32:g},[Oe]:{type:"denoise_latents",id:Oe,cfg_scale:o,scheduler:s,steps:a,denoising_start:1-u,denoising_end:1},[Fn]:{type:"i2l",id:Fn,fp32:g}},edges:[{source:{node_id:v,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:v,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Oe,field:"latents"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(c&&(l.width!==d||l.height!==f)){const x={id:ra,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:d,height:f};w.nodes[ra]=x,w.edges.push({source:{node_id:ra,field:"image"},destination:{node_id:Fn,field:"image"}}),w.edges.push({source:{node_id:ra,field:"width"},destination:{node_id:Ee,field:"width"}}),w.edges.push({source:{node_id:ra,field:"height"},destination:{node_id:Ee,field:"height"}})}else w.nodes[Fn].image={image_name:l.imageName},w.edges.push({source:{node_id:Fn,field:"width"},destination:{node_id:Ee,field:"width"}}),w.edges.push({source:{node_id:Fn,field:"height"},destination:{node_id:Ee,field:"height"}});return w.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:o,height:f,width:d,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:h,strength:u,init_image:l.imageName},w.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(_||y)&&(ds(e,w,v),v=Br),fs(e,w,v),yh(e,w,Oe,v),Bu(e,w),ls(e,w,Oe),us(e,w,Oe),e.system.shouldUseNSFWChecker&&cs(e,w),e.system.shouldUseWatermarker&&hs(e,w),w},Iwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,shouldFitToWidthHeight:u,width:c,height:d,clipSkip:f,shouldUseCpuNoise:h,shouldUseNoiseSettings:p,vaePrecision:m,seamlessXAxis:b,seamlessYAxis:_}=e.generation,{positiveStylePrompt:y,negativeStylePrompt:g,shouldConcatSDXLStylePrompt:v,shouldUseSDXLRefiner:S,refinerStart:w,sdxlImg2ImgDenoisingStrength:x}=e.sdxl;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");const C=m==="fp32";let A=Mi;const T=p?h:zs.shouldUseCpuNoise,{craftedPositiveStylePrompt:k,craftedNegativeStylePrompt:L}=sd(e,v),N={id:R1,nodes:{[A]:{type:"sdxl_model_loader",id:A,model:i},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:n,style:k},[He]:{type:"sdxl_compel_prompt",id:He,prompt:r,style:L},[Ee]:{type:"noise",id:Ee,use_cpu:T},[Ke]:{type:"l2i",id:Ke,fp32:C},[Ce]:{type:"denoise_latents",id:Ce,cfg_scale:o,scheduler:s,steps:a,denoising_start:S?Math.min(w,1-x):1-x,denoising_end:S?w:1},[Fn]:{type:"i2l",id:Fn,fp32:C}},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Ce,field:"latents"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(u&&(l.width!==c||l.height!==d)){const E={id:ra,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:c,height:d};N.nodes[ra]=E,N.edges.push({source:{node_id:ra,field:"image"},destination:{node_id:Fn,field:"image"}}),N.edges.push({source:{node_id:ra,field:"width"},destination:{node_id:Ee,field:"width"}}),N.edges.push({source:{node_id:ra,field:"height"},destination:{node_id:Ee,field:"height"}})}else N.nodes[Fn].image={image_name:l.imageName},N.edges.push({source:{node_id:Fn,field:"width"},destination:{node_id:Ee,field:"width"}}),N.edges.push({source:{node_id:Fn,field:"height"},destination:{node_id:Ee,field:"height"}});return N.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"sdxl_img2img",cfg_scale:o,height:d,width:c,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:T?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:f,strength:x,init_image:l.imageName,positive_style_prompt:y,negative_style_prompt:g},N.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(b||_)&&(ds(e,N,A),A=Br),S&&(_h(e,N,Ce),(b||_)&&(A=As)),fs(e,N,A),vh(e,N,Ce,A),ls(e,N,Ce),us(e,N,Ce),Bu(e,N),e.system.shouldUseNSFWChecker&&cs(e,N),e.system.shouldUseWatermarker&&hs(e,N),N},Owe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="img2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=Iwe(o):a=Rwe(o),n(YB(a)),i.debug({graph:mn(a)},"Image to Image graph built"),n(xi({graph:a})),await r(xi.fulfilled.match),n(od())}})},Mwe=/[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*/u;function Nwe(e){return e.length===1?e[0].toString():e.reduce((t,n)=>{if(typeof n=="number")return t+"["+n.toString()+"]";if(n.includes('"'))return t+'["'+Dwe(n)+'"]';if(!Mwe.test(n))return t+'["'+n+'"]';const r=t.length===0?"":".";return t+r+n},"")}function Dwe(e){return e.replace(/"/g,'\\"')}function Lwe(e){return e.length!==0}const $we=99,qz="; ",Wz=", or ",zT="Validation error",Kz=": ";class Xz extends Error{constructor(n,r=[]){super(n);e2(this,"details");e2(this,"name");this.details=r,this.name="ZodValidationError"}toString(){return this.message}}function UT(e,t,n){if(e.code==="invalid_union")return e.unionErrors.reduce((r,i)=>{const o=i.issues.map(s=>UT(s,t,n)).join(t);return r.includes(o)||r.push(o),r},[]).join(n);if(Lwe(e.path)){if(e.path.length===1){const r=e.path[0];if(typeof r=="number")return`${e.message} at index ${r}`}return`${e.message} at "${Nwe(e.path)}"`}return e.message}function Qz(e,t,n){return t!==null?e.length>0?[t,e].join(n):t:e.length>0?e:zT}function OMe(e,t={}){const{issueSeparator:n=qz,unionSeparator:r=Wz,prefixSeparator:i=Kz,prefix:o=zT}=t,s=UT(e,n,r),a=Qz(s,o,i);return new Xz(a,[e])}function PR(e,t={}){const{maxIssuesInMessage:n=$we,issueSeparator:r=qz,unionSeparator:i=Wz,prefixSeparator:o=Kz,prefix:s=zT}=t,a=e.errors.slice(0,n).map(u=>UT(u,r,i)).join(r),l=Qz(a,s,o);return new Xz(l,e.errors)}const Fwe=e=>{const{workflow:t,nodes:n,edges:r}=e,i={...t,nodes:[],edges:[]};return n.filter(o=>["invocation","notes"].includes(o.type??"__UNKNOWN_NODE_TYPE__")).forEach(o=>{const s=LD.safeParse(o);if(!s.success){const{message:a}=PR(s.error,{prefix:we.t("nodes.unableToParseNode")});ge("nodes").warn({node:mn(o)},a);return}i.nodes.push(s.data)}),r.forEach(o=>{const s=$D.safeParse(o);if(!s.success){const{message:a}=PR(s.error,{prefix:we.t("nodes.unableToParseEdge")});ge("nodes").warn({edge:mn(o)},a);return}i.edges.push(s.data)}),i},Bwe=e=>{if(e.type==="ColorField"&&e.value){const t=Jn(e.value),{r:n,g:r,b:i,a:o}=e.value,s=Math.max(0,Math.min(o*255,255));return Object.assign(t,{r:n,g:r,b:i,a:s}),t}return e.value},zwe=e=>{const{nodes:t,edges:n}=e,r=t.filter(Kr),i=JSON.stringify(Fwe(e)),o=r.reduce((u,c)=>{const{id:d,data:f}=c,{type:h,inputs:p,isIntermediate:m,embedWorkflow:b}=f,_=hC(p,(g,v,S)=>{const w=Bwe(v);return g[S]=w,g},{}),y={type:h,id:d,..._,is_intermediate:m};return b&&Object.assign(y,{workflow:i}),Object.assign(u,{[d]:y}),u},{}),a=n.filter(u=>u.type!=="collapsed").reduce((u,c)=>{const{source:d,target:f,sourceHandle:h,targetHandle:p}=c;return u.push({source:{node_id:d,field:h},destination:{node_id:f,field:p}}),u},[]);return a.forEach(u=>{const c=o[u.destination.node_id],d=u.destination.field;o[u.destination.node_id]=I_(c,d)}),{id:kB(),nodes:o,edges:a}},Uwe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="nodes",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),s=zwe(o.nodes);n(JB(s)),i.debug({graph:mn(s)},"Nodes graph built"),n(xi({graph:s})),await r(xi.fulfilled.match),n(od())}})},jwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{positiveStylePrompt:b,negativeStylePrompt:_,shouldUseSDXLRefiner:y,shouldConcatSDXLStylePrompt:g,refinerStart:v}=e.sdxl,S=f?d:zs.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const w=h==="fp32",{craftedPositiveStylePrompt:x,craftedNegativeStylePrompt:C}=sd(e,g);let A=Mi;const T={id:FT,nodes:{[A]:{type:"sdxl_model_loader",id:A,model:i},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:n,style:x},[He]:{type:"sdxl_compel_prompt",id:He,prompt:r,style:C},[Ee]:{type:"noise",id:Ee,width:l,height:u,use_cpu:S},[Ce]:{type:"denoise_latents",id:Ce,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:y?v:1},[Ke]:{type:"l2i",id:Ke,fp32:w}},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};return T.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"sdxl_txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c,positive_style_prompt:b,negative_style_prompt:_},T.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(p||m)&&(ds(e,T,A),A=Br),y&&(_h(e,T,Ce),(p||m)&&(A=As)),fs(e,T,A),vh(e,T,Ce,A),ls(e,T,Ce),us(e,T,Ce),Bu(e,T),e.system.shouldUseNSFWChecker&&cs(e,T),e.system.shouldUseWatermarker&&hs(e,T),T},Vwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,b=f?d:zs.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const _=h==="fp32",y=i.model_type==="onnx";let g=y?OS:Fu;const v=y?"onnx_model_loader":"main_model_loader",S=y?{type:"t2l_onnx",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},w={id:Gz,nodes:{[g]:{type:v,id:g,is_intermediate:!0,model:i},[Gt]:{type:"clip_skip",id:Gt,skipped_layers:c,is_intermediate:!0},[Ue]:{type:y?"prompt_onnx":"compel",id:Ue,prompt:n,is_intermediate:!0},[He]:{type:y?"prompt_onnx":"compel",id:He,prompt:r,is_intermediate:!0},[Ee]:{type:"noise",id:Ee,width:l,height:u,use_cpu:b,is_intermediate:!0},[S.id]:S,[Ke]:{type:y?"l2i_onnx":"l2i",id:Ke,fp32:_}},edges:[{source:{node_id:g,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:g,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};return w.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:b?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c},w.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(p||m)&&(ds(e,w,g),g=Br),fs(e,w,g),yh(e,w,Oe,g),Bu(e,w),ls(e,w,Oe),us(e,w,Oe),e.system.shouldUseNSFWChecker&&cs(e,w),e.system.shouldUseWatermarker&&hs(e,w),w},Gwe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="txt2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=jwe(o):a=Vwe(o),n(QB(a)),i.debug({graph:mn(a)},"Text to Image graph built"),n(xi({graph:a})),await r(xi.fulfilled.match),n(od())}})},Hwe=Ru(null),qwe=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,RR=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(qwe);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},IR=e=>e==="*"||e==="x"||e==="X",OR=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},Wwe=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],Kwe=(e,t)=>{if(IR(e)||IR(t))return 0;const[n,r]=Wwe(OR(e),OR(t));return n>r?1:n{for(let n=0;n{const n=RR(e),r=RR(t),i=n.pop(),o=r.pop(),s=MR(n,r);return s!==0?s:i&&o?MR(i.split("."),o.split(".")):i||o?i?-1:1:0},Qwe=(e,t)=>{const n=Jn(e),{nodes:r,edges:i}=n,o=[],s=r.filter(vC),a=v5(s,"id");return r.forEach(l=>{if(!vC(l))return;const u=t[l.data.type];if(!u){o.push({message:`${we.t("nodes.node")} "${l.data.type}" ${we.t("nodes.skipped")}`,issues:[`${we.t("nodes.nodeType")}"${l.data.type}" ${we.t("nodes.doesNotExist")}`],data:l});return}if(u.version&&l.data.version&&Xwe(u.version,l.data.version)!==0){o.push({message:`${we.t("nodes.node")} "${l.data.type}" ${we.t("nodes.mismatchedVersion")}`,issues:[`${we.t("nodes.node")} "${l.data.type}" v${l.data.version} ${we.t("nodes.maybeIncompatible")} v${u.version}`],data:{node:l,nodeTemplate:mn(u)}});return}}),i.forEach((l,u)=>{const c=a[l.source],d=a[l.target],f=[];if(c?l.type==="default"&&!(l.sourceHandle in c.data.outputs)&&f.push(`${we.t("nodes.outputNodes")} "${l.source}.${l.sourceHandle}" ${we.t("nodes.doesNotExist")}`):f.push(`${we.t("nodes.outputNode")} ${l.source} ${we.t("nodes.doesNotExist")}`),d?l.type==="default"&&!(l.targetHandle in d.data.inputs)&&f.push(`${we.t("nodes.inputFeilds")} "${l.target}.${l.targetHandle}" ${we.t("nodes.doesNotExist")}`):f.push(`${we.t("nodes.inputNode")} ${l.target} ${we.t("nodes.doesNotExist")}`),t[(c==null?void 0:c.data.type)??"__UNKNOWN_NODE_TYPE__"]||f.push(`${we.t("nodes.sourceNode")} "${l.source}" ${we.t("nodes.missingTemplate")} "${c==null?void 0:c.data.type}"`),t[(d==null?void 0:d.data.type)??"__UNKNOWN_NODE_TYPE__"]||f.push(`${we.t("nodes.sourceNode")}"${l.target}" ${we.t("nodes.missingTemplate")} "${d==null?void 0:d.data.type}"`),f.length){delete i[u];const h=l.type==="default"?l.sourceHandle:l.source,p=l.type==="default"?l.targetHandle:l.target;o.push({message:`Edge "${h} -> ${p}" skipped`,issues:f,data:l})}}),{workflow:n,errors:o}},Ywe=()=>{Te({actionCreator:I0e,effect:(e,{dispatch:t,getState:n})=>{const r=ge("nodes"),i=e.payload,o=n().nodes.nodeTemplates,{workflow:s,errors:a}=Qwe(i,o);t(kye(s)),a.length?(t(Tn(sa({title:J("toast.loadedWithWarnings"),status:"warning"}))),a.forEach(({message:l,...u})=>{r.warn(u,l)})):t(Tn(sa({title:J("toast.workflowLoaded"),status:"success"}))),t(HB("nodes")),requestAnimationFrame(()=>{var l;(l=Hwe.get())==null||l.fitView()})}})},Yz=NN(),Te=Yz.startListening;xSe();CSe();PSe();pSe();gSe();mSe();ySe();vSe();U0e();wSe();ESe();TSe();Pwe();Uwe();Gwe();Owe();K2e();lSe();iSe();rve();oSe();nve();eve();aSe();uwe();D0e();Y2e();Z2e();twe();nwe();iwe();X2e();Q2e();awe();lwe();owe();swe();rwe();j2e();V2e();G2e();H2e();q2e();W2e();B2e();z2e();U2e();dSe();cSe();fSe();hSe();bSe();SSe();j0e();M2e();Ywe();_Se();RSe();B0e();OSe();$0e();L0e();pwe();dwe();const Zwe={canvas:nre,gallery:Ude,generation:One,nodes:Rye,postprocessing:Iye,system:Bye,config:fte,ui:Gye,hotkeys:Vye,controlNet:Dde,dynamicPrompts:zde,deleteImageModal:Fde,changeBoardModal:ire,lora:Gde,modelmanager:jye,sdxl:Nye,[_u.reducerPath]:_u.reducer},Jwe=rh(Zwe),exe=g0e(Jwe),txe=["canvas","gallery","generation","sdxl","nodes","postprocessing","system","ui","controlNet","dynamicPrompts","lora","modelmanager"],nxe=pN({reducer:exe,enhancers:e=>e.concat(m0e(window.localStorage,txe,{persistDebounce:300,serialize:A0e,unserialize:P0e,prefix:y0e})).concat(LN()),middleware:e=>e({serializableCheck:!1,immutableCheck:!1}).concat(_u.middleware).concat(Kye).prepend(Yz.middleware),devTools:{actionSanitizer:O0e,stateSanitizer:N0e,trace:!0,predicate:(e,t)=>!M0e.includes(t.type)}}),rxe=e=>e,ixe=e=>{const{socket:t,storeApi:n}=e,{dispatch:r,getState:i}=n;t.on("connect",()=>{ge("socketio").debug("Connected"),r(O$());const{sessionId:s}=i().system;s&&(t.emit("subscribe",{session:s}),r(H5({sessionId:s})))}),t.on("connect_error",o=>{o&&o.message&&o.data==="ERR_UNAUTHENTICATED"&&r(Tn(sa({title:o.message,status:"error",duration:1e4})))}),t.on("disconnect",()=>{r(N$())}),t.on("invocation_started",o=>{r(B$({data:o}))}),t.on("generator_progress",o=>{r(V$({data:o}))}),t.on("invocation_error",o=>{r(z$({data:o}))}),t.on("invocation_complete",o=>{r(W5({data:o}))}),t.on("graph_execution_state_complete",o=>{r(U$({data:o}))}),t.on("model_load_started",o=>{r(G$({data:o}))}),t.on("model_load_completed",o=>{r(H$({data:o}))}),t.on("session_retrieval_error",o=>{r(q$({data:o}))}),t.on("invocation_retrieval_error",o=>{r(K$({data:o}))})},ba=Object.create(null);ba.open="0";ba.close="1";ba.ping="2";ba.pong="3";ba.message="4";ba.upgrade="5";ba.noop="6";const j0=Object.create(null);Object.keys(ba).forEach(e=>{j0[ba[e]]=e});const p3={type:"error",data:"parser error"},Zz=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Jz=typeof ArrayBuffer=="function",eU=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,jT=({type:e,data:t},n,r)=>Zz&&t instanceof Blob?n?r(t):NR(t,r):Jz&&(t instanceof ArrayBuffer||eU(t))?n?r(t):NR(new Blob([t]),r):r(ba[e]+(t||"")),NR=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function DR(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Dw;function oxe(e,t){if(Zz&&e.data instanceof Blob)return e.data.arrayBuffer().then(DR).then(t);if(Jz&&(e.data instanceof ArrayBuffer||eU(e.data)))return t(DR(e.data));jT(e,!1,n=>{Dw||(Dw=new TextEncoder),t(Dw.encode(n))})}const LR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ap=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,i=0,o,s,a,l;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const u=new ArrayBuffer(t),c=new Uint8Array(u);for(r=0;r>4,c[i++]=(s&15)<<4|a>>2,c[i++]=(a&3)<<6|l&63;return u},axe=typeof ArrayBuffer=="function",VT=(e,t)=>{if(typeof e!="string")return{type:"message",data:tU(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:lxe(e.substring(1),t)}:j0[n]?e.length>1?{type:j0[n],data:e.substring(1)}:{type:j0[n]}:p3},lxe=(e,t)=>{if(axe){const n=sxe(e);return tU(n,t)}else return{base64:!0,data:e}},tU=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},nU=String.fromCharCode(30),uxe=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,s)=>{jT(o,!1,a=>{r[s]=a,++i===n&&t(r.join(nU))})})},cxe=(e,t)=>{const n=e.split(nU),r=[];for(let i=0;i{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const o=new DataView(i.buffer);o.setUint8(0,126),o.setUint16(1,r)}else{i=new Uint8Array(9);const o=new DataView(i.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(i[0]|=128),t.enqueue(i),t.enqueue(n)})}})}let Lw;function r0(e){return e.reduce((t,n)=>t+n.length,0)}function i0(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;iMath.pow(2,53-32)-1){a.enqueue(p3);break}i=c*Math.pow(2,32)+u.getUint32(4),r=3}else{if(r0(n)e){a.enqueue(p3);break}}}})}const rU=4;function Rr(e){if(e)return hxe(e)}function hxe(e){for(var t in Rr.prototype)e[t]=Rr.prototype[t];return e}Rr.prototype.on=Rr.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Rr.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Rr.prototype.off=Rr.prototype.removeListener=Rr.prototype.removeAllListeners=Rr.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,i=0;itypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function iU(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const pxe=Xo.setTimeout,gxe=Xo.clearTimeout;function LS(e,t){t.useNativeTimers?(e.setTimeoutFn=pxe.bind(Xo),e.clearTimeoutFn=gxe.bind(Xo)):(e.setTimeoutFn=Xo.setTimeout.bind(Xo),e.clearTimeoutFn=Xo.clearTimeout.bind(Xo))}const mxe=1.33;function yxe(e){return typeof e=="string"?vxe(e):Math.ceil((e.byteLength||e.size)*mxe)}function vxe(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}function _xe(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function bxe(e){let t={},n=e.split("&");for(let r=0,i=n.length;r0);return t}function sU(){const e=BR(+new Date);return e!==FR?($R=0,FR=e):e+"."+BR($R++)}for(;o0{this.readyState="paused",t()};if(this.polling||!this.writable){let r=0;this.polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};cxe(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,uxe(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=sU()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}request(t={}){return Object.assign(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new bf(this.uri(),t)}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(i,o)=>{this.onError("xhr post error",i,o)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}let bf=class V0 extends Rr{constructor(t,n){super(),LS(this,n),this.opts=n,this.method=n.method||"GET",this.uri=t,this.data=n.data!==void 0?n.data:null,this.create()}create(){var t;const n=iU(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;const r=this.xhr=new lU(n);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let i in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(i)&&r.setRequestHeader(i,this.opts.extraHeaders[i])}}catch{}if(this.method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this.opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var i;r.readyState===3&&((i=this.opts.cookieJar)===null||i===void 0||i.parseCookies(r)),r.readyState===4&&(r.status===200||r.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof r.status=="number"?r.status:0)},0))},r.send(this.data)}catch(i){this.setTimeoutFn(()=>{this.onError(i)},0);return}typeof document<"u"&&(this.index=V0.requestsCount++,V0.requests[this.index]=this)}onError(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}cleanup(t){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=Cxe,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete V0.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}};bf.requestsCount=0;bf.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",zR);else if(typeof addEventListener=="function"){const e="onpagehide"in Xo?"pagehide":"unload";addEventListener(e,zR,!1)}}function zR(){for(let e in bf.requests)bf.requests.hasOwnProperty(e)&&bf.requests[e].abort()}const HT=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),s0=Xo.WebSocket||Xo.MozWebSocket,UR=!0,Axe="arraybuffer",jR=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class kxe extends GT{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),n=this.opts.protocols,r=jR?{}:iU(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=UR&&!jR?n?new s0(t,n):new s0(t):new s0(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{const s={};try{UR&&this.ws.send(o)}catch{}i&&HT(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=sU()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}check(){return!!s0}}class Pxe extends GT{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(t=>{const n=fxe(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),i=dxe();i.readable.pipeTo(t.writable),this.writer=i.writable.getWriter();const o=()=>{r.read().then(({done:a,value:l})=>{a||(this.onPacket(l),o())}).catch(a=>{})};o();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then(()=>this.onOpen())})}))}write(t){this.writable=!1;for(let n=0;n{i&&HT(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this.transport)===null||t===void 0||t.close()}}const Rxe={websocket:kxe,webtransport:Pxe,polling:Txe},Ixe=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Oxe=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function m3(e){const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let i=Ixe.exec(e||""),o={},s=14;for(;s--;)o[Oxe[s]]=i[s]||"";return n!=-1&&r!=-1&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=Mxe(o,o.path),o.queryKey=Nxe(o,o.query),o}function Mxe(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function Nxe(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}let uU=class Od extends Rr{constructor(t,n={}){super(),this.binaryType=Axe,this.writeBuffer=[],t&&typeof t=="object"&&(n=t,t=null),t?(t=m3(t),n.hostname=t.host,n.secure=t.protocol==="https"||t.protocol==="wss",n.port=t.port,t.query&&(n.query=t.query)):n.host&&(n.hostname=m3(n.host).host),LS(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=n.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=bxe(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=rU,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new Rxe[t](r)}open(){let t;if(this.opts.rememberUpgrade&&Od.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else t=this.transports[0];this.readyState="opening";try{t=this.createTransport(t)}catch{this.transports.shift(),this.open();return}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",n=>this.onClose("transport close",n))}probe(t){let n=this.createTransport(t),r=!1;Od.priorWebsocketSuccess=!1;const i=()=>{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",d=>{if(!r)if(d.type==="pong"&&d.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Od.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(c(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const f=new Error("probe error");f.transport=n.name,this.emitReserved("upgradeError",f)}}))};function o(){r||(r=!0,c(),n.close(),n=null)}const s=d=>{const f=new Error("probe error: "+d);f.transport=n.name,o(),this.emitReserved("upgradeError",f)};function a(){s("transport closed")}function l(){s("socket closed")}function u(d){n&&d.name!==n.name&&o()}const c=()=>{n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",a),this.off("close",l),this.off("upgrading",u)};n.once("open",i),n.once("error",s),n.once("close",a),this.once("close",l),this.once("upgrading",u),this.upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onOpen(){if(this.readyState="open",Od.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){let t=0;const n=this.upgrades.length;for(;t{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r0&&n>this.maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}write(t,n,r){return this.sendPacket("message",t,n,r),this}send(t,n,r){return this.sendPacket("message",t,n,r),this}sendPacket(t,n,r,i){if(typeof n=="function"&&(i=n,n=void 0),typeof r=="function"&&(i=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const o={type:t,data:n,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),i&&this.once("flush",i),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}onError(t){Od.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,n){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const n=[];let r=0;const i=t.length;for(;rtypeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,cU=Object.prototype.toString,Fxe=typeof Blob=="function"||typeof Blob<"u"&&cU.call(Blob)==="[object BlobConstructor]",Bxe=typeof File=="function"||typeof File<"u"&&cU.call(File)==="[object FileConstructor]";function qT(e){return Lxe&&(e instanceof ArrayBuffer||$xe(e))||Fxe&&e instanceof Blob||Bxe&&e instanceof File}function G0(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.num{delete this.acks[t];for(let s=0;s{this.io.clearTimeoutFn(o),n.apply(this,[null,...s])}}emitWithAck(t,...n){const r=this.flags.timeout!==void 0||this._opts.ackTimeout!==void 0;return new Promise((i,o)=>{n.push((s,a)=>r?s?o(s):i(a):i(s)),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((i,...o)=>r!==this._queue[0]?void 0:(i!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(i)):(this._queue.shift(),n&&n(null,...o)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Nt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case Nt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Nt.EVENT:case Nt.BINARY_EVENT:this.onevent(t);break;case Nt.ACK:case Nt.BINARY_ACK:this.onack(t);break;case Nt.DISCONNECT:this.ondisconnect();break;case Nt.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...i){r||(r=!0,n.packet({type:Nt.ACK,id:t,data:i}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(n.apply(this,t.data),delete this.acks[t.id])}onconnect(t,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Nt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r0&&e.jitter<=1?e.jitter:0,this.attempts=0}bh.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=Math.floor(t*10)&1?e+n:e-n}return Math.min(e,this.max)|0};bh.prototype.reset=function(){this.attempts=0};bh.prototype.setMin=function(e){this.ms=e};bh.prototype.setMax=function(e){this.max=e};bh.prototype.setJitter=function(e){this.jitter=e};class _3 extends Rr{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,LS(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new bh({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const i=n.parser||qxe;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new uU(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Ss(n,"open",function(){r.onopen(),t&&t()}),o=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),t?t(a):this.maybeReconnectOnOpen()},s=Ss(n,"error",o);if(this._timeout!==!1){const a=this._timeout,l=this.setTimeoutFn(()=>{i(),o(new Error("timeout")),n.close()},a);this.opts.autoUnref&&l.unref(),this.subs.push(()=>{this.clearTimeoutFn(l)})}return this.subs.push(i),this.subs.push(s),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Ss(t,"ping",this.onping.bind(this)),Ss(t,"data",this.ondata.bind(this)),Ss(t,"error",this.onerror.bind(this)),Ss(t,"close",this.onclose.bind(this)),Ss(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){HT(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new dU(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;rt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t,n){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(i=>{i?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",i)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const Kh={};function H0(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=Dxe(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,s=Kh[i]&&o in Kh[i].nsps,a=t.forceNew||t["force new connection"]||t.multiplex===!1||s;let l;return a?l=new _3(r,t):(Kh[i]||(Kh[i]=new _3(r,t)),l=Kh[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(H0,{Manager:_3,Socket:dU,io:H0,connect:H0});const GR=()=>{let e=!1,n=`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}`;const r={timeout:6e4,path:"/ws/socket.io",autoConnect:!1};if(["nodes","package"].includes("production")){const s=_g.get();s&&(n=s.replace(/^https?\:\/\//i,""));const a=$f.get();a&&(r.auth={token:a}),r.transports=["websocket","polling"]}const i=H0(n,r);return s=>a=>l=>{const{dispatch:u,getState:c}=s;if(e||(ixe({storeApi:s,socket:i}),e=!0,i.connect()),xi.fulfilled.match(l)){const d=l.payload.id,f=c().system.sessionId;f&&(i.emit("unsubscribe",{session:f}),u($$({sessionId:f}))),i.emit("subscribe",{session:d}),u(H5({sessionId:d}))}a(l)}};function Kxe(e){if(e.sheet)return e.sheet;for(var t=0;t0?_i(Sh,--vo):0,Yf--,kr===10&&(Yf=1,FS--),kr}function Oo(){return kr=vo2||Wg(kr)>3?"":" "}function aCe(e,t){for(;--t&&Oo()&&!(kr<48||kr>102||kr>57&&kr<65||kr>70&&kr<97););return Gm(e,q0()+(t<6&&ga()==32&&Oo()==32))}function S3(e){for(;Oo();)switch(kr){case e:return vo;case 34:case 39:e!==34&&e!==39&&S3(kr);break;case 40:e===41&&S3(e);break;case 92:Oo();break}return vo}function lCe(e,t){for(;Oo()&&e+kr!==47+10;)if(e+kr===42+42&&ga()===47)break;return"/*"+Gm(t,vo-1)+"*"+$S(e===47?e:Oo())}function uCe(e){for(;!Wg(ga());)Oo();return Gm(e,vo)}function cCe(e){return yU(K0("",null,null,null,[""],e=mU(e),0,[0],e))}function K0(e,t,n,r,i,o,s,a,l){for(var u=0,c=0,d=s,f=0,h=0,p=0,m=1,b=1,_=1,y=0,g="",v=i,S=o,w=r,x=g;b;)switch(p=y,y=Oo()){case 40:if(p!=108&&_i(x,d-1)==58){b3(x+=en(W0(y),"&","&\f"),"&\f")!=-1&&(_=-1);break}case 34:case 39:case 91:x+=W0(y);break;case 9:case 10:case 13:case 32:x+=sCe(p);break;case 92:x+=aCe(q0()-1,7);continue;case 47:switch(ga()){case 42:case 47:a0(dCe(lCe(Oo(),q0()),t,n),l);break;default:x+="/"}break;case 123*m:a[u++]=Zs(x)*_;case 125*m:case 59:case 0:switch(y){case 0:case 125:b=0;case 59+c:_==-1&&(x=en(x,/\f/g,"")),h>0&&Zs(x)-d&&a0(h>32?qR(x+";",r,n,d-1):qR(en(x," ","")+";",r,n,d-2),l);break;case 59:x+=";";default:if(a0(w=HR(x,t,n,u,c,i,a,g,v=[],S=[],d),o),y===123)if(c===0)K0(x,t,w,w,v,o,d,a,S);else switch(f===99&&_i(x,3)===110?100:f){case 100:case 108:case 109:case 115:K0(e,w,w,r&&a0(HR(e,w,w,0,0,i,a,g,i,v=[],d),S),i,S,d,a,r?v:S);break;default:K0(x,w,w,w,[""],S,0,a,S)}}u=c=h=0,m=_=1,g=x="",d=s;break;case 58:d=1+Zs(x),h=p;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&oCe()==125)continue}switch(x+=$S(y),y*m){case 38:_=c>0?1:(x+="\f",-1);break;case 44:a[u++]=(Zs(x)-1)*_,_=1;break;case 64:ga()===45&&(x+=W0(Oo())),f=ga(),c=d=Zs(g=x+=uCe(q0())),y++;break;case 45:p===45&&Zs(x)==2&&(m=0)}}return o}function HR(e,t,n,r,i,o,s,a,l,u,c){for(var d=i-1,f=i===0?o:[""],h=QT(f),p=0,m=0,b=0;p0?f[_]+" "+y:en(y,/&\f/g,f[_])))&&(l[b++]=g);return BS(e,t,n,i===0?KT:a,l,u,c)}function dCe(e,t,n){return BS(e,t,n,fU,$S(iCe()),qg(e,2,-2),0)}function qR(e,t,n,r){return BS(e,t,n,XT,qg(e,0,r),qg(e,r+1,-1),r)}function Sf(e,t){for(var n="",r=QT(e),i=0;i6)switch(_i(e,t+1)){case 109:if(_i(e,t+4)!==45)break;case 102:return en(e,/(.+:)(.+)-([^]+)/,"$1"+Jt+"$2-$3$1"+I1+(_i(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~b3(e,"stretch")?_U(en(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(_i(e,t+1)!==115)break;case 6444:switch(_i(e,Zs(e)-3-(~b3(e,"!important")&&10))){case 107:return en(e,":",":"+Jt)+e;case 101:return en(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Jt+(_i(e,14)===45?"inline-":"")+"box$3$1"+Jt+"$2$3$1"+Ri+"$2box$3")+e}break;case 5936:switch(_i(e,t+11)){case 114:return Jt+e+Ri+en(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Jt+e+Ri+en(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Jt+e+Ri+en(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Jt+e+Ri+e+e}return e}var bCe=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case XT:t.return=_U(t.value,t.length);break;case hU:return Sf([Xh(t,{value:en(t.value,"@","@"+Jt)})],i);case KT:if(t.length)return rCe(t.props,function(o){switch(nCe(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Sf([Xh(t,{props:[en(o,/:(read-\w+)/,":"+I1+"$1")]})],i);case"::placeholder":return Sf([Xh(t,{props:[en(o,/:(plac\w+)/,":"+Jt+"input-$1")]}),Xh(t,{props:[en(o,/:(plac\w+)/,":"+I1+"$1")]}),Xh(t,{props:[en(o,/:(plac\w+)/,Ri+"input-$1")]})],i)}return""})}},SCe=[bCe],wCe=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(m){var b=m.getAttribute("data-emotion");b.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||SCe,o={},s,a=[];s=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var b=m.getAttribute("data-emotion").split(" "),_=1;_=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var TCe={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},ACe=/[A-Z]|^ms/g,kCe=/_EMO_([^_]+?)_([^]*?)_EMO_/g,wU=function(t){return t.charCodeAt(1)===45},XR=function(t){return t!=null&&typeof t!="boolean"},$w=vU(function(e){return wU(e)?e:e.replace(ACe,"-$&").toLowerCase()}),QR=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(kCe,function(r,i,o){return Js={name:i,styles:o,next:Js},i})}return TCe[t]!==1&&!wU(t)&&typeof n=="number"&&n!==0?n+"px":n};function Kg(e,t,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return Js={name:n.name,styles:n.styles,next:Js},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)Js={name:r.name,styles:r.styles,next:Js},r=r.next;var i=n.styles+";";return i}return PCe(e,t,n)}case"function":{if(e!==void 0){var o=Js,s=n(e);return Js=o,Kg(e,t,s)}break}}if(t==null)return n;var a=t[n];return a!==void 0?a:n}function PCe(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i` or ``");return e}var AU=M.createContext({});AU.displayName="ColorModeContext";function ZT(){const e=M.useContext(AU);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}function DMe(e,t){const{colorMode:n}=ZT();return n==="dark"?t:e}function $Ce(){const e=ZT(),t=TU();return{...e,theme:t}}function FCe(e,t,n){var r,i;if(t==null)return t;const o=s=>{var a,l;return(l=(a=e.__breakpoints)==null?void 0:a.asArray)==null?void 0:l[s]};return(i=(r=o(t))!=null?r:o(n))!=null?i:n}function BCe(e,t,n){var r,i;if(t==null)return t;const o=s=>{var a,l;return(l=(a=e.__cssMap)==null?void 0:a[s])==null?void 0:l.value};return(i=(r=o(t))!=null?r:o(n))!=null?i:n}function LMe(e,t,n){const r=TU();return zCe(e,t,n)(r)}function zCe(e,t,n){const r=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];return o=>{const s=i.filter(Boolean),a=r.map((l,u)=>{var c,d;if(e==="breakpoints")return FCe(o,l,(c=s[u])!=null?c:l);const f=`${e}.${l}`;return BCe(o,f,(d=s[u])!=null?d:l)});return Array.isArray(t)?a:a[0]}}var JT=(...e)=>e.filter(Boolean).join(" ");function UCe(){return!1}function Za(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}var $Me=e=>{const{condition:t,message:n}=e;t&&UCe()&&console.warn(n)};function pc(e,...t){return jCe(e)?e(...t):e}var jCe=e=>typeof e=="function",FMe=e=>e?"":void 0,BMe=e=>e?!0:void 0;function zMe(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function UMe(...e){return function(n){e.forEach(r=>{r==null||r(n)})}}var O1={exports:{}};O1.exports;(function(e,t){var n=200,r="__lodash_hash_undefined__",i=800,o=16,s=9007199254740991,a="[object Arguments]",l="[object Array]",u="[object AsyncFunction]",c="[object Boolean]",d="[object Date]",f="[object Error]",h="[object Function]",p="[object GeneratorFunction]",m="[object Map]",b="[object Number]",_="[object Null]",y="[object Object]",g="[object Proxy]",v="[object RegExp]",S="[object Set]",w="[object String]",x="[object Undefined]",C="[object WeakMap]",A="[object ArrayBuffer]",T="[object DataView]",k="[object Float32Array]",L="[object Float64Array]",N="[object Int8Array]",E="[object Int16Array]",P="[object Int32Array]",D="[object Uint8Array]",B="[object Uint8ClampedArray]",R="[object Uint16Array]",I="[object Uint32Array]",O=/[\\^$.*+?()[\]{}|]/g,F=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,V={};V[k]=V[L]=V[N]=V[E]=V[P]=V[D]=V[B]=V[R]=V[I]=!0,V[a]=V[l]=V[A]=V[c]=V[T]=V[d]=V[f]=V[h]=V[m]=V[b]=V[y]=V[v]=V[S]=V[w]=V[C]=!1;var H=typeof dt=="object"&&dt&&dt.Object===Object&&dt,Y=typeof self=="object"&&self&&self.Object===Object&&self,Q=H||Y||Function("return this")(),j=t&&!t.nodeType&&t,K=j&&!0&&e&&!e.nodeType&&e,te=K&&K.exports===j,oe=te&&H.process,me=function(){try{var $=K&&K.require&&K.require("util").types;return $||oe&&oe.binding&&oe.binding("util")}catch{}}(),le=me&&me.isTypedArray;function ht($,G,X){switch(X.length){case 0:return $.call(G);case 1:return $.call(G,X[0]);case 2:return $.call(G,X[0],X[1]);case 3:return $.call(G,X[0],X[1],X[2])}return $.apply(G,X)}function nt($,G){for(var X=-1,fe=Array($);++X<$;)fe[X]=G(X);return fe}function $e($){return function(G){return $(G)}}function ct($,G){return $==null?void 0:$[G]}function Pe($,G){return function(X){return $(G(X))}}var qt=Array.prototype,Sr=Function.prototype,Pn=Object.prototype,bn=Q["__core-js_shared__"],Wt=Sr.toString,Rn=Pn.hasOwnProperty,wr=function(){var $=/[^.]+$/.exec(bn&&bn.keys&&bn.keys.IE_PROTO||"");return $?"Symbol(src)_1."+$:""}(),to=Pn.toString,Gr=Wt.call(Object),ar=RegExp("^"+Wt.call(Rn).replace(O,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Or=te?Q.Buffer:void 0,Hr=Q.Symbol,In=Q.Uint8Array,dn=Or?Or.allocUnsafe:void 0,Ci=Pe(Object.getPrototypeOf,Object),si=Object.create,ji=Pn.propertyIsEnumerable,ps=qt.splice,xr=Hr?Hr.toStringTag:void 0,no=function(){try{var $=Yn(Object,"defineProperty");return $({},"",{}),$}catch{}}(),Ta=Or?Or.isBuffer:void 0,bo=Math.max,Aa=Date.now,On=Yn(Q,"Map"),Kt=Yn(Object,"create"),Mr=function(){function $(){}return function(G){if(!qe(G))return{};if(si)return si(G);$.prototype=G;var X=new $;return $.prototype=void 0,X}}();function Cr($){var G=-1,X=$==null?0:$.length;for(this.clear();++G-1}function zo($,G){var X=this.__data__,fe=Xe(X,$);return fe<0?(++this.size,X.push([$,G])):X[fe][1]=G,this}Nr.prototype.clear=gs,Nr.prototype.delete=Vs,Nr.prototype.get=li,Nr.prototype.has=_l,Nr.prototype.set=zo;function Wr($){var G=-1,X=$==null?0:$.length;for(this.clear();++G1?X[St-1]:void 0,wn=St>2?X[2]:void 0;for(on=$.length>3&&typeof on=="function"?(St--,on):void 0,wn&&Rt(X[0],X[1],wn)&&(on=St<3?void 0:on,St=1),G=Object(G);++fe-1&&$%1==0&&$0){if(++G>=i)return arguments[0]}else G=0;return $.apply(void 0,arguments)}}function lt($){if($!=null){try{return Wt.call($)}catch{}try{return $+""}catch{}}return""}function ze($,G){return $===G||$!==$&&G!==G}var be=mt(function(){return arguments}())?mt:function($){return ke($)&&Rn.call($,"callee")&&!ji.call($,"callee")},ae=Array.isArray;function xe($){return $!=null&&Ze($.length)&&!Se($)}function ce($){return ke($)&&xe($)}var he=Ta||Vi;function Se($){if(!qe($))return!1;var G=at($);return G==h||G==p||G==u||G==g}function Ze($){return typeof $=="number"&&$>-1&&$%1==0&&$<=s}function qe($){var G=typeof $;return $!=null&&(G=="object"||G=="function")}function ke($){return $!=null&&typeof $=="object"}function Ct($){if(!ke($)||at($)!=y)return!1;var G=Ci($);if(G===null)return!0;var X=Rn.call(G,"constructor")&&G.constructor;return typeof X=="function"&&X instanceof X&&Wt.call(X)==Gr}var $t=le?$e(le):xt;function Ft($){return ms($,Zn($))}function Zn($){return xe($)?Re($,!0):tn($)}var lr=tt(function($,G,X,fe){nn($,G,X,fe)});function Mn($){return function(){return $}}function Sn($){return $}function Vi(){return!1}e.exports=lr})(O1,O1.exports);var VCe=O1.exports;const aa=Uc(VCe);var GCe=e=>/!(important)?$/.test(e),JR=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,HCe=(e,t)=>n=>{const r=String(t),i=GCe(r),o=JR(r),s=e?`${e}.${o}`:o;let a=Za(n.__cssMap)&&s in n.__cssMap?n.__cssMap[s].varRef:t;return a=JR(a),i?`${a} !important`:a};function e4(e){const{scale:t,transform:n,compose:r}=e;return(o,s)=>{var a;const l=HCe(t,o)(s);let u=(a=n==null?void 0:n(l,s))!=null?a:l;return r&&(u=r(u,s)),u}}var l0=(...e)=>t=>e.reduce((n,r)=>r(n),t);function Vo(e,t){return n=>{const r={property:n,scale:e};return r.transform=e4({scale:e,transform:t}),r}}var qCe=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function WCe(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:qCe(t),transform:n?e4({scale:n,compose:r}):r}}var kU=["rotate(var(--chakra-rotate, 0))","scaleX(var(--chakra-scale-x, 1))","scaleY(var(--chakra-scale-y, 1))","skewX(var(--chakra-skew-x, 0))","skewY(var(--chakra-skew-y, 0))"];function KCe(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...kU].join(" ")}function XCe(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...kU].join(" ")}var QCe={"--chakra-blur":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-brightness":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-contrast":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-grayscale":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-hue-rotate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-invert":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-saturate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-sepia":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-drop-shadow":"var(--chakra-empty,/*!*/ /*!*/)",filter:["var(--chakra-blur)","var(--chakra-brightness)","var(--chakra-contrast)","var(--chakra-grayscale)","var(--chakra-hue-rotate)","var(--chakra-invert)","var(--chakra-saturate)","var(--chakra-sepia)","var(--chakra-drop-shadow)"].join(" ")},YCe={backdropFilter:["var(--chakra-backdrop-blur)","var(--chakra-backdrop-brightness)","var(--chakra-backdrop-contrast)","var(--chakra-backdrop-grayscale)","var(--chakra-backdrop-hue-rotate)","var(--chakra-backdrop-invert)","var(--chakra-backdrop-opacity)","var(--chakra-backdrop-saturate)","var(--chakra-backdrop-sepia)"].join(" "),"--chakra-backdrop-blur":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-brightness":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-contrast":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-grayscale":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-hue-rotate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-invert":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-opacity":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-saturate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-sepia":"var(--chakra-empty,/*!*/ /*!*/)"};function ZCe(e){return{"--chakra-ring-offset-shadow":"var(--chakra-ring-inset) 0 0 0 var(--chakra-ring-offset-width) var(--chakra-ring-offset-color)","--chakra-ring-shadow":"var(--chakra-ring-inset) 0 0 0 calc(var(--chakra-ring-width) + var(--chakra-ring-offset-width)) var(--chakra-ring-color)","--chakra-ring-width":e,boxShadow:["var(--chakra-ring-offset-shadow)","var(--chakra-ring-shadow)","var(--chakra-shadow, 0 0 #0000)"].join(", ")}}var JCe={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},w3={"to-t":"to top","to-tr":"to top right","to-r":"to right","to-br":"to bottom right","to-b":"to bottom","to-bl":"to bottom left","to-l":"to left","to-tl":"to top left"},e3e=new Set(Object.values(w3)),x3=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),t3e=e=>e.trim();function n3e(e,t){if(e==null||x3.has(e))return e;if(!(C3(e)||x3.has(e)))return`url('${e}')`;const i=/(^[a-z-A-Z]+)\((.*)\)/g.exec(e),o=i==null?void 0:i[1],s=i==null?void 0:i[2];if(!o||!s)return e;const a=o.includes("-gradient")?o:`${o}-gradient`,[l,...u]=s.split(",").map(t3e).filter(Boolean);if((u==null?void 0:u.length)===0)return e;const c=l in w3?w3[l]:l;u.unshift(c);const d=u.map(f=>{if(e3e.has(f))return f;const h=f.indexOf(" "),[p,m]=h!==-1?[f.substr(0,h),f.substr(h+1)]:[f],b=C3(m)?m:m&&m.split(" "),_=`colors.${p}`,y=_ in t.__cssMap?t.__cssMap[_].varRef:p;return b?[y,...Array.isArray(b)?b:[b]].join(" "):y});return`${a}(${d.join(", ")})`}var C3=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),r3e=(e,t)=>n3e(e,t??{});function i3e(e){return/^var\(--.+\)$/.test(e)}var o3e=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},Ks=e=>t=>`${e}(${t})`,jt={filter(e){return e!=="auto"?e:QCe},backdropFilter(e){return e!=="auto"?e:YCe},ring(e){return ZCe(jt.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?KCe():e==="auto-gpu"?XCe():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=o3e(e);return t||typeof e=="number"?`${e}px`:e},fraction(e){return typeof e!="number"||e>1?e:`${e*100}%`},float(e,t){const n={left:"right",right:"left"};return t.direction==="rtl"?n[e]:e},degree(e){if(i3e(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:r3e,blur:Ks("blur"),opacity:Ks("opacity"),brightness:Ks("brightness"),contrast:Ks("contrast"),dropShadow:Ks("drop-shadow"),grayscale:Ks("grayscale"),hueRotate:Ks("hue-rotate"),invert:Ks("invert"),saturate:Ks("saturate"),sepia:Ks("sepia"),bgImage(e){return e==null||C3(e)||x3.has(e)?e:`url(${e})`},outline(e){const t=String(e)==="0"||String(e)==="none";return e!==null&&t?{outline:"2px solid transparent",outlineOffset:"2px"}:{outline:e}},flexDirection(e){var t;const{space:n,divide:r}=(t=JCe[e])!=null?t:{},i={flexDirection:e};return n&&(i[n]=1),r&&(i[r]=1),i}},q={borderWidths:Vo("borderWidths"),borderStyles:Vo("borderStyles"),colors:Vo("colors"),borders:Vo("borders"),gradients:Vo("gradients",jt.gradient),radii:Vo("radii",jt.px),space:Vo("space",l0(jt.vh,jt.px)),spaceT:Vo("space",l0(jt.vh,jt.px)),degreeT(e){return{property:e,transform:jt.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:e4({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:Vo("sizes",l0(jt.vh,jt.px)),sizesT:Vo("sizes",l0(jt.vh,jt.fraction)),shadows:Vo("shadows"),logical:WCe,blur:Vo("blur",jt.blur)},X0={background:q.colors("background"),backgroundColor:q.colors("backgroundColor"),backgroundImage:q.gradients("backgroundImage"),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:jt.bgClip},bgSize:q.prop("backgroundSize"),bgPosition:q.prop("backgroundPosition"),bg:q.colors("background"),bgColor:q.colors("backgroundColor"),bgPos:q.prop("backgroundPosition"),bgRepeat:q.prop("backgroundRepeat"),bgAttachment:q.prop("backgroundAttachment"),bgGradient:q.gradients("backgroundImage"),bgClip:{transform:jt.bgClip}};Object.assign(X0,{bgImage:X0.backgroundImage,bgImg:X0.backgroundImage});var Zt={border:q.borders("border"),borderWidth:q.borderWidths("borderWidth"),borderStyle:q.borderStyles("borderStyle"),borderColor:q.colors("borderColor"),borderRadius:q.radii("borderRadius"),borderTop:q.borders("borderTop"),borderBlockStart:q.borders("borderBlockStart"),borderTopLeftRadius:q.radii("borderTopLeftRadius"),borderStartStartRadius:q.logical({scale:"radii",property:{ltr:"borderTopLeftRadius",rtl:"borderTopRightRadius"}}),borderEndStartRadius:q.logical({scale:"radii",property:{ltr:"borderBottomLeftRadius",rtl:"borderBottomRightRadius"}}),borderTopRightRadius:q.radii("borderTopRightRadius"),borderStartEndRadius:q.logical({scale:"radii",property:{ltr:"borderTopRightRadius",rtl:"borderTopLeftRadius"}}),borderEndEndRadius:q.logical({scale:"radii",property:{ltr:"borderBottomRightRadius",rtl:"borderBottomLeftRadius"}}),borderRight:q.borders("borderRight"),borderInlineEnd:q.borders("borderInlineEnd"),borderBottom:q.borders("borderBottom"),borderBlockEnd:q.borders("borderBlockEnd"),borderBottomLeftRadius:q.radii("borderBottomLeftRadius"),borderBottomRightRadius:q.radii("borderBottomRightRadius"),borderLeft:q.borders("borderLeft"),borderInlineStart:{property:"borderInlineStart",scale:"borders"},borderInlineStartRadius:q.logical({scale:"radii",property:{ltr:["borderTopLeftRadius","borderBottomLeftRadius"],rtl:["borderTopRightRadius","borderBottomRightRadius"]}}),borderInlineEndRadius:q.logical({scale:"radii",property:{ltr:["borderTopRightRadius","borderBottomRightRadius"],rtl:["borderTopLeftRadius","borderBottomLeftRadius"]}}),borderX:q.borders(["borderLeft","borderRight"]),borderInline:q.borders("borderInline"),borderY:q.borders(["borderTop","borderBottom"]),borderBlock:q.borders("borderBlock"),borderTopWidth:q.borderWidths("borderTopWidth"),borderBlockStartWidth:q.borderWidths("borderBlockStartWidth"),borderTopColor:q.colors("borderTopColor"),borderBlockStartColor:q.colors("borderBlockStartColor"),borderTopStyle:q.borderStyles("borderTopStyle"),borderBlockStartStyle:q.borderStyles("borderBlockStartStyle"),borderBottomWidth:q.borderWidths("borderBottomWidth"),borderBlockEndWidth:q.borderWidths("borderBlockEndWidth"),borderBottomColor:q.colors("borderBottomColor"),borderBlockEndColor:q.colors("borderBlockEndColor"),borderBottomStyle:q.borderStyles("borderBottomStyle"),borderBlockEndStyle:q.borderStyles("borderBlockEndStyle"),borderLeftWidth:q.borderWidths("borderLeftWidth"),borderInlineStartWidth:q.borderWidths("borderInlineStartWidth"),borderLeftColor:q.colors("borderLeftColor"),borderInlineStartColor:q.colors("borderInlineStartColor"),borderLeftStyle:q.borderStyles("borderLeftStyle"),borderInlineStartStyle:q.borderStyles("borderInlineStartStyle"),borderRightWidth:q.borderWidths("borderRightWidth"),borderInlineEndWidth:q.borderWidths("borderInlineEndWidth"),borderRightColor:q.colors("borderRightColor"),borderInlineEndColor:q.colors("borderInlineEndColor"),borderRightStyle:q.borderStyles("borderRightStyle"),borderInlineEndStyle:q.borderStyles("borderInlineEndStyle"),borderTopRadius:q.radii(["borderTopLeftRadius","borderTopRightRadius"]),borderBottomRadius:q.radii(["borderBottomLeftRadius","borderBottomRightRadius"]),borderLeftRadius:q.radii(["borderTopLeftRadius","borderBottomLeftRadius"]),borderRightRadius:q.radii(["borderTopRightRadius","borderBottomRightRadius"])};Object.assign(Zt,{rounded:Zt.borderRadius,roundedTop:Zt.borderTopRadius,roundedTopLeft:Zt.borderTopLeftRadius,roundedTopRight:Zt.borderTopRightRadius,roundedTopStart:Zt.borderStartStartRadius,roundedTopEnd:Zt.borderStartEndRadius,roundedBottom:Zt.borderBottomRadius,roundedBottomLeft:Zt.borderBottomLeftRadius,roundedBottomRight:Zt.borderBottomRightRadius,roundedBottomStart:Zt.borderEndStartRadius,roundedBottomEnd:Zt.borderEndEndRadius,roundedLeft:Zt.borderLeftRadius,roundedRight:Zt.borderRightRadius,roundedStart:Zt.borderInlineStartRadius,roundedEnd:Zt.borderInlineEndRadius,borderStart:Zt.borderInlineStart,borderEnd:Zt.borderInlineEnd,borderTopStartRadius:Zt.borderStartStartRadius,borderTopEndRadius:Zt.borderStartEndRadius,borderBottomStartRadius:Zt.borderEndStartRadius,borderBottomEndRadius:Zt.borderEndEndRadius,borderStartRadius:Zt.borderInlineStartRadius,borderEndRadius:Zt.borderInlineEndRadius,borderStartWidth:Zt.borderInlineStartWidth,borderEndWidth:Zt.borderInlineEndWidth,borderStartColor:Zt.borderInlineStartColor,borderEndColor:Zt.borderInlineEndColor,borderStartStyle:Zt.borderInlineStartStyle,borderEndStyle:Zt.borderInlineEndStyle});var s3e={color:q.colors("color"),textColor:q.colors("color"),fill:q.colors("fill"),stroke:q.colors("stroke")},E3={boxShadow:q.shadows("boxShadow"),mixBlendMode:!0,blendMode:q.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:q.prop("backgroundBlendMode"),opacity:!0};Object.assign(E3,{shadow:E3.boxShadow});var a3e={filter:{transform:jt.filter},blur:q.blur("--chakra-blur"),brightness:q.propT("--chakra-brightness",jt.brightness),contrast:q.propT("--chakra-contrast",jt.contrast),hueRotate:q.degreeT("--chakra-hue-rotate"),invert:q.propT("--chakra-invert",jt.invert),saturate:q.propT("--chakra-saturate",jt.saturate),dropShadow:q.propT("--chakra-drop-shadow",jt.dropShadow),backdropFilter:{transform:jt.backdropFilter},backdropBlur:q.blur("--chakra-backdrop-blur"),backdropBrightness:q.propT("--chakra-backdrop-brightness",jt.brightness),backdropContrast:q.propT("--chakra-backdrop-contrast",jt.contrast),backdropHueRotate:q.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:q.propT("--chakra-backdrop-invert",jt.invert),backdropSaturate:q.propT("--chakra-backdrop-saturate",jt.saturate)},M1={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:jt.flexDirection},flex:!0,flexFlow:!0,flexGrow:!0,flexShrink:!0,flexBasis:q.sizes("flexBasis"),justifySelf:!0,alignSelf:!0,order:!0,placeItems:!0,placeContent:!0,placeSelf:!0,gap:q.space("gap"),rowGap:q.space("rowGap"),columnGap:q.space("columnGap")};Object.assign(M1,{flexDir:M1.flexDirection});var PU={gridGap:q.space("gridGap"),gridColumnGap:q.space("gridColumnGap"),gridRowGap:q.space("gridRowGap"),gridColumn:!0,gridRow:!0,gridAutoFlow:!0,gridAutoColumns:!0,gridColumnStart:!0,gridColumnEnd:!0,gridRowStart:!0,gridRowEnd:!0,gridAutoRows:!0,gridTemplate:!0,gridTemplateColumns:!0,gridTemplateRows:!0,gridTemplateAreas:!0,gridArea:!0},l3e={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:jt.outline},outlineOffset:!0,outlineColor:q.colors("outlineColor")},Ho={width:q.sizesT("width"),inlineSize:q.sizesT("inlineSize"),height:q.sizes("height"),blockSize:q.sizes("blockSize"),boxSize:q.sizes(["width","height"]),minWidth:q.sizes("minWidth"),minInlineSize:q.sizes("minInlineSize"),minHeight:q.sizes("minHeight"),minBlockSize:q.sizes("minBlockSize"),maxWidth:q.sizes("maxWidth"),maxInlineSize:q.sizes("maxInlineSize"),maxHeight:q.sizes("maxHeight"),maxBlockSize:q.sizes("maxBlockSize"),overflow:!0,overflowX:!0,overflowY:!0,overscrollBehavior:!0,overscrollBehaviorX:!0,overscrollBehaviorY:!0,display:!0,aspectRatio:!0,hideFrom:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (min-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r.minW)!=null?i:e})`]:{display:"none"}}}},hideBelow:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (max-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r._minW)!=null?i:e})`]:{display:"none"}}}},verticalAlign:!0,boxSizing:!0,boxDecorationBreak:!0,float:q.propT("float",jt.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(Ho,{w:Ho.width,h:Ho.height,minW:Ho.minWidth,maxW:Ho.maxWidth,minH:Ho.minHeight,maxH:Ho.maxHeight,overscroll:Ho.overscrollBehavior,overscrollX:Ho.overscrollBehaviorX,overscrollY:Ho.overscrollBehaviorY});var u3e={listStyleType:!0,listStylePosition:!0,listStylePos:q.prop("listStylePosition"),listStyleImage:!0,listStyleImg:q.prop("listStyleImage")};function c3e(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,s)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const a=t.get(r);if(a.has(i))return a.get(i);const l=e(r,i,o,s);return a.set(i,l),l}},f3e=d3e(c3e),h3e={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},p3e={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},Fw=(e,t,n)=>{const r={},i=f3e(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},g3e={srOnly:{transform(e){return e===!0?h3e:e==="focusable"?p3e:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>Fw(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>Fw(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>Fw(t,e,n)}},Tp={position:!0,pos:q.prop("position"),zIndex:q.prop("zIndex","zIndices"),inset:q.spaceT("inset"),insetX:q.spaceT(["left","right"]),insetInline:q.spaceT("insetInline"),insetY:q.spaceT(["top","bottom"]),insetBlock:q.spaceT("insetBlock"),top:q.spaceT("top"),insetBlockStart:q.spaceT("insetBlockStart"),bottom:q.spaceT("bottom"),insetBlockEnd:q.spaceT("insetBlockEnd"),left:q.spaceT("left"),insetInlineStart:q.logical({scale:"space",property:{ltr:"left",rtl:"right"}}),right:q.spaceT("right"),insetInlineEnd:q.logical({scale:"space",property:{ltr:"right",rtl:"left"}})};Object.assign(Tp,{insetStart:Tp.insetInlineStart,insetEnd:Tp.insetInlineEnd});var m3e={ring:{transform:jt.ring},ringColor:q.colors("--chakra-ring-color"),ringOffset:q.prop("--chakra-ring-offset-width"),ringOffsetColor:q.colors("--chakra-ring-offset-color"),ringInset:q.prop("--chakra-ring-inset")},Dn={margin:q.spaceT("margin"),marginTop:q.spaceT("marginTop"),marginBlockStart:q.spaceT("marginBlockStart"),marginRight:q.spaceT("marginRight"),marginInlineEnd:q.spaceT("marginInlineEnd"),marginBottom:q.spaceT("marginBottom"),marginBlockEnd:q.spaceT("marginBlockEnd"),marginLeft:q.spaceT("marginLeft"),marginInlineStart:q.spaceT("marginInlineStart"),marginX:q.spaceT(["marginInlineStart","marginInlineEnd"]),marginInline:q.spaceT("marginInline"),marginY:q.spaceT(["marginTop","marginBottom"]),marginBlock:q.spaceT("marginBlock"),padding:q.space("padding"),paddingTop:q.space("paddingTop"),paddingBlockStart:q.space("paddingBlockStart"),paddingRight:q.space("paddingRight"),paddingBottom:q.space("paddingBottom"),paddingBlockEnd:q.space("paddingBlockEnd"),paddingLeft:q.space("paddingLeft"),paddingInlineStart:q.space("paddingInlineStart"),paddingInlineEnd:q.space("paddingInlineEnd"),paddingX:q.space(["paddingInlineStart","paddingInlineEnd"]),paddingInline:q.space("paddingInline"),paddingY:q.space(["paddingTop","paddingBottom"]),paddingBlock:q.space("paddingBlock")};Object.assign(Dn,{m:Dn.margin,mt:Dn.marginTop,mr:Dn.marginRight,me:Dn.marginInlineEnd,marginEnd:Dn.marginInlineEnd,mb:Dn.marginBottom,ml:Dn.marginLeft,ms:Dn.marginInlineStart,marginStart:Dn.marginInlineStart,mx:Dn.marginX,my:Dn.marginY,p:Dn.padding,pt:Dn.paddingTop,py:Dn.paddingY,px:Dn.paddingX,pb:Dn.paddingBottom,pl:Dn.paddingLeft,ps:Dn.paddingInlineStart,paddingStart:Dn.paddingInlineStart,pr:Dn.paddingRight,pe:Dn.paddingInlineEnd,paddingEnd:Dn.paddingInlineEnd});var y3e={textDecorationColor:q.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:q.shadows("textShadow")},v3e={clipPath:!0,transform:q.propT("transform",jt.transform),transformOrigin:!0,translateX:q.spaceT("--chakra-translate-x"),translateY:q.spaceT("--chakra-translate-y"),skewX:q.degreeT("--chakra-skew-x"),skewY:q.degreeT("--chakra-skew-y"),scaleX:q.prop("--chakra-scale-x"),scaleY:q.prop("--chakra-scale-y"),scale:q.prop(["--chakra-scale-x","--chakra-scale-y"]),rotate:q.degreeT("--chakra-rotate")},_3e={transition:!0,transitionDelay:!0,animation:!0,willChange:!0,transitionDuration:q.prop("transitionDuration","transition.duration"),transitionProperty:q.prop("transitionProperty","transition.property"),transitionTimingFunction:q.prop("transitionTimingFunction","transition.easing")},b3e={fontFamily:q.prop("fontFamily","fonts"),fontSize:q.prop("fontSize","fontSizes",jt.px),fontWeight:q.prop("fontWeight","fontWeights"),lineHeight:q.prop("lineHeight","lineHeights"),letterSpacing:q.prop("letterSpacing","letterSpacings"),textAlign:!0,fontStyle:!0,textIndent:!0,wordBreak:!0,overflowWrap:!0,textOverflow:!0,textTransform:!0,whiteSpace:!0,isTruncated:{transform(e){if(e===!0)return{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}},noOfLines:{static:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"var(--chakra-line-clamp)"},property:"--chakra-line-clamp"}},S3e={scrollBehavior:!0,scrollSnapAlign:!0,scrollSnapStop:!0,scrollSnapType:!0,scrollMargin:q.spaceT("scrollMargin"),scrollMarginTop:q.spaceT("scrollMarginTop"),scrollMarginBottom:q.spaceT("scrollMarginBottom"),scrollMarginLeft:q.spaceT("scrollMarginLeft"),scrollMarginRight:q.spaceT("scrollMarginRight"),scrollMarginX:q.spaceT(["scrollMarginLeft","scrollMarginRight"]),scrollMarginY:q.spaceT(["scrollMarginTop","scrollMarginBottom"]),scrollPadding:q.spaceT("scrollPadding"),scrollPaddingTop:q.spaceT("scrollPaddingTop"),scrollPaddingBottom:q.spaceT("scrollPaddingBottom"),scrollPaddingLeft:q.spaceT("scrollPaddingLeft"),scrollPaddingRight:q.spaceT("scrollPaddingRight"),scrollPaddingX:q.spaceT(["scrollPaddingLeft","scrollPaddingRight"]),scrollPaddingY:q.spaceT(["scrollPaddingTop","scrollPaddingBottom"])};function RU(e){return Za(e)&&e.reference?e.reference:String(e)}var zS=(e,...t)=>t.map(RU).join(` ${e} `).replace(/calc/g,""),eI=(...e)=>`calc(${zS("+",...e)})`,tI=(...e)=>`calc(${zS("-",...e)})`,T3=(...e)=>`calc(${zS("*",...e)})`,nI=(...e)=>`calc(${zS("/",...e)})`,rI=e=>{const t=RU(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:T3(t,-1)},rc=Object.assign(e=>({add:(...t)=>rc(eI(e,...t)),subtract:(...t)=>rc(tI(e,...t)),multiply:(...t)=>rc(T3(e,...t)),divide:(...t)=>rc(nI(e,...t)),negate:()=>rc(rI(e)),toString:()=>e.toString()}),{add:eI,subtract:tI,multiply:T3,divide:nI,negate:rI});function w3e(e,t="-"){return e.replace(/\s+/g,t)}function x3e(e){const t=w3e(e.toString());return E3e(C3e(t))}function C3e(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function E3e(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function T3e(e,t=""){return[t,e].filter(Boolean).join("-")}function A3e(e,t){return`var(${e}${t?`, ${t}`:""})`}function k3e(e,t=""){return x3e(`--${T3e(e,t)}`)}function A3(e,t,n){const r=k3e(e,n);return{variable:r,reference:A3e(r,t)}}function jMe(e,t){const n={};for(const r of t){if(Array.isArray(r)){const[i,o]=r;n[i]=A3(`${e}-${i}`,o);continue}n[r]=A3(`${e}-${r}`)}return n}function P3e(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function R3e(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function k3(e){if(e==null)return e;const{unitless:t}=R3e(e);return t||typeof e=="number"?`${e}px`:e}var IU=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,t4=e=>Object.fromEntries(Object.entries(e).sort(IU));function iI(e){const t=t4(e);return Object.assign(Object.values(t),t)}function I3e(e){const t=Object.keys(t4(e));return new Set(t)}function oI(e){var t;if(!e)return e;e=(t=k3(e))!=null?t:e;const n=-.02;return typeof e=="number"?`${e+n}`:e.replace(/(\d+\.?\d*)/u,r=>`${parseFloat(r)+n}`)}function lp(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${k3(e)})`),t&&n.push("and",`(max-width: ${k3(t)})`),n.join(" ")}function O3e(e){var t;if(!e)return null;e.base=(t=e.base)!=null?t:"0px";const n=iI(e),r=Object.entries(e).sort(IU).map(([s,a],l,u)=>{var c;let[,d]=(c=u[l+1])!=null?c:[];return d=parseFloat(d)>0?oI(d):void 0,{_minW:oI(a),breakpoint:s,minW:a,maxW:d,maxWQuery:lp(null,d),minWQuery:lp(a),minMaxQuery:lp(a,d)}}),i=I3e(e),o=Array.from(i.values());return{keys:i,normalized:n,isResponsive(s){const a=Object.keys(s);return a.length>0&&a.every(l=>i.has(l))},asObject:t4(e),asArray:iI(e),details:r,get(s){return r.find(a=>a.breakpoint===s)},media:[null,...n.map(s=>lp(s)).slice(1)],toArrayValue(s){if(!Za(s))throw new Error("toArrayValue: value must be an object");const a=o.map(l=>{var u;return(u=s[l])!=null?u:null});for(;P3e(a)===null;)a.pop();return a},toObjectValue(s){if(!Array.isArray(s))throw new Error("toObjectValue: value must be an array");return s.reduce((a,l,u)=>{const c=o[u];return c!=null&&l!=null&&(a[c]=l),a},{})}}}var fi={hover:(e,t)=>`${e}:hover ${t}, ${e}[data-hover] ${t}`,focus:(e,t)=>`${e}:focus ${t}, ${e}[data-focus] ${t}`,focusVisible:(e,t)=>`${e}:focus-visible ${t}`,focusWithin:(e,t)=>`${e}:focus-within ${t}`,active:(e,t)=>`${e}:active ${t}, ${e}[data-active] ${t}`,disabled:(e,t)=>`${e}:disabled ${t}, ${e}[data-disabled] ${t}`,invalid:(e,t)=>`${e}:invalid ${t}, ${e}[data-invalid] ${t}`,checked:(e,t)=>`${e}:checked ${t}, ${e}[data-checked] ${t}`,indeterminate:(e,t)=>`${e}:indeterminate ${t}, ${e}[aria-checked=mixed] ${t}, ${e}[data-indeterminate] ${t}`,readOnly:(e,t)=>`${e}:read-only ${t}, ${e}[readonly] ${t}, ${e}[data-read-only] ${t}`,expanded:(e,t)=>`${e}:read-only ${t}, ${e}[aria-expanded=true] ${t}, ${e}[data-expanded] ${t}`,placeholderShown:(e,t)=>`${e}:placeholder-shown ${t}`},Tl=e=>OU(t=>e(t,"&"),"[role=group]","[data-group]",".group"),Ma=e=>OU(t=>e(t,"~ &"),"[data-peer]",".peer"),OU=(e,...t)=>t.map(e).join(", "),US={_hover:"&:hover, &[data-hover]",_active:"&:active, &[data-active]",_focus:"&:focus, &[data-focus]",_highlighted:"&[data-highlighted]",_focusWithin:"&:focus-within",_focusVisible:"&:focus-visible, &[data-focus-visible]",_disabled:"&:disabled, &[disabled], &[aria-disabled=true], &[data-disabled]",_readOnly:"&[aria-readonly=true], &[readonly], &[data-readonly]",_before:"&::before",_after:"&::after",_empty:"&:empty",_expanded:"&[aria-expanded=true], &[data-expanded]",_checked:"&[aria-checked=true], &[data-checked]",_grabbed:"&[aria-grabbed=true], &[data-grabbed]",_pressed:"&[aria-pressed=true], &[data-pressed]",_invalid:"&[aria-invalid=true], &[data-invalid]",_valid:"&[data-valid], &[data-state=valid]",_loading:"&[data-loading], &[aria-busy=true]",_selected:"&[aria-selected=true], &[data-selected]",_hidden:"&[hidden], &[data-hidden]",_autofill:"&:-webkit-autofill",_even:"&:nth-of-type(even)",_odd:"&:nth-of-type(odd)",_first:"&:first-of-type",_firstLetter:"&::first-letter",_last:"&:last-of-type",_notFirst:"&:not(:first-of-type)",_notLast:"&:not(:last-of-type)",_visited:"&:visited",_activeLink:"&[aria-current=page]",_activeStep:"&[aria-current=step]",_indeterminate:"&:indeterminate, &[aria-checked=mixed], &[data-indeterminate]",_groupHover:Tl(fi.hover),_peerHover:Ma(fi.hover),_groupFocus:Tl(fi.focus),_peerFocus:Ma(fi.focus),_groupFocusVisible:Tl(fi.focusVisible),_peerFocusVisible:Ma(fi.focusVisible),_groupActive:Tl(fi.active),_peerActive:Ma(fi.active),_groupDisabled:Tl(fi.disabled),_peerDisabled:Ma(fi.disabled),_groupInvalid:Tl(fi.invalid),_peerInvalid:Ma(fi.invalid),_groupChecked:Tl(fi.checked),_peerChecked:Ma(fi.checked),_groupFocusWithin:Tl(fi.focusWithin),_peerFocusWithin:Ma(fi.focusWithin),_peerPlaceholderShown:Ma(fi.placeholderShown),_placeholder:"&::placeholder",_placeholderShown:"&:placeholder-shown",_fullScreen:"&:fullscreen",_selection:"&::selection",_rtl:"[dir=rtl] &, &[dir=rtl]",_ltr:"[dir=ltr] &, &[dir=ltr]",_mediaDark:"@media (prefers-color-scheme: dark)",_mediaReduceMotion:"@media (prefers-reduced-motion: reduce)",_dark:".chakra-ui-dark &:not([data-theme]),[data-theme=dark] &:not([data-theme]),&[data-theme=dark]",_light:".chakra-ui-light &:not([data-theme]),[data-theme=light] &:not([data-theme]),&[data-theme=light]",_horizontal:"&[data-orientation=horizontal]",_vertical:"&[data-orientation=vertical]"},MU=Object.keys(US);function sI(e,t){return A3(String(e).replace(/\./g,"-"),void 0,t)}function M3e(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:s,value:a}=o,{variable:l,reference:u}=sI(i,t==null?void 0:t.cssVarPrefix);if(!s){if(i.startsWith("space")){const f=i.split("."),[h,...p]=f,m=`${h}.-${p.join(".")}`,b=rc.negate(a),_=rc.negate(u);r[m]={value:b,var:l,varRef:_}}n[l]=a,r[i]={value:a,var:l,varRef:u};continue}const c=f=>{const p=[String(i).split(".")[0],f].join(".");if(!e[p])return f;const{reference:b}=sI(p,t==null?void 0:t.cssVarPrefix);return b},d=Za(a)?a:{default:a};n=aa(n,Object.entries(d).reduce((f,[h,p])=>{var m,b;if(!p)return f;const _=c(`${p}`);if(h==="default")return f[l]=_,f;const y=(b=(m=US)==null?void 0:m[h])!=null?b:h;return f[y]={[l]:_},f},{})),r[i]={value:u,var:l,varRef:u}}return{cssVars:n,cssMap:r}}function N3e(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function D3e(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function L3e(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function aI(e,t,n={}){const{stop:r,getKey:i}=n;function o(s,a=[]){var l;if(L3e(s)||Array.isArray(s)){const u={};for(const[c,d]of Object.entries(s)){const f=(l=i==null?void 0:i(c))!=null?l:c,h=[...a,f];if(r!=null&&r(s,h))return t(s,a);u[f]=o(d,h)}return u}return t(s,a)}return o(e)}var $3e=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","gradients","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur","breakpoints"];function F3e(e){return D3e(e,$3e)}function B3e(e){return e.semanticTokens}function z3e(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}var U3e=e=>MU.includes(e)||e==="default";function j3e({tokens:e,semanticTokens:t}){const n={};return aI(e,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!1,value:r})}),aI(t,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!0,value:r})},{stop:r=>Object.keys(r).every(U3e)}),n}function VMe(e){var t;const n=z3e(e),r=F3e(n),i=B3e(n),o=j3e({tokens:r,semanticTokens:i}),s=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:a,cssVars:l}=M3e(o,{cssVarPrefix:s});return Object.assign(n,{__cssVars:{...{"--chakra-ring-inset":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-ring-offset-width":"0px","--chakra-ring-offset-color":"#fff","--chakra-ring-color":"rgba(66, 153, 225, 0.6)","--chakra-ring-offset-shadow":"0 0 #0000","--chakra-ring-shadow":"0 0 #0000","--chakra-space-x-reverse":"0","--chakra-space-y-reverse":"0"},...l},__cssMap:a,__breakpoints:O3e(n.breakpoints)}),n}var n4=aa({},X0,Zt,s3e,M1,Ho,a3e,m3e,l3e,PU,g3e,Tp,E3,Dn,S3e,b3e,y3e,v3e,u3e,_3e),V3e=Object.assign({},Dn,Ho,M1,PU,Tp),GMe=Object.keys(V3e),G3e=[...Object.keys(n4),...MU],H3e={...n4,...US},q3e=e=>e in H3e,W3e=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const s in e){let a=pc(e[s],t);if(a==null)continue;if(a=Za(a)&&n(a)?r(a):a,!Array.isArray(a)){o[s]=a;continue}const l=a.slice(0,i.length).length;for(let u=0;ue.startsWith("--")&&typeof t=="string"&&!X3e(t),Y3e=(e,t)=>{var n,r;if(t==null)return t;const i=l=>{var u,c;return(c=(u=e.__cssMap)==null?void 0:u[l])==null?void 0:c.varRef},o=l=>{var u;return(u=i(l))!=null?u:l},[s,a]=K3e(t);return t=(r=(n=i(s))!=null?n:o(a))!=null?r:o(t),t};function Z3e(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,s=!1)=>{var a,l,u;const c=pc(o,r),d=W3e(c)(r);let f={};for(let h in d){const p=d[h];let m=pc(p,r);h in n&&(h=n[h]),Q3e(h,m)&&(m=Y3e(r,m));let b=t[h];if(b===!0&&(b={property:h}),Za(m)){f[h]=(a=f[h])!=null?a:{},f[h]=aa({},f[h],i(m,!0));continue}let _=(u=(l=b==null?void 0:b.transform)==null?void 0:l.call(b,m,r,c))!=null?u:m;_=b!=null&&b.processResult?i(_,!0):_;const y=pc(b==null?void 0:b.property,r);if(!s&&(b!=null&&b.static)){const g=pc(b.static,r);f=aa({},f,g)}if(y&&Array.isArray(y)){for(const g of y)f[g]=_;continue}if(y){y==="&"&&Za(_)?f=aa({},f,_):f[y]=_;continue}if(Za(_)){f=aa({},f,_);continue}f[h]=_}return f};return i}var J3e=e=>t=>Z3e({theme:t,pseudos:US,configs:n4})(e);function HMe(e){return e}function qMe(e){return e}function WMe(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function eEe(e,t){if(Array.isArray(e))return e;if(Za(e))return t(e);if(e!=null)return[e]}function tEe(e,t){for(let n=t+1;n{aa(u,{[g]:f?y[g]:{[_]:y[g]}})});continue}if(!h){f?aa(u,y):u[_]=y;continue}u[_]=y}}return u}}function rEe(e){return t=>{var n;const{variant:r,size:i,theme:o}=t,s=nEe(o);return aa({},pc((n=e.baseStyle)!=null?n:{},t),s(e,"sizes",i,t),s(e,"variants",r,t))}}function KMe(e,t,n){var r,i,o;return(o=(i=(r=e.__cssMap)==null?void 0:r[`${t}.${n}`])==null?void 0:i.varRef)!=null?o:n}function r4(e){return N3e(e,["styleConfig","size","variant","colorScheme"])}function iEe(e,t){const n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n}function oEe(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,s)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const a=t.get(r);if(a.has(i))return a.get(i);const l=e(r,i,o,s);return a.set(i,l),l}},aEe=sEe(oEe);function NU(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var DU=e=>NU(e,t=>t!=null);function lEe(e){return typeof e=="function"}function uEe(e,...t){return lEe(e)?e(...t):e}function XMe(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}var cEe=typeof Element<"u",dEe=typeof Map=="function",fEe=typeof Set=="function",hEe=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Q0(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,i;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Q0(e[r],t[r]))return!1;return!0}var o;if(dEe&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(o=e.entries();!(r=o.next()).done;)if(!t.has(r.value[0]))return!1;for(o=e.entries();!(r=o.next()).done;)if(!Q0(r.value[1],t.get(r.value[0])))return!1;return!0}if(fEe&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(o=e.entries();!(r=o.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(hEe&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[r]))return!1;if(cEe&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!Q0(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var pEe=function(t,n){try{return Q0(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const gEe=Uc(pEe);function LU(e,t={}){var n;const{styleConfig:r,...i}=t,{theme:o,colorMode:s}=$Ce(),a=e?aEe(o,`components.${e}`):void 0,l=r||a,u=aa({theme:o,colorMode:s},(n=l==null?void 0:l.defaultProps)!=null?n:{},DU(iEe(i,["children"]))),c=M.useRef({});if(l){const f=rEe(l)(u);gEe(c.current,f)||(c.current=f)}return c.current}function i4(e,t={}){return LU(e,t)}function QMe(e,t={}){return LU(e,t)}var mEe=new Set([...G3e,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),yEe=new Set(["htmlWidth","htmlHeight","htmlSize","htmlTranslate"]);function vEe(e){return yEe.has(e)||!mEe.has(e)}function _Ee(e,...t){if(e==null)throw new TypeError("Cannot convert undefined or null to object");const n={...e};for(const r of t)if(r!=null)for(const i in r)Object.prototype.hasOwnProperty.call(r,i)&&(i in n&&delete n[i],n[i]=r[i]);return n}function bEe(e){const t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}var SEe=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,wEe=vU(function(e){return SEe.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),xEe=wEe,CEe=function(t){return t!=="theme"},lI=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?xEe:CEe},uI=function(t,n,r){var i;if(n){var o=n.shouldForwardProp;i=t.__emotion_forwardProp&&o?function(s){return t.__emotion_forwardProp(s)&&o(s)}:o}return typeof i!="function"&&r&&(i=t.__emotion_forwardProp),i},EEe=function(t){var n=t.cache,r=t.serialized,i=t.isStringTag;return bU(n,r,i),ICe(function(){return SU(n,r,i)}),null},TEe=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,o,s;n!==void 0&&(o=n.label,s=n.target);var a=uI(t,n,r),l=a||lI(i),u=!l("as");return function(){var c=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(o!==void 0&&d.push("label:"+o+";"),c[0]==null||c[0].raw===void 0)d.push.apply(d,c);else{d.push(c[0][0]);for(var f=c.length,h=1;ht=>{const{theme:n,css:r,__css:i,sx:o,...s}=t,a=NU(s,(d,f)=>q3e(f)),l=uEe(e,t),u=_Ee({},i,l,DU(a),o),c=J3e(u)(t.theme);return r?[c,r]:c};function Bw(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=vEe);const i=PEe({baseStyle:n}),o=kEe(e,r)(i);return vn.forwardRef(function(l,u){const{colorMode:c,forced:d}=ZT();return vn.createElement(o,{ref:u,"data-theme":d?c:void 0,...l})})}function REe(){const e=new Map;return new Proxy(Bw,{apply(t,n,r){return Bw(...r)},get(t,n){return e.has(n)||e.set(n,Bw(n)),e.get(n)}})}var wu=REe();function zu(e){return M.forwardRef(e)}const $U=M.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),jS=M.createContext({}),Hm=M.createContext(null),VS=typeof document<"u",o4=VS?M.useLayoutEffect:M.useEffect,FU=M.createContext({strict:!1});function IEe(e,t,n,r){const{visualElement:i}=M.useContext(jS),o=M.useContext(FU),s=M.useContext(Hm),a=M.useContext($U).reducedMotion,l=M.useRef();r=r||o.renderer,!l.current&&r&&(l.current=r(e,{visualState:t,parent:i,props:n,presenceContext:s,blockInitialAnimation:s?s.initial===!1:!1,reducedMotionConfig:a}));const u=l.current;M.useInsertionEffect(()=>{u&&u.update(n,s)});const c=M.useRef(!!window.HandoffAppearAnimations);return o4(()=>{u&&(u.render(),c.current&&u.animationState&&u.animationState.animateChanges())}),M.useEffect(()=>{u&&(u.updateFeatures(),!c.current&&u.animationState&&u.animationState.animateChanges(),window.HandoffAppearAnimations=void 0,c.current=!1)}),u}function Kd(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function OEe(e,t,n){return M.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):Kd(n)&&(n.current=r))},[t])}function Qg(e){return typeof e=="string"||Array.isArray(e)}function GS(e){return typeof e=="object"&&typeof e.start=="function"}const s4=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],a4=["initial",...s4];function HS(e){return GS(e.animate)||a4.some(t=>Qg(e[t]))}function BU(e){return!!(HS(e)||e.variants)}function MEe(e,t){if(HS(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Qg(n)?n:void 0,animate:Qg(r)?r:void 0}}return e.inherit!==!1?t:{}}function NEe(e){const{initial:t,animate:n}=MEe(e,M.useContext(jS));return M.useMemo(()=>({initial:t,animate:n}),[dI(t),dI(n)])}function dI(e){return Array.isArray(e)?e.join(" "):e}const fI={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},Yg={};for(const e in fI)Yg[e]={isEnabled:t=>fI[e].some(n=>!!t[n])};function DEe(e){for(const t in e)Yg[t]={...Yg[t],...e[t]}}const l4=M.createContext({}),zU=M.createContext({}),LEe=Symbol.for("motionComponentSymbol");function $Ee({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:r,Component:i}){e&&DEe(e);function o(a,l){let u;const c={...M.useContext($U),...a,layoutId:FEe(a)},{isStatic:d}=c,f=NEe(a),h=r(a,d);if(!d&&VS){f.visualElement=IEe(i,h,c,t);const p=M.useContext(zU),m=M.useContext(FU).strict;f.visualElement&&(u=f.visualElement.loadFeatures(c,m,e,p))}return M.createElement(jS.Provider,{value:f},u&&f.visualElement?M.createElement(u,{visualElement:f.visualElement,...c}):null,n(i,a,OEe(h,f.visualElement,l),h,d,f.visualElement))}const s=M.forwardRef(o);return s[LEe]=i,s}function FEe({layoutId:e}){const t=M.useContext(l4).id;return t&&e!==void 0?t+"-"+e:e}function BEe(e){function t(r,i={}){return $Ee(e(r,i))}if(typeof Proxy>"u")return t;const n=new Map;return new Proxy(t,{get:(r,i)=>(n.has(i)||n.set(i,t(i)),n.get(i))})}const zEe=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function u4(e){return typeof e!="string"||e.includes("-")?!1:!!(zEe.indexOf(e)>-1||/[A-Z]/.test(e))}const D1={};function UEe(e){Object.assign(D1,e)}const qm=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ad=new Set(qm);function UU(e,{layout:t,layoutId:n}){return ad.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!D1[e]||e==="opacity")}const _o=e=>!!(e&&e.getVelocity),jEe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},VEe=qm.length;function GEe(e,{enableHardwareAcceleration:t=!0,allowTransformNone:n=!0},r,i){let o="";for(let s=0;st=>typeof t=="string"&&t.startsWith(e),VU=jU("--"),P3=jU("var(--"),HEe=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,qEe=(e,t)=>t&&typeof e=="number"?t.transform(e):e,xu=(e,t,n)=>Math.min(Math.max(n,e),t),ld={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Ap={...ld,transform:e=>xu(0,1,e)},u0={...ld,default:1},kp=e=>Math.round(e*1e5)/1e5,qS=/(-)?([\d]*\.?[\d])+/g,GU=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,WEe=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function Wm(e){return typeof e=="string"}const Km=e=>({test:t=>Wm(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),kl=Km("deg"),ma=Km("%"),rt=Km("px"),KEe=Km("vh"),XEe=Km("vw"),hI={...ma,parse:e=>ma.parse(e)/100,transform:e=>ma.transform(e*100)},pI={...ld,transform:Math.round},HU={borderWidth:rt,borderTopWidth:rt,borderRightWidth:rt,borderBottomWidth:rt,borderLeftWidth:rt,borderRadius:rt,radius:rt,borderTopLeftRadius:rt,borderTopRightRadius:rt,borderBottomRightRadius:rt,borderBottomLeftRadius:rt,width:rt,maxWidth:rt,height:rt,maxHeight:rt,size:rt,top:rt,right:rt,bottom:rt,left:rt,padding:rt,paddingTop:rt,paddingRight:rt,paddingBottom:rt,paddingLeft:rt,margin:rt,marginTop:rt,marginRight:rt,marginBottom:rt,marginLeft:rt,rotate:kl,rotateX:kl,rotateY:kl,rotateZ:kl,scale:u0,scaleX:u0,scaleY:u0,scaleZ:u0,skew:kl,skewX:kl,skewY:kl,distance:rt,translateX:rt,translateY:rt,translateZ:rt,x:rt,y:rt,z:rt,perspective:rt,transformPerspective:rt,opacity:Ap,originX:hI,originY:hI,originZ:rt,zIndex:pI,fillOpacity:Ap,strokeOpacity:Ap,numOctaves:pI};function c4(e,t,n,r){const{style:i,vars:o,transform:s,transformOrigin:a}=e;let l=!1,u=!1,c=!0;for(const d in t){const f=t[d];if(VU(d)){o[d]=f;continue}const h=HU[d],p=qEe(f,h);if(ad.has(d)){if(l=!0,s[d]=p,!c)continue;f!==(h.default||0)&&(c=!1)}else d.startsWith("origin")?(u=!0,a[d]=p):i[d]=p}if(t.transform||(l||r?i.transform=GEe(e.transform,n,c,r):i.transform&&(i.transform="none")),u){const{originX:d="50%",originY:f="50%",originZ:h=0}=a;i.transformOrigin=`${d} ${f} ${h}`}}const d4=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function qU(e,t,n){for(const r in t)!_o(t[r])&&!UU(r,n)&&(e[r]=t[r])}function QEe({transformTemplate:e},t,n){return M.useMemo(()=>{const r=d4();return c4(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function YEe(e,t,n){const r=e.style||{},i={};return qU(i,r,e),Object.assign(i,QEe(e,t,n)),e.transformValues?e.transformValues(i):i}function ZEe(e,t,n){const r={},i=YEe(e,t,n);return e.drag&&e.dragListener!==!1&&(r.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(r.tabIndex=0),r.style=i,r}const JEe=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","transformValues","custom","inherit","onLayoutAnimationStart","onLayoutAnimationComplete","onLayoutMeasure","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","ignoreStrict","viewport"]);function L1(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||JEe.has(e)}let WU=e=>!L1(e);function e5e(e){e&&(WU=t=>t.startsWith("on")?!L1(t):e(t))}try{e5e(require("@emotion/is-prop-valid").default)}catch{}function t5e(e,t,n){const r={};for(const i in e)i==="values"&&typeof e.values=="object"||(WU(i)||n===!0&&L1(i)||!t&&!L1(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function gI(e,t,n){return typeof e=="string"?e:rt.transform(t+n*e)}function n5e(e,t,n){const r=gI(t,e.x,e.width),i=gI(n,e.y,e.height);return`${r} ${i}`}const r5e={offset:"stroke-dashoffset",array:"stroke-dasharray"},i5e={offset:"strokeDashoffset",array:"strokeDasharray"};function o5e(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?r5e:i5e;e[o.offset]=rt.transform(-r);const s=rt.transform(t),a=rt.transform(n);e[o.array]=`${s} ${a}`}function f4(e,{attrX:t,attrY:n,attrScale:r,originX:i,originY:o,pathLength:s,pathSpacing:a=1,pathOffset:l=0,...u},c,d,f){if(c4(e,u,c,f),d){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:h,style:p,dimensions:m}=e;h.transform&&(m&&(p.transform=h.transform),delete h.transform),m&&(i!==void 0||o!==void 0||p.transform)&&(p.transformOrigin=n5e(m,i!==void 0?i:.5,o!==void 0?o:.5)),t!==void 0&&(h.x=t),n!==void 0&&(h.y=n),r!==void 0&&(h.scale=r),s!==void 0&&o5e(h,s,a,l,!1)}const KU=()=>({...d4(),attrs:{}}),h4=e=>typeof e=="string"&&e.toLowerCase()==="svg";function s5e(e,t,n,r){const i=M.useMemo(()=>{const o=KU();return f4(o,t,{enableHardwareAcceleration:!1},h4(r),e.transformTemplate),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};qU(o,e.style,e),i.style={...o,...i.style}}return i}function a5e(e=!1){return(n,r,i,{latestValues:o},s)=>{const l=(u4(n)?s5e:ZEe)(r,o,s,n),c={...t5e(r,typeof n=="string",e),...l,ref:i},{children:d}=r,f=M.useMemo(()=>_o(d)?d.get():d,[d]);return M.createElement(n,{...c,children:f})}}const p4=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function XU(e,{style:t,vars:n},r,i){Object.assign(e.style,t,i&&i.getProjectionStyles(r));for(const o in n)e.style.setProperty(o,n[o])}const QU=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function YU(e,t,n,r){XU(e,t,void 0,r);for(const i in t.attrs)e.setAttribute(QU.has(i)?i:p4(i),t.attrs[i])}function g4(e,t){const{style:n}=e,r={};for(const i in n)(_o(n[i])||t.style&&_o(t.style[i])||UU(i,e))&&(r[i]=n[i]);return r}function ZU(e,t){const n=g4(e,t);for(const r in e)if(_o(e[r])||_o(t[r])){const i=qm.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;n[i]=e[r]}return n}function m4(e,t,n,r={},i={}){return typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),t}function JU(e){const t=M.useRef(null);return t.current===null&&(t.current=e()),t.current}const $1=e=>Array.isArray(e),l5e=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),u5e=e=>$1(e)?e[e.length-1]||0:e;function Y0(e){const t=_o(e)?e.get():e;return l5e(t)?t.toValue():t}function c5e({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const s={latestValues:d5e(r,i,o,e),renderState:t()};return n&&(s.mount=a=>n(r,a,s)),s}const ej=e=>(t,n)=>{const r=M.useContext(jS),i=M.useContext(Hm),o=()=>c5e(e,t,r,i);return n?o():JU(o)};function d5e(e,t,n,r){const i={},o=r(e,{});for(const f in o)i[f]=Y0(o[f]);let{initial:s,animate:a}=e;const l=HS(e),u=BU(e);t&&u&&!l&&e.inherit!==!1&&(s===void 0&&(s=t.initial),a===void 0&&(a=t.animate));let c=n?n.initial===!1:!1;c=c||s===!1;const d=c?a:s;return d&&typeof d!="boolean"&&!GS(d)&&(Array.isArray(d)?d:[d]).forEach(h=>{const p=m4(e,h);if(!p)return;const{transitionEnd:m,transition:b,..._}=p;for(const y in _){let g=_[y];if(Array.isArray(g)){const v=c?g.length-1:0;g=g[v]}g!==null&&(i[y]=g)}for(const y in m)i[y]=m[y]}),i}const dr=e=>e;function f5e(e){let t=[],n=[],r=0,i=!1,o=!1;const s=new WeakSet,a={schedule:(l,u=!1,c=!1)=>{const d=c&&i,f=d?t:n;return u&&s.add(l),f.indexOf(l)===-1&&(f.push(l),d&&i&&(r=t.length)),l},cancel:l=>{const u=n.indexOf(l);u!==-1&&n.splice(u,1),s.delete(l)},process:l=>{if(i){o=!0;return}if(i=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let u=0;u(d[f]=f5e(()=>n=!0),d),{}),s=d=>o[d].process(i),a=()=>{const d=performance.now();n=!1,i.delta=r?1e3/60:Math.max(Math.min(d-i.timestamp,h5e),1),i.timestamp=d,i.isProcessing=!0,c0.forEach(s),i.isProcessing=!1,n&&t&&(r=!1,e(a))},l=()=>{n=!0,r=!0,i.isProcessing||e(a)};return{schedule:c0.reduce((d,f)=>{const h=o[f];return d[f]=(p,m=!1,b=!1)=>(n||l(),h.schedule(p,m,b)),d},{}),cancel:d=>c0.forEach(f=>o[f].cancel(d)),state:i,steps:o}}const{schedule:kn,cancel:cl,state:Ii,steps:zw}=p5e(typeof requestAnimationFrame<"u"?requestAnimationFrame:dr,!0),g5e={useVisualState:ej({scrapeMotionValuesFromProps:ZU,createRenderState:KU,onMount:(e,t,{renderState:n,latestValues:r})=>{kn.read(()=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}}),kn.render(()=>{f4(n,r,{enableHardwareAcceleration:!1},h4(t.tagName),e.transformTemplate),YU(t,n)})}})},m5e={useVisualState:ej({scrapeMotionValuesFromProps:g4,createRenderState:d4})};function y5e(e,{forwardMotionProps:t=!1},n,r){return{...u4(e)?g5e:m5e,preloadedFeatures:n,useRender:a5e(t),createVisualElement:r,Component:e}}function Ka(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}const tj=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function WS(e,t="page"){return{point:{x:e[t+"X"],y:e[t+"Y"]}}}const v5e=e=>t=>tj(t)&&e(t,WS(t));function Ja(e,t,n,r){return Ka(e,t,v5e(n),r)}const _5e=(e,t)=>n=>t(e(n)),au=(...e)=>e.reduce(_5e);function nj(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const mI=nj("dragHorizontal"),yI=nj("dragVertical");function rj(e){let t=!1;if(e==="y")t=yI();else if(e==="x")t=mI();else{const n=mI(),r=yI();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function ij(){const e=rj(!0);return e?(e(),!1):!0}class Uu{constructor(t){this.isMounted=!1,this.node=t}update(){}}function vI(e,t){const n="pointer"+(t?"enter":"leave"),r="onHover"+(t?"Start":"End"),i=(o,s)=>{if(o.type==="touch"||ij())return;const a=e.getProps();e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",t),a[r]&&kn.update(()=>a[r](o,s))};return Ja(e.current,n,i,{passive:!e.getProps()[r]})}class b5e extends Uu{mount(){this.unmount=au(vI(this.node,!0),vI(this.node,!1))}unmount(){}}class S5e extends Uu{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=au(Ka(this.node.current,"focus",()=>this.onFocus()),Ka(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const oj=(e,t)=>t?e===t?!0:oj(e,t.parentElement):!1;function Uw(e,t){if(!t)return;const n=new PointerEvent("pointer"+e);t(n,WS(n))}class w5e extends Uu{constructor(){super(...arguments),this.removeStartListeners=dr,this.removeEndListeners=dr,this.removeAccessibleListeners=dr,this.startPointerPress=(t,n)=>{if(this.removeEndListeners(),this.isPressing)return;const r=this.node.getProps(),o=Ja(window,"pointerup",(a,l)=>{if(!this.checkPressEnd())return;const{onTap:u,onTapCancel:c}=this.node.getProps();kn.update(()=>{oj(this.node.current,a.target)?u&&u(a,l):c&&c(a,l)})},{passive:!(r.onTap||r.onPointerUp)}),s=Ja(window,"pointercancel",(a,l)=>this.cancelPress(a,l),{passive:!(r.onTapCancel||r.onPointerCancel)});this.removeEndListeners=au(o,s),this.startPress(t,n)},this.startAccessiblePress=()=>{const t=o=>{if(o.key!=="Enter"||this.isPressing)return;const s=a=>{a.key!=="Enter"||!this.checkPressEnd()||Uw("up",(l,u)=>{const{onTap:c}=this.node.getProps();c&&kn.update(()=>c(l,u))})};this.removeEndListeners(),this.removeEndListeners=Ka(this.node.current,"keyup",s),Uw("down",(a,l)=>{this.startPress(a,l)})},n=Ka(this.node.current,"keydown",t),r=()=>{this.isPressing&&Uw("cancel",(o,s)=>this.cancelPress(o,s))},i=Ka(this.node.current,"blur",r);this.removeAccessibleListeners=au(n,i)}}startPress(t,n){this.isPressing=!0;const{onTapStart:r,whileTap:i}=this.node.getProps();i&&this.node.animationState&&this.node.animationState.setActive("whileTap",!0),r&&kn.update(()=>r(t,n))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!ij()}cancelPress(t,n){if(!this.checkPressEnd())return;const{onTapCancel:r}=this.node.getProps();r&&kn.update(()=>r(t,n))}mount(){const t=this.node.getProps(),n=Ja(this.node.current,"pointerdown",this.startPointerPress,{passive:!(t.onTapStart||t.onPointerStart)}),r=Ka(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=au(n,r)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const R3=new WeakMap,jw=new WeakMap,x5e=e=>{const t=R3.get(e.target);t&&t(e)},C5e=e=>{e.forEach(x5e)};function E5e({root:e,...t}){const n=e||document;jw.has(n)||jw.set(n,{});const r=jw.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(C5e,{root:e,...t})),r[i]}function T5e(e,t,n){const r=E5e(t);return R3.set(e,n),r.observe(e),()=>{R3.delete(e),r.unobserve(e)}}const A5e={some:0,all:1};class k5e extends Uu{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:i="some",once:o}=t,s={root:n?n.current:void 0,rootMargin:r,threshold:typeof i=="number"?i:A5e[i]},a=l=>{const{isIntersecting:u}=l;if(this.isInView===u||(this.isInView=u,o&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:c,onViewportLeave:d}=this.node.getProps(),f=u?c:d;f&&f(l)};return T5e(this.node.current,s,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(P5e(t,n))&&this.startObserver()}unmount(){}}function P5e({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const R5e={inView:{Feature:k5e},tap:{Feature:w5e},focus:{Feature:S5e},hover:{Feature:b5e}};function sj(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;rt[r]=n.get()),t}function O5e(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVelocity()),t}function KS(e,t,n){const r=e.getProps();return m4(r,t,n!==void 0?n:r.custom,I5e(e),O5e(e))}const M5e="framerAppearId",N5e="data-"+p4(M5e);let D5e=dr,y4=dr;const lu=e=>e*1e3,el=e=>e/1e3,L5e={current:!1},aj=e=>Array.isArray(e)&&typeof e[0]=="number";function lj(e){return!!(!e||typeof e=="string"&&uj[e]||aj(e)||Array.isArray(e)&&e.every(lj))}const up=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,uj={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:up([0,.65,.55,1]),circOut:up([.55,0,1,.45]),backIn:up([.31,.01,.66,-.59]),backOut:up([.33,1.53,.69,.99])};function cj(e){if(e)return aj(e)?up(e):Array.isArray(e)?e.map(cj):uj[e]}function $5e(e,t,n,{delay:r=0,duration:i,repeat:o=0,repeatType:s="loop",ease:a,times:l}={}){const u={[t]:n};l&&(u.offset=l);const c=cj(a);return Array.isArray(c)&&(u.easing=c),e.animate(u,{delay:r,duration:i,easing:Array.isArray(c)?"linear":c,fill:"both",iterations:o+1,direction:s==="reverse"?"alternate":"normal"})}function F5e(e,{repeat:t,repeatType:n="loop"}){const r=t&&n!=="loop"&&t%2===1?0:e.length-1;return e[r]}const dj=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,B5e=1e-7,z5e=12;function U5e(e,t,n,r,i){let o,s,a=0;do s=t+(n-t)/2,o=dj(s,r,i)-e,o>0?n=s:t=s;while(Math.abs(o)>B5e&&++aU5e(o,0,1,e,n);return o=>o===0||o===1?o:dj(i(o),t,r)}const j5e=Xm(.42,0,1,1),V5e=Xm(0,0,.58,1),fj=Xm(.42,0,.58,1),G5e=e=>Array.isArray(e)&&typeof e[0]!="number",hj=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,pj=e=>t=>1-e(1-t),gj=e=>1-Math.sin(Math.acos(e)),v4=pj(gj),H5e=hj(v4),mj=Xm(.33,1.53,.69,.99),_4=pj(mj),q5e=hj(_4),W5e=e=>(e*=2)<1?.5*_4(e):.5*(2-Math.pow(2,-10*(e-1))),K5e={linear:dr,easeIn:j5e,easeInOut:fj,easeOut:V5e,circIn:gj,circInOut:H5e,circOut:v4,backIn:_4,backInOut:q5e,backOut:mj,anticipate:W5e},_I=e=>{if(Array.isArray(e)){y4(e.length===4);const[t,n,r,i]=e;return Xm(t,n,r,i)}else if(typeof e=="string")return K5e[e];return e},b4=(e,t)=>n=>!!(Wm(n)&&WEe.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),yj=(e,t,n)=>r=>{if(!Wm(r))return r;const[i,o,s,a]=r.match(qS);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(s),alpha:a!==void 0?parseFloat(a):1}},X5e=e=>xu(0,255,e),Vw={...ld,transform:e=>Math.round(X5e(e))},gc={test:b4("rgb","red"),parse:yj("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+Vw.transform(e)+", "+Vw.transform(t)+", "+Vw.transform(n)+", "+kp(Ap.transform(r))+")"};function Q5e(e){let t="",n="",r="",i="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),r=e.substring(5,7),i=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),r=e.substring(3,4),i=e.substring(4,5),t+=t,n+=n,r+=r,i+=i),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:i?parseInt(i,16)/255:1}}const I3={test:b4("#"),parse:Q5e,transform:gc.transform},Xd={test:b4("hsl","hue"),parse:yj("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+ma.transform(kp(t))+", "+ma.transform(kp(n))+", "+kp(Ap.transform(r))+")"},Hi={test:e=>gc.test(e)||I3.test(e)||Xd.test(e),parse:e=>gc.test(e)?gc.parse(e):Xd.test(e)?Xd.parse(e):I3.parse(e),transform:e=>Wm(e)?e:e.hasOwnProperty("red")?gc.transform(e):Xd.transform(e)},rr=(e,t,n)=>-n*e+n*t+e;function Gw(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Y5e({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let i=0,o=0,s=0;if(!t)i=o=s=n;else{const a=n<.5?n*(1+t):n+t-n*t,l=2*n-a;i=Gw(l,a,e+1/3),o=Gw(l,a,e),s=Gw(l,a,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(s*255),alpha:r}}const Hw=(e,t,n)=>{const r=e*e;return Math.sqrt(Math.max(0,n*(t*t-r)+r))},Z5e=[I3,gc,Xd],J5e=e=>Z5e.find(t=>t.test(e));function bI(e){const t=J5e(e);let n=t.parse(e);return t===Xd&&(n=Y5e(n)),n}const vj=(e,t)=>{const n=bI(e),r=bI(t),i={...n};return o=>(i.red=Hw(n.red,r.red,o),i.green=Hw(n.green,r.green,o),i.blue=Hw(n.blue,r.blue,o),i.alpha=rr(n.alpha,r.alpha,o),gc.transform(i))};function eTe(e){var t,n;return isNaN(e)&&Wm(e)&&(((t=e.match(qS))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(GU))===null||n===void 0?void 0:n.length)||0)>0}const _j={regex:HEe,countKey:"Vars",token:"${v}",parse:dr},bj={regex:GU,countKey:"Colors",token:"${c}",parse:Hi.parse},Sj={regex:qS,countKey:"Numbers",token:"${n}",parse:ld.parse};function qw(e,{regex:t,countKey:n,token:r,parse:i}){const o=e.tokenised.match(t);o&&(e["num"+n]=o.length,e.tokenised=e.tokenised.replace(t,r),e.values.push(...o.map(i)))}function F1(e){const t=e.toString(),n={value:t,tokenised:t,values:[],numVars:0,numColors:0,numNumbers:0};return n.value.includes("var(--")&&qw(n,_j),qw(n,bj),qw(n,Sj),n}function wj(e){return F1(e).values}function xj(e){const{values:t,numColors:n,numVars:r,tokenised:i}=F1(e),o=t.length;return s=>{let a=i;for(let l=0;ltypeof e=="number"?0:e;function nTe(e){const t=wj(e);return xj(e)(t.map(tTe))}const Cu={test:eTe,parse:wj,createTransformer:xj,getAnimatableNone:nTe},Cj=(e,t)=>n=>`${n>0?t:e}`;function Ej(e,t){return typeof e=="number"?n=>rr(e,t,n):Hi.test(e)?vj(e,t):e.startsWith("var(")?Cj(e,t):Aj(e,t)}const Tj=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,s)=>Ej(o,t[s]));return o=>{for(let s=0;s{const n={...e,...t},r={};for(const i in n)e[i]!==void 0&&t[i]!==void 0&&(r[i]=Ej(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}},Aj=(e,t)=>{const n=Cu.createTransformer(t),r=F1(e),i=F1(t);return r.numVars===i.numVars&&r.numColors===i.numColors&&r.numNumbers>=i.numNumbers?au(Tj(r.values,i.values),n):Cj(e,t)},Zg=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},SI=(e,t)=>n=>rr(e,t,n);function iTe(e){return typeof e=="number"?SI:typeof e=="string"?Hi.test(e)?vj:Aj:Array.isArray(e)?Tj:typeof e=="object"?rTe:SI}function oTe(e,t,n){const r=[],i=n||iTe(e[0]),o=e.length-1;for(let s=0;st[0];e[0]>e[o-1]&&(e=[...e].reverse(),t=[...t].reverse());const s=oTe(t,r,i),a=s.length,l=u=>{let c=0;if(a>1)for(;cl(xu(e[0],e[o-1],u)):l}function sTe(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const i=Zg(0,t,r);e.push(rr(n,1,i))}}function aTe(e){const t=[0];return sTe(t,e.length-1),t}function lTe(e,t){return e.map(n=>n*t)}function uTe(e,t){return e.map(()=>t||fj).splice(0,e.length-1)}function B1({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const i=G5e(r)?r.map(_I):_I(r),o={done:!1,value:t[0]},s=lTe(n&&n.length===t.length?n:aTe(t),e),a=kj(s,t,{ease:Array.isArray(i)?i:uTe(t,i)});return{calculatedDuration:e,next:l=>(o.value=a(l),o.done=l>=e,o)}}function Pj(e,t){return t?e*(1e3/t):0}const cTe=5;function Rj(e,t,n){const r=Math.max(t-cTe,0);return Pj(n-e(r),t-r)}const Ww=.001,dTe=.01,wI=10,fTe=.05,hTe=1;function pTe({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;D5e(e<=lu(wI));let s=1-t;s=xu(fTe,hTe,s),e=xu(dTe,wI,el(e)),s<1?(i=u=>{const c=u*s,d=c*e,f=c-n,h=O3(u,s),p=Math.exp(-d);return Ww-f/h*p},o=u=>{const d=u*s*e,f=d*n+n,h=Math.pow(s,2)*Math.pow(u,2)*e,p=Math.exp(-d),m=O3(Math.pow(u,2),s);return(-i(u)+Ww>0?-1:1)*((f-h)*p)/m}):(i=u=>{const c=Math.exp(-u*e),d=(u-n)*e+1;return-Ww+c*d},o=u=>{const c=Math.exp(-u*e),d=(n-u)*(e*e);return c*d});const a=5/e,l=mTe(i,o,a);if(e=lu(e),isNaN(l))return{stiffness:100,damping:10,duration:e};{const u=Math.pow(l,2)*r;return{stiffness:u,damping:s*2*Math.sqrt(r*u),duration:e}}}const gTe=12;function mTe(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function _Te(e){let t={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...e};if(!xI(e,vTe)&&xI(e,yTe)){const n=pTe(e);t={...t,...n,velocity:0,mass:1},t.isResolvedFromDuration=!0}return t}function Ij({keyframes:e,restDelta:t,restSpeed:n,...r}){const i=e[0],o=e[e.length-1],s={done:!1,value:i},{stiffness:a,damping:l,mass:u,velocity:c,duration:d,isResolvedFromDuration:f}=_Te(r),h=c?-el(c):0,p=l/(2*Math.sqrt(a*u)),m=o-i,b=el(Math.sqrt(a/u)),_=Math.abs(m)<5;n||(n=_?.01:2),t||(t=_?.005:.5);let y;if(p<1){const g=O3(b,p);y=v=>{const S=Math.exp(-p*b*v);return o-S*((h+p*b*m)/g*Math.sin(g*v)+m*Math.cos(g*v))}}else if(p===1)y=g=>o-Math.exp(-b*g)*(m+(h+b*m)*g);else{const g=b*Math.sqrt(p*p-1);y=v=>{const S=Math.exp(-p*b*v),w=Math.min(g*v,300);return o-S*((h+p*b*m)*Math.sinh(w)+g*m*Math.cosh(w))/g}}return{calculatedDuration:f&&d||null,next:g=>{const v=y(g);if(f)s.done=g>=d;else{let S=h;g!==0&&(p<1?S=Rj(y,g,v):S=0);const w=Math.abs(S)<=n,x=Math.abs(o-v)<=t;s.done=w&&x}return s.value=s.done?o:v,s}}}function CI({keyframes:e,velocity:t=0,power:n=.8,timeConstant:r=325,bounceDamping:i=10,bounceStiffness:o=500,modifyTarget:s,min:a,max:l,restDelta:u=.5,restSpeed:c}){const d=e[0],f={done:!1,value:d},h=C=>a!==void 0&&Cl,p=C=>a===void 0?l:l===void 0||Math.abs(a-C)-m*Math.exp(-C/r),g=C=>_+y(C),v=C=>{const A=y(C),T=g(C);f.done=Math.abs(A)<=u,f.value=f.done?_:T};let S,w;const x=C=>{h(f.value)&&(S=C,w=Ij({keyframes:[f.value,p(f.value)],velocity:Rj(g,C,f.value),damping:i,stiffness:o,restDelta:u,restSpeed:c}))};return x(0),{calculatedDuration:null,next:C=>{let A=!1;return!w&&S===void 0&&(A=!0,v(C),x(C)),S!==void 0&&C>S?w.next(C-S):(!A&&v(C),f)}}}const bTe=e=>{const t=({timestamp:n})=>e(n);return{start:()=>kn.update(t,!0),stop:()=>cl(t),now:()=>Ii.isProcessing?Ii.timestamp:performance.now()}},EI=2e4;function TI(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t=EI?1/0:t}const STe={decay:CI,inertia:CI,tween:B1,keyframes:B1,spring:Ij};function z1({autoplay:e=!0,delay:t=0,driver:n=bTe,keyframes:r,type:i="keyframes",repeat:o=0,repeatDelay:s=0,repeatType:a="loop",onPlay:l,onStop:u,onComplete:c,onUpdate:d,...f}){let h=1,p=!1,m,b;const _=()=>{b=new Promise(F=>{m=F})};_();let y;const g=STe[i]||B1;let v;g!==B1&&typeof r[0]!="number"&&(v=kj([0,100],r,{clamp:!1}),r=[0,100]);const S=g({...f,keyframes:r});let w;a==="mirror"&&(w=g({...f,keyframes:[...r].reverse(),velocity:-(f.velocity||0)}));let x="idle",C=null,A=null,T=null;S.calculatedDuration===null&&o&&(S.calculatedDuration=TI(S));const{calculatedDuration:k}=S;let L=1/0,N=1/0;k!==null&&(L=k+s,N=L*(o+1)-s);let E=0;const P=F=>{if(A===null)return;h>0&&(A=Math.min(A,F)),h<0&&(A=Math.min(F-N/h,A)),C!==null?E=C:E=Math.round(F-A)*h;const U=E-t*(h>=0?1:-1),V=h>=0?U<0:U>N;E=Math.max(U,0),x==="finished"&&C===null&&(E=N);let H=E,Y=S;if(o){const te=E/L;let oe=Math.floor(te),me=te%1;!me&&te>=1&&(me=1),me===1&&oe--,oe=Math.min(oe,o+1);const le=!!(oe%2);le&&(a==="reverse"?(me=1-me,s&&(me-=s/L)):a==="mirror"&&(Y=w));let ht=xu(0,1,me);E>N&&(ht=a==="reverse"&&le?1:0),H=ht*L}const Q=V?{done:!1,value:r[0]}:Y.next(H);v&&(Q.value=v(Q.value));let{done:j}=Q;!V&&k!==null&&(j=h>=0?E>=N:E<=0);const K=C===null&&(x==="finished"||x==="running"&&j);return d&&d(Q.value),K&&R(),Q},D=()=>{y&&y.stop(),y=void 0},B=()=>{x="idle",D(),m(),_(),A=T=null},R=()=>{x="finished",c&&c(),D(),m()},I=()=>{if(p)return;y||(y=n(P));const F=y.now();l&&l(),C!==null?A=F-C:(!A||x==="finished")&&(A=F),x==="finished"&&_(),T=A,C=null,x="running",y.start()};e&&I();const O={then(F,U){return b.then(F,U)},get time(){return el(E)},set time(F){F=lu(F),E=F,C!==null||!y||h===0?C=F:A=y.now()-F/h},get duration(){const F=S.calculatedDuration===null?TI(S):S.calculatedDuration;return el(F)},get speed(){return h},set speed(F){F===h||!y||(h=F,O.time=el(E))},get state(){return x},play:I,pause:()=>{x="paused",C=E},stop:()=>{p=!0,x!=="idle"&&(x="idle",u&&u(),B())},cancel:()=>{T!==null&&P(T),B()},complete:()=>{x="finished"},sample:F=>(A=0,P(F))};return O}function wTe(e){let t;return()=>(t===void 0&&(t=e()),t)}const xTe=wTe(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),CTe=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),d0=10,ETe=2e4,TTe=(e,t)=>t.type==="spring"||e==="backgroundColor"||!lj(t.ease);function ATe(e,t,{onUpdate:n,onComplete:r,...i}){if(!(xTe()&&CTe.has(t)&&!i.repeatDelay&&i.repeatType!=="mirror"&&i.damping!==0&&i.type!=="inertia"))return!1;let s=!1,a,l;const u=()=>{l=new Promise(y=>{a=y})};u();let{keyframes:c,duration:d=300,ease:f,times:h}=i;if(TTe(t,i)){const y=z1({...i,repeat:0,delay:0});let g={done:!1,value:c[0]};const v=[];let S=0;for(;!g.done&&Sp.cancel(),b=()=>{kn.update(m),a(),u()};return p.onfinish=()=>{e.set(F5e(c,i)),r&&r(),b()},{then(y,g){return l.then(y,g)},attachTimeline(y){return p.timeline=y,p.onfinish=null,dr},get time(){return el(p.currentTime||0)},set time(y){p.currentTime=lu(y)},get speed(){return p.playbackRate},set speed(y){p.playbackRate=y},get duration(){return el(d)},play:()=>{s||(p.play(),cl(m))},pause:()=>p.pause(),stop:()=>{if(s=!0,p.playState==="idle")return;const{currentTime:y}=p;if(y){const g=z1({...i,autoplay:!1});e.setWithVelocity(g.sample(y-d0).value,g.sample(y).value,d0)}b()},complete:()=>p.finish(),cancel:b}}function kTe({keyframes:e,delay:t,onUpdate:n,onComplete:r}){const i=()=>(n&&n(e[e.length-1]),r&&r(),{time:0,speed:1,duration:0,play:dr,pause:dr,stop:dr,then:o=>(o(),Promise.resolve()),cancel:dr,complete:dr});return t?z1({keyframes:[0,1],duration:0,delay:t,onComplete:i}):i()}const PTe={type:"spring",stiffness:500,damping:25,restSpeed:10},RTe=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),ITe={type:"keyframes",duration:.8},OTe={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},MTe=(e,{keyframes:t})=>t.length>2?ITe:ad.has(e)?e.startsWith("scale")?RTe(t[1]):PTe:OTe,M3=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Cu.test(t)||t==="0")&&!t.startsWith("url(")),NTe=new Set(["brightness","contrast","saturate","opacity"]);function DTe(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(qS)||[];if(!r)return e;const i=n.replace(r,"");let o=NTe.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const LTe=/([a-z-]*)\(.*?\)/g,N3={...Cu,getAnimatableNone:e=>{const t=e.match(LTe);return t?t.map(DTe).join(" "):e}},$Te={...HU,color:Hi,backgroundColor:Hi,outlineColor:Hi,fill:Hi,stroke:Hi,borderColor:Hi,borderTopColor:Hi,borderRightColor:Hi,borderBottomColor:Hi,borderLeftColor:Hi,filter:N3,WebkitFilter:N3},S4=e=>$Te[e];function Oj(e,t){let n=S4(e);return n!==N3&&(n=Cu),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const Mj=e=>/^0[^.\s]+$/.test(e);function FTe(e){if(typeof e=="number")return e===0;if(e!==null)return e==="none"||e==="0"||Mj(e)}function BTe(e,t,n,r){const i=M3(t,n);let o;Array.isArray(n)?o=[...n]:o=[null,n];const s=r.from!==void 0?r.from:e.get();let a;const l=[];for(let u=0;ui=>{const o=Nj(r,e)||{},s=o.delay||r.delay||0;let{elapsed:a=0}=r;a=a-lu(s);const l=BTe(t,e,n,o),u=l[0],c=l[l.length-1],d=M3(e,u),f=M3(e,c);let h={keyframes:l,velocity:t.getVelocity(),ease:"easeOut",...o,delay:-a,onUpdate:p=>{t.set(p),o.onUpdate&&o.onUpdate(p)},onComplete:()=>{i(),o.onComplete&&o.onComplete()}};if(zTe(o)||(h={...h,...MTe(e,h)}),h.duration&&(h.duration=lu(h.duration)),h.repeatDelay&&(h.repeatDelay=lu(h.repeatDelay)),!d||!f||L5e.current||o.type===!1)return kTe(h);if(t.owner&&t.owner.current instanceof HTMLElement&&!t.owner.getProps().onUpdate){const p=ATe(t,e,h);if(p)return p}return z1(h)};function U1(e){return!!(_o(e)&&e.add)}const Dj=e=>/^\-?\d*\.?\d+$/.test(e);function x4(e,t){e.indexOf(t)===-1&&e.push(t)}function C4(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class E4{constructor(){this.subscriptions=[]}add(t){return x4(this.subscriptions,t),()=>C4(this.subscriptions,t)}notify(t,n,r){const i=this.subscriptions.length;if(i)if(i===1)this.subscriptions[0](t,n,r);else for(let o=0;o!isNaN(parseFloat(e));class jTe{constructor(t,n={}){this.version="10.16.1",this.timeDelta=0,this.lastUpdated=0,this.canTrackVelocity=!1,this.events={},this.updateAndNotify=(r,i=!0)=>{this.prev=this.current,this.current=r;const{delta:o,timestamp:s}=Ii;this.lastUpdated!==s&&(this.timeDelta=o,this.lastUpdated=s,kn.postRender(this.scheduleVelocityCheck)),this.prev!==this.current&&this.events.change&&this.events.change.notify(this.current),this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()),i&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.scheduleVelocityCheck=()=>kn.postRender(this.velocityCheck),this.velocityCheck=({timestamp:r})=>{r!==this.lastUpdated&&(this.prev=this.current,this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()))},this.hasAnimated=!1,this.prev=this.current=t,this.canTrackVelocity=UTe(this.current),this.owner=n.owner}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new E4);const r=this.events[t].add(n);return t==="change"?()=>{r(),kn.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}setWithVelocity(t,n,r){this.set(n),this.prev=t,this.timeDelta=r}jump(t){this.updateAndNotify(t),this.prev=t,this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){return this.canTrackVelocity?Pj(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Zf(e,t){return new jTe(e,t)}const Lj=e=>t=>t.test(e),VTe={test:e=>e==="auto",parse:e=>e},$j=[ld,rt,ma,kl,XEe,KEe,VTe],Qh=e=>$j.find(Lj(e)),GTe=[...$j,Hi,Cu],HTe=e=>GTe.find(Lj(e));function qTe(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,Zf(n))}function WTe(e,t){const n=KS(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const s in o){const a=u5e(o[s]);qTe(e,s,a)}}function KTe(e,t,n){var r,i;const o=Object.keys(t).filter(a=>!e.hasValue(a)),s=o.length;if(s)for(let a=0;al.remove(d))),u.push(m)}return s&&Promise.all(u).then(()=>{s&&WTe(e,s)}),u}function D3(e,t,n={}){const r=KS(e,t,n.custom);let{transition:i=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(i=n.transitionOverride);const o=r?()=>Promise.all(Fj(e,r,n)):()=>Promise.resolve(),s=e.variantChildren&&e.variantChildren.size?(l=0)=>{const{delayChildren:u=0,staggerChildren:c,staggerDirection:d}=i;return ZTe(e,t,u+l,c,d,n)}:()=>Promise.resolve(),{when:a}=i;if(a){const[l,u]=a==="beforeChildren"?[o,s]:[s,o];return l().then(()=>u())}else return Promise.all([o(),s(n.delay)])}function ZTe(e,t,n=0,r=0,i=1,o){const s=[],a=(e.variantChildren.size-1)*r,l=i===1?(u=0)=>u*r:(u=0)=>a-u*r;return Array.from(e.variantChildren).sort(JTe).forEach((u,c)=>{u.notify("AnimationStart",t),s.push(D3(u,t,{...o,delay:n+l(c)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(s)}function JTe(e,t){return e.sortNodePosition(t)}function e4e(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const i=t.map(o=>D3(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=D3(e,t,n);else{const i=typeof t=="function"?KS(e,t,n.custom):t;r=Promise.all(Fj(e,i,n))}return r.then(()=>e.notify("AnimationComplete",t))}const t4e=[...s4].reverse(),n4e=s4.length;function r4e(e){return t=>Promise.all(t.map(({animation:n,options:r})=>e4e(e,n,r)))}function i4e(e){let t=r4e(e);const n=s4e();let r=!0;const i=(l,u)=>{const c=KS(e,u);if(c){const{transition:d,transitionEnd:f,...h}=c;l={...l,...h,...f}}return l};function o(l){t=l(e)}function s(l,u){const c=e.getProps(),d=e.getVariantContext(!0)||{},f=[],h=new Set;let p={},m=1/0;for(let _=0;_m&&S;const T=Array.isArray(v)?v:[v];let k=T.reduce(i,{});w===!1&&(k={});const{prevResolvedValues:L={}}=g,N={...L,...k},E=P=>{A=!0,h.delete(P),g.needsAnimating[P]=!0};for(const P in N){const D=k[P],B=L[P];p.hasOwnProperty(P)||(D!==B?$1(D)&&$1(B)?!sj(D,B)||C?E(P):g.protectedKeys[P]=!0:D!==void 0?E(P):h.add(P):D!==void 0&&h.has(P)?E(P):g.protectedKeys[P]=!0)}g.prevProp=v,g.prevResolvedValues=k,g.isActive&&(p={...p,...k}),r&&e.blockInitialAnimation&&(A=!1),A&&!x&&f.push(...T.map(P=>({animation:P,options:{type:y,...l}})))}if(h.size){const _={};h.forEach(y=>{const g=e.getBaseTarget(y);g!==void 0&&(_[y]=g)}),f.push({animation:_})}let b=!!f.length;return r&&c.initial===!1&&!e.manuallyAnimateOnMount&&(b=!1),r=!1,b?t(f):Promise.resolve()}function a(l,u,c){var d;if(n[l].isActive===u)return Promise.resolve();(d=e.variantChildren)===null||d===void 0||d.forEach(h=>{var p;return(p=h.animationState)===null||p===void 0?void 0:p.setActive(l,u)}),n[l].isActive=u;const f=s(c,l);for(const h in n)n[h].protectedKeys={};return f}return{animateChanges:s,setActive:a,setAnimateFunction:o,getState:()=>n}}function o4e(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!sj(t,e):!1}function Xu(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function s4e(){return{animate:Xu(!0),whileInView:Xu(),whileHover:Xu(),whileTap:Xu(),whileDrag:Xu(),whileFocus:Xu(),exit:Xu()}}class a4e extends Uu{constructor(t){super(t),t.animationState||(t.animationState=i4e(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();this.unmount(),GS(t)&&(this.unmount=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){}}let l4e=0;class u4e extends Uu{constructor(){super(...arguments),this.id=l4e++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n,custom:r}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;const o=this.node.animationState.setActive("exit",!t,{custom:r??this.node.getProps().custom});n&&!t&&o.then(()=>n(this.id))}mount(){const{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}const c4e={animation:{Feature:a4e},exit:{Feature:u4e}},AI=(e,t)=>Math.abs(e-t);function d4e(e,t){const n=AI(e.x,t.x),r=AI(e.y,t.y);return Math.sqrt(n**2+r**2)}class Bj{constructor(t,n,{transformPagePoint:r}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const u=Xw(this.lastMoveEventInfo,this.history),c=this.startEvent!==null,d=d4e(u.offset,{x:0,y:0})>=3;if(!c&&!d)return;const{point:f}=u,{timestamp:h}=Ii;this.history.push({...f,timestamp:h});const{onStart:p,onMove:m}=this.handlers;c||(p&&p(this.lastMoveEvent,u),this.startEvent=this.lastMoveEvent),m&&m(this.lastMoveEvent,u)},this.handlePointerMove=(u,c)=>{this.lastMoveEvent=u,this.lastMoveEventInfo=Kw(c,this.transformPagePoint),kn.update(this.updatePoint,!0)},this.handlePointerUp=(u,c)=>{if(this.end(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const{onEnd:d,onSessionEnd:f}=this.handlers,h=Xw(u.type==="pointercancel"?this.lastMoveEventInfo:Kw(c,this.transformPagePoint),this.history);this.startEvent&&d&&d(u,h),f&&f(u,h)},!tj(t))return;this.handlers=n,this.transformPagePoint=r;const i=WS(t),o=Kw(i,this.transformPagePoint),{point:s}=o,{timestamp:a}=Ii;this.history=[{...s,timestamp:a}];const{onSessionStart:l}=n;l&&l(t,Xw(o,this.history)),this.removeListeners=au(Ja(window,"pointermove",this.handlePointerMove),Ja(window,"pointerup",this.handlePointerUp),Ja(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),cl(this.updatePoint)}}function Kw(e,t){return t?{point:t(e.point)}:e}function kI(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Xw({point:e},t){return{point:e,delta:kI(e,zj(t)),offset:kI(e,f4e(t)),velocity:h4e(t,.1)}}function f4e(e){return e[0]}function zj(e){return e[e.length-1]}function h4e(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=zj(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>lu(t)));)n--;if(!r)return{x:0,y:0};const o=el(i.timestamp-r.timestamp);if(o===0)return{x:0,y:0};const s={x:(i.x-r.x)/o,y:(i.y-r.y)/o};return s.x===1/0&&(s.x=0),s.y===1/0&&(s.y=0),s}function Lo(e){return e.max-e.min}function L3(e,t=0,n=.01){return Math.abs(e-t)<=n}function PI(e,t,n,r=.5){e.origin=r,e.originPoint=rr(t.min,t.max,e.origin),e.scale=Lo(n)/Lo(t),(L3(e.scale,1,1e-4)||isNaN(e.scale))&&(e.scale=1),e.translate=rr(n.min,n.max,e.origin)-e.originPoint,(L3(e.translate)||isNaN(e.translate))&&(e.translate=0)}function Pp(e,t,n,r){PI(e.x,t.x,n.x,r?r.originX:void 0),PI(e.y,t.y,n.y,r?r.originY:void 0)}function RI(e,t,n){e.min=n.min+t.min,e.max=e.min+Lo(t)}function p4e(e,t,n){RI(e.x,t.x,n.x),RI(e.y,t.y,n.y)}function II(e,t,n){e.min=t.min-n.min,e.max=e.min+Lo(t)}function Rp(e,t,n){II(e.x,t.x,n.x),II(e.y,t.y,n.y)}function g4e(e,{min:t,max:n},r){return t!==void 0&&en&&(e=r?rr(n,e,r.max):Math.min(e,n)),e}function OI(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function m4e(e,{top:t,left:n,bottom:r,right:i}){return{x:OI(e.x,n,i),y:OI(e.y,t,r)}}function MI(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=Zg(t.min,t.max-r,e.min):r>i&&(n=Zg(e.min,e.max-i,t.min)),xu(0,1,n)}function _4e(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const $3=.35;function b4e(e=$3){return e===!1?e=0:e===!0&&(e=$3),{x:NI(e,"left","right"),y:NI(e,"top","bottom")}}function NI(e,t,n){return{min:DI(e,t),max:DI(e,n)}}function DI(e,t){return typeof e=="number"?e:e[t]||0}const LI=()=>({translate:0,scale:1,origin:0,originPoint:0}),Qd=()=>({x:LI(),y:LI()}),$I=()=>({min:0,max:0}),Ar=()=>({x:$I(),y:$I()});function Qs(e){return[e("x"),e("y")]}function Uj({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function S4e({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function w4e(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),r=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:r.y,right:r.x}}function Qw(e){return e===void 0||e===1}function F3({scale:e,scaleX:t,scaleY:n}){return!Qw(e)||!Qw(t)||!Qw(n)}function tc(e){return F3(e)||jj(e)||e.z||e.rotate||e.rotateX||e.rotateY}function jj(e){return FI(e.x)||FI(e.y)}function FI(e){return e&&e!=="0%"}function j1(e,t,n){const r=e-n,i=t*r;return n+i}function BI(e,t,n,r,i){return i!==void 0&&(e=j1(e,i,r)),j1(e,n,r)+t}function B3(e,t=0,n=1,r,i){e.min=BI(e.min,t,n,r,i),e.max=BI(e.max,t,n,r,i)}function Vj(e,{x:t,y:n}){B3(e.x,t.translate,t.scale,t.originPoint),B3(e.y,n.translate,n.scale,n.originPoint)}function x4e(e,t,n,r=!1){const i=n.length;if(!i)return;t.x=t.y=1;let o,s;for(let a=0;a1.0000000000001||e<.999999999999?e:1}function Ml(e,t){e.min=e.min+t,e.max=e.max+t}function UI(e,t,[n,r,i]){const o=t[i]!==void 0?t[i]:.5,s=rr(e.min,e.max,o);B3(e,t[n],t[r],s,t.scale)}const C4e=["x","scaleX","originX"],E4e=["y","scaleY","originY"];function Yd(e,t){UI(e.x,t,C4e),UI(e.y,t,E4e)}function Gj(e,t){return Uj(w4e(e.getBoundingClientRect(),t))}function T4e(e,t,n){const r=Gj(e,n),{scroll:i}=t;return i&&(Ml(r.x,i.offset.x),Ml(r.y,i.offset.y)),r}const A4e=new WeakMap;class k4e{constructor(t){this.openGlobalLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Ar(),this.visualElement=t}start(t,{snapToCursor:n=!1}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const i=l=>{this.stopAnimation(),n&&this.snapToCursor(WS(l,"page").point)},o=(l,u)=>{const{drag:c,dragPropagation:d,onDragStart:f}=this.getProps();if(c&&!d&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=rj(c),!this.openGlobalLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Qs(p=>{let m=this.getAxisMotionValue(p).get()||0;if(ma.test(m)){const{projection:b}=this.visualElement;if(b&&b.layout){const _=b.layout.layoutBox[p];_&&(m=Lo(_)*(parseFloat(m)/100))}}this.originPoint[p]=m}),f&&kn.update(()=>f(l,u),!1,!0);const{animationState:h}=this.visualElement;h&&h.setActive("whileDrag",!0)},s=(l,u)=>{const{dragPropagation:c,dragDirectionLock:d,onDirectionLock:f,onDrag:h}=this.getProps();if(!c&&!this.openGlobalLock)return;const{offset:p}=u;if(d&&this.currentDirection===null){this.currentDirection=P4e(p),this.currentDirection!==null&&f&&f(this.currentDirection);return}this.updateAxis("x",u.point,p),this.updateAxis("y",u.point,p),this.visualElement.render(),h&&h(l,u)},a=(l,u)=>this.stop(l,u);this.panSession=new Bj(t,{onSessionStart:i,onStart:o,onMove:s,onSessionEnd:a},{transformPagePoint:this.visualElement.getTransformPagePoint()})}stop(t,n){const r=this.isDragging;if(this.cancel(),!r)return;const{velocity:i}=n;this.startAnimation(i);const{onDragEnd:o}=this.getProps();o&&kn.update(()=>o(t,n))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:r}=this.getProps();!r&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(t,n,r){const{drag:i}=this.getProps();if(!r||!f0(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let s=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(s=g4e(s,this.constraints[t],this.elastic[t])),o.set(s)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),{layout:r}=this.visualElement.projection||{},i=this.constraints;t&&Kd(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=m4e(r.layoutBox,t):this.constraints=!1,this.elastic=b4e(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&Qs(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=_4e(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Kd(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=T4e(r,i.root,this.visualElement.getTransformPagePoint());let s=y4e(i.layout.layoutBox,o);if(n){const a=n(S4e(s));this.hasMutatedConstraints=!!a,a&&(s=Uj(a))}return s}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:s,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},u=Qs(c=>{if(!f0(c,n,this.currentDirection))return;let d=l&&l[c]||{};s&&(d={min:0,max:0});const f=i?200:1e6,h=i?40:1e7,p={type:"inertia",velocity:r?t[c]:0,bounceStiffness:f,bounceDamping:h,timeConstant:750,restDelta:1,restSpeed:10,...o,...d};return this.startAxisValueAnimation(c,p)});return Promise.all(u).then(a)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return r.start(w4(t,r,0,n))}stopAnimation(){Qs(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n="_drag"+t.toUpperCase(),r=this.visualElement.getProps(),i=r[n];return i||this.visualElement.getValue(t,(r.initial?r.initial[t]:void 0)||0)}snapToCursor(t){Qs(n=>{const{drag:r}=this.getProps();if(!f0(n,r,this.currentDirection))return;const{projection:i}=this.visualElement,o=this.getAxisMotionValue(n);if(i&&i.layout){const{min:s,max:a}=i.layout.layoutBox[n];o.set(t[n]-rr(s,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!Kd(n)||!r||!this.constraints)return;this.stopAnimation();const i={x:0,y:0};Qs(s=>{const a=this.getAxisMotionValue(s);if(a){const l=a.get();i[s]=v4e({min:l,max:l},this.constraints[s])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.resolveConstraints(),Qs(s=>{if(!f0(s,t,null))return;const a=this.getAxisMotionValue(s),{min:l,max:u}=this.constraints[s];a.set(rr(l,u,i[s]))})}addListeners(){if(!this.visualElement.current)return;A4e.set(this.visualElement,this);const t=this.visualElement.current,n=Ja(t,"pointerdown",l=>{const{drag:u,dragListener:c=!0}=this.getProps();u&&c&&this.start(l)}),r=()=>{const{dragConstraints:l}=this.getProps();Kd(l)&&(this.constraints=this.resolveRefConstraints())},{projection:i}=this.visualElement,o=i.addEventListener("measure",r);i&&!i.layout&&(i.root&&i.root.updateScroll(),i.updateLayout()),r();const s=Ka(window,"resize",()=>this.scalePositionWithinConstraints()),a=i.addEventListener("didUpdate",({delta:l,hasLayoutChanged:u})=>{this.isDragging&&u&&(Qs(c=>{const d=this.getAxisMotionValue(c);d&&(this.originPoint[c]+=l[c].translate,d.set(d.get()+l[c].translate))}),this.visualElement.render())});return()=>{s(),n(),o(),a&&a()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:i=!1,dragConstraints:o=!1,dragElastic:s=$3,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:s,dragMomentum:a}}}function f0(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function P4e(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class R4e extends Uu{constructor(t){super(t),this.removeGroupControls=dr,this.removeListeners=dr,this.controls=new k4e(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||dr}unmount(){this.removeGroupControls(),this.removeListeners()}}const jI=e=>(t,n)=>{e&&kn.update(()=>e(t,n))};class I4e extends Uu{constructor(){super(...arguments),this.removePointerDownListener=dr}onPointerDown(t){this.session=new Bj(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint()})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:i}=this.node.getProps();return{onSessionStart:jI(t),onStart:jI(n),onMove:r,onEnd:(o,s)=>{delete this.session,i&&kn.update(()=>i(o,s))}}}mount(){this.removePointerDownListener=Ja(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}function O4e(){const e=M.useContext(Hm);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=M.useId();return M.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function YMe(){return M4e(M.useContext(Hm))}function M4e(e){return e===null?!0:e.isPresent}const Z0={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function VI(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const Yh={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(rt.test(e))e=parseFloat(e);else return e;const n=VI(e,t.target.x),r=VI(e,t.target.y);return`${n}% ${r}%`}},N4e={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=Cu.parse(e);if(i.length>5)return r;const o=Cu.createTransformer(e),s=typeof i[0]!="number"?1:0,a=n.x.scale*t.x,l=n.y.scale*t.y;i[0+s]/=a,i[1+s]/=l;const u=rr(a,l,.5);return typeof i[2+s]=="number"&&(i[2+s]/=u),typeof i[3+s]=="number"&&(i[3+s]/=u),o(i)}};class D4e extends vn.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;UEe(L4e),o&&(n.group&&n.group.add(o),r&&r.register&&i&&r.register(o),o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,onExitComplete:()=>this.safeToRemove()})),Z0.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:i,isPresent:o}=this.props,s=r.projection;return s&&(s.isPresent=o,i||t.layoutDependency!==n||n===void 0?s.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?s.promote():s.relegate()||kn.postRender(()=>{const a=s.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),queueMicrotask(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:i}=t;i&&(i.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(i),r&&r.deregister&&r.deregister(i))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function Hj(e){const[t,n]=O4e(),r=M.useContext(l4);return vn.createElement(D4e,{...e,layoutGroup:r,switchLayoutGroup:M.useContext(zU),isPresent:t,safeToRemove:n})}const L4e={borderRadius:{...Yh,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Yh,borderTopRightRadius:Yh,borderBottomLeftRadius:Yh,borderBottomRightRadius:Yh,boxShadow:N4e},qj=["TopLeft","TopRight","BottomLeft","BottomRight"],$4e=qj.length,GI=e=>typeof e=="string"?parseFloat(e):e,HI=e=>typeof e=="number"||rt.test(e);function F4e(e,t,n,r,i,o){i?(e.opacity=rr(0,n.opacity!==void 0?n.opacity:1,B4e(r)),e.opacityExit=rr(t.opacity!==void 0?t.opacity:1,0,z4e(r))):o&&(e.opacity=rr(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,r));for(let s=0;s<$4e;s++){const a=`border${qj[s]}Radius`;let l=qI(t,a),u=qI(n,a);if(l===void 0&&u===void 0)continue;l||(l=0),u||(u=0),l===0||u===0||HI(l)===HI(u)?(e[a]=Math.max(rr(GI(l),GI(u),r),0),(ma.test(u)||ma.test(l))&&(e[a]+="%")):e[a]=u}(t.rotate||n.rotate)&&(e.rotate=rr(t.rotate||0,n.rotate||0,r))}function qI(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const B4e=Wj(0,.5,v4),z4e=Wj(.5,.95,dr);function Wj(e,t,n){return r=>rt?1:n(Zg(e,t,r))}function WI(e,t){e.min=t.min,e.max=t.max}function Go(e,t){WI(e.x,t.x),WI(e.y,t.y)}function KI(e,t,n,r,i){return e-=t,e=j1(e,1/n,r),i!==void 0&&(e=j1(e,1/i,r)),e}function U4e(e,t=0,n=1,r=.5,i,o=e,s=e){if(ma.test(t)&&(t=parseFloat(t),t=rr(s.min,s.max,t/100)-s.min),typeof t!="number")return;let a=rr(o.min,o.max,r);e===o&&(a-=t),e.min=KI(e.min,t,n,a,i),e.max=KI(e.max,t,n,a,i)}function XI(e,t,[n,r,i],o,s){U4e(e,t[n],t[r],t[i],t.scale,o,s)}const j4e=["x","scaleX","originX"],V4e=["y","scaleY","originY"];function QI(e,t,n,r){XI(e.x,t,j4e,n?n.x:void 0,r?r.x:void 0),XI(e.y,t,V4e,n?n.y:void 0,r?r.y:void 0)}function YI(e){return e.translate===0&&e.scale===1}function Kj(e){return YI(e.x)&&YI(e.y)}function G4e(e,t){return e.x.min===t.x.min&&e.x.max===t.x.max&&e.y.min===t.y.min&&e.y.max===t.y.max}function Xj(e,t){return Math.round(e.x.min)===Math.round(t.x.min)&&Math.round(e.x.max)===Math.round(t.x.max)&&Math.round(e.y.min)===Math.round(t.y.min)&&Math.round(e.y.max)===Math.round(t.y.max)}function ZI(e){return Lo(e.x)/Lo(e.y)}class H4e{constructor(){this.members=[]}add(t){x4(this.members,t),t.scheduleRender()}remove(t){if(C4(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(i=>t===i);if(n===0)return!1;let r;for(let i=n;i>=0;i--){const o=this.members[i];if(o.isPresent!==!1){r=o;break}}return r?(this.promote(r),!0):!1}promote(t,n){const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,t.show(),r)){r.instance&&r.scheduleRender(),t.scheduleRender(),t.resumeFrom=r,n&&(t.resumeFrom.preserveOpacity=!0),r.snapshot&&(t.snapshot=r.snapshot,t.snapshot.latestValues=r.animationValues||r.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:i}=t.options;i===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:r}=t;n.onExitComplete&&n.onExitComplete(),r&&r.options.onExitComplete&&r.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function JI(e,t,n){let r="";const i=e.x.translate/t.x,o=e.y.translate/t.y;if((i||o)&&(r=`translate3d(${i}px, ${o}px, 0) `),(t.x!==1||t.y!==1)&&(r+=`scale(${1/t.x}, ${1/t.y}) `),n){const{rotate:l,rotateX:u,rotateY:c}=n;l&&(r+=`rotate(${l}deg) `),u&&(r+=`rotateX(${u}deg) `),c&&(r+=`rotateY(${c}deg) `)}const s=e.x.scale*t.x,a=e.y.scale*t.y;return(s!==1||a!==1)&&(r+=`scale(${s}, ${a})`),r||"none"}const q4e=(e,t)=>e.depth-t.depth;class W4e{constructor(){this.children=[],this.isDirty=!1}add(t){x4(this.children,t),this.isDirty=!0}remove(t){C4(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(q4e),this.isDirty=!1,this.children.forEach(t)}}function K4e(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(cl(r),e(o-t))};return kn.read(r,!0),()=>cl(r)}function X4e(e){window.MotionDebug&&window.MotionDebug.record(e)}function Q4e(e){return e instanceof SVGElement&&e.tagName!=="svg"}function Y4e(e,t,n){const r=_o(e)?e:Zf(e);return r.start(w4("",r,t,n)),r.animation}const eO=["","X","Y","Z"],tO=1e3;let Z4e=0;const nc={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function Qj({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(s={},a=t==null?void 0:t()){this.id=Z4e++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{nc.totalNodes=nc.resolvedTargetDeltas=nc.recalculatedProjection=0,this.nodes.forEach(tAe),this.nodes.forEach(sAe),this.nodes.forEach(aAe),this.nodes.forEach(nAe),X4e(nc)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=s,this.root=a?a.root||a:this,this.path=a?[...a.path,a]:[],this.parent=a,this.depth=a?a.depth+1:0;for(let l=0;lthis.root.updateBlockedByResize=!1;e(s,()=>{this.root.updateBlockedByResize=!0,d&&d(),d=K4e(f,250),Z0.hasAnimatedSinceResize&&(Z0.hasAnimatedSinceResize=!1,this.nodes.forEach(rO))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&c&&(l||u)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:f,hasRelativeTargetChanged:h,layout:p})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const m=this.options.transition||c.getDefaultTransition()||fAe,{onLayoutAnimationStart:b,onLayoutAnimationComplete:_}=c.getProps(),y=!this.targetLayout||!Xj(this.targetLayout,p)||h,g=!f&&h;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||g||f&&(y||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(d,g);const v={...Nj(m,"layout"),onPlay:b,onComplete:_};(c.shouldReduceMotion||this.options.layoutRoot)&&(v.delay=0,v.type=!1),this.startAnimation(v)}else f||rO(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=p})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const s=this.getStack();s&&s.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,cl(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(lAe),this.animationId++)}getTransformTemplate(){const{visualElement:s}=this.options;return s&&s.getProps().transformTemplate}willUpdate(s=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let c=0;cthis.update()))}clearAllSnapshots(){this.nodes.forEach(rAe),this.sharedNodes.forEach(uAe)}scheduleUpdateProjection(){kn.preRender(this.updateProjection,!1,!0)}scheduleCheckAfterUnmount(){kn.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let l=0;l{const S=v/1e3;iO(d.x,s.x,S),iO(d.y,s.y,S),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Rp(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox),cAe(this.relativeTarget,this.relativeTargetOrigin,f,S),g&&G4e(this.relativeTarget,g)&&(this.isProjectionDirty=!1),g||(g=Ar()),Go(g,this.relativeTarget)),m&&(this.animationValues=c,F4e(c,u,this.latestValues,S,y,_)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(s){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(cl(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=kn.update(()=>{Z0.hasAnimatedSinceResize=!0,this.currentAnimation=Y4e(0,tO,{...s,onUpdate:a=>{this.mixTargetDelta(a),s.onUpdate&&s.onUpdate(a)},onComplete:()=>{s.onComplete&&s.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const s=this.getStack();s&&s.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(tO),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const s=this.getLead();let{targetWithTransforms:a,target:l,layout:u,latestValues:c}=s;if(!(!a||!l||!u)){if(this!==s&&this.layout&&u&&Yj(this.options.animationType,this.layout.layoutBox,u.layoutBox)){l=this.target||Ar();const d=Lo(this.layout.layoutBox.x);l.x.min=s.target.x.min,l.x.max=l.x.min+d;const f=Lo(this.layout.layoutBox.y);l.y.min=s.target.y.min,l.y.max=l.y.min+f}Go(a,l),Yd(a,c),Pp(this.projectionDeltaWithTransform,this.layoutCorrected,a,c)}}registerSharedNode(s,a){this.sharedNodes.has(s)||this.sharedNodes.set(s,new H4e),this.sharedNodes.get(s).add(a);const u=a.options.initialPromotionConfig;a.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(a):void 0})}isLead(){const s=this.getStack();return s?s.lead===this:!0}getLead(){var s;const{layoutId:a}=this.options;return a?((s=this.getStack())===null||s===void 0?void 0:s.lead)||this:this}getPrevLead(){var s;const{layoutId:a}=this.options;return a?(s=this.getStack())===null||s===void 0?void 0:s.prevLead:void 0}getStack(){const{layoutId:s}=this.options;if(s)return this.root.sharedNodes.get(s)}promote({needsReset:s,transition:a,preserveFollowOpacity:l}={}){const u=this.getStack();u&&u.promote(this,l),s&&(this.projectionDelta=void 0,this.needsReset=!0),a&&this.setOptions({transition:a})}relegate(){const s=this.getStack();return s?s.relegate(this):!1}resetRotation(){const{visualElement:s}=this.options;if(!s)return;let a=!1;const{latestValues:l}=s;if((l.rotate||l.rotateX||l.rotateY||l.rotateZ)&&(a=!0),!a)return;const u={};for(let c=0;c{var a;return(a=s.currentAnimation)===null||a===void 0?void 0:a.stop()}),this.root.nodes.forEach(nO),this.root.sharedNodes.clear()}}}function J4e(e){e.updateLayout()}function eAe(e){var t;const n=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&n&&e.hasListeners("didUpdate")){const{layoutBox:r,measuredBox:i}=e.layout,{animationType:o}=e.options,s=n.source!==e.layout.source;o==="size"?Qs(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Lo(f);f.min=r[d].min,f.max=f.min+h}):Yj(o,n.layoutBox,r)&&Qs(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Lo(r[d]);f.max=f.min+h,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[d].max=e.relativeTarget[d].min+h)});const a=Qd();Pp(a,r,n.layoutBox);const l=Qd();s?Pp(l,e.applyTransform(i,!0),n.measuredBox):Pp(l,r,n.layoutBox);const u=!Kj(a);let c=!1;if(!e.resumeFrom){const d=e.getClosestProjectingParent();if(d&&!d.resumeFrom){const{snapshot:f,layout:h}=d;if(f&&h){const p=Ar();Rp(p,n.layoutBox,f.layoutBox);const m=Ar();Rp(m,r,h.layoutBox),Xj(p,m)||(c=!0),d.options.layoutRoot&&(e.relativeTarget=m,e.relativeTargetOrigin=p,e.relativeParent=d)}}}e.notifyListeners("didUpdate",{layout:r,snapshot:n,delta:l,layoutDelta:a,hasLayoutChanged:u,hasRelativeTargetChanged:c})}else if(e.isLead()){const{onExitComplete:r}=e.options;r&&r()}e.options.transition=void 0}function tAe(e){nc.totalNodes++,e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function nAe(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function rAe(e){e.clearSnapshot()}function nO(e){e.clearMeasurements()}function iAe(e){e.isLayoutDirty=!1}function oAe(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function rO(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function sAe(e){e.resolveTargetDelta()}function aAe(e){e.calcProjection()}function lAe(e){e.resetRotation()}function uAe(e){e.removeLeadSnapshot()}function iO(e,t,n){e.translate=rr(t.translate,0,n),e.scale=rr(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function oO(e,t,n,r){e.min=rr(t.min,n.min,r),e.max=rr(t.max,n.max,r)}function cAe(e,t,n,r){oO(e.x,t.x,n.x,r),oO(e.y,t.y,n.y,r)}function dAe(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const fAe={duration:.45,ease:[.4,0,.1,1]},sO=e=>typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes(e),aO=sO("applewebkit/")&&!sO("chrome/")?Math.round:dr;function lO(e){e.min=aO(e.min),e.max=aO(e.max)}function hAe(e){lO(e.x),lO(e.y)}function Yj(e,t,n){return e==="position"||e==="preserve-aspect"&&!L3(ZI(t),ZI(n),.2)}const pAe=Qj({attachResizeListener:(e,t)=>Ka(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Yw={current:void 0},Zj=Qj({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!Yw.current){const e=new pAe({});e.mount(window),e.setOptions({layoutScroll:!0}),Yw.current=e}return Yw.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),gAe={pan:{Feature:I4e},drag:{Feature:R4e,ProjectionNode:Zj,MeasureLayout:Hj}},mAe=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function yAe(e){const t=mAe.exec(e);if(!t)return[,];const[,n,r]=t;return[n,r]}function z3(e,t,n=1){const[r,i]=yAe(e);if(!r)return;const o=window.getComputedStyle(t).getPropertyValue(r);if(o){const s=o.trim();return Dj(s)?parseFloat(s):s}else return P3(i)?z3(i,t,n+1):i}function vAe(e,{...t},n){const r=e.current;if(!(r instanceof Element))return{target:t,transitionEnd:n};n&&(n={...n}),e.values.forEach(i=>{const o=i.get();if(!P3(o))return;const s=z3(o,r);s&&i.set(s)});for(const i in t){const o=t[i];if(!P3(o))continue;const s=z3(o,r);s&&(t[i]=s,n||(n={}),n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const _Ae=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),Jj=e=>_Ae.has(e),bAe=e=>Object.keys(e).some(Jj),uO=e=>e===ld||e===rt,cO=(e,t)=>parseFloat(e.split(", ")[t]),dO=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return cO(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?cO(o[1],e):0}},SAe=new Set(["x","y","z"]),wAe=qm.filter(e=>!SAe.has(e));function xAe(e){const t=[];return wAe.forEach(n=>{const r=e.getValue(n);r!==void 0&&(t.push([n,r.get()]),r.set(n.startsWith("scale")?1:0))}),t.length&&e.render(),t}const Jf={width:({x:e},{paddingLeft:t="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),height:({y:e},{paddingTop:t="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:dO(4,13),y:dO(5,14)};Jf.translateX=Jf.x;Jf.translateY=Jf.y;const CAe=(e,t,n)=>{const r=t.measureViewportBox(),i=t.current,o=getComputedStyle(i),{display:s}=o,a={};s==="none"&&t.setStaticValue("display",e.display||"block"),n.forEach(u=>{a[u]=Jf[u](r,o)}),t.render();const l=t.measureViewportBox();return n.forEach(u=>{const c=t.getValue(u);c&&c.jump(a[u]),e[u]=Jf[u](l,o)}),e},EAe=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(Jj);let o=[],s=!1;const a=[];if(i.forEach(l=>{const u=e.getValue(l);if(!e.hasValue(l))return;let c=n[l],d=Qh(c);const f=t[l];let h;if($1(f)){const p=f.length,m=f[0]===null?1:0;c=f[m],d=Qh(c);for(let b=m;b=0?window.pageYOffset:null,u=CAe(t,e,a);return o.length&&o.forEach(([c,d])=>{e.getValue(c).set(d)}),e.render(),VS&&l!==null&&window.scrollTo({top:l}),{target:u,transitionEnd:r}}else return{target:t,transitionEnd:r}};function TAe(e,t,n,r){return bAe(t)?EAe(e,t,n,r):{target:t,transitionEnd:r}}const AAe=(e,t,n,r)=>{const i=vAe(e,t,r);return t=i.target,r=i.transitionEnd,TAe(e,t,n,r)},U3={current:null},eV={current:!1};function kAe(){if(eV.current=!0,!!VS)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>U3.current=e.matches;e.addListener(t),t()}else U3.current=!1}function PAe(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],s=n[i];if(_o(o))e.addValue(i,o),U1(r)&&r.add(i);else if(_o(s))e.addValue(i,Zf(o,{owner:e})),U1(r)&&r.remove(i);else if(s!==o)if(e.hasValue(i)){const a=e.getValue(i);!a.hasAnimated&&a.set(o)}else{const a=e.getStaticValue(i);e.addValue(i,Zf(a!==void 0?a:o,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const fO=new WeakMap,tV=Object.keys(Yg),RAe=tV.length,hO=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],IAe=a4.length;class OAe{constructor({parent:t,props:n,presenceContext:r,reducedMotionConfig:i,visualState:o},s={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.scheduleRender=()=>kn.render(this.render,!1,!0);const{latestValues:a,renderState:l}=o;this.latestValues=a,this.baseTarget={...a},this.initialValues=n.initial?{...a}:{},this.renderState=l,this.parent=t,this.props=n,this.presenceContext=r,this.depth=t?t.depth+1:0,this.reducedMotionConfig=i,this.options=s,this.isControllingVariants=HS(n),this.isVariantNode=BU(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:u,...c}=this.scrapeMotionValuesFromProps(n,{});for(const d in c){const f=c[d];a[d]!==void 0&&_o(f)&&(f.set(a[d],!1),U1(u)&&u.add(d))}}scrapeMotionValuesFromProps(t,n){return{}}mount(t){this.current=t,fO.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,r)=>this.bindToMotionValue(r,n)),eV.current||kAe(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:U3.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){fO.delete(this.current),this.projection&&this.projection.unmount(),cl(this.notifyUpdate),cl(this.render),this.valueSubscriptions.forEach(t=>t()),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const t in this.events)this.events[t].clear();for(const t in this.features)this.features[t].unmount();this.current=null}bindToMotionValue(t,n){const r=ad.has(t),i=n.on("change",s=>{this.latestValues[t]=s,this.props.onUpdate&&kn.update(this.notifyUpdate,!1,!0),r&&this.projection&&(this.projection.isTransformDirty=!0)}),o=n.on("renderRequest",this.scheduleRender);this.valueSubscriptions.set(t,()=>{i(),o()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}loadFeatures({children:t,...n},r,i,o){let s,a;for(let l=0;lthis.scheduleRender(),animationType:typeof u=="string"?u:"both",initialPromotionConfig:o,layoutScroll:f,layoutRoot:h})}return a}updateFeatures(){for(const t in this.features){const n=this.features[t];n.isMounted?n.update():(n.mount(),n.isMounted=!0)}}triggerBuild(){this.build(this.renderState,this.latestValues,this.options,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Ar()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}makeTargetAnimatable(t,n=!0){return this.makeTargetAnimatableFromInstance(t,this.props,n)}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let r=0;rn.variantChildren.delete(t)}addValue(t,n){n!==this.values.get(t)&&(this.removeValue(t),this.bindToMotionValue(t,n)),this.values.set(t,n),this.latestValues[t]=n.get()}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let r=this.values.get(t);return r===void 0&&n!==void 0&&(r=Zf(n,{owner:this}),this.addValue(t,r)),r}readValue(t){var n;return this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(n=this.getBaseTargetFromProps(this.props,t))!==null&&n!==void 0?n:this.readValueFromInstance(this.current,t,this.options)}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var n;const{initial:r}=this.props,i=typeof r=="string"||typeof r=="object"?(n=m4(this.props,r))===null||n===void 0?void 0:n[t]:void 0;if(r&&i!==void 0)return i;const o=this.getBaseTargetFromProps(this.props,t);return o!==void 0&&!_o(o)?o:this.initialValues[t]!==void 0&&i===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new E4),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class nV extends OAe{sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){return t.style?t.style[n]:void 0}removeValueFromRenderState(t,{vars:n,style:r}){delete n[t],delete r[t]}makeTargetAnimatableFromInstance({transition:t,transitionEnd:n,...r},{transformValues:i},o){let s=QTe(r,t||{},this);if(i&&(n&&(n=i(n)),r&&(r=i(r)),s&&(s=i(s))),o){KTe(this,r,s);const a=AAe(this,r,s,n);n=a.transitionEnd,r=a.target}return{transition:t,transitionEnd:n,...r}}}function MAe(e){return window.getComputedStyle(e)}class NAe extends nV{readValueFromInstance(t,n){if(ad.has(n)){const r=S4(n);return r&&r.default||0}else{const r=MAe(t),i=(VU(n)?r.getPropertyValue(n):r[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return Gj(t,n)}build(t,n,r,i){c4(t,n,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,n){return g4(t,n)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;_o(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}renderInstance(t,n,r,i){XU(t,n,r,i)}}class DAe extends nV{constructor(){super(...arguments),this.isSVGTag=!1}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(ad.has(n)){const r=S4(n);return r&&r.default||0}return n=QU.has(n)?n:p4(n),t.getAttribute(n)}measureInstanceViewportBox(){return Ar()}scrapeMotionValuesFromProps(t,n){return ZU(t,n)}build(t,n,r,i){f4(t,n,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,r,i){YU(t,n,r,i)}mount(t){this.isSVGTag=h4(t.tagName),super.mount(t)}}const LAe=(e,t)=>u4(e)?new DAe(t,{enableHardwareAcceleration:!1}):new NAe(t,{enableHardwareAcceleration:!0}),$Ae={layout:{ProjectionNode:Zj,MeasureLayout:Hj}},FAe={...c4e,...R5e,...gAe,...$Ae},BAe=BEe((e,t)=>y5e(e,t,FAe,LAe));function rV(){const e=M.useRef(!1);return o4(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function zAe(){const e=rV(),[t,n]=M.useState(0),r=M.useCallback(()=>{e.current&&n(t+1)},[t]);return[M.useCallback(()=>kn.postRender(r),[r]),t]}class UAe extends M.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const r=this.props.sizeRef.current;r.height=n.offsetHeight||0,r.width=n.offsetWidth||0,r.top=n.offsetTop,r.left=n.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function jAe({children:e,isPresent:t}){const n=M.useId(),r=M.useRef(null),i=M.useRef({width:0,height:0,top:0,left:0});return M.useInsertionEffect(()=>{const{width:o,height:s,top:a,left:l}=i.current;if(t||!r.current||!o||!s)return;r.current.dataset.motionPopId=n;const u=document.createElement("style");return document.head.appendChild(u),u.sheet&&u.sheet.insertRule(` + [data-motion-pop-id="${n}"] { + position: absolute !important; + width: ${o}px !important; + height: ${s}px !important; + top: ${a}px !important; + left: ${l}px !important; + } + `),()=>{document.head.removeChild(u)}},[t]),M.createElement(UAe,{isPresent:t,childRef:r,sizeRef:i},M.cloneElement(e,{ref:r}))}const Zw=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:s})=>{const a=JU(VAe),l=M.useId(),u=M.useMemo(()=>({id:l,initial:t,isPresent:n,custom:i,onExitComplete:c=>{a.set(c,!0);for(const d of a.values())if(!d)return;r&&r()},register:c=>(a.set(c,!1),()=>a.delete(c))}),o?void 0:[n]);return M.useMemo(()=>{a.forEach((c,d)=>a.set(d,!1))},[n]),M.useEffect(()=>{!n&&!a.size&&r&&r()},[n]),s==="popLayout"&&(e=M.createElement(jAe,{isPresent:n},e)),M.createElement(Hm.Provider,{value:u},e)};function VAe(){return new Map}function GAe(e){return M.useEffect(()=>()=>e(),[])}const Md=e=>e.key||"";function HAe(e,t){e.forEach(n=>{const r=Md(n);t.set(r,n)})}function qAe(e){const t=[];return M.Children.forEach(e,n=>{M.isValidElement(n)&&t.push(n)}),t}const WAe=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:s="sync"})=>{const a=M.useContext(l4).forceRender||zAe()[0],l=rV(),u=qAe(e);let c=u;const d=M.useRef(new Map).current,f=M.useRef(c),h=M.useRef(new Map).current,p=M.useRef(!0);if(o4(()=>{p.current=!1,HAe(u,h),f.current=c}),GAe(()=>{p.current=!0,h.clear(),d.clear()}),p.current)return M.createElement(M.Fragment,null,c.map(y=>M.createElement(Zw,{key:Md(y),isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:s},y)));c=[...c];const m=f.current.map(Md),b=u.map(Md),_=m.length;for(let y=0;y<_;y++){const g=m[y];b.indexOf(g)===-1&&!d.has(g)&&d.set(g,void 0)}return s==="wait"&&d.size&&(c=[]),d.forEach((y,g)=>{if(b.indexOf(g)!==-1)return;const v=h.get(g);if(!v)return;const S=m.indexOf(g);let w=y;if(!w){const x=()=>{h.delete(g),d.delete(g);const C=f.current.findIndex(A=>A.key===g);if(f.current.splice(C,1),!d.size){if(f.current=u,l.current===!1)return;a(),r&&r()}};w=M.createElement(Zw,{key:Md(v),isPresent:!1,onExitComplete:x,custom:t,presenceAffectsLayout:o,mode:s},v),d.set(g,w)}c.splice(S,0,w)}),c=c.map(y=>{const g=y.key;return d.has(g)?y:M.createElement(Zw,{key:Md(y),isPresent:!0,presenceAffectsLayout:o,mode:s},y)}),M.createElement(M.Fragment,null,d.size?c:c.map(y=>M.cloneElement(y)))};var KAe=DCe({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),iV=zu((e,t)=>{const n=i4("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:s="transparent",className:a,...l}=r4(e),u=JT("chakra-spinner",a),c={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:s,borderLeftColor:s,animation:`${KAe} ${o} linear infinite`,...n};return Z.jsx(wu.div,{ref:t,__css:c,className:u,...l,children:r&&Z.jsx(wu.span,{srOnly:!0,children:r})})});iV.displayName="Spinner";var j3=zu(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...s}=t;return Z.jsx("img",{width:r,height:i,ref:n,alt:o,...s})});j3.displayName="NativeImage";function XAe(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:s,sizes:a,ignoreFallback:l}=e,[u,c]=M.useState("pending");M.useEffect(()=>{c(n?"loading":"pending")},[n]);const d=M.useRef(),f=M.useCallback(()=>{if(!n)return;h();const p=new Image;p.src=n,s&&(p.crossOrigin=s),r&&(p.srcset=r),a&&(p.sizes=a),t&&(p.loading=t),p.onload=m=>{h(),c("loaded"),i==null||i(m)},p.onerror=m=>{h(),c("failed"),o==null||o(m)},d.current=p},[n,s,r,a,i,o,t]),h=()=>{d.current&&(d.current.onload=null,d.current.onerror=null,d.current=null)};return LCe(()=>{if(!l)return u==="loading"&&f(),()=>{h()}},[u,f,l]),l?"loaded":u}var QAe=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError";function YAe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var T4=zu(function(t,n){const{fallbackSrc:r,fallback:i,src:o,srcSet:s,align:a,fit:l,loading:u,ignoreFallback:c,crossOrigin:d,fallbackStrategy:f="beforeLoadOrError",referrerPolicy:h,...p}=t,m=r!==void 0||i!==void 0,b=u!=null||c||!m,_=XAe({...t,crossOrigin:d,ignoreFallback:b}),y=QAe(_,f),g={ref:n,objectFit:l,objectPosition:a,...b?p:YAe(p,["onError","onLoad"])};return y?i||Z.jsx(wu.img,{as:j3,className:"chakra-image__placeholder",src:r,...g}):Z.jsx(wu.img,{as:j3,src:o,srcSet:s,crossOrigin:d,loading:u,referrerPolicy:h,className:"chakra-image",...g})});T4.displayName="Image";var oV=zu(function(t,n){const r=i4("Text",t),{className:i,align:o,decoration:s,casing:a,...l}=r4(t),u=bEe({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return Z.jsx(wu.p,{ref:n,className:JT("chakra-text",t.className),...u,...l,__css:r})});oV.displayName="Text";var V3=zu(function(t,n){const r=i4("Heading",t),{className:i,...o}=r4(t);return Z.jsx(wu.h2,{ref:n,className:JT("chakra-heading",t.className),...o,__css:r})});V3.displayName="Heading";var V1=wu("div");V1.displayName="Box";var sV=zu(function(t,n){const{size:r,centerContent:i=!0,...o}=t,s=i?{display:"flex",alignItems:"center",justifyContent:"center"}:{};return Z.jsx(V1,{ref:n,boxSize:r,__css:{...s,flexShrink:0,flexGrow:0},...o})});sV.displayName="Square";var ZAe=zu(function(t,n){const{size:r,...i}=t;return Z.jsx(sV,{size:r,ref:n,borderRadius:"9999px",...i})});ZAe.displayName="Circle";var A4=zu(function(t,n){const{direction:r,align:i,justify:o,wrap:s,basis:a,grow:l,shrink:u,...c}=t,d={display:"flex",flexDirection:r,alignItems:i,justifyContent:o,flexWrap:s,flexBasis:a,flexGrow:l,flexShrink:u};return Z.jsx(wu.div,{ref:n,__css:d,...c})});A4.displayName="Flex";const JAe=""+new URL("logo-13003d72.png",import.meta.url).href,eke=()=>Z.jsxs(A4,{position:"relative",width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",bg:"#151519",children:[Z.jsx(T4,{src:JAe,w:"8rem",h:"8rem"}),Z.jsx(iV,{label:"Loading",color:"grey",position:"absolute",size:"sm",width:"24px !important",height:"24px !important",right:"1.5rem",bottom:"1.5rem"})]}),tke=M.memo(eke);function G3(e){"@babel/helpers - typeof";return G3=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G3(e)}var aV=[],nke=aV.forEach,rke=aV.slice;function H3(e){return nke.call(rke.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function lV(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":G3(XMLHttpRequest))==="object"}function ike(e){return!!e&&typeof e.then=="function"}function oke(e){return ike(e)?e:Promise.resolve(e)}function ske(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var q3={exports:{}},h0={exports:{}},pO;function ake(){return pO||(pO=1,function(e,t){var n=typeof self<"u"?self:dt,r=function(){function o(){this.fetch=!1,this.DOMException=n.DOMException}return o.prototype=n,new o}();(function(o){(function(s){var a={searchParams:"URLSearchParams"in o,iterable:"Symbol"in o&&"iterator"in Symbol,blob:"FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in o,arrayBuffer:"ArrayBuffer"in o};function l(E){return E&&DataView.prototype.isPrototypeOf(E)}if(a.arrayBuffer)var u=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(E){return E&&u.indexOf(Object.prototype.toString.call(E))>-1};function d(E){if(typeof E!="string"&&(E=String(E)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(E))throw new TypeError("Invalid character in header field name");return E.toLowerCase()}function f(E){return typeof E!="string"&&(E=String(E)),E}function h(E){var P={next:function(){var D=E.shift();return{done:D===void 0,value:D}}};return a.iterable&&(P[Symbol.iterator]=function(){return P}),P}function p(E){this.map={},E instanceof p?E.forEach(function(P,D){this.append(D,P)},this):Array.isArray(E)?E.forEach(function(P){this.append(P[0],P[1])},this):E&&Object.getOwnPropertyNames(E).forEach(function(P){this.append(P,E[P])},this)}p.prototype.append=function(E,P){E=d(E),P=f(P);var D=this.map[E];this.map[E]=D?D+", "+P:P},p.prototype.delete=function(E){delete this.map[d(E)]},p.prototype.get=function(E){return E=d(E),this.has(E)?this.map[E]:null},p.prototype.has=function(E){return this.map.hasOwnProperty(d(E))},p.prototype.set=function(E,P){this.map[d(E)]=f(P)},p.prototype.forEach=function(E,P){for(var D in this.map)this.map.hasOwnProperty(D)&&E.call(P,this.map[D],D,this)},p.prototype.keys=function(){var E=[];return this.forEach(function(P,D){E.push(D)}),h(E)},p.prototype.values=function(){var E=[];return this.forEach(function(P){E.push(P)}),h(E)},p.prototype.entries=function(){var E=[];return this.forEach(function(P,D){E.push([D,P])}),h(E)},a.iterable&&(p.prototype[Symbol.iterator]=p.prototype.entries);function m(E){if(E.bodyUsed)return Promise.reject(new TypeError("Already read"));E.bodyUsed=!0}function b(E){return new Promise(function(P,D){E.onload=function(){P(E.result)},E.onerror=function(){D(E.error)}})}function _(E){var P=new FileReader,D=b(P);return P.readAsArrayBuffer(E),D}function y(E){var P=new FileReader,D=b(P);return P.readAsText(E),D}function g(E){for(var P=new Uint8Array(E),D=new Array(P.length),B=0;B-1?P:E}function C(E,P){P=P||{};var D=P.body;if(E instanceof C){if(E.bodyUsed)throw new TypeError("Already read");this.url=E.url,this.credentials=E.credentials,P.headers||(this.headers=new p(E.headers)),this.method=E.method,this.mode=E.mode,this.signal=E.signal,!D&&E._bodyInit!=null&&(D=E._bodyInit,E.bodyUsed=!0)}else this.url=String(E);if(this.credentials=P.credentials||this.credentials||"same-origin",(P.headers||!this.headers)&&(this.headers=new p(P.headers)),this.method=x(P.method||this.method||"GET"),this.mode=P.mode||this.mode||null,this.signal=P.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&D)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(D)}C.prototype.clone=function(){return new C(this,{body:this._bodyInit})};function A(E){var P=new FormData;return E.trim().split("&").forEach(function(D){if(D){var B=D.split("="),R=B.shift().replace(/\+/g," "),I=B.join("=").replace(/\+/g," ");P.append(decodeURIComponent(R),decodeURIComponent(I))}}),P}function T(E){var P=new p,D=E.replace(/\r?\n[\t ]+/g," ");return D.split(/\r?\n/).forEach(function(B){var R=B.split(":"),I=R.shift().trim();if(I){var O=R.join(":").trim();P.append(I,O)}}),P}S.call(C.prototype);function k(E,P){P||(P={}),this.type="default",this.status=P.status===void 0?200:P.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in P?P.statusText:"OK",this.headers=new p(P.headers),this.url=P.url||"",this._initBody(E)}S.call(k.prototype),k.prototype.clone=function(){return new k(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},k.error=function(){var E=new k(null,{status:0,statusText:""});return E.type="error",E};var L=[301,302,303,307,308];k.redirect=function(E,P){if(L.indexOf(P)===-1)throw new RangeError("Invalid status code");return new k(null,{status:P,headers:{location:E}})},s.DOMException=o.DOMException;try{new s.DOMException}catch{s.DOMException=function(P,D){this.message=P,this.name=D;var B=Error(P);this.stack=B.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function N(E,P){return new Promise(function(D,B){var R=new C(E,P);if(R.signal&&R.signal.aborted)return B(new s.DOMException("Aborted","AbortError"));var I=new XMLHttpRequest;function O(){I.abort()}I.onload=function(){var F={status:I.status,statusText:I.statusText,headers:T(I.getAllResponseHeaders()||"")};F.url="responseURL"in I?I.responseURL:F.headers.get("X-Request-URL");var U="response"in I?I.response:I.responseText;D(new k(U,F))},I.onerror=function(){B(new TypeError("Network request failed"))},I.ontimeout=function(){B(new TypeError("Network request failed"))},I.onabort=function(){B(new s.DOMException("Aborted","AbortError"))},I.open(R.method,R.url,!0),R.credentials==="include"?I.withCredentials=!0:R.credentials==="omit"&&(I.withCredentials=!1),"responseType"in I&&a.blob&&(I.responseType="blob"),R.headers.forEach(function(F,U){I.setRequestHeader(U,F)}),R.signal&&(R.signal.addEventListener("abort",O),I.onreadystatechange=function(){I.readyState===4&&R.signal.removeEventListener("abort",O)}),I.send(typeof R._bodyInit>"u"?null:R._bodyInit)})}return N.polyfill=!0,o.fetch||(o.fetch=N,o.Headers=p,o.Request=C,o.Response=k),s.Headers=p,s.Request=C,s.Response=k,s.fetch=N,Object.defineProperty(s,"__esModule",{value:!0}),s})({})})(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;t=i.fetch,t.default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t}(h0,h0.exports)),h0.exports}(function(e,t){var n;if(typeof fetch=="function"&&(typeof dt<"u"&&dt.fetch?n=dt.fetch:typeof window<"u"&&window.fetch?n=window.fetch:n=fetch),typeof ske<"u"&&(typeof window>"u"||typeof window.document>"u")){var r=n||ake();r.default&&(r=r.default),t.default=r,e.exports=t.default}})(q3,q3.exports);var uV=q3.exports;const cV=Uc(uV),gO=NO({__proto__:null,default:cV},[uV]);function G1(e){"@babel/helpers - typeof";return G1=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G1(e)}var tl;typeof fetch=="function"&&(typeof global<"u"&&global.fetch?tl=global.fetch:typeof window<"u"&&window.fetch?tl=window.fetch:tl=fetch);var Jg;lV()&&(typeof global<"u"&&global.XMLHttpRequest?Jg=global.XMLHttpRequest:typeof window<"u"&&window.XMLHttpRequest&&(Jg=window.XMLHttpRequest));var H1;typeof ActiveXObject=="function"&&(typeof global<"u"&&global.ActiveXObject?H1=global.ActiveXObject:typeof window<"u"&&window.ActiveXObject&&(H1=window.ActiveXObject));!tl&&gO&&!Jg&&!H1&&(tl=cV||gO);typeof tl!="function"&&(tl=void 0);var W3=function(t,n){if(n&&G1(n)==="object"){var r="";for(var i in n)r+="&"+encodeURIComponent(i)+"="+encodeURIComponent(n[i]);if(!r)return t;t=t+(t.indexOf("?")!==-1?"&":"?")+r.slice(1)}return t},mO=function(t,n,r){tl(t,n).then(function(i){if(!i.ok)return r(i.statusText||"Error",{status:i.status});i.text().then(function(o){r(null,{status:i.status,data:o})}).catch(r)}).catch(r)},yO=!1,lke=function(t,n,r,i){t.queryStringParams&&(n=W3(n,t.queryStringParams));var o=H3({},typeof t.customHeaders=="function"?t.customHeaders():t.customHeaders);r&&(o["Content-Type"]="application/json");var s=typeof t.requestOptions=="function"?t.requestOptions(r):t.requestOptions,a=H3({method:r?"POST":"GET",body:r?t.stringify(r):void 0,headers:o},yO?{}:s);try{mO(n,a,i)}catch(l){if(!s||Object.keys(s).length===0||!l.message||l.message.indexOf("not implemented")<0)return i(l);try{Object.keys(s).forEach(function(u){delete a[u]}),mO(n,a,i),yO=!0}catch(u){i(u)}}},uke=function(t,n,r,i){r&&G1(r)==="object"&&(r=W3("",r).slice(1)),t.queryStringParams&&(n=W3(n,t.queryStringParams));try{var o;Jg?o=new Jg:o=new H1("MSXML2.XMLHTTP.3.0"),o.open(r?"POST":"GET",n,1),t.crossDomain||o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.withCredentials=!!t.withCredentials,r&&o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),o.overrideMimeType&&o.overrideMimeType("application/json");var s=t.customHeaders;if(s=typeof s=="function"?s():s,s)for(var a in s)o.setRequestHeader(a,s[a]);o.onreadystatechange=function(){o.readyState>3&&i(o.status>=400?o.statusText:null,{status:o.status,data:o.responseText})},o.send(r)}catch(l){console&&console.log(l)}},cke=function(t,n,r,i){if(typeof r=="function"&&(i=r,r=void 0),i=i||function(){},tl&&n.indexOf("file:")!==0)return lke(t,n,r,i);if(lV()||typeof ActiveXObject=="function")return uke(t,n,r,i);i(new Error("No fetch and no xhr implementation found!"))};function em(e){"@babel/helpers - typeof";return em=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},em(e)}function dke(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function vO(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};dke(this,e),this.services=t,this.options=n,this.allOptions=r,this.type="backend",this.init(t,n,r)}return fke(e,[{key:"init",value:function(n){var r=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=n,this.options=H3(i,this.options||{},gke()),this.allOptions=o,this.services&&this.options.reloadInterval&&setInterval(function(){return r.reload()},this.options.reloadInterval)}},{key:"readMulti",value:function(n,r,i){this._readAny(n,n,r,r,i)}},{key:"read",value:function(n,r,i){this._readAny([n],n,[r],r,i)}},{key:"_readAny",value:function(n,r,i,o,s){var a=this,l=this.options.loadPath;typeof this.options.loadPath=="function"&&(l=this.options.loadPath(n,i)),l=oke(l),l.then(function(u){if(!u)return s(null,{});var c=a.services.interpolator.interpolate(u,{lng:n.join("+"),ns:i.join("+")});a.loadUrl(c,s,r,o)})}},{key:"loadUrl",value:function(n,r,i,o){var s=this,a=typeof i=="string"?[i]:i,l=typeof o=="string"?[o]:o,u=this.options.parseLoadPayload(a,l);this.options.request(this.options,n,u,function(c,d){if(d&&(d.status>=500&&d.status<600||!d.status))return r("failed loading "+n+"; status code: "+d.status,!0);if(d&&d.status>=400&&d.status<500)return r("failed loading "+n+"; status code: "+d.status,!1);if(!d&&c&&c.message&&c.message.indexOf("Failed to fetch")>-1)return r("failed loading "+n+": "+c.message,!0);if(c)return r(c,!1);var f,h;try{typeof d.data=="string"?f=s.options.parse(d.data,i,o):f=d.data}catch{h="failed parsing "+n+" to json"}if(h)return r(h,!1);r(null,f)})}},{key:"create",value:function(n,r,i,o,s){var a=this;if(this.options.addPath){typeof n=="string"&&(n=[n]);var l=this.options.parsePayload(r,i,o),u=0,c=[],d=[];n.forEach(function(f){var h=a.options.addPath;typeof a.options.addPath=="function"&&(h=a.options.addPath(f,r));var p=a.services.interpolator.interpolate(h,{lng:f,ns:r});a.options.request(a.options,p,l,function(m,b){u+=1,c.push(m),d.push(b),u===n.length&&typeof s=="function"&&s(c,d)})})}}},{key:"reload",value:function(){var n=this,r=this.services,i=r.backendConnector,o=r.languageUtils,s=r.logger,a=i.language;if(!(a&&a.toLowerCase()==="cimode")){var l=[],u=function(d){var f=o.toResolveHierarchy(d);f.forEach(function(h){l.indexOf(h)<0&&l.push(h)})};u(a),this.allOptions.preload&&this.allOptions.preload.forEach(function(c){return u(c)}),l.forEach(function(c){n.allOptions.ns.forEach(function(d){i.read(c,d,"read",null,null,function(f,h){f&&s.warn("loading namespace ".concat(d," for language ").concat(c," failed"),f),!f&&h&&s.log("loaded namespace ".concat(d," for language ").concat(c),h),i.loaded("".concat(c,"|").concat(d),f,h)})})})}}}]),e}();fV.type="backend";const mke=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,yke={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},vke=e=>yke[e],_ke=e=>e.replace(mke,vke);let K3={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:_ke};function bke(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K3={...K3,...e}}function JMe(){return K3}let hV;function Ske(e){hV=e}function eNe(){return hV}const wke={type:"3rdParty",init(e){bke(e.options.react),Ske(e)}};we.use(fV).use(wke).init({fallbackLng:"en",debug:!1,backend:{loadPath:"/locales/{{lng}}.json"},interpolation:{escapeValue:!1},returnNull:!1});const XS=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function wh(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function k4(e){return"nodeType"in e}function eo(e){var t,n;return e?wh(e)?e:k4(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function P4(e){const{Document:t}=eo(e);return e instanceof t}function Qm(e){return wh(e)?!1:e instanceof eo(e).HTMLElement}function xke(e){return e instanceof eo(e).SVGElement}function xh(e){return e?wh(e)?e.document:k4(e)?P4(e)?e:Qm(e)?e.ownerDocument:document:document:document}const Sa=XS?M.useLayoutEffect:M.useEffect;function QS(e){const t=M.useRef(e);return Sa(()=>{t.current=e}),M.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i{e.current=setInterval(r,i)},[]),n=M.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function tm(e,t){t===void 0&&(t=[e]);const n=M.useRef(e);return Sa(()=>{n.current!==e&&(n.current=e)},t),n}function Ym(e,t){const n=M.useRef();return M.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function q1(e){const t=QS(e),n=M.useRef(null),r=M.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function W1(e){const t=M.useRef();return M.useEffect(()=>{t.current=e},[e]),t.current}let Jw={};function YS(e,t){return M.useMemo(()=>{if(t)return t;const n=Jw[e]==null?0:Jw[e]+1;return Jw[e]=n,e+"-"+n},[e,t])}function pV(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{const a=Object.entries(s);for(const[l,u]of a){const c=o[l];c!=null&&(o[l]=c+e*u)}return o},{...t})}}const wf=pV(1),K1=pV(-1);function Eke(e){return"clientX"in e&&"clientY"in e}function R4(e){if(!e)return!1;const{KeyboardEvent:t}=eo(e.target);return t&&e instanceof t}function Tke(e){if(!e)return!1;const{TouchEvent:t}=eo(e.target);return t&&e instanceof t}function nm(e){if(Tke(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Eke(e)?{x:e.clientX,y:e.clientY}:null}const rm=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[rm.Translate.toString(e),rm.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),_O="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Ake(e){return e.matches(_O)?e:e.querySelector(_O)}const kke={display:"none"};function Pke(e){let{id:t,value:n}=e;return vn.createElement("div",{id:t,style:kke},n)}const Rke={position:"fixed",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};function Ike(e){let{id:t,announcement:n}=e;return vn.createElement("div",{id:t,style:Rke,role:"status","aria-live":"assertive","aria-atomic":!0},n)}function Oke(){const[e,t]=M.useState("");return{announce:M.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const gV=M.createContext(null);function Mke(e){const t=M.useContext(gV);M.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function Nke(){const[e]=M.useState(()=>new Set),t=M.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[M.useCallback(r=>{let{type:i,event:o}=r;e.forEach(s=>{var a;return(a=s[i])==null?void 0:a.call(s,o)})},[e]),t]}const Dke={draggable:` + To pick up a draggable item, press the space bar. + While dragging, use the arrow keys to move the item. + Press space again to drop the item in its new position, or press escape to cancel. + `},Lke={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function $ke(e){let{announcements:t=Lke,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=Dke}=e;const{announce:o,announcement:s}=Oke(),a=YS("DndLiveRegion"),[l,u]=M.useState(!1);if(M.useEffect(()=>{u(!0)},[]),Mke(M.useMemo(()=>({onDragStart(d){let{active:f}=d;o(t.onDragStart({active:f}))},onDragMove(d){let{active:f,over:h}=d;t.onDragMove&&o(t.onDragMove({active:f,over:h}))},onDragOver(d){let{active:f,over:h}=d;o(t.onDragOver({active:f,over:h}))},onDragEnd(d){let{active:f,over:h}=d;o(t.onDragEnd({active:f,over:h}))},onDragCancel(d){let{active:f,over:h}=d;o(t.onDragCancel({active:f,over:h}))}}),[o,t])),!l)return null;const c=vn.createElement(vn.Fragment,null,vn.createElement(Pke,{id:r,value:i.draggable}),vn.createElement(Ike,{id:a,announcement:s}));return n?Cs.createPortal(c,n):c}var Fr;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(Fr||(Fr={}));function X1(){}function bO(e,t){return M.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Fke(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const Fs=Object.freeze({x:0,y:0});function Bke(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function zke(e,t){const n=nm(e);if(!n)return"0 0";const r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+"% "+r.y+"%"}function Uke(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function jke(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function Vke(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function Gke(e,t){if(!e||e.length===0)return null;const[n]=e;return t?n[t]:n}function Hke(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),o=Math.min(t.top+t.height,e.top+e.height),s=i-r,a=o-n;if(r{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const i=[];for(const o of r){const{id:s}=o,a=n.get(s);if(a){const l=Hke(a,t);l>0&&i.push({id:s,data:{droppableContainer:o,value:l}})}}return i.sort(jke)};function Wke(e,t){const{top:n,left:r,bottom:i,right:o}=t;return n<=e.y&&e.y<=i&&r<=e.x&&e.x<=o}const Kke=e=>{let{droppableContainers:t,droppableRects:n,pointerCoordinates:r}=e;if(!r)return[];const i=[];for(const o of t){const{id:s}=o,a=n.get(s);if(a&&Wke(r,a)){const u=Vke(a).reduce((d,f)=>d+Bke(r,f),0),c=Number((u/4).toFixed(4));i.push({id:s,data:{droppableContainer:o,value:c}})}}return i.sort(Uke)};function Xke(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function mV(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Fs}function Qke(e){return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),o=1;o({...s,top:s.top+e*a.y,bottom:s.bottom+e*a.y,left:s.left+e*a.x,right:s.right+e*a.x}),{...n})}}const Yke=Qke(1);function yV(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function Zke(e,t,n){const r=yV(t);if(!r)return e;const{scaleX:i,scaleY:o,x:s,y:a}=r,l=e.left-s-(1-i)*parseFloat(n),u=e.top-a-(1-o)*parseFloat(n.slice(n.indexOf(" ")+1)),c=i?e.width/i:e.width,d=o?e.height/o:e.height;return{width:c,height:d,top:u,right:l+c,bottom:u+d,left:l}}const Jke={ignoreTransform:!1};function Zm(e,t){t===void 0&&(t=Jke);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:c}=eo(e).getComputedStyle(e);u&&(n=Zke(n,u,c))}const{top:r,left:i,width:o,height:s,bottom:a,right:l}=n;return{top:r,left:i,width:o,height:s,bottom:a,right:l}}function SO(e){return Zm(e,{ignoreTransform:!0})}function ePe(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function tPe(e,t){return t===void 0&&(t=eo(e).getComputedStyle(e)),t.position==="fixed"}function nPe(e,t){t===void 0&&(t=eo(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const o=t[i];return typeof o=="string"?n.test(o):!1})}function I4(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(P4(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Qm(i)||xke(i)||n.includes(i))return n;const o=eo(e).getComputedStyle(i);return i!==e&&nPe(i,o)&&n.push(i),tPe(i,o)?n:r(i.parentNode)}return e?r(e):n}function vV(e){const[t]=I4(e,1);return t??null}function ex(e){return!XS||!e?null:wh(e)?e:k4(e)?P4(e)||e===xh(e).scrollingElement?window:Qm(e)?e:null:null}function _V(e){return wh(e)?e.scrollX:e.scrollLeft}function bV(e){return wh(e)?e.scrollY:e.scrollTop}function X3(e){return{x:_V(e),y:bV(e)}}var ti;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(ti||(ti={}));function SV(e){return!XS||!e?!1:e===document.scrollingElement}function wV(e){const t={x:0,y:0},n=SV(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},i=e.scrollTop<=t.y,o=e.scrollLeft<=t.x,s=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:i,isLeft:o,isBottom:s,isRight:a,maxScroll:r,minScroll:t}}const rPe={x:.2,y:.2};function iPe(e,t,n,r,i){let{top:o,left:s,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=rPe);const{isTop:u,isBottom:c,isLeft:d,isRight:f}=wV(e),h={x:0,y:0},p={x:0,y:0},m={height:t.height*i.y,width:t.width*i.x};return!u&&o<=t.top+m.height?(h.y=ti.Backward,p.y=r*Math.abs((t.top+m.height-o)/m.height)):!c&&l>=t.bottom-m.height&&(h.y=ti.Forward,p.y=r*Math.abs((t.bottom-m.height-l)/m.height)),!f&&a>=t.right-m.width?(h.x=ti.Forward,p.x=r*Math.abs((t.right-m.width-a)/m.width)):!d&&s<=t.left+m.width&&(h.x=ti.Backward,p.x=r*Math.abs((t.left+m.width-s)/m.width)),{direction:h,speed:p}}function oPe(e){if(e===document.scrollingElement){const{innerWidth:o,innerHeight:s}=window;return{top:0,left:0,right:o,bottom:s,width:o,height:s}}const{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function xV(e){return e.reduce((t,n)=>wf(t,X3(n)),Fs)}function sPe(e){return e.reduce((t,n)=>t+_V(n),0)}function aPe(e){return e.reduce((t,n)=>t+bV(n),0)}function CV(e,t){if(t===void 0&&(t=Zm),!e)return;const{top:n,left:r,bottom:i,right:o}=t(e);vV(e)&&(i<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const lPe=[["x",["left","right"],sPe],["y",["top","bottom"],aPe]];class O4{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=I4(n),i=xV(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,s,a]of lPe)for(const l of s)Object.defineProperty(this,l,{get:()=>{const u=a(r),c=i[o]-u;return this.rect[l]+c},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Ip{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var i;(i=this.target)==null||i.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function uPe(e){const{EventTarget:t}=eo(e);return e instanceof t?e:xh(e)}function tx(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var qo;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(qo||(qo={}));function wO(e){e.preventDefault()}function cPe(e){e.stopPropagation()}var En;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"})(En||(En={}));const EV={start:[En.Space,En.Enter],cancel:[En.Esc],end:[En.Space,En.Enter]},dPe=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case En.Right:return{...n,x:n.x+25};case En.Left:return{...n,x:n.x-25};case En.Down:return{...n,y:n.y+25};case En.Up:return{...n,y:n.y-25}}};class TV{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new Ip(xh(n)),this.windowListeners=new Ip(eo(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(qo.Resize,this.handleCancel),this.windowListeners.add(qo.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(qo.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&CV(r),n(Fs)}handleKeyDown(t){if(R4(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:o=EV,coordinateGetter:s=dPe,scrollBehavior:a="smooth"}=i,{code:l}=t;if(o.end.includes(l)){this.handleEnd(t);return}if(o.cancel.includes(l)){this.handleCancel(t);return}const{collisionRect:u}=r.current,c=u?{x:u.left,y:u.top}:Fs;this.referenceCoordinates||(this.referenceCoordinates=c);const d=s(t,{active:n,context:r.current,currentCoordinates:c});if(d){const f=K1(d,c),h={x:0,y:0},{scrollableAncestors:p}=r.current;for(const m of p){const b=t.code,{isTop:_,isRight:y,isLeft:g,isBottom:v,maxScroll:S,minScroll:w}=wV(m),x=oPe(m),C={x:Math.min(b===En.Right?x.right-x.width/2:x.right,Math.max(b===En.Right?x.left:x.left+x.width/2,d.x)),y:Math.min(b===En.Down?x.bottom-x.height/2:x.bottom,Math.max(b===En.Down?x.top:x.top+x.height/2,d.y))},A=b===En.Right&&!y||b===En.Left&&!g,T=b===En.Down&&!v||b===En.Up&&!_;if(A&&C.x!==d.x){const k=m.scrollLeft+f.x,L=b===En.Right&&k<=S.x||b===En.Left&&k>=w.x;if(L&&!f.y){m.scrollTo({left:k,behavior:a});return}L?h.x=m.scrollLeft-k:h.x=b===En.Right?m.scrollLeft-S.x:m.scrollLeft-w.x,h.x&&m.scrollBy({left:-h.x,behavior:a});break}else if(T&&C.y!==d.y){const k=m.scrollTop+f.y,L=b===En.Down&&k<=S.y||b===En.Up&&k>=w.y;if(L&&!f.x){m.scrollTo({top:k,behavior:a});return}L?h.y=m.scrollTop-k:h.y=b===En.Down?m.scrollTop-S.y:m.scrollTop-w.y,h.y&&m.scrollBy({top:-h.y,behavior:a});break}}this.handleMove(t,wf(K1(d,this.referenceCoordinates),h))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}TV.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=EV,onActivation:i}=t,{active:o}=n;const{code:s}=e.nativeEvent;if(r.start.includes(s)){const a=o.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),i==null||i({event:e.nativeEvent}),!0)}return!1}}];function xO(e){return!!(e&&"distance"in e)}function CO(e){return!!(e&&"delay"in e)}class M4{constructor(t,n,r){var i;r===void 0&&(r=uPe(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:o}=t,{target:s}=o;this.props=t,this.events=n,this.document=xh(s),this.documentListeners=new Ip(this.document),this.listeners=new Ip(r),this.windowListeners=new Ip(eo(s)),this.initialCoordinates=(i=nm(o))!=null?i:Fs,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),this.windowListeners.add(qo.Resize,this.handleCancel),this.windowListeners.add(qo.DragStart,wO),this.windowListeners.add(qo.VisibilityChange,this.handleCancel),this.windowListeners.add(qo.ContextMenu,wO),this.documentListeners.add(qo.Keydown,this.handleKeydown),n){if(xO(n))return;if(CO(n)){this.timeoutId=setTimeout(this.handleStart,n.delay);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(qo.Click,cPe,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(qo.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:i,props:o}=this,{onMove:s,options:{activationConstraint:a}}=o;if(!i)return;const l=(n=nm(t))!=null?n:Fs,u=K1(i,l);if(!r&&a){if(CO(a))return tx(u,a.tolerance)?this.handleCancel():void 0;if(xO(a))return a.tolerance!=null&&tx(u,a.tolerance)?this.handleCancel():tx(u,a.distance)?this.handleStart():void 0}t.cancelable&&t.preventDefault(),s(l)}handleEnd(){const{onEnd:t}=this.props;this.detach(),t()}handleCancel(){const{onCancel:t}=this.props;this.detach(),t()}handleKeydown(t){t.code===En.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const fPe={move:{name:"pointermove"},end:{name:"pointerup"}};class AV extends M4{constructor(t){const{event:n}=t,r=xh(n.target);super(t,fPe,r)}}AV.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r==null||r({event:n}),!0)}}];const hPe={move:{name:"mousemove"},end:{name:"mouseup"}};var Q3;(function(e){e[e.RightClick=2]="RightClick"})(Q3||(Q3={}));class kV extends M4{constructor(t){super(t,hPe,xh(t.event.target))}}kV.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===Q3.RightClick?!1:(r==null||r({event:n}),!0)}}];const nx={move:{name:"touchmove"},end:{name:"touchend"}};class PV extends M4{constructor(t){super(t,nx)}static setup(){return window.addEventListener(nx.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(nx.move.name,t)};function t(){}}}PV.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:i}=n;return i.length>1?!1:(r==null||r({event:n}),!0)}}];var Op;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(Op||(Op={}));var Q1;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Q1||(Q1={}));function pPe(e){let{acceleration:t,activator:n=Op.Pointer,canScroll:r,draggingRect:i,enabled:o,interval:s=5,order:a=Q1.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:c,delta:d,threshold:f}=e;const h=mPe({delta:d,disabled:!o}),[p,m]=Cke(),b=M.useRef({x:0,y:0}),_=M.useRef({x:0,y:0}),y=M.useMemo(()=>{switch(n){case Op.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case Op.DraggableRect:return i}},[n,i,l]),g=M.useRef(null),v=M.useCallback(()=>{const w=g.current;if(!w)return;const x=b.current.x*_.current.x,C=b.current.y*_.current.y;w.scrollBy(x,C)},[]),S=M.useMemo(()=>a===Q1.TreeOrder?[...u].reverse():u,[a,u]);M.useEffect(()=>{if(!o||!u.length||!y){m();return}for(const w of S){if((r==null?void 0:r(w))===!1)continue;const x=u.indexOf(w),C=c[x];if(!C)continue;const{direction:A,speed:T}=iPe(w,C,y,t,f);for(const k of["x","y"])h[k][A[k]]||(T[k]=0,A[k]=0);if(T.x>0||T.y>0){m(),g.current=w,p(v,s),b.current=T,_.current=A;return}}b.current={x:0,y:0},_.current={x:0,y:0},m()},[t,v,r,m,o,s,JSON.stringify(y),JSON.stringify(h),p,u,S,c,JSON.stringify(f)])}const gPe={x:{[ti.Backward]:!1,[ti.Forward]:!1},y:{[ti.Backward]:!1,[ti.Forward]:!1}};function mPe(e){let{delta:t,disabled:n}=e;const r=W1(t);return Ym(i=>{if(n||!r||!i)return gPe;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[ti.Backward]:i.x[ti.Backward]||o.x===-1,[ti.Forward]:i.x[ti.Forward]||o.x===1},y:{[ti.Backward]:i.y[ti.Backward]||o.y===-1,[ti.Forward]:i.y[ti.Forward]||o.y===1}}},[n,t,r])}function yPe(e,t){const n=t!==null?e.get(t):void 0,r=n?n.node.current:null;return Ym(i=>{var o;return t===null?null:(o=r??i)!=null?o:null},[r,t])}function vPe(e,t){return M.useMemo(()=>e.reduce((n,r)=>{const{sensor:i}=r,o=i.activators.map(s=>({eventName:s.eventName,handler:t(s.handler,r)}));return[...n,...o]},[]),[e,t])}var im;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(im||(im={}));var Y3;(function(e){e.Optimized="optimized"})(Y3||(Y3={}));const EO=new Map;function _Pe(e,t){let{dragging:n,dependencies:r,config:i}=t;const[o,s]=M.useState(null),{frequency:a,measure:l,strategy:u}=i,c=M.useRef(e),d=b(),f=tm(d),h=M.useCallback(function(_){_===void 0&&(_=[]),!f.current&&s(y=>y===null?_:y.concat(_.filter(g=>!y.includes(g))))},[f]),p=M.useRef(null),m=Ym(_=>{if(d&&!n)return EO;if(!_||_===EO||c.current!==e||o!=null){const y=new Map;for(let g of e){if(!g)continue;if(o&&o.length>0&&!o.includes(g.id)&&g.rect.current){y.set(g.id,g.rect.current);continue}const v=g.node.current,S=v?new O4(l(v),v):null;g.rect.current=S,S&&y.set(g.id,S)}return y}return _},[e,o,n,d,l]);return M.useEffect(()=>{c.current=e},[e]),M.useEffect(()=>{d||h()},[n,d]),M.useEffect(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),M.useEffect(()=>{d||typeof a!="number"||p.current!==null||(p.current=setTimeout(()=>{h(),p.current=null},a))},[a,d,h,...r]),{droppableRects:m,measureDroppableContainers:h,measuringScheduled:o!=null};function b(){switch(u){case im.Always:return!1;case im.BeforeDragging:return n;default:return!n}}}function N4(e,t){return Ym(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function bPe(e,t){return N4(e,t)}function SPe(e){let{callback:t,disabled:n}=e;const r=QS(t),i=M.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return M.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function ZS(e){let{callback:t,disabled:n}=e;const r=QS(t),i=M.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return M.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function wPe(e){return new O4(Zm(e),e)}function TO(e,t,n){t===void 0&&(t=wPe);const[r,i]=M.useReducer(a,null),o=SPe({callback(l){if(e)for(const u of l){const{type:c,target:d}=u;if(c==="childList"&&d instanceof HTMLElement&&d.contains(e)){i();break}}}}),s=ZS({callback:i});return Sa(()=>{i(),e?(s==null||s.observe(e),o==null||o.observe(document.body,{childList:!0,subtree:!0})):(s==null||s.disconnect(),o==null||o.disconnect())},[e]),r;function a(l){if(!e)return null;if(e.isConnected===!1){var u;return(u=l??n)!=null?u:null}const c=t(e);return JSON.stringify(l)===JSON.stringify(c)?l:c}}function xPe(e){const t=N4(e);return mV(e,t)}const AO=[];function CPe(e){const t=M.useRef(e),n=Ym(r=>e?r&&r!==AO&&e&&t.current&&e.parentNode===t.current.parentNode?r:I4(e):AO,[e]);return M.useEffect(()=>{t.current=e},[e]),n}function EPe(e){const[t,n]=M.useState(null),r=M.useRef(e),i=M.useCallback(o=>{const s=ex(o.target);s&&n(a=>a?(a.set(s,X3(s)),new Map(a)):null)},[]);return M.useEffect(()=>{const o=r.current;if(e!==o){s(o);const a=e.map(l=>{const u=ex(l);return u?(u.addEventListener("scroll",i,{passive:!0}),[u,X3(u)]):null}).filter(l=>l!=null);n(a.length?new Map(a):null),r.current=e}return()=>{s(e),s(o)};function s(a){a.forEach(l=>{const u=ex(l);u==null||u.removeEventListener("scroll",i)})}},[i,e]),M.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,s)=>wf(o,s),Fs):xV(e):Fs,[e,t])}function kO(e,t){t===void 0&&(t=[]);const n=M.useRef(null);return M.useEffect(()=>{n.current=null},t),M.useEffect(()=>{const r=e!==Fs;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?K1(e,n.current):Fs}function TPe(e){M.useEffect(()=>{if(!XS)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n==null||n()}},e.map(t=>{let{sensor:n}=t;return n}))}function APe(e,t){return M.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:o}=r;return n[i]=s=>{o(s,t)},n},{}),[e,t])}function RV(e){return M.useMemo(()=>e?ePe(e):null,[e])}const rx=[];function kPe(e,t){t===void 0&&(t=Zm);const[n]=e,r=RV(n?eo(n):null),[i,o]=M.useReducer(a,rx),s=ZS({callback:o});return e.length>0&&i===rx&&o(),Sa(()=>{e.length?e.forEach(l=>s==null?void 0:s.observe(l)):(s==null||s.disconnect(),o())},[e]),i;function a(){return e.length?e.map(l=>SV(l)?r:new O4(t(l),l)):rx}}function IV(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Qm(t)?t:e}function PPe(e){let{measure:t}=e;const[n,r]=M.useState(null),i=M.useCallback(u=>{for(const{target:c}of u)if(Qm(c)){r(d=>{const f=t(c);return d?{...d,width:f.width,height:f.height}:f});break}},[t]),o=ZS({callback:i}),s=M.useCallback(u=>{const c=IV(u);o==null||o.disconnect(),c&&(o==null||o.observe(c)),r(c?t(c):null)},[t,o]),[a,l]=q1(s);return M.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const RPe=[{sensor:AV,options:{}},{sensor:TV,options:{}}],IPe={current:{}},J0={draggable:{measure:SO},droppable:{measure:SO,strategy:im.WhileDragging,frequency:Y3.Optimized},dragOverlay:{measure:Zm}};class Mp extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const OPe={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Mp,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:X1},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:J0,measureDroppableContainers:X1,windowRect:null,measuringScheduled:!1},OV={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:X1,draggableNodes:new Map,over:null,measureDroppableContainers:X1},Jm=M.createContext(OV),MV=M.createContext(OPe);function MPe(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Mp}}}function NPe(e,t){switch(t.type){case Fr.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case Fr.DragMove:return e.draggable.active?{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}}:e;case Fr.DragEnd:case Fr.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Fr.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new Mp(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case Fr.SetDroppableDisabled:{const{id:n,key:r,disabled:i}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const s=new Mp(e.droppable.containers);return s.set(n,{...o,disabled:i}),{...e,droppable:{...e.droppable,containers:s}}}case Fr.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const o=new Mp(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function DPe(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=M.useContext(Jm),o=W1(r),s=W1(n==null?void 0:n.id);return M.useEffect(()=>{if(!t&&!r&&o&&s!=null){if(!R4(o)||document.activeElement===o.target)return;const a=i.get(s);if(!a)return;const{activatorNode:l,node:u}=a;if(!l.current&&!u.current)return;requestAnimationFrame(()=>{for(const c of[l.current,u.current]){if(!c)continue;const d=Ake(c);if(d){d.focus();break}}})}},[r,t,i,s,o]),null}function NV(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,o)=>o({transform:i,...r}),n):n}function LPe(e){return M.useMemo(()=>({draggable:{...J0.draggable,...e==null?void 0:e.draggable},droppable:{...J0.droppable,...e==null?void 0:e.droppable},dragOverlay:{...J0.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function $Pe(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const o=M.useRef(!1),{x:s,y:a}=typeof i=="boolean"?{x:i,y:i}:i;Sa(()=>{if(!s&&!a||!t){o.current=!1;return}if(o.current||!r)return;const u=t==null?void 0:t.node.current;if(!u||u.isConnected===!1)return;const c=n(u),d=mV(c,r);if(s||(d.x=0),a||(d.y=0),o.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const f=vV(u);f&&f.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const JS=M.createContext({...Fs,scaleX:1,scaleY:1});var Nl;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Nl||(Nl={}));const FPe=M.memo(function(t){var n,r,i,o;let{id:s,accessibility:a,autoScroll:l=!0,children:u,sensors:c=RPe,collisionDetection:d=qke,measuring:f,modifiers:h,...p}=t;const m=M.useReducer(NPe,void 0,MPe),[b,_]=m,[y,g]=Nke(),[v,S]=M.useState(Nl.Uninitialized),w=v===Nl.Initialized,{draggable:{active:x,nodes:C,translate:A},droppable:{containers:T}}=b,k=x?C.get(x):null,L=M.useRef({initial:null,translated:null}),N=M.useMemo(()=>{var On;return x!=null?{id:x,data:(On=k==null?void 0:k.data)!=null?On:IPe,rect:L}:null},[x,k]),E=M.useRef(null),[P,D]=M.useState(null),[B,R]=M.useState(null),I=tm(p,Object.values(p)),O=YS("DndDescribedBy",s),F=M.useMemo(()=>T.getEnabled(),[T]),U=LPe(f),{droppableRects:V,measureDroppableContainers:H,measuringScheduled:Y}=_Pe(F,{dragging:w,dependencies:[A.x,A.y],config:U.droppable}),Q=yPe(C,x),j=M.useMemo(()=>B?nm(B):null,[B]),K=Aa(),te=bPe(Q,U.draggable.measure);$Pe({activeNode:x?C.get(x):null,config:K.layoutShiftCompensation,initialRect:te,measure:U.draggable.measure});const oe=TO(Q,U.draggable.measure,te),me=TO(Q?Q.parentElement:null),le=M.useRef({activatorEvent:null,active:null,activeNode:Q,collisionRect:null,collisions:null,droppableRects:V,draggableNodes:C,draggingNode:null,draggingNodeRect:null,droppableContainers:T,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ht=T.getNodeFor((n=le.current.over)==null?void 0:n.id),nt=PPe({measure:U.dragOverlay.measure}),$e=(r=nt.nodeRef.current)!=null?r:Q,ct=w?(i=nt.rect)!=null?i:oe:null,Pe=!!(nt.nodeRef.current&&nt.rect),qt=xPe(Pe?null:oe),Sr=RV($e?eo($e):null),Pn=CPe(w?ht??Q:null),bn=kPe(Pn),Wt=NV(h,{transform:{x:A.x-qt.x,y:A.y-qt.y,scaleX:1,scaleY:1},activatorEvent:B,active:N,activeNodeRect:oe,containerNodeRect:me,draggingNodeRect:ct,over:le.current.over,overlayNodeRect:nt.rect,scrollableAncestors:Pn,scrollableAncestorRects:bn,windowRect:Sr}),Rn=j?wf(j,A):null,wr=EPe(Pn),to=kO(wr),Gr=kO(wr,[oe]),ar=wf(Wt,to),Or=ct?Yke(ct,Wt):null,Hr=N&&Or?d({active:N,collisionRect:Or,droppableRects:V,droppableContainers:F,pointerCoordinates:Rn}):null,In=Gke(Hr,"id"),[dn,Ci]=M.useState(null),si=Pe?Wt:wf(Wt,Gr),ji=Xke(si,(o=dn==null?void 0:dn.rect)!=null?o:null,oe),ps=M.useCallback((On,Kt)=>{let{sensor:Mr,options:Cr}=Kt;if(E.current==null)return;const Er=C.get(E.current);if(!Er)return;const qr=On.nativeEvent,Ei=new Mr({active:E.current,activeNode:Er,event:qr,options:Cr,context:le,onStart(ai){const Nr=E.current;if(Nr==null)return;const gs=C.get(Nr);if(!gs)return;const{onDragStart:Vs}=I.current,li={active:{id:Nr,data:gs.data,rect:L}};Cs.unstable_batchedUpdates(()=>{Vs==null||Vs(li),S(Nl.Initializing),_({type:Fr.DragStart,initialCoordinates:ai,active:Nr}),y({type:"onDragStart",event:li})})},onMove(ai){_({type:Fr.DragMove,coordinates:ai})},onEnd:ro(Fr.DragEnd),onCancel:ro(Fr.DragCancel)});Cs.unstable_batchedUpdates(()=>{D(Ei),R(On.nativeEvent)});function ro(ai){return async function(){const{active:gs,collisions:Vs,over:li,scrollAdjustedTranslate:_l}=le.current;let zo=null;if(gs&&_l){const{cancelDrop:Wr}=I.current;zo={activatorEvent:qr,active:gs,collisions:Vs,delta:_l,over:li},ai===Fr.DragEnd&&typeof Wr=="function"&&await Promise.resolve(Wr(zo))&&(ai=Fr.DragCancel)}E.current=null,Cs.unstable_batchedUpdates(()=>{_({type:ai}),S(Nl.Uninitialized),Ci(null),D(null),R(null);const Wr=ai===Fr.DragEnd?"onDragEnd":"onDragCancel";if(zo){const ka=I.current[Wr];ka==null||ka(zo),y({type:Wr,event:zo})}})}}},[C]),xr=M.useCallback((On,Kt)=>(Mr,Cr)=>{const Er=Mr.nativeEvent,qr=C.get(Cr);if(E.current!==null||!qr||Er.dndKit||Er.defaultPrevented)return;const Ei={active:qr};On(Mr,Kt.options,Ei)===!0&&(Er.dndKit={capturedBy:Kt.sensor},E.current=Cr,ps(Mr,Kt))},[C,ps]),no=vPe(c,xr);TPe(c),Sa(()=>{oe&&v===Nl.Initializing&&S(Nl.Initialized)},[oe,v]),M.useEffect(()=>{const{onDragMove:On}=I.current,{active:Kt,activatorEvent:Mr,collisions:Cr,over:Er}=le.current;if(!Kt||!Mr)return;const qr={active:Kt,activatorEvent:Mr,collisions:Cr,delta:{x:ar.x,y:ar.y},over:Er};Cs.unstable_batchedUpdates(()=>{On==null||On(qr),y({type:"onDragMove",event:qr})})},[ar.x,ar.y]),M.useEffect(()=>{const{active:On,activatorEvent:Kt,collisions:Mr,droppableContainers:Cr,scrollAdjustedTranslate:Er}=le.current;if(!On||E.current==null||!Kt||!Er)return;const{onDragOver:qr}=I.current,Ei=Cr.get(In),ro=Ei&&Ei.rect.current?{id:Ei.id,rect:Ei.rect.current,data:Ei.data,disabled:Ei.disabled}:null,ai={active:On,activatorEvent:Kt,collisions:Mr,delta:{x:Er.x,y:Er.y},over:ro};Cs.unstable_batchedUpdates(()=>{Ci(ro),qr==null||qr(ai),y({type:"onDragOver",event:ai})})},[In]),Sa(()=>{le.current={activatorEvent:B,active:N,activeNode:Q,collisionRect:Or,collisions:Hr,droppableRects:V,draggableNodes:C,draggingNode:$e,draggingNodeRect:ct,droppableContainers:T,over:dn,scrollableAncestors:Pn,scrollAdjustedTranslate:ar},L.current={initial:ct,translated:Or}},[N,Q,Hr,Or,C,$e,ct,V,T,dn,Pn,ar]),pPe({...K,delta:A,draggingRect:Or,pointerCoordinates:Rn,scrollableAncestors:Pn,scrollableAncestorRects:bn});const Ta=M.useMemo(()=>({active:N,activeNode:Q,activeNodeRect:oe,activatorEvent:B,collisions:Hr,containerNodeRect:me,dragOverlay:nt,draggableNodes:C,droppableContainers:T,droppableRects:V,over:dn,measureDroppableContainers:H,scrollableAncestors:Pn,scrollableAncestorRects:bn,measuringConfiguration:U,measuringScheduled:Y,windowRect:Sr}),[N,Q,oe,B,Hr,me,nt,C,T,V,dn,H,Pn,bn,U,Y,Sr]),bo=M.useMemo(()=>({activatorEvent:B,activators:no,active:N,activeNodeRect:oe,ariaDescribedById:{draggable:O},dispatch:_,draggableNodes:C,over:dn,measureDroppableContainers:H}),[B,no,N,oe,_,O,C,dn,H]);return vn.createElement(gV.Provider,{value:g},vn.createElement(Jm.Provider,{value:bo},vn.createElement(MV.Provider,{value:Ta},vn.createElement(JS.Provider,{value:ji},u)),vn.createElement(DPe,{disabled:(a==null?void 0:a.restoreFocus)===!1})),vn.createElement($ke,{...a,hiddenTextDescribedById:O}));function Aa(){const On=(P==null?void 0:P.autoScrollEnabled)===!1,Kt=typeof l=="object"?l.enabled===!1:l===!1,Mr=w&&!On&&!Kt;return typeof l=="object"?{...l,enabled:Mr}:{enabled:Mr}}}),BPe=M.createContext(null),PO="button",zPe="Droppable";function tNe(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const o=YS(zPe),{activators:s,activatorEvent:a,active:l,activeNodeRect:u,ariaDescribedById:c,draggableNodes:d,over:f}=M.useContext(Jm),{role:h=PO,roleDescription:p="draggable",tabIndex:m=0}=i??{},b=(l==null?void 0:l.id)===t,_=M.useContext(b?JS:BPe),[y,g]=q1(),[v,S]=q1(),w=APe(s,t),x=tm(n);Sa(()=>(d.set(t,{id:t,key:o,node:y,activatorNode:v,data:x}),()=>{const A=d.get(t);A&&A.key===o&&d.delete(t)}),[d,t]);const C=M.useMemo(()=>({role:h,tabIndex:m,"aria-disabled":r,"aria-pressed":b&&h===PO?!0:void 0,"aria-roledescription":p,"aria-describedby":c.draggable}),[r,h,m,b,p,c.draggable]);return{active:l,activatorEvent:a,activeNodeRect:u,attributes:C,isDragging:b,listeners:r?void 0:w,node:y,over:f,setNodeRef:g,setActivatorNodeRef:S,transform:_}}function UPe(){return M.useContext(MV)}const jPe="Droppable",VPe={timeout:25};function nNe(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const o=YS(jPe),{active:s,dispatch:a,over:l,measureDroppableContainers:u}=M.useContext(Jm),c=M.useRef({disabled:n}),d=M.useRef(!1),f=M.useRef(null),h=M.useRef(null),{disabled:p,updateMeasurementsFor:m,timeout:b}={...VPe,...i},_=tm(m??r),y=M.useCallback(()=>{if(!d.current){d.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{u(Array.isArray(_.current)?_.current:[_.current]),h.current=null},b)},[b]),g=ZS({callback:y,disabled:p||!s}),v=M.useCallback((C,A)=>{g&&(A&&(g.unobserve(A),d.current=!1),C&&g.observe(C))},[g]),[S,w]=q1(v),x=tm(t);return M.useEffect(()=>{!g||!S.current||(g.disconnect(),d.current=!1,g.observe(S.current))},[S,g]),Sa(()=>(a({type:Fr.RegisterDroppable,element:{id:r,key:o,disabled:n,node:S,rect:f,data:x}}),()=>a({type:Fr.UnregisterDroppable,key:o,id:r})),[r]),M.useEffect(()=>{n!==c.current.disabled&&(a({type:Fr.SetDroppableDisabled,id:r,key:o,disabled:n}),c.current.disabled=n)},[r,o,n,a]),{active:s,rect:f,isOver:(l==null?void 0:l.id)===r,node:S,over:l,setNodeRef:w}}function GPe(e){let{animation:t,children:n}=e;const[r,i]=M.useState(null),[o,s]=M.useState(null),a=W1(n);return!n&&!r&&a&&i(a),Sa(()=>{if(!o)return;const l=r==null?void 0:r.key,u=r==null?void 0:r.props.id;if(l==null||u==null){i(null);return}Promise.resolve(t(u,o)).then(()=>{i(null)})},[t,r,o]),vn.createElement(vn.Fragment,null,n,r?M.cloneElement(r,{ref:s}):null)}const HPe={x:0,y:0,scaleX:1,scaleY:1};function qPe(e){let{children:t}=e;return vn.createElement(Jm.Provider,{value:OV},vn.createElement(JS.Provider,{value:HPe},t))}const WPe={position:"fixed",touchAction:"none"},KPe=e=>R4(e)?"transform 250ms ease":void 0,XPe=M.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:o,className:s,rect:a,style:l,transform:u,transition:c=KPe}=e;if(!a)return null;const d=i?u:{...u,scaleX:1,scaleY:1},f={...WPe,width:a.width,height:a.height,top:a.top,left:a.left,transform:rm.Transform.toString(d),transformOrigin:i&&r?zke(r,a):void 0,transition:typeof c=="function"?c(r):c,...l};return vn.createElement(n,{className:s,style:f,ref:t},o)}),QPe=e=>t=>{let{active:n,dragOverlay:r}=t;const i={},{styles:o,className:s}=e;if(o!=null&&o.active)for(const[a,l]of Object.entries(o.active))l!==void 0&&(i[a]=n.node.style.getPropertyValue(a),n.node.style.setProperty(a,l));if(o!=null&&o.dragOverlay)for(const[a,l]of Object.entries(o.dragOverlay))l!==void 0&&r.node.style.setProperty(a,l);return s!=null&&s.active&&n.node.classList.add(s.active),s!=null&&s.dragOverlay&&r.node.classList.add(s.dragOverlay),function(){for(const[l,u]of Object.entries(i))n.node.style.setProperty(l,u);s!=null&&s.active&&n.node.classList.remove(s.active)}},YPe=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:rm.Transform.toString(t)},{transform:rm.Transform.toString(n)}]},ZPe={duration:250,easing:"ease",keyframes:YPe,sideEffects:QPe({styles:{active:{opacity:"0"}}})};function JPe(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return QS((o,s)=>{if(t===null)return;const a=n.get(o);if(!a)return;const l=a.node.current;if(!l)return;const u=IV(s);if(!u)return;const{transform:c}=eo(s).getComputedStyle(s),d=yV(c);if(!d)return;const f=typeof t=="function"?t:e6e(t);return CV(l,i.draggable.measure),f({active:{id:o,data:a.data,node:l,rect:i.draggable.measure(l)},draggableNodes:n,dragOverlay:{node:s,rect:i.dragOverlay.measure(u)},droppableContainers:r,measuringConfiguration:i,transform:d})})}function e6e(e){const{duration:t,easing:n,sideEffects:r,keyframes:i}={...ZPe,...e};return o=>{let{active:s,dragOverlay:a,transform:l,...u}=o;if(!t)return;const c={x:a.rect.left-s.rect.left,y:a.rect.top-s.rect.top},d={scaleX:l.scaleX!==1?s.rect.width*l.scaleX/a.rect.width:1,scaleY:l.scaleY!==1?s.rect.height*l.scaleY/a.rect.height:1},f={x:l.x-c.x,y:l.y-c.y,...d},h=i({...u,active:s,dragOverlay:a,transform:{initial:l,final:f}}),[p]=h,m=h[h.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;const b=r==null?void 0:r({active:s,dragOverlay:a,...u}),_=a.node.animate(h,{duration:t,easing:n,fill:"forwards"});return new Promise(y=>{_.onfinish=()=>{b==null||b(),y()}})}}let RO=0;function t6e(e){return M.useMemo(()=>{if(e!=null)return RO++,RO},[e])}const n6e=vn.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:i,transition:o,modifiers:s,wrapperElement:a="div",className:l,zIndex:u=999}=e;const{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggableNodes:p,droppableContainers:m,dragOverlay:b,over:_,measuringConfiguration:y,scrollableAncestors:g,scrollableAncestorRects:v,windowRect:S}=UPe(),w=M.useContext(JS),x=t6e(d==null?void 0:d.id),C=NV(s,{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggingNodeRect:b.rect,over:_,overlayNodeRect:b.rect,scrollableAncestors:g,scrollableAncestorRects:v,transform:w,windowRect:S}),A=N4(f),T=JPe({config:r,draggableNodes:p,droppableContainers:m,measuringConfiguration:y}),k=A?b.setRef:void 0;return vn.createElement(qPe,null,vn.createElement(GPe,{animation:T},d&&x?vn.createElement(XPe,{key:x,id:d.id,ref:k,as:a,activatorEvent:c,adjustScale:t,className:l,transition:o,rect:A,style:{zIndex:u,...i},transform:C},n):null))}),r6e=()=>w$(),i6e=p$,o6e=Fi([rxe,BT],({nodes:e},t)=>t==="nodes"?e.viewport.zoom:1),s6e=()=>{const e=i6e(o6e);return M.useCallback(({activatorEvent:n,draggingNodeRect:r,transform:i})=>{if(r&&n){const o=nm(n);if(!o)return i;const s=o.x-r.left,a=o.y-r.top,l=i.x+s-r.width/2,u=i.y+a-r.height/2,c=i.scaleX*e,d=i.scaleY*e;return{x:l,y:u,scaleX:c,scaleY:d}}return i},[e])};function a6e(e){return Z.jsx(FPe,{...e})}const p0=28,IO={w:p0,h:p0,maxW:p0,maxH:p0,shadow:"dark-lg",borderRadius:"lg",opacity:.3,bg:"base.800",color:"base.50",_dark:{borderColor:"base.200",bg:"base.900",color:"base.100"}},l6e=e=>{if(!e.dragData)return null;if(e.dragData.payloadType==="NODE_FIELD"){const{field:t,fieldTemplate:n}=e.dragData.payload;return Z.jsx(V1,{sx:{position:"relative",p:2,px:3,opacity:.7,bg:"base.300",borderRadius:"base",boxShadow:"dark-lg",whiteSpace:"nowrap",fontSize:"sm"},children:Z.jsx(oV,{children:t.label||n.title})})}if(e.dragData.payloadType==="IMAGE_DTO"){const{thumbnail_url:t,width:n,height:r}=e.dragData.payload.imageDTO;return Z.jsx(V1,{sx:{position:"relative",width:"full",height:"full",display:"flex",alignItems:"center",justifyContent:"center"},children:Z.jsx(T4,{sx:{...IO},objectFit:"contain",src:t,width:n,height:r})})}return e.dragData.payloadType==="IMAGE_DTOS"?Z.jsxs(A4,{sx:{position:"relative",alignItems:"center",justifyContent:"center",flexDir:"column",...IO},children:[Z.jsx(V3,{children:e.dragData.payload.imageDTOs.length}),Z.jsx(V3,{size:"sm",children:"Images"})]}):null},u6e=M.memo(l6e),c6e=e=>{const[t,n]=M.useState(null),r=ge("images"),i=r6e(),o=M.useCallback(d=>{r.trace({dragData:mn(d.active.data.current)},"Drag started");const f=d.active.data.current;f&&n(f)},[r]),s=M.useCallback(d=>{var h;r.trace({dragData:mn(d.active.data.current)},"Drag ended");const f=(h=d.over)==null?void 0:h.data.current;!t||!f||(i(zz({overData:f,activeData:t})),n(null))},[t,i,r]),a=bO(kV,{activationConstraint:{distance:10}}),l=bO(PV,{activationConstraint:{distance:10}}),u=Fke(a,l),c=s6e();return Z.jsxs(a6e,{onDragStart:o,onDragEnd:s,sensors:u,collisionDetection:Kke,autoScroll:!1,children:[e.children,Z.jsx(n6e,{dropAnimation:null,modifiers:[c],style:{width:"min-content",height:"min-content",cursor:"none",userSelect:"none",padding:"10rem"},children:Z.jsx(WAe,{children:t&&Z.jsx(BAe.div,{layout:!0,initial:{opacity:0,scale:.7},animate:{opacity:1,scale:1,transition:{duration:.1}},children:Z.jsx(u6e,{dragData:t})},"overlay-drag-image")})})]})},d6e=M.memo(c6e),OO=Ru(void 0),MO=Ru(void 0),f6e=M.lazy(()=>KM(()=>import("./App-dbf8f111.js"),["./App-dbf8f111.js","./menu-c9cc8c3d.js","./App-6125620a.css"],import.meta.url)),h6e=M.lazy(()=>KM(()=>import("./ThemeLocaleProvider-a3380d0c.js"),["./ThemeLocaleProvider-a3380d0c.js","./menu-c9cc8c3d.js","./ThemeLocaleProvider-90f0fcd3.css"],import.meta.url)),p6e=({apiUrl:e,token:t,config:n,headerComponent:r,middleware:i,projectId:o,selectedImage:s,customStarUi:a})=>(M.useEffect(()=>(t&&$f.set(t),e&&_g.set(e),o&&bg.set(o),qB(),i&&i.length>0?JC(GR(),...i):JC(GR()),()=>{_g.set(void 0),$f.set(void 0),bg.set(void 0)}),[e,t,i,o]),M.useEffect(()=>(a&&OO.set(a),()=>{OO.set(void 0)}),[a]),M.useEffect(()=>(r&&MO.set(r),()=>{MO.set(void 0)}),[r]),Z.jsx(vn.StrictMode,{children:Z.jsx(Jce,{store:nxe,children:Z.jsx(vn.Suspense,{fallback:Z.jsx(tke,{}),children:Z.jsx(h6e,{children:Z.jsx(d6e,{children:Z.jsx(f6e,{config:n,selectedImage:s})})})})})})),g6e=M.memo(p6e);ix.createRoot(document.getElementById("root")).render(Z.jsx(g6e,{}));export{pc as $,Es as A,Ege as B,yo as C,ou as D,Ys as E,ZIe as F,dT as G,Xwe as H,zu as I,$Ce as J,wu as K,JT as L,zMe as M,$Me as N,WAe as O,kge as P,BAe as Q,QMe as R,sg as S,r4 as T,iV as U,i4 as V,FMe as W,BMe as X,LCe as Y,DCe as Z,UMe as _,i5 as a,yee as a$,Uc as a0,u1 as a1,Cq as a2,vn as a3,uEe as a4,XMe as a5,bEe as a6,Za as a7,TU as a8,O4e as a9,SU as aA,CCe as aB,Cs as aC,F4 as aD,ZT as aE,B9e as aF,QRe as aG,dIe as aH,fIe as aI,zRe as aJ,FRe as aK,oV as aL,wp as aM,z0e as aN,ez as aO,x9e as aP,$Ie as aQ,Z5 as aR,LT as aS,eMe as aT,T4 as aU,JAe as aV,we as aW,nIe as aX,cIe as aY,Nde as aZ,S5 as a_,GMe as aa,A3 as ab,LMe as ac,KMe as ad,Fi as ae,_T as af,wm as ag,i6e as ah,KRe as ai,Mm as aj,CL as ak,QL as al,sb as am,ge as an,r6e as ao,A9e as ap,Tn as aq,sa as ar,V1 as as,A4 as at,V3 as au,rxe as av,BT as aw,uIe as ax,wCe as ay,YT as az,C_ as b,SR as b$,P6e as b0,K9e as b1,M9e as b2,tMe as b3,J9e as b4,y0e as b5,O9e as b6,L9e as b7,Rne as b8,$ye as b9,VIe as bA,y6e as bB,w6e as bC,x6e as bD,C6e as bE,E6e as bF,Q6e as bG,Y6e as bH,f9e as bI,h9e as bJ,R6e as bK,i8e as bL,A6e as bM,H6e as bN,M6e as bO,kSe as bP,k6e as bQ,Z6e as bR,T6e as bS,u8e as bT,I6e as bU,Kk as bV,O6e as bW,Xk as bX,F6e as bY,W6e as bZ,fMe as b_,Fye as ba,H9e as bb,W9e as bc,D9e as bd,Q9e as be,WRe as bf,T9e as bg,tIe as bh,sre as bi,vIe as bj,yIe as bk,JRe as bl,qIe as bm,nNe as bn,tNe as bo,kB as bp,HIe as bq,YRe as br,ZRe as bs,oIe as bt,LC as bu,eIe as bv,jl as bw,vy as bx,GIe as by,jIe as bz,CK as c,v6e as c$,D6e as c0,YIe as c1,ASe as c2,N6e as c3,P8 as c4,m9e as c5,y9e as c6,v9e as c7,B6e as c8,_9e as c9,fT as cA,rs as cB,j6e as cC,Fm as cD,Z9e as cE,K7 as cF,jOe as cG,HOe as cH,KOe as cI,WOe as cJ,VOe as cK,GOe as cL,qOe as cM,Fwe as cN,u9e as cO,iOe as cP,jRe as cQ,URe as cR,lOe as cS,tte as cT,YOe as cU,tOe as cV,SOe as cW,wOe as cX,L6e as cY,cMe as cZ,AOe as c_,z6e as ca,b9e as cb,U6e as cc,S9e as cd,Le as ce,OO as cf,SIe as cg,_Ie as ch,bIe as ci,$de as cj,I0e as ck,HB as cl,wD as cm,BRe as cn,Bz as co,rIe as cp,f1 as cq,oF as cr,DMe as cs,iIe as ct,Ey as cu,h1 as cv,k9e as cw,Iu as cx,R9e as cy,Kr as cz,dee as d,S8e as d$,TOe as d0,Lb as d1,xne as d2,EOe as d3,Cm as d4,xMe as d5,uMe as d6,kMe as d7,lMe as d8,xOe as d9,hIe as dA,pIe as dB,Qc as dC,Qk as dD,Ode as dE,Id as dF,L6 as dG,Q0e as dH,X0e as dI,kIe as dJ,PIe as dK,RIe as dL,Mde as dM,IIe as dN,Z$ as dO,CIe as dP,TIe as dQ,DIe as dR,LIe as dS,OIe as dT,Pb as dU,NIe as dV,MIe as dW,wIe as dX,_we as dY,wR as dZ,xIe as d_,bOe as da,PMe as db,POe as dc,AMe as dd,ROe as de,_Oe as df,wne as dg,pMe as dh,COe as di,$6e as dj,dMe as dk,kOe as dl,QOe as dm,UIe as dn,FIe as dp,BIe as dq,zIe as dr,KIe as ds,XIe as dt,aF as du,WIe as dv,O_ as dw,D6 as dx,AIe as dy,gIe as dz,U7 as e,_6e as e$,c8e as e0,y8e as e1,X6e as e2,v8e as e3,_8e as e4,hMe as e5,p9e as e6,_5 as e7,Mye as e8,K6e as e9,hte as eA,g8e as eB,m8e as eC,p8e as eD,b5 as eE,d9e as eF,hwe as eG,j9e as eH,pe as eI,pi as eJ,Ln as eK,ha as eL,aMe as eM,EMe as eN,vMe as eO,F9e as eP,yMe as eQ,TMe as eR,CMe as eS,$9e as eT,bMe as eU,_Me as eV,gMe as eW,wMe as eX,b6e as eY,mMe as eZ,SMe as e_,cwe as ea,yD as eb,IMe as ec,x8e as ed,Ine as ee,w8e as ef,xs as eg,q6e as eh,s8e as ei,S6e as ej,pte as ek,l8e as el,g9e as em,t8e as en,n8e as eo,r8e as ep,J6e as eq,e8e as er,Pne as es,f8e as et,d8e as eu,R8e as ev,Y8e as ew,NRe as ex,Z8e as ey,b8e as ez,qN as f,iG as f$,hB as f0,nOe as f1,hC as f2,Sye as f3,dOe as f4,i9e as f5,r9e as f6,oOe as f7,xye as f8,aOe as f9,gOe as fA,NOe as fB,fOe as fC,zOe as fD,UOe as fE,ZOe as fF,Hwe as fG,e9e as fH,n9e as fI,t9e as fJ,pye as fK,OMe as fL,FD as fM,PR as fN,mn as fO,Aye as fP,zg as fQ,bu as fR,DOe as fS,LOe as fT,FOe as fU,BOe as fV,s9e as fW,$Oe as fX,yOe as fY,TB as fZ,rz as f_,PB as fa,qF as fb,$m as fc,JIe as fd,Fa as fe,c9e as ff,Y9e as fg,p$ as fh,wye as fi,a9e as fj,l9e as fk,eOe as fl,IOe as fm,OOe as fn,VRe as fo,x1 as fp,Je as fq,MOe as fr,sOe as fs,Pye as ft,rOe as fu,XOe as fv,uOe as fw,cOe as fx,pOe as fy,hOe as fz,t7 as g,J8e as g$,At as g0,uRe as g1,kRe as g2,ARe as g3,W8e as g4,vRe as g5,RRe as g6,Y0e as g7,B8e as g8,iRe as g9,U8e as gA,DT as gB,vwe as gC,X8e as gD,cRe as gE,lRe as gF,oRe as gG,A8e as gH,k8e as gI,$Re as gJ,rMe as gK,nMe as gL,yRe as gM,fRe as gN,dRe as gO,G0e as gP,q8e as gQ,F8e as gR,CRe as gS,xRe as gT,gRe as gU,hRe as gV,pRe as gW,DRe as gX,SRe as gY,LRe as gZ,eRe as g_,qh as ga,tRe as gb,z8e as gc,Fb as gd,rRe as ge,L8e as gf,nRe as gg,$8e as gh,V8e as gi,T8e as gj,E8e as gk,C8e as gl,PRe as gm,X7 as gn,_D as go,$f as gp,Xne as gq,I8e as gr,O8e as gs,M8e as gt,TRe as gu,H8e as gv,G8e as gw,Zne as gx,ERe as gy,K0e as gz,zi as h,D8e as h0,N8e as h1,MRe as h2,P8e as h3,K8e as h4,W0e as h5,V0e as h6,H0e as h7,q0e as h8,RMe as h9,jB as ha,sIe as hb,J as hc,$T as hd,z9e as he,U9e as hf,dte as hg,F0e as hh,MO as hi,NMe as hj,AU as hk,WMe as hl,HMe as hm,jMe as hn,qMe as ho,aa as hp,VMe as hq,MMe as hr,aEe as hs,J3e as ht,YMe as hu,JMe as hv,eNe as hw,iee as i,A_ as j,_m as k,s5 as l,GN as m,f5 as n,N7 as o,oh as p,WN as q,VW as r,ute as s,Sm as t,M as u,Z as v,as as w,hr as x,mf as y,oi as z}; diff --git a/invokeai/frontend/web/dist/assets/index-f83c2c5c.js b/invokeai/frontend/web/dist/assets/index-f83c2c5c.js deleted file mode 100644 index 2e689a3aaf..0000000000 --- a/invokeai/frontend/web/dist/assets/index-f83c2c5c.js +++ /dev/null @@ -1,128 +0,0 @@ -var wV=Object.defineProperty;var xV=(e,t,n)=>t in e?wV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var XS=(e,t,n)=>(xV(e,typeof t!="symbol"?t+"":t,n),n);function TI(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 ut=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Dc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function K1(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var AI={exports:{}},X1={},kI={exports:{}},Ot={};/** - * @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 nm=Symbol.for("react.element"),CV=Symbol.for("react.portal"),EV=Symbol.for("react.fragment"),TV=Symbol.for("react.strict_mode"),AV=Symbol.for("react.profiler"),kV=Symbol.for("react.provider"),PV=Symbol.for("react.context"),RV=Symbol.for("react.forward_ref"),OV=Symbol.for("react.suspense"),IV=Symbol.for("react.memo"),MV=Symbol.for("react.lazy"),O4=Symbol.iterator;function NV(e){return e===null||typeof e!="object"?null:(e=O4&&e[O4]||e["@@iterator"],typeof e=="function"?e:null)}var PI={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},RI=Object.assign,OI={};function Wf(e,t,n){this.props=e,this.context=t,this.refs=OI,this.updater=n||PI}Wf.prototype.isReactComponent={};Wf.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")};Wf.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function II(){}II.prototype=Wf.prototype;function q3(e,t,n){this.props=e,this.context=t,this.refs=OI,this.updater=n||PI}var W3=q3.prototype=new II;W3.constructor=q3;RI(W3,Wf.prototype);W3.isPureReactComponent=!0;var I4=Array.isArray,MI=Object.prototype.hasOwnProperty,K3={current:null},NI={key:!0,ref:!0,__self:!0,__source:!0};function DI(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)MI.call(t,r)&&!NI.hasOwnProperty(r)&&(i[r]=t[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,U=R[F];if(0>>1;Fi(Y,I))Qi(j,Y)?(R[F]=j,R[Q]=I,F=Q):(R[F]=Y,R[H]=I,F=H);else if(Qi(j,I))R[F]=j,R[Q]=I,F=Q;else break e}}return O}function i(R,O){var I=R.sortIndex-O.sortIndex;return I!==0?I:R.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,a=s.now();e.unstable_now=function(){return s.now()-a}}var l=[],u=[],c=1,d=null,f=3,h=!1,p=!1,m=!1,b=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,v=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 O=n(u);O!==null;){if(O.callback===null)r(u);else if(O.startTime<=R)r(u),O.sortIndex=O.expirationTime,t(l,O);else break;O=n(u)}}function y(R){if(m=!1,g(R),!p)if(n(l)!==null)p=!0,D(S);else{var O=n(u);O!==null&&B(y,O.startTime-R)}}function S(R,O){p=!1,m&&(m=!1,_(E),E=-1),h=!0;var I=f;try{for(g(O),d=n(l);d!==null&&(!(d.expirationTime>O)||R&&!k());){var F=d.callback;if(typeof F=="function"){d.callback=null,f=d.priorityLevel;var U=F(d.expirationTime<=O);O=e.unstable_now(),typeof U=="function"?d.callback=U:d===n(l)&&r(l),g(O)}else r(l);d=n(l)}if(d!==null)var V=!0;else{var H=n(u);H!==null&&B(y,H.startTime-O),V=!1}return V}finally{d=null,f=I,h=!1}}var w=!1,x=null,E=-1,A=5,T=-1;function k(){return!(e.unstable_now()-TR||125F?(R.sortIndex=I,t(u,R),n(l)===null&&R===n(u)&&(m?(_(E),E=-1):m=!0,B(y,I-F))):(R.sortIndex=U,t(l,R),p||h||(p=!0,D(S))),R},e.unstable_shouldYield=k,e.unstable_wrapCallback=function(R){var O=f;return function(){var I=f;f=O;try{return R.apply(this,arguments)}finally{f=I}}}})(BI);FI.exports=BI;var HV=FI.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 zI=M,Ro=HV;function oe(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Jw=Object.prototype.hasOwnProperty,qV=/^[: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]*$/,D4={},L4={};function WV(e){return Jw.call(L4,e)?!0:Jw.call(D4,e)?!1:qV.test(e)?L4[e]=!0:(D4[e]=!0,!1)}function KV(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 XV(e,t,n,r){if(t===null||typeof t>"u"||KV(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 Yi(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 bi={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){bi[e]=new Yi(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];bi[t]=new Yi(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){bi[e]=new Yi(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){bi[e]=new Yi(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){bi[e]=new Yi(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){bi[e]=new Yi(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){bi[e]=new Yi(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){bi[e]=new Yi(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){bi[e]=new Yi(e,5,!1,e.toLowerCase(),null,!1,!1)});var Q3=/[\-:]([a-z])/g;function Y3(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(Q3,Y3);bi[t]=new Yi(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(Q3,Y3);bi[t]=new Yi(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(Q3,Y3);bi[t]=new Yi(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){bi[e]=new Yi(e,1,!1,e.toLowerCase(),null,!1,!1)});bi.xlinkHref=new Yi("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){bi[e]=new Yi(e,1,!1,e.toLowerCase(),null,!0,!0)});function Z3(e,t,n,r){var i=bi.hasOwnProperty(t)?bi[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{ZS=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Wh(e):""}function QV(e){switch(e.tag){case 5:return Wh(e.type);case 16:return Wh("Lazy");case 13:return Wh("Suspense");case 19:return Wh("SuspenseList");case 0:case 2:case 15:return e=JS(e.type,!1),e;case 11:return e=JS(e.type.render,!1),e;case 1:return e=JS(e.type,!0),e;default:return""}}function rx(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 Pd:return"Fragment";case kd:return"Portal";case ex:return"Profiler";case J3:return"StrictMode";case tx:return"Suspense";case nx:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case VI:return(e.displayName||"Context")+".Consumer";case jI:return(e._context.displayName||"Context")+".Provider";case e5:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case t5:return t=e.displayName||null,t!==null?t:rx(e.type)||"Memo";case Tl:t=e._payload,e=e._init;try{return rx(e(t))}catch{}}return null}function YV(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 rx(t);case 8:return t===J3?"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 su(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function HI(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ZV(e){var t=HI(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 ey(e){e._valueTracker||(e._valueTracker=ZV(e))}function qI(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=HI(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Z0(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 ix(e,t){var n=t.checked;return rr({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function F4(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=su(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 WI(e,t){t=t.checked,t!=null&&Z3(e,"checked",t,!1)}function ox(e,t){WI(e,t);var n=su(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")?sx(e,t.type,n):t.hasOwnProperty("defaultValue")&&sx(e,t.type,su(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function B4(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 sx(e,t,n){(t!=="number"||Z0(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Kh=Array.isArray;function qd(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=ty.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Op(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var op={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},JV=["Webkit","ms","Moz","O"];Object.keys(op).forEach(function(e){JV.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),op[t]=op[e]})});function YI(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||op.hasOwnProperty(e)&&op[e]?(""+t).trim():t+"px"}function ZI(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=YI(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var eG=rr({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 ux(e,t){if(t){if(eG[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(oe(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(oe(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(oe(61))}if(t.style!=null&&typeof t.style!="object")throw Error(oe(62))}}function cx(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 dx=null;function n5(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var fx=null,Wd=null,Kd=null;function j4(e){if(e=om(e)){if(typeof fx!="function")throw Error(oe(280));var t=e.stateNode;t&&(t=e_(t),fx(e.stateNode,e.type,t))}}function JI(e){Wd?Kd?Kd.push(e):Kd=[e]:Wd=e}function e9(){if(Wd){var e=Wd,t=Kd;if(Kd=Wd=null,j4(e),t)for(e=0;e>>=0,e===0?32:31-(dG(e)/fG|0)|0}var ny=64,ry=4194304;function Xh(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 nv(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=Xh(a):(o&=s,o!==0&&(r=Xh(o)))}else s=n&~i,s!==0?r=Xh(s):o!==0&&(r=Xh(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 rm(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-As(t),e[t]=n}function mG(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=ap),Y4=String.fromCharCode(32),Z4=!1;function b9(e,t){switch(e){case"keyup":return GG.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function S9(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Rd=!1;function qG(e,t){switch(e){case"compositionend":return S9(t);case"keypress":return t.which!==32?null:(Z4=!0,Y4);case"textInput":return e=t.data,e===Y4&&Z4?null:e;default:return null}}function WG(e,t){if(Rd)return e==="compositionend"||!c5&&b9(e,t)?(e=v9(),m0=a5=$l=null,Rd=!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=nA(n)}}function E9(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?E9(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function T9(){for(var e=window,t=Z0();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Z0(e.document)}return t}function d5(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 nH(e){var t=T9(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&E9(n.ownerDocument.documentElement,n)){if(r!==null&&d5(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=rA(n,o);var s=rA(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,Od=null,vx=null,up=null,_x=!1;function iA(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;_x||Od==null||Od!==Z0(r)||(r=Od,"selectionStart"in r&&d5(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}),up&&$p(up,r)||(up=r,r=ov(vx,"onSelect"),0Nd||(e.current=Ex[Nd],Ex[Nd]=null,Nd--)}function Cn(e,t){Nd++,Ex[Nd]=e.current,e.current=t}var au={},$i=wu(au),co=wu(!1),yc=au;function vf(e,t){var n=e.type.contextTypes;if(!n)return au;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 fo(e){return e=e.childContextTypes,e!=null}function av(){zn(co),zn($i)}function dA(e,t,n){if($i.current!==au)throw Error(oe(168));Cn($i,t),Cn(co,n)}function D9(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(oe(108,YV(e)||"Unknown",i));return rr({},n,r)}function lv(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||au,yc=$i.current,Cn($i,e),Cn(co,co.current),!0}function fA(e,t,n){var r=e.stateNode;if(!r)throw Error(oe(169));n?(e=D9(e,t,yc),r.__reactInternalMemoizedMergedChildContext=e,zn(co),zn($i),Cn($i,e)):zn(co),Cn(co,n)}var Fa=null,t_=!1,h2=!1;function L9(e){Fa===null?Fa=[e]:Fa.push(e)}function pH(e){t_=!0,L9(e)}function xu(){if(!h2&&Fa!==null){h2=!0;var e=0,t=sn;try{var n=Fa;for(sn=1;e>=s,i-=s,Va=1<<32-As(t)+i|n<E?(A=x,x=null):A=x.sibling;var T=f(_,x,g[E],y);if(T===null){x===null&&(x=A);break}e&&x&&T.alternate===null&&t(_,x),v=o(T,v,E),w===null?S=T:w.sibling=T,w=T,x=A}if(E===g.length)return n(_,x),qn&&Gu(_,E),S;if(x===null){for(;EE?(A=x,x=null):A=x.sibling;var k=f(_,x,T.value,y);if(k===null){x===null&&(x=A);break}e&&x&&k.alternate===null&&t(_,x),v=o(k,v,E),w===null?S=k:w.sibling=k,w=k,x=A}if(T.done)return n(_,x),qn&&Gu(_,E),S;if(x===null){for(;!T.done;E++,T=g.next())T=d(_,T.value,y),T!==null&&(v=o(T,v,E),w===null?S=T:w.sibling=T,w=T);return qn&&Gu(_,E),S}for(x=r(_,x);!T.done;E++,T=g.next())T=h(x,_,E,T.value,y),T!==null&&(e&&T.alternate!==null&&x.delete(T.key===null?E:T.key),v=o(T,v,E),w===null?S=T:w.sibling=T,w=T);return e&&x.forEach(function(L){return t(_,L)}),qn&&Gu(_,E),S}function b(_,v,g,y){if(typeof g=="object"&&g!==null&&g.type===Pd&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Jm:e:{for(var S=g.key,w=v;w!==null;){if(w.key===S){if(S=g.type,S===Pd){if(w.tag===7){n(_,w.sibling),v=i(w,g.props.children),v.return=_,_=v;break e}}else if(w.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Tl&&_A(S)===w.type){n(_,w.sibling),v=i(w,g.props),v.ref=Ch(_,w,g),v.return=_,_=v;break e}n(_,w);break}else t(_,w);w=w.sibling}g.type===Pd?(v=dc(g.props.children,_.mode,y,g.key),v.return=_,_=v):(y=C0(g.type,g.key,g.props,null,_.mode,y),y.ref=Ch(_,v,g),y.return=_,_=y)}return s(_);case kd:e:{for(w=g.key;v!==null;){if(v.key===w)if(v.tag===4&&v.stateNode.containerInfo===g.containerInfo&&v.stateNode.implementation===g.implementation){n(_,v.sibling),v=i(v,g.children||[]),v.return=_,_=v;break e}else{n(_,v);break}else t(_,v);v=v.sibling}v=S2(g,_.mode,y),v.return=_,_=v}return s(_);case Tl:return w=g._init,b(_,v,w(g._payload),y)}if(Kh(g))return p(_,v,g,y);if(_h(g))return m(_,v,g,y);cy(_,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,v!==null&&v.tag===6?(n(_,v.sibling),v=i(v,g),v.return=_,_=v):(n(_,v),v=b2(g,_.mode,y),v.return=_,_=v),s(_)):n(_,v)}return b}var bf=G9(!0),H9=G9(!1),sm={},sa=wu(sm),Up=wu(sm),jp=wu(sm);function ec(e){if(e===sm)throw Error(oe(174));return e}function b5(e,t){switch(Cn(jp,t),Cn(Up,e),Cn(sa,sm),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:lx(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=lx(t,e)}zn(sa),Cn(sa,t)}function Sf(){zn(sa),zn(Up),zn(jp)}function q9(e){ec(jp.current);var t=ec(sa.current),n=lx(t,e.type);t!==n&&(Cn(Up,e),Cn(sa,n))}function S5(e){Up.current===e&&(zn(sa),zn(Up))}var Jn=wu(0);function pv(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 p2=[];function w5(){for(var e=0;en?n:4,e(!0);var r=g2.transition;g2.transition={};try{e(!1),t()}finally{sn=n,g2.transition=r}}function lM(){return es().memoizedState}function vH(e,t,n){var r=Ql(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},uM(e))cM(t,n);else if(n=z9(e,t,n,r),n!==null){var i=qi();ks(n,e,r,i),dM(n,t,r)}}function _H(e,t,n){var r=Ql(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(uM(e))cM(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,Ms(a,s)){var l=t.interleaved;l===null?(i.next=i,v5(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=z9(e,t,i,r),n!==null&&(i=qi(),ks(n,e,r,i),dM(n,t,r))}}function uM(e){var t=e.alternate;return e===nr||t!==null&&t===nr}function cM(e,t){cp=gv=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function dM(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,i5(e,n)}}var mv={readContext:Jo,useCallback:Ti,useContext:Ti,useEffect:Ti,useImperativeHandle:Ti,useInsertionEffect:Ti,useLayoutEffect:Ti,useMemo:Ti,useReducer:Ti,useRef:Ti,useState:Ti,useDebugValue:Ti,useDeferredValue:Ti,useTransition:Ti,useMutableSource:Ti,useSyncExternalStore:Ti,useId:Ti,unstable_isNewReconciler:!1},bH={readContext:Jo,useCallback:function(e,t){return qs().memoizedState=[e,t===void 0?null:t],e},useContext:Jo,useEffect:SA,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,b0(4194308,4,rM.bind(null,t,e),n)},useLayoutEffect:function(e,t){return b0(4194308,4,e,t)},useInsertionEffect:function(e,t){return b0(4,2,e,t)},useMemo:function(e,t){var n=qs();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=qs();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=vH.bind(null,nr,e),[r.memoizedState,e]},useRef:function(e){var t=qs();return e={current:e},t.memoizedState=e},useState:bA,useDebugValue:A5,useDeferredValue:function(e){return qs().memoizedState=e},useTransition:function(){var e=bA(!1),t=e[0];return e=yH.bind(null,e[1]),qs().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=nr,i=qs();if(qn){if(n===void 0)throw Error(oe(407));n=n()}else{if(n=t(),ti===null)throw Error(oe(349));_c&30||X9(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,SA(Y9.bind(null,r,o,e),[e]),r.flags|=2048,Hp(9,Q9.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=qs(),t=ti.identifierPrefix;if(qn){var n=Ga,r=Va;n=(r&~(1<<32-As(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Vp++,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[Ys]=t,e[zp]=r,bM(e,t,!1,!1),t.stateNode=e;e:{switch(s=cx(n,r),n){case"dialog":On("cancel",e),On("close",e),i=r;break;case"iframe":case"object":case"embed":On("load",e),i=r;break;case"video":case"audio":for(i=0;ixf&&(t.flags|=128,r=!0,Eh(o,!1),t.lanes=4194304)}else{if(!r)if(e=pv(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Eh(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!qn)return Ai(t),null}else 2*mr()-o.renderingStartTime>xf&&n!==1073741824&&(t.flags|=128,r=!0,Eh(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=mr(),t.sibling=null,n=Jn.current,Cn(Jn,r?n&1|2:n&1),t):(Ai(t),null);case 22:case 23:return M5(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?xo&1073741824&&(Ai(t),t.subtreeFlags&6&&(t.flags|=8192)):Ai(t),null;case 24:return null;case 25:return null}throw Error(oe(156,t.tag))}function kH(e,t){switch(h5(t),t.tag){case 1:return fo(t.type)&&av(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Sf(),zn(co),zn($i),w5(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return S5(t),null;case 13:if(zn(Jn),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(oe(340));_f()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return zn(Jn),null;case 4:return Sf(),null;case 10:return y5(t.type._context),null;case 22:case 23:return M5(),null;case 24:return null;default:return null}}var fy=!1,Ii=!1,PH=typeof WeakSet=="function"?WeakSet:Set,Ie=null;function Fd(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ar(e,t,r)}else n.current=null}function $x(e,t,n){try{n()}catch(r){ar(e,t,r)}}var RA=!1;function RH(e,t){if(bx=rv,e=T9(),d5(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(Sx={focusedElem:e,selectionRange:n},rv=!1,Ie=t;Ie!==null;)if(t=Ie,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ie=e;else for(;Ie!==null;){t=Ie;try{var p=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var m=p.memoizedProps,b=p.memoizedState,_=t.stateNode,v=_.getSnapshotBeforeUpdate(t.elementType===t.type?m:ys(t.type,m),b);_.__reactInternalSnapshotBeforeUpdate=v}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(oe(163))}}catch(y){ar(t,t.return,y)}if(e=t.sibling,e!==null){e.return=t.return,Ie=e;break}Ie=t.return}return p=RA,RA=!1,p}function dp(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&&$x(t,n,o)}i=i.next}while(i!==r)}}function i_(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 Fx(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 xM(e){var t=e.alternate;t!==null&&(e.alternate=null,xM(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ys],delete t[zp],delete t[Cx],delete t[fH],delete t[hH])),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 CM(e){return e.tag===5||e.tag===3||e.tag===4}function OA(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||CM(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 Bx(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=sv));else if(r!==4&&(e=e.child,e!==null))for(Bx(e,t,n),e=e.sibling;e!==null;)Bx(e,t,n),e=e.sibling}function zx(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(zx(e,t,n),e=e.sibling;e!==null;)zx(e,t,n),e=e.sibling}var hi=null,vs=!1;function _l(e,t,n){for(n=n.child;n!==null;)EM(e,t,n),n=n.sibling}function EM(e,t,n){if(oa&&typeof oa.onCommitFiberUnmount=="function")try{oa.onCommitFiberUnmount(Q1,n)}catch{}switch(n.tag){case 5:Ii||Fd(n,t);case 6:var r=hi,i=vs;hi=null,_l(e,t,n),hi=r,vs=i,hi!==null&&(vs?(e=hi,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):hi.removeChild(n.stateNode));break;case 18:hi!==null&&(vs?(e=hi,n=n.stateNode,e.nodeType===8?f2(e.parentNode,n):e.nodeType===1&&f2(e,n),Dp(e)):f2(hi,n.stateNode));break;case 4:r=hi,i=vs,hi=n.stateNode.containerInfo,vs=!0,_l(e,t,n),hi=r,vs=i;break;case 0:case 11:case 14:case 15:if(!Ii&&(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)&&$x(n,t,s),i=i.next}while(i!==r)}_l(e,t,n);break;case 1:if(!Ii&&(Fd(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){ar(n,t,a)}_l(e,t,n);break;case 21:_l(e,t,n);break;case 22:n.mode&1?(Ii=(r=Ii)||n.memoizedState!==null,_l(e,t,n),Ii=r):_l(e,t,n);break;default:_l(e,t,n)}}function IA(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new PH),t.forEach(function(r){var i=BH.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function gs(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=s),r&=~o}if(r=i,r=mr()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*IH(r/1960))-r,10e?16:e,Fl===null)var r=!1;else{if(e=Fl,Fl=null,_v=0,$t&6)throw Error(oe(331));var i=$t;for($t|=4,Ie=e.current;Ie!==null;){var o=Ie,s=o.child;if(Ie.flags&16){var a=o.deletions;if(a!==null){for(var l=0;lmr()-O5?cc(e,0):R5|=n),ho(e,t)}function MM(e,t){t===0&&(e.mode&1?(t=ry,ry<<=1,!(ry&130023424)&&(ry=4194304)):t=1);var n=qi();e=nl(e,t),e!==null&&(rm(e,t,n),ho(e,n))}function FH(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),MM(e,n)}function BH(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(oe(314))}r!==null&&r.delete(t),MM(e,n)}var NM;NM=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||co.current)so=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return so=!1,TH(e,t,n);so=!!(e.flags&131072)}else so=!1,qn&&t.flags&1048576&&$9(t,cv,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;S0(e,t),e=t.pendingProps;var i=vf(t,$i.current);Qd(t,n),i=C5(null,t,r,e,i,n);var o=E5();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,fo(r)?(o=!0,lv(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,_5(t),i.updater=n_,t.stateNode=i,i._reactInternals=t,Rx(t,r,e,n),t=Mx(null,t,r,!0,o,n)):(t.tag=0,qn&&o&&f5(t),Gi(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(S0(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=UH(r),e=ys(r,e),i){case 0:t=Ix(null,t,r,e,n);break e;case 1:t=AA(null,t,r,e,n);break e;case 11:t=EA(null,t,r,e,n);break e;case 14:t=TA(null,t,r,ys(r.type,e),n);break e}throw Error(oe(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ys(r,i),Ix(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ys(r,i),AA(e,t,r,i,n);case 3:e:{if(yM(t),e===null)throw Error(oe(387));r=t.pendingProps,o=t.memoizedState,i=o.element,U9(e,t),hv(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=wf(Error(oe(423)),t),t=kA(e,t,r,n,i);break e}else if(r!==i){i=wf(Error(oe(424)),t),t=kA(e,t,r,n,i);break e}else for(To=Wl(t.stateNode.containerInfo.firstChild),ko=t,qn=!0,bs=null,n=H9(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(_f(),r===i){t=rl(e,t,n);break e}Gi(e,t,r,n)}t=t.child}return t;case 5:return q9(t),e===null&&Ax(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,s=i.children,wx(r,i)?s=null:o!==null&&wx(r,o)&&(t.flags|=32),mM(e,t),Gi(e,t,s,n),t.child;case 6:return e===null&&Ax(t),null;case 13:return vM(e,t,n);case 4:return b5(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=bf(t,null,r,n):Gi(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ys(r,i),EA(e,t,r,i,n);case 7:return Gi(e,t,t.pendingProps,n),t.child;case 8:return Gi(e,t,t.pendingProps.children,n),t.child;case 12:return Gi(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,Cn(dv,r._currentValue),r._currentValue=s,o!==null)if(Ms(o.value,s)){if(o.children===i.children&&!co.current){t=rl(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=Wa(-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),kx(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(oe(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),kx(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}Gi(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Qd(t,n),i=Jo(i),r=r(i),t.flags|=1,Gi(e,t,r,n),t.child;case 14:return r=t.type,i=ys(r,t.pendingProps),i=ys(r.type,i),TA(e,t,r,i,n);case 15:return pM(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ys(r,i),S0(e,t),t.tag=1,fo(r)?(e=!0,lv(t)):e=!1,Qd(t,n),V9(t,r,i),Rx(t,r,i,n),Mx(null,t,r,!0,e,n);case 19:return _M(e,t,n);case 22:return gM(e,t,n)}throw Error(oe(156,t.tag))};function DM(e,t){return a9(e,t)}function zH(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 Qo(e,t,n,r){return new zH(e,t,n,r)}function D5(e){return e=e.prototype,!(!e||!e.isReactComponent)}function UH(e){if(typeof e=="function")return D5(e)?1:0;if(e!=null){if(e=e.$$typeof,e===e5)return 11;if(e===t5)return 14}return 2}function Yl(e,t){var n=e.alternate;return n===null?(n=Qo(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 C0(e,t,n,r,i,o){var s=2;if(r=e,typeof e=="function")D5(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case Pd:return dc(n.children,i,o,t);case J3:s=8,i|=8;break;case ex:return e=Qo(12,n,t,i|2),e.elementType=ex,e.lanes=o,e;case tx:return e=Qo(13,n,t,i),e.elementType=tx,e.lanes=o,e;case nx:return e=Qo(19,n,t,i),e.elementType=nx,e.lanes=o,e;case GI:return s_(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case jI:s=10;break e;case VI:s=9;break e;case e5:s=11;break e;case t5:s=14;break e;case Tl:s=16,r=null;break e}throw Error(oe(130,e==null?e:typeof e,""))}return t=Qo(s,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function dc(e,t,n,r){return e=Qo(7,e,r,t),e.lanes=n,e}function s_(e,t,n,r){return e=Qo(22,e,r,t),e.elementType=GI,e.lanes=n,e.stateNode={isHidden:!1},e}function b2(e,t,n){return e=Qo(6,e,null,t),e.lanes=n,e}function S2(e,t,n){return t=Qo(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function jH(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=t2(0),this.expirationTimes=t2(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=t2(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function L5(e,t,n,r,i,o,s,a,l){return e=new jH(e,t,n,a,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Qo(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},_5(o),e}function VH(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(BM)}catch(e){console.error(e)}}BM(),$I.exports=Do;var ws=$I.exports;const H6e=Dc(ws);var zA=ws;Zw.createRoot=zA.createRoot,Zw.hydrateRoot=zA.hydrateRoot;const KH="modulepreload",XH=function(e,t){return new URL(e,t).href},UA={},zM=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=XH(o,r),o in UA)return;UA[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":KH,s||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),s)return new Promise((c,d)=>{u.addEventListener("load",c),u.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o})};function ei(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:d_(e)?2:f_(e)?3:0}function Zl(e,t){return lu(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function E0(e,t){return lu(e)===2?e.get(t):e[t]}function UM(e,t,n){var r=lu(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function jM(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function d_(e){return tq&&e instanceof Map}function f_(e){return nq&&e instanceof Set}function Wr(e){return e.o||e.t}function U5(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=GM(e);delete t[pt];for(var n=Jd(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=QH),Object.freeze(e),t&&il(e,function(n,r){return am(r,!0)},!0)),e}function QH(){ei(2)}function j5(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function aa(e){var t=qx[e];return t||ei(18,e),t}function V5(e,t){qx[e]||(qx[e]=t)}function Wp(){return Xp}function w2(e,t){t&&(aa("Patches"),e.u=[],e.s=[],e.v=t)}function wv(e){Hx(e),e.p.forEach(YH),e.p=null}function Hx(e){e===Xp&&(Xp=e.l)}function jA(e){return Xp={p:[],l:Xp,h:e,m:!0,_:0}}function YH(e){var t=e[pt];t.i===0||t.i===1?t.j():t.g=!0}function x2(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.O||aa("ES5").S(t,e,r),r?(n[pt].P&&(wv(t),ei(4)),po(e)&&(e=xv(t,e),t.l||Cv(t,e)),t.u&&aa("Patches").M(n[pt].t,e,t.u,t.s)):e=xv(t,n,[]),wv(t),t.u&&t.v(t.u,t.s),e!==p_?e:void 0}function xv(e,t,n){if(j5(t))return t;var r=t[pt];if(!r)return il(t,function(a,l){return VA(e,r,t,a,l,n)},!0),t;if(r.A!==e)return t;if(!r.P)return Cv(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=U5(r.k):r.o,o=i,s=!1;r.i===3&&(o=new Set(i),i.clear(),s=!0),il(o,function(a,l){return VA(e,r,i,a,l,n,s)}),Cv(e,i,!1),n&&e.u&&aa("Patches").N(r,n,e.u,e.s)}return r.o}function VA(e,t,n,r,i,o,s){if(Wi(i)){var a=xv(e,i,o&&t&&t.i!==3&&!Zl(t.R,r)?o.concat(r):void 0);if(UM(n,r,a),!Wi(a))return;e.m=!1}else s&&n.add(i);if(po(i)&&!j5(i)){if(!e.h.D&&e._<1)return;xv(e,i),t&&t.A.l||Cv(e,i)}}function Cv(e,t,n){n===void 0&&(n=!1),!e.l&&e.h.D&&e.m&&am(t,n)}function C2(e,t){var n=e[pt];return(n?Wr(n):e)[t]}function GA(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 oo(e){e.P||(e.P=!0,e.l&&oo(e.l))}function E2(e){e.o||(e.o=U5(e.t))}function Kp(e,t,n){var r=d_(t)?aa("MapSet").F(t,n):f_(t)?aa("MapSet").T(t,n):e.O?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Wp(),P:!1,I:!1,R:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=a,u=Qp;s&&(l=[a],u=Yh);var c=Proxy.revocable(l,u),d=c.revoke,f=c.proxy;return a.k=f,a.j=d,f}(t,n):aa("ES5").J(t,n);return(n?n.A:Wp()).p.push(r),r}function h_(e){return Wi(e)||ei(22,e),function t(n){if(!po(n))return n;var r,i=n[pt],o=lu(n);if(i){if(!i.P&&(i.i<4||!aa("ES5").K(i)))return i.t;i.I=!0,r=HA(n,o),i.I=!1}else r=HA(n,o);return il(r,function(s,a){i&&E0(i.t,s)===a||UM(r,s,t(a))}),o===3?new Set(r):r}(e)}function HA(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return U5(e)}function G5(){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[pt];return Qp.get(l,o)},set:function(l){var u=this[pt];Qp.set(u,o,l)}},a}function t(o){for(var s=o.length-1;s>=0;s--){var a=o[s][pt];if(!a.P)switch(a.i){case 5:r(a)&&oo(a);break;case 4:n(a)&&oo(a)}}}function n(o){for(var s=o.t,a=o.k,l=Jd(a),u=l.length-1;u>=0;u--){var c=l[u];if(c!==pt){var d=s[c];if(d===void 0&&!Zl(s,c))return!0;var f=a[c],h=f&&f[pt];if(h?h.t!==d:!jM(f,d))return!0}}var p=!!s[pt];return l.length!==Jd(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);if(a&&!a.get)return!0;for(var l=0;l1?_-1:0),g=1;g<_;g++)v[g-1]=arguments[g];return l.produce(m,function(y){var S;return(S=o).call.apply(S,[b,y].concat(v))})}}var u;if(typeof o!="function"&&ei(6),s!==void 0&&typeof s!="function"&&ei(7),po(i)){var c=jA(r),d=Kp(r,i,void 0),f=!0;try{u=o(d),f=!1}finally{f?wv(c):Hx(c)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return w2(c,s),x2(m,c)},function(m){throw wv(c),m}):(w2(c,s),x2(u,c))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===p_&&(u=void 0),r.D&&am(u,!0),s){var h=[],p=[];aa("Patches").M(i,u,h,p),s(h,p)}return u}ei(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var s=aa("Patches").$;return Wi(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},e}(),Oo=new HM,qM=Oo.produce,W5=Oo.produceWithPatches.bind(Oo),iq=Oo.setAutoFreeze.bind(Oo),oq=Oo.setUseProxies.bind(Oo),Wx=Oo.applyPatches.bind(Oo),sq=Oo.createDraft.bind(Oo),aq=Oo.finishDraft.bind(Oo);const Cu=qM,lq=Object.freeze(Object.defineProperty({__proto__:null,Immer:HM,applyPatches:Wx,castDraft:JH,castImmutable:eq,createDraft:sq,current:h_,default:Cu,enableAllPlugins:ZH,enableES5:G5,enableMapSet:VM,enablePatches:H5,finishDraft:aq,freeze:am,immerable:Zd,isDraft:Wi,isDraftable:po,nothing:p_,original:z5,produce:qM,produceWithPatches:W5,setAutoFreeze:iq,setUseProxies:oq},Symbol.toStringTag,{value:"Module"}));function Yp(e){"@babel/helpers - typeof";return Yp=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},Yp(e)}function uq(e,t){if(Yp(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Yp(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function cq(e){var t=uq(e,"string");return Yp(t)==="symbol"?t:String(t)}function dq(e,t,n){return t=cq(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function KA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function XA(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(pi(1));return n(lm)(e,t)}if(typeof e!="function")throw new Error(pi(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(pi(3));return o}function d(m){if(typeof m!="function")throw new Error(pi(4));if(l)throw new Error(pi(5));var b=!0;return u(),a.push(m),function(){if(b){if(l)throw new Error(pi(6));b=!1,u();var v=a.indexOf(m);a.splice(v,1),s=null}}}function f(m){if(!fq(m))throw new Error(pi(7));if(typeof m.type>"u")throw new Error(pi(8));if(l)throw new Error(pi(9));try{l=!0,o=i(o,m)}finally{l=!1}for(var b=s=a,_=0;_"u")throw new Error(pi(12));if(typeof n(void 0,{type:Cf.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(pi(13))})}function Qf(e){for(var t=Object.keys(e),n={},r=0;r"u")throw u&&u.type,new Error(pi(14));d[h]=b,c=c||b!==m}return c=c||o.length!==Object.keys(l).length,c?d:l}}function YA(e,t){return function(){return t(e.apply(this,arguments))}}function KM(e,t){if(typeof e=="function")return YA(e,t);if(typeof e!="object"||e===null)throw new Error(pi(16));var n={};for(var r in e){var i=e[r];typeof i=="function"&&(n[r]=YA(i,t))}return n}function Ef(){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 Ev}function i(a,l){r(a)===Ev&&(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 XM=function(t,n){return t===n};function yq(e){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o1?t-1:0),r=1;r0&&o[o.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]",value:e};if(typeof e!="object"||e===null||o!=null&&o.has(e))return!1;for(var a=r!=null?r(e):Object.entries(e),l=i.length>0,u=function(b,_){var v=t?t+"."+b:b;if(l){var g=i.some(function(y){return y instanceof RegExp?y.test(v):v===y});if(g)return"continue"}if(!n(_))return{value:{keyPath:v,value:_}};if(typeof _=="object"&&(s=rN(_,v,n,r,i,o),s))return{value:s}},c=0,d=a;c-1}function Nq(e){return""+e}function lN(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 Dq(e){return typeof e=="function"}function uN(e,t,n,r){n===void 0&&(n=[]);var i=typeof t=="function"?lN(t):[t,n,r],o=i[0],s=i[1],a=i[2],l;if(Dq(e))l=function(){return Kx(e())};else{var u=Kx(e);l=function(){return u}}function c(d,f){d===void 0&&(d=l());var h=uu([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(Wi(p)){var b=p,_=m(b,f);return _===void 0?p:_}else{if(po(p))return Cu(p,function(v){return m(v,f)});var _=m(p,f);if(_===void 0){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return _}return p},d)}return c.getInitialState=l,c}function Lq(e,t){return e+"/"+t}function er(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:Kx(e.initialState),r=e.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(c){var d=r[c],f=Lq(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"?lN(e.extraReducers):[e.extraReducers],d=c[0],f=d===void 0?{}:d,h=c[1],p=h===void 0?[]:h,m=c[2],b=m===void 0?void 0:m,_=ao(ao({},f),s);return uN(n,function(v){for(var g in _)v.addCase(g,_[g]);for(var y=0,S=p;y0;if(v){var g=p.filter(function(y){return u(b,y,m)}).length>0;g&&(m.ids=Object.keys(m.entities))}}function f(p,m){return h([p],m)}function h(p,m){var b=cN(p,e,m),_=b[0],v=b[1];d(v,m),n(_,m)}return{removeAll:zq(l),addOne:pr(t),addMany:pr(n),setOne:pr(r),setMany:pr(i),setAll:pr(o),updateOne:pr(c),updateMany:pr(d),upsertOne:pr(f),upsertMany:pr(h),removeOne:pr(s),removeMany:pr(a)}}function Uq(e,t){var n=dN(e),r=n.removeOne,i=n.removeMany,o=n.removeAll;function s(v,g){return a([v],g)}function a(v,g){v=fc(v);var y=v.filter(function(S){return!(pp(S,e)in g.entities)});y.length!==0&&b(y,g)}function l(v,g){return u([v],g)}function u(v,g){v=fc(v),v.length!==0&&b(v,g)}function c(v,g){v=fc(v),g.entities={},g.ids=[],a(v,g)}function d(v,g){return f([v],g)}function f(v,g){for(var y=!1,S=0,w=v;S-1;return n&&r}function dm(e){return typeof e[0]=="function"&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function y_(){for(var e=[],t=0;t0)for(var g=h.getState(),y=Array.from(n.values()),S=0,w=y;SMath.floor(e/t)*t,Ss=(e,t)=>Math.round(e/t)*t;var sW=typeof global=="object"&&global&&global.Object===Object&&global;const PN=sW;var aW=typeof self=="object"&&self&&self.Object===Object&&self,lW=PN||aW||Function("return this")();const _a=lW;var uW=_a.Symbol;const ts=uW;var RN=Object.prototype,cW=RN.hasOwnProperty,dW=RN.toString,Ah=ts?ts.toStringTag:void 0;function fW(e){var t=cW.call(e,Ah),n=e[Ah];try{e[Ah]=void 0;var r=!0}catch{}var i=dW.call(e);return r&&(t?e[Ah]=n:delete e[Ah]),i}var hW=Object.prototype,pW=hW.toString;function gW(e){return pW.call(e)}var mW="[object Null]",yW="[object Undefined]",ok=ts?ts.toStringTag:void 0;function ba(e){return e==null?e===void 0?yW:mW:ok&&ok in Object(e)?fW(e):gW(e)}function Io(e){return e!=null&&typeof e=="object"}var vW="[object Symbol]";function v_(e){return typeof e=="symbol"||Io(e)&&ba(e)==vW}function Z5(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=JW)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function rK(e){return function(){return e}}var iK=function(){try{var e=Bc(Object,"defineProperty");return e({},"",{}),e}catch{}}();const Pv=iK;var oK=Pv?function(e,t){return Pv(e,"toString",{configurable:!0,enumerable:!1,value:rK(t),writable:!0})}:__;const sK=oK;var aK=nK(sK);const NN=aK;function DN(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var hK=9007199254740991,pK=/^(?:0|[1-9]\d*)$/;function eE(e,t){var n=typeof e;return t=t??hK,!!t&&(n=="number"||n!="symbol"&&pK.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=yK}function zc(e){return e!=null&&tE(e.length)&&!J5(e)}function BN(e,t,n){if(!Ki(n))return!1;var r=typeof t;return(r=="number"?zc(n)&&eE(t,n.length):r=="string"&&t in n)?gm(n[t],e):!1}function zN(e){return FN(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&&BN(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r-1}function IX(e,t){var n=this.__data__,r=S_(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function cl(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?WN(a,t-1,n,r,i):lE(i,a):r||(i[i.length]=a)}return i}function XX(e){var t=e==null?0:e.length;return t?WN(e,1):[]}function QX(e){return NN($N(e,void 0,XX),e+"")}var YX=HN(Object.getPrototypeOf,Object);const uE=YX;var ZX="[object Object]",JX=Function.prototype,eQ=Object.prototype,KN=JX.toString,tQ=eQ.hasOwnProperty,nQ=KN.call(Object);function XN(e){if(!Io(e)||ba(e)!=ZX)return!1;var t=uE(e);if(t===null)return!0;var n=tQ.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&KN.call(n)==nQ}function QN(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:QN(e,t,n)}var iQ="\\ud800-\\udfff",oQ="\\u0300-\\u036f",sQ="\\ufe20-\\ufe2f",aQ="\\u20d0-\\u20ff",lQ=oQ+sQ+aQ,uQ="\\ufe0e\\ufe0f",cQ="\\u200d",dQ=RegExp("["+cQ+iQ+lQ+uQ+"]");function cE(e){return dQ.test(e)}function fQ(e){return e.split("")}var YN="\\ud800-\\udfff",hQ="\\u0300-\\u036f",pQ="\\ufe20-\\ufe2f",gQ="\\u20d0-\\u20ff",mQ=hQ+pQ+gQ,yQ="\\ufe0e\\ufe0f",vQ="["+YN+"]",Zx="["+mQ+"]",Jx="\\ud83c[\\udffb-\\udfff]",_Q="(?:"+Zx+"|"+Jx+")",ZN="[^"+YN+"]",JN="(?:\\ud83c[\\udde6-\\uddff]){2}",e7="[\\ud800-\\udbff][\\udc00-\\udfff]",bQ="\\u200d",t7=_Q+"?",n7="["+yQ+"]?",SQ="(?:"+bQ+"(?:"+[ZN,JN,e7].join("|")+")"+n7+t7+")*",wQ=n7+t7+SQ,xQ="(?:"+[ZN+Zx+"?",Zx,JN,e7,vQ].join("|")+")",CQ=RegExp(Jx+"(?="+Jx+")|"+xQ+wQ,"g");function EQ(e){return e.match(CQ)||[]}function TQ(e){return cE(e)?EQ(e):fQ(e)}function AQ(e){return function(t){t=x_(t);var n=cE(t)?TQ(t):void 0,r=n?n[0]:t.charAt(0),i=n?rQ(n,1).join(""):t.slice(1);return r[e]()+i}}var kQ=AQ("toUpperCase");const r7=kQ;function i7(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 Bl(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=A0(n),n=n===n?n:0),t!==void 0&&(t=A0(t),t=t===t?t:0),vY(A0(e),t,n)}function _Y(){this.__data__=new cl,this.size=0}function bY(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function SY(e){return this.__data__.get(e)}function wY(e){return this.__data__.has(e)}var xY=200;function CY(e,t){var n=this.__data__;if(n instanceof cl){var r=n.__data__;if(!tg||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&iJ?new ng:void 0;for(o.set(e,t),o.set(t,e);++d1),o}),Yf(e,C7(e),n),r&&(n=mp(n,vee|_ee|bee,yee));for(var i=t.length;i--;)z7(n,t[i]);return n});const A_=See;var wee=D7("length");const xee=wee;var U7="\\ud800-\\udfff",Cee="\\u0300-\\u036f",Eee="\\ufe20-\\ufe2f",Tee="\\u20d0-\\u20ff",Aee=Cee+Eee+Tee,kee="\\ufe0e\\ufe0f",Pee="["+U7+"]",oC="["+Aee+"]",sC="\\ud83c[\\udffb-\\udfff]",Ree="(?:"+oC+"|"+sC+")",j7="[^"+U7+"]",V7="(?:\\ud83c[\\udde6-\\uddff]){2}",G7="[\\ud800-\\udbff][\\udc00-\\udfff]",Oee="\\u200d",H7=Ree+"?",q7="["+kee+"]?",Iee="(?:"+Oee+"(?:"+[j7,V7,G7].join("|")+")"+q7+H7+")*",Mee=q7+H7+Iee,Nee="(?:"+[j7+oC+"?",oC,V7,G7,Pee].join("|")+")",Bk=RegExp(sC+"(?="+sC+")|"+Nee+Mee,"g");function Dee(e){for(var t=Bk.lastIndex=0;Bk.test(e);)++t;return t}function Lee(e){return cE(e)?Dee(e):xee(e)}function $ee(e,t,n,r,i){return i(e,function(o,s,a){n=r?(r=!1,o):t(n,o,s,a)}),n}function aC(e,t,n){var r=Pr(e)?i7:$ee,i=arguments.length<3;return r(e,Zf(t),n,i,Jf)}var Fee="[object Map]",Bee="[object Set]";function k_(e){if(e==null)return 0;if(zc(e))return F7(e)?Lee(e):e.length;var t=kf(e);return t==Fee||t==Bee?e.size:qN(e).length}function zee(e,t){var n;return Jf(e,function(r,i,o){return n=t(r,i,o),!n}),!!n}function yp(e,t,n){var r=Pr(e)?R7:zee;return n&&BN(e,t,n)&&(t=void 0),r(e,Zf(t))}var Uee=yY(function(e,t,n){return e+(n?" ":"")+r7(t)});const jee=Uee;var Vee=1/0,Gee=rf&&1/hE(new rf([,-0]))[1]==Vee?function(e){return new rf(e)}:ZW;const Hee=Gee;var qee=200;function Wee(e,t,n){var r=-1,i=fK,o=e.length,s=!0,a=[],l=a;if(n)s=!1,i=tee;else if(o>=qee){var u=t?null:Hee(e);if(u)return hE(u);s=!1,i=O7,l=new ng}else l=t?[]:a;e:for(;++r{mee(e,t.payload)}}}),{configChanged:Xee}=K7.actions,Qee=K7.reducer,q6e={"sd-1":"Stable Diffusion 1.x","sd-2":"Stable Diffusion 2.x",sdxl:"Stable Diffusion XL","sdxl-refiner":"Stable Diffusion XL Refiner"},W6e={"sd-1":"SD1","sd-2":"SD2",sdxl:"SDXL","sdxl-refiner":"SDXLR"},Yee={"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]}},K6e={lycoris:"LyCORIS",diffusers:"Diffusers"},X6e=0,Zee=4294967295;var Ut;(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})(Ut||(Ut={}));var lC;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(lC||(lC={}));const ke=Ut.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Nl=e=>{switch(typeof e){case"undefined":return ke.undefined;case"string":return ke.string;case"number":return isNaN(e)?ke.nan:ke.number;case"boolean":return ke.boolean;case"function":return ke.function;case"bigint":return ke.bigint;case"symbol":return ke.symbol;case"object":return Array.isArray(e)?ke.array:e===null?ke.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?ke.promise:typeof Map<"u"&&e instanceof Map?ke.map:typeof Set<"u"&&e instanceof Set?ke.set:typeof Date<"u"&&e instanceof Date?ke.date:ke.object;default:return ke.unknown}},ce=Ut.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"]),Jee=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class Rs 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()}}Rs.create=e=>new Rs(e);const rg=(e,t)=>{let n;switch(e.code){case ce.invalid_type:e.received===ke.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case ce.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Ut.jsonStringifyReplacer)}`;break;case ce.unrecognized_keys:n=`Unrecognized key(s) in object: ${Ut.joinValues(e.keys,", ")}`;break;case ce.invalid_union:n="Invalid input";break;case ce.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Ut.joinValues(e.options)}`;break;case ce.invalid_enum_value:n=`Invalid enum value. Expected ${Ut.joinValues(e.options)}, received '${e.received}'`;break;case ce.invalid_arguments:n="Invalid function arguments";break;case ce.invalid_return_type:n="Invalid function return type";break;case ce.invalid_date:n="Invalid date";break;case ce.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}"`:Ut.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case ce.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 ce.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 ce.custom:n="Invalid input";break;case ce.invalid_intersection_types:n="Intersection results could not be merged";break;case ce.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case ce.not_finite:n="Number must be finite";break;default:n=t.defaultError,Ut.assertNever(e)}return{message:n}};let X7=rg;function ete(e){X7=e}function Iv(){return X7}const Mv=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}},tte=[];function Pe(e,t){const n=Mv({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,Iv(),rg].filter(r=>!!r)});e.common.issues.push(n)}class Fi{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 ct;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 Fi.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 ct;o.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const ct=Object.freeze({status:"aborted"}),Q7=e=>({status:"dirty",value:e}),Xi=e=>({status:"valid",value:e}),uC=e=>e.status==="aborted",cC=e=>e.status==="dirty",ig=e=>e.status==="valid",Nv=e=>typeof Promise<"u"&&e instanceof Promise;var Ze;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(Ze||(Ze={}));class pa{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 Uk=(e,t)=>{if(ig(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 Rs(e.common.issues);return this._error=n,this._error}}};function gt(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 bt{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return Nl(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:Nl(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Fi,ctx:{common:t.parent.common,data:t.data,parsedType:Nl(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(Nv(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:Nl(t)},o=this._parseSync({data:t,path:i.path,parent:i});return Uk(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:Nl(t)},i=this._parse({data:t,path:r.path,parent:r}),o=await(Nv(i)?i:Promise.resolve(i));return Uk(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:ce.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 Ds({schema:this,typeName:nt.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Ka.create(this,this._def)}nullable(){return Ec.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Os.create(this,this._def)}promise(){return Rf.create(this,this._def)}or(t){return lg.create([this,t],this._def)}and(t){return ug.create(this,t,this._def)}transform(t){return new Ds({...gt(this._def),schema:this,typeName:nt.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new pg({...gt(this._def),innerType:this,defaultValue:n,typeName:nt.ZodDefault})}brand(){return new Z7({typeName:nt.ZodBranded,type:this,...gt(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new Fv({...gt(this._def),innerType:this,catchValue:n,typeName:nt.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return bm.create(this,t)}readonly(){return zv.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const nte=/^c[^\s-]{8,}$/i,rte=/^[a-z][a-z0-9]*$/,ite=/[0-9A-HJKMNP-TV-Z]{26}/,ote=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ste=/^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ate=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,lte=/^(((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}))$/,ute=/^(([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})))$/,cte=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 dte(e,t){return!!((t==="v4"||!t)&<e.test(e)||(t==="v6"||!t)&&ute.test(e))}class Ts extends bt{constructor(){super(...arguments),this._regex=(t,n,r)=>this.refinement(i=>t.test(i),{validation:n,code:ce.invalid_string,...Ze.errToObj(r)}),this.nonempty=t=>this.min(1,Ze.errToObj(t)),this.trim=()=>new Ts({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new Ts({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new Ts({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==ke.string){const o=this._getOrReturnCtx(t);return Pe(o,{code:ce.invalid_type,expected:ke.string,received:o.parsedType}),ct}const r=new Fi;let i;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(i=this._getOrReturnCtx(t,i),Pe(i,{code:ce.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,...Ze.errToObj(t==null?void 0:t.message)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...Ze.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n==null?void 0:n.position,...Ze.errToObj(n==null?void 0:n.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...Ze.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...Ze.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...Ze.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...Ze.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...Ze.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 Ts({checks:[],typeName:nt.ZodString,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...gt(e)})};function fte(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 du extends bt{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)!==ke.number){const o=this._getOrReturnCtx(t);return Pe(o,{code:ce.invalid_type,expected:ke.number,received:o.parsedType}),ct}let r;const i=new Fi;for(const o of this._def.checks)o.kind==="int"?Ut.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),Pe(r,{code:ce.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),Pe(r,{code:ce.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?fte(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),Pe(r,{code:ce.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),Pe(r,{code:ce.not_finite,message:o.message}),i.dirty()):Ut.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,Ze.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ze.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ze.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ze.toString(n))}setLimit(t,n,r,i){return new du({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ze.toString(i)}]})}_addCheck(t){return new du({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:Ze.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Ze.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Ze.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Ze.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Ze.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ze.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:Ze.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Ze.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Ze.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"&&Ut.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 du({checks:[],typeName:nt.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...gt(e)});class fu extends bt{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)!==ke.bigint){const o=this._getOrReturnCtx(t);return Pe(o,{code:ce.invalid_type,expected:ke.bigint,received:o.parsedType}),ct}let r;const i=new Fi;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),Pe(r,{code:ce.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),Pe(r,{code:ce.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):Ut.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,Ze.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ze.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ze.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ze.toString(n))}setLimit(t,n,r,i){return new fu({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ze.toString(i)}]})}_addCheck(t){return new fu({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Ze.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Ze.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Ze.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Ze.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ze.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 fu({checks:[],typeName:nt.ZodBigInt,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...gt(e)})};class og extends bt{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==ke.boolean){const r=this._getOrReturnCtx(t);return Pe(r,{code:ce.invalid_type,expected:ke.boolean,received:r.parsedType}),ct}return Xi(t.data)}}og.create=e=>new og({typeName:nt.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...gt(e)});class xc extends bt{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==ke.date){const o=this._getOrReturnCtx(t);return Pe(o,{code:ce.invalid_type,expected:ke.date,received:o.parsedType}),ct}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return Pe(o,{code:ce.invalid_date}),ct}const r=new Fi;let i;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(i=this._getOrReturnCtx(t,i),Pe(i,{code:ce.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Ut.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new xc({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:Ze.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:Ze.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 xc({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:nt.ZodDate,...gt(e)});class Dv extends bt{_parse(t){if(this._getType(t)!==ke.symbol){const r=this._getOrReturnCtx(t);return Pe(r,{code:ce.invalid_type,expected:ke.symbol,received:r.parsedType}),ct}return Xi(t.data)}}Dv.create=e=>new Dv({typeName:nt.ZodSymbol,...gt(e)});class sg extends bt{_parse(t){if(this._getType(t)!==ke.undefined){const r=this._getOrReturnCtx(t);return Pe(r,{code:ce.invalid_type,expected:ke.undefined,received:r.parsedType}),ct}return Xi(t.data)}}sg.create=e=>new sg({typeName:nt.ZodUndefined,...gt(e)});class ag extends bt{_parse(t){if(this._getType(t)!==ke.null){const r=this._getOrReturnCtx(t);return Pe(r,{code:ce.invalid_type,expected:ke.null,received:r.parsedType}),ct}return Xi(t.data)}}ag.create=e=>new ag({typeName:nt.ZodNull,...gt(e)});class Pf extends bt{constructor(){super(...arguments),this._any=!0}_parse(t){return Xi(t.data)}}Pf.create=e=>new Pf({typeName:nt.ZodAny,...gt(e)});class hc extends bt{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Xi(t.data)}}hc.create=e=>new hc({typeName:nt.ZodUnknown,...gt(e)});class ol extends bt{_parse(t){const n=this._getOrReturnCtx(t);return Pe(n,{code:ce.invalid_type,expected:ke.never,received:n.parsedType}),ct}}ol.create=e=>new ol({typeName:nt.ZodNever,...gt(e)});class Lv extends bt{_parse(t){if(this._getType(t)!==ke.undefined){const r=this._getOrReturnCtx(t);return Pe(r,{code:ce.invalid_type,expected:ke.void,received:r.parsedType}),ct}return Xi(t.data)}}Lv.create=e=>new Lv({typeName:nt.ZodVoid,...gt(e)});class Os extends bt{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),i=this._def;if(n.parsedType!==ke.array)return Pe(n,{code:ce.invalid_type,expected:ke.array,received:n.parsedType}),ct;if(i.exactLength!==null){const s=n.data.length>i.exactLength.value,a=n.data.lengthi.maxLength.value&&(Pe(n,{code:ce.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 pa(n,s,n.path,a)))).then(s=>Fi.mergeArray(r,s));const o=[...n.data].map((s,a)=>i.type._parseSync(new pa(n,s,n.path,a)));return Fi.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new Os({...this._def,minLength:{value:t,message:Ze.toString(n)}})}max(t,n){return new Os({...this._def,maxLength:{value:t,message:Ze.toString(n)}})}length(t,n){return new Os({...this._def,exactLength:{value:t,message:Ze.toString(n)}})}nonempty(t){return this.min(1,t)}}Os.create=(e,t)=>new Os({type:e,minLength:null,maxLength:null,exactLength:null,typeName:nt.ZodArray,...gt(t)});function wd(e){if(e instanceof Zn){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Ka.create(wd(r))}return new Zn({...e._def,shape:()=>t})}else return e instanceof Os?new Os({...e._def,type:wd(e.element)}):e instanceof Ka?Ka.create(wd(e.unwrap())):e instanceof Ec?Ec.create(wd(e.unwrap())):e instanceof ga?ga.create(e.items.map(t=>wd(t))):e}class Zn extends bt{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=Ut.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==ke.object){const u=this._getOrReturnCtx(t);return Pe(u,{code:ce.invalid_type,expected:ke.object,received:u.parsedType}),ct}const{status:r,ctx:i}=this._processInputParams(t),{shape:o,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof ol&&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 pa(i,d,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof ol){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&&(Pe(i,{code:ce.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 pa(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=>Fi.mergeObjectSync(r,u)):Fi.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return Ze.errToObj,new Zn({...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=Ze.errToObj(t).message)!==null&&a!==void 0?a:l}:{message:l}}}:{}})}strip(){return new Zn({...this._def,unknownKeys:"strip"})}passthrough(){return new Zn({...this._def,unknownKeys:"passthrough"})}extend(t){return new Zn({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new Zn({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:nt.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new Zn({...this._def,catchall:t})}pick(t){const n={};return Ut.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new Zn({...this._def,shape:()=>n})}omit(t){const n={};return Ut.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new Zn({...this._def,shape:()=>n})}deepPartial(){return wd(this)}partial(t){const n={};return Ut.objectKeys(this.shape).forEach(r=>{const i=this.shape[r];t&&!t[r]?n[r]=i:n[r]=i.optional()}),new Zn({...this._def,shape:()=>n})}required(t){const n={};return Ut.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof Ka;)o=o._def.innerType;n[r]=o}}),new Zn({...this._def,shape:()=>n})}keyof(){return Y7(Ut.objectKeys(this.shape))}}Zn.create=(e,t)=>new Zn({shape:()=>e,unknownKeys:"strip",catchall:ol.create(),typeName:nt.ZodObject,...gt(t)});Zn.strictCreate=(e,t)=>new Zn({shape:()=>e,unknownKeys:"strict",catchall:ol.create(),typeName:nt.ZodObject,...gt(t)});Zn.lazycreate=(e,t)=>new Zn({shape:e,unknownKeys:"strip",catchall:ol.create(),typeName:nt.ZodObject,...gt(t)});class lg extends bt{_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 Rs(a.ctx.common.issues));return Pe(n,{code:ce.invalid_union,unionErrors:s}),ct}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 Rs(l));return Pe(n,{code:ce.invalid_union,unionErrors:a}),ct}}get options(){return this._def.options}}lg.create=(e,t)=>new lg({options:e,typeName:nt.ZodUnion,...gt(t)});const k0=e=>e instanceof dg?k0(e.schema):e instanceof Ds?k0(e.innerType()):e instanceof fg?[e.value]:e instanceof hu?e.options:e instanceof hg?Object.keys(e.enum):e instanceof pg?k0(e._def.innerType):e instanceof sg?[void 0]:e instanceof ag?[null]:null;class P_ extends bt{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ke.object)return Pe(n,{code:ce.invalid_type,expected:ke.object,received:n.parsedType}),ct;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}):(Pe(n,{code:ce.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),ct)}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=k0(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 P_({typeName:nt.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...gt(r)})}}function dC(e,t){const n=Nl(e),r=Nl(t);if(e===t)return{valid:!0,data:e};if(n===ke.object&&r===ke.object){const i=Ut.objectKeys(t),o=Ut.objectKeys(e).filter(a=>i.indexOf(a)!==-1),s={...e,...t};for(const a of o){const l=dC(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}else if(n===ke.array&&r===ke.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{if(uC(o)||uC(s))return ct;const a=dC(o.value,s.value);return a.valid?((cC(o)||cC(s))&&n.dirty(),{status:n.value,value:a.data}):(Pe(r,{code:ce.invalid_intersection_types}),ct)};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}))}}ug.create=(e,t,n)=>new ug({left:e,right:t,typeName:nt.ZodIntersection,...gt(n)});class ga extends bt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ke.array)return Pe(r,{code:ce.invalid_type,expected:ke.array,received:r.parsedType}),ct;if(r.data.lengththis._def.items.length&&(Pe(r,{code:ce.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 pa(r,s,r.path,a)):null}).filter(s=>!!s);return r.common.async?Promise.all(o).then(s=>Fi.mergeArray(n,s)):Fi.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new ga({...this._def,rest:t})}}ga.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ga({items:e,typeName:nt.ZodTuple,rest:null,...gt(t)})};class cg extends bt{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!==ke.object)return Pe(r,{code:ce.invalid_type,expected:ke.object,received:r.parsedType}),ct;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new pa(r,a,r.path,a)),value:s._parse(new pa(r,r.data[a],r.path,a))});return r.common.async?Fi.mergeObjectAsync(n,i):Fi.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof bt?new cg({keyType:t,valueType:n,typeName:nt.ZodRecord,...gt(r)}):new cg({keyType:Ts.create(),valueType:t,typeName:nt.ZodRecord,...gt(n)})}}class $v extends bt{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!==ke.map)return Pe(r,{code:ce.invalid_type,expected:ke.map,received:r.parsedType}),ct;const i=this._def.keyType,o=this._def.valueType,s=[...r.data.entries()].map(([a,l],u)=>({key:i._parse(new pa(r,a,r.path,[u,"key"])),value:o._parse(new pa(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 ct;(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 ct;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}}}}$v.create=(e,t,n)=>new $v({valueType:t,keyType:e,typeName:nt.ZodMap,...gt(n)});class Cc extends bt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ke.set)return Pe(r,{code:ce.invalid_type,expected:ke.set,received:r.parsedType}),ct;const i=this._def;i.minSize!==null&&r.data.sizei.maxSize.value&&(Pe(r,{code:ce.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 ct;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 pa(r,l,r.path,u)));return r.common.async?Promise.all(a).then(l=>s(l)):s(a)}min(t,n){return new Cc({...this._def,minSize:{value:t,message:Ze.toString(n)}})}max(t,n){return new Cc({...this._def,maxSize:{value:t,message:Ze.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}Cc.create=(e,t)=>new Cc({valueType:e,minSize:null,maxSize:null,typeName:nt.ZodSet,...gt(t)});class of extends bt{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ke.function)return Pe(n,{code:ce.invalid_type,expected:ke.function,received:n.parsedType}),ct;function r(a,l){return Mv({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Iv(),rg].filter(u=>!!u),issueData:{code:ce.invalid_arguments,argumentsError:l}})}function i(a,l){return Mv({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Iv(),rg].filter(u=>!!u),issueData:{code:ce.invalid_return_type,returnTypeError:l}})}const o={errorMap:n.common.contextualErrorMap},s=n.data;if(this._def.returns instanceof Rf){const a=this;return Xi(async function(...l){const u=new Rs([]),c=await a._def.args.parseAsync(l,o).catch(h=>{throw u.addIssue(r(l,h)),u}),d=await Reflect.apply(s,this,c);return await a._def.returns._def.type.parseAsync(d,o).catch(h=>{throw u.addIssue(i(d,h)),u})})}else{const a=this;return Xi(function(...l){const u=a._def.args.safeParse(l,o);if(!u.success)throw new Rs([r(l,u.error)]);const c=Reflect.apply(s,this,u.data),d=a._def.returns.safeParse(c,o);if(!d.success)throw new Rs([i(c,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new of({...this._def,args:ga.create(t).rest(hc.create())})}returns(t){return new of({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new of({args:t||ga.create([]).rest(hc.create()),returns:n||hc.create(),typeName:nt.ZodFunction,...gt(r)})}}class dg extends bt{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})}}dg.create=(e,t)=>new dg({getter:e,typeName:nt.ZodLazy,...gt(t)});class fg extends bt{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return Pe(n,{received:n.data,code:ce.invalid_literal,expected:this._def.value}),ct}return{status:"valid",value:t.data}}get value(){return this._def.value}}fg.create=(e,t)=>new fg({value:e,typeName:nt.ZodLiteral,...gt(t)});function Y7(e,t){return new hu({values:e,typeName:nt.ZodEnum,...gt(t)})}class hu extends bt{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return Pe(n,{expected:Ut.joinValues(r),received:n.parsedType,code:ce.invalid_type}),ct}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return Pe(n,{received:n.data,code:ce.invalid_enum_value,options:r}),ct}return Xi(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 hu.create(t)}exclude(t){return hu.create(this.options.filter(n=>!t.includes(n)))}}hu.create=Y7;class hg extends bt{_parse(t){const n=Ut.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==ke.string&&r.parsedType!==ke.number){const i=Ut.objectValues(n);return Pe(r,{expected:Ut.joinValues(i),received:r.parsedType,code:ce.invalid_type}),ct}if(n.indexOf(t.data)===-1){const i=Ut.objectValues(n);return Pe(r,{received:r.data,code:ce.invalid_enum_value,options:i}),ct}return Xi(t.data)}get enum(){return this._def.values}}hg.create=(e,t)=>new hg({values:e,typeName:nt.ZodNativeEnum,...gt(t)});class Rf extends bt{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ke.promise&&n.common.async===!1)return Pe(n,{code:ce.invalid_type,expected:ke.promise,received:n.parsedType}),ct;const r=n.parsedType===ke.promise?n.data:Promise.resolve(n.data);return Xi(r.then(i=>this._def.type.parseAsync(i,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Rf.create=(e,t)=>new Rf({type:e,typeName:nt.ZodPromise,...gt(t)});class Ds extends bt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===nt.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),i=this._def.effect||null,o={addIssue:s=>{Pe(r,s),s.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),i.type==="preprocess"){const s=i.transform(r.data,o);return r.common.issues.length?{status:"dirty",value:r.data}:r.common.async?Promise.resolve(s).then(a=>this._def.schema._parseAsync({data:a,path:r.path,parent:r})):this._def.schema._parseSync({data:s,path:r.path,parent:r})}if(i.type==="refinement"){const s=a=>{const l=i.refinement(a,o);if(r.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){const a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?ct:(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"?ct:(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(!ig(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=>ig(s)?Promise.resolve(i.transform(s.value,o)).then(a=>({status:n.value,value:a})):s);Ut.assertNever(i)}}Ds.create=(e,t,n)=>new Ds({schema:e,typeName:nt.ZodEffects,effect:t,...gt(n)});Ds.createWithPreprocess=(e,t,n)=>new Ds({schema:t,effect:{type:"preprocess",transform:e},typeName:nt.ZodEffects,...gt(n)});class Ka extends bt{_parse(t){return this._getType(t)===ke.undefined?Xi(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ka.create=(e,t)=>new Ka({innerType:e,typeName:nt.ZodOptional,...gt(t)});class Ec extends bt{_parse(t){return this._getType(t)===ke.null?Xi(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ec.create=(e,t)=>new Ec({innerType:e,typeName:nt.ZodNullable,...gt(t)});class pg extends bt{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===ke.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}pg.create=(e,t)=>new pg({innerType:e,typeName:nt.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...gt(t)});class Fv extends bt{_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 Nv(i)?i.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Rs(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Rs(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}Fv.create=(e,t)=>new Fv({innerType:e,typeName:nt.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...gt(t)});class Bv extends bt{_parse(t){if(this._getType(t)!==ke.nan){const r=this._getOrReturnCtx(t);return Pe(r,{code:ce.invalid_type,expected:ke.nan,received:r.parsedType}),ct}return{status:"valid",value:t.data}}}Bv.create=e=>new Bv({typeName:nt.ZodNaN,...gt(e)});const hte=Symbol("zod_brand");class Z7 extends bt{_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 bm extends bt{_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"?ct:o.status==="dirty"?(n.dirty(),Q7(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{const i=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?ct: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 bm({in:t,out:n,typeName:nt.ZodPipeline})}}class zv extends bt{_parse(t){const n=this._def.innerType._parse(t);return ig(n)&&(n.value=Object.freeze(n.value)),n}}zv.create=(e,t)=>new zv({innerType:e,typeName:nt.ZodReadonly,...gt(t)});const J7=(e,t={},n)=>e?Pf.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})}}):Pf.create(),pte={object:Zn.lazycreate};var nt;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(nt||(nt={}));const gte=(e,t={message:`Input not instance of ${e.name}`})=>J7(n=>n instanceof e,t),eD=Ts.create,tD=du.create,mte=Bv.create,yte=fu.create,nD=og.create,vte=xc.create,_te=Dv.create,bte=sg.create,Ste=ag.create,wte=Pf.create,xte=hc.create,Cte=ol.create,Ete=Lv.create,Tte=Os.create,Ate=Zn.create,kte=Zn.strictCreate,Pte=lg.create,Rte=P_.create,Ote=ug.create,Ite=ga.create,Mte=cg.create,Nte=$v.create,Dte=Cc.create,Lte=of.create,$te=dg.create,Fte=fg.create,Bte=hu.create,zte=hg.create,Ute=Rf.create,jk=Ds.create,jte=Ka.create,Vte=Ec.create,Gte=Ds.createWithPreprocess,Hte=bm.create,qte=()=>eD().optional(),Wte=()=>tD().optional(),Kte=()=>nD().optional(),Xte={string:e=>Ts.create({...e,coerce:!0}),number:e=>du.create({...e,coerce:!0}),boolean:e=>og.create({...e,coerce:!0}),bigint:e=>fu.create({...e,coerce:!0}),date:e=>xc.create({...e,coerce:!0})},Qte=ct;var z=Object.freeze({__proto__:null,defaultErrorMap:rg,setErrorMap:ete,getErrorMap:Iv,makeIssue:Mv,EMPTY_PATH:tte,addIssueToContext:Pe,ParseStatus:Fi,INVALID:ct,DIRTY:Q7,OK:Xi,isAborted:uC,isDirty:cC,isValid:ig,isAsync:Nv,get util(){return Ut},get objectUtil(){return lC},ZodParsedType:ke,getParsedType:Nl,ZodType:bt,ZodString:Ts,ZodNumber:du,ZodBigInt:fu,ZodBoolean:og,ZodDate:xc,ZodSymbol:Dv,ZodUndefined:sg,ZodNull:ag,ZodAny:Pf,ZodUnknown:hc,ZodNever:ol,ZodVoid:Lv,ZodArray:Os,ZodObject:Zn,ZodUnion:lg,ZodDiscriminatedUnion:P_,ZodIntersection:ug,ZodTuple:ga,ZodRecord:cg,ZodMap:$v,ZodSet:Cc,ZodFunction:of,ZodLazy:dg,ZodLiteral:fg,ZodEnum:hu,ZodNativeEnum:hg,ZodPromise:Rf,ZodEffects:Ds,ZodTransformer:Ds,ZodOptional:Ka,ZodNullable:Ec,ZodDefault:pg,ZodCatch:Fv,ZodNaN:Bv,BRAND:hte,ZodBranded:Z7,ZodPipeline:bm,ZodReadonly:zv,custom:J7,Schema:bt,ZodSchema:bt,late:pte,get ZodFirstPartyTypeKind(){return nt},coerce:Xte,any:wte,array:Tte,bigint:yte,boolean:nD,date:vte,discriminatedUnion:Rte,effect:jk,enum:Bte,function:Lte,instanceof:gte,intersection:Ote,lazy:$te,literal:Fte,map:Nte,nan:mte,nativeEnum:zte,never:Cte,null:Ste,nullable:Vte,number:tD,object:Ate,oboolean:Kte,onumber:Wte,optional:jte,ostring:qte,pipeline:Hte,preprocess:Gte,promise:Ute,record:Mte,set:Dte,strictObject:kte,string:eD,symbol:_te,transformer:jk,tuple:Ite,undefined:bte,union:Pte,unknown:xte,void:Ete,NEVER:Qte,ZodIssueCode:ce,quotelessJson:Jee,ZodError:Rs});const Yte=z.string(),Q6e=e=>Yte.safeParse(e).success,Zte=z.string(),Y6e=e=>Zte.safeParse(e).success,Jte=z.string(),Z6e=e=>Jte.safeParse(e).success,ene=z.string(),J6e=e=>ene.safeParse(e).success,tne=z.number().int().min(1),ePe=e=>tne.safeParse(e).success,nne=z.number().min(1),tPe=e=>nne.safeParse(e).success,rD=z.enum(["euler","deis","ddim","ddpm","dpmpp_2s","dpmpp_2m","dpmpp_2m_sde","dpmpp_sde","heun","kdpm_2","lms","pndm","unipc","euler_k","dpmpp_2s_k","dpmpp_2m_k","dpmpp_2m_sde_k","dpmpp_sde_k","heun_k","lms_k","euler_a","kdpm_2_a"]),nPe=e=>rD.safeParse(e).success,rPe={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"},rne=z.number().int().min(0).max(Zee),iPe=e=>rne.safeParse(e).success,ine=z.number().multipleOf(8).min(64),oPe=e=>ine.safeParse(e).success,one=z.number().multipleOf(8).min(64),sPe=e=>one.safeParse(e).success,eh=z.enum(["sd-1","sd-2","sdxl","sdxl-refiner"]),R_=z.object({model_name:z.string().min(1),base_model:eh,model_type:z.literal("main")}),aPe=e=>R_.safeParse(e).success,gE=z.object({model_name:z.string().min(1),base_model:z.literal("sdxl-refiner"),model_type:z.literal("main")}),lPe=e=>gE.safeParse(e).success,iD=z.object({model_name:z.string().min(1),base_model:eh,model_type:z.literal("onnx")}),Sm=z.union([R_,iD]),sne=z.object({model_name:z.string().min(1),base_model:eh}),uPe=z.object({model_name:z.string().min(1),base_model:eh}),cPe=z.object({model_name:z.string().min(1),base_model:eh}),ane=z.number().min(0).max(1),dPe=e=>ane.safeParse(e).success;z.enum(["fp16","fp32"]);const lne=z.number().min(1).max(10),fPe=e=>lne.safeParse(e).success,une=z.number().min(1).max(10),hPe=e=>une.safeParse(e).success,cne=z.number().min(0).max(1),pPe=e=>cne.safeParse(e).success;z.enum(["box","gaussian"]);z.enum(["unmasked","mask","edge"]);const $s={cfgScale:7.5,height:512,img2imgStrength:.75,infillMethod:"patchmatch",iterations:1,perlin:0,positivePrompt:"",negativePrompt:"",scheduler:"euler",maskBlur:16,maskBlurMethod:"box",canvasCoherenceMode:"edge",canvasCoherenceSteps:20,canvasCoherenceStrength:.3,seed:0,seedWeights:"",shouldFitToWidthHeight:!0,shouldGenerateVariations:!1,shouldRandomizeSeed:!0,shouldUseNoiseSettings:!1,steps:50,threshold:0,infillTileSize:32,infillPatchmatchDownscaleSize:1,variationAmount:.1,width:512,shouldUseSymmetry:!1,horizontalSymmetrySteps:0,verticalSymmetrySteps:0,model:null,vae:null,vaePrecision:"fp32",seamlessXAxis:!1,seamlessYAxis:!1,clipSkip:0,shouldUseCpuNoise:!0,shouldShowAdvancedOptions:!1,aspectRatio:null,shouldLockAspectRatio:!1},dne=$s,oD=er({name:"generation",initialState:dne,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=Bl(e.horizontalSymmetrySteps,0,e.steps),e.verticalSymmetrySteps=Bl(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,...$s}),setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setMaskBlur:(e,t)=>{e.maskBlur=t.payload},setMaskBlurMethod:(e,t)=>{e.maskBlurMethod=t.payload},setCanvasCoherenceMode:(e,t)=>{e.canvasCoherenceMode=t.payload},setCanvasCoherenceSteps:(e,t)=>{e.canvasCoherenceSteps=t.payload},setCanvasCoherenceStrength:(e,t)=>{e.canvasCoherenceStrength=t.payload},setInfillMethod:(e,t)=>{e.infillMethod=t.payload},setInfillTileSize:(e,t)=>{e.infillTileSize=t.payload},setInfillPatchmatchDownscaleSize:(e,t)=>{e.infillPatchmatchDownscaleSize=t.payload},setShouldUseSymmetry:(e,t)=>{e.shouldUseSymmetry=t.payload},setHorizontalSymmetrySteps:(e,t)=>{e.horizontalSymmetrySteps=t.payload},setVerticalSymmetrySteps:(e,t)=>{e.verticalSymmetrySteps=t.payload},setShouldUseNoiseSettings:(e,t)=>{e.shouldUseNoiseSettings=t.payload},initialImageChanged:(e,t)=>{const{image_name:n,width:r,height:i}=t.payload;e.initialImage={imageName:n,width:r,height:i}},modelChanged:(e,t)=>{if(e.model=t.payload,e.model===null)return;const{maxClip:n}=Yee[e.model.base_model];e.clipSkip=Bl(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=Ss(e.width/n,8))},setShouldLockAspectRatio:(e,t)=>{e.shouldLockAspectRatio=t.payload}},extraReducers:e=>{e.addCase(Xee,(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=R_.safeParse({model_name:a,base_model:o,model_type:s});l.success&&(t.model=l.data)}}),e.addCase(hne,(t,n)=>{n.payload||(t.clipSkip=0)})}}),{clampSymmetrySteps:gPe,clearInitialImage:mE,resetParametersState:mPe,resetSeed:yPe,setCfgScale:vPe,setWidth:Vk,setHeight:Gk,toggleSize:_Pe,setImg2imgStrength:bPe,setInfillMethod:fne,setIterations:SPe,setPerlin:wPe,setPositivePrompt:xPe,setNegativePrompt:CPe,setScheduler:EPe,setMaskBlur:TPe,setMaskBlurMethod:APe,setCanvasCoherenceMode:kPe,setCanvasCoherenceSteps:PPe,setCanvasCoherenceStrength:RPe,setSeed:OPe,setSeedWeights:IPe,setShouldFitToWidthHeight:MPe,setShouldGenerateVariations:NPe,setShouldRandomizeSeed:DPe,setSteps:LPe,setThreshold:$Pe,setInfillTileSize:FPe,setInfillPatchmatchDownscaleSize:BPe,setVariationAmount:zPe,setShouldUseSymmetry:UPe,setHorizontalSymmetrySteps:jPe,setVerticalSymmetrySteps:VPe,initialImageChanged:O_,modelChanged:zl,vaeSelected:sD,setShouldUseNoiseSettings:GPe,setSeamlessXAxis:HPe,setSeamlessYAxis:qPe,setClipSkip:WPe,shouldUseCpuNoiseChanged:KPe,setShouldShowAdvancedOptions:hne,setAspectRatio:pne,setShouldLockAspectRatio:XPe,vaePrecisionChanged:QPe}=oD.actions,gne=oD.reducer;let ji=[],th=(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=!ji.length;for(let s=0;s(e.events=e.events||{},e.events[n+_y]||(e.events[n+_y]=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+_y](),delete e.events[n+_y])}),vne=1e3,_ne=(e,t)=>yne(e,r=>{let i=t(r);i&&e.events[vy].push(i)},mne,r=>{let i=e.listen;e.listen=(...s)=>(!e.lc&&!e.active&&(e.active=!0,r()),i(...s));let o=e.off;return e.events[vy]=[],e.off=()=>{o(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let s of e.events[vy])s();e.events[vy]=[]}},vne)},()=>{e.listen=i,e.off=o}}),bne=(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=th(void 0,Math.max(...e.map(o=>o.l))+1);return _ne(i,()=>{let o=e.map(s=>s.listen(r,i.l));return r(),()=>{for(let s of o)s()}}),i};const Sne={"Content-Type":"application/json"},wne=/\/*$/;function xne(e={}){const{fetch:t=globalThis.fetch,querySerializer:n,bodySerializer:r,...i}=e;async function o(s,a){const{headers:l,body:u,params:c={},parseAs:d="json",querySerializer:f=n??Cne,bodySerializer:h=r??Ene,...p}=a||{},m=Tne(s,{baseUrl:i.baseUrl,params:c,querySerializer:f}),b=Ane(Sne,e==null?void 0:e.headers,l,c.header),_={redirect:"follow",...i,...p,headers:b};u&&(_.body=h(u)),_.body instanceof FormData&&b.delete("Content-Type");const v=await t(m,_);if(v.status===204||v.headers.get("Content-Length")==="0")return v.ok?{data:{},response:v}:{error:{},response:v};if(v.ok){let y=v.body;if(d!=="stream"){const S=v.clone();y=typeof S[d]=="function"?await S[d]():await S.text()}return{data:y,response:v}}let g={};try{g=await v.clone().json()}catch{g=await v.clone().text()}return{error:g,response:v}}return{async GET(s,a){return o(s,{...a,method:"GET"})},async PUT(s,a){return o(s,{...a,method:"PUT"})},async POST(s,a){return o(s,{...a,method:"POST"})},async DELETE(s,a){return o(s,{...a,method:"DELETE"})},async OPTIONS(s,a){return o(s,{...a,method:"OPTIONS"})},async HEAD(s,a){return o(s,{...a,method:"HEAD"})},async PATCH(s,a){return o(s,{...a,method:"PATCH"})},async TRACE(s,a){return o(s,{...a,method:"TRACE"})}}}function Cne(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 Ene(e){return JSON.stringify(e)}function Tne(e,t){let n=`${t.baseUrl?t.baseUrl.replace(wne,""):""}${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 Ane(...e){const t=new Headers;for(const n of e){if(!n||typeof n!="object")continue;const r=n instanceof Headers?n.entries():Object.entries(n);for(const[i,o]of r)o===null?t.delete(i):o!==void 0&&t.set(i,o)}return t}const Of=th(),gg=th(),mg=th(),I_=bne([Of,gg,mg],(e,t,n)=>xne({headers:{...e?{Authorization:`Bearer ${e}`}:{},...n?{"project-id":n}:{}},baseUrl:`${t??""}`})),Si=cu("api/sessionCreated",async(e,{rejectWithValue:t})=>{const{graph:n}=e,{POST:r}=I_.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}),kne=e=>Ki(e)&&"status"in e,Pne=e=>Ki(e)&&"detail"in e,nh=cu("api/sessionInvoked",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{PUT:r}=I_.get(),{error:i,response:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{query:{all:!0},path:{session_id:n}}});if(i){if(kne(i)&&i.status===403)return t({arg:e,status:o.status,error:i.body.detail});if(Pne(i)&&o.status===403)return t({arg:e,status:o.status,error:i.detail});if(i)return t({arg:e,status:o.status,error:i})}}),Au=cu("api/sessionCanceled",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{DELETE:r}=I_.get(),{data:i,error:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{path:{session_id:n}}});return o?t({arg:e,error:o}):i});cu("api/listSessions",async(e,{rejectWithValue:t})=>{const{params:n}=e,{GET:r}=I_.get(),{data:i,error:o}=await r("/api/v1/sessions/",{params:n});return o?t({arg:e,error:o}):i});const aD=is(Si.rejected,nh.rejected),by=(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}},Sy=(e,t,n,r,i=.95)=>{const o=e*i/n,s=t*i/r;return Math.min(1,Math.min(o,s))},YPe=.999,ZPe=.1,JPe=20,wy=.95,e8e=30,t8e=10,Rne=e=>({x:Math.floor(e.x),y:Math.floor(e.y)}),od=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=Ss(a/o,64)):o<1&&(r.height=a,r.width=Ss(a*o,64)),s=r.width*r.height;return r},One=e=>({width:Ss(e.width,64),height:Ss(e.height,64)}),n8e=[{label:"Base",value:"base"},{label:"Mask",value:"mask"}],r8e=[{label:"None",value:"none"},{label:"Auto",value:"auto"},{label:"Manual",value:"manual"}],lD=e=>e.kind==="line"&&e.layer==="mask",i8e=e=>e.kind==="line"&&e.layer==="base",Ine=e=>e.kind==="image"&&e.layer==="base",o8e=e=>e.kind==="fillRect"&&e.layer==="base",s8e=e=>e.kind==="eraseRect"&&e.layer==="base",Mne=e=>e.kind==="line",xd={objects:[],stagingArea:{images:[],selectedImageIndex:-1}},uD={boundingBoxCoordinates:{x:0,y:0},boundingBoxDimensions:{width:512,height:512},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},boundingBoxScaleMethod:"none",brushColor:{r:90,g:90,b:255,a:1},brushSize:50,colorPickerColor:{r:90,g:90,b:255,a:1},cursorPosition:null,futureLayerStates:[],isDrawing:!1,isMaskEnabled:!0,isMouseOverBoundingBox:!1,isMoveBoundingBoxKeyHeld:!1,isMoveStageKeyHeld:!1,isMovingBoundingBox:!1,isMovingStage:!1,isTransformingBoundingBox:!1,layer:"base",layerState:xd,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"},cD=er({name:"canvas",initialState:uD,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=>!lD(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:my(Bl(r,64,512),64),height:my(Bl(i,64,512),64)},a={x:Ss(r/2-s.width/2,64),y:Ss(i/2-s.height/2,64)};if(e.boundingBoxScaleMethod==="auto"){const c=od(s);e.scaledBoundingBoxDimensions=c}e.boundingBoxDimensions=s,e.boundingBoxCoordinates=a,e.pastLayerStates.push(Yn(e.layerState)),e.layerState={...xd,objects:[{kind:"image",layer:"base",x:0,y:0,width:r,height:i,imageName:n.image_name}]},e.futureLayerStates=[];const l=Sy(o.width,o.height,r,i,wy),u=by(o.width,o.height,0,0,r,i,l);e.stageScale=l,e.stageCoordinates=u},setBoundingBoxDimensions:(e,t)=>{const n=One(t.payload);if(e.boundingBoxDimensions=n,e.boundingBoxScaleMethod==="auto"){const r=od(n);e.scaledBoundingBoxDimensions=r}},flipBoundingBoxAxes:e=>{const[t,n]=[e.boundingBoxDimensions.width,e.boundingBoxDimensions.height],[r,i]=[e.scaledBoundingBoxDimensions.width,e.scaledBoundingBoxDimensions.height];e.boundingBoxDimensions={width:n,height:t},e.scaledBoundingBoxDimensions={width:i,height:r}},setBoundingBoxCoordinates:(e,t)=>{e.boundingBoxCoordinates=Rne(t.payload)},setStageCoordinates:(e,t)=>{e.stageCoordinates=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=t.payload},setStageScale:(e,t)=>{e.stageScale=t.payload},setShouldDarkenOutsideBoundingBox:(e,t)=>{e.shouldDarkenOutsideBoundingBox=t.payload},setIsDrawing:(e,t)=>{e.isDrawing=t.payload},clearCanvasHistory:e=>{e.pastLayerStates=[],e.futureLayerStates=[]},setShouldLockBoundingBox:(e,t)=>{e.shouldLockBoundingBox=t.payload},toggleShouldLockBoundingBox:e=>{e.shouldLockBoundingBox=!e.shouldLockBoundingBox},setShouldShowBoundingBox:(e,t)=>{e.shouldShowBoundingBox=t.payload},setIsTransformingBoundingBox:(e,t)=>{e.isTransformingBoundingBox=t.payload},setIsMovingBoundingBox:(e,t)=>{e.isMovingBoundingBox=t.payload},setIsMouseOverBoundingBox:(e,t)=>{e.isMouseOverBoundingBox=t.payload},setIsMoveBoundingBoxKeyHeld:(e,t)=>{e.isMoveBoundingBoxKeyHeld=t.payload},setIsMoveStageKeyHeld:(e,t)=>{e.isMoveStageKeyHeld=t.payload},canvasSessionIdChanged:(e,t)=>{e.layerState.stagingArea.sessionId=t.payload},stagingAreaInitialized:(e,t)=>{const{sessionId:n,boundingBox:r}=t.payload;e.layerState.stagingArea={boundingBox:r,sessionId:n,images:[],selectedImageIndex:-1}},addImageToStagingArea:(e,t)=>{const n=t.payload;!n||!e.layerState.stagingArea.boundingBox||(e.pastLayerStates.push(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={...xd.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(Mne);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=xd,e.futureLayerStates=[]},canvasResized:(e,t)=>{const{width:n,height:r}=t.payload,i={width:Math.floor(n),height:Math.floor(r)};if(e.stageDimensions=i,!e.layerState.objects.find(Ine)){const o=Sy(i.width,i.height,512,512,wy),s=by(i.width,i.height,0,0,512,512,o),a={width:512,height:512};if(e.stageScale=o,e.stageCoordinates=s,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=a,e.boundingBoxScaleMethod==="auto"){const l=od(a);e.scaledBoundingBoxDimensions=l}}},resetCanvasView:(e,t)=>{const{contentRect:n,shouldScaleTo1:r}=t.payload,{stageDimensions:{width:i,height:o}}=e,{x:s,y:a,width:l,height:u}=n;if(l!==0&&u!==0){const c=r?1:Sy(i,o,l,u,wy),d=by(i,o,s,a,l,u,c);e.stageScale=c,e.stageCoordinates=d}else{const c=Sy(i,o,512,512,wy),d=by(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=od(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();const i=n[r];i&&e.layerState.objects.push({...i}),e.layerState.stagingArea={...xd.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:my(Bl(o,64,512),64),height:my(Bl(s,64,512),64)},l={x:Ss(o/2-a.width/2,64),y:Ss(s/2-a.height/2,64)};if(e.boundingBoxDimensions=a,e.boundingBoxCoordinates=l,e.boundingBoxScaleMethod==="auto"){const u=od(a);e.scaledBoundingBoxDimensions=u}}},setBoundingBoxScaleMethod:(e,t)=>{if(e.boundingBoxScaleMethod=t.payload,t.payload==="auto"){const n=od(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(Au.pending,t=>{t.layerState.stagingArea.images.length||(t.layerState.stagingArea=xd.stagingArea)}),e.addCase(pne,(t,n)=>{const r=n.payload;r&&(t.boundingBoxDimensions.height=Ss(t.boundingBoxDimensions.width/r,64),t.scaledBoundingBoxDimensions.height=Ss(t.scaledBoundingBoxDimensions.width/r,64))})}}),{addEraseRect:a8e,addFillRect:l8e,addImageToStagingArea:Nne,addLine:u8e,addPointToCurrentLine:c8e,clearCanvasHistory:d8e,clearMask:f8e,commitColorPickerColor:h8e,commitStagingAreaImage:Dne,discardStagedImages:p8e,fitBoundingBoxToStage:g8e,mouseLeftCanvas:m8e,nextStagingAreaImage:y8e,prevStagingAreaImage:v8e,redo:_8e,resetCanvas:yE,resetCanvasInteractionState:b8e,resetCanvasView:S8e,setBoundingBoxCoordinates:w8e,setBoundingBoxDimensions:Hk,setBoundingBoxPreviewFill:x8e,setBoundingBoxScaleMethod:C8e,flipBoundingBoxAxes:E8e,setBrushColor:T8e,setBrushSize:A8e,setColorPickerColor:k8e,setCursorPosition:P8e,setInitialCanvasImage:dD,setIsDrawing:R8e,setIsMaskEnabled:O8e,setIsMouseOverBoundingBox:I8e,setIsMoveBoundingBoxKeyHeld:M8e,setIsMoveStageKeyHeld:N8e,setIsMovingBoundingBox:D8e,setIsMovingStage:L8e,setIsTransformingBoundingBox:$8e,setLayer:F8e,setMaskColor:B8e,setMergedCanvas:Lne,setShouldAutoSave:z8e,setShouldCropToBoundingBoxOnSave:U8e,setShouldDarkenOutsideBoundingBox:j8e,setShouldLockBoundingBox:V8e,setShouldPreserveMaskedArea:G8e,setShouldShowBoundingBox:H8e,setShouldShowBrush:q8e,setShouldShowBrushPreview:W8e,setShouldShowCanvasDebugInfo:K8e,setShouldShowCheckboardTransparency:X8e,setShouldShowGrid:Q8e,setShouldShowIntermediates:Y8e,setShouldShowStagingImage:Z8e,setShouldShowStagingOutline:J8e,setShouldSnapToGrid:eRe,setStageCoordinates:tRe,setStageScale:nRe,setTool:rRe,toggleShouldLockBoundingBox:iRe,toggleTool:oRe,undo:sRe,setScaledBoundingBoxDimensions:aRe,setShouldRestrictStrokesToBox:lRe,stagingAreaInitialized:$ne,canvasSessionIdChanged:Fne,setShouldAntialias:uRe,canvasResized:cRe}=cD.actions,Bne=cD.reducer,zne={isModalOpen:!1,imagesToChange:[]},fD=er({name:"changeBoardModal",initialState:zne,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToChangeSelected:(e,t)=>{e.imagesToChange=t.payload},changeBoardReset:e=>{e.imagesToChange=[],e.isModalOpen=!1}}}),{isModalOpenChanged:dRe,imagesToChangeSelected:fRe,changeBoardReset:hRe}=fD.actions,Une=fD.reducer;var hD={exports:{}},pD={};const bo=K1(oW),kh=K1(lq),jne=K1(bq);(function(e){var t,n,r=ut&&ut.__generator||function(W,J){var te,le,re,De,ze={label:0,sent:function(){if(1&re[0])throw re[1];return re[1]},trys:[],ops:[]};return De={next:rt(0),throw:rt(1),return:rt(2)},typeof Symbol=="function"&&(De[Symbol.iterator]=function(){return this}),De;function rt(Oe){return function(Ue){return function(Ae){if(te)throw new TypeError("Generator is already executing.");for(;ze;)try{if(te=1,le&&(re=2&Ae[0]?le.return:Ae[0]?le.throw||((re=le.return)&&re.call(le),0):le.next)&&!(re=re.call(le,Ae[1])).done)return re;switch(le=0,re&&(Ae=[2&Ae[0],re.value]),Ae[0]){case 0:case 1:re=Ae;break;case 4:return ze.label++,{value:Ae[1],done:!1};case 5:ze.label++,le=Ae[1],Ae=[0];continue;case 7:Ae=ze.ops.pop(),ze.trys.pop();continue;default:if(!((re=(re=ze.trys).length>0&&re[re.length-1])||Ae[0]!==6&&Ae[0]!==2)){ze=0;continue}if(Ae[0]===3&&(!re||Ae[1]>re[0]&&Ae[1]=200&&W.status<=299},L=function(W){return/ion\/(vnd\.api\+)?json/.test(W.get("content-type")||"")};function N(W){if(!(0,A.isPlainObject)(W))return W;for(var J=b({},W),te=0,le=Object.entries(J);te"u"&&ze===T&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(vt,St){return S(J,null,function(){var Jt,en,Ci,_o,Ei,fr,ai,Un,ro,ps,Je,tn,Wt,Xn,hr,li,cn,kt,Ft,dn,Kt,on,ve,Xe,Le,Ce,je,st,$e,_e,se,Se,ue,fe,be,Qe;return r(this,function(Ge){switch(Ge.label){case 0:return Jt=St.signal,en=St.getState,Ci=St.extra,_o=St.endpoint,Ei=St.forced,fr=St.type,ro=(Un=typeof vt=="string"?{url:vt}:vt).url,Je=(ps=Un.headers)===void 0?new Headers(ot.headers):ps,Wt=(tn=Un.params)===void 0?void 0:tn,hr=(Xn=Un.responseHandler)===void 0?Ke??"json":Xn,cn=(li=Un.validateStatus)===void 0?it??k:li,Ft=(kt=Un.timeout)===void 0?We:kt,dn=g(Un,["url","headers","params","responseHandler","validateStatus","timeout"]),Kt=b(_(b({},ot),{signal:Jt}),dn),Je=new Headers(N(Je)),on=Kt,[4,re(Je,{getState:en,extra:Ci,endpoint:_o,forced:Ei,type:fr})];case 1:on.headers=Ge.sent()||Je,ve=function(Ee){return typeof Ee=="object"&&((0,A.isPlainObject)(Ee)||Array.isArray(Ee)||typeof Ee.toJSON=="function")},!Kt.headers.has("content-type")&&ve(Kt.body)&&Kt.headers.set("content-type",ne),ve(Kt.body)&&Ue(Kt.headers)&&(Kt.body=JSON.stringify(Kt.body,ye)),Wt&&(Xe=~ro.indexOf("?")?"&":"?",Le=rt?rt(Wt):new URLSearchParams(N(Wt)),ro+=Xe+Le),ro=function(Ee,wt){if(!Ee)return wt;if(!wt)return Ee;if(function(Lt){return new RegExp("(^|:)//").test(Lt)}(wt))return wt;var Dt=Ee.endsWith("/")||!wt.startsWith("?")?"/":"";return Ee=function(Lt){return Lt.replace(/\/$/,"")}(Ee),""+Ee+Dt+function(Lt){return Lt.replace(/^\//,"")}(wt)}(te,ro),Ce=new Request(ro,Kt),je=Ce.clone(),ai={request:je},$e=!1,_e=Ft&&setTimeout(function(){$e=!0,St.abort()},Ft),Ge.label=2;case 2:return Ge.trys.push([2,4,5,6]),[4,ze(Ce)];case 3:return st=Ge.sent(),[3,6];case 4:return se=Ge.sent(),[2,{error:{status:$e?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(se)},meta:ai}];case 5:return _e&&clearTimeout(_e),[7];case 6:Se=st.clone(),ai.response=Se,fe="",Ge.label=7;case 7:return Ge.trys.push([7,9,,10]),[4,Promise.all([ft(st,hr).then(function(Ee){return ue=Ee},function(Ee){return be=Ee}),Se.text().then(function(Ee){return fe=Ee},function(){})])];case 8:if(Ge.sent(),be)throw be;return[3,10];case 9:return Qe=Ge.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:st.status,data:fe,error:String(Qe)},meta:ai}];case 10:return[2,cn(st,ue)?{data:ue,meta:ai}:{error:{status:st.status,data:ue},meta:ai}]}})})};function ft(vt,St){return S(this,null,function(){var Jt;return r(this,function(en){switch(en.label){case 0:return typeof St=="function"?[2,St(vt)]:(St==="content-type"&&(St=Ue(vt.headers)?"json":"text"),St!=="json"?[3,2]:[4,vt.text()]);case 1:return[2,(Jt=en.sent()).length?JSON.parse(Jt):null];case 2:return[2,vt.text()]}})})}}var P=function(W,J){J===void 0&&(J=void 0),this.value=W,this.meta=J};function D(W,J){return W===void 0&&(W=0),J===void 0&&(J=5),S(this,null,function(){var te,le;return r(this,function(re){switch(re.label){case 0:return te=Math.min(W,J),le=~~((Math.random()+.4)*(300<=Se)}var dn=(0,Gt.createAsyncThunk)(Wt+"/executeQuery",kt,{getPendingMeta:function(){var ve;return(ve={startedTimeStamp:Date.now()})[Gt.SHOULD_AUTOBATCH]=!0,ve},condition:function(ve,Xe){var Le,Ce,je,st=(0,Xe.getState)(),$e=(Ce=(Le=st[Wt])==null?void 0:Le.queries)==null?void 0:Ce[ve.queryCacheKey],_e=$e==null?void 0:$e.fulfilledTimeStamp,se=ve.originalArgs,Se=$e==null?void 0:$e.originalArgs,ue=hr[ve.endpointName];return!(!Ne(ve)&&(($e==null?void 0:$e.status)==="pending"||!Ft(ve,st)&&(!ee(ue)||!((je=ue==null?void 0:ue.forceRefetch)!=null&&je.call(ue,{currentArg:se,previousArg:Se,endpointState:$e,state:st})))&&_e))},dispatchConditionRejection:!0}),Kt=(0,Gt.createAsyncThunk)(Wt+"/executeMutation",kt,{getPendingMeta:function(){var ve;return(ve={startedTimeStamp:Date.now()})[Gt.SHOULD_AUTOBATCH]=!0,ve}});function on(ve){return function(Xe){var Le,Ce;return((Ce=(Le=Xe==null?void 0:Xe.meta)==null?void 0:Le.arg)==null?void 0:Ce.endpointName)===ve}}return{queryThunk:dn,mutationThunk:Kt,prefetch:function(ve,Xe,Le){return function(Ce,je){var st=function(ue){return"force"in ue}(Le)&&Le.force,$e=function(ue){return"ifOlderThan"in ue}(Le)&&Le.ifOlderThan,_e=function(ue){return ue===void 0&&(ue=!0),cn.endpoints[ve].initiate(Xe,{forceRefetch:ue})},se=cn.endpoints[ve].select(Xe)(je());if(st)Ce(_e());else if($e){var Se=se==null?void 0:se.fulfilledTimeStamp;if(!Se)return void Ce(_e());(Number(new Date)-Number(new Date(Se)))/1e3>=$e&&Ce(_e())}else Ce(_e(!1))}},updateQueryData:function(ve,Xe,Le){return function(Ce,je){var st,$e,_e=cn.endpoints[ve].select(Xe)(je()),se={patches:[],inversePatches:[],undo:function(){return Ce(cn.util.patchQueryData(ve,Xe,se.inversePatches))}};if(_e.status===t.uninitialized)return se;if("data"in _e)if((0,Te.isDraftable)(_e.data)){var Se=(0,Te.produceWithPatches)(_e.data,Le),ue=Se[2];(st=se.patches).push.apply(st,Se[1]),($e=se.inversePatches).push.apply($e,ue)}else{var fe=Le(_e.data);se.patches.push({op:"replace",path:[],value:fe}),se.inversePatches.push({op:"replace",path:[],value:_e.data})}return Ce(cn.util.patchQueryData(ve,Xe,se.patches)),se}},upsertQueryData:function(ve,Xe,Le){return function(Ce){var je;return Ce(cn.endpoints[ve].initiate(Xe,((je={subscribe:!1,forceRefetch:!0})[et]=function(){return{data:Le}},je)))}},patchQueryData:function(ve,Xe,Le){return function(Ce){Ce(cn.internalActions.queryResultPatched({queryCacheKey:li({queryArgs:Xe,endpointDefinition:hr[ve],endpointName:ve}),patches:Le}))}},buildMatchThunkActions:function(ve,Xe){return{matchPending:(0,lt.isAllOf)((0,lt.isPending)(ve),on(Xe)),matchFulfilled:(0,lt.isAllOf)((0,lt.isFulfilled)(ve),on(Xe)),matchRejected:(0,lt.isAllOf)((0,lt.isRejected)(ve),on(Xe))}}}}({baseQuery:le,reducerPath:re,context:te,api:W,serializeQueryArgs:De}),ye=ne.queryThunk,We=ne.mutationThunk,Ke=ne.patchQueryData,it=ne.updateQueryData,ot=ne.upsertQueryData,ft=ne.prefetch,vt=ne.buildMatchThunkActions,St=function(Je){var tn=Je.reducerPath,Wt=Je.queryThunk,Xn=Je.mutationThunk,hr=Je.context,li=hr.endpointDefinitions,cn=hr.apiUid,kt=hr.extractRehydrationInfo,Ft=hr.hasRehydrationInfo,dn=Je.assertTagType,Kt=Je.config,on=(0,ae.createAction)(tn+"/resetApiState"),ve=(0,ae.createSlice)({name:tn+"/queries",initialState:jr,reducers:{removeQueryResult:{reducer:function(_e,se){delete _e[se.payload.queryCacheKey]},prepare:(0,ae.prepareAutoBatched)()},queryResultPatched:function(_e,se){var Se=se.payload,ue=Se.patches;An(_e,Se.queryCacheKey,function(fe){fe.data=(0,Ht.applyPatches)(fe.data,ue.concat())})}},extraReducers:function(_e){_e.addCase(Wt.pending,function(se,Se){var ue,fe=Se.meta,be=Se.meta.arg,Qe=Ne(be);(be.subscribe||Qe)&&(se[ue=be.queryCacheKey]!=null||(se[ue]={status:t.uninitialized,endpointName:be.endpointName})),An(se,be.queryCacheKey,function(Ge){Ge.status=t.pending,Ge.requestId=Qe&&Ge.requestId?Ge.requestId:fe.requestId,be.originalArgs!==void 0&&(Ge.originalArgs=be.originalArgs),Ge.startedTimeStamp=fe.startedTimeStamp})}).addCase(Wt.fulfilled,function(se,Se){var ue=Se.meta,fe=Se.payload;An(se,ue.arg.queryCacheKey,function(be){var Qe;if(be.requestId===ue.requestId||Ne(ue.arg)){var Ge=li[ue.arg.endpointName].merge;if(be.status=t.fulfilled,Ge)if(be.data!==void 0){var Ee=ue.fulfilledTimeStamp,wt=ue.arg,Dt=ue.baseQueryMeta,Lt=ue.requestId,Qn=(0,ae.createNextState)(be.data,function(sr){return Ge(sr,fe,{arg:wt.originalArgs,baseQueryMeta:Dt,fulfilledTimeStamp:Ee,requestId:Lt})});be.data=Qn}else be.data=fe;else be.data=(Qe=li[ue.arg.endpointName].structuralSharing)==null||Qe?E((0,vn.isDraft)(be.data)?(0,Ht.original)(be.data):be.data,fe):fe;delete be.error,be.fulfilledTimeStamp=ue.fulfilledTimeStamp}})}).addCase(Wt.rejected,function(se,Se){var ue=Se.meta,fe=ue.condition,be=ue.requestId,Qe=Se.error,Ge=Se.payload;An(se,ue.arg.queryCacheKey,function(Ee){if(!fe){if(Ee.requestId!==be)return;Ee.status=t.rejected,Ee.error=Ge??Qe}})}).addMatcher(Ft,function(se,Se){for(var ue=kt(Se).queries,fe=0,be=Object.entries(ue);fe"u"||navigator.onLine===void 0||navigator.onLine,focused:typeof document>"u"||document.visibilityState!=="hidden",middlewareRegistered:!1},Kt),reducers:{middlewareRegistered:function(_e,se){_e.middlewareRegistered=_e.middlewareRegistered!=="conflict"&&cn===se.payload||"conflict"}},extraReducers:function(_e){_e.addCase(U,function(se){se.online=!0}).addCase(V,function(se){se.online=!1}).addCase(I,function(se){se.focused=!0}).addCase(F,function(se){se.focused=!1}).addMatcher(Ft,function(se){return b({},se)})}}),$e=(0,ae.combineReducers)({queries:ve.reducer,mutations:Xe.reducer,provided:Le.reducer,subscriptions:je.reducer,config:st.reducer});return{reducer:function(_e,se){return $e(on.match(se)?void 0:_e,se)},actions:_(b(b(b(b(b({},st.actions),ve.actions),Ce.actions),je.actions),Xe.actions),{unsubscribeMutationResult:Xe.actions.removeMutationResult,resetApiState:on})}}({context:te,queryThunk:ye,mutationThunk:We,reducerPath:re,assertTagType:Ae,config:{refetchOnFocus:Oe,refetchOnReconnect:Ue,refetchOnMountOrArgChange:rt,keepUnusedDataFor:ze,reducerPath:re}}),Jt=St.reducer,en=St.actions;si(W.util,{patchQueryData:Ke,updateQueryData:it,upsertQueryData:ot,prefetch:ft,resetApiState:en.resetApiState}),si(W.internalActions,en);var Ci=function(Je){var tn=Je.reducerPath,Wt=Je.queryThunk,Xn=Je.api,hr=Je.context,li=hr.apiUid,cn={invalidateTags:(0,Ea.createAction)(tn+"/invalidateTags")},kt=[Ir,Pn,Or,wr,xi,oi];return{middleware:function(dn){var Kt=!1,on=_(b({},Je),{internalState:{currentSubscriptions:{}},refetchQuery:Ft}),ve=kt.map(function(Ce){return Ce(on)}),Xe=function(Ce){var je=Ce.api,st=Ce.queryThunk,$e=Ce.internalState,_e=je.reducerPath+"/subscriptions",se=null,Se=!1,ue=je.internalActions,fe=ue.updateSubscriptionOptions,be=ue.unsubscribeQueryResult;return function(Qe,Ge){var Ee,wt;if(se||(se=JSON.parse(JSON.stringify($e.currentSubscriptions))),je.util.resetApiState.match(Qe))return se=$e.currentSubscriptions={},[!0,!1];if(je.internalActions.internal_probeSubscription.match(Qe)){var Dt=Qe.payload;return[!1,!!((Ee=$e.currentSubscriptions[Dt.queryCacheKey])!=null&&Ee[Dt.requestId])]}var Lt=function(Rn,_n){var Ui,$,G,X,de,_t,nn,bn,Ct;if(fe.match(_n)){var fn=_n.payload,ui=fn.queryCacheKey,jn=fn.requestId;return(Ui=Rn==null?void 0:Rn[ui])!=null&&Ui[jn]&&(Rn[ui][jn]=fn.options),!0}if(be.match(_n)){var yl=_n.payload;return jn=yl.requestId,Rn[ui=yl.queryCacheKey]&&delete Rn[ui][jn],!0}if(je.internalActions.removeQueryResult.match(_n))return delete Rn[_n.payload.queryCacheKey],!0;if(st.pending.match(_n)){var td=_n.meta;if(jn=td.requestId,(rd=td.arg).subscribe)return(vl=(G=Rn[$=rd.queryCacheKey])!=null?G:Rn[$]={})[jn]=(de=(X=rd.subscriptionOptions)!=null?X:vl[jn])!=null?de:{},!0}if(st.rejected.match(_n)){var vl,nd=_n.meta,rd=nd.arg;if(jn=nd.requestId,nd.condition&&rd.subscribe)return(vl=(nn=Rn[_t=rd.queryCacheKey])!=null?nn:Rn[_t]={})[jn]=(Ct=(bn=rd.subscriptionOptions)!=null?bn:vl[jn])!=null?Ct:{},!0}return!1}($e.currentSubscriptions,Qe);if(Lt){Se||(zs(function(){var Rn=JSON.parse(JSON.stringify($e.currentSubscriptions)),_n=(0,hs.produceWithPatches)(se,function(){return Rn});Ge.next(je.internalActions.subscriptionsUpdated(_n[1])),se=Rn,Se=!1}),Se=!0);var Qn=!!((wt=Qe.type)!=null&&wt.startsWith(_e)),sr=st.rejected.match(Qe)&&Qe.meta.condition&&!!Qe.meta.arg.subscribe;return[!Qn&&!sr,!1]}return[!0,!1]}}(on),Le=function(Ce){var je=Ce.reducerPath,st=Ce.context,$e=Ce.refetchQuery,_e=Ce.internalState,se=Ce.api.internalActions.removeQueryResult;function Se(ue,fe){var be=ue.getState()[je],Qe=be.queries,Ge=_e.currentSubscriptions;st.batch(function(){for(var Ee=0,wt=Object.keys(Ge);EegD.safeParse(e).success||Hne.safeParse(e).success;z.enum(["connection","direct","any"]);const mD=z.object({id:z.string().trim().min(1),name:z.string().trim().min(1),type:gD}),qne=mD.extend({fieldKind:z.literal("output")}),yt=mD.extend({fieldKind:z.literal("input"),label:z.string()}),wm=z.object({model_name:z.string().trim().min(1),base_model:eh}),yg=z.object({image_name:z.string().trim().min(1)}),Uv=z.object({latents_name:z.string().trim().min(1),seed:z.number().int().optional()}),jv=z.object({conditioning_name:z.string().trim().min(1)}),Wne=z.object({mask_name:z.string().trim().min(1),masked_latents_name:z.string().trim().min(1).optional()}),Kne=yt.extend({type:z.literal("integer"),value:z.number().int().optional()}),Xne=yt.extend({type:z.literal("IntegerCollection"),value:z.array(z.number().int()).optional()}),Qne=yt.extend({type:z.literal("IntegerPolymorphic"),value:z.union([z.number().int(),z.array(z.number().int())]).optional()}),Yne=yt.extend({type:z.literal("float"),value:z.number().optional()}),Zne=yt.extend({type:z.literal("FloatCollection"),value:z.array(z.number()).optional()}),Jne=yt.extend({type:z.literal("FloatPolymorphic"),value:z.union([z.number(),z.array(z.number())]).optional()}),ere=yt.extend({type:z.literal("string"),value:z.string().optional()}),tre=yt.extend({type:z.literal("StringCollection"),value:z.array(z.string()).optional()}),nre=yt.extend({type:z.literal("StringPolymorphic"),value:z.union([z.string(),z.array(z.string())]).optional()}),rre=yt.extend({type:z.literal("boolean"),value:z.boolean().optional()}),ire=yt.extend({type:z.literal("BooleanCollection"),value:z.array(z.boolean()).optional()}),ore=yt.extend({type:z.literal("BooleanPolymorphic"),value:z.union([z.boolean(),z.array(z.boolean())]).optional()}),sre=yt.extend({type:z.literal("enum"),value:z.union([z.string(),z.number()]).optional()}),are=yt.extend({type:z.literal("LatentsField"),value:Uv.optional()}),lre=yt.extend({type:z.literal("LatentsCollection"),value:z.array(Uv).optional()}),ure=yt.extend({type:z.literal("LatentsPolymorphic"),value:z.union([Uv,z.array(Uv)]).optional()}),cre=yt.extend({type:z.literal("DenoiseMaskField"),value:Wne.optional()}),dre=yt.extend({type:z.literal("ConditioningField"),value:jv.optional()}),fre=yt.extend({type:z.literal("ConditioningCollection"),value:z.array(jv).optional()}),hre=yt.extend({type:z.literal("ConditioningPolymorphic"),value:z.union([jv,z.array(jv)]).optional()}),pre=wm,vg=z.object({image:yg,control_model:pre,control_weight:z.union([z.number(),z.array(z.number())]).optional(),begin_step_percent:z.number().optional(),end_step_percent:z.number().optional(),control_mode:z.enum(["balanced","more_prompt","more_control","unbalanced"]).optional(),resize_mode:z.enum(["just_resize","crop_resize","fill_resize","just_resize_simple"]).optional()}),gre=yt.extend({type:z.literal("ControlField"),value:vg.optional()}),mre=yt.extend({type:z.literal("ControlPolymorphic"),value:z.union([vg,z.array(vg)]).optional()}),yre=yt.extend({type:z.literal("ControlCollection"),value:z.array(vg).optional()}),vre=z.enum(["onnx","main","vae","lora","controlnet","embedding"]),_re=z.enum(["unet","text_encoder","text_encoder_2","tokenizer","tokenizer_2","vae","vae_decoder","vae_encoder","scheduler","safety_checker"]),If=wm.extend({model_type:vre,submodel:_re.optional()}),yD=If.extend({weight:z.number().optional()}),bre=z.object({unet:If,scheduler:If,loras:z.array(yD)}),Sre=yt.extend({type:z.literal("UNetField"),value:bre.optional()}),wre=z.object({tokenizer:If,text_encoder:If,skipped_layers:z.number(),loras:z.array(yD)}),xre=yt.extend({type:z.literal("ClipField"),value:wre.optional()}),Cre=z.object({vae:If}),Ere=yt.extend({type:z.literal("VaeField"),value:Cre.optional()}),Tre=yt.extend({type:z.literal("ImageField"),value:yg.optional()}),Are=yt.extend({type:z.literal("ImagePolymorphic"),value:z.union([yg,z.array(yg)]).optional()}),kre=yt.extend({type:z.literal("ImageCollection"),value:z.array(yg).optional()}),Pre=yt.extend({type:z.literal("MainModelField"),value:Sm.optional()}),Rre=yt.extend({type:z.literal("SDXLMainModelField"),value:Sm.optional()}),Ore=yt.extend({type:z.literal("SDXLRefinerModelField"),value:Sm.optional()}),vD=wm,Ire=yt.extend({type:z.literal("VaeModelField"),value:vD.optional()}),_D=wm,Mre=yt.extend({type:z.literal("LoRAModelField"),value:_D.optional()}),Nre=wm,Dre=yt.extend({type:z.literal("ControlNetModelField"),value:Nre.optional()}),Lre=yt.extend({type:z.literal("Collection"),value:z.array(z.any()).optional()}),$re=yt.extend({type:z.literal("CollectionItem"),value:z.any().optional()}),Vv=z.object({r:z.number().int().min(0).max(255),g:z.number().int().min(0).max(255),b:z.number().int().min(0).max(255),a:z.number().int().min(0).max(255)}),Fre=yt.extend({type:z.literal("ColorField"),value:Vv.optional()}),Bre=yt.extend({type:z.literal("ColorCollection"),value:z.array(Vv).optional()}),zre=yt.extend({type:z.literal("ColorPolymorphic"),value:z.union([Vv,z.array(Vv)]).optional()}),Ure=yt.extend({type:z.literal("Scheduler"),value:rD.optional()}),jre=z.discriminatedUnion("type",[ire,rre,ore,xre,Lre,$re,Fre,Bre,zre,dre,fre,hre,gre,Dre,yre,mre,cre,sre,Zne,Yne,Jne,kre,Are,Tre,Xne,Qne,Kne,are,lre,ure,Mre,Pre,Ure,Rre,Ore,tre,nre,ere,Sre,Ere,Ire]),pRe=e=>!!(e&&e.fieldKind==="input"),gRe=e=>!!(e&&e.fieldKind==="input"),Vre=e=>!!(e&&!("$ref"in e)),Wk=e=>!!(e&&!("$ref"in e)&&e.type==="array"),Cy=e=>!!(e&&!("$ref"in e)&&e.type!=="array"),Ph=e=>!!(e&&"$ref"in e),Gre=e=>"class"in e&&e.class==="invocation",Hre=e=>"class"in e&&e.class==="output",Kk=e=>!("$ref"in e),bD=z.object({app_version:z.string().nullish(),generation_mode:z.string().nullish(),created_by:z.string().nullish(),positive_prompt:z.string().nullish(),negative_prompt:z.string().nullish(),width:z.number().int().nullish(),height:z.number().int().nullish(),seed:z.number().int().nullish(),rand_device:z.string().nullish(),cfg_scale:z.number().nullish(),steps:z.number().int().nullish(),scheduler:z.string().nullish(),clip_skip:z.number().int().nullish(),model:z.union([R_.deepPartial(),iD.deepPartial()]).nullish(),controlnets:z.array(vg.deepPartial()).nullish(),loras:z.array(z.object({lora:_D.deepPartial(),weight:z.number()})).nullish(),vae:vD.nullish(),strength:z.number().nullish(),init_image:z.string().nullish(),positive_style_prompt:z.string().nullish(),negative_style_prompt:z.string().nullish(),refiner_model:gE.deepPartial().nullish(),refiner_cfg_scale:z.number().nullish(),refiner_steps:z.number().int().nullish(),refiner_scheduler:z.string().nullish(),refiner_positive_aesthetic_score:z.number().nullish(),refiner_negative_aesthetic_score:z.number().nullish(),refiner_start:z.number().nullish()}).passthrough(),vE=z.string().refine(e=>{const[t,n,r]=e.split(".");return t!==void 0&&Number.isInteger(Number(t))&&n!==void 0&&Number.isInteger(Number(n))&&r!==void 0&&Number.isInteger(Number(r))});vE.transform(e=>{const[t,n,r]=e.split(".");return{major:Number(t),minor:Number(n),patch:Number(r)}});const qre=z.object({id:z.string().trim().min(1),type:z.string().trim().min(1),inputs:z.record(jre),outputs:z.record(qne),label:z.string(),isOpen:z.boolean(),notes:z.string(),embedWorkflow:z.boolean(),isIntermediate:z.boolean(),version:vE.optional()}),Wre=z.object({id:z.string().trim().min(1),type:z.literal("notes"),label:z.string(),isOpen:z.boolean(),notes:z.string()}),SD=z.object({x:z.number(),y:z.number()}).default({x:0,y:0}),Gv=z.number().gt(0).nullish(),wD=z.object({id:z.string().trim().min(1),type:z.literal("invocation"),data:qre,width:Gv,height:Gv,position:SD}),fC=e=>wD.safeParse(e).success,Kre=z.object({id:z.string().trim().min(1),type:z.literal("notes"),data:Wre,width:Gv,height:Gv,position:SD}),xD=z.discriminatedUnion("type",[wD,Kre]),Xre=z.object({source:z.string().trim().min(1),sourceHandle:z.string().trim().min(1),target:z.string().trim().min(1),targetHandle:z.string().trim().min(1),id:z.string().trim().min(1),type:z.literal("default")}),Qre=z.object({source:z.string().trim().min(1),target:z.string().trim().min(1),id:z.string().trim().min(1),type:z.literal("collapsed")}),CD=z.union([Xre,Qre]),Yre=z.object({nodeId:z.string().trim().min(1),fieldName:z.string().trim().min(1)}),ED=z.object({name:z.string().default(""),author:z.string().default(""),description:z.string().default(""),version:z.string().default(""),contact:z.string().default(""),tags:z.string().default(""),notes:z.string().default(""),nodes:z.array(xD).default([]),edges:z.array(CD).default([]),exposedFields:z.array(Yre).default([]),meta:z.object({version:vE}).default({version:"1.0.0"})});ED.transform(e=>{const{nodes:t,edges:n}=e,r=[],i=t.filter(fC),o=pE(i,"id");return n.forEach((s,a)=>{const l=o[s.source],u=o[s.target],c=[];if(l?s.type==="default"&&!(s.sourceHandle in l.data.outputs)&&c.push(`Output field "${s.source}.${s.sourceHandle}" does not exist`):c.push(`Output node ${s.source} does not exist`),u?s.type==="default"&&!(s.targetHandle in u.data.inputs)&&c.push(`Input field "${s.target}.${s.targetHandle}" does not exist`):c.push(`Input node ${s.target} does not exist`),c.length){delete n[a];const d=s.type==="default"?s.sourceHandle:s.source,f=s.type==="default"?s.targetHandle:s.target;r.push({message:`Edge "${d} -> ${f}" skipped`,issues:c,data:s})}}),{workflow:e,warnings:r}});const qr=e=>!!(e&&e.type==="invocation"),mRe=e=>!!(e&&!["notes","current_image"].includes(e.type)),Xk=e=>!!(e&&e.type==="notes");var La=(e=>(e[e.PENDING=0]="PENDING",e[e.IN_PROGRESS=1]="IN_PROGRESS",e[e.COMPLETED=2]="COMPLETED",e[e.FAILED=3]="FAILED",e))(La||{});/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const Zre=4,Qk=0,Yk=1,Jre=2;function rh(e){let t=e.length;for(;--t>=0;)e[t]=0}const eie=0,TD=1,tie=2,nie=3,rie=258,_E=29,xm=256,_g=xm+1+_E,sf=30,bE=19,AD=2*_g+1,nc=15,I2=16,iie=7,SE=256,kD=16,PD=17,RD=18,hC=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),P0=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),oie=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),OD=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sie=512,Ba=new Array((_g+2)*2);rh(Ba);const vp=new Array(sf*2);rh(vp);const bg=new Array(sie);rh(bg);const Sg=new Array(rie-nie+1);rh(Sg);const wE=new Array(_E);rh(wE);const Hv=new Array(sf);rh(Hv);function M2(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let ID,MD,ND;function N2(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}const DD=e=>e<256?bg[e]:bg[256+(e>>>7)],wg=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},lo=(e,t,n)=>{e.bi_valid>I2-n?(e.bi_buf|=t<>I2-e.bi_valid,e.bi_valid+=n-I2):(e.bi_buf|=t<{lo(e,n[t*2],n[t*2+1])},LD=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},aie=e=>{e.bi_valid===16?(wg(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},lie=(e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,o=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let u,c,d,f,h,p,m=0;for(f=0;f<=nc;f++)e.bl_count[f]=0;for(n[e.heap[e.heap_max]*2+1]=0,u=e.heap_max+1;ul&&(f=l,m++),n[c*2+1]=f,!(c>r)&&(e.bl_count[f]++,h=0,c>=a&&(h=s[c-a]),p=n[c*2],e.opt_len+=p*(f+h),o&&(e.static_len+=p*(i[c*2+1]+h)));if(m!==0){do{for(f=l-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[l]--,m-=2}while(m>0);for(f=l;f!==0;f--)for(c=e.bl_count[f];c!==0;)d=e.heap[--u],!(d>r)&&(n[d*2+1]!==f&&(e.opt_len+=(f-n[d*2+1])*n[d*2],n[d*2+1]=f),c--)}},$D=(e,t,n)=>{const r=new Array(nc+1);let i=0,o,s;for(o=1;o<=nc;o++)i=i+n[o-1]<<1,r[o]=i;for(s=0;s<=t;s++){let a=e[s*2+1];a!==0&&(e[s*2]=LD(r[a]++,a))}},uie=()=>{let e,t,n,r,i;const o=new Array(nc+1);for(n=0,r=0;r<_E-1;r++)for(wE[r]=n,e=0;e<1<>=7;r{let t;for(t=0;t<_g;t++)e.dyn_ltree[t*2]=0;for(t=0;t{e.bi_valid>8?wg(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Zk=(e,t,n,r)=>{const i=t*2,o=n*2;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,o=0,s,a;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+o++]&255,r+=(e.pending_buf[e.sym_buf+o++]&255)<<8,i=e.pending_buf[e.sym_buf+o++],r===0?Zs(e,i,t):(s=Sg[i],Zs(e,s+xm+1,t),a=hC[s],a!==0&&(i-=wE[s],lo(e,i,a)),r--,s=DD(r),Zs(e,s,n),a=P0[s],a!==0&&(r-=Hv[s],lo(e,r,a)));while(o{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,o=t.stat_desc.elems;let s,a,l=-1,u;for(e.heap_len=0,e.heap_max=AD,s=0;s>1;s>=1;s--)D2(e,n,s);u=o;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],D2(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=a,n[u*2]=n[s*2]+n[a*2],e.depth[u]=(e.depth[s]>=e.depth[a]?e.depth[s]:e.depth[a])+1,n[s*2+1]=n[a*2+1]=u,e.heap[1]=u++,D2(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],lie(e,t),$D(n,l,e.bl_count)},e6=(e,t,n)=>{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)o=s,s=t[(r+1)*2+1],!(++a{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),r=0;r<=n;r++)if(o=s,s=t[(r+1)*2+1],!(++a{let t;for(e6(e,e.dyn_ltree,e.l_desc.max_code),e6(e,e.dyn_dtree,e.d_desc.max_code),pC(e,e.bl_desc),t=bE-1;t>=3&&e.bl_tree[OD[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},die=(e,t,n,r)=>{let i;for(lo(e,t-257,5),lo(e,n-1,5),lo(e,r-4,4),i=0;i{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Qk;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return Yk;for(n=32;n{n6||(uie(),n6=!0),e.l_desc=new N2(e.dyn_ltree,ID),e.d_desc=new N2(e.dyn_dtree,MD),e.bl_desc=new N2(e.bl_tree,ND),e.bi_buf=0,e.bi_valid=0,FD(e)},zD=(e,t,n,r)=>{lo(e,(eie<<1)+(r?1:0),3),BD(e),wg(e,n),wg(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},pie=e=>{lo(e,TD<<1,3),Zs(e,SE,Ba),aie(e)},gie=(e,t,n,r)=>{let i,o,s=0;e.level>0?(e.strm.data_type===Jre&&(e.strm.data_type=fie(e)),pC(e,e.l_desc),pC(e,e.d_desc),s=cie(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&t!==-1?zD(e,t,n,r):e.strategy===Zre||o===i?(lo(e,(TD<<1)+(r?1:0),3),Jk(e,Ba,vp)):(lo(e,(tie<<1)+(r?1:0),3),die(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Jk(e,e.dyn_ltree,e.dyn_dtree)),FD(e),r&&BD(e)},mie=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Sg[n]+xm+1)*2]++,e.dyn_dtree[DD(t)*2]++),e.sym_next===e.sym_end);var yie=hie,vie=zD,_ie=gie,bie=mie,Sie=pie,wie={_tr_init:yie,_tr_stored_block:vie,_tr_flush_block:_ie,_tr_tally:bie,_tr_align:Sie};const xie=(e,t,n,r)=>{let i=e&65535|0,o=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do i=i+t[r++]|0,o=o+i|0;while(--s);i%=65521,o%=65521}return i|o<<16|0};var xg=xie;const Cie=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},Eie=new Uint32Array(Cie()),Tie=(e,t,n,r)=>{const i=Eie,o=r+n;e^=-1;for(let s=r;s>>8^i[(e^t[s])&255];return e^-1};var Qr=Tie,Mf={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Cm={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Aie,_tr_stored_block:gC,_tr_flush_block:kie,_tr_tally:Jl,_tr_align:Pie}=wie,{Z_NO_FLUSH:eu,Z_PARTIAL_FLUSH:Rie,Z_FULL_FLUSH:Oie,Z_FINISH:Xo,Z_BLOCK:r6,Z_OK:gi,Z_STREAM_END:i6,Z_STREAM_ERROR:la,Z_DATA_ERROR:Iie,Z_BUF_ERROR:L2,Z_DEFAULT_COMPRESSION:Mie,Z_FILTERED:Nie,Z_HUFFMAN_ONLY:Ey,Z_RLE:Die,Z_FIXED:Lie,Z_DEFAULT_STRATEGY:$ie,Z_UNKNOWN:Fie,Z_DEFLATED:M_}=Cm,Bie=9,zie=15,Uie=8,jie=29,Vie=256,mC=Vie+1+jie,Gie=30,Hie=19,qie=2*mC+1,Wie=15,Mt=3,jl=258,ua=jl+Mt+1,Kie=32,Nf=42,xE=57,yC=69,vC=73,_C=91,bC=103,rc=113,Zh=666,Hi=1,ih=2,Tc=3,oh=4,Xie=3,ic=(e,t)=>(e.msg=Mf[t],t),o6=e=>e*2-(e>4?9:0),Dl=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Qie=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)};let Yie=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Ao=(e,t)=>{kie(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,So(e.strm)},Xt=(e,t)=>{e.pending_buf[e.pending++]=t},Rh=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},SC=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=xg(e.adler,t,i,n):e.state.wrap===2&&(e.adler=Qr(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},UD=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,o,s=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-ua?e.strstart-(e.w_size-ua):0,u=e.window,c=e.w_mask,d=e.prev,f=e.strstart+jl;let h=u[r+s-1],p=u[r+s];e.prev_length>=e.good_match&&(n>>=2),a>e.lookahead&&(a=e.lookahead);do if(i=t,!(u[i+s]!==p||u[i+s-1]!==h||u[i]!==u[r]||u[++i]!==u[r+1])){r+=2,i++;do;while(u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&rs){if(e.match_start=t,s=o,o>=a)break;h=u[r+s-1],p=u[r+s]}}while((t=d[t&c])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Df=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-ua)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Qie(e),r+=t),e.strm.avail_in===0)break;if(n=SC(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=Mt)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=tu(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=tu(e,e.ins_h,e.window[i+Mt-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,o,s=0,a=e.strm.avail_in;do{if(r=65535,o=e.bi_valid+42>>3,e.strm.avail_outi+e.strm.avail_in&&(r=i+e.strm.avail_in),r>o&&(r=o),r>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,So(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(SC(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(s===0);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_watero&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(SC(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,n=o>e.w_size?e.w_size:o,i=e.strstart-e.block_start,(i>=n||(i||t===Xo)&&t!==eu&&e.strm.avail_in===0&&i<=o)&&(r=i>o?o:i,s=t===Xo&&e.strm.avail_in===0&&r===i?1:0,gC(e,e.block_start,r,s),e.block_start+=r,So(e.strm)),s?Tc:Hi)},$2=(e,t)=>{let n,r;for(;;){if(e.lookahead=Mt&&(e.ins_h=tu(e,e.ins_h,e.window[e.strstart+Mt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-ua&&(e.match_length=UD(e,n)),e.match_length>=Mt)if(r=Jl(e,e.strstart-e.match_start,e.match_length-Mt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=Mt){e.match_length--;do e.strstart++,e.ins_h=tu(e,e.ins_h,e.window[e.strstart+Mt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=tu(e,e.ins_h,e.window[e.strstart+1]);else r=Jl(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Ao(e,!1),e.strm.avail_out===0))return Hi}return e.insert=e.strstart{let n,r,i;for(;;){if(e.lookahead=Mt&&(e.ins_h=tu(e,e.ins_h,e.window[e.strstart+Mt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=Mt-1,n!==0&&e.prev_length4096)&&(e.match_length=Mt-1)),e.prev_length>=Mt&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-Mt,r=Jl(e,e.strstart-1-e.prev_match,e.prev_length-Mt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=tu(e,e.ins_h,e.window[e.strstart+Mt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=Mt-1,e.strstart++,r&&(Ao(e,!1),e.strm.avail_out===0))return Hi}else if(e.match_available){if(r=Jl(e,0,e.window[e.strstart-1]),r&&Ao(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Hi}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=Jl(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let n,r,i,o;const s=e.window;for(;;){if(e.lookahead<=jl){if(Df(e),e.lookahead<=jl&&t===eu)return Hi;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=Mt&&e.strstart>0&&(i=e.strstart-1,r=s[i],r===s[++i]&&r===s[++i]&&r===s[++i])){o=e.strstart+jl;do;while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=Mt?(n=Jl(e,1,e.match_length-Mt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Jl(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ao(e,!1),e.strm.avail_out===0))return Hi}return e.insert=0,t===Xo?(Ao(e,!0),e.strm.avail_out===0?Tc:oh):e.sym_next&&(Ao(e,!1),e.strm.avail_out===0)?Hi:ih},Jie=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Df(e),e.lookahead===0)){if(t===eu)return Hi;break}if(e.match_length=0,n=Jl(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ao(e,!1),e.strm.avail_out===0))return Hi}return e.insert=0,t===Xo?(Ao(e,!0),e.strm.avail_out===0?Tc:oh):e.sym_next&&(Ao(e,!1),e.strm.avail_out===0)?Hi:ih};function js(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const Jh=[new js(0,0,0,0,jD),new js(4,4,8,4,$2),new js(4,5,16,8,$2),new js(4,6,32,32,$2),new js(4,4,16,16,sd),new js(8,16,32,32,sd),new js(8,16,128,128,sd),new js(8,32,128,256,sd),new js(32,128,258,1024,sd),new js(32,258,258,4096,sd)],eoe=e=>{e.window_size=2*e.w_size,Dl(e.head),e.max_lazy_match=Jh[e.level].max_lazy,e.good_match=Jh[e.level].good_length,e.nice_match=Jh[e.level].nice_length,e.max_chain_length=Jh[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=Mt-1,e.match_available=0,e.ins_h=0};function toe(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=M_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(qie*2),this.dyn_dtree=new Uint16Array((2*Gie+1)*2),this.bl_tree=new Uint16Array((2*Hie+1)*2),Dl(this.dyn_ltree),Dl(this.dyn_dtree),Dl(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Wie+1),this.heap=new Uint16Array(2*mC+1),Dl(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*mC+1),Dl(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Em=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Nf&&t.status!==xE&&t.status!==yC&&t.status!==vC&&t.status!==_C&&t.status!==bC&&t.status!==rc&&t.status!==Zh?1:0},VD=e=>{if(Em(e))return ic(e,la);e.total_in=e.total_out=0,e.data_type=Fie;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?xE:t.wrap?Nf:rc,e.adler=t.wrap===2?0:1,t.last_flush=-2,Aie(t),gi},GD=e=>{const t=VD(e);return t===gi&&eoe(e.state),t},noe=(e,t)=>Em(e)||e.state.wrap!==2?la:(e.state.gzhead=t,gi),HD=(e,t,n,r,i,o)=>{if(!e)return la;let s=1;if(t===Mie&&(t=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),i<1||i>Bie||n!==M_||r<8||r>15||t<0||t>9||o<0||o>Lie||r===8&&s!==1)return ic(e,la);r===8&&(r=9);const a=new toe;return e.state=a,a.strm=e,a.status=Nf,a.wrap=s,a.gzhead=null,a.w_bits=r,a.w_size=1<HD(e,t,M_,zie,Uie,$ie),ioe=(e,t)=>{if(Em(e)||t>r6||t<0)return e?ic(e,la):la;const n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Zh&&t!==Xo)return ic(e,e.avail_out===0?L2:la);const r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(So(e),e.avail_out===0)return n.last_flush=-1,gi}else if(e.avail_in===0&&o6(t)<=o6(r)&&t!==Xo)return ic(e,L2);if(n.status===Zh&&e.avail_in!==0)return ic(e,L2);if(n.status===Nf&&n.wrap===0&&(n.status=rc),n.status===Nf){let i=M_+(n.w_bits-8<<4)<<8,o=-1;if(n.strategy>=Ey||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,i|=o<<6,n.strstart!==0&&(i|=Kie),i+=31-i%31,Rh(n,i),n.strstart!==0&&(Rh(n,e.adler>>>16),Rh(n,e.adler&65535)),e.adler=1,n.status=rc,So(e),n.pending!==0)return n.last_flush=-1,gi}if(n.status===xE){if(e.adler=0,Xt(n,31),Xt(n,139),Xt(n,8),n.gzhead)Xt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Xt(n,n.gzhead.time&255),Xt(n,n.gzhead.time>>8&255),Xt(n,n.gzhead.time>>16&255),Xt(n,n.gzhead.time>>24&255),Xt(n,n.level===9?2:n.strategy>=Ey||n.level<2?4:0),Xt(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Xt(n,n.gzhead.extra.length&255),Xt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Qr(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=yC;else if(Xt(n,0),Xt(n,0),Xt(n,0),Xt(n,0),Xt(n,0),Xt(n,n.level===9?2:n.strategy>=Ey||n.level<2?4:0),Xt(n,Xie),n.status=rc,So(e),n.pending!==0)return n.last_flush=-1,gi}if(n.status===yC){if(n.gzhead.extra){let i=n.pending,o=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+o>n.pending_buf_size;){let a=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=Qr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=a,So(e),n.pending!==0)return n.last_flush=-1,gi;i=0,o-=a}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending+=o,n.gzhead.hcrc&&n.pending>i&&(e.adler=Qr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=vC}if(n.status===vC){if(n.gzhead.name){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Qr(e.adler,n.pending_buf,n.pending-i,i)),So(e),n.pending!==0)return n.last_flush=-1,gi;i=0}n.gzindexi&&(e.adler=Qr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=_C}if(n.status===_C){if(n.gzhead.comment){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Qr(e.adler,n.pending_buf,n.pending-i,i)),So(e),n.pending!==0)return n.last_flush=-1,gi;i=0}n.gzindexi&&(e.adler=Qr(e.adler,n.pending_buf,n.pending-i,i))}n.status=bC}if(n.status===bC){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(So(e),n.pending!==0))return n.last_flush=-1,gi;Xt(n,e.adler&255),Xt(n,e.adler>>8&255),e.adler=0}if(n.status=rc,So(e),n.pending!==0)return n.last_flush=-1,gi}if(e.avail_in!==0||n.lookahead!==0||t!==eu&&n.status!==Zh){let i=n.level===0?jD(n,t):n.strategy===Ey?Jie(n,t):n.strategy===Die?Zie(n,t):Jh[n.level].func(n,t);if((i===Tc||i===oh)&&(n.status=Zh),i===Hi||i===Tc)return e.avail_out===0&&(n.last_flush=-1),gi;if(i===ih&&(t===Rie?Pie(n):t!==r6&&(gC(n,0,0,!1),t===Oie&&(Dl(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),So(e),e.avail_out===0))return n.last_flush=-1,gi}return t!==Xo?gi:n.wrap<=0?i6:(n.wrap===2?(Xt(n,e.adler&255),Xt(n,e.adler>>8&255),Xt(n,e.adler>>16&255),Xt(n,e.adler>>24&255),Xt(n,e.total_in&255),Xt(n,e.total_in>>8&255),Xt(n,e.total_in>>16&255),Xt(n,e.total_in>>24&255)):(Rh(n,e.adler>>>16),Rh(n,e.adler&65535)),So(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?gi:i6)},ooe=e=>{if(Em(e))return la;const t=e.state.status;return e.state=null,t===rc?ic(e,Iie):gi},soe=(e,t)=>{let n=t.length;if(Em(e))return la;const r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==Nf||r.lookahead)return la;if(i===1&&(e.adler=xg(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(Dl(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(t.subarray(n-r.w_size,n),0),t=l,n=r.w_size}const o=e.avail_in,s=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Df(r);r.lookahead>=Mt;){let l=r.strstart,u=r.lookahead-(Mt-1);do r.ins_h=tu(r,r.ins_h,r.window[l+Mt-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--u);r.strstart=l,r.lookahead=Mt-1,Df(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=Mt-1,r.match_available=0,e.next_in=s,e.input=a,e.avail_in=o,r.wrap=i,gi};var aoe=roe,loe=HD,uoe=GD,coe=VD,doe=noe,foe=ioe,hoe=ooe,poe=soe,goe="pako deflate (from Nodeca project)",_p={deflateInit:aoe,deflateInit2:loe,deflateReset:uoe,deflateResetKeep:coe,deflateSetHeader:doe,deflate:foe,deflateEnd:hoe,deflateSetDictionary:poe,deflateInfo:goe};const moe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var yoe=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(const r in n)moe(n,r)&&(e[r]=n[r])}}return e},voe=e=>{let t=0;for(let r=0,i=e.length;r=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Cg[254]=Cg[254]=1;var _oe=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,o,s=e.length,a=0;for(i=0;i>>6,t[o++]=128|n&63):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|n&63):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|n&63);return t};const boe=(e,t)=>{if(t<65534&&e.subarray&&qD)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{const n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i;const o=new Array(n*2);for(i=0,r=0;r4){o[i++]=65533,r+=a-1;continue}for(s&=a===2?31:a===3?15:7;a>1&&r1){o[i++]=65533;continue}s<65536?o[i++]=s:(s-=65536,o[i++]=55296|s>>10&1023,o[i++]=56320|s&1023)}return boe(o,i)},woe=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Cg[e[n]]>t?n:t},Eg={string2buf:_oe,buf2string:Soe,utf8border:woe};function xoe(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var WD=xoe;const KD=Object.prototype.toString,{Z_NO_FLUSH:Coe,Z_SYNC_FLUSH:Eoe,Z_FULL_FLUSH:Toe,Z_FINISH:Aoe,Z_OK:qv,Z_STREAM_END:koe,Z_DEFAULT_COMPRESSION:Poe,Z_DEFAULT_STRATEGY:Roe,Z_DEFLATED:Ooe}=Cm;function CE(e){this.options=N_.assign({level:Poe,method:Ooe,chunkSize:16384,windowBits:15,memLevel:8,strategy:Roe},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new WD,this.strm.avail_out=0;let n=_p.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==qv)throw new Error(Mf[n]);if(t.header&&_p.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=Eg.string2buf(t.dictionary):KD.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=_p.deflateSetDictionary(this.strm,r),n!==qv)throw new Error(Mf[n]);this._dict_set=!0}}CE.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,o;if(this.ended)return!1;for(t===~~t?o=t:o=t===!0?Aoe:Coe,typeof e=="string"?n.input=Eg.string2buf(e):KD.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(o===Eoe||o===Toe)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=_p.deflate(n,o),i===koe)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=_p.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===qv;if(n.avail_out===0){this.onData(n.output);continue}if(o>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};CE.prototype.onData=function(e){this.chunks.push(e)};CE.prototype.onEnd=function(e){e===qv&&(this.result=N_.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const Ty=16209,Ioe=16191;var Moe=function(t,n){let r,i,o,s,a,l,u,c,d,f,h,p,m,b,_,v,g,y,S,w,x,E,A,T;const k=t.state;r=t.next_in,A=t.input,i=r+(t.avail_in-5),o=t.next_out,T=t.output,s=o-(n-t.avail_out),a=o+(t.avail_out-257),l=k.dmax,u=k.wsize,c=k.whave,d=k.wnext,f=k.window,h=k.hold,p=k.bits,m=k.lencode,b=k.distcode,_=(1<>>24,h>>>=y,p-=y,y=g>>>16&255,y===0)T[o++]=g&65535;else if(y&16){S=g&65535,y&=15,y&&(p>>=y,p-=y),p<15&&(h+=A[r++]<>>24,h>>>=y,p-=y,y=g>>>16&255,y&16){if(w=g&65535,y&=15,pl){t.msg="invalid distance too far back",k.mode=Ty;break e}if(h>>>=y,p-=y,y=o-s,w>y){if(y=w-y,y>c&&k.sane){t.msg="invalid distance too far back",k.mode=Ty;break e}if(x=0,E=f,d===0){if(x+=u-y,y2;)T[o++]=E[x++],T[o++]=E[x++],T[o++]=E[x++],S-=3;S&&(T[o++]=E[x++],S>1&&(T[o++]=E[x++]))}else{x=o-w;do T[o++]=T[x++],T[o++]=T[x++],T[o++]=T[x++],S-=3;while(S>2);S&&(T[o++]=T[x++],S>1&&(T[o++]=T[x++]))}}else if(y&64){t.msg="invalid distance code",k.mode=Ty;break e}else{g=b[(g&65535)+(h&(1<>3,r-=S,p-=S<<3,h&=(1<{const l=a.bits;let u=0,c=0,d=0,f=0,h=0,p=0,m=0,b=0,_=0,v=0,g,y,S,w,x,E=null,A;const T=new Uint16Array(ad+1),k=new Uint16Array(ad+1);let L=null,N,C,P;for(u=0;u<=ad;u++)T[u]=0;for(c=0;c=1&&T[f]===0;f--);if(h>f&&(h=f),f===0)return i[o++]=1<<24|64<<16|0,i[o++]=1<<24|64<<16|0,a.bits=1,0;for(d=1;d0&&(e===l6||f!==1))return-1;for(k[1]=0,u=1;us6||e===u6&&_>a6)return 1;for(;;){N=u-m,s[c]+1=A?(C=L[s[c]-A],P=E[s[c]-A]):(C=32+64,P=0),g=1<>m)+y]=N<<24|C<<16|P|0;while(y!==0);for(g=1<>=1;if(g!==0?(v&=g-1,v+=g):v=0,c++,--T[u]===0){if(u===f)break;u=t[n+s[c]]}if(u>h&&(v&w)!==S){for(m===0&&(m=h),x+=d,p=u-m,b=1<s6||e===u6&&_>a6)return 1;S=v&w,i[S]=h<<24|p<<16|x-o|0}}return v!==0&&(i[x+v]=u-m<<24|64<<16|0),a.bits=h,0};var bp=Foe;const Boe=0,XD=1,QD=2,{Z_FINISH:c6,Z_BLOCK:zoe,Z_TREES:Ay,Z_OK:Ac,Z_STREAM_END:Uoe,Z_NEED_DICT:joe,Z_STREAM_ERROR:rs,Z_DATA_ERROR:YD,Z_MEM_ERROR:ZD,Z_BUF_ERROR:Voe,Z_DEFLATED:d6}=Cm,D_=16180,f6=16181,h6=16182,p6=16183,g6=16184,m6=16185,y6=16186,v6=16187,_6=16188,b6=16189,Wv=16190,Aa=16191,B2=16192,S6=16193,z2=16194,w6=16195,x6=16196,C6=16197,E6=16198,ky=16199,Py=16200,T6=16201,A6=16202,k6=16203,P6=16204,R6=16205,U2=16206,O6=16207,I6=16208,Vn=16209,JD=16210,eL=16211,Goe=852,Hoe=592,qoe=15,Woe=qoe,M6=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function Koe(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Uc=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.modeeL?1:0},tL=e=>{if(Uc(e))return rs;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=D_,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(Goe),t.distcode=t.distdyn=new Int32Array(Hoe),t.sane=1,t.back=-1,Ac},nL=e=>{if(Uc(e))return rs;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,tL(e)},rL=(e,t)=>{let n;if(Uc(e))return rs;const r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?rs:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,nL(e))},iL=(e,t)=>{if(!e)return rs;const n=new Koe;e.state=n,n.strm=e,n.window=null,n.mode=D_;const r=rL(e,t);return r!==Ac&&(e.state=null),r},Xoe=e=>iL(e,Woe);let N6=!0,j2,V2;const Qoe=e=>{if(N6){j2=new Int32Array(512),V2=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(bp(XD,e.lens,0,288,j2,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;bp(QD,e.lens,0,32,V2,0,e.work,{bits:5}),N6=!1}e.lencode=j2,e.lenbits=9,e.distcode=V2,e.distbits=5},oL=(e,t,n,r)=>{let i;const o=e.state;return o.window===null&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(n-o.wsize,n),0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),o.window.set(t.subarray(n-r,n-r+i),o.wnext),r-=i,r?(o.window.set(t.subarray(n-r,n),0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave{let n,r,i,o,s,a,l,u,c,d,f,h,p,m,b=0,_,v,g,y,S,w,x,E;const A=new Uint8Array(4);let T,k;const L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Uc(e)||!e.output||!e.input&&e.avail_in!==0)return rs;n=e.state,n.mode===Aa&&(n.mode=B2),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,d=a,f=l,E=Ac;e:for(;;)switch(n.mode){case D_:if(n.wrap===0){n.mode=B2;break}for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Qr(n.check,A,2,0),u=0,c=0,n.mode=f6;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((u&255)<<8)+(u>>8))%31){e.msg="incorrect header check",n.mode=Vn;break}if((u&15)!==d6){e.msg="unknown compression method",n.mode=Vn;break}if(u>>>=4,c-=4,x=(u&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>n.wbits){e.msg="invalid window size",n.mode=Vn;break}n.dmax=1<>8&1),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Qr(n.check,A,2,0)),u=0,c=0,n.mode=h6;case h6:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>8&255,A[2]=u>>>16&255,A[3]=u>>>24&255,n.check=Qr(n.check,A,4,0)),u=0,c=0,n.mode=p6;case p6:for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>8),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Qr(n.check,A,2,0)),u=0,c=0,n.mode=g6;case g6:if(n.flags&1024){for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Qr(n.check,A,2,0)),u=0,c=0}else n.head&&(n.head.extra=null);n.mode=m6;case m6:if(n.flags&1024&&(h=n.length,h>a&&(h=a),h&&(n.head&&(x=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(o,o+h),x)),n.flags&512&&n.wrap&4&&(n.check=Qr(n.check,r,h,o)),a-=h,o+=h,n.length-=h),n.length))break e;n.length=0,n.mode=y6;case y6:if(n.flags&2048){if(a===0)break e;h=0;do x=r[o+h++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&h>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Aa;break;case b6:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>=c&7,c-=c&7,n.mode=U2;break}for(;c<3;){if(a===0)break e;a--,u+=r[o++]<>>=1,c-=1,u&3){case 0:n.mode=S6;break;case 1:if(Qoe(n),n.mode=ky,t===Ay){u>>>=2,c-=2;break e}break;case 2:n.mode=x6;break;case 3:e.msg="invalid block type",n.mode=Vn}u>>>=2,c-=2;break;case S6:for(u>>>=c&7,c-=c&7;c<32;){if(a===0)break e;a--,u+=r[o++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Vn;break}if(n.length=u&65535,u=0,c=0,n.mode=z2,t===Ay)break e;case z2:n.mode=w6;case w6:if(h=n.length,h){if(h>a&&(h=a),h>l&&(h=l),h===0)break e;i.set(r.subarray(o,o+h),s),a-=h,o+=h,l-=h,s+=h,n.length-=h;break}n.mode=Aa;break;case x6:for(;c<14;){if(a===0)break e;a--,u+=r[o++]<>>=5,c-=5,n.ndist=(u&31)+1,u>>>=5,c-=5,n.ncode=(u&15)+4,u>>>=4,c-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Vn;break}n.have=0,n.mode=C6;case C6:for(;n.have>>=3,c-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,T={bits:n.lenbits},E=bp(Boe,n.lens,0,19,n.lencode,0,n.work,T),n.lenbits=T.bits,E){e.msg="invalid code lengths set",n.mode=Vn;break}n.have=0,n.mode=E6;case E6:for(;n.have>>24,v=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=_,c-=_,n.lens[n.have++]=g;else{if(g===16){for(k=_+2;c>>=_,c-=_,n.have===0){e.msg="invalid bit length repeat",n.mode=Vn;break}x=n.lens[n.have-1],h=3+(u&3),u>>>=2,c-=2}else if(g===17){for(k=_+3;c>>=_,c-=_,x=0,h=3+(u&7),u>>>=3,c-=3}else{for(k=_+7;c>>=_,c-=_,x=0,h=11+(u&127),u>>>=7,c-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Vn;break}for(;h--;)n.lens[n.have++]=x}}if(n.mode===Vn)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=Vn;break}if(n.lenbits=9,T={bits:n.lenbits},E=bp(XD,n.lens,0,n.nlen,n.lencode,0,n.work,T),n.lenbits=T.bits,E){e.msg="invalid literal/lengths set",n.mode=Vn;break}if(n.distbits=6,n.distcode=n.distdyn,T={bits:n.distbits},E=bp(QD,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,T),n.distbits=T.bits,E){e.msg="invalid distances set",n.mode=Vn;break}if(n.mode=ky,t===Ay)break e;case ky:n.mode=Py;case Py:if(a>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=o,e.avail_in=a,n.hold=u,n.bits=c,Moe(e,f),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,n.mode===Aa&&(n.back=-1);break}for(n.back=0;b=n.lencode[u&(1<>>24,v=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>y)],_=b>>>24,v=b>>>16&255,g=b&65535,!(y+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=y,c-=y,n.back+=y}if(u>>>=_,c-=_,n.back+=_,n.length=g,v===0){n.mode=R6;break}if(v&32){n.back=-1,n.mode=Aa;break}if(v&64){e.msg="invalid literal/length code",n.mode=Vn;break}n.extra=v&15,n.mode=T6;case T6:if(n.extra){for(k=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=A6;case A6:for(;b=n.distcode[u&(1<>>24,v=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>y)],_=b>>>24,v=b>>>16&255,g=b&65535,!(y+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=y,c-=y,n.back+=y}if(u>>>=_,c-=_,n.back+=_,v&64){e.msg="invalid distance code",n.mode=Vn;break}n.offset=g,n.extra=v&15,n.mode=k6;case k6:if(n.extra){for(k=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Vn;break}n.mode=P6;case P6:if(l===0)break e;if(h=f-l,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Vn;break}h>n.wnext?(h-=n.wnext,p=n.wsize-h):p=n.wnext-h,h>n.length&&(h=n.length),m=n.window}else m=i,p=s-n.offset,h=n.length;h>l&&(h=l),l-=h,n.length-=h;do i[s++]=m[p++];while(--h);n.length===0&&(n.mode=Py);break;case R6:if(l===0)break e;i[s++]=n.length,l--,n.mode=Py;break;case U2:if(n.wrap){for(;c<32;){if(a===0)break e;a--,u|=r[o++]<{if(Uc(e))return rs;let t=e.state;return t.window&&(t.window=null),e.state=null,Ac},Joe=(e,t)=>{if(Uc(e))return rs;const n=e.state;return n.wrap&2?(n.head=t,t.done=!1,Ac):rs},ese=(e,t)=>{const n=t.length;let r,i,o;return Uc(e)||(r=e.state,r.wrap!==0&&r.mode!==Wv)?rs:r.mode===Wv&&(i=1,i=xg(i,t,n,0),i!==r.check)?YD:(o=oL(e,t,n,n),o?(r.mode=JD,ZD):(r.havedict=1,Ac))};var tse=nL,nse=rL,rse=tL,ise=Xoe,ose=iL,sse=Yoe,ase=Zoe,lse=Joe,use=ese,cse="pako inflate (from Nodeca project)",za={inflateReset:tse,inflateReset2:nse,inflateResetKeep:rse,inflateInit:ise,inflateInit2:ose,inflate:sse,inflateEnd:ase,inflateGetHeader:lse,inflateSetDictionary:use,inflateInfo:cse};function dse(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var fse=dse;const sL=Object.prototype.toString,{Z_NO_FLUSH:hse,Z_FINISH:pse,Z_OK:Tg,Z_STREAM_END:G2,Z_NEED_DICT:H2,Z_STREAM_ERROR:gse,Z_DATA_ERROR:D6,Z_MEM_ERROR:mse}=Cm;function Tm(e){this.options=N_.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new WD,this.strm.avail_out=0;let n=za.inflateInit2(this.strm,t.windowBits);if(n!==Tg)throw new Error(Mf[n]);if(this.header=new fse,za.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Eg.string2buf(t.dictionary):sL.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=za.inflateSetDictionary(this.strm,t.dictionary),n!==Tg)))throw new Error(Mf[n])}Tm.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let o,s,a;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?pse:hse,sL.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),o=za.inflate(n,s),o===H2&&i&&(o=za.inflateSetDictionary(n,i),o===Tg?o=za.inflate(n,s):o===D6&&(o=H2));n.avail_in>0&&o===G2&&n.state.wrap>0&&e[n.next_in]!==0;)za.inflateReset(n),o=za.inflate(n,s);switch(o){case gse:case D6:case H2:case mse:return this.onEnd(o),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(n.avail_out===0||o===G2))if(this.options.to==="string"){let l=Eg.utf8border(n.output,n.next_out),u=n.next_out-l,c=Eg.buf2string(n.output,l);n.next_out=u,n.avail_out=r-u,u&&n.output.set(n.output.subarray(l,l+u),0),this.onData(c)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(o===Tg&&a===0)){if(o===G2)return o=za.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Tm.prototype.onData=function(e){this.chunks.push(e)};Tm.prototype.onEnd=function(e){e===Tg&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=N_.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function EE(e,t){const n=new Tm(t);if(n.push(e),n.err)throw n.msg||Mf[n.err];return n.result}function yse(e,t){return t=t||{},t.raw=!0,EE(e,t)}var vse=Tm,_se=EE,bse=yse,Sse=EE,wse=Cm,xse={Inflate:vse,inflate:_se,inflateRaw:bse,ungzip:Sse,constants:wse};const{Inflate:yRe,inflate:Cse,inflateRaw:vRe,ungzip:_Re}=xse;var aL=Cse;const lL=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=3988292384^t>>>1:t=t>>>1;lL[e]=t}function Ese(e){let t=-1;for(let n=0;n>>8;return t^-1}var Gn;(function(e){e[e.GRAYSCALE=0]="GRAYSCALE",e[e.TRUE_COLOR=2]="TRUE_COLOR",e[e.PALETTE=3]="PALETTE",e[e.GRAYSCALE_WITH_ALPHA=4]="GRAYSCALE_WITH_ALPHA",e[e.TRUE_COLOR_WITH_ALPHA=6]="TRUE_COLOR_WITH_ALPHA"})(Gn||(Gn={}));const Tse={[Gn.GRAYSCALE]:1,[Gn.TRUE_COLOR]:3,[Gn.PALETTE]:1,[Gn.GRAYSCALE_WITH_ALPHA]:2,[Gn.TRUE_COLOR_WITH_ALPHA]:4},Ase=1;var Co;(function(e){e[e.NONE=0]="NONE",e[e.SUB=1]="SUB",e[e.UP=2]="UP",e[e.AVERAGE=3]="AVERAGE",e[e.PAETH=4]="PAETH"})(Co||(Co={}));const kse={[Co.NONE](e){return e},[Co.SUB](e,t){const n=new Uint8Array(e.length);for(let r=0;r>1;r[i]=e[i]+a}return r},[Co.PAETH](e,t,n){const r=new Uint8Array(e.length);for(let i=0;i>7&1,i>>6&1,i>>5&1,i>>4&1,i>>3&1,i>>2&1,i>>1&1,i&1)}else if(t===2){const i=e[r++];n.push(i>>6&3,i>>4&3,i>>2&3,i&3)}else if(t===4){const i=e[r++];n.push(i>>4&15,i&15)}else if(t===8){const i=e[r++];n.push(i)}else if(t===16)n.push(e[r++]<<8|e[r++]);else throw new Error("Unsupported depth: "+t);return n}const cL=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];function Rse(e,t,n){if(!e)return[{passWidth:t,passHeight:n,passIndex:0}];const r=[];return cL.forEach(function({x:i,y:o},s){const a=t%8,l=n%8,u=t-a>>3,c=n-l>>3;let d=u*i.length;for(let h=0;h>3||1;let p=0,m=new Uint8Array;for(let b=0;b>3)+Ase,w=u[p];if(!(w in Co))throw new Error("Unsupported filter type: "+w);const x=kse[w],E=x(u.slice(p+1,p+S),h,m);m=E;let A=0;const T=Pse(E,o);for(let L=0;L<_;L++){const N=k();a&&N[0]===a[0]&&N[1]===a[1]&&N[2]===a[2]&&(N[3]=0);const C=Ose(t,r,g,L,y);for(let P=0;P127)if(r>191&&r<224){if(t>=e.length)throw new Error("UTF-8 decode: incomplete 2-byte sequence");r=(r&31)<<6|e[t++]&63}else if(r>223&&r<240){if(t+1>=e.length)throw new Error("UTF-8 decode: incomplete 3-byte sequence");r=(r&15)<<12|(e[t++]&63)<<6|e[t++]&63}else if(r>239&&r<248){if(t+2>=e.length)throw new Error("UTF-8 decode: incomplete 4-byte sequence");r=(r&7)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63}else throw new Error("UTF-8 decode: unknown multibyte start 0x"+r.toString(16)+" at index "+(t-1));if(r<=65535)n+=String.fromCharCode(r);else if(r<=1114111)r-=65536,n+=String.fromCharCode(r>>10|55296),n+=String.fromCharCode(r&1023|56320);else throw new Error("UTF-8 decode: code point 0x"+r.toString(16)+" exceeds UTF-16 reach")}return n}function Nse(e,t){const n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}const bl=1e5;function Dse(e){const t=new Uint8Array(e);let n=new Uint8Array;const r={width:0,height:0,depth:0,colorType:0,compression:0,interlace:0,filter:0,data:[]};let i=0;function o(){return t[i++]<<24|t[i++]<<16|t[i++]<<8|t[i++]}function s(){return t[i++]<<8|t[i++]}function a(){return t[i++]}function l(){const R=[];let O=0;for(;(O=t[i++])!==0;)R.push(O);return new Uint8Array(R)}function u(R){const O=i+R;let I="";for(;i=0&&L6.call(t.callee)==="[object Function]"),r},K2,$6;function Bse(){if($6)return K2;$6=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=fL,i=Object.prototype.propertyIsEnumerable,o=!i.call({toString:null},"toString"),s=i.call(function(){},"prototype"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],l=function(f){var h=f.constructor;return h&&h.prototype===f},u={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},c=function(){if(typeof window>"u")return!1;for(var f in window)try{if(!u["$"+f]&&t.call(window,f)&&window[f]!==null&&typeof window[f]=="object")try{l(window[f])}catch{return!0}}catch{return!0}return!1}(),d=function(f){if(typeof window>"u"||!c)return l(f);try{return l(f)}catch{return!1}};e=function(h){var p=h!==null&&typeof h=="object",m=n.call(h)==="[object Function]",b=r(h),_=p&&n.call(h)==="[object String]",v=[];if(!p&&!m&&!b)throw new TypeError("Object.keys called on a non-object");var g=s&&m;if(_&&h.length>0&&!t.call(h,0))for(var y=0;y0)for(var S=0;S"u"||!Xr?Rt:Xr(Uint8Array),gc={"%AggregateError%":typeof AggregateError>"u"?Rt:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Rt:ArrayBuffer,"%ArrayIteratorPrototype%":ld&&Xr?Xr([][Symbol.iterator]()):Rt,"%AsyncFromSyncIteratorPrototype%":Rt,"%AsyncFunction%":Cd,"%AsyncGenerator%":Cd,"%AsyncGeneratorFunction%":Cd,"%AsyncIteratorPrototype%":Cd,"%Atomics%":typeof Atomics>"u"?Rt:Atomics,"%BigInt%":typeof BigInt>"u"?Rt:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Rt:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Rt:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Rt:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?Rt:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Rt:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Rt:FinalizationRegistry,"%Function%":pL,"%GeneratorFunction%":Cd,"%Int8Array%":typeof Int8Array>"u"?Rt:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Rt:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Rt:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ld&&Xr?Xr(Xr([][Symbol.iterator]())):Rt,"%JSON%":typeof JSON=="object"?JSON:Rt,"%Map%":typeof Map>"u"?Rt:Map,"%MapIteratorPrototype%":typeof Map>"u"||!ld||!Xr?Rt:Xr(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Rt:Promise,"%Proxy%":typeof Proxy>"u"?Rt:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?Rt:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Rt:Set,"%SetIteratorPrototype%":typeof Set>"u"||!ld||!Xr?Rt:Xr(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Rt:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ld&&Xr?Xr(""[Symbol.iterator]()):Rt,"%Symbol%":ld?Symbol:Rt,"%SyntaxError%":Lf,"%ThrowTypeError%":tae,"%TypedArray%":rae,"%TypeError%":af,"%Uint8Array%":typeof Uint8Array>"u"?Rt:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Rt:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Rt:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Rt:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?Rt:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Rt:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Rt:WeakSet};if(Xr)try{null.error}catch(e){var iae=Xr(Xr(e));gc["%Error.prototype%"]=iae}var oae=function e(t){var n;if(t==="%AsyncFunction%")n=Q2("async function () {}");else if(t==="%GeneratorFunction%")n=Q2("function* () {}");else if(t==="%AsyncGeneratorFunction%")n=Q2("async function* () {}");else if(t==="%AsyncGenerator%"){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Xr&&(n=Xr(i.prototype))}return gc[t]=n,n},j6={"%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"]},Am=hL,Kv=eae,sae=Am.call(Function.call,Array.prototype.concat),aae=Am.call(Function.apply,Array.prototype.splice),V6=Am.call(Function.call,String.prototype.replace),Xv=Am.call(Function.call,String.prototype.slice),lae=Am.call(Function.call,RegExp.prototype.exec),uae=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,cae=/\\(\\)?/g,dae=function(t){var n=Xv(t,0,1),r=Xv(t,-1);if(n==="%"&&r!=="%")throw new Lf("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new Lf("invalid intrinsic syntax, expected opening `%`");var i=[];return V6(t,uae,function(o,s,a,l){i[i.length]=a?V6(l,cae,"$1"):s||o}),i},fae=function(t,n){var r=t,i;if(Kv(j6,r)&&(i=j6[r],r="%"+i[0]+"%"),Kv(gc,r)){var o=gc[r];if(o===Cd&&(o=oae(r)),typeof o>"u"&&!n)throw new af("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:r,value:o}}throw new Lf("intrinsic "+t+" does not exist!")},hae=function(t,n){if(typeof t!="string"||t.length===0)throw new af("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new af('"allowMissing" argument must be a boolean');if(lae(/^%?[^%]*%?$/,t)===null)throw new Lf("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=dae(t),i=r.length>0?r[0]:"",o=fae("%"+i+"%",n),s=o.name,a=o.value,l=!1,u=o.alias;u&&(i=u[0],aae(r,sae([0,1],u)));for(var c=1,d=!0;c=r.length){var m=pc(a,f);d=!!m,d&&"get"in m&&!("originalValue"in m.get)?a=m.get:a=a[f]}else d=Kv(a,f),a=a[f];d&&!l&&(gc[s]=a)}}return a},pae=hae,wC=pae("%Object.defineProperty%",!0),xC=function(){if(wC)try{return wC({},"a",{value:1}),!0}catch{return!1}return!1};xC.hasArrayLengthDefineBug=function(){if(!xC())return null;try{return wC([],"length",{value:1}).length!==1}catch{return!0}};var gae=xC,mae=jse,yae=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",vae=Object.prototype.toString,_ae=Array.prototype.concat,gL=Object.defineProperty,bae=function(e){return typeof e=="function"&&vae.call(e)==="[object Function]"},Sae=gae(),mL=gL&&Sae,wae=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!bae(r)||!r())return}mL?gL(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n},yL=function(e,t){var n=arguments.length>2?arguments[2]:{},r=mae(t);yae&&(r=_ae.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))}};V_.testComparisonRange=Vae;var G_={};Object.defineProperty(G_,"__esModule",{value:!0});G_.testRange=void 0;var Gae=function(e,t){return typeof e=="number"?!(et.max||e===t.max&&!t.maxInclusive):!1};G_.testRange=Gae;(function(e){var t=ut&&ut.__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,Wae.escapeRegexString)(u.trim())}).join("|")+")")}:{path:l.path}})};H_.highlight=Xae;var q_={},CL={exports:{}};(function(e){(function(t,n){e.exports?e.exports=n():t.nearley=n()})(ut,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}})})(CL);var Qae=CL.exports,kc={},EL={},ku={};ku.__esModule=void 0;ku.__esModule=!0;var Yae=typeof Object.setPrototypeOf=="function",Zae=typeof Object.getPrototypeOf=="function",Jae=typeof Object.defineProperty=="function",ele=typeof Object.create=="function",tle=typeof Object.prototype.hasOwnProperty=="function",nle=function(t,n){Yae?Object.setPrototypeOf(t,n):t.__proto__=n};ku.setPrototypeOf=nle;var rle=function(t){return Zae?Object.getPrototypeOf(t):t.__proto__||t.prototype};ku.getPrototypeOf=rle;var G6=!1,ile=function e(t,n,r){if(Jae&&!G6)try{Object.defineProperty(t,n,r)}catch{G6=!0,e(t,n,r)}else t[n]=r.value};ku.defineProperty=ile;var TL=function(t,n){return tle?t.hasOwnProperty(t,n):t[n]===void 0};ku.hasOwnProperty=TL;var ole=function(t,n){if(ele)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)TL(n,o)&&(i[o]=n[o].value);return i};ku.objectCreate=ole;(function(e){e.__esModule=void 0,e.__esModule=!0;var t=ku,n=t.setPrototypeOf,r=t.getPrototypeOf,i=t.defineProperty,o=t.objectCreate,s=new Error().toString()==="[object Error]",a="";function l(u){var c=this.constructor,d=c.name||function(){var b=c.toString().match(/^function\s*([^\s(]+)/);return b===null?a||"Error":b[1]}(),f=d==="Error",h=f?a:d,p=Error.apply(this,arguments);if(n(p,r(this)),!(p instanceof c)||!(p instanceof l)){var p=this;Error.apply(this,arguments),i(p,"message",{configurable:!0,enumerable:!1,value:u,writable:!0})}if(i(p,"name",{configurable:!0,enumerable:!1,value:h,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(p,f?l:c),p.stack===void 0){var m=new Error(u);m.name=p.name,p.stack=m.stack}return s&&i(p,"toString",{configurable:!0,enumerable:!1,value:function(){return(this.name||"Error")+(typeof this.message>"u"?"":": "+this.message)},writable:!0}),p}a=l.name||"ExtendableError",l.prototype=o(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),e.ExtendableError=l,e.default=e.ExtendableError})(EL);var AL=ut&&ut.__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(kc,"__esModule",{value:!0});kc.SyntaxError=kc.LiqeError=void 0;var sle=EL,kL=function(e){AL(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(sle.ExtendableError);kc.LiqeError=kL;var ale=function(e){AL(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}(kL);kc.SyntaxError=ale;var PE={},Qv=ut&&ut.__assign||function(){return Qv=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:ka},{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"};PE.default=lle;var PL={},W_={},Rm={};Object.defineProperty(Rm,"__esModule",{value:!0});Rm.isSafePath=void 0;var ule=/^(\.(?:[_a-zA-Z][a-zA-Z\d_]*|\0|[1-9]\d*))+$/u,cle=function(e){return ule.test(e)};Rm.isSafePath=cle;Object.defineProperty(W_,"__esModule",{value:!0});W_.createGetValueFunctionBody=void 0;var dle=Rm,fle=function(e){if(!(0,dle.isSafePath)(e))throw new Error("Unsafe path.");var t="return subject"+e;return t.replace(/(\.(\d+))/g,".[$2]").replace(/\./g,"?.")};W_.createGetValueFunctionBody=fle;(function(e){var t=ut&&ut.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,l=arguments.length;a\d+) col (?\d+)/,vle=function(e){if(e.trim()==="")return{location:{end:0,start:0},type:"EmptyExpression"};var t=new OL.default.Parser(mle),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(yle);throw r?new hle.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,gle.hydrateAst)(n[0]);return i};q_.parse=vle;var K_={};Object.defineProperty(K_,"__esModule",{value:!0});K_.test=void 0;var _le=km,ble=function(e,t){return(0,_le.filter)(e,[t]).length===1};K_.test=ble;var IL={};(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})(IL);var X_={};Object.defineProperty(X_,"__esModule",{value:!0});X_.isSafeUnquotedExpression=void 0;var Sle=function(e){return/^[#$*@A-Z_a-z][#$*.@A-Z_a-z-]*$/.test(e)};X_.isSafeUnquotedExpression=Sle;(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=km;Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return t.filter}});var n=H_;Object.defineProperty(e,"highlight",{enumerable:!0,get:function(){return n.highlight}});var r=q_;Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return r.parse}});var i=K_;Object.defineProperty(e,"test",{enumerable:!0,get:function(){return i.test}});var o=kc;Object.defineProperty(e,"LiqeError",{enumerable:!0,get:function(){return o.LiqeError}}),Object.defineProperty(e,"SyntaxError",{enumerable:!0,get:function(){return o.SyntaxError}});var s=IL;Object.defineProperty(e,"serialize",{enumerable:!0,get:function(){return s.serialize}});var a=X_;Object.defineProperty(e,"isSafeUnquotedExpression",{enumerable:!0,get:function(){return a.isSafeUnquotedExpression}})})(xL);var Om={},ML={},Pc={};Object.defineProperty(Pc,"__esModule",{value:!0});Pc.ROARR_LOG_FORMAT_VERSION=Pc.ROARR_VERSION=void 0;Pc.ROARR_VERSION="5.0.0";Pc.ROARR_LOG_FORMAT_VERSION="2.0.0";var Im={};Object.defineProperty(Im,"__esModule",{value:!0});Im.logLevels=void 0;Im.logLevels={debug:20,error:50,fatal:60,info:30,trace:10,warn:40};var NL={},Q_={};Object.defineProperty(Q_,"__esModule",{value:!0});Q_.hasOwnProperty=void 0;const wle=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);Q_.hasOwnProperty=wle;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hasOwnProperty=void 0;var t=Q_;Object.defineProperty(e,"hasOwnProperty",{enumerable:!0,get:function(){return t.hasOwnProperty}})})(NL);var DL={},Y_={},Z_={};Object.defineProperty(Z_,"__esModule",{value:!0});Z_.tokenize=void 0;const xle=/(?:%(?([+0-]|-\+))?(?\d+)?(?\d+\$)?(?\.\d+)?(?[%BCESb-iosux]))|(\\%)/g,Cle=e=>{let t;const n=[];let r=0,i=0,o=null;for(;(t=xle.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};Z_.tokenize=Cle;Object.defineProperty(Y_,"__esModule",{value:!0});Y_.createPrintf=void 0;const H6=TE,Ele=Z_,Tle=(e,t)=>t.placeholder,Ale=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:Tle,i={};return(o,...s)=>{let a=i[o];a||(a=i[o]=Ele.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+=H6.boolean(c)?"true":"false";else if(u.conversion==="B")l+=H6.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}};Y_.createPrintf=Ale;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.printf=e.createPrintf=void 0;const t=Y_;Object.defineProperty(e,"createPrintf",{enumerable:!0,get:function(){return t.createPrintf}}),e.printf=t.createPrintf()})(DL);var CC={exports:{}};(function(e,t){const{hasOwnProperty:n}=Object.prototype,r=b();r.configure=b,r.stringify=r,r.default=r,t.stringify=r,t.configure=b,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function o(_){return _.length<5e3&&!i.test(_)?`"${_}"`:JSON.stringify(_)}function s(_){if(_.length>200)return _.sort();for(let v=1;v<_.length;v++){const g=_[v];let y=v;for(;y!==0&&_[y-1]>g;)_[y]=_[y-1],y--;_[y]=g}return _}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function l(_){return a.call(_)!==void 0&&_.length!==0}function u(_,v,g){_.length= 1`)}return g===void 0?1/0:g}function h(_){return _===1?"1 item":`${_} items`}function p(_){const v=new Set;for(const g of _)(typeof g=="string"||typeof g=="number")&&v.add(String(g));return v}function m(_){if(n.call(_,"strict")){const v=_.strict;if(typeof v!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(v)return g=>{let y=`Object can not safely be stringified. Received type ${typeof g}`;throw typeof g!="function"&&(y+=` (${g.toString()})`),new Error(y)}}}function b(_){_={..._};const v=m(_);v&&(_.bigint===void 0&&(_.bigint=!1),"circularValue"in _||(_.circularValue=Error));const g=c(_),y=d(_,"bigint"),S=d(_,"deterministic"),w=f(_,"maximumDepth"),x=f(_,"maximumBreadth");function E(N,C,P,D,B,R){let O=C[N];switch(typeof O=="object"&&O!==null&&typeof O.toJSON=="function"&&(O=O.toJSON(N)),O=D.call(C,N,O),typeof O){case"string":return o(O);case"object":{if(O===null)return"null";if(P.indexOf(O)!==-1)return g;let I="",F=",";const U=R;if(Array.isArray(O)){if(O.length===0)return"[]";if(wx){const ge=O.length-x-1;I+=`${F}"... ${h(ge)} not stringified"`}return B!==""&&(I+=` -${U}`),P.pop(),`[${I}]`}let V=Object.keys(O);const H=V.length;if(H===0)return"{}";if(wx){const K=H-x;I+=`${Q}"...":${Y}"${h(K)} not stringified"`,Q=F}return B!==""&&Q.length>1&&(I=` -${R}${I} -${U}`),P.pop(),`{${I}}`}case"number":return isFinite(O)?String(O):v?v(O):"null";case"boolean":return O===!0?"true":"false";case"undefined":return;case"bigint":if(y)return String(O);default:return v?v(O):void 0}}function A(N,C,P,D,B,R){switch(typeof C=="object"&&C!==null&&typeof C.toJSON=="function"&&(C=C.toJSON(N)),typeof C){case"string":return o(C);case"object":{if(C===null)return"null";if(P.indexOf(C)!==-1)return g;const O=R;let I="",F=",";if(Array.isArray(C)){if(C.length===0)return"[]";if(wx){const j=C.length-x-1;I+=`${F}"... ${h(j)} not stringified"`}return B!==""&&(I+=` -${O}`),P.pop(),`[${I}]`}P.push(C);let U="";B!==""&&(R+=B,F=`, -${R}`,U=" ");let V="";for(const H of D){const Y=A(H,C[H],P,D,B,R);Y!==void 0&&(I+=`${V}${o(H)}:${U}${Y}`,V=F)}return B!==""&&V.length>1&&(I=` -${R}${I} -${O}`),P.pop(),`{${I}}`}case"number":return isFinite(C)?String(C):v?v(C):"null";case"boolean":return C===!0?"true":"false";case"undefined":return;case"bigint":if(y)return String(C);default:return v?v(C):void 0}}function T(N,C,P,D,B){switch(typeof C){case"string":return o(C);case"object":{if(C===null)return"null";if(typeof C.toJSON=="function"){if(C=C.toJSON(N),typeof C!="object")return T(N,C,P,D,B);if(C===null)return"null"}if(P.indexOf(C)!==-1)return g;const R=B;if(Array.isArray(C)){if(C.length===0)return"[]";if(wx){const ie=C.length-x-1;Y+=`${Q}"... ${h(ie)} not stringified"`}return Y+=` -${R}`,P.pop(),`[${Y}]`}let O=Object.keys(C);const I=O.length;if(I===0)return"{}";if(wx){const Y=I-x;U+=`${V}"...": "${h(Y)} not stringified"`,V=F}return V!==""&&(U=` -${B}${U} -${R}`),P.pop(),`{${U}}`}case"number":return isFinite(C)?String(C):v?v(C):"null";case"boolean":return C===!0?"true":"false";case"undefined":return;case"bigint":if(y)return String(C);default:return v?v(C):void 0}}function k(N,C,P){switch(typeof C){case"string":return o(C);case"object":{if(C===null)return"null";if(typeof C.toJSON=="function"){if(C=C.toJSON(N),typeof C!="object")return k(N,C,P);if(C===null)return"null"}if(P.indexOf(C)!==-1)return g;let D="";if(Array.isArray(C)){if(C.length===0)return"[]";if(wx){const H=C.length-x-1;D+=`,"... ${h(H)} not stringified"`}return P.pop(),`[${D}]`}let B=Object.keys(C);const R=B.length;if(R===0)return"{}";if(wx){const F=R-x;D+=`${O}"...":"${h(F)} not stringified"`}return P.pop(),`{${D}}`}case"number":return isFinite(C)?String(C):v?v(C):"null";case"boolean":return C===!0?"true":"false";case"undefined":return;case"bigint":if(y)return String(C);default:return v?v(C):void 0}}function L(N,C,P){if(arguments.length>1){let D="";if(typeof P=="number"?D=" ".repeat(Math.min(P,10)):typeof P=="string"&&(D=P.slice(0,10)),C!=null){if(typeof C=="function")return E("",{"":N},[],C,D,"");if(Array.isArray(C))return A("",N,[],p(C),D,"")}if(D.length!==0)return T("",N,[],D,"")}return k("",N,[])}return L}})(CC,CC.exports);var kle=CC.exports;(function(e){var t=ut&&ut.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(e,"__esModule",{value:!0}),e.createLogger=void 0;const n=Pc,r=Im,i=NL,o=DL,s=t(AE),a=t(kle);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 y=g.getStore();return y||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,y)=>(S,w,x,E,A,T,k,L,N,C)=>{g.child({logLevel:y})(S,w,x,E,A,T,k,L,N,C)},b=1e3,_=(g,y)=>(S,w,x,E,A,T,k,L,N,C)=>{const P=(0,a.default)({a:S,b:w,c:x,d:E,e:A,f:T,g:k,h:L,i:N,j:C,logLevel:y});if(!P)throw new Error("Expected key to be a string");const D=c().onceLog;D.has(P)||(D.add(P),D.size>b&&D.clear(),g.child({logLevel:y})(S,w,x,E,A,T,k,L,N,C))},v=(g,y={},S=[])=>{const w=(x,E,A,T,k,L,N,C,P,D)=>{const B=Date.now(),R=p();let O;h()?O=f():O=d();let I,F;if(typeof x=="string"?I={...O.messageContext,...y}:I={...O.messageContext,...y,...x},typeof x=="string"&&E===void 0)F=x;else if(typeof x=="string"){if(!x.includes("%"))throw new Error("When a string parameter is followed by other arguments, then it is assumed that you are attempting to format a message using printf syntax. You either forgot to add printf bindings or if you meant to add context to the log message, pass them in an object as the first parameter.");F=(0,o.printf)(x,E,A,T,k,L,N,C,P,D)}else{let V=E;if(typeof E!="string")if(E===void 0)V="";else throw new TypeError("Message must be a string. Received "+typeof E+".");F=(0,o.printf)(V,A,T,k,L,N,C,P,D)}let U={context:I,message:F,sequence:R,time:B,version:n.ROARR_LOG_FORMAT_VERSION};for(const V of[...O.transforms,...S])if(U=V(U),typeof U!="object"||U===null)throw new Error("Message transform function must return a message object.");g(U)};return w.child=x=>{let E;return h()?E=f():E=d(),typeof x=="function"?(0,e.createLogger)(g,{...E.messageContext,...y,...x},[x,...S]):(0,e.createLogger)(g,{...E.messageContext,...y,...x},S)},w.getContext=()=>{let x;return h()?x=f():x=d(),{...x.messageContext,...y}},w.adopt=async(x,E)=>{if(!h())return l===!1&&(l=!0,g({context:{logLevel:r.logLevels.warn,package:"roarr"},message:"async_hooks are unavailable; Roarr.adopt will not function as expected",sequence:p(),time:Date.now(),version:n.ROARR_LOG_FORMAT_VERSION})),x();const A=f();let T;(0,i.hasOwnProperty)(A,"sequenceRoot")&&(0,i.hasOwnProperty)(A,"sequence")&&typeof A.sequence=="number"?T=A.sequenceRoot+"."+String(A.sequence++):T=String(c().sequence++);let k={...A.messageContext};const L=[...A.transforms];typeof E=="function"?L.push(E):k={...k,...E};const N=c().asyncLocalStorage;if(!N)throw new Error("Async local context unavailable.");return N.run({messageContext:k,sequence:0,sequenceRoot:T,transforms:L},()=>x())},w.debug=m(w,r.logLevels.debug),w.debugOnce=_(w,r.logLevels.debug),w.error=m(w,r.logLevels.error),w.errorOnce=_(w,r.logLevels.error),w.fatal=m(w,r.logLevels.fatal),w.fatalOnce=_(w,r.logLevels.fatal),w.info=m(w,r.logLevels.info),w.infoOnce=_(w,r.logLevels.info),w.trace=m(w,r.logLevels.trace),w.traceOnce=_(w,r.logLevels.trace),w.warn=m(w,r.logLevels.warn),w.warnOnce=_(w,r.logLevels.warn),w};e.createLogger=v})(ML);var J_={},Ple=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},Rle=ut&&ut.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(J_,"__esModule",{value:!0});J_.createRoarrInitialGlobalStateBrowser=void 0;const q6=Pc,W6=Rle(Ple),Ole=e=>{const t=(e.versions||[]).concat();return t.length>1&&t.sort(W6.default),t.includes(q6.ROARR_VERSION)||t.push(q6.ROARR_VERSION),t.sort(W6.default),{sequence:0,...e,versions:t}};J_.createRoarrInitialGlobalStateBrowser=Ole;var eb={};Object.defineProperty(eb,"__esModule",{value:!0});eb.getLogLevelName=void 0;const Ile=e=>e<=10?"trace":e<=20?"debug":e<=30?"info":e<=40?"warn":e<=50?"error":"fatal";eb.getLogLevelName=Ile;(function(e){var t=ut&&ut.__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=ML,r=J_,o=(0,t(AE).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=Im;Object.defineProperty(e,"logLevels",{enumerable:!0,get:function(){return u.logLevels}});var c=eb;Object.defineProperty(e,"getLogLevelName",{enumerable:!0,get:function(){return c.getLogLevelName}})})(Om);var Mle=ut&&ut.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);i0?h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message," %O"),m,b,_,d):h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message),m,b,_)}}};L_.createLogWriter=jle;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createLogWriter=void 0;var t=L_;Object.defineProperty(e,"createLogWriter",{enumerable:!0,get:function(){return t.createLogWriter}})})(dL);Om.ROARR.write=dL.createLogWriter();const $L={};Om.Roarr.child($L);const tb=th(Om.Roarr.child($L)),pe=e=>tb.get().child({namespace:e}),bRe=["trace","debug","info","warn","error","fatal"],SRe={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},pn=e=>{try{return JSON.parse(JSON.stringify(e))}catch{return"Error parsing object"}},Vle=async e=>{const t={},n=await e.arrayBuffer(),r=Dse(n).text,i=Rv(r,"invokeai_metadata");if(i){const s=bD.safeParse(JSON.parse(i));s.success?t.metadata=s.data:pe("system").error({error:pn(s.error)},"Problem reading metadata from image")}const o=Rv(r,"invokeai_workflow");if(o){const s=ED.safeParse(JSON.parse(o));s.success?t.workflow=s.data:pe("system").error({error:pn(s.error)},"Problem reading workflow from image")}return t};var Yv=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 Jle(){return typeof document>"u"?!0:document.visibilityState!=="hidden"}var Z6=Ns;function zL(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},tue=function(e){return/ion\/(vnd\.api\+)?json/.test(e.get("content-type")||"")};function eP(e){if(!Ns(e))return e;for(var t=gr({},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,y){return e1(t,null,function(){var S,w,x,E,A,T,k,L,N,C,P,D,B,R,O,I,F,U,V,H,Y,Q,j,K,ee,ie,ge,ae,dt,et,Ne,lt,Te,Gt,_r,Tn;return Yv(this,function(vn){switch(vn.label){case 0:return S=y.signal,w=y.getState,x=y.extra,E=y.endpoint,A=y.forced,T=y.type,L=typeof g=="string"?{url:g}:g,N=L.url,C=L.headers,P=C===void 0?new Headers(_.headers):C,D=L.params,B=D===void 0?void 0:D,R=L.responseHandler,O=R===void 0?m??"json":R,I=L.validateStatus,F=I===void 0?b??eue:I,U=L.timeout,V=U===void 0?p:U,H=Q6(L,["url","headers","params","responseHandler","validateStatus","timeout"]),Y=gr(ta(gr({},_),{signal:S}),H),P=new Headers(eP(P)),Q=Y,[4,o(P,{getState:w,extra:x,endpoint:E,forced:A,type:T})];case 1:Q.headers=vn.sent()||P,j=function(Ht){return typeof Ht=="object"&&(Ns(Ht)||Array.isArray(Ht)||typeof Ht.toJSON=="function")},!Y.headers.has("content-type")&&j(Y.body)&&Y.headers.set("content-type",f),j(Y.body)&&c(Y.headers)&&(Y.body=JSON.stringify(Y.body,h)),B&&(K=~N.indexOf("?")?"&":"?",ee=l?l(B):new URLSearchParams(eP(B)),N+=K+ee),N=Yle(r,N),ie=new Request(N,Y),ge=ie.clone(),k={request:ge},dt=!1,et=V&&setTimeout(function(){dt=!0,y.abort()},V),vn.label=2;case 2:return vn.trys.push([2,4,5,6]),[4,a(ie)];case 3:return ae=vn.sent(),[3,6];case 4:return Ne=vn.sent(),[2,{error:{status:dt?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(Ne)},meta:k}];case 5:return et&&clearTimeout(et),[7];case 6:lt=ae.clone(),k.response=lt,Gt="",vn.label=7;case 7:return vn.trys.push([7,9,,10]),[4,Promise.all([v(ae,O).then(function(Ht){return Te=Ht},function(Ht){return _r=Ht}),lt.text().then(function(Ht){return Gt=Ht},function(){})])];case 8:if(vn.sent(),_r)throw _r;return[3,10];case 9:return Tn=vn.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:ae.status,data:Gt,error:String(Tn)},meta:k}];case 10:return[2,F(ae,Te)?{data:Te,meta:k}:{error:{status:ae.status,data:Te},meta:k}]}})})};function v(g,y){return e1(this,null,function(){var S;return Yv(this,function(w){switch(w.label){case 0:return typeof y=="function"?[2,y(g)]:(y==="content-type"&&(y=c(g.headers)?"json":"text"),y!=="json"?[3,2]:[4,g.text()]);case 1:return S=w.sent(),[2,S.length?JSON.parse(S):null];case 2:return[2,g.text()]}})})}}var tP=function(){function e(t,n){n===void 0&&(n=void 0),this.value=t,this.meta=n}return e}(),RE=Me("__rtkq/focused"),UL=Me("__rtkq/unfocused"),OE=Me("__rtkq/online"),jL=Me("__rtkq/offline"),ma;(function(e){e.query="query",e.mutation="mutation"})(ma||(ma={}));function VL(e){return e.type===ma.query}function rue(e){return e.type===ma.mutation}function GL(e,t,n,r,i,o){return iue(e)?e(t,n,r,i).map(EC).map(o):Array.isArray(e)?e.map(EC).map(o):[]}function iue(e){return typeof e=="function"}function EC(e){return typeof e=="string"?{type:e}:e}function J2(e){return e!=null}var Ag=Symbol("forceQueryFn"),TC=function(e){return typeof e[Ag]=="function"};function oue(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:v,buildInitiateMutation:g,getRunningQueryThunk:p,getRunningMutationThunk:m,getRunningQueriesThunk:b,getRunningMutationsThunk:_,getRunningOperationPromises:h,removalWarning:f};function f(){throw new Error(`This method had to be removed due to a conceptual bug in RTK. - Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details. - See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.`)}function h(){typeof process<"u";var y=function(S){return Array.from(S.values()).flatMap(function(w){return w?Object.values(w):[]})};return Zv(Zv([],y(s)),y(a)).filter(J2)}function p(y,S){return function(w){var x,E=o.endpointDefinitions[y],A=t({queryArgs:S,endpointDefinition:E,endpointName:y});return(x=s.get(w))==null?void 0:x[A]}}function m(y,S){return function(w){var x;return(x=a.get(w))==null?void 0:x[S]}}function b(){return function(y){return Object.values(s.get(y)||{}).filter(J2)}}function _(){return function(y){return Object.values(a.get(y)||{}).filter(J2)}}function v(y,S){var w=function(x,E){var A=E===void 0?{}:E,T=A.subscribe,k=T===void 0?!0:T,L=A.forceRefetch,N=A.subscriptionOptions,C=Ag,P=A[C];return function(D,B){var R,O,I=t({queryArgs:x,endpointDefinition:S,endpointName:y}),F=n((R={type:"query",subscribe:k,forceRefetch:L,subscriptionOptions:N,endpointName:y,originalArgs:x,queryCacheKey:I},R[Ag]=P,R)),U=i.endpoints[y].select(x),V=D(F),H=U(B()),Y=V.requestId,Q=V.abort,j=H.requestId!==Y,K=(O=s.get(D))==null?void 0:O[I],ee=function(){return U(B())},ie=Object.assign(P?V.then(ee):j&&!K?Promise.resolve(H):Promise.all([K,V]).then(ee),{arg:x,requestId:Y,subscriptionOptions:N,queryCacheKey:I,abort:Q,unwrap:function(){return e1(this,null,function(){var ae;return Yv(this,function(dt){switch(dt.label){case 0:return[4,ie];case 1:if(ae=dt.sent(),ae.isError)throw ae.error;return[2,ae.data]}})})},refetch:function(){return D(w(x,{subscribe:!1,forceRefetch:!0}))},unsubscribe:function(){k&&D(u({queryCacheKey:I,requestId:Y}))},updateSubscriptionOptions:function(ae){ie.subscriptionOptions=ae,D(d({endpointName:y,requestId:Y,queryCacheKey:I,options:ae}))}});if(!K&&!j&&!P){var ge=s.get(D)||{};ge[I]=ie,s.set(D,ge),ie.then(function(){delete ge[I],Object.keys(ge).length||s.delete(D)})}return ie}};return w}function g(y){return function(S,w){var x=w===void 0?{}:w,E=x.track,A=E===void 0?!0:E,T=x.fixedCacheKey;return function(k,L){var N=r({type:"mutation",endpointName:y,originalArgs:S,track:A,fixedCacheKey:T}),C=k(N),P=C.requestId,D=C.abort,B=C.unwrap,R=C.unwrap().then(function(U){return{data:U}}).catch(function(U){return{error:U}}),O=function(){k(c({requestId:P,fixedCacheKey:T}))},I=Object.assign(R,{arg:C.arg,requestId:P,abort:D,unwrap:B,unsubscribe:O,reset:O}),F=a.get(k)||{};return a.set(k,F),F[P]=I,I.then(function(){delete F[P],Object.keys(F).length||a.delete(k)}),T&&(F[T]=I,I.then(function(){F[T]===I&&(delete F[T],Object.keys(F).length||a.delete(k))})),I}}}}function nP(e){return e}function sue(e){var t=this,n=e.reducerPath,r=e.baseQuery,i=e.context.endpointDefinitions,o=e.serializeQueryArgs,s=e.api,a=function(g,y,S){return function(w){var x=i[g];w(s.internalActions.queryResultPatched({queryCacheKey:o({queryArgs:y,endpointDefinition:x,endpointName:g}),patches:S}))}},l=function(g,y,S){return function(w,x){var E,A,T=s.endpoints[g].select(y)(x()),k={patches:[],inversePatches:[],undo:function(){return w(s.util.patchQueryData(g,y,k.inversePatches))}};if(T.status===Hn.uninitialized)return k;if("data"in T)if(po(T.data)){var L=W5(T.data,S),N=L[1],C=L[2];(E=k.patches).push.apply(E,N),(A=k.inversePatches).push.apply(A,C)}else{var P=S(T.data);k.patches.push({op:"replace",path:[],value:P}),k.inversePatches.push({op:"replace",path:[],value:T.data})}return w(s.util.patchQueryData(g,y,k.patches)),k}},u=function(g,y,S){return function(w){var x;return w(s.endpoints[g].initiate(y,(x={subscribe:!1,forceRefetch:!0},x[Ag]=function(){return{data:S}},x)))}},c=function(g,y){return e1(t,[g,y],function(S,w){var x,E,A,T,k,L,N,C,P,D,B,R,O,I,F,U,V,H,Y=w.signal,Q=w.abort,j=w.rejectWithValue,K=w.fulfillWithValue,ee=w.dispatch,ie=w.getState,ge=w.extra;return Yv(this,function(ae){switch(ae.label){case 0:x=i[S.endpointName],ae.label=1;case 1:return ae.trys.push([1,8,,13]),E=nP,A=void 0,T={signal:Y,abort:Q,dispatch:ee,getState:ie,extra:ge,endpoint:S.endpointName,type:S.type,forced:S.type==="query"?d(S,ie()):void 0},k=S.type==="query"?S[Ag]:void 0,k?(A=k(),[3,6]):[3,2];case 2:return x.query?[4,r(x.query(S.originalArgs),T,x.extraOptions)]:[3,4];case 3:return A=ae.sent(),x.transformResponse&&(E=x.transformResponse),[3,6];case 4:return[4,x.queryFn(S.originalArgs,T,x.extraOptions,function(dt){return r(dt,T,x.extraOptions)})];case 5:A=ae.sent(),ae.label=6;case 6:if(typeof process<"u",A.error)throw new tP(A.error,A.meta);return B=K,[4,E(A.data,A.meta,S.originalArgs)];case 7:return[2,B.apply(void 0,[ae.sent(),(V={fulfilledTimeStamp:Date.now(),baseQueryMeta:A.meta},V[tc]=!0,V)])];case 8:if(R=ae.sent(),O=R,!(O instanceof tP))return[3,12];I=nP,x.query&&x.transformErrorResponse&&(I=x.transformErrorResponse),ae.label=9;case 9:return ae.trys.push([9,11,,12]),F=j,[4,I(O.value,O.meta,S.originalArgs)];case 10:return[2,F.apply(void 0,[ae.sent(),(H={baseQueryMeta:O.meta},H[tc]=!0,H)])];case 11:return U=ae.sent(),O=U,[3,12];case 12:throw typeof process<"u",console.error(O),O;case 13:return[2]}})})};function d(g,y){var S,w,x,E,A=(w=(S=y[n])==null?void 0:S.queries)==null?void 0:w[g.queryCacheKey],T=(x=y[n])==null?void 0:x.config.refetchOnMountOrArgChange,k=A==null?void 0:A.fulfilledTimeStamp,L=(E=g.forceRefetch)!=null?E:g.subscribe&&T;return L?L===!0||(Number(new Date)-Number(k))/1e3>=L:!1}var f=cu(n+"/executeQuery",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[tc]=!0,g},condition:function(g,y){var S=y.getState,w,x,E,A=S(),T=(x=(w=A[n])==null?void 0:w.queries)==null?void 0:x[g.queryCacheKey],k=T==null?void 0:T.fulfilledTimeStamp,L=g.originalArgs,N=T==null?void 0:T.originalArgs,C=i[g.endpointName];return TC(g)?!0:(T==null?void 0:T.status)==="pending"?!1:d(g,A)||VL(C)&&((E=C==null?void 0:C.forceRefetch)!=null&&E.call(C,{currentArg:L,previousArg:N,endpointState:T,state:A}))?!0:!k},dispatchConditionRejection:!0}),h=cu(n+"/executeMutation",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[tc]=!0,g}}),p=function(g){return"force"in g},m=function(g){return"ifOlderThan"in g},b=function(g,y,S){return function(w,x){var E=p(S)&&S.force,A=m(S)&&S.ifOlderThan,T=function(C){return C===void 0&&(C=!0),s.endpoints[g].initiate(y,{forceRefetch:C})},k=s.endpoints[g].select(y)(x());if(E)w(T());else if(A){var L=k==null?void 0:k.fulfilledTimeStamp;if(!L){w(T());return}var N=(Number(new Date)-Number(new Date(L)))/1e3>=A;N&&w(T())}else w(T(!1))}};function _(g){return function(y){var S,w;return((w=(S=y==null?void 0:y.meta)==null?void 0:S.arg)==null?void 0:w.endpointName)===g}}function v(g,y){return{matchPending:ef(y_(g),_(y)),matchFulfilled:ef(Tu(g),_(y)),matchRejected:ef(Tf(g),_(y))}}return{queryThunk:f,mutationThunk:h,prefetch:b,updateQueryData:l,upsertQueryData:u,patchQueryData:a,buildMatchThunkActions:v}}function HL(e,t,n,r){return GL(n[e.meta.arg.endpointName][t],Tu(e)?e.payload:void 0,fm(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function Ry(e,t,n){var r=e[t];r&&n(r)}function kg(e){var t;return(t="arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)!=null?t:e.requestId}function rP(e,t,n){var r=e[kg(t)];r&&n(r)}var Oh={};function aue(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=er({name:t+"/queries",initialState:Oh,reducers:{removeQueryResult:{reducer:function(S,w){var x=w.payload.queryCacheKey;delete S[x]},prepare:T0()},queryResultPatched:function(S,w){var x=w.payload,E=x.queryCacheKey,A=x.patches;Ry(S,E,function(T){T.data=Wx(T.data,A.concat())})}},extraReducers:function(S){S.addCase(n.pending,function(w,x){var E=x.meta,A=x.meta.arg,T,k,L=TC(A);(A.subscribe||L)&&((k=w[T=A.queryCacheKey])!=null||(w[T]={status:Hn.uninitialized,endpointName:A.endpointName})),Ry(w,A.queryCacheKey,function(N){N.status=Hn.pending,N.requestId=L&&N.requestId?N.requestId:E.requestId,A.originalArgs!==void 0&&(N.originalArgs=A.originalArgs),N.startedTimeStamp=E.startedTimeStamp})}).addCase(n.fulfilled,function(w,x){var E=x.meta,A=x.payload;Ry(w,E.arg.queryCacheKey,function(T){var k;if(!(T.requestId!==E.requestId&&!TC(E.arg))){var L=o[E.arg.endpointName].merge;if(T.status=Hn.fulfilled,L)if(T.data!==void 0){var N=E.fulfilledTimeStamp,C=E.arg,P=E.baseQueryMeta,D=E.requestId,B=Cu(T.data,function(R){return L(R,A,{arg:C.originalArgs,baseQueryMeta:P,fulfilledTimeStamp:N,requestId:D})});T.data=B}else T.data=A;else T.data=(k=o[E.arg.endpointName].structuralSharing)==null||k?zL(Wi(T.data)?z5(T.data):T.data,A):A;delete T.error,T.fulfilledTimeStamp=E.fulfilledTimeStamp}})}).addCase(n.rejected,function(w,x){var E=x.meta,A=E.condition,T=E.arg,k=E.requestId,L=x.error,N=x.payload;Ry(w,T.queryCacheKey,function(C){if(!A){if(C.requestId!==k)return;C.status=Hn.rejected,C.error=N??L}})}).addMatcher(l,function(w,x){for(var E=a(x).queries,A=0,T=Object.entries(E);A"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Rue:Pue;KL.useSyncExternalStore=$f.useSyncExternalStore!==void 0?$f.useSyncExternalStore:Oue;WL.exports=KL;var Iue=WL.exports,XL={exports:{}},QL={};/** - * @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 nb=M,Mue=Iue;function Nue(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Due=typeof Object.is=="function"?Object.is:Nue,Lue=Mue.useSyncExternalStore,$ue=nb.useRef,Fue=nb.useEffect,Bue=nb.useMemo,zue=nb.useDebugValue;QL.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=$ue(null);if(o.current===null){var s={hasValue:!1,value:null};o.current=s}else s=o.current;o=Bue(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,Due(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=Lue(e,o[0],o[1]);return Fue(function(){s.hasValue=!0,s.value=a},[a]),zue(a),a};XL.exports=QL;var YL=XL.exports;const Uue=Dc(YL);function jue(e){e()}let ZL=jue;const Vue=e=>ZL=e,Gue=()=>ZL,cP=Symbol.for("react-redux-context"),dP=typeof globalThis<"u"?globalThis:{};function Hue(){var e;if(!M.createContext)return{};const t=(e=dP[cP])!=null?e:dP[cP]=new Map;let n=t.get(M.createContext);return n||(n=M.createContext(null),t.set(M.createContext,n)),n}const pu=Hue();function IE(e=pu){return function(){return M.useContext(e)}}const JL=IE(),que=()=>{throw new Error("uSES not initialized!")};let e$=que;const Wue=e=>{e$=e},Kue=(e,t)=>e===t;function Xue(e=pu){const t=e===pu?JL:IE(e);return function(r,i={}){const{equalityFn:o=Kue,stabilityCheck:s=void 0,noopCheck:a=void 0}=typeof i=="function"?{equalityFn:i}:i,{store:l,subscription:u,getServerState:c,stabilityCheck:d,noopCheck:f}=t();M.useRef(!0);const h=M.useCallback({[r.name](m){return r(m)}}[r.name],[r,d,s]),p=e$(u.addNestedSub,l.getState,c||l.getState,h,o);return M.useDebugValue(p),p}}const t$=Xue();function t1(){return t1=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 fP={notify(){},get:()=>[]};function ace(e,t){let n,r=fP;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=sce())}function u(){n&&(n(),n=void 0,r.clear(),r=fP)}const c={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:s,isSubscribed:a,trySubscribe:l,tryUnsubscribe:u,getListeners:()=>r};return c}const lce=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",uce=lce?M.useLayoutEffect:M.useEffect;function hP(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function n1(e,t){if(hP(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=ace(e);return{store:e,subscription:u,getServerState:r?()=>r:void 0,stabilityCheck:i,noopCheck:o}},[e,r,i,o]),a=M.useMemo(()=>e.getState(),[e]);uce(()=>{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||pu;return M.createElement(l.Provider,{value:s},n)}function a$(e=pu){const t=e===pu?JL:IE(e);return function(){const{store:r}=t();return r}}const l$=a$();function dce(e=pu){const t=e===pu?l$:a$(e);return function(){return t().dispatch}}const u$=dce();Wue(YL.useSyncExternalStoreWithSelector);Vue(ws.unstable_batchedUpdates);var fce=globalThis&&globalThis.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n{const r=gg.get(),i=Of.get(),o=mg.get();return nue({baseUrl:`${r??""}/api/v1`,prepareHeaders:a=>(i&&a.set("Authorization",`Bearer ${i}`),o&&a.set("project-id",o),a)})(e,t,n)},gu=Ace({baseQuery:Pce,reducerPath:"api",tagTypes:kce,endpoints:()=>({})}),Rce=(e,t)=>{const n=new Date(e),r=new Date(t);return n>r?1:ne==null,Lce=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),kC=Symbol("encodeFragmentIdentifier");function $ce(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,[Cr(t,e),"[",i,"]"].join("")]:[...n,[Cr(t,e),"[",Cr(i,e),"]=",Cr(r,e)].join("")]};case"bracket":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Cr(t,e),"[]"].join("")]:[...n,[Cr(t,e),"[]=",Cr(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,[Cr(t,e),":list="].join("")]:[...n,[Cr(t,e),":list=",Cr(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?[[Cr(n,e),t,Cr(i,e)].join("")]:[[r,Cr(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,Cr(t,e)]:[...n,[Cr(t,e),"=",Cr(r,e)].join("")]}}function Fce(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&&Ua(r,e).includes(e.arrayFormatSeparator);r=s?Ua(r,e):r;const a=o||s?r.split(e.arrayFormatSeparator).map(l=>Ua(l,e)):r===null?r:Ua(r,e);i[n]=a};case"bracket-separator":return(n,r,i)=>{const o=/(\[])$/.test(n);if(n=n.replace(/\[]$/,""),!o){i[n]=r&&Ua(r,e);return}const s=r===null?[]:r.split(e.arrayFormatSeparator).map(a=>Ua(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 f$(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Cr(e,t){return t.encode?t.strict?Lce(e):encodeURIComponent(e):e}function Ua(e,t){return t.decode?Mce(e):e}function h$(e){return Array.isArray(e)?e.sort():typeof e=="object"?h$(Object.keys(e)).sort((t,n)=>Number(t)-Number(n)).map(t=>e[t]):e}function p$(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function Bce(e){let t="";const n=e.indexOf("#");return n!==-1&&(t=e.slice(n)),t}function _P(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 FE(e){e=p$(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function BE(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t},f$(t.arrayFormatSeparator);const n=Fce(t),r=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return r;for(const i of e.split("&")){if(i==="")continue;const o=t.decode?i.replace(/\+/g," "):i;let[s,a]=d$(o,"=");s===void 0&&(s=o),a=a===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:Ua(a,t),n(Ua(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]=_P(a,t);else r[i]=_P(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]=h$(s):i[o]=s,i},Object.create(null))}function g$(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},f$(t.arrayFormatSeparator);const n=s=>t.skipNull&&Dce(e[s])||t.skipEmptyString&&e[s]==="",r=$ce(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?Cr(s,t):Array.isArray(a)?a.length===0&&t.arrayFormat==="bracket-separator"?Cr(s,t)+"[]":a.reduce(r(s),[]).join("&"):Cr(s,t)+"="+Cr(a,t)}).filter(s=>s.length>0).join("&")}function m$(e,t){var i;t={decode:!0,...t};let[n,r]=d$(e,"#");return n===void 0&&(n=e),{url:((i=n==null?void 0:n.split("?"))==null?void 0:i[0])??"",query:BE(FE(e),t),...t&&t.parseFragmentIdentifier&&r?{fragmentIdentifier:Ua(r,t)}:{}}}function y$(e,t){t={encode:!0,strict:!0,[kC]:!0,...t};const n=p$(e.url).split("?")[0]||"",r=FE(e.url),i={...BE(r,{sort:!1}),...e.query};let o=g$(i,t);o&&(o=`?${o}`);let s=Bce(e.url);if(e.fragmentIdentifier){const a=new URL(n);a.hash=e.fragmentIdentifier,s=t[kC]?a.hash:`#${e.fragmentIdentifier}`}return`${n}${o}${s}`}function v$(e,t,n){n={parseFragmentIdentifier:!0,[kC]:!1,...n};const{url:r,query:i,fragmentIdentifier:o}=m$(e,n);return y$({url:r,query:Nce(i,t),fragmentIdentifier:o},n)}function zce(e,t,n){const r=Array.isArray(t)?i=>!t.includes(i):(i,o)=>!t(i,o);return v$(e,r,n)}const M0=Object.freeze(Object.defineProperty({__proto__:null,exclude:zce,extract:FE,parse:BE,parseUrl:m$,pick:v$,stringify:g$,stringifyUrl:y$},Symbol.toStringTag,{value:"Module"})),Fu=(e,t)=>{if(!e)return!1;const n=i1.selectAll(e);if(n.length<=1)return!0;const r=[],i=[];for(let o=0;o=a}else{const o=i[i.length-1];if(!o)return!1;const s=new Date(t.created_at),a=new Date(o.created_at);return s>=a}},Bo=e=>Kr.includes(e.image_category)?Kr:Ul,Mn=Eu({selectId:e=>e.image_name,sortComparer:(e,t)=>e.starred&&!t.starred?-1:!e.starred&&t.starred?1:Rce(t.created_at,e.created_at)}),i1=Mn.getSelectors(),wo=e=>`images/?${M0.stringify(e,{arrayFormat:"none"})}`,fi=gu.injectEndpoints({endpoints:e=>({listBoards:e.query({query:t=>({url:"boards/",params:t}),providesTags:t=>{const n=[{type:"Board",id:ht}];return t&&n.push(...t.items.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllBoards:e.query({query:()=>({url:"boards/",params:{all:!0}}),providesTags:t=>{const n=[{type:"Board",id:ht}];return t&&n.push(...t.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllImageNamesForBoard:e.query({query:t=>({url:`boards/${t}/image_names`}),providesTags:(t,n,r)=>[{type:"ImageNameList",id:r}],keepUnusedDataFor:0}),getBoardImagesTotal:e.query({query:t=>({url:wo({board_id:t??"none",categories:Kr,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:wo({board_id:t??"none",categories:Ul,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardAssetsTotal",id:r??"none"}],transformResponse:t=>t.total}),createBoard:e.mutation({query:t=>({url:"boards/",method:"POST",params:{board_name:t}}),invalidatesTags:[{type:"Board",id:ht}]}),updateBoard:e.mutation({query:({board_id:t,changes:n})=>({url:`boards/${t}`,method:"PATCH",body:n}),invalidatesTags:(t,n,r)=>[{type:"Board",id:r.board_id}]})})}),{useListBoardsQuery:wRe,useListAllBoardsQuery:xRe,useGetBoardImagesTotalQuery:CRe,useGetBoardAssetsTotalQuery:ERe,useCreateBoardMutation:TRe,useUpdateBoardMutation:ARe,useListAllImageNamesForBoardQuery:kRe}=fi,he=gu.injectEndpoints({endpoints:e=>({listImages:e.query({query:t=>({url:wo(t),method:"GET"}),providesTags:(t,n,{board_id:r,categories:i})=>[{type:"ImageList",id:wo({board_id:r,categories:i})}],serializeQueryArgs:({queryArgs:t})=>{const{board_id:n,categories:r}=t;return wo({board_id:n,categories:r})},transformResponse(t){const{items:n}=t;return Mn.addMany(Mn.getInitialState(),n)},merge:(t,n)=>{Mn.addMany(t,i1.selectAll(n))},forceRefetch({currentArg:t,previousArg:n}){return(t==null?void 0:t.offset)!==(n==null?void 0:n.offset)},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;i1.selectAll(i).forEach(o=>{n(he.util.upsertQueryData("getImageDTO",o.image_name,o))})}catch{}},keepUnusedDataFor:86400}),getIntermediatesCount:e.query({query:()=>({url:wo({is_intermediate:!0})}),providesTags:["IntermediatesCount"],transformResponse:t=>t.total}),getImageDTO:e.query({query:t=>({url:`images/i/${t}`}),providesTags:(t,n,r)=>[{type:"Image",id:r}],keepUnusedDataFor:86400}),getImageMetadata:e.query({query:t=>({url:`images/i/${t}/metadata`}),providesTags:(t,n,r)=>[{type:"ImageMetadata",id:r}],keepUnusedDataFor:86400}),getImageMetadataFromFile:e.query({queryFn:async(t,n,r,i)=>{var d;const o=Of.get(),s=mg.get(),l=await Vne.fetchBaseQuery({baseUrl:"",prepareHeaders:f=>(o&&f.set("Authorization",`Bearer ${o}`),s&&f.set("project-id",s),f),responseHandler:async f=>await f.blob()})(t.image.image_url,n,r),u=await Vle(l.data);let c=u.metadata;if(t.shouldFetchMetadataFromApi){const f=await i(`images/i/${t.image.image_name}/metadata`);if(f.data){const h=bD.safeParse((d=f.data)==null?void 0:d.metadata);h.success&&(c=h.data)}}return{data:{...u,metadata:c}}},providesTags:(t,n,{image:r})=>[{type:"ImageMetadataFromFile",id:r.image_name}],keepUnusedDataFor:86400}),clearIntermediates:e.mutation({query:()=>({url:"images/clear-intermediates",method:"POST"}),invalidatesTags:["IntermediatesCount"]}),deleteImage:e.mutation({query:({image_name:t})=>({url:`images/i/${t}`,method:"DELETE"}),invalidatesTags:(t,n,{board_id:r})=>[{type:"BoardImagesTotal",id:r??"none"},{type:"BoardAssetsTotal",id:r??"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){const{image_name:i,board_id:o}=t,s={board_id:o??"none",categories:Bo(t)},a=n(he.util.updateQueryData("listImages",s,l=>{Mn.removeOne(l,i)}));try{await r}catch{a.undo()}}}),deleteImages:e.mutation({query:({imageDTOs:t})=>({url:"images/delete",method:"POST",body:{image_names:t.map(r=>r.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{var o;const i=(o=r[0])==null?void 0:o.board_id;return[{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"}]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,o=pE(t,"image_name");i.deleted_images.forEach(s=>{const a=o[s];if(a){const l={board_id:a.board_id??"none",categories:Bo(a)};n(he.util.updateQueryData("listImages",l,u=>{Mn.removeOne(u,s)}))}})}catch{}}}),changeImageIsIntermediate:e.mutation({query:({imageDTO:t,is_intermediate:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{is_intermediate:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,is_intermediate:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[];s.push(r(he.util.updateQueryData("getImageDTO",t.image_name,l=>{Object.assign(l,{is_intermediate:n})})));const a=Bo(t);if(n)s.push(r(he.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:a},l=>{Mn.removeOne(l,t.image_name)})));else{const l={board_id:t.board_id??"none",categories:a},u=he.endpoints.listImages.select(l)(o()),{data:c}=Kr.includes(t.image_category)?fi.endpoints.getBoardImagesTotal.select(t.board_id??"none")(o()):fi.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=Fu(u.data,t);(d||f)&&s.push(r(he.util.updateQueryData("listImages",l,h=>{Mn.upsertOne(h,t)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),changeImageSessionId:e.mutation({query:({imageDTO:t,session_id:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{session_id:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,session_id:n},{dispatch:r,queryFulfilled:i}){const o=[];o.push(r(he.util.updateQueryData("getImageDTO",t.image_name,s=>{Object.assign(s,{session_id:n})})));try{await i}catch{o.forEach(s=>s.undo())}}}),starImages:e.mutation({query:({imageDTOs:t})=>({url:"images/star",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=Bo(r[0]),o=r[0].board_id;return[{type:"ImageList",id:wo({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=Bo(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(he.util.updateQueryData("getImageDTO",c,b=>{b.starred=!0}));const d={board_id:l??"none",categories:a},f=he.endpoints.listImages.select(d)(i()),{data:h}=Kr.includes(u.image_category)?fi.endpoints.getBoardImagesTotal.select(l??"none")(i()):fi.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=xy?Fu(f.data,u):!0;(p||m)&&n(he.util.updateQueryData("listImages",d,b=>{Mn.upsertOne(b,{...u,starred:!0})}))})}catch{}}}),unstarImages:e.mutation({query:({imageDTOs:t})=>({url:"images/unstar",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=Bo(r[0]),o=r[0].board_id;return[{type:"ImageList",id:wo({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=Bo(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(he.util.updateQueryData("getImageDTO",c,b=>{b.starred=!1}));const d={board_id:l??"none",categories:a},f=he.endpoints.listImages.select(d)(i()),{data:h}=Kr.includes(u.image_category)?fi.endpoints.getBoardImagesTotal.select(l??"none")(i()):fi.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=xy?Fu(f.data,u):!0;(p||m)&&n(he.util.updateQueryData("listImages",d,b=>{Mn.upsertOne(b,{...u,starred:!1})}))})}catch{}}}),uploadImage:e.mutation({query:({file:t,image_category:n,is_intermediate:r,session_id:i,board_id:o,crop_visible:s})=>{const a=new FormData;return a.append("file",t),{url:"images/upload",method:"POST",body:a,params:{image_category:n,is_intermediate:r,session_id:i,board_id:o==="none"?void 0:o,crop_visible:s}}},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;if(i.is_intermediate)return;n(he.util.upsertQueryData("getImageDTO",i.image_name,i));const o=Bo(i);n(he.util.updateQueryData("listImages",{board_id:i.board_id??"none",categories:o},s=>{Mn.addOne(s,i)})),n(he.util.invalidateTags([{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}]))}catch{}}}),deleteBoard:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE"}),invalidatesTags:()=>[{type:"Board",id:ht},{type:"ImageList",id:wo({board_id:"none",categories:Kr})},{type:"ImageList",id:wo({board_id:"none",categories:Ul})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_board_images:o}=i;o.forEach(l=>{n(he.util.updateQueryData("getImageDTO",l,u=>{u.board_id=void 0}))});const s=[{categories:Kr},{categories:Ul}],a=o.map(l=>({id:l,changes:{board_id:void 0}}));s.forEach(l=>{n(he.util.updateQueryData("listImages",l,u=>{Mn.updateMany(u,a)}))})}catch{}}}),deleteBoardAndImages:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE",params:{include_images:!0}}),invalidatesTags:()=>[{type:"Board",id:ht},{type:"ImageList",id:wo({board_id:"none",categories:Kr})},{type:"ImageList",id:wo({board_id:"none",categories:Ul})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_images:o}=i;[{categories:Kr},{categories:Ul}].forEach(a=>{n(he.util.updateQueryData("listImages",a,l=>{Mn.removeMany(l,o)}))})}catch{}}}),addImageToBoard:e.mutation({query:({board_id:t,imageDTO:n})=>{const{image_name:r}=n;return{url:"board_images/",method:"POST",body:{board_id:t,image_name:r}}},invalidatesTags:(t,n,{board_id:r,imageDTO:i})=>[{type:"Board",id:r},{type:"BoardImagesTotal",id:r},{type:"BoardAssetsTotal",id:r},{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}],async onQueryStarted({board_id:t,imageDTO:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[],a=Bo(n);if(s.push(r(he.util.updateQueryData("getImageDTO",n.image_name,l=>{l.board_id=t}))),!n.is_intermediate){s.push(r(he.util.updateQueryData("listImages",{board_id:n.board_id??"none",categories:a},h=>{Mn.removeOne(h,n.image_name)})));const l={board_id:t??"none",categories:a},u=he.endpoints.listImages.select(l)(o()),{data:c}=Kr.includes(n.image_category)?fi.endpoints.getBoardImagesTotal.select(n.board_id??"none")(o()):fi.endpoints.getBoardAssetsTotal.select(n.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=Fu(u.data,n);(d||f)&&s.push(r(he.util.updateQueryData("listImages",l,h=>{Mn.addOne(h,n)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),removeImageFromBoard:e.mutation({query:({imageDTO:t})=>{const{image_name:n}=t;return{url:"board_images/",method:"DELETE",body:{image_name:n}}},invalidatesTags:(t,n,{imageDTO:r})=>{const{board_id:i}=r;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({imageDTO:t},{dispatch:n,queryFulfilled:r,getState:i}){const o=Bo(t),s=[];s.push(n(he.util.updateQueryData("getImageDTO",t.image_name,f=>{f.board_id=void 0}))),s.push(n(he.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:o},f=>{Mn.removeOne(f,t.image_name)})));const a={board_id:"none",categories:o},l=he.endpoints.listImages.select(a)(i()),{data:u}=Kr.includes(t.image_category)?fi.endpoints.getBoardImagesTotal.select(t.board_id??"none")(i()):fi.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(i()),c=l.data&&l.data.ids.length>=(u??0),d=Fu(l.data,t);(c||d)&&s.push(n(he.util.updateQueryData("listImages",a,f=>{Mn.upsertOne(f,t)})));try{await r}catch{s.forEach(f=>f.undo())}}}),addImagesToBoard:e.mutation({query:({board_id:t,imageDTOs:n})=>({url:"board_images/batch",method:"POST",body:{image_names:n.map(r=>r.image_name),board_id:t}}),invalidatesTags:(t,n,{imageDTOs:r,board_id:i})=>{var s;const o=(s=r[0])==null?void 0:s.board_id;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:o??"none"},{type:"BoardAssetsTotal",id:o??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({board_id:t,imageDTOs:n},{dispatch:r,queryFulfilled:i,getState:o}){try{const{data:s}=await i,{added_image_names:a}=s;a.forEach(l=>{r(he.util.updateQueryData("getImageDTO",l,_=>{_.board_id=t}));const u=n.find(_=>_.image_name===l);if(!u)return;const c=Bo(u),d=u.board_id;r(he.util.updateQueryData("listImages",{board_id:d??"none",categories:c},_=>{Mn.removeOne(_,u.image_name)}));const f={board_id:t,categories:c},h=he.endpoints.listImages.select(f)(o()),{data:p}=Kr.includes(u.image_category)?fi.endpoints.getBoardImagesTotal.select(t??"none")(o()):fi.endpoints.getBoardAssetsTotal.select(t??"none")(o()),m=h.data&&h.data.ids.length>=(p??0),b=(p||0)>=xy?Fu(h.data,u):!0;(m||b)&&r(he.util.updateQueryData("listImages",f,_=>{Mn.upsertOne(_,{...u,board_id:t})}))})}catch{}}}),removeImagesFromBoard:e.mutation({query:({imageDTOs:t})=>({url:"board_images/batch/delete",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{const i=[],o=[{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}];return t==null||t.removed_image_names.forEach(s=>{var l;const a=(l=r.find(u=>u.image_name===s))==null?void 0:l.board_id;!a||i.includes(a)||(o.push({type:"Board",id:a}),o.push({type:"BoardImagesTotal",id:a}),o.push({type:"BoardAssetsTotal",id:a}))}),o},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{removed_image_names:s}=o;s.forEach(a=>{n(he.util.updateQueryData("getImageDTO",a,m=>{m.board_id=void 0}));const l=t.find(m=>m.image_name===a);if(!l)return;const u=Bo(l);n(he.util.updateQueryData("listImages",{board_id:l.board_id??"none",categories:u},m=>{Mn.removeOne(m,l.image_name)}));const c={board_id:"none",categories:u},d=he.endpoints.listImages.select(c)(i()),{data:f}=Kr.includes(l.image_category)?fi.endpoints.getBoardImagesTotal.select(l.board_id??"none")(i()):fi.endpoints.getBoardAssetsTotal.select(l.board_id??"none")(i()),h=d.data&&d.data.ids.length>=(f??0),p=(f||0)>=xy?Fu(d.data,l):!0;(h||p)&&n(he.util.updateQueryData("listImages",c,m=>{Mn.upsertOne(m,{...l,board_id:"none"})}))})}catch{}}})})}),{useGetIntermediatesCountQuery:PRe,useListImagesQuery:RRe,useLazyListImagesQuery:ORe,useGetImageDTOQuery:IRe,useGetImageMetadataQuery:MRe,useDeleteImageMutation:NRe,useDeleteImagesMutation:DRe,useUploadImageMutation:LRe,useClearIntermediatesMutation:$Re,useAddImagesToBoardMutation:FRe,useRemoveImagesFromBoardMutation:BRe,useAddImageToBoardMutation:zRe,useRemoveImageFromBoardMutation:URe,useChangeImageIsIntermediateMutation:jRe,useChangeImageSessionIdMutation:VRe,useDeleteBoardAndImagesMutation:GRe,useDeleteBoardMutation:HRe,useStarImagesMutation:qRe,useUnstarImagesMutation:WRe,useGetImageMetadataFromFileQuery:KRe}=he,_$=Me("socket/socketConnected"),b$=Me("socket/appSocketConnected"),S$=Me("socket/socketDisconnected"),w$=Me("socket/appSocketDisconnected"),zE=Me("socket/socketSubscribed"),x$=Me("socket/appSocketSubscribed"),C$=Me("socket/socketUnsubscribed"),E$=Me("socket/appSocketUnsubscribed"),T$=Me("socket/socketInvocationStarted"),UE=Me("socket/appSocketInvocationStarted"),jE=Me("socket/socketInvocationComplete"),VE=Me("socket/appSocketInvocationComplete"),A$=Me("socket/socketInvocationError"),xb=Me("socket/appSocketInvocationError"),k$=Me("socket/socketGraphExecutionStateComplete"),P$=Me("socket/appSocketGraphExecutionStateComplete"),R$=Me("socket/socketGeneratorProgress"),GE=Me("socket/appSocketGeneratorProgress"),O$=Me("socket/socketModelLoadStarted"),Uce=Me("socket/appSocketModelLoadStarted"),I$=Me("socket/socketModelLoadCompleted"),jce=Me("socket/appSocketModelLoadCompleted"),M$=Me("socket/socketSessionRetrievalError"),N$=Me("socket/appSocketSessionRetrievalError"),D$=Me("socket/socketInvocationRetrievalError"),L$=Me("socket/appSocketInvocationRetrievalError"),HE=Me("controlNet/imageProcessed"),Ed={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"}}},Ny={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"},bP={isEnabled:!0,model:null,weight:1,beginStepPct:0,endStepPct:1,controlMode:"balanced",resizeMode:"just_resize",controlImage:null,processedControlImage:null,processorType:"canny_image_processor",processorNode:Ed.canny_image_processor.default,shouldAutoConfig:!0},PC={controlNets:{},isEnabled:!1,pendingControlImages:[]},$$=er({name:"controlNet",initialState:PC,reducers:{isControlNetEnabledToggled:e=>{e.isEnabled=!e.isEnabled},controlNetAdded:(e,t)=>{const{controlNetId:n,controlNet:r}=t.payload;e.controlNets[n]={...r??bP,controlNetId:n}},controlNetDuplicated:(e,t)=>{const{sourceControlNetId:n,newControlNetId:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=Yn(i);o.controlNetId=r,e.controlNets[r]=o},controlNetAddedFromImage:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n]={...bP,controlNetId:n,controlImage:r}},controlNetRemoved:(e,t)=>{const{controlNetId:n}=t.payload;delete e.controlNets[n]},controlNetToggled:(e,t)=>{const{controlNetId:n}=t.payload,r=e.controlNets[n];r&&(r.isEnabled=!r.isEnabled)},controlNetImageChanged:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload,i=e.controlNets[n];i&&(i.controlImage=r,i.processedControlImage=null,r!==null&&i.processorType!=="none"&&e.pendingControlImages.push(n))},controlNetProcessedImageChanged:(e,t)=>{const{controlNetId:n,processedControlImage:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=r,e.pendingControlImages=e.pendingControlImages.filter(o=>o!==n))},controlNetModelChanged:(e,t)=>{const{controlNetId:n,model:r}=t.payload,i=e.controlNets[n];if(i&&(i.model=r,i.processedControlImage=null,i.shouldAutoConfig)){let o;for(const s in Ny)if(r.model_name.includes(s)){o=Ny[s];break}o?(i.processorType=o,i.processorNode=Ed[o].default):(i.processorType="none",i.processorNode=Ed.none.default)}},controlNetWeightChanged:(e,t)=>{const{controlNetId:n,weight:r}=t.payload,i=e.controlNets[n];i&&(i.weight=r)},controlNetBeginStepPctChanged:(e,t)=>{const{controlNetId:n,beginStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.beginStepPct=r)},controlNetEndStepPctChanged:(e,t)=>{const{controlNetId:n,endStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.endStepPct=r)},controlNetControlModeChanged:(e,t)=>{const{controlNetId:n,controlMode:r}=t.payload,i=e.controlNets[n];i&&(i.controlMode=r)},controlNetResizeModeChanged:(e,t)=>{const{controlNetId:n,resizeMode:r}=t.payload,i=e.controlNets[n];i&&(i.resizeMode=r)},controlNetProcessorParamsChanged:(e,t)=>{const{controlNetId:n,changes:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=i.processorNode;i.processorNode={...o,...r},i.shouldAutoConfig=!1},controlNetProcessorTypeChanged:(e,t)=>{const{controlNetId:n,processorType:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=null,i.processorType=r,i.processorNode=Ed[r].default,i.shouldAutoConfig=!1)},controlNetAutoConfigToggled:(e,t)=>{var o;const{controlNetId:n}=t.payload,r=e.controlNets[n];if(!r)return;const i=!r.shouldAutoConfig;if(i){let s;for(const a in Ny)if((o=r.model)!=null&&o.model_name.includes(a)){s=Ny[a];break}s?(r.processorType=s,r.processorNode=Ed[s].default):(r.processorType="none",r.processorNode=Ed.none.default)}r.shouldAutoConfig=i},controlNetReset:()=>({...PC})},extraReducers:e=>{e.addCase(HE,(t,n)=>{const r=t.controlNets[n.payload.controlNetId];r&&r.controlImage!==null&&t.pendingControlImages.push(n.payload.controlNetId)}),e.addCase(xb,t=>{t.pendingControlImages=[]}),e.addMatcher(aD,t=>{t.pendingControlImages=[]}),e.addMatcher(he.endpoints.deleteImage.matchFulfilled,(t,n)=>{const{image_name:r}=n.meta.arg.originalArgs;ns(t.controlNets,i=>{i.controlImage===r&&(i.controlImage=null,i.processedControlImage=null),i.processedControlImage===r&&(i.processedControlImage=null)})})}}),{isControlNetEnabledToggled:XRe,controlNetAdded:QRe,controlNetDuplicated:YRe,controlNetAddedFromImage:ZRe,controlNetRemoved:F$,controlNetImageChanged:jc,controlNetProcessedImageChanged:qE,controlNetToggled:JRe,controlNetModelChanged:SP,controlNetWeightChanged:eOe,controlNetBeginStepPctChanged:tOe,controlNetEndStepPctChanged:nOe,controlNetControlModeChanged:rOe,controlNetResizeModeChanged:iOe,controlNetProcessorParamsChanged:Vce,controlNetProcessorTypeChanged:Gce,controlNetReset:Hce,controlNetAutoConfigToggled:wP}=$$.actions,qce=$$.reducer,Wce={imagesToDelete:[],isModalOpen:!1},B$=er({name:"deleteImageModal",initialState:Wce,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToDeleteSelected:(e,t)=>{e.imagesToDelete=t.payload},imageDeletionCanceled:e=>{e.imagesToDelete=[],e.isModalOpen=!1}}}),{isModalOpenChanged:WE,imagesToDeleteSelected:Kce,imageDeletionCanceled:oOe}=B$.actions,Xce=B$.reducer,z$={isEnabled:!1,maxPrompts:100,combinatorial:!0},Qce=z$,U$=er({name:"dynamicPrompts",initialState:Qce,reducers:{maxPromptsChanged:(e,t)=>{e.maxPrompts=t.payload},maxPromptsReset:e=>{e.maxPrompts=z$.maxPrompts},combinatorialToggled:e=>{e.combinatorial=!e.combinatorial},isEnabledToggled:e=>{e.isEnabled=!e.isEnabled}}}),{isEnabledToggled:sOe,maxPromptsChanged:aOe,maxPromptsReset:lOe,combinatorialToggled:uOe}=U$.actions,Yce=U$.reducer,j$={selection:[],shouldAutoSwitch:!0,autoAssignBoardOnClick:!0,autoAddBoardId:"none",galleryImageMinimumWidth:96,selectedBoardId:"none",galleryView:"images",boardSearchText:""},V$=er({name:"gallery",initialState:j$,reducers:{imageSelected:(e,t)=>{e.selection=t.payload?[t.payload]:[]},selectionChanged:(e,t)=>{e.selection=t.payload},shouldAutoSwitchChanged:(e,t)=>{e.shouldAutoSwitch=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},autoAssignBoardOnClickChanged:(e,t)=>{e.autoAssignBoardOnClick=t.payload},boardIdSelected:(e,t)=>{e.selectedBoardId=t.payload,e.galleryView="images"},autoAddBoardIdChanged:(e,t)=>{if(!t.payload){e.autoAddBoardId="none";return}e.autoAddBoardId=t.payload},galleryViewChanged:(e,t)=>{e.galleryView=t.payload},boardSearchTextChanged:(e,t)=>{e.boardSearchText=t.payload}},extraReducers:e=>{e.addMatcher(Jce,(t,n)=>{const r=n.meta.arg.originalArgs;r===t.selectedBoardId&&(t.selectedBoardId="none",t.galleryView="images"),r===t.autoAddBoardId&&(t.autoAddBoardId="none")}),e.addMatcher(fi.endpoints.listAllBoards.matchFulfilled,(t,n)=>{const r=n.payload;t.autoAddBoardId&&(r.map(i=>i.board_id).includes(t.autoAddBoardId)||(t.autoAddBoardId="none"))})}}),{imageSelected:ca,shouldAutoSwitchChanged:cOe,autoAssignBoardOnClickChanged:dOe,setGalleryImageMinimumWidth:fOe,boardIdSelected:RC,autoAddBoardIdChanged:hOe,galleryViewChanged:o1,selectionChanged:G$,boardSearchTextChanged:pOe}=V$.actions,Zce=V$.reducer,Jce=is(he.endpoints.deleteBoard.matchFulfilled,he.endpoints.deleteBoardAndImages.matchFulfilled),xP={weight:.75},ede={loras:{}},H$=er({name:"lora",initialState:ede,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,...xP}},loraRemoved:(e,t)=>{const n=t.payload;delete e.loras[n]},lorasCleared:e=>{e.loras={}},loraWeightChanged:(e,t)=>{const{id:n,weight:r}=t.payload,i=e.loras[n];i&&(i.weight=r)},loraWeightReset:(e,t)=>{const n=t.payload,r=e.loras[n];r&&(r.weight=xP.weight)}}}),{loraAdded:gOe,loraRemoved:q$,loraWeightChanged:mOe,loraWeightReset:yOe,lorasCleared:vOe}=H$.actions,tde=H$.reducer;function ss(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},nde=e=>e?CP(e):CP,{useSyncExternalStoreWithSelector:rde}=Uue;function W$(e,t=e.getState,n){const r=rde(e.subscribe,e.getState,e.getServerState||e.getState,t,n);return M.useDebugValue(r),r}const EP=(e,t)=>{const n=nde(e),r=(i,o=t)=>W$(n,i,o);return Object.assign(r,n),r},ide=(e,t)=>e?EP(e,t):EP;function go(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 Cb(){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}})}N0.prototype=Cb.prototype={constructor:N0,on:function(e,t){var n=this._,r=sde(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)),AP.hasOwnProperty(t)?{space:AP[t],local:e}:e}function lde(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===OC&&t.documentElement.namespaceURI===OC?t.createElement(e):t.createElementNS(n,e)}}function ude(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function K$(e){var t=Eb(e);return(t.local?ude:lde)(t)}function cde(){}function KE(e){return e==null?cde:function(){return this.querySelector(e)}}function dde(e){typeof e!="function"&&(e=KE(e));for(var t=this._groups,n=t.length,r=new Array(n),i=0;i=g&&(g=v+1);!(S=b[g])&&++g=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Lde(e){e||(e=$de);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 Fde(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Bde(){return Array.from(this)}function zde(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?Yde:typeof t=="function"?Jde:Zde)(e,t,n??"")):Ff(this.node(),e)}function Ff(e,t){return e.style.getPropertyValue(t)||J$(e).getComputedStyle(e,null).getPropertyValue(t)}function tfe(e){return function(){delete this[e]}}function nfe(e,t){return function(){this[e]=t}}function rfe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function ife(e,t){return arguments.length>1?this.each((t==null?tfe:typeof t=="function"?rfe:nfe)(e,t)):this.node()[e]}function eF(e){return e.trim().split(/^|\s+/)}function XE(e){return e.classList||new tF(e)}function tF(e){this._node=e,this._names=eF(e.getAttribute("class")||"")}tF.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 nF(e,t){for(var n=XE(e),r=-1,i=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Ife(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,o;n()=>e;function IC(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}})}IC.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function jfe(e){return!e.ctrlKey&&!e.button}function Vfe(){return this.parentNode}function Gfe(e,t){return t??{x:e.x,y:e.y}}function Hfe(){return navigator.maxTouchPoints||"ontouchstart"in this}function qfe(){var e=jfe,t=Vfe,n=Gfe,r=Hfe,i={},o=Cb("start","drag","end"),s=0,a,l,u,c,d=0;function f(y){y.on("mousedown.drag",h).filter(r).on("touchstart.drag",b).on("touchmove.drag",_,Ufe).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(y,S){if(!(c||!e.call(this,y,S))){var w=g(this,t.call(this,y,S),y,S,"mouse");w&&(xs(y.view).on("mousemove.drag",p,Pg).on("mouseup.drag",m,Pg),sF(y.view),iw(y),u=!1,a=y.clientX,l=y.clientY,w("start",y))}}function p(y){if(lf(y),!u){var S=y.clientX-a,w=y.clientY-l;u=S*S+w*w>d}i.mouse("drag",y)}function m(y){xs(y.view).on("mousemove.drag mouseup.drag",null),aF(y.view,u),lf(y),i.mouse("end",y)}function b(y,S){if(e.call(this,y,S)){var w=y.changedTouches,x=t.call(this,y,S),E=w.length,A,T;for(A=0;A>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Ly(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Ly(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=Kfe.exec(e))?new uo(t[1],t[2],t[3],1):(t=Xfe.exec(e))?new uo(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Qfe.exec(e))?Ly(t[1],t[2],t[3],t[4]):(t=Yfe.exec(e))?Ly(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Zfe.exec(e))?NP(t[1],t[2]/100,t[3]/100,1):(t=Jfe.exec(e))?NP(t[1],t[2]/100,t[3]/100,t[4]):kP.hasOwnProperty(e)?OP(kP[e]):e==="transparent"?new uo(NaN,NaN,NaN,0):null}function OP(e){return new uo(e>>16&255,e>>8&255,e&255,1)}function Ly(e,t,n,r){return r<=0&&(e=t=n=NaN),new uo(e,t,n,r)}function nhe(e){return e instanceof Nm||(e=Ig(e)),e?(e=e.rgb(),new uo(e.r,e.g,e.b,e.opacity)):new uo}function MC(e,t,n,r){return arguments.length===1?nhe(e):new uo(e,t,n,r??1)}function uo(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}QE(uo,MC,lF(Nm,{brighter(e){return e=e==null?a1:Math.pow(a1,e),new uo(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Rg:Math.pow(Rg,e),new uo(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new uo(mc(this.r),mc(this.g),mc(this.b),l1(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:IP,formatHex:IP,formatHex8:rhe,formatRgb:MP,toString:MP}));function IP(){return`#${sc(this.r)}${sc(this.g)}${sc(this.b)}`}function rhe(){return`#${sc(this.r)}${sc(this.g)}${sc(this.b)}${sc((isNaN(this.opacity)?1:this.opacity)*255)}`}function MP(){const e=l1(this.opacity);return`${e===1?"rgb(":"rgba("}${mc(this.r)}, ${mc(this.g)}, ${mc(this.b)}${e===1?")":`, ${e})`}`}function l1(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function mc(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function sc(e){return e=mc(e),(e<16?"0":"")+e.toString(16)}function NP(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Cs(e,t,n,r)}function uF(e){if(e instanceof Cs)return new Cs(e.h,e.s,e.l,e.opacity);if(e instanceof Nm||(e=Ig(e)),!e)return new Cs;if(e instanceof Cs)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 Cs(s,a,l,e.opacity)}function ihe(e,t,n,r){return arguments.length===1?uF(e):new Cs(e,t,n,r??1)}function Cs(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}QE(Cs,ihe,lF(Nm,{brighter(e){return e=e==null?a1:Math.pow(a1,e),new Cs(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Rg:Math.pow(Rg,e),new Cs(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 uo(ow(e>=240?e-240:e+120,i,r),ow(e,i,r),ow(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Cs(DP(this.h),$y(this.s),$y(this.l),l1(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=l1(this.opacity);return`${e===1?"hsl(":"hsla("}${DP(this.h)}, ${$y(this.s)*100}%, ${$y(this.l)*100}%${e===1?")":`, ${e})`}`}}));function DP(e){return e=(e||0)%360,e<0?e+360:e}function $y(e){return Math.max(0,Math.min(1,e||0))}function ow(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 cF=e=>()=>e;function ohe(e,t){return function(n){return e+n*t}}function she(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 ahe(e){return(e=+e)==1?dF:function(t,n){return n-t?she(t,n,e):cF(isNaN(t)?n:t)}}function dF(e,t){var n=t-e;return n?ohe(e,n):cF(isNaN(e)?t:e)}const LP=function e(t){var n=ahe(t);function r(i,o){var s=n((i=MC(i)).r,(o=MC(o)).r),a=n(i.g,o.g),l=n(i.b,o.b),u=dF(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 kl(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var NC=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sw=new RegExp(NC.source,"g");function lhe(e){return function(){return e}}function uhe(e){return function(t){return e(t)+""}}function che(e,t){var n=NC.lastIndex=sw.lastIndex=0,r,i,o,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=NC.exec(e))&&(i=sw.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:kl(r,i)})),n=sw.lastIndex;return n180?c+=360:c-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:kl(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:kl(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:kl(u,d)},{i:m-2,x:kl(c,f)})}else(d!==1||f!==1)&&h.push(i(h)+"scale("+d+","+f+")")}return function(u,c){var d=[],f=[];return u=e(u),c=e(c),o(u.translateX,u.translateY,c.translateX,c.translateY,d,f),s(u.rotate,c.rotate,d,f),a(u.skewX,c.skewX,d,f),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,f),u=c=null,function(h){for(var p=-1,m=f.length,b;++p=0&&e._call.call(void 0,t),e=e._next;--Bf}function BP(){Rc=(c1=Mg.now())+Tb,Bf=ep=0;try{bhe()}finally{Bf=0,whe(),Rc=0}}function She(){var e=Mg.now(),t=e-c1;t>pF&&(Tb-=t,c1=e)}function whe(){for(var e,t=u1,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:u1=n);tp=e,LC(r)}function LC(e){if(!Bf){ep&&(ep=clearTimeout(ep));var t=e-Rc;t>24?(e<1/0&&(ep=setTimeout(BP,e-Mg.now()-Tb)),Ih&&(Ih=clearInterval(Ih))):(Ih||(c1=Mg.now(),Ih=setInterval(She,pF)),Bf=1,gF(BP))}}function zP(e,t,n){var r=new d1;return t=t==null?0:+t,r.restart(i=>{r.stop(),e(i+t)},t,n),r}var xhe=Cb("start","end","cancel","interrupt"),Che=[],yF=0,UP=1,$C=2,D0=3,jP=4,FC=5,L0=6;function Ab(e,t,n,r,i,o){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Ehe(e,n,{name:t,index:r,group:i,on:xhe,tween:Che,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:yF})}function ZE(e,t){var n=Fs(e,t);if(n.state>yF)throw new Error("too late; already scheduled");return n}function Sa(e,t){var n=Fs(e,t);if(n.state>D0)throw new Error("too late; already running");return n}function Fs(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Ehe(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=mF(o,0,n.time);function o(u){n.state=UP,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!==UP)return l();for(c in r)if(h=r[c],h.name===n.name){if(h.state===D0)return zP(s);h.state===jP?(h.state=L0,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[c]):+c$C&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function tpe(e,t,n){var r,i,o=epe(t)?ZE:Sa;return function(){var s=o(this,e),a=s.on;a!==r&&(i=(r=a).copy()).on(t,n),s.on=i}}function npe(e,t){var n=this._id;return arguments.length<2?Fs(this.node(),n).on.on(e):this.each(tpe(n,e,t))}function rpe(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function ipe(){return this.on("end.remove",rpe(this._id))}function ope(e){var t=this._name,n=this._id;typeof e!="function"&&(e=KE(e));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s()=>e;function Rpe(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 Ha(e,t,n){this.k=e,this.x=t,this.y=n}Ha.prototype={constructor:Ha,scale:function(e){return e===1?this:new Ha(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Ha(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 nu=new Ha(1,0,0);Ha.prototype;function aw(e){e.stopImmediatePropagation()}function Mh(e){e.preventDefault(),e.stopImmediatePropagation()}function Ope(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Ipe(){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 VP(){return this.__zoom||nu}function Mpe(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Npe(){return navigator.maxTouchPoints||"ontouchstart"in this}function Dpe(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 Lpe(){var e=Ope,t=Ipe,n=Dpe,r=Mpe,i=Npe,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=vhe,u=Cb("start","zoom","end"),c,d,f,h=500,p=150,m=0,b=10;function _(C){C.property("__zoom",VP).on("wheel.zoom",E,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",T).filter(i).on("touchstart.zoom",k).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",N).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(C,P,D,B){var R=C.selection?C.selection():C;R.property("__zoom",VP),C!==R?S(C,P,D,B):R.interrupt().each(function(){w(this,arguments).event(B).start().zoom(null,typeof P=="function"?P.apply(this,arguments):P).end()})},_.scaleBy=function(C,P,D,B){_.scaleTo(C,function(){var R=this.__zoom.k,O=typeof P=="function"?P.apply(this,arguments):P;return R*O},D,B)},_.scaleTo=function(C,P,D,B){_.transform(C,function(){var R=t.apply(this,arguments),O=this.__zoom,I=D==null?y(R):typeof D=="function"?D.apply(this,arguments):D,F=O.invert(I),U=typeof P=="function"?P.apply(this,arguments):P;return n(g(v(O,U),I,F),R,s)},D,B)},_.translateBy=function(C,P,D,B){_.transform(C,function(){return n(this.__zoom.translate(typeof P=="function"?P.apply(this,arguments):P,typeof D=="function"?D.apply(this,arguments):D),t.apply(this,arguments),s)},null,B)},_.translateTo=function(C,P,D,B,R){_.transform(C,function(){var O=t.apply(this,arguments),I=this.__zoom,F=B==null?y(O):typeof B=="function"?B.apply(this,arguments):B;return n(nu.translate(F[0],F[1]).scale(I.k).translate(typeof P=="function"?-P.apply(this,arguments):-P,typeof D=="function"?-D.apply(this,arguments):-D),O,s)},B,R)};function v(C,P){return P=Math.max(o[0],Math.min(o[1],P)),P===C.k?C:new Ha(P,C.x,C.y)}function g(C,P,D){var B=P[0]-D[0]*C.k,R=P[1]-D[1]*C.k;return B===C.x&&R===C.y?C:new Ha(C.k,B,R)}function y(C){return[(+C[0][0]+ +C[1][0])/2,(+C[0][1]+ +C[1][1])/2]}function S(C,P,D,B){C.on("start.zoom",function(){w(this,arguments).event(B).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event(B).end()}).tween("zoom",function(){var R=this,O=arguments,I=w(R,O).event(B),F=t.apply(R,O),U=D==null?y(F):typeof D=="function"?D.apply(R,O):D,V=Math.max(F[1][0]-F[0][0],F[1][1]-F[0][1]),H=R.__zoom,Y=typeof P=="function"?P.apply(R,O):P,Q=l(H.invert(U).concat(V/H.k),Y.invert(U).concat(V/Y.k));return function(j){if(j===1)j=Y;else{var K=Q(j),ee=V/K[2];j=new Ha(ee,U[0]-K[0]*ee,U[1]-K[1]*ee)}I.zoom(null,j)}})}function w(C,P,D){return!D&&C.__zooming||new x(C,P)}function x(C,P){this.that=C,this.args=P,this.active=0,this.sourceEvent=null,this.extent=t.apply(C,P),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,P){return this.mouse&&C!=="mouse"&&(this.mouse[1]=P.invert(this.mouse[0])),this.touch0&&C!=="touch"&&(this.touch0[1]=P.invert(this.touch0[0])),this.touch1&&C!=="touch"&&(this.touch1[1]=P.invert(this.touch1[0])),this.that.__zoom=P,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(C){var P=xs(this.that).datum();u.call(C,this.that,new Rpe(C,{sourceEvent:this.sourceEvent,target:_,type:C,transform:this.that.__zoom,dispatch:u}),P)}};function E(C,...P){if(!e.apply(this,arguments))return;var D=w(this,P).event(C),B=this.__zoom,R=Math.max(o[0],Math.min(o[1],B.k*Math.pow(2,r.apply(this,arguments)))),O=Ks(C);if(D.wheel)(D.mouse[0][0]!==O[0]||D.mouse[0][1]!==O[1])&&(D.mouse[1]=B.invert(D.mouse[0]=O)),clearTimeout(D.wheel);else{if(B.k===R)return;D.mouse=[O,B.invert(O)],$0(this),D.start()}Mh(C),D.wheel=setTimeout(I,p),D.zoom("mouse",n(g(v(B,R),D.mouse[0],D.mouse[1]),D.extent,s));function I(){D.wheel=null,D.end()}}function A(C,...P){if(f||!e.apply(this,arguments))return;var D=C.currentTarget,B=w(this,P,!0).event(C),R=xs(C.view).on("mousemove.zoom",U,!0).on("mouseup.zoom",V,!0),O=Ks(C,D),I=C.clientX,F=C.clientY;sF(C.view),aw(C),B.mouse=[O,this.__zoom.invert(O)],$0(this),B.start();function U(H){if(Mh(H),!B.moved){var Y=H.clientX-I,Q=H.clientY-F;B.moved=Y*Y+Q*Q>m}B.event(H).zoom("mouse",n(g(B.that.__zoom,B.mouse[0]=Ks(H,D),B.mouse[1]),B.extent,s))}function V(H){R.on("mousemove.zoom mouseup.zoom",null),aF(H.view,B.moved),Mh(H),B.event(H).end()}}function T(C,...P){if(e.apply(this,arguments)){var D=this.__zoom,B=Ks(C.changedTouches?C.changedTouches[0]:C,this),R=D.invert(B),O=D.k*(C.shiftKey?.5:2),I=n(g(v(D,O),B,R),t.apply(this,P),s);Mh(C),a>0?xs(this).transition().duration(a).call(S,I,B,C):xs(this).call(_.transform,I,B,C)}}function k(C,...P){if(e.apply(this,arguments)){var D=C.touches,B=D.length,R=w(this,P,C.changedTouches.length===B).event(C),O,I,F,U;for(aw(C),I=0;I"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},SF=al.error001();function dr(e,t){const n=M.useContext(kb);if(n===null)throw new Error(SF);return W$(n,e,t)}const ri=()=>{const e=M.useContext(kb);if(e===null)throw new Error(SF);return M.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Fpe=e=>e.userSelectionActive?"none":"all";function Bpe({position:e,children:t,className:n,style:r,...i}){const o=dr(Fpe),s=`${e}`.split("-");return Z.jsx("div",{className:ss(["react-flow__panel",n,...s]),style:{...r,pointerEvents:o},...i,children:t})}function zpe({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:Z.jsx(Bpe,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:Z.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const Upe=({x:e,y:t,label:n,labelStyle:r={},labelShowBg:i=!0,labelBgStyle:o={},labelBgPadding:s=[2,4],labelBgBorderRadius:a=2,children:l,className:u,...c})=>{const d=M.useRef(null),[f,h]=M.useState({x:0,y:0,width:0,height:0}),p=ss(["react-flow__edge-textwrapper",u]);return M.useEffect(()=>{if(d.current){const m=d.current.getBBox();h({x:m.x,y:m.y,width:m.width,height:m.height})}},[n]),typeof n>"u"||!n?null:Z.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:p,visibility:f.width?"visible":"hidden",...c,children:[i&&Z.jsx("rect",{width:f.width+2*s[0],x:-s[0],y:-s[1],height:f.height+2*s[1],className:"react-flow__edge-textbg",style:o,rx:a,ry:a}),Z.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:d,style:r,children:n}),l]})};var jpe=M.memo(Upe);const eT=e=>({width:e.offsetWidth,height:e.offsetHeight}),zf=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),tT=(e={x:0,y:0},t)=>({x:zf(e.x,t[0][0],t[1][0]),y:zf(e.y,t[0][1],t[1][1])}),GP=(e,t,n)=>en?-zf(Math.abs(e-n),1,50)/50:0,wF=(e,t)=>{const n=GP(e.x,35,t.width-35)*20,r=GP(e.y,35,t.height-35)*20;return[n,r]},xF=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},CF=(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)}),Ng=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),EF=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),HP=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),_Oe=(e,t)=>EF(CF(Ng(e),Ng(t))),BC=(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)},Vpe=e=>Yo(e.width)&&Yo(e.height)&&Yo(e.x)&&Yo(e.y),Yo=e=>!isNaN(e)&&isFinite(e),Br=Symbol.for("internals"),TF=["Enter"," ","Escape"],Gpe=(e,t)=>{},Hpe=e=>"nativeEvent"in e;function zC(e){var i,o;const t=Hpe(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 AF=e=>"clientX"in e,ru=(e,t)=>{var o,s;const n=AF(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)}},f1=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0},Dm=({id:e,path:t,labelX:n,labelY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h=20})=>Z.jsxs(Z.Fragment,{children:[Z.jsx("path",{id:e,style:c,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:f}),h&&Z.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),i&&Yo(n)&&Yo(r)?Z.jsx(jpe,{x:n,y:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u}):null]});Dm.displayName="BaseEdge";function Nh(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(o=>o.id===e);i&&n(r,{...i})}}function kF({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(n-e)/2,o=n{const[b,_,v]=RF({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o});return Z.jsx(Dm,{path:b,labelX:_,labelY:v,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:m})});nT.displayName="SimpleBezierEdge";const WP={[Ye.Left]:{x:-1,y:0},[Ye.Right]:{x:1,y:0},[Ye.Top]:{x:0,y:-1},[Ye.Bottom]:{x:0,y:1}},qpe=({source:e,sourcePosition:t=Ye.Bottom,target:n})=>t===Ye.Left||t===Ye.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Wpe({source:e,sourcePosition:t=Ye.Bottom,target:n,targetPosition:r=Ye.Top,center:i,offset:o}){const s=WP[t],a=WP[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=qpe({source:l,sourcePosition:t,target:u}),d=c.x!==0?"x":"y",f=c[d];let h=[],p,m;const b={x:0,y:0},_={x:0,y:0},[v,g,y,S]=kF({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[d]*a[d]===-1){p=i.x||v,m=i.y||g;const x=[{x:p,y:l.y},{x:p,y:u.y}],E=[{x:l.x,y:m},{x:u.x,y:m}];s[d]===f?h=d==="x"?x:E:h=d==="x"?E:x}else{const x=[{x:l.x,y:u.y}],E=[{x:u.x,y:l.y}];if(d==="x"?h=s.x===f?E:x:h=s.y===f?x:E,t===r){const N=Math.abs(e[d]-n[d]);if(N<=o){const C=Math.min(o-1,o-N);s[d]===f?b[d]=(l[d]>e[d]?-1:1)*C:_[d]=(u[d]>n[d]?-1:1)*C}}if(t!==r){const N=d==="x"?"y":"x",C=s[d]===a[N],P=l[N]>u[N],D=l[N]=L?(p=(A.x+T.x)/2,m=h[0].y):(p=h[0].x,m=(A.y+T.y)/2)}return[[e,{x:l.x+b.x,y:l.y+b.y},...h,{x:u.x+_.x,y:u.y+_.y},n],p,m,y,S]}function Kpe(e,t,n,r){const i=Math.min(KP(e,t)/2,KP(t,n)/2,r),{x:o,y:s}=t;if(e.x===o&&o===n.x||e.y===s&&s===n.y)return`L${o} ${s}`;if(e.y===s){const u=e.x{let g="";return v>0&&v{const[_,v,g]=UC({sourceX:e,sourceY:t,sourcePosition:d,targetX:n,targetY:r,targetPosition:f,borderRadius:m==null?void 0:m.borderRadius,offset:m==null?void 0:m.offset});return Z.jsx(Dm,{path:_,labelX:v,labelY:g,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:h,markerStart:p,interactionWidth:b})});Pb.displayName="SmoothStepEdge";const rT=M.memo(e=>{var t;return Z.jsx(Pb,{...e,pathOptions:M.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});rT.displayName="StepEdge";function Xpe({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,o,s,a]=kF({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,o,s,a]}const iT=M.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})=>{const[p,m,b]=Xpe({sourceX:e,sourceY:t,targetX:n,targetY:r});return Z.jsx(Dm,{path:p,labelX:m,labelY:b,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})});iT.displayName="StraightEdge";function zy(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function XP({pos:e,x1:t,y1:n,x2:r,y2:i,c:o}){switch(e){case Ye.Left:return[t-zy(t-r,o),n];case Ye.Right:return[t+zy(r-t,o),n];case Ye.Top:return[t,n-zy(n-i,o)];case Ye.Bottom:return[t,n+zy(i-n,o)]}}function OF({sourceX:e,sourceY:t,sourcePosition:n=Ye.Bottom,targetX:r,targetY:i,targetPosition:o=Ye.Top,curvature:s=.25}){const[a,l]=XP({pos:n,x1:e,y1:t,x2:r,y2:i,c:s}),[u,c]=XP({pos:o,x1:r,y1:i,x2:e,y2:t,c:s}),[d,f,h,p]=PF({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 p1=M.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i=Ye.Bottom,targetPosition:o=Ye.Top,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,pathOptions:m,interactionWidth:b})=>{const[_,v,g]=OF({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o,curvature:m==null?void 0:m.curvature});return Z.jsx(Dm,{path:_,labelX:v,labelY:g,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:b})});p1.displayName="BezierEdge";const oT=M.createContext(null),Qpe=oT.Provider;oT.Consumer;const Ype=()=>M.useContext(oT),Zpe=e=>"id"in e&&"source"in e&&"target"in e,IF=e=>"id"in e&&!("source"in e)&&!("target"in e),Jpe=(e,t,n)=>{if(!IF(e))return[];const r=n.filter(i=>i.source===e.id).map(i=>i.target);return t.filter(i=>r.includes(i.id))},ege=(e,t,n)=>{if(!IF(e))return[];const r=n.filter(i=>i.target===e.id).map(i=>i.source);return t.filter(i=>r.includes(i.id))},tge=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,jC=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,nge=(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)),MF=(e,t)=>{if(!e.source||!e.target)return t;let n;return Zpe(e)?n={...e}:n={...e,id:tge(e)},nge(n,t)?t:t.concat(n)},NF=({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},rge=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r}),cf=(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}},sT=(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}=cf(i,t).positionAbsolute;return CF(r,Ng({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 EF(n)},DF=(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}=cf(c,a),b={x:m.x,y:m.y,width:d||0,height:f||0},_=BC(l,b),v=typeof d>"u"||typeof f>"u"||d===null||f===null,g=o&&_>0,y=(d||0)*(f||0);(v||g||_>=y||c.dragging)&&u.push(c)}),u},aT=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},LF=(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=zf(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]},Wu=(e,t=0)=>e.transition().duration(t);function QP(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 ige(e,t,n,r,i,o){const{x:s,y:a}=ru(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=lT(void 0,u),b=u.getAttribute("data-handleid"),_=o({nodeId:p,id:b,type:m});if(_)return{handle:{id:b,type:m,nodeId:p,x:n.x,y:n.y},validHandleResult:_}}}let c=[],d=1/0;if(i.forEach(p=>{const m=Math.sqrt((p.x-n.x)**2+(p.y-n.y)**2);if(m<=r){const b=o(p);m<=d&&(mp.isValid),h=c.some(({handle:p})=>p.type==="target");return c.find(({handle:p,validHandleResult:m})=>h?p.type==="target":f?m.isValid:!0)||c[0]}const oge={source:null,target:null,sourceHandle:null,targetHandle:null},$F=()=>({handleDomNode:null,isValid:!1,connection:oge,endHandle:null});function FF(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={...$F(),handleDomNode:l};if(l){const c=lT(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===Oc.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 sge({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((i,o)=>{if(o[Br]){const{handleBounds:s}=o[Br];let a=[],l=[];s&&(a=QP(o,s,"source",`${t}-${n}-${r}`),l=QP(o,s,"target",`${t}-${n}-${r}`)),i.push(...a,...l)}return i},[])}function lT(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function lw(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function age(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function BF({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState:o,setState:s,isValidConnection:a,edgeUpdaterType:l,onEdgeUpdateEnd:u}){const c=xF(e.target),{connectionMode:d,domNode:f,autoPanOnConnect:h,connectionRadius:p,onConnectStart:m,panBy:b,getNodes:_,cancelConnection:v}=o();let g=0,y;const{x:S,y:w}=ru(e),x=c==null?void 0:c.elementFromPoint(S,w),E=lT(l,x),A=f==null?void 0:f.getBoundingClientRect();if(!A||!E)return;let T,k=ru(e,A),L=!1,N=null,C=!1,P=null;const D=sge({nodes:_(),nodeId:n,handleId:t,handleType:E}),B=()=>{if(!h)return;const[I,F]=wF(k,A);b({x:I,y:F}),g=requestAnimationFrame(B)};s({connectionPosition:k,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:E,connectionStartHandle:{nodeId:n,handleId:t,type:E},connectionEndHandle:null}),m==null||m(e,{nodeId:n,handleId:t,handleType:E});function R(I){const{transform:F}=o();k=ru(I,A);const{handle:U,validHandleResult:V}=ige(I,c,NF(k,F,!1,[1,1]),p,D,H=>FF(H,d,n,t,i?"target":"source",a,c));if(y=U,L||(B(),L=!0),P=V.handleDomNode,N=V.connection,C=V.isValid,s({connectionPosition:y&&C?rge({x:y.x,y:y.y},F):k,connectionStatus:age(!!y,C),connectionEndHandle:V.endHandle}),!y&&!C&&!P)return lw(T);N.source!==N.target&&P&&(lw(T),T=P,P.classList.add("connecting","react-flow__handle-connecting"),P.classList.toggle("valid",C),P.classList.toggle("react-flow__handle-valid",C))}function O(I){var F,U;(y||P)&&N&&C&&(r==null||r(N)),(U=(F=o()).onConnectEnd)==null||U.call(F,I),l&&(u==null||u(I)),lw(T),v(),cancelAnimationFrame(g),L=!1,C=!1,N=null,P=null,c.removeEventListener("mousemove",R),c.removeEventListener("mouseup",O),c.removeEventListener("touchmove",R),c.removeEventListener("touchend",O)}c.addEventListener("mousemove",R),c.addEventListener("mouseup",O),c.addEventListener("touchmove",R),c.addEventListener("touchend",O)}const YP=()=>!0,lge=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),uge=(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}},zF=M.forwardRef(({type:e="source",position:t=Ye.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:o=!0,id:s,onConnect:a,children:l,className:u,onMouseDown:c,onTouchStart:d,...f},h)=>{var A,T;const p=s||null,m=e==="target",b=ri(),_=Ype(),{connectOnClick:v,noPanClassName:g}=dr(lge,go),{connecting:y,clickConnecting:S}=dr(uge(_,p,e),go);_||(T=(A=b.getState()).onError)==null||T.call(A,"010",al.error010());const w=k=>{const{defaultEdgeOptions:L,onConnect:N,hasDefaultEdges:C}=b.getState(),P={...L,...k};if(C){const{edges:D,setEdges:B}=b.getState();B(MF(P,D))}N==null||N(P),a==null||a(P)},x=k=>{if(!_)return;const L=AF(k);i&&(L&&k.button===0||!L)&&BF({event:k,handleId:p,nodeId:_,onConnect:w,isTarget:m,getState:b.getState,setState:b.setState,isValidConnection:n||b.getState().isValidConnection||YP}),L?c==null||c(k):d==null||d(k)},E=k=>{const{onClickConnectStart:L,onClickConnectEnd:N,connectionClickStartHandle:C,connectionMode:P,isValidConnection:D}=b.getState();if(!_||!C&&!i)return;if(!C){L==null||L(k,{nodeId:_,handleId:p,handleType:e}),b.setState({connectionClickStartHandle:{nodeId:_,type:e,handleId:p}});return}const B=xF(k.target),R=n||D||YP,{connection:O,isValid:I}=FF({nodeId:_,id:p,type:e},P,C.nodeId,C.handleId||null,C.type,R,B);I&&w(O),N==null||N(k),b.setState({connectionClickStartHandle:null})};return Z.jsx("div",{"data-handleid":p,"data-nodeid":_,"data-handlepos":t,"data-id":`${_}-${p}-${e}`,className:ss(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,u,{source:!m,target:m,connectable:r,connectablestart:i,connectableend:o,connecting:S,connectionindicator:r&&(i&&!y||o&&y)}]),onMouseDown:x,onTouchStart:x,onClick:v?E:void 0,ref:h,...f,children:l})});zF.displayName="Handle";var g1=M.memo(zF);const UF=({data:e,isConnectable:t,targetPosition:n=Ye.Top,sourcePosition:r=Ye.Bottom})=>Z.jsxs(Z.Fragment,{children:[Z.jsx(g1,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,Z.jsx(g1,{type:"source",position:r,isConnectable:t})]});UF.displayName="DefaultNode";var VC=M.memo(UF);const jF=({data:e,isConnectable:t,sourcePosition:n=Ye.Bottom})=>Z.jsxs(Z.Fragment,{children:[e==null?void 0:e.label,Z.jsx(g1,{type:"source",position:n,isConnectable:t})]});jF.displayName="InputNode";var VF=M.memo(jF);const GF=({data:e,isConnectable:t,targetPosition:n=Ye.Top})=>Z.jsxs(Z.Fragment,{children:[Z.jsx(g1,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]});GF.displayName="OutputNode";var HF=M.memo(GF);const uT=()=>null;uT.displayName="GroupNode";const cge=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected)}),Uy=e=>e.id;function dge(e,t){return go(e.selectedNodes.map(Uy),t.selectedNodes.map(Uy))&&go(e.selectedEdges.map(Uy),t.selectedEdges.map(Uy))}const qF=M.memo(({onSelectionChange:e})=>{const t=ri(),{selectedNodes:n,selectedEdges:r}=dr(cge,dge);return M.useEffect(()=>{var o,s;const i={nodes:n,edges:r};e==null||e(i),(s=(o=t.getState()).onSelectionChange)==null||s.call(o,i)},[n,r,e]),null});qF.displayName="SelectionListener";const fge=e=>!!e.onSelectionChange;function hge({onSelectionChange:e}){const t=dr(fge);return e||t?Z.jsx(qF,{onSelectionChange:e}):null}const pge=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 ud(e,t){M.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function Tt(e,t,n){M.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const gge=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:i,onConnectStart:o,onConnectEnd:s,onClickConnectStart:a,onClickConnectEnd:l,nodesDraggable:u,nodesConnectable:c,nodesFocusable:d,edgesFocusable:f,edgesUpdatable:h,elevateNodesOnSelect:p,minZoom:m,maxZoom:b,nodeExtent:_,onNodesChange:v,onEdgesChange:g,elementsSelectable:y,connectionMode:S,snapGrid:w,snapToGrid:x,translateExtent:E,connectOnClick:A,defaultEdgeOptions:T,fitView:k,fitViewOptions:L,onNodesDelete:N,onEdgesDelete:C,onNodeDrag:P,onNodeDragStart:D,onNodeDragStop:B,onSelectionDrag:R,onSelectionDragStart:O,onSelectionDragStop:I,noPanClassName:F,nodeOrigin:U,rfId:V,autoPanOnConnect:H,autoPanOnNodeDrag:Y,onError:Q,connectionRadius:j,isValidConnection:K})=>{const{setNodes:ee,setEdges:ie,setDefaultNodesAndEdges:ge,setMinZoom:ae,setMaxZoom:dt,setTranslateExtent:et,setNodeExtent:Ne,reset:lt}=dr(pge,go),Te=ri();return M.useEffect(()=>{const Gt=r==null?void 0:r.map(_r=>({..._r,...T}));return ge(n,Gt),()=>{lt()}},[]),Tt("defaultEdgeOptions",T,Te.setState),Tt("connectionMode",S,Te.setState),Tt("onConnect",i,Te.setState),Tt("onConnectStart",o,Te.setState),Tt("onConnectEnd",s,Te.setState),Tt("onClickConnectStart",a,Te.setState),Tt("onClickConnectEnd",l,Te.setState),Tt("nodesDraggable",u,Te.setState),Tt("nodesConnectable",c,Te.setState),Tt("nodesFocusable",d,Te.setState),Tt("edgesFocusable",f,Te.setState),Tt("edgesUpdatable",h,Te.setState),Tt("elementsSelectable",y,Te.setState),Tt("elevateNodesOnSelect",p,Te.setState),Tt("snapToGrid",x,Te.setState),Tt("snapGrid",w,Te.setState),Tt("onNodesChange",v,Te.setState),Tt("onEdgesChange",g,Te.setState),Tt("connectOnClick",A,Te.setState),Tt("fitViewOnInit",k,Te.setState),Tt("fitViewOnInitOptions",L,Te.setState),Tt("onNodesDelete",N,Te.setState),Tt("onEdgesDelete",C,Te.setState),Tt("onNodeDrag",P,Te.setState),Tt("onNodeDragStart",D,Te.setState),Tt("onNodeDragStop",B,Te.setState),Tt("onSelectionDrag",R,Te.setState),Tt("onSelectionDragStart",O,Te.setState),Tt("onSelectionDragStop",I,Te.setState),Tt("noPanClassName",F,Te.setState),Tt("nodeOrigin",U,Te.setState),Tt("rfId",V,Te.setState),Tt("autoPanOnConnect",H,Te.setState),Tt("autoPanOnNodeDrag",Y,Te.setState),Tt("onError",Q,Te.setState),Tt("connectionRadius",j,Te.setState),Tt("isValidConnection",K,Te.setState),ud(e,ee),ud(t,ie),ud(m,ae),ud(b,dt),ud(E,et),ud(_,Ne),null},ZP={display:"none"},mge={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},WF="react-flow__node-desc",KF="react-flow__edge-desc",yge="react-flow__aria-live",vge=e=>e.ariaLiveMessage;function _ge({rfId:e}){const t=dr(vge);return Z.jsx("div",{id:`${yge}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:mge,children:t})}function bge({rfId:e,disableKeyboardA11y:t}){return Z.jsxs(Z.Fragment,{children:[Z.jsxs("div",{id:`${WF}-${e}`,style:ZP,children:["Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "]}),Z.jsx("div",{id:`${KF}-${e}`,style:ZP,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&Z.jsx(_ge,{rfId:e})]})}const Sge=typeof document<"u"?document:null;var Dg=(e=null,t={target:Sge})=>{const[n,r]=M.useState(!1),i=M.useRef(!1),o=M.useRef(new Set([])),[s,a]=M.useMemo(()=>{if(e!==null){const u=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.split("+")),c=u.reduce((d,f)=>d.concat(...f),[]);return[u,c]}return[[],[]]},[e]);return M.useEffect(()=>{var l,u;if(e!==null){const c=h=>{if(i.current=h.ctrlKey||h.metaKey||h.shiftKey,!i.current&&zC(h))return!1;const p=e8(h.code,a);o.current.add(h[p]),JP(s,o.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if(!i.current&&zC(h))return!1;const p=e8(h.code,a);JP(s,o.current,!0)?(r(!1),o.current.clear()):o.current.delete(h[p]),h.key==="Meta"&&o.current.clear(),i.current=!1},f=()=>{o.current.clear(),r(!1)};return(l=t==null?void 0:t.target)==null||l.addEventListener("keydown",c),(u=t==null?void 0:t.target)==null||u.addEventListener("keyup",d),window.addEventListener("blur",f),()=>{var h,p;(h=t==null?void 0:t.target)==null||h.removeEventListener("keydown",c),(p=t==null?void 0:t.target)==null||p.removeEventListener("keyup",d),window.removeEventListener("blur",f)}}},[e,r]),n};function JP(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(i=>t.has(i)))}function e8(e,t){return t.includes(e)?"code":"key"}function XF(e,t,n,r){var s,a;if(!e.parentNode)return n;const i=t.get(e.parentNode),o=cf(i,r);return XF(i,t,{x:(n.x??0)+o.x,y:(n.y??0)+o.y,z:(((s=i[Br])==null?void 0:s.z)??0)>(n.z??0)?((a=i[Br])==null?void 0:a.z)??0:n.z??0},r)}function QF(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}=XF(r,e,{...r.position,z:((i=r[Br])==null?void 0:i.z)??0},t);r.positionAbsolute={x:o,y:s},r[Br].z=a,n!=null&&n[r.id]&&(r[Br].isParent=!0)}})}function uw(e,t,n,r){const i=new Map,o={},s=r?1e3:0;return e.forEach(a=>{var d;const l=(Yo(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,Br,{enumerable:!1,value:{handleBounds:(d=u==null?void 0:u[Br])==null?void 0:d.handleBounds,z:l}}),i.set(a.id,c)}),QF(i,n,o),i}function YF(e,t={}){const{getNodes:n,width:r,height:i,minZoom:o,maxZoom:s,d3Zoom:a,d3Selection:l,fitViewOnInitDone:u,fitViewOnInit:c,nodeOrigin:d}=e(),f=t.initial&&!u&&c;if(a&&l&&(f||!t.initial)){const p=n().filter(b=>{var v;const _=t.includeHiddenNodes?b.width&&b.height:!b.hidden;return(v=t.nodes)!=null&&v.length?_&&t.nodes.some(g=>g.id===b.id):_}),m=p.every(b=>b.width&&b.height);if(p.length>0&&m){const b=sT(p,d),[_,v,g]=LF(b,r,i,t.minZoom??o,t.maxZoom??s,t.padding??.1),y=nu.translate(_,v).scale(g);return typeof t.duration=="number"&&t.duration>0?a.transform(Wu(l,t.duration),y):a.transform(l,y),!0}}return!1}function wge(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[Br]:r[Br],selected:n.selected})}),new Map(t)}function xge(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return r&&(n.selected=r.selected),n})}function jy({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:wge(e,i)}),s==null||s(e)),t!=null&&t.length&&(u&&r({edges:xge(t,o)}),a==null||a(t))}const cd=()=>{},Cge={zoomIn:cd,zoomOut:cd,zoomTo:cd,getZoom:()=>1,setViewport:cd,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:cd,fitBounds:cd,project:e=>e,viewportInitialized:!1},Ege=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),Tge=()=>{const e=ri(),{d3Zoom:t,d3Selection:n}=dr(Ege,go);return M.useMemo(()=>n&&t?{zoomIn:i=>t.scaleBy(Wu(n,i==null?void 0:i.duration),1.2),zoomOut:i=>t.scaleBy(Wu(n,i==null?void 0:i.duration),1/1.2),zoomTo:(i,o)=>t.scaleTo(Wu(n,o==null?void 0:o.duration),i),getZoom:()=>e.getState().transform[2],setViewport:(i,o)=>{const[s,a,l]=e.getState().transform,u=nu.translate(i.x??s,i.y??a).scale(i.zoom??l);t.transform(Wu(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=>YF(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=nu.translate(d,f).scale(c);t.transform(Wu(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]=LF(i,s,a,l,u,(o==null?void 0:o.padding)??.1),h=nu.translate(c,d).scale(f);t.transform(Wu(n,o==null?void 0:o.duration),h)},project:i=>{const{transform:o,snapToGrid:s,snapGrid:a}=e.getState();return NF(i,o,s,a)},viewportInitialized:!0}:Cge,[t,n])};function ZF(){const e=Tge(),t=ri(),n=M.useCallback(()=>t.getState().getNodes().map(m=>({...m})),[]),r=M.useCallback(m=>t.getState().nodeInternals.get(m),[]),i=M.useCallback(()=>{const{edges:m=[]}=t.getState();return m.map(b=>({...b}))},[]),o=M.useCallback(m=>{const{edges:b=[]}=t.getState();return b.find(_=>_.id===m)},[]),s=M.useCallback(m=>{const{getNodes:b,setNodes:_,hasDefaultNodes:v,onNodesChange:g}=t.getState(),y=b(),S=typeof m=="function"?m(y):m;if(v)_(S);else if(g){const w=S.length===0?y.map(x=>({type:"remove",id:x.id})):S.map(x=>({item:x,type:"reset"}));g(w)}},[]),a=M.useCallback(m=>{const{edges:b=[],setEdges:_,hasDefaultEdges:v,onEdgesChange:g}=t.getState(),y=typeof m=="function"?m(b):m;if(v)_(y);else if(g){const S=y.length===0?b.map(w=>({type:"remove",id:w.id})):y.map(w=>({item:w,type:"reset"}));g(S)}},[]),l=M.useCallback(m=>{const b=Array.isArray(m)?m:[m],{getNodes:_,setNodes:v,hasDefaultNodes:g,onNodesChange:y}=t.getState();if(g){const w=[..._(),...b];v(w)}else if(y){const S=b.map(w=>({item:w,type:"add"}));y(S)}},[]),u=M.useCallback(m=>{const b=Array.isArray(m)?m:[m],{edges:_=[],setEdges:v,hasDefaultEdges:g,onEdgesChange:y}=t.getState();if(g)v([..._,...b]);else if(y){const S=b.map(w=>({item:w,type:"add"}));y(S)}},[]),c=M.useCallback(()=>{const{getNodes:m,edges:b=[],transform:_}=t.getState(),[v,g,y]=_;return{nodes:m().map(S=>({...S})),edges:b.map(S=>({...S})),viewport:{x:v,y:g,zoom:y}}},[]),d=M.useCallback(({nodes:m,edges:b})=>{const{nodeInternals:_,getNodes:v,edges:g,hasDefaultNodes:y,hasDefaultEdges:S,onNodesDelete:w,onEdgesDelete:x,onNodesChange:E,onEdgesChange:A}=t.getState(),T=(m||[]).map(P=>P.id),k=(b||[]).map(P=>P.id),L=v().reduce((P,D)=>{const B=!T.includes(D.id)&&D.parentNode&&P.find(O=>O.id===D.parentNode);return(typeof D.deletable=="boolean"?D.deletable:!0)&&(T.includes(D.id)||B)&&P.push(D),P},[]),N=g.filter(P=>typeof P.deletable=="boolean"?P.deletable:!0),C=N.filter(P=>k.includes(P.id));if(L||C){const P=aT(L,N),D=[...C,...P],B=D.reduce((R,O)=>(R.includes(O.id)||R.push(O.id),R),[]);if((S||y)&&(S&&t.setState({edges:g.filter(R=>!B.includes(R.id))}),y&&(L.forEach(R=>{_.delete(R.id)}),t.setState({nodeInternals:new Map(_)}))),B.length>0&&(x==null||x(D),A&&A(B.map(R=>({id:R,type:"remove"})))),L.length>0&&(w==null||w(L),E)){const R=L.map(O=>({id:O.id,type:"remove"}));E(R)}}},[]),f=M.useCallback(m=>{const b=Vpe(m),_=b?null:t.getState().nodeInternals.get(m.id);return[b?m:HP(_),_,b]},[]),h=M.useCallback((m,b=!0,_)=>{const[v,g,y]=f(m);return v?(_||t.getState().getNodes()).filter(S=>{if(!y&&(S.id===g.id||!S.positionAbsolute))return!1;const w=HP(S),x=BC(w,v);return b&&x>0||x>=m.width*m.height}):[]},[]),p=M.useCallback((m,b,_=!0)=>{const[v]=f(m);if(!v)return!1;const g=BC(v,b);return _&&g>0||g>=m.width*m.height},[]);return M.useMemo(()=>({...e,getNodes:n,getNode:r,getEdges:i,getEdge:o,setNodes:s,setEdges:a,addNodes:l,addEdges:u,toObject:c,deleteElements:d,getIntersectingNodes:h,isNodeIntersecting:p}),[e,n,r,i,o,s,a,l,u,c,d,h,p])}var Age=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=ri(),{deleteElements:r}=ZF(),i=Dg(e),o=Dg(t);M.useEffect(()=>{if(i){const{edges:s,getNodes:a}=n.getState(),l=a().filter(c=>c.selected),u=s.filter(c=>c.selected);r({nodes:l,edges:u}),n.setState({nodesSelectionActive:!1})}},[i]),M.useEffect(()=>{n.setState({multiSelectionActive:o})},[o])};function kge(e){const t=ri();M.useEffect(()=>{let n;const r=()=>{var o,s;if(!e.current)return;const i=eT(e.current);(i.height===0||i.width===0)&&((s=(o=t.getState()).onError)==null||s.call(o,"004",al.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 cT={position:"absolute",width:"100%",height:"100%",top:0,left:0},Pge=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,Vy=e=>({x:e.x,y:e.y,zoom:e.k}),dd=(e,t)=>e.target.closest(`.${t}`),t8=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),n8=e=>{const t=e.ctrlKey&&f1()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},Rge=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),Oge=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:i=!0,zoomOnPinch:o=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=ac.Free,zoomOnDoubleClick:u=!0,elementsSelectable:c,panOnDrag:d=!0,defaultViewport:f,translateExtent:h,minZoom:p,maxZoom:m,zoomActivationKeyCode:b,preventScrolling:_=!0,children:v,noWheelClassName:g,noPanClassName:y})=>{const S=M.useRef(),w=ri(),x=M.useRef(!1),E=M.useRef(!1),A=M.useRef(null),T=M.useRef({x:0,y:0,zoom:0}),{d3Zoom:k,d3Selection:L,d3ZoomHandler:N,userSelectionActive:C}=dr(Rge,go),P=Dg(b),D=M.useRef(0),B=M.useRef(!1),R=M.useRef();return kge(A),M.useEffect(()=>{if(A.current){const O=A.current.getBoundingClientRect(),I=Lpe().scaleExtent([p,m]).translateExtent(h),F=xs(A.current).call(I),U=nu.translate(f.x,f.y).scale(zf(f.zoom,p,m)),V=[[0,0],[O.width,O.height]],H=I.constrain()(U,V,h);I.transform(F,H),I.wheelDelta(n8),w.setState({d3Zoom:I,d3Selection:F,d3ZoomHandler:F.on("wheel.zoom"),transform:[H.x,H.y,H.k],domNode:A.current.closest(".react-flow")})}},[]),M.useEffect(()=>{L&&k&&(s&&!P&&!C?L.on("wheel.zoom",O=>{if(dd(O,g))return!1;O.preventDefault(),O.stopImmediatePropagation();const I=L.property("__zoom").k||1,F=f1();if(O.ctrlKey&&o&&F){const ee=Ks(O),ie=n8(O),ge=I*Math.pow(2,ie);k.scaleTo(L,ge,ee,O);return}const U=O.deltaMode===1?20:1;let V=l===ac.Vertical?0:O.deltaX*U,H=l===ac.Horizontal?0:O.deltaY*U;!F&&O.shiftKey&&l!==ac.Vertical&&(V=O.deltaY*U,H=0),k.translateBy(L,-(V/I)*a,-(H/I)*a,{internal:!0});const Y=Vy(L.property("__zoom")),{onViewportChangeStart:Q,onViewportChange:j,onViewportChangeEnd:K}=w.getState();clearTimeout(R.current),B.current||(B.current=!0,t==null||t(O,Y),Q==null||Q(Y)),B.current&&(e==null||e(O,Y),j==null||j(Y),R.current=setTimeout(()=>{n==null||n(O,Y),K==null||K(Y),B.current=!1},150))},{passive:!1}):typeof N<"u"&&L.on("wheel.zoom",function(O,I){if(!_||dd(O,g))return null;O.preventDefault(),N.call(this,O,I)},{passive:!1}))},[C,s,l,L,k,N,P,o,_,g,t,e,n]),M.useEffect(()=>{k&&k.on("start",O=>{var U,V;if(!O.sourceEvent||O.sourceEvent.internal)return null;D.current=(U=O.sourceEvent)==null?void 0:U.button;const{onViewportChangeStart:I}=w.getState(),F=Vy(O.transform);x.current=!0,T.current=F,((V=O.sourceEvent)==null?void 0:V.type)==="mousedown"&&w.setState({paneDragging:!0}),I==null||I(F),t==null||t(O.sourceEvent,F)})},[k,t]),M.useEffect(()=>{k&&(C&&!x.current?k.on("zoom",null):C||k.on("zoom",O=>{var F;const{onViewportChange:I}=w.getState();if(w.setState({transform:[O.transform.x,O.transform.y,O.transform.k]}),E.current=!!(r&&t8(d,D.current??0)),(e||I)&&!((F=O.sourceEvent)!=null&&F.internal)){const U=Vy(O.transform);I==null||I(U),e==null||e(O.sourceEvent,U)}}))},[C,k,e,d,r]),M.useEffect(()=>{k&&k.on("end",O=>{if(!O.sourceEvent||O.sourceEvent.internal)return null;const{onViewportChangeEnd:I}=w.getState();if(x.current=!1,w.setState({paneDragging:!1}),r&&t8(d,D.current??0)&&!E.current&&r(O.sourceEvent),E.current=!1,(n||I)&&Pge(T.current,O.transform)){const F=Vy(O.transform);T.current=F,clearTimeout(S.current),S.current=setTimeout(()=>{I==null||I(F),n==null||n(O.sourceEvent,F)},s?150:0)}})},[k,s,d,n,r]),M.useEffect(()=>{k&&k.filter(O=>{const I=P||i,F=o&&O.ctrlKey;if(O.button===1&&O.type==="mousedown"&&(dd(O,"react-flow__node")||dd(O,"react-flow__edge")))return!0;if(!d&&!I&&!s&&!u&&!o||C||!u&&O.type==="dblclick"||dd(O,g)&&O.type==="wheel"||dd(O,y)&&O.type!=="wheel"||!o&&O.ctrlKey&&O.type==="wheel"||!I&&!s&&!F&&O.type==="wheel"||!d&&(O.type==="mousedown"||O.type==="touchstart")||Array.isArray(d)&&!d.includes(O.button)&&(O.type==="mousedown"||O.type==="touchstart"))return!1;const U=Array.isArray(d)&&d.includes(O.button)||!O.button||O.button<=1;return(!O.ctrlKey||O.type==="wheel")&&U})},[C,k,i,o,s,u,d,c,P]),Z.jsx("div",{className:"react-flow__renderer",ref:A,style:cT,children:v})},Ige=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Mge(){const{userSelectionActive:e,userSelectionRect:t}=dr(Ige,go);return e&&t?Z.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function r8(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 JF(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&&r8(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&&r8(r,s);break}case"remove":return r}return r.push(s),r},n)}function Ku(e,t){return JF(e,t)}function Bu(e,t){return JF(e,t)}const Pl=(e,t)=>({id:e,type:"select",selected:t});function zd(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return!r.selected&&i?(r.selected=!0,n.push(Pl(r.id,!0))):r.selected&&!i&&(r.selected=!1,n.push(Pl(r.id,!1))),n},[])}const cw=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},Nge=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),eB=M.memo(({isSelecting:e,selectionMode:t=mu.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:i,onPaneClick:o,onPaneContextMenu:s,onPaneScroll:a,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:c,children:d})=>{const f=M.useRef(null),h=ri(),p=M.useRef(0),m=M.useRef(0),b=M.useRef(),{userSelectionActive:_,elementsSelectable:v,dragging:g}=dr(Nge,go),y=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),p.current=0,m.current=0},S=N=>{o==null||o(N),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},w=N=>{if(Array.isArray(n)&&(n!=null&&n.includes(2))){N.preventDefault();return}s==null||s(N)},x=a?N=>a(N):void 0,E=N=>{const{resetSelectedElements:C,domNode:P}=h.getState();if(b.current=P==null?void 0:P.getBoundingClientRect(),!v||!e||N.button!==0||N.target!==f.current||!b.current)return;const{x:D,y:B}=ru(N,b.current);C(),h.setState({userSelectionRect:{width:0,height:0,startX:D,startY:B,x:D,y:B}}),r==null||r(N)},A=N=>{const{userSelectionRect:C,nodeInternals:P,edges:D,transform:B,onNodesChange:R,onEdgesChange:O,nodeOrigin:I,getNodes:F}=h.getState();if(!e||!b.current||!C)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const U=ru(N,b.current),V=C.startX??0,H=C.startY??0,Y={...C,x:U.xie.id),ee=j.map(ie=>ie.id);if(p.current!==ee.length){p.current=ee.length;const ie=zd(Q,ee);ie.length&&(R==null||R(ie))}if(m.current!==K.length){m.current=K.length;const ie=zd(D,K);ie.length&&(O==null||O(ie))}h.setState({userSelectionRect:Y})},T=N=>{if(N.button!==0)return;const{userSelectionRect:C}=h.getState();!_&&C&&N.target===f.current&&(S==null||S(N)),h.setState({nodesSelectionActive:p.current>0}),y(),i==null||i(N)},k=N=>{_&&(h.setState({nodesSelectionActive:p.current>0}),i==null||i(N)),y()},L=v&&(e||_);return Z.jsxs("div",{className:ss(["react-flow__pane",{dragging:g,selection:e}]),onClick:L?void 0:cw(S,f),onContextMenu:cw(w,f),onWheel:cw(x,f),onMouseEnter:L?void 0:l,onMouseDown:L?E:void 0,onMouseMove:L?A:u,onMouseUp:L?T:void 0,onMouseLeave:L?k:c,ref:f,style:cT,children:[d,Z.jsx(Mge,{})]})});eB.displayName="Pane";function tB(e,t){if(!e.parentNode)return!1;const n=t.get(e.parentNode);return n?n.selected?!0:tB(n,t):!1}function i8(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 Dge(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected||i.id===r)&&(!i.parentNode||!tB(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 Lge(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function nB(e,t,n,r,i=[0,0],o){const s=Lge(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}=cf(c,i).positionAbsolute;a=c&&Yo(d)&&Yo(f)&&Yo(c.width)&&Yo(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",al.error005()),a=s;else if(e.extent&&e.parentNode){const c=n.get(e.parentNode),{x:d,y:f}=cf(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=cf(c,i).positionAbsolute}const u=a&&a!=="parent"?tT(t,a):t;return{position:{x:u.x-l.x,y:u.y-l.y},positionAbsolute:u}}function dw({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 o8=(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,...eT(l)}})};function Dh(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get(e);i&&n(r,{...i})}}function GC({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:i,unselectNodesAndEdges:o,multiSelectionActive:s,nodeInternals:a,onError:l}=t.getState(),u=a.get(e);if(!u){l==null||l("012",al.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&s)&&(o({nodes:[u]}),requestAnimationFrame(()=>{var c;return(c=r==null?void 0:r.current)==null?void 0:c.blur()})):i([e])}function $ge(){const e=ri();return M.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:i,snapToGrid:o}=e.getState(),s=n.touches?n.touches[0].clientX:n.clientX,a=n.touches?n.touches[0].clientY:n.clientY,l={x:(s-r[0])/r[2],y:(a-r[1])/r[2]};return{xSnapped:o?i[0]*Math.round(l.x/i[0]):l.x,ySnapped:o?i[1]*Math.round(l.y/i[1]):l.y,...l}},[])}function fw(e){return(t,n,r)=>e==null?void 0:e(t,r)}function rB({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:o,selectNodesOnDrag:s}){const a=ri(),[l,u]=M.useState(!1),c=M.useRef([]),d=M.useRef({x:null,y:null}),f=M.useRef(0),h=M.useRef(null),p=M.useRef({x:0,y:0}),m=M.useRef(null),b=M.useRef(!1),_=$ge();return M.useEffect(()=>{if(e!=null&&e.current){const v=xs(e.current),g=({x:S,y:w})=>{const{nodeInternals:x,onNodeDrag:E,onSelectionDrag:A,updateNodePositions:T,nodeExtent:k,snapGrid:L,snapToGrid:N,nodeOrigin:C,onError:P}=a.getState();d.current={x:S,y:w};let D=!1,B={x:0,y:0,x2:0,y2:0};if(c.current.length>1&&k){const O=sT(c.current,C);B=Ng(O)}if(c.current=c.current.map(O=>{const I={x:S-O.distance.x,y:w-O.distance.y};N&&(I.x=L[0]*Math.round(I.x/L[0]),I.y=L[1]*Math.round(I.y/L[1]));const F=[[k[0][0],k[0][1]],[k[1][0],k[1][1]]];c.current.length>1&&k&&!O.extent&&(F[0][0]=O.positionAbsolute.x-B.x+k[0][0],F[1][0]=O.positionAbsolute.x+(O.width??0)-B.x2+k[1][0],F[0][1]=O.positionAbsolute.y-B.y+k[0][1],F[1][1]=O.positionAbsolute.y+(O.height??0)-B.y2+k[1][1]);const U=nB(O,I,x,F,C,P);return D=D||O.position.x!==U.position.x||O.position.y!==U.position.y,O.position=U.position,O.positionAbsolute=U.positionAbsolute,O}),!D)return;T(c.current,!0,!0),u(!0);const R=i?E:fw(A);if(R&&m.current){const[O,I]=dw({nodeId:i,dragItems:c.current,nodeInternals:x});R(m.current,O,I)}},y=()=>{if(!h.current)return;const[S,w]=wF(p.current,h.current);if(S!==0||w!==0){const{transform:x,panBy:E}=a.getState();d.current.x=(d.current.x??0)-S/x[2],d.current.y=(d.current.y??0)-w/x[2],E({x:S,y:w})&&g(d.current)}f.current=requestAnimationFrame(y)};if(t)v.on(".drag",null);else{const S=qfe().on("start",w=>{var D;const{nodeInternals:x,multiSelectionActive:E,domNode:A,nodesDraggable:T,unselectNodesAndEdges:k,onNodeDragStart:L,onSelectionDragStart:N}=a.getState(),C=i?L:fw(N);!s&&!E&&i&&((D=x.get(i))!=null&&D.selected||k()),i&&o&&s&&GC({id:i,store:a,nodeRef:e});const P=_(w);if(d.current=P,c.current=Dge(x,T,P,i),C&&c.current){const[B,R]=dw({nodeId:i,dragItems:c.current,nodeInternals:x});C(w.sourceEvent,B,R)}h.current=(A==null?void 0:A.getBoundingClientRect())||null,p.current=ru(w.sourceEvent,h.current)}).on("drag",w=>{const x=_(w),{autoPanOnNodeDrag:E}=a.getState();!b.current&&E&&(b.current=!0,y()),(d.current.x!==x.xSnapped||d.current.y!==x.ySnapped)&&c.current&&(m.current=w.sourceEvent,p.current=ru(w.sourceEvent,h.current),g(x))}).on("end",w=>{if(u(!1),b.current=!1,cancelAnimationFrame(f.current),c.current){const{updateNodePositions:x,nodeInternals:E,onNodeDragStop:A,onSelectionDragStop:T}=a.getState(),k=i?A:fw(T);if(x(c.current,!1,!1),k){const[L,N]=dw({nodeId:i,dragItems:c.current,nodeInternals:E});k(w.sourceEvent,L,N)}}}).filter(w=>{const x=w.target;return!w.button&&(!n||!i8(x,`.${n}`,e))&&(!r||i8(x,r,e))});return v.call(S),()=>{v.on(".drag",null)}}}},[e,t,n,r,o,a,i,s,_]),l}function iB(){const e=ri();return M.useCallback(n=>{const{nodeInternals:r,nodeExtent:i,updateNodePositions:o,getNodes:s,snapToGrid:a,snapGrid:l,onError:u,nodesDraggable:c}=e.getState(),d=s().filter(v=>v.selected&&(v.draggable||c&&typeof v.draggable>"u")),f=a?l[0]:5,h=a?l[1]:5,p=n.isShiftPressed?4:1,m=n.x*f*p,b=n.y*h*p,_=d.map(v=>{if(v.positionAbsolute){const g={x:v.positionAbsolute.x+m,y:v.positionAbsolute.y+b};a&&(g.x=l[0]*Math.round(g.x/l[0]),g.y=l[1]*Math.round(g.y/l[1]));const{positionAbsolute:y,position:S}=nB(v,g,r,i,void 0,u);v.position=S,v.positionAbsolute=y}return v});o(_,!0,!1)},[])}const df={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var Lh=e=>{const t=({id:n,type:r,data:i,xPos:o,yPos:s,xPosOrigin:a,yPosOrigin:l,selected:u,onClick:c,onMouseEnter:d,onMouseMove:f,onMouseLeave:h,onContextMenu:p,onDoubleClick:m,style:b,className:_,isDraggable:v,isSelectable:g,isConnectable:y,isFocusable:S,selectNodesOnDrag:w,sourcePosition:x,targetPosition:E,hidden:A,resizeObserver:T,dragHandle:k,zIndex:L,isParent:N,noDragClassName:C,noPanClassName:P,initialized:D,disableKeyboardA11y:B,ariaLabel:R,rfId:O})=>{const I=ri(),F=M.useRef(null),U=M.useRef(x),V=M.useRef(E),H=M.useRef(r),Y=g||v||c||d||f||h,Q=iB(),j=Dh(n,I.getState,d),K=Dh(n,I.getState,f),ee=Dh(n,I.getState,h),ie=Dh(n,I.getState,p),ge=Dh(n,I.getState,m),ae=Ne=>{if(g&&(!w||!v)&&GC({id:n,store:I,nodeRef:F}),c){const lt=I.getState().nodeInternals.get(n);lt&&c(Ne,{...lt})}},dt=Ne=>{if(!zC(Ne))if(TF.includes(Ne.key)&&g){const lt=Ne.key==="Escape";GC({id:n,store:I,unselect:lt,nodeRef:F})}else!B&&v&&u&&Object.prototype.hasOwnProperty.call(df,Ne.key)&&(I.setState({ariaLiveMessage:`Moved selected node ${Ne.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~o}, y: ${~~s}`}),Q({x:df[Ne.key].x,y:df[Ne.key].y,isShiftPressed:Ne.shiftKey}))};M.useEffect(()=>{if(F.current&&!A){const Ne=F.current;return T==null||T.observe(Ne),()=>T==null?void 0:T.unobserve(Ne)}},[A]),M.useEffect(()=>{const Ne=H.current!==r,lt=U.current!==x,Te=V.current!==E;F.current&&(Ne||lt||Te)&&(Ne&&(H.current=r),lt&&(U.current=x),Te&&(V.current=E),I.getState().updateNodeDimensions([{id:n,nodeElement:F.current,forceUpdate:!0}]))},[n,r,x,E]);const et=rB({nodeRef:F,disabled:A||!v,noDragClassName:C,handleSelector:k,nodeId:n,isSelectable:g,selectNodesOnDrag:w});return A?null:Z.jsx("div",{className:ss(["react-flow__node",`react-flow__node-${r}`,{[P]:v},_,{selected:u,selectable:g,parent:N,dragging:et}]),ref:F,style:{zIndex:L,transform:`translate(${a}px,${l}px)`,pointerEvents:Y?"all":"none",visibility:D?"visible":"hidden",...b},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:j,onMouseMove:K,onMouseLeave:ee,onContextMenu:ie,onClick:ae,onDoubleClick:ge,onKeyDown:S?dt:void 0,tabIndex:S?0:void 0,role:S?"button":void 0,"aria-describedby":B?void 0:`${WF}-${O}`,"aria-label":R,children:Z.jsx(Qpe,{value:n,children:Z.jsx(e,{id:n,data:i,type:r,xPos:o,yPos:s,selected:u,isConnectable:y,sourcePosition:x,targetPosition:E,dragging:et,dragHandle:k,zIndex:L})})})};return t.displayName="NodeWrapper",M.memo(t)};const Fge=e=>{const t=e.getNodes().filter(n=>n.selected);return{...sT(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function Bge({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=ri(),{width:i,height:o,x:s,y:a,transformString:l,userSelectionActive:u}=dr(Fge,go),c=iB(),d=M.useRef(null);if(M.useEffect(()=>{var p;n||(p=d.current)==null||p.focus({preventScroll:!0})},[n]),rB({nodeRef:d}),u||!i||!o)return null;const f=e?p=>{const m=r.getState().getNodes().filter(b=>b.selected);e(p,m)}:void 0,h=p=>{Object.prototype.hasOwnProperty.call(df,p.key)&&c({x:df[p.key].x,y:df[p.key].y,isShiftPressed:p.shiftKey})};return Z.jsx("div",{className:ss(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l},children:Z.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:h,style:{width:i,height:o,top:a,left:s}})})}var zge=M.memo(Bge);const Uge=e=>e.nodesSelectionActive,oB=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,deleteKeyCode:a,onMove:l,onMoveStart:u,onMoveEnd:c,selectionKeyCode:d,selectionOnDrag:f,selectionMode:h,onSelectionStart:p,onSelectionEnd:m,multiSelectionKeyCode:b,panActivationKeyCode:_,zoomActivationKeyCode:v,elementsSelectable:g,zoomOnScroll:y,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:E,zoomOnDoubleClick:A,panOnDrag:T,defaultViewport:k,translateExtent:L,minZoom:N,maxZoom:C,preventScrolling:P,onSelectionContextMenu:D,noWheelClassName:B,noPanClassName:R,disableKeyboardA11y:O})=>{const I=dr(Uge),F=Dg(d),V=Dg(_)||T,H=F||f&&V!==!0;return Age({deleteKeyCode:a,multiSelectionKeyCode:b}),Z.jsx(Oge,{onMove:l,onMoveStart:u,onMoveEnd:c,onPaneContextMenu:o,elementsSelectable:g,zoomOnScroll:y,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:E,zoomOnDoubleClick:A,panOnDrag:!F&&V,defaultViewport:k,translateExtent:L,minZoom:N,maxZoom:C,zoomActivationKeyCode:v,preventScrolling:P,noWheelClassName:B,noPanClassName:R,children:Z.jsxs(eB,{onSelectionStart:p,onSelectionEnd:m,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,panOnDrag:V,isSelecting:!!H,selectionMode:h,children:[e,I&&Z.jsx(zge,{onSelectionContextMenu:D,noPanClassName:R,disableKeyboardA11y:O})]})})};oB.displayName="FlowRenderer";var jge=M.memo(oB);function Vge(e){return dr(M.useCallback(n=>e?DF(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function Gge(e){const t={input:Lh(e.input||VF),default:Lh(e.default||VC),output:Lh(e.output||HF),group:Lh(e.group||uT)},n={},r=Object.keys(e).filter(i=>!["input","default","output","group"].includes(i)).reduce((i,o)=>(i[o]=Lh(e[o]||VC),i),n);return{...t,...r}}const Hge=({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]},qge=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),sB=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,updateNodeDimensions:o,onError:s}=dr(qge,go),a=Vge(e.onlyRenderVisibleElements),l=M.useRef(),u=M.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const c=new ResizeObserver(d=>{const f=d.map(h=>({id:h.target.getAttribute("data-id"),nodeElement:h.target,forceUpdate:!0}));o(f)});return l.current=c,c},[]);return M.useEffect(()=>()=>{var c;(c=l==null?void 0:l.current)==null||c.disconnect()},[]),Z.jsx("div",{className:"react-flow__nodes",style:cT,children:a.map(c=>{var S,w;let d=c.type||"default";e.nodeTypes[d]||(s==null||s("003",al.error003(d)),d="default");const f=e.nodeTypes[d]||e.nodeTypes.default,h=!!(c.draggable||t&&typeof c.draggable>"u"),p=!!(c.selectable||i&&typeof c.selectable>"u"),m=!!(c.connectable||n&&typeof c.connectable>"u"),b=!!(c.focusable||r&&typeof c.focusable>"u"),_=e.nodeExtent?tT(c.positionAbsolute,e.nodeExtent):c.positionAbsolute,v=(_==null?void 0:_.x)??0,g=(_==null?void 0:_.y)??0,y=Hge({x:v,y:g,width:c.width??0,height:c.height??0,origin:e.nodeOrigin});return Z.jsx(f,{id:c.id,className:c.className,style:c.style,type:d,data:c.data,sourcePosition:c.sourcePosition||Ye.Bottom,targetPosition:c.targetPosition||Ye.Top,hidden:c.hidden,xPos:v,yPos:g,xPosOrigin:y.x,yPosOrigin:y.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!c.selected,isDraggable:h,isSelectable:p,isConnectable:m,isFocusable:b,resizeObserver:u,dragHandle:c.dragHandle,zIndex:((S=c[Br])==null?void 0:S.z)??0,isParent:!!((w=c[Br])!=null&&w.isParent),noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!c.width&&!!c.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:c.ariaLabel},c.id)})})};sB.displayName="NodeRenderer";var Wge=M.memo(sB);const Kge=(e,t,n)=>n===Ye.Left?e-t:n===Ye.Right?e+t:e,Xge=(e,t,n)=>n===Ye.Top?e-t:n===Ye.Bottom?e+t:e,s8="react-flow__edgeupdater",a8=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:o,onMouseOut:s,type:a})=>Z.jsx("circle",{onMouseDown:i,onMouseEnter:o,onMouseOut:s,className:ss([s8,`${s8}-${a}`]),cx:Kge(t,r,e),cy:Xge(n,r,e),r,stroke:"transparent",fill:"transparent"}),Qge=()=>!0;var fd=e=>{const t=({id:n,className:r,type:i,data:o,onClick:s,onEdgeDoubleClick:a,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,style:b,source:_,target:v,sourceX:g,sourceY:y,targetX:S,targetY:w,sourcePosition:x,targetPosition:E,elementsSelectable:A,hidden:T,sourceHandleId:k,targetHandleId:L,onContextMenu:N,onMouseEnter:C,onMouseMove:P,onMouseLeave:D,edgeUpdaterRadius:B,onEdgeUpdate:R,onEdgeUpdateStart:O,onEdgeUpdateEnd:I,markerEnd:F,markerStart:U,rfId:V,ariaLabel:H,isFocusable:Y,isUpdatable:Q,pathOptions:j,interactionWidth:K})=>{const ee=M.useRef(null),[ie,ge]=M.useState(!1),[ae,dt]=M.useState(!1),et=ri(),Ne=M.useMemo(()=>`url(#${jC(U,V)})`,[U,V]),lt=M.useMemo(()=>`url(#${jC(F,V)})`,[F,V]);if(T)return null;const Te=kn=>{const{edges:un,addSelectedEdges:wi}=et.getState();if(A&&(et.setState({nodesSelectionActive:!1}),wi([n])),s){const ii=un.find(zi=>zi.id===n);s(kn,ii)}},Gt=Nh(n,et.getState,a),_r=Nh(n,et.getState,N),Tn=Nh(n,et.getState,C),vn=Nh(n,et.getState,P),Ht=Nh(n,et.getState,D),An=(kn,un)=>{if(kn.button!==0)return;const{edges:wi,isValidConnection:ii}=et.getState(),zi=un?v:_,fs=(un?L:k)||null,Sr=un?"target":"source",to=ii||Qge,Ca=un,vo=wi.find(qt=>qt.id===n);dt(!0),O==null||O(kn,vo,Sr);const Ea=qt=>{dt(!1),I==null||I(qt,vo,Sr)};BF({event:kn,handleId:fs,nodeId:zi,onConnect:qt=>R==null?void 0:R(vo,qt),isTarget:Ca,getState:et.getState,setState:et.setState,isValidConnection:to,edgeUpdaterType:Sr,onEdgeUpdateEnd:Ea})},br=kn=>An(kn,!0),eo=kn=>An(kn,!1),jr=()=>ge(!0),or=()=>ge(!1),Rr=!A&&!s,Vr=kn=>{var un;if(TF.includes(kn.key)&&A){const{unselectNodesAndEdges:wi,addSelectedEdges:ii,edges:zi}=et.getState();kn.key==="Escape"?((un=ee.current)==null||un.blur(),wi({edges:[zi.find(Sr=>Sr.id===n)]})):ii([n])}};return Z.jsxs("g",{className:ss(["react-flow__edge",`react-flow__edge-${i}`,r,{selected:l,animated:u,inactive:Rr,updating:ie}]),onClick:Te,onDoubleClick:Gt,onContextMenu:_r,onMouseEnter:Tn,onMouseMove:vn,onMouseLeave:Ht,onKeyDown:Y?Vr:void 0,tabIndex:Y?0:void 0,role:Y?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":H===null?void 0:H||`Edge from ${_} to ${v}`,"aria-describedby":Y?`${KF}-${V}`:void 0,ref:ee,children:[!ae&&Z.jsx(e,{id:n,source:_,target:v,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,data:o,style:b,sourceX:g,sourceY:y,targetX:S,targetY:w,sourcePosition:x,targetPosition:E,sourceHandleId:k,targetHandleId:L,markerStart:Ne,markerEnd:lt,pathOptions:j,interactionWidth:K}),Q&&Z.jsxs(Z.Fragment,{children:[(Q==="source"||Q===!0)&&Z.jsx(a8,{position:x,centerX:g,centerY:y,radius:B,onMouseDown:br,onMouseEnter:jr,onMouseOut:or,type:"source"}),(Q==="target"||Q===!0)&&Z.jsx(a8,{position:E,centerX:S,centerY:w,radius:B,onMouseDown:eo,onMouseEnter:jr,onMouseOut:or,type:"target"})]})]})};return t.displayName="EdgeWrapper",M.memo(t)};function Yge(e){const t={default:fd(e.default||p1),straight:fd(e.bezier||iT),step:fd(e.step||rT),smoothstep:fd(e.step||Pb),simplebezier:fd(e.simplebezier||nT)},n={},r=Object.keys(e).filter(i=>!["default","bezier"].includes(i)).reduce((i,o)=>(i[o]=fd(e[o]||p1),i),n);return{...t,...r}}function l8(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 Ye.Top:return{x:r+o/2,y:i};case Ye.Right:return{x:r+o,y:i+s/2};case Ye.Bottom:return{x:r+o/2,y:i+s};case Ye.Left:return{x:r,y:i+s/2}}}function u8(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Zge=(e,t,n,r,i,o)=>{const s=l8(n,e,t),a=l8(o,r,i);return{sourceX:s.x,sourceY:s.y,targetX:a.x,targetY:a.y}};function Jge({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=Ng({x:(0-l[0])/l[2],y:(0-l[1])/l[2],width:s/l[2],height:a/l[2]}),d=Math.max(0,Math.min(c.x2,u.x2)-Math.max(c.x,u.x)),f=Math.max(0,Math.min(c.y2,u.y2)-Math.max(c.y,u.y));return Math.ceil(d*f)>0}function c8(e){var r,i,o,s,a;const t=((r=e==null?void 0:e[Br])==null?void 0:r.handleBounds)||null,n=t&&(e==null?void 0:e.width)&&(e==null?void 0:e.height)&&typeof((i=e==null?void 0:e.positionAbsolute)==null?void 0:i.x)<"u"&&typeof((o=e==null?void 0:e.positionAbsolute)==null?void 0:o.y)<"u";return[{x:((s=e==null?void 0:e.positionAbsolute)==null?void 0:s.x)||0,y:((a=e==null?void 0:e.positionAbsolute)==null?void 0:a.y)||0,width:(e==null?void 0:e.width)||0,height:(e==null?void 0:e.height)||0},t,!!n]}const eme=[{level:0,isMaxLevel:!0,edges:[]}];function tme(e,t,n=!1){let r=-1;const i=e.reduce((s,a)=>{var c,d;const l=Yo(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[Br])==null?void 0:c.z)||0,((d=f==null?void 0:f[Br])==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?eme:o}function nme(e,t,n){const r=dr(M.useCallback(i=>e?i.edges.filter(o=>{const s=t.get(o.source),a=t.get(o.target);return(s==null?void 0:s.width)&&(s==null?void 0:s.height)&&(a==null?void 0:a.width)&&(a==null?void 0:a.height)&&Jge({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 tme(r,t,n)}const rme=({color:e="none",strokeWidth:t=1})=>Z.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:"none",points:"-5,-4 0,0 -5,4"}),ime=({color:e="none",strokeWidth:t=1})=>Z.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:e,points:"-5,-4 0,0 -5,4 -5,-4"}),d8={[h1.Arrow]:rme,[h1.ArrowClosed]:ime};function ome(e){const t=ri();return M.useMemo(()=>{var i,o;return Object.prototype.hasOwnProperty.call(d8,e)?d8[e]:((o=(i=t.getState()).onError)==null||o.call(i,"009",al.error009(e)),null)},[e])}const sme=({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=ome(t);return l?Z.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:"-10 -10 20 20",markerUnits:o,orient:a,refX:"0",refY:"0",children:Z.jsx(l,{color:n,strokeWidth:s})}):null},ame=({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=jC(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))},aB=({defaultColor:e,rfId:t})=>{const n=dr(M.useCallback(ame({defaultColor:e,rfId:t}),[e,t]),(r,i)=>!(r.length!==i.length||r.some((o,s)=>o.id!==i[s].id)));return Z.jsx("defs",{children:n.map(r=>Z.jsx(sme,{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))})};aB.displayName="MarkerDefinitions";var lme=M.memo(aB);const ume=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}),lB=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:r,edgeTypes:i,noPanClassName:o,onEdgeUpdate:s,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:u,onEdgeMouseLeave:c,onEdgeClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,children:b})=>{const{edgesFocusable:_,edgesUpdatable:v,elementsSelectable:g,width:y,height:S,connectionMode:w,nodeInternals:x,onError:E}=dr(ume,go),A=nme(t,x,n);return y?Z.jsxs(Z.Fragment,{children:[A.map(({level:T,edges:k,isMaxLevel:L})=>Z.jsxs("svg",{style:{zIndex:T},width:y,height:S,className:"react-flow__edges react-flow__container",children:[L&&Z.jsx(lme,{defaultColor:e,rfId:r}),Z.jsx("g",{children:k.map(N=>{const[C,P,D]=c8(x.get(N.source)),[B,R,O]=c8(x.get(N.target));if(!D||!O)return null;let I=N.type||"default";i[I]||(E==null||E("011",al.error011(I)),I="default");const F=i[I]||i.default,U=w===Oc.Strict?R.target:(R.target??[]).concat(R.source??[]),V=u8(P.source,N.sourceHandle),H=u8(U,N.targetHandle),Y=(V==null?void 0:V.position)||Ye.Bottom,Q=(H==null?void 0:H.position)||Ye.Top,j=!!(N.focusable||_&&typeof N.focusable>"u"),K=typeof s<"u"&&(N.updatable||v&&typeof N.updatable>"u");if(!V||!H)return E==null||E("008",al.error008(V,N)),null;const{sourceX:ee,sourceY:ie,targetX:ge,targetY:ae}=Zge(C,V,Y,B,H,Q);return Z.jsx(F,{id:N.id,className:ss([N.className,o]),type:I,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:ee,sourceY:ie,targetX:ge,targetY:ae,sourcePosition:Y,targetPosition:Q,elementsSelectable:g,onEdgeUpdate:s,onContextMenu:a,onMouseEnter:l,onMouseMove:u,onMouseLeave:c,onClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,rfId:r,ariaLabel:N.ariaLabel,isFocusable:j,isUpdatable:K,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth},N.id)})})]},T)),b]}):null};lB.displayName="EdgeRenderer";var cme=M.memo(lB);const dme=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function fme({children:e}){const t=dr(dme);return Z.jsx("div",{className:"react-flow__viewport react-flow__container",style:{transform:t},children:e})}function hme(e){const t=ZF(),n=M.useRef(!1);M.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const pme={[Ye.Left]:Ye.Right,[Ye.Right]:Ye.Left,[Ye.Top]:Ye.Bottom,[Ye.Bottom]:Ye.Top},uB=({nodeId:e,handleType:t,style:n,type:r=Ll.Bezier,CustomComponent:i,connectionStatus:o})=>{var w,x,E;const{fromNode:s,handleId:a,toX:l,toY:u,connectionMode:c}=dr(M.useCallback(A=>({fromNode:A.nodeInternals.get(e),handleId:A.connectionHandleId,toX:(A.connectionPosition.x-A.transform[0])/A.transform[2],toY:(A.connectionPosition.y-A.transform[1])/A.transform[2],connectionMode:A.connectionMode}),[e]),go),d=(w=s==null?void 0:s[Br])==null?void 0:w.handleBounds;let f=d==null?void 0:d[t];if(c===Oc.Loose&&(f=f||(d==null?void 0:d[t==="source"?"target":"source"])),!s||!f)return null;const h=a?f.find(A=>A.id===a):f[0],p=h?h.x+h.width/2:(s.width??0)/2,m=h?h.y+h.height/2:s.height??0,b=(((x=s.positionAbsolute)==null?void 0:x.x)??0)+p,_=(((E=s.positionAbsolute)==null?void 0:E.y)??0)+m,v=h==null?void 0:h.position,g=v?pme[v]:null;if(!v||!g)return null;if(i)return Z.jsx(i,{connectionLineType:r,connectionLineStyle:n,fromNode:s,fromHandle:h,fromX:b,fromY:_,toX:l,toY:u,fromPosition:v,toPosition:g,connectionStatus:o});let y="";const S={sourceX:b,sourceY:_,sourcePosition:v,targetX:l,targetY:u,targetPosition:g};return r===Ll.Bezier?[y]=OF(S):r===Ll.Step?[y]=UC({...S,borderRadius:0}):r===Ll.SmoothStep?[y]=UC(S):r===Ll.SimpleBezier?[y]=RF(S):y=`M${b},${_} ${l},${u}`,Z.jsx("path",{d:y,fill:"none",className:"react-flow__connection-path",style:n})};uB.displayName="ConnectionLine";const gme=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function mme({containerStyle:e,style:t,type:n,component:r}){const{nodeId:i,handleType:o,nodesConnectable:s,width:a,height:l,connectionStatus:u}=dr(gme,go);return!(i&&o&&a&&s)?null:Z.jsx("svg",{style:e,width:a,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container",children:Z.jsx("g",{className:ss(["react-flow__connection",u]),children:Z.jsx(uB,{nodeId:i,handleType:o,style:t,type:n,CustomComponent:r,connectionStatus:u})})})}function f8(e,t){return M.useRef(null),ri(),M.useMemo(()=>t(e),[e])}const cB=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:r,onMoveEnd:i,onInit:o,onNodeClick:s,onEdgeClick:a,onNodeDoubleClick:l,onEdgeDoubleClick:u,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,onSelectionContextMenu:p,onSelectionStart:m,onSelectionEnd:b,connectionLineType:_,connectionLineStyle:v,connectionLineComponent:g,connectionLineContainerStyle:y,selectionKeyCode:S,selectionOnDrag:w,selectionMode:x,multiSelectionKeyCode:E,panActivationKeyCode:A,zoomActivationKeyCode:T,deleteKeyCode:k,onlyRenderVisibleElements:L,elementsSelectable:N,selectNodesOnDrag:C,defaultViewport:P,translateExtent:D,minZoom:B,maxZoom:R,preventScrolling:O,defaultMarkerColor:I,zoomOnScroll:F,zoomOnPinch:U,panOnScroll:V,panOnScrollSpeed:H,panOnScrollMode:Y,zoomOnDoubleClick:Q,panOnDrag:j,onPaneClick:K,onPaneMouseEnter:ee,onPaneMouseMove:ie,onPaneMouseLeave:ge,onPaneScroll:ae,onPaneContextMenu:dt,onEdgeUpdate:et,onEdgeContextMenu:Ne,onEdgeMouseEnter:lt,onEdgeMouseMove:Te,onEdgeMouseLeave:Gt,edgeUpdaterRadius:_r,onEdgeUpdateStart:Tn,onEdgeUpdateEnd:vn,noDragClassName:Ht,noWheelClassName:An,noPanClassName:br,elevateEdgesOnSelect:eo,disableKeyboardA11y:jr,nodeOrigin:or,nodeExtent:Rr,rfId:Vr})=>{const kn=f8(e,Gge),un=f8(t,Yge);return hme(o),Z.jsx(jge,{onPaneClick:K,onPaneMouseEnter:ee,onPaneMouseMove:ie,onPaneMouseLeave:ge,onPaneContextMenu:dt,onPaneScroll:ae,deleteKeyCode:k,selectionKeyCode:S,selectionOnDrag:w,selectionMode:x,onSelectionStart:m,onSelectionEnd:b,multiSelectionKeyCode:E,panActivationKeyCode:A,zoomActivationKeyCode:T,elementsSelectable:N,onMove:n,onMoveStart:r,onMoveEnd:i,zoomOnScroll:F,zoomOnPinch:U,zoomOnDoubleClick:Q,panOnScroll:V,panOnScrollSpeed:H,panOnScrollMode:Y,panOnDrag:j,defaultViewport:P,translateExtent:D,minZoom:B,maxZoom:R,onSelectionContextMenu:p,preventScrolling:O,noDragClassName:Ht,noWheelClassName:An,noPanClassName:br,disableKeyboardA11y:jr,children:Z.jsxs(fme,{children:[Z.jsx(cme,{edgeTypes:un,onEdgeClick:a,onEdgeDoubleClick:u,onEdgeUpdate:et,onlyRenderVisibleElements:L,onEdgeContextMenu:Ne,onEdgeMouseEnter:lt,onEdgeMouseMove:Te,onEdgeMouseLeave:Gt,onEdgeUpdateStart:Tn,onEdgeUpdateEnd:vn,edgeUpdaterRadius:_r,defaultMarkerColor:I,noPanClassName:br,elevateEdgesOnSelect:!!eo,disableKeyboardA11y:jr,rfId:Vr,children:Z.jsx(mme,{style:v,type:_,component:g,containerStyle:y})}),Z.jsx("div",{className:"react-flow__edgelabel-renderer"}),Z.jsx(Wge,{nodeTypes:kn,onNodeClick:s,onNodeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,selectNodesOnDrag:C,onlyRenderVisibleElements:L,noPanClassName:br,noDragClassName:Ht,disableKeyboardA11y:jr,nodeOrigin:or,nodeExtent:Rr,rfId:Vr})]})})};cB.displayName="GraphView";var yme=M.memo(cB);const HC=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],wl={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:HC,nodeExtent:HC,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:Oc.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:Gpe,isValidConnection:void 0},vme=()=>ide((e,t)=>({...wl,setNodes:n=>{const{nodeInternals:r,nodeOrigin:i,elevateNodesOnSelect:o}=t();e({nodeInternals:uw(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?uw(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:s,edges:o?r:[],hasDefaultNodes:i,hasDefaultEdges:o})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:i,fitViewOnInit:o,fitViewOnInitDone:s,fitViewOnInitOptions:a,domNode:l,nodeOrigin:u}=t(),c=l==null?void 0:l.querySelector(".react-flow__viewport");if(!c)return;const d=window.getComputedStyle(c),{m22:f}=new window.DOMMatrixReadOnly(d.transform),h=n.reduce((m,b)=>{const _=i.get(b.id);if(_){const v=eT(b.nodeElement);!!(v.width&&v.height&&(_.width!==v.width||_.height!==v.height||b.forceUpdate))&&(i.set(_.id,{..._,[Br]:{..._[Br],handleBounds:{source:o8(".source",b.nodeElement,f,u),target:o8(".target",b.nodeElement,f,u)}},...v}),m.push({id:_.id,type:"dimensions",dimensions:v}))}return m},[]);QF(i,u);const p=s||o&&!s&&YF(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=Ku(n,a()),c=uw(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=>Pl(l,!0)):(s=zd(o(),n),a=zd(i,[])),jy({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=>Pl(l,!0)):(s=zd(i,n),a=zd(o(),[])),jy({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,Pl(c.id,!1))),u=a.map(c=>Pl(c.id,!1));jy({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=>Pl(a.id,!1)),s=n.filter(a=>a.selected).map(a=>Pl(a.id,!1));jy({changedNodes:o,changedEdges:s,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(i=>{i.positionAbsolute=tT(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=nu.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:wl.connectionNodeId,connectionHandleId:wl.connectionHandleId,connectionHandleType:wl.connectionHandleType,connectionStatus:wl.connectionStatus,connectionStartHandle:wl.connectionStartHandle,connectionEndHandle:wl.connectionEndHandle}),reset:()=>e({...wl})}),Object.is),dB=({children:e})=>{const t=M.useRef(null);return t.current||(t.current=vme()),Z.jsx($pe,{value:t.current,children:e})};dB.displayName="ReactFlowProvider";const fB=({children:e})=>M.useContext(kb)?Z.jsx(Z.Fragment,{children:e}):Z.jsx(dB,{children:e});fB.displayName="ReactFlowWrapper";const _me={input:VF,default:VC,output:HF,group:uT},bme={default:p1,straight:iT,step:rT,smoothstep:Pb,simplebezier:nT},Sme=[0,0],wme=[15,15],xme={x:0,y:0,zoom:1},Cme={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},Eme=M.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:o=_me,edgeTypes:s=bme,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,onNodeMouseEnter:v,onNodeMouseMove:g,onNodeMouseLeave:y,onNodeContextMenu:S,onNodeDoubleClick:w,onNodeDragStart:x,onNodeDrag:E,onNodeDragStop:A,onNodesDelete:T,onEdgesDelete:k,onSelectionChange:L,onSelectionDragStart:N,onSelectionDrag:C,onSelectionDragStop:P,onSelectionContextMenu:D,onSelectionStart:B,onSelectionEnd:R,connectionMode:O=Oc.Strict,connectionLineType:I=Ll.Bezier,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,deleteKeyCode:H="Backspace",selectionKeyCode:Y="Shift",selectionOnDrag:Q=!1,selectionMode:j=mu.Full,panActivationKeyCode:K="Space",multiSelectionKeyCode:ee=f1()?"Meta":"Control",zoomActivationKeyCode:ie=f1()?"Meta":"Control",snapToGrid:ge=!1,snapGrid:ae=wme,onlyRenderVisibleElements:dt=!1,selectNodesOnDrag:et=!0,nodesDraggable:Ne,nodesConnectable:lt,nodesFocusable:Te,nodeOrigin:Gt=Sme,edgesFocusable:_r,edgesUpdatable:Tn,elementsSelectable:vn,defaultViewport:Ht=xme,minZoom:An=.5,maxZoom:br=2,translateExtent:eo=HC,preventScrolling:jr=!0,nodeExtent:or,defaultMarkerColor:Rr="#b1b1b7",zoomOnScroll:Vr=!0,zoomOnPinch:kn=!0,panOnScroll:un=!1,panOnScrollSpeed:wi=.5,panOnScrollMode:ii=ac.Free,zoomOnDoubleClick:zi=!0,panOnDrag:fs=!0,onPaneClick:Sr,onPaneMouseEnter:to,onPaneMouseMove:Ca,onPaneMouseLeave:vo,onPaneScroll:Ea,onPaneContextMenu:Pn,children:qt,onEdgeUpdate:Or,onEdgeContextMenu:wr,onEdgeDoubleClick:xr,onEdgeMouseEnter:Gr,onEdgeMouseMove:xi,onEdgeMouseLeave:no,onEdgeUpdateStart:oi,onEdgeUpdateEnd:Ir,edgeUpdaterRadius:hs=10,onNodesChange:zs,onEdgesChange:si,noDragClassName:ml="nodrag",noWheelClassName:Fo="nowheel",noPanClassName:Hr="nopan",fitView:Ta=!1,fitViewOptions:W,connectOnClick:J=!0,attributionPosition:te,proOptions:le,defaultEdgeOptions:re,elevateNodesOnSelect:De=!0,elevateEdgesOnSelect:ze=!1,disableKeyboardA11y:rt=!1,autoPanOnConnect:Oe=!0,autoPanOnNodeDrag:Ue=!0,connectionRadius:Ae=20,isValidConnection:ne,onError:ye,style:We,id:Ke,...it},ot)=>{const ft=Ke||"1";return Z.jsx("div",{...it,style:{...We,...Cme},ref:ot,className:ss(["react-flow",i]),"data-testid":"rf__wrapper",id:Ke,children:Z.jsxs(fB,{children:[Z.jsx(yme,{onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:v,onNodeMouseMove:g,onNodeMouseLeave:y,onNodeContextMenu:S,onNodeDoubleClick:w,nodeTypes:o,edgeTypes:s,connectionLineType:I,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,selectionKeyCode:Y,selectionOnDrag:Q,selectionMode:j,deleteKeyCode:H,multiSelectionKeyCode:ee,panActivationKeyCode:K,zoomActivationKeyCode:ie,onlyRenderVisibleElements:dt,selectNodesOnDrag:et,defaultViewport:Ht,translateExtent:eo,minZoom:An,maxZoom:br,preventScrolling:jr,zoomOnScroll:Vr,zoomOnPinch:kn,zoomOnDoubleClick:zi,panOnScroll:un,panOnScrollSpeed:wi,panOnScrollMode:ii,panOnDrag:fs,onPaneClick:Sr,onPaneMouseEnter:to,onPaneMouseMove:Ca,onPaneMouseLeave:vo,onPaneScroll:Ea,onPaneContextMenu:Pn,onSelectionContextMenu:D,onSelectionStart:B,onSelectionEnd:R,onEdgeUpdate:Or,onEdgeContextMenu:wr,onEdgeDoubleClick:xr,onEdgeMouseEnter:Gr,onEdgeMouseMove:xi,onEdgeMouseLeave:no,onEdgeUpdateStart:oi,onEdgeUpdateEnd:Ir,edgeUpdaterRadius:hs,defaultMarkerColor:Rr,noDragClassName:ml,noWheelClassName:Fo,noPanClassName:Hr,elevateEdgesOnSelect:ze,rfId:ft,disableKeyboardA11y:rt,nodeOrigin:Gt,nodeExtent:or}),Z.jsx(gge,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,nodesDraggable:Ne,nodesConnectable:lt,nodesFocusable:Te,edgesFocusable:_r,edgesUpdatable:Tn,elementsSelectable:vn,elevateNodesOnSelect:De,minZoom:An,maxZoom:br,nodeExtent:or,onNodesChange:zs,onEdgesChange:si,snapToGrid:ge,snapGrid:ae,connectionMode:O,translateExtent:eo,connectOnClick:J,defaultEdgeOptions:re,fitView:Ta,fitViewOptions:W,onNodesDelete:T,onEdgesDelete:k,onNodeDragStart:x,onNodeDrag:E,onNodeDragStop:A,onSelectionDrag:C,onSelectionDragStart:N,onSelectionDragStop:P,noPanClassName:Hr,nodeOrigin:Gt,rfId:ft,autoPanOnConnect:Oe,autoPanOnNodeDrag:Ue,onError:ye,connectionRadius:Ae,isValidConnection:ne}),Z.jsx(hge,{onSelectionChange:L}),qt,Z.jsx(zpe,{proOptions:le,position:te}),Z.jsx(bge,{rfId:ft,disableKeyboardA11y:rt})]})})});Eme.displayName="ReactFlow";const Tme=e=>{var t;return(t=e.domNode)==null?void 0:t.querySelector(".react-flow__edgelabel-renderer")};function bOe({children:e}){const t=dr(Tme);return t?ws.createPortal(e,t):null}function SOe(){const e=ri();return M.useCallback(t=>{const{domNode:n,updateNodeDimensions:r}=e.getState(),o=(Array.isArray(t)?t:[t]).reduce((s,a)=>{const l=n==null?void 0:n.querySelector(`.react-flow__node[data-id="${a}"]`);return l&&s.push({id:a,nodeElement:l,forceUpdate:!0}),s},[]);requestAnimationFrame(()=>r(o))},[])}function Ame(){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 Lg=cu("nodes/receivedOpenAPISchema",async(e,{rejectWithValue:t})=>{try{const r=await(await fetch("openapi.json")).json();return JSON.parse(JSON.stringify(r,Ame()))}catch(n){return t({error:n})}});let Gy;const kme=new Uint8Array(16);function Pme(){if(!Gy&&(Gy=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Gy))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Gy(kme)}const di=[];for(let e=0;e<256;++e)di.push((e+256).toString(16).slice(1));function Rme(e,t=0){return(di[e[t+0]]+di[e[t+1]]+di[e[t+2]]+di[e[t+3]]+"-"+di[e[t+4]]+di[e[t+5]]+"-"+di[e[t+6]]+di[e[t+7]]+"-"+di[e[t+8]]+di[e[t+9]]+"-"+di[e[t+10]]+di[e[t+11]]+di[e[t+12]]+di[e[t+13]]+di[e[t+14]]+di[e[t+15]]).toLowerCase()}const Ome=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),h8={randomUUID:Ome};function hB(e,t,n){if(h8.randomUUID&&!t&&!e)return h8.randomUUID();e=e||{};const r=e.random||(e.rng||Pme)();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 Rme(r)}const wOe=500,xOe=320,Ime="node-drag-handle",Mme=["ImageField","ImageCollection"],COe=Mme,EOe={input:"inputs",output:"outputs"},TOe=["Collection","IntegerCollection","BooleanCollection","FloatCollection","StringCollection","ImageCollection","LatentsCollection","ConditioningCollection","ControlCollection","ColorCollection"],Nme=["IntegerPolymorphic","BooleanPolymorphic","FloatPolymorphic","StringPolymorphic","ImagePolymorphic","LatentsPolymorphic","ConditioningPolymorphic","ControlPolymorphic","ColorPolymorphic"],AOe=["ControlNetModelField","LoRAModelField","MainModelField","ONNXModelField","SDXLMainModelField","SDXLRefinerModelField","VaeModelField","UNetField","VaeField","ClipField"],pB={integer:"IntegerCollection",boolean:"BooleanCollection",number:"FloatCollection",float:"FloatCollection",string:"StringCollection",ImageField:"ImageCollection",LatentsField:"LatentsCollection",ConditioningField:"ConditioningCollection",ControlField:"ControlCollection",ColorField:"ColorCollection"},Dme=e=>!!(e&&e in pB),gB={integer:"IntegerPolymorphic",boolean:"BooleanPolymorphic",number:"FloatPolymorphic",float:"FloatPolymorphic",string:"StringPolymorphic",ImageField:"ImagePolymorphic",LatentsField:"LatentsPolymorphic",ConditioningField:"ConditioningPolymorphic",ControlField:"ControlPolymorphic",ColorField:"ColorPolymorphic"},kOe={IntegerPolymorphic:"integer",BooleanPolymorphic:"boolean",FloatPolymorphic:"float",StringPolymorphic:"string",ImagePolymorphic:"ImageField",LatentsPolymorphic:"LatentsField",ConditioningPolymorphic:"ConditioningField",ControlPolymorphic:"ControlField",ColorPolymorphic:"ColorField"},Lme=e=>!!(e&&e in gB),POe={boolean:{color:"green.500",description:"Booleans are true or false.",title:"Boolean"},BooleanCollection:{color:"green.500",description:"A collection of booleans.",title:"Boolean Collection"},BooleanPolymorphic:{color:"green.500",description:"A collection of booleans.",title:"Boolean Polymorphic"},ClipField:{color:"green.500",description:"Tokenizer and text_encoder submodels.",title:"Clip"},Collection:{color:"base.500",description:"TODO",title:"Collection"},CollectionItem:{color:"base.500",description:"TODO",title:"Collection Item"},ColorCollection:{color:"pink.300",description:"A collection of colors.",title:"Color Collection"},ColorField:{color:"pink.300",description:"A RGBA color.",title:"Color"},ColorPolymorphic:{color:"pink.300",description:"A collection of colors.",title:"Color Polymorphic"},ConditioningCollection:{color:"cyan.500",description:"Conditioning may be passed between nodes.",title:"Conditioning Collection"},ConditioningField:{color:"cyan.500",description:"Conditioning may be passed between nodes.",title:"Conditioning"},ConditioningPolymorphic:{color:"cyan.500",description:"Conditioning may be passed between nodes.",title:"Conditioning Polymorphic"},ControlCollection:{color:"teal.500",description:"Control info passed between nodes.",title:"Control Collection"},ControlField:{color:"teal.500",description:"Control info passed between nodes.",title:"Control"},ControlNetModelField:{color:"teal.500",description:"TODO",title:"ControlNet"},ControlPolymorphic:{color:"teal.500",description:"Control info passed between nodes.",title:"Control Polymorphic"},DenoiseMaskField:{color:"blue.300",description:"Denoise Mask may be passed between nodes",title:"Denoise Mask"},enum:{color:"blue.500",description:"Enums are values that may be one of a number of options.",title:"Enum"},float:{color:"orange.500",description:"Floats are numbers with a decimal point.",title:"Float"},FloatCollection:{color:"orange.500",description:"A collection of floats.",title:"Float Collection"},FloatPolymorphic:{color:"orange.500",description:"A collection of floats.",title:"Float Polymorphic"},ImageCollection:{color:"purple.500",description:"A collection of images.",title:"Image Collection"},ImageField:{color:"purple.500",description:"Images may be passed between nodes.",title:"Image"},ImagePolymorphic:{color:"purple.500",description:"A collection of images.",title:"Image Polymorphic"},integer:{color:"red.500",description:"Integers are whole numbers, without a decimal point.",title:"Integer"},IntegerCollection:{color:"red.500",description:"A collection of integers.",title:"Integer Collection"},IntegerPolymorphic:{color:"red.500",description:"A collection of integers.",title:"Integer Polymorphic"},LatentsCollection:{color:"pink.500",description:"Latents may be passed between nodes.",title:"Latents Collection"},LatentsField:{color:"pink.500",description:"Latents may be passed between nodes.",title:"Latents"},LatentsPolymorphic:{color:"pink.500",description:"Latents may be passed between nodes.",title:"Latents Polymorphic"},LoRAModelField:{color:"teal.500",description:"TODO",title:"LoRA"},MainModelField:{color:"teal.500",description:"TODO",title:"Model"},ONNXModelField:{color:"teal.500",description:"ONNX model field.",title:"ONNX Model"},Scheduler:{color:"base.500",description:"TODO",title:"Scheduler"},SDXLMainModelField:{color:"teal.500",description:"SDXL model field.",title:"SDXL Model"},SDXLRefinerModelField:{color:"teal.500",description:"TODO",title:"Refiner Model"},string:{color:"yellow.500",description:"Strings are text.",title:"String"},StringCollection:{color:"yellow.500",description:"A collection of strings.",title:"String Collection"},StringPolymorphic:{color:"yellow.500",description:"A collection of strings.",title:"String Polymorphic"},UNetField:{color:"red.500",description:"UNet submodel.",title:"UNet"},VaeField:{color:"blue.500",description:"Vae submodel.",title:"Vae"},VaeModelField:{color:"teal.500",description:"TODO",title:"VAE"}},p8=(e,t,n)=>{let r=t,i=n;for(;e.find(o=>o.position.x===r&&o.position.y===i);)r=r+50,i=i+50;return{x:r,y:i}},$me="1.0.0",hw={status:La.PENDING,error:null,progress:null,progressImage:null,outputs:[]},qC={meta:{version:$me},name:"",author:"",description:"",notes:"",tags:"",contact:"",version:"",exposedFields:[]},mB={nodes:[],edges:[],nodeTemplates:{},isReady:!1,connectionStartParams:null,currentConnectionFieldType:null,shouldShowFieldTypeLegend:!1,shouldShowMinimapPanel:!0,shouldValidateGraph:!0,shouldAnimateEdges:!0,shouldSnapToGrid:!1,shouldColorEdges:!0,isAddNodePopoverOpen:!1,nodeOpacity:1,selectedNodes:[],selectedEdges:[],workflow:qC,nodeExecutionStates:{},viewport:{x:0,y:0,zoom:1},mouseOverField:null,mouseOverNode:null,nodesToCopy:[],edgesToCopy:[],selectionMode:mu.Partial},zo=(e,t)=>{var l,u;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(c=>c.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!qr(s))return;const a=(u=s.data)==null?void 0:u.inputs[r];a&&o>-1&&(a.value=i)},yB=er({name:"nodes",initialState:mB,reducers:{nodesChanged:(e,t)=>{e.nodes=Ku(t.payload,e.nodes)},nodeAdded:(e,t)=>{const n=t.payload,r=p8(e.nodes,n.position.x,n.position.y);n.position=r,n.selected=!0,e.nodes=Ku(e.nodes.map(i=>({id:i.id,type:"select",selected:!1})),e.nodes),e.edges=Bu(e.edges.map(i=>({id:i.id,type:"select",selected:!1})),e.edges),e.nodes.push(n),qr(n)&&(e.nodeExecutionStates[n.id]={nodeId:n.id,...hw})},edgesChanged:(e,t)=>{e.edges=Bu(t.payload,e.edges)},connectionStarted:(e,t)=>{var l;e.connectionStartParams=t.payload;const{nodeId:n,handleId:r,handleType:i}=t.payload;if(!n||!r)return;const o=e.nodes.findIndex(u=>u.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!qr(s))return;const a=i==="source"?s.data.outputs[r]:s.data.inputs[r];e.currentConnectionFieldType=(a==null?void 0:a.type)??null},connectionMade:(e,t)=>{e.currentConnectionFieldType&&(e.edges=MF({...t.payload,type:"default"},e.edges))},connectionEnded:e=>{e.connectionStartParams=null,e.currentConnectionFieldType=null},workflowExposedFieldAdded:(e,t)=>{e.workflow.exposedFields=zk(e.workflow.exposedFields.concat(t.payload),n=>`${n.nodeId}-${n.fieldName}`)},workflowExposedFieldRemoved:(e,t)=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(n=>!_m(n,t.payload))},fieldLabelChanged:(e,t)=>{const{nodeId:n,fieldName:r,label:i}=t.payload,o=e.nodes.find(a=>a.id===n);if(!qr(o))return;const s=o.data.inputs[r];s&&(s.label=i)},nodeEmbedWorkflowChanged:(e,t)=>{var s;const{nodeId:n,embedWorkflow:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];qr(o)&&(o.data.embedWorkflow=r)},nodeIsIntermediateChanged:(e,t)=>{var s;const{nodeId:n,isIntermediate:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];qr(o)&&(o.data.isIntermediate=r)},nodeIsOpenChanged:(e,t)=>{var a;const{nodeId:n,isOpen:r}=t.payload,i=e.nodes.findIndex(l=>l.id===n),o=(a=e.nodes)==null?void 0:a[i];if(!qr(o)&&!Xk(o)||(o.data.isOpen=r,!qr(o)))return;const s=aT([o],e.edges);if(r)s.forEach(l=>{delete l.hidden}),s.forEach(l=>{l.type==="collapsed"&&(e.edges=e.edges.filter(u=>u.id!==l.id))});else{const l=ege(o,e.nodes,e.edges).filter(d=>qr(d)&&d.data.isOpen===!1),u=Jpe(o,e.nodes,e.edges).filter(d=>qr(d)&&d.data.isOpen===!1),c=[];s.forEach(d=>{var f,h;if(d.target===n&&l.find(p=>p.id===d.source)){d.hidden=!0;const p=c.find(m=>m.source===d.source&&m.target===d.target);p?p.data={count:(((f=p.data)==null?void 0:f.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}if(d.source===n&&u.find(p=>p.id===d.target)){const p=c.find(m=>m.source===d.source&&m.target===d.target);d.hidden=!0,p?p.data={count:(((h=p.data)==null?void 0:h.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}}),c.length&&(e.edges=Bu(c.map(d=>({type:"add",item:d})),e.edges))}},edgesDeleted:(e,t)=>{const r=t.payload.filter(i=>i.type==="collapsed");if(r.length){const i=[];r.forEach(o=>{e.edges.forEach(s=>{s.source===o.source&&s.target===o.target&&i.push({id:s.id,type:"remove"})})}),e.edges=Bu(i,e.edges)}},nodesDeleted:(e,t)=>{t.payload.forEach(n=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(r=>r.nodeId!==n.id),qr(n)&&delete e.nodeExecutionStates[n.id]})},nodeLabelChanged:(e,t)=>{var s;const{nodeId:n,label:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];qr(o)&&(o.data.label=r)},nodeNotesChanged:(e,t)=>{var s;const{nodeId:n,notes:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];qr(o)&&(o.data.notes=r)},nodeExclusivelySelected:(e,t)=>{const n=t.payload;e.nodes=Ku(e.nodes.map(r=>({id:r.id,type:"select",selected:r.id===n})),e.nodes)},selectedNodesChanged:(e,t)=>{e.selectedNodes=t.payload},selectedEdgesChanged:(e,t)=>{e.selectedEdges=t.payload},fieldStringValueChanged:(e,t)=>{zo(e,t)},fieldNumberValueChanged:(e,t)=>{zo(e,t)},fieldBooleanValueChanged:(e,t)=>{zo(e,t)},fieldImageValueChanged:(e,t)=>{zo(e,t)},fieldColorValueChanged:(e,t)=>{zo(e,t)},fieldMainModelValueChanged:(e,t)=>{zo(e,t)},fieldRefinerModelValueChanged:(e,t)=>{zo(e,t)},fieldVaeModelValueChanged:(e,t)=>{zo(e,t)},fieldLoRAModelValueChanged:(e,t)=>{zo(e,t)},fieldControlNetModelValueChanged:(e,t)=>{zo(e,t)},fieldEnumModelValueChanged:(e,t)=>{zo(e,t)},fieldSchedulerValueChanged:(e,t)=>{zo(e,t)},imageCollectionFieldValueChanged:(e,t)=>{var u,c;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(d=>d.id===n);if(o===-1)return;const s=(u=e.nodes)==null?void 0:u[o];if(!qr(s))return;const a=(c=s.data)==null?void 0:c.inputs[r];if(!a)return;const l=Yn(a.value);if(!l){a.value=i;return}a.value=zk(l.concat(i),"image_name")},notesNodeValueChanged:(e,t)=>{var s;const{nodeId:n,value:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Xk(o)&&(o.data.notes=r)},shouldShowFieldTypeLegendChanged:(e,t)=>{e.shouldShowFieldTypeLegend=t.payload},shouldShowMinimapPanelChanged:(e,t)=>{e.shouldShowMinimapPanel=t.payload},nodeTemplatesBuilt:(e,t)=>{e.nodeTemplates=t.payload,e.isReady=!0},nodeEditorReset:e=>{e.nodes=[],e.edges=[],e.workflow=Yn(qC)},shouldValidateGraphChanged:(e,t)=>{e.shouldValidateGraph=t.payload},shouldAnimateEdgesChanged:(e,t)=>{e.shouldAnimateEdges=t.payload},shouldSnapToGridChanged:(e,t)=>{e.shouldSnapToGrid=t.payload},shouldColorEdgesChanged:(e,t)=>{e.shouldColorEdges=t.payload},nodeOpacityChanged:(e,t)=>{e.nodeOpacity=t.payload},workflowNameChanged:(e,t)=>{e.workflow.name=t.payload},workflowDescriptionChanged:(e,t)=>{e.workflow.description=t.payload},workflowTagsChanged:(e,t)=>{e.workflow.tags=t.payload},workflowAuthorChanged:(e,t)=>{e.workflow.author=t.payload},workflowNotesChanged:(e,t)=>{e.workflow.notes=t.payload},workflowVersionChanged:(e,t)=>{e.workflow.version=t.payload},workflowContactChanged:(e,t)=>{e.workflow.contact=t.payload},workflowLoaded:(e,t)=>{const{nodes:n,edges:r,...i}=t.payload;e.workflow=i,e.nodes=Ku(n.map(o=>({item:{...o,dragHandle:`.${Ime}`},type:"add"})),[]),e.edges=Bu(r.map(o=>({item:o,type:"add"})),[]),e.nodeExecutionStates=n.reduce((o,s)=>(o[s.id]={nodeId:s.id,...hw},o),{})},workflowReset:e=>{e.workflow=Yn(qC)},viewportChanged:(e,t)=>{e.viewport=t.payload},mouseOverFieldChanged:(e,t)=>{e.mouseOverField=t.payload},mouseOverNodeChanged:(e,t)=>{e.mouseOverNode=t.payload},selectedAll:e=>{e.nodes=Ku(e.nodes.map(t=>({id:t.id,type:"select",selected:!0})),e.nodes),e.edges=Bu(e.edges.map(t=>({id:t.id,type:"select",selected:!0})),e.edges)},selectionCopied:e=>{e.nodesToCopy=e.nodes.filter(t=>t.selected).map(Yn),e.edgesToCopy=e.edges.filter(t=>t.selected).map(Yn)},selectionPasted:e=>{const t=e.nodesToCopy.map(Yn),n=t.map(l=>l.data.id),r=e.edgesToCopy.filter(l=>n.includes(l.source)&&n.includes(l.target)).map(Yn);r.forEach(l=>l.selected=!0),t.forEach(l=>{const u=hB();r.forEach(d=>{d.source===l.data.id&&(d.source=u,d.id=d.id.replace(l.data.id,u)),d.target===l.data.id&&(d.target=u,d.id=d.id.replace(l.data.id,u))}),l.selected=!0,l.id=u,l.data.id=u;const c=p8(e.nodes,l.position.x,l.position.y);l.position=c});const i=t.map(l=>({item:l,type:"add"})),o=e.nodes.map(l=>({id:l.data.id,type:"select",selected:!1})),s=r.map(l=>({item:l,type:"add"})),a=e.edges.map(l=>({id:l.id,type:"select",selected:!1}));e.nodes=Ku(i.concat(o),e.nodes),e.edges=Bu(s.concat(a),e.edges),t.forEach(l=>{e.nodeExecutionStates[l.id]={nodeId:l.id,...hw}})},addNodePopoverOpened:e=>{e.isAddNodePopoverOpen=!0},addNodePopoverClosed:e=>{e.isAddNodePopoverOpen=!1},addNodePopoverToggled:e=>{e.isAddNodePopoverOpen=!e.isAddNodePopoverOpen},selectionModeChanged:(e,t)=>{e.selectionMode=t.payload?mu.Full:mu.Partial}},extraReducers:e=>{e.addCase(Lg.pending,t=>{t.isReady=!1}),e.addCase(UE,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=La.IN_PROGRESS)}),e.addCase(VE,(t,n)=>{const{source_node_id:r,result:i}=n.payload.data,o=t.nodeExecutionStates[r];o&&(o.status=La.COMPLETED,o.progress!==null&&(o.progress=1),o.outputs.push(i))}),e.addCase(xb,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=La.FAILED,i.error=n.payload.data.error,i.progress=null,i.progressImage=null)}),e.addCase(GE,(t,n)=>{const{source_node_id:r,step:i,total_steps:o,progress_image:s}=n.payload.data,a=t.nodeExecutionStates[r];a&&(a.status=La.IN_PROGRESS,a.progress=(i+1)/o,a.progressImage=s??null)}),e.addCase(nh.fulfilled,t=>{ns(t.nodeExecutionStates,n=>{n.status=La.PENDING,n.error=null,n.progress=null,n.progressImage=null,n.outputs=[]})}),e.addCase(Au.fulfilled,t=>{aee(t.nodeExecutionStates,n=>{n.status===La.IN_PROGRESS&&(n.status=La.PENDING)})})}}),{nodesChanged:ROe,edgesChanged:OOe,nodeAdded:IOe,nodesDeleted:MOe,connectionMade:NOe,connectionStarted:DOe,connectionEnded:LOe,shouldShowFieldTypeLegendChanged:$Oe,shouldShowMinimapPanelChanged:FOe,nodeTemplatesBuilt:vB,nodeEditorReset:Fme,imageCollectionFieldValueChanged:BOe,fieldStringValueChanged:zOe,fieldNumberValueChanged:UOe,fieldBooleanValueChanged:jOe,fieldImageValueChanged:Rb,fieldColorValueChanged:VOe,fieldMainModelValueChanged:GOe,fieldVaeModelValueChanged:HOe,fieldLoRAModelValueChanged:qOe,fieldEnumModelValueChanged:WOe,fieldControlNetModelValueChanged:KOe,fieldRefinerModelValueChanged:XOe,fieldSchedulerValueChanged:QOe,nodeIsOpenChanged:YOe,nodeLabelChanged:ZOe,nodeNotesChanged:JOe,edgesDeleted:eIe,shouldValidateGraphChanged:tIe,shouldAnimateEdgesChanged:nIe,nodeOpacityChanged:rIe,shouldSnapToGridChanged:iIe,shouldColorEdgesChanged:oIe,selectedNodesChanged:sIe,selectedEdgesChanged:aIe,workflowNameChanged:lIe,workflowDescriptionChanged:uIe,workflowTagsChanged:cIe,workflowAuthorChanged:dIe,workflowNotesChanged:fIe,workflowVersionChanged:hIe,workflowContactChanged:pIe,workflowLoaded:Bme,notesNodeValueChanged:gIe,workflowExposedFieldAdded:zme,workflowExposedFieldRemoved:mIe,fieldLabelChanged:yIe,viewportChanged:vIe,mouseOverFieldChanged:_Ie,selectionCopied:bIe,selectionPasted:SIe,selectedAll:wIe,addNodePopoverOpened:xIe,addNodePopoverClosed:CIe,addNodePopoverToggled:EIe,selectionModeChanged:TIe,nodeEmbedWorkflowChanged:AIe,nodeIsIntermediateChanged:kIe,mouseOverNodeChanged:PIe,nodeExclusivelySelected:RIe}=yB.actions,Ume=yB.reducer,_B={esrganModelName:"RealESRGAN_x4plus.pth"},bB=er({name:"postprocessing",initialState:_B,reducers:{esrganModelNameChanged:(e,t)=>{e.esrganModelName=t.payload}}}),{esrganModelNameChanged:OIe}=bB.actions,jme=bB.reducer,Vme={positiveStylePrompt:"",negativeStylePrompt:"",shouldConcatSDXLStylePrompt:!0,shouldUseSDXLRefiner:!1,sdxlImg2ImgDenoisingStrength:.7,refinerModel:null,refinerSteps:20,refinerCFGScale:7.5,refinerScheduler:"euler",refinerPositiveAestheticScore:6,refinerNegativeAestheticScore:2.5,refinerStart:.8},SB=er({name:"sdxl",initialState:Vme,reducers:{setPositiveStylePromptSDXL:(e,t)=>{e.positiveStylePrompt=t.payload},setNegativeStylePromptSDXL:(e,t)=>{e.negativeStylePrompt=t.payload},setShouldConcatSDXLStylePrompt:(e,t)=>{e.shouldConcatSDXLStylePrompt=t.payload},setShouldUseSDXLRefiner:(e,t)=>{e.shouldUseSDXLRefiner=t.payload},setSDXLImg2ImgDenoisingStrength:(e,t)=>{e.sdxlImg2ImgDenoisingStrength=t.payload},refinerModelChanged:(e,t)=>{e.refinerModel=t.payload},setRefinerSteps:(e,t)=>{e.refinerSteps=t.payload},setRefinerCFGScale:(e,t)=>{e.refinerCFGScale=t.payload},setRefinerScheduler:(e,t)=>{e.refinerScheduler=t.payload},setRefinerPositiveAestheticScore:(e,t)=>{e.refinerPositiveAestheticScore=t.payload},setRefinerNegativeAestheticScore:(e,t)=>{e.refinerNegativeAestheticScore=t.payload},setRefinerStart:(e,t)=>{e.refinerStart=t.payload}}}),{setPositiveStylePromptSDXL:IIe,setNegativeStylePromptSDXL:MIe,setShouldConcatSDXLStylePrompt:NIe,setShouldUseSDXLRefiner:Gme,setSDXLImg2ImgDenoisingStrength:DIe,refinerModelChanged:g8,setRefinerSteps:LIe,setRefinerCFGScale:$Ie,setRefinerScheduler:FIe,setRefinerPositiveAestheticScore:BIe,setRefinerNegativeAestheticScore:zIe,setRefinerStart:UIe}=SB.actions,Hme=SB.reducer,Lm=Me("app/userInvoked"),qme={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 m1{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||qme,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 $h(){let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n}function m8(e){return e==null?"":""+e}function Wme(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}function dT(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 y8(e,t,n){const{obj:r,k:i}=dT(e,t,Object);r[i]=n}function Kme(e,t,n,r){const{obj:i,k:o}=dT(e,t,Object);i[o]=i[o]||[],r&&(i[o]=i[o].concat(n)),r||i[o].push(n)}function y1(e,t){const{obj:n,k:r}=dT(e,t);if(n)return n[r]}function Xme(e,t,n){const r=y1(e,n);return r!==void 0?r:y1(t,n)}function wB(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]):wB(e[r],t[r],n):e[r]=t[r]);return e}function hd(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var Qme={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function Yme(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>Qme[t]):e}const Zme=[" ",",","?","!",";"];function Jme(e,t,n){t=t||"",n=n||"";const r=Zme.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 v1(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?v1(l,u,n):void 0}i=i[r[o]]}return i}function _1(e){return e&&e.indexOf("_")>0?e.replace("_","-"):e}class v8 extends Ob{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=y1(this.data,a);return l||!s||typeof r!="string"?l:v1(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),y8(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=y1(this.data,a)||{};i?wB(l,r,o):l={...l,...r},y8(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 xB={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 _8={};class b1 extends Ob{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Wme(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=na.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&&!Jme(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 y=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${y}${s}`,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:`${l}${y}${s}`}return i?{res:s,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:s}const d=this.resolve(t,n);let f=d&&d.res;const h=d&&d.usedKey||s,p=d&&d.exactUsedKey||s,m=Object.prototype.toString.apply(f),b=["[object Number]","[object Function]","[object RegExp]"],_=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,v=!this.i18nFormat||this.i18nFormat.handleAsObject;if(v&&f&&(typeof f!="string"&&typeof f!="boolean"&&typeof f!="number")&&b.indexOf(m)<0&&!(typeof _=="string"&&m==="[object Array]")){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const y=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=y,d):y}if(o){const y=m==="[object Array]",S=y?[]:{},w=y?p:h;for(const x in f)if(Object.prototype.hasOwnProperty.call(f,x)){const E=`${w}${o}${x}`;S[x]=this.translate(E,{...n,joinArrays:!1,ns:a}),S[x]===E&&(S[x]=f[x])}f=S}}else if(v&&typeof _=="string"&&m==="[object Array]")f=f.join(_),f&&(f=this.extendTranslation(f,t,n,r));else{let y=!1,S=!1;const w=n.count!==void 0&&typeof n.count!="string",x=b1.hasDefaultValue(n),E=w?this.pluralResolver.getSuffix(u,n.count,n):"",A=n.ordinal&&w?this.pluralResolver.getSuffix(u,n.count,{ordinal:!1}):"",T=n[`defaultValue${E}`]||n[`defaultValue${A}`]||n.defaultValue;!this.isValidLookup(f)&&x&&(y=!0,f=T),this.isValidLookup(f)||(S=!0,f=s);const L=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&S?void 0:f,N=x&&T!==f&&this.options.updateMissing;if(S||y||N){if(this.logger.log(N?"updateKey":"missingKey",u,l,s,N?T:f),o){const B=this.resolve(s,{...n,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let C=[];const P=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&P&&P[0])for(let B=0;B{const I=x&&O!==f?O:L;this.options.missingKeyHandler?this.options.missingKeyHandler(B,l,R,I,N,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(B,l,R,I,N,n),this.emit("missingKey",B,l,R,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?C.forEach(B=>{this.pluralResolver.getSuffixes(B,n).forEach(R=>{D([B],s+R,n[`defaultValue${R}`]||T)})}):D(C,s,T))}f=this.extendTranslation(f,t,n,d,r),S&&f===s&&this.options.appendNamespaceToMissingKey&&(f=`${l}:${s}`),(S||y)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${s}`:s,y?f:void 0):f=this.options.parseMissingKeyHandler(f))}return i?(d.res=f,d):f}extendTranslation(t,n,r,i,o){var s=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const u=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(u){const f=t.match(this.interpolator.nestingRegexp);c=f&&f.length}let d=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(d={...this.options.interpolation.defaultVariables,...d}),t=this.interpolator.interpolate(t,d,r.lng||this.language,r),u){const f=t.match(this.interpolator.nestingRegexp),h=f&&f.length;c1&&arguments[1]!==void 0?arguments[1]:{},r,i,o,s,a;return typeof t=="string"&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const u=this.extractFromKey(l,n),c=u.key;i=c;let d=u.namespaces;this.options.fallbackNS&&(d=d.concat(this.options.fallbackNS));const f=n.count!==void 0&&typeof n.count!="string",h=f&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),p=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",m=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);d.forEach(b=>{this.isValidLookup(r)||(a=b,!_8[`${m[0]}-${b}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(a)&&(_8[`${m[0]}-${b}`]=!0,this.logger.warn(`key "${i}" for languages "${m.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),m.forEach(_=>{if(this.isValidLookup(r))return;s=_;const v=[c];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(v,c,_,b,n);else{let y;f&&(y=this.pluralResolver.getSuffix(_,n.count,n));const S=`${this.options.pluralSeparator}zero`,w=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(f&&(v.push(c+y),n.ordinal&&y.indexOf(w)===0&&v.push(c+y.replace(w,this.options.pluralSeparator)),h&&v.push(c+S)),p){const x=`${c}${this.options.contextSeparator}${n.context}`;v.push(x),f&&(v.push(x+y),n.ordinal&&y.indexOf(w)===0&&v.push(x+y.replace(w,this.options.pluralSeparator)),h&&v.push(x+S))}}let g;for(;g=v.pop();)this.isValidLookup(r)||(o=g,r=this.getResource(_,b,g,n))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}function pw(e){return e.charAt(0).toUpperCase()+e.slice(1)}class b8{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=na.create("languageUtils")}getScriptPartFromCode(t){if(t=_1(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=_1(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]=pw(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]=pw(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=pw(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 eye=[{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}],tye={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 nye=["v1","v2","v3"],rye=["v4"],S8={zero:0,one:1,two:2,few:3,many:4,other:5};function iye(){const e={};return eye.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:tye[t.fc]}})}),e}class oye{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=na.create("pluralResolver"),(!this.options.compatibilityJSON||rye.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=iye()}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(_1(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)=>S8[i]-S8[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!nye.includes(this.options.compatibilityJSON)}}function w8(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=Xme(e,t,n);return!o&&i&&typeof n=="string"&&(o=v1(e,n,r),o===void 0&&(o=v1(t,n,r))),o}class sye{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=na.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:Yme,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?hd(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?hd(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?hd(n.nestingPrefix):n.nestingPrefixEscaped||hd("$t("),this.nestingSuffix=n.nestingSuffix?hd(n.nestingSuffix):n.nestingSuffixEscaped||hd(")"),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 v=w8(n,l,p,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(v,void 0,r,{...i,...n,interpolationkey:p}):v}const m=p.split(this.formatSeparator),b=m.shift().trim(),_=m.join(this.formatSeparator).trim();return this.format(w8(n,l,b,this.options.keySeparator,this.options.ignoreJSONStructure),_,r,{...i,...n,interpolationkey:b})};this.resetRegExp();const d=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,f=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:p=>u(p)},{regex:this.regexp,safeValue:p=>this.escapeValue?u(this.escape(p)):u(p)}].forEach(p=>{for(a=0;o=p.regex.exec(t);){const m=o[1].trim();if(s=c(m),s===void 0)if(typeof d=="function"){const _=d(t,o,i);s=typeof _=="string"?_:""}else if(i&&Object.prototype.hasOwnProperty.call(i,m))s="";else if(f){s=o[0];continue}else this.logger.warn(`missed to pass in variable ${m} for interpolating ${t}`),s="";else typeof s!="string"&&!this.useRawValueToEscape&&(s=m8(s));const b=p.safeValue(s);if(t=t.replace(o[0],b),f?(p.regex.lastIndex+=s.length,p.regex.lastIndex-=o[0].length):p.regex.lastIndex=0,a++,a>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,o,s;function a(l,u){const c=this.nestingOptionsSeparator;if(l.indexOf(c)<0)return l;const d=l.split(new RegExp(`${c}[ ]*{`));let f=`{${d[1]}`;l=d[0],f=this.interpolate(f,s);const h=f.match(/'/g),p=f.match(/"/g);(h&&h.length%2===0&&!p||p.length%2!==0)&&(f=f.replace(/'/g,'"'));try{s=JSON.parse(f),u&&(s={...u,...s})}catch(m){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,m),`${l}${c}${f}`}return delete s.defaultValue,l}for(;i=this.nestingRegexp.exec(t);){let l=[];s={...r},s=s.replace&&typeof s.replace!="string"?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;let u=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const c=i[1].split(this.formatSeparator).map(d=>d.trim());i[1]=c.shift(),l=c,u=!0}if(o=n(a.call(this,i[1].trim(),s),s),o&&i[0]===t&&typeof o!="string")return o;typeof o!="string"&&(o=m8(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 aye(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 pd(e){const t={};return function(r,i,o){const s=i+JSON.stringify(o);let a=t[s];return a||(a=e(_1(i),o),t[s]=a),a(r)}}class lye{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=na.create("formatter"),this.options=t,this.formats={number:pd((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return o=>i.format(o)}),currency:pd((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>i.format(o)}),datetime:pd((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return o=>i.format(o)}),relativetime:pd((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return o=>i.format(o,r.range||"day")}),list:pd((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()]=pd(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}=aye(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 uye(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class cye extends Ob{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=na.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=>{Kme(l.loaded,[o],s),uye(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 x8(){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 C8(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 Hy(){}function dye(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}class $g extends Ob{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=C8(t),this.services={},this.logger=na,this.modules={external:[]},dye(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=x8();this.options={...i,...this.options,...C8(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?na.init(o(this.modules.logger),this.options):na.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:typeof Intl<"u"&&(c=lye);const d=new b8(this.options);this.store=new v8(this.options.resources,this.options);const f=this.services;f.logger=na,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new oye(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 sye(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new cye(o(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",function(h){for(var p=arguments.length,m=new Array(p>1?p-1:0),b=1;b1?p-1:0),b=1;b{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Hy),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=$h(),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]:Hy;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=$h();return t||(t=this.languages),n||(n=this.options.ns),r||(r=Hy),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"&&xB.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=$h();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=$h();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=$h();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 b8(x8());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 $g(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Hy;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},o=new $g(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 v8(this.store.data,i),o.services.resourceStore=o.store),o.translator=new b1(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},fye=z.object({status:z.literal(422),error:z.object({detail:z.array(z.object({loc:z.array(z.string()),msg:z.string(),type:z.string()}))})}),CB={isConnected:!1,isProcessing:!1,isGFPGANAvailable:!0,isESRGANAvailable:!0,shouldConfirmOnDelete:!0,currentStep:0,totalSteps:0,currentIteration:0,totalIterations:0,currentStatusHasSteps:!1,isCancelable:!0,enableImageDebugging:!1,toastQueue:[],progressImage:null,shouldAntialiasProgressImage:!1,sessionId:null,cancelType:"immediate",isCancelScheduled:!1,subscribedNodeIds:[],wereModelsReceived:!1,consoleLogLevel:"debug",shouldLogToConsole:!0,statusTranslationKey:"common.statusDisconnected",canceledSession:"",isPersisted:!1,language:"en",isUploading:!1,shouldUseNSFWChecker:!1,shouldUseWatermarker:!1},EB=er({name:"system",initialState:CB,reducers:{setIsProcessing:(e,t)=>{e.isProcessing=t.payload},setCurrentStatus:(e,t)=>{e.statusTranslationKey=t.payload},setShouldConfirmOnDelete:(e,t)=>{e.shouldConfirmOnDelete=t.payload},setIsCancelable:(e,t)=>{e.isCancelable=t.payload},setEnableImageDebugging:(e,t)=>{e.enableImageDebugging=t.payload},addToast:(e,t)=>{e.toastQueue.push(t.payload)},clearToastQueue:e=>{e.toastQueue=[]},cancelScheduled:e=>{e.isCancelScheduled=!0},scheduledCancelAborted:e=>{e.isCancelScheduled=!1},cancelTypeChanged:(e,t)=>{e.cancelType=t.payload},subscribedNodeIdsSet:(e,t)=>{e.subscribedNodeIds=t.payload},consoleLogLevelChanged:(e,t)=>{e.consoleLogLevel=t.payload},shouldLogToConsoleChanged:(e,t)=>{e.shouldLogToConsole=t.payload},shouldAntialiasProgressImageChanged:(e,t)=>{e.shouldAntialiasProgressImage=t.payload},isPersistedChanged:(e,t)=>{e.isPersisted=t.payload},languageChanged:(e,t)=>{e.language=t.payload},progressImageSet(e,t){e.progressImage=t.payload},shouldUseNSFWCheckerChanged(e,t){e.shouldUseNSFWChecker=t.payload},shouldUseWatermarkerChanged(e,t){e.shouldUseWatermarker=t.payload}},extraReducers(e){e.addCase(x$,(t,n)=>{t.sessionId=n.payload.sessionId,t.canceledSession=""}),e.addCase(E$,t=>{t.sessionId=null}),e.addCase(b$,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(w$,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(UE,t=>{t.isCancelable=!0,t.isProcessing=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusGenerating"}),e.addCase(GE,(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(VE,(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(P$,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(Lm,t=>{t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.statusTranslationKey="common.statusPreparing"}),e.addCase(Au.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(ra({title:Sp("toast.canceled"),status:"warning"}))}),e.addMatcher(aD,(t,n)=>{var o,s,a;t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null;let r;const i=5e3;if(((o=n.payload)==null?void 0:o.status)===422){const l=fye.safeParse(n.payload);if(l.success){l.data.error.detail.map(u=>{t.toastQueue.push(ra({title:r7(u.msg),status:"error",description:`Path: - ${u.loc.slice(3).join(".")}`,duration:i}))});return}}else(s=n.payload)!=null&&s.error&&(r=(a=n.payload)==null?void 0:a.error);t.toastQueue.push(ra({title:Sp("toast.serverError"),status:"error",description:Rv(r,"detail","Unknown Error"),duration:i}))}),e.addMatcher(yye,(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(ra({title:Sp("toast.serverError"),status:"error",description:jee(n.payload.data.error_type)}))})}}),{setIsProcessing:jIe,setShouldConfirmOnDelete:VIe,setCurrentStatus:GIe,setIsCancelable:HIe,setEnableImageDebugging:qIe,addToast:Fn,clearToastQueue:WIe,cancelScheduled:KIe,scheduledCancelAborted:XIe,cancelTypeChanged:QIe,subscribedNodeIdsSet:YIe,consoleLogLevelChanged:ZIe,shouldLogToConsoleChanged:JIe,isPersistedChanged:e9e,shouldAntialiasProgressImageChanged:t9e,languageChanged:n9e,progressImageSet:hye,shouldUseNSFWCheckerChanged:pye,shouldUseWatermarkerChanged:gye}=EB.actions,mye=EB.reducer,yye=is(xb,N$,L$),vye={searchFolder:null,advancedAddScanModel:null},TB=er({name:"modelmanager",initialState:vye,reducers:{setSearchFolder:(e,t)=>{e.searchFolder=t.payload},setAdvancedAddScanModel:(e,t)=>{e.advancedAddScanModel=t.payload}}}),{setSearchFolder:r9e,setAdvancedAddScanModel:i9e}=TB.actions,_ye=TB.reducer,AB={shift:!1,ctrl:!1,meta:!1},kB=er({name:"hotkeys",initialState:AB,reducers:{shiftKeyPressed:(e,t)=>{e.shift=t.payload},ctrlKeyPressed:(e,t)=>{e.ctrl=t.payload},metaKeyPressed:(e,t)=>{e.meta=t.payload}}}),{shiftKeyPressed:o9e,ctrlKeyPressed:s9e,metaKeyPressed:a9e}=kB.actions,bye=kB.reducer,PB=["txt2img","img2img","unifiedCanvas","nodes","modelManager","batch"],E8=(e,t)=>{typeof t=="number"?e.activeTab=t:e.activeTab=PB.indexOf(t)},RB={activeTab:0,shouldShowImageDetails:!1,shouldUseCanvasBetaLayout:!1,shouldShowExistingModelsInSearch:!1,shouldUseSliders:!1,shouldHidePreview:!1,shouldShowProgressInViewer:!0,shouldShowEmbeddingPicker:!1,shouldAutoChangeDimensions:!1,favoriteSchedulers:[],globalContextMenuCloseTrigger:0,panels:{}},OB=er({name:"ui",initialState:RB,reducers:{setActiveTab:(e,t)=>{E8(e,t.payload)},setShouldShowImageDetails:(e,t)=>{e.shouldShowImageDetails=t.payload},setShouldUseCanvasBetaLayout:(e,t)=>{e.shouldUseCanvasBetaLayout=t.payload},setShouldHidePreview:(e,t)=>{e.shouldHidePreview=t.payload},setShouldShowExistingModelsInSearch:(e,t)=>{e.shouldShowExistingModelsInSearch=t.payload},setShouldUseSliders:(e,t)=>{e.shouldUseSliders=t.payload},setShouldShowProgressInViewer:(e,t)=>{e.shouldShowProgressInViewer=t.payload},favoriteSchedulersChanged:(e,t)=>{e.favoriteSchedulers=t.payload},toggleEmbeddingPicker:e=>{e.shouldShowEmbeddingPicker=!e.shouldShowEmbeddingPicker},setShouldAutoChangeDimensions:(e,t)=>{e.shouldAutoChangeDimensions=t.payload},contextMenusClosed:e=>{e.globalContextMenuCloseTrigger+=1},panelsChanged:(e,t)=>{e.panels[t.payload.name]=t.payload.value}},extraReducers(e){e.addCase(O_,t=>{E8(t,"img2img")})}}),{setActiveTab:IB,setShouldShowImageDetails:l9e,setShouldUseCanvasBetaLayout:u9e,setShouldShowExistingModelsInSearch:c9e,setShouldUseSliders:d9e,setShouldHidePreview:f9e,setShouldShowProgressInViewer:h9e,favoriteSchedulersChanged:p9e,toggleEmbeddingPicker:g9e,setShouldAutoChangeDimensions:m9e,contextMenusClosed:y9e,panelsChanged:v9e}=OB.actions,Sye=OB.reducer,wye=K1(pq);MB=WC=void 0;var xye=wye,Cye=function(){var t=[],n=[],r=void 0,i=function(u){return r=u,function(c){return function(d){return xye.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 DB(e,t){if(e){if(typeof e=="string")return A8(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 A8(e,t)}}function A8(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?Fye:Bye;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 O8(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 I8(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){O8(o,r,i,s,a,"next",l)}function a(l){O8(o,r,i,s,a,"throw",l)}s(void 0)})}}var Uye=function(){var e=I8(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 Mye(t,n,{prefix:i,driver:o,unserialize:a,persistWholeStore:c});var d={},f=function(){var h=I8(function*(){var p=NB(t.getState(),n);yield zye(p,d,{prefix:i,driver:o,serialize:s,persistWholeStore:c}),hT(p,d)||t.dispatch({type:kye,payload:p}),d=p});return function(){return h.apply(this,arguments)}}();u&&u>0?t.subscribe(Rye(f,u)):t.subscribe(Pye(f,l))});return function(n,r,i){return e.apply(this,arguments)}}();const jye=Uye;function Fg(e){"@babel/helpers - typeof";return Fg=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},Fg(e)}function M8(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 yw(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=yw({},r));var o=typeof t=="function"?t:Qf(t);switch(i.type){case KC:{var s=yw(yw({},n.state),i.payload||{});return n.state=o(s,{type:KC,payload:s}),n.state}default:return o(r,i)}}},Wye=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=r.prefix,o=i===void 0?"@@remember-":i,s=r.serialize,a=s===void 0?function(b,_){return JSON.stringify(b)}:s,l=r.unserialize,u=l===void 0?function(b,_){return JSON.parse(b)}:l,c=r.persistThrottle,d=c===void 0?100:c,f=r.persistDebounce,h=r.persistWholeStore,p=h===void 0?!1:h;if(!t)throw Error("redux-remember error: driver required");if(!Array.isArray(n))throw Error("redux-remember error: rememberedKeys needs to be an array");var m=function(_){return function(v,g,y){var S=_(v,g,y);return jye(S,n,{driver:t,prefix:o,serialize:a,unserialize:u,persistThrottle:d,persistDebounce:f,persistWholeStore:p}),S}};return m};const _9e=["chakra-ui-color-mode","i18nextLng","ROARR_FILTER","ROARR_LOG"],Kye="@@invokeai-",Xye=["cursorPosition"],Qye=["pendingControlImages"],Yye=["selection","selectedBoardId","galleryView"],Zye=["nodeTemplates","connectionStartParams","currentConnectionFieldType","selectedNodes","selectedEdges","isReady","nodesToCopy","edgesToCopy"],Jye=[],e0e=[],t0e=["currentIteration","currentStep","isCancelable","isConnected","isESRGANAvailable","isGFPGANAvailable","isProcessing","totalIterations","totalSteps","isCancelScheduled","progressImage","wereModelsReceived","isPersisted","isUploading"],n0e=["shouldShowImageDetails","globalContextMenuCloseTrigger","panels"],r0e={canvas:Xye,gallery:Yye,generation:Jye,nodes:Zye,postprocessing:e0e,system:t0e,ui:n0e,controlNet:Qye},i0e=(e,t)=>{const n=A_(e,r0e[t]??[]);return JSON.stringify(n)},o0e={canvas:uD,gallery:j$,generation:$s,nodes:mB,postprocessing:_B,system:CB,config:W7,ui:RB,hotkeys:AB,controlNet:PC},s0e=(e,t)=>eee(JSON.parse(e),o0e[t]),$B=Me("nodes/textToImageGraphBuilt"),FB=Me("nodes/imageToImageGraphBuilt"),BB=Me("nodes/canvasGraphBuilt"),zB=Me("nodes/nodesGraphBuilt"),a0e=is($B,FB,BB,zB),l0e=Me("nodes/workflowLoadRequested"),u0e=e=>{if(a0e(e)&&e.payload.nodes){const t={};return{...e,payload:{...e.payload,nodes:t}}}return Lg.fulfilled.match(e)?{...e,payload:""}:vB.match(e)?{...e,payload:""}:e},c0e=["canvas/setCursorPosition","canvas/setStageCoordinates","canvas/setStageScale","canvas/setIsDrawing","canvas/setBoundingBoxCoordinates","canvas/setBoundingBoxDimensions","canvas/setIsDrawing","canvas/addPointToCurrentLine","socket/socketGeneratorProgress","socket/appSocketGeneratorProgress","@@REMEMBER_PERSISTED"],d0e=e=>e,f0e=()=>{xe({actionCreator:Dne,effect:async(e,{dispatch:t,getState:n})=>{const r=pe("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(Au({session_id:o}))}}})};Me("app/appStarted");const h0e=()=>{xe({matcher:he.endpoints.listImages.matchFulfilled,effect:async(e,{dispatch:t,unsubscribe:n,cancelActiveListeners:r})=>{if(e.meta.arg.queryCacheKey!==wo({board_id:"none",categories:Kr}))return;r(),n();const i=e.payload;if(i.ids.length>0){const o=Mn.getSelectors().selectAll(i)[0];t(ca(o??null))}}})},pT=gu.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:b9e,useGetAppConfigQuery:S9e}=pT,p0e=()=>{xe({matcher:pT.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(fne(r[0])),i.includes("nsfw_checker")||n(pye(!1)),o.includes("invisible_watermark")||n(gye(!1))}})},g0e=Me("app/appStarted"),m0e=()=>{xe({actionCreator:g0e,effect:async(e,{unsubscribe:t,cancelActiveListeners:n})=>{n(),t()}})},gT={memoizeOptions:{resultEqualityCheck:_m}},UB=(e,t)=>{var d;const{generation:n,canvas:r,nodes:i,controlNet:o}=e,s=((d=n.initialImage)==null?void 0:d.imageName)===t,a=r.layerState.objects.some(f=>f.kind==="image"&&f.imageName===t),l=i.nodes.filter(qr).some(f=>yp(f.data.inputs,h=>{var p;return h.type==="ImageField"&&((p=h.value)==null?void 0:p.image_name)===t})),u=yp(o.controlNets,f=>f.controlImage===t||f.processedControlImage===t);return{isInitialImage:s,isCanvasImage:a,isNodesImage:l,isControlNetImage:u}},y0e=Li([e=>e],e=>{const{imagesToDelete:t}=e.deleteImageModal;return t.length?t.map(r=>UB(e,r.image_name)):[]},gT),v0e=()=>{xe({matcher:he.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=UB(l,u);c.isInitialImage&&!i&&(t(mE()),i=!0),c.isCanvasImage&&!o&&(t(yE()),o=!0),c.isNodesImage&&!s&&(t(Fme()),s=!0),c.isControlNetImage&&!a&&(t(Hce()),a=!0)})}})},_0e=()=>{xe({matcher:is(RC,o1),effect:async(e,{getState:t,dispatch:n,condition:r,cancelActiveListeners:i})=>{i();const o=t(),s=RC.match(e)?e.payload:o.gallery.selectedBoardId,l=(o1.match(e)?e.payload:o.gallery.galleryView)==="images"?Kr:Ul,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());if(d){const f=i1.selectAll(d)[0];n(ca(f??null))}else n(ca(null))}else n(ca(null))}})},b0e=Me("canvas/canvasSavedToGallery"),S0e=Me("canvas/canvasMaskSavedToGallery"),w0e=Me("canvas/canvasCopiedToClipboard"),x0e=Me("canvas/canvasDownloadedAsImage"),C0e=Me("canvas/canvasMerged"),E0e=Me("canvas/stagingAreaImageSaved"),T0e=Me("canvas/canvasMaskToControlNet"),A0e=Me("canvas/canvasImageToControlNet");let jB=null,VB=null;const w9e=e=>{jB=e},Mb=()=>jB,x9e=e=>{VB=e},k0e=()=>VB,P0e=async e=>new Promise((t,n)=>{e.toBlob(r=>{if(r){t(r);return}n("Unable to create Blob")})}),w1=async(e,t)=>await P0e(e.toCanvas(t)),Nb=async e=>{const t=Mb();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 w1(o,a)},R0e=e=>{navigator.clipboard.write([new ClipboardItem({[e.type]:e})])},O0e=()=>{xe({actionCreator:w0e,effect:async(e,{dispatch:t,getState:n})=>{const r=tb.get().child({namespace:"canvasCopiedToClipboardListener"}),i=n(),o=await Nb(i);if(!o){r.error("Problem getting base layer blob"),t(Fn({title:"Problem Copying Canvas",description:"Unable to export base layer",status:"error"}));return}R0e(o),t(Fn({title:"Canvas Copied to Clipboard",status:"success"}))}})},I0e=(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()},M0e=()=>{xe({actionCreator:x0e,effect:async(e,{dispatch:t,getState:n})=>{const r=tb.get().child({namespace:"canvasSavedToGalleryListener"}),i=n(),o=await Nb(i);if(!o){r.error("Problem getting base layer blob"),t(Fn({title:"Problem Downloading Canvas",description:"Unable to export base layer",status:"error"}));return}I0e(o,"canvas.png"),t(Fn({title:"Canvas Downloaded",status:"success"}))}})},N0e=()=>{xe({actionCreator:A0e,effect:async(e,{dispatch:t,getState:n})=>{const r=pe("canvas"),i=n(),o=await Nb(i);if(!o){r.error("Problem getting base layer blob"),t(Fn({title:"Problem Saving Canvas",description:"Unable to export base layer",status:"error"}));return}const{autoAddBoardId:s}=i.gallery,a=await t(he.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Sent to ControlNet & Assets"}}})).unwrap(),{image_name:l}=a;t(jc({controlNetId:e.payload.controlNet.controlNetId,controlImage:l}))}})};var mT={exports:{}},Db={},GB={},Et={};(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 ut<"u"?ut: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)})(Et);var ir={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Util=e.Transform=void 0;const t=Et;class n{constructor(y=[1,0,0,1,0,0]){this.dirty=!1,this.m=y&&y.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(y){y.m[0]=this.m[0],y.m[1]=this.m[1],y.m[2]=this.m[2],y.m[3]=this.m[3],y.m[4]=this.m[4],y.m[5]=this.m[5]}point(y){var S=this.m;return{x:S[0]*y.x+S[2]*y.y+S[4],y:S[1]*y.x+S[3]*y.y+S[5]}}translate(y,S){return this.m[4]+=this.m[0]*y+this.m[2]*S,this.m[5]+=this.m[1]*y+this.m[3]*S,this}scale(y,S){return this.m[0]*=y,this.m[1]*=y,this.m[2]*=S,this.m[3]*=S,this}rotate(y){var S=Math.cos(y),w=Math.sin(y),x=this.m[0]*S+this.m[2]*w,E=this.m[1]*S+this.m[3]*w,A=this.m[0]*-w+this.m[2]*S,T=this.m[1]*-w+this.m[3]*S;return this.m[0]=x,this.m[1]=E,this.m[2]=A,this.m[3]=T,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(y,S){var w=this.m[0]+this.m[2]*S,x=this.m[1]+this.m[3]*S,E=this.m[2]+this.m[0]*y,A=this.m[3]+this.m[1]*y;return this.m[0]=w,this.m[1]=x,this.m[2]=E,this.m[3]=A,this}multiply(y){var S=this.m[0]*y.m[0]+this.m[2]*y.m[1],w=this.m[1]*y.m[0]+this.m[3]*y.m[1],x=this.m[0]*y.m[2]+this.m[2]*y.m[3],E=this.m[1]*y.m[2]+this.m[3]*y.m[3],A=this.m[0]*y.m[4]+this.m[2]*y.m[5]+this.m[4],T=this.m[1]*y.m[4]+this.m[3]*y.m[5]+this.m[5];return this.m[0]=S,this.m[1]=w,this.m[2]=x,this.m[3]=E,this.m[4]=A,this.m[5]=T,this}invert(){var y=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),S=this.m[3]*y,w=-this.m[1]*y,x=-this.m[2]*y,E=this.m[0]*y,A=y*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),T=y*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=S,this.m[1]=w,this.m[2]=x,this.m[3]=E,this.m[4]=A,this.m[5]=T,this}getMatrix(){return this.m}decompose(){var y=this.m[0],S=this.m[1],w=this.m[2],x=this.m[3],E=this.m[4],A=this.m[5],T=y*x-S*w;let k={x:E,y:A,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(y!=0||S!=0){var L=Math.sqrt(y*y+S*S);k.rotation=S>0?Math.acos(y/L):-Math.acos(y/L),k.scaleX=L,k.scaleY=T/L,k.skewX=(y*w+S*x)/T,k.skewY=0}else if(w!=0||x!=0){var N=Math.sqrt(w*w+x*x);k.rotation=Math.PI/2-(x>0?Math.acos(-w/N):-Math.acos(w/N)),k.scaleX=T/N,k.scaleY=N,k.skewX=0,k.skewY=(y*w+S*x)/T}return k.rotation=e.Util._getRotation(k.rotation),k}}e.Transform=n;var r="[object Array]",i="[object Number]",o="[object String]",s="[object Boolean]",a=Math.PI/180,l=180/Math.PI,u="#",c="",d="0",f="Konva warning: ",h="Konva error: ",p="rgb(",m={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},b=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,_=[];const v=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 y=g[0];return y==="#"||y==="."||y===y.toUpperCase()},_sign(g){return g===0||g>0?1:-1},requestAnimFrame(g){_.push(g),_.length===1&&v(function(){const y=_;_=[],y.forEach(function(S){S()})})},createCanvasElement(){var g=document.createElement("canvas");try{g.style=g.style||{}}catch{}return g},createImageElement(){return document.createElement("img")},_isInDocument(g){for(;g=g.parentNode;)if(g==document)return!0;return!1},_urlToImage(g,y){var S=e.Util.createImageElement();S.onload=function(){y(S)},S.src=g},_rgbToHex(g,y,S){return((1<<24)+(g<<16)+(y<<8)+S).toString(16).slice(1)},_hexToRgb(g){g=g.replace(u,c);var y=parseInt(g,16);return{r:y>>16&255,g:y>>8&255,b:y&255}},getRandomColor(){for(var g=(Math.random()*16777215<<0).toString(16);g.length<6;)g=d+g;return u+g},getRGB(g){var y;return g in m?(y=m[g],{r:y[0],g:y[1],b:y[2]}):g[0]===u?this._hexToRgb(g.substring(1)):g.substr(0,4)===p?(y=b.exec(g.replace(/ /g,"")),{r:parseInt(y[1],10),g:parseInt(y[2],10),b:parseInt(y[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 y=m[g.toLowerCase()];return y?{r:y[0],g:y[1],b:y[2],a:1}:null},_rgbColorToRGBA(g){if(g.indexOf("rgb(")===0){g=g.match(/rgb\(([^)]+)\)/)[1];var y=g.split(/ *, */).map(Number);return{r:y[0],g:y[1],b:y[2],a:1}}},_rgbaColorToRGBA(g){if(g.indexOf("rgba(")===0){g=g.match(/rgba\(([^)]+)\)/)[1];var y=g.split(/ *, */).map((S,w)=>S.slice(-1)==="%"?w===3?parseInt(S)/100:parseInt(S)/100*255:Number(S));return{r:y[0],g:y[1],b:y[2],a:y[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[y,...S]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(g),w=Number(S[0])/360,x=Number(S[1])/100,E=Number(S[2])/100;let A,T,k;if(x===0)return k=E*255,{r:Math.round(k),g:Math.round(k),b:Math.round(k),a:1};E<.5?A=E*(1+x):A=E+x-E*x;const L=2*E-A,N=[0,0,0];for(let C=0;C<3;C++)T=w+1/3*-(C-1),T<0&&T++,T>1&&T--,6*T<1?k=L+(A-L)*6*T:2*T<1?k=A:3*T<2?k=L+(A-L)*(2/3-T)*6:k=L,N[C]=k*255;return{r:Math.round(N[0]),g:Math.round(N[1]),b:Math.round(N[2]),a:1}}},haveIntersection(g,y){return!(y.x>g.x+g.width||y.x+y.widthg.y+g.height||y.y+y.height1?(A=S,T=w,k=(S-x)*(S-x)+(w-E)*(w-E)):(A=g+N*(S-g),T=y+N*(w-y),k=(A-x)*(A-x)+(T-E)*(T-E))}return[A,T,k]},_getProjectionToLine(g,y,S){var w=e.Util.cloneObject(g),x=Number.MAX_VALUE;return y.forEach(function(E,A){if(!(!S&&A===y.length-1)){var T=y[(A+1)%y.length],k=e.Util._getProjectionToSegment(E.x,E.y,T.x,T.y,g.x,g.y),L=k[0],N=k[1],C=k[2];Cy.length){var A=y;y=g,g=A}for(w=0;w{y.width=0,y.height=0})},drawRoundedRectPath(g,y,S,w){let x=0,E=0,A=0,T=0;typeof w=="number"?x=E=A=T=Math.min(w,y/2,S/2):(x=Math.min(w[0]||0,y/2,S/2),E=Math.min(w[1]||0,y/2,S/2),T=Math.min(w[2]||0,y/2,S/2),A=Math.min(w[3]||0,y/2,S/2)),g.moveTo(x,0),g.lineTo(y-E,0),g.arc(y-E,E,E,Math.PI*3/2,0,!1),g.lineTo(y,S-T),g.arc(y-T,S-T,T,0,Math.PI/2,!1),g.lineTo(A,S),g.arc(A,S-A,A,Math.PI/2,Math.PI,!1),g.lineTo(0,x),g.arc(x,x,x,Math.PI,Math.PI*3/2,!1)}}})(ir);var Kn={},xt={},He={};Object.defineProperty(He,"__esModule",{value:!0});He.getComponentValidator=He.getBooleanValidator=He.getNumberArrayValidator=He.getFunctionValidator=He.getStringOrGradientValidator=He.getStringValidator=He.getNumberOrAutoValidator=He.getNumberOrArrayOfNumbersValidator=He.getNumberValidator=He.alphaComponent=He.RGBComponent=void 0;const fl=Et,cr=ir;function hl(e){return cr.Util._isString(e)?'"'+e+'"':Object.prototype.toString.call(e)==="[object Number]"||cr.Util._isBoolean(e)?e:Object.prototype.toString.call(e)}function D0e(e){return e>255?255:e<0?0:Math.round(e)}He.RGBComponent=D0e;function L0e(e){return e>1?1:e<1e-4?1e-4:e}He.alphaComponent=L0e;function $0e(){if(fl.Konva.isUnminified)return function(e,t){return cr.Util._isNumber(e)||cr.Util.warn(hl(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}He.getNumberValidator=$0e;function F0e(e){if(fl.Konva.isUnminified)return function(t,n){let r=cr.Util._isNumber(t),i=cr.Util._isArray(t)&&t.length==e;return!r&&!i&&cr.Util.warn(hl(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}He.getNumberOrArrayOfNumbersValidator=F0e;function B0e(){if(fl.Konva.isUnminified)return function(e,t){var n=cr.Util._isNumber(e),r=e==="auto";return n||r||cr.Util.warn(hl(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}He.getNumberOrAutoValidator=B0e;function z0e(){if(fl.Konva.isUnminified)return function(e,t){return cr.Util._isString(e)||cr.Util.warn(hl(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}He.getStringValidator=z0e;function U0e(){if(fl.Konva.isUnminified)return function(e,t){const n=cr.Util._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||cr.Util.warn(hl(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}He.getStringOrGradientValidator=U0e;function j0e(){if(fl.Konva.isUnminified)return function(e,t){return cr.Util._isFunction(e)||cr.Util.warn(hl(e)+' is a not valid value for "'+t+'" attribute. The value should be a function.'),e}}He.getFunctionValidator=j0e;function V0e(){if(fl.Konva.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(cr.Util._isArray(e)?e.forEach(function(r){cr.Util._isNumber(r)||cr.Util.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):cr.Util.warn(hl(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}He.getNumberArrayValidator=V0e;function G0e(){if(fl.Konva.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||cr.Util.warn(hl(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}He.getBooleanValidator=G0e;function H0e(e){if(fl.Konva.isUnminified)return function(t,n){return t==null||cr.Util.isObject(t)||cr.Util.warn(hl(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}He.getComponentValidator=H0e;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Factory=void 0;const t=ir,n=He;var r="get",i="set";e.Factory={addGetterSetter(o,s,a,l,u){e.Factory.addGetter(o,s,a),e.Factory.addSetter(o,s,l,u),e.Factory.addOverloadedGetterSetter(o,s)},addGetter(o,s,a){var l=r+t.Util._capitalize(s);o.prototype[l]=o.prototype[l]||function(){var u=this.attrs[s];return u===void 0?a:u}},addSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]||e.Factory.overWriteSetter(o,s,a,l)},overWriteSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]=function(c){return a&&c!==void 0&&c!==null&&(c=a.call(this,c,s)),this._setAttr(s,c),l&&l.call(this),this}},addComponentsGetterSetter(o,s,a,l,u){var c=a.length,d=t.Util._capitalize,f=r+d(s),h=i+d(s),p,m;o.prototype[f]=function(){var _={};for(p=0;p{this._setAttr(s+d(y),void 0)}),this._fireChangeEvent(s,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}}})(xt);var Is={},Xa={};Object.defineProperty(Xa,"__esModule",{value:!0});Xa.HitContext=Xa.SceneContext=Xa.Context=void 0;const HB=ir,q0e=Et;function W0e(e){var t=[],n=e.length,r=HB.Util,i,o;for(i=0;itypeof c=="number"?Math.floor(c):c)),o+=K0e+u.join(N8)+X0e)):(o+=a.property,t||(o+=eve+a.val)),o+=Z0e;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=nve&&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=D8.length,r=this.setAttr,i,o,s=function(a){var l=t[a],u;t[a]=function(){return o=W0e(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))})(Fb);Object.defineProperty(Kn,"__esModule",{value:!0});Kn.Node=void 0;const Pt=ir,$m=xt,Wy=Is,zu=Et,Uo=Fb,yr=He;var F0="absoluteOpacity",Ky="allEventListeners",Na="absoluteTransform",L8="absoluteScale",Uu="canvas",cve="Change",dve="children",fve="konva",QC="listening",$8="mouseenter",F8="mouseleave",B8="set",z8="Shape",B0=" ",U8="stage",Cl="transform",hve="Stage",YC="visible",pve=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(B0);let gve=1;class at{constructor(t){this._id=gve++,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===Cl||t===Na)&&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===Cl||t===Na,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(B0);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(Uu)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===Na&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(Uu)){const{scene:t,filter:n,hit:r}=this._cache.get(Uu);Pt.Util.releaseCanvas(t,n,r),this._cache.delete(Uu)}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){Pt.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 Wy.SceneCanvas({pixelRatio:s,width:i,height:o}),h=new Wy.SceneCanvas({pixelRatio:s,width:0,height:0,willReadFrequently:!0}),p=new Wy.HitCanvas({pixelRatio:d,width:i,height:o}),m=f.getContext(),b=p.getContext();return p.isCache=!0,f.isCache=!0,this._cache.delete(Uu),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(f.getContext()._context.imageSmoothingEnabled=!1,h.getContext()._context.imageSmoothingEnabled=!1),m.save(),b.save(),m.translate(-a,-l),b.translate(-a,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(F0),this._clearSelfAndDescendantCache(L8),this.drawScene(f,this),this.drawHit(p,this),this._isUnderCache=!1,m.restore(),b.restore(),c&&(m.save(),m.beginPath(),m.rect(0,0,i,o),m.closePath(),m.setAttr("strokeStyle","red"),m.setAttr("lineWidth",5),m.stroke(),m.restore()),this._cache.set(Uu,{scene:f,filter:h,hit:p,x:a,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(Uu)}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!==dve&&(r=B8+Pt.Util._capitalize(n),Pt.Util._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(QC,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(YC,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;Uo.DD._dragElements.forEach(s=>{s.dragStatus==="dragging"&&(s.node.nodeType==="Stage"||s.node.getLayer()===r)&&(i=!0)});var o=!n&&!zu.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!==hve&&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(Cl),this._clearSelfAndDescendantCache(Na)),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 Pt.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(Cl);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(Cl),this._clearSelfAndDescendantCache(Na),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 Pt.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 Pt.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&Pt.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(F0,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=Pt.Util.isObject(i)&&!Pt.Util._isPlainObject(i)&&!Pt.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(),Pt.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,Pt.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():zu.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;Uo.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=Uo.DD._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&Uo.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 Pt.Util.haveIntersection(r,this.getClientRect())}static create(t,n){return Pt.Util._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=at.prototype.getClassName.call(t),i=t.children,o,s,a;n&&(t.attrs.container=n),zu.Konva[r]||(Pt.Util.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=zu.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=vw.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=vw.Node.prototype.clone.call(this,t);return this.getChildren().forEach(function(r){n.add(r.clone())}),n}getAllIntersections(t){var n=[];return this.find("Shape").forEach(function(r){r.isVisible()&&r.intersects(t)&&n.push(r)}),n}_clearSelfAndDescendantCache(t){var n;super._clearSelfAndDescendantCache(t),!this.isCached()&&((n=this.children)===null||n===void 0||n.forEach(function(r){r._clearSelfAndDescendantCache(t)}))}_setChildrenIndices(){var t;(t=this.children)===null||t===void 0||t.forEach(function(n,r){n.index=r}),this._requestDraw()}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas(),o=i&&i.getContext(),s=this._getCanvasCache(),a=s&&s.scene,l=i&&i.isCache;if(!this.isVisible()&&!l)return this;if(a){o.save();var u=this.getAbsoluteTransform(n).getMatrix();o.transform(u[0],u[1],u[2],u[3],u[4],u[5]),this._drawCachedSceneCanvas(o),o.restore()}else this._drawChildren("drawScene",i,n);return this}drawHit(t,n){if(!this.shouldDrawHit(n))return this;var r=this.getLayer(),i=t||r&&r.hitCanvas,o=i&&i.getContext(),s=this._getCanvasCache(),a=s&&s.hit;if(a){o.save();var l=this.getAbsoluteTransform(n).getMatrix();o.transform(l[0],l[1],l[2],l[3],l[4],l[5]),this._drawCachedHitCanvas(o),o.restore()}else this._drawChildren("drawHit",i,n);return this}_drawChildren(t,n,r){var i,o=n&&n.getContext(),s=this.clipWidth(),a=this.clipHeight(),l=this.clipFunc(),u=s&&a||l;const c=r===this;if(u){o.save();var d=this.getAbsoluteTransform(r),f=d.getMatrix();o.transform(f[0],f[1],f[2],f[3],f[4],f[5]),o.beginPath();let b;if(l)b=l.call(this,o,this);else{var h=this.clipX(),p=this.clipY();o.rect(h,p,s,a)}o.clip.apply(o,b),f=d.copy().invert().getMatrix(),o.transform(f[0],f[1],f[2],f[3],f[4],f[5])}var m=!c&&this.globalCompositeOperation()!=="source-over"&&t==="drawScene";m&&(o.save(),o._applyGlobalCompositeOperation(this)),(i=this.children)===null||i===void 0||i.forEach(function(b){b[t](n,r)}),m&&o.restore(),u&&o.restore()}getClientRect(t){var n;t=t||{};var r=t.skipTransform,i=t.relativeTo,o,s,a,l,u={x:1/0,y:1/0,width:0,height:0},c=this;(n=this.children)===null||n===void 0||n.forEach(function(m){if(m.visible()){var b=m.getClientRect({relativeTo:c,skipShadow:t.skipShadow,skipStroke:t.skipStroke});b.width===0&&b.height===0||(o===void 0?(o=b.x,s=b.y,a=b.x+b.width,l=b.y+b.height):(o=Math.min(o,b.x),s=Math.min(s,b.y),a=Math.max(a,b.x+b.width),l=Math.max(l,b.y+b.height)))}});for(var d=this.find("Shape"),f=!1,h=0;hQ.indexOf("pointer")>=0?"pointer":Q.indexOf("touch")>=0?"touch":"mouse",U=Q=>{const j=F(Q);if(j==="pointer")return i.Konva.pointerEventsEnabled&&I.pointer;if(j==="touch")return I.touch;if(j==="mouse")return I.mouse};function V(Q={}){return(Q.clipFunc||Q.clipWidth||Q.clipHeight)&&t.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),Q}const H="Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);";e.stages=[];class Y extends r.Container{constructor(j){super(V(j)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),e.stages.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{V(this.attrs)}),this._checkVisibility()}_validateAdd(j){const K=j.getType()==="Layer",ee=j.getType()==="FastLayer";K||ee||t.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const j=this.visible()?"":"none";this.content.style.display=j}setContainer(j){if(typeof j===c){if(j.charAt(0)==="."){var K=j.slice(1);j=document.getElementsByClassName(K)[0]}else{var ee;j.charAt(0)!=="#"?ee=j:ee=j.slice(1),j=document.getElementById(ee)}if(!j)throw"Can not find container in document with id "+ee}return this._setAttr("container",j),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),j.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var j=this.children,K=j.length,ee;for(ee=0;ee-1&&e.stages.splice(K,1),t.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const j=this._pointerPositions[0]||this._changedPointerPositions[0];return j?{x:j.x,y:j.y}:(t.Util.warn(H),null)}_getPointerById(j){return this._pointerPositions.find(K=>K.id===j)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(j){j=j||{},j.x=j.x||0,j.y=j.y||0,j.width=j.width||this.width(),j.height=j.height||this.height();var K=new o.SceneCanvas({width:j.width,height:j.height,pixelRatio:j.pixelRatio||1}),ee=K.getContext()._context,ie=this.children;return(j.x||j.y)&&ee.translate(-1*j.x,-1*j.y),ie.forEach(function(ge){if(ge.isVisible()){var ae=ge._toKonvaCanvas(j);ee.drawImage(ae._canvas,j.x,j.y,ae.getWidth()/ae.getPixelRatio(),ae.getHeight()/ae.getPixelRatio())}}),K}getIntersection(j){if(!j)return null;var K=this.children,ee=K.length,ie=ee-1,ge;for(ge=ie;ge>=0;ge--){const ae=K[ge].getIntersection(j);if(ae)return ae}return null}_resizeDOM(){var j=this.width(),K=this.height();this.content&&(this.content.style.width=j+d,this.content.style.height=K+d),this.bufferCanvas.setSize(j,K),this.bufferHitCanvas.setSize(j,K),this.children.forEach(ee=>{ee.setSize({width:j,height:K}),ee.draw()})}add(j,...K){if(arguments.length>1){for(var ee=0;eeR&&t.Util.warn("The stage has "+ie+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),j.setSize({width:this.width(),height:this.height()}),j.draw(),i.Konva.isBrowser&&this.content.appendChild(j.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(j){return l.hasPointerCapture(j,this)}setPointerCapture(j){l.setPointerCapture(j,this)}releaseCapture(j){l.releaseCapture(j,this)}getLayers(){return this.children}_bindContentEvents(){i.Konva.isBrowser&&O.forEach(([j,K])=>{this.content.addEventListener(j,ee=>{this[K](ee)},{passive:!1})})}_pointerenter(j){this.setPointersPositions(j);const K=U(j.type);this._fire(K.pointerenter,{evt:j,target:this,currentTarget:this})}_pointerover(j){this.setPointersPositions(j);const K=U(j.type);this._fire(K.pointerover,{evt:j,target:this,currentTarget:this})}_getTargetShape(j){let K=this[j+"targetShape"];return K&&!K.getStage()&&(K=null),K}_pointerleave(j){const K=U(j.type),ee=F(j.type);if(K){this.setPointersPositions(j);var ie=this._getTargetShape(ee),ge=!s.DD.isDragging||i.Konva.hitOnDragEnabled;ie&&ge?(ie._fireAndBubble(K.pointerout,{evt:j}),ie._fireAndBubble(K.pointerleave,{evt:j}),this._fire(K.pointerleave,{evt:j,target:this,currentTarget:this}),this[ee+"targetShape"]=null):ge&&(this._fire(K.pointerleave,{evt:j,target:this,currentTarget:this}),this._fire(K.pointerout,{evt:j,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(j){const K=U(j.type),ee=F(j.type);if(K){this.setPointersPositions(j);var ie=!1;this._changedPointerPositions.forEach(ge=>{var ae=this.getIntersection(ge);if(s.DD.justDragged=!1,i.Konva["_"+ee+"ListenClick"]=!0,!(ae&&ae.isListening()))return;i.Konva.capturePointerEventsEnabled&&ae.setPointerCapture(ge.id),this[ee+"ClickStartShape"]=ae,ae._fireAndBubble(K.pointerdown,{evt:j,pointerId:ge.id}),ie=!0;const et=j.type.indexOf("touch")>=0;ae.preventDefault()&&j.cancelable&&et&&j.preventDefault()}),ie||this._fire(K.pointerdown,{evt:j,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(j){const K=U(j.type),ee=F(j.type);if(!K)return;s.DD.isDragging&&s.DD.node.preventDefault()&&j.cancelable&&j.preventDefault(),this.setPointersPositions(j);var ie=!s.DD.isDragging||i.Konva.hitOnDragEnabled;if(!ie)return;var ge={};let ae=!1;var dt=this._getTargetShape(ee);this._changedPointerPositions.forEach(et=>{const Ne=l.getCapturedShape(et.id)||this.getIntersection(et),lt=et.id,Te={evt:j,pointerId:lt};var Gt=dt!==Ne;if(Gt&&dt&&(dt._fireAndBubble(K.pointerout,Object.assign({},Te),Ne),dt._fireAndBubble(K.pointerleave,Object.assign({},Te),Ne)),Ne){if(ge[Ne._id])return;ge[Ne._id]=!0}Ne&&Ne.isListening()?(ae=!0,Gt&&(Ne._fireAndBubble(K.pointerover,Object.assign({},Te),dt),Ne._fireAndBubble(K.pointerenter,Object.assign({},Te),dt),this[ee+"targetShape"]=Ne),Ne._fireAndBubble(K.pointermove,Object.assign({},Te))):dt&&(this._fire(K.pointerover,{evt:j,target:this,currentTarget:this,pointerId:lt}),this[ee+"targetShape"]=null)}),ae||this._fire(K.pointermove,{evt:j,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(j){const K=U(j.type),ee=F(j.type);if(!K)return;this.setPointersPositions(j);const ie=this[ee+"ClickStartShape"],ge=this[ee+"ClickEndShape"];var ae={};let dt=!1;this._changedPointerPositions.forEach(et=>{const Ne=l.getCapturedShape(et.id)||this.getIntersection(et);if(Ne){if(Ne.releaseCapture(et.id),ae[Ne._id])return;ae[Ne._id]=!0}const lt=et.id,Te={evt:j,pointerId:lt};let Gt=!1;i.Konva["_"+ee+"InDblClickWindow"]?(Gt=!0,clearTimeout(this[ee+"DblTimeout"])):s.DD.justDragged||(i.Konva["_"+ee+"InDblClickWindow"]=!0,clearTimeout(this[ee+"DblTimeout"])),this[ee+"DblTimeout"]=setTimeout(function(){i.Konva["_"+ee+"InDblClickWindow"]=!1},i.Konva.dblClickWindow),Ne&&Ne.isListening()?(dt=!0,this[ee+"ClickEndShape"]=Ne,Ne._fireAndBubble(K.pointerup,Object.assign({},Te)),i.Konva["_"+ee+"ListenClick"]&&ie&&ie===Ne&&(Ne._fireAndBubble(K.pointerclick,Object.assign({},Te)),Gt&&ge&&ge===Ne&&Ne._fireAndBubble(K.pointerdblclick,Object.assign({},Te)))):(this[ee+"ClickEndShape"]=null,i.Konva["_"+ee+"ListenClick"]&&this._fire(K.pointerclick,{evt:j,target:this,currentTarget:this,pointerId:lt}),Gt&&this._fire(K.pointerdblclick,{evt:j,target:this,currentTarget:this,pointerId:lt}))}),dt||this._fire(K.pointerup,{evt:j,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),i.Konva["_"+ee+"ListenClick"]=!1,j.cancelable&&ee!=="touch"&&j.preventDefault()}_contextmenu(j){this.setPointersPositions(j);var K=this.getIntersection(this.getPointerPosition());K&&K.isListening()?K._fireAndBubble(L,{evt:j}):this._fire(L,{evt:j,target:this,currentTarget:this})}_wheel(j){this.setPointersPositions(j);var K=this.getIntersection(this.getPointerPosition());K&&K.isListening()?K._fireAndBubble(B,{evt:j}):this._fire(B,{evt:j,target:this,currentTarget:this})}_pointercancel(j){this.setPointersPositions(j);const K=l.getCapturedShape(j.pointerId)||this.getIntersection(this.getPointerPosition());K&&K._fireAndBubble(S,l.createEvent(j)),l.releaseCapture(j.pointerId)}_lostpointercapture(j){l.releaseCapture(j.pointerId)}setPointersPositions(j){var K=this._getContentPosition(),ee=null,ie=null;j=j||window.event,j.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(j.touches,ge=>{this._pointerPositions.push({id:ge.identifier,x:(ge.clientX-K.left)/K.scaleX,y:(ge.clientY-K.top)/K.scaleY})}),Array.prototype.forEach.call(j.changedTouches||j.touches,ge=>{this._changedPointerPositions.push({id:ge.identifier,x:(ge.clientX-K.left)/K.scaleX,y:(ge.clientY-K.top)/K.scaleY})})):(ee=(j.clientX-K.left)/K.scaleX,ie=(j.clientY-K.top)/K.scaleY,this.pointerPos={x:ee,y:ie},this._pointerPositions=[{x:ee,y:ie,id:t.Util._getFirstPointerId(j)}],this._changedPointerPositions=[{x:ee,y:ie,id:t.Util._getFirstPointerId(j)}])}_setPointerPosition(j){t.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(j)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var j=this.content.getBoundingClientRect();return{top:j.top,left:j.left,scaleX:j.width/this.content.clientWidth||1,scaleY:j.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new o.SceneCanvas({width:this.width(),height:this.height()}),this.bufferHitCanvas=new o.HitCanvas({pixelRatio:1,width:this.width(),height:this.height()}),!!i.Konva.isBrowser){var j=this.container();if(!j)throw"Stage has no container. A container is required.";j.innerHTML="",this.content=document.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),j.appendChild(this.content),this._resizeDOM()}}cache(){return t.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach(function(j){j.batchDraw()}),this}}e.Stage=Y,Y.prototype.nodeType=u,(0,a._registerNode)(Y),n.Factory.addGetterSetter(Y,"container")})(KB);var Fm={},zr={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.shapes=void 0;const t=Et,n=ir,r=xt,i=Kn,o=He,s=Et,a=Eo;var l="hasShadow",u="shadowRGBA",c="patternImage",d="linearGradient",f="radialGradient";let h;function p(){return h||(h=n.Util.createCanvasElement().getContext("2d"),h)}e.shapes={};function m(A){const T=this.attrs.fillRule;T?A.fill(T):A.fill()}function b(A){A.stroke()}function _(A){A.fill()}function v(A){A.stroke()}function g(){this._clearCache(l)}function y(){this._clearCache(u)}function S(){this._clearCache(c)}function w(){this._clearCache(d)}function x(){this._clearCache(f)}class E extends i.Node{constructor(T){super(T);let k;for(;k=n.Util.getRandomColor(),!(k&&!(k in e.shapes)););this.colorKey=k,e.shapes[k]=this}getContext(){return n.Util.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return n.Util.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(l,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(c,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var T=p();const k=T.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(k&&k.setTransform){const L=new n.Transform;L.translate(this.fillPatternX(),this.fillPatternY()),L.rotate(t.Konva.getAngle(this.fillPatternRotation())),L.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),L.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const N=L.getMatrix(),C=typeof DOMMatrix>"u"?{a:N[0],b:N[1],c:N[2],d:N[3],e:N[4],f:N[5]}:new DOMMatrix(N);k.setTransform(C)}return k}}_getLinearGradient(){return this._getCache(d,this.__getLinearGradient)}__getLinearGradient(){var T=this.fillLinearGradientColorStops();if(T){for(var k=p(),L=this.fillLinearGradientStartPoint(),N=this.fillLinearGradientEndPoint(),C=k.createLinearGradient(L.x,L.y,N.x,N.y),P=0;Pthis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops()))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],()=>this.strokeEnabled()&&this.strokeWidth()&&!!(this.stroke()||this.strokeLinearGradientColorStops()))}hasHitStroke(){const T=this.hitStrokeWidth();return T==="auto"?this.hasStroke():this.strokeEnabled()&&!!T}intersects(T){var k=this.getStage(),L=k.bufferHitCanvas,N;return L.getContext().clear(),this.drawHit(L,null,!0),N=L.context.getImageData(Math.round(T.x),Math.round(T.y),1,1).data,N[3]>0}destroy(){return i.Node.prototype.destroy.call(this),delete e.shapes[this.colorKey],delete this.colorKey,this}_useBufferCanvas(T){var k;if(!this.getStage()||!((k=this.attrs.perfectDrawEnabled)!==null&&k!==void 0?k:!0))return!1;const N=T||this.hasFill(),C=this.hasStroke(),P=this.getAbsoluteOpacity()!==1;if(N&&C&&P)return!0;const D=this.hasShadow(),B=this.shadowForStrokeEnabled();return!!(N&&C&&D&&B)}setStrokeHitEnabled(T){n.Util.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),T?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var T=this.size();return{x:this._centroid?-T.width/2:0,y:this._centroid?-T.height/2:0,width:T.width,height:T.height}}getClientRect(T={}){const k=T.skipTransform,L=T.relativeTo,N=this.getSelfRect(),P=!T.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,D=N.width+P,B=N.height+P,R=!T.skipShadow&&this.hasShadow(),O=R?this.shadowOffsetX():0,I=R?this.shadowOffsetY():0,F=D+Math.abs(O),U=B+Math.abs(I),V=R&&this.shadowBlur()||0,H=F+V*2,Y=U+V*2,Q={width:H,height:Y,x:-(P/2+V)+Math.min(O,0)+N.x,y:-(P/2+V)+Math.min(I,0)+N.y};return k?Q:this._transformedRect(Q,L)}drawScene(T,k){var L=this.getLayer(),N=T||L.getCanvas(),C=N.getContext(),P=this._getCanvasCache(),D=this.getSceneFunc(),B=this.hasShadow(),R,O,I,F=N.isCache,U=k===this;if(!this.isVisible()&&!U)return this;if(P){C.save();var V=this.getAbsoluteTransform(k).getMatrix();return C.transform(V[0],V[1],V[2],V[3],V[4],V[5]),this._drawCachedSceneCanvas(C),C.restore(),this}if(!D)return this;if(C.save(),this._useBufferCanvas()&&!F){R=this.getStage(),O=R.bufferCanvas,I=O.getContext(),I.clear(),I.save(),I._applyLineJoin(this);var H=this.getAbsoluteTransform(k).getMatrix();I.transform(H[0],H[1],H[2],H[3],H[4],H[5]),D.call(this,I,this),I.restore();var Y=O.pixelRatio;B&&C._applyShadow(this),C._applyOpacity(this),C._applyGlobalCompositeOperation(this),C.drawImage(O._canvas,0,0,O.width/Y,O.height/Y)}else{if(C._applyLineJoin(this),!U){var H=this.getAbsoluteTransform(k).getMatrix();C.transform(H[0],H[1],H[2],H[3],H[4],H[5]),C._applyOpacity(this),C._applyGlobalCompositeOperation(this)}B&&C._applyShadow(this),D.call(this,C,this)}return C.restore(),this}drawHit(T,k,L=!1){if(!this.shouldDrawHit(k,L))return this;var N=this.getLayer(),C=T||N.hitCanvas,P=C&&C.getContext(),D=this.hitFunc()||this.sceneFunc(),B=this._getCanvasCache(),R=B&&B.hit;if(this.colorKey||n.Util.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),R){P.save();var O=this.getAbsoluteTransform(k).getMatrix();return P.transform(O[0],O[1],O[2],O[3],O[4],O[5]),this._drawCachedHitCanvas(P),P.restore(),this}if(!D)return this;if(P.save(),P._applyLineJoin(this),!(this===k)){var F=this.getAbsoluteTransform(k).getMatrix();P.transform(F[0],F[1],F[2],F[3],F[4],F[5])}return D.call(this,P,this),P.restore(),this}drawHitFromCache(T=0){var k=this._getCanvasCache(),L=this._getCachedSceneCanvas(),N=k.hit,C=N.getContext(),P=N.getWidth(),D=N.getHeight(),B,R,O,I,F,U;C.clear(),C.drawImage(L._canvas,0,0,P,D);try{for(B=C.getImageData(0,0,P,D),R=B.data,O=R.length,I=n.Util._hexToRgb(this.colorKey),F=0;FT?(R[F]=I.r,R[F+1]=I.g,R[F+2]=I.b,R[F+3]=255):R[F+3]=0;C.putImageData(B,0,0)}catch(V){n.Util.error("Unable to draw hit graph from cached scene canvas. "+V.message)}return this}hasPointerCapture(T){return a.hasPointerCapture(T,this)}setPointerCapture(T){a.setPointerCapture(T,this)}releaseCapture(T){a.releaseCapture(T,this)}}e.Shape=E,E.prototype._fillFunc=m,E.prototype._strokeFunc=b,E.prototype._fillFuncHit=_,E.prototype._strokeFuncHit=v,E.prototype._centroid=!1,E.prototype.nodeType="Shape",(0,s._registerNode)(E),E.prototype.eventListeners={},E.prototype.on.call(E.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",g),E.prototype.on.call(E.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",y),E.prototype.on.call(E.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",S),E.prototype.on.call(E.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",w),E.prototype.on.call(E.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",x),r.Factory.addGetterSetter(E,"stroke",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(E,"strokeWidth",2,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"fillAfterStrokeEnabled",!1),r.Factory.addGetterSetter(E,"hitStrokeWidth","auto",(0,o.getNumberOrAutoValidator)()),r.Factory.addGetterSetter(E,"strokeHitEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(E,"perfectDrawEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(E,"shadowForStrokeEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(E,"lineJoin"),r.Factory.addGetterSetter(E,"lineCap"),r.Factory.addGetterSetter(E,"sceneFunc"),r.Factory.addGetterSetter(E,"hitFunc"),r.Factory.addGetterSetter(E,"dash"),r.Factory.addGetterSetter(E,"dashOffset",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"shadowColor",void 0,(0,o.getStringValidator)()),r.Factory.addGetterSetter(E,"shadowBlur",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"shadowOpacity",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(E,"shadowOffset",["x","y"]),r.Factory.addGetterSetter(E,"shadowOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"shadowOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"fillPatternImage"),r.Factory.addGetterSetter(E,"fill",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(E,"fillPatternX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"fillPatternY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"fillLinearGradientColorStops"),r.Factory.addGetterSetter(E,"strokeLinearGradientColorStops"),r.Factory.addGetterSetter(E,"fillRadialGradientStartRadius",0),r.Factory.addGetterSetter(E,"fillRadialGradientEndRadius",0),r.Factory.addGetterSetter(E,"fillRadialGradientColorStops"),r.Factory.addGetterSetter(E,"fillPatternRepeat","repeat"),r.Factory.addGetterSetter(E,"fillEnabled",!0),r.Factory.addGetterSetter(E,"strokeEnabled",!0),r.Factory.addGetterSetter(E,"shadowEnabled",!0),r.Factory.addGetterSetter(E,"dashEnabled",!0),r.Factory.addGetterSetter(E,"strokeScaleEnabled",!0),r.Factory.addGetterSetter(E,"fillPriority","color"),r.Factory.addComponentsGetterSetter(E,"fillPatternOffset",["x","y"]),r.Factory.addGetterSetter(E,"fillPatternOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"fillPatternOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(E,"fillPatternScale",["x","y"]),r.Factory.addGetterSetter(E,"fillPatternScaleX",1,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(E,"fillPatternScaleY",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(E,"fillLinearGradientStartPoint",["x","y"]),r.Factory.addComponentsGetterSetter(E,"strokeLinearGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(E,"fillLinearGradientStartPointX",0),r.Factory.addGetterSetter(E,"strokeLinearGradientStartPointX",0),r.Factory.addGetterSetter(E,"fillLinearGradientStartPointY",0),r.Factory.addGetterSetter(E,"strokeLinearGradientStartPointY",0),r.Factory.addComponentsGetterSetter(E,"fillLinearGradientEndPoint",["x","y"]),r.Factory.addComponentsGetterSetter(E,"strokeLinearGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(E,"fillLinearGradientEndPointX",0),r.Factory.addGetterSetter(E,"strokeLinearGradientEndPointX",0),r.Factory.addGetterSetter(E,"fillLinearGradientEndPointY",0),r.Factory.addGetterSetter(E,"strokeLinearGradientEndPointY",0),r.Factory.addComponentsGetterSetter(E,"fillRadialGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(E,"fillRadialGradientStartPointX",0),r.Factory.addGetterSetter(E,"fillRadialGradientStartPointY",0),r.Factory.addComponentsGetterSetter(E,"fillRadialGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(E,"fillRadialGradientEndPointX",0),r.Factory.addGetterSetter(E,"fillRadialGradientEndPointY",0),r.Factory.addGetterSetter(E,"fillPatternRotation",0),r.Factory.addGetterSetter(E,"fillRule",void 0,(0,o.getStringValidator)()),r.Factory.backCompat(E,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"})})(zr);Object.defineProperty(Fm,"__esModule",{value:!0});Fm.Layer=void 0;const Ra=ir,_w=Vc,gd=Kn,vT=xt,j8=Is,bve=He,Sve=zr,wve=Et;var xve="#",Cve="beforeDraw",Eve="draw",YB=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],Tve=YB.length;class ah extends _w.Container{constructor(t){super(t),this.canvas=new j8.SceneCanvas,this.hitCanvas=new j8.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(Cve,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),_w.Container.prototype.drawScene.call(this,i,n),this._fire(Eve,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),_w.Container.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){Ra.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return Ra.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 Ra.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}Fm.Layer=ah;ah.prototype.nodeType="Layer";(0,wve._registerNode)(ah);vT.Factory.addGetterSetter(ah,"imageSmoothingEnabled",!0);vT.Factory.addGetterSetter(ah,"clearBeforeDraw",!0);vT.Factory.addGetterSetter(ah,"hitGraphEnabled",!0,(0,bve.getBooleanValidator)());var zb={};Object.defineProperty(zb,"__esModule",{value:!0});zb.FastLayer=void 0;const Ave=ir,kve=Fm,Pve=Et;class _T extends kve.Layer{constructor(t){super(t),this.listening(!1),Ave.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}zb.FastLayer=_T;_T.prototype.nodeType="FastLayer";(0,Pve._registerNode)(_T);var lh={};Object.defineProperty(lh,"__esModule",{value:!0});lh.Group=void 0;const Rve=ir,Ove=Vc,Ive=Et;class bT extends Ove.Container{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&Rve.Util.throw("You may only add groups and shapes to groups.")}}lh.Group=bT;bT.prototype.nodeType="Group";(0,Ive._registerNode)(bT);var uh={};Object.defineProperty(uh,"__esModule",{value:!0});uh.Animation=void 0;const bw=Et,V8=ir;var Sw=function(){return bw.glob.performance&&bw.glob.performance.now?function(){return bw.glob.performance.now()}:function(){return new Date().getTime()}}();class Js{constructor(t,n){this.id=Js.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:Sw(),frameRate:0},this.func=t,this.setLayers(n)}setLayers(t){var n=[];return t?t.length>0?n=t:n=[t]:n=[],this.layers=n,this}getLayers(){return this.layers}addLayer(t){var n=this.layers,r=n.length,i;for(i=0;ithis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():p<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=p,this.update())}getTime(){return this._time}setPosition(p){this.prevPos=this._pos,this.propFunc(p),this._pos=p}getPosition(p){return p===void 0&&(p=this._time),this.func(p,this.begin,this._change,this.duration)}play(){this.state=a,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=l,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(p){this.pause(),this._time=p,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){var p=this.getTimer()-this._startTime;this.state===a?this.setTime(p):this.state===l&&this.setTime(this.duration-p)}pause(){this.state=s,this.fire("onPause")}getTimer(){return new Date().getTime()}}class f{constructor(p){var m=this,b=p.node,_=b._id,v,g=p.easing||e.Easings.Linear,y=!!p.yoyo,S;typeof p.duration>"u"?v=.3:p.duration===0?v=.001:v=p.duration,this.node=b,this._id=u++;var w=b.getLayer()||(b instanceof i.Konva.Stage?b.getLayers():null);w||t.Util.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new n.Animation(function(){m.tween.onEnterFrame()},w),this.tween=new d(S,function(x){m._tweenFunc(x)},g,0,1,v*1e3,y),this._addListeners(),f.attrs[_]||(f.attrs[_]={}),f.attrs[_][this._id]||(f.attrs[_][this._id]={}),f.tweens[_]||(f.tweens[_]={});for(S in p)o[S]===void 0&&this._addAttr(S,p[S]);this.reset(),this.onFinish=p.onFinish,this.onReset=p.onReset,this.onUpdate=p.onUpdate}_addAttr(p,m){var b=this.node,_=b._id,v,g,y,S,w,x,E,A;if(y=f.tweens[_][p],y&&delete f.attrs[_][y][p],v=b.getAttr(p),t.Util._isArray(m))if(g=[],w=Math.max(m.length,v.length),p==="points"&&m.length!==v.length&&(m.length>v.length?(E=v,v=t.Util._prepareArrayForTween(v,m,b.closed())):(x=m,m=t.Util._prepareArrayForTween(m,v,b.closed()))),p.indexOf("fill")===0)for(S=0;S{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueEnd&&p.setAttr("points",m.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueStart&&p.points(m.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(p){return this.tween.seek(p*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var p=this.node._id,m=this._id,b=f.tweens[p],_;this.pause();for(_ in b)delete f.tweens[p][_];delete f.attrs[p][m]}}e.Tween=f,f.attrs={},f.tweens={},r.Node.prototype.to=function(h){var p=h.onFinish;h.node=this,h.onFinish=function(){this.destroy(),p&&p()};var m=new f(h);m.play()},e.Easings={BackEaseIn(h,p,m,b){var _=1.70158;return m*(h/=b)*h*((_+1)*h-_)+p},BackEaseOut(h,p,m,b){var _=1.70158;return m*((h=h/b-1)*h*((_+1)*h+_)+1)+p},BackEaseInOut(h,p,m,b){var _=1.70158;return(h/=b/2)<1?m/2*(h*h*(((_*=1.525)+1)*h-_))+p:m/2*((h-=2)*h*(((_*=1.525)+1)*h+_)+2)+p},ElasticEaseIn(h,p,m,b,_,v){var g=0;return h===0?p:(h/=b)===1?p+m:(v||(v=b*.3),!_||_0?t:n),c=s*n,d=a*(a>0?t:n),f=l*(l>0?n:t);return{x:u,y:r?-1*f:d,width:c-u,height:f-d}}}Ub.Arc=pl;pl.prototype._centroid=!0;pl.prototype.className="Arc";pl.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,Nve._registerNode)(pl);jb.Factory.addGetterSetter(pl,"innerRadius",0,(0,Vb.getNumberValidator)());jb.Factory.addGetterSetter(pl,"outerRadius",0,(0,Vb.getNumberValidator)());jb.Factory.addGetterSetter(pl,"angle",0,(0,Vb.getNumberValidator)());jb.Factory.addGetterSetter(pl,"clockwise",!1,(0,Vb.getBooleanValidator)());var Gb={},Bm={};Object.defineProperty(Bm,"__esModule",{value:!0});Bm.Line=void 0;const Hb=xt,Dve=zr,JB=He,Lve=Et;function ZC(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 H8(e,t){var n=e.length,r=[],i,o;for(i=2;i4){for(a=this.getTensionPoints(),l=a.length,u=o?0:4,o||t.quadraticCurveTo(a[0],a[1],a[2],a[3]);u{let u,c,d;u=l/2,c=0;for(let h=0;h<20;h++)d=u*e.tValues[20][h]+u,c+=e.cValues[20][h]*r(s,a,d);return u*c};e.getCubicArcLength=t;const n=(s,a,l)=>{l===void 0&&(l=1);const u=s[0]-2*s[1]+s[2],c=a[0]-2*a[1]+a[2],d=2*s[1]-2*s[0],f=2*a[1]-2*a[0],h=4*(u*u+c*c),p=4*(u*d+c*f),m=d*d+f*f;if(h===0)return l*Math.sqrt(Math.pow(s[2]-s[0],2)+Math.pow(a[2]-a[0],2));const b=p/(2*h),_=m/h,v=l+b,g=_-b*b,y=v*v+g>0?Math.sqrt(v*v+g):0,S=b*b+g>0?Math.sqrt(b*b+g):0,w=b+Math.sqrt(b*b+g)!==0?g*Math.log(Math.abs((v+y)/(b+S))):0;return Math.sqrt(h)/2*(v*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})(ez);Object.defineProperty(ch,"__esModule",{value:!0});ch.Path=void 0;const $ve=xt,Fve=zr,Bve=Et,md=ez;class Mr extends Fve.Shape{constructor(t){super(t),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=Mr.parsePathData(this.data()),this.pathLength=Mr.getPathLength(this.dataArray)}_sceneFunc(t){var n=this.dataArray;t.beginPath();for(var r=!1,i=0;ic?u:c,b=u>c?1:u/c,_=u>c?c/u:1;t.translate(a,l),t.rotate(h),t.scale(b,_),t.arc(0,0,m,d,d+f,1-p),t.scale(1/b,1/_),t.rotate(-h),t.translate(-a,-l);break;case"z":r=!0,t.closePath();break}}!r&&!this.hasFill()?t.strokeShape(this):t.fillStrokeShape(this)}getSelfRect(){var t=[];this.dataArray.forEach(function(u){if(u.command==="A"){var c=u.points[4],d=u.points[5],f=u.points[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;p-=h){const m=Mr.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 Mr.getPointOnLine(t,s.start.x,s.start.y,a[0],a[1]);case"C":return Mr.getPointOnCubicBezier((0,md.t2length)(t,Mr.getPathLength(n),m=>(0,md.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 Mr.getPointOnQuadraticBezier((0,md.t2length)(t,Mr.getPathLength(n),m=>(0,md.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,Mr.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 v=null,g=[],y=l,S=u,w,x,E,A,T,k,L,N,C,P;switch(h){case"l":l+=p.shift(),u+=p.shift(),v="L",g.push(l,u);break;case"L":l=p.shift(),u=p.shift(),g.push(l,u);break;case"m":var D=p.shift(),B=p.shift();if(l+=D,u+=B,v="M",s.length>2&&s[s.length-1].command==="z"){for(var R=s.length-2;R>=0;R--)if(s[R].command==="M"){l=s[R].points[0]+D,u=s[R].points[1]+B;break}}g.push(l,u),h="l";break;case"M":l=p.shift(),u=p.shift(),v="M",g.push(l,u),h="L";break;case"h":l+=p.shift(),v="L",g.push(l,u);break;case"H":l=p.shift(),v="L",g.push(l,u);break;case"v":u+=p.shift(),v="L",g.push(l,u);break;case"V":u=p.shift(),v="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(),v="C",g.push(l,u);break;case"S":x=l,E=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),E=u+(u-w.points[3])),g.push(x,E,p.shift(),p.shift()),l=p.shift(),u=p.shift(),v="C",g.push(l,u);break;case"s":x=l,E=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),E=u+(u-w.points[3])),g.push(x,E,l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),v="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(),v="Q",g.push(l,u);break;case"T":x=l,E=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),E=u+(u-w.points[1])),l=p.shift(),u=p.shift(),v="Q",g.push(x,E,l,u);break;case"t":x=l,E=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),E=u+(u-w.points[1])),l+=p.shift(),u+=p.shift(),v="Q",g.push(x,E,l,u);break;case"A":A=p.shift(),T=p.shift(),k=p.shift(),L=p.shift(),N=p.shift(),C=l,P=u,l=p.shift(),u=p.shift(),v="A",g=this.convertEndpointToCenterParameterization(C,P,l,u,L,N,A,T,k);break;case"a":A=p.shift(),T=p.shift(),k=p.shift(),L=p.shift(),N=p.shift(),C=l,P=u,l+=p.shift(),u+=p.shift(),v="A",g=this.convertEndpointToCenterParameterization(C,P,l,u,L,N,A,T,k);break}s.push({command:v||h,points:g,start:{x:y,y:S},pathLength:this.calcLength(y,S,v||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=Mr;switch(r){case"L":return u.getLineLength(t,n,i[0],i[1]);case"C":return(0,md.getCubicArcLength)([t,i[0],i[2],i[4]],[n,i[1],i[3],i[5]],1);case"Q":return(0,md.getQuadraticArcLength)([t,i[0],i[2]],[n,i[1],i[3]],1);case"A":o=0;var c=i[4],d=i[5],f=i[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;l-=h)a=u.getPointOnEllipticalArc(i[0],i[1],i[2],i[3],l,0),o+=u.getLineLength(s.x,s.y,a.x,a.y),s=a;else for(l=c+h;l1&&(a*=Math.sqrt(h),l*=Math.sqrt(h));var p=Math.sqrt((a*a*(l*l)-a*a*(f*f)-l*l*(d*d))/(a*a*(f*f)+l*l*(d*d)));o===s&&(p*=-1),isNaN(p)&&(p=0);var m=p*a*f/l,b=p*-l*d/a,_=(t+r)/2+Math.cos(c)*m-Math.sin(c)*b,v=(n+i)/2+Math.sin(c)*m+Math.cos(c)*b,g=function(T){return Math.sqrt(T[0]*T[0]+T[1]*T[1])},y=function(T,k){return(T[0]*k[0]+T[1]*k[1])/(g(T)*g(k))},S=function(T,k){return(T[0]*k[1]=1&&(A=0),s===0&&A>0&&(A=A-2*Math.PI),s===1&&A<0&&(A=A+2*Math.PI),[_,v,a,l,w,A,c,s]}}ch.Path=Mr;Mr.prototype.className="Path";Mr.prototype._attrsAffectingSize=["data"];(0,Bve._registerNode)(Mr);$ve.Factory.addGetterSetter(Mr,"data");Object.defineProperty(Gb,"__esModule",{value:!0});Gb.Arrow=void 0;const qb=xt,zve=Bm,tz=He,Uve=Et,q8=ch;class Hc extends zve.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=q8.Path.calcLength(i[i.length-4],i[i.length-3],"C",f),p=q8.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}}}Gb.Arrow=Hc;Hc.prototype.className="Arrow";(0,Uve._registerNode)(Hc);qb.Factory.addGetterSetter(Hc,"pointerLength",10,(0,tz.getNumberValidator)());qb.Factory.addGetterSetter(Hc,"pointerWidth",10,(0,tz.getNumberValidator)());qb.Factory.addGetterSetter(Hc,"pointerAtBeginning",!1);qb.Factory.addGetterSetter(Hc,"pointerAtEnding",!0);var Wb={};Object.defineProperty(Wb,"__esModule",{value:!0});Wb.Circle=void 0;const jve=xt,Vve=zr,Gve=He,Hve=Et;let dh=class extends Vve.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)}};Wb.Circle=dh;dh.prototype._centroid=!0;dh.prototype.className="Circle";dh.prototype._attrsAffectingSize=["radius"];(0,Hve._registerNode)(dh);jve.Factory.addGetterSetter(dh,"radius",0,(0,Gve.getNumberValidator)());var Kb={};Object.defineProperty(Kb,"__esModule",{value:!0});Kb.Ellipse=void 0;const ST=xt,qve=zr,nz=He,Wve=Et;class Ru extends qve.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)}}Kb.Ellipse=Ru;Ru.prototype.className="Ellipse";Ru.prototype._centroid=!0;Ru.prototype._attrsAffectingSize=["radiusX","radiusY"];(0,Wve._registerNode)(Ru);ST.Factory.addComponentsGetterSetter(Ru,"radius",["x","y"]);ST.Factory.addGetterSetter(Ru,"radiusX",0,(0,nz.getNumberValidator)());ST.Factory.addGetterSetter(Ru,"radiusY",0,(0,nz.getNumberValidator)());var Xb={};Object.defineProperty(Xb,"__esModule",{value:!0});Xb.Image=void 0;const ww=ir,qc=xt,Kve=zr,Xve=Et,zm=He;let wa=class rz extends Kve.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?ww.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?ww.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=ww.Util.createImageElement();i.onload=function(){var o=new rz({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}};Xb.Image=wa;wa.prototype.className="Image";(0,Xve._registerNode)(wa);qc.Factory.addGetterSetter(wa,"cornerRadius",0,(0,zm.getNumberOrArrayOfNumbersValidator)(4));qc.Factory.addGetterSetter(wa,"image");qc.Factory.addComponentsGetterSetter(wa,"crop",["x","y","width","height"]);qc.Factory.addGetterSetter(wa,"cropX",0,(0,zm.getNumberValidator)());qc.Factory.addGetterSetter(wa,"cropY",0,(0,zm.getNumberValidator)());qc.Factory.addGetterSetter(wa,"cropWidth",0,(0,zm.getNumberValidator)());qc.Factory.addGetterSetter(wa,"cropHeight",0,(0,zm.getNumberValidator)());var Uf={};Object.defineProperty(Uf,"__esModule",{value:!0});Uf.Tag=Uf.Label=void 0;const Qb=xt,Qve=zr,Yve=lh,wT=He,iz=Et;var oz=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],Zve="Change.konva",Jve="none",JC="up",e3="right",t3="down",n3="left",e1e=oz.length;class xT extends Yve.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)}}Zb.RegularPolygon=Kc;Kc.prototype.className="RegularPolygon";Kc.prototype._centroid=!0;Kc.prototype._attrsAffectingSize=["radius"];(0,a1e._registerNode)(Kc);sz.Factory.addGetterSetter(Kc,"radius",0,(0,az.getNumberValidator)());sz.Factory.addGetterSetter(Kc,"sides",0,(0,az.getNumberValidator)());var Jb={};Object.defineProperty(Jb,"__esModule",{value:!0});Jb.Ring=void 0;const lz=xt,l1e=zr,uz=He,u1e=Et;var W8=Math.PI*2;class Xc extends l1e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,W8,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),W8,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)}}Jb.Ring=Xc;Xc.prototype.className="Ring";Xc.prototype._centroid=!0;Xc.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,u1e._registerNode)(Xc);lz.Factory.addGetterSetter(Xc,"innerRadius",0,(0,uz.getNumberValidator)());lz.Factory.addGetterSetter(Xc,"outerRadius",0,(0,uz.getNumberValidator)());var eS={};Object.defineProperty(eS,"__esModule",{value:!0});eS.Sprite=void 0;const Qc=xt,c1e=zr,d1e=uh,cz=He,f1e=Et;class xa extends c1e.Shape{constructor(t){super(t),this._updated=!0,this.anim=new d1e.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 Qy;function Cw(){return Qy||(Qy=r3.Util.createCanvasElement().getContext(_1e),Qy)}function R1e(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function O1e(e){e.setAttr("miterLimit",2),e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function I1e(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}let vr=class extends g1e.Shape{constructor(t){super(I1e(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(_+=s)}}}_hitFunc(t){var n=this.getWidth(),r=this.getHeight();t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}setText(t){var n=r3.Util._isString(t)?t:t==null?"":t+"";return this._setAttr(b1e,n),this}getWidth(){var t=this.attrs.width===yd||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===yd||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 r3.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=Cw(),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()+Xy+this.fontVariant()+Xy+(this.fontSize()+C1e)+P1e(this.fontFamily())}_addTextLine(t){this.align()===Fh&&(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 Cw().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!==yd&&o!==void 0,l=s!==yd&&s!==void 0,u=this.padding(),c=o-u*2,d=s-u*2,f=0,h=this.wrap(),p=h!==Q8,m=h!==A1e&&p,b=this.ellipsis();this.textArr=[],Cw().font=this._getContextFont();for(var _=b?this._getTextWidth(xw):0,v=0,g=t.length;vc)for(;y.length>0;){for(var w=0,x=y.length,E="",A=0;w>>1,k=y.slice(0,T+1),L=this._getTextWidth(k)+_;L<=c?(w=T+1,E=k,A=L):x=T}if(E){if(m){var N,C=y[E.length],P=C===Xy||C===K8;P&&A<=c?N=E.length:N=Math.max(E.lastIndexOf(Xy),E.lastIndexOf(K8))+1,N>0&&(w=N,E=E.slice(0,w),A=this._getTextWidth(E))}E=E.trimRight(),this._addTextLine(E),r=Math.max(r,A),f+=i;var D=this._shouldHandleEllipsis(f);if(D){this._tryToAddEllipsisToLastLine();break}if(y=y.slice(w),y=y.trimLeft(),y.length>0&&(S=this._getTextWidth(y),S<=c)){this._addTextLine(y),f+=i,r=Math.max(r,S);break}}else break}else this._addTextLine(y),f+=i,r=Math.max(r,S),this._shouldHandleEllipsis(f)&&vd)break}this.textHeight=n,this.textWidth=r}_shouldHandleEllipsis(t){var n=+this.fontSize(),r=this.lineHeight()*n,i=this.attrs.height,o=i!==yd&&i!==void 0,s=this.padding(),a=i-s*2,l=this.wrap(),u=l!==Q8;return!u||o&&t+r>a}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==yd&&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+xw)n?null:Bh.Path.getPointAtLengthOfDataArray(t,this.dataArray)}_readDataAttribute(){this.dataArray=Bh.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+`.${_z}`).join(" "),J8="nodesRect",z1e=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],U1e={"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 j1e="ontouchstart"in ms.Konva._global;function V1e(e,t){if(e==="rotater")return"crosshair";t+=hn.Util.degToRad(U1e[e]||0);var n=(hn.Util.radToDeg(t)%360+360)%360;return hn.Util._inRange(n,315+22.5,360)||hn.Util._inRange(n,0,22.5)?"ns-resize":hn.Util._inRange(n,45-22.5,45+22.5)?"nesw-resize":hn.Util._inRange(n,90-22.5,90+22.5)?"ew-resize":hn.Util._inRange(n,135-22.5,135+22.5)?"nwse-resize":hn.Util._inRange(n,180-22.5,180+22.5)?"ns-resize":hn.Util._inRange(n,225-22.5,225+22.5)?"nesw-resize":hn.Util._inRange(n,270-22.5,270+22.5)?"ew-resize":hn.Util._inRange(n,315-22.5,315+22.5)?"nwse-resize":(hn.Util.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var C1=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],eR=1e8;function G1e(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 bz(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 H1e(e,t){const n=G1e(e);return bz(e,t,n)}function q1e(e,t,n){let r=t;for(let i=0;ii.isAncestorOf(this)?(hn.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(z1e.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(J8),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(J8,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=(ms.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 bz(c,-ms.Konva.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-eR,y:-eR,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 hn.Transform;r.rotate(-ms.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:ms.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(),C1.forEach((function(t){this._createAnchor(t)}).bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new $1e.Rect({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:j1e?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=ms.Konva.getAngle(this.rotation()),o=V1e(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 L1e.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()*hn.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=ms.Konva.getAngle(this.rotation());const C=f+N,P=ms.Konva.getAngle(this.rotationSnapTolerance()),B=q1e(this.rotationSnaps(),C,P)-d.rotation,R=H1e(d,B);this._fitNodesInto(R,t);return}var h=this.shiftBehavior(),p;h==="inverted"?p=this.keepRatio()&&!t.shiftKey:h==="none"?p=this.keepRatio():p=this.keepRatio()||t.shiftKey;var g=this.centeredScaling()||t.altKey;if(this._movingAnchorName==="top-left"){if(p){var m=g?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-right").x(),y:this.findOne(".bottom-right").y()};i=Math.sqrt(Math.pow(m.x-o.x(),2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-left").x()>m.x?-1:1,_=this.findOne(".top-left").y()>m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-left").x(m.x-n),this.findOne(".top-left").y(m.y-r)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(o.y());else if(this._movingAnchorName==="top-right"){if(p){var m=g?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-left").x(),y:this.findOne(".bottom-left").y()};i=Math.sqrt(Math.pow(o.x()-m.x,2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-right").x()m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-right").x(m.x+n),this.findOne(".top-right").y(m.y-r)}var v=o.position();this.findOne(".top-left").y(v.y),this.findOne(".bottom-right").x(v.x)}else if(this._movingAnchorName==="middle-left")this.findOne(".top-left").x(o.x());else if(this._movingAnchorName==="middle-right")this.findOne(".bottom-right").x(o.x());else if(this._movingAnchorName==="bottom-left"){if(p){var m=g?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".top-right").x(),y:this.findOne(".top-right").y()};i=Math.sqrt(Math.pow(m.x-o.x(),2)+Math.pow(o.y()-m.y,2));var b=m.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(hn.Util._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(hn.Util._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var s=new hn.Transform;if(s.rotate(ms.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:hn.Util.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const a=1e7,l=new hn.Transform;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/a,r.height/a);const u=new hn.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 hn.Transform;m.multiply(h.copy().invert()).multiply(c).multiply(h).multiply(p);const b=m.decompose();d.setAttrs(b),this._fire("transform",{evt:n,target:d}),d._fire("transform",{evt:n,target:d}),(f=d.getLayer())===null||f===void 0||f.batchDraw()}),this.rotation(hn.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(hn.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()*hn.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=""),Z8.Group.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return Y8.Node.prototype.toObject.call(this)}clone(t){var n=Y8.Node.prototype.clone.call(this,t);return n}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}rS.Transformer=Vt;function W1e(e){return e instanceof Array||hn.Util.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){C1.indexOf(t)===-1&&hn.Util.warn("Unknown anchor name: "+t+". Available names are: "+C1.join(", "))}),e||[]}Vt.prototype.className="Transformer";(0,F1e._registerNode)(Vt);ln.Factory.addGetterSetter(Vt,"enabledAnchors",C1,W1e);ln.Factory.addGetterSetter(Vt,"flipEnabled",!0,(0,Mu.getBooleanValidator)());ln.Factory.addGetterSetter(Vt,"resizeEnabled",!0);ln.Factory.addGetterSetter(Vt,"anchorSize",10,(0,Mu.getNumberValidator)());ln.Factory.addGetterSetter(Vt,"rotateEnabled",!0);ln.Factory.addGetterSetter(Vt,"rotationSnaps",[]);ln.Factory.addGetterSetter(Vt,"rotateAnchorOffset",50,(0,Mu.getNumberValidator)());ln.Factory.addGetterSetter(Vt,"rotationSnapTolerance",5,(0,Mu.getNumberValidator)());ln.Factory.addGetterSetter(Vt,"borderEnabled",!0);ln.Factory.addGetterSetter(Vt,"anchorStroke","rgb(0, 161, 255)");ln.Factory.addGetterSetter(Vt,"anchorStrokeWidth",1,(0,Mu.getNumberValidator)());ln.Factory.addGetterSetter(Vt,"anchorFill","white");ln.Factory.addGetterSetter(Vt,"anchorCornerRadius",0,(0,Mu.getNumberValidator)());ln.Factory.addGetterSetter(Vt,"borderStroke","rgb(0, 161, 255)");ln.Factory.addGetterSetter(Vt,"borderStrokeWidth",1,(0,Mu.getNumberValidator)());ln.Factory.addGetterSetter(Vt,"borderDash");ln.Factory.addGetterSetter(Vt,"keepRatio",!0);ln.Factory.addGetterSetter(Vt,"shiftBehavior","default");ln.Factory.addGetterSetter(Vt,"centeredScaling",!1);ln.Factory.addGetterSetter(Vt,"ignoreStroke",!1);ln.Factory.addGetterSetter(Vt,"padding",0,(0,Mu.getNumberValidator)());ln.Factory.addGetterSetter(Vt,"node");ln.Factory.addGetterSetter(Vt,"nodes");ln.Factory.addGetterSetter(Vt,"boundBoxFunc");ln.Factory.addGetterSetter(Vt,"anchorDragBoundFunc");ln.Factory.addGetterSetter(Vt,"anchorStyleFunc");ln.Factory.addGetterSetter(Vt,"shouldOverdrawWholeArea",!1);ln.Factory.addGetterSetter(Vt,"useSingleNodeRotation",!0);ln.Factory.backCompat(Vt,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});var iS={};Object.defineProperty(iS,"__esModule",{value:!0});iS.Wedge=void 0;const oS=xt,K1e=zr,X1e=Et,Sz=He,Q1e=Et;class gl extends K1e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,X1e.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)}}iS.Wedge=gl;gl.prototype.className="Wedge";gl.prototype._centroid=!0;gl.prototype._attrsAffectingSize=["radius"];(0,Q1e._registerNode)(gl);oS.Factory.addGetterSetter(gl,"radius",0,(0,Sz.getNumberValidator)());oS.Factory.addGetterSetter(gl,"angle",0,(0,Sz.getNumberValidator)());oS.Factory.addGetterSetter(gl,"clockwise",!1);oS.Factory.backCompat(gl,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});var sS={};Object.defineProperty(sS,"__esModule",{value:!0});sS.Blur=void 0;const tR=xt,Y1e=Kn,Z1e=He;function nR(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var J1e=[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],e_e=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function t_e(e,t){var n=e.data,r=e.width,i=e.height,o,s,a,l,u,c,d,f,h,p,m,b,_,v,g,y,S,w,x,E,A,T,k,L,N=t+t+1,C=r-1,P=i-1,D=t+1,B=D*(D+1)/2,R=new nR,O=null,I=R,F=null,U=null,V=J1e[t],H=e_e[t];for(a=1;a>H,k!==0?(k=255/k,n[c]=(f*V>>H)*k,n[c+1]=(h*V>>H)*k,n[c+2]=(p*V>>H)*k):n[c]=n[c+1]=n[c+2]=0,f-=b,h-=_,p-=v,m-=g,b-=F.r,_-=F.g,v-=F.b,g-=F.a,l=d+((l=o+t+1)>H,k>0?(k=255/k,n[l]=(f*V>>H)*k,n[l+1]=(h*V>>H)*k,n[l+2]=(p*V>>H)*k):n[l]=n[l+1]=n[l+2]=0,f-=b,h-=_,p-=v,m-=g,b-=F.r,_-=F.g,v-=F.b,g-=F.a,l=o+((l=s+D)0&&t_e(t,n)};sS.Blur=n_e;tR.Factory.addGetterSetter(Y1e.Node,"blurRadius",0,(0,Z1e.getNumberValidator)(),tR.Factory.afterSetFilter);var aS={};Object.defineProperty(aS,"__esModule",{value:!0});aS.Brighten=void 0;const rR=xt,r_e=Kn,i_e=He,o_e=function(e){var t=this.brightness()*255,n=e.data,r=n.length,i;for(i=0;i255?255:i,o=o<0?0:o>255?255:o,s=s<0?0:s>255?255:s,n[a]=i,n[a+1]=o,n[a+2]=s};lS.Contrast=l_e;iR.Factory.addGetterSetter(s_e.Node,"contrast",0,(0,a_e.getNumberValidator)(),iR.Factory.afterSetFilter);var uS={};Object.defineProperty(uS,"__esModule",{value:!0});uS.Emboss=void 0;const yu=xt,cS=Kn,u_e=ir,wz=He,c_e=function(e){var t=this.embossStrength()*10,n=this.embossWhiteLevel()*255,r=this.embossDirection(),i=this.embossBlend(),o=0,s=0,a=e.data,l=e.width,u=e.height,c=l*4,d=u;switch(r){case"top-left":o=-1,s=-1;break;case"top":o=-1,s=0;break;case"top-right":o=-1,s=1;break;case"right":o=0,s=1;break;case"bottom-right":o=1,s=1;break;case"bottom":o=1,s=0;break;case"bottom-left":o=1,s=-1;break;case"left":o=0,s=-1;break;default:u_e.Util.error("Unknown emboss direction: "+r)}do{var f=(d-1)*c,h=o;d+h<1&&(h=0),d+h>u&&(h=0);var p=(d-1+h)*l*4,m=l;do{var b=f+(m-1)*4,_=s;m+_<1&&(_=0),m+_>l&&(_=0);var v=p+(m-1+_)*4,g=a[b]-a[v],y=a[b+1]-a[v+1],S=a[b+2]-a[v+2],w=g,x=w>0?w:-w,E=y>0?y:-y,A=S>0?S:-S;if(E>x&&(w=y),A>x&&(w=S),w*=t,i){var T=a[b]+w,k=a[b+1]+w,L=a[b+2]+w;a[b]=T>255?255:T<0?0:T,a[b+1]=k>255?255:k<0?0:k,a[b+2]=L>255?255:L<0?0:L}else{var N=n-w;N<0?N=0:N>255&&(N=255),a[b]=a[b+1]=a[b+2]=N}}while(--m)}while(--d)};uS.Emboss=c_e;yu.Factory.addGetterSetter(cS.Node,"embossStrength",.5,(0,wz.getNumberValidator)(),yu.Factory.afterSetFilter);yu.Factory.addGetterSetter(cS.Node,"embossWhiteLevel",.5,(0,wz.getNumberValidator)(),yu.Factory.afterSetFilter);yu.Factory.addGetterSetter(cS.Node,"embossDirection","top-left",null,yu.Factory.afterSetFilter);yu.Factory.addGetterSetter(cS.Node,"embossBlend",!1,null,yu.Factory.afterSetFilter);var dS={};Object.defineProperty(dS,"__esModule",{value:!0});dS.Enhance=void 0;const oR=xt,d_e=Kn,f_e=He;function Aw(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 h_e=function(e){var t=e.data,n=t.length,r=t[0],i=r,o,s=t[1],a=s,l,u=t[2],c=u,d,f,h=this.enhance();if(h!==0){for(f=0;fi&&(i=o),l=t[f+1],la&&(a=l),d=t[f+2],dc&&(c=d);i===r&&(i=255,r=0),a===s&&(a=255,s=0),c===u&&(c=255,u=0);var p,m,b,_,v,g,y,S,w;for(h>0?(m=i+h*(255-i),b=r-h*(r-0),v=a+h*(255-a),g=s-h*(s-0),S=c+h*(255-c),w=u-h*(u-0)):(p=(i+r)*.5,m=i+h*(i-p),b=r+h*(r-p),_=(a+s)*.5,v=a+h*(a-_),g=s+h*(s-_),y=(c+u)*.5,S=c+h*(c-y),w=u+h*(u-y)),f=0;f_?b:_;var v=s,g=o,y,S,w=360/g*Math.PI/180,x,E;for(S=0;Sg?v:g;var y=s,S=o,w,x,E=n.polarRotation||0,A,T;for(c=0;ct&&(y=g,S=0,w=-1),i=0;i=0&&h=0&&p=0&&h=0&&p=255*4?255:0}return s}function k_e(e,t,n){for(var r=[.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111],i=Math.round(Math.sqrt(r.length)),o=Math.floor(i/2),s=[],a=0;a=0&&h=0&&p=n))for(o=m;o=r||(s=(n*o+i)*4,a+=y[s+0],l+=y[s+1],u+=y[s+2],c+=y[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,y[s+0]=a,y[s+1]=l,y[s+2]=u,y[s+3]=c)}};_S.Pixelate=L_e;uR.Factory.addGetterSetter(N_e.Node,"pixelSize",8,(0,D_e.getNumberValidator)(),uR.Factory.afterSetFilter);var bS={};Object.defineProperty(bS,"__esModule",{value:!0});bS.Posterize=void 0;const cR=xt,$_e=Kn,F_e=He,B_e=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)});T1.Factory.addGetterSetter(RT.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});T1.Factory.addGetterSetter(RT.Node,"blue",0,z_e.RGBComponent,T1.Factory.afterSetFilter);var wS={};Object.defineProperty(wS,"__esModule",{value:!0});wS.RGBA=void 0;const zg=xt,xS=Kn,j_e=He,V_e=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)});zg.Factory.addGetterSetter(xS.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});zg.Factory.addGetterSetter(xS.Node,"blue",0,j_e.RGBComponent,zg.Factory.afterSetFilter);zg.Factory.addGetterSetter(xS.Node,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});var CS={};Object.defineProperty(CS,"__esModule",{value:!0});CS.Sepia=void 0;const G_e=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)};ES.Solarize=H_e;var TS={};Object.defineProperty(TS,"__esModule",{value:!0});TS.Threshold=void 0;const dR=xt,q_e=Kn,W_e=He,K_e=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 Uh.Stage({container:o,width:r,height:i}),a=new Uh.Layer,l=new Uh.Layer;return a.add(new Uh.Rect({...t,fill:n?"black":"white"})),e.forEach(u=>l.add(new Uh.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},Nbe=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}),pR=async(e,t)=>{const n=e.toDataURL(t);return await Nbe(n,t.width,t.height)},OT=async(e,t,n,r,i)=>{const o=pe("canvas"),s=Mb(),a=k0e();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 w1(u,d),h=await pR(u,d),p=await Mbe(r?e.objects.filter(lD):[],l,i),m=await w1(p,l),b=await pR(p,l);return{baseBlob:f,baseImageData:h,maskBlob:m,maskImageData:b}},Dbe=()=>{xe({actionCreator:S0e,effect:async(e,{dispatch:t,getState:n})=>{const r=pe("canvas"),i=n(),o=await OT(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Fn({title:"Problem Saving Mask",description:"Unable to export mask",status:"error"}));return}const{autoAddBoardId:a}=i.gallery;t(he.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Mask Saved to Assets"}}}))}})},Lbe=()=>{xe({actionCreator:T0e,effect:async(e,{dispatch:t,getState:n})=>{const r=pe("canvas"),i=n(),o=await OT(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Fn({title:"Problem Importing Mask",description:"Unable to export mask",status:"error"}));return}const{autoAddBoardId:a}=i.gallery,l=await t(he.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Mask Sent to ControlNet & Assets"}}})).unwrap(),{image_name:u}=l;t(jc({controlNetId:e.payload.controlNet.controlNetId,controlImage:u}))}})},$be=async()=>{const e=Mb();if(!e)return;const t=e.clone();return t.scale({x:1,y:1}),w1(t,t.getClientRect())},Fbe=()=>{xe({actionCreator:C0e,effect:async(e,{dispatch:t})=>{const n=tb.get().child({namespace:"canvasCopiedToClipboardListener"}),r=await $be();if(!r){n.error("Problem getting base layer blob"),t(Fn({title:"Problem Merging Canvas",description:"Unable to export base layer",status:"error"}));return}const i=Mb();if(!i){n.error("Problem getting canvas base layer"),t(Fn({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(Lne({kind:"image",layer:"base",imageName:a,...o}))}})},Bbe=()=>{xe({actionCreator:b0e,effect:async(e,{dispatch:t,getState:n})=>{const r=pe("canvas"),i=n(),o=await Nb(i);if(!o){r.error("Problem getting base layer blob"),t(Fn({title:"Problem Saving Canvas",description:"Unable to export base layer",status:"error"}));return}const{autoAddBoardId:s}=i.gallery;t(he.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Saved to Gallery"}}}))}})},zbe=(e,t,n)=>{var d;if(!(Vce.match(e)||SP.match(e)||jc.match(e)||Gce.match(e)||wP.match(e))||wP.match(e)&&((d=n.controlNet.controlNets[e.payload.controlNetId])==null?void 0:d.shouldAutoConfig)===!0)return!1;const i=t.controlNet.controlNets[e.payload.controlNetId];if(!i)return!1;const{controlImage:o,processorType:s,shouldAutoConfig:a}=i;if(SP.match(e)&&!a)return!1;const l=s!=="none",u=t.system.isProcessing;return l&&!u&&!!o},Ube=()=>{xe({predicate:zbe,effect:async(e,{dispatch:t,cancelActiveListeners:n,delay:r})=>{const i=pe("session"),{controlNetId:o}=e.payload;n(),i.trace("ControlNet auto-process triggered"),await r(300),t(HE({controlNetId:o}))}})},Yc=Me("system/sessionReadyToInvoke"),Ez=e=>(e==null?void 0:e.type)==="image_output",jbe=()=>{xe({actionCreator:HE,effect:async(e,{dispatch:t,getState:n,take:r})=>{const i=pe("session"),{controlNetId:o}=e.payload,s=n().controlNet.controlNets[o];if(!(s!=null&&s.controlImage)){i.error("Unable to process ControlNet image");return}const a={nodes:{[s.processorNode.id]:{...s.processorNode,is_intermediate:!0,image:{image_name:s.controlImage}}}},l=t(Si({graph:a})),[u]=await r(f=>Si.fulfilled.match(f)&&f.meta.requestId===l.requestId),c=u.payload.id;t(Yc());const[d]=await r(f=>jE.match(f)&&f.payload.data.graph_execution_state_id===c);if(Ez(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(qE({controlNetId:o,processedControlImage:p.image_name}))}}})},Vbe=()=>{xe({matcher:he.endpoints.addImageToBoard.matchFulfilled,effect:e=>{const t=pe("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Image added to board")}})},Gbe=()=>{xe({matcher:he.endpoints.addImageToBoard.matchRejected,effect:e=>{const t=pe("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Problem adding image to board")}})},IT=Me("deleteImageModal/imageDeletionConfirmed"),A9e=Li(e=>e,e=>e.gallery.selection[e.gallery.selection.length-1],gT),Tz=Li([e=>e],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{board_id:t,categories:n==="images"?Kr:Ul,offset:0,limit:Gne,is_intermediate:!1}},gT),Hbe=()=>{xe({actionCreator:IT,effect:async(e,{dispatch:t,getState:n,condition:r})=>{var f;const{imageDTOs:i,imagesUsage:o}=e.payload;if(i.length!==1||o.length!==1)return;const s=i[0],a=o[0];if(!s||!a)return;t(WE(!1));const l=n(),u=(f=l.gallery.selection[l.gallery.selection.length-1])==null?void 0:f.image_name;if(s&&(s==null?void 0:s.image_name)===u){const{image_name:h}=s,p=Tz(l),{data:m}=he.endpoints.listImages.select(p)(l),b=m?Mn.getSelectors().selectAll(m):[],_=b.findIndex(S=>S.image_name===h),v=b.filter(S=>S.image_name!==h),g=Bl(_,0,v.length-1),y=v[g];t(ca(y||null))}a.isCanvasImage&&t(yE()),i.forEach(h=>{var p;((p=n().generation.initialImage)==null?void 0:p.imageName)===h.image_name&&t(mE()),ns(n().controlNet.controlNets,m=>{(m.controlImage===h.image_name||m.processedControlImage===h.image_name)&&(t(jc({controlNetId:m.controlNetId,controlImage:null})),t(qE({controlNetId:m.controlNetId,processedControlImage:null})))}),n().nodes.nodes.forEach(m=>{qr(m)&&ns(m.data.inputs,b=>{var _;b.type==="ImageField"&&((_=b.value)==null?void 0:_.image_name)===h.image_name&&t(Rb({nodeId:m.data.id,fieldName:b.name,value:void 0}))})})});const{requestId:c}=t(he.endpoints.deleteImage.initiate(s));await r(h=>he.endpoints.deleteImage.matchFulfilled(h)&&h.meta.requestId===c,3e4)&&t(gu.util.invalidateTags([{type:"Board",id:s.board_id}]))}})},qbe=()=>{xe({actionCreator:IT,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTOs:r,imagesUsage:i}=e.payload;if(!(r.length<=1||i.length<=1))try{await t(he.endpoints.deleteImages.initiate({imageDTOs:r})).unwrap();const o=n(),s=Tz(o),{data:a}=he.endpoints.listImages.select(s)(o),l=a?Mn.getSelectors().selectAll(a)[0]:void 0;t(ca(l||null)),t(WE(!1)),i.some(u=>u.isCanvasImage)&&t(yE()),r.forEach(u=>{var c;((c=n().generation.initialImage)==null?void 0:c.imageName)===u.image_name&&t(mE()),ns(n().controlNet.controlNets,d=>{(d.controlImage===u.image_name||d.processedControlImage===u.image_name)&&(t(jc({controlNetId:d.controlNetId,controlImage:null})),t(qE({controlNetId:d.controlNetId,processedControlImage:null})))}),n().nodes.nodes.forEach(d=>{qr(d)&&ns(d.data.inputs,f=>{var h;f.type==="ImageField"&&((h=f.value)==null?void 0:h.image_name)===u.image_name&&t(Rb({nodeId:d.data.id,fieldName:f.name,value:void 0}))})})})}catch{}}})},Wbe=()=>{xe({matcher:he.endpoints.deleteImage.matchPending,effect:()=>{}})},Kbe=()=>{xe({matcher:he.endpoints.deleteImage.matchFulfilled,effect:e=>{pe("images").debug({imageDTO:e.meta.arg.originalArgs},"Image deleted")}})},Xbe=()=>{xe({matcher:he.endpoints.deleteImage.matchRejected,effect:e=>{pe("images").debug({imageDTO:e.meta.arg.originalArgs},"Unable to delete image")}})},Az=Me("dnd/dndDropped"),Qbe=()=>{xe({actionCreator:Az,effect:async(e,{dispatch:t})=>{const n=pe("dnd"),{activeData:r,overData:i}=e.payload;if(r.payloadType==="IMAGE_DTO"?n.debug({activeData:r,overData:i},"Image dropped"):r.payloadType==="IMAGE_DTOS"?n.debug({activeData:r,overData:i},`Images (${r.payload.imageDTOs.length}) dropped`):r.payloadType==="NODE_FIELD"?n.debug({activeData:pn(r),overData:pn(i)},"Node field dropped"):n.debug({activeData:r,overData:i},"Unknown payload dropped"),i.actionType==="ADD_FIELD_TO_LINEAR"&&r.payloadType==="NODE_FIELD"){const{nodeId:o,field:s}=r.payload;t(zme({nodeId:o,fieldName:s.name}))}if(i.actionType==="SET_CURRENT_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(ca(r.payload.imageDTO));return}if(i.actionType==="SET_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(O_(r.payload.imageDTO));return}if(i.actionType==="SET_CONTROLNET_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{controlNetId:o}=i.context;t(jc({controlImage:r.payload.imageDTO.image_name,controlNetId:o}));return}if(i.actionType==="SET_CANVAS_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(dD(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(Rb({nodeId:s,fieldName:o,value:r.payload.imageDTO}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload,{boardId:s}=i.context;t(he.endpoints.addImageToBoard.initiate({imageDTO:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload;t(he.endpoints.removeImageFromBoard.initiate({imageDTO:o}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload,{boardId:s}=i.context;t(he.endpoints.addImagesToBoard.initiate({imageDTOs:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload;t(he.endpoints.removeImagesFromBoard.initiate({imageDTOs:o}));return}}})},Ybe=()=>{xe({matcher:he.endpoints.removeImageFromBoard.matchFulfilled,effect:e=>{const t=pe("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Image removed from board")}})},Zbe=()=>{xe({matcher:he.endpoints.removeImageFromBoard.matchRejected,effect:e=>{const t=pe("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Problem removing image from board")}})},Jbe=()=>{xe({actionCreator:Kce,effect:async(e,{dispatch:t,getState:n})=>{const r=e.payload,i=n(),{shouldConfirmOnDelete:o}=i.system,s=y0e(n()),a=s.some(l=>l.isCanvasImage)||s.some(l=>l.isInitialImage)||s.some(l=>l.isControlNetImage)||s.some(l=>l.isNodesImage);if(o||a){t(WE(!0));return}t(IT({imageDTOs:r,imagesUsage:s}))}})},vd={title:"Image Uploaded",status:"success"},eSe=()=>{xe({matcher:he.endpoints.uploadImage.matchFulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=pe("images"),i=e.payload,o=n(),{autoAddBoardId:s}=o.gallery;r.debug({imageDTO:i},"Image uploaded");const{postUploadAction:a}=e.meta.arg.originalArgs;if(!(e.payload.is_intermediate&&!a)){if((a==null?void 0:a.type)==="TOAST"){const{toastOptions:l}=a;if(!s||s==="none")t(Fn({...vd,...l}));else{t(he.endpoints.addImageToBoard.initiate({board_id:s,imageDTO:i}));const{data:u}=fi.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(Fn({...vd,description:d}))}return}if((a==null?void 0:a.type)==="SET_CANVAS_INITIAL_IMAGE"){t(dD(i)),t(Fn({...vd,description:"Set as canvas initial image"}));return}if((a==null?void 0:a.type)==="SET_CONTROLNET_IMAGE"){const{controlNetId:l}=a;t(jc({controlNetId:l,controlImage:i.image_name})),t(Fn({...vd,description:"Set as control image"}));return}if((a==null?void 0:a.type)==="SET_INITIAL_IMAGE"){t(O_(i)),t(Fn({...vd,description:"Set as initial image"}));return}if((a==null?void 0:a.type)==="SET_NODES_IMAGE"){const{nodeId:l,fieldName:u}=a;t(Rb({nodeId:l,fieldName:u,value:i})),t(Fn({...vd,description:`Set as node field ${u}`}));return}}}})},tSe=()=>{xe({matcher:he.endpoints.uploadImage.matchRejected,effect:(e,{dispatch:t})=>{const n=pe("images"),r={arg:{...A_(e.meta.arg.originalArgs,["file","postUploadAction"]),file:""}};n.error({...r},"Image upload failed"),t(Fn({title:"Image Upload Failed",description:e.error.message,status:"error"}))}})},nSe=()=>{xe({matcher:he.endpoints.starImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!0}):s.push(a)}),t(G$(s))}})},rSe=()=>{xe({matcher:he.endpoints.unstarImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!1}):s.push(a)}),t(G$(s))}})},iSe=Me("generation/initialImageSelected"),oSe=Me("generation/modelSelected"),sSe=()=>{xe({actionCreator:iSe,effect:(e,{dispatch:t})=>{if(!e.payload){t(Fn(ra({title:Sp("toast.imageNotLoadedDesc"),status:"error"})));return}t(O_(e.payload)),t(Fn(ra(Sp("toast.sentToImageToImage"))))}})},aSe=()=>{xe({actionCreator:oSe,effect:(e,{getState:t,dispatch:n})=>{var l,u;const r=pe("models"),i=t(),o=Sm.safeParse(e.payload);if(!o.success){r.error({error:o.error.format()},"Failed to parse main model");return}const s=o.data,{base_model:a}=s;if(((l=i.generation.model)==null?void 0:l.base_model)!==a){let c=0;ns(i.lora.loras,(h,p)=>{h.base_model!==a&&(n(q$(p)),c+=1)});const{vae:d}=i.generation;d&&d.base_model!==a&&(n(sD(null)),c+=1);const{controlNets:f}=i.controlNet;ns(f,(h,p)=>{var m;((m=h.model)==null?void 0:m.base_model)!==a&&(n(F$({controlNetId:p})),c+=1)}),c>0&&n(Fn(ra({title:`Base model changed, cleared ${c} incompatible submodel${c===1?"":"s"}`,status:"warning"})))}((u=i.generation.model)==null?void 0:u.base_model)!==s.base_model&&i.ui.shouldAutoChangeDimensions&&(["sdxl","sdxl-refiner"].includes(s.base_model)?(n(Vk(1024)),n(Gk(1024)),n(Hk({width:1024,height:1024}))):(n(Vk(512)),n(Gk(512)),n(Hk({width:512,height:512})))),n(zl(s))}})},Ug=Eu({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),gR=Eu({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),mR=Eu({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),yR=Eu({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),vR=Eu({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),i3=Eu({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),lSe=({base_model:e,model_type:t,model_name:n})=>`${e}/${t}/${n}`,_d=e=>{const t=[];return e.forEach(n=>{const r={...Yn(n),id:lSe(n)};t.push(r)}),t},ja=gu.injectEndpoints({endpoints:e=>({getOnnxModels:e.query({query:t=>{const n={model_type:"onnx",base_models:t};return`models/?${M0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"OnnxModel",id:ht}];return t&&n.push(...t.ids.map(r=>({type:"OnnxModel",id:r}))),n},transformResponse:t=>{const n=_d(t.models);return gR.setAll(gR.getInitialState(),n)}}),getMainModels:e.query({query:t=>{const n={model_type:"main",base_models:t};return`models/?${M0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"MainModel",id:ht}];return t&&n.push(...t.ids.map(r=>({type:"MainModel",id:r}))),n},transformResponse:t=>{const n=_d(t.models);return Ug.setAll(Ug.getInitialState(),n)}}),updateMainModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/main/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"OnnxModel",id:ht}]}),importMainModels:e.mutation({query:({body:t})=>({url:"models/import",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"OnnxModel",id:ht}]}),addMainModels:e.mutation({query:({body:t})=>({url:"models/add",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"OnnxModel",id:ht}]}),deleteMainModels:e.mutation({query:({base_model:t,model_name:n,model_type:r})=>({url:`models/${t}/${r}/${n}`,method:"DELETE"}),invalidatesTags:[{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"OnnxModel",id:ht}]}),convertMainModels:e.mutation({query:({base_model:t,model_name:n,convert_dest_directory:r})=>({url:`models/convert/${t}/main/${n}`,method:"PUT",params:{convert_dest_directory:r}}),invalidatesTags:[{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"OnnxModel",id:ht}]}),mergeMainModels:e.mutation({query:({base_model:t,body:n})=>({url:`models/merge/${t}`,method:"PUT",body:n}),invalidatesTags:[{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"OnnxModel",id:ht}]}),syncModels:e.mutation({query:()=>({url:"models/sync",method:"POST"}),invalidatesTags:[{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"OnnxModel",id:ht}]}),getLoRAModels:e.query({query:()=>({url:"models/",params:{model_type:"lora"}}),providesTags:t=>{const n=[{type:"LoRAModel",id:ht}];return t&&n.push(...t.ids.map(r=>({type:"LoRAModel",id:r}))),n},transformResponse:t=>{const n=_d(t.models);return mR.setAll(mR.getInitialState(),n)}}),updateLoRAModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/lora/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"LoRAModel",id:ht}]}),deleteLoRAModels:e.mutation({query:({base_model:t,model_name:n})=>({url:`models/${t}/lora/${n}`,method:"DELETE"}),invalidatesTags:[{type:"LoRAModel",id:ht}]}),getControlNetModels:e.query({query:()=>({url:"models/",params:{model_type:"controlnet"}}),providesTags:t=>{const n=[{type:"ControlNetModel",id:ht}];return t&&n.push(...t.ids.map(r=>({type:"ControlNetModel",id:r}))),n},transformResponse:t=>{const n=_d(t.models);return yR.setAll(yR.getInitialState(),n)}}),getVaeModels:e.query({query:()=>({url:"models/",params:{model_type:"vae"}}),providesTags:t=>{const n=[{type:"VaeModel",id:ht}];return t&&n.push(...t.ids.map(r=>({type:"VaeModel",id:r}))),n},transformResponse:t=>{const n=_d(t.models);return i3.setAll(i3.getInitialState(),n)}}),getTextualInversionModels:e.query({query:()=>({url:"models/",params:{model_type:"embedding"}}),providesTags:t=>{const n=[{type:"TextualInversionModel",id:ht}];return t&&n.push(...t.ids.map(r=>({type:"TextualInversionModel",id:r}))),n},transformResponse:t=>{const n=_d(t.models);return vR.setAll(vR.getInitialState(),n)}}),getModelsInFolder:e.query({query:t=>({url:`/models/search?${M0.stringify(t,{})}`}),providesTags:t=>{const n=[{type:"ScannedModels",id:ht}];return t&&n.push(...t.map(r=>({type:"ScannedModels",id:r}))),n}}),getCheckpointConfigs:e.query({query:()=>({url:"/models/ckpt_confs"})})})}),{useGetMainModelsQuery:k9e,useGetOnnxModelsQuery:P9e,useGetControlNetModelsQuery:R9e,useGetLoRAModelsQuery:O9e,useGetTextualInversionModelsQuery:I9e,useGetVaeModelsQuery:M9e,useUpdateMainModelsMutation:N9e,useDeleteMainModelsMutation:D9e,useImportMainModelsMutation:L9e,useAddMainModelsMutation:$9e,useConvertMainModelsMutation:F9e,useMergeMainModelsMutation:B9e,useDeleteLoRAModelsMutation:z9e,useUpdateLoRAModelsMutation:U9e,useSyncModelsMutation:j9e,useGetModelsInFolderQuery:V9e,useGetCheckpointConfigsQuery:G9e}=ja,uSe=()=>{xe({predicate:e=>ja.endpoints.getMainModels.matchFulfilled(e)&&!e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=pe("models");r.info({models:e.payload.entities},`Main models loaded (${e.payload.ids.length})`);const i=t().generation.model,o=Ug.getSelectors().selectAll(e.payload);if(o.length===0){n(zl(null));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=Sm.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse main model");return}n(zl(a.data))}}),xe({predicate:e=>ja.endpoints.getMainModels.matchFulfilled(e)&&e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=pe("models");r.info({models:e.payload.entities},`SDXL Refiner models loaded (${e.payload.ids.length})`);const i=t().sdxl.refinerModel,o=Ug.getSelectors().selectAll(e.payload);if(o.length===0){n(g8(null)),n(Gme(!1));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=gE.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse SDXL Refiner Model");return}n(g8(a.data))}}),xe({matcher:ja.endpoints.getVaeModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=pe("models");r.info({models:e.payload.entities},`VAEs loaded (${e.payload.ids.length})`);const i=t().generation.vae;if(i===null||yp(e.payload.entities,l=>(l==null?void 0:l.model_name)===(i==null?void 0:i.model_name)&&(l==null?void 0:l.base_model)===(i==null?void 0:i.base_model)))return;const s=i3.getSelectors().selectAll(e.payload)[0];if(!s){n(zl(null));return}const a=sne.safeParse(s);if(!a.success){r.error({error:a.error.format()},"Failed to parse VAE model");return}n(sD(a.data))}}),xe({matcher:ja.endpoints.getLoRAModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{pe("models").info({models:e.payload.entities},`LoRAs loaded (${e.payload.ids.length})`);const i=t().lora.loras;ns(i,(o,s)=>{yp(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(q$(s))})}}),xe({matcher:ja.endpoints.getControlNetModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{pe("models").info({models:e.payload.entities},`ControlNet models loaded (${e.payload.ids.length})`);const i=t().controlNet.controlNets;ns(i,(o,s)=>{yp(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(F$({controlNetId:s}))})}}),xe({matcher:ja.endpoints.getTextualInversionModels.matchFulfilled,effect:async e=>{pe("models").info({models:e.payload.entities},`Embeddings loaded (${e.payload.ids.length})`)}})},bd=e=>e.$ref.split("/").slice(-1)[0],cSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"integer",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},dSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"IntegerPolymorphic",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},fSe=({schemaObject:e,baseField:t})=>{const n=B7(e.item_default)&&fee(e.item_default)?e.item_default:0;return{...t,type:"IntegerCollection",default:e.default??[],item_default:n}},hSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"float",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},pSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"FloatPolymorphic",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},gSe=({schemaObject:e,baseField:t})=>{const n=B7(e.item_default)?e.item_default:0;return{...t,type:"FloatCollection",default:e.default??[],item_default:n}},mSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"string",default:e.default??""};return e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern!==void 0&&(n.pattern=e.pattern),n},ySe=({schemaObject:e,baseField:t})=>{const n={...t,type:"StringPolymorphic",default:e.default??""};return e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern!==void 0&&(n.pattern=e.pattern),n},vSe=({schemaObject:e,baseField:t})=>{const n=F7(e.item_default)?e.item_default:"";return{...t,type:"StringCollection",default:e.default??[],item_default:n}},_Se=({schemaObject:e,baseField:t})=>({...t,type:"boolean",default:e.default??!1}),bSe=({schemaObject:e,baseField:t})=>({...t,type:"BooleanPolymorphic",default:e.default??!1}),SSe=({schemaObject:e,baseField:t})=>{const n=e.item_default&&dee(e.item_default)?e.item_default:!1;return{...t,type:"BooleanCollection",default:e.default??[],item_default:n}},wSe=({schemaObject:e,baseField:t})=>({...t,type:"MainModelField",default:e.default??void 0}),xSe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLMainModelField",default:e.default??void 0}),CSe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLRefinerModelField",default:e.default??void 0}),ESe=({schemaObject:e,baseField:t})=>({...t,type:"VaeModelField",default:e.default??void 0}),TSe=({schemaObject:e,baseField:t})=>({...t,type:"LoRAModelField",default:e.default??void 0}),ASe=({schemaObject:e,baseField:t})=>({...t,type:"ControlNetModelField",default:e.default??void 0}),kSe=({schemaObject:e,baseField:t})=>({...t,type:"ImageField",default:e.default??void 0}),PSe=({schemaObject:e,baseField:t})=>({...t,type:"ImagePolymorphic",default:e.default??void 0}),RSe=({schemaObject:e,baseField:t})=>({...t,type:"ImageCollection",default:e.default??[],item_default:e.item_default??void 0}),OSe=({schemaObject:e,baseField:t})=>({...t,type:"DenoiseMaskField",default:e.default??void 0}),ISe=({schemaObject:e,baseField:t})=>({...t,type:"LatentsField",default:e.default??void 0}),MSe=({schemaObject:e,baseField:t})=>({...t,type:"LatentsPolymorphic",default:e.default??void 0}),NSe=({schemaObject:e,baseField:t})=>({...t,type:"LatentsCollection",default:e.default??[],item_default:e.item_default??void 0}),DSe=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningField",default:e.default??void 0}),LSe=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningPolymorphic",default:e.default??void 0}),$Se=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningCollection",default:e.default??[],item_default:e.item_default??void 0}),FSe=({schemaObject:e,baseField:t})=>({...t,type:"UNetField",default:e.default??void 0}),BSe=({schemaObject:e,baseField:t})=>({...t,type:"ClipField",default:e.default??void 0}),zSe=({schemaObject:e,baseField:t})=>({...t,type:"VaeField",default:e.default??void 0}),USe=({schemaObject:e,baseField:t})=>({...t,type:"ControlField",default:e.default??void 0}),jSe=({schemaObject:e,baseField:t})=>({...t,type:"ControlPolymorphic",default:e.default??void 0}),VSe=({schemaObject:e,baseField:t})=>({...t,type:"ControlCollection",default:e.default??[],item_default:e.item_default??void 0}),GSe=({schemaObject:e,baseField:t})=>{const n=e.enum??[];return{...t,type:"enum",enumType:e.type??"string",options:n,default:e.default??n[0]}},HSe=({baseField:e})=>({...e,type:"Collection",default:[]}),qSe=({baseField:e})=>({...e,type:"CollectionItem",default:void 0}),WSe=({schemaObject:e,baseField:t})=>({...t,type:"ColorField",default:e.default??{r:127,g:127,b:127,a:255}}),KSe=({schemaObject:e,baseField:t})=>({...t,type:"ColorPolymorphic",default:e.default??{r:127,g:127,b:127,a:255}}),XSe=({schemaObject:e,baseField:t})=>({...t,type:"ColorCollection",default:e.default??[]}),QSe=({schemaObject:e,baseField:t})=>({...t,type:"Scheduler",default:e.default??"euler"}),_R=e=>{if(e!=null&&e.ui_type)return e.ui_type;if(e.type){if(e.enum)return"enum";if(e.type){if(e.type==="number")return"float";if(e.type==="array"){const t=Vre(e.items)?e.items.type:bd(e.items);return Dme(t)?pB[t]:void 0}else return e.type}}else if(e.allOf){const t=e.allOf;if(t&&t[0]&&Ph(t[0]))return bd(t[0])}else if(e.anyOf){const t=e.anyOf;let n,r;if(Wk(t[0])){const i=t[0].items,o=t[1];Ph(i)&&Ph(o)?(n=bd(i),r=bd(o)):Cy(i)&&Cy(o)&&(n=i.type,r=o.type)}else if(Wk(t[1])){const i=t[0],o=t[1].items;Ph(i)&&Ph(o)?(n=bd(i),r=bd(o)):Cy(i)&&Cy(o)&&(n=i.type,r=o.type)}if(n===r&&Lme(n))return gB[n]}},kz={boolean:_Se,BooleanCollection:SSe,BooleanPolymorphic:bSe,ClipField:BSe,Collection:HSe,CollectionItem:qSe,ColorCollection:XSe,ColorField:WSe,ColorPolymorphic:KSe,ConditioningCollection:$Se,ConditioningField:DSe,ConditioningPolymorphic:LSe,ControlCollection:VSe,ControlField:USe,ControlNetModelField:ASe,ControlPolymorphic:jSe,DenoiseMaskField:OSe,enum:GSe,float:hSe,FloatCollection:gSe,FloatPolymorphic:pSe,ImageCollection:RSe,ImageField:kSe,ImagePolymorphic:PSe,integer:cSe,IntegerCollection:fSe,IntegerPolymorphic:dSe,LatentsCollection:NSe,LatentsField:ISe,LatentsPolymorphic:MSe,LoRAModelField:TSe,MainModelField:wSe,Scheduler:QSe,SDXLMainModelField:xSe,SDXLRefinerModelField:CSe,string:mSe,StringCollection:vSe,StringPolymorphic:ySe,UNetField:FSe,VaeField:zSe,VaeModelField:ESe},YSe=e=>!!(e&&e in kz),ZSe=(e,t,n,r)=>{var d;const{input:i,ui_hidden:o,ui_component:s,ui_type:a,ui_order:l}=t,u={input:Nme.includes(r)?"connection":i,ui_hidden:o,ui_component:s,ui_type:a,required:((d=e.required)==null?void 0:d.includes(n))??!1,ui_order:l},c={name:n,title:t.title??"",description:t.description??"",fieldKind:"input",...u};if(YSe(r))return kz[r]({schemaObject:t,baseField:c})},JSe=["id","type","metadata"],e2e=["type"],t2e=["WorkflowField","MetadataField","IsIntermediate"],n2e=["graph","metadata_accumulator"],r2e=(e,t)=>!!(JSe.includes(t)||e==="collect"&&t==="collection"||e==="iterate"&&t==="index"),i2e=e=>!!t2e.includes(e),o2e=(e,t)=>!e2e.includes(t),s2e=e=>!n2e.includes(e.properties.type.default),a2e=e=>{var r;return Object.values(((r=e.components)==null?void 0:r.schemas)??{}).filter(Gre).filter(s2e).reduce((i,o)=>{var _,v;const s=o.properties.type.default,a=o.title.replace("Invocation",""),l=o.tags??[],u=o.description??"",c=o.version,d=aC(o.properties,(g,y,S)=>{if(r2e(s,S))return pe("nodes").trace({node:s,fieldName:S,field:pn(y)},"Skipped reserved input field"),g;if(!Kk(y))return pe("nodes").warn({node:s,propertyName:S,property:pn(y)},"Unhandled input property"),g;const w=_R(y);if(!qk(w))return pe("nodes").warn({node:s,fieldName:S,fieldType:w,field:pn(y)},"Skipping unknown input field type"),g;if(i2e(w))return pe("nodes").trace({node:s,fieldName:S,fieldType:w,field:pn(y)},"Skipping reserved field type"),g;const x=ZSe(o,y,S,w);return x?(g[S]=x,g):(pe("nodes").debug({node:s,fieldName:S,fieldType:w,field:pn(y)},"Skipping input field with no template"),g)},{}),f=o.output.$ref.split("/").pop();if(!f)return pe("nodes").warn({outputRefObject:pn(o.output)},"No output schema name found in ref object"),i;const h=(v=(_=e.components)==null?void 0:_.schemas)==null?void 0:v[f];if(!h)return pe("nodes").warn({outputSchemaName:f},"Output schema not found"),i;if(!Hre(h))return pe("nodes").error({outputSchema:pn(h)},"Invalid output schema"),i;const p=h.properties.type.default,m=aC(h.properties,(g,y,S)=>{if(!o2e(s,S))return pe("nodes").trace({type:s,propertyName:S,property:pn(y)},"Skipped reserved output field"),g;if(!Kk(y))return pe("nodes").warn({type:s,propertyName:S,property:pn(y)},"Unhandled output property"),g;const w=_R(y);return qk(w)?(g[S]={fieldKind:"output",name:S,title:y.title??"",description:y.description??"",type:w,ui_hidden:y.ui_hidden??!1,ui_type:y.ui_type,ui_order:y.ui_order},g):(pe("nodes").warn({fieldName:S,fieldType:w,field:pn(y)},"Skipping unknown output field type"),g)},{}),b={title:a,type:s,version:c,tags:l,description:u,outputType:p,inputs:d,outputs:m};return Object.assign(i,{[s]:b}),i},{})},l2e=()=>{xe({actionCreator:Lg.fulfilled,effect:(e,{dispatch:t})=>{const n=pe("system"),r=e.payload;n.debug({schemaJSON:r},"Received OpenAPI schema");const i=a2e(r);n.debug({nodeTemplates:pn(i)},`Built ${k_(i)} node templates`),t(vB(i))}}),xe({actionCreator:Lg.rejected,effect:e=>{pe("system").error({error:pn(e.error)},"Problem retrieving OpenAPI Schema")}})},u2e=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),c2e=new Map(u2e),d2e=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],o3=new WeakSet,f2e=e=>{o3.add(e);const t=e.toJSON();return o3.delete(e),t},h2e=e=>c2e.get(e)??Error,Pz=({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&&bR(e)){const u=h2e(e.name);n=new u}else n={};if(t.push(e),o>=i)return n;if(s&&typeof e.toJSON=="function"&&!o3.has(e))return f2e(e);const l=u=>Pz({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 d2e)typeof e[u]<"u"&&e[u]!==null&&Object.defineProperty(n,u,{value:bR(e[u])?l(e[u]):e[u],enumerable:r?!0:c,configurable:!0,writable:!0});return n};function MT(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return typeof e=="object"&&e!==null?Pz({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):typeof e=="function"?`[Function: ${e.name??"anonymous"}]`:e}function bR(e){return!!e&&typeof e=="object"&&"name"in e&&"message"in e&&"stack"in e}const p2e=()=>{xe({actionCreator:Au.pending,effect:()=>{}})},g2e=()=>{xe({actionCreator:Au.fulfilled,effect:e=>{const t=pe("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session canceled (${n})`)}})},m2e=()=>{xe({actionCreator:Au.rejected,effect:e=>{const t=pe("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:MT(r)},"Problem canceling session")}}})},y2e=()=>{xe({actionCreator:Si.pending,effect:()=>{}})},v2e=()=>{xe({actionCreator:Si.fulfilled,effect:e=>{const t=pe("session"),n=e.payload;t.debug({session:pn(n)},`Session created (${n.id})`)}})},_2e=()=>{xe({actionCreator:Si.rejected,effect:e=>{const t=pe("session");if(e.payload){const{error:n,status:r}=e.payload,i=pn(e.meta.arg);t.error({graph:i,status:r,error:MT(n)},"Problem creating session")}}})},b2e=()=>{xe({actionCreator:nh.pending,effect:()=>{}})},S2e=()=>{xe({actionCreator:nh.fulfilled,effect:e=>{const t=pe("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session invoked (${n})`)}})},w2e=()=>{xe({actionCreator:nh.rejected,effect:e=>{const t=pe("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:MT(r)},"Problem invoking session")}}})},x2e=()=>{xe({actionCreator:Yc,effect:(e,{getState:t,dispatch:n})=>{const r=pe("session"),{sessionId:i}=t().system;i&&(r.debug({session_id:i},`Session ready to invoke (${i})})`),n(nh({session_id:i})))}})},C2e=()=>{xe({actionCreator:_$,effect:(e,{dispatch:t,getState:n})=>{pe("socketio").debug("Connected");const{nodes:i,config:o}=n(),{disabledTabs:s}=o;!k_(i.nodeTemplates)&&!s.includes("nodes")&&t(Lg()),t(b$(e.payload)),t(ja.util.invalidateTags([{type:"MainModel",id:ht},{type:"SDXLRefinerModel",id:ht},{type:"LoRAModel",id:ht},{type:"ControlNetModel",id:ht},{type:"VaeModel",id:ht},{type:"TextualInversionModel",id:ht},{type:"ScannedModels",id:ht}])),t(pT.util.invalidateTags(["AppConfig","AppVersion"]))}})},E2e=()=>{xe({actionCreator:S$,effect:(e,{dispatch:t})=>{pe("socketio").debug("Disconnected"),t(w$(e.payload))}})},T2e=()=>{xe({actionCreator:R$,effect:(e,{dispatch:t,getState:n})=>{const r=pe("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(GE(e.payload))}})},A2e=()=>{xe({actionCreator:k$,effect:(e,{dispatch:t})=>{pe("socketio").debug(e.payload,"Session complete"),t(P$(e.payload))}})},Be="positive_conditioning",Ve="negative_conditioning",Fe="denoise_latents",qe="latents_to_image",Ud="nsfw_checker",jh="invisible_watermark",we="noise",Dr="rand_int",Wn="range_of_size",rn="iterate",Nu="main_model_loader",AS="onnx_model_loader",Vs="vae_loader",Rz="lora_loader",jt="clip_skip",Dn="image_to_latents",ea="resize_image",ff="img2img_resize",me="canvas_output",Bn="inpaint_image",vi="inpaint_image_resize_up",Mi="inpaint_image_resize_down",Bt="inpaint_infill",Vl="inpaint_infill_resize_down",Ln="inpaint_create_mask",mt="canvas_coherence_denoise_latents",gn="canvas_coherence_noise",Ni="canvas_coherence_noise_increment",lr="canvas_coherence_mask_edge",Nt="canvas_coherence_inpaint_create_mask",hf="tomask",Ri="mask_blur",mi="mask_combine",$n="mask_resize_up",Di="mask_resize_down",Zy="control_net_collect",kw="dynamic_prompt",At="metadata_accumulator",SR="esrgan",Oi="sdxl_model_loader",Re="sdxl_denoise_latents",ju="sdxl_refiner_model_loader",Jy="sdxl_refiner_positive_conditioning",e0="sdxl_refiner_negative_conditioning",Gs="sdxl_refiner_denoise_latents",$a="refiner_inpaint_create_mask",$r="seamless",Es="refiner_seamless",Oz="text_to_image_graph",s3="image_to_image_graph",Iz="canvas_text_to_image_graph",a3="canvas_image_to_image_graph",kS="canvas_inpaint_graph",PS="canvas_outpaint_graph",NT="sdxl_text_to_image_graph",A1="sxdl_image_to_image_graph",RS="sdxl_canvas_text_to_image_graph",jg="sdxl_canvas_image_to_image_graph",Mc="sdxl_canvas_inpaint_graph",Nc="sdxl_canvas_outpaint_graph",k2e=["load_image"],P2e=()=>{xe({actionCreator:jE,effect:async(e,{dispatch:t,getState:n})=>{const r=pe("socketio"),{data:i}=e.payload;r.debug({data:pn(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(Au({session_id:o}));const{result:l,node:u,graph_execution_state_id:c}=i;if(Ez(l)&&!k2e.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&&[me].includes(i.source_node_id)&&t(Nne(p)),!p.is_intermediate){const{autoAddBoardId:m}=h;t(m&&m!=="none"?he.endpoints.addImageToBoard.initiate({board_id:m,imageDTO:p}):he.util.updateQueryData("listImages",{board_id:"none",categories:Kr},v=>{Mn.addOne(v,p)})),t(he.util.invalidateTags([{type:"BoardImagesTotal",id:m},{type:"BoardAssetsTotal",id:m}]));const{selectedBoardId:b,shouldAutoSwitch:_}=h;_&&(m&&m!==b?(t(RC(m)),t(o1("images"))):m||t(o1("images")),t(ca(p)))}t(hye(null))}t(VE(e.payload))}})},R2e=()=>{xe({actionCreator:A$,effect:(e,{dispatch:t})=>{pe("socketio").error(e.payload,`Invocation error (${e.payload.data.node.type})`),t(xb(e.payload))}})},O2e=()=>{xe({actionCreator:D$,effect:(e,{dispatch:t})=>{pe("socketio").error(e.payload,`Invocation retrieval error (${e.payload.data.graph_execution_state_id})`),t(L$(e.payload))}})},I2e=()=>{xe({actionCreator:T$,effect:(e,{dispatch:t,getState:n})=>{const r=pe("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(UE(e.payload))}})},M2e=()=>{xe({actionCreator:O$,effect:(e,{dispatch:t})=>{const n=pe("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(Uce(e.payload))}}),xe({actionCreator:I$,effect:(e,{dispatch:t})=>{const n=pe("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(jce(e.payload))}})},N2e=()=>{xe({actionCreator:M$,effect:(e,{dispatch:t})=>{pe("socketio").error(e.payload,`Session retrieval error (${e.payload.data.graph_execution_state_id})`),t(N$(e.payload))}})},D2e=()=>{xe({actionCreator:zE,effect:(e,{dispatch:t})=>{pe("socketio").debug(e.payload,"Subscribed"),t(x$(e.payload))}})},L2e=()=>{xe({actionCreator:C$,effect:(e,{dispatch:t})=>{pe("socketio").debug(e.payload,"Unsubscribed"),t(E$(e.payload))}})},$2e=()=>{xe({actionCreator:E0e,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&&o!=="none"&&await t(he.endpoints.addImageToBoard.initiate({imageDTO:i,board_id:o})),t(Fn({title:"Image Saved",status:"success"}))}catch(i){t(Fn({title:"Image Saving Failed",description:i==null?void 0:i.message,status:"error"}))}}})},H9e=["sd-1","sd-2","sdxl","sdxl-refiner"],F2e=["sd-1","sd-2","sdxl"],q9e=["sdxl"],W9e=["sd-1","sd-2"],K9e=["sdxl-refiner"],B2e=()=>{xe({actionCreator:IB,effect:async(e,{getState:t,dispatch:n})=>{var i;if(e.payload==="unifiedCanvas"){const o=(i=t().generation.model)==null?void 0:i.base_model;if(o&&["sd-1","sd-2","sdxl"].includes(o))return;try{const s=n(ja.endpoints.getMainModels.initiate(F2e)),a=await s.unwrap();if(s.unsubscribe(),!a.ids.length){n(zl(null));return}const u=Ug.getSelectors().selectAll(a).filter(h=>["sd-1","sd-2","sxdl"].includes(h.base_model))[0];if(!u){n(zl(null));return}const{base_model:c,model_name:d,model_type:f}=u;n(zl({base_model:c,model_name:d,model_type:f}))}catch{n(zl(null))}}}})},z2e=({image_name:e,esrganModelName:t})=>{const n={id:SR,type:"esrgan",image:{image_name:e},model_name:t,is_intermediate:!1};return{id:"adhoc-esrgan-graph",nodes:{[SR]:n},edges:[]}},U2e=Me("upscale/upscaleRequested"),j2e=()=>{xe({actionCreator:U2e,effect:async(e,{dispatch:t,getState:n,take:r})=>{const{image_name:i}=e.payload,{esrganModelName:o}=n().postprocessing,s=z2e({image_name:i,esrganModelName:o});t(Si({graph:s})),await r(Si.fulfilled.match),t(Yc())}})},V2e=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("

")})},wR=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)}),G2e=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}=G2e(e.data),i=H2e(t.data);return n?r?"txt2img":"outpaint":i?"inpaint":"img2img"},W2e=e=>oee(e,n=>n.isEnabled&&(!!n.processedControlImage||n.processorType==="none"&&!!n.controlImage)),as=(e,t,n)=>{const{isEnabled:r,controlNets:i}=e.controlNet,o=W2e(i),s=t.nodes[At];if(r&&o.length&&o.length){const a={id:Zy,type:"collect",is_intermediate:!0};t.nodes[Zy]=a,t.edges.push({source:{node_id:Zy,field:"collection"},destination:{node_id:n,field:"control"}}),o.forEach(l=>{const{controlNetId:u,controlImage:c,processedControlImage:d,beginStepPct:f,endStepPct:h,controlMode:p,resizeMode:m,model:b,processorType:_,weight:v}=l,g={id:`control_net_${u}`,type:"controlnet",is_intermediate:!0,begin_step_percent:f,end_step_percent:h,control_mode:p,resize_mode:m,control_model:b,control_weight:v};if(d&&_!=="none")g.image={image_name:d};else if(c)g.image={image_name:c};else return;if(t.nodes[g.id]=g,s!=null&&s.controlnets){const y=A_(g,["id","type"]);s.controlnets.push(y)}t.edges.push({source:{node_id:g.id,field:"control"},destination:{node_id:Zy,field:"item"}})})}},Du=(e,t)=>{const{positivePrompt:n,iterations:r,seed:i,shouldRandomizeSeed:o}=e.generation,{combinatorial:s,isEnabled:a,maxPrompts:l}=e.dynamicPrompts,u=t.nodes[At];if(a){Kee(t.nodes[Be],"prompt");const c={id:kw,type:"dynamic_prompt",is_intermediate:!0,max_prompts:s?l:r,combinatorial:s,prompt:n},d={id:rn,type:"iterate",is_intermediate:!0};if(t.nodes[kw]=c,t.nodes[rn]=d,t.edges.push({source:{node_id:kw,field:"collection"},destination:{node_id:rn,field:"collection"}},{source:{node_id:rn,field:"item"},destination:{node_id:Be,field:"prompt"}}),u&&t.edges.push({source:{node_id:rn,field:"item"},destination:{node_id:At,field:"positive_prompt"}}),o){const f={id:Dr,type:"rand_int",is_intermediate:!0};t.nodes[Dr]=f,t.edges.push({source:{node_id:Dr,field:"value"},destination:{node_id:we,field:"seed"}}),u&&t.edges.push({source:{node_id:Dr,field:"value"},destination:{node_id:At,field:"seed"}})}else t.nodes[we].seed=i,u&&(u.seed=i)}else{u&&(u.positive_prompt=n);const c={id:Wn,type:"range_of_size",is_intermediate:!0,size:r,step:1},d={id:rn,type:"iterate",is_intermediate:!0};if(t.nodes[rn]=d,t.nodes[Wn]=c,t.edges.push({source:{node_id:Wn,field:"collection"},destination:{node_id:rn,field:"collection"}}),t.edges.push({source:{node_id:rn,field:"item"},destination:{node_id:we,field:"seed"}}),u&&t.edges.push({source:{node_id:rn,field:"item"},destination:{node_id:At,field:"seed"}}),o){const f={id:Dr,type:"rand_int",is_intermediate:!0};t.nodes[Dr]=f,t.edges.push({source:{node_id:Dr,field:"value"},destination:{node_id:Wn,field:"start"}})}else c.start=i}},fh=(e,t,n,r=Nu)=>{const{loras:i}=e.lora,o=k_(i),s=t.nodes[At];o>0&&(t.edges=t.edges.filter(u=>!(u.source.node_id===r&&["unet"].includes(u.source.field))),t.edges=t.edges.filter(u=>!(u.source.node_id===jt&&["clip"].includes(u.source.field))));let a="",l=0;ns(i,u=>{const{model_name:c,base_model:d,weight:f}=u,h=`${Rz}_${c.replace(".","_")}`,p={type:"lora_loader",id:h,is_intermediate:!0,lora:{model_name:c,base_model:d},weight:f};s!=null&&s.loras&&s.loras.push({lora:{model_name:c,base_model:d},weight:f}),t.nodes[h]=p,l===0?(t.edges.push({source:{node_id:r,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:jt,field:"clip"},destination:{node_id:h,field:"clip"}})):(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:a,field:"clip"},destination:{node_id:h,field:"clip"}})),l===o-1&&(t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[kS,PS].includes(t.id)&&t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:mt,field:"unet"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:Be,field:"clip"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:Ve,field:"clip"}})),a=h,l+=1})},DT=Li(e=>e.ui,e=>PB[e.activeTab],{memoizeOptions:{equalityCheck:_m}}),X9e=Li(e=>e.ui,e=>e.activeTab,{memoizeOptions:{equalityCheck:_m}}),Q9e=Li(e=>e.ui,e=>e,{memoizeOptions:{equalityCheck:_m}}),ls=(e,t,n=qe)=>{const i=DT(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[At];if(!o)return;o.is_intermediate=!0;const a={id:Ud,type:"img_nsfw",is_intermediate:i};t.nodes[Ud]=a,t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Ud,field:"image"}}),s&&t.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:Ud,field:"metadata"}})},us=(e,t,n)=>{const{seamlessXAxis:r,seamlessYAxis:i}=e.generation;t.nodes[$r]={id:$r,type:"seamless",seamless_x:r,seamless_y:i};let o=Fe;(t.id===NT||t.id===A1||t.id===RS||t.id===jg||t.id===Mc||t.id===Nc)&&(o=Re),t.edges=t.edges.filter(s=>!(s.source.node_id===n&&["unet"].includes(s.source.field))&&!(s.source.node_id===n&&["vae"].includes(s.source.field))),t.edges.push({source:{node_id:n,field:"unet"},destination:{node_id:$r,field:"unet"}},{source:{node_id:n,field:"vae"},destination:{node_id:$r,field:"vae"}},{source:{node_id:$r,field:"unet"},destination:{node_id:o,field:"unet"}}),(t.id==kS||t.id===PS||t.id===Mc||t.id===Nc)&&t.edges.push({source:{node_id:$r,field:"unet"},destination:{node_id:mt,field:"unet"}})},cs=(e,t,n=Nu)=>{const{vae:r,canvasCoherenceMode:i}=e.generation,{boundingBoxScaleMethod:o}=e.canvas,{shouldUseSDXLRefiner:s}=e.sdxl,a=["auto","manual"].includes(o),l=!r,u=t.nodes[At];l||(t.nodes[Vs]={type:"vae_loader",id:Vs,is_intermediate:!0,vae_model:r});const c=n==AS;(t.id===Oz||t.id===s3||t.id===NT||t.id===A1)&&t.edges.push({source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:qe,field:"vae"}}),(t.id===Iz||t.id===a3||t.id===RS||t.id==jg)&&t.edges.push({source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:a?qe:me,field:"vae"}}),(t.id===s3||t.id===A1||t.id===a3||t.id===jg)&&t.edges.push({source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Dn,field:"vae"}}),(t.id===kS||t.id===PS||t.id===Mc||t.id===Nc)&&(t.edges.push({source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Bn,field:"vae"}},{source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Ln,field:"vae"}},{source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:qe,field:"vae"}}),i!=="unmasked"&&t.edges.push({source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Nt,field:"vae"}})),s&&(t.id===Mc||t.id===Nc)&&t.edges.push({source:{node_id:l?n:Vs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:$a,field:"vae"}}),r&&u&&(u.vae=r)},ds=(e,t,n=qe)=>{const i=DT(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Ud],a=t.nodes[At];if(!o)return;const l={id:jh,type:"img_watermark",is_intermediate:i};t.nodes[jh]=l,o.is_intermediate=!0,s?(s.is_intermediate=!0,t.edges.push({source:{node_id:Ud,field:"image"},destination:{node_id:jh,field:"image"}})):t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:jh,field:"image"}}),a&&t.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:jh,field:"metadata"}})},K2e=(e,t)=>{const n=pe("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,img2imgStrength:u,vaePrecision:c,clipSkip:d,shouldUseCpuNoise:f,shouldUseNoiseSettings:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{width:b,height:_}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:v,boundingBoxScaleMethod:g,shouldAutoSave:y}=e.canvas,S=c==="fp32",w=["auto","manual"].includes(g);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let x=Nu;const E=h?f:$s.shouldUseCpuNoise,A={id:a3,nodes:{[x]:{type:"main_model_loader",id:x,is_intermediate:!0,model:o},[jt]:{type:"clip_skip",id:jt,is_intermediate:!0,skipped_layers:d},[Be]:{type:"compel",id:Be,is_intermediate:!0,prompt:r},[Ve]:{type:"compel",id:Ve,is_intermediate:!0,prompt:i},[we]:{type:"noise",id:we,is_intermediate:!0,use_cpu:E,width:w?v.width:b,height:w?v.height:_},[Dn]:{type:"i2l",id:Dn,is_intermediate:!0},[Fe]:{type:"denoise_latents",id:Fe,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:1-u,denoising_end:1},[me]:{type:"l2i",id:me,is_intermediate:!y}},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:Fe,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:jt,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Fe,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Fe,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Fe,field:"noise"}},{source:{node_id:Dn,field:"latents"},destination:{node_id:Fe,field:"latents"}}]};return w?(A.nodes[ff]={id:ff,type:"img_resize",is_intermediate:!0,image:t,width:v.width,height:v.height},A.nodes[qe]={id:qe,type:"l2i",is_intermediate:!0,fp32:S},A.nodes[me]={id:me,type:"img_resize",is_intermediate:!y,width:b,height:_},A.edges.push({source:{node_id:ff,field:"image"},destination:{node_id:Dn,field:"image"}},{source:{node_id:Fe,field:"latents"},destination:{node_id:qe,field:"latents"}},{source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}})):(A.nodes[me]={type:"l2i",id:me,is_intermediate:!y,fp32:S},A.nodes[Dn].image=t,A.edges.push({source:{node_id:Fe,field:"latents"},destination:{node_id:me,field:"latents"}})),A.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:w?v.width:b,height:w?v.height:_,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:E?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:d,strength:u,init_image:t.image_name},A.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:me,field:"metadata"}}),(p||m)&&(us(e,A,x),x=$r),fh(e,A,Fe),cs(e,A,x),Du(e,A),as(e,A,Fe),e.system.shouldUseNSFWChecker&&ls(e,A,me),e.system.shouldUseWatermarker&&ds(e,A,me),A},X2e=(e,t,n)=>{const r=pe("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,maskBlurMethod:v,canvasCoherenceMode:g,canvasCoherenceSteps:y,canvasCoherenceStrength:S,clipSkip:w,seamlessXAxis:x,seamlessYAxis:E}=e.generation;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:A,height:T}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:k,boundingBoxScaleMethod:L,shouldAutoSave:N}=e.canvas,C=p==="fp32",P=["auto","manual"].includes(L);let D=Nu;const B=b,R={id:kS,nodes:{[D]:{type:"main_model_loader",id:D,is_intermediate:!0,model:s},[jt]:{type:"clip_skip",id:jt,is_intermediate:!0,skipped_layers:w},[Be]:{type:"compel",id:Be,is_intermediate:!0,prompt:i},[Ve]:{type:"compel",id:Ve,is_intermediate:!0,prompt:o},[Ri]:{type:"img_blur",id:Ri,is_intermediate:!0,radius:_,blur_type:v},[Bn]:{type:"i2l",id:Bn,is_intermediate:!0,fp32:C},[we]:{type:"noise",id:we,use_cpu:B,is_intermediate:!0},[Ln]:{type:"create_denoise_mask",id:Ln,is_intermediate:!0,fp32:C},[Fe]:{type:"denoise_latents",id:Fe,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[gn]:{type:"noise",id:we,use_cpu:B,is_intermediate:!0},[Ni]:{type:"add",id:Ni,b:1,is_intermediate:!0},[mt]:{type:"denoise_latents",id:mt,is_intermediate:!0,steps:y,cfg_scale:a,scheduler:l,denoising_start:1-S,denoising_end:1},[qe]:{type:"l2i",id:qe,is_intermediate:!0,fp32:C},[me]:{type:"color_correct",id:me,is_intermediate:!N,reference:t},[Wn]:{type:"range_of_size",id:Wn,is_intermediate:!0,size:d,step:1},[rn]:{type:"iterate",id:rn,is_intermediate:!0}},edges:[{source:{node_id:D,field:"unet"},destination:{node_id:Fe,field:"unet"}},{source:{node_id:D,field:"clip"},destination:{node_id:jt,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Fe,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Fe,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Fe,field:"noise"}},{source:{node_id:Bn,field:"latents"},destination:{node_id:Fe,field:"latents"}},{source:{node_id:Ri,field:"image"},destination:{node_id:Ln,field:"mask"}},{source:{node_id:Ln,field:"denoise_mask"},destination:{node_id:Fe,field:"denoise_mask"}},{source:{node_id:Wn,field:"collection"},destination:{node_id:rn,field:"collection"}},{source:{node_id:rn,field:"item"},destination:{node_id:we,field:"seed"}},{source:{node_id:rn,field:"item"},destination:{node_id:Ni,field:"a"}},{source:{node_id:Ni,field:"value"},destination:{node_id:gn,field:"seed"}},{source:{node_id:D,field:"unet"},destination:{node_id:mt,field:"unet"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:mt,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:mt,field:"negative_conditioning"}},{source:{node_id:gn,field:"noise"},destination:{node_id:mt,field:"noise"}},{source:{node_id:Fe,field:"latents"},destination:{node_id:mt,field:"latents"}},{source:{node_id:mt,field:"latents"},destination:{node_id:qe,field:"latents"}}]};if(P){const O=k.width,I=k.height;R.nodes[vi]={type:"img_resize",id:vi,is_intermediate:!0,width:O,height:I,image:t},R.nodes[$n]={type:"img_resize",id:$n,is_intermediate:!0,width:O,height:I,image:n},R.nodes[Mi]={type:"img_resize",id:Mi,is_intermediate:!0,width:A,height:T},R.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:A,height:T},R.nodes[we].width=O,R.nodes[we].height=I,R.nodes[gn].width=O,R.nodes[gn].height=I,R.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:$n,field:"image"},destination:{node_id:Ri,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:Ln,field:"image"}},{source:{node_id:qe,field:"image"},destination:{node_id:Mi,field:"image"}},{source:{node_id:Mi,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:Ri,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:me,field:"mask"}})}else R.nodes[we].width=A,R.nodes[we].height=T,R.nodes[gn].width=A,R.nodes[gn].height=T,R.nodes[Bn]={...R.nodes[Bn],image:t},R.nodes[Ri]={...R.nodes[Ri],image:n},R.nodes[Ln]={...R.nodes[Ln],image:t},R.edges.push({source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:Ri,field:"image"},destination:{node_id:me,field:"mask"}});if(g!=="unmasked"&&(R.nodes[Nt]={type:"create_denoise_mask",id:Nt,is_intermediate:!0,fp32:C},P?R.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Nt,field:"image"}}):R.nodes[Nt]={...R.nodes[Nt],image:t},g==="mask"&&(P?R.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:Nt,field:"mask"}}):R.nodes[Nt]={...R.nodes[Nt],mask:n}),g==="edge"&&(R.nodes[lr]={type:"mask_edge",id:lr,is_intermediate:!0,edge_blur:_,edge_size:_*2,low_threshold:100,high_threshold:200},P?R.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:lr,field:"image"}}):R.nodes[lr]={...R.nodes[lr],image:n},R.edges.push({source:{node_id:lr,field:"image"},destination:{node_id:Nt,field:"mask"}})),R.edges.push({source:{node_id:Nt,field:"denoise_mask"},destination:{node_id:mt,field:"denoise_mask"}})),h){const O={id:Dr,type:"rand_int"};R.nodes[Dr]=O,R.edges.push({source:{node_id:Dr,field:"value"},destination:{node_id:Wn,field:"start"}})}else R.nodes[Wn].start=f;return(x||E)&&(us(e,R,D),D=$r),cs(e,R,D),fh(e,R,Fe,D),as(e,R,Fe),e.system.shouldUseNSFWChecker&&ls(e,R,me),e.system.shouldUseWatermarker&&ds(e,R,me),R},Q2e=(e,t,n)=>{const r=pe("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,canvasCoherenceMode:v,canvasCoherenceSteps:g,canvasCoherenceStrength:y,infillTileSize:S,infillPatchmatchDownscaleSize:w,infillMethod:x,clipSkip:E,seamlessXAxis:A,seamlessYAxis:T}=e.generation;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:k,height:L}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:N,boundingBoxScaleMethod:C,shouldAutoSave:P}=e.canvas,D=p==="fp32",B=["auto","manual"].includes(C);let R=Nu;const O=b,I={id:PS,nodes:{[R]:{type:"main_model_loader",id:R,is_intermediate:!0,model:s},[jt]:{type:"clip_skip",id:jt,is_intermediate:!0,skipped_layers:E},[Be]:{type:"compel",id:Be,is_intermediate:!0,prompt:i},[Ve]:{type:"compel",id:Ve,is_intermediate:!0,prompt:o},[hf]:{type:"tomask",id:hf,is_intermediate:!0,image:t},[mi]:{type:"mask_combine",id:mi,is_intermediate:!0,mask2:n},[Bn]:{type:"i2l",id:Bn,is_intermediate:!0,fp32:D},[we]:{type:"noise",id:we,use_cpu:O,is_intermediate:!0},[Ln]:{type:"create_denoise_mask",id:Ln,is_intermediate:!0,fp32:D},[Fe]:{type:"denoise_latents",id:Fe,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[gn]:{type:"noise",id:we,use_cpu:O,is_intermediate:!0},[Ni]:{type:"add",id:Ni,b:1,is_intermediate:!0},[mt]:{type:"denoise_latents",id:mt,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-y,denoising_end:1},[qe]:{type:"l2i",id:qe,is_intermediate:!0,fp32:D},[me]:{type:"color_correct",id:me,is_intermediate:!P},[Wn]:{type:"range_of_size",id:Wn,is_intermediate:!0,size:d,step:1},[rn]:{type:"iterate",id:rn,is_intermediate:!0}},edges:[{source:{node_id:R,field:"unet"},destination:{node_id:Fe,field:"unet"}},{source:{node_id:R,field:"clip"},destination:{node_id:jt,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:Bt,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:hf,field:"image"},destination:{node_id:mi,field:"mask1"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Fe,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Fe,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Fe,field:"noise"}},{source:{node_id:Bn,field:"latents"},destination:{node_id:Fe,field:"latents"}},{source:{node_id:B?$n:mi,field:"image"},destination:{node_id:Ln,field:"mask"}},{source:{node_id:Ln,field:"denoise_mask"},destination:{node_id:Fe,field:"denoise_mask"}},{source:{node_id:Wn,field:"collection"},destination:{node_id:rn,field:"collection"}},{source:{node_id:rn,field:"item"},destination:{node_id:we,field:"seed"}},{source:{node_id:rn,field:"item"},destination:{node_id:Ni,field:"a"}},{source:{node_id:Ni,field:"value"},destination:{node_id:gn,field:"seed"}},{source:{node_id:R,field:"unet"},destination:{node_id:mt,field:"unet"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:mt,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:mt,field:"negative_conditioning"}},{source:{node_id:gn,field:"noise"},destination:{node_id:mt,field:"noise"}},{source:{node_id:Fe,field:"latents"},destination:{node_id:mt,field:"latents"}},{source:{node_id:Bt,field:"image"},destination:{node_id:Ln,field:"image"}},{source:{node_id:mt,field:"latents"},destination:{node_id:qe,field:"latents"}}]};if(x==="patchmatch"&&(I.nodes[Bt]={type:"infill_patchmatch",id:Bt,is_intermediate:!0,downscale:w}),x==="lama"&&(I.nodes[Bt]={type:"infill_lama",id:Bt,is_intermediate:!0}),x==="cv2"&&(I.nodes[Bt]={type:"infill_cv2",id:Bt,is_intermediate:!0}),x==="tile"&&(I.nodes[Bt]={type:"infill_tile",id:Bt,is_intermediate:!0,tile_size:S}),B){const F=N.width,U=N.height;I.nodes[vi]={type:"img_resize",id:vi,is_intermediate:!0,width:F,height:U,image:t},I.nodes[$n]={type:"img_resize",id:$n,is_intermediate:!0,width:F,height:U},I.nodes[Mi]={type:"img_resize",id:Mi,is_intermediate:!0,width:k,height:L},I.nodes[Vl]={type:"img_resize",id:Vl,is_intermediate:!0,width:k,height:L},I.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:k,height:L},I.nodes[we].width=F,I.nodes[we].height=U,I.nodes[gn].width=F,I.nodes[gn].height=U,I.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Bt,field:"image"}},{source:{node_id:mi,field:"image"},destination:{node_id:$n,field:"image"}},{source:{node_id:qe,field:"image"},destination:{node_id:Mi,field:"image"}},{source:{node_id:$n,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Bt,field:"image"},destination:{node_id:Vl,field:"image"}},{source:{node_id:Vl,field:"image"},destination:{node_id:me,field:"reference"}},{source:{node_id:Mi,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:me,field:"mask"}})}else I.nodes[Bt]={...I.nodes[Bt],image:t},I.nodes[we].width=k,I.nodes[we].height=L,I.nodes[gn].width=k,I.nodes[gn].height=L,I.nodes[Bn]={...I.nodes[Bn],image:t},I.edges.push({source:{node_id:Bt,field:"image"},destination:{node_id:me,field:"reference"}},{source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:mi,field:"image"},destination:{node_id:me,field:"mask"}});if(v!=="unmasked"&&(I.nodes[Nt]={type:"create_denoise_mask",id:Nt,is_intermediate:!0,fp32:D},I.edges.push({source:{node_id:Bt,field:"image"},destination:{node_id:Nt,field:"image"}}),v==="mask"&&(B?I.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:Nt,field:"mask"}}):I.edges.push({source:{node_id:mi,field:"image"},destination:{node_id:Nt,field:"mask"}})),v==="edge"&&(I.nodes[lr]={type:"mask_edge",id:lr,is_intermediate:!0,edge_blur:_,edge_size:_*2,low_threshold:100,high_threshold:200},B?I.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:lr,field:"image"}}):I.edges.push({source:{node_id:mi,field:"image"},destination:{node_id:lr,field:"image"}}),I.edges.push({source:{node_id:lr,field:"image"},destination:{node_id:Nt,field:"mask"}})),I.edges.push({source:{node_id:Nt,field:"denoise_mask"},destination:{node_id:mt,field:"denoise_mask"}})),h){const F={id:Dr,type:"rand_int"};I.nodes[Dr]=F,I.edges.push({source:{node_id:Dr,field:"value"},destination:{node_id:Wn,field:"start"}})}else I.nodes[Wn].start=f;return(A||T)&&(us(e,I,R),R=$r),cs(e,I,R),fh(e,I,Fe,R),as(e,I,Fe),e.system.shouldUseNSFWChecker&&ls(e,I,me),e.system.shouldUseWatermarker&&ds(e,I,me),I},hh=(e,t,n,r=Oi)=>{const{loras:i}=e.lora,o=k_(i),s=t.nodes[At],a=r;let l=r;[$r,$a].includes(r)&&(l=Oi),o>0&&(t.edges=t.edges.filter(d=>!(d.source.node_id===a&&["unet"].includes(d.source.field))&&!(d.source.node_id===l&&["clip"].includes(d.source.field))&&!(d.source.node_id===l&&["clip2"].includes(d.source.field))));let u="",c=0;ns(i,d=>{const{model_name:f,base_model:h,weight:p}=d,m=`${Rz}_${f.replace(".","_")}`,b={type:"sdxl_lora_loader",id:m,is_intermediate:!0,lora:{model_name:f,base_model:h},weight:p};s&&(s.loras||(s.loras=[]),s.loras.push({lora:{model_name:f,base_model:h},weight:p})),t.nodes[m]=b,c===0?(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:l,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:l,field:"clip2"},destination:{node_id:m,field:"clip2"}})):(t.edges.push({source:{node_id:u,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:u,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:u,field:"clip2"},destination:{node_id:m,field:"clip2"}})),c===o-1&&(t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[Mc,Nc].includes(t.id)&&t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:mt,field:"unet"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:Be,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:Ve,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:Be,field:"clip2"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:Ve,field:"clip2"}})),u=m,c+=1})},Zc=(e,t)=>{const{positivePrompt:n,negativePrompt:r}=e.generation,{positiveStylePrompt:i,negativeStylePrompt:o}=e.sdxl;let s=i,a=o;return t&&(i.length>0?s=`${n} ${i}`:s=n,o.length>0?a=`${r} ${o}`:a=r),{craftedPositiveStylePrompt:s,craftedNegativeStylePrompt:a}},ph=(e,t,n,r,i)=>{const{refinerModel:o,refinerPositiveAestheticScore:s,refinerNegativeAestheticScore:a,refinerSteps:l,refinerScheduler:u,refinerCFGScale:c,refinerStart:d}=e.sdxl,{seamlessXAxis:f,seamlessYAxis:h,vaePrecision:p}=e.generation,{boundingBoxScaleMethod:m}=e.canvas,b=p==="fp32",_=["auto","manual"].includes(m);if(!o)return;const v=t.nodes[At];v&&(v.refiner_model=o,v.refiner_positive_aesthetic_score=s,v.refiner_negative_aesthetic_score=a,v.refiner_cfg_scale=c,v.refiner_scheduler=u,v.refiner_start=d,v.refiner_steps=l);const g=r||Oi,{craftedPositiveStylePrompt:y,craftedNegativeStylePrompt:S}=Zc(e,!0);t.edges=t.edges.filter(w=>!(w.source.node_id===n&&["latents"].includes(w.source.field))),t.edges=t.edges.filter(w=>!(w.source.node_id===g&&["vae"].includes(w.source.field))),t.nodes[ju]={type:"sdxl_refiner_model_loader",id:ju,model:o},t.nodes[Jy]={type:"sdxl_refiner_compel_prompt",id:Jy,style:y,aesthetic_score:s},t.nodes[e0]={type:"sdxl_refiner_compel_prompt",id:e0,style:S,aesthetic_score:a},t.nodes[Gs]={type:"denoise_latents",id:Gs,cfg_scale:c,steps:l,scheduler:u,denoising_start:d,denoising_end:1},f||h?(t.nodes[Es]={id:Es,type:"seamless",seamless_x:f,seamless_y:h},t.edges.push({source:{node_id:ju,field:"unet"},destination:{node_id:Es,field:"unet"}},{source:{node_id:ju,field:"vae"},destination:{node_id:Es,field:"vae"}},{source:{node_id:Es,field:"unet"},destination:{node_id:Gs,field:"unet"}})):t.edges.push({source:{node_id:ju,field:"unet"},destination:{node_id:Gs,field:"unet"}}),t.edges.push({source:{node_id:ju,field:"clip2"},destination:{node_id:Jy,field:"clip2"}},{source:{node_id:ju,field:"clip2"},destination:{node_id:e0,field:"clip2"}},{source:{node_id:Jy,field:"conditioning"},destination:{node_id:Gs,field:"positive_conditioning"}},{source:{node_id:e0,field:"conditioning"},destination:{node_id:Gs,field:"negative_conditioning"}},{source:{node_id:n,field:"latents"},destination:{node_id:Gs,field:"latents"}}),(t.id===Mc||t.id===Nc)&&(t.nodes[$a]={type:"create_denoise_mask",id:$a,is_intermediate:!0,fp32:b},_?t.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:$a,field:"image"}}):t.nodes[$a]={...t.nodes[$a],image:i},t.edges.push({source:{node_id:_?$n:mi,field:"image"},destination:{node_id:$a,field:"mask"}},{source:{node_id:$a,field:"denoise_mask"},destination:{node_id:Gs,field:"denoise_mask"}})),t.id===RS||t.id===jg?t.edges.push({source:{node_id:Gs,field:"latents"},destination:{node_id:_?qe:me,field:"latents"}}):t.edges.push({source:{node_id:Gs,field:"latents"},destination:{node_id:qe,field:"latents"}})},Y2e=(e,t)=>{const n=pe("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,vaePrecision:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,seamlessXAxis:h,seamlessYAxis:p}=e.generation,{shouldUseSDXLRefiner:m,refinerStart:b,sdxlImg2ImgDenoisingStrength:_,shouldConcatSDXLStylePrompt:v}=e.sdxl,{width:g,height:y}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:S,boundingBoxScaleMethod:w,shouldAutoSave:x}=e.canvas,E=u==="fp32",A=["auto","manual"].includes(w);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let T=Oi;const k=f?d:$s.shouldUseCpuNoise,{craftedPositiveStylePrompt:L,craftedNegativeStylePrompt:N}=Zc(e,v),C={id:jg,nodes:{[T]:{type:"sdxl_model_loader",id:T,model:o},[Be]:{type:"sdxl_compel_prompt",id:Be,prompt:r,style:L},[Ve]:{type:"sdxl_compel_prompt",id:Ve,prompt:i,style:N},[we]:{type:"noise",id:we,is_intermediate:!0,use_cpu:k,width:A?S.width:g,height:A?S.height:y},[Dn]:{type:"i2l",id:Dn,is_intermediate:!0,fp32:E},[Re]:{type:"denoise_latents",id:Re,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:m?Math.min(b,1-_):1-_,denoising_end:m?b:1}},edges:[{source:{node_id:T,field:"unet"},destination:{node_id:Re,field:"unet"}},{source:{node_id:T,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:T,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Ve,field:"clip2"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Re,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Re,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Re,field:"noise"}},{source:{node_id:Dn,field:"latents"},destination:{node_id:Re,field:"latents"}}]};return A?(C.nodes[ff]={id:ff,type:"img_resize",is_intermediate:!0,image:t,width:S.width,height:S.height},C.nodes[qe]={id:qe,type:"l2i",is_intermediate:!0,fp32:E},C.nodes[me]={id:me,type:"img_resize",is_intermediate:!x,width:g,height:y},C.edges.push({source:{node_id:ff,field:"image"},destination:{node_id:Dn,field:"image"}},{source:{node_id:Re,field:"latents"},destination:{node_id:qe,field:"latents"}},{source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}})):(C.nodes[me]={type:"l2i",id:me,is_intermediate:!x,fp32:E},C.nodes[Dn].image=t,C.edges.push({source:{node_id:Re,field:"latents"},destination:{node_id:me,field:"latents"}})),C.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:A?S.width:g,height:A?S.height:y,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:k?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:c,strength:_,init_image:t.image_name},C.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:me,field:"metadata"}}),(h||p)&&(us(e,C,T),T=$r),m&&(ph(e,C,Re,T),(h||p)&&(T=Es)),cs(e,C,T),hh(e,C,Re,T),Du(e,C),as(e,C,Re),e.system.shouldUseNSFWChecker&&ls(e,C,me),e.system.shouldUseWatermarker&&ds(e,C,me),C},Z2e=(e,t,n)=>{const r=pe("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,maskBlurMethod:_,canvasCoherenceMode:v,canvasCoherenceSteps:g,canvasCoherenceStrength:y,seamlessXAxis:S,seamlessYAxis:w}=e.generation,{sdxlImg2ImgDenoisingStrength:x,shouldUseSDXLRefiner:E,refinerStart:A,shouldConcatSDXLStylePrompt:T}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:k,height:L}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:N,boundingBoxScaleMethod:C,shouldAutoSave:P}=e.canvas,D=h==="fp32",B=["auto","manual"].includes(C);let R=Oi;const O=m,{craftedPositiveStylePrompt:I,craftedNegativeStylePrompt:F}=Zc(e,T),U={id:Mc,nodes:{[R]:{type:"sdxl_model_loader",id:R,model:s},[Be]:{type:"sdxl_compel_prompt",id:Be,prompt:i,style:I},[Ve]:{type:"sdxl_compel_prompt",id:Ve,prompt:o,style:F},[Ri]:{type:"img_blur",id:Ri,is_intermediate:!0,radius:b,blur_type:_},[Bn]:{type:"i2l",id:Bn,is_intermediate:!0,fp32:D},[we]:{type:"noise",id:we,use_cpu:O,is_intermediate:!0},[Ln]:{type:"create_denoise_mask",id:Ln,is_intermediate:!0,fp32:D},[Re]:{type:"denoise_latents",id:Re,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:E?Math.min(A,1-x):1-x,denoising_end:E?A:1},[gn]:{type:"noise",id:we,use_cpu:O,is_intermediate:!0},[Ni]:{type:"add",id:Ni,b:1,is_intermediate:!0},[mt]:{type:"denoise_latents",id:mt,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-y,denoising_end:1},[qe]:{type:"l2i",id:qe,is_intermediate:!0,fp32:D},[me]:{type:"color_correct",id:me,is_intermediate:!P,reference:t},[Wn]:{type:"range_of_size",id:Wn,is_intermediate:!0,size:c,step:1},[rn]:{type:"iterate",id:rn,is_intermediate:!0}},edges:[{source:{node_id:R,field:"unet"},destination:{node_id:Re,field:"unet"}},{source:{node_id:R,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:R,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:R,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:R,field:"clip2"},destination:{node_id:Ve,field:"clip2"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Re,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Re,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Re,field:"noise"}},{source:{node_id:Bn,field:"latents"},destination:{node_id:Re,field:"latents"}},{source:{node_id:Ri,field:"image"},destination:{node_id:Ln,field:"mask"}},{source:{node_id:Ln,field:"denoise_mask"},destination:{node_id:Re,field:"denoise_mask"}},{source:{node_id:Wn,field:"collection"},destination:{node_id:rn,field:"collection"}},{source:{node_id:rn,field:"item"},destination:{node_id:we,field:"seed"}},{source:{node_id:rn,field:"item"},destination:{node_id:Ni,field:"a"}},{source:{node_id:Ni,field:"value"},destination:{node_id:gn,field:"seed"}},{source:{node_id:R,field:"unet"},destination:{node_id:mt,field:"unet"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:mt,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:mt,field:"negative_conditioning"}},{source:{node_id:gn,field:"noise"},destination:{node_id:mt,field:"noise"}},{source:{node_id:Re,field:"latents"},destination:{node_id:mt,field:"latents"}},{source:{node_id:mt,field:"latents"},destination:{node_id:qe,field:"latents"}}]};if(B){const V=N.width,H=N.height;U.nodes[vi]={type:"img_resize",id:vi,is_intermediate:!0,width:V,height:H,image:t},U.nodes[$n]={type:"img_resize",id:$n,is_intermediate:!0,width:V,height:H,image:n},U.nodes[Mi]={type:"img_resize",id:Mi,is_intermediate:!0,width:k,height:L},U.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:k,height:L},U.nodes[we].width=V,U.nodes[we].height=H,U.nodes[gn].width=V,U.nodes[gn].height=H,U.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:$n,field:"image"},destination:{node_id:Ri,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:Ln,field:"image"}},{source:{node_id:qe,field:"image"},destination:{node_id:Mi,field:"image"}},{source:{node_id:Mi,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:Ri,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:me,field:"mask"}})}else U.nodes[we].width=k,U.nodes[we].height=L,U.nodes[gn].width=k,U.nodes[gn].height=L,U.nodes[Bn]={...U.nodes[Bn],image:t},U.nodes[Ri]={...U.nodes[Ri],image:n},U.nodes[Ln]={...U.nodes[Ln],image:t},U.edges.push({source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:Ri,field:"image"},destination:{node_id:me,field:"mask"}});if(v!=="unmasked"&&(U.nodes[Nt]={type:"create_denoise_mask",id:Nt,is_intermediate:!0,fp32:D},B?U.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Nt,field:"image"}}):U.nodes[Nt]={...U.nodes[Nt],image:t},v==="mask"&&(B?U.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:Nt,field:"mask"}}):U.nodes[Nt]={...U.nodes[Nt],mask:n}),v==="edge"&&(U.nodes[lr]={type:"mask_edge",id:lr,is_intermediate:!0,edge_blur:b,edge_size:b*2,low_threshold:100,high_threshold:200},B?U.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:lr,field:"image"}}):U.nodes[lr]={...U.nodes[lr],image:n},U.edges.push({source:{node_id:lr,field:"image"},destination:{node_id:Nt,field:"mask"}})),U.edges.push({source:{node_id:Nt,field:"denoise_mask"},destination:{node_id:mt,field:"denoise_mask"}})),f){const V={id:Dr,type:"rand_int"};U.nodes[Dr]=V,U.edges.push({source:{node_id:Dr,field:"value"},destination:{node_id:Wn,field:"start"}})}else U.nodes[Wn].start=d;return(S||w)&&(us(e,U,R),R=$r),E&&(ph(e,U,mt,R,t),(S||w)&&(R=Es)),cs(e,U,R),hh(e,U,Re,R),as(e,U,Re),e.system.shouldUseNSFWChecker&&ls(e,U,me),e.system.shouldUseWatermarker&&ds(e,U,me),U},J2e=(e,t,n)=>{const r=pe("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,canvasCoherenceMode:_,canvasCoherenceSteps:v,canvasCoherenceStrength:g,infillTileSize:y,infillPatchmatchDownscaleSize:S,infillMethod:w,seamlessXAxis:x,seamlessYAxis:E}=e.generation,{sdxlImg2ImgDenoisingStrength:A,shouldUseSDXLRefiner:T,refinerStart:k,shouldConcatSDXLStylePrompt:L}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:N,height:C}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:P,boundingBoxScaleMethod:D,shouldAutoSave:B}=e.canvas,R=h==="fp32",O=["auto","manual"].includes(D);let I=Oi;const F=m,{craftedPositiveStylePrompt:U,craftedNegativeStylePrompt:V}=Zc(e,L),H={id:Nc,nodes:{[Oi]:{type:"sdxl_model_loader",id:Oi,model:s},[Be]:{type:"sdxl_compel_prompt",id:Be,prompt:i,style:U},[Ve]:{type:"sdxl_compel_prompt",id:Ve,prompt:o,style:V},[hf]:{type:"tomask",id:hf,is_intermediate:!0,image:t},[mi]:{type:"mask_combine",id:mi,is_intermediate:!0,mask2:n},[Bn]:{type:"i2l",id:Bn,is_intermediate:!0,fp32:R},[we]:{type:"noise",id:we,use_cpu:F,is_intermediate:!0},[Ln]:{type:"create_denoise_mask",id:Ln,is_intermediate:!0,fp32:R},[Re]:{type:"denoise_latents",id:Re,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:T?Math.min(k,1-A):1-A,denoising_end:T?k:1},[gn]:{type:"noise",id:we,use_cpu:F,is_intermediate:!0},[Ni]:{type:"add",id:Ni,b:1,is_intermediate:!0},[mt]:{type:"denoise_latents",id:mt,is_intermediate:!0,steps:v,cfg_scale:a,scheduler:l,denoising_start:1-g,denoising_end:1},[qe]:{type:"l2i",id:qe,is_intermediate:!0,fp32:R},[me]:{type:"color_correct",id:me,is_intermediate:!B},[Wn]:{type:"range_of_size",id:Wn,is_intermediate:!0,size:c,step:1},[rn]:{type:"iterate",id:rn,is_intermediate:!0}},edges:[{source:{node_id:Oi,field:"unet"},destination:{node_id:Re,field:"unet"}},{source:{node_id:Oi,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:Oi,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:Oi,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:Oi,field:"clip2"},destination:{node_id:Ve,field:"clip2"}},{source:{node_id:Bt,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:hf,field:"image"},destination:{node_id:mi,field:"mask1"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Re,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Re,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Re,field:"noise"}},{source:{node_id:Bn,field:"latents"},destination:{node_id:Re,field:"latents"}},{source:{node_id:O?$n:mi,field:"image"},destination:{node_id:Ln,field:"mask"}},{source:{node_id:Ln,field:"denoise_mask"},destination:{node_id:Re,field:"denoise_mask"}},{source:{node_id:Wn,field:"collection"},destination:{node_id:rn,field:"collection"}},{source:{node_id:rn,field:"item"},destination:{node_id:we,field:"seed"}},{source:{node_id:rn,field:"item"},destination:{node_id:Ni,field:"a"}},{source:{node_id:Ni,field:"value"},destination:{node_id:gn,field:"seed"}},{source:{node_id:I,field:"unet"},destination:{node_id:mt,field:"unet"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:mt,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:mt,field:"negative_conditioning"}},{source:{node_id:gn,field:"noise"},destination:{node_id:mt,field:"noise"}},{source:{node_id:Re,field:"latents"},destination:{node_id:mt,field:"latents"}},{source:{node_id:Bt,field:"image"},destination:{node_id:Ln,field:"image"}},{source:{node_id:mt,field:"latents"},destination:{node_id:qe,field:"latents"}}]};if(w==="patchmatch"&&(H.nodes[Bt]={type:"infill_patchmatch",id:Bt,is_intermediate:!0,downscale:S}),w==="lama"&&(H.nodes[Bt]={type:"infill_lama",id:Bt,is_intermediate:!0}),w==="cv2"&&(H.nodes[Bt]={type:"infill_cv2",id:Bt,is_intermediate:!0}),w==="tile"&&(H.nodes[Bt]={type:"infill_tile",id:Bt,is_intermediate:!0,tile_size:y}),O){const Y=P.width,Q=P.height;H.nodes[vi]={type:"img_resize",id:vi,is_intermediate:!0,width:Y,height:Q,image:t},H.nodes[$n]={type:"img_resize",id:$n,is_intermediate:!0,width:Y,height:Q},H.nodes[Mi]={type:"img_resize",id:Mi,is_intermediate:!0,width:N,height:C},H.nodes[Vl]={type:"img_resize",id:Vl,is_intermediate:!0,width:N,height:C},H.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:N,height:C},H.nodes[we].width=Y,H.nodes[we].height=Q,H.nodes[gn].width=Y,H.nodes[gn].height=Q,H.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Bt,field:"image"}},{source:{node_id:mi,field:"image"},destination:{node_id:$n,field:"image"}},{source:{node_id:qe,field:"image"},destination:{node_id:Mi,field:"image"}},{source:{node_id:$n,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Bt,field:"image"},destination:{node_id:Vl,field:"image"}},{source:{node_id:Vl,field:"image"},destination:{node_id:me,field:"reference"}},{source:{node_id:Mi,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:me,field:"mask"}})}else H.nodes[Bt]={...H.nodes[Bt],image:t},H.nodes[we].width=N,H.nodes[we].height=C,H.nodes[gn].width=N,H.nodes[gn].height=C,H.nodes[Bn]={...H.nodes[Bn],image:t},H.edges.push({source:{node_id:Bt,field:"image"},destination:{node_id:me,field:"reference"}},{source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}},{source:{node_id:mi,field:"image"},destination:{node_id:me,field:"mask"}});if(_!=="unmasked"&&(H.nodes[Nt]={type:"create_denoise_mask",id:Nt,is_intermediate:!0,fp32:R},H.edges.push({source:{node_id:Bt,field:"image"},destination:{node_id:Nt,field:"image"}}),_==="mask"&&(O?H.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:Nt,field:"mask"}}):H.edges.push({source:{node_id:mi,field:"image"},destination:{node_id:Nt,field:"mask"}})),_==="edge"&&(H.nodes[lr]={type:"mask_edge",id:lr,is_intermediate:!0,edge_blur:b,edge_size:b*2,low_threshold:100,high_threshold:200},O?H.edges.push({source:{node_id:$n,field:"image"},destination:{node_id:lr,field:"image"}}):H.edges.push({source:{node_id:mi,field:"image"},destination:{node_id:lr,field:"image"}}),H.edges.push({source:{node_id:lr,field:"image"},destination:{node_id:Nt,field:"mask"}})),H.edges.push({source:{node_id:Nt,field:"denoise_mask"},destination:{node_id:mt,field:"denoise_mask"}})),f){const Y={id:Dr,type:"rand_int"};H.nodes[Dr]=Y,H.edges.push({source:{node_id:Dr,field:"value"},destination:{node_id:Wn,field:"start"}})}else H.nodes[Wn].start=d;return(x||E)&&(us(e,H,I),I=$r),T&&(ph(e,H,mt,I,t),(x||E)&&(I=Es)),cs(e,H,I),hh(e,H,Re,I),as(e,H,Re),e.system.shouldUseNSFWChecker&&ls(e,H,me),e.system.shouldUseWatermarker&&ds(e,H,me),H},ewe=e=>{const t=pe("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:v}=e.canvas,g=l==="fp32",y=["auto","manual"].includes(_),{shouldUseSDXLRefiner:S,refinerStart:w,shouldConcatSDXLStylePrompt:x}=e.sdxl;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const E=d?c:$s.shouldUseCpuNoise,A=i.model_type==="onnx";let T=A?AS:Oi;const k=A?"onnx_model_loader":"sdxl_model_loader",L=A?{type:"t2l_onnx",id:Re,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Re,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:S?w:1},{craftedPositiveStylePrompt:N,craftedNegativeStylePrompt:C}=Zc(e,x),P={id:RS,nodes:{[T]:{type:k,id:T,is_intermediate:!0,model:i},[Be]:{type:A?"prompt_onnx":"sdxl_compel_prompt",id:Be,is_intermediate:!0,prompt:n,style:N},[Ve]:{type:A?"prompt_onnx":"sdxl_compel_prompt",id:Ve,is_intermediate:!0,prompt:r,style:C},[we]:{type:"noise",id:we,is_intermediate:!0,width:y?b.width:p,height:y?b.height:m,use_cpu:E},[L.id]:L},edges:[{source:{node_id:T,field:"unet"},destination:{node_id:Re,field:"unet"}},{source:{node_id:T,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:T,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Ve,field:"clip2"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Re,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Re,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Re,field:"noise"}}]};return y?(P.nodes[qe]={id:qe,type:A?"l2i_onnx":"l2i",is_intermediate:!0,fp32:g},P.nodes[me]={id:me,type:"img_resize",is_intermediate:!v,width:p,height:m},P.edges.push({source:{node_id:Re,field:"latents"},destination:{node_id:qe,field:"latents"}},{source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}})):(P.nodes[me]={type:A?"l2i_onnx":"l2i",id:me,is_intermediate:!v,fp32:g},P.edges.push({source:{node_id:Re,field:"latents"},destination:{node_id:me,field:"latents"}})),P.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:y?b.width:p,height:y?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:E?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},P.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:me,field:"metadata"}}),(f||h)&&(us(e,P,T),T=$r),S&&(ph(e,P,Re,T),(f||h)&&(T=Es)),hh(e,P,Re,T),cs(e,P,T),Du(e,P),as(e,P,Re),e.system.shouldUseNSFWChecker&&ls(e,P,me),e.system.shouldUseWatermarker&&ds(e,P,me),P},twe=e=>{const t=pe("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:v}=e.canvas,g=l==="fp32",y=["auto","manual"].includes(_);if(!i)throw t.error("No model found in state"),new Error("No model found in state");const S=d?c:$s.shouldUseCpuNoise,w=i.model_type==="onnx";let x=w?AS:Nu;const E=w?"onnx_model_loader":"main_model_loader",A=w?{type:"t2l_onnx",id:Fe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Fe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},T={id:Iz,nodes:{[x]:{type:E,id:x,is_intermediate:!0,model:i},[jt]:{type:"clip_skip",id:jt,is_intermediate:!0,skipped_layers:u},[Be]:{type:w?"prompt_onnx":"compel",id:Be,is_intermediate:!0,prompt:n},[Ve]:{type:w?"prompt_onnx":"compel",id:Ve,is_intermediate:!0,prompt:r},[we]:{type:"noise",id:we,is_intermediate:!0,width:y?b.width:p,height:y?b.height:m,use_cpu:S},[A.id]:A},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:Fe,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:jt,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Fe,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Fe,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Fe,field:"noise"}}]};return y?(T.nodes[qe]={id:qe,type:w?"l2i_onnx":"l2i",is_intermediate:!0,fp32:g},T.nodes[me]={id:me,type:"img_resize",is_intermediate:!v,width:p,height:m},T.edges.push({source:{node_id:Fe,field:"latents"},destination:{node_id:qe,field:"latents"}},{source:{node_id:qe,field:"image"},destination:{node_id:me,field:"image"}})):(T.nodes[me]={type:w?"l2i_onnx":"l2i",id:me,is_intermediate:!v,fp32:g},T.edges.push({source:{node_id:Fe,field:"latents"},destination:{node_id:me,field:"latents"}})),T.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:y?b.width:p,height:y?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},T.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:me,field:"metadata"}}),(f||h)&&(us(e,T,x),x=$r),cs(e,T,x),fh(e,T,Fe,x),Du(e,T),as(e,T,Fe),e.system.shouldUseNSFWChecker&&ls(e,T,me),e.system.shouldUseWatermarker&&ds(e,T,me),T},nwe=(e,t,n,r)=>{let i;if(t==="txt2img")e.generation.model&&e.generation.model.base_model==="sdxl"?i=ewe(e):i=twe(e);else if(t==="img2img"){if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=Y2e(e,n):i=K2e(e,n)}else if(t==="inpaint"){if(!n||!r)throw new Error("Missing canvas init and mask images");e.generation.model&&e.generation.model.base_model==="sdxl"?i=Z2e(e,n,r):i=X2e(e,n,r)}else{if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=J2e(e,n,r):i=Q2e(e,n,r)}return i},rwe=()=>{xe({predicate:e=>Lm.match(e)&&e.payload==="unifiedCanvas",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=pe("session"),o=t(),{layerState:s,boundingBoxCoordinates:a,boundingBoxDimensions:l,isMaskEnabled:u,shouldPreserveMaskedArea:c}=o.canvas,d=await OT(s,a,l,u,c);if(!d){i.error("Unable to create canvas data");return}const{baseBlob:f,baseImageData:h,maskBlob:p,maskImageData:m}=d,b=q2e(h,m);if(o.system.enableImageDebugging){const x=await wR(f),E=await wR(p);V2e([{base64:E,caption:"mask b64"},{base64:x,caption:"image b64"}])}i.debug(`Generation mode: ${b}`);let _,v;["img2img","inpaint","outpaint"].includes(b)&&(_=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(b)&&(v=await n(he.endpoints.uploadImage.initiate({file:new File([p],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!0})).unwrap());const g=nwe(o,b,_,v);i.debug({graph:pn(g)},"Canvas graph built"),n(BB(g));const{requestId:y}=n(Si({graph:g})),[S]=await r(x=>Si.fulfilled.match(x)&&x.meta.requestId===y),w=S.payload.id;["img2img","inpaint"].includes(b)&&_&&n(he.endpoints.changeImageSessionId.initiate({imageDTO:_,session_id:w})),["inpaint"].includes(b)&&v&&n(he.endpoints.changeImageSessionId.initiate({imageDTO:v,session_id:w})),o.canvas.layerState.stagingArea.boundingBox||n($ne({sessionId:w,boundingBox:{...o.canvas.boundingBoxCoordinates,...o.canvas.boundingBoxDimensions}})),n(Fne(w)),n(Yc())}})},iwe=e=>{const t=pe("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,img2imgStrength:u,shouldFitToWidthHeight:c,width:d,height:f,clipSkip:h,shouldUseCpuNoise:p,shouldUseNoiseSettings:m,vaePrecision:b,seamlessXAxis:_,seamlessYAxis:v}=e.generation;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");const g=b==="fp32";let y=Nu;const S=m?p:$s.shouldUseCpuNoise,w={id:s3,nodes:{[y]:{type:"main_model_loader",id:y,model:i},[jt]:{type:"clip_skip",id:jt,skipped_layers:h},[Be]:{type:"compel",id:Be,prompt:n},[Ve]:{type:"compel",id:Ve,prompt:r},[we]:{type:"noise",id:we,use_cpu:S},[qe]:{type:"l2i",id:qe,fp32:g},[Fe]:{type:"denoise_latents",id:Fe,cfg_scale:o,scheduler:s,steps:a,denoising_start:1-u,denoising_end:1},[Dn]:{type:"i2l",id:Dn,fp32:g}},edges:[{source:{node_id:y,field:"unet"},destination:{node_id:Fe,field:"unet"}},{source:{node_id:y,field:"clip"},destination:{node_id:jt,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Fe,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Fe,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Fe,field:"noise"}},{source:{node_id:Dn,field:"latents"},destination:{node_id:Fe,field:"latents"}},{source:{node_id:Fe,field:"latents"},destination:{node_id:qe,field:"latents"}}]};if(c&&(l.width!==d||l.height!==f)){const x={id:ea,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:d,height:f};w.nodes[ea]=x,w.edges.push({source:{node_id:ea,field:"image"},destination:{node_id:Dn,field:"image"}}),w.edges.push({source:{node_id:ea,field:"width"},destination:{node_id:we,field:"width"}}),w.edges.push({source:{node_id:ea,field:"height"},destination:{node_id:we,field:"height"}})}else w.nodes[Dn].image={image_name:l.imageName},w.edges.push({source:{node_id:Dn,field:"width"},destination:{node_id:we,field:"width"}}),w.edges.push({source:{node_id:Dn,field:"height"},destination:{node_id:we,field:"height"}});return w.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:o,height:f,width:d,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:h,strength:u,init_image:l.imageName},w.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:qe,field:"metadata"}}),(_||v)&&(us(e,w,y),y=$r),cs(e,w,y),fh(e,w,Fe,y),Du(e,w),as(e,w,Fe),e.system.shouldUseNSFWChecker&&ls(e,w),e.system.shouldUseWatermarker&&ds(e,w),w},owe=e=>{const t=pe("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,shouldFitToWidthHeight:u,width:c,height:d,clipSkip:f,shouldUseCpuNoise:h,shouldUseNoiseSettings:p,vaePrecision:m,seamlessXAxis:b,seamlessYAxis:_}=e.generation,{positiveStylePrompt:v,negativeStylePrompt:g,shouldConcatSDXLStylePrompt:y,shouldUseSDXLRefiner:S,refinerStart:w,sdxlImg2ImgDenoisingStrength:x}=e.sdxl;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");const E=m==="fp32";let A=Oi;const T=p?h:$s.shouldUseCpuNoise,{craftedPositiveStylePrompt:k,craftedNegativeStylePrompt:L}=Zc(e,y),N={id:A1,nodes:{[A]:{type:"sdxl_model_loader",id:A,model:i},[Be]:{type:"sdxl_compel_prompt",id:Be,prompt:n,style:k},[Ve]:{type:"sdxl_compel_prompt",id:Ve,prompt:r,style:L},[we]:{type:"noise",id:we,use_cpu:T},[qe]:{type:"l2i",id:qe,fp32:E},[Re]:{type:"denoise_latents",id:Re,cfg_scale:o,scheduler:s,steps:a,denoising_start:S?Math.min(w,1-x):1-x,denoising_end:S?w:1},[Dn]:{type:"i2l",id:Dn,fp32:E}},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:Re,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Ve,field:"clip2"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Re,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Re,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Re,field:"noise"}},{source:{node_id:Dn,field:"latents"},destination:{node_id:Re,field:"latents"}},{source:{node_id:Re,field:"latents"},destination:{node_id:qe,field:"latents"}}]};if(u&&(l.width!==c||l.height!==d)){const C={id:ea,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:c,height:d};N.nodes[ea]=C,N.edges.push({source:{node_id:ea,field:"image"},destination:{node_id:Dn,field:"image"}}),N.edges.push({source:{node_id:ea,field:"width"},destination:{node_id:we,field:"width"}}),N.edges.push({source:{node_id:ea,field:"height"},destination:{node_id:we,field:"height"}})}else N.nodes[Dn].image={image_name:l.imageName},N.edges.push({source:{node_id:Dn,field:"width"},destination:{node_id:we,field:"width"}}),N.edges.push({source:{node_id:Dn,field:"height"},destination:{node_id:we,field:"height"}});return N.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"sdxl_img2img",cfg_scale:o,height:d,width:c,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:T?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:f,strength:x,init_image:l.imageName,positive_style_prompt:v,negative_style_prompt:g},N.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:qe,field:"metadata"}}),(b||_)&&(us(e,N,A),A=$r),S&&(ph(e,N,Re),(b||_)&&(A=Es)),cs(e,N,A),hh(e,N,Re,A),as(e,N,Re),Du(e,N),e.system.shouldUseNSFWChecker&&ls(e,N),e.system.shouldUseWatermarker&&ds(e,N),N},swe=()=>{xe({predicate:e=>Lm.match(e)&&e.payload==="img2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=pe("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=owe(o):a=iwe(o),n(FB(a)),i.debug({graph:pn(a)},"Image to Image graph built"),n(Si({graph:a})),await r(Si.fulfilled.match),n(Yc())}})},awe=/[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*/u;function lwe(e){return e.length===1?e[0].toString():e.reduce((t,n)=>{if(typeof n=="number")return t+"["+n.toString()+"]";if(n.includes('"'))return t+'["'+uwe(n)+'"]';if(!awe.test(n))return t+'["'+n+'"]';const r=t.length===0?"":".";return t+r+n},"")}function uwe(e){return e.replace(/"/g,'\\"')}function cwe(e){return e.length!==0}const dwe=99,Mz="; ",Nz=", or ",LT="Validation error",Dz=": ";class Lz extends Error{constructor(n,r=[]){super(n);XS(this,"details");XS(this,"name");this.details=r,this.name="ZodValidationError"}toString(){return this.message}}function $T(e,t,n){if(e.code==="invalid_union")return e.unionErrors.reduce((r,i)=>{const o=i.issues.map(s=>$T(s,t,n)).join(t);return r.includes(o)||r.push(o),r},[]).join(n);if(cwe(e.path)){if(e.path.length===1){const r=e.path[0];if(typeof r=="number")return`${e.message} at index ${r}`}return`${e.message} at "${lwe(e.path)}"`}return e.message}function $z(e,t,n){return t!==null?e.length>0?[t,e].join(n):t:e.length>0?e:LT}function Y9e(e,t={}){const{issueSeparator:n=Mz,unionSeparator:r=Nz,prefixSeparator:i=Dz,prefix:o=LT}=t,s=$T(e,n,r),a=$z(s,o,i);return new Lz(a,[e])}function xR(e,t={}){const{maxIssuesInMessage:n=dwe,issueSeparator:r=Mz,unionSeparator:i=Nz,prefixSeparator:o=Dz,prefix:s=LT}=t,a=e.errors.slice(0,n).map(u=>$T(u,r,i)).join(r),l=$z(a,s,o);return new Lz(l,e.errors)}const fwe=e=>{const{workflow:t,nodes:n,edges:r}=e,i={...t,nodes:[],edges:[]};return n.filter(o=>["invocation","notes"].includes(o.type??"__UNKNOWN_NODE_TYPE__")).forEach(o=>{const s=xD.safeParse(o);if(!s.success){const{message:a}=xR(s.error,{prefix:"Unable to parse node"});pe("nodes").warn({node:pn(o)},a);return}i.nodes.push(s.data)}),r.forEach(o=>{const s=CD.safeParse(o);if(!s.success){const{message:a}=xR(s.error,{prefix:"Unable to parse edge"});pe("nodes").warn({edge:pn(o)},a);return}i.edges.push(s.data)}),i},hwe=e=>{if(e.type==="ColorField"&&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},pwe=e=>{const{nodes:t,edges:n}=e,r=t.filter(qr),i=JSON.stringify(fwe(e)),o=r.reduce((u,c)=>{const{id:d,data:f}=c,{type:h,inputs:p,isIntermediate:m,embedWorkflow:b}=f,_=aC(p,(g,y,S)=>{const w=hwe(y);return g[S]=w,g},{}),v={type:h,id:d,..._,is_intermediate:m};return b&&Object.assign(v,{workflow:i}),Object.assign(u,{[d]:v}),u},{}),a=n.filter(u=>u.type!=="collapsed").reduce((u,c)=>{const{source:d,target:f,sourceHandle:h,targetHandle:p}=c;return u.push({source:{node_id:d,field:h},destination:{node_id:f,field:p}}),u},[]);return a.forEach(u=>{const c=o[u.destination.node_id],d=u.destination.field;o[u.destination.node_id]=A_(c,d)}),{id:hB(),nodes:o,edges:a}},gwe=()=>{xe({predicate:e=>Lm.match(e)&&e.payload==="nodes",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=pe("session"),o=t(),s=pwe(o.nodes);n(zB(s)),i.debug({graph:pn(s)},"Nodes graph built"),n(Si({graph:s})),await r(Si.fulfilled.match),n(Yc())}})},mwe=e=>{const t=pe("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{positiveStylePrompt:b,negativeStylePrompt:_,shouldUseSDXLRefiner:v,shouldConcatSDXLStylePrompt:g,refinerStart:y}=e.sdxl,S=f?d:$s.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const w=h==="fp32",{craftedPositiveStylePrompt:x,craftedNegativeStylePrompt:E}=Zc(e,g);let A=Oi;const T={id:NT,nodes:{[A]:{type:"sdxl_model_loader",id:A,model:i},[Be]:{type:"sdxl_compel_prompt",id:Be,prompt:n,style:x},[Ve]:{type:"sdxl_compel_prompt",id:Ve,prompt:r,style:E},[we]:{type:"noise",id:we,width:l,height:u,use_cpu:S},[Re]:{type:"denoise_latents",id:Re,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:v?y:1},[qe]:{type:"l2i",id:qe,fp32:w}},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:Re,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Be,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Ve,field:"clip2"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Re,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Re,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Re,field:"noise"}},{source:{node_id:Re,field:"latents"},destination:{node_id:qe,field:"latents"}}]};return T.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"sdxl_txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c,positive_style_prompt:b,negative_style_prompt:_},T.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:qe,field:"metadata"}}),(p||m)&&(us(e,T,A),A=$r),v&&(ph(e,T,Re),(p||m)&&(A=Es)),cs(e,T,A),hh(e,T,Re,A),as(e,T,Re),Du(e,T),e.system.shouldUseNSFWChecker&&ls(e,T),e.system.shouldUseWatermarker&&ds(e,T),T},ywe=e=>{const t=pe("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,b=f?d:$s.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const _=h==="fp32",v=i.model_type==="onnx";let g=v?AS:Nu;const y=v?"onnx_model_loader":"main_model_loader",S=v?{type:"t2l_onnx",id:Fe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Fe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},w={id:Oz,nodes:{[g]:{type:y,id:g,is_intermediate:!0,model:i},[jt]:{type:"clip_skip",id:jt,skipped_layers:c,is_intermediate:!0},[Be]:{type:v?"prompt_onnx":"compel",id:Be,prompt:n,is_intermediate:!0},[Ve]:{type:v?"prompt_onnx":"compel",id:Ve,prompt:r,is_intermediate:!0},[we]:{type:"noise",id:we,width:l,height:u,use_cpu:b,is_intermediate:!0},[S.id]:S,[qe]:{type:v?"l2i_onnx":"l2i",id:qe,fp32:_}},edges:[{source:{node_id:g,field:"unet"},destination:{node_id:Fe,field:"unet"}},{source:{node_id:g,field:"clip"},destination:{node_id:jt,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Be,field:"clip"}},{source:{node_id:jt,field:"clip"},destination:{node_id:Ve,field:"clip"}},{source:{node_id:Be,field:"conditioning"},destination:{node_id:Fe,field:"positive_conditioning"}},{source:{node_id:Ve,field:"conditioning"},destination:{node_id:Fe,field:"negative_conditioning"}},{source:{node_id:we,field:"noise"},destination:{node_id:Fe,field:"noise"}},{source:{node_id:Fe,field:"latents"},destination:{node_id:qe,field:"latents"}}]};return w.nodes[At]={id:At,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:b?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c},w.edges.push({source:{node_id:At,field:"metadata"},destination:{node_id:qe,field:"metadata"}}),(p||m)&&(us(e,w,g),g=$r),cs(e,w,g),fh(e,w,Fe,g),Du(e,w),as(e,w,Fe),e.system.shouldUseNSFWChecker&&ls(e,w),e.system.shouldUseWatermarker&&ds(e,w),w},vwe=()=>{xe({predicate:e=>Lm.match(e)&&e.payload==="txt2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=pe("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=mwe(o):a=ywe(o),n($B(a)),i.debug({graph:pn(a)},"Text to Image graph built"),n(Si({graph:a})),await r(Si.fulfilled.match),n(Yc())}})},_we=th(null),bwe=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,CR=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(bwe);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},ER=e=>e==="*"||e==="x"||e==="X",TR=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},Swe=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],wwe=(e,t)=>{if(ER(e)||ER(t))return 0;const[n,r]=Swe(TR(e),TR(t));return n>r?1:n{for(let n=0;n{const n=CR(e),r=CR(t),i=n.pop(),o=r.pop(),s=AR(n,r);return s!==0?s:i&&o?AR(i.split("."),o.split(".")):i||o?i?-1:1:0},Cwe=(e,t)=>{const n=Yn(e),{nodes:r,edges:i}=n,o=[],s=r.filter(fC),a=pE(s,"id");return r.forEach(l=>{if(!fC(l))return;const u=t[l.data.type];if(!u){o.push({message:`Node "${l.data.type}" skipped`,issues:[`Node type "${l.data.type}" does not exist`],data:l});return}if(u.version&&l.data.version&&xwe(u.version,l.data.version)!==0){o.push({message:`Node "${l.data.type}" has mismatched version`,issues:[`Node "${l.data.type}" v${l.data.version} may be incompatible with installed v${u.version}`],data:{node:l,nodeTemplate:pn(u)}});return}}),i.forEach((l,u)=>{const c=a[l.source],d=a[l.target],f=[];if(c?l.type==="default"&&!(l.sourceHandle in c.data.outputs)&&f.push(`Output field "${l.source}.${l.sourceHandle}" does not exist`):f.push(`Output node ${l.source} does not exist`),d?l.type==="default"&&!(l.targetHandle in d.data.inputs)&&f.push(`Input field "${l.target}.${l.targetHandle}" does not exist`):f.push(`Input node ${l.target} does not exist`),t[(c==null?void 0:c.data.type)??"__UNKNOWN_NODE_TYPE__"]||f.push(`Source node "${l.source}" missing template "${c==null?void 0:c.data.type}"`),t[(d==null?void 0:d.data.type)??"__UNKNOWN_NODE_TYPE__"]||f.push(`Source node "${l.target}" missing template "${d==null?void 0:d.data.type}"`),f.length){delete i[u];const h=l.type==="default"?l.sourceHandle:l.source,p=l.type==="default"?l.targetHandle:l.target;o.push({message:`Edge "${h} -> ${p}" skipped`,issues:f,data:l})}}),{workflow:n,errors:o}},Ewe=()=>{xe({actionCreator:l0e,effect:(e,{dispatch:t,getState:n})=>{const r=pe("nodes"),i=e.payload,o=n().nodes.nodeTemplates,{workflow:s,errors:a}=Cwe(i,o);t(Bme(s)),a.length?(t(Fn(ra({title:"Workflow Loaded with Warnings",status:"warning"}))),a.forEach(({message:l,...u})=>{r.warn(u,l)})):t(Fn(ra({title:"Workflow Loaded",status:"success"}))),t(IB("nodes")),requestAnimationFrame(()=>{var l;(l=_we.get())==null||l.fitView()})}})},Fz=TN(),xe=Fz.startListening;eSe();tSe();sSe();Hbe();qbe();Wbe();Kbe();Xbe();v0e();Jbe();nSe();rSe();rwe();gwe();vwe();swe();x2e();Bbe();Dbe();N0e();Lbe();M0e();O0e();Fbe();$2e();f0e();T2e();A2e();P2e();R2e();I2e();C2e();E2e();D2e();L2e();M2e();N2e();O2e();y2e();v2e();_2e();b2e();S2e();w2e();p2e();g2e();m2e();jbe();Ube();Vbe();Gbe();Ybe();Zbe();_0e();l2e();Ewe();Qbe();aSe();m0e();uSe();p0e();h0e();j2e();B2e();const Twe={canvas:Bne,gallery:Zce,generation:gne,nodes:Ume,postprocessing:jme,system:mye,config:Qee,ui:Sye,hotkeys:bye,controlNet:qce,dynamicPrompts:Yce,deleteImageModal:Xce,changeBoardModal:Une,lora:tde,modelmanager:_ye,sdxl:Hme,[gu.reducerPath]:gu.reducer},Awe=Qf(Twe),kwe=qye(Awe),Pwe=["canvas","gallery","generation","sdxl","nodes","postprocessing","system","ui","controlNet","dynamicPrompts","lora","modelmanager"],Rwe=sN({reducer:kwe,enhancers:e=>e.concat(Wye(window.localStorage,Pwe,{persistDebounce:300,serialize:i0e,unserialize:s0e,prefix:Kye})).concat(kN()),middleware:e=>e({immutableCheck:!1,serializableCheck:!1}).concat(gu.middleware).concat(Eye).prepend(Fz.middleware),devTools:{actionSanitizer:u0e,stateSanitizer:d0e,trace:!0,predicate:(e,t)=>!c0e.includes(t.type)}}),Owe=e=>e,Iwe=e=>{const{socket:t,storeApi:n}=e,{dispatch:r,getState:i}=n;t.on("connect",()=>{pe("socketio").debug("Connected"),r(_$());const{sessionId:s}=i().system;s&&(t.emit("subscribe",{session:s}),r(zE({sessionId:s})))}),t.on("connect_error",o=>{o&&o.message&&o.data==="ERR_UNAUTHENTICATED"&&r(Fn(ra({title:o.message,status:"error",duration:1e4})))}),t.on("disconnect",()=>{r(S$())}),t.on("invocation_started",o=>{r(T$({data:o}))}),t.on("generator_progress",o=>{r(R$({data:o}))}),t.on("invocation_error",o=>{r(A$({data:o}))}),t.on("invocation_complete",o=>{r(jE({data:o}))}),t.on("graph_execution_state_complete",o=>{r(k$({data:o}))}),t.on("model_load_started",o=>{r(O$({data:o}))}),t.on("model_load_completed",o=>{r(I$({data:o}))}),t.on("session_retrieval_error",o=>{r(M$({data:o}))}),t.on("invocation_retrieval_error",o=>{r(D$({data:o}))})},ya=Object.create(null);ya.open="0";ya.close="1";ya.ping="2";ya.pong="3";ya.message="4";ya.upgrade="5";ya.noop="6";const z0=Object.create(null);Object.keys(ya).forEach(e=>{z0[ya[e]]=e});const l3={type:"error",data:"parser error"},Bz=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",zz=typeof ArrayBuffer=="function",Uz=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,FT=({type:e,data:t},n,r)=>Bz&&t instanceof Blob?n?r(t):kR(t,r):zz&&(t instanceof ArrayBuffer||Uz(t))?n?r(t):kR(new Blob([t]),r):r(ya[e]+(t||"")),kR=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function PR(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Pw;function Mwe(e,t){if(Bz&&e.data instanceof Blob)return e.data.arrayBuffer().then(PR).then(t);if(zz&&(e.data instanceof ArrayBuffer||Uz(e.data)))return t(PR(e.data));FT(e,!1,n=>{Pw||(Pw=new TextEncoder),t(Pw.encode(n))})}const RR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",np=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},Dwe=typeof ArrayBuffer=="function",BT=(e,t)=>{if(typeof e!="string")return{type:"message",data:jz(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:Lwe(e.substring(1),t)}:z0[n]?e.length>1?{type:z0[n],data:e.substring(1)}:{type:z0[n]}:l3},Lwe=(e,t)=>{if(Dwe){const n=Nwe(e);return jz(n,t)}else return{base64:!0,data:e}},jz=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},Vz=String.fromCharCode(30),$we=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,s)=>{FT(o,!1,a=>{r[s]=a,++i===n&&t(r.join(Vz))})})},Fwe=(e,t)=>{const n=e.split(Vz),r=[];for(let i=0;i{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const o=new DataView(i.buffer);o.setUint8(0,126),o.setUint16(1,r)}else{i=new Uint8Array(9);const o=new DataView(i.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(i[0]|=128),t.enqueue(i),t.enqueue(n)})}})}let Rw;function t0(e){return e.reduce((t,n)=>t+n.length,0)}function n0(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;iMath.pow(2,53-32)-1){a.enqueue(l3);break}i=c*Math.pow(2,32)+u.getUint32(4),r=3}else{if(t0(n)e){a.enqueue(l3);break}}}})}const Gz=4;function kr(e){if(e)return Uwe(e)}function Uwe(e){for(var t in kr.prototype)e[t]=kr.prototype[t];return e}kr.prototype.on=kr.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};kr.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};kr.prototype.off=kr.prototype.removeListener=kr.prototype.removeAllListeners=kr.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 Hz(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const jwe=Ko.setTimeout,Vwe=Ko.clearTimeout;function OS(e,t){t.useNativeTimers?(e.setTimeoutFn=jwe.bind(Ko),e.clearTimeoutFn=Vwe.bind(Ko)):(e.setTimeoutFn=Ko.setTimeout.bind(Ko),e.clearTimeoutFn=Ko.clearTimeout.bind(Ko))}const Gwe=1.33;function Hwe(e){return typeof e=="string"?qwe(e):Math.ceil((e.byteLength||e.size)*Gwe)}function qwe(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}function Wwe(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function Kwe(e){let t={},n=e.split("&");for(let r=0,i=n.length;r0);return t}function Wz(){const e=MR(+new Date);return e!==IR?(OR=0,IR=e):e+"."+MR(OR++)}for(;r0{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)};Fwe(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,$we(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]=Wz()),!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 pf(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 pf=class U0 extends kr{constructor(t,n){super(),OS(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=Hz(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;const r=this.xhr=new Xz(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=U0.requestsCount++,U0.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=Zwe,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete U0.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()}};pf.requestsCount=0;pf.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",NR);else if(typeof addEventListener=="function"){const e="onpagehide"in Ko?"pagehide":"unload";addEventListener(e,NR,!1)}}function NR(){for(let e in pf.requests)pf.requests.hasOwnProperty(e)&&pf.requests[e].abort()}const UT=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),i0=Ko.WebSocket||Ko.MozWebSocket,DR=!0,txe="arraybuffer",LR=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class nxe extends zT{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=LR?{}:Hz(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=DR&&!LR?n?new i0(t,n):new i0(t):new i0(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{const s={};try{DR&&this.ws.send(o)}catch{}i&&UT(()=>{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]=Wz()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}check(){return!!i0}}class rxe extends zT{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=zwe(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),i=Bwe();i.readable.pipeTo(t.writable),this.writer=i.writable.getWriter();const o=()=>{r.read().then(({done:a,value:l})=>{a||(this.onPacket(l),o())}).catch(a=>{})};o();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then(()=>this.onOpen())})}))}write(t){this.writable=!1;for(let n=0;n{i&&UT(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this.transport)===null||t===void 0||t.close()}}const ixe={websocket:nxe,webtransport:rxe,polling:exe},oxe=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,sxe=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function c3(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=oxe.exec(e||""),o={},s=14;for(;s--;)o[sxe[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=axe(o,o.path),o.queryKey=lxe(o,o.query),o}function axe(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 lxe(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}let Qz=class Td extends kr{constructor(t,n={}){super(),this.binaryType=txe,this.writeBuffer=[],t&&typeof t=="object"&&(n=t,t=null),t?(t=c3(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=c3(n.host).host),OS(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=Kwe(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=Gz,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 ixe[t](r)}open(){let t;if(this.opts.rememberUpgrade&&Td.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;Td.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;Td.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",Td.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){Td.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,Yz=Object.prototype.toString,fxe=typeof Blob=="function"||typeof Blob<"u"&&Yz.call(Blob)==="[object BlobConstructor]",hxe=typeof File=="function"||typeof File<"u"&&Yz.call(File)==="[object FileConstructor]";function jT(e){return cxe&&(e instanceof ArrayBuffer||dxe(e))||fxe&&e instanceof Blob||hxe&&e instanceof File}function j0(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:It.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 It.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 It.EVENT:case It.BINARY_EVENT:this.onevent(t);break;case It.ACK:case It.BINARY_ACK:this.onack(t);break;case It.DISCONNECT:this.ondisconnect();break;case It.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:It.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:It.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}gh.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};gh.prototype.reset=function(){this.attempts=0};gh.prototype.setMin=function(e){this.ms=e};gh.prototype.setMax=function(e){this.max=e};gh.prototype.setJitter=function(e){this.jitter=e};class h3 extends kr{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,OS(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 gh({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||bxe;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 Qz(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=_s(n,"open",function(){r.onopen(),t&&t()}),o=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),t?t(a):this.maybeReconnectOnOpen()},s=_s(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(_s(t,"ping",this.onping.bind(this)),_s(t,"data",this.ondata.bind(this)),_s(t,"error",this.onerror.bind(this)),_s(t,"close",this.onclose.bind(this)),_s(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){UT(()=>{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 Zz(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 Vh={};function V0(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=uxe(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,s=Vh[i]&&o in Vh[i].nsps,a=t.forceNew||t["force new connection"]||t.multiplex===!1||s;let l;return a?l=new h3(r,t):(Vh[i]||(Vh[i]=new h3(r,t)),l=Vh[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(V0,{Manager:h3,Socket:Zz,io:V0,connect:V0});const FR=()=>{let e=!1,n=`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}`;const r={timeout:6e4,path:"/ws/socket.io",autoConnect:!1};if(["nodes","package"].includes("production")){const s=gg.get();s&&(n=s.replace(/^https?\:\/\//i,""));const a=Of.get();a&&(r.auth={token:a}),r.transports=["websocket","polling"]}const i=V0(n,r);return s=>a=>l=>{const{dispatch:u,getState:c}=s;if(e||(Iwe({storeApi:s,socket:i}),e=!0,i.connect()),Si.fulfilled.match(l)){const d=l.payload.id,f=c().system.sessionId;f&&(i.emit("unsubscribe",{session:f}),u(C$({sessionId:f}))),i.emit("subscribe",{session:d}),u(zE({sessionId:d}))}a(l)}};function wxe(e){if(e.sheet)return e.sheet;for(var t=0;t0?yi(mh,--mo):0,Gf--,Tr===10&&(Gf=1,MS--),Tr}function Po(){return Tr=mo2||Gg(Tr)>3?"":" "}function Dxe(e,t){for(;--t&&Po()&&!(Tr<48||Tr>102||Tr>57&&Tr<65||Tr>70&&Tr<97););return jm(e,G0()+(t<6&&fa()==32&&Po()==32))}function g3(e){for(;Po();)switch(Tr){case e:return mo;case 34:case 39:e!==34&&e!==39&&g3(Tr);break;case 40:e===41&&g3(e);break;case 92:Po();break}return mo}function Lxe(e,t){for(;Po()&&e+Tr!==47+10;)if(e+Tr===42+42&&fa()===47)break;return"/*"+jm(t,mo-1)+"*"+IS(e===47?e:Po())}function $xe(e){for(;!Gg(fa());)Po();return jm(e,mo)}function Fxe(e){return iU(q0("",null,null,null,[""],e=rU(e),0,[0],e))}function q0(e,t,n,r,i,o,s,a,l){for(var u=0,c=0,d=s,f=0,h=0,p=0,m=1,b=1,_=1,v=0,g="",y=i,S=o,w=r,x=g;b;)switch(p=v,v=Po()){case 40:if(p!=108&&yi(x,d-1)==58){p3(x+=Zt(H0(v),"&","&\f"),"&\f")!=-1&&(_=-1);break}case 34:case 39:case 91:x+=H0(v);break;case 9:case 10:case 13:case 32:x+=Nxe(p);break;case 92:x+=Dxe(G0()-1,7);continue;case 47:switch(fa()){case 42:case 47:o0(Bxe(Lxe(Po(),G0()),t,n),l);break;default:x+="/"}break;case 123*m:a[u++]=Xs(x)*_;case 125*m:case 59:case 0:switch(v){case 0:case 125:b=0;case 59+c:_==-1&&(x=Zt(x,/\f/g,"")),h>0&&Xs(x)-d&&o0(h>32?zR(x+";",r,n,d-1):zR(Zt(x," ","")+";",r,n,d-2),l);break;case 59:x+=";";default:if(o0(w=BR(x,t,n,u,c,i,a,g,y=[],S=[],d),o),v===123)if(c===0)q0(x,t,w,w,y,o,d,a,S);else switch(f===99&&yi(x,3)===110?100:f){case 100:case 108:case 109:case 115:q0(e,w,w,r&&o0(BR(e,w,w,0,0,i,a,g,i,y=[],d),S),i,S,d,a,r?y:S);break;default:q0(x,w,w,w,[""],S,0,a,S)}}u=c=h=0,m=_=1,g=x="",d=s;break;case 58:d=1+Xs(x),h=p;default:if(m<1){if(v==123)--m;else if(v==125&&m++==0&&Mxe()==125)continue}switch(x+=IS(v),v*m){case 38:_=c>0?1:(x+="\f",-1);break;case 44:a[u++]=(Xs(x)-1)*_,_=1;break;case 64:fa()===45&&(x+=H0(Po())),f=fa(),c=d=Xs(g=x+=$xe(G0())),v++;break;case 45:p===45&&Xs(x)==2&&(m=0)}}return o}function BR(e,t,n,r,i,o,s,a,l,u,c){for(var d=i-1,f=i===0?o:[""],h=qT(f),p=0,m=0,b=0;p0?f[_]+" "+v:Zt(v,/&\f/g,f[_])))&&(l[b++]=g);return NS(e,t,n,i===0?GT:a,l,u,c)}function Bxe(e,t,n){return NS(e,t,n,Jz,IS(Ixe()),Vg(e,2,-2),0)}function zR(e,t,n,r){return NS(e,t,n,HT,Vg(e,0,r),Vg(e,r+1,-1),r)}function gf(e,t){for(var n="",r=qT(e),i=0;i6)switch(yi(e,t+1)){case 109:if(yi(e,t+4)!==45)break;case 102:return Zt(e,/(.+:)(.+)-([^]+)/,"$1"+Yt+"$2-$3$1"+k1+(yi(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~p3(e,"stretch")?sU(Zt(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(yi(e,t+1)!==115)break;case 6444:switch(yi(e,Xs(e)-3-(~p3(e,"!important")&&10))){case 107:return Zt(e,":",":"+Yt)+e;case 101:return Zt(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Yt+(yi(e,14)===45?"inline-":"")+"box$3$1"+Yt+"$2$3$1"+ki+"$2box$3")+e}break;case 5936:switch(yi(e,t+11)){case 114:return Yt+e+ki+Zt(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Yt+e+ki+Zt(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Yt+e+ki+Zt(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Yt+e+ki+e+e}return e}var Kxe=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case HT:t.return=sU(t.value,t.length);break;case eU:return gf([Gh(t,{value:Zt(t.value,"@","@"+Yt)})],i);case GT:if(t.length)return Oxe(t.props,function(o){switch(Rxe(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return gf([Gh(t,{props:[Zt(o,/:(read-\w+)/,":"+k1+"$1")]})],i);case"::placeholder":return gf([Gh(t,{props:[Zt(o,/:(plac\w+)/,":"+Yt+"input-$1")]}),Gh(t,{props:[Zt(o,/:(plac\w+)/,":"+k1+"$1")]}),Gh(t,{props:[Zt(o,/:(plac\w+)/,ki+"input-$1")]})],i)}return""})}},Xxe=[Kxe],Qxe=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(m){var b=m.getAttribute("data-emotion");b.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||Xxe,o={},s,a=[];s=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var b=m.getAttribute("data-emotion").split(" "),_=1;_=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var eCe={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},tCe=/[A-Z]|^ms/g,nCe=/_EMO_([^_]+?)_([^]*?)_EMO_/g,uU=function(t){return t.charCodeAt(1)===45},VR=function(t){return t!=null&&typeof t!="boolean"},Ow=oU(function(e){return uU(e)?e:e.replace(tCe,"-$&").toLowerCase()}),GR=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(nCe,function(r,i,o){return Qs={name:i,styles:o,next:Qs},i})}return eCe[t]!==1&&!uU(t)&&typeof n=="number"&&n!==0?n+"px":n};function Hg(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 Qs={name:n.name,styles:n.styles,next:Qs},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)Qs={name:r.name,styles:r.styles,next:Qs},r=r.next;var i=n.styles+";";return i}return rCe(e,t,n)}case"function":{if(e!==void 0){var o=Qs,s=n(e);return Qs=o,Hg(e,t,s)}break}}if(t==null)return n;var a=t[n];return a!==void 0?a:n}function rCe(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i` or ``");return e}var pU=M.createContext({});pU.displayName="ColorModeContext";function KT(){const e=M.useContext(pU);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}function eMe(e,t){const{colorMode:n}=KT();return n==="dark"?t:e}function dCe(){const e=KT(),t=hU();return{...e,theme:t}}function fCe(e,t,n){var r,i;if(t==null)return t;const o=s=>{var a,l;return(l=(a=e.__breakpoints)==null?void 0:a.asArray)==null?void 0:l[s]};return(i=(r=o(t))!=null?r:o(n))!=null?i:n}function hCe(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 tMe(e,t,n){const r=hU();return pCe(e,t,n)(r)}function pCe(e,t,n){const r=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];return o=>{const s=i.filter(Boolean),a=r.map((l,u)=>{var c,d;if(e==="breakpoints")return fCe(o,l,(c=s[u])!=null?c:l);const f=`${e}.${l}`;return hCe(o,f,(d=s[u])!=null?d:l)});return Array.isArray(t)?a:a[0]}}var XT=(...e)=>e.filter(Boolean).join(" ");function gCe(){return!1}function Qa(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}var nMe=e=>{const{condition:t,message:n}=e;t&&gCe()&&console.warn(n)};function lc(e,...t){return mCe(e)?e(...t):e}var mCe=e=>typeof e=="function",rMe=e=>e?"":void 0,iMe=e=>e?!0:void 0;function oMe(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function sMe(...e){return function(n){e.forEach(r=>{r==null||r(n)})}}var P1={exports:{}};P1.exports;(function(e,t){var n=200,r="__lodash_hash_undefined__",i=800,o=16,s=9007199254740991,a="[object Arguments]",l="[object Array]",u="[object AsyncFunction]",c="[object Boolean]",d="[object Date]",f="[object Error]",h="[object Function]",p="[object GeneratorFunction]",m="[object Map]",b="[object Number]",_="[object Null]",v="[object Object]",g="[object Proxy]",y="[object RegExp]",S="[object Set]",w="[object String]",x="[object Undefined]",E="[object WeakMap]",A="[object ArrayBuffer]",T="[object DataView]",k="[object Float32Array]",L="[object Float64Array]",N="[object Int8Array]",C="[object Int16Array]",P="[object Int32Array]",D="[object Uint8Array]",B="[object Uint8ClampedArray]",R="[object Uint16Array]",O="[object Uint32Array]",I=/[\\^$.*+?()[\]{}|]/g,F=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,V={};V[k]=V[L]=V[N]=V[C]=V[P]=V[D]=V[B]=V[R]=V[O]=!0,V[a]=V[l]=V[A]=V[c]=V[T]=V[d]=V[f]=V[h]=V[m]=V[b]=V[v]=V[y]=V[S]=V[w]=V[E]=!1;var H=typeof ut=="object"&&ut&&ut.Object===Object&&ut,Y=typeof self=="object"&&self&&self.Object===Object&&self,Q=H||Y||Function("return this")(),j=t&&!t.nodeType&&t,K=j&&!0&&e&&!e.nodeType&&e,ee=K&&K.exports===j,ie=ee&&H.process,ge=function(){try{var $=K&&K.require&&K.require("util").types;return $||ie&&ie.binding&&ie.binding("util")}catch{}}(),ae=ge&&ge.isTypedArray;function dt($,G,X){switch(X.length){case 0:return $.call(G);case 1:return $.call(G,X[0]);case 2:return $.call(G,X[0],X[1]);case 3:return $.call(G,X[0],X[1],X[2])}return $.apply(G,X)}function et($,G){for(var X=-1,de=Array($);++X<$;)de[X]=G(X);return de}function Ne($){return function(G){return $(G)}}function lt($,G){return $==null?void 0:$[G]}function Te($,G){return function(X){return $(G(X))}}var Gt=Array.prototype,_r=Function.prototype,Tn=Object.prototype,vn=Q["__core-js_shared__"],Ht=_r.toString,An=Tn.hasOwnProperty,br=function(){var $=/[^.]+$/.exec(vn&&vn.keys&&vn.keys.IE_PROTO||"");return $?"Symbol(src)_1."+$:""}(),eo=Tn.toString,jr=Ht.call(Object),or=RegExp("^"+Ht.call(An).replace(I,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Rr=ee?Q.Buffer:void 0,Vr=Q.Symbol,kn=Q.Uint8Array,un=Rr?Rr.allocUnsafe:void 0,wi=Te(Object.getPrototypeOf,Object),ii=Object.create,zi=Tn.propertyIsEnumerable,fs=Gt.splice,Sr=Vr?Vr.toStringTag:void 0,to=function(){try{var $=Xn(Object,"defineProperty");return $({},"",{}),$}catch{}}(),Ca=Rr?Rr.isBuffer:void 0,vo=Math.max,Ea=Date.now,Pn=Xn(Q,"Map"),qt=Xn(Object,"create"),Or=function(){function $(){}return function(G){if(!Ge(G))return{};if(ii)return ii(G);$.prototype=G;var X=new $;return $.prototype=void 0,X}}();function wr($){var G=-1,X=$==null?0:$.length;for(this.clear();++G-1}function Fo($,G){var X=this.__data__,de=We(X,$);return de<0?(++this.size,X.push([$,G])):X[de][1]=G,this}Ir.prototype.clear=hs,Ir.prototype.delete=zs,Ir.prototype.get=si,Ir.prototype.has=ml,Ir.prototype.set=Fo;function Hr($){var G=-1,X=$==null?0:$.length;for(this.clear();++G1?X[_t-1]:void 0,bn=_t>2?X[2]:void 0;for(nn=$.length>3&&typeof nn=="function"?(_t--,nn):void 0,bn&&kt(X[0],X[1],bn)&&(nn=_t<3?void 0:nn,_t=1),G=Object(G);++de<_t;){var Ct=X[de];Ct&&$(G,Ct,de,nn)}return G})}function tn($){return function(G,X,de){for(var _t=-1,nn=Object(G),bn=de(G),Ct=bn.length;Ct--;){var fn=bn[$?Ct:++_t];if(X(nn[fn],fn,nn)===!1)break}return G}}function Wt($,G){var X=$.__data__;return Ft(G)?X[typeof G=="string"?"string":"hash"]:X.map}function Xn($,G){var X=lt($,G);return vt(X)?X:void 0}function hr($){var G=An.call($,Sr),X=$[Sr];try{$[Sr]=void 0;var de=!0}catch{}var _t=eo.call($);return de&&(G?$[Sr]=X:delete $[Sr]),_t}function li($){return typeof $.constructor=="function"&&!Kt($)?Or(wi($)):{}}function cn($,G){var X=typeof $;return G=G??s,!!G&&(X=="number"||X!="symbol"&&U.test($))&&$>-1&&$%1==0&&$0){if(++G>=i)return arguments[0]}else G=0;return $.apply(void 0,arguments)}}function st($){if($!=null){try{return Ht.call($)}catch{}try{return $+""}catch{}}return""}function $e($,G){return $===G||$!==$&&G!==G}var _e=ft(function(){return arguments}())?ft:function($){return Ee($)&&An.call($,"callee")&&!zi.call($,"callee")},se=Array.isArray;function Se($){return $!=null&&Qe($.length)&&!be($)}function ue($){return Ee($)&&Se($)}var fe=Ca||Ui;function be($){if(!Ge($))return!1;var G=ot($);return G==h||G==p||G==u||G==g}function Qe($){return typeof $=="number"&&$>-1&&$%1==0&&$<=s}function Ge($){var G=typeof $;return $!=null&&(G=="object"||G=="function")}function Ee($){return $!=null&&typeof $=="object"}function wt($){if(!Ee($)||ot($)!=v)return!1;var G=wi($);if(G===null)return!0;var X=An.call(G,"constructor")&&G.constructor;return typeof X=="function"&&X instanceof X&&Ht.call(X)==jr}var Dt=ae?Ne(ae):St;function Lt($){return ps($,Qn($))}function Qn($){return Se($)?Ae($,!0):Jt($)}var sr=Je(function($,G,X,de){en($,G,X,de)});function Rn($){return function(){return $}}function _n($){return $}function Ui(){return!1}e.exports=sr})(P1,P1.exports);var yCe=P1.exports;const ia=Dc(yCe);var vCe=e=>/!(important)?$/.test(e),WR=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,_Ce=(e,t)=>n=>{const r=String(t),i=vCe(r),o=WR(r),s=e?`${e}.${o}`:o;let a=Qa(n.__cssMap)&&s in n.__cssMap?n.__cssMap[s].varRef:t;return a=WR(a),i?`${a} !important`:a};function QT(e){const{scale:t,transform:n,compose:r}=e;return(o,s)=>{var a;const l=_Ce(t,o)(s);let u=(a=n==null?void 0:n(l,s))!=null?a:l;return r&&(u=r(u,s)),u}}var s0=(...e)=>t=>e.reduce((n,r)=>r(n),t);function jo(e,t){return n=>{const r={property:n,scale:e};return r.transform=QT({scale:e,transform:t}),r}}var bCe=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function SCe(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:bCe(t),transform:n?QT({scale:n,compose:r}):r}}var gU=["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 wCe(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...gU].join(" ")}function xCe(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...gU].join(" ")}var CCe={"--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(" ")},ECe={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 TCe(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 ACe={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},m3={"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"},kCe=new Set(Object.values(m3)),y3=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),PCe=e=>e.trim();function RCe(e,t){if(e==null||y3.has(e))return e;if(!(v3(e)||y3.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(PCe).filter(Boolean);if((u==null?void 0:u.length)===0)return e;const c=l in m3?m3[l]:l;u.unshift(c);const d=u.map(f=>{if(kCe.has(f))return f;const h=f.indexOf(" "),[p,m]=h!==-1?[f.substr(0,h),f.substr(h+1)]:[f],b=v3(m)?m:m&&m.split(" "),_=`colors.${p}`,v=_ in t.__cssMap?t.__cssMap[_].varRef:p;return b?[v,...Array.isArray(b)?b:[b]].join(" "):v});return`${a}(${d.join(", ")})`}var v3=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),OCe=(e,t)=>RCe(e,t??{});function ICe(e){return/^var\(--.+\)$/.test(e)}var MCe=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},Hs=e=>t=>`${e}(${t})`,zt={filter(e){return e!=="auto"?e:CCe},backdropFilter(e){return e!=="auto"?e:ECe},ring(e){return TCe(zt.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?wCe():e==="auto-gpu"?xCe():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=MCe(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(ICe(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:OCe,blur:Hs("blur"),opacity:Hs("opacity"),brightness:Hs("brightness"),contrast:Hs("contrast"),dropShadow:Hs("drop-shadow"),grayscale:Hs("grayscale"),hueRotate:Hs("hue-rotate"),invert:Hs("invert"),saturate:Hs("saturate"),sepia:Hs("sepia"),bgImage(e){return e==null||v3(e)||y3.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=ACe[e])!=null?t:{},i={flexDirection:e};return n&&(i[n]=1),r&&(i[r]=1),i}},q={borderWidths:jo("borderWidths"),borderStyles:jo("borderStyles"),colors:jo("colors"),borders:jo("borders"),gradients:jo("gradients",zt.gradient),radii:jo("radii",zt.px),space:jo("space",s0(zt.vh,zt.px)),spaceT:jo("space",s0(zt.vh,zt.px)),degreeT(e){return{property:e,transform:zt.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:QT({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:jo("sizes",s0(zt.vh,zt.px)),sizesT:jo("sizes",s0(zt.vh,zt.fraction)),shadows:jo("shadows"),logical:SCe,blur:jo("blur",zt.blur)},W0={background:q.colors("background"),backgroundColor:q.colors("backgroundColor"),backgroundImage:q.gradients("backgroundImage"),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:zt.bgClip},bgSize:q.prop("backgroundSize"),bgPosition:q.prop("backgroundPosition"),bg:q.colors("background"),bgColor:q.colors("backgroundColor"),bgPos:q.prop("backgroundPosition"),bgRepeat:q.prop("backgroundRepeat"),bgAttachment:q.prop("backgroundAttachment"),bgGradient:q.gradients("backgroundImage"),bgClip:{transform:zt.bgClip}};Object.assign(W0,{bgImage:W0.backgroundImage,bgImg:W0.backgroundImage});var Qt={border:q.borders("border"),borderWidth:q.borderWidths("borderWidth"),borderStyle:q.borderStyles("borderStyle"),borderColor:q.colors("borderColor"),borderRadius:q.radii("borderRadius"),borderTop:q.borders("borderTop"),borderBlockStart:q.borders("borderBlockStart"),borderTopLeftRadius:q.radii("borderTopLeftRadius"),borderStartStartRadius:q.logical({scale:"radii",property:{ltr:"borderTopLeftRadius",rtl:"borderTopRightRadius"}}),borderEndStartRadius:q.logical({scale:"radii",property:{ltr:"borderBottomLeftRadius",rtl:"borderBottomRightRadius"}}),borderTopRightRadius:q.radii("borderTopRightRadius"),borderStartEndRadius:q.logical({scale:"radii",property:{ltr:"borderTopRightRadius",rtl:"borderTopLeftRadius"}}),borderEndEndRadius:q.logical({scale:"radii",property:{ltr:"borderBottomRightRadius",rtl:"borderBottomLeftRadius"}}),borderRight:q.borders("borderRight"),borderInlineEnd:q.borders("borderInlineEnd"),borderBottom:q.borders("borderBottom"),borderBlockEnd:q.borders("borderBlockEnd"),borderBottomLeftRadius:q.radii("borderBottomLeftRadius"),borderBottomRightRadius:q.radii("borderBottomRightRadius"),borderLeft:q.borders("borderLeft"),borderInlineStart:{property:"borderInlineStart",scale:"borders"},borderInlineStartRadius:q.logical({scale:"radii",property:{ltr:["borderTopLeftRadius","borderBottomLeftRadius"],rtl:["borderTopRightRadius","borderBottomRightRadius"]}}),borderInlineEndRadius:q.logical({scale:"radii",property:{ltr:["borderTopRightRadius","borderBottomRightRadius"],rtl:["borderTopLeftRadius","borderBottomLeftRadius"]}}),borderX:q.borders(["borderLeft","borderRight"]),borderInline:q.borders("borderInline"),borderY:q.borders(["borderTop","borderBottom"]),borderBlock:q.borders("borderBlock"),borderTopWidth:q.borderWidths("borderTopWidth"),borderBlockStartWidth:q.borderWidths("borderBlockStartWidth"),borderTopColor:q.colors("borderTopColor"),borderBlockStartColor:q.colors("borderBlockStartColor"),borderTopStyle:q.borderStyles("borderTopStyle"),borderBlockStartStyle:q.borderStyles("borderBlockStartStyle"),borderBottomWidth:q.borderWidths("borderBottomWidth"),borderBlockEndWidth:q.borderWidths("borderBlockEndWidth"),borderBottomColor:q.colors("borderBottomColor"),borderBlockEndColor:q.colors("borderBlockEndColor"),borderBottomStyle:q.borderStyles("borderBottomStyle"),borderBlockEndStyle:q.borderStyles("borderBlockEndStyle"),borderLeftWidth:q.borderWidths("borderLeftWidth"),borderInlineStartWidth:q.borderWidths("borderInlineStartWidth"),borderLeftColor:q.colors("borderLeftColor"),borderInlineStartColor:q.colors("borderInlineStartColor"),borderLeftStyle:q.borderStyles("borderLeftStyle"),borderInlineStartStyle:q.borderStyles("borderInlineStartStyle"),borderRightWidth:q.borderWidths("borderRightWidth"),borderInlineEndWidth:q.borderWidths("borderInlineEndWidth"),borderRightColor:q.colors("borderRightColor"),borderInlineEndColor:q.colors("borderInlineEndColor"),borderRightStyle:q.borderStyles("borderRightStyle"),borderInlineEndStyle:q.borderStyles("borderInlineEndStyle"),borderTopRadius:q.radii(["borderTopLeftRadius","borderTopRightRadius"]),borderBottomRadius:q.radii(["borderBottomLeftRadius","borderBottomRightRadius"]),borderLeftRadius:q.radii(["borderTopLeftRadius","borderBottomLeftRadius"]),borderRightRadius:q.radii(["borderTopRightRadius","borderBottomRightRadius"])};Object.assign(Qt,{rounded:Qt.borderRadius,roundedTop:Qt.borderTopRadius,roundedTopLeft:Qt.borderTopLeftRadius,roundedTopRight:Qt.borderTopRightRadius,roundedTopStart:Qt.borderStartStartRadius,roundedTopEnd:Qt.borderStartEndRadius,roundedBottom:Qt.borderBottomRadius,roundedBottomLeft:Qt.borderBottomLeftRadius,roundedBottomRight:Qt.borderBottomRightRadius,roundedBottomStart:Qt.borderEndStartRadius,roundedBottomEnd:Qt.borderEndEndRadius,roundedLeft:Qt.borderLeftRadius,roundedRight:Qt.borderRightRadius,roundedStart:Qt.borderInlineStartRadius,roundedEnd:Qt.borderInlineEndRadius,borderStart:Qt.borderInlineStart,borderEnd:Qt.borderInlineEnd,borderTopStartRadius:Qt.borderStartStartRadius,borderTopEndRadius:Qt.borderStartEndRadius,borderBottomStartRadius:Qt.borderEndStartRadius,borderBottomEndRadius:Qt.borderEndEndRadius,borderStartRadius:Qt.borderInlineStartRadius,borderEndRadius:Qt.borderInlineEndRadius,borderStartWidth:Qt.borderInlineStartWidth,borderEndWidth:Qt.borderInlineEndWidth,borderStartColor:Qt.borderInlineStartColor,borderEndColor:Qt.borderInlineEndColor,borderStartStyle:Qt.borderInlineStartStyle,borderEndStyle:Qt.borderInlineEndStyle});var NCe={color:q.colors("color"),textColor:q.colors("color"),fill:q.colors("fill"),stroke:q.colors("stroke")},_3={boxShadow:q.shadows("boxShadow"),mixBlendMode:!0,blendMode:q.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:q.prop("backgroundBlendMode"),opacity:!0};Object.assign(_3,{shadow:_3.boxShadow});var DCe={filter:{transform:zt.filter},blur:q.blur("--chakra-blur"),brightness:q.propT("--chakra-brightness",zt.brightness),contrast:q.propT("--chakra-contrast",zt.contrast),hueRotate:q.degreeT("--chakra-hue-rotate"),invert:q.propT("--chakra-invert",zt.invert),saturate:q.propT("--chakra-saturate",zt.saturate),dropShadow:q.propT("--chakra-drop-shadow",zt.dropShadow),backdropFilter:{transform:zt.backdropFilter},backdropBlur:q.blur("--chakra-backdrop-blur"),backdropBrightness:q.propT("--chakra-backdrop-brightness",zt.brightness),backdropContrast:q.propT("--chakra-backdrop-contrast",zt.contrast),backdropHueRotate:q.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:q.propT("--chakra-backdrop-invert",zt.invert),backdropSaturate:q.propT("--chakra-backdrop-saturate",zt.saturate)},R1={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:zt.flexDirection},flex:!0,flexFlow:!0,flexGrow:!0,flexShrink:!0,flexBasis:q.sizes("flexBasis"),justifySelf:!0,alignSelf:!0,order:!0,placeItems:!0,placeContent:!0,placeSelf:!0,gap:q.space("gap"),rowGap:q.space("rowGap"),columnGap:q.space("columnGap")};Object.assign(R1,{flexDir:R1.flexDirection});var mU={gridGap:q.space("gridGap"),gridColumnGap:q.space("gridColumnGap"),gridRowGap:q.space("gridRowGap"),gridColumn:!0,gridRow:!0,gridAutoFlow:!0,gridAutoColumns:!0,gridColumnStart:!0,gridColumnEnd:!0,gridRowStart:!0,gridRowEnd:!0,gridAutoRows:!0,gridTemplate:!0,gridTemplateColumns:!0,gridTemplateRows:!0,gridTemplateAreas:!0,gridArea:!0},LCe={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:zt.outline},outlineOffset:!0,outlineColor:q.colors("outlineColor")},Go={width:q.sizesT("width"),inlineSize:q.sizesT("inlineSize"),height:q.sizes("height"),blockSize:q.sizes("blockSize"),boxSize:q.sizes(["width","height"]),minWidth:q.sizes("minWidth"),minInlineSize:q.sizes("minInlineSize"),minHeight:q.sizes("minHeight"),minBlockSize:q.sizes("minBlockSize"),maxWidth:q.sizes("maxWidth"),maxInlineSize:q.sizes("maxInlineSize"),maxHeight:q.sizes("maxHeight"),maxBlockSize:q.sizes("maxBlockSize"),overflow:!0,overflowX:!0,overflowY:!0,overscrollBehavior:!0,overscrollBehaviorX:!0,overscrollBehaviorY:!0,display:!0,aspectRatio:!0,hideFrom:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (min-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r.minW)!=null?i:e})`]:{display:"none"}}}},hideBelow:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (max-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r._minW)!=null?i:e})`]:{display:"none"}}}},verticalAlign:!0,boxSizing:!0,boxDecorationBreak:!0,float:q.propT("float",zt.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(Go,{w:Go.width,h:Go.height,minW:Go.minWidth,maxW:Go.maxWidth,minH:Go.minHeight,maxH:Go.maxHeight,overscroll:Go.overscrollBehavior,overscrollX:Go.overscrollBehaviorX,overscrollY:Go.overscrollBehaviorY});var $Ce={listStyleType:!0,listStylePosition:!0,listStylePos:q.prop("listStylePosition"),listStyleImage:!0,listStyleImg:q.prop("listStyleImage")};function FCe(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}},zCe=BCe(FCe),UCe={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},jCe={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},Iw=(e,t,n)=>{const r={},i=zCe(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},VCe={srOnly:{transform(e){return e===!0?UCe:e==="focusable"?jCe:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>Iw(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>Iw(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>Iw(t,e,n)}},wp={position:!0,pos:q.prop("position"),zIndex:q.prop("zIndex","zIndices"),inset:q.spaceT("inset"),insetX:q.spaceT(["left","right"]),insetInline:q.spaceT("insetInline"),insetY:q.spaceT(["top","bottom"]),insetBlock:q.spaceT("insetBlock"),top:q.spaceT("top"),insetBlockStart:q.spaceT("insetBlockStart"),bottom:q.spaceT("bottom"),insetBlockEnd:q.spaceT("insetBlockEnd"),left:q.spaceT("left"),insetInlineStart:q.logical({scale:"space",property:{ltr:"left",rtl:"right"}}),right:q.spaceT("right"),insetInlineEnd:q.logical({scale:"space",property:{ltr:"right",rtl:"left"}})};Object.assign(wp,{insetStart:wp.insetInlineStart,insetEnd:wp.insetInlineEnd});var GCe={ring:{transform:zt.ring},ringColor:q.colors("--chakra-ring-color"),ringOffset:q.prop("--chakra-ring-offset-width"),ringOffsetColor:q.colors("--chakra-ring-offset-color"),ringInset:q.prop("--chakra-ring-inset")},In={margin:q.spaceT("margin"),marginTop:q.spaceT("marginTop"),marginBlockStart:q.spaceT("marginBlockStart"),marginRight:q.spaceT("marginRight"),marginInlineEnd:q.spaceT("marginInlineEnd"),marginBottom:q.spaceT("marginBottom"),marginBlockEnd:q.spaceT("marginBlockEnd"),marginLeft:q.spaceT("marginLeft"),marginInlineStart:q.spaceT("marginInlineStart"),marginX:q.spaceT(["marginInlineStart","marginInlineEnd"]),marginInline:q.spaceT("marginInline"),marginY:q.spaceT(["marginTop","marginBottom"]),marginBlock:q.spaceT("marginBlock"),padding:q.space("padding"),paddingTop:q.space("paddingTop"),paddingBlockStart:q.space("paddingBlockStart"),paddingRight:q.space("paddingRight"),paddingBottom:q.space("paddingBottom"),paddingBlockEnd:q.space("paddingBlockEnd"),paddingLeft:q.space("paddingLeft"),paddingInlineStart:q.space("paddingInlineStart"),paddingInlineEnd:q.space("paddingInlineEnd"),paddingX:q.space(["paddingInlineStart","paddingInlineEnd"]),paddingInline:q.space("paddingInline"),paddingY:q.space(["paddingTop","paddingBottom"]),paddingBlock:q.space("paddingBlock")};Object.assign(In,{m:In.margin,mt:In.marginTop,mr:In.marginRight,me:In.marginInlineEnd,marginEnd:In.marginInlineEnd,mb:In.marginBottom,ml:In.marginLeft,ms:In.marginInlineStart,marginStart:In.marginInlineStart,mx:In.marginX,my:In.marginY,p:In.padding,pt:In.paddingTop,py:In.paddingY,px:In.paddingX,pb:In.paddingBottom,pl:In.paddingLeft,ps:In.paddingInlineStart,paddingStart:In.paddingInlineStart,pr:In.paddingRight,pe:In.paddingInlineEnd,paddingEnd:In.paddingInlineEnd});var HCe={textDecorationColor:q.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:q.shadows("textShadow")},qCe={clipPath:!0,transform:q.propT("transform",zt.transform),transformOrigin:!0,translateX:q.spaceT("--chakra-translate-x"),translateY:q.spaceT("--chakra-translate-y"),skewX:q.degreeT("--chakra-skew-x"),skewY:q.degreeT("--chakra-skew-y"),scaleX:q.prop("--chakra-scale-x"),scaleY:q.prop("--chakra-scale-y"),scale:q.prop(["--chakra-scale-x","--chakra-scale-y"]),rotate:q.degreeT("--chakra-rotate")},WCe={transition:!0,transitionDelay:!0,animation:!0,willChange:!0,transitionDuration:q.prop("transitionDuration","transition.duration"),transitionProperty:q.prop("transitionProperty","transition.property"),transitionTimingFunction:q.prop("transitionTimingFunction","transition.easing")},KCe={fontFamily:q.prop("fontFamily","fonts"),fontSize:q.prop("fontSize","fontSizes",zt.px),fontWeight:q.prop("fontWeight","fontWeights"),lineHeight:q.prop("lineHeight","lineHeights"),letterSpacing:q.prop("letterSpacing","letterSpacings"),textAlign:!0,fontStyle:!0,textIndent:!0,wordBreak:!0,overflowWrap:!0,textOverflow:!0,textTransform:!0,whiteSpace:!0,isTruncated:{transform(e){if(e===!0)return{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}},noOfLines:{static:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"var(--chakra-line-clamp)"},property:"--chakra-line-clamp"}},XCe={scrollBehavior:!0,scrollSnapAlign:!0,scrollSnapStop:!0,scrollSnapType:!0,scrollMargin:q.spaceT("scrollMargin"),scrollMarginTop:q.spaceT("scrollMarginTop"),scrollMarginBottom:q.spaceT("scrollMarginBottom"),scrollMarginLeft:q.spaceT("scrollMarginLeft"),scrollMarginRight:q.spaceT("scrollMarginRight"),scrollMarginX:q.spaceT(["scrollMarginLeft","scrollMarginRight"]),scrollMarginY:q.spaceT(["scrollMarginTop","scrollMarginBottom"]),scrollPadding:q.spaceT("scrollPadding"),scrollPaddingTop:q.spaceT("scrollPaddingTop"),scrollPaddingBottom:q.spaceT("scrollPaddingBottom"),scrollPaddingLeft:q.spaceT("scrollPaddingLeft"),scrollPaddingRight:q.spaceT("scrollPaddingRight"),scrollPaddingX:q.spaceT(["scrollPaddingLeft","scrollPaddingRight"]),scrollPaddingY:q.spaceT(["scrollPaddingTop","scrollPaddingBottom"])};function yU(e){return Qa(e)&&e.reference?e.reference:String(e)}var DS=(e,...t)=>t.map(yU).join(` ${e} `).replace(/calc/g,""),KR=(...e)=>`calc(${DS("+",...e)})`,XR=(...e)=>`calc(${DS("-",...e)})`,b3=(...e)=>`calc(${DS("*",...e)})`,QR=(...e)=>`calc(${DS("/",...e)})`,YR=e=>{const t=yU(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:b3(t,-1)},Yu=Object.assign(e=>({add:(...t)=>Yu(KR(e,...t)),subtract:(...t)=>Yu(XR(e,...t)),multiply:(...t)=>Yu(b3(e,...t)),divide:(...t)=>Yu(QR(e,...t)),negate:()=>Yu(YR(e)),toString:()=>e.toString()}),{add:KR,subtract:XR,multiply:b3,divide:QR,negate:YR});function QCe(e,t="-"){return e.replace(/\s+/g,t)}function YCe(e){const t=QCe(e.toString());return JCe(ZCe(t))}function ZCe(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function JCe(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function e3e(e,t=""){return[t,e].filter(Boolean).join("-")}function t3e(e,t){return`var(${e}${t?`, ${t}`:""})`}function n3e(e,t=""){return YCe(`--${e3e(e,t)}`)}function S3(e,t,n){const r=n3e(e,n);return{variable:r,reference:t3e(r,t)}}function aMe(e,t){const n={};for(const r of t){if(Array.isArray(r)){const[i,o]=r;n[i]=S3(`${e}-${i}`,o);continue}n[r]=S3(`${e}-${r}`)}return n}function r3e(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function i3e(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function w3(e){if(e==null)return e;const{unitless:t}=i3e(e);return t||typeof e=="number"?`${e}px`:e}var vU=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,YT=e=>Object.fromEntries(Object.entries(e).sort(vU));function ZR(e){const t=YT(e);return Object.assign(Object.values(t),t)}function o3e(e){const t=Object.keys(YT(e));return new Set(t)}function JR(e){var t;if(!e)return e;e=(t=w3(e))!=null?t:e;const n=-.02;return typeof e=="number"?`${e+n}`:e.replace(/(\d+\.?\d*)/u,r=>`${parseFloat(r)+n}`)}function rp(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${w3(e)})`),t&&n.push("and",`(max-width: ${w3(t)})`),n.join(" ")}function s3e(e){var t;if(!e)return null;e.base=(t=e.base)!=null?t:"0px";const n=ZR(e),r=Object.entries(e).sort(vU).map(([s,a],l,u)=>{var c;let[,d]=(c=u[l+1])!=null?c:[];return d=parseFloat(d)>0?JR(d):void 0,{_minW:JR(a),breakpoint:s,minW:a,maxW:d,maxWQuery:rp(null,d),minWQuery:rp(a),minMaxQuery:rp(a,d)}}),i=o3e(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:YT(e),asArray:ZR(e),details:r,get(s){return r.find(a=>a.breakpoint===s)},media:[null,...n.map(s=>rp(s)).slice(1)],toArrayValue(s){if(!Qa(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(;r3e(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 ci={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}`},xl=e=>_U(t=>e(t,"&"),"[role=group]","[data-group]",".group"),Oa=e=>_U(t=>e(t,"~ &"),"[data-peer]",".peer"),_U=(e,...t)=>t.map(e).join(", "),LS={_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:xl(ci.hover),_peerHover:Oa(ci.hover),_groupFocus:xl(ci.focus),_peerFocus:Oa(ci.focus),_groupFocusVisible:xl(ci.focusVisible),_peerFocusVisible:Oa(ci.focusVisible),_groupActive:xl(ci.active),_peerActive:Oa(ci.active),_groupDisabled:xl(ci.disabled),_peerDisabled:Oa(ci.disabled),_groupInvalid:xl(ci.invalid),_peerInvalid:Oa(ci.invalid),_groupChecked:xl(ci.checked),_peerChecked:Oa(ci.checked),_groupFocusWithin:xl(ci.focusWithin),_peerFocusWithin:Oa(ci.focusWithin),_peerPlaceholderShown:Oa(ci.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]"},bU=Object.keys(LS);function eO(e,t){return S3(String(e).replace(/\./g,"-"),void 0,t)}function a3e(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:s,value:a}=o,{variable:l,reference:u}=eO(i,t==null?void 0:t.cssVarPrefix);if(!s){if(i.startsWith("space")){const f=i.split("."),[h,...p]=f,m=`${h}.-${p.join(".")}`,b=Yu.negate(a),_=Yu.negate(u);r[m]={value:b,var:l,varRef:_}}n[l]=a,r[i]={value:a,var:l,varRef:u};continue}const c=f=>{const p=[String(i).split(".")[0],f].join(".");if(!e[p])return f;const{reference:b}=eO(p,t==null?void 0:t.cssVarPrefix);return b},d=Qa(a)?a:{default:a};n=ia(n,Object.entries(d).reduce((f,[h,p])=>{var m,b;if(!p)return f;const _=c(`${p}`);if(h==="default")return f[l]=_,f;const v=(b=(m=LS)==null?void 0:m[h])!=null?b:h;return f[v]={[l]:_},f},{})),r[i]={value:u,var:l,varRef:u}}return{cssVars:n,cssMap:r}}function l3e(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function u3e(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function c3e(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function tO(e,t,n={}){const{stop:r,getKey:i}=n;function o(s,a=[]){var l;if(c3e(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 d3e=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","gradients","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur","breakpoints"];function f3e(e){return u3e(e,d3e)}function h3e(e){return e.semanticTokens}function p3e(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}var g3e=e=>bU.includes(e)||e==="default";function m3e({tokens:e,semanticTokens:t}){const n={};return tO(e,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!1,value:r})}),tO(t,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!0,value:r})},{stop:r=>Object.keys(r).every(g3e)}),n}function lMe(e){var t;const n=p3e(e),r=f3e(n),i=h3e(n),o=m3e({tokens:r,semanticTokens:i}),s=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:a,cssVars:l}=a3e(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:s3e(n.breakpoints)}),n}var ZT=ia({},W0,Qt,NCe,R1,Go,DCe,GCe,LCe,mU,VCe,wp,_3,In,XCe,KCe,HCe,qCe,$Ce,WCe),y3e=Object.assign({},In,Go,R1,mU,wp),uMe=Object.keys(y3e),v3e=[...Object.keys(ZT),...bU],_3e={...ZT,...LS},b3e=e=>e in _3e,S3e=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const s in e){let a=lc(e[s],t);if(a==null)continue;if(a=Qa(a)&&n(a)?r(a):a,!Array.isArray(a)){o[s]=a;continue}const l=a.slice(0,i.length).length;for(let u=0;ue.startsWith("--")&&typeof t=="string"&&!x3e(t),E3e=(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]=w3e(t);return t=(r=(n=i(s))!=null?n:o(a))!=null?r:o(t),t};function T3e(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,s=!1)=>{var a,l,u;const c=lc(o,r),d=S3e(c)(r);let f={};for(let h in d){const p=d[h];let m=lc(p,r);h in n&&(h=n[h]),C3e(h,m)&&(m=E3e(r,m));let b=t[h];if(b===!0&&(b={property:h}),Qa(m)){f[h]=(a=f[h])!=null?a:{},f[h]=ia({},f[h],i(m,!0));continue}let _=(u=(l=b==null?void 0:b.transform)==null?void 0:l.call(b,m,r,c))!=null?u:m;_=b!=null&&b.processResult?i(_,!0):_;const v=lc(b==null?void 0:b.property,r);if(!s&&(b!=null&&b.static)){const g=lc(b.static,r);f=ia({},f,g)}if(v&&Array.isArray(v)){for(const g of v)f[g]=_;continue}if(v){v==="&"&&Qa(_)?f=ia({},f,_):f[v]=_;continue}if(Qa(_)){f=ia({},f,_);continue}f[h]=_}return f};return i}var A3e=e=>t=>T3e({theme:t,pseudos:LS,configs:ZT})(e);function cMe(e){return e}function dMe(e){return e}function fMe(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function k3e(e,t){if(Array.isArray(e))return e;if(Qa(e))return t(e);if(e!=null)return[e]}function P3e(e,t){for(let n=t+1;n{ia(u,{[g]:f?v[g]:{[_]:v[g]}})});continue}if(!h){f?ia(u,v):u[_]=v;continue}u[_]=v}}return u}}function O3e(e){return t=>{var n;const{variant:r,size:i,theme:o}=t,s=R3e(o);return ia({},lc((n=e.baseStyle)!=null?n:{},t),s(e,"sizes",i,t),s(e,"variants",r,t))}}function hMe(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 JT(e){return l3e(e,["styleConfig","size","variant","colorScheme"])}function I3e(e,t){const n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n}function M3e(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}},D3e=N3e(M3e);function SU(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var wU=e=>SU(e,t=>t!=null);function L3e(e){return typeof e=="function"}function $3e(e,...t){return L3e(e)?e(...t):e}function pMe(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}var F3e=typeof Element<"u",B3e=typeof Map=="function",z3e=typeof Set=="function",U3e=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function K0(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(!K0(e[r],t[r]))return!1;return!0}var o;if(B3e&&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(!K0(r.value[1],t.get(r.value[0])))return!1;return!0}if(z3e&&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(U3e&&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(F3e&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!K0(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var j3e=function(t,n){try{return K0(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 V3e=Dc(j3e);function xU(e,t={}){var n;const{styleConfig:r,...i}=t,{theme:o,colorMode:s}=dCe(),a=e?D3e(o,`components.${e}`):void 0,l=r||a,u=ia({theme:o,colorMode:s},(n=l==null?void 0:l.defaultProps)!=null?n:{},wU(I3e(i,["children"]))),c=M.useRef({});if(l){const f=O3e(l)(u);V3e(c.current,f)||(c.current=f)}return c.current}function e4(e,t={}){return xU(e,t)}function gMe(e,t={}){return xU(e,t)}var G3e=new Set([...v3e,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),H3e=new Set(["htmlWidth","htmlHeight","htmlSize","htmlTranslate"]);function q3e(e){return H3e.has(e)||!G3e.has(e)}function W3e(e,...t){if(e==null)throw new TypeError("Cannot convert undefined or null to object");const n={...e};for(const r of t)if(r!=null)for(const i in r)Object.prototype.hasOwnProperty.call(r,i)&&(i in n&&delete n[i],n[i]=r[i]);return n}function K3e(e){const t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}var X3e=/^((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)-.*))$/,Q3e=oU(function(e){return X3e.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),Y3e=Q3e,Z3e=function(t){return t!=="theme"},nO=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?Y3e:Z3e},rO=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},J3e=function(t){var n=t.cache,r=t.serialized,i=t.isStringTag;return aU(n,r,i),oCe(function(){return lU(n,r,i)}),null},e5e=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=rO(t,n,r),l=a||nO(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=SU(s,(d,f)=>b3e(f)),l=$3e(e,t),u=W3e({},i,l,wU(a),o),c=A3e(u)(t.theme);return r?[c,r]:c};function Mw(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=q3e);const i=r5e({baseStyle:n}),o=n5e(e,r)(i);return mn.forwardRef(function(l,u){const{colorMode:c,forced:d}=KT();return mn.createElement(o,{ref:u,"data-theme":d?c:void 0,...l})})}function i5e(){const e=new Map;return new Proxy(Mw,{apply(t,n,r){return Mw(...r)},get(t,n){return e.has(n)||e.set(n,Mw(n)),e.get(n)}})}var vu=i5e();function Lu(e){return M.forwardRef(e)}const CU=M.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),$S=M.createContext({}),Vm=M.createContext(null),FS=typeof document<"u",t4=FS?M.useLayoutEffect:M.useEffect,EU=M.createContext({strict:!1});function o5e(e,t,n,r){const{visualElement:i}=M.useContext($S),o=M.useContext(EU),s=M.useContext(Vm),a=M.useContext(CU).reducedMotion,l=M.useRef();r=r||o.renderer,!l.current&&r&&(l.current=r(e,{visualState:t,parent:i,props:n,presenceContext:s,blockInitialAnimation:s?s.initial===!1:!1,reducedMotionConfig:a}));const u=l.current;M.useInsertionEffect(()=>{u&&u.update(n,s)});const c=M.useRef(!!window.HandoffAppearAnimations);return t4(()=>{u&&(u.render(),c.current&&u.animationState&&u.animationState.animateChanges())}),M.useEffect(()=>{u&&(u.updateFeatures(),!c.current&&u.animationState&&u.animationState.animateChanges(),window.HandoffAppearAnimations=void 0,c.current=!1)}),u}function jd(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function s5e(e,t,n){return M.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):jd(n)&&(n.current=r))},[t])}function Wg(e){return typeof e=="string"||Array.isArray(e)}function BS(e){return typeof e=="object"&&typeof e.start=="function"}const n4=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],r4=["initial",...n4];function zS(e){return BS(e.animate)||r4.some(t=>Wg(e[t]))}function TU(e){return!!(zS(e)||e.variants)}function a5e(e,t){if(zS(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Wg(n)?n:void 0,animate:Wg(r)?r:void 0}}return e.inherit!==!1?t:{}}function l5e(e){const{initial:t,animate:n}=a5e(e,M.useContext($S));return M.useMemo(()=>({initial:t,animate:n}),[oO(t),oO(n)])}function oO(e){return Array.isArray(e)?e.join(" "):e}const sO={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"]},Kg={};for(const e in sO)Kg[e]={isEnabled:t=>sO[e].some(n=>!!t[n])};function u5e(e){for(const t in e)Kg[t]={...Kg[t],...e[t]}}const i4=M.createContext({}),AU=M.createContext({}),c5e=Symbol.for("motionComponentSymbol");function d5e({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:r,Component:i}){e&&u5e(e);function o(a,l){let u;const c={...M.useContext(CU),...a,layoutId:f5e(a)},{isStatic:d}=c,f=l5e(a),h=r(a,d);if(!d&&FS){f.visualElement=o5e(i,h,c,t);const p=M.useContext(AU),m=M.useContext(EU).strict;f.visualElement&&(u=f.visualElement.loadFeatures(c,m,e,p))}return M.createElement($S.Provider,{value:f},u&&f.visualElement?M.createElement(u,{visualElement:f.visualElement,...c}):null,n(i,a,s5e(h,f.visualElement,l),h,d,f.visualElement))}const s=M.forwardRef(o);return s[c5e]=i,s}function f5e({layoutId:e}){const t=M.useContext(i4).id;return t&&e!==void 0?t+"-"+e:e}function h5e(e){function t(r,i={}){return d5e(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 p5e=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function o4(e){return typeof e!="string"||e.includes("-")?!1:!!(p5e.indexOf(e)>-1||/[A-Z]/.test(e))}const I1={};function g5e(e){Object.assign(I1,e)}const Gm=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Jc=new Set(Gm);function kU(e,{layout:t,layoutId:n}){return Jc.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!I1[e]||e==="opacity")}const yo=e=>!!(e&&e.getVelocity),m5e={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},y5e=Gm.length;function v5e(e,{enableHardwareAcceleration:t=!0,allowTransformNone:n=!0},r,i){let o="";for(let s=0;st=>typeof t=="string"&&t.startsWith(e),RU=PU("--"),x3=PU("var(--"),_5e=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,b5e=(e,t)=>t&&typeof e=="number"?t.transform(e):e,_u=(e,t,n)=>Math.min(Math.max(n,e),t),ed={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},xp={...ed,transform:e=>_u(0,1,e)},a0={...ed,default:1},Cp=e=>Math.round(e*1e5)/1e5,US=/(-)?([\d]*\.?[\d])+/g,OU=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,S5e=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function Hm(e){return typeof e=="string"}const qm=e=>({test:t=>Hm(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),El=qm("deg"),ha=qm("%"),tt=qm("px"),w5e=qm("vh"),x5e=qm("vw"),aO={...ha,parse:e=>ha.parse(e)/100,transform:e=>ha.transform(e*100)},lO={...ed,transform:Math.round},IU={borderWidth:tt,borderTopWidth:tt,borderRightWidth:tt,borderBottomWidth:tt,borderLeftWidth:tt,borderRadius:tt,radius:tt,borderTopLeftRadius:tt,borderTopRightRadius:tt,borderBottomRightRadius:tt,borderBottomLeftRadius:tt,width:tt,maxWidth:tt,height:tt,maxHeight:tt,size:tt,top:tt,right:tt,bottom:tt,left:tt,padding:tt,paddingTop:tt,paddingRight:tt,paddingBottom:tt,paddingLeft:tt,margin:tt,marginTop:tt,marginRight:tt,marginBottom:tt,marginLeft:tt,rotate:El,rotateX:El,rotateY:El,rotateZ:El,scale:a0,scaleX:a0,scaleY:a0,scaleZ:a0,skew:El,skewX:El,skewY:El,distance:tt,translateX:tt,translateY:tt,translateZ:tt,x:tt,y:tt,z:tt,perspective:tt,transformPerspective:tt,opacity:xp,originX:aO,originY:aO,originZ:tt,zIndex:lO,fillOpacity:xp,strokeOpacity:xp,numOctaves:lO};function s4(e,t,n,r){const{style:i,vars:o,transform:s,transformOrigin:a}=e;let l=!1,u=!1,c=!0;for(const d in t){const f=t[d];if(RU(d)){o[d]=f;continue}const h=IU[d],p=b5e(f,h);if(Jc.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=v5e(e.transform,n,c,r):i.transform&&(i.transform="none")),u){const{originX:d="50%",originY:f="50%",originZ:h=0}=a;i.transformOrigin=`${d} ${f} ${h}`}}const a4=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function MU(e,t,n){for(const r in t)!yo(t[r])&&!kU(r,n)&&(e[r]=t[r])}function C5e({transformTemplate:e},t,n){return M.useMemo(()=>{const r=a4();return s4(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function E5e(e,t,n){const r=e.style||{},i={};return MU(i,r,e),Object.assign(i,C5e(e,t,n)),e.transformValues?e.transformValues(i):i}function T5e(e,t,n){const r={},i=E5e(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 A5e=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 M1(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||A5e.has(e)}let NU=e=>!M1(e);function k5e(e){e&&(NU=t=>t.startsWith("on")?!M1(t):e(t))}try{k5e(require("@emotion/is-prop-valid").default)}catch{}function P5e(e,t,n){const r={};for(const i in e)i==="values"&&typeof e.values=="object"||(NU(i)||n===!0&&M1(i)||!t&&!M1(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function uO(e,t,n){return typeof e=="string"?e:tt.transform(t+n*e)}function R5e(e,t,n){const r=uO(t,e.x,e.width),i=uO(n,e.y,e.height);return`${r} ${i}`}const O5e={offset:"stroke-dashoffset",array:"stroke-dasharray"},I5e={offset:"strokeDashoffset",array:"strokeDasharray"};function M5e(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?O5e:I5e;e[o.offset]=tt.transform(-r);const s=tt.transform(t),a=tt.transform(n);e[o.array]=`${s} ${a}`}function l4(e,{attrX:t,attrY:n,attrScale:r,originX:i,originY:o,pathLength:s,pathSpacing:a=1,pathOffset:l=0,...u},c,d,f){if(s4(e,u,c,f),d){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:h,style:p,dimensions:m}=e;h.transform&&(m&&(p.transform=h.transform),delete h.transform),m&&(i!==void 0||o!==void 0||p.transform)&&(p.transformOrigin=R5e(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&&M5e(h,s,a,l,!1)}const DU=()=>({...a4(),attrs:{}}),u4=e=>typeof e=="string"&&e.toLowerCase()==="svg";function N5e(e,t,n,r){const i=M.useMemo(()=>{const o=DU();return l4(o,t,{enableHardwareAcceleration:!1},u4(r),e.transformTemplate),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};MU(o,e.style,e),i.style={...o,...i.style}}return i}function D5e(e=!1){return(n,r,i,{latestValues:o},s)=>{const l=(o4(n)?N5e:T5e)(r,o,s,n),c={...P5e(r,typeof n=="string",e),...l,ref:i},{children:d}=r,f=M.useMemo(()=>yo(d)?d.get():d,[d]);return M.createElement(n,{...c,children:f})}}const c4=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function LU(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 $U=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 FU(e,t,n,r){LU(e,t,void 0,r);for(const i in t.attrs)e.setAttribute($U.has(i)?i:c4(i),t.attrs[i])}function d4(e,t){const{style:n}=e,r={};for(const i in n)(yo(n[i])||t.style&&yo(t.style[i])||kU(i,e))&&(r[i]=n[i]);return r}function BU(e,t){const n=d4(e,t);for(const r in e)if(yo(e[r])||yo(t[r])){const i=Gm.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;n[i]=e[r]}return n}function f4(e,t,n,r={},i={}){return typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),t}function zU(e){const t=M.useRef(null);return t.current===null&&(t.current=e()),t.current}const N1=e=>Array.isArray(e),L5e=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),$5e=e=>N1(e)?e[e.length-1]||0:e;function X0(e){const t=yo(e)?e.get():e;return L5e(t)?t.toValue():t}function F5e({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const s={latestValues:B5e(r,i,o,e),renderState:t()};return n&&(s.mount=a=>n(r,a,s)),s}const UU=e=>(t,n)=>{const r=M.useContext($S),i=M.useContext(Vm),o=()=>F5e(e,t,r,i);return n?o():zU(o)};function B5e(e,t,n,r){const i={},o=r(e,{});for(const f in o)i[f]=X0(o[f]);let{initial:s,animate:a}=e;const l=zS(e),u=TU(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"&&!BS(d)&&(Array.isArray(d)?d:[d]).forEach(h=>{const p=f4(e,h);if(!p)return;const{transitionEnd:m,transition:b,..._}=p;for(const v in _){let g=_[v];if(Array.isArray(g)){const y=c?g.length-1:0;g=g[y]}g!==null&&(i[v]=g)}for(const v in m)i[v]=m[v]}),i}const ur=e=>e;function z5e(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]=z5e(()=>n=!0),d),{}),s=d=>o[d].process(i),a=()=>{const d=performance.now();n=!1,i.delta=r?1e3/60:Math.max(Math.min(d-i.timestamp,U5e),1),i.timestamp=d,i.isProcessing=!0,l0.forEach(s),i.isProcessing=!1,n&&t&&(r=!1,e(a))},l=()=>{n=!0,r=!0,i.isProcessing||e(a)};return{schedule:l0.reduce((d,f)=>{const h=o[f];return d[f]=(p,m=!1,b=!1)=>(n||l(),h.schedule(p,m,b)),d},{}),cancel:d=>l0.forEach(f=>o[f].cancel(d)),state:i,steps:o}}const{schedule:En,cancel:ll,state:Pi,steps:Nw}=j5e(typeof requestAnimationFrame<"u"?requestAnimationFrame:ur,!0),V5e={useVisualState:UU({scrapeMotionValuesFromProps:BU,createRenderState:DU,onMount:(e,t,{renderState:n,latestValues:r})=>{En.read(()=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}}),En.render(()=>{l4(n,r,{enableHardwareAcceleration:!1},u4(t.tagName),e.transformTemplate),FU(t,n)})}})},G5e={useVisualState:UU({scrapeMotionValuesFromProps:d4,createRenderState:a4})};function H5e(e,{forwardMotionProps:t=!1},n,r){return{...o4(e)?V5e:G5e,preloadedFeatures:n,useRender:D5e(t),createVisualElement:r,Component:e}}function qa(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}const jU=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function jS(e,t="page"){return{point:{x:e[t+"X"],y:e[t+"Y"]}}}const q5e=e=>t=>jU(t)&&e(t,jS(t));function Ya(e,t,n,r){return qa(e,t,q5e(n),r)}const W5e=(e,t)=>n=>t(e(n)),iu=(...e)=>e.reduce(W5e);function VU(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const cO=VU("dragHorizontal"),dO=VU("dragVertical");function GU(e){let t=!1;if(e==="y")t=dO();else if(e==="x")t=cO();else{const n=cO(),r=dO();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function HU(){const e=GU(!0);return e?(e(),!1):!0}class $u{constructor(t){this.isMounted=!1,this.node=t}update(){}}function fO(e,t){const n="pointer"+(t?"enter":"leave"),r="onHover"+(t?"Start":"End"),i=(o,s)=>{if(o.type==="touch"||HU())return;const a=e.getProps();e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",t),a[r]&&En.update(()=>a[r](o,s))};return Ya(e.current,n,i,{passive:!e.getProps()[r]})}class K5e extends $u{mount(){this.unmount=iu(fO(this.node,!0),fO(this.node,!1))}unmount(){}}class X5e extends $u{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=iu(qa(this.node.current,"focus",()=>this.onFocus()),qa(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const qU=(e,t)=>t?e===t?!0:qU(e,t.parentElement):!1;function Dw(e,t){if(!t)return;const n=new PointerEvent("pointer"+e);t(n,jS(n))}class Q5e extends $u{constructor(){super(...arguments),this.removeStartListeners=ur,this.removeEndListeners=ur,this.removeAccessibleListeners=ur,this.startPointerPress=(t,n)=>{if(this.removeEndListeners(),this.isPressing)return;const r=this.node.getProps(),o=Ya(window,"pointerup",(a,l)=>{if(!this.checkPressEnd())return;const{onTap:u,onTapCancel:c}=this.node.getProps();En.update(()=>{qU(this.node.current,a.target)?u&&u(a,l):c&&c(a,l)})},{passive:!(r.onTap||r.onPointerUp)}),s=Ya(window,"pointercancel",(a,l)=>this.cancelPress(a,l),{passive:!(r.onTapCancel||r.onPointerCancel)});this.removeEndListeners=iu(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()||Dw("up",(l,u)=>{const{onTap:c}=this.node.getProps();c&&En.update(()=>c(l,u))})};this.removeEndListeners(),this.removeEndListeners=qa(this.node.current,"keyup",s),Dw("down",(a,l)=>{this.startPress(a,l)})},n=qa(this.node.current,"keydown",t),r=()=>{this.isPressing&&Dw("cancel",(o,s)=>this.cancelPress(o,s))},i=qa(this.node.current,"blur",r);this.removeAccessibleListeners=iu(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&&En.update(()=>r(t,n))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!HU()}cancelPress(t,n){if(!this.checkPressEnd())return;const{onTapCancel:r}=this.node.getProps();r&&En.update(()=>r(t,n))}mount(){const t=this.node.getProps(),n=Ya(this.node.current,"pointerdown",this.startPointerPress,{passive:!(t.onTapStart||t.onPointerStart)}),r=qa(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=iu(n,r)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const C3=new WeakMap,Lw=new WeakMap,Y5e=e=>{const t=C3.get(e.target);t&&t(e)},Z5e=e=>{e.forEach(Y5e)};function J5e({root:e,...t}){const n=e||document;Lw.has(n)||Lw.set(n,{});const r=Lw.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(Z5e,{root:e,...t})),r[i]}function eEe(e,t,n){const r=J5e(t);return C3.set(e,n),r.observe(e),()=>{C3.delete(e),r.unobserve(e)}}const tEe={some:0,all:1};class nEe extends $u{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:tEe[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 eEe(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(rEe(t,n))&&this.startObserver()}unmount(){}}function rEe({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const iEe={inView:{Feature:nEe},tap:{Feature:Q5e},focus:{Feature:X5e},hover:{Feature:K5e}};function WU(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 sEe(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVelocity()),t}function VS(e,t,n){const r=e.getProps();return f4(r,t,n!==void 0?n:r.custom,oEe(e),sEe(e))}const aEe="framerAppearId",lEe="data-"+c4(aEe);let uEe=ur,h4=ur;const ou=e=>e*1e3,Za=e=>e/1e3,cEe={current:!1},KU=e=>Array.isArray(e)&&typeof e[0]=="number";function XU(e){return!!(!e||typeof e=="string"&&QU[e]||KU(e)||Array.isArray(e)&&e.every(XU))}const ip=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,QU={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:ip([0,.65,.55,1]),circOut:ip([.55,0,1,.45]),backIn:ip([.31,.01,.66,-.59]),backOut:ip([.33,1.53,.69,.99])};function YU(e){if(e)return KU(e)?ip(e):Array.isArray(e)?e.map(YU):QU[e]}function dEe(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=YU(a);return Array.isArray(c)&&(u.easing=c),e.animate(u,{delay:r,duration:i,easing:Array.isArray(c)?"linear":c,fill:"both",iterations:o+1,direction:s==="reverse"?"alternate":"normal"})}function fEe(e,{repeat:t,repeatType:n="loop"}){const r=t&&n!=="loop"&&t%2===1?0:e.length-1;return e[r]}const ZU=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,hEe=1e-7,pEe=12;function gEe(e,t,n,r,i){let o,s,a=0;do s=t+(n-t)/2,o=ZU(s,r,i)-e,o>0?n=s:t=s;while(Math.abs(o)>hEe&&++agEe(o,0,1,e,n);return o=>o===0||o===1?o:ZU(i(o),t,r)}const mEe=Wm(.42,0,1,1),yEe=Wm(0,0,.58,1),JU=Wm(.42,0,.58,1),vEe=e=>Array.isArray(e)&&typeof e[0]!="number",ej=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,tj=e=>t=>1-e(1-t),nj=e=>1-Math.sin(Math.acos(e)),p4=tj(nj),_Ee=ej(p4),rj=Wm(.33,1.53,.69,.99),g4=tj(rj),bEe=ej(g4),SEe=e=>(e*=2)<1?.5*g4(e):.5*(2-Math.pow(2,-10*(e-1))),wEe={linear:ur,easeIn:mEe,easeInOut:JU,easeOut:yEe,circIn:nj,circInOut:_Ee,circOut:p4,backIn:g4,backInOut:bEe,backOut:rj,anticipate:SEe},hO=e=>{if(Array.isArray(e)){h4(e.length===4);const[t,n,r,i]=e;return Wm(t,n,r,i)}else if(typeof e=="string")return wEe[e];return e},m4=(e,t)=>n=>!!(Hm(n)&&S5e.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),ij=(e,t,n)=>r=>{if(!Hm(r))return r;const[i,o,s,a]=r.match(US);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(s),alpha:a!==void 0?parseFloat(a):1}},xEe=e=>_u(0,255,e),$w={...ed,transform:e=>Math.round(xEe(e))},uc={test:m4("rgb","red"),parse:ij("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+$w.transform(e)+", "+$w.transform(t)+", "+$w.transform(n)+", "+Cp(xp.transform(r))+")"};function CEe(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 E3={test:m4("#"),parse:CEe,transform:uc.transform},Vd={test:m4("hsl","hue"),parse:ij("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+ha.transform(Cp(t))+", "+ha.transform(Cp(n))+", "+Cp(xp.transform(r))+")"},Vi={test:e=>uc.test(e)||E3.test(e)||Vd.test(e),parse:e=>uc.test(e)?uc.parse(e):Vd.test(e)?Vd.parse(e):E3.parse(e),transform:e=>Hm(e)?e:e.hasOwnProperty("red")?uc.transform(e):Vd.transform(e)},tr=(e,t,n)=>-n*e+n*t+e;function Fw(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 EEe({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=Fw(l,a,e+1/3),o=Fw(l,a,e),s=Fw(l,a,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(s*255),alpha:r}}const Bw=(e,t,n)=>{const r=e*e;return Math.sqrt(Math.max(0,n*(t*t-r)+r))},TEe=[E3,uc,Vd],AEe=e=>TEe.find(t=>t.test(e));function pO(e){const t=AEe(e);let n=t.parse(e);return t===Vd&&(n=EEe(n)),n}const oj=(e,t)=>{const n=pO(e),r=pO(t),i={...n};return o=>(i.red=Bw(n.red,r.red,o),i.green=Bw(n.green,r.green,o),i.blue=Bw(n.blue,r.blue,o),i.alpha=tr(n.alpha,r.alpha,o),uc.transform(i))};function kEe(e){var t,n;return isNaN(e)&&Hm(e)&&(((t=e.match(US))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(OU))===null||n===void 0?void 0:n.length)||0)>0}const sj={regex:_5e,countKey:"Vars",token:"${v}",parse:ur},aj={regex:OU,countKey:"Colors",token:"${c}",parse:Vi.parse},lj={regex:US,countKey:"Numbers",token:"${n}",parse:ed.parse};function zw(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 D1(e){const t=e.toString(),n={value:t,tokenised:t,values:[],numVars:0,numColors:0,numNumbers:0};return n.value.includes("var(--")&&zw(n,sj),zw(n,aj),zw(n,lj),n}function uj(e){return D1(e).values}function cj(e){const{values:t,numColors:n,numVars:r,tokenised:i}=D1(e),o=t.length;return s=>{let a=i;for(let l=0;ltypeof e=="number"?0:e;function REe(e){const t=uj(e);return cj(e)(t.map(PEe))}const bu={test:kEe,parse:uj,createTransformer:cj,getAnimatableNone:REe},dj=(e,t)=>n=>`${n>0?t:e}`;function fj(e,t){return typeof e=="number"?n=>tr(e,t,n):Vi.test(e)?oj(e,t):e.startsWith("var(")?dj(e,t):pj(e,t)}const hj=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,s)=>fj(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]=fj(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}},pj=(e,t)=>{const n=bu.createTransformer(t),r=D1(e),i=D1(t);return r.numVars===i.numVars&&r.numColors===i.numColors&&r.numNumbers>=i.numNumbers?iu(hj(r.values,i.values),n):dj(e,t)},Xg=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},gO=(e,t)=>n=>tr(e,t,n);function IEe(e){return typeof e=="number"?gO:typeof e=="string"?Vi.test(e)?oj:pj:Array.isArray(e)?hj:typeof e=="object"?OEe:gO}function MEe(e,t,n){const r=[],i=n||IEe(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=MEe(t,r,i),a=s.length,l=u=>{let c=0;if(a>1)for(;cl(_u(e[0],e[o-1],u)):l}function NEe(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const i=Xg(0,t,r);e.push(tr(n,1,i))}}function DEe(e){const t=[0];return NEe(t,e.length-1),t}function LEe(e,t){return e.map(n=>n*t)}function $Ee(e,t){return e.map(()=>t||JU).splice(0,e.length-1)}function L1({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const i=vEe(r)?r.map(hO):hO(r),o={done:!1,value:t[0]},s=LEe(n&&n.length===t.length?n:DEe(t),e),a=gj(s,t,{ease:Array.isArray(i)?i:$Ee(t,i)});return{calculatedDuration:e,next:l=>(o.value=a(l),o.done=l>=e,o)}}function mj(e,t){return t?e*(1e3/t):0}const FEe=5;function yj(e,t,n){const r=Math.max(t-FEe,0);return mj(n-e(r),t-r)}const Uw=.001,BEe=.01,mO=10,zEe=.05,UEe=1;function jEe({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;uEe(e<=ou(mO));let s=1-t;s=_u(zEe,UEe,s),e=_u(BEe,mO,Za(e)),s<1?(i=u=>{const c=u*s,d=c*e,f=c-n,h=T3(u,s),p=Math.exp(-d);return Uw-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=T3(Math.pow(u,2),s);return(-i(u)+Uw>0?-1:1)*((f-h)*p)/m}):(i=u=>{const c=Math.exp(-u*e),d=(u-n)*e+1;return-Uw+c*d},o=u=>{const c=Math.exp(-u*e),d=(n-u)*(e*e);return c*d});const a=5/e,l=GEe(i,o,a);if(e=ou(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 VEe=12;function GEe(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function WEe(e){let t={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...e};if(!yO(e,qEe)&&yO(e,HEe)){const n=jEe(e);t={...t,...n,velocity:0,mass:1},t.isResolvedFromDuration=!0}return t}function vj({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}=WEe(r),h=c?-Za(c):0,p=l/(2*Math.sqrt(a*u)),m=o-i,b=Za(Math.sqrt(a/u)),_=Math.abs(m)<5;n||(n=_?.01:2),t||(t=_?.005:.5);let v;if(p<1){const g=T3(b,p);v=y=>{const S=Math.exp(-p*b*y);return o-S*((h+p*b*m)/g*Math.sin(g*y)+m*Math.cos(g*y))}}else if(p===1)v=g=>o-Math.exp(-b*g)*(m+(h+b*m)*g);else{const g=b*Math.sqrt(p*p-1);v=y=>{const S=Math.exp(-p*b*y),w=Math.min(g*y,300);return o-S*((h+p*b*m)*Math.sinh(w)+g*m*Math.cosh(w))/g}}return{calculatedDuration:f&&d||null,next:g=>{const y=v(g);if(f)s.done=g>=d;else{let S=h;g!==0&&(p<1?S=yj(v,g,y):S=0);const w=Math.abs(S)<=n,x=Math.abs(o-y)<=t;s.done=w&&x}return s.value=s.done?o:y,s}}}function vO({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=E=>a!==void 0&&El,p=E=>a===void 0?l:l===void 0||Math.abs(a-E)-m*Math.exp(-E/r),g=E=>_+v(E),y=E=>{const A=v(E),T=g(E);f.done=Math.abs(A)<=u,f.value=f.done?_:T};let S,w;const x=E=>{h(f.value)&&(S=E,w=vj({keyframes:[f.value,p(f.value)],velocity:yj(g,E,f.value),damping:i,stiffness:o,restDelta:u,restSpeed:c}))};return x(0),{calculatedDuration:null,next:E=>{let A=!1;return!w&&S===void 0&&(A=!0,y(E),x(E)),S!==void 0&&E>S?w.next(E-S):(!A&&y(E),f)}}}const KEe=e=>{const t=({timestamp:n})=>e(n);return{start:()=>En.update(t,!0),stop:()=>ll(t),now:()=>Pi.isProcessing?Pi.timestamp:performance.now()}},_O=2e4;function bO(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t<_O;)t+=n,r=e.next(t);return t>=_O?1/0:t}const XEe={decay:vO,inertia:vO,tween:L1,keyframes:L1,spring:vj};function $1({autoplay:e=!0,delay:t=0,driver:n=KEe,keyframes:r,type:i="keyframes",repeat:o=0,repeatDelay:s=0,repeatType:a="loop",onPlay:l,onStop:u,onComplete:c,onUpdate:d,...f}){let h=1,p=!1,m,b;const _=()=>{b=new Promise(F=>{m=F})};_();let v;const g=XEe[i]||L1;let y;g!==L1&&typeof r[0]!="number"&&(y=gj([0,100],r,{clamp:!1}),r=[0,100]);const S=g({...f,keyframes:r});let w;a==="mirror"&&(w=g({...f,keyframes:[...r].reverse(),velocity:-(f.velocity||0)}));let x="idle",E=null,A=null,T=null;S.calculatedDuration===null&&o&&(S.calculatedDuration=bO(S));const{calculatedDuration:k}=S;let L=1/0,N=1/0;k!==null&&(L=k+s,N=L*(o+1)-s);let C=0;const P=F=>{if(A===null)return;h>0&&(A=Math.min(A,F)),h<0&&(A=Math.min(F-N/h,A)),E!==null?C=E:C=Math.round(F-A)*h;const U=C-t*(h>=0?1:-1),V=h>=0?U<0:U>N;C=Math.max(U,0),x==="finished"&&E===null&&(C=N);let H=C,Y=S;if(o){const ee=C/L;let ie=Math.floor(ee),ge=ee%1;!ge&&ee>=1&&(ge=1),ge===1&&ie--,ie=Math.min(ie,o+1);const ae=!!(ie%2);ae&&(a==="reverse"?(ge=1-ge,s&&(ge-=s/L)):a==="mirror"&&(Y=w));let dt=_u(0,1,ge);C>N&&(dt=a==="reverse"&&ae?1:0),H=dt*L}const Q=V?{done:!1,value:r[0]}:Y.next(H);y&&(Q.value=y(Q.value));let{done:j}=Q;!V&&k!==null&&(j=h>=0?C>=N:C<=0);const K=E===null&&(x==="finished"||x==="running"&&j);return d&&d(Q.value),K&&R(),Q},D=()=>{v&&v.stop(),v=void 0},B=()=>{x="idle",D(),m(),_(),A=T=null},R=()=>{x="finished",c&&c(),D(),m()},O=()=>{if(p)return;v||(v=n(P));const F=v.now();l&&l(),E!==null?A=F-E:(!A||x==="finished")&&(A=F),x==="finished"&&_(),T=A,E=null,x="running",v.start()};e&&O();const I={then(F,U){return b.then(F,U)},get time(){return Za(C)},set time(F){F=ou(F),C=F,E!==null||!v||h===0?E=F:A=v.now()-F/h},get duration(){const F=S.calculatedDuration===null?bO(S):S.calculatedDuration;return Za(F)},get speed(){return h},set speed(F){F===h||!v||(h=F,I.time=Za(C))},get state(){return x},play:O,pause:()=>{x="paused",E=C},stop:()=>{p=!0,x!=="idle"&&(x="idle",u&&u(),B())},cancel:()=>{T!==null&&P(T),B()},complete:()=>{x="finished"},sample:F=>(A=0,P(F))};return I}function QEe(e){let t;return()=>(t===void 0&&(t=e()),t)}const YEe=QEe(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),ZEe=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),u0=10,JEe=2e4,eTe=(e,t)=>t.type==="spring"||e==="backgroundColor"||!XU(t.ease);function tTe(e,t,{onUpdate:n,onComplete:r,...i}){if(!(YEe()&&ZEe.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(eTe(t,i)){const v=$1({...i,repeat:0,delay:0});let g={done:!1,value:c[0]};const y=[];let S=0;for(;!g.done&&Sp.cancel(),b=()=>{En.update(m),a(),u()};return p.onfinish=()=>{e.set(fEe(c,i)),r&&r(),b()},{then(v,g){return l.then(v,g)},attachTimeline(v){return p.timeline=v,p.onfinish=null,ur},get time(){return Za(p.currentTime||0)},set time(v){p.currentTime=ou(v)},get speed(){return p.playbackRate},set speed(v){p.playbackRate=v},get duration(){return Za(d)},play:()=>{s||(p.play(),ll(m))},pause:()=>p.pause(),stop:()=>{if(s=!0,p.playState==="idle")return;const{currentTime:v}=p;if(v){const g=$1({...i,autoplay:!1});e.setWithVelocity(g.sample(v-u0).value,g.sample(v).value,u0)}b()},complete:()=>p.finish(),cancel:b}}function nTe({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:ur,pause:ur,stop:ur,then:o=>(o(),Promise.resolve()),cancel:ur,complete:ur});return t?$1({keyframes:[0,1],duration:0,delay:t,onComplete:i}):i()}const rTe={type:"spring",stiffness:500,damping:25,restSpeed:10},iTe=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),oTe={type:"keyframes",duration:.8},sTe={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},aTe=(e,{keyframes:t})=>t.length>2?oTe:Jc.has(e)?e.startsWith("scale")?iTe(t[1]):rTe:sTe,A3=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(bu.test(t)||t==="0")&&!t.startsWith("url(")),lTe=new Set(["brightness","contrast","saturate","opacity"]);function uTe(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(US)||[];if(!r)return e;const i=n.replace(r,"");let o=lTe.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const cTe=/([a-z-]*)\(.*?\)/g,k3={...bu,getAnimatableNone:e=>{const t=e.match(cTe);return t?t.map(uTe).join(" "):e}},dTe={...IU,color:Vi,backgroundColor:Vi,outlineColor:Vi,fill:Vi,stroke:Vi,borderColor:Vi,borderTopColor:Vi,borderRightColor:Vi,borderBottomColor:Vi,borderLeftColor:Vi,filter:k3,WebkitFilter:k3},y4=e=>dTe[e];function _j(e,t){let n=y4(e);return n!==k3&&(n=bu),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const bj=e=>/^0[^.\s]+$/.test(e);function fTe(e){if(typeof e=="number")return e===0;if(e!==null)return e==="none"||e==="0"||bj(e)}function hTe(e,t,n,r){const i=A3(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=Sj(r,e)||{},s=o.delay||r.delay||0;let{elapsed:a=0}=r;a=a-ou(s);const l=hTe(t,e,n,o),u=l[0],c=l[l.length-1],d=A3(e,u),f=A3(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(pTe(o)||(h={...h,...aTe(e,h)}),h.duration&&(h.duration=ou(h.duration)),h.repeatDelay&&(h.repeatDelay=ou(h.repeatDelay)),!d||!f||cEe.current||o.type===!1)return nTe(h);if(t.owner&&t.owner.current instanceof HTMLElement&&!t.owner.getProps().onUpdate){const p=tTe(t,e,h);if(p)return p}return $1(h)};function F1(e){return!!(yo(e)&&e.add)}const wj=e=>/^\-?\d*\.?\d+$/.test(e);function _4(e,t){e.indexOf(t)===-1&&e.push(t)}function b4(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class S4{constructor(){this.subscriptions=[]}add(t){return _4(this.subscriptions,t),()=>b4(this.subscriptions,t)}notify(t,n,r){const i=this.subscriptions.length;if(i)if(i===1)this.subscriptions[0](t,n,r);else for(let o=0;o!isNaN(parseFloat(e));class mTe{constructor(t,n={}){this.version="10.16.1",this.timeDelta=0,this.lastUpdated=0,this.canTrackVelocity=!1,this.events={},this.updateAndNotify=(r,i=!0)=>{this.prev=this.current,this.current=r;const{delta:o,timestamp:s}=Pi;this.lastUpdated!==s&&(this.timeDelta=o,this.lastUpdated=s,En.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=()=>En.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=gTe(this.current),this.owner=n.owner}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new S4);const r=this.events[t].add(n);return t==="change"?()=>{r(),En.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?mj(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 Hf(e,t){return new mTe(e,t)}const xj=e=>t=>t.test(e),yTe={test:e=>e==="auto",parse:e=>e},Cj=[ed,tt,ha,El,x5e,w5e,yTe],Hh=e=>Cj.find(xj(e)),vTe=[...Cj,Vi,bu],_Te=e=>vTe.find(xj(e));function bTe(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,Hf(n))}function STe(e,t){const n=VS(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const s in o){const a=$5e(o[s]);bTe(e,s,a)}}function wTe(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&&STe(e,s)}),u}function P3(e,t,n={}){const r=VS(e,t,n.custom);let{transition:i=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(i=n.transitionOverride);const o=r?()=>Promise.all(Ej(e,r,n)):()=>Promise.resolve(),s=e.variantChildren&&e.variantChildren.size?(l=0)=>{const{delayChildren:u=0,staggerChildren:c,staggerDirection:d}=i;return TTe(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 TTe(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(ATe).forEach((u,c)=>{u.notify("AnimationStart",t),s.push(P3(u,t,{...o,delay:n+l(c)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(s)}function ATe(e,t){return e.sortNodePosition(t)}function kTe(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const i=t.map(o=>P3(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=P3(e,t,n);else{const i=typeof t=="function"?VS(e,t,n.custom):t;r=Promise.all(Ej(e,i,n))}return r.then(()=>e.notify("AnimationComplete",t))}const PTe=[...n4].reverse(),RTe=n4.length;function OTe(e){return t=>Promise.all(t.map(({animation:n,options:r})=>kTe(e,n,r)))}function ITe(e){let t=OTe(e);const n=NTe();let r=!0;const i=(l,u)=>{const c=VS(e,u);if(c){const{transition:d,transitionEnd:f,...h}=c;l={...l,...h,...f}}return l};function o(l){t=l(e)}function s(l,u){const c=e.getProps(),d=e.getVariantContext(!0)||{},f=[],h=new Set;let p={},m=1/0;for(let _=0;_m&&S;const T=Array.isArray(y)?y:[y];let k=T.reduce(i,{});w===!1&&(k={});const{prevResolvedValues:L={}}=g,N={...L,...k},C=P=>{A=!0,h.delete(P),g.needsAnimating[P]=!0};for(const P in N){const D=k[P],B=L[P];p.hasOwnProperty(P)||(D!==B?N1(D)&&N1(B)?!WU(D,B)||E?C(P):g.protectedKeys[P]=!0:D!==void 0?C(P):h.add(P):D!==void 0&&h.has(P)?C(P):g.protectedKeys[P]=!0)}g.prevProp=y,g.prevResolvedValues=k,g.isActive&&(p={...p,...k}),r&&e.blockInitialAnimation&&(A=!1),A&&!x&&f.push(...T.map(P=>({animation:P,options:{type:v,...l}})))}if(h.size){const _={};h.forEach(v=>{const g=e.getBaseTarget(v);g!==void 0&&(_[v]=g)}),f.push({animation:_})}let b=!!f.length;return r&&c.initial===!1&&!e.manuallyAnimateOnMount&&(b=!1),r=!1,b?t(f):Promise.resolve()}function a(l,u,c){var d;if(n[l].isActive===u)return Promise.resolve();(d=e.variantChildren)===null||d===void 0||d.forEach(h=>{var p;return(p=h.animationState)===null||p===void 0?void 0:p.setActive(l,u)}),n[l].isActive=u;const f=s(c,l);for(const h in n)n[h].protectedKeys={};return f}return{animateChanges:s,setActive:a,setAnimateFunction:o,getState:()=>n}}function MTe(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!WU(t,e):!1}function Vu(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function NTe(){return{animate:Vu(!0),whileInView:Vu(),whileHover:Vu(),whileTap:Vu(),whileDrag:Vu(),whileFocus:Vu(),exit:Vu()}}class DTe extends $u{constructor(t){super(t),t.animationState||(t.animationState=ITe(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();this.unmount(),BS(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 LTe=0;class $Te extends $u{constructor(){super(...arguments),this.id=LTe++}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 FTe={animation:{Feature:DTe},exit:{Feature:$Te}},SO=(e,t)=>Math.abs(e-t);function BTe(e,t){const n=SO(e.x,t.x),r=SO(e.y,t.y);return Math.sqrt(n**2+r**2)}class Tj{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=Vw(this.lastMoveEventInfo,this.history),c=this.startEvent!==null,d=BTe(u.offset,{x:0,y:0})>=3;if(!c&&!d)return;const{point:f}=u,{timestamp:h}=Pi;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=jw(c,this.transformPagePoint),En.update(this.updatePoint,!0)},this.handlePointerUp=(u,c)=>{if(this.end(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const{onEnd:d,onSessionEnd:f}=this.handlers,h=Vw(u.type==="pointercancel"?this.lastMoveEventInfo:jw(c,this.transformPagePoint),this.history);this.startEvent&&d&&d(u,h),f&&f(u,h)},!jU(t))return;this.handlers=n,this.transformPagePoint=r;const i=jS(t),o=jw(i,this.transformPagePoint),{point:s}=o,{timestamp:a}=Pi;this.history=[{...s,timestamp:a}];const{onSessionStart:l}=n;l&&l(t,Vw(o,this.history)),this.removeListeners=iu(Ya(window,"pointermove",this.handlePointerMove),Ya(window,"pointerup",this.handlePointerUp),Ya(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),ll(this.updatePoint)}}function jw(e,t){return t?{point:t(e.point)}:e}function wO(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Vw({point:e},t){return{point:e,delta:wO(e,Aj(t)),offset:wO(e,zTe(t)),velocity:UTe(t,.1)}}function zTe(e){return e[0]}function Aj(e){return e[e.length-1]}function UTe(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=Aj(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>ou(t)));)n--;if(!r)return{x:0,y:0};const o=Za(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 No(e){return e.max-e.min}function R3(e,t=0,n=.01){return Math.abs(e-t)<=n}function xO(e,t,n,r=.5){e.origin=r,e.originPoint=tr(t.min,t.max,e.origin),e.scale=No(n)/No(t),(R3(e.scale,1,1e-4)||isNaN(e.scale))&&(e.scale=1),e.translate=tr(n.min,n.max,e.origin)-e.originPoint,(R3(e.translate)||isNaN(e.translate))&&(e.translate=0)}function Ep(e,t,n,r){xO(e.x,t.x,n.x,r?r.originX:void 0),xO(e.y,t.y,n.y,r?r.originY:void 0)}function CO(e,t,n){e.min=n.min+t.min,e.max=e.min+No(t)}function jTe(e,t,n){CO(e.x,t.x,n.x),CO(e.y,t.y,n.y)}function EO(e,t,n){e.min=t.min-n.min,e.max=e.min+No(t)}function Tp(e,t,n){EO(e.x,t.x,n.x),EO(e.y,t.y,n.y)}function VTe(e,{min:t,max:n},r){return t!==void 0&&en&&(e=r?tr(n,e,r.max):Math.min(e,n)),e}function TO(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 GTe(e,{top:t,left:n,bottom:r,right:i}){return{x:TO(e.x,n,i),y:TO(e.y,t,r)}}function AO(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=Xg(t.min,t.max-r,e.min):r>i&&(n=Xg(e.min,e.max-i,t.min)),_u(0,1,n)}function WTe(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 O3=.35;function KTe(e=O3){return e===!1?e=0:e===!0&&(e=O3),{x:kO(e,"left","right"),y:kO(e,"top","bottom")}}function kO(e,t,n){return{min:PO(e,t),max:PO(e,n)}}function PO(e,t){return typeof e=="number"?e:e[t]||0}const RO=()=>({translate:0,scale:1,origin:0,originPoint:0}),Gd=()=>({x:RO(),y:RO()}),OO=()=>({min:0,max:0}),Er=()=>({x:OO(),y:OO()});function Ws(e){return[e("x"),e("y")]}function kj({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function XTe({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function QTe(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 Gw(e){return e===void 0||e===1}function I3({scale:e,scaleX:t,scaleY:n}){return!Gw(e)||!Gw(t)||!Gw(n)}function Xu(e){return I3(e)||Pj(e)||e.z||e.rotate||e.rotateX||e.rotateY}function Pj(e){return IO(e.x)||IO(e.y)}function IO(e){return e&&e!=="0%"}function B1(e,t,n){const r=e-n,i=t*r;return n+i}function MO(e,t,n,r,i){return i!==void 0&&(e=B1(e,i,r)),B1(e,n,r)+t}function M3(e,t=0,n=1,r,i){e.min=MO(e.min,t,n,r,i),e.max=MO(e.max,t,n,r,i)}function Rj(e,{x:t,y:n}){M3(e.x,t.translate,t.scale,t.originPoint),M3(e.y,n.translate,n.scale,n.originPoint)}function YTe(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 Rl(e,t){e.min=e.min+t,e.max=e.max+t}function DO(e,t,[n,r,i]){const o=t[i]!==void 0?t[i]:.5,s=tr(e.min,e.max,o);M3(e,t[n],t[r],s,t.scale)}const ZTe=["x","scaleX","originX"],JTe=["y","scaleY","originY"];function Hd(e,t){DO(e.x,t,ZTe),DO(e.y,t,JTe)}function Oj(e,t){return kj(QTe(e.getBoundingClientRect(),t))}function e4e(e,t,n){const r=Oj(e,n),{scroll:i}=t;return i&&(Rl(r.x,i.offset.x),Rl(r.y,i.offset.y)),r}const t4e=new WeakMap;class n4e{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=Er(),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(jS(l,"page").point)},o=(l,u)=>{const{drag:c,dragPropagation:d,onDragStart:f}=this.getProps();if(c&&!d&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=GU(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),Ws(p=>{let m=this.getAxisMotionValue(p).get()||0;if(ha.test(m)){const{projection:b}=this.visualElement;if(b&&b.layout){const _=b.layout.layoutBox[p];_&&(m=No(_)*(parseFloat(m)/100))}}this.originPoint[p]=m}),f&&En.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=r4e(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 Tj(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&&En.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||!c0(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let s=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(s=VTe(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&&jd(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=GTe(r.layoutBox,t):this.constraints=!1,this.elastic=KTe(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&Ws(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=WTe(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!jd(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=e4e(r,i.root,this.visualElement.getTransformPagePoint());let s=HTe(i.layout.layoutBox,o);if(n){const a=n(XTe(s));this.hasMutatedConstraints=!!a,a&&(s=kj(a))}return s}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:s,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},u=Ws(c=>{if(!c0(c,n,this.currentDirection))return;let d=l&&l[c]||{};s&&(d={min:0,max:0});const f=i?200:1e6,h=i?40:1e7,p={type:"inertia",velocity:r?t[c]:0,bounceStiffness:f,bounceDamping:h,timeConstant:750,restDelta:1,restSpeed:10,...o,...d};return this.startAxisValueAnimation(c,p)});return Promise.all(u).then(a)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return r.start(v4(t,r,0,n))}stopAnimation(){Ws(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){Ws(n=>{const{drag:r}=this.getProps();if(!c0(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]-tr(s,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!jd(n)||!r||!this.constraints)return;this.stopAnimation();const i={x:0,y:0};Ws(s=>{const a=this.getAxisMotionValue(s);if(a){const l=a.get();i[s]=qTe({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(),Ws(s=>{if(!c0(s,t,null))return;const a=this.getAxisMotionValue(s),{min:l,max:u}=this.constraints[s];a.set(tr(l,u,i[s]))})}addListeners(){if(!this.visualElement.current)return;t4e.set(this.visualElement,this);const t=this.visualElement.current,n=Ya(t,"pointerdown",l=>{const{drag:u,dragListener:c=!0}=this.getProps();u&&c&&this.start(l)}),r=()=>{const{dragConstraints:l}=this.getProps();jd(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=qa(window,"resize",()=>this.scalePositionWithinConstraints()),a=i.addEventListener("didUpdate",({delta:l,hasLayoutChanged:u})=>{this.isDragging&&u&&(Ws(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=O3,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:s,dragMomentum:a}}}function c0(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function r4e(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class i4e extends $u{constructor(t){super(t),this.removeGroupControls=ur,this.removeListeners=ur,this.controls=new n4e(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||ur}unmount(){this.removeGroupControls(),this.removeListeners()}}const LO=e=>(t,n)=>{e&&En.update(()=>e(t,n))};class o4e extends $u{constructor(){super(...arguments),this.removePointerDownListener=ur}onPointerDown(t){this.session=new Tj(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint()})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:i}=this.node.getProps();return{onSessionStart:LO(t),onStart:LO(n),onMove:r,onEnd:(o,s)=>{delete this.session,i&&En.update(()=>i(o,s))}}}mount(){this.removePointerDownListener=Ya(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 s4e(){const e=M.useContext(Vm);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=M.useId();return M.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function mMe(){return a4e(M.useContext(Vm))}function a4e(e){return e===null?!0:e.isPresent}const Q0={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function $O(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const qh={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(tt.test(e))e=parseFloat(e);else return e;const n=$O(e,t.target.x),r=$O(e,t.target.y);return`${n}% ${r}%`}},l4e={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=bu.parse(e);if(i.length>5)return r;const o=bu.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=tr(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 u4e extends mn.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;g5e(c4e),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()})),Q0.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()||En.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 Ij(e){const[t,n]=s4e(),r=M.useContext(i4);return mn.createElement(u4e,{...e,layoutGroup:r,switchLayoutGroup:M.useContext(AU),isPresent:t,safeToRemove:n})}const c4e={borderRadius:{...qh,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:qh,borderTopRightRadius:qh,borderBottomLeftRadius:qh,borderBottomRightRadius:qh,boxShadow:l4e},Mj=["TopLeft","TopRight","BottomLeft","BottomRight"],d4e=Mj.length,FO=e=>typeof e=="string"?parseFloat(e):e,BO=e=>typeof e=="number"||tt.test(e);function f4e(e,t,n,r,i,o){i?(e.opacity=tr(0,n.opacity!==void 0?n.opacity:1,h4e(r)),e.opacityExit=tr(t.opacity!==void 0?t.opacity:1,0,p4e(r))):o&&(e.opacity=tr(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,r));for(let s=0;srt?1:n(Xg(e,t,r))}function UO(e,t){e.min=t.min,e.max=t.max}function Vo(e,t){UO(e.x,t.x),UO(e.y,t.y)}function jO(e,t,n,r,i){return e-=t,e=B1(e,1/n,r),i!==void 0&&(e=B1(e,1/i,r)),e}function g4e(e,t=0,n=1,r=.5,i,o=e,s=e){if(ha.test(t)&&(t=parseFloat(t),t=tr(s.min,s.max,t/100)-s.min),typeof t!="number")return;let a=tr(o.min,o.max,r);e===o&&(a-=t),e.min=jO(e.min,t,n,a,i),e.max=jO(e.max,t,n,a,i)}function VO(e,t,[n,r,i],o,s){g4e(e,t[n],t[r],t[i],t.scale,o,s)}const m4e=["x","scaleX","originX"],y4e=["y","scaleY","originY"];function GO(e,t,n,r){VO(e.x,t,m4e,n?n.x:void 0,r?r.x:void 0),VO(e.y,t,y4e,n?n.y:void 0,r?r.y:void 0)}function HO(e){return e.translate===0&&e.scale===1}function Dj(e){return HO(e.x)&&HO(e.y)}function v4e(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 Lj(e,t){return Math.round(e.x.min)===Math.round(t.x.min)&&Math.round(e.x.max)===Math.round(t.x.max)&&Math.round(e.y.min)===Math.round(t.y.min)&&Math.round(e.y.max)===Math.round(t.y.max)}function qO(e){return No(e.x)/No(e.y)}class _4e{constructor(){this.members=[]}add(t){_4(this.members,t),t.scheduleRender()}remove(t){if(b4(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(i=>t===i);if(n===0)return!1;let r;for(let i=n;i>=0;i--){const o=this.members[i];if(o.isPresent!==!1){r=o;break}}return r?(this.promote(r),!0):!1}promote(t,n){const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,t.show(),r)){r.instance&&r.scheduleRender(),t.scheduleRender(),t.resumeFrom=r,n&&(t.resumeFrom.preserveOpacity=!0),r.snapshot&&(t.snapshot=r.snapshot,t.snapshot.latestValues=r.animationValues||r.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:i}=t.options;i===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:r}=t;n.onExitComplete&&n.onExitComplete(),r&&r.options.onExitComplete&&r.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function WO(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 b4e=(e,t)=>e.depth-t.depth;class S4e{constructor(){this.children=[],this.isDirty=!1}add(t){_4(this.children,t),this.isDirty=!0}remove(t){b4(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(b4e),this.isDirty=!1,this.children.forEach(t)}}function w4e(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(ll(r),e(o-t))};return En.read(r,!0),()=>ll(r)}function x4e(e){window.MotionDebug&&window.MotionDebug.record(e)}function C4e(e){return e instanceof SVGElement&&e.tagName!=="svg"}function E4e(e,t,n){const r=yo(e)?e:Hf(e);return r.start(v4("",r,t,n)),r.animation}const KO=["","X","Y","Z"],XO=1e3;let T4e=0;const Qu={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function $j({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(s={},a=t==null?void 0:t()){this.id=T4e++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{Qu.totalNodes=Qu.resolvedTargetDeltas=Qu.recalculatedProjection=0,this.nodes.forEach(P4e),this.nodes.forEach(N4e),this.nodes.forEach(D4e),this.nodes.forEach(R4e),x4e(Qu)},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=w4e(f,250),Q0.hasAnimatedSinceResize&&(Q0.hasAnimatedSinceResize=!1,this.nodes.forEach(YO))})}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()||z4e,{onLayoutAnimationStart:b,onLayoutAnimationComplete:_}=c.getProps(),v=!this.targetLayout||!Lj(this.targetLayout,p)||h,g=!f&&h;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||g||f&&(v||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(d,g);const y={...Sj(m,"layout"),onPlay:b,onComplete:_};(c.shouldReduceMotion||this.options.layoutRoot)&&(y.delay=0,y.type=!1),this.startAnimation(y)}else f||YO(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,ll(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(L4e),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(O4e),this.sharedNodes.forEach($4e)}scheduleUpdateProjection(){En.preRender(this.updateProjection,!1,!0)}scheduleCheckAfterUnmount(){En.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let l=0;l{const S=y/1e3;ZO(d.x,s.x,S),ZO(d.y,s.y,S),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Tp(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox),F4e(this.relativeTarget,this.relativeTargetOrigin,f,S),g&&v4e(this.relativeTarget,g)&&(this.isProjectionDirty=!1),g||(g=Er()),Vo(g,this.relativeTarget)),m&&(this.animationValues=c,f4e(c,u,this.latestValues,S,v,_)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(s){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(ll(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=En.update(()=>{Q0.hasAnimatedSinceResize=!0,this.currentAnimation=E4e(0,XO,{...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(XO),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&&Fj(this.options.animationType,this.layout.layoutBox,u.layoutBox)){l=this.target||Er();const d=No(this.layout.layoutBox.x);l.x.min=s.target.x.min,l.x.max=l.x.min+d;const f=No(this.layout.layoutBox.y);l.y.min=s.target.y.min,l.y.max=l.y.min+f}Vo(a,l),Hd(a,c),Ep(this.projectionDeltaWithTransform,this.layoutCorrected,a,c)}}registerSharedNode(s,a){this.sharedNodes.has(s)||this.sharedNodes.set(s,new _4e),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(QO),this.root.sharedNodes.clear()}}}function A4e(e){e.updateLayout()}function k4e(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"?Ws(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=No(f);f.min=r[d].min,f.max=f.min+h}):Fj(o,n.layoutBox,r)&&Ws(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=No(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=Gd();Ep(a,r,n.layoutBox);const l=Gd();s?Ep(l,e.applyTransform(i,!0),n.measuredBox):Ep(l,r,n.layoutBox);const u=!Dj(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=Er();Tp(p,n.layoutBox,f.layoutBox);const m=Er();Tp(m,r,h.layoutBox),Lj(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 P4e(e){Qu.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 R4e(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function O4e(e){e.clearSnapshot()}function QO(e){e.clearMeasurements()}function I4e(e){e.isLayoutDirty=!1}function M4e(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function YO(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function N4e(e){e.resolveTargetDelta()}function D4e(e){e.calcProjection()}function L4e(e){e.resetRotation()}function $4e(e){e.removeLeadSnapshot()}function ZO(e,t,n){e.translate=tr(t.translate,0,n),e.scale=tr(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function JO(e,t,n,r){e.min=tr(t.min,n.min,r),e.max=tr(t.max,n.max,r)}function F4e(e,t,n,r){JO(e.x,t.x,n.x,r),JO(e.y,t.y,n.y,r)}function B4e(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const z4e={duration:.45,ease:[.4,0,.1,1]},eI=e=>typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes(e),tI=eI("applewebkit/")&&!eI("chrome/")?Math.round:ur;function nI(e){e.min=tI(e.min),e.max=tI(e.max)}function U4e(e){nI(e.x),nI(e.y)}function Fj(e,t,n){return e==="position"||e==="preserve-aspect"&&!R3(qO(t),qO(n),.2)}const j4e=$j({attachResizeListener:(e,t)=>qa(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Hw={current:void 0},Bj=$j({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!Hw.current){const e=new j4e({});e.mount(window),e.setOptions({layoutScroll:!0}),Hw.current=e}return Hw.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),V4e={pan:{Feature:o4e},drag:{Feature:i4e,ProjectionNode:Bj,MeasureLayout:Ij}},G4e=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function H4e(e){const t=G4e.exec(e);if(!t)return[,];const[,n,r]=t;return[n,r]}function N3(e,t,n=1){const[r,i]=H4e(e);if(!r)return;const o=window.getComputedStyle(t).getPropertyValue(r);if(o){const s=o.trim();return wj(s)?parseFloat(s):s}else return x3(i)?N3(i,t,n+1):i}function q4e(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(!x3(o))return;const s=N3(o,r);s&&i.set(s)});for(const i in t){const o=t[i];if(!x3(o))continue;const s=N3(o,r);s&&(t[i]=s,n||(n={}),n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const W4e=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),zj=e=>W4e.has(e),K4e=e=>Object.keys(e).some(zj),rI=e=>e===ed||e===tt,iI=(e,t)=>parseFloat(e.split(", ")[t]),oI=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return iI(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?iI(o[1],e):0}},X4e=new Set(["x","y","z"]),Q4e=Gm.filter(e=>!X4e.has(e));function Y4e(e){const t=[];return Q4e.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 qf={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:oI(4,13),y:oI(5,14)};qf.translateX=qf.x;qf.translateY=qf.y;const Z4e=(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]=qf[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]=qf[u](l,o)}),e},J4e=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(zj);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=Hh(c);const f=t[l];let h;if(N1(f)){const p=f.length,m=f[0]===null?1:0;c=f[m],d=Hh(c);for(let b=m;b=0?window.pageYOffset:null,u=Z4e(t,e,a);return o.length&&o.forEach(([c,d])=>{e.getValue(c).set(d)}),e.render(),FS&&l!==null&&window.scrollTo({top:l}),{target:u,transitionEnd:r}}else return{target:t,transitionEnd:r}};function eAe(e,t,n,r){return K4e(t)?J4e(e,t,n,r):{target:t,transitionEnd:r}}const tAe=(e,t,n,r)=>{const i=q4e(e,t,r);return t=i.target,r=i.transitionEnd,eAe(e,t,n,r)},D3={current:null},Uj={current:!1};function nAe(){if(Uj.current=!0,!!FS)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>D3.current=e.matches;e.addListener(t),t()}else D3.current=!1}function rAe(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],s=n[i];if(yo(o))e.addValue(i,o),F1(r)&&r.add(i);else if(yo(s))e.addValue(i,Hf(o,{owner:e})),F1(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,Hf(a!==void 0?a:o,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const sI=new WeakMap,jj=Object.keys(Kg),iAe=jj.length,aI=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],oAe=r4.length;class sAe{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=()=>En.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=zS(n),this.isVariantNode=TU(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&&yo(f)&&(f.set(a[d],!1),F1(u)&&u.add(d))}}scrapeMotionValuesFromProps(t,n){return{}}mount(t){this.current=t,sI.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)),Uj.current||nAe(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:D3.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){sI.delete(this.current),this.projection&&this.projection.unmount(),ll(this.notifyUpdate),ll(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=Jc.has(t),i=n.on("change",s=>{this.latestValues[t]=s,this.props.onUpdate&&En.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):Er()}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=Hf(n,{owner:this}),this.addValue(t,r)),r}readValue(t){var n;return this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(n=this.getBaseTargetFromProps(this.props,t))!==null&&n!==void 0?n:this.readValueFromInstance(this.current,t,this.options)}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var n;const{initial:r}=this.props,i=typeof r=="string"||typeof r=="object"?(n=f4(this.props,r))===null||n===void 0?void 0:n[t]:void 0;if(r&&i!==void 0)return i;const o=this.getBaseTargetFromProps(this.props,t);return o!==void 0&&!yo(o)?o:this.initialValues[t]!==void 0&&i===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new S4),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class Vj extends sAe{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=CTe(r,t||{},this);if(i&&(n&&(n=i(n)),r&&(r=i(r)),s&&(s=i(s))),o){wTe(this,r,s);const a=tAe(this,r,s,n);n=a.transitionEnd,r=a.target}return{transition:t,transitionEnd:n,...r}}}function aAe(e){return window.getComputedStyle(e)}class lAe extends Vj{readValueFromInstance(t,n){if(Jc.has(n)){const r=y4(n);return r&&r.default||0}else{const r=aAe(t),i=(RU(n)?r.getPropertyValue(n):r[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return Oj(t,n)}build(t,n,r,i){s4(t,n,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,n){return d4(t,n)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;yo(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}renderInstance(t,n,r,i){LU(t,n,r,i)}}class uAe extends Vj{constructor(){super(...arguments),this.isSVGTag=!1}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Jc.has(n)){const r=y4(n);return r&&r.default||0}return n=$U.has(n)?n:c4(n),t.getAttribute(n)}measureInstanceViewportBox(){return Er()}scrapeMotionValuesFromProps(t,n){return BU(t,n)}build(t,n,r,i){l4(t,n,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,r,i){FU(t,n,r,i)}mount(t){this.isSVGTag=u4(t.tagName),super.mount(t)}}const cAe=(e,t)=>o4(e)?new uAe(t,{enableHardwareAcceleration:!1}):new lAe(t,{enableHardwareAcceleration:!0}),dAe={layout:{ProjectionNode:Bj,MeasureLayout:Ij}},fAe={...FTe,...iEe,...V4e,...dAe},hAe=h5e((e,t)=>H5e(e,t,fAe,cAe));function Gj(){const e=M.useRef(!1);return t4(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function pAe(){const e=Gj(),[t,n]=M.useState(0),r=M.useCallback(()=>{e.current&&n(t+1)},[t]);return[M.useCallback(()=>En.postRender(r),[r]),t]}class gAe extends M.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const r=this.props.sizeRef.current;r.height=n.offsetHeight||0,r.width=n.offsetWidth||0,r.top=n.offsetTop,r.left=n.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function mAe({children:e,isPresent:t}){const n=M.useId(),r=M.useRef(null),i=M.useRef({width:0,height:0,top:0,left:0});return M.useInsertionEffect(()=>{const{width:o,height:s,top:a,left:l}=i.current;if(t||!r.current||!o||!s)return;r.current.dataset.motionPopId=n;const u=document.createElement("style");return document.head.appendChild(u),u.sheet&&u.sheet.insertRule(` - [data-motion-pop-id="${n}"] { - position: absolute !important; - width: ${o}px !important; - height: ${s}px !important; - top: ${a}px !important; - left: ${l}px !important; - } - `),()=>{document.head.removeChild(u)}},[t]),M.createElement(gAe,{isPresent:t,childRef:r,sizeRef:i},M.cloneElement(e,{ref:r}))}const qw=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:s})=>{const a=zU(yAe),l=M.useId(),u=M.useMemo(()=>({id:l,initial:t,isPresent:n,custom:i,onExitComplete:c=>{a.set(c,!0);for(const d of a.values())if(!d)return;r&&r()},register:c=>(a.set(c,!1),()=>a.delete(c))}),o?void 0:[n]);return M.useMemo(()=>{a.forEach((c,d)=>a.set(d,!1))},[n]),M.useEffect(()=>{!n&&!a.size&&r&&r()},[n]),s==="popLayout"&&(e=M.createElement(mAe,{isPresent:n},e)),M.createElement(Vm.Provider,{value:u},e)};function yAe(){return new Map}function vAe(e){return M.useEffect(()=>()=>e(),[])}const Ad=e=>e.key||"";function _Ae(e,t){e.forEach(n=>{const r=Ad(n);t.set(r,n)})}function bAe(e){const t=[];return M.Children.forEach(e,n=>{M.isValidElement(n)&&t.push(n)}),t}const SAe=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:s="sync"})=>{const a=M.useContext(i4).forceRender||pAe()[0],l=Gj(),u=bAe(e);let c=u;const d=M.useRef(new Map).current,f=M.useRef(c),h=M.useRef(new Map).current,p=M.useRef(!0);if(t4(()=>{p.current=!1,_Ae(u,h),f.current=c}),vAe(()=>{p.current=!0,h.clear(),d.clear()}),p.current)return M.createElement(M.Fragment,null,c.map(v=>M.createElement(qw,{key:Ad(v),isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:s},v)));c=[...c];const m=f.current.map(Ad),b=u.map(Ad),_=m.length;for(let v=0;v<_;v++){const g=m[v];b.indexOf(g)===-1&&!d.has(g)&&d.set(g,void 0)}return s==="wait"&&d.size&&(c=[]),d.forEach((v,g)=>{if(b.indexOf(g)!==-1)return;const y=h.get(g);if(!y)return;const S=m.indexOf(g);let w=v;if(!w){const x=()=>{h.delete(g),d.delete(g);const E=f.current.findIndex(A=>A.key===g);if(f.current.splice(E,1),!d.size){if(f.current=u,l.current===!1)return;a(),r&&r()}};w=M.createElement(qw,{key:Ad(y),isPresent:!1,onExitComplete:x,custom:t,presenceAffectsLayout:o,mode:s},y),d.set(g,w)}c.splice(S,0,w)}),c=c.map(v=>{const g=v.key;return d.has(g)?v:M.createElement(qw,{key:Ad(v),isPresent:!0,presenceAffectsLayout:o,mode:s},v)}),M.createElement(M.Fragment,null,d.size?c:c.map(v=>M.cloneElement(v)))};var wAe=uCe({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Hj=Lu((e,t)=>{const n=e4("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:s="transparent",className:a,...l}=JT(e),u=XT("chakra-spinner",a),c={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:s,borderLeftColor:s,animation:`${wAe} ${o} linear infinite`,...n};return Z.jsx(vu.div,{ref:t,__css:c,className:u,...l,children:r&&Z.jsx(vu.span,{srOnly:!0,children:r})})});Hj.displayName="Spinner";var L3=Lu(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...s}=t;return Z.jsx("img",{width:r,height:i,ref:n,alt:o,...s})});L3.displayName="NativeImage";function xAe(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:s,sizes:a,ignoreFallback:l}=e,[u,c]=M.useState("pending");M.useEffect(()=>{c(n?"loading":"pending")},[n]);const d=M.useRef(),f=M.useCallback(()=>{if(!n)return;h();const p=new Image;p.src=n,s&&(p.crossOrigin=s),r&&(p.srcset=r),a&&(p.sizes=a),t&&(p.loading=t),p.onload=m=>{h(),c("loaded"),i==null||i(m)},p.onerror=m=>{h(),c("failed"),o==null||o(m)},d.current=p},[n,s,r,a,i,o,t]),h=()=>{d.current&&(d.current.onload=null,d.current.onerror=null,d.current=null)};return cCe(()=>{if(!l)return u==="loading"&&f(),()=>{h()}},[u,f,l]),l?"loaded":u}var CAe=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError";function EAe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var w4=Lu(function(t,n){const{fallbackSrc:r,fallback:i,src:o,srcSet:s,align:a,fit:l,loading:u,ignoreFallback:c,crossOrigin:d,fallbackStrategy:f="beforeLoadOrError",referrerPolicy:h,...p}=t,m=r!==void 0||i!==void 0,b=u!=null||c||!m,_=xAe({...t,crossOrigin:d,ignoreFallback:b}),v=CAe(_,f),g={ref:n,objectFit:l,objectPosition:a,...b?p:EAe(p,["onError","onLoad"])};return v?i||Z.jsx(vu.img,{as:L3,className:"chakra-image__placeholder",src:r,...g}):Z.jsx(vu.img,{as:L3,src:o,srcSet:s,crossOrigin:d,loading:u,referrerPolicy:h,className:"chakra-image",...g})});w4.displayName="Image";var qj=Lu(function(t,n){const r=e4("Text",t),{className:i,align:o,decoration:s,casing:a,...l}=JT(t),u=K3e({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return Z.jsx(vu.p,{ref:n,className:XT("chakra-text",t.className),...u,...l,__css:r})});qj.displayName="Text";var $3=Lu(function(t,n){const r=e4("Heading",t),{className:i,...o}=JT(t);return Z.jsx(vu.h2,{ref:n,className:XT("chakra-heading",t.className),...o,__css:r})});$3.displayName="Heading";var z1=vu("div");z1.displayName="Box";var Wj=Lu(function(t,n){const{size:r,centerContent:i=!0,...o}=t,s=i?{display:"flex",alignItems:"center",justifyContent:"center"}:{};return Z.jsx(z1,{ref:n,boxSize:r,__css:{...s,flexShrink:0,flexGrow:0},...o})});Wj.displayName="Square";var TAe=Lu(function(t,n){const{size:r,...i}=t;return Z.jsx(Wj,{size:r,ref:n,borderRadius:"9999px",...i})});TAe.displayName="Circle";var x4=Lu(function(t,n){const{direction:r,align:i,justify:o,wrap:s,basis:a,grow:l,shrink:u,...c}=t,d={display:"flex",flexDirection:r,alignItems:i,justifyContent:o,flexWrap:s,flexBasis:a,flexGrow:l,flexShrink:u};return Z.jsx(vu.div,{ref:n,__css:d,...c})});x4.displayName="Flex";const AAe=""+new URL("logo-13003d72.png",import.meta.url).href,kAe=()=>Z.jsxs(x4,{position:"relative",width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",bg:"#151519",children:[Z.jsx(w4,{src:AAe,w:"8rem",h:"8rem"}),Z.jsx(Hj,{label:"Loading",color:"grey",position:"absolute",size:"sm",width:"24px !important",height:"24px !important",right:"1.5rem",bottom:"1.5rem"})]}),PAe=M.memo(kAe);function F3(e){"@babel/helpers - typeof";return F3=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},F3(e)}var Kj=[],RAe=Kj.forEach,OAe=Kj.slice;function B3(e){return RAe.call(OAe.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function Xj(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":F3(XMLHttpRequest))==="object"}function IAe(e){return!!e&&typeof e.then=="function"}function MAe(e){return IAe(e)?e:Promise.resolve(e)}function NAe(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 z3={exports:{}},d0={exports:{}},lI;function DAe(){return lI||(lI=1,function(e,t){var n=typeof self<"u"?self:ut,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 P={next:function(){var D=C.shift();return{done:D===void 0,value:D}}};return a.iterable&&(P[Symbol.iterator]=function(){return P}),P}function p(C){this.map={},C instanceof p?C.forEach(function(P,D){this.append(D,P)},this):Array.isArray(C)?C.forEach(function(P){this.append(P[0],P[1])},this):C&&Object.getOwnPropertyNames(C).forEach(function(P){this.append(P,C[P])},this)}p.prototype.append=function(C,P){C=d(C),P=f(P);var D=this.map[C];this.map[C]=D?D+", "+P:P},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,P){this.map[d(C)]=f(P)},p.prototype.forEach=function(C,P){for(var D in this.map)this.map.hasOwnProperty(D)&&C.call(P,this.map[D],D,this)},p.prototype.keys=function(){var C=[];return this.forEach(function(P,D){C.push(D)}),h(C)},p.prototype.values=function(){var C=[];return this.forEach(function(P){C.push(P)}),h(C)},p.prototype.entries=function(){var C=[];return this.forEach(function(P,D){C.push([D,P])}),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 b(C){return new Promise(function(P,D){C.onload=function(){P(C.result)},C.onerror=function(){D(C.error)}})}function _(C){var P=new FileReader,D=b(P);return P.readAsArrayBuffer(C),D}function v(C){var P=new FileReader,D=b(P);return P.readAsText(C),D}function g(C){for(var P=new Uint8Array(C),D=new Array(P.length),B=0;B-1?P:C}function E(C,P){P=P||{};var D=P.body;if(C instanceof E){if(C.bodyUsed)throw new TypeError("Already read");this.url=C.url,this.credentials=C.credentials,P.headers||(this.headers=new p(C.headers)),this.method=C.method,this.mode=C.mode,this.signal=C.signal,!D&&C._bodyInit!=null&&(D=C._bodyInit,C.bodyUsed=!0)}else this.url=String(C);if(this.credentials=P.credentials||this.credentials||"same-origin",(P.headers||!this.headers)&&(this.headers=new p(P.headers)),this.method=x(P.method||this.method||"GET"),this.mode=P.mode||this.mode||null,this.signal=P.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&D)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(D)}E.prototype.clone=function(){return new E(this,{body:this._bodyInit})};function A(C){var P=new FormData;return C.trim().split("&").forEach(function(D){if(D){var B=D.split("="),R=B.shift().replace(/\+/g," "),O=B.join("=").replace(/\+/g," ");P.append(decodeURIComponent(R),decodeURIComponent(O))}}),P}function T(C){var P=new p,D=C.replace(/\r?\n[\t ]+/g," ");return D.split(/\r?\n/).forEach(function(B){var R=B.split(":"),O=R.shift().trim();if(O){var I=R.join(":").trim();P.append(O,I)}}),P}S.call(E.prototype);function k(C,P){P||(P={}),this.type="default",this.status=P.status===void 0?200:P.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in P?P.statusText:"OK",this.headers=new p(P.headers),this.url=P.url||"",this._initBody(C)}S.call(k.prototype),k.prototype.clone=function(){return new k(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},k.error=function(){var C=new k(null,{status:0,statusText:""});return C.type="error",C};var L=[301,302,303,307,308];k.redirect=function(C,P){if(L.indexOf(P)===-1)throw new RangeError("Invalid status code");return new k(null,{status:P,headers:{location:C}})},s.DOMException=o.DOMException;try{new s.DOMException}catch{s.DOMException=function(P,D){this.message=P,this.name=D;var B=Error(P);this.stack=B.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function N(C,P){return new Promise(function(D,B){var R=new E(C,P);if(R.signal&&R.signal.aborted)return B(new s.DOMException("Aborted","AbortError"));var O=new XMLHttpRequest;function I(){O.abort()}O.onload=function(){var F={status:O.status,statusText:O.statusText,headers:T(O.getAllResponseHeaders()||"")};F.url="responseURL"in O?O.responseURL:F.headers.get("X-Request-URL");var U="response"in O?O.response:O.responseText;D(new k(U,F))},O.onerror=function(){B(new TypeError("Network request failed"))},O.ontimeout=function(){B(new TypeError("Network request failed"))},O.onabort=function(){B(new s.DOMException("Aborted","AbortError"))},O.open(R.method,R.url,!0),R.credentials==="include"?O.withCredentials=!0:R.credentials==="omit"&&(O.withCredentials=!1),"responseType"in O&&a.blob&&(O.responseType="blob"),R.headers.forEach(function(F,U){O.setRequestHeader(U,F)}),R.signal&&(R.signal.addEventListener("abort",I),O.onreadystatechange=function(){O.readyState===4&&R.signal.removeEventListener("abort",I)}),O.send(typeof R._bodyInit>"u"?null:R._bodyInit)})}return N.polyfill=!0,o.fetch||(o.fetch=N,o.Headers=p,o.Request=E,o.Response=k),s.Headers=p,s.Request=E,s.Response=k,s.fetch=N,Object.defineProperty(s,"__esModule",{value:!0}),s})({})})(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;t=i.fetch,t.default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t}(d0,d0.exports)),d0.exports}(function(e,t){var n;if(typeof fetch=="function"&&(typeof ut<"u"&&ut.fetch?n=ut.fetch:typeof window<"u"&&window.fetch?n=window.fetch:n=fetch),typeof NAe<"u"&&(typeof window>"u"||typeof window.document>"u")){var r=n||DAe();r.default&&(r=r.default),t.default=r,e.exports=t.default}})(z3,z3.exports);var Qj=z3.exports;const Yj=Dc(Qj),uI=TI({__proto__:null,default:Yj},[Qj]);function U1(e){"@babel/helpers - typeof";return U1=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},U1(e)}var Ja;typeof fetch=="function"&&(typeof global<"u"&&global.fetch?Ja=global.fetch:typeof window<"u"&&window.fetch?Ja=window.fetch:Ja=fetch);var Qg;Xj()&&(typeof global<"u"&&global.XMLHttpRequest?Qg=global.XMLHttpRequest:typeof window<"u"&&window.XMLHttpRequest&&(Qg=window.XMLHttpRequest));var j1;typeof ActiveXObject=="function"&&(typeof global<"u"&&global.ActiveXObject?j1=global.ActiveXObject:typeof window<"u"&&window.ActiveXObject&&(j1=window.ActiveXObject));!Ja&&uI&&!Qg&&!j1&&(Ja=Yj||uI);typeof Ja!="function"&&(Ja=void 0);var U3=function(t,n){if(n&&U1(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},cI=function(t,n,r){Ja(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)},dI=!1,LAe=function(t,n,r,i){t.queryStringParams&&(n=U3(n,t.queryStringParams));var o=B3({},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=B3({method:r?"POST":"GET",body:r?t.stringify(r):void 0,headers:o},dI?{}:s);try{cI(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]}),cI(n,a,i),dI=!0}catch(u){i(u)}}},$Ae=function(t,n,r,i){r&&U1(r)==="object"&&(r=U3("",r).slice(1)),t.queryStringParams&&(n=U3(n,t.queryStringParams));try{var o;Qg?o=new Qg:o=new j1("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)}},FAe=function(t,n,r,i){if(typeof r=="function"&&(i=r,r=void 0),i=i||function(){},Ja&&n.indexOf("file:")!==0)return LAe(t,n,r,i);if(Xj()||typeof ActiveXObject=="function")return $Ae(t,n,r,i);i(new Error("No fetch and no xhr implementation found!"))};function Yg(e){"@babel/helpers - typeof";return Yg=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},Yg(e)}function BAe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fI(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};BAe(this,e),this.services=t,this.options=n,this.allOptions=r,this.type="backend",this.init(t,n,r)}return zAe(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=B3(i,this.options||{},VAe()),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=MAe(l),l.then(function(u){if(!u)return s(null,{});var c=a.services.interpolator.interpolate(u,{lng:n.join("+"),ns:i.join("+")});a.loadUrl(c,s,r,o)})}},{key:"loadUrl",value:function(n,r,i,o){var s=this,a=typeof i=="string"?[i]:i,l=typeof o=="string"?[o]:o,u=this.options.parseLoadPayload(a,l);this.options.request(this.options,n,u,function(c,d){if(d&&(d.status>=500&&d.status<600||!d.status))return r("failed loading "+n+"; status code: "+d.status,!0);if(d&&d.status>=400&&d.status<500)return r("failed loading "+n+"; status code: "+d.status,!1);if(!d&&c&&c.message&&c.message.indexOf("Failed to fetch")>-1)return r("failed loading "+n+": "+c.message,!0);if(c)return r(c,!1);var f,h;try{typeof d.data=="string"?f=s.options.parse(d.data,i,o):f=d.data}catch{h="failed parsing "+n+" to json"}if(h)return r(h,!1);r(null,f)})}},{key:"create",value:function(n,r,i,o,s){var a=this;if(this.options.addPath){typeof n=="string"&&(n=[n]);var l=this.options.parsePayload(r,i,o),u=0,c=[],d=[];n.forEach(function(f){var h=a.options.addPath;typeof a.options.addPath=="function"&&(h=a.options.addPath(f,r));var p=a.services.interpolator.interpolate(h,{lng:f,ns:r});a.options.request(a.options,p,l,function(m,b){u+=1,c.push(m),d.push(b),u===n.length&&typeof s=="function"&&s(c,d)})})}}},{key:"reload",value:function(){var n=this,r=this.services,i=r.backendConnector,o=r.languageUtils,s=r.logger,a=i.language;if(!(a&&a.toLowerCase()==="cimode")){var l=[],u=function(d){var f=o.toResolveHierarchy(d);f.forEach(function(h){l.indexOf(h)<0&&l.push(h)})};u(a),this.allOptions.preload&&this.allOptions.preload.forEach(function(c){return u(c)}),l.forEach(function(c){n.allOptions.ns.forEach(function(d){i.read(c,d,"read",null,null,function(f,h){f&&s.warn("loading namespace ".concat(d," for language ").concat(c," failed"),f),!f&&h&&s.log("loaded namespace ".concat(d," for language ").concat(c),h),i.loaded("".concat(c,"|").concat(d),f,h)})})})}}}]),e}();Jj.type="backend";const GAe=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,HAe={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},qAe=e=>HAe[e],WAe=e=>e.replace(GAe,qAe);let j3={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:WAe};function KAe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};j3={...j3,...e}}function vMe(){return j3}let eV;function XAe(e){eV=e}function _Me(){return eV}const QAe={type:"3rdParty",init(e){KAe(e.options.react),XAe(e)}};Bi.use(Jj).use(QAe).init({fallbackLng:"en",debug:!1,backend:{loadPath:"/locales/{{lng}}.json"},interpolation:{escapeValue:!1},returnNull:!1});const GS=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function yh(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function C4(e){return"nodeType"in e}function Ji(e){var t,n;return e?yh(e)?e:C4(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function E4(e){const{Document:t}=Ji(e);return e instanceof t}function Km(e){return yh(e)?!1:e instanceof Ji(e).HTMLElement}function YAe(e){return e instanceof Ji(e).SVGElement}function vh(e){return e?yh(e)?e.document:C4(e)?E4(e)?e:Km(e)?e.ownerDocument:document:document:document}const va=GS?M.useLayoutEffect:M.useEffect;function HS(e){const t=M.useRef(e);return va(()=>{t.current=e}),M.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i{e.current=setInterval(r,i)},[]),n=M.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Zg(e,t){t===void 0&&(t=[e]);const n=M.useRef(e);return va(()=>{n.current!==e&&(n.current=e)},t),n}function Xm(e,t){const n=M.useRef();return M.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function V1(e){const t=HS(e),n=M.useRef(null),r=M.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function G1(e){const t=M.useRef();return M.useEffect(()=>{t.current=e},[e]),t.current}let Ww={};function qS(e,t){return M.useMemo(()=>{if(t)return t;const n=Ww[e]==null?0:Ww[e]+1;return Ww[e]=n,e+"-"+n},[e,t])}function tV(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 mf=tV(1),H1=tV(-1);function JAe(e){return"clientX"in e&&"clientY"in e}function T4(e){if(!e)return!1;const{KeyboardEvent:t}=Ji(e.target);return t&&e instanceof t}function eke(e){if(!e)return!1;const{TouchEvent:t}=Ji(e.target);return t&&e instanceof t}function Jg(e){if(eke(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 JAe(e)?{x:e.clientX,y:e.clientY}:null}const em=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[em.Translate.toString(e),em.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),hI="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function tke(e){return e.matches(hI)?e:e.querySelector(hI)}const nke={display:"none"};function rke(e){let{id:t,value:n}=e;return mn.createElement("div",{id:t,style:nke},n)}const ike={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 oke(e){let{id:t,announcement:n}=e;return mn.createElement("div",{id:t,style:ike,role:"status","aria-live":"assertive","aria-atomic":!0},n)}function ske(){const[e,t]=M.useState("");return{announce:M.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const nV=M.createContext(null);function ake(e){const t=M.useContext(nV);M.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function lke(){const[e]=M.useState(()=>new Set),t=M.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[M.useCallback(r=>{let{type:i,event:o}=r;e.forEach(s=>{var a;return(a=s[i])==null?void 0:a.call(s,o)})},[e]),t]}const uke={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. - `},cke={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 dke(e){let{announcements:t=cke,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=uke}=e;const{announce:o,announcement:s}=ske(),a=qS("DndLiveRegion"),[l,u]=M.useState(!1);if(M.useEffect(()=>{u(!0)},[]),ake(M.useMemo(()=>({onDragStart(d){let{active:f}=d;o(t.onDragStart({active:f}))},onDragMove(d){let{active:f,over:h}=d;t.onDragMove&&o(t.onDragMove({active:f,over:h}))},onDragOver(d){let{active:f,over:h}=d;o(t.onDragOver({active:f,over:h}))},onDragEnd(d){let{active:f,over:h}=d;o(t.onDragEnd({active:f,over:h}))},onDragCancel(d){let{active:f,over:h}=d;o(t.onDragCancel({active:f,over:h}))}}),[o,t])),!l)return null;const c=mn.createElement(mn.Fragment,null,mn.createElement(rke,{id:r,value:i.draggable}),mn.createElement(oke,{id:a,announcement:s}));return n?ws.createPortal(c,n):c}var Lr;(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"})(Lr||(Lr={}));function q1(){}function pI(e,t){return M.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function fke(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const Ls=Object.freeze({x:0,y:0});function hke(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function pke(e,t){const n=Jg(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 gke(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function mke(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function yke(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 vke(e,t){if(!e||e.length===0)return null;const[n]=e;return t?n[t]:n}function _ke(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=_ke(a,t);l>0&&i.push({id:s,data:{droppableContainer:o,value:l}})}}return i.sort(mke)};function Ske(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 wke=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&&Ske(r,a)){const u=yke(a).reduce((d,f)=>d+hke(r,f),0),c=Number((u/4).toFixed(4));i.push({id:s,data:{droppableContainer:o,value:c}})}}return i.sort(gke)};function xke(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function rV(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Ls}function Cke(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 Eke=Cke(1);function iV(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 Tke(e,t,n){const r=iV(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 Ake={ignoreTransform:!1};function Qm(e,t){t===void 0&&(t=Ake);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:c}=Ji(e).getComputedStyle(e);u&&(n=Tke(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 gI(e){return Qm(e,{ignoreTransform:!0})}function kke(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function Pke(e,t){return t===void 0&&(t=Ji(e).getComputedStyle(e)),t.position==="fixed"}function Rke(e,t){t===void 0&&(t=Ji(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const o=t[i];return typeof o=="string"?n.test(o):!1})}function A4(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(E4(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Km(i)||YAe(i)||n.includes(i))return n;const o=Ji(e).getComputedStyle(i);return i!==e&&Rke(i,o)&&n.push(i),Pke(i,o)?n:r(i.parentNode)}return e?r(e):n}function oV(e){const[t]=A4(e,1);return t??null}function Kw(e){return!GS||!e?null:yh(e)?e:C4(e)?E4(e)||e===vh(e).scrollingElement?window:Km(e)?e:null:null}function sV(e){return yh(e)?e.scrollX:e.scrollLeft}function aV(e){return yh(e)?e.scrollY:e.scrollTop}function V3(e){return{x:sV(e),y:aV(e)}}var Jr;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(Jr||(Jr={}));function lV(e){return!GS||!e?!1:e===document.scrollingElement}function uV(e){const t={x:0,y:0},n=lV(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 Oke={x:.2,y:.2};function Ike(e,t,n,r,i){let{top:o,left:s,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=Oke);const{isTop:u,isBottom:c,isLeft:d,isRight:f}=uV(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=Jr.Backward,p.y=r*Math.abs((t.top+m.height-o)/m.height)):!c&&l>=t.bottom-m.height&&(h.y=Jr.Forward,p.y=r*Math.abs((t.bottom-m.height-l)/m.height)),!f&&a>=t.right-m.width?(h.x=Jr.Forward,p.x=r*Math.abs((t.right-m.width-a)/m.width)):!d&&s<=t.left+m.width&&(h.x=Jr.Backward,p.x=r*Math.abs((t.left+m.width-s)/m.width)),{direction:h,speed:p}}function Mke(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 cV(e){return e.reduce((t,n)=>mf(t,V3(n)),Ls)}function Nke(e){return e.reduce((t,n)=>t+sV(n),0)}function Dke(e){return e.reduce((t,n)=>t+aV(n),0)}function dV(e,t){if(t===void 0&&(t=Qm),!e)return;const{top:n,left:r,bottom:i,right:o}=t(e);oV(e)&&(i<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const Lke=[["x",["left","right"],Nke],["y",["top","bottom"],Dke]];class k4{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=A4(n),i=cV(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,s,a]of Lke)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 Ap{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 $ke(e){const{EventTarget:t}=Ji(e);return e instanceof t?e:vh(e)}function Xw(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 Ho;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(Ho||(Ho={}));function mI(e){e.preventDefault()}function Fke(e){e.stopPropagation()}var xn;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"})(xn||(xn={}));const fV={start:[xn.Space,xn.Enter],cancel:[xn.Esc],end:[xn.Space,xn.Enter]},Bke=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case xn.Right:return{...n,x:n.x+25};case xn.Left:return{...n,x:n.x-25};case xn.Down:return{...n,y:n.y+25};case xn.Up:return{...n,y:n.y-25}}};class hV{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 Ap(vh(n)),this.windowListeners=new Ap(Ji(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Ho.Resize,this.handleCancel),this.windowListeners.add(Ho.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Ho.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&dV(r),n(Ls)}handleKeyDown(t){if(T4(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:o=fV,coordinateGetter:s=Bke,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}:Ls;this.referenceCoordinates||(this.referenceCoordinates=c);const d=s(t,{active:n,context:r.current,currentCoordinates:c});if(d){const f=H1(d,c),h={x:0,y:0},{scrollableAncestors:p}=r.current;for(const m of p){const b=t.code,{isTop:_,isRight:v,isLeft:g,isBottom:y,maxScroll:S,minScroll:w}=uV(m),x=Mke(m),E={x:Math.min(b===xn.Right?x.right-x.width/2:x.right,Math.max(b===xn.Right?x.left:x.left+x.width/2,d.x)),y:Math.min(b===xn.Down?x.bottom-x.height/2:x.bottom,Math.max(b===xn.Down?x.top:x.top+x.height/2,d.y))},A=b===xn.Right&&!v||b===xn.Left&&!g,T=b===xn.Down&&!y||b===xn.Up&&!_;if(A&&E.x!==d.x){const k=m.scrollLeft+f.x,L=b===xn.Right&&k<=S.x||b===xn.Left&&k>=w.x;if(L&&!f.y){m.scrollTo({left:k,behavior:a});return}L?h.x=m.scrollLeft-k:h.x=b===xn.Right?m.scrollLeft-S.x:m.scrollLeft-w.x,h.x&&m.scrollBy({left:-h.x,behavior:a});break}else if(T&&E.y!==d.y){const k=m.scrollTop+f.y,L=b===xn.Down&&k<=S.y||b===xn.Up&&k>=w.y;if(L&&!f.x){m.scrollTo({top:k,behavior:a});return}L?h.y=m.scrollTop-k:h.y=b===xn.Down?m.scrollTop-S.y:m.scrollTop-w.y,h.y&&m.scrollBy({top:-h.y,behavior:a});break}}this.handleMove(t,mf(H1(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()}}hV.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=fV,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 yI(e){return!!(e&&"distance"in e)}function vI(e){return!!(e&&"delay"in e)}class P4{constructor(t,n,r){var i;r===void 0&&(r=$ke(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=vh(s),this.documentListeners=new Ap(this.document),this.listeners=new Ap(r),this.windowListeners=new Ap(Ji(s)),this.initialCoordinates=(i=Jg(o))!=null?i:Ls,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(Ho.Resize,this.handleCancel),this.windowListeners.add(Ho.DragStart,mI),this.windowListeners.add(Ho.VisibilityChange,this.handleCancel),this.windowListeners.add(Ho.ContextMenu,mI),this.documentListeners.add(Ho.Keydown,this.handleKeydown),n){if(yI(n))return;if(vI(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(Ho.Click,Fke,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Ho.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=Jg(t))!=null?n:Ls,u=H1(i,l);if(!r&&a){if(vI(a))return Xw(u,a.tolerance)?this.handleCancel():void 0;if(yI(a))return a.tolerance!=null&&Xw(u,a.tolerance)?this.handleCancel():Xw(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===xn.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const zke={move:{name:"pointermove"},end:{name:"pointerup"}};class pV extends P4{constructor(t){const{event:n}=t,r=vh(n.target);super(t,zke,r)}}pV.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 Uke={move:{name:"mousemove"},end:{name:"mouseup"}};var G3;(function(e){e[e.RightClick=2]="RightClick"})(G3||(G3={}));class gV extends P4{constructor(t){super(t,Uke,vh(t.event.target))}}gV.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===G3.RightClick?!1:(r==null||r({event:n}),!0)}}];const Qw={move:{name:"touchmove"},end:{name:"touchend"}};class mV extends P4{constructor(t){super(t,Qw)}static setup(){return window.addEventListener(Qw.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(Qw.move.name,t)};function t(){}}}mV.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 kp;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(kp||(kp={}));var W1;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(W1||(W1={}));function jke(e){let{acceleration:t,activator:n=kp.Pointer,canScroll:r,draggingRect:i,enabled:o,interval:s=5,order:a=W1.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:c,delta:d,threshold:f}=e;const h=Gke({delta:d,disabled:!o}),[p,m]=ZAe(),b=M.useRef({x:0,y:0}),_=M.useRef({x:0,y:0}),v=M.useMemo(()=>{switch(n){case kp.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case kp.DraggableRect:return i}},[n,i,l]),g=M.useRef(null),y=M.useCallback(()=>{const w=g.current;if(!w)return;const x=b.current.x*_.current.x,E=b.current.y*_.current.y;w.scrollBy(x,E)},[]),S=M.useMemo(()=>a===W1.TreeOrder?[...u].reverse():u,[a,u]);M.useEffect(()=>{if(!o||!u.length||!v){m();return}for(const w of S){if((r==null?void 0:r(w))===!1)continue;const x=u.indexOf(w),E=c[x];if(!E)continue;const{direction:A,speed:T}=Ike(w,E,v,t,f);for(const k of["x","y"])h[k][A[k]]||(T[k]=0,A[k]=0);if(T.x>0||T.y>0){m(),g.current=w,p(y,s),b.current=T,_.current=A;return}}b.current={x:0,y:0},_.current={x:0,y:0},m()},[t,y,r,m,o,s,JSON.stringify(v),JSON.stringify(h),p,u,S,c,JSON.stringify(f)])}const Vke={x:{[Jr.Backward]:!1,[Jr.Forward]:!1},y:{[Jr.Backward]:!1,[Jr.Forward]:!1}};function Gke(e){let{delta:t,disabled:n}=e;const r=G1(t);return Xm(i=>{if(n||!r||!i)return Vke;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[Jr.Backward]:i.x[Jr.Backward]||o.x===-1,[Jr.Forward]:i.x[Jr.Forward]||o.x===1},y:{[Jr.Backward]:i.y[Jr.Backward]||o.y===-1,[Jr.Forward]:i.y[Jr.Forward]||o.y===1}}},[n,t,r])}function Hke(e,t){const n=t!==null?e.get(t):void 0,r=n?n.node.current:null;return Xm(i=>{var o;return t===null?null:(o=r??i)!=null?o:null},[r,t])}function qke(e,t){return M.useMemo(()=>e.reduce((n,r)=>{const{sensor:i}=r,o=i.activators.map(s=>({eventName:s.eventName,handler:t(s.handler,r)}));return[...n,...o]},[]),[e,t])}var tm;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(tm||(tm={}));var H3;(function(e){e.Optimized="optimized"})(H3||(H3={}));const _I=new Map;function Wke(e,t){let{dragging:n,dependencies:r,config:i}=t;const[o,s]=M.useState(null),{frequency:a,measure:l,strategy:u}=i,c=M.useRef(e),d=b(),f=Zg(d),h=M.useCallback(function(_){_===void 0&&(_=[]),!f.current&&s(v=>v===null?_:v.concat(_.filter(g=>!v.includes(g))))},[f]),p=M.useRef(null),m=Xm(_=>{if(d&&!n)return _I;if(!_||_===_I||c.current!==e||o!=null){const v=new Map;for(let g of e){if(!g)continue;if(o&&o.length>0&&!o.includes(g.id)&&g.rect.current){v.set(g.id,g.rect.current);continue}const y=g.node.current,S=y?new k4(l(y),y):null;g.rect.current=S,S&&v.set(g.id,S)}return v}return _},[e,o,n,d,l]);return M.useEffect(()=>{c.current=e},[e]),M.useEffect(()=>{d||h()},[n,d]),M.useEffect(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),M.useEffect(()=>{d||typeof a!="number"||p.current!==null||(p.current=setTimeout(()=>{h(),p.current=null},a))},[a,d,h,...r]),{droppableRects:m,measureDroppableContainers:h,measuringScheduled:o!=null};function b(){switch(u){case tm.Always:return!1;case tm.BeforeDragging:return n;default:return!n}}}function R4(e,t){return Xm(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function Kke(e,t){return R4(e,t)}function Xke(e){let{callback:t,disabled:n}=e;const r=HS(t),i=M.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return M.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function WS(e){let{callback:t,disabled:n}=e;const r=HS(t),i=M.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return M.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function Qke(e){return new k4(Qm(e),e)}function bI(e,t,n){t===void 0&&(t=Qke);const[r,i]=M.useReducer(a,null),o=Xke({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=WS({callback:i});return va(()=>{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 Yke(e){const t=R4(e);return rV(e,t)}const SI=[];function Zke(e){const t=M.useRef(e),n=Xm(r=>e?r&&r!==SI&&e&&t.current&&e.parentNode===t.current.parentNode?r:A4(e):SI,[e]);return M.useEffect(()=>{t.current=e},[e]),n}function Jke(e){const[t,n]=M.useState(null),r=M.useRef(e),i=M.useCallback(o=>{const s=Kw(o.target);s&&n(a=>a?(a.set(s,V3(s)),new Map(a)):null)},[]);return M.useEffect(()=>{const o=r.current;if(e!==o){s(o);const a=e.map(l=>{const u=Kw(l);return u?(u.addEventListener("scroll",i,{passive:!0}),[u,V3(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=Kw(l);u==null||u.removeEventListener("scroll",i)})}},[i,e]),M.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,s)=>mf(o,s),Ls):cV(e):Ls,[e,t])}function wI(e,t){t===void 0&&(t=[]);const n=M.useRef(null);return M.useEffect(()=>{n.current=null},t),M.useEffect(()=>{const r=e!==Ls;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?H1(e,n.current):Ls}function e6e(e){M.useEffect(()=>{if(!GS)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 t6e(e,t){return M.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:o}=r;return n[i]=s=>{o(s,t)},n},{}),[e,t])}function yV(e){return M.useMemo(()=>e?kke(e):null,[e])}const Yw=[];function n6e(e,t){t===void 0&&(t=Qm);const[n]=e,r=yV(n?Ji(n):null),[i,o]=M.useReducer(a,Yw),s=WS({callback:o});return e.length>0&&i===Yw&&o(),va(()=>{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=>lV(l)?r:new k4(t(l),l)):Yw}}function vV(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Km(t)?t:e}function r6e(e){let{measure:t}=e;const[n,r]=M.useState(null),i=M.useCallback(u=>{for(const{target:c}of u)if(Km(c)){r(d=>{const f=t(c);return d?{...d,width:f.width,height:f.height}:f});break}},[t]),o=WS({callback:i}),s=M.useCallback(u=>{const c=vV(u);o==null||o.disconnect(),c&&(o==null||o.observe(c)),r(c?t(c):null)},[t,o]),[a,l]=V1(s);return M.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const i6e=[{sensor:pV,options:{}},{sensor:hV,options:{}}],o6e={current:{}},Y0={draggable:{measure:gI},droppable:{measure:gI,strategy:tm.WhileDragging,frequency:H3.Optimized},dragOverlay:{measure:Qm}};class Pp 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 s6e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Pp,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:q1},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Y0,measureDroppableContainers:q1,windowRect:null,measuringScheduled:!1},_V={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:q1,draggableNodes:new Map,over:null,measureDroppableContainers:q1},Ym=M.createContext(_V),bV=M.createContext(s6e);function a6e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Pp}}}function l6e(e,t){switch(t.type){case Lr.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case Lr.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 Lr.DragEnd:case Lr.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Lr.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new Pp(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case Lr.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 Pp(e.droppable.containers);return s.set(n,{...o,disabled:i}),{...e,droppable:{...e.droppable,containers:s}}}case Lr.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const o=new Pp(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function u6e(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=M.useContext(Ym),o=G1(r),s=G1(n==null?void 0:n.id);return M.useEffect(()=>{if(!t&&!r&&o&&s!=null){if(!T4(o)||document.activeElement===o.target)return;const a=i.get(s);if(!a)return;const{activatorNode:l,node:u}=a;if(!l.current&&!u.current)return;requestAnimationFrame(()=>{for(const c of[l.current,u.current]){if(!c)continue;const d=tke(c);if(d){d.focus();break}}})}},[r,t,i,s,o]),null}function SV(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,o)=>o({transform:i,...r}),n):n}function c6e(e){return M.useMemo(()=>({draggable:{...Y0.draggable,...e==null?void 0:e.draggable},droppable:{...Y0.droppable,...e==null?void 0:e.droppable},dragOverlay:{...Y0.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 d6e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const o=M.useRef(!1),{x:s,y:a}=typeof i=="boolean"?{x:i,y:i}:i;va(()=>{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=rV(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=oV(u);f&&f.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const KS=M.createContext({...Ls,scaleX:1,scaleY:1});var Ol;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Ol||(Ol={}));const f6e=M.memo(function(t){var n,r,i,o;let{id:s,accessibility:a,autoScroll:l=!0,children:u,sensors:c=i6e,collisionDetection:d=bke,measuring:f,modifiers:h,...p}=t;const m=M.useReducer(l6e,void 0,a6e),[b,_]=m,[v,g]=lke(),[y,S]=M.useState(Ol.Uninitialized),w=y===Ol.Initialized,{draggable:{active:x,nodes:E,translate:A},droppable:{containers:T}}=b,k=x?E.get(x):null,L=M.useRef({initial:null,translated:null}),N=M.useMemo(()=>{var Pn;return x!=null?{id:x,data:(Pn=k==null?void 0:k.data)!=null?Pn:o6e,rect:L}:null},[x,k]),C=M.useRef(null),[P,D]=M.useState(null),[B,R]=M.useState(null),O=Zg(p,Object.values(p)),I=qS("DndDescribedBy",s),F=M.useMemo(()=>T.getEnabled(),[T]),U=c6e(f),{droppableRects:V,measureDroppableContainers:H,measuringScheduled:Y}=Wke(F,{dragging:w,dependencies:[A.x,A.y],config:U.droppable}),Q=Hke(E,x),j=M.useMemo(()=>B?Jg(B):null,[B]),K=Ea(),ee=Kke(Q,U.draggable.measure);d6e({activeNode:x?E.get(x):null,config:K.layoutShiftCompensation,initialRect:ee,measure:U.draggable.measure});const ie=bI(Q,U.draggable.measure,ee),ge=bI(Q?Q.parentElement:null),ae=M.useRef({activatorEvent:null,active:null,activeNode:Q,collisionRect:null,collisions:null,droppableRects:V,draggableNodes:E,draggingNode:null,draggingNodeRect:null,droppableContainers:T,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),dt=T.getNodeFor((n=ae.current.over)==null?void 0:n.id),et=r6e({measure:U.dragOverlay.measure}),Ne=(r=et.nodeRef.current)!=null?r:Q,lt=w?(i=et.rect)!=null?i:ie:null,Te=!!(et.nodeRef.current&&et.rect),Gt=Yke(Te?null:ie),_r=yV(Ne?Ji(Ne):null),Tn=Zke(w?dt??Q:null),vn=n6e(Tn),Ht=SV(h,{transform:{x:A.x-Gt.x,y:A.y-Gt.y,scaleX:1,scaleY:1},activatorEvent:B,active:N,activeNodeRect:ie,containerNodeRect:ge,draggingNodeRect:lt,over:ae.current.over,overlayNodeRect:et.rect,scrollableAncestors:Tn,scrollableAncestorRects:vn,windowRect:_r}),An=j?mf(j,A):null,br=Jke(Tn),eo=wI(br),jr=wI(br,[ie]),or=mf(Ht,eo),Rr=lt?Eke(lt,Ht):null,Vr=N&&Rr?d({active:N,collisionRect:Rr,droppableRects:V,droppableContainers:F,pointerCoordinates:An}):null,kn=vke(Vr,"id"),[un,wi]=M.useState(null),ii=Te?Ht:mf(Ht,jr),zi=xke(ii,(o=un==null?void 0:un.rect)!=null?o:null,ie),fs=M.useCallback((Pn,qt)=>{let{sensor:Or,options:wr}=qt;if(C.current==null)return;const xr=E.get(C.current);if(!xr)return;const Gr=Pn.nativeEvent,xi=new Or({active:C.current,activeNode:xr,event:Gr,options:wr,context:ae,onStart(oi){const Ir=C.current;if(Ir==null)return;const hs=E.get(Ir);if(!hs)return;const{onDragStart:zs}=O.current,si={active:{id:Ir,data:hs.data,rect:L}};ws.unstable_batchedUpdates(()=>{zs==null||zs(si),S(Ol.Initializing),_({type:Lr.DragStart,initialCoordinates:oi,active:Ir}),v({type:"onDragStart",event:si})})},onMove(oi){_({type:Lr.DragMove,coordinates:oi})},onEnd:no(Lr.DragEnd),onCancel:no(Lr.DragCancel)});ws.unstable_batchedUpdates(()=>{D(xi),R(Pn.nativeEvent)});function no(oi){return async function(){const{active:hs,collisions:zs,over:si,scrollAdjustedTranslate:ml}=ae.current;let Fo=null;if(hs&&ml){const{cancelDrop:Hr}=O.current;Fo={activatorEvent:Gr,active:hs,collisions:zs,delta:ml,over:si},oi===Lr.DragEnd&&typeof Hr=="function"&&await Promise.resolve(Hr(Fo))&&(oi=Lr.DragCancel)}C.current=null,ws.unstable_batchedUpdates(()=>{_({type:oi}),S(Ol.Uninitialized),wi(null),D(null),R(null);const Hr=oi===Lr.DragEnd?"onDragEnd":"onDragCancel";if(Fo){const Ta=O.current[Hr];Ta==null||Ta(Fo),v({type:Hr,event:Fo})}})}}},[E]),Sr=M.useCallback((Pn,qt)=>(Or,wr)=>{const xr=Or.nativeEvent,Gr=E.get(wr);if(C.current!==null||!Gr||xr.dndKit||xr.defaultPrevented)return;const xi={active:Gr};Pn(Or,qt.options,xi)===!0&&(xr.dndKit={capturedBy:qt.sensor},C.current=wr,fs(Or,qt))},[E,fs]),to=qke(c,Sr);e6e(c),va(()=>{ie&&y===Ol.Initializing&&S(Ol.Initialized)},[ie,y]),M.useEffect(()=>{const{onDragMove:Pn}=O.current,{active:qt,activatorEvent:Or,collisions:wr,over:xr}=ae.current;if(!qt||!Or)return;const Gr={active:qt,activatorEvent:Or,collisions:wr,delta:{x:or.x,y:or.y},over:xr};ws.unstable_batchedUpdates(()=>{Pn==null||Pn(Gr),v({type:"onDragMove",event:Gr})})},[or.x,or.y]),M.useEffect(()=>{const{active:Pn,activatorEvent:qt,collisions:Or,droppableContainers:wr,scrollAdjustedTranslate:xr}=ae.current;if(!Pn||C.current==null||!qt||!xr)return;const{onDragOver:Gr}=O.current,xi=wr.get(kn),no=xi&&xi.rect.current?{id:xi.id,rect:xi.rect.current,data:xi.data,disabled:xi.disabled}:null,oi={active:Pn,activatorEvent:qt,collisions:Or,delta:{x:xr.x,y:xr.y},over:no};ws.unstable_batchedUpdates(()=>{wi(no),Gr==null||Gr(oi),v({type:"onDragOver",event:oi})})},[kn]),va(()=>{ae.current={activatorEvent:B,active:N,activeNode:Q,collisionRect:Rr,collisions:Vr,droppableRects:V,draggableNodes:E,draggingNode:Ne,draggingNodeRect:lt,droppableContainers:T,over:un,scrollableAncestors:Tn,scrollAdjustedTranslate:or},L.current={initial:lt,translated:Rr}},[N,Q,Vr,Rr,E,Ne,lt,V,T,un,Tn,or]),jke({...K,delta:A,draggingRect:Rr,pointerCoordinates:An,scrollableAncestors:Tn,scrollableAncestorRects:vn});const Ca=M.useMemo(()=>({active:N,activeNode:Q,activeNodeRect:ie,activatorEvent:B,collisions:Vr,containerNodeRect:ge,dragOverlay:et,draggableNodes:E,droppableContainers:T,droppableRects:V,over:un,measureDroppableContainers:H,scrollableAncestors:Tn,scrollableAncestorRects:vn,measuringConfiguration:U,measuringScheduled:Y,windowRect:_r}),[N,Q,ie,B,Vr,ge,et,E,T,V,un,H,Tn,vn,U,Y,_r]),vo=M.useMemo(()=>({activatorEvent:B,activators:to,active:N,activeNodeRect:ie,ariaDescribedById:{draggable:I},dispatch:_,draggableNodes:E,over:un,measureDroppableContainers:H}),[B,to,N,ie,_,I,E,un,H]);return mn.createElement(nV.Provider,{value:g},mn.createElement(Ym.Provider,{value:vo},mn.createElement(bV.Provider,{value:Ca},mn.createElement(KS.Provider,{value:zi},u)),mn.createElement(u6e,{disabled:(a==null?void 0:a.restoreFocus)===!1})),mn.createElement(dke,{...a,hiddenTextDescribedById:I}));function Ea(){const Pn=(P==null?void 0:P.autoScrollEnabled)===!1,qt=typeof l=="object"?l.enabled===!1:l===!1,Or=w&&!Pn&&!qt;return typeof l=="object"?{...l,enabled:Or}:{enabled:Or}}}),h6e=M.createContext(null),xI="button",p6e="Droppable";function bMe(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const o=qS(p6e),{activators:s,activatorEvent:a,active:l,activeNodeRect:u,ariaDescribedById:c,draggableNodes:d,over:f}=M.useContext(Ym),{role:h=xI,roleDescription:p="draggable",tabIndex:m=0}=i??{},b=(l==null?void 0:l.id)===t,_=M.useContext(b?KS:h6e),[v,g]=V1(),[y,S]=V1(),w=t6e(s,t),x=Zg(n);va(()=>(d.set(t,{id:t,key:o,node:v,activatorNode:y,data:x}),()=>{const A=d.get(t);A&&A.key===o&&d.delete(t)}),[d,t]);const E=M.useMemo(()=>({role:h,tabIndex:m,"aria-disabled":r,"aria-pressed":b&&h===xI?!0:void 0,"aria-roledescription":p,"aria-describedby":c.draggable}),[r,h,m,b,p,c.draggable]);return{active:l,activatorEvent:a,activeNodeRect:u,attributes:E,isDragging:b,listeners:r?void 0:w,node:v,over:f,setNodeRef:g,setActivatorNodeRef:S,transform:_}}function g6e(){return M.useContext(bV)}const m6e="Droppable",y6e={timeout:25};function SMe(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const o=qS(m6e),{active:s,dispatch:a,over:l,measureDroppableContainers:u}=M.useContext(Ym),c=M.useRef({disabled:n}),d=M.useRef(!1),f=M.useRef(null),h=M.useRef(null),{disabled:p,updateMeasurementsFor:m,timeout:b}={...y6e,...i},_=Zg(m??r),v=M.useCallback(()=>{if(!d.current){d.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{u(Array.isArray(_.current)?_.current:[_.current]),h.current=null},b)},[b]),g=WS({callback:v,disabled:p||!s}),y=M.useCallback((E,A)=>{g&&(A&&(g.unobserve(A),d.current=!1),E&&g.observe(E))},[g]),[S,w]=V1(y),x=Zg(t);return M.useEffect(()=>{!g||!S.current||(g.disconnect(),d.current=!1,g.observe(S.current))},[S,g]),va(()=>(a({type:Lr.RegisterDroppable,element:{id:r,key:o,disabled:n,node:S,rect:f,data:x}}),()=>a({type:Lr.UnregisterDroppable,key:o,id:r})),[r]),M.useEffect(()=>{n!==c.current.disabled&&(a({type:Lr.SetDroppableDisabled,id:r,key:o,disabled:n}),c.current.disabled=n)},[r,o,n,a]),{active:s,rect:f,isOver:(l==null?void 0:l.id)===r,node:S,over:l,setNodeRef:w}}function v6e(e){let{animation:t,children:n}=e;const[r,i]=M.useState(null),[o,s]=M.useState(null),a=G1(n);return!n&&!r&&a&&i(a),va(()=>{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]),mn.createElement(mn.Fragment,null,n,r?M.cloneElement(r,{ref:s}):null)}const _6e={x:0,y:0,scaleX:1,scaleY:1};function b6e(e){let{children:t}=e;return mn.createElement(Ym.Provider,{value:_V},mn.createElement(KS.Provider,{value:_6e},t))}const S6e={position:"fixed",touchAction:"none"},w6e=e=>T4(e)?"transform 250ms ease":void 0,x6e=M.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:o,className:s,rect:a,style:l,transform:u,transition:c=w6e}=e;if(!a)return null;const d=i?u:{...u,scaleX:1,scaleY:1},f={...S6e,width:a.width,height:a.height,top:a.top,left:a.left,transform:em.Transform.toString(d),transformOrigin:i&&r?pke(r,a):void 0,transition:typeof c=="function"?c(r):c,...l};return mn.createElement(n,{className:s,style:f,ref:t},o)}),C6e=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)}},E6e=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:em.Transform.toString(t)},{transform:em.Transform.toString(n)}]},T6e={duration:250,easing:"ease",keyframes:E6e,sideEffects:C6e({styles:{active:{opacity:"0"}}})};function A6e(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return HS((o,s)=>{if(t===null)return;const a=n.get(o);if(!a)return;const l=a.node.current;if(!l)return;const u=vV(s);if(!u)return;const{transform:c}=Ji(s).getComputedStyle(s),d=iV(c);if(!d)return;const f=typeof t=="function"?t:k6e(t);return dV(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 k6e(e){const{duration:t,easing:n,sideEffects:r,keyframes:i}={...T6e,...e};return o=>{let{active:s,dragOverlay:a,transform:l,...u}=o;if(!t)return;const c={x:a.rect.left-s.rect.left,y:a.rect.top-s.rect.top},d={scaleX:l.scaleX!==1?s.rect.width*l.scaleX/a.rect.width:1,scaleY:l.scaleY!==1?s.rect.height*l.scaleY/a.rect.height:1},f={x:l.x-c.x,y:l.y-c.y,...d},h=i({...u,active:s,dragOverlay:a,transform:{initial:l,final:f}}),[p]=h,m=h[h.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;const b=r==null?void 0:r({active:s,dragOverlay:a,...u}),_=a.node.animate(h,{duration:t,easing:n,fill:"forwards"});return new Promise(v=>{_.onfinish=()=>{b==null||b(),v()}})}}let CI=0;function P6e(e){return M.useMemo(()=>{if(e!=null)return CI++,CI},[e])}const R6e=mn.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:i,transition:o,modifiers:s,wrapperElement:a="div",className:l,zIndex:u=999}=e;const{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggableNodes:p,droppableContainers:m,dragOverlay:b,over:_,measuringConfiguration:v,scrollableAncestors:g,scrollableAncestorRects:y,windowRect:S}=g6e(),w=M.useContext(KS),x=P6e(d==null?void 0:d.id),E=SV(s,{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggingNodeRect:b.rect,over:_,overlayNodeRect:b.rect,scrollableAncestors:g,scrollableAncestorRects:y,transform:w,windowRect:S}),A=R4(f),T=A6e({config:r,draggableNodes:p,droppableContainers:m,measuringConfiguration:v}),k=A?b.setRef:void 0;return mn.createElement(b6e,null,mn.createElement(v6e,{animation:T},d&&x?mn.createElement(x6e,{key:x,id:d.id,ref:k,as:a,activatorEvent:c,adjustScale:t,className:l,transition:o,rect:A,style:{zIndex:u,...i},transform:E},n):null))}),O6e=()=>u$(),I6e=t$,M6e=Li([Owe,DT],({nodes:e},t)=>t==="nodes"?e.viewport.zoom:1),N6e=()=>{const e=I6e(M6e);return M.useCallback(({activatorEvent:n,draggingNodeRect:r,transform:i})=>{if(r&&n){const o=Jg(n);if(!o)return i;const s=o.x-r.left,a=o.y-r.top,l=i.x+s-r.width/2,u=i.y+a-r.height/2,c=i.scaleX*e,d=i.scaleY*e;return{x:l,y:u,scaleX:c,scaleY:d}}return i},[e])};function D6e(e){return Z.jsx(f6e,{...e})}const f0=28,EI={w:f0,h:f0,maxW:f0,maxH:f0,shadow:"dark-lg",borderRadius:"lg",opacity:.3,bg:"base.800",color:"base.50",_dark:{borderColor:"base.200",bg:"base.900",color:"base.100"}},L6e=e=>{if(!e.dragData)return null;if(e.dragData.payloadType==="NODE_FIELD"){const{field:t,fieldTemplate:n}=e.dragData.payload;return Z.jsx(z1,{sx:{position:"relative",p:2,px:3,opacity:.7,bg:"base.300",borderRadius:"base",boxShadow:"dark-lg",whiteSpace:"nowrap",fontSize:"sm"},children:Z.jsx(qj,{children:t.label||n.title})})}if(e.dragData.payloadType==="IMAGE_DTO"){const{thumbnail_url:t,width:n,height:r}=e.dragData.payload.imageDTO;return Z.jsx(z1,{sx:{position:"relative",width:"full",height:"full",display:"flex",alignItems:"center",justifyContent:"center"},children:Z.jsx(w4,{sx:{...EI},objectFit:"contain",src:t,width:n,height:r})})}return e.dragData.payloadType==="IMAGE_DTOS"?Z.jsxs(x4,{sx:{position:"relative",alignItems:"center",justifyContent:"center",flexDir:"column",...EI},children:[Z.jsx($3,{children:e.dragData.payload.imageDTOs.length}),Z.jsx($3,{size:"sm",children:"Images"})]}):null},$6e=M.memo(L6e),F6e=e=>{const[t,n]=M.useState(null),r=pe("images"),i=O6e(),o=M.useCallback(d=>{r.trace({dragData:pn(d.active.data.current)},"Drag started");const f=d.active.data.current;f&&n(f)},[r]),s=M.useCallback(d=>{var h;r.trace({dragData:pn(d.active.data.current)},"Drag ended");const f=(h=d.over)==null?void 0:h.data.current;!t||!f||(i(Az({overData:f,activeData:t})),n(null))},[t,i,r]),a=pI(gV,{activationConstraint:{distance:10}}),l=pI(mV,{activationConstraint:{distance:10}}),u=fke(a,l),c=N6e();return Z.jsxs(D6e,{onDragStart:o,onDragEnd:s,sensors:u,collisionDetection:wke,autoScroll:!1,children:[e.children,Z.jsx(R6e,{dropAnimation:null,modifiers:[c],style:{width:"min-content",height:"min-content",cursor:"none",userSelect:"none",padding:"10rem"},children:Z.jsx(SAe,{children:t&&Z.jsx(hAe.div,{layout:!0,initial:{opacity:0,scale:.7},animate:{opacity:1,scale:1,transition:{duration:.1}},children:Z.jsx($6e,{dragData:t})},"overlay-drag-image")})})]})},B6e=M.memo(F6e),z6e=M.lazy(()=>zM(()=>import("./App-d1567775.js"),["./App-d1567775.js","./menu-31376327.js","./App-6125620a.css"],import.meta.url)),U6e=M.lazy(()=>zM(()=>import("./ThemeLocaleProvider-374b1ae5.js"),["./ThemeLocaleProvider-374b1ae5.js","./menu-31376327.js","./ThemeLocaleProvider-90f0fcd3.css"],import.meta.url)),j6e=({apiUrl:e,token:t,config:n,headerComponent:r,middleware:i,projectId:o,selectedImage:s})=>(M.useEffect(()=>(t&&Of.set(t),e&&gg.set(e),o&&mg.set(o),MB(),i&&i.length>0?WC(FR(),...i):WC(FR()),()=>{gg.set(void 0),Of.set(void 0),mg.set(void 0)}),[e,t,i,o]),Z.jsx(mn.StrictMode,{children:Z.jsx(cce,{store:Rwe,children:Z.jsx(mn.Suspense,{fallback:Z.jsx(PAe,{}),children:Z.jsx(U6e,{children:Z.jsx(B6e,{children:Z.jsx(z6e,{config:n,headerComponent:r,selectedImage:s})})})})})})),V6e=M.memo(j6e);Zw.createRoot(document.getElementById("root")).render(Z.jsx(V6e,{}));export{lc as $,xs as A,Lpe as B,go as C,nu as D,Ks as E,_Oe as F,sT as G,xwe as H,Lu as I,dCe as J,vu as K,XT as L,oMe as M,nMe as N,SAe as O,Bpe as P,hAe as Q,gMe as R,ng as S,JT as T,Hj as U,e4 as V,rMe as W,iMe as X,cCe as Y,uCe as Z,sMe as _,Z5 as a,aee as a$,Dc as a0,t1 as a1,dq as a2,mn as a3,$3e as a4,pMe as a5,K3e as a6,Qa as a7,hU as a8,s4e as a9,lU as aA,Zxe as aB,ws as aC,N4 as aD,KT as aE,o9e as aF,xRe as aG,FRe as aH,BRe as aI,hRe as aJ,dRe as aK,qj as aL,yp as aM,y0e as aN,UB as aO,VIe as aP,oOe as aQ,WE as aR,IT as aS,b9e as aT,w4 as aU,AAe as aV,Bi as aW,PRe as aX,$Re as aY,Hce as aZ,yE as a_,uMe as aa,S3 as ab,tMe as ac,hMe as ad,Li as ae,gT as af,_m as ag,I6e as ah,SRe as ai,Om as aj,dL as ak,$L as al,tb as am,pe as an,O6e as ao,WIe as ap,Fn as aq,ra as ar,z1 as as,x4 as at,$3 as au,Owe as av,DT as aw,LRe as ax,Qxe as ay,WT as az,rE as b,lPe as b$,rPe as b0,p9e as b1,JIe as b2,S9e as b3,_9e as b4,Kye as b5,ZIe as b6,n9e as b7,hne as b8,pye as b9,dOe as bA,H6e as bB,Q6e as bC,Y6e as bD,Z6e as bE,J6e as bF,xPe as bG,CPe as bH,IIe as bI,MIe as bJ,iPe as bK,OPe as bL,tPe as bM,vPe as bN,aPe as bO,oSe as bP,nPe as bQ,EPe as bR,ePe as bS,LPe as bT,oPe as bU,Vk as bV,sPe as bW,Gk as bX,dPe as bY,bPe as bZ,iSe as b_,gye as ba,d9e as bb,h9e as bc,t9e as bd,m9e as be,bRe as bf,qIe as bg,kRe as bh,Vne as bi,HRe as bj,GRe as bk,TRe as bl,pOe as bm,SMe as bn,bMe as bo,hB as bp,hOe as bq,CRe as br,ERe as bs,IRe as bt,RC as bu,ARe as bv,Bl as bw,my as bx,fOe as by,cOe as bz,fK as c,qOe as c$,g8 as c0,LIe as c1,$Ie as c2,FIe as c3,fPe as c4,BIe as c5,hPe as c6,zIe as c7,pPe as c8,UIe as c9,F7 as cA,lIe as cB,dIe as cC,pIe as cD,hIe as cE,uIe as cF,cIe as cG,fIe as cH,fwe as cI,PIe as cJ,EOe as cK,gRe as cL,pRe as cM,POe as cN,jee as cO,yIe as cP,wOe as cQ,jOe as cR,VOe as cS,cPe as cT,R9e as cU,KOe as cV,q6e as cW,WOe as cX,Rb as cY,uPe as cZ,O9e as c_,Me as ca,KRe as cb,qRe as cc,WRe as cd,Kce as ce,l0e as cf,dD as cg,IB as ch,fRe as ci,Tz as cj,RRe as ck,i1 as cl,G$ as cm,eMe as cn,ORe as co,xy as cp,o1 as cq,KIe as cr,Au as cs,QIe as ct,qr as cu,aT as cv,ns as cw,gPe as cx,Lm as cy,v9e as cz,tee as d,Q9e as d$,Sm as d0,j9e as d1,P9e as d2,W9e as d3,k9e as d4,GOe as d5,UOe as d6,K9e as d7,XOe as d8,q9e as d9,A0e as dA,T0e as dB,tOe as dC,nOe as dD,rOe as dE,Gce as dF,iOe as dG,F$ as dH,YRe as dI,JRe as dJ,XRe as dK,W2e as dL,yR as dM,QRe as dN,KPe as dO,$Pe as dP,GPe as dQ,wPe as dR,HPe as dS,qPe as dT,I9e as dU,NIe as dV,gE as dW,Gme as dX,SPe as dY,F2e as dZ,sD as d_,QOe as da,zOe as db,sne as dc,M9e as dd,HOe as de,mIe as df,uOe as dg,sOe as dh,aOe as di,lOe as dj,mOe as dk,yOe as dl,q$ as dm,gOe as dn,k_ as dp,SP as dq,eOe as dr,jRe as ds,zRe as dt,URe as du,jc as dv,Hk as dw,Vce as dx,Ed as dy,wP as dz,O7 as e,Dm as e$,QPe as e0,pne as e1,XPe as e2,Ss as e3,_Pe as e4,MPe as e5,X6e as e6,Zee as e7,DPe as e8,DIe as e9,G9e as eA,$9e as eB,i9e as eC,L9e as eD,H9e as eE,V9e as eF,r9e as eG,B9e as eH,F9e as eI,N9e as eJ,U9e as eK,K6e as eL,D9e as eM,z9e as eN,W6e as eO,ZF as eP,xOe as eQ,aC as eR,Ime as eS,IOe as eT,CIe as eU,xIe as eV,TOe as eW,Nme as eX,kOe as eY,pB as eZ,OF as e_,kPe as ea,PPe as eb,RPe as ec,TPe as ed,APe as ee,fne as ef,BPe as eg,FPe as eh,r8e as ei,C8e as ej,aRe as ek,E8e as el,WPe as em,Yee as en,jPe as eo,VPe as ep,UPe as eq,mE as er,OIe as es,U2e as et,l9e as eu,he as ev,fi as ew,Mn as ex,ca as ey,A9e as ez,FN as f,h8e as f$,bOe as f0,La as f1,RIe as f2,y9e as f3,t$ as f4,Mme as f5,AIe as f6,kIe as f7,SOe as f8,YOe as f9,xR as fA,pn as fB,Fme as fC,Lg as fD,mu as fE,tIe as fF,nIe as fG,iIe as fH,oIe as fI,TIe as fJ,rIe as fK,FOe as fL,dB as fM,GB as fN,HV as fO,Et as fP,L8e as fQ,tRe as fR,eRe as fS,b8e as fT,H8e as fU,rRe as fV,k0e as fW,f8e as fX,O8e as fY,Uh as fZ,k8e as f_,ZOe as fa,mRe as fb,g1 as fc,Ye as fd,JOe as fe,AOe as ff,zme as fg,COe as fh,gIe as fi,ROe as fj,OOe as fk,DOe as fl,NOe as fm,LOe as fn,eIe as fo,MOe as fp,sIe as fq,aIe as fr,vIe as fs,_we as ft,bIe as fu,wIe as fv,SIe as fw,Eme as fx,Y9e as fy,ED as fz,WN as g,Sp as g$,Mb as g0,R8e as g1,u8e as g2,P8e as g3,c8e as g4,m8e as g5,JPe as g6,ZPe as g7,YPe as g8,nRe as g9,B8e as gA,F8e as gB,S0e as gC,_8e as gD,d8e as gE,Y8e as gF,Q8e as gG,j8e as gH,z8e as gI,U8e as gJ,lRe as gK,K8e as gL,uRe as gM,A8e as gN,T8e as gO,l8e as gP,a8e as gQ,sRe as gR,n8e as gS,S8e as gT,C0e as gU,b0e as gV,w0e as gW,x0e as gX,X9e as gY,PB as gZ,MRe as g_,B7 as ga,lD as gb,Of as gc,Ine as gd,i8e as ge,o8e as gf,s8e as gg,J8e as gh,v8e as gi,y8e as gj,Dne as gk,Z8e as gl,E0e as gm,p8e as gn,OT as go,q2e as gp,w8e as gq,$8e as gr,D8e as gs,I8e as gt,e8e as gu,t8e as gv,cRe as gw,x9e as gx,w9e as gy,G8e as gz,Ki as h,MT as h0,s9e as h1,a9e as h2,Xee as h3,g0e as h4,J9e as h5,pU as h6,fMe as h7,cMe as h8,aMe as h9,dMe as ha,ia as hb,lMe as hc,Z9e as hd,D3e as he,A3e as hf,mMe as hg,vMe as hh,_Me as hi,KJ as i,C_ as j,mm as k,eE as l,LN as m,aE as n,C7 as o,Zf as p,BN as q,RW as r,Wee as s,vm as t,M as u,Z as v,ss as w,dr as x,cf as y,ri as z}; diff --git a/invokeai/frontend/web/dist/assets/menu-31376327.js b/invokeai/frontend/web/dist/assets/menu-c9cc8c3d.js similarity index 99% rename from invokeai/frontend/web/dist/assets/menu-31376327.js rename to invokeai/frontend/web/dist/assets/menu-c9cc8c3d.js index 2b8d93f2cb..71ceb87707 100644 --- a/invokeai/frontend/web/dist/assets/menu-31376327.js +++ b/invokeai/frontend/web/dist/assets/menu-c9cc8c3d.js @@ -1 +1 @@ -import{u as p,v as d,Y as Z,aC as xe,hg as We,Q as De,K as j,$ as q,I as z,L as R,V as Ce,U as Be,T as _e,R as Ge,O as Ue,hh as Ve,hi as Ze,a3 as A,h5 as B,hd as qe,h7 as Xe}from"./index-f83c2c5c.js";function Ke(e,t){return`${e} returned \`undefined\`. Seems you forgot to wrap component within ${t}`}function M(e={}){const{name:t,strict:r=!0,hookName:o="useContext",providerName:a="Provider",errorMessage:n,defaultValue:s}=e,i=p.createContext(s);i.displayName=t;function l(){var c;const u=p.useContext(i);if(!u&&r){const f=new Error(n??Ke(o,a));throw f.name="ContextError",(c=Error.captureStackTrace)==null||c.call(Error,f,l),f}return u}return[i.Provider,l,i]}var[Je,Ye]=M({strict:!1,name:"PortalManagerContext"});function Qe(e){const{children:t,zIndex:r}=e;return d.jsx(Je,{value:{zIndex:r},children:t})}Qe.displayName="PortalManager";var[ke,et]=M({strict:!1,name:"PortalContext"}),K="chakra-portal",tt=".chakra-portal",rt=e=>d.jsx("div",{className:"chakra-portal-zIndex",style:{position:"absolute",zIndex:e.zIndex,top:0,left:0,right:0},children:e.children}),nt=e=>{const{appendToParentPortal:t,children:r}=e,[o,a]=p.useState(null),n=p.useRef(null),[,s]=p.useState({});p.useEffect(()=>s({}),[]);const i=et(),l=Ye();Z(()=>{if(!o)return;const u=o.ownerDocument,f=t?i??u.body:u.body;if(!f)return;n.current=u.createElement("div"),n.current.className=K,f.appendChild(n.current),s({});const y=n.current;return()=>{f.contains(y)&&f.removeChild(y)}},[o]);const c=l!=null&&l.zIndex?d.jsx(rt,{zIndex:l==null?void 0:l.zIndex,children:r}):r;return n.current?xe.createPortal(d.jsx(ke,{value:n.current,children:c}),n.current):d.jsx("span",{ref:u=>{u&&a(u)}})},ot=e=>{const{children:t,containerRef:r,appendToParentPortal:o}=e,a=r.current,n=a??(typeof window<"u"?document.body:void 0),s=p.useMemo(()=>{const l=a==null?void 0:a.ownerDocument.createElement("div");return l&&(l.className=K),l},[a]),[,i]=p.useState({});return Z(()=>i({}),[]),Z(()=>{if(!(!s||!n))return n.appendChild(s),()=>{n.removeChild(s)}},[s,n]),n&&s?xe.createPortal(d.jsx(ke,{value:o?s:null,children:t}),s):null};function G(e){const t={appendToParentPortal:!0,...e},{containerRef:r,...o}=t;return r?d.jsx(ot,{containerRef:r,...o}):d.jsx(nt,{...o})}G.className=K;G.selector=tt;G.displayName="Portal";function m(e,t={}){let r=!1;function o(){if(!r){r=!0;return}throw new Error("[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?")}function a(...u){o();for(const f of u)t[f]=l(f);return m(e,t)}function n(...u){for(const f of u)f in t||(t[f]=l(f));return m(e,t)}function s(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.selector]))}function i(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.className]))}function l(u){const g=`chakra-${(["container","root"].includes(u??"")?[e]:[e,u]).filter(Boolean).join("__")}`;return{className:g,selector:`.${g}`,toString:()=>u}}return{parts:a,toPart:l,extend:n,selectors:s,classnames:i,get keys(){return Object.keys(t)},__type:{}}}var Or=m("accordion").parts("root","container","button","panel").extend("icon"),zr=m("alert").parts("title","description","container").extend("icon","spinner"),Rr=m("avatar").parts("label","badge","container").extend("excessLabel","group"),Mr=m("breadcrumb").parts("link","item","container").extend("separator");m("button").parts();var Lr=m("checkbox").parts("control","icon","container").extend("label");m("progress").parts("track","filledTrack").extend("label");var Fr=m("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Hr=m("editable").parts("preview","input","textarea"),Wr=m("form").parts("container","requiredIndicator","helperText"),Dr=m("formError").parts("text","icon"),Br=m("input").parts("addon","field","element","group"),Gr=m("list").parts("container","item","icon"),at=m("menu").parts("button","list","item").extend("groupTitle","icon","command","divider"),Ur=m("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Vr=m("numberinput").parts("root","field","stepperGroup","stepper");m("pininput").parts("field");var Zr=m("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),qr=m("progress").parts("label","filledTrack","track"),Xr=m("radio").parts("container","control","label"),Kr=m("select").parts("field","icon"),Jr=m("slider").parts("container","track","thumb","filledTrack","mark"),Yr=m("stat").parts("container","label","helpText","number","icon"),Qr=m("switch").parts("container","track","thumb"),en=m("table").parts("table","thead","tbody","tr","th","td","tfoot","caption"),tn=m("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator"),rn=m("tag").parts("container","label","closeButton"),nn=m("card").parts("container","header","body","footer");function P(e,t){return r=>r.colorMode==="dark"?t:e}function on(e){const{orientation:t,vertical:r,horizontal:o}=e;return t?t==="vertical"?r:o:{}}var st=(e,t)=>e.find(r=>r.id===t);function re(e,t){const r=we(e,t),o=r?e[r].findIndex(a=>a.id===t):-1;return{position:r,index:o}}function we(e,t){for(const[r,o]of Object.entries(e))if(st(o,t))return r}function it(e){const t=e.includes("right"),r=e.includes("left");let o="center";return t&&(o="flex-end"),r&&(o="flex-start"),{display:"flex",flexDirection:"column",alignItems:o}}function lt(e){const r=e==="top"||e==="bottom"?"0 auto":void 0,o=e.includes("top")?"env(safe-area-inset-top, 0px)":void 0,a=e.includes("bottom")?"env(safe-area-inset-bottom, 0px)":void 0,n=e.includes("left")?void 0:"env(safe-area-inset-right, 0px)",s=e.includes("right")?void 0:"env(safe-area-inset-left, 0px)";return{position:"fixed",zIndex:"var(--toast-z-index, 5500)",pointerEvents:"none",display:"flex",flexDirection:"column",margin:r,top:o,bottom:a,right:n,left:s}}function ct(e,t=[]){const r=p.useRef(e);return p.useEffect(()=>{r.current=e}),p.useCallback((...o)=>{var a;return(a=r.current)==null?void 0:a.call(r,...o)},t)}function ut(e,t){const r=ct(e);p.useEffect(()=>{if(t==null)return;let o=null;return o=window.setTimeout(()=>{r()},t),()=>{o&&window.clearTimeout(o)}},[t,r])}function ne(e,t){const r=p.useRef(!1),o=p.useRef(!1);p.useEffect(()=>{if(r.current&&o.current)return e();o.current=!0},t),p.useEffect(()=>(r.current=!0,()=>{r.current=!1}),[])}var dt={initial:e=>{const{position:t}=e,r=["top","bottom"].includes(t)?"y":"x";let o=["top-right","bottom-right"].includes(t)?1:-1;return t==="bottom"&&(o=1),{opacity:0,[r]:o*24}},animate:{opacity:1,y:0,x:0,scale:1,transition:{duration:.4,ease:[.4,0,.2,1]}},exit:{opacity:0,scale:.85,transition:{duration:.2,ease:[.4,0,1,1]}}},Pe=p.memo(e=>{const{id:t,message:r,onCloseComplete:o,onRequestRemove:a,requestClose:n=!1,position:s="bottom",duration:i=5e3,containerStyle:l,motionVariants:c=dt,toastSpacing:u="0.5rem"}=e,[f,y]=p.useState(i),g=We();ne(()=>{g||o==null||o()},[g]),ne(()=>{y(i)},[i]);const h=()=>y(null),$=()=>y(i),S=()=>{g&&a()};p.useEffect(()=>{g&&n&&a()},[g,n,a]),ut(S,f);const H=p.useMemo(()=>({pointerEvents:"auto",maxWidth:560,minWidth:300,margin:u,...l}),[l,u]),N=p.useMemo(()=>it(s),[s]);return d.jsx(De.div,{layout:!0,className:"chakra-toast",variants:c,initial:"initial",animate:"animate",exit:"exit",onHoverStart:h,onHoverEnd:$,custom:{position:s},style:N,children:d.jsx(j.div,{role:"status","aria-atomic":"true",className:"chakra-toast__inner",__css:H,children:q(r,{id:t,onClose:S})})})});Pe.displayName="ToastComponent";function ft(e,t){var r;const o=e??"bottom",n={"top-start":{ltr:"top-left",rtl:"top-right"},"top-end":{ltr:"top-right",rtl:"top-left"},"bottom-start":{ltr:"bottom-left",rtl:"bottom-right"},"bottom-end":{ltr:"bottom-right",rtl:"bottom-left"}}[o];return(r=n==null?void 0:n[t])!=null?r:o}var oe={path:d.jsxs("g",{stroke:"currentColor",strokeWidth:"1.5",children:[d.jsx("path",{strokeLinecap:"round",fill:"none",d:"M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"}),d.jsx("path",{fill:"currentColor",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),d.jsx("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},L=z((e,t)=>{const{as:r,viewBox:o,color:a="currentColor",focusable:n=!1,children:s,className:i,__css:l,...c}=e,u=R("chakra-icon",i),f=Ce("Icon",e),y={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:a,...l,...f},g={ref:t,focusable:n,className:u,__css:y},h=o??oe.viewBox;if(r&&typeof r!="string")return d.jsx(j.svg,{as:r,...g,...c});const $=s??oe.path;return d.jsx(j.svg,{verticalAlign:"middle",viewBox:h,...g,...c,children:$})});L.displayName="Icon";function pt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z"})})}function mt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm.25,5a1.5,1.5,0,1,1-1.5,1.5A1.5,1.5,0,0,1,12.25,5ZM14.5,18.5h-4a1,1,0,0,1,0-2h.75a.25.25,0,0,0,.25-.25v-4.5a.25.25,0,0,0-.25-.25H10.5a1,1,0,0,1,0-2h1a2,2,0,0,1,2,2v4.75a.25.25,0,0,0,.25.25h.75a1,1,0,1,1,0,2Z"})})}function ae(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("path",{fill:"currentColor",d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"})})}var[gt,J]=M({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[bt,Y]=M({name:"AlertStylesContext",hookName:"useAlertStyles",providerName:""}),Ae={info:{icon:mt,colorScheme:"blue"},warning:{icon:ae,colorScheme:"orange"},success:{icon:pt,colorScheme:"green"},error:{icon:ae,colorScheme:"red"},loading:{icon:Be,colorScheme:"blue"}};function yt(e){return Ae[e].colorScheme}function vt(e){return Ae[e].icon}var je=z(function(t,r){const o=Y(),{status:a}=J(),n={display:"inline",...o.description};return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__desc",t.className),__css:n})});je.displayName="AlertDescription";function Ee(e){const{status:t}=J(),r=vt(t),o=Y(),a=t==="loading"?o.spinner:o.icon;return d.jsx(j.span,{display:"inherit","data-status":t,...e,className:R("chakra-alert__icon",e.className),__css:a,children:e.children||d.jsx(r,{h:"100%",w:"100%"})})}Ee.displayName="AlertIcon";var Ne=z(function(t,r){const o=Y(),{status:a}=J();return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__title",t.className),__css:o.title})});Ne.displayName="AlertTitle";var $e=z(function(t,r){var o;const{status:a="info",addRole:n=!0,...s}=_e(t),i=(o=t.colorScheme)!=null?o:yt(a),l=Ge("Alert",{...t,colorScheme:i}),c={width:"100%",display:"flex",alignItems:"center",position:"relative",overflow:"hidden",...l.container};return d.jsx(gt,{value:{status:a},children:d.jsx(bt,{value:l,children:d.jsx(j.div,{"data-status":a,role:n?"alert":void 0,ref:r,...s,className:R("chakra-alert",t.className),__css:c})})})});$e.displayName="Alert";function ht(e){return d.jsx(L,{focusable:"false","aria-hidden":!0,...e,children:d.jsx("path",{fill:"currentColor",d:"M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"})})}var Te=z(function(t,r){const o=Ce("CloseButton",t),{children:a,isDisabled:n,__css:s,...i}=_e(t),l={outline:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0};return d.jsx(j.button,{type:"button","aria-label":"Close",ref:r,disabled:n,__css:{...l,...o,...s},...i,children:a||d.jsx(ht,{width:"1em",height:"1em"})})});Te.displayName="CloseButton";var St={top:[],"top-left":[],"top-right":[],"bottom-left":[],bottom:[],"bottom-right":[]},_=xt(St);function xt(e){let t=e;const r=new Set,o=a=>{t=a(t),r.forEach(n=>n())};return{getState:()=>t,subscribe:a=>(r.add(a),()=>{o(()=>e),r.delete(a)}),removeToast:(a,n)=>{o(s=>({...s,[n]:s[n].filter(i=>i.id!=a)}))},notify:(a,n)=>{const s=Ct(a,n),{position:i,id:l}=s;return o(c=>{var u,f;const g=i.includes("top")?[s,...(u=c[i])!=null?u:[]]:[...(f=c[i])!=null?f:[],s];return{...c,[i]:g}}),l},update:(a,n)=>{a&&o(s=>{const i={...s},{position:l,index:c}=re(i,a);return l&&c!==-1&&(i[l][c]={...i[l][c],...n,message:Ie(n)}),i})},closeAll:({positions:a}={})=>{o(n=>(a??["bottom","bottom-right","bottom-left","top","top-left","top-right"]).reduce((l,c)=>(l[c]=n[c].map(u=>({...u,requestClose:!0})),l),{...n}))},close:a=>{o(n=>{const s=we(n,a);return s?{...n,[s]:n[s].map(i=>i.id==a?{...i,requestClose:!0}:i)}:n})},isActive:a=>!!re(_.getState(),a).position}}var se=0;function Ct(e,t={}){var r,o;se+=1;const a=(r=t.id)!=null?r:se,n=(o=t.position)!=null?o:"bottom";return{id:a,message:e,position:n,duration:t.duration,onCloseComplete:t.onCloseComplete,onRequestRemove:()=>_.removeToast(String(a),n),status:t.status,requestClose:!1,containerStyle:t.containerStyle}}var _t=e=>{const{status:t,variant:r="solid",id:o,title:a,isClosable:n,onClose:s,description:i,colorScheme:l,icon:c}=e,u=o?{root:`toast-${o}`,title:`toast-${o}-title`,description:`toast-${o}-description`}:void 0;return d.jsxs($e,{addRole:!1,status:t,variant:r,id:u==null?void 0:u.root,alignItems:"start",borderRadius:"md",boxShadow:"lg",paddingEnd:8,textAlign:"start",width:"auto",colorScheme:l,children:[d.jsx(Ee,{children:c}),d.jsxs(j.div,{flex:"1",maxWidth:"100%",children:[a&&d.jsx(Ne,{id:u==null?void 0:u.title,children:a}),i&&d.jsx(je,{id:u==null?void 0:u.description,display:"block",children:i})]}),n&&d.jsx(Te,{size:"sm",onClick:s,position:"absolute",insetEnd:1,top:1})]})};function Ie(e={}){const{render:t,toastComponent:r=_t}=e;return a=>typeof t=="function"?t({...a,...e}):d.jsx(r,{...a,...e})}function an(e,t){const r=a=>{var n;return{...t,...a,position:ft((n=a==null?void 0:a.position)!=null?n:t==null?void 0:t.position,e)}},o=a=>{const n=r(a),s=Ie(n);return _.notify(s,n)};return o.update=(a,n)=>{_.update(a,r(n))},o.promise=(a,n)=>{const s=o({...n.loading,status:"loading",duration:null});a.then(i=>o.update(s,{status:"success",duration:5e3,...q(n.success,i)})).catch(i=>o.update(s,{status:"error",duration:5e3,...q(n.error,i)}))},o.closeAll=_.closeAll,o.close=_.close,o.isActive=_.isActive,o}var[sn,ln]=M({name:"ToastOptionsContext",strict:!1}),cn=e=>{const t=p.useSyncExternalStore(_.subscribe,_.getState,_.getState),{motionVariants:r,component:o=Pe,portalProps:a}=e,s=Object.keys(t).map(i=>{const l=t[i];return d.jsx("div",{role:"region","aria-live":"polite","aria-label":"Notifications",id:`chakra-toast-manager-${i}`,style:lt(i),children:d.jsx(Ue,{initial:!1,children:l.map(c=>d.jsx(o,{motionVariants:r,...c},c.id))})},i)});return d.jsx(G,{...a,children:s})};function kt(){if(console&&console.warn){for(var e=arguments.length,t=new Array(e),r=0;r()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}};function le(e,t,r){e.loadNamespaces(t,Oe(e,r))}function ce(e,t,r,o){typeof r=="string"&&(r=[r]),r.forEach(a=>{e.options.ns.indexOf(a)<0&&e.options.ns.push(a)}),e.loadLanguages(t,Oe(e,o))}function wt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const o=t.languages[0],a=t.options?t.options.fallbackLng:!1,n=t.languages[t.languages.length-1];if(o.toLowerCase()==="cimode")return!0;const s=(i,l)=>{const c=t.services.backendConnector.state[`${i}|${l}`];return c===-1||c===2};return r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!s(t.isLanguageChangingTo,e)?!1:!!(t.hasResourceBundle(o,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||s(o,e)&&(!a||s(n,e)))}function Pt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return!t.languages||!t.languages.length?(X("i18n.languages were undefined or empty",t.languages),!0):t.options.ignoreJSONStructure!==void 0?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(a,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!n(a.isLanguageChangingTo,e))return!1}}):wt(e,t,r)}const At=p.createContext();class jt{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Et=(e,t)=>{const r=p.useRef();return p.useEffect(()=>{r.current=t?r.current:e},[e,t]),r.current};function un(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{i18n:r}=t,{i18n:o,defaultNS:a}=p.useContext(At)||{},n=r||o||Ze();if(n&&!n.reportNamespaces&&(n.reportNamespaces=new jt),!n){X("You will need to pass in an i18next instance by using initReactI18next");const v=(w,x)=>typeof x=="string"?x:x&&typeof x=="object"&&typeof x.defaultValue=="string"?x.defaultValue:Array.isArray(w)?w[w.length-1]:w,k=[v,{},!1];return k.t=v,k.i18n={},k.ready=!1,k}n.options.react&&n.options.react.wait!==void 0&&X("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const s={...Ve(),...n.options.react,...t},{useSuspense:i,keyPrefix:l}=s;let c=e||a||n.options&&n.options.defaultNS;c=typeof c=="string"?[c]:c||["translation"],n.reportNamespaces.addUsedNamespaces&&n.reportNamespaces.addUsedNamespaces(c);const u=(n.isInitialized||n.initializedStoreOnce)&&c.every(v=>Pt(v,n,s));function f(){return n.getFixedT(t.lng||null,s.nsMode==="fallback"?c:c[0],l)}const[y,g]=p.useState(f);let h=c.join();t.lng&&(h=`${t.lng}${h}`);const $=Et(h),S=p.useRef(!0);p.useEffect(()=>{const{bindI18n:v,bindI18nStore:k}=s;S.current=!0,!u&&!i&&(t.lng?ce(n,t.lng,c,()=>{S.current&&g(f)}):le(n,c,()=>{S.current&&g(f)})),u&&$&&$!==h&&S.current&&g(f);function w(){S.current&&g(f)}return v&&n&&n.on(v,w),k&&n&&n.store.on(k,w),()=>{S.current=!1,v&&n&&v.split(" ").forEach(x=>n.off(x,w)),k&&n&&k.split(" ").forEach(x=>n.store.off(x,w))}},[n,h]);const H=p.useRef(!0);p.useEffect(()=>{S.current&&!H.current&&g(f),H.current=!1},[n,l]);const N=[y,n,u];if(N.t=y,N.i18n=n,N.ready=u,u||!u&&!i)return N;throw new Promise(v=>{t.lng?ce(n,t.lng,c,()=>v()):le(n,c,()=>v())})}const Nt={dark:["#C1C2C5","#A6A7AB","#909296","#5c5f66","#373A40","#2C2E33","#25262b","#1A1B1E","#141517","#101113"],gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]};function $t(e){return()=>({fontFamily:e.fontFamily||"sans-serif"})}var Tt=Object.defineProperty,ue=Object.getOwnPropertySymbols,It=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,de=(e,t,r)=>t in e?Tt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fe=(e,t)=>{for(var r in t||(t={}))It.call(t,r)&&de(e,r,t[r]);if(ue)for(var r of ue(t))Ot.call(t,r)&&de(e,r,t[r]);return e};function zt(e){return t=>({WebkitTapHighlightColor:"transparent",[t||"&:focus"]:fe({},e.focusRing==="always"||e.focusRing==="auto"?e.focusRingStyles.styles(e):e.focusRingStyles.resetStyles(e)),[t?t.replace(":focus",":focus:not(:focus-visible)"):"&:focus:not(:focus-visible)"]:fe({},e.focusRing==="auto"||e.focusRing==="never"?e.focusRingStyles.resetStyles(e):null)})}function F(e){return t=>typeof e.primaryShade=="number"?e.primaryShade:e.primaryShade[t||e.colorScheme]}function Q(e){const t=F(e);return(r,o,a=!0,n=!0)=>{if(typeof r=="string"&&r.includes(".")){const[i,l]=r.split("."),c=parseInt(l,10);if(i in e.colors&&c>=0&&c<10)return e.colors[i][typeof o=="number"&&!n?o:c]}const s=typeof o=="number"?o:t();return r in e.colors?e.colors[r][s]:a?e.colors[e.primaryColor][s]:r}}function ze(e){let t="";for(let r=1;r{const a={from:(o==null?void 0:o.from)||e.defaultGradient.from,to:(o==null?void 0:o.to)||e.defaultGradient.to,deg:(o==null?void 0:o.deg)||e.defaultGradient.deg};return`linear-gradient(${a.deg}deg, ${t(a.from,r(),!1)} 0%, ${t(a.to,r(),!1)} 100%)`}}function Me(e){return t=>{if(typeof t=="number")return`${t/16}${e}`;if(typeof t=="string"){const r=t.replace("px","");if(!Number.isNaN(Number(r)))return`${Number(r)/16}${e}`}return t}}const E=Me("rem"),U=Me("em");function Le({size:e,sizes:t,units:r}){return e in t?t[e]:typeof e=="number"?r==="em"?U(e):E(e):e||t.md}function W(e){return typeof e=="number"?e:typeof e=="string"&&e.includes("rem")?Number(e.replace("rem",""))*16:typeof e=="string"&&e.includes("em")?Number(e.replace("em",""))*16:Number(e)}function Lt(e){return t=>`@media (min-width: ${U(W(Le({size:t,sizes:e.breakpoints})))})`}function Ft(e){return t=>`@media (max-width: ${U(W(Le({size:t,sizes:e.breakpoints}))-1)})`}function Ht(e){return/^#?([0-9A-F]{3}){1,2}$/i.test(e)}function Wt(e){let t=e.replace("#","");if(t.length===3){const s=t.split("");t=[s[0],s[0],s[1],s[1],s[2],s[2]].join("")}const r=parseInt(t,16),o=r>>16&255,a=r>>8&255,n=r&255;return{r:o,g:a,b:n,a:1}}function Dt(e){const[t,r,o,a]=e.replace(/[^0-9,.]/g,"").split(",").map(Number);return{r:t,g:r,b:o,a:a||1}}function ee(e){return Ht(e)?Wt(e):e.startsWith("rgb")?Dt(e):{r:0,g:0,b:0,a:1}}function T(e,t){if(typeof e!="string"||t>1||t<0)return"rgba(0, 0, 0, 1)";if(e.startsWith("var(--"))return e;const{r,g:o,b:a}=ee(e);return`rgba(${r}, ${o}, ${a}, ${t})`}function Bt(e=0){return{position:"absolute",top:E(e),right:E(e),left:E(e),bottom:E(e)}}function Gt(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=1-t,i=l=>Math.round(l*s);return`rgba(${i(r)}, ${i(o)}, ${i(a)}, ${n})`}function Ut(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=i=>Math.round(i+(255-i)*t);return`rgba(${s(r)}, ${s(o)}, ${s(a)}, ${n})`}function Vt(e){return t=>{if(typeof t=="number")return E(t);const r=typeof e.defaultRadius=="number"?e.defaultRadius:e.radius[e.defaultRadius]||e.defaultRadius;return e.radius[t]||t||r}}function Zt(e,t){if(typeof e=="string"&&e.includes(".")){const[r,o]=e.split("."),a=parseInt(o,10);if(r in t.colors&&a>=0&&a<10)return{isSplittedColor:!0,key:r,shade:a}}return{isSplittedColor:!1}}function qt(e){const t=Q(e),r=F(e),o=Re(e);return({variant:a,color:n,gradient:s,primaryFallback:i})=>{const l=Zt(n,e);switch(a){case"light":return{border:"transparent",background:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1),color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?7:1,i,!1),e.colorScheme==="dark"?.25:.65)};case"subtle":return{border:"transparent",background:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1)};case"outline":return{border:t(n,e.colorScheme==="dark"?5:r("light")),background:"transparent",color:t(n,e.colorScheme==="dark"?5:r("light")),hover:e.colorScheme==="dark"?T(t(n,5,i,!1),.05):T(t(n,0,i,!1),.35)};case"default":return{border:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4],background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,color:e.colorScheme==="dark"?e.white:e.black,hover:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[0]};case"white":return{border:"transparent",background:e.white,color:t(n,r()),hover:null};case"transparent":return{border:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),background:"transparent",hover:null};case"gradient":return{background:o(s),color:e.white,border:"transparent",hover:null};default:{const c=r(),u=l.isSplittedColor?l.shade:c,f=l.isSplittedColor?l.key:n;return{border:"transparent",background:t(f,u,i),color:e.white,hover:t(f,u===9?8:u+1)}}}}}function Xt(e){return t=>{const r=F(e)(t);return e.colors[e.primaryColor][r]}}function Kt(e){return{"@media (hover: hover)":{"&:hover":e},"@media (hover: none)":{"&:active":e}}}function Jt(e){return()=>({userSelect:"none",color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]})}function Yt(e){return()=>e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6]}const b={fontStyles:$t,themeColor:Q,focusStyles:zt,linearGradient:Rt,radialGradient:Mt,smallerThan:Ft,largerThan:Lt,rgba:T,cover:Bt,darken:Gt,lighten:Ut,radius:Vt,variant:qt,primaryShade:F,hover:Kt,gradient:Re,primaryColor:Xt,placeholderStyles:Jt,dimmed:Yt};var Qt=Object.defineProperty,er=Object.defineProperties,tr=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,rr=Object.prototype.hasOwnProperty,nr=Object.prototype.propertyIsEnumerable,me=(e,t,r)=>t in e?Qt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,or=(e,t)=>{for(var r in t||(t={}))rr.call(t,r)&&me(e,r,t[r]);if(pe)for(var r of pe(t))nr.call(t,r)&&me(e,r,t[r]);return e},ar=(e,t)=>er(e,tr(t));function Fe(e){return ar(or({},e),{fn:{fontStyles:b.fontStyles(e),themeColor:b.themeColor(e),focusStyles:b.focusStyles(e),largerThan:b.largerThan(e),smallerThan:b.smallerThan(e),radialGradient:b.radialGradient,linearGradient:b.linearGradient,gradient:b.gradient(e),rgba:b.rgba,cover:b.cover,lighten:b.lighten,darken:b.darken,primaryShade:b.primaryShade(e),radius:b.radius(e),variant:b.variant(e),hover:b.hover,primaryColor:b.primaryColor(e),placeholderStyles:b.placeholderStyles(e),dimmed:b.dimmed(e)}})}const sr={dir:"ltr",primaryShade:{light:6,dark:8},focusRing:"auto",loader:"oval",colorScheme:"light",white:"#fff",black:"#000",defaultRadius:"sm",transitionTimingFunction:"ease",colors:Nt,lineHeight:1.55,fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontFamilyMonospace:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",primaryColor:"blue",respectReducedMotion:!0,cursorType:"default",defaultGradient:{from:"indigo",to:"cyan",deg:45},shadows:{xs:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.1)",sm:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 0.625rem 0.9375rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.4375rem 0.4375rem -0.3125rem",md:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.25rem 1.5625rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.625rem 0.625rem -0.3125rem",lg:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.75rem 1.4375rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 0.75rem 0.75rem -0.4375rem",xl:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 2.25rem 1.75rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 1.0625rem 1.0625rem -0.4375rem"},fontSizes:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem"},radius:{xs:"0.125rem",sm:"0.25rem",md:"0.5rem",lg:"1rem",xl:"2rem"},spacing:{xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},breakpoints:{xs:"36em",sm:"48em",md:"62em",lg:"75em",xl:"88em"},headings:{fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontWeight:700,sizes:{h1:{fontSize:"2.125rem",lineHeight:1.3,fontWeight:void 0},h2:{fontSize:"1.625rem",lineHeight:1.35,fontWeight:void 0},h3:{fontSize:"1.375rem",lineHeight:1.4,fontWeight:void 0},h4:{fontSize:"1.125rem",lineHeight:1.45,fontWeight:void 0},h5:{fontSize:"1rem",lineHeight:1.5,fontWeight:void 0},h6:{fontSize:"0.875rem",lineHeight:1.5,fontWeight:void 0}}},other:{},components:{},activeStyles:{transform:"translateY(0.0625rem)"},datesLocale:"en",globalStyles:void 0,focusRingStyles:{styles:e=>({outlineOffset:"0.125rem",outline:`0.125rem solid ${e.colors[e.primaryColor][e.colorScheme==="dark"?7:5]}`}),resetStyles:()=>({outline:"none"}),inputStyles:e=>({outline:"none",borderColor:e.colors[e.primaryColor][typeof e.primaryShade=="object"?e.primaryShade[e.colorScheme]:e.primaryShade]})}},te=Fe(sr);var ir=Object.defineProperty,lr=Object.defineProperties,cr=Object.getOwnPropertyDescriptors,ge=Object.getOwnPropertySymbols,ur=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable,be=(e,t,r)=>t in e?ir(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fr=(e,t)=>{for(var r in t||(t={}))ur.call(t,r)&&be(e,r,t[r]);if(ge)for(var r of ge(t))dr.call(t,r)&&be(e,r,t[r]);return e},pr=(e,t)=>lr(e,cr(t));function mr({theme:e}){return A.createElement(B,{styles:{"*, *::before, *::after":{boxSizing:"border-box"},html:{colorScheme:e.colorScheme==="dark"?"dark":"light"},body:pr(fr({},e.fn.fontStyles()),{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.white,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,lineHeight:e.lineHeight,fontSize:e.fontSizes.md,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"})}})}function I(e,t,r,o=E){Object.keys(t).forEach(a=>{e[`--mantine-${r}-${a}`]=o(t[a])})}function gr({theme:e}){const t={"--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-transition-timing-function":e.transitionTimingFunction,"--mantine-line-height":`${e.lineHeight}`,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":`${e.headings.fontWeight}`};I(t,e.shadows,"shadow"),I(t,e.fontSizes,"font-size"),I(t,e.radius,"radius"),I(t,e.spacing,"spacing"),I(t,e.breakpoints,"breakpoints",U),Object.keys(e.colors).forEach(o=>{e.colors[o].forEach((a,n)=>{t[`--mantine-color-${o}-${n}`]=a})});const r=e.headings.sizes;return Object.keys(r).forEach(o=>{t[`--mantine-${o}-font-size`]=r[o].fontSize,t[`--mantine-${o}-line-height`]=`${r[o].lineHeight}`}),A.createElement(B,{styles:{":root":t}})}var br=Object.defineProperty,yr=Object.defineProperties,vr=Object.getOwnPropertyDescriptors,ye=Object.getOwnPropertySymbols,hr=Object.prototype.hasOwnProperty,Sr=Object.prototype.propertyIsEnumerable,ve=(e,t,r)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C=(e,t)=>{for(var r in t||(t={}))hr.call(t,r)&&ve(e,r,t[r]);if(ye)for(var r of ye(t))Sr.call(t,r)&&ve(e,r,t[r]);return e},V=(e,t)=>yr(e,vr(t));function xr(e,t){var r;if(!t)return e;const o=Object.keys(e).reduce((a,n)=>{if(n==="headings"&&t.headings){const s=t.headings.sizes?Object.keys(e.headings.sizes).reduce((i,l)=>(i[l]=C(C({},e.headings.sizes[l]),t.headings.sizes[l]),i),{}):e.headings.sizes;return V(C({},a),{headings:V(C(C({},e.headings),t.headings),{sizes:s})})}if(n==="breakpoints"&&t.breakpoints){const s=C(C({},e.breakpoints),t.breakpoints);return V(C({},a),{breakpoints:Object.fromEntries(Object.entries(s).sort((i,l)=>W(i[1])-W(l[1])))})}return a[n]=typeof t[n]=="object"?C(C({},e[n]),t[n]):typeof t[n]=="number"||typeof t[n]=="boolean"||typeof t[n]=="function"?t[n]:t[n]||e[n],a},{});if(t!=null&&t.fontFamily&&!((r=t==null?void 0:t.headings)!=null&&r.fontFamily)&&(o.headings.fontFamily=t.fontFamily),!(o.primaryColor in o.colors))throw new Error("MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color");return o}function Cr(e,t){return Fe(xr(e,t))}function _r(e){return Object.keys(e).reduce((t,r)=>(e[r]!==void 0&&(t[r]=e[r]),t),{})}const kr={html:{fontFamily:"sans-serif",lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:0},"article, aside, footer, header, nav, section, figcaption, figure, main":{display:"block"},h1:{fontSize:"2em"},hr:{boxSizing:"content-box",height:0,overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{background:"transparent",textDecorationSkip:"objects"},"a:active, a:hover":{outlineWidth:0},"abbr[title]":{borderBottom:"none",textDecoration:"underline"},"b, strong":{fontWeight:"bolder"},"code, kbp, samp":{fontFamily:"monospace, monospace",fontSize:"1em"},dfn:{fontStyle:"italic"},mark:{backgroundColor:"#ff0",color:"#000"},small:{fontSize:"80%"},"sub, sup":{fontSize:"75%",lineHeight:0,position:"relative",verticalAlign:"baseline"},sup:{top:"-0.5em"},sub:{bottom:"-0.25em"},"audio, video":{display:"inline-block"},"audio:not([controls])":{display:"none",height:0},img:{borderStyle:"none",verticalAlign:"middle"},"svg:not(:root)":{overflow:"hidden"},"button, input, optgroup, select, textarea":{fontFamily:"sans-serif",fontSize:"100%",lineHeight:"1.15",margin:0},"button, input":{overflow:"visible"},"button, select":{textTransform:"none"},"button, [type=reset], [type=submit]":{WebkitAppearance:"button"},"button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner":{borderStyle:"none",padding:0},"button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring":{outline:`${E(1)} dotted ButtonText`},legend:{boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:0,whiteSpace:"normal"},progress:{display:"inline-block",verticalAlign:"baseline"},textarea:{overflow:"auto"},"[type=checkbox], [type=radio]":{boxSizing:"border-box",padding:0},"[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button":{height:"auto"},"[type=search]":{appearance:"none"},"[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration":{appearance:"none"},"::-webkit-file-upload-button":{appearance:"button",font:"inherit"},"details, menu":{display:"block"},summary:{display:"list-item"},canvas:{display:"inline-block"},template:{display:"none"}};function wr(){return A.createElement(B,{styles:kr})}var Pr=Object.defineProperty,he=Object.getOwnPropertySymbols,Ar=Object.prototype.hasOwnProperty,jr=Object.prototype.propertyIsEnumerable,Se=(e,t,r)=>t in e?Pr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,O=(e,t)=>{for(var r in t||(t={}))Ar.call(t,r)&&Se(e,r,t[r]);if(he)for(var r of he(t))jr.call(t,r)&&Se(e,r,t[r]);return e};const D=p.createContext({theme:te});function He(){var e;return((e=p.useContext(D))==null?void 0:e.theme)||te}function dn(e){const t=He(),r=o=>{var a,n,s,i;return{styles:((a=t.components[o])==null?void 0:a.styles)||{},classNames:((n=t.components[o])==null?void 0:n.classNames)||{},variants:(s=t.components[o])==null?void 0:s.variants,sizes:(i=t.components[o])==null?void 0:i.sizes}};return Array.isArray(e)?e.map(r):[r(e)]}function fn(){var e;return(e=p.useContext(D))==null?void 0:e.emotionCache}function pn(e,t,r){var o;const a=He(),n=(o=a.components[e])==null?void 0:o.defaultProps,s=typeof n=="function"?n(a):n;return O(O(O({},t),s),_r(r))}function Er({theme:e,emotionCache:t,withNormalizeCSS:r=!1,withGlobalStyles:o=!1,withCSSVariables:a=!1,inherit:n=!1,children:s}){const i=p.useContext(D),l=Cr(te,n?O(O({},i.theme),e):e);return A.createElement(qe,{theme:l},A.createElement(D.Provider,{value:{theme:l,emotionCache:t}},r&&A.createElement(wr,null),o&&A.createElement(mr,{theme:l}),a&&A.createElement(gr,{theme:l}),typeof l.globalStyles=="function"&&A.createElement(B,{styles:l.globalStyles(l)}),s))}Er.displayName="@mantine/core/MantineProvider";const{definePartsStyle:Nr,defineMultiStyleConfig:$r}=Xe(at.keys),Tr=Nr(e=>({button:{fontWeight:500,bg:P("base.300","base.500")(e),color:P("base.900","base.100")(e),_hover:{bg:P("base.400","base.600")(e),color:P("base.900","base.50")(e),fontWeight:600}},list:{zIndex:9999,color:P("base.900","base.150")(e),bg:P("base.200","base.800")(e),shadow:"dark-lg",border:"none"},item:{fontSize:"sm",bg:P("base.200","base.800")(e),_hover:{bg:P("base.300","base.700")(e),svg:{opacity:1}},_focus:{bg:P("base.400","base.600")(e)},svg:{opacity:.7,fontSize:14}}})),mn=$r({variants:{invokeAI:Tr},defaultProps:{variant:"invokeAI"}}),gn={variants:{enter:{visibility:"visible",opacity:1,scale:1,transition:{duration:.07,ease:[.4,0,.2,1]}},exit:{transitionEnd:{visibility:"hidden"},opacity:0,scale:.8,transition:{duration:.07,easings:"easeOut"}}}};export{on as A,Yr as B,Te as C,Gr as D,at as E,Ur as F,Vr as G,Zr as H,L as I,Fr as J,Hr as K,Wr as L,Dr as M,Mr as N,nn as O,G as P,Or as Q,zr as R,Rr as S,Qe as T,sn as U,cn as V,mn as W,Er as X,M as a,ct as b,an as c,ne as d,un as e,fn as f,He as g,dn as h,_r as i,W as j,Le as k,pn as l,gn as m,P as n,tn as o,rn as p,Br as q,E as r,Qr as s,en as t,ln as u,qr as v,Lr as w,Xr as x,Kr as y,Jr as z}; +import{u as p,v as d,Y as Z,aC as xe,hu as We,Q as De,K as j,$ as q,I as z,L as R,V as Ce,U as Be,T as _e,R as Ge,O as Ue,hv as Ve,hw as Ze,a3 as A,hj as B,hr as qe,hl as Xe}from"./index-f6c3f475.js";function Ke(e,t){return`${e} returned \`undefined\`. Seems you forgot to wrap component within ${t}`}function M(e={}){const{name:t,strict:r=!0,hookName:o="useContext",providerName:a="Provider",errorMessage:n,defaultValue:s}=e,i=p.createContext(s);i.displayName=t;function l(){var c;const u=p.useContext(i);if(!u&&r){const f=new Error(n??Ke(o,a));throw f.name="ContextError",(c=Error.captureStackTrace)==null||c.call(Error,f,l),f}return u}return[i.Provider,l,i]}var[Je,Ye]=M({strict:!1,name:"PortalManagerContext"});function Qe(e){const{children:t,zIndex:r}=e;return d.jsx(Je,{value:{zIndex:r},children:t})}Qe.displayName="PortalManager";var[ke,et]=M({strict:!1,name:"PortalContext"}),K="chakra-portal",tt=".chakra-portal",rt=e=>d.jsx("div",{className:"chakra-portal-zIndex",style:{position:"absolute",zIndex:e.zIndex,top:0,left:0,right:0},children:e.children}),nt=e=>{const{appendToParentPortal:t,children:r}=e,[o,a]=p.useState(null),n=p.useRef(null),[,s]=p.useState({});p.useEffect(()=>s({}),[]);const i=et(),l=Ye();Z(()=>{if(!o)return;const u=o.ownerDocument,f=t?i??u.body:u.body;if(!f)return;n.current=u.createElement("div"),n.current.className=K,f.appendChild(n.current),s({});const y=n.current;return()=>{f.contains(y)&&f.removeChild(y)}},[o]);const c=l!=null&&l.zIndex?d.jsx(rt,{zIndex:l==null?void 0:l.zIndex,children:r}):r;return n.current?xe.createPortal(d.jsx(ke,{value:n.current,children:c}),n.current):d.jsx("span",{ref:u=>{u&&a(u)}})},ot=e=>{const{children:t,containerRef:r,appendToParentPortal:o}=e,a=r.current,n=a??(typeof window<"u"?document.body:void 0),s=p.useMemo(()=>{const l=a==null?void 0:a.ownerDocument.createElement("div");return l&&(l.className=K),l},[a]),[,i]=p.useState({});return Z(()=>i({}),[]),Z(()=>{if(!(!s||!n))return n.appendChild(s),()=>{n.removeChild(s)}},[s,n]),n&&s?xe.createPortal(d.jsx(ke,{value:o?s:null,children:t}),s):null};function G(e){const t={appendToParentPortal:!0,...e},{containerRef:r,...o}=t;return r?d.jsx(ot,{containerRef:r,...o}):d.jsx(nt,{...o})}G.className=K;G.selector=tt;G.displayName="Portal";function m(e,t={}){let r=!1;function o(){if(!r){r=!0;return}throw new Error("[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?")}function a(...u){o();for(const f of u)t[f]=l(f);return m(e,t)}function n(...u){for(const f of u)f in t||(t[f]=l(f));return m(e,t)}function s(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.selector]))}function i(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.className]))}function l(u){const g=`chakra-${(["container","root"].includes(u??"")?[e]:[e,u]).filter(Boolean).join("__")}`;return{className:g,selector:`.${g}`,toString:()=>u}}return{parts:a,toPart:l,extend:n,selectors:s,classnames:i,get keys(){return Object.keys(t)},__type:{}}}var Or=m("accordion").parts("root","container","button","panel").extend("icon"),zr=m("alert").parts("title","description","container").extend("icon","spinner"),Rr=m("avatar").parts("label","badge","container").extend("excessLabel","group"),Mr=m("breadcrumb").parts("link","item","container").extend("separator");m("button").parts();var Lr=m("checkbox").parts("control","icon","container").extend("label");m("progress").parts("track","filledTrack").extend("label");var Fr=m("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Hr=m("editable").parts("preview","input","textarea"),Wr=m("form").parts("container","requiredIndicator","helperText"),Dr=m("formError").parts("text","icon"),Br=m("input").parts("addon","field","element","group"),Gr=m("list").parts("container","item","icon"),at=m("menu").parts("button","list","item").extend("groupTitle","icon","command","divider"),Ur=m("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Vr=m("numberinput").parts("root","field","stepperGroup","stepper");m("pininput").parts("field");var Zr=m("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),qr=m("progress").parts("label","filledTrack","track"),Xr=m("radio").parts("container","control","label"),Kr=m("select").parts("field","icon"),Jr=m("slider").parts("container","track","thumb","filledTrack","mark"),Yr=m("stat").parts("container","label","helpText","number","icon"),Qr=m("switch").parts("container","track","thumb"),en=m("table").parts("table","thead","tbody","tr","th","td","tfoot","caption"),tn=m("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator"),rn=m("tag").parts("container","label","closeButton"),nn=m("card").parts("container","header","body","footer");function P(e,t){return r=>r.colorMode==="dark"?t:e}function on(e){const{orientation:t,vertical:r,horizontal:o}=e;return t?t==="vertical"?r:o:{}}var st=(e,t)=>e.find(r=>r.id===t);function re(e,t){const r=we(e,t),o=r?e[r].findIndex(a=>a.id===t):-1;return{position:r,index:o}}function we(e,t){for(const[r,o]of Object.entries(e))if(st(o,t))return r}function it(e){const t=e.includes("right"),r=e.includes("left");let o="center";return t&&(o="flex-end"),r&&(o="flex-start"),{display:"flex",flexDirection:"column",alignItems:o}}function lt(e){const r=e==="top"||e==="bottom"?"0 auto":void 0,o=e.includes("top")?"env(safe-area-inset-top, 0px)":void 0,a=e.includes("bottom")?"env(safe-area-inset-bottom, 0px)":void 0,n=e.includes("left")?void 0:"env(safe-area-inset-right, 0px)",s=e.includes("right")?void 0:"env(safe-area-inset-left, 0px)";return{position:"fixed",zIndex:"var(--toast-z-index, 5500)",pointerEvents:"none",display:"flex",flexDirection:"column",margin:r,top:o,bottom:a,right:n,left:s}}function ct(e,t=[]){const r=p.useRef(e);return p.useEffect(()=>{r.current=e}),p.useCallback((...o)=>{var a;return(a=r.current)==null?void 0:a.call(r,...o)},t)}function ut(e,t){const r=ct(e);p.useEffect(()=>{if(t==null)return;let o=null;return o=window.setTimeout(()=>{r()},t),()=>{o&&window.clearTimeout(o)}},[t,r])}function ne(e,t){const r=p.useRef(!1),o=p.useRef(!1);p.useEffect(()=>{if(r.current&&o.current)return e();o.current=!0},t),p.useEffect(()=>(r.current=!0,()=>{r.current=!1}),[])}var dt={initial:e=>{const{position:t}=e,r=["top","bottom"].includes(t)?"y":"x";let o=["top-right","bottom-right"].includes(t)?1:-1;return t==="bottom"&&(o=1),{opacity:0,[r]:o*24}},animate:{opacity:1,y:0,x:0,scale:1,transition:{duration:.4,ease:[.4,0,.2,1]}},exit:{opacity:0,scale:.85,transition:{duration:.2,ease:[.4,0,1,1]}}},Pe=p.memo(e=>{const{id:t,message:r,onCloseComplete:o,onRequestRemove:a,requestClose:n=!1,position:s="bottom",duration:i=5e3,containerStyle:l,motionVariants:c=dt,toastSpacing:u="0.5rem"}=e,[f,y]=p.useState(i),g=We();ne(()=>{g||o==null||o()},[g]),ne(()=>{y(i)},[i]);const h=()=>y(null),$=()=>y(i),S=()=>{g&&a()};p.useEffect(()=>{g&&n&&a()},[g,n,a]),ut(S,f);const H=p.useMemo(()=>({pointerEvents:"auto",maxWidth:560,minWidth:300,margin:u,...l}),[l,u]),N=p.useMemo(()=>it(s),[s]);return d.jsx(De.div,{layout:!0,className:"chakra-toast",variants:c,initial:"initial",animate:"animate",exit:"exit",onHoverStart:h,onHoverEnd:$,custom:{position:s},style:N,children:d.jsx(j.div,{role:"status","aria-atomic":"true",className:"chakra-toast__inner",__css:H,children:q(r,{id:t,onClose:S})})})});Pe.displayName="ToastComponent";function ft(e,t){var r;const o=e??"bottom",n={"top-start":{ltr:"top-left",rtl:"top-right"},"top-end":{ltr:"top-right",rtl:"top-left"},"bottom-start":{ltr:"bottom-left",rtl:"bottom-right"},"bottom-end":{ltr:"bottom-right",rtl:"bottom-left"}}[o];return(r=n==null?void 0:n[t])!=null?r:o}var oe={path:d.jsxs("g",{stroke:"currentColor",strokeWidth:"1.5",children:[d.jsx("path",{strokeLinecap:"round",fill:"none",d:"M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"}),d.jsx("path",{fill:"currentColor",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),d.jsx("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},L=z((e,t)=>{const{as:r,viewBox:o,color:a="currentColor",focusable:n=!1,children:s,className:i,__css:l,...c}=e,u=R("chakra-icon",i),f=Ce("Icon",e),y={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:a,...l,...f},g={ref:t,focusable:n,className:u,__css:y},h=o??oe.viewBox;if(r&&typeof r!="string")return d.jsx(j.svg,{as:r,...g,...c});const $=s??oe.path;return d.jsx(j.svg,{verticalAlign:"middle",viewBox:h,...g,...c,children:$})});L.displayName="Icon";function pt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z"})})}function mt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm.25,5a1.5,1.5,0,1,1-1.5,1.5A1.5,1.5,0,0,1,12.25,5ZM14.5,18.5h-4a1,1,0,0,1,0-2h.75a.25.25,0,0,0,.25-.25v-4.5a.25.25,0,0,0-.25-.25H10.5a1,1,0,0,1,0-2h1a2,2,0,0,1,2,2v4.75a.25.25,0,0,0,.25.25h.75a1,1,0,1,1,0,2Z"})})}function ae(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("path",{fill:"currentColor",d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"})})}var[gt,J]=M({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[bt,Y]=M({name:"AlertStylesContext",hookName:"useAlertStyles",providerName:""}),Ae={info:{icon:mt,colorScheme:"blue"},warning:{icon:ae,colorScheme:"orange"},success:{icon:pt,colorScheme:"green"},error:{icon:ae,colorScheme:"red"},loading:{icon:Be,colorScheme:"blue"}};function yt(e){return Ae[e].colorScheme}function vt(e){return Ae[e].icon}var je=z(function(t,r){const o=Y(),{status:a}=J(),n={display:"inline",...o.description};return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__desc",t.className),__css:n})});je.displayName="AlertDescription";function Ee(e){const{status:t}=J(),r=vt(t),o=Y(),a=t==="loading"?o.spinner:o.icon;return d.jsx(j.span,{display:"inherit","data-status":t,...e,className:R("chakra-alert__icon",e.className),__css:a,children:e.children||d.jsx(r,{h:"100%",w:"100%"})})}Ee.displayName="AlertIcon";var Ne=z(function(t,r){const o=Y(),{status:a}=J();return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__title",t.className),__css:o.title})});Ne.displayName="AlertTitle";var $e=z(function(t,r){var o;const{status:a="info",addRole:n=!0,...s}=_e(t),i=(o=t.colorScheme)!=null?o:yt(a),l=Ge("Alert",{...t,colorScheme:i}),c={width:"100%",display:"flex",alignItems:"center",position:"relative",overflow:"hidden",...l.container};return d.jsx(gt,{value:{status:a},children:d.jsx(bt,{value:l,children:d.jsx(j.div,{"data-status":a,role:n?"alert":void 0,ref:r,...s,className:R("chakra-alert",t.className),__css:c})})})});$e.displayName="Alert";function ht(e){return d.jsx(L,{focusable:"false","aria-hidden":!0,...e,children:d.jsx("path",{fill:"currentColor",d:"M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"})})}var Te=z(function(t,r){const o=Ce("CloseButton",t),{children:a,isDisabled:n,__css:s,...i}=_e(t),l={outline:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0};return d.jsx(j.button,{type:"button","aria-label":"Close",ref:r,disabled:n,__css:{...l,...o,...s},...i,children:a||d.jsx(ht,{width:"1em",height:"1em"})})});Te.displayName="CloseButton";var St={top:[],"top-left":[],"top-right":[],"bottom-left":[],bottom:[],"bottom-right":[]},_=xt(St);function xt(e){let t=e;const r=new Set,o=a=>{t=a(t),r.forEach(n=>n())};return{getState:()=>t,subscribe:a=>(r.add(a),()=>{o(()=>e),r.delete(a)}),removeToast:(a,n)=>{o(s=>({...s,[n]:s[n].filter(i=>i.id!=a)}))},notify:(a,n)=>{const s=Ct(a,n),{position:i,id:l}=s;return o(c=>{var u,f;const g=i.includes("top")?[s,...(u=c[i])!=null?u:[]]:[...(f=c[i])!=null?f:[],s];return{...c,[i]:g}}),l},update:(a,n)=>{a&&o(s=>{const i={...s},{position:l,index:c}=re(i,a);return l&&c!==-1&&(i[l][c]={...i[l][c],...n,message:Ie(n)}),i})},closeAll:({positions:a}={})=>{o(n=>(a??["bottom","bottom-right","bottom-left","top","top-left","top-right"]).reduce((l,c)=>(l[c]=n[c].map(u=>({...u,requestClose:!0})),l),{...n}))},close:a=>{o(n=>{const s=we(n,a);return s?{...n,[s]:n[s].map(i=>i.id==a?{...i,requestClose:!0}:i)}:n})},isActive:a=>!!re(_.getState(),a).position}}var se=0;function Ct(e,t={}){var r,o;se+=1;const a=(r=t.id)!=null?r:se,n=(o=t.position)!=null?o:"bottom";return{id:a,message:e,position:n,duration:t.duration,onCloseComplete:t.onCloseComplete,onRequestRemove:()=>_.removeToast(String(a),n),status:t.status,requestClose:!1,containerStyle:t.containerStyle}}var _t=e=>{const{status:t,variant:r="solid",id:o,title:a,isClosable:n,onClose:s,description:i,colorScheme:l,icon:c}=e,u=o?{root:`toast-${o}`,title:`toast-${o}-title`,description:`toast-${o}-description`}:void 0;return d.jsxs($e,{addRole:!1,status:t,variant:r,id:u==null?void 0:u.root,alignItems:"start",borderRadius:"md",boxShadow:"lg",paddingEnd:8,textAlign:"start",width:"auto",colorScheme:l,children:[d.jsx(Ee,{children:c}),d.jsxs(j.div,{flex:"1",maxWidth:"100%",children:[a&&d.jsx(Ne,{id:u==null?void 0:u.title,children:a}),i&&d.jsx(je,{id:u==null?void 0:u.description,display:"block",children:i})]}),n&&d.jsx(Te,{size:"sm",onClick:s,position:"absolute",insetEnd:1,top:1})]})};function Ie(e={}){const{render:t,toastComponent:r=_t}=e;return a=>typeof t=="function"?t({...a,...e}):d.jsx(r,{...a,...e})}function an(e,t){const r=a=>{var n;return{...t,...a,position:ft((n=a==null?void 0:a.position)!=null?n:t==null?void 0:t.position,e)}},o=a=>{const n=r(a),s=Ie(n);return _.notify(s,n)};return o.update=(a,n)=>{_.update(a,r(n))},o.promise=(a,n)=>{const s=o({...n.loading,status:"loading",duration:null});a.then(i=>o.update(s,{status:"success",duration:5e3,...q(n.success,i)})).catch(i=>o.update(s,{status:"error",duration:5e3,...q(n.error,i)}))},o.closeAll=_.closeAll,o.close=_.close,o.isActive=_.isActive,o}var[sn,ln]=M({name:"ToastOptionsContext",strict:!1}),cn=e=>{const t=p.useSyncExternalStore(_.subscribe,_.getState,_.getState),{motionVariants:r,component:o=Pe,portalProps:a}=e,s=Object.keys(t).map(i=>{const l=t[i];return d.jsx("div",{role:"region","aria-live":"polite","aria-label":"Notifications",id:`chakra-toast-manager-${i}`,style:lt(i),children:d.jsx(Ue,{initial:!1,children:l.map(c=>d.jsx(o,{motionVariants:r,...c},c.id))})},i)});return d.jsx(G,{...a,children:s})};function kt(){if(console&&console.warn){for(var e=arguments.length,t=new Array(e),r=0;r()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}};function le(e,t,r){e.loadNamespaces(t,Oe(e,r))}function ce(e,t,r,o){typeof r=="string"&&(r=[r]),r.forEach(a=>{e.options.ns.indexOf(a)<0&&e.options.ns.push(a)}),e.loadLanguages(t,Oe(e,o))}function wt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const o=t.languages[0],a=t.options?t.options.fallbackLng:!1,n=t.languages[t.languages.length-1];if(o.toLowerCase()==="cimode")return!0;const s=(i,l)=>{const c=t.services.backendConnector.state[`${i}|${l}`];return c===-1||c===2};return r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!s(t.isLanguageChangingTo,e)?!1:!!(t.hasResourceBundle(o,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||s(o,e)&&(!a||s(n,e)))}function Pt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return!t.languages||!t.languages.length?(X("i18n.languages were undefined or empty",t.languages),!0):t.options.ignoreJSONStructure!==void 0?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(a,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!n(a.isLanguageChangingTo,e))return!1}}):wt(e,t,r)}const At=p.createContext();class jt{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Et=(e,t)=>{const r=p.useRef();return p.useEffect(()=>{r.current=t?r.current:e},[e,t]),r.current};function un(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{i18n:r}=t,{i18n:o,defaultNS:a}=p.useContext(At)||{},n=r||o||Ze();if(n&&!n.reportNamespaces&&(n.reportNamespaces=new jt),!n){X("You will need to pass in an i18next instance by using initReactI18next");const v=(w,x)=>typeof x=="string"?x:x&&typeof x=="object"&&typeof x.defaultValue=="string"?x.defaultValue:Array.isArray(w)?w[w.length-1]:w,k=[v,{},!1];return k.t=v,k.i18n={},k.ready=!1,k}n.options.react&&n.options.react.wait!==void 0&&X("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const s={...Ve(),...n.options.react,...t},{useSuspense:i,keyPrefix:l}=s;let c=e||a||n.options&&n.options.defaultNS;c=typeof c=="string"?[c]:c||["translation"],n.reportNamespaces.addUsedNamespaces&&n.reportNamespaces.addUsedNamespaces(c);const u=(n.isInitialized||n.initializedStoreOnce)&&c.every(v=>Pt(v,n,s));function f(){return n.getFixedT(t.lng||null,s.nsMode==="fallback"?c:c[0],l)}const[y,g]=p.useState(f);let h=c.join();t.lng&&(h=`${t.lng}${h}`);const $=Et(h),S=p.useRef(!0);p.useEffect(()=>{const{bindI18n:v,bindI18nStore:k}=s;S.current=!0,!u&&!i&&(t.lng?ce(n,t.lng,c,()=>{S.current&&g(f)}):le(n,c,()=>{S.current&&g(f)})),u&&$&&$!==h&&S.current&&g(f);function w(){S.current&&g(f)}return v&&n&&n.on(v,w),k&&n&&n.store.on(k,w),()=>{S.current=!1,v&&n&&v.split(" ").forEach(x=>n.off(x,w)),k&&n&&k.split(" ").forEach(x=>n.store.off(x,w))}},[n,h]);const H=p.useRef(!0);p.useEffect(()=>{S.current&&!H.current&&g(f),H.current=!1},[n,l]);const N=[y,n,u];if(N.t=y,N.i18n=n,N.ready=u,u||!u&&!i)return N;throw new Promise(v=>{t.lng?ce(n,t.lng,c,()=>v()):le(n,c,()=>v())})}const Nt={dark:["#C1C2C5","#A6A7AB","#909296","#5c5f66","#373A40","#2C2E33","#25262b","#1A1B1E","#141517","#101113"],gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]};function $t(e){return()=>({fontFamily:e.fontFamily||"sans-serif"})}var Tt=Object.defineProperty,ue=Object.getOwnPropertySymbols,It=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,de=(e,t,r)=>t in e?Tt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fe=(e,t)=>{for(var r in t||(t={}))It.call(t,r)&&de(e,r,t[r]);if(ue)for(var r of ue(t))Ot.call(t,r)&&de(e,r,t[r]);return e};function zt(e){return t=>({WebkitTapHighlightColor:"transparent",[t||"&:focus"]:fe({},e.focusRing==="always"||e.focusRing==="auto"?e.focusRingStyles.styles(e):e.focusRingStyles.resetStyles(e)),[t?t.replace(":focus",":focus:not(:focus-visible)"):"&:focus:not(:focus-visible)"]:fe({},e.focusRing==="auto"||e.focusRing==="never"?e.focusRingStyles.resetStyles(e):null)})}function F(e){return t=>typeof e.primaryShade=="number"?e.primaryShade:e.primaryShade[t||e.colorScheme]}function Q(e){const t=F(e);return(r,o,a=!0,n=!0)=>{if(typeof r=="string"&&r.includes(".")){const[i,l]=r.split("."),c=parseInt(l,10);if(i in e.colors&&c>=0&&c<10)return e.colors[i][typeof o=="number"&&!n?o:c]}const s=typeof o=="number"?o:t();return r in e.colors?e.colors[r][s]:a?e.colors[e.primaryColor][s]:r}}function ze(e){let t="";for(let r=1;r{const a={from:(o==null?void 0:o.from)||e.defaultGradient.from,to:(o==null?void 0:o.to)||e.defaultGradient.to,deg:(o==null?void 0:o.deg)||e.defaultGradient.deg};return`linear-gradient(${a.deg}deg, ${t(a.from,r(),!1)} 0%, ${t(a.to,r(),!1)} 100%)`}}function Me(e){return t=>{if(typeof t=="number")return`${t/16}${e}`;if(typeof t=="string"){const r=t.replace("px","");if(!Number.isNaN(Number(r)))return`${Number(r)/16}${e}`}return t}}const E=Me("rem"),U=Me("em");function Le({size:e,sizes:t,units:r}){return e in t?t[e]:typeof e=="number"?r==="em"?U(e):E(e):e||t.md}function W(e){return typeof e=="number"?e:typeof e=="string"&&e.includes("rem")?Number(e.replace("rem",""))*16:typeof e=="string"&&e.includes("em")?Number(e.replace("em",""))*16:Number(e)}function Lt(e){return t=>`@media (min-width: ${U(W(Le({size:t,sizes:e.breakpoints})))})`}function Ft(e){return t=>`@media (max-width: ${U(W(Le({size:t,sizes:e.breakpoints}))-1)})`}function Ht(e){return/^#?([0-9A-F]{3}){1,2}$/i.test(e)}function Wt(e){let t=e.replace("#","");if(t.length===3){const s=t.split("");t=[s[0],s[0],s[1],s[1],s[2],s[2]].join("")}const r=parseInt(t,16),o=r>>16&255,a=r>>8&255,n=r&255;return{r:o,g:a,b:n,a:1}}function Dt(e){const[t,r,o,a]=e.replace(/[^0-9,.]/g,"").split(",").map(Number);return{r:t,g:r,b:o,a:a||1}}function ee(e){return Ht(e)?Wt(e):e.startsWith("rgb")?Dt(e):{r:0,g:0,b:0,a:1}}function T(e,t){if(typeof e!="string"||t>1||t<0)return"rgba(0, 0, 0, 1)";if(e.startsWith("var(--"))return e;const{r,g:o,b:a}=ee(e);return`rgba(${r}, ${o}, ${a}, ${t})`}function Bt(e=0){return{position:"absolute",top:E(e),right:E(e),left:E(e),bottom:E(e)}}function Gt(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=1-t,i=l=>Math.round(l*s);return`rgba(${i(r)}, ${i(o)}, ${i(a)}, ${n})`}function Ut(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=i=>Math.round(i+(255-i)*t);return`rgba(${s(r)}, ${s(o)}, ${s(a)}, ${n})`}function Vt(e){return t=>{if(typeof t=="number")return E(t);const r=typeof e.defaultRadius=="number"?e.defaultRadius:e.radius[e.defaultRadius]||e.defaultRadius;return e.radius[t]||t||r}}function Zt(e,t){if(typeof e=="string"&&e.includes(".")){const[r,o]=e.split("."),a=parseInt(o,10);if(r in t.colors&&a>=0&&a<10)return{isSplittedColor:!0,key:r,shade:a}}return{isSplittedColor:!1}}function qt(e){const t=Q(e),r=F(e),o=Re(e);return({variant:a,color:n,gradient:s,primaryFallback:i})=>{const l=Zt(n,e);switch(a){case"light":return{border:"transparent",background:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1),color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?7:1,i,!1),e.colorScheme==="dark"?.25:.65)};case"subtle":return{border:"transparent",background:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1)};case"outline":return{border:t(n,e.colorScheme==="dark"?5:r("light")),background:"transparent",color:t(n,e.colorScheme==="dark"?5:r("light")),hover:e.colorScheme==="dark"?T(t(n,5,i,!1),.05):T(t(n,0,i,!1),.35)};case"default":return{border:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4],background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,color:e.colorScheme==="dark"?e.white:e.black,hover:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[0]};case"white":return{border:"transparent",background:e.white,color:t(n,r()),hover:null};case"transparent":return{border:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),background:"transparent",hover:null};case"gradient":return{background:o(s),color:e.white,border:"transparent",hover:null};default:{const c=r(),u=l.isSplittedColor?l.shade:c,f=l.isSplittedColor?l.key:n;return{border:"transparent",background:t(f,u,i),color:e.white,hover:t(f,u===9?8:u+1)}}}}}function Xt(e){return t=>{const r=F(e)(t);return e.colors[e.primaryColor][r]}}function Kt(e){return{"@media (hover: hover)":{"&:hover":e},"@media (hover: none)":{"&:active":e}}}function Jt(e){return()=>({userSelect:"none",color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]})}function Yt(e){return()=>e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6]}const b={fontStyles:$t,themeColor:Q,focusStyles:zt,linearGradient:Rt,radialGradient:Mt,smallerThan:Ft,largerThan:Lt,rgba:T,cover:Bt,darken:Gt,lighten:Ut,radius:Vt,variant:qt,primaryShade:F,hover:Kt,gradient:Re,primaryColor:Xt,placeholderStyles:Jt,dimmed:Yt};var Qt=Object.defineProperty,er=Object.defineProperties,tr=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,rr=Object.prototype.hasOwnProperty,nr=Object.prototype.propertyIsEnumerable,me=(e,t,r)=>t in e?Qt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,or=(e,t)=>{for(var r in t||(t={}))rr.call(t,r)&&me(e,r,t[r]);if(pe)for(var r of pe(t))nr.call(t,r)&&me(e,r,t[r]);return e},ar=(e,t)=>er(e,tr(t));function Fe(e){return ar(or({},e),{fn:{fontStyles:b.fontStyles(e),themeColor:b.themeColor(e),focusStyles:b.focusStyles(e),largerThan:b.largerThan(e),smallerThan:b.smallerThan(e),radialGradient:b.radialGradient,linearGradient:b.linearGradient,gradient:b.gradient(e),rgba:b.rgba,cover:b.cover,lighten:b.lighten,darken:b.darken,primaryShade:b.primaryShade(e),radius:b.radius(e),variant:b.variant(e),hover:b.hover,primaryColor:b.primaryColor(e),placeholderStyles:b.placeholderStyles(e),dimmed:b.dimmed(e)}})}const sr={dir:"ltr",primaryShade:{light:6,dark:8},focusRing:"auto",loader:"oval",colorScheme:"light",white:"#fff",black:"#000",defaultRadius:"sm",transitionTimingFunction:"ease",colors:Nt,lineHeight:1.55,fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontFamilyMonospace:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",primaryColor:"blue",respectReducedMotion:!0,cursorType:"default",defaultGradient:{from:"indigo",to:"cyan",deg:45},shadows:{xs:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.1)",sm:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 0.625rem 0.9375rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.4375rem 0.4375rem -0.3125rem",md:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.25rem 1.5625rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.625rem 0.625rem -0.3125rem",lg:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.75rem 1.4375rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 0.75rem 0.75rem -0.4375rem",xl:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 2.25rem 1.75rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 1.0625rem 1.0625rem -0.4375rem"},fontSizes:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem"},radius:{xs:"0.125rem",sm:"0.25rem",md:"0.5rem",lg:"1rem",xl:"2rem"},spacing:{xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},breakpoints:{xs:"36em",sm:"48em",md:"62em",lg:"75em",xl:"88em"},headings:{fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontWeight:700,sizes:{h1:{fontSize:"2.125rem",lineHeight:1.3,fontWeight:void 0},h2:{fontSize:"1.625rem",lineHeight:1.35,fontWeight:void 0},h3:{fontSize:"1.375rem",lineHeight:1.4,fontWeight:void 0},h4:{fontSize:"1.125rem",lineHeight:1.45,fontWeight:void 0},h5:{fontSize:"1rem",lineHeight:1.5,fontWeight:void 0},h6:{fontSize:"0.875rem",lineHeight:1.5,fontWeight:void 0}}},other:{},components:{},activeStyles:{transform:"translateY(0.0625rem)"},datesLocale:"en",globalStyles:void 0,focusRingStyles:{styles:e=>({outlineOffset:"0.125rem",outline:`0.125rem solid ${e.colors[e.primaryColor][e.colorScheme==="dark"?7:5]}`}),resetStyles:()=>({outline:"none"}),inputStyles:e=>({outline:"none",borderColor:e.colors[e.primaryColor][typeof e.primaryShade=="object"?e.primaryShade[e.colorScheme]:e.primaryShade]})}},te=Fe(sr);var ir=Object.defineProperty,lr=Object.defineProperties,cr=Object.getOwnPropertyDescriptors,ge=Object.getOwnPropertySymbols,ur=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable,be=(e,t,r)=>t in e?ir(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fr=(e,t)=>{for(var r in t||(t={}))ur.call(t,r)&&be(e,r,t[r]);if(ge)for(var r of ge(t))dr.call(t,r)&&be(e,r,t[r]);return e},pr=(e,t)=>lr(e,cr(t));function mr({theme:e}){return A.createElement(B,{styles:{"*, *::before, *::after":{boxSizing:"border-box"},html:{colorScheme:e.colorScheme==="dark"?"dark":"light"},body:pr(fr({},e.fn.fontStyles()),{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.white,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,lineHeight:e.lineHeight,fontSize:e.fontSizes.md,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"})}})}function I(e,t,r,o=E){Object.keys(t).forEach(a=>{e[`--mantine-${r}-${a}`]=o(t[a])})}function gr({theme:e}){const t={"--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-transition-timing-function":e.transitionTimingFunction,"--mantine-line-height":`${e.lineHeight}`,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":`${e.headings.fontWeight}`};I(t,e.shadows,"shadow"),I(t,e.fontSizes,"font-size"),I(t,e.radius,"radius"),I(t,e.spacing,"spacing"),I(t,e.breakpoints,"breakpoints",U),Object.keys(e.colors).forEach(o=>{e.colors[o].forEach((a,n)=>{t[`--mantine-color-${o}-${n}`]=a})});const r=e.headings.sizes;return Object.keys(r).forEach(o=>{t[`--mantine-${o}-font-size`]=r[o].fontSize,t[`--mantine-${o}-line-height`]=`${r[o].lineHeight}`}),A.createElement(B,{styles:{":root":t}})}var br=Object.defineProperty,yr=Object.defineProperties,vr=Object.getOwnPropertyDescriptors,ye=Object.getOwnPropertySymbols,hr=Object.prototype.hasOwnProperty,Sr=Object.prototype.propertyIsEnumerable,ve=(e,t,r)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C=(e,t)=>{for(var r in t||(t={}))hr.call(t,r)&&ve(e,r,t[r]);if(ye)for(var r of ye(t))Sr.call(t,r)&&ve(e,r,t[r]);return e},V=(e,t)=>yr(e,vr(t));function xr(e,t){var r;if(!t)return e;const o=Object.keys(e).reduce((a,n)=>{if(n==="headings"&&t.headings){const s=t.headings.sizes?Object.keys(e.headings.sizes).reduce((i,l)=>(i[l]=C(C({},e.headings.sizes[l]),t.headings.sizes[l]),i),{}):e.headings.sizes;return V(C({},a),{headings:V(C(C({},e.headings),t.headings),{sizes:s})})}if(n==="breakpoints"&&t.breakpoints){const s=C(C({},e.breakpoints),t.breakpoints);return V(C({},a),{breakpoints:Object.fromEntries(Object.entries(s).sort((i,l)=>W(i[1])-W(l[1])))})}return a[n]=typeof t[n]=="object"?C(C({},e[n]),t[n]):typeof t[n]=="number"||typeof t[n]=="boolean"||typeof t[n]=="function"?t[n]:t[n]||e[n],a},{});if(t!=null&&t.fontFamily&&!((r=t==null?void 0:t.headings)!=null&&r.fontFamily)&&(o.headings.fontFamily=t.fontFamily),!(o.primaryColor in o.colors))throw new Error("MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color");return o}function Cr(e,t){return Fe(xr(e,t))}function _r(e){return Object.keys(e).reduce((t,r)=>(e[r]!==void 0&&(t[r]=e[r]),t),{})}const kr={html:{fontFamily:"sans-serif",lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:0},"article, aside, footer, header, nav, section, figcaption, figure, main":{display:"block"},h1:{fontSize:"2em"},hr:{boxSizing:"content-box",height:0,overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{background:"transparent",textDecorationSkip:"objects"},"a:active, a:hover":{outlineWidth:0},"abbr[title]":{borderBottom:"none",textDecoration:"underline"},"b, strong":{fontWeight:"bolder"},"code, kbp, samp":{fontFamily:"monospace, monospace",fontSize:"1em"},dfn:{fontStyle:"italic"},mark:{backgroundColor:"#ff0",color:"#000"},small:{fontSize:"80%"},"sub, sup":{fontSize:"75%",lineHeight:0,position:"relative",verticalAlign:"baseline"},sup:{top:"-0.5em"},sub:{bottom:"-0.25em"},"audio, video":{display:"inline-block"},"audio:not([controls])":{display:"none",height:0},img:{borderStyle:"none",verticalAlign:"middle"},"svg:not(:root)":{overflow:"hidden"},"button, input, optgroup, select, textarea":{fontFamily:"sans-serif",fontSize:"100%",lineHeight:"1.15",margin:0},"button, input":{overflow:"visible"},"button, select":{textTransform:"none"},"button, [type=reset], [type=submit]":{WebkitAppearance:"button"},"button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner":{borderStyle:"none",padding:0},"button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring":{outline:`${E(1)} dotted ButtonText`},legend:{boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:0,whiteSpace:"normal"},progress:{display:"inline-block",verticalAlign:"baseline"},textarea:{overflow:"auto"},"[type=checkbox], [type=radio]":{boxSizing:"border-box",padding:0},"[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button":{height:"auto"},"[type=search]":{appearance:"none"},"[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration":{appearance:"none"},"::-webkit-file-upload-button":{appearance:"button",font:"inherit"},"details, menu":{display:"block"},summary:{display:"list-item"},canvas:{display:"inline-block"},template:{display:"none"}};function wr(){return A.createElement(B,{styles:kr})}var Pr=Object.defineProperty,he=Object.getOwnPropertySymbols,Ar=Object.prototype.hasOwnProperty,jr=Object.prototype.propertyIsEnumerable,Se=(e,t,r)=>t in e?Pr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,O=(e,t)=>{for(var r in t||(t={}))Ar.call(t,r)&&Se(e,r,t[r]);if(he)for(var r of he(t))jr.call(t,r)&&Se(e,r,t[r]);return e};const D=p.createContext({theme:te});function He(){var e;return((e=p.useContext(D))==null?void 0:e.theme)||te}function dn(e){const t=He(),r=o=>{var a,n,s,i;return{styles:((a=t.components[o])==null?void 0:a.styles)||{},classNames:((n=t.components[o])==null?void 0:n.classNames)||{},variants:(s=t.components[o])==null?void 0:s.variants,sizes:(i=t.components[o])==null?void 0:i.sizes}};return Array.isArray(e)?e.map(r):[r(e)]}function fn(){var e;return(e=p.useContext(D))==null?void 0:e.emotionCache}function pn(e,t,r){var o;const a=He(),n=(o=a.components[e])==null?void 0:o.defaultProps,s=typeof n=="function"?n(a):n;return O(O(O({},t),s),_r(r))}function Er({theme:e,emotionCache:t,withNormalizeCSS:r=!1,withGlobalStyles:o=!1,withCSSVariables:a=!1,inherit:n=!1,children:s}){const i=p.useContext(D),l=Cr(te,n?O(O({},i.theme),e):e);return A.createElement(qe,{theme:l},A.createElement(D.Provider,{value:{theme:l,emotionCache:t}},r&&A.createElement(wr,null),o&&A.createElement(mr,{theme:l}),a&&A.createElement(gr,{theme:l}),typeof l.globalStyles=="function"&&A.createElement(B,{styles:l.globalStyles(l)}),s))}Er.displayName="@mantine/core/MantineProvider";const{definePartsStyle:Nr,defineMultiStyleConfig:$r}=Xe(at.keys),Tr=Nr(e=>({button:{fontWeight:500,bg:P("base.300","base.500")(e),color:P("base.900","base.100")(e),_hover:{bg:P("base.400","base.600")(e),color:P("base.900","base.50")(e),fontWeight:600}},list:{zIndex:9999,color:P("base.900","base.150")(e),bg:P("base.200","base.800")(e),shadow:"dark-lg",border:"none"},item:{fontSize:"sm",bg:P("base.200","base.800")(e),_hover:{bg:P("base.300","base.700")(e),svg:{opacity:1}},_focus:{bg:P("base.400","base.600")(e)},svg:{opacity:.7,fontSize:14}}})),mn=$r({variants:{invokeAI:Tr},defaultProps:{variant:"invokeAI"}}),gn={variants:{enter:{visibility:"visible",opacity:1,scale:1,transition:{duration:.07,ease:[.4,0,.2,1]}},exit:{transitionEnd:{visibility:"hidden"},opacity:0,scale:.8,transition:{duration:.07,easings:"easeOut"}}}};export{on as A,Yr as B,Te as C,Gr as D,at as E,Ur as F,Vr as G,Zr as H,L as I,Fr as J,Hr as K,Wr as L,Dr as M,Mr as N,nn as O,G as P,Or as Q,zr as R,Rr as S,Qe as T,sn as U,cn as V,mn as W,Er as X,M as a,ct as b,an as c,ne as d,un as e,fn as f,He as g,dn as h,_r as i,W as j,Le as k,pn as l,gn as m,P as n,tn as o,rn as p,Br as q,E as r,Qr as s,en as t,ln as u,qr as v,Lr as w,Xr as x,Kr as y,Jr as z}; diff --git a/invokeai/frontend/web/dist/index.html b/invokeai/frontend/web/dist/index.html index 13647eec4b..db8fa11747 100644 --- a/invokeai/frontend/web/dist/index.html +++ b/invokeai/frontend/web/dist/index.html @@ -12,7 +12,7 @@ margin: 0; } - + diff --git a/invokeai/frontend/web/dist/locales/en.json b/invokeai/frontend/web/dist/locales/en.json index 125554fc40..881e531701 100644 --- a/invokeai/frontend/web/dist/locales/en.json +++ b/invokeai/frontend/web/dist/locales/en.json @@ -1,40 +1,67 @@ { "accessibility": { - "modelSelect": "Model Select", - "invokeProgressBar": "Invoke progress bar", - "reset": "Reset", - "uploadImage": "Upload Image", - "previousImage": "Previous Image", - "nextImage": "Next Image", - "useThisParameter": "Use this parameter", "copyMetadataJson": "Copy metadata JSON", "exitViewer": "Exit Viewer", - "zoomIn": "Zoom In", - "zoomOut": "Zoom Out", - "rotateCounterClockwise": "Rotate Counter-Clockwise", - "rotateClockwise": "Rotate Clockwise", "flipHorizontally": "Flip Horizontally", "flipVertically": "Flip Vertically", + "invokeProgressBar": "Invoke progress bar", + "menu": "Menu", + "modelSelect": "Model Select", "modifyConfig": "Modify Config", - "toggleAutoscroll": "Toggle autoscroll", - "toggleLogViewer": "Toggle Log Viewer", + "nextImage": "Next Image", + "previousImage": "Previous Image", + "reset": "Reset", + "rotateClockwise": "Rotate Clockwise", + "rotateCounterClockwise": "Rotate Counter-Clockwise", "showGallery": "Show Gallery", "showOptionsPanel": "Show Side Panel", - "menu": "Menu" + "toggleAutoscroll": "Toggle autoscroll", + "toggleLogViewer": "Toggle Log Viewer", + "uploadImage": "Upload Image", + "useThisParameter": "Use this parameter", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out" + }, + "boards": { + "addBoard": "Add Board", + "autoAddBoard": "Auto-Add Board", + "bottomMessage": "Deleting this board and its images will reset any features currently using them.", + "cancel": "Cancel", + "changeBoard": "Change Board", + "clearSearch": "Clear Search", + "loading": "Loading...", + "menuItemAutoAdd": "Auto-add to this Board", + "move": "Move", + "myBoard": "My Board", + "noMatching": "No matching Boards", + "searchBoard": "Search Boards...", + "selectBoard": "Select a Board", + "topMessage": "This board contains images used in the following features:", + "uncategorized": "Uncategorized" }, "common": { + "accept": "Accept", + "advanced": "Advanced", + "areYouSure": "Are you sure?", + "back": "Back", + "batch": "Batch Manager", + "cancel": "Cancel", + "close": "Close", "communityLabel": "Community", - "hotkeysLabel": "Hotkeys", + "controlNet": "Controlnet", + "ipAdapter": "IP Adapter", "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "languagePickerLabel": "Language", - "reportBugLabel": "Report Bug", - "githubLabel": "Github", "discordLabel": "Discord", - "settingsLabel": "Settings", + "dontAskMeAgain": "Don't ask me again", + "generate": "Generate", + "githubLabel": "Github", + "hotkeysLabel": "Hotkeys", + "imagePrompt": "Image Prompt", + "img2img": "Image To Image", "langArabic": "العربية", - "langEnglish": "English", + "langBrPortuguese": "Português do Brasil", "langDutch": "Nederlands", + "langEnglish": "English", "langFrench": "Français", "langGerman": "Deutsch", "langHebrew": "עברית", @@ -43,377 +70,430 @@ "langKorean": "한국어", "langPolish": "Polski", "langPortuguese": "Português", - "langBrPortuguese": "Português do Brasil", "langRussian": "Русский", "langSimplifiedChinese": "简体中文", - "langUkranian": "Украї́нська", "langSpanish": "Español", - "txt2img": "Text To Image", - "img2img": "Image To Image", - "unifiedCanvas": "Unified Canvas", + "languagePickerLabel": "Language", + "langUkranian": "Украї́нська", + "lightMode": "Light Mode", "linear": "Linear", - "nodes": "Workflow Editor", - "batch": "Batch Manager", + "load": "Load", + "loading": "Loading", + "loadingInvokeAI": "Loading Invoke AI", "modelManager": "Model Manager", - "postprocessing": "Post Processing", + "nodeEditor": "Node Editor", + "nodes": "Workflow Editor", "nodesDesc": "A node based system for the generation of images is under development currently. Stay tuned for updates about this amazing feature.", - "postProcessing": "Post Processing", + "openInNewTab": "Open in New Tab", "postProcessDesc1": "Invoke AI offers a wide variety of post processing features. Image Upscaling and Face Restoration are already available in the WebUI. You can access them from the Advanced Options menu of the Text To Image and Image To Image tabs. You can also process images directly, using the image action buttons above the current image display or in the viewer.", "postProcessDesc2": "A dedicated UI will be released soon to facilitate more advanced post processing workflows.", "postProcessDesc3": "The Invoke AI Command Line Interface offers various other features including Embiggen.", - "training": "Training", - "trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.", - "trainingDesc2": "InvokeAI already supports training custom embeddourings using Textual Inversion using the main script.", - "upload": "Upload", - "close": "Close", - "cancel": "Cancel", - "accept": "Accept", - "load": "Load", - "back": "Back", + "postprocessing": "Post Processing", + "postProcessing": "Post Processing", + "random": "Random", + "reportBugLabel": "Report Bug", + "settingsLabel": "Settings", "statusConnected": "Connected", + "statusConvertingModel": "Converting Model", "statusDisconnected": "Disconnected", "statusError": "Error", - "statusPreparing": "Preparing", - "statusProcessingCanceled": "Processing Canceled", - "statusProcessingComplete": "Processing Complete", "statusGenerating": "Generating", - "statusGeneratingTextToImage": "Generating Text To Image", "statusGeneratingImageToImage": "Generating Image To Image", "statusGeneratingInpainting": "Generating Inpainting", "statusGeneratingOutpainting": "Generating Outpainting", + "statusGeneratingTextToImage": "Generating Text To Image", "statusGenerationComplete": "Generation Complete", "statusIterationComplete": "Iteration Complete", - "statusSavingImage": "Saving Image", + "statusLoadingModel": "Loading Model", + "statusMergedModels": "Models Merged", + "statusMergingModels": "Merging Models", + "statusModelChanged": "Model Changed", + "statusModelConverted": "Model Converted", + "statusPreparing": "Preparing", + "statusProcessingCanceled": "Processing Canceled", + "statusProcessingComplete": "Processing Complete", "statusRestoringFaces": "Restoring Faces", - "statusRestoringFacesGFPGAN": "Restoring Faces (GFPGAN)", "statusRestoringFacesCodeFormer": "Restoring Faces (CodeFormer)", + "statusRestoringFacesGFPGAN": "Restoring Faces (GFPGAN)", + "statusSavingImage": "Saving Image", "statusUpscaling": "Upscaling", "statusUpscalingESRGAN": "Upscaling (ESRGAN)", - "statusLoadingModel": "Loading Model", - "statusModelChanged": "Model Changed", - "statusConvertingModel": "Converting Model", - "statusModelConverted": "Model Converted", - "statusMergingModels": "Merging Models", - "statusMergedModels": "Models Merged", - "loading": "Loading", - "loadingInvokeAI": "Loading Invoke AI", - "random": "Random", - "generate": "Generate", - "openInNewTab": "Open in New Tab", - "dontAskMeAgain": "Don't ask me again", - "areYouSure": "Are you sure?", - "imagePrompt": "Image Prompt" + "training": "Training", + "trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.", + "trainingDesc2": "InvokeAI already supports training custom embeddourings using Textual Inversion using the main script.", + "txt2img": "Text To Image", + "unifiedCanvas": "Unified Canvas", + "upload": "Upload" + }, + "controlnet": { + "amult": "a_mult", + "autoConfigure": "Auto configure processor", + "balanced": "Balanced", + "beginEndStepPercent": "Begin / End Step Percentage", + "bgth": "bg_th", + "canny": "Canny", + "cannyDescription": "Canny edge detection", + "coarse": "Coarse", + "contentShuffle": "Content Shuffle", + "contentShuffleDescription": "Shuffles the content in an image", + "control": "Control", + "controlMode": "Control Mode", + "crop": "Crop", + "delete": "Delete", + "depthMidas": "Depth (Midas)", + "depthMidasDescription": "Depth map generation using Midas", + "depthZoe": "Depth (Zoe)", + "depthZoeDescription": "Depth map generation using Zoe", + "detectResolution": "Detect Resolution", + "duplicate": "Duplicate", + "enableControlnet": "Enable ControlNet", + "f": "F", + "fill": "Fill", + "h": "H", + "handAndFace": "Hand and Face", + "hed": "HED", + "hedDescription": "Holistically-Nested Edge Detection", + "hideAdvanced": "Hide Advanced", + "highThreshold": "High Threshold", + "imageResolution": "Image Resolution", + "importImageFromCanvas": "Import Image From Canvas", + "importMaskFromCanvas": "Import Mask From Canvas", + "incompatibleBaseModel": "Incompatible base model:", + "lineart": "Lineart", + "lineartAnime": "Lineart Anime", + "lineartAnimeDescription": "Anime-style lineart processing", + "lineartDescription": "Converts image to lineart", + "lowThreshold": "Low Threshold", + "maxFaces": "Max Faces", + "mediapipeFace": "Mediapipe Face", + "mediapipeFaceDescription": "Face detection using Mediapipe", + "megaControl": "Mega Control", + "minConfidence": "Min Confidence", + "mlsd": "M-LSD", + "mlsdDescription": "Minimalist Line Segment Detector", + "none": "None", + "noneDescription": "No processing applied", + "normalBae": "Normal BAE", + "normalBaeDescription": "Normal BAE processing", + "openPose": "Openpose", + "openPoseDescription": "Human pose estimation using Openpose", + "pidi": "PIDI", + "pidiDescription": "PIDI image processing", + "processor": "Processor", + "prompt": "Prompt", + "resetControlImage": "Reset Control Image", + "resize": "Resize", + "resizeMode": "Resize Mode", + "safe": "Safe", + "saveControlImage": "Save Control Image", + "scribble": "scribble", + "selectModel": "Select a model", + "setControlImageDimensions": "Set Control Image Dimensions To W/H", + "showAdvanced": "Show Advanced", + "toggleControlNet": "Toggle this ControlNet", + "w": "W", + "weight": "Weight", + "enableIPAdapter": "Enable IP Adapter", + "ipAdapterModel": "Adapter Model", + "resetIPAdapterImage": "Reset IP Adapter Image", + "ipAdapterImageFallback": "No IP Adapter Image Selected" + }, + "embedding": { + "addEmbedding": "Add Embedding", + "incompatibleModel": "Incompatible base model:", + "noMatchingEmbedding": "No matching Embeddings" }, "gallery": { - "generations": "Generations", - "showGenerations": "Show Generations", - "uploads": "Uploads", - "showUploads": "Show Uploads", - "galleryImageSize": "Image Size", - "galleryImageResetSize": "Reset Size", - "gallerySettings": "Gallery Settings", - "maintainAspectRatio": "Maintain Aspect Ratio", - "autoSwitchNewImages": "Auto-Switch to New Images", - "singleColumnLayout": "Single Column Layout", "allImagesLoaded": "All Images Loaded", - "loadMore": "Load More", - "noImagesInGallery": "No Images to Display", + "assets": "Assets", + "autoAssignBoardOnClick": "Auto-Assign Board on Click", + "autoSwitchNewImages": "Auto-Switch to New Images", + "copy": "Copy", + "currentlyInUse": "This image is currently in use in the following features:", "deleteImage": "Delete Image", "deleteImageBin": "Deleted images will be sent to your operating system's Bin.", "deleteImagePermanent": "Deleted images cannot be restored.", + "download": "Download", + "featuresWillReset": "If you delete this image, those features will immediately be reset.", + "galleryImageResetSize": "Reset Size", + "galleryImageSize": "Image Size", + "gallerySettings": "Gallery Settings", + "generations": "Generations", "images": "Images", - "assets": "Assets", - "autoAssignBoardOnClick": "Auto-Assign Board on Click" + "loading": "Loading", + "loadMore": "Load More", + "maintainAspectRatio": "Maintain Aspect Ratio", + "noImagesInGallery": "No Images to Display", + "setCurrentImage": "Set as Current Image", + "showGenerations": "Show Generations", + "showUploads": "Show Uploads", + "singleColumnLayout": "Single Column Layout", + "unableToLoad": "Unable to load Gallery", + "uploads": "Uploads" }, "hotkeys": { - "keyboardShortcuts": "Keyboard Shortcuts", - "appHotkeys": "App Hotkeys", - "generalHotkeys": "General Hotkeys", - "galleryHotkeys": "Gallery Hotkeys", - "unifiedCanvasHotkeys": "Unified Canvas Hotkeys", - "nodesHotkeys": "Nodes Hotkeys", - "invoke": { - "title": "Invoke", - "desc": "Generate an image" - }, - "cancel": { - "title": "Cancel", - "desc": "Cancel image generation" - }, - "focusPrompt": { - "title": "Focus Prompt", - "desc": "Focus the prompt input area" - }, - "toggleOptions": { - "title": "Toggle Options", - "desc": "Open and close the options panel" - }, - "pinOptions": { - "title": "Pin Options", - "desc": "Pin the options panel" - }, - "toggleViewer": { - "title": "Toggle Viewer", - "desc": "Open and close Image Viewer" - }, - "toggleGallery": { - "title": "Toggle Gallery", - "desc": "Open and close the gallery drawer" - }, - "maximizeWorkSpace": { - "title": "Maximize Workspace", - "desc": "Close panels and maximize work area" - }, - "changeTabs": { - "title": "Change Tabs", - "desc": "Switch to another workspace" - }, - "consoleToggle": { - "title": "Console Toggle", - "desc": "Open and close console" - }, - "setPrompt": { - "title": "Set Prompt", - "desc": "Use the prompt of the current image" - }, - "setSeed": { - "title": "Set Seed", - "desc": "Use the seed of the current image" - }, - "setParameters": { - "title": "Set Parameters", - "desc": "Use all parameters of the current image" - }, - "restoreFaces": { - "title": "Restore Faces", - "desc": "Restore the current image" - }, - "upscale": { - "title": "Upscale", - "desc": "Upscale the current image" - }, - "showInfo": { - "title": "Show Info", - "desc": "Show metadata info of the current image" - }, - "sendToImageToImage": { - "title": "Send To Image To Image", - "desc": "Send current image to Image to Image" - }, - "deleteImage": { - "title": "Delete Image", - "desc": "Delete the current image" - }, - "closePanels": { - "title": "Close Panels", - "desc": "Closes open panels" - }, - "previousImage": { - "title": "Previous Image", - "desc": "Display the previous image in gallery" - }, - "nextImage": { - "title": "Next Image", - "desc": "Display the next image in gallery" - }, - "toggleGalleryPin": { - "title": "Toggle Gallery Pin", - "desc": "Pins and unpins the gallery to the UI" - }, - "increaseGalleryThumbSize": { - "title": "Increase Gallery Image Size", - "desc": "Increases gallery thumbnails size" - }, - "decreaseGalleryThumbSize": { - "title": "Decrease Gallery Image Size", - "desc": "Decreases gallery thumbnails size" - }, - "selectBrush": { - "title": "Select Brush", - "desc": "Selects the canvas brush" - }, - "selectEraser": { - "title": "Select Eraser", - "desc": "Selects the canvas eraser" - }, - "decreaseBrushSize": { - "title": "Decrease Brush Size", - "desc": "Decreases the size of the canvas brush/eraser" - }, - "increaseBrushSize": { - "title": "Increase Brush Size", - "desc": "Increases the size of the canvas brush/eraser" - }, - "decreaseBrushOpacity": { - "title": "Decrease Brush Opacity", - "desc": "Decreases the opacity of the canvas brush" - }, - "increaseBrushOpacity": { - "title": "Increase Brush Opacity", - "desc": "Increases the opacity of the canvas brush" - }, - "moveTool": { - "title": "Move Tool", - "desc": "Allows canvas navigation" - }, - "fillBoundingBox": { - "title": "Fill Bounding Box", - "desc": "Fills the bounding box with brush color" - }, - "eraseBoundingBox": { - "title": "Erase Bounding Box", - "desc": "Erases the bounding box area" - }, - "colorPicker": { - "title": "Select Color Picker", - "desc": "Selects the canvas color picker" - }, - "toggleSnap": { - "title": "Toggle Snap", - "desc": "Toggles Snap to Grid" - }, - "quickToggleMove": { - "title": "Quick Toggle Move", - "desc": "Temporarily toggles Move mode" - }, - "toggleLayer": { - "title": "Toggle Layer", - "desc": "Toggles mask/base layer selection" - }, - "clearMask": { - "title": "Clear Mask", - "desc": "Clear the entire mask" - }, - "hideMask": { - "title": "Hide Mask", - "desc": "Hide and unhide mask" - }, - "showHideBoundingBox": { - "title": "Show/Hide Bounding Box", - "desc": "Toggle visibility of bounding box" - }, - "mergeVisible": { - "title": "Merge Visible", - "desc": "Merge all visible layers of canvas" - }, - "saveToGallery": { - "title": "Save To Gallery", - "desc": "Save current canvas to gallery" - }, - "copyToClipboard": { - "title": "Copy to Clipboard", - "desc": "Copy current canvas to clipboard" - }, - "downloadImage": { - "title": "Download Image", - "desc": "Download current canvas" - }, - "undoStroke": { - "title": "Undo Stroke", - "desc": "Undo a brush stroke" - }, - "redoStroke": { - "title": "Redo Stroke", - "desc": "Redo a brush stroke" - }, - "resetView": { - "title": "Reset View", - "desc": "Reset Canvas View" - }, - "previousStagingImage": { - "title": "Previous Staging Image", - "desc": "Previous Staging Area Image" - }, - "nextStagingImage": { - "title": "Next Staging Image", - "desc": "Next Staging Area Image" - }, "acceptStagingImage": { - "title": "Accept Staging Image", - "desc": "Accept Current Staging Area Image" + "desc": "Accept Current Staging Area Image", + "title": "Accept Staging Image" }, "addNodes": { - "title": "Add Nodes", - "desc": "Opens the add node menu" + "desc": "Opens the add node menu", + "title": "Add Nodes" + }, + "appHotkeys": "App Hotkeys", + "cancel": { + "desc": "Cancel image generation", + "title": "Cancel" + }, + "changeTabs": { + "desc": "Switch to another workspace", + "title": "Change Tabs" + }, + "clearMask": { + "desc": "Clear the entire mask", + "title": "Clear Mask" + }, + "closePanels": { + "desc": "Closes open panels", + "title": "Close Panels" + }, + "colorPicker": { + "desc": "Selects the canvas color picker", + "title": "Select Color Picker" + }, + "consoleToggle": { + "desc": "Open and close console", + "title": "Console Toggle" + }, + "copyToClipboard": { + "desc": "Copy current canvas to clipboard", + "title": "Copy to Clipboard" + }, + "decreaseBrushOpacity": { + "desc": "Decreases the opacity of the canvas brush", + "title": "Decrease Brush Opacity" + }, + "decreaseBrushSize": { + "desc": "Decreases the size of the canvas brush/eraser", + "title": "Decrease Brush Size" + }, + "decreaseGalleryThumbSize": { + "desc": "Decreases gallery thumbnails size", + "title": "Decrease Gallery Image Size" + }, + "deleteImage": { + "desc": "Delete the current image", + "title": "Delete Image" + }, + "downloadImage": { + "desc": "Download current canvas", + "title": "Download Image" + }, + "eraseBoundingBox": { + "desc": "Erases the bounding box area", + "title": "Erase Bounding Box" + }, + "fillBoundingBox": { + "desc": "Fills the bounding box with brush color", + "title": "Fill Bounding Box" + }, + "focusPrompt": { + "desc": "Focus the prompt input area", + "title": "Focus Prompt" + }, + "galleryHotkeys": "Gallery Hotkeys", + "generalHotkeys": "General Hotkeys", + "hideMask": { + "desc": "Hide and unhide mask", + "title": "Hide Mask" + }, + "increaseBrushOpacity": { + "desc": "Increases the opacity of the canvas brush", + "title": "Increase Brush Opacity" + }, + "increaseBrushSize": { + "desc": "Increases the size of the canvas brush/eraser", + "title": "Increase Brush Size" + }, + "increaseGalleryThumbSize": { + "desc": "Increases gallery thumbnails size", + "title": "Increase Gallery Image Size" + }, + "invoke": { + "desc": "Generate an image", + "title": "Invoke" + }, + "keyboardShortcuts": "Keyboard Shortcuts", + "maximizeWorkSpace": { + "desc": "Close panels and maximize work area", + "title": "Maximize Workspace" + }, + "mergeVisible": { + "desc": "Merge all visible layers of canvas", + "title": "Merge Visible" + }, + "moveTool": { + "desc": "Allows canvas navigation", + "title": "Move Tool" + }, + "nextImage": { + "desc": "Display the next image in gallery", + "title": "Next Image" + }, + "nextStagingImage": { + "desc": "Next Staging Area Image", + "title": "Next Staging Image" + }, + "nodesHotkeys": "Nodes Hotkeys", + "pinOptions": { + "desc": "Pin the options panel", + "title": "Pin Options" + }, + "previousImage": { + "desc": "Display the previous image in gallery", + "title": "Previous Image" + }, + "previousStagingImage": { + "desc": "Previous Staging Area Image", + "title": "Previous Staging Image" + }, + "quickToggleMove": { + "desc": "Temporarily toggles Move mode", + "title": "Quick Toggle Move" + }, + "redoStroke": { + "desc": "Redo a brush stroke", + "title": "Redo Stroke" + }, + "resetView": { + "desc": "Reset Canvas View", + "title": "Reset View" + }, + "restoreFaces": { + "desc": "Restore the current image", + "title": "Restore Faces" + }, + "saveToGallery": { + "desc": "Save current canvas to gallery", + "title": "Save To Gallery" + }, + "selectBrush": { + "desc": "Selects the canvas brush", + "title": "Select Brush" + }, + "selectEraser": { + "desc": "Selects the canvas eraser", + "title": "Select Eraser" + }, + "sendToImageToImage": { + "desc": "Send current image to Image to Image", + "title": "Send To Image To Image" + }, + "setParameters": { + "desc": "Use all parameters of the current image", + "title": "Set Parameters" + }, + "setPrompt": { + "desc": "Use the prompt of the current image", + "title": "Set Prompt" + }, + "setSeed": { + "desc": "Use the seed of the current image", + "title": "Set Seed" + }, + "showHideBoundingBox": { + "desc": "Toggle visibility of bounding box", + "title": "Show/Hide Bounding Box" + }, + "showInfo": { + "desc": "Show metadata info of the current image", + "title": "Show Info" + }, + "toggleGallery": { + "desc": "Open and close the gallery drawer", + "title": "Toggle Gallery" + }, + "toggleGalleryPin": { + "desc": "Pins and unpins the gallery to the UI", + "title": "Toggle Gallery Pin" + }, + "toggleLayer": { + "desc": "Toggles mask/base layer selection", + "title": "Toggle Layer" + }, + "toggleOptions": { + "desc": "Open and close the options panel", + "title": "Toggle Options" + }, + "toggleSnap": { + "desc": "Toggles Snap to Grid", + "title": "Toggle Snap" + }, + "toggleViewer": { + "desc": "Open and close Image Viewer", + "title": "Toggle Viewer" + }, + "undoStroke": { + "desc": "Undo a brush stroke", + "title": "Undo Stroke" + }, + "unifiedCanvasHotkeys": "Unified Canvas Hotkeys", + "upscale": { + "desc": "Upscale the current image", + "title": "Upscale" } }, - "modelManager": { - "modelManager": "Model Manager", + "metadata": { + "cfgScale": "CFG scale", + "createdBy": "Created By", + "fit": "Image to image fit", + "generationMode": "Generation Mode", + "height": "Height", + "hiresFix": "High Resolution Optimization", + "imageDetails": "Image Details", + "initImage": "Initial image", + "metadata": "Metadata", "model": "Model", - "vae": "VAE", - "allModels": "All Models", - "checkpointModels": "Checkpoints", - "diffusersModels": "Diffusers", - "loraModels": "LoRAs", - "safetensorModels": "SafeTensors", - "onnxModels": "Onnx", - "oliveModels": "Olives", - "modelAdded": "Model Added", - "modelUpdated": "Model Updated", - "modelUpdateFailed": "Model Update Failed", - "modelEntryDeleted": "Model Entry Deleted", - "cannotUseSpaces": "Cannot Use Spaces", + "negativePrompt": "Negative Prompt", + "noImageDetails": "No image details found", + "noMetaData": "No metadata found", + "perlin": "Perlin Noise", + "positivePrompt": "Positive Prompt", + "scheduler": "Scheduler", + "seamless": "Seamless", + "seed": "Seed", + "steps": "Steps", + "strength": "Image to image strength", + "Threshold": "Noise Threshold", + "variations": "Seed-weight pairs", + "width": "Width", + "workflow": "Workflow" + }, + "modelManager": { + "active": "active", + "addCheckpointModel": "Add Checkpoint / Safetensor Model", + "addDifference": "Add Difference", + "addDiffuserModel": "Add Diffusers", + "addManually": "Add Manually", + "addModel": "Add Model", "addNew": "Add New", "addNewModel": "Add New Model", - "addCheckpointModel": "Add Checkpoint / Safetensor Model", - "addDiffuserModel": "Add Diffusers", - "scanForModels": "Scan For Models", - "addManually": "Add Manually", - "manual": "Manual", + "addSelected": "Add Selected", + "advanced": "Advanced", + "allModels": "All Models", + "alpha": "Alpha", + "availableModels": "Available Models", "baseModel": "Base Model", - "name": "Name", - "nameValidationMsg": "Enter a name for your model", - "description": "Description", - "descriptionValidationMsg": "Add a description for your model", + "cached": "cached", + "cannotUseSpaces": "Cannot Use Spaces", + "checkpointFolder": "Checkpoint Folder", + "checkpointModels": "Checkpoints", + "clearCheckpointFolder": "Clear Checkpoint Folder", + "closeAdvanced": "Close Advanced", "config": "Config", "configValidationMsg": "Path to the config file of your model.", - "modelLocation": "Model Location", - "modelLocationValidationMsg": "Path to where your model is located locally.", - "repo_id": "Repo ID", - "repoIDValidationMsg": "Online repository of your model", - "vaeLocation": "VAE Location", - "vaeLocationValidationMsg": "Path to where your VAE is located.", - "variant": "Variant", - "vaeRepoID": "VAE Repo ID", - "vaeRepoIDValidationMsg": "Online repository of your VAE", - "width": "Width", - "widthValidationMsg": "Default width of your model.", - "height": "Height", - "heightValidationMsg": "Default height of your model.", - "addModel": "Add Model", - "updateModel": "Update Model", - "availableModels": "Available Models", - "search": "Search", - "load": "Load", - "active": "active", - "notLoaded": "not loaded", - "cached": "cached", - "checkpointFolder": "Checkpoint Folder", - "clearCheckpointFolder": "Clear Checkpoint Folder", - "findModels": "Find Models", - "scanAgain": "Scan Again", - "modelsFound": "Models Found", - "selectFolder": "Select Folder", - "selected": "Selected", - "selectAll": "Select All", - "deselectAll": "Deselect All", - "showExisting": "Show Existing", - "addSelected": "Add Selected", - "modelExists": "Model Exists", - "selectAndAdd": "Select and Add Models Listed Below", - "noModelsFound": "No Models Found", - "delete": "Delete", - "deleteModel": "Delete Model", - "deleteConfig": "Delete Config", - "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", - "modelDeleted": "Model Deleted", - "modelDeleteFailed": "Failed to delete model", - "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", - "formMessageDiffusersModelLocation": "Diffusers Model Location", - "formMessageDiffusersModelLocationDesc": "Please enter at least one.", - "formMessageDiffusersVAELocation": "VAE Location", - "formMessageDiffusersVAELocationDesc": "If not provided, InvokeAI will look for the VAE file inside the model location given above.", "convert": "Convert", + "convertingModelBegin": "Converting Model. Please wait.", "convertToDiffusers": "Convert To Diffusers", "convertToDiffusersHelpText1": "This model will be converted to the 🧨 Diffusers format.", "convertToDiffusersHelpText2": "This process will replace your Model Manager entry with the Diffusers version of the same model.", @@ -422,318 +502,634 @@ "convertToDiffusersHelpText5": "Please make sure you have enough disk space. Models generally vary between 2GB-7GB in size.", "convertToDiffusersHelpText6": "Do you wish to convert this model?", "convertToDiffusersSaveLocation": "Save Location", - "noCustomLocationProvided": "No Custom Location Provided", - "convertingModelBegin": "Converting Model. Please wait.", - "v1": "v1", - "v2_base": "v2 (512px)", - "v2_768": "v2 (768px)", - "inpainting": "v1 Inpainting", - "customConfig": "Custom Config", - "pathToCustomConfig": "Path To Custom Config", - "statusConverting": "Converting", - "modelConverted": "Model Converted", - "modelConversionFailed": "Model Conversion Failed", - "sameFolder": "Same folder", - "invokeRoot": "InvokeAI folder", "custom": "Custom", + "customConfig": "Custom Config", + "customConfigFileLocation": "Custom Config File Location", "customSaveLocation": "Custom Save Location", - "merge": "Merge", - "modelsMerged": "Models Merged", - "modelsMergeFailed": "Model Merge Failed", - "mergeModels": "Merge Models", - "modelOne": "Model 1", - "modelTwo": "Model 2", - "modelThree": "Model 3", - "mergedModelName": "Merged Model Name", - "alpha": "Alpha", - "interpolationType": "Interpolation Type", - "mergedModelSaveLocation": "Save Location", - "mergedModelCustomSaveLocation": "Custom Path", - "invokeAIFolder": "Invoke AI Folder", + "delete": "Delete", + "deleteConfig": "Delete Config", + "deleteModel": "Delete Model", + "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", + "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", + "description": "Description", + "descriptionValidationMsg": "Add a description for your model", + "deselectAll": "Deselect All", + "diffusersModels": "Diffusers", + "findModels": "Find Models", + "formMessageDiffusersModelLocation": "Diffusers Model Location", + "formMessageDiffusersModelLocationDesc": "Please enter at least one.", + "formMessageDiffusersVAELocation": "VAE Location", + "formMessageDiffusersVAELocationDesc": "If not provided, InvokeAI will look for the VAE file inside the model location given above.", + "height": "Height", + "heightValidationMsg": "Default height of your model.", "ignoreMismatch": "Ignore Mismatches Between Selected Models", + "importModels": "Import Models", + "inpainting": "v1 Inpainting", + "interpolationType": "Interpolation Type", + "inverseSigmoid": "Inverse Sigmoid", + "invokeAIFolder": "Invoke AI Folder", + "invokeRoot": "InvokeAI folder", + "load": "Load", + "loraModels": "LoRAs", + "manual": "Manual", + "merge": "Merge", + "mergedModelCustomSaveLocation": "Custom Path", + "mergedModelName": "Merged Model Name", + "mergedModelSaveLocation": "Save Location", + "mergeModels": "Merge Models", + "model": "Model", + "modelAdded": "Model Added", + "modelConversionFailed": "Model Conversion Failed", + "modelConverted": "Model Converted", + "modelDeleted": "Model Deleted", + "modelDeleteFailed": "Failed to delete model", + "modelEntryDeleted": "Model Entry Deleted", + "modelExists": "Model Exists", + "modelLocation": "Model Location", + "modelLocationValidationMsg": "Provide the path to a local folder where your Diffusers Model is stored", + "modelManager": "Model Manager", + "modelMergeAlphaHelp": "Alpha controls blend strength for the models. Lower alpha values lead to lower influence of the second model.", "modelMergeHeaderHelp1": "You can merge up to three different models to create a blend that suits your needs.", "modelMergeHeaderHelp2": "Only Diffusers are available for merging. If you want to merge a checkpoint model, please convert it to Diffusers first.", - "modelMergeAlphaHelp": "Alpha controls blend strength for the models. Lower alpha values lead to lower influence of the second model.", "modelMergeInterpAddDifferenceHelp": "In this mode, Model 3 is first subtracted from Model 2. The resulting version is blended with Model 1 with the alpha rate set above.", - "inverseSigmoid": "Inverse Sigmoid", - "sigmoid": "Sigmoid", - "weightedSum": "Weighted Sum", + "modelOne": "Model 1", + "modelsFound": "Models Found", + "modelsMerged": "Models Merged", + "modelsMergeFailed": "Model Merge Failed", + "modelsSynced": "Models Synced", + "modelSyncFailed": "Model Sync Failed", + "modelThree": "Model 3", + "modelTwo": "Model 2", + "modelType": "Model Type", + "modelUpdated": "Model Updated", + "modelUpdateFailed": "Model Update Failed", + "name": "Name", + "nameValidationMsg": "Enter a name for your model", + "noCustomLocationProvided": "No Custom Location Provided", + "noModels": "No Models Found", + "noModelsFound": "No Models Found", "none": "none", - "addDifference": "Add Difference", + "notLoaded": "not loaded", + "oliveModels": "Olives", + "onnxModels": "Onnx", + "pathToCustomConfig": "Path To Custom Config", "pickModelType": "Pick Model Type", + "predictionType": "Prediction Type (for Stable Diffusion 2.x Models only)", + "quickAdd": "Quick Add", + "repo_id": "Repo ID", + "repoIDValidationMsg": "Online repository of your model", + "safetensorModels": "SafeTensors", + "sameFolder": "Same folder", + "scanAgain": "Scan Again", + "scanForModels": "Scan For Models", + "search": "Search", + "selectAll": "Select All", + "selectAndAdd": "Select and Add Models Listed Below", + "selected": "Selected", + "selectFolder": "Select Folder", "selectModel": "Select Model", - "importModels": "Import Models", "settings": "Settings", + "showExisting": "Show Existing", + "sigmoid": "Sigmoid", + "simpleModelDesc": "Provide a path to a local Diffusers model, local checkpoint / safetensors model a HuggingFace Repo ID, or a checkpoint/diffusers model URL.", + "statusConverting": "Converting", "syncModels": "Sync Models", "syncModelsDesc": "If your models are out of sync with the backend, you can refresh them up using this option. This is generally handy in cases where you manually update your models.yaml file or add models to the InvokeAI root folder after the application has booted.", - "modelsSynced": "Models Synced", - "modelSyncFailed": "Model Sync Failed" + "updateModel": "Update Model", + "useCustomConfig": "Use Custom Config", + "v1": "v1", + "v2_768": "v2 (768px)", + "v2_base": "v2 (512px)", + "vae": "VAE", + "vaeLocation": "VAE Location", + "vaeLocationValidationMsg": "Path to where your VAE is located.", + "vaeRepoID": "VAE Repo ID", + "vaeRepoIDValidationMsg": "Online repository of your VAE", + "variant": "Variant", + "weightedSum": "Weighted Sum", + "width": "Width", + "widthValidationMsg": "Default width of your model." + }, + "models": { + "loading": "loading", + "noLoRAsAvailable": "No LoRAs available", + "noMatchingLoRAs": "No matching LoRAs", + "noMatchingModels": "No matching Models", + "noModelsAvailable": "No Modelss available", + "selectLoRA": "Select a LoRA", + "selectModel": "Select a Model" + }, + "nodes": { + "addNode": "Add Node", + "addNodeToolTip": "Add Node (Shift+A, Space)", + "animatedEdges": "Animated Edges", + "animatedEdgesHelp": "Animate selected edges and edges connected to selected nodes", + "boolean": "Booleans", + "booleanCollection": "Boolean Collection", + "booleanCollectionDescription": "A collection of booleans.", + "booleanDescription": "Booleans are true or false.", + "booleanPolymorphic": "Boolean Polymorphic", + "booleanPolymorphicDescription": "A collection of booleans.", + "cannotConnectInputToInput": "Cannot connect input to input", + "cannotConnectOutputToOutput": "Cannot connect output to output", + "cannotConnectToSelf": "Cannot connect to self", + "clipField": "Clip", + "clipFieldDescription": "Tokenizer and text_encoder submodels.", + "collection": "Collection", + "collectionDescription": "TODO", + "collectionItem": "Collection Item", + "collectionItemDescription": "TODO", + "colorCodeEdges": "Color-Code Edges", + "colorCodeEdgesHelp": "Color-code edges according to their connected fields", + "colorCollectionDescription": "A collection of colors.", + "colorField": "Color", + "colorFieldDescription": "A RGBA color.", + "colorPolymorphic": "Color Polymorphic", + "colorPolymorphicDescription": "A collection of colors.", + "conditioningCollection": "Conditioning Collection", + "conditioningCollectionDescription": "Conditioning may be passed between nodes.", + "conditioningField": "Conditioning", + "conditioningFieldDescription": "Conditioning may be passed between nodes.", + "conditioningPolymorphic": "Conditioning Polymorphic", + "conditioningPolymorphicDescription": "Conditioning may be passed between nodes.", + "connectionWouldCreateCycle": "Connection would create a cycle", + "controlCollection": "Control Collection", + "controlCollectionDescription": "Control info passed between nodes.", + "controlField": "Control", + "controlFieldDescription": "Control info passed between nodes.", + "currentImage": "Current Image", + "currentImageDescription": "Displays the current image in the Node Editor", + "denoiseMaskField": "Denoise Mask", + "denoiseMaskFieldDescription": "Denoise Mask may be passed between nodes", + "doesNotExist": "does not exist", + "downloadWorkflow": "Download Workflow JSON", + "edge": "Edge", + "enum": "Enum", + "enumDescription": "Enums are values that may be one of a number of options.", + "executionStateCompleted": "Completed", + "executionStateError": "Error", + "executionStateInProgress": "In Progress", + "fieldTypesMustMatch": "Field types must match", + "fitViewportNodes": "Fit View", + "float": "Float", + "floatCollection": "Float Collection", + "floatCollectionDescription": "A collection of floats.", + "floatDescription": "Floats are numbers with a decimal point.", + "floatPolymorphic": "Float Polymorphic", + "floatPolymorphicDescription": "A collection of floats.", + "fullyContainNodes": "Fully Contain Nodes to Select", + "fullyContainNodesHelp": "Nodes must be fully inside the selection box to be selected", + "hideGraphNodes": "Hide Graph Overlay", + "hideLegendNodes": "Hide Field Type Legend", + "hideMinimapnodes": "Hide MiniMap", + "imageCollection": "Image Collection", + "imageCollectionDescription": "A collection of images.", + "imageField": "Image", + "imageFieldDescription": "Images may be passed between nodes.", + "imagePolymorphic": "Image Polymorphic", + "imagePolymorphicDescription": "A collection of images.", + "inputFields": "Input Feilds", + "inputMayOnlyHaveOneConnection": "Input may only have one connection", + "inputNode": "Input Node", + "integer": "Integer", + "integerCollection": "Integer Collection", + "integerCollectionDescription": "A collection of integers.", + "integerDescription": "Integers are whole numbers, without a decimal point.", + "integerPolymorphic": "Integer Polymorphic", + "integerPolymorphicDescription": "A collection of integers.", + "invalidOutputSchema": "Invalid output schema", + "latentsCollection": "Latents Collection", + "latentsCollectionDescription": "Latents may be passed between nodes.", + "latentsField": "Latents", + "latentsFieldDescription": "Latents may be passed between nodes.", + "latentsPolymorphic": "Latents Polymorphic", + "latentsPolymorphicDescription": "Latents may be passed between nodes.", + "loadingNodes": "Loading Nodes...", + "loadWorkflow": "Load Workflow", + "loRAModelField": "LoRA", + "loRAModelFieldDescription": "TODO", + "mainModelField": "Model", + "mainModelFieldDescription": "TODO", + "maybeIncompatible": "May be Incompatible With Installed", + "mismatchedVersion": "Has Mismatched Version", + "missingCanvaInitImage": "Missing canvas init image", + "missingCanvaInitMaskImages": "Missing canvas init and mask images", + "missingTemplate": "Missing Template", + "noConnectionData": "No connection data", + "noConnectionInProgress": "No connection in progress", + "node": "Node", + "nodeOutputs": "Node Outputs", + "nodeSearch": "Search for nodes", + "nodeTemplate": "Node Template", + "nodeType": "Node Type", + "noFieldsLinearview": "No fields added to Linear View", + "noFieldType": "No field type", + "noImageFoundState": "No initial image found in state", + "noMatchingNodes": "No matching nodes", + "noNodeSelected": "No node selected", + "noOpacity": "Node Opacity", + "noOutputRecorded": "No outputs recorded", + "noOutputSchemaName": "No output schema name found in ref object", + "notes": "Notes", + "notesDescription": "Add notes about your workflow", + "oNNXModelField": "ONNX Model", + "oNNXModelFieldDescription": "ONNX model field.", + "outputFields": "Output Feilds", + "outputNode": "Output node", + "outputSchemaNotFound": "Output schema not found", + "pickOne": "Pick One", + "problemReadingMetadata": "Problem reading metadata from image", + "problemReadingWorkflow": "Problem reading workflow from image", + "problemSettingTitle": "Problem Setting Title", + "reloadNodeTemplates": "Reload Node Templates", + "removeLinearView": "Remove from Linear View", + "resetWorkflow": "Reset Workflow", + "resetWorkflowDesc": "Are you sure you want to reset this workflow?", + "resetWorkflowDesc2": "Resetting the workflow will clear all nodes, edges and workflow details.", + "scheduler": "Scheduler", + "schedulerDescription": "TODO", + "sDXLMainModelField": "SDXL Model", + "sDXLMainModelFieldDescription": "SDXL model field.", + "sDXLRefinerModelField": "Refiner Model", + "sDXLRefinerModelFieldDescription": "TODO", + "showGraphNodes": "Show Graph Overlay", + "showLegendNodes": "Show Field Type Legend", + "showMinimapnodes": "Show MiniMap", + "skipped": "Skipped", + "skippedReservedInput": "Skipped reserved input field", + "skippedReservedOutput": "Skipped reserved output field", + "skippingInputNoTemplate": "Skipping input field with no template", + "skippingReservedFieldType": "Skipping reserved field type", + "skippingUnknownInputType": "Skipping unknown input field type", + "skippingUnknownOutputType": "Skipping unknown output field type", + "snapToGrid": "Snap to Grid", + "snapToGridHelp": "Snap nodes to grid when moved", + "sourceNode": "Source node", + "string": "String", + "stringCollection": "String Collection", + "stringCollectionDescription": "A collection of strings.", + "stringDescription": "Strings are text.", + "stringPolymorphic": "String Polymorphic", + "stringPolymorphicDescription": "A collection of strings.", + "unableToLoadWorkflow": "Unable to Validate Workflow", + "unableToParseEdge": "Unable to parse edge", + "unableToParseNode": "Unable to parse node", + "unableToValidateWorkflow": "Unable to Validate Workflow", + "uNetField": "UNet", + "uNetFieldDescription": "UNet submodel.", + "unhandledInputProperty": "Unhandled input property", + "unhandledOutputProperty": "Unhandled output property", + "unknownField": "Unknown Field", + "unknownNode": "Unknown Node", + "unknownTemplate": "Unknown Template", + "unkownInvocation": "Unknown Invocation type", + "updateApp": "Update App", + "vaeField": "Vae", + "vaeFieldDescription": "Vae submodel.", + "vaeModelField": "VAE", + "vaeModelFieldDescription": "TODO", + "validateConnections": "Validate Connections and Graph", + "validateConnectionsHelp": "Prevent invalid connections from being made, and invalid graphs from being invoked", + "version": "Version", + "versionUnknown": " Version Unknown", + "workflow": "Workflow", + "workflowAuthor": "Author", + "workflowContact": "Contact", + "workflowDescription": "Short Description", + "workflowName": "Name", + "workflowNotes": "Notes", + "workflowSettings": "Workflow Editor Settings", + "workflowTags": "Tags", + "workflowValidation": "Workflow Validation Error", + "workflowVersion": "Version", + "zoomInNodes": "Zoom In", + "zoomOutNodes": "Zoom Out" }, "parameters": { - "general": "General", - "images": "Images", - "steps": "Steps", - "cfgScale": "CFG Scale", - "width": "Width", - "height": "Height", - "scheduler": "Scheduler", - "seed": "Seed", - "boundingBoxWidth": "Bounding Box Width", + "aspectRatio": "Ratio", + "boundingBoxHeader": "Bounding Box", "boundingBoxHeight": "Bounding Box Height", - "imageToImage": "Image to Image", - "randomizeSeed": "Randomize Seed", - "shuffle": "Shuffle Seed", - "noiseThreshold": "Noise Threshold", - "perlinNoise": "Perlin Noise", - "noiseSettings": "Noise", - "variations": "Variations", - "variationAmount": "Variation Amount", - "seedWeights": "Seed Weights", - "faceRestoration": "Face Restoration", - "restoreFaces": "Restore Faces", - "type": "Type", - "strength": "Strength", - "upscaling": "Upscaling", - "upscale": "Upscale", - "upscaleImage": "Upscale Image", + "boundingBoxWidth": "Bounding Box Width", + "cancel": { + "cancel": "Cancel", + "immediate": "Cancel immediately", + "isScheduled": "Canceling", + "schedule": "Cancel after current iteration", + "setType": "Set cancel type" + }, + "cfgScale": "CFG Scale", + "clipSkip": "CLIP Skip", + "closeViewer": "Close Viewer", + "codeformerFidelity": "Fidelity", + "coherenceMode": "Mode", + "coherencePassHeader": "Coherence Pass", + "coherenceSteps": "Steps", + "coherenceStrength": "Strength", + "compositingSettingsHeader": "Compositing Settings", + "controlNetControlMode": "Control Mode", + "copyImage": "Copy Image", + "copyImageToLink": "Copy Image To Link", "denoisingStrength": "Denoising Strength", - "scale": "Scale", - "otherOptions": "Other Options", - "seamlessTiling": "Seamless Tiling", - "seamlessXAxis": "X Axis", - "seamlessYAxis": "Y Axis", + "downloadImage": "Download Image", + "enableNoiseSettings": "Enable Noise Settings", + "faceRestoration": "Face Restoration", + "general": "General", + "height": "Height", + "hidePreview": "Hide Preview", "hiresOptim": "High Res Optimization", "hiresStrength": "High Res Strength", + "hSymmetryStep": "H Symmetry Step", "imageFit": "Fit Initial Image To Output Size", - "codeformerFidelity": "Fidelity", - "compositingSettingsHeader": "Compositing Settings", + "images": "Images", + "imageToImage": "Image to Image", + "img2imgStrength": "Image To Image Strength", + "infillMethod": "Infill Method", + "infillScalingHeader": "Infill and Scaling", + "info": "Info", + "initialImage": "Initial Image", + "invoke": { + "addingImagesTo": "Adding images to", + "invoke": "Invoke", + "missingFieldTemplate": "Missing field template", + "missingInputForField": "{{nodeLabel}} -> {{fieldLabel}} missing input", + "missingNodeTemplate": "Missing node template", + "noControlImageForControlNet": "ControlNet {{index}} has no control image", + "noInitialImageSelected": "No initial image selected", + "noModelForControlNet": "ControlNet {{index}} has no model selected.", + "noModelSelected": "No model selected", + "noNodesInGraph": "No nodes in graph", + "readyToInvoke": "Ready to Invoke", + "systemBusy": "System busy", + "systemDisconnected": "System disconnected", + "unableToInvoke": "Unable to Invoke" + }, "maskAdjustmentsHeader": "Mask Adjustments", "maskBlur": "Blur", "maskBlurMethod": "Blur Method", - "coherencePassHeader": "Coherence Pass", - "coherenceMode": "Mode", - "coherenceSteps": "Steps", - "coherenceStrength": "Strength", - "seamLowThreshold": "Low", - "seamHighThreshold": "High", - "scaleBeforeProcessing": "Scale Before Processing", - "scaledWidth": "Scaled W", - "scaledHeight": "Scaled H", - "infillMethod": "Infill Method", - "tileSize": "Tile Size", - "patchmatchDownScaleSize": "Downscale", - "boundingBoxHeader": "Bounding Box", - "seamCorrectionHeader": "Seam Correction", - "infillScalingHeader": "Infill and Scaling", - "img2imgStrength": "Image To Image Strength", - "toggleLoopback": "Toggle Loopback", - "symmetry": "Symmetry", - "hSymmetryStep": "H Symmetry Step", - "vSymmetryStep": "V Symmetry Step", - "invoke": "Invoke", - "cancel": { - "immediate": "Cancel immediately", - "schedule": "Cancel after current iteration", - "isScheduled": "Canceling", - "setType": "Set cancel type" - }, - "positivePromptPlaceholder": "Positive Prompt", "negativePromptPlaceholder": "Negative Prompt", + "noiseSettings": "Noise", + "noiseThreshold": "Noise Threshold", + "openInViewer": "Open In Viewer", + "otherOptions": "Other Options", + "patchmatchDownScaleSize": "Downscale", + "perlinNoise": "Perlin Noise", + "positivePromptPlaceholder": "Positive Prompt", + "randomizeSeed": "Randomize Seed", + "restoreFaces": "Restore Faces", + "scale": "Scale", + "scaleBeforeProcessing": "Scale Before Processing", + "scaledHeight": "Scaled H", + "scaledWidth": "Scaled W", + "scheduler": "Scheduler", + "seamCorrectionHeader": "Seam Correction", + "seamHighThreshold": "High", + "seamlessTiling": "Seamless Tiling", + "seamlessXAxis": "X Axis", + "seamlessYAxis": "Y Axis", + "seamLowThreshold": "Low", + "seed": "Seed", + "seedWeights": "Seed Weights", "sendTo": "Send to", "sendToImg2Img": "Send to Image to Image", "sendToUnifiedCanvas": "Send To Unified Canvas", - "copyImage": "Copy Image", - "copyImageToLink": "Copy Image To Link", - "downloadImage": "Download Image", - "openInViewer": "Open In Viewer", - "closeViewer": "Close Viewer", + "showOptionsPanel": "Show Options Panel", + "showPreview": "Show Preview", + "shuffle": "Shuffle Seed", + "steps": "Steps", + "strength": "Strength", + "symmetry": "Symmetry", + "tileSize": "Tile Size", + "toggleLoopback": "Toggle Loopback", + "type": "Type", + "upscale": "Upscale", + "upscaleImage": "Upscale Image", + "upscaling": "Upscaling", + "useAll": "Use All", + "useCpuNoise": "Use CPU Noise", + "useInitImg": "Use Initial Image", "usePrompt": "Use Prompt", "useSeed": "Use Seed", - "useAll": "Use All", - "useInitImg": "Use Initial Image", - "info": "Info", - "initialImage": "Initial Image", - "showOptionsPanel": "Show Options Panel", - "hidePreview": "Hide Preview", - "showPreview": "Show Preview", - "controlNetControlMode": "Control Mode", - "clipSkip": "CLIP Skip", - "aspectRatio": "Ratio" + "variationAmount": "Variation Amount", + "variations": "Variations", + "vSymmetryStep": "V Symmetry Step", + "width": "Width" + }, + "prompt": { + "combinatorial": "Combinatorial Generation", + "dynamicPrompts": "Dynamic Prompts", + "enableDynamicPrompts": "Enable Dynamic Prompts", + "maxPrompts": "Max Prompts" + }, + "sdxl": { + "cfgScale": "CFG Scale", + "concatPromptStyle": "Concatenate Prompt & Style", + "denoisingStrength": "Denoising Strength", + "loading": "Loading...", + "negAestheticScore": "Negative Aesthetic Score", + "negStylePrompt": "Negative Style Prompt", + "noModelsAvailable": "No models available", + "posAestheticScore": "Positive Aesthetic Score", + "posStylePrompt": "Positive Style Prompt", + "refiner": "Refiner", + "refinermodel": "Refiner Model", + "refinerStart": "Refiner Start", + "scheduler": "Scheduler", + "selectAModel": "Select a model", + "steps": "Steps", + "useRefiner": "Use Refiner" }, "settings": { - "models": "Models", - "displayInProgress": "Display Progress Images", - "saveSteps": "Save images every n steps", - "confirmOnDelete": "Confirm On Delete", - "displayHelpIcons": "Display Help Icons", "alternateCanvasLayout": "Alternate Canvas Layout", - "enableNodesEditor": "Enable Nodes Editor", - "enableImageDebugging": "Enable Image Debugging", - "useSlidersForAll": "Use Sliders For All Options", - "showProgressInViewer": "Show Progress Images in Viewer", "antialiasProgressImages": "Antialias Progress Images", "autoChangeDimensions": "Update W/H To Model Defaults On Change", + "beta": "Beta", + "confirmOnDelete": "Confirm On Delete", + "consoleLogLevel": "Log Level", + "developer": "Developer", + "displayHelpIcons": "Display Help Icons", + "displayInProgress": "Display Progress Images", + "enableImageDebugging": "Enable Image Debugging", + "enableNodesEditor": "Enable Nodes Editor", + "experimental": "Experimental", + "favoriteSchedulers": "Favorite Schedulers", + "favoriteSchedulersPlaceholder": "No schedulers favorited", + "general": "General", + "generation": "Generation", + "models": "Models", + "resetComplete": "Web UI has been reset.", "resetWebUI": "Reset Web UI", "resetWebUIDesc1": "Resetting the web UI only resets the browser's local cache of your images and remembered settings. It does not delete any images from disk.", "resetWebUIDesc2": "If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub.", - "resetComplete": "Web UI has been reset.", - "consoleLogLevel": "Log Level", + "saveSteps": "Save images every n steps", "shouldLogToConsole": "Console Logging", - "developer": "Developer", - "general": "General", - "generation": "Generation", - "ui": "User Interface", - "favoriteSchedulers": "Favorite Schedulers", - "favoriteSchedulersPlaceholder": "No schedulers favorited", "showAdvancedOptions": "Show Advanced Options", - "experimental": "Experimental", - "beta": "Beta" + "showProgressInViewer": "Show Progress Images in Viewer", + "ui": "User Interface", + "useSlidersForAll": "Use Sliders For All Options" }, "toast": { - "serverError": "Server Error", - "disconnected": "Disconnected from Server", - "connected": "Connected to Server", + "addedToBoard": "Added to board", + "baseModelChangedCleared": "Base model changed, cleared", "canceled": "Processing Canceled", - "tempFoldersEmptied": "Temp Folder Emptied", - "uploadFailed": "Upload failed", - "uploadFailedUnableToLoadDesc": "Unable to load file", - "uploadFailedInvalidUploadDesc": "Must be single PNG or JPEG image", + "canvasCopiedClipboard": "Canvas Copied to Clipboard", + "canvasDownloaded": "Canvas Downloaded", + "canvasMerged": "Canvas Merged", + "canvasSavedGallery": "Canvas Saved to Gallery", + "canvasSentControlnetAssets": "Canvas Sent to ControlNet & Assets", + "connected": "Connected to Server", + "disconnected": "Disconnected from Server", "downloadImageStarted": "Image Download Started", + "faceRestoreFailed": "Face Restoration Failed", "imageCopied": "Image Copied", - "problemCopyingImage": "Unable to Copy Image", "imageLinkCopied": "Image Link Copied", - "problemCopyingImageLink": "Unable to Copy Image Link", "imageNotLoaded": "No Image Loaded", "imageNotLoadedDesc": "Could not find image", + "imageSaved": "Image Saved", "imageSavedToGallery": "Image Saved to Gallery", - "canvasMerged": "Canvas Merged", - "sentToImageToImage": "Sent To Image To Image", - "sentToUnifiedCanvas": "Sent to Unified Canvas", - "parameterSet": "Parameter set", - "parameterNotSet": "Parameter not set", - "parametersSet": "Parameters Set", - "parametersNotSet": "Parameters Not Set", - "parametersNotSetDesc": "No metadata found for this image.", - "parametersFailed": "Problem loading parameters", - "parametersFailedDesc": "Unable to load init image.", - "seedSet": "Seed Set", - "seedNotSet": "Seed Not Set", - "seedNotSetDesc": "Could not find seed for this image.", - "promptSet": "Prompt Set", - "promptNotSet": "Prompt Not Set", - "promptNotSetDesc": "Could not find prompt for this image.", - "upscalingFailed": "Upscaling Failed", - "faceRestoreFailed": "Face Restoration Failed", - "metadataLoadFailed": "Failed to load metadata", - "initialImageSet": "Initial Image Set", + "imageSavingFailed": "Image Saving Failed", + "imageUploaded": "Image Uploaded", + "imageUploadFailed": "Image Upload Failed", + "incompatibleSubmodel": "incompatible submodel", "initialImageNotSet": "Initial Image Not Set", "initialImageNotSetDesc": "Could not load initial image", - "nodesSaved": "Nodes Saved", + "initialImageSet": "Initial Image Set", + "loadedWithWarnings": "Workflow Loaded with Warnings", + "maskSavedAssets": "Mask Saved to Assets", + "maskSentControlnetAssets": "Mask Sent to ControlNet & Assets", + "metadataLoadFailed": "Failed to load metadata", + "modelAdded": "Model Added: {{modelName}}", + "modelAddedSimple": "Model Added", + "modelAddFailed": "Model Add Failed", + "nodesBrokenConnections": "Cannot load. Some connections are broken.", + "nodesCleared": "Nodes Cleared", + "nodesCorruptedGraph": "Cannot load. Graph seems to be corrupted.", "nodesLoaded": "Nodes Loaded", + "nodesLoadedFailed": "Failed To Load Nodes", "nodesNotValidGraph": "Not a valid InvokeAI Node Graph", "nodesNotValidJSON": "Not a valid JSON", - "nodesCorruptedGraph": "Cannot load. Graph seems to be corrupted.", + "nodesSaved": "Nodes Saved", "nodesUnrecognizedTypes": "Cannot load. Graph has unrecognized types", - "nodesBrokenConnections": "Cannot load. Some connections are broken.", - "nodesLoadedFailed": "Failed To Load Nodes", - "nodesCleared": "Nodes Cleared" + "parameterNotSet": "Parameter not set", + "parameterSet": "Parameter set", + "parametersFailed": "Problem loading parameters", + "parametersFailedDesc": "Unable to load init image.", + "parametersNotSet": "Parameters Not Set", + "parametersNotSetDesc": "No metadata found for this image.", + "parametersSet": "Parameters Set", + "problemCopyingCanvas": "Problem Copying Canvas", + "problemCopyingCanvasDesc": "Unable to export base layer", + "problemCopyingImage": "Unable to Copy Image", + "problemCopyingImageLink": "Unable to Copy Image Link", + "problemDownloadingCanvas": "Problem Downloading Canvas", + "problemDownloadingCanvasDesc": "Unable to export base layer", + "problemImportingMask": "Problem Importing Mask", + "problemImportingMaskDesc": "Unable to export mask", + "problemMergingCanvas": "Problem Merging Canvas", + "problemMergingCanvasDesc": "Unable to export base layer", + "problemSavingCanvas": "Problem Saving Canvas", + "problemSavingCanvasDesc": "Unable to export base layer", + "problemSavingMask": "Problem Saving Mask", + "problemSavingMaskDesc": "Unable to export mask", + "promptNotSet": "Prompt Not Set", + "promptNotSetDesc": "Could not find prompt for this image.", + "promptSet": "Prompt Set", + "seedNotSet": "Seed Not Set", + "seedNotSetDesc": "Could not find seed for this image.", + "seedSet": "Seed Set", + "sentToImageToImage": "Sent To Image To Image", + "sentToUnifiedCanvas": "Sent to Unified Canvas", + "serverError": "Server Error", + "setCanvasInitialImage": "Set as canvas initial image", + "setControlImage": "Set as control image", + "setIPAdapterImage": "Set as IP Adapter Image", + "setInitialImage": "Set as initial image", + "setNodeField": "Set as node field", + "tempFoldersEmptied": "Temp Folder Emptied", + "uploadFailed": "Upload failed", + "uploadFailedInvalidUploadDesc": "Must be single PNG or JPEG image", + "uploadFailedUnableToLoadDesc": "Unable to load file", + "upscalingFailed": "Upscaling Failed", + "workflowLoaded": "Workflow Loaded" }, "tooltip": { "feature": { - "prompt": "This is the prompt field. Prompt includes generation objects and stylistic terms. You can add weight (token importance) in the prompt as well, but CLI commands and parameters will not work.", - "gallery": "Gallery displays generations from the outputs folder as they're created. Settings are stored within files and accesed by context menu.", - "other": "These options will enable alternative processing modes for Invoke. 'Seamless tiling' will create repeating patterns in the output. 'High resolution' is generation in two steps with img2img: use this setting when you want a larger and more coherent image without artifacts. It will take longer than usual txt2img.", - "seed": "Seed value affects the initial noise from which the image is formed. You can use the already existing seeds from previous images. 'Noise Threshold' is used to mitigate artifacts at high CFG values (try the 0-10 range), and Perlin to add Perlin noise during generation: both serve to add variation to your outputs.", - "variations": "Try a variation with a value between 0.1 and 1.0 to change the result for a given seed. Interesting variations of the seed are between 0.1 and 0.3.", - "upscale": "Use ESRGAN to enlarge the image immediately after generation.", - "faceCorrection": "Face correction with GFPGAN or Codeformer: the algorithm detects faces in the image and corrects any defects. High value will change the image more, resulting in more attractive faces. Codeformer with a higher fidelity preserves the original image at the expense of stronger face correction.", - "imageToImage": "Image to Image loads any image as initial, which is then used to generate a new one along with the prompt. The higher the value, the more the result image will change. Values from 0.0 to 1.0 are possible, the recommended range is .25-.75", "boundingBox": "The bounding box is the same as the Width and Height settings for Text to Image or Image to Image. Only the area in the box will be processed.", + "faceCorrection": "Face correction with GFPGAN or Codeformer: the algorithm detects faces in the image and corrects any defects. High value will change the image more, resulting in more attractive faces. Codeformer with a higher fidelity preserves the original image at the expense of stronger face correction.", + "gallery": "Gallery displays generations from the outputs folder as they're created. Settings are stored within files and accesed by context menu.", + "imageToImage": "Image to Image loads any image as initial, which is then used to generate a new one along with the prompt. The higher the value, the more the result image will change. Values from 0.0 to 1.0 are possible, the recommended range is .25-.75", + "infillAndScaling": "Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes).", + "other": "These options will enable alternative processing modes for Invoke. 'Seamless tiling' will create repeating patterns in the output. 'High resolution' is generation in two steps with img2img: use this setting when you want a larger and more coherent image without artifacts. It will take longer than usual txt2img.", + "prompt": "This is the prompt field. Prompt includes generation objects and stylistic terms. You can add weight (token importance) in the prompt as well, but CLI commands and parameters will not work.", "seamCorrection": "Controls the handling of visible seams that occur between generated images on the canvas.", - "infillAndScaling": "Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes)." + "seed": "Seed value affects the initial noise from which the image is formed. You can use the already existing seeds from previous images. 'Noise Threshold' is used to mitigate artifacts at high CFG values (try the 0-10 range), and Perlin to add Perlin noise during generation: both serve to add variation to your outputs.", + "upscale": "Use ESRGAN to enlarge the image immediately after generation.", + "variations": "Try a variation with a value between 0.1 and 1.0 to change the result for a given seed. Interesting variations of the seed are between 0.1 and 0.3." } }, + "ui": { + "hideProgressImages": "Hide Progress Images", + "lockRatio": "Lock Ratio", + "showProgressImages": "Show Progress Images", + "swapSizes": "Swap Sizes" + }, "unifiedCanvas": { - "layer": "Layer", - "base": "Base", - "mask": "Mask", - "maskingOptions": "Masking Options", - "enableMask": "Enable Mask", - "preserveMaskedArea": "Preserve Masked Area", - "clearMask": "Clear Mask", - "brush": "Brush", - "eraser": "Eraser", - "fillBoundingBox": "Fill Bounding Box", - "eraseBoundingBox": "Erase Bounding Box", - "colorPicker": "Color Picker", - "brushOptions": "Brush Options", - "brushSize": "Size", - "move": "Move", - "resetView": "Reset View", - "mergeVisible": "Merge Visible", - "saveToGallery": "Save To Gallery", - "copyToClipboard": "Copy to Clipboard", - "downloadAsImage": "Download As Image", - "undo": "Undo", - "redo": "Redo", - "clearCanvas": "Clear Canvas", - "canvasSettings": "Canvas Settings", - "showIntermediates": "Show Intermediates", - "showGrid": "Show Grid", - "snapToGrid": "Snap to Grid", - "darkenOutsideSelection": "Darken Outside Selection", - "autoSaveToGallery": "Auto Save to Gallery", - "saveBoxRegionOnly": "Save Box Region Only", - "limitStrokesToBox": "Limit Strokes to Box", - "showCanvasDebugInfo": "Show Additional Canvas Info", - "clearCanvasHistory": "Clear Canvas History", - "clearHistory": "Clear History", - "clearCanvasHistoryMessage": "Clearing the canvas history leaves your current canvas intact, but irreversibly clears the undo and redo history.", - "clearCanvasHistoryConfirm": "Are you sure you want to clear the canvas history?", - "emptyTempImageFolder": "Empty Temp Image Folder", - "emptyFolder": "Empty Folder", - "emptyTempImagesFolderMessage": "Emptying the temp image folder also fully resets the Unified Canvas. This includes all undo/redo history, images in the staging area, and the canvas base layer.", - "emptyTempImagesFolderConfirm": "Are you sure you want to empty the temp folder?", - "activeLayer": "Active Layer", - "canvasScale": "Canvas Scale", - "boundingBox": "Bounding Box", - "scaledBoundingBox": "Scaled Bounding Box", - "boundingBoxPosition": "Bounding Box Position", - "canvasDimensions": "Canvas Dimensions", - "canvasPosition": "Canvas Position", - "cursorPosition": "Cursor Position", - "previous": "Previous", - "next": "Next", "accept": "Accept", - "showHide": "Show/Hide", - "discardAll": "Discard All", + "activeLayer": "Active Layer", + "antialiasing": "Antialiasing", + "autoSaveToGallery": "Auto Save to Gallery", + "base": "Base", "betaClear": "Clear", "betaDarkenOutside": "Darken Outside", "betaLimitToBox": "Limit To Box", "betaPreserveMasked": "Preserve Masked", - "antialiasing": "Antialiasing" - }, - "ui": { - "showProgressImages": "Show Progress Images", - "hideProgressImages": "Hide Progress Images", - "swapSizes": "Swap Sizes", - "lockRatio": "Lock Ratio" - }, - "nodes": { - "reloadNodeTemplates": "Reload Node Templates", - "downloadWorkflow": "Download Workflow JSON", - "loadWorkflow": "Load Workflow", - "resetWorkflow": "Reset Workflow", - "resetWorkflowDesc": "Are you sure you want to reset this workflow?", - "resetWorkflowDesc2": "Resetting the workflow will clear all nodes, edges and workflow details.", - "zoomInNodes": "Zoom In", - "zoomOutNodes": "Zoom Out", - "fitViewportNodes": "Fit View", - "hideGraphNodes": "Hide Graph Overlay", - "showGraphNodes": "Show Graph Overlay", - "hideLegendNodes": "Hide Field Type Legend", - "showLegendNodes": "Show Field Type Legend", - "hideMinimapnodes": "Hide MiniMap", - "showMinimapnodes": "Show MiniMap" + "boundingBox": "Bounding Box", + "boundingBoxPosition": "Bounding Box Position", + "brush": "Brush", + "brushOptions": "Brush Options", + "brushSize": "Size", + "canvasDimensions": "Canvas Dimensions", + "canvasPosition": "Canvas Position", + "canvasScale": "Canvas Scale", + "canvasSettings": "Canvas Settings", + "clearCanvas": "Clear Canvas", + "clearCanvasHistory": "Clear Canvas History", + "clearCanvasHistoryConfirm": "Are you sure you want to clear the canvas history?", + "clearCanvasHistoryMessage": "Clearing the canvas history leaves your current canvas intact, but irreversibly clears the undo and redo history.", + "clearHistory": "Clear History", + "clearMask": "Clear Mask", + "colorPicker": "Color Picker", + "copyToClipboard": "Copy to Clipboard", + "cursorPosition": "Cursor Position", + "darkenOutsideSelection": "Darken Outside Selection", + "discardAll": "Discard All", + "downloadAsImage": "Download As Image", + "emptyFolder": "Empty Folder", + "emptyTempImageFolder": "Empty Temp Image Folder", + "emptyTempImagesFolderConfirm": "Are you sure you want to empty the temp folder?", + "emptyTempImagesFolderMessage": "Emptying the temp image folder also fully resets the Unified Canvas. This includes all undo/redo history, images in the staging area, and the canvas base layer.", + "enableMask": "Enable Mask", + "eraseBoundingBox": "Erase Bounding Box", + "eraser": "Eraser", + "fillBoundingBox": "Fill Bounding Box", + "layer": "Layer", + "limitStrokesToBox": "Limit Strokes to Box", + "mask": "Mask", + "maskingOptions": "Masking Options", + "mergeVisible": "Merge Visible", + "move": "Move", + "next": "Next", + "preserveMaskedArea": "Preserve Masked Area", + "previous": "Previous", + "redo": "Redo", + "resetView": "Reset View", + "saveBoxRegionOnly": "Save Box Region Only", + "saveToGallery": "Save To Gallery", + "scaledBoundingBox": "Scaled Bounding Box", + "showCanvasDebugInfo": "Show Additional Canvas Info", + "showGrid": "Show Grid", + "showHide": "Show/Hide", + "showIntermediates": "Show Intermediates", + "snapToGrid": "Snap to Grid", + "undo": "Undo" } } diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index d846f3ca47..c309e4de50 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -13,14 +13,15 @@ "reset": "Reset", "rotateClockwise": "Rotate Clockwise", "rotateCounterClockwise": "Rotate Counter-Clockwise", - "showGallery": "Show Gallery", + "showGalleryPanel": "Show Gallery Panel", "showOptionsPanel": "Show Side Panel", "toggleAutoscroll": "Toggle autoscroll", "toggleLogViewer": "Toggle Log Viewer", "uploadImage": "Upload Image", "useThisParameter": "Use this parameter", "zoomIn": "Zoom In", - "zoomOut": "Zoom Out" + "zoomOut": "Zoom Out", + "loadMore": "Load More" }, "boards": { "addBoard": "Add Board", @@ -49,6 +50,7 @@ "close": "Close", "communityLabel": "Community", "controlNet": "Controlnet", + "ipAdapter": "IP Adapter", "darkMode": "Dark Mode", "discordLabel": "Discord", "dontAskMeAgain": "Don't ask me again", @@ -109,6 +111,7 @@ "statusModelChanged": "Model Changed", "statusModelConverted": "Model Converted", "statusPreparing": "Preparing", + "statusProcessing": "Processing", "statusProcessingCanceled": "Processing Canceled", "statusProcessingComplete": "Processing Complete", "statusRestoringFaces": "Restoring Faces", @@ -191,13 +194,76 @@ "showAdvanced": "Show Advanced", "toggleControlNet": "Toggle this ControlNet", "w": "W", - "weight": "Weight" + "weight": "Weight", + "enableIPAdapter": "Enable IP Adapter", + "ipAdapterModel": "Adapter Model", + "resetIPAdapterImage": "Reset IP Adapter Image", + "ipAdapterImageFallback": "No IP Adapter Image Selected" }, "embedding": { "addEmbedding": "Add Embedding", "incompatibleModel": "Incompatible base model:", "noMatchingEmbedding": "No matching Embeddings" }, + "queue": { + "queue": "Queue", + "queueFront": "Add to Front of Queue", + "queueBack": "Add to Queue", + "queueCountPrediction": "Add {{predicted}} to Queue", + "queueMaxExceeded": "Max of {{max_queue_size}} exceeded, would skip {{skip}}", + "queuedCount": "{{pending}} Pending", + "queueTotal": "{{total}} Total", + "queueEmpty": "Queue Empty", + "enqueueing": "Queueing Batch", + "resume": "Resume", + "resumeTooltip": "Resume Processor", + "resumeSucceeded": "Processor Resumed", + "resumeFailed": "Problem Resuming Processor", + "pause": "Pause", + "pauseTooltip": "Pause Processor", + "pauseSucceeded": "Processor Paused", + "pauseFailed": "Problem Pausing Processor", + "cancel": "Cancel", + "cancelTooltip": "Cancel Current Item", + "cancelSucceeded": "Item Canceled", + "cancelFailed": "Problem Canceling Item", + "prune": "Prune", + "pruneTooltip": "Prune {{item_count}} Completed Items", + "pruneSucceeded": "Pruned {{item_count}} Completed Items from Queue", + "pruneFailed": "Problem Pruning Queue", + "clear": "Clear", + "clearTooltip": "Cancel and Clear All Items", + "clearSucceeded": "Queue Cleared", + "clearFailed": "Problem Clearing Queue", + "cancelBatch": "Cancel Batch", + "cancelItem": "Cancel Item", + "cancelBatchSucceeded": "Batch Canceled", + "cancelBatchFailed": "Problem Canceling Batch", + "clearQueueAlertDialog": "Clearing the queue immediately cancels any processing items and clears the queue entirely.", + "clearQueueAlertDialog2": "Are you sure you want to clear the queue?", + "current": "Current", + "next": "Next", + "status": "Status", + "total": "Total", + "pending": "Pending", + "in_progress": "In Progress", + "completed": "Completed", + "failed": "Failed", + "canceled": "Canceled", + "completedIn": "Completed in", + "batch": "Batch", + "item": "Item", + "session": "Session", + "batchValues": "Batch Values", + "notReady": "Unable to Queue", + "batchQueued": "Batch Queued", + "batchQueuedDesc": "Added {{item_count}} sessions to {{direction}} of queue", + "front": "front", + "back": "back", + "batchFailedToQueue": "Failed to Queue Batch", + "graphQueued": "Graph queued", + "graphFailedToQueue": "Failed to queue graph" + }, "gallery": { "allImagesLoaded": "All Images Loaded", "assets": "Assets", @@ -636,7 +702,8 @@ "collectionItemDescription": "TODO", "colorCodeEdges": "Color-Code Edges", "colorCodeEdgesHelp": "Color-code edges according to their connected fields", - "colorCollectionDescription": "A collection of colors.", + "colorCollection": "A collection of colors.", + "colorCollectionDescription": "TODO", "colorField": "Color", "colorFieldDescription": "A RGBA color.", "colorPolymorphic": "Color Polymorphic", @@ -683,7 +750,8 @@ "imageFieldDescription": "Images may be passed between nodes.", "imagePolymorphic": "Image Polymorphic", "imagePolymorphicDescription": "A collection of images.", - "inputFields": "Input Feilds", + "inputField": "Input Field", + "inputFields": "Input Fields", "inputMayOnlyHaveOneConnection": "Input may only have one connection", "inputNode": "Input Node", "integer": "Integer", @@ -701,6 +769,7 @@ "latentsPolymorphicDescription": "Latents may be passed between nodes.", "loadingNodes": "Loading Nodes...", "loadWorkflow": "Load Workflow", + "noWorkflow": "No Workflow", "loRAModelField": "LoRA", "loRAModelFieldDescription": "TODO", "mainModelField": "Model", @@ -722,14 +791,15 @@ "noImageFoundState": "No initial image found in state", "noMatchingNodes": "No matching nodes", "noNodeSelected": "No node selected", - "noOpacity": "Node Opacity", + "nodeOpacity": "Node Opacity", "noOutputRecorded": "No outputs recorded", "noOutputSchemaName": "No output schema name found in ref object", "notes": "Notes", "notesDescription": "Add notes about your workflow", "oNNXModelField": "ONNX Model", "oNNXModelFieldDescription": "ONNX model field.", - "outputFields": "Output Feilds", + "outputField": "Output Field", + "outputFields": "Output Fields", "outputNode": "Output node", "outputSchemaNotFound": "Output schema not found", "pickOne": "Pick One", @@ -778,6 +848,7 @@ "unknownNode": "Unknown Node", "unknownTemplate": "Unknown Template", "unkownInvocation": "Unknown Invocation type", + "updateNode": "Update Node", "updateApp": "Update App", "vaeField": "Vae", "vaeFieldDescription": "Vae submodel.", @@ -814,6 +885,7 @@ }, "cfgScale": "CFG Scale", "clipSkip": "CLIP Skip", + "clipSkipWithLayerCount": "CLIP Skip {{layerCount}}", "closeViewer": "Close Viewer", "codeformerFidelity": "Fidelity", "coherenceMode": "Mode", @@ -852,6 +924,7 @@ "noInitialImageSelected": "No initial image selected", "noModelForControlNet": "ControlNet {{index}} has no model selected.", "noModelSelected": "No model selected", + "noPrompts": "No prompts generated", "noNodesInGraph": "No nodes in graph", "readyToInvoke": "Ready to Invoke", "systemBusy": "System busy", @@ -870,7 +943,12 @@ "perlinNoise": "Perlin Noise", "positivePromptPlaceholder": "Positive Prompt", "randomizeSeed": "Randomize Seed", + "manualSeed": "Manual Seed", + "randomSeed": "Random Seed", "restoreFaces": "Restore Faces", + "iterations": "Iterations", + "iterationsWithCount_one": "{{count}} Iteration", + "iterationsWithCount_other": "{{count}} Iterations", "scale": "Scale", "scaleBeforeProcessing": "Scale Before Processing", "scaledHeight": "Scaled H", @@ -881,13 +959,17 @@ "seamlessTiling": "Seamless Tiling", "seamlessXAxis": "X Axis", "seamlessYAxis": "Y Axis", + "seamlessX": "Seamless X", + "seamlessY": "Seamless Y", + "seamlessX&Y": "Seamless X & Y", "seamLowThreshold": "Low", "seed": "Seed", "seedWeights": "Seed Weights", + "imageActions": "Image Actions", "sendTo": "Send to", "sendToImg2Img": "Send to Image to Image", "sendToUnifiedCanvas": "Send To Unified Canvas", - "showOptionsPanel": "Show Options Panel", + "showOptionsPanel": "Show Side Panel (O or T)", "showPreview": "Show Preview", "shuffle": "Shuffle Seed", "steps": "Steps", @@ -896,11 +978,13 @@ "tileSize": "Tile Size", "toggleLoopback": "Toggle Loopback", "type": "Type", - "upscale": "Upscale", + "upscale": "Upscale (Shift + U)", "upscaleImage": "Upscale Image", "upscaling": "Upscaling", "useAll": "Use All", "useCpuNoise": "Use CPU Noise", + "cpuNoise": "CPU Noise", + "gpuNoise": "GPU Noise", "useInitImg": "Use Initial Image", "usePrompt": "Use Prompt", "useSeed": "Use Seed", @@ -909,11 +993,20 @@ "vSymmetryStep": "V Symmetry Step", "width": "Width" }, - "prompt": { + "dynamicPrompts": { "combinatorial": "Combinatorial Generation", "dynamicPrompts": "Dynamic Prompts", "enableDynamicPrompts": "Enable Dynamic Prompts", - "maxPrompts": "Max Prompts" + "maxPrompts": "Max Prompts", + "promptsWithCount_one": "{{count}} Prompt", + "promptsWithCount_other": "{{count}} Prompts", + "seedBehaviour": { + "label": "Seed Behaviour", + "perIterationLabel": "Seed per Iteration", + "perIterationDesc": "Use a different seed for each iteration", + "perPromptLabel": "Seed per Prompt", + "perPromptDesc": "Use a different seed for each prompt" + } }, "sdxl": { "cfgScale": "CFG Scale", @@ -1036,6 +1129,7 @@ "serverError": "Server Error", "setCanvasInitialImage": "Set as canvas initial image", "setControlImage": "Set as control image", + "setIPAdapterImage": "Set as IP Adapter Image", "setInitialImage": "Set as initial image", "setNodeField": "Set as node field", "tempFoldersEmptied": "Temp Folder Emptied", @@ -1060,6 +1154,136 @@ "variations": "Try a variation with a value between 0.1 and 1.0 to change the result for a given seed. Interesting variations of the seed are between 0.1 and 0.3." } }, + "popovers": { + "clipSkip": { + "heading": "CLIP Skip", + "paragraph": "Choose how many layers of the CLIP model to skip. Certain models are better suited to be used with CLIP Skip." + }, + "compositingBlur": { + "heading": "Blur", + "paragraph": "The blur radius of the mask." + }, + "compositingBlurMethod": { + "heading": "Blur Method", + "paragraph": "The method of blur applied to the masked area." + }, + "compositingCoherencePass": { + "heading": "Coherence Pass", + "paragraph": "Composite the Inpainted/Outpainted images." + }, + "compositingCoherenceMode": { + "heading": "Mode", + "paragraph": "The mode of the Coherence Pass." + }, + "compositingCoherenceSteps": { + "heading": "Steps", + "paragraph": "Number of steps in the Coherence Pass. Similar to Denoising Steps." + }, + "compositingStrength": { + "heading": "Strength", + "paragraph": "Amount of noise added for the Coherence Pass. Similar to Denoising Strength." + }, + "compositingMaskAdjustments": { + "heading": "Mask Adjustments", + "paragraph": "Adjust the mask." + }, + "controlNetBeginEnd": { + "heading": "Begin / End Step Percentage", + "paragraph": "Which parts of the denoising process will have the ControlNet applied. ControlNets applied at the start of the process guide composition, and ControlNets applied at the end guide details." + }, + "controlNetControlMode": { + "heading": "Control Mode", + "paragraph": "Lends more weight to either the prompt or ControlNet." + }, + "controlNetResizeMode": { + "heading": "Resize Mode", + "paragraph": "How the ControlNet image will be fit to the image generation Ratio" + }, + "controlNetToggle": { + "heading": "Enable ControlNet", + "paragraph": "ControlNets provide guidance to the generation process, helping create images with controlled composition, structure, or style, depending on the model selected." + }, + "controlNetWeight": { + "heading": "Weight", + "paragraph": "How strongly the ControlNet will impact the generated image." + }, + "dynamicPromptsToggle": { + "heading": "Enable Dynamic Prompts", + "paragraph": "Dynamic prompts allow multiple options within a prompt. Dynamic prompts can be used by: {option1|option2|option3}. Combinations of prompts will be randomly generated until the “Images” number has been reached." + }, + "dynamicPromptsCombinatorial": { + "heading": "Combinatorial Generation", + "paragraph": "Generate an image for every possible combination of Dynamic Prompt until the Max Prompts is reached." + }, + "infillMethod": { + "heading": "Infill Method", + "paragraph": "Method to infill the selected area." + }, + "lora": { + "heading": "LoRA", + "paragraph": "Weight of the LoRA. Higher weight will lead to larger impacts on the final image." + }, + "noiseEnable": { + "heading": "Enable Noise Settings", + "paragraph": "Advanced control over noise generation." + }, + "noiseUseCPU": { + "heading": "Use CPU Noise", + "paragraph": "Uses the CPU to generate random noise." + }, + "paramCFGScale": { + "heading": "CFG Scale", + "paragraph": "Controls how much your prompt influences the generation process." + }, + "paramDenoisingStrength": { + "heading": "Denoising Strength", + "paragraph": "How much noise is added to the input image. 0 will result in an identical image, while 1 will result in a completely new image." + }, + "paramImages": { + "heading": "Images", + "paragraph": "Number of images that will be generated." + }, + "paramModel": { + "heading": "Model", + "paragraph": "Model used for the denoising steps. Different models are trained to specialize in producing different aesthetic results and content." + }, + "paramNegativeConditioning": { + "heading": "Negative Prompts", + "paragraph": "This is where you enter your negative prompts." + }, + "paramPositiveConditioning": { + "heading": "Positive Prompts", + "paragraph": "This is where you enter your positive prompts." + }, + "paramRatio": { + "heading": "Ratio", + "paragraph": "The ratio of the dimensions of the image generated. An image size (in number of pixels) equivalent to 512x512 is recommended for SD1.5 models and a size equivalent to 1024x1024 is recommended for SDXL models." + }, + "paramScheduler": { + "heading": "Scheduler", + "paragraph": "Scheduler defines how to iteratively add noise to an image or how to update a sample based on a model's output." + }, + "paramSeed": { + "heading": "Seed", + "paragraph": "Controls the starting noise used for generation. Disable “Random Seed” to produce identical results with the same generation settings." + }, + "paramSteps": { + "heading": "Steps", + "paragraph": "Number of steps that will be performed in each generation. Higher step counts will typically create better images but will require more generation time." + }, + "paramVAE": { + "heading": "VAE", + "paragraph": "Model used for translating AI output into the final image." + }, + "paramVAEPrecision": { + "heading": "VAE Precision", + "paragraph": "The precision used during VAE encoding and decoding. Fp16/Half precision is more efficient, at the expense of minor image variations." + }, + "scaleBeforeProcessing": { + "heading": "Scale Before Processing", + "paragraph": "Scales the selected area to the size best suited for the model before the image generation process." + } + }, "ui": { "hideProgressImages": "Hide Progress Images", "lockRatio": "Lock Ratio", diff --git a/invokeai/frontend/web/src/app/components/AuxiliaryProgressIndicator.tsx b/invokeai/frontend/web/src/app/components/AuxiliaryProgressIndicator.tsx deleted file mode 100644 index a0c5d22266..0000000000 --- a/invokeai/frontend/web/src/app/components/AuxiliaryProgressIndicator.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { Flex, Spinner, Tooltip } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { useAppSelector } from 'app/store/storeHooks'; -import { systemSelector } from 'features/system/store/systemSelectors'; -import { memo } from 'react'; - -const selector = createSelector(systemSelector, (system) => { - const { isUploading } = system; - - let tooltip = ''; - - if (isUploading) { - tooltip = 'Uploading...'; - } - - return { - tooltip, - shouldShow: isUploading, - }; -}); - -export const AuxiliaryProgressIndicator = () => { - const { shouldShow, tooltip } = useAppSelector(selector); - - if (!shouldShow) { - return null; - } - - return ( - - - - - - ); -}; - -export default memo(AuxiliaryProgressIndicator); diff --git a/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts b/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts index ac48fcc7b1..c77dfd5d86 100644 --- a/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts +++ b/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts @@ -1,6 +1,8 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useQueueBack } from 'features/queue/hooks/useQueueBack'; +import { useQueueFront } from 'features/queue/hooks/useQueueFront'; import { ctrlKeyPressed, metaKeyPressed, @@ -33,6 +35,39 @@ const globalHotkeysSelector = createSelector( const GlobalHotkeys: React.FC = () => { const dispatch = useAppDispatch(); const { shift, ctrl, meta } = useAppSelector(globalHotkeysSelector); + const { + queueBack, + isDisabled: isDisabledQueueBack, + isLoading: isLoadingQueueBack, + } = useQueueBack(); + + useHotkeys( + ['ctrl+enter', 'meta+enter'], + queueBack, + { + enabled: () => !isDisabledQueueBack && !isLoadingQueueBack, + preventDefault: true, + enableOnFormTags: ['input', 'textarea', 'select'], + }, + [queueBack, isDisabledQueueBack, isLoadingQueueBack] + ); + + const { + queueFront, + isDisabled: isDisabledQueueFront, + isLoading: isLoadingQueueFront, + } = useQueueFront(); + + useHotkeys( + ['ctrl+shift+enter', 'meta+shift+enter'], + queueFront, + { + enabled: () => !isDisabledQueueFront && !isLoadingQueueFront, + preventDefault: true, + enableOnFormTags: ['input', 'textarea', 'select'], + }, + [queueFront, isDisabledQueueFront, isLoadingQueueFront] + ); useHotkeys( '*', diff --git a/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx b/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx index 505b1e13b4..8c8c02ee85 100644 --- a/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx +++ b/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx @@ -17,6 +17,7 @@ import '../../i18n'; import AppDndContext from '../../features/dnd/components/AppDndContext'; import { $customStarUI, CustomStarUi } from 'app/store/nanostores/customStarUI'; import { $headerComponent } from 'app/store/nanostores/headerComponent'; +import { $queueId, DEFAULT_QUEUE_ID } from 'features/queue/store/nanoStores'; const App = lazy(() => import('./App')); const ThemeLocaleProvider = lazy(() => import('./ThemeLocaleProvider')); @@ -28,6 +29,7 @@ interface Props extends PropsWithChildren { headerComponent?: ReactNode; middleware?: Middleware[]; projectId?: string; + queueId?: string; selectedImage?: { imageName: string; action: 'sendToImg2Img' | 'sendToCanvas' | 'useAllParameters'; @@ -42,6 +44,7 @@ const InvokeAIUI = ({ headerComponent, middleware, projectId, + queueId, selectedImage, customStarUi, }: Props) => { @@ -61,6 +64,11 @@ const InvokeAIUI = ({ $projectId.set(projectId); } + // configure API client project header + if (queueId) { + $queueId.set(queueId); + } + // reset dynamically added middlewares resetMiddlewares(); @@ -81,8 +89,9 @@ const InvokeAIUI = ({ $baseUrl.set(undefined); $authToken.set(undefined); $projectId.set(undefined); + $queueId.set(DEFAULT_QUEUE_ID); }; - }, [apiUrl, token, middleware, projectId]); + }, [apiUrl, token, middleware, projectId, queueId]); useEffect(() => { if (customStarUi) { diff --git a/invokeai/frontend/web/src/app/components/Toaster.ts b/invokeai/frontend/web/src/app/components/Toaster.ts index 9d7149023b..e319bef59c 100644 --- a/invokeai/frontend/web/src/app/components/Toaster.ts +++ b/invokeai/frontend/web/src/app/components/Toaster.ts @@ -1,6 +1,5 @@ import { useToast } from '@chakra-ui/react'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { toastQueueSelector } from 'features/system/store/systemSelectors'; import { addToast, clearToastQueue } from 'features/system/store/systemSlice'; import { MakeToastArg, makeToast } from 'features/system/util/makeToast'; import { memo, useCallback, useEffect } from 'react'; @@ -11,7 +10,7 @@ import { memo, useCallback, useEffect } from 'react'; */ const Toaster = () => { const dispatch = useAppDispatch(); - const toastQueue = useAppSelector(toastQueueSelector); + const toastQueue = useAppSelector((state) => state.system.toastQueue); const toast = useToast(); useEffect(() => { toastQueue.forEach((t) => { diff --git a/invokeai/frontend/web/src/app/logging/logger.ts b/invokeai/frontend/web/src/app/logging/logger.ts index 2d7b8a7744..0e0a1a7324 100644 --- a/invokeai/frontend/web/src/app/logging/logger.ts +++ b/invokeai/frontend/web/src/app/logging/logger.ts @@ -20,6 +20,7 @@ export type LoggerNamespace = | 'system' | 'socketio' | 'session' + | 'queue' | 'dnd'; export const logger = (namespace: LoggerNamespace) => diff --git a/invokeai/frontend/web/src/app/logging/useLogger.ts b/invokeai/frontend/web/src/app/logging/useLogger.ts index d31bcc2660..697c3d3fc8 100644 --- a/invokeai/frontend/web/src/app/logging/useLogger.ts +++ b/invokeai/frontend/web/src/app/logging/useLogger.ts @@ -1,7 +1,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { createLogWriter } from '@roarr/browser-log-writer'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { isEqual } from 'lodash-es'; import { useEffect, useMemo } from 'react'; import { ROARR, Roarr } from 'roarr'; @@ -14,8 +14,8 @@ import { } from './logger'; const selector = createSelector( - systemSelector, - (system) => { + stateSelector, + ({ system }) => { const { consoleLogLevel, shouldLogToConsole } = system; return { diff --git a/invokeai/frontend/web/src/app/store/actions.ts b/invokeai/frontend/web/src/app/store/actions.ts index e07920ce0c..418440a5fb 100644 --- a/invokeai/frontend/web/src/app/store/actions.ts +++ b/invokeai/frontend/web/src/app/store/actions.ts @@ -1,4 +1,10 @@ import { createAction } from '@reduxjs/toolkit'; import { InvokeTabName } from 'features/ui/store/tabMap'; +import { BatchConfig } from 'services/api/types'; -export const userInvoked = createAction('app/userInvoked'); +export const enqueueRequested = createAction<{ + tabName: InvokeTabName; + prepend: boolean; +}>('app/enqueueRequested'); + +export const batchEnqueued = createAction('app/batchEnqueued'); diff --git a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts index 1b21770aa0..9de7f739a1 100644 --- a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts +++ b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts @@ -1,5 +1,6 @@ import { canvasPersistDenylist } from 'features/canvas/store/canvasPersistDenylist'; import { controlNetDenylist } from 'features/controlNet/store/controlNetDenylist'; +import { dynamicPromptsPersistDenylist } from 'features/dynamicPrompts/store/dynamicPromptsPersistDenylist'; import { galleryPersistDenylist } from 'features/gallery/store/galleryPersistDenylist'; import { nodesPersistDenylist } from 'features/nodes/store/nodesPersistDenylist'; import { generationPersistDenylist } from 'features/parameters/store/generationPersistDenylist'; @@ -20,6 +21,7 @@ const serializationDenylist: { system: systemPersistDenylist, ui: uiPersistDenylist, controlNet: controlNetDenylist, + dynamicPrompts: dynamicPromptsPersistDenylist, }; export const serialize: SerializeFunction = (data, key) => { diff --git a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts index 159952d654..508ab9f69a 100644 --- a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts +++ b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts @@ -1,9 +1,11 @@ import { initialCanvasState } from 'features/canvas/store/canvasSlice'; import { initialControlNetState } from 'features/controlNet/store/controlNetSlice'; +import { initialDynamicPromptsState } from 'features/dynamicPrompts/store/dynamicPromptsSlice'; import { initialGalleryState } from 'features/gallery/store/gallerySlice'; import { initialNodesState } from 'features/nodes/store/nodesSlice'; import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { initialPostprocessingState } from 'features/parameters/store/postprocessingSlice'; +import { initialSDXLState } from 'features/sdxl/store/sdxlSlice'; import { initialConfigState } from 'features/system/store/configSlice'; import { initialSystemState } from 'features/system/store/systemSlice'; import { initialHotkeysState } from 'features/ui/store/hotkeysSlice'; @@ -24,6 +26,8 @@ const initialStates: { ui: initialUIState, hotkeys: initialHotkeysState, controlNet: initialControlNetState, + dynamicPrompts: initialDynamicPromptsState, + sdxl: initialSDXLState, }; export const unserialize: UnserializeFunction = (data, key) => { diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts index 261edba0af..ead6e1cd42 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts @@ -9,6 +9,7 @@ import { import type { AppDispatch, RootState } from '../../store'; import { addCommitStagingAreaImageListener } from './listeners/addCommitStagingAreaImageListener'; import { addFirstListImagesListener } from './listeners/addFirstListImagesListener.ts'; +import { addAnyEnqueuedListener } from './listeners/anyEnqueued'; import { addAppConfigReceivedListener } from './listeners/appConfigReceived'; import { addAppStartedListener } from './listeners/appStarted'; import { addDeleteBoardAndImagesFulfilledListener } from './listeners/boardAndImagesDeleted'; @@ -22,6 +23,9 @@ import { addCanvasMergedListener } from './listeners/canvasMerged'; import { addCanvasSavedToGalleryListener } from './listeners/canvasSavedToGallery'; import { addControlNetAutoProcessListener } from './listeners/controlNetAutoProcess'; import { addControlNetImageProcessedListener } from './listeners/controlNetImageProcessed'; +import { addEnqueueRequestedCanvasListener } from './listeners/enqueueRequestedCanvas'; +import { addEnqueueRequestedLinear } from './listeners/enqueueRequestedLinear'; +import { addEnqueueRequestedNodes } from './listeners/enqueueRequestedNodes'; import { addImageAddedToBoardFulfilledListener, addImageAddedToBoardRejectedListener, @@ -48,6 +52,7 @@ import { addImagesUnstarredListener } from './listeners/imagesUnstarred'; import { addInitialImageSelectedListener } from './listeners/initialImageSelected'; import { addModelSelectedListener } from './listeners/modelSelected'; import { addModelsLoadedListener } from './listeners/modelsLoaded'; +import { addDynamicPromptsListener } from './listeners/promptChanged'; import { addReceivedOpenAPISchemaListener } from './listeners/receivedOpenAPISchema'; import { addSessionCanceledFulfilledListener, @@ -64,7 +69,6 @@ import { addSessionInvokedPendingListener, addSessionInvokedRejectedListener, } from './listeners/sessionInvoked'; -import { addSessionReadyToInvokeListener } from './listeners/sessionReadyToInvoke'; import { addSocketConnectedEventListener as addSocketConnectedListener } from './listeners/socketio/socketConnected'; import { addSocketDisconnectedEventListener as addSocketDisconnectedListener } from './listeners/socketio/socketDisconnected'; import { addGeneratorProgressEventListener as addGeneratorProgressListener } from './listeners/socketio/socketGeneratorProgress'; @@ -74,16 +78,13 @@ import { addInvocationErrorEventListener as addInvocationErrorListener } from '. import { addInvocationRetrievalErrorEventListener } from './listeners/socketio/socketInvocationRetrievalError'; import { addInvocationStartedEventListener as addInvocationStartedListener } from './listeners/socketio/socketInvocationStarted'; import { addModelLoadEventListener } from './listeners/socketio/socketModelLoad'; +import { addSocketQueueItemStatusChangedEventListener } from './listeners/socketio/socketQueueItemStatusChanged'; import { addSessionRetrievalErrorEventListener } from './listeners/socketio/socketSessionRetrievalError'; import { addSocketSubscribedEventListener as addSocketSubscribedListener } from './listeners/socketio/socketSubscribed'; import { addSocketUnsubscribedEventListener as addSocketUnsubscribedListener } from './listeners/socketio/socketUnsubscribed'; import { addStagingAreaImageSavedListener } from './listeners/stagingAreaImageSaved'; import { addTabChangedListener } from './listeners/tabChanged'; import { addUpscaleRequestedListener } from './listeners/upscaleRequested'; -import { addUserInvokedCanvasListener } from './listeners/userInvokedCanvas'; -import { addUserInvokedImageToImageListener } from './listeners/userInvokedImageToImage'; -import { addUserInvokedNodesListener } from './listeners/userInvokedNodes'; -import { addUserInvokedTextToImageListener } from './listeners/userInvokedTextToImage'; import { addWorkflowLoadedListener } from './listeners/workflowLoaded'; export const listenerMiddleware = createListenerMiddleware(); @@ -131,11 +132,10 @@ addImagesStarredListener(); addImagesUnstarredListener(); // User Invoked -addUserInvokedCanvasListener(); -addUserInvokedNodesListener(); -addUserInvokedTextToImageListener(); -addUserInvokedImageToImageListener(); -addSessionReadyToInvokeListener(); +addEnqueueRequestedCanvasListener(); +addEnqueueRequestedNodes(); +addEnqueueRequestedLinear(); +addAnyEnqueuedListener(); // Canvas actions addCanvasSavedToGalleryListener(); @@ -173,6 +173,7 @@ addSocketUnsubscribedListener(); addModelLoadEventListener(); addSessionRetrievalErrorEventListener(); addInvocationRetrievalErrorEventListener(); +addSocketQueueItemStatusChangedEventListener(); // Session Created addSessionCreatedPendingListener(); @@ -223,3 +224,6 @@ addUpscaleRequestedListener(); // Tab Change addTabChangedListener(); + +// Dynamic prompts +addDynamicPromptsListener(); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts index d157fae7ed..d302d50255 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts @@ -1,39 +1,53 @@ +import { isAnyOf } from '@reduxjs/toolkit'; import { logger } from 'app/logging/logger'; -import { commitStagingAreaImage } from 'features/canvas/store/canvasSlice'; -import { sessionCanceled } from 'services/api/thunks/session'; +import { + canvasBatchIdsReset, + commitStagingAreaImage, + discardStagedImages, +} from 'features/canvas/store/canvasSlice'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; import { startAppListening } from '..'; +const matcher = isAnyOf(commitStagingAreaImage, discardStagedImages); + export const addCommitStagingAreaImageListener = () => { startAppListening({ - actionCreator: commitStagingAreaImage, - effect: async (action, { dispatch, getState }) => { + matcher, + effect: async (_, { dispatch, getState }) => { const log = logger('canvas'); const state = getState(); - const { sessionId: session_id, isProcessing } = state.system; - const canvasSessionId = action.payload; + const { batchIds } = state.canvas; - if (!isProcessing) { - // Only need to cancel if we are processing - return; - } - - if (!canvasSessionId) { - log.debug('No canvas session, skipping cancel'); - return; - } - - if (canvasSessionId !== session_id) { - log.debug( - { - canvasSessionId, - session_id, - }, - 'Canvas session does not match global session, skipping cancel' + try { + const req = dispatch( + queueApi.endpoints.cancelByBatchIds.initiate( + { batch_ids: batchIds }, + { fixedCacheKey: 'cancelByBatchIds' } + ) + ); + const { canceled } = await req.unwrap(); + req.reset(); + if (canceled > 0) { + log.debug(`Canceled ${canceled} canvas batches`); + dispatch( + addToast({ + title: t('queue.cancelBatchSucceeded'), + status: 'success', + }) + ); + } + dispatch(canvasBatchIdsReset()); + } catch { + log.error('Failed to cancel canvas batches'); + dispatch( + addToast({ + title: t('queue.cancelBatchFailed'), + status: 'error', + }) ); - return; } - - dispatch(sessionCanceled({ session_id })); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/anyEnqueued.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/anyEnqueued.ts new file mode 100644 index 0000000000..ff11491b53 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/anyEnqueued.ts @@ -0,0 +1,27 @@ +import { isAnyOf } from '@reduxjs/toolkit'; +import { queueApi } from 'services/api/endpoints/queue'; +import { startAppListening } from '..'; + +const matcher = isAnyOf( + queueApi.endpoints.enqueueBatch.matchFulfilled, + queueApi.endpoints.enqueueGraph.matchFulfilled +); + +export const addAnyEnqueuedListener = () => { + startAppListening({ + matcher, + effect: async (_, { dispatch, getState }) => { + const { data } = queueApi.endpoints.getQueueStatus.select()(getState()); + + if (!data || data.processor.is_started) { + return; + } + + dispatch( + queueApi.endpoints.resumeProcessor.initiate(undefined, { + fixedCacheKey: 'resumeProcessor', + }) + ); + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts index d4a36d64dc..69b136ca60 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts @@ -1,5 +1,8 @@ import { resetCanvas } from 'features/canvas/store/canvasSlice'; -import { controlNetReset } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetReset, + ipAdapterStateReset, +} from 'features/controlNet/store/controlNetSlice'; import { getImageUsage } from 'features/deleteImageModal/store/selectors'; import { nodeEditorReset } from 'features/nodes/store/nodesSlice'; import { clearInitialImage } from 'features/parameters/store/generationSlice'; @@ -18,6 +21,7 @@ export const addDeleteBoardAndImagesFulfilledListener = () => { let wasCanvasReset = false; let wasNodeEditorReset = false; let wasControlNetReset = false; + let wasIPAdapterReset = false; const state = getState(); deleted_images.forEach((image_name) => { @@ -42,6 +46,11 @@ export const addDeleteBoardAndImagesFulfilledListener = () => { dispatch(controlNetReset()); wasControlNetReset = true; } + + if (imageUsage.isIPAdapterImage && !wasIPAdapterReset) { + dispatch(ipAdapterStateReset()); + wasIPAdapterReset = true; + } }); }, }); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts index 61bcf28833..ffb1c9565f 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts @@ -52,11 +52,9 @@ const predicate: AnyListenerPredicate = ( const isProcessorSelected = processorType !== 'none'; - const isBusy = state.system.isProcessing; - const hasControlImage = Boolean(controlImage); - return isProcessorSelected && !isBusy && hasControlImage; + return isProcessorSelected && hasControlImage; }; /** diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts index fa915ef21b..814614da10 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts @@ -1,10 +1,13 @@ import { logger } from 'app/logging/logger'; +import { parseify } from 'common/util/serialize'; import { controlNetImageProcessed } from 'features/controlNet/store/actions'; import { controlNetProcessedImageChanged } from 'features/controlNet/store/controlNetSlice'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; +import { SAVE_IMAGE } from 'features/nodes/util/graphBuilders/constants'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; import { imagesApi } from 'services/api/endpoints/images'; +import { queueApi } from 'services/api/endpoints/queue'; import { isImageOutput } from 'services/api/guards'; -import { sessionCreated } from 'services/api/thunks/session'; import { Graph, ImageDTO } from 'services/api/types'; import { socketInvocationComplete } from 'services/events/actions'; import { startAppListening } from '..'; @@ -31,51 +34,83 @@ export const addControlNetImageProcessedListener = () => { is_intermediate: true, image: { image_name: controlNet.controlImage }, }, + [SAVE_IMAGE]: { + id: SAVE_IMAGE, + type: 'save_image', + is_intermediate: true, + use_cache: false, + }, }, + edges: [ + { + source: { + node_id: controlNet.processorNode.id, + field: 'image', + }, + destination: { + node_id: SAVE_IMAGE, + field: 'image', + }, + }, + ], }; - - // Create a session to run the graph & wait til it's ready to invoke - const sessionCreatedAction = dispatch(sessionCreated({ graph })); - const [sessionCreatedFulfilledAction] = await take( - (action): action is ReturnType => - sessionCreated.fulfilled.match(action) && - action.meta.requestId === sessionCreatedAction.requestId - ); - - const sessionId = sessionCreatedFulfilledAction.payload.id; - - // Invoke the session & wait til it's complete - dispatch(sessionReadyToInvoke()); - const [invocationCompleteAction] = await take( - (action): action is ReturnType => - socketInvocationComplete.match(action) && - action.payload.data.graph_execution_state_id === sessionId - ); - - // We still have to check the output type - if (isImageOutput(invocationCompleteAction.payload.data.result)) { - const { image_name } = - invocationCompleteAction.payload.data.result.image; - - // Wait for the ImageDTO to be received - const [{ payload }] = await take( - (action) => - imagesApi.endpoints.getImageDTO.matchFulfilled(action) && - action.payload.image_name === image_name + try { + const req = dispatch( + queueApi.endpoints.enqueueGraph.initiate( + { graph, prepend: true }, + { + fixedCacheKey: 'enqueueGraph', + } + ) ); - - const processedControlImage = payload as ImageDTO; - + const enqueueResult = await req.unwrap(); + req.reset(); log.debug( - { controlNetId: action.payload, processedControlImage }, - 'ControlNet image processed' + { enqueueResult: parseify(enqueueResult) }, + t('queue.graphQueued') ); - // Update the processed image in the store + const [invocationCompleteAction] = await take( + (action): action is ReturnType => + socketInvocationComplete.match(action) && + action.payload.data.graph_execution_state_id === + enqueueResult.queue_item.session_id && + action.payload.data.source_node_id === SAVE_IMAGE + ); + + // We still have to check the output type + if (isImageOutput(invocationCompleteAction.payload.data.result)) { + const { image_name } = + invocationCompleteAction.payload.data.result.image; + + // Wait for the ImageDTO to be received + const [{ payload }] = await take( + (action) => + imagesApi.endpoints.getImageDTO.matchFulfilled(action) && + action.payload.image_name === image_name + ); + + const processedControlImage = payload as ImageDTO; + + log.debug( + { controlNetId: action.payload, processedControlImage }, + 'ControlNet image processed' + ); + + // Update the processed image in the store + dispatch( + controlNetProcessedImageChanged({ + controlNetId, + processedControlImage: processedControlImage.image_name, + }) + ); + } + } catch { + log.error({ graph: parseify(graph) }, t('queue.graphFailedToQueue')); dispatch( - controlNetProcessedImageChanged({ - controlNetId, - processedControlImage: processedControlImage.image_name, + addToast({ + title: t('queue.graphFailedToQueue'), + status: 'error', }) ); } diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedCanvas.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedCanvas.ts similarity index 65% rename from invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedCanvas.ts rename to invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedCanvas.ts index cd6791cc0b..c1511bd0e8 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedCanvas.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedCanvas.ts @@ -1,9 +1,9 @@ import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; +import { enqueueRequested } from 'app/store/actions'; import openBase64ImageInTab from 'common/util/openBase64ImageInTab'; import { parseify } from 'common/util/serialize'; import { - canvasSessionIdChanged, + canvasBatchIdAdded, stagingAreaInitialized, } from 'features/canvas/store/canvasSlice'; import { blobToDataURL } from 'features/canvas/util/blobToDataURL'; @@ -11,9 +11,11 @@ import { getCanvasData } from 'features/canvas/util/getCanvasData'; import { getCanvasGenerationMode } from 'features/canvas/util/getCanvasGenerationMode'; import { canvasGraphBuilt } from 'features/nodes/store/actions'; import { buildCanvasGraph } from 'features/nodes/util/graphBuilders/buildCanvasGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; +import { prepareLinearUIBatch } from 'features/nodes/util/graphBuilders/buildLinearBatchConfig'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; import { imagesApi } from 'services/api/endpoints/images'; -import { sessionCreated } from 'services/api/thunks/session'; +import { queueApi } from 'services/api/endpoints/queue'; import { ImageDTO } from 'services/api/types'; import { startAppListening } from '..'; @@ -30,13 +32,14 @@ import { startAppListening } from '..'; * 8. Initialize the staging area if not yet initialized * 9. Dispatch the sessionReadyToInvoke action to invoke the session */ -export const addUserInvokedCanvasListener = () => { +export const addEnqueueRequestedCanvasListener = () => { startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'unifiedCanvas', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - + predicate: (action): action is ReturnType => + enqueueRequested.match(action) && + action.payload.tabName === 'unifiedCanvas', + effect: async (action, { getState, dispatch }) => { + const log = logger('queue'); + const { prepend } = action.payload; const state = getState(); const { @@ -125,57 +128,59 @@ export const addUserInvokedCanvasListener = () => { // currently this action is just listened to for logging dispatch(canvasGraphBuilt(graph)); - // Create the session, store the request id - const { requestId: sessionCreatedRequestId } = dispatch( - sessionCreated({ graph }) - ); + const batchConfig = prepareLinearUIBatch(state, graph, prepend); - // Take the session created action, matching by its request id - const [sessionCreatedAction] = await take( - (action): action is ReturnType => - sessionCreated.fulfilled.match(action) && - action.meta.requestId === sessionCreatedRequestId - ); - const session_id = sessionCreatedAction.payload.id; + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + + const enqueueResult = await req.unwrap(); + req.reset(); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + + const batchId = enqueueResult.batch.batch_id as string; // we know the is a string, backend provides it + + // Prep the canvas staging area if it is not yet initialized + if (!state.canvas.layerState.stagingArea.boundingBox) { + dispatch( + stagingAreaInitialized({ + boundingBox: { + ...state.canvas.boundingBoxCoordinates, + ...state.canvas.boundingBoxDimensions, + }, + }) + ); + } + + // Associate the session with the canvas session ID + dispatch(canvasBatchIdAdded(batchId)); - // Associate the init image with the session, now that we have the session ID - if (['img2img', 'inpaint'].includes(generationMode) && canvasInitImage) { dispatch( - imagesApi.endpoints.changeImageSessionId.initiate({ - imageDTO: canvasInitImage, - session_id, + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + t('queue.batchFailedToQueue') + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', }) ); } - - // Associate the mask image with the session, now that we have the session ID - if (['inpaint'].includes(generationMode) && canvasMaskImage) { - dispatch( - imagesApi.endpoints.changeImageSessionId.initiate({ - imageDTO: canvasMaskImage, - session_id, - }) - ); - } - - // Prep the canvas staging area if it is not yet initialized - if (!state.canvas.layerState.stagingArea.boundingBox) { - dispatch( - stagingAreaInitialized({ - sessionId: session_id, - boundingBox: { - ...state.canvas.boundingBoxCoordinates, - ...state.canvas.boundingBoxDimensions, - }, - }) - ); - } - - // Flag the session with the canvas session ID - dispatch(canvasSessionIdChanged(session_id)); - - // We are ready to invoke the session! - dispatch(sessionReadyToInvoke()); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear.ts new file mode 100644 index 0000000000..e36c6f2ebe --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear.ts @@ -0,0 +1,78 @@ +import { logger } from 'app/logging/logger'; +import { enqueueRequested } from 'app/store/actions'; +import { parseify } from 'common/util/serialize'; +import { prepareLinearUIBatch } from 'features/nodes/util/graphBuilders/buildLinearBatchConfig'; +import { buildLinearImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearImageToImageGraph'; +import { buildLinearSDXLImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph'; +import { buildLinearSDXLTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph'; +import { buildLinearTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearTextToImageGraph'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; +import { startAppListening } from '..'; + +export const addEnqueueRequestedLinear = () => { + startAppListening({ + predicate: (action): action is ReturnType => + enqueueRequested.match(action) && + (action.payload.tabName === 'txt2img' || + action.payload.tabName === 'img2img'), + effect: async (action, { getState, dispatch }) => { + const log = logger('queue'); + const state = getState(); + const model = state.generation.model; + const { prepend } = action.payload; + + let graph; + + if (model && model.base_model === 'sdxl') { + if (action.payload.tabName === 'txt2img') { + graph = buildLinearSDXLTextToImageGraph(state); + } else { + graph = buildLinearSDXLImageToImageGraph(state); + } + } else { + if (action.payload.tabName === 'txt2img') { + graph = buildLinearTextToImageGraph(state); + } else { + graph = buildLinearImageToImageGraph(state); + } + } + + const batchConfig = prepareLinearUIBatch(state, graph, prepend); + + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + const enqueueResult = await req.unwrap(); + req.reset(); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + dispatch( + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + t('queue.batchFailedToQueue') + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', + }) + ); + } + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes.ts new file mode 100644 index 0000000000..31281678d4 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes.ts @@ -0,0 +1,62 @@ +import { logger } from 'app/logging/logger'; +import { enqueueRequested } from 'app/store/actions'; +import { parseify } from 'common/util/serialize'; +import { buildNodesGraph } from 'features/nodes/util/graphBuilders/buildNodesGraph'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; +import { BatchConfig } from 'services/api/types'; +import { startAppListening } from '..'; + +export const addEnqueueRequestedNodes = () => { + startAppListening({ + predicate: (action): action is ReturnType => + enqueueRequested.match(action) && action.payload.tabName === 'nodes', + effect: async (action, { getState, dispatch }) => { + const log = logger('queue'); + const state = getState(); + const { prepend } = action.payload; + const graph = buildNodesGraph(state.nodes); + const batchConfig: BatchConfig = { + batch: { + graph, + runs: state.generation.iterations, + }, + prepend: action.payload.prepend, + }; + + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + const enqueueResult = await req.unwrap(); + req.reset(); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + dispatch( + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + 'Failed to enqueue batch' + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', + }) + ); + } + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts index 770c9fc11b..7c51b44aa2 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts @@ -3,6 +3,7 @@ import { resetCanvas } from 'features/canvas/store/canvasSlice'; import { controlNetImageChanged, controlNetProcessedImageChanged, + ipAdapterImageChanged, } from 'features/controlNet/store/controlNetSlice'; import { imageDeletionConfirmed } from 'features/deleteImageModal/store/actions'; import { isModalOpenChanged } from 'features/deleteImageModal/store/slice'; @@ -110,6 +111,14 @@ export const addRequestedSingleImageDeletionListener = () => { } }); + // Remove IP Adapter Set Image if image is deleted. + if ( + getState().controlNet.ipAdapterInfo.adapterImage?.image_name === + imageDTO.image_name + ) { + dispatch(ipAdapterImageChanged(null)); + } + // reset nodes that use the deleted images getState().nodes.nodes.forEach((node) => { if (!isInvocationNode(node)) { @@ -227,6 +236,14 @@ export const addRequestedMultipleImageDeletionListener = () => { } }); + // Remove IP Adapter Set Image if image is deleted. + if ( + getState().controlNet.ipAdapterInfo.adapterImage?.image_name === + imageDTO.image_name + ) { + dispatch(ipAdapterImageChanged(null)); + } + // reset nodes that use the deleted images getState().nodes.nodes.forEach((node) => { if (!isInvocationNode(node)) { diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts index fc0b44653d..e8b4aa9210 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts @@ -1,7 +1,11 @@ import { createAction } from '@reduxjs/toolkit'; import { logger } from 'app/logging/logger'; +import { parseify } from 'common/util/serialize'; import { setInitialCanvasImage } from 'features/canvas/store/canvasSlice'; -import { controlNetImageChanged } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetImageChanged, + ipAdapterImageChanged, +} from 'features/controlNet/store/controlNetSlice'; import { TypesafeDraggableData, TypesafeDroppableData, @@ -14,7 +18,6 @@ import { import { initialImageChanged } from 'features/parameters/store/generationSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '../'; -import { parseify } from 'common/util/serialize'; export const dndDropped = createAction<{ overData: TypesafeDroppableData; @@ -99,6 +102,18 @@ export const addImageDroppedListener = () => { return; } + /** + * Image dropped on IP Adapter image + */ + if ( + overData.actionType === 'SET_IP_ADAPTER_IMAGE' && + activeData.payloadType === 'IMAGE_DTO' && + activeData.payload.imageDTO + ) { + dispatch(ipAdapterImageChanged(activeData.payload.imageDTO)); + return; + } + /** * Image dropped on Canvas */ diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts index 88a4e773d5..61b4379d5d 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts @@ -19,6 +19,7 @@ export const addImageToDeleteSelectedListener = () => { imagesUsage.some((i) => i.isCanvasImage) || imagesUsage.some((i) => i.isInitialImage) || imagesUsage.some((i) => i.isControlNetImage) || + imagesUsage.some((i) => i.isIPAdapterImage) || imagesUsage.some((i) => i.isNodesImage); if (shouldConfirmOnDelete || isImageInUse) { diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts index 2cc406469b..1c7caaeb2f 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts @@ -1,15 +1,18 @@ import { UseToastOptions } from '@chakra-ui/react'; import { logger } from 'app/logging/logger'; import { setInitialCanvasImage } from 'features/canvas/store/canvasSlice'; -import { controlNetImageChanged } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetImageChanged, + ipAdapterImageChanged, +} from 'features/controlNet/store/controlNetSlice'; import { fieldImageValueChanged } from 'features/nodes/store/nodesSlice'; import { initialImageChanged } from 'features/parameters/store/generationSlice'; import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; import { omit } from 'lodash-es'; import { boardsApi } from 'services/api/endpoints/boards'; import { startAppListening } from '..'; import { imagesApi } from '../../../../../services/api/endpoints/images'; -import { t } from 'i18next'; const DEFAULT_UPLOADED_TOAST: UseToastOptions = { title: t('toast.imageUploaded'), @@ -99,6 +102,17 @@ export const addImageUploadedFulfilledListener = () => { return; } + if (postUploadAction?.type === 'SET_IP_ADAPTER_IMAGE') { + dispatch(ipAdapterImageChanged(imageDTO)); + dispatch( + addToast({ + ...DEFAULT_UPLOADED_TOAST, + description: t('toast.setIPAdapterImage'), + }) + ); + return; + } + if (postUploadAction?.type === 'SET_INITIAL_IMAGE') { dispatch(initialImageChanged(imageDTO)); dispatch( diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts index eb25b22293..ba42fce950 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts @@ -1,6 +1,9 @@ import { logger } from 'app/logging/logger'; import { setBoundingBoxDimensions } from 'features/canvas/store/canvasSlice'; -import { controlNetRemoved } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetRemoved, + ipAdapterStateReset, +} from 'features/controlNet/store/controlNetSlice'; import { loraRemoved } from 'features/lora/store/loraSlice'; import { modelSelected } from 'features/parameters/store/actions'; import { @@ -56,6 +59,7 @@ export const addModelSelectedListener = () => { modelsCleared += 1; } + // handle incompatible controlnets const { controlNets } = state.controlNet; forEach(controlNets, (controlNet, controlNetId) => { if (controlNet.model?.base_model !== base_model) { @@ -64,6 +68,16 @@ export const addModelSelectedListener = () => { } }); + // handle incompatible IP-Adapter + const { ipAdapterInfo } = state.controlNet; + if ( + ipAdapterInfo.model && + ipAdapterInfo.model.base_model !== base_model + ) { + dispatch(ipAdapterStateReset()); + modelsCleared += 1; + } + if (modelsCleared > 0) { dispatch( addToast( diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/promptChanged.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/promptChanged.ts new file mode 100644 index 0000000000..a48a84a30f --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/promptChanged.ts @@ -0,0 +1,67 @@ +import { isAnyOf } from '@reduxjs/toolkit'; +import { + combinatorialToggled, + isErrorChanged, + isLoadingChanged, + maxPromptsChanged, + maxPromptsReset, + parsingErrorChanged, + promptsChanged, +} from 'features/dynamicPrompts/store/dynamicPromptsSlice'; +import { setPositivePrompt } from 'features/parameters/store/generationSlice'; +import { utilitiesApi } from 'services/api/endpoints/utilities'; +import { appSocketConnected } from 'services/events/actions'; +import { startAppListening } from '..'; + +const matcher = isAnyOf( + setPositivePrompt, + combinatorialToggled, + maxPromptsChanged, + maxPromptsReset, + appSocketConnected +); + +export const addDynamicPromptsListener = () => { + startAppListening({ + matcher, + effect: async ( + action, + { dispatch, getState, cancelActiveListeners, delay } + ) => { + // debounce request + cancelActiveListeners(); + await delay(1000); + + const state = getState(); + + if (state.config.disabledFeatures.includes('dynamicPrompting')) { + return; + } + + const { positivePrompt } = state.generation; + const { maxPrompts } = state.dynamicPrompts; + + dispatch(isLoadingChanged(true)); + + try { + const req = dispatch( + utilitiesApi.endpoints.dynamicPrompts.initiate({ + prompt: positivePrompt, + max_prompts: maxPrompts, + }) + ); + + const res = await req.unwrap(); + req.unsubscribe(); + + dispatch(promptsChanged(res.prompts)); + dispatch(parsingErrorChanged(res.error)); + dispatch(isErrorChanged(false)); + dispatch(isLoadingChanged(false)); + } catch { + dispatch(isErrorChanged(true)); + dispatch(isLoadingChanged(false)); + } + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/sessionReadyToInvoke.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/sessionReadyToInvoke.ts deleted file mode 100644 index 0267eb629b..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/sessionReadyToInvoke.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionInvoked } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addSessionReadyToInvokeListener = () => { - startAppListening({ - actionCreator: sessionReadyToInvoke, - effect: (action, { getState, dispatch }) => { - const log = logger('session'); - const { sessionId: session_id } = getState().system; - if (session_id) { - log.debug({ session_id }, `Session ready to invoke (${session_id})})`); - dispatch(sessionInvoked({ session_id })); - } - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts index 739bbd7110..b81aa36455 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts @@ -1,11 +1,9 @@ import { logger } from 'app/logging/logger'; -import { LIST_TAG } from 'services/api'; -import { appInfoApi } from 'services/api/endpoints/appInfo'; -import { modelsApi } from 'services/api/endpoints/models'; +import { size } from 'lodash-es'; +import { api } from 'services/api'; import { receivedOpenAPISchema } from 'services/api/thunks/schema'; import { appSocketConnected, socketConnected } from 'services/events/actions'; import { startAppListening } from '../..'; -import { size } from 'lodash-es'; export const addSocketConnectedEventListener = () => { startAppListening({ @@ -23,22 +21,10 @@ export const addSocketConnectedEventListener = () => { dispatch(receivedOpenAPISchema()); } + dispatch(api.util.resetApiState()); + // pass along the socket event as an application action dispatch(appSocketConnected(action.payload)); - - // update all server state - dispatch( - modelsApi.util.invalidateTags([ - { type: 'MainModel', id: LIST_TAG }, - { type: 'SDXLRefinerModel', id: LIST_TAG }, - { type: 'LoRAModel', id: LIST_TAG }, - { type: 'ControlNetModel', id: LIST_TAG }, - { type: 'VaeModel', id: LIST_TAG }, - { type: 'TextualInversionModel', id: LIST_TAG }, - { type: 'ScannedModels', id: LIST_TAG }, - ]) - ); - dispatch(appInfoApi.util.invalidateTags(['AppConfig', 'AppVersion'])); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts index dfbdd25595..05ff8cd0e6 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts @@ -1,4 +1,5 @@ import { logger } from 'app/logging/logger'; +import { api } from 'services/api'; import { appSocketDisconnected, socketDisconnected, @@ -11,6 +12,9 @@ export const addSocketDisconnectedEventListener = () => { effect: (action, { dispatch }) => { const log = logger('socketio'); log.debug('Disconnected'); + + dispatch(api.util.resetApiState()); + // pass along the socket event as an application action dispatch(appSocketDisconnected(action.payload)); }, diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts index 72fa317037..44d6ceed63 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts @@ -8,25 +8,11 @@ import { startAppListening } from '../..'; export const addGeneratorProgressEventListener = () => { startAppListening({ actionCreator: socketGeneratorProgress, - effect: (action, { dispatch, getState }) => { + effect: (action, { dispatch }) => { const log = logger('socketio'); - if ( - getState().system.canceledSession === - action.payload.data.graph_execution_state_id - ) { - log.trace( - action.payload, - 'Ignored generator progress for canceled session' - ); - return; - } - log.trace( - action.payload, - `Generator progress (${action.payload.data.node.type})` - ); + log.trace(action.payload, `Generator progress`); - // pass along the socket event as an application action dispatch(appSocketGeneratorProgress(action.payload)); }, }); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts index 5501f208fd..b6d8acc82e 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts @@ -8,10 +8,8 @@ import { } from 'features/gallery/store/gallerySlice'; import { IMAGE_CATEGORIES } from 'features/gallery/store/types'; import { CANVAS_OUTPUT } from 'features/nodes/util/graphBuilders/constants'; -import { progressImageSet } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { isImageOutput } from 'services/api/guards'; -import { sessionCanceled } from 'services/api/thunks/session'; import { imagesAdapter } from 'services/api/util'; import { appSocketInvocationComplete, @@ -31,16 +29,8 @@ export const addInvocationCompleteEventListener = () => { { data: parseify(data) }, `Invocation complete (${action.payload.data.node.type})` ); - const session_id = action.payload.data.graph_execution_state_id; - const { cancelType, isCancelScheduled } = getState().system; - - // Handle scheduled cancelation - if (cancelType === 'scheduled' && isCancelScheduled) { - dispatch(sessionCanceled({ session_id })); - } - - const { result, node, graph_execution_state_id } = data; + const { result, node, queue_batch_id } = data; // This complete event has an associated image output if (isImageOutput(result) && !nodeDenylist.includes(node.type)) { @@ -53,8 +43,7 @@ export const addInvocationCompleteEventListener = () => { // Add canvas images to the staging area if ( - graph_execution_state_id === - canvas.layerState.stagingArea.sessionId && + canvas.batchIds.includes(queue_batch_id) && [CANVAS_OUTPUT].includes(data.source_node_id) ) { dispatch(addImageToStagingArea(imageDTO)); @@ -114,8 +103,6 @@ export const addInvocationCompleteEventListener = () => { dispatch(imageSelected(imageDTO)); } } - - dispatch(progressImageSet(null)); } // pass along the socket event as an application action dispatch(appSocketInvocationComplete(action.payload)); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts index 4e77811762..50f52e2851 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts @@ -8,23 +8,14 @@ import { startAppListening } from '../..'; export const addInvocationStartedEventListener = () => { startAppListening({ actionCreator: socketInvocationStarted, - effect: (action, { dispatch, getState }) => { + effect: (action, { dispatch }) => { const log = logger('socketio'); - if ( - getState().system.canceledSession === - action.payload.data.graph_execution_state_id - ) { - log.trace( - action.payload, - 'Ignored invocation started for canceled session' - ); - return; - } log.debug( action.payload, `Invocation started (${action.payload.data.node.type})` ); + dispatch(appSocketInvocationStarted(action.payload)); }, }); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketQueueItemStatusChanged.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketQueueItemStatusChanged.ts new file mode 100644 index 0000000000..b0377e950b --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketQueueItemStatusChanged.ts @@ -0,0 +1,53 @@ +import { logger } from 'app/logging/logger'; +import { queueApi, queueItemsAdapter } from 'services/api/endpoints/queue'; +import { + appSocketQueueItemStatusChanged, + socketQueueItemStatusChanged, +} from 'services/events/actions'; +import { startAppListening } from '../..'; + +export const addSocketQueueItemStatusChangedEventListener = () => { + startAppListening({ + actionCreator: socketQueueItemStatusChanged, + effect: async (action, { dispatch }) => { + const log = logger('socketio'); + const { + queue_item_id: item_id, + queue_batch_id, + status, + } = action.payload.data; + log.debug( + action.payload, + `Queue item ${item_id} status updated: ${status}` + ); + dispatch(appSocketQueueItemStatusChanged(action.payload)); + + dispatch( + queueApi.util.updateQueryData('listQueueItems', undefined, (draft) => { + queueItemsAdapter.updateOne(draft, { + id: item_id, + changes: action.payload.data, + }); + }) + ); + + dispatch( + queueApi.util.invalidateTags([ + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + { type: 'SessionQueueItem', id: item_id }, + { type: 'SessionQueueItemDTO', id: item_id }, + { type: 'BatchStatus', id: queue_batch_id }, + ]) + ); + + const req = dispatch( + queueApi.endpoints.getQueueStatus.initiate(undefined, { + forceRefetch: true, + }) + ); + await req.unwrap(); + req.unsubscribe(); + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts index a05527790e..1f9354ee67 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts @@ -1,14 +1,17 @@ import { logger } from 'app/logging/logger'; -import { appSocketSubscribed, socketSubscribed } from 'services/events/actions'; +import { + appSocketSubscribedSession, + socketSubscribedSession, +} from 'services/events/actions'; import { startAppListening } from '../..'; export const addSocketSubscribedEventListener = () => { startAppListening({ - actionCreator: socketSubscribed, + actionCreator: socketSubscribedSession, effect: (action, { dispatch }) => { const log = logger('socketio'); log.debug(action.payload, 'Subscribed'); - dispatch(appSocketSubscribed(action.payload)); + dispatch(appSocketSubscribedSession(action.payload)); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts index a8076ee1b7..2f4f65edc6 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts @@ -1,17 +1,17 @@ import { logger } from 'app/logging/logger'; import { - appSocketUnsubscribed, - socketUnsubscribed, + appSocketUnsubscribedSession, + socketUnsubscribedSession, } from 'services/events/actions'; import { startAppListening } from '../..'; export const addSocketUnsubscribedEventListener = () => { startAppListening({ - actionCreator: socketUnsubscribed, + actionCreator: socketUnsubscribedSession, effect: (action, { dispatch }) => { const log = logger('socketio'); log.debug(action.payload, 'Unsubscribed'); - dispatch(appSocketUnsubscribed(action.payload)); + dispatch(appSocketUnsubscribedSession(action.payload)); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts index 75980a65e4..61ecc61a03 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts @@ -1,7 +1,10 @@ import { createAction } from '@reduxjs/toolkit'; +import { logger } from 'app/logging/logger'; +import { parseify } from 'common/util/serialize'; import { buildAdHocUpscaleGraph } from 'features/nodes/util/graphBuilders/buildAdHocUpscaleGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; import { startAppListening } from '..'; export const upscaleRequested = createAction<{ image_name: string }>( @@ -11,7 +14,9 @@ export const upscaleRequested = createAction<{ image_name: string }>( export const addUpscaleRequestedListener = () => { startAppListening({ actionCreator: upscaleRequested, - effect: async (action, { dispatch, getState, take }) => { + effect: async (action, { dispatch, getState }) => { + const log = logger('session'); + const { image_name } = action.payload; const { esrganModelName } = getState().postprocessing; @@ -20,12 +25,31 @@ export const addUpscaleRequestedListener = () => { esrganModelName, }); - // Create a session to run the graph & wait til it's ready to invoke - dispatch(sessionCreated({ graph })); + try { + const req = dispatch( + queueApi.endpoints.enqueueGraph.initiate( + { graph, prepend: true }, + { + fixedCacheKey: 'enqueueGraph', + } + ) + ); - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); + const enqueueResult = await req.unwrap(); + req.reset(); + log.debug( + { enqueueResult: parseify(enqueueResult) }, + t('queue.graphQueued') + ); + } catch { + log.error({ graph: parseify(graph) }, t('queue.graphFailedToQueue')); + dispatch( + addToast({ + title: t('queue.graphFailedToQueue'), + status: 'error', + }) + ); + } }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedImageToImage.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedImageToImage.ts deleted file mode 100644 index b0172e693b..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedImageToImage.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; -import { parseify } from 'common/util/serialize'; -import { imageToImageGraphBuilt } from 'features/nodes/store/actions'; -import { buildLinearImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearImageToImageGraph'; -import { buildLinearSDXLImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addUserInvokedImageToImageListener = () => { - startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'img2img', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - const state = getState(); - const model = state.generation.model; - - let graph; - - if (model && model.base_model === 'sdxl') { - graph = buildLinearSDXLImageToImageGraph(state); - } else { - graph = buildLinearImageToImageGraph(state); - } - - dispatch(imageToImageGraphBuilt(graph)); - log.debug({ graph: parseify(graph) }, 'Image to Image graph built'); - - dispatch(sessionCreated({ graph })); - - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedNodes.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedNodes.ts deleted file mode 100644 index 5894bba5df..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedNodes.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; -import { parseify } from 'common/util/serialize'; -import { nodesGraphBuilt } from 'features/nodes/store/actions'; -import { buildNodesGraph } from 'features/nodes/util/graphBuilders/buildNodesGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addUserInvokedNodesListener = () => { - startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'nodes', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - const state = getState(); - - const graph = buildNodesGraph(state.nodes); - dispatch(nodesGraphBuilt(graph)); - log.debug({ graph: parseify(graph) }, 'Nodes graph built'); - - dispatch(sessionCreated({ graph })); - - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedTextToImage.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedTextToImage.ts deleted file mode 100644 index f1cdabcabd..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedTextToImage.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; -import { parseify } from 'common/util/serialize'; -import { textToImageGraphBuilt } from 'features/nodes/store/actions'; -import { buildLinearSDXLTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph'; -import { buildLinearTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearTextToImageGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addUserInvokedTextToImageListener = () => { - startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'txt2img', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - const state = getState(); - const model = state.generation.model; - - let graph; - - if (model && model.base_model === 'sdxl') { - graph = buildLinearSDXLTextToImageGraph(state); - } else { - graph = buildLinearTextToImageGraph(state); - } - - dispatch(textToImageGraphBuilt(graph)); - - log.debug({ graph: parseify(graph) }, 'Text to Image graph built'); - - dispatch(sessionCreated({ graph })); - - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/util/enqueueBatch.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/util/enqueueBatch.ts new file mode 100644 index 0000000000..1d5a1232c8 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/util/enqueueBatch.ts @@ -0,0 +1,54 @@ +import { logger } from 'app/logging/logger'; +import { AppThunkDispatch } from 'app/store/store'; +import { parseify } from 'common/util/serialize'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; +import { BatchConfig } from 'services/api/types'; + +export const enqueueBatch = async ( + batchConfig: BatchConfig, + dispatch: AppThunkDispatch +) => { + const log = logger('session'); + const { prepend } = batchConfig; + + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + const enqueueResult = await req.unwrap(); + req.reset(); + + dispatch( + queueApi.endpoints.resumeProcessor.initiate(undefined, { + fixedCacheKey: 'resumeProcessor', + }) + ); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + dispatch( + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + t('queue.batchFailedToQueue') + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', + }) + ); + } +}; diff --git a/invokeai/frontend/web/src/app/store/nanostores/store.ts b/invokeai/frontend/web/src/app/store/nanostores/store.ts new file mode 100644 index 0000000000..c9f041fa5d --- /dev/null +++ b/invokeai/frontend/web/src/app/store/nanostores/store.ts @@ -0,0 +1,5 @@ +import { Store } from '@reduxjs/toolkit'; +import { atom } from 'nanostores'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const $store = atom | undefined>(); diff --git a/invokeai/frontend/web/src/app/store/store.ts b/invokeai/frontend/web/src/app/store/store.ts index f84f3dd9c7..b9bbe4f06b 100644 --- a/invokeai/frontend/web/src/app/store/store.ts +++ b/invokeai/frontend/web/src/app/store/store.ts @@ -18,6 +18,7 @@ import postprocessingReducer from 'features/parameters/store/postprocessingSlice import sdxlReducer from 'features/sdxl/store/sdxlSlice'; import configReducer from 'features/system/store/configSlice'; import systemReducer from 'features/system/store/systemSlice'; +import queueReducer from 'features/queue/store/queueSlice'; import modelmanagerReducer from 'features/ui/components/tabs/ModelManager/store/modelManagerSlice'; import hotkeysReducer from 'features/ui/store/hotkeysSlice'; import uiReducer from 'features/ui/store/uiSlice'; @@ -31,6 +32,7 @@ import { actionSanitizer } from './middleware/devtools/actionSanitizer'; import { actionsDenylist } from './middleware/devtools/actionsDenylist'; import { stateSanitizer } from './middleware/devtools/stateSanitizer'; import { listenerMiddleware } from './middleware/listenerMiddleware'; +import { $store } from './nanostores/store'; const allReducers = { canvas: canvasReducer, @@ -49,6 +51,7 @@ const allReducers = { lora: loraReducer, modelmanager: modelmanagerReducer, sdxl: sdxlReducer, + queue: queueReducer, [api.reducerPath]: api.reducer, }; @@ -86,7 +89,10 @@ export const store = configureStore({ .concat(autoBatchEnhancer()); }, middleware: (getDefaultMiddleware) => - getDefaultMiddleware({ immutableCheck: false }) + getDefaultMiddleware({ + serializableCheck: false, + immutableCheck: false, + }) .concat(api.middleware) .concat(dynamicMiddlewares) .prepend(listenerMiddleware.middleware), @@ -121,3 +127,4 @@ export type RootState = ReturnType; export type AppThunkDispatch = ThunkDispatch; export type AppDispatch = typeof store.dispatch; export const stateSelector = (state: RootState) => state; +$store.set(store); diff --git a/invokeai/frontend/web/src/app/types/invokeai.ts b/invokeai/frontend/web/src/app/types/invokeai.ts index a02c16cf7a..ca2e80535c 100644 --- a/invokeai/frontend/web/src/app/types/invokeai.ts +++ b/invokeai/frontend/web/src/app/types/invokeai.ts @@ -18,7 +18,10 @@ export type AppFeature = | 'dynamicPrompting' | 'batches' | 'syncModels' - | 'multiselect'; + | 'multiselect' + | 'pauseQueue' + | 'resumeQueue' + | 'prependQueue'; /** * A disable-able Stable Diffusion feature diff --git a/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx b/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx index a150e4ed0c..ca61ea847f 100644 --- a/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx +++ b/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx @@ -1,7 +1,7 @@ import { As, - ChakraProps, Flex, + FlexProps, Icon, Skeleton, Spinner, @@ -47,15 +47,14 @@ export const IAILoadingImageFallback = (props: Props) => { ); }; -type IAINoImageFallbackProps = { +type IAINoImageFallbackProps = FlexProps & { label?: string; icon?: As | null; boxSize?: StyleProps['boxSize']; - sx?: ChakraProps['sx']; }; export const IAINoContentFallback = (props: IAINoImageFallbackProps) => { - const { icon = FaImage, boxSize = 16 } = props; + const { icon = FaImage, boxSize = 16, sx, ...rest } = props; return ( { _dark: { color: 'base.500', }, - ...props.sx, + ...sx, }} + {...rest} > {icon && } {props.label && {props.label}} diff --git a/invokeai/frontend/web/src/common/components/IAIInformationalPopover.tsx b/invokeai/frontend/web/src/common/components/IAIInformationalPopover.tsx new file mode 100644 index 0000000000..bbfccf7c0d --- /dev/null +++ b/invokeai/frontend/web/src/common/components/IAIInformationalPopover.tsx @@ -0,0 +1,112 @@ +import { + Button, + Popover, + PopoverTrigger, + PopoverContent, + PopoverArrow, + PopoverCloseButton, + PopoverHeader, + PopoverBody, + PopoverProps, + Flex, + Text, + Image, +} from '@chakra-ui/react'; +import { useAppSelector } from '../../app/store/storeHooks'; +import { useTranslation } from 'react-i18next'; + +interface Props extends PopoverProps { + details: string; + children: JSX.Element; + image?: string; + buttonLabel?: string; + buttonHref?: string; + placement?: PopoverProps['placement']; +} + +function IAIInformationalPopover({ + details, + image, + buttonLabel, + buttonHref, + children, + placement, +}: Props): JSX.Element { + const shouldDisableInformationalPopovers = useAppSelector( + (state) => state.system.shouldDisableInformationalPopovers + ); + const { t } = useTranslation(); + + const heading = t(`popovers.${details}.heading`); + const paragraph = t(`popovers.${details}.paragraph`); + + if (shouldDisableInformationalPopovers) { + return children; + } else { + return ( + + +
{children}
+
+ + + + + + + {image && ( + Optional Image + )} + + {heading && {heading}} + {paragraph} + {buttonLabel && ( + + + + )} + + + + +
+ ); + } +} + +export default IAIInformationalPopover; diff --git a/invokeai/frontend/web/src/common/components/IAIMantineSelectItemWithDescription.tsx b/invokeai/frontend/web/src/common/components/IAIMantineSelectItemWithDescription.tsx new file mode 100644 index 0000000000..a61268c99e --- /dev/null +++ b/invokeai/frontend/web/src/common/components/IAIMantineSelectItemWithDescription.tsx @@ -0,0 +1,29 @@ +import { Box, Text } from '@chakra-ui/react'; +import { forwardRef, memo } from 'react'; + +interface ItemProps extends React.ComponentPropsWithoutRef<'div'> { + label: string; + value: string; + description?: string; +} + +const IAIMantineSelectItemWithDescription = forwardRef< + HTMLDivElement, + ItemProps +>(({ label, description, ...rest }: ItemProps, ref) => ( + + + {label} + {description && ( + + {description} + + )} + + +)); + +IAIMantineSelectItemWithDescription.displayName = + 'IAIMantineSelectItemWithDescription'; + +export default memo(IAIMantineSelectItemWithDescription); diff --git a/invokeai/frontend/web/src/common/components/ImageUploader.tsx b/invokeai/frontend/web/src/common/components/ImageUploader.tsx index bb341a63f6..59349e615d 100644 --- a/invokeai/frontend/web/src/common/components/ImageUploader.tsx +++ b/invokeai/frontend/web/src/common/components/ImageUploader.tsx @@ -4,7 +4,6 @@ import { useAppToaster } from 'app/components/Toaster'; import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { AnimatePresence, motion } from 'framer-motion'; import { @@ -51,7 +50,6 @@ type ImageUploaderProps = { const ImageUploader = (props: ImageUploaderProps) => { const { children } = props; const { autoAddBoardId, postUploadAction } = useAppSelector(selector); - const isBusy = useAppSelector(selectIsBusy); const toaster = useAppToaster(); const { t } = useTranslation(); const [isHandlingUpload, setIsHandlingUpload] = useState(false); @@ -106,6 +104,10 @@ const ImageUploader = (props: ImageUploaderProps) => { [t, toaster, fileAcceptedCallback, fileRejectionCallback] ); + const onDragOver = useCallback(() => { + setIsHandlingUpload(true); + }, []); + const { getRootProps, getInputProps, @@ -117,8 +119,7 @@ const ImageUploader = (props: ImageUploaderProps) => { accept: { 'image/png': ['.png'], 'image/jpeg': ['.jpg', '.jpeg', '.png'] }, noClick: true, onDrop, - onDragOver: () => setIsHandlingUpload(true), - disabled: isBusy, + onDragOver, multiple: false, }); diff --git a/invokeai/frontend/web/src/common/hooks/useIsReadyToInvoke.ts b/invokeai/frontend/web/src/common/hooks/useIsReadyToEnqueue.ts similarity index 84% rename from invokeai/frontend/web/src/common/hooks/useIsReadyToInvoke.ts rename to invokeai/frontend/web/src/common/hooks/useIsReadyToEnqueue.ts index dd21afe459..77afeb4161 100644 --- a/invokeai/frontend/web/src/common/hooks/useIsReadyToInvoke.ts +++ b/invokeai/frontend/web/src/common/hooks/useIsReadyToEnqueue.ts @@ -4,25 +4,22 @@ import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { isInvocationNode } from 'features/nodes/types/types'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import i18n from 'i18next'; import { forEach, map } from 'lodash-es'; import { getConnectedEdges } from 'reactflow'; -import i18n from 'i18next'; const selector = createSelector( [stateSelector, activeTabNameSelector], - (state, activeTabName) => { - const { generation, system, nodes } = state; + ( + { controlNet, generation, system, nodes, dynamicPrompts }, + activeTabName + ) => { const { initialImage, model } = generation; - const { isProcessing, isConnected } = system; + const { isConnected } = system; const reasons: string[] = []; - // Cannot generate if already processing an image - if (isProcessing) { - reasons.push(i18n.t('parameters.invoke.systemBusy')); - } - // Cannot generate if not connected if (!isConnected) { reasons.push(i18n.t('parameters.invoke.systemDisconnected')); @@ -82,12 +79,16 @@ const selector = createSelector( }); } } else { + if (dynamicPrompts.prompts.length === 0) { + reasons.push(i18n.t('parameters.invoke.noPrompts')); + } + if (!model) { reasons.push(i18n.t('parameters.invoke.noModelSelected')); } - if (state.controlNet.isEnabled) { - map(state.controlNet.controlNets).forEach((controlNet, i) => { + if (controlNet.isEnabled) { + map(controlNet.controlNets).forEach((controlNet, i) => { if (!controlNet.isEnabled) { return; } @@ -112,12 +113,12 @@ const selector = createSelector( } } - return { isReady: !reasons.length, isProcessing, reasons }; + return { isReady: !reasons.length, reasons }; }, defaultSelectorOptions ); -export const useIsReadyToInvoke = () => { - const { isReady, isProcessing, reasons } = useAppSelector(selector); - return { isReady, isProcessing, reasons }; +export const useIsReadyToEnqueue = () => { + const { isReady, reasons } = useAppSelector(selector); + return { isReady, reasons }; }; diff --git a/invokeai/frontend/web/src/common/util/generateSeeds.ts b/invokeai/frontend/web/src/common/util/generateSeeds.ts new file mode 100644 index 0000000000..ae74f80810 --- /dev/null +++ b/invokeai/frontend/web/src/common/util/generateSeeds.ts @@ -0,0 +1,28 @@ +import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from 'app/constants'; +import { random } from 'lodash-es'; + +export type GenerateSeedsArg = { + count: number; + start?: number; + min?: number; + max?: number; +}; + +export const generateSeeds = ({ + count, + start, + min = NUMPY_RAND_MIN, + max = NUMPY_RAND_MAX, +}: GenerateSeedsArg) => { + const first = start ?? random(min, max); + const seeds: number[] = []; + for (let i = first; i < first + count; i++) { + seeds.push(i % max); + } + return seeds; +}; + +export const generateOneSeed = ( + min: number = NUMPY_RAND_MIN, + max: number = NUMPY_RAND_MAX +) => random(min, max); diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx index 4a67898942..e2f20f99a2 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx @@ -153,8 +153,8 @@ const IAICanvas = () => { }); resizeObserver.observe(containerRef.current); - - dispatch(canvasResized(containerRef.current.getBoundingClientRect())); + const { width, height } = containerRef.current.getBoundingClientRect(); + dispatch(canvasResized({ width, height })); return () => { resizeObserver.disconnect(); diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx index b636ef9528..0febf7fb21 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx @@ -1,23 +1,24 @@ import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { ImageConfig } from 'konva/lib/shapes/Image'; import { isEqual } from 'lodash-es'; - import { memo, useEffect, useState } from 'react'; import { Image as KonvaImage } from 'react-konva'; -import { canvasSelector } from '../store/canvasSelectors'; const selector = createSelector( - [systemSelector, canvasSelector], - (system, canvas) => { - const { progressImage, sessionId } = system; - const { sessionId: canvasSessionId, boundingBox } = - canvas.layerState.stagingArea; + [stateSelector], + ({ system, canvas }) => { + const { denoiseProgress } = system; + const { boundingBox } = canvas.layerState.stagingArea; + const { batchIds } = canvas; return { boundingBox, - progressImage: sessionId === canvasSessionId ? progressImage : undefined, + progressImage: + denoiseProgress && batchIds.includes(denoiseProgress.batch_id) + ? denoiseProgress.progress_image + : undefined, }; }, { diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx index cc15141d38..3e617f8767 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx @@ -11,8 +11,9 @@ import { setShouldShowStagingImage, setShouldShowStagingOutline, } from 'features/canvas/store/canvasSlice'; -import { isEqual } from 'lodash-es'; +import { skipToken } from '@reduxjs/toolkit/dist/query'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; @@ -25,16 +26,15 @@ import { FaPlus, FaSave, } from 'react-icons/fa'; -import { stagingAreaImageSaved } from '../store/actions'; import { useGetImageDTOQuery } from 'services/api/endpoints/images'; -import { skipToken } from '@reduxjs/toolkit/dist/query'; +import { stagingAreaImageSaved } from '../store/actions'; const selector = createSelector( [canvasSelector], (canvas) => { const { layerState: { - stagingArea: { images, selectedImageIndex, sessionId }, + stagingArea: { images, selectedImageIndex }, }, shouldShowStagingOutline, shouldShowStagingImage, @@ -47,14 +47,9 @@ const selector = createSelector( isOnLastImage: selectedImageIndex === images.length - 1, shouldShowStagingImage, shouldShowStagingOutline, - sessionId, }; }, - { - memoizeOptions: { - resultEqualityCheck: isEqual, - }, - } + defaultSelectorOptions ); const IAICanvasStagingAreaToolbar = () => { @@ -64,7 +59,6 @@ const IAICanvasStagingAreaToolbar = () => { isOnLastImage, currentStagingAreaImage, shouldShowStagingImage, - sessionId, } = useAppSelector(selector); const { t } = useTranslation(); @@ -121,8 +115,8 @@ const IAICanvasStagingAreaToolbar = () => { ); const handleAccept = useCallback( - () => dispatch(commitStagingAreaImage(sessionId)), - [dispatch, sessionId] + () => dispatch(commitStagingAreaImage()), + [dispatch] ); const { data: imageDTO } = useGetImageDTOQuery( diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx index 72f4a19479..18ded1c9c7 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx @@ -1,24 +1,23 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; -import { canvasSelector } from 'features/canvas/store/canvasSelectors'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { useHotkeys } from 'react-hotkeys-hook'; import { FaRedo } from 'react-icons/fa'; import { redo } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; +import { stateSelector } from 'app/store/store'; import { isEqual } from 'lodash-es'; import { useTranslation } from 'react-i18next'; const canvasRedoSelector = createSelector( - [canvasSelector, activeTabNameSelector, systemSelector], - (canvas, activeTabName, system) => { + [stateSelector, activeTabNameSelector], + ({ canvas }, activeTabName) => { const { futureLayerStates } = canvas; return { - canRedo: futureLayerStates.length > 0 && !system.isProcessing, + canRedo: futureLayerStates.length > 0, activeTabName, }; }, diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx index 10e01ccac4..6a7db0e5f2 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx @@ -1,14 +1,12 @@ import { ButtonGroup, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIColorPicker from 'common/components/IAIColorPicker'; import IAIIconButton from 'common/components/IAIIconButton'; import IAIPopover from 'common/components/IAIPopover'; import IAISlider from 'common/components/IAISlider'; -import { - canvasSelector, - isStagingSelector, -} from 'features/canvas/store/canvasSelectors'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; import { addEraseRect, addFillRect, @@ -16,7 +14,6 @@ import { setBrushSize, setTool, } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { clamp, isEqual } from 'lodash-es'; import { memo } from 'react'; @@ -32,15 +29,13 @@ import { } from 'react-icons/fa'; export const selector = createSelector( - [canvasSelector, isStagingSelector, systemSelector], - (canvas, isStaging, system) => { - const { isProcessing } = system; + [stateSelector, isStagingSelector], + ({ canvas }, isStaging) => { const { tool, brushColor, brushSize } = canvas; return { tool, isStaging, - isProcessing, brushColor, brushSize, }; diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx index 49ce63d25f..617fedf0f0 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx @@ -1,5 +1,6 @@ import { Box, ButtonGroup, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; @@ -11,10 +12,7 @@ import { canvasMerged, canvasSavedToGallery, } from 'features/canvas/store/actions'; -import { - canvasSelector, - isStagingSelector, -} from 'features/canvas/store/canvasSelectors'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; import { resetCanvas, resetCanvasView, @@ -27,9 +25,9 @@ import { LAYER_NAMES_DICT, } from 'features/canvas/store/canvasTypes'; import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { useCopyImageToClipboard } from 'features/ui/hooks/useCopyImageToClipboard'; import { isEqual } from 'lodash-es'; +import { memo } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { @@ -47,17 +45,14 @@ import IAICanvasRedoButton from './IAICanvasRedoButton'; import IAICanvasSettingsButtonPopover from './IAICanvasSettingsButtonPopover'; import IAICanvasToolChooserOptions from './IAICanvasToolChooserOptions'; import IAICanvasUndoButton from './IAICanvasUndoButton'; -import { memo } from 'react'; export const selector = createSelector( - [systemSelector, canvasSelector, isStagingSelector], - (system, canvas, isStaging) => { - const { isProcessing } = system; + [stateSelector, isStagingSelector], + ({ canvas }, isStaging) => { const { tool, shouldCropToBoundingBoxOnSave, layer, isMaskEnabled } = canvas; return { - isProcessing, isStaging, isMaskEnabled, tool, @@ -74,8 +69,7 @@ export const selector = createSelector( const IAICanvasToolbar = () => { const dispatch = useAppDispatch(); - const { isProcessing, isStaging, isMaskEnabled, layer, tool } = - useAppSelector(selector); + const { isStaging, isMaskEnabled, layer, tool } = useAppSelector(selector); const canvasBaseLayer = getCanvasBaseLayer(); const { t } = useTranslation(); @@ -118,7 +112,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [canvasBaseLayer] ); useHotkeys( @@ -130,7 +124,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [canvasBaseLayer] ); useHotkeys( @@ -142,7 +136,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging && isClipboardAPIAvailable, preventDefault: true, }, - [canvasBaseLayer, isProcessing, isClipboardAPIAvailable] + [canvasBaseLayer, isClipboardAPIAvailable] ); useHotkeys( @@ -154,7 +148,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [canvasBaseLayer] ); const handleSelectMoveTool = () => dispatch(setTool('move')); diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx index 9feb2dfcb5..126470a9e8 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx @@ -1,24 +1,23 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; -import { canvasSelector } from 'features/canvas/store/canvasSelectors'; import { useHotkeys } from 'react-hotkeys-hook'; import { FaUndo } from 'react-icons/fa'; import { undo } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { isEqual } from 'lodash-es'; import { useTranslation } from 'react-i18next'; +import { stateSelector } from 'app/store/store'; const canvasUndoSelector = createSelector( - [canvasSelector, activeTabNameSelector, systemSelector], - (canvas, activeTabName, system) => { + [stateSelector, activeTabNameSelector], + ({ canvas }, activeTabName) => { const { pastLayerStates } = canvas; return { - canUndo: pastLayerStates.length > 0 && !system.isProcessing, + canUndo: pastLayerStates.length > 0, activeTabName, }; }, diff --git a/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts b/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts index dbcdde00d5..46bf7db3d0 100644 --- a/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts +++ b/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts @@ -1,16 +1,12 @@ import { createSelector } from '@reduxjs/toolkit'; -import { RootState } from 'app/store/store'; -import { systemSelector } from 'features/system/store/systemSelectors'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { RootState, stateSelector } from 'app/store/store'; import { CanvasImage, CanvasState, isCanvasBaseImage } from './canvasTypes'; export const canvasSelector = (state: RootState): CanvasState => state.canvas; export const isStagingSelector = createSelector( - [canvasSelector, activeTabNameSelector, systemSelector], - (canvas, activeTabName, system) => - canvas.layerState.stagingArea.images.length > 0 || - (activeTabName === 'unifiedCanvas' && system.isProcessing) + [stateSelector], + ({ canvas }) => canvas.layerState.stagingArea.images.length > 0 ); export const initialCanvasImageSelector = ( diff --git a/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts b/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts index fb908fa601..b726e757f6 100644 --- a/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts +++ b/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts @@ -85,6 +85,7 @@ export const initialCanvasState: CanvasState = { stageDimensions: { width: 0, height: 0 }, stageScale: 1, tool: 'brush', + batchIds: [], }; export const canvasSlice = createSlice({ @@ -297,18 +298,22 @@ export const canvasSlice = createSlice({ setIsMoveStageKeyHeld: (state, action: PayloadAction) => { state.isMoveStageKeyHeld = action.payload; }, - canvasSessionIdChanged: (state, action: PayloadAction) => { - state.layerState.stagingArea.sessionId = action.payload; + canvasBatchIdAdded: (state, action: PayloadAction) => { + state.batchIds.push(action.payload); + }, + canvasBatchIdsReset: (state) => { + state.batchIds = []; }, stagingAreaInitialized: ( state, - action: PayloadAction<{ sessionId: string; boundingBox: IRect }> + action: PayloadAction<{ + boundingBox: IRect; + }> ) => { - const { sessionId, boundingBox } = action.payload; + const { boundingBox } = action.payload; state.layerState.stagingArea = { boundingBox, - sessionId, images: [], selectedImageIndex: -1, }; @@ -632,10 +637,7 @@ export const canvasSlice = createSlice({ 0 ); }, - commitStagingAreaImage: ( - state, - _action: PayloadAction - ) => { + commitStagingAreaImage: (state) => { if (!state.layerState.stagingArea.images.length) { return; } @@ -869,9 +871,10 @@ export const { setScaledBoundingBoxDimensions, setShouldRestrictStrokesToBox, stagingAreaInitialized, - canvasSessionIdChanged, setShouldAntialias, canvasResized, + canvasBatchIdAdded, + canvasBatchIdsReset, } = canvasSlice.actions; export default canvasSlice.reducer; diff --git a/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts b/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts index 1b4eca329d..875157d36a 100644 --- a/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts +++ b/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts @@ -89,7 +89,6 @@ export type CanvasLayerState = { stagingArea: { images: CanvasImage[]; selectedImageIndex: number; - sessionId?: string; boundingBox?: IRect; }; }; @@ -166,6 +165,7 @@ export interface CanvasState { stageScale: number; tool: CanvasTool; generationMode?: GenerationMode; + batchIds: string[]; } export type GenerationMode = 'txt2img' | 'img2img' | 'inpaint' | 'outpaint'; diff --git a/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx b/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx index d40a234495..13ceaf4173 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx @@ -18,6 +18,7 @@ import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAIIconButton from 'common/components/IAIIconButton'; import IAISwitch from 'common/components/IAISwitch'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { useTranslation } from 'react-i18next'; import { useToggle } from 'react-use'; import { v4 as uuidv4 } from 'uuid'; import ControlNetImagePreview from './ControlNetImagePreview'; @@ -28,7 +29,6 @@ import ParamControlNetBeginEnd from './parameters/ParamControlNetBeginEnd'; import ParamControlNetControlMode from './parameters/ParamControlNetControlMode'; import ParamControlNetProcessorSelect from './parameters/ParamControlNetProcessorSelect'; import ParamControlNetResizeMode from './parameters/ParamControlNetResizeMode'; -import { useTranslation } from 'react-i18next'; type ControlNetProps = { controlNet: ControlNetConfig; diff --git a/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx b/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx index 95a4f968e5..7a9d2f8b10 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx @@ -3,7 +3,7 @@ import { memo, useCallback } from 'react'; import { ControlNetConfig } from '../store/controlNetSlice'; import { useAppDispatch } from 'app/store/storeHooks'; import { controlNetImageProcessed } from '../store/actions'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; type Props = { controlNet: ControlNetConfig; @@ -12,7 +12,7 @@ type Props = { const ControlNetPreprocessButton = (props: Props) => { const { controlNetId, controlImage } = props.controlNet; const dispatch = useAppDispatch(); - const isReady = useIsReadyToInvoke(); + const isReady = useIsReadyToEnqueue(); const handleProcess = useCallback(() => { dispatch( diff --git a/invokeai/frontend/web/src/features/controlNet/components/ParamControlNetShouldAutoConfig.tsx b/invokeai/frontend/web/src/features/controlNet/components/ParamControlNetShouldAutoConfig.tsx index 76f1cb9dfe..2f44051fea 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/ParamControlNetShouldAutoConfig.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/ParamControlNetShouldAutoConfig.tsx @@ -1,10 +1,9 @@ -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAISwitch from 'common/components/IAISwitch'; import { ControlNetConfig, controlNetAutoConfigToggled, } from 'features/controlNet/store/controlNetSlice'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; @@ -15,7 +14,6 @@ type Props = { const ParamControlNetShouldAutoConfig = (props: Props) => { const { controlNetId, isEnabled, shouldAutoConfig } = props.controlNet; const dispatch = useAppDispatch(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleShouldAutoConfigChanged = useCallback(() => { @@ -28,7 +26,7 @@ const ParamControlNetShouldAutoConfig = (props: Props) => { aria-label={t('controlnet.autoConfigure')} isChecked={shouldAutoConfig} onChange={handleShouldAutoConfigChanged} - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/IPAdapterPanel.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/IPAdapterPanel.tsx new file mode 100644 index 0000000000..b0a1fcc731 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/IPAdapterPanel.tsx @@ -0,0 +1,35 @@ +import { Flex } from '@chakra-ui/react'; +import { memo } from 'react'; +import ParamIPAdapterBeginEnd from './ParamIPAdapterBeginEnd'; +import ParamIPAdapterFeatureToggle from './ParamIPAdapterFeatureToggle'; +import ParamIPAdapterImage from './ParamIPAdapterImage'; +import ParamIPAdapterModelSelect from './ParamIPAdapterModelSelect'; +import ParamIPAdapterWeight from './ParamIPAdapterWeight'; + +const IPAdapterPanel = () => { + return ( + + + + + + + + ); +}; + +export default memo(IPAdapterPanel); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterBeginEnd.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterBeginEnd.tsx new file mode 100644 index 0000000000..5bef23b66c --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterBeginEnd.tsx @@ -0,0 +1,100 @@ +import { + FormControl, + FormLabel, + HStack, + RangeSlider, + RangeSliderFilledTrack, + RangeSliderMark, + RangeSliderThumb, + RangeSliderTrack, + Tooltip, +} from '@chakra-ui/react'; +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { + ipAdapterBeginStepPctChanged, + ipAdapterEndStepPctChanged, +} from 'features/controlNet/store/controlNetSlice'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +const formatPct = (v: number) => `${Math.round(v * 100)}%`; + +const ParamIPAdapterBeginEnd = () => { + const isEnabled = useAppSelector( + (state: RootState) => state.controlNet.isIPAdapterEnabled + ); + const beginStepPct = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.beginStepPct + ); + const endStepPct = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.endStepPct + ); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const handleStepPctChanged = useCallback( + (v: number[]) => { + dispatch(ipAdapterBeginStepPctChanged(v[0] as number)); + dispatch(ipAdapterEndStepPctChanged(v[1] as number)); + }, + [dispatch] + ); + + return ( + + {t('controlnet.beginEndStepPercent')} + + + + + + + + + + + + + 0% + + + 50% + + + 100% + + + + + ); +}; + +export default memo(ParamIPAdapterBeginEnd); diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsEnabled.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterFeatureToggle.tsx similarity index 51% rename from invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsEnabled.tsx rename to invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterFeatureToggle.tsx index a1d16b5361..c077e7a824 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsEnabled.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterFeatureToggle.tsx @@ -3,36 +3,39 @@ import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAISwitch from 'common/components/IAISwitch'; +import { isIPAdapterEnableToggled } from 'features/controlNet/store/controlNetSlice'; import { memo, useCallback } from 'react'; -import { isEnabledToggled } from '../store/dynamicPromptsSlice'; import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, (state) => { - const { isEnabled } = state.dynamicPrompts; + const { isIPAdapterEnabled } = state.controlNet; - return { isEnabled }; + return { isIPAdapterEnabled }; }, defaultSelectorOptions ); -const ParamDynamicPromptsToggle = () => { +const ParamIPAdapterFeatureToggle = () => { + const { isIPAdapterEnabled } = useAppSelector(selector); const dispatch = useAppDispatch(); - const { isEnabled } = useAppSelector(selector); const { t } = useTranslation(); - const handleToggleIsEnabled = useCallback(() => { - dispatch(isEnabledToggled()); + const handleChange = useCallback(() => { + dispatch(isIPAdapterEnableToggled()); }, [dispatch]); return ( ); }; -export default memo(ParamDynamicPromptsToggle); +export default memo(ParamIPAdapterFeatureToggle); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterImage.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterImage.tsx new file mode 100644 index 0000000000..ed92705c23 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterImage.tsx @@ -0,0 +1,93 @@ +import { Flex } from '@chakra-ui/react'; +import { skipToken } from '@reduxjs/toolkit/dist/query'; +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIDndImage from 'common/components/IAIDndImage'; +import IAIDndImageIcon from 'common/components/IAIDndImageIcon'; +import { IAINoContentFallback } from 'common/components/IAIImageFallback'; +import { ipAdapterImageChanged } from 'features/controlNet/store/controlNetSlice'; +import { + TypesafeDraggableData, + TypesafeDroppableData, +} from 'features/dnd/types'; +import { memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaUndo } from 'react-icons/fa'; +import { useGetImageDTOQuery } from 'services/api/endpoints/images'; +import { PostUploadAction } from 'services/api/types'; + +const ParamIPAdapterImage = () => { + const ipAdapterInfo = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo + ); + + const isIPAdapterEnabled = useAppSelector( + (state: RootState) => state.controlNet.isIPAdapterEnabled + ); + + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const { currentData: imageDTO } = useGetImageDTOQuery( + ipAdapterInfo.adapterImage?.image_name ?? skipToken + ); + + const draggableData = useMemo(() => { + if (imageDTO) { + return { + id: 'ip-adapter-image', + payloadType: 'IMAGE_DTO', + payload: { imageDTO }, + }; + } + }, [imageDTO]); + + const droppableData = useMemo( + () => ({ + id: 'ip-adapter-image', + actionType: 'SET_IP_ADAPTER_IMAGE', + }), + [] + ); + + const postUploadAction = useMemo( + () => ({ + type: 'SET_IP_ADAPTER_IMAGE', + }), + [] + ); + + return ( + + + } + /> + + dispatch(ipAdapterImageChanged(null))} + icon={ipAdapterInfo.adapterImage ? : undefined} + tooltip={t('controlnet.resetIPAdapterImage')} + /> + + ); +}; + +export default memo(ParamIPAdapterImage); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterModelSelect.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterModelSelect.tsx new file mode 100644 index 0000000000..fec1790b53 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterModelSelect.tsx @@ -0,0 +1,97 @@ +import { SelectItem } from '@mantine/core'; +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIMantineSelect from 'common/components/IAIMantineSelect'; +import { ipAdapterModelChanged } from 'features/controlNet/store/controlNetSlice'; +import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; +import { modelIdToIPAdapterModelParam } from 'features/parameters/util/modelIdToIPAdapterModelParams'; +import { forEach } from 'lodash-es'; +import { memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetIPAdapterModelsQuery } from 'services/api/endpoints/models'; + +const ParamIPAdapterModelSelect = () => { + const ipAdapterModel = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.model + ); + const model = useAppSelector((state: RootState) => state.generation.model); + + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const { data: ipAdapterModels } = useGetIPAdapterModelsQuery(); + + // grab the full model entity from the RTK Query cache + const selectedModel = useMemo( + () => + ipAdapterModels?.entities[ + `${ipAdapterModel?.base_model}/ip_adapter/${ipAdapterModel?.model_name}` + ] ?? null, + [ + ipAdapterModel?.base_model, + ipAdapterModel?.model_name, + ipAdapterModels?.entities, + ] + ); + + const data = useMemo(() => { + if (!ipAdapterModels) { + return []; + } + + const data: SelectItem[] = []; + + forEach(ipAdapterModels.entities, (ipAdapterModel, id) => { + if (!ipAdapterModel) { + return; + } + + const disabled = model?.base_model !== ipAdapterModel.base_model; + + data.push({ + value: id, + label: ipAdapterModel.model_name, + group: MODEL_TYPE_MAP[ipAdapterModel.base_model], + disabled, + tooltip: disabled + ? `Incompatible base model: ${ipAdapterModel.base_model}` + : undefined, + }); + }); + + return data.sort((a, b) => (a.disabled && !b.disabled ? 1 : -1)); + }, [ipAdapterModels, model?.base_model]); + + const handleValueChanged = useCallback( + (v: string | null) => { + if (!v) { + return; + } + + const newIPAdapterModel = modelIdToIPAdapterModelParam(v); + + if (!newIPAdapterModel) { + return; + } + + dispatch(ipAdapterModelChanged(newIPAdapterModel)); + }, + [dispatch] + ); + + return ( + + ); +}; + +export default memo(ParamIPAdapterModelSelect); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterWeight.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterWeight.tsx new file mode 100644 index 0000000000..df5a9a36a3 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterWeight.tsx @@ -0,0 +1,46 @@ +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAISlider from 'common/components/IAISlider'; +import { ipAdapterWeightChanged } from 'features/controlNet/store/controlNetSlice'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +const ParamIPAdapterWeight = () => { + const isIpAdapterEnabled = useAppSelector( + (state: RootState) => state.controlNet.isIPAdapterEnabled + ); + const ipAdapterWeight = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.weight + ); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const handleWeightChanged = useCallback( + (weight: number) => { + dispatch(ipAdapterWeightChanged(weight)); + }, + [dispatch] + ); + + const handleWeightReset = useCallback(() => { + dispatch(ipAdapterWeightChanged(1)); + }, [dispatch]); + + return ( + + ); +}; + +export default memo(ParamIPAdapterWeight); diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx index f34c863cff..fb43c3553d 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx @@ -10,6 +10,7 @@ import { Tooltip, } from '@chakra-ui/react'; import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import { ControlNetConfig, controlNetBeginStepPctChanged, @@ -49,58 +50,60 @@ const ParamControlNetBeginEnd = (props: Props) => { ); return ( - - {t('controlnet.beginEndStepPercent')} - - - - - - - - - - - - + + {t('controlnet.beginEndStepPercent')} + + - 0% - - - 50% - - - 100% - - - - + + + + + + + + + + + 0% + + + 50% + + + 100% + +
+ + + ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx index e8f26a6dd1..9b17c2bfb2 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx @@ -1,4 +1,5 @@ import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { ControlModes, @@ -34,12 +35,14 @@ export default function ParamControlNetControlMode( ); return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx index 97a54dc7d1..1902d622ff 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAISwitch from 'common/components/IAISwitch'; import { isControlNetEnabledToggled } from 'features/controlNet/store/controlNetSlice'; import { memo, useCallback } from 'react'; @@ -25,14 +26,16 @@ const ParamControlNetFeatureToggle = () => { }, [dispatch]); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx index 180810c99f..5ed82ac501 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx @@ -11,11 +11,10 @@ import { } from 'features/controlNet/store/controlNetSlice'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; import { modelIdToControlNetModelParam } from 'features/parameters/util/modelIdToControlNetModelParam'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { forEach } from 'lodash-es'; import { memo, useCallback, useMemo } from 'react'; -import { useGetControlNetModelsQuery } from 'services/api/endpoints/models'; import { useTranslation } from 'react-i18next'; +import { useGetControlNetModelsQuery } from 'services/api/endpoints/models'; type ParamControlNetModelProps = { controlNet: ControlNetConfig; @@ -33,7 +32,6 @@ const selector = createSelector( const ParamControlNetModel = (props: ParamControlNetModelProps) => { const { controlNetId, model: controlNetModel, isEnabled } = props.controlNet; const dispatch = useAppDispatch(); - const isBusy = useAppSelector(selectIsBusy); const { mainModel } = useAppSelector(selector); const { t } = useTranslation(); @@ -110,7 +108,7 @@ const ParamControlNetModel = (props: ParamControlNetModelProps) => { placeholder={t('controlnet.selectModel')} value={selectedModel?.id ?? null} onChange={handleModelChanged} - disabled={isBusy || !isEnabled} + disabled={!isEnabled} tooltip={selectedModel?.description} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx index a357547403..9ab2422fa8 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx @@ -6,7 +6,6 @@ import IAIMantineSearchableSelect, { IAISelectDataType, } from 'common/components/IAIMantineSearchableSelect'; import { configSelector } from 'features/system/store/configSelectors'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { map } from 'lodash-es'; import { memo, useCallback } from 'react'; import { CONTROLNET_PROCESSORS } from '../../store/constants'; @@ -56,7 +55,6 @@ const ParamControlNetProcessorSelect = ( ) => { const dispatch = useAppDispatch(); const { controlNetId, isEnabled, processorNode } = props.controlNet; - const isBusy = useAppSelector(selectIsBusy); const controlNetProcessors = useAppSelector(selector); const { t } = useTranslation(); @@ -78,7 +76,7 @@ const ParamControlNetProcessorSelect = ( value={processorNode.type ?? 'canny_image_processor'} data={controlNetProcessors} onChange={handleProcessorTypeChanged} - disabled={isBusy || !isEnabled} + disabled={!isEnabled} /> ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx index f2b2b59785..0ad2f342b2 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx @@ -1,4 +1,5 @@ import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { ControlNetConfig, @@ -33,12 +34,14 @@ export default function ParamControlNetResizeMode( ); return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx index 8314f26cfc..4e9928d828 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx @@ -1,4 +1,5 @@ import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { ControlNetConfig, @@ -23,17 +24,19 @@ const ParamControlNetWeight = (props: ParamControlNetWeightProps) => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx index 83539e07da..f4813c0957 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx @@ -1,12 +1,10 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredCannyImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.canny_image_processor .default as RequiredCannyImageProcessorInvocation; @@ -20,7 +18,6 @@ type CannyProcessorProps = { const CannyProcessor = (props: CannyProcessorProps) => { const { controlNetId, processorNode, isEnabled } = props; const { low_threshold, high_threshold } = processorNode; - const isBusy = useAppSelector(selectIsBusy); const processorChanged = useProcessorNodeChanged(); const { t } = useTranslation(); @@ -53,7 +50,7 @@ const CannyProcessor = (props: CannyProcessorProps) => { return ( { withSliderMarks /> { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, w, h, f } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( @@ -101,7 +98,7 @@ const ContentShuffleProcessor = (props: Props) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx index 4307563e64..ab8de7b2e0 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx @@ -1,13 +1,11 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredHedImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.hed_image_processor .default as RequiredHedImageProcessorInvocation; @@ -24,7 +22,6 @@ const HedPreprocessor = (props: HedProcessorProps) => { processorNode: { detect_resolution, image_resolution, scribble }, isEnabled, } = props; - const isBusy = useAppSelector(selectIsBusy); const processorChanged = useProcessorNodeChanged(); const { t } = useTranslation(); @@ -73,7 +70,7 @@ const HedPreprocessor = (props: HedProcessorProps) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx index f9ebe0e8a5..f7970fda75 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx @@ -1,12 +1,10 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredLineartAnimeImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.lineart_anime_image_processor .default as RequiredLineartAnimeImageProcessorInvocation; @@ -21,7 +19,6 @@ const LineartAnimeProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( @@ -62,7 +59,7 @@ const LineartAnimeProcessor = (props: Props) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx index d0fe49b8c2..4879857a64 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx @@ -1,13 +1,11 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredLineartImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.lineart_image_processor .default as RequiredLineartImageProcessorInvocation; @@ -22,7 +20,6 @@ const LineartProcessor = (props: LineartProcessorProps) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, coarse } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( @@ -70,7 +67,7 @@ const LineartProcessor = (props: LineartProcessorProps) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx index 003af5c275..d1b92a3b4f 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx @@ -1,12 +1,10 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredMediapipeFaceProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.mediapipe_face_processor .default as RequiredMediapipeFaceProcessorInvocation; @@ -21,7 +19,6 @@ const MediapipeFaceProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { max_faces, min_confidence } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleMaxFacesChanged = useCallback( @@ -58,7 +55,7 @@ const MediapipeFaceProcessor = (props: Props) => { max={20} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx index d4e0f6b85a..893e459875 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx @@ -1,12 +1,10 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredMidasDepthImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.midas_depth_image_processor .default as RequiredMidasDepthImageProcessorInvocation; @@ -21,7 +19,6 @@ const MidasDepthProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { a_mult, bg_th } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleAMultChanged = useCallback( @@ -59,7 +56,7 @@ const MidasDepthProcessor = (props: Props) => { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx index bd19cd501a..c97c803021 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx @@ -1,12 +1,10 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredMlsdImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.mlsd_image_processor .default as RequiredMlsdImageProcessorInvocation; @@ -21,7 +19,6 @@ const MlsdImageProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, thr_d, thr_v } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( @@ -84,7 +81,7 @@ const MlsdImageProcessor = (props: Props) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx index 01be34f097..a0c15374a8 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx @@ -1,12 +1,10 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredNormalbaeImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.normalbae_image_processor .default as RequiredNormalbaeImageProcessorInvocation; @@ -21,7 +19,6 @@ const NormalBaeProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( @@ -62,7 +59,7 @@ const NormalBaeProcessor = (props: Props) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx index ab536e7f2a..904078ff6d 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx @@ -1,13 +1,11 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredOpenposeImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.openpose_image_processor .default as RequiredOpenposeImageProcessorInvocation; @@ -22,7 +20,6 @@ const OpenposeProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, hand_and_face } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( @@ -70,7 +67,7 @@ const OpenposeProcessor = (props: Props) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx index 730db4cfb3..50065d66d0 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx @@ -1,13 +1,11 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredPidiImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useTranslation } from 'react-i18next'; const DEFAULTS = CONTROLNET_PROCESSORS.pidi_image_processor .default as RequiredPidiImageProcessorInvocation; @@ -22,7 +20,6 @@ const PidiProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, scribble, safe } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( @@ -77,7 +74,7 @@ const PidiProcessor = (props: Props) => { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { label={t('controlnet.safe')} isChecked={safe} onChange={handleSafeChanged} - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts b/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts index 8f391521d6..3fe57f4a84 100644 --- a/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts +++ b/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts @@ -1,9 +1,13 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { ControlNetModelParam } from 'features/parameters/types/parameterSchemas'; +import { + ControlNetModelParam, + IPAdapterModelParam, +} from 'features/parameters/types/parameterSchemas'; import { cloneDeep, forEach } from 'lodash-es'; import { imagesApi } from 'services/api/endpoints/images'; import { components } from 'services/api/schema'; import { isAnySessionRejected } from 'services/api/thunks/session'; +import { ImageDTO } from 'services/api/types'; import { appSocketInvocationError } from 'services/events/actions'; import { controlNetImageProcessed } from './actions'; import { @@ -56,16 +60,36 @@ export type ControlNetConfig = { shouldAutoConfig: boolean; }; +export type IPAdapterConfig = { + adapterImage: ImageDTO | null; + model: IPAdapterModelParam | null; + weight: number; + beginStepPct: number; + endStepPct: number; +}; + export type ControlNetState = { controlNets: Record; isEnabled: boolean; pendingControlImages: string[]; + isIPAdapterEnabled: boolean; + ipAdapterInfo: IPAdapterConfig; +}; + +export const initialIPAdapterState: IPAdapterConfig = { + adapterImage: null, + model: null, + weight: 1, + beginStepPct: 0, + endStepPct: 1, }; export const initialControlNetState: ControlNetState = { controlNets: {}, isEnabled: false, pendingControlImages: [], + isIPAdapterEnabled: false, + ipAdapterInfo: { ...initialIPAdapterState }, }; export const controlNetSlice = createSlice({ @@ -353,6 +377,31 @@ export const controlNetSlice = createSlice({ controlNetReset: () => { return { ...initialControlNetState }; }, + isIPAdapterEnableToggled: (state) => { + state.isIPAdapterEnabled = !state.isIPAdapterEnabled; + }, + ipAdapterImageChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.adapterImage = action.payload; + }, + ipAdapterWeightChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.weight = action.payload; + }, + ipAdapterModelChanged: ( + state, + action: PayloadAction + ) => { + state.ipAdapterInfo.model = action.payload; + }, + ipAdapterBeginStepPctChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.beginStepPct = action.payload; + }, + ipAdapterEndStepPctChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.endStepPct = action.payload; + }, + ipAdapterStateReset: (state) => { + state.isIPAdapterEnabled = false; + state.ipAdapterInfo = { ...initialIPAdapterState }; + }, }, extraReducers: (builder) => { builder.addCase(controlNetImageProcessed, (state, action) => { @@ -412,6 +461,13 @@ export const { controlNetProcessorTypeChanged, controlNetReset, controlNetAutoConfigToggled, + isIPAdapterEnableToggled, + ipAdapterImageChanged, + ipAdapterWeightChanged, + ipAdapterModelChanged, + ipAdapterBeginStepPctChanged, + ipAdapterEndStepPctChanged, + ipAdapterStateReset, } = controlNetSlice.actions; export default controlNetSlice.reducer; diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx index dde6d1a517..5a98581403 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx +++ b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx @@ -1,20 +1,9 @@ import { IconButtonProps } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { useTranslation } from 'react-i18next'; import { FaTrash } from 'react-icons/fa'; -const deleteImageButtonsSelector = createSelector( - [stateSelector], - ({ system }) => { - const { isProcessing, isConnected } = system; - - return isConnected && !isProcessing; - } -); - type DeleteImageButtonProps = Omit & { onClick: () => void; }; @@ -22,7 +11,7 @@ type DeleteImageButtonProps = Omit & { export const DeleteImageButton = (props: DeleteImageButtonProps) => { const { onClick, isDisabled } = props; const { t } = useTranslation(); - const canDeleteImage = useAppSelector(deleteImageButtonsSelector); + const isConnected = useAppSelector((state) => state.system.isConnected); return ( { icon={} tooltip={`${t('gallery.deleteImage')} (Del)`} aria-label={`${t('gallery.deleteImage')} (Del)`} - isDisabled={isDisabled || !canDeleteImage} + isDisabled={isDisabled || !isConnected} colorScheme="error" /> ); diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx index 0d8ecfbae6..78bd71e802 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx +++ b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx @@ -10,20 +10,20 @@ import { Text, } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAIButton from 'common/components/IAIButton'; import IAISwitch from 'common/components/IAISwitch'; import { setShouldConfirmOnDelete } from 'features/system/store/systemSlice'; -import { stateSelector } from 'app/store/store'; import { some } from 'lodash-es'; import { ChangeEvent, memo, useCallback, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { imageDeletionConfirmed } from '../store/actions'; import { getImageUsage, selectImageUsage } from '../store/selectors'; import { imageDeletionCanceled, isModalOpenChanged } from '../store/slice'; -import ImageUsageMessage from './ImageUsageMessage'; import { ImageUsage } from '../store/types'; +import ImageUsageMessage from './ImageUsageMessage'; const selector = createSelector( [stateSelector, selectImageUsage], @@ -42,6 +42,7 @@ const selector = createSelector( isCanvasImage: some(allImageUsage, (i) => i.isCanvasImage), isNodesImage: some(allImageUsage, (i) => i.isNodesImage), isControlNetImage: some(allImageUsage, (i) => i.isControlNetImage), + isIPAdapterImage: some(allImageUsage, (i) => i.isIPAdapterImage), }; return { diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx index de1782b439..6844e13a32 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx +++ b/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx @@ -1,8 +1,8 @@ import { ListItem, Text, UnorderedList } from '@chakra-ui/react'; import { some } from 'lodash-es'; import { memo } from 'react'; -import { ImageUsage } from '../store/types'; import { useTranslation } from 'react-i18next'; +import { ImageUsage } from '../store/types'; type Props = { imageUsage?: ImageUsage; @@ -38,6 +38,9 @@ const ImageUsageMessage = (props: Props) => { {imageUsage.isControlNetImage && ( {t('common.controlNet')} )} + {imageUsage.isIPAdapterImage && ( + {t('common.ipAdapter')} + )} {imageUsage.isNodesImage && ( {t('common.nodeEditor')} )} diff --git a/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts b/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts index 37be06bad6..151e975634 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts +++ b/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts @@ -1,9 +1,9 @@ import { createSelector } from '@reduxjs/toolkit'; import { RootState } from 'app/store/store'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { isInvocationNode } from 'features/nodes/types/types'; import { some } from 'lodash-es'; import { ImageUsage } from './types'; -import { isInvocationNode } from 'features/nodes/types/types'; export const getImageUsage = (state: RootState, image_name: string) => { const { generation, canvas, nodes, controlNet } = state; @@ -27,11 +27,15 @@ export const getImageUsage = (state: RootState, image_name: string) => { c.controlImage === image_name || c.processedControlImage === image_name ); + const isIPAdapterImage = + controlNet.ipAdapterInfo.adapterImage?.image_name === image_name; + const imageUsage: ImageUsage = { isInitialImage, isCanvasImage, isNodesImage, isControlNetImage, + isIPAdapterImage, }; return imageUsage; diff --git a/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts b/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts index 2beaa8ca2e..fd13462866 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts +++ b/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts @@ -10,4 +10,5 @@ export type ImageUsage = { isCanvasImage: boolean; isNodesImage: boolean; isControlNetImage: boolean; + isIPAdapterImage: boolean; }; diff --git a/invokeai/frontend/web/src/features/dnd/types/index.ts b/invokeai/frontend/web/src/features/dnd/types/index.ts index 294132d0a3..3c5751bfac 100644 --- a/invokeai/frontend/web/src/features/dnd/types/index.ts +++ b/invokeai/frontend/web/src/features/dnd/types/index.ts @@ -35,6 +35,10 @@ export type ControlNetDropData = BaseDropData & { }; }; +export type IPAdapterImageDropData = BaseDropData & { + actionType: 'SET_IP_ADAPTER_IMAGE'; +}; + export type CanvasInitialImageDropData = BaseDropData & { actionType: 'SET_CANVAS_INITIAL_IMAGE'; }; @@ -73,6 +77,7 @@ export type TypesafeDroppableData = | CurrentImageDropData | InitialImageDropData | ControlNetDropData + | IPAdapterImageDropData | CanvasInitialImageDropData | NodesImageDropData | AddToBatchDropData diff --git a/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts b/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts index f704d22dff..b040caf83d 100644 --- a/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts +++ b/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts @@ -24,6 +24,8 @@ export const isValidDrop = ( return payloadType === 'IMAGE_DTO'; case 'SET_CONTROLNET_IMAGE': return payloadType === 'IMAGE_DTO'; + case 'SET_IP_ADAPTER_IMAGE': + return payloadType === 'IMAGE_DTO'; case 'SET_CANVAS_INITIAL_IMAGE': return payloadType === 'IMAGE_DTO'; case 'SET_NODES_IMAGE': diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx index b9fd655a43..ff9352d806 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx @@ -2,28 +2,33 @@ import { Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; -import { memo } from 'react'; -import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; -import ParamDynamicPromptsCombinatorial from './ParamDynamicPromptsCombinatorial'; -import ParamDynamicPromptsToggle from './ParamDynamicPromptsEnabled'; -import ParamDynamicPromptsMaxPrompts from './ParamDynamicPromptsMaxPrompts'; +import { memo, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; - -const selector = createSelector( - stateSelector, - (state) => { - const { isEnabled } = state.dynamicPrompts; - - return { activeLabel: isEnabled ? 'Enabled' : undefined }; - }, - defaultSelectorOptions -); +import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; +import ParamDynamicPromptsMaxPrompts from './ParamDynamicPromptsMaxPrompts'; +import ParamDynamicPromptsPreview from './ParamDynamicPromptsPreview'; +import ParamDynamicPromptsSeedBehaviour from './ParamDynamicPromptsSeedBehaviour'; const ParamDynamicPromptsCollapse = () => { - const { activeLabel } = useAppSelector(selector); const { t } = useTranslation(); + const selectActiveLabel = useMemo( + () => + createSelector(stateSelector, ({ dynamicPrompts }) => { + const count = dynamicPrompts.prompts.length; + if (count === 1) { + return t('dynamicPrompts.promptsWithCount_one', { + count, + }); + } else { + return t('dynamicPrompts.promptsWithCount_other', { + count, + }); + } + }), + [t] + ); + const activeLabel = useAppSelector(selectActiveLabel); const isDynamicPromptingEnabled = useFeatureStatus('dynamicPrompting').isFeatureEnabled; @@ -33,10 +38,13 @@ const ParamDynamicPromptsCollapse = () => { } return ( - + - - + + diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx index 406dc8e216..391d588733 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx @@ -6,19 +6,20 @@ import IAISwitch from 'common/components/IAISwitch'; import { memo, useCallback } from 'react'; import { combinatorialToggled } from '../store/dynamicPromptsSlice'; import { useTranslation } from 'react-i18next'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const selector = createSelector( stateSelector, (state) => { - const { combinatorial, isEnabled } = state.dynamicPrompts; + const { combinatorial } = state.dynamicPrompts; - return { combinatorial, isDisabled: !isEnabled }; + return { combinatorial }; }, defaultSelectorOptions ); const ParamDynamicPromptsCombinatorial = () => { - const { combinatorial, isDisabled } = useAppSelector(selector); + const { combinatorial } = useAppSelector(selector); const dispatch = useAppDispatch(); const { t } = useTranslation(); @@ -27,12 +28,13 @@ const ParamDynamicPromptsCombinatorial = () => { }, [dispatch]); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx index 158fab91d9..29305630cc 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx @@ -13,7 +13,7 @@ import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, (state) => { - const { maxPrompts, combinatorial, isEnabled } = state.dynamicPrompts; + const { maxPrompts, combinatorial } = state.dynamicPrompts; const { min, sliderMax, inputMax } = state.config.sd.dynamicPrompts.maxPrompts; @@ -22,7 +22,7 @@ const selector = createSelector( min, sliderMax, inputMax, - isDisabled: !isEnabled || !combinatorial, + isDisabled: !combinatorial, }; }, defaultSelectorOptions @@ -47,7 +47,7 @@ const ParamDynamicPromptsMaxPrompts = () => { return ( { + const { isLoading, isError, prompts, parsingError } = state.dynamicPrompts; + + return { + prompts, + parsingError, + isError, + isLoading, + }; + }, + defaultSelectorOptions +); + +const listItemStyles: ChakraProps['sx'] = { + '&::marker': { color: 'base.500', _dark: { color: 'base.500' } }, +}; + +const ParamDynamicPromptsPreview = () => { + const { prompts, parsingError, isLoading, isError } = + useAppSelector(selector); + + if (isError) { + return ( + + + + ); + } + + return ( + + + Prompts Preview ({prompts.length}){parsingError && ` - ${parsingError}`} + + + + + {prompts.map((prompt, i) => ( + + {prompt} + + ))} + + + {isLoading && ( + + + + )} + + + ); +}; + +export default memo(ParamDynamicPromptsPreview); diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsSeedBehaviour.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsSeedBehaviour.tsx new file mode 100644 index 0000000000..14a3e29ff7 --- /dev/null +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsSeedBehaviour.tsx @@ -0,0 +1,60 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIMantineSelect from 'common/components/IAIMantineSelect'; +import { memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + SeedBehaviour, + seedBehaviourChanged, +} from '../store/dynamicPromptsSlice'; +import IAIMantineSelectItemWithDescription from 'common/components/IAIMantineSelectItemWithDescription'; + +type Item = { + label: string; + value: SeedBehaviour; + description: string; +}; + +const ParamDynamicPromptsSeedBehaviour = () => { + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const seedBehaviour = useAppSelector( + (state) => state.dynamicPrompts.seedBehaviour + ); + + const data = useMemo(() => { + return [ + { + value: 'PER_ITERATION', + label: t('dynamicPrompts.seedBehaviour.perIterationLabel'), + description: t('dynamicPrompts.seedBehaviour.perIterationDesc'), + }, + { + value: 'PER_PROMPT', + label: t('dynamicPrompts.seedBehaviour.perPromptLabel'), + description: t('dynamicPrompts.seedBehaviour.perPromptDesc'), + }, + ]; + }, [t]); + + const handleChange = useCallback( + (v: string | null) => { + if (!v) { + return; + } + dispatch(seedBehaviourChanged(v as SeedBehaviour)); + }, + [dispatch] + ); + + return ( + + ); +}; + +export default memo(ParamDynamicPromptsSeedBehaviour); diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsPersistDenylist.ts b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsPersistDenylist.ts new file mode 100644 index 0000000000..5b1ed52938 --- /dev/null +++ b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsPersistDenylist.ts @@ -0,0 +1,4 @@ +import { initialDynamicPromptsState } from './dynamicPromptsSlice'; + +export const dynamicPromptsPersistDenylist: (keyof typeof initialDynamicPromptsState)[] = + ['prompts']; diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts index d96c8ff0b0..32e24845ea 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts +++ b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts @@ -1,15 +1,24 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; +export type SeedBehaviour = 'PER_ITERATION' | 'PER_PROMPT'; export interface DynamicPromptsState { - isEnabled: boolean; maxPrompts: number; combinatorial: boolean; + prompts: string[]; + parsingError: string | undefined | null; + isError: boolean; + isLoading: boolean; + seedBehaviour: SeedBehaviour; } export const initialDynamicPromptsState: DynamicPromptsState = { - isEnabled: false, maxPrompts: 100, combinatorial: true, + prompts: [], + parsingError: undefined, + isError: false, + isLoading: false, + seedBehaviour: 'PER_ITERATION', }; const initialState: DynamicPromptsState = initialDynamicPromptsState; @@ -27,17 +36,33 @@ export const dynamicPromptsSlice = createSlice({ combinatorialToggled: (state) => { state.combinatorial = !state.combinatorial; }, - isEnabledToggled: (state) => { - state.isEnabled = !state.isEnabled; + promptsChanged: (state, action: PayloadAction) => { + state.prompts = action.payload; + }, + parsingErrorChanged: (state, action: PayloadAction) => { + state.parsingError = action.payload; + }, + isErrorChanged: (state, action: PayloadAction) => { + state.isError = action.payload; + }, + isLoadingChanged: (state, action: PayloadAction) => { + state.isLoading = action.payload; + }, + seedBehaviourChanged: (state, action: PayloadAction) => { + state.seedBehaviour = action.payload; }, }, }); export const { - isEnabledToggled, maxPromptsChanged, maxPromptsReset, combinatorialToggled, + promptsChanged, + parsingErrorChanged, + isErrorChanged, + isLoadingChanged, + seedBehaviourChanged, } = dynamicPromptsSlice.actions; export default dynamicPromptsSlice.reducer; diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardAutoAddSelect.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardAutoAddSelect.tsx index 5f24225fa9..29211a7558 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardAutoAddSelect.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardAutoAddSelect.tsx @@ -7,19 +7,17 @@ import IAIMantineSearchableSelect from 'common/components/IAIMantineSearchableSe import IAIMantineSelectItemWithTooltip from 'common/components/IAIMantineSelectItemWithTooltip'; import { autoAddBoardIdChanged } from 'features/gallery/store/gallerySlice'; import { memo, useCallback, useRef } from 'react'; -import { useListAllBoardsQuery } from 'services/api/endpoints/boards'; import { useTranslation } from 'react-i18next'; +import { useListAllBoardsQuery } from 'services/api/endpoints/boards'; const selector = createSelector( [stateSelector], - ({ gallery, system }) => { + ({ gallery }) => { const { autoAddBoardId, autoAssignBoardOnClick } = gallery; - const { isProcessing } = system; return { autoAddBoardId, autoAssignBoardOnClick, - isProcessing, }; }, defaultSelectorOptions @@ -28,8 +26,7 @@ const selector = createSelector( const BoardAutoAddSelect = () => { const dispatch = useAppDispatch(); const { t } = useTranslation(); - const { autoAddBoardId, autoAssignBoardOnClick, isProcessing } = - useAppSelector(selector); + const { autoAddBoardId, autoAssignBoardOnClick } = useAppSelector(selector); const inputRef = useRef(null); const { boards, hasBoards } = useListAllBoardsQuery(undefined, { selectFromResult: ({ data }) => { @@ -73,7 +70,7 @@ const BoardAutoAddSelect = () => { data={boards} nothingFound={t('boards.noMatching')} itemComponent={IAIMantineSelectItemWithTooltip} - disabled={!hasBoards || autoAssignBoardOnClick || isProcessing} + disabled={!hasBoards || autoAssignBoardOnClick} filter={(value, item: SelectItem) => item.label?.toLowerCase().includes(value.toLowerCase().trim()) || item.value.toLowerCase().includes(value.toLowerCase().trim()) diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx index e5eb92028d..c18a9f671c 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx @@ -2,6 +2,7 @@ import { MenuGroup, MenuItem, MenuList } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { IAIContextMenu, IAIContextMenuProps, @@ -9,14 +10,13 @@ import { import { autoAddBoardIdChanged } from 'features/gallery/store/gallerySlice'; import { BoardId } from 'features/gallery/store/types'; import { MouseEvent, memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; import { FaPlus } from 'react-icons/fa'; import { useBoardName } from 'services/api/hooks/useBoardName'; import { BoardDTO } from 'services/api/types'; import { menuListMotionProps } from 'theme/components/menu'; import GalleryBoardContextMenuItems from './GalleryBoardContextMenuItems'; import NoBoardContextMenuItems from './NoBoardContextMenuItems'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import { useTranslation } from 'react-i18next'; type Props = { board?: BoardDTO; @@ -37,19 +37,17 @@ const BoardContextMenu = ({ () => createSelector( stateSelector, - ({ gallery, system }) => { + ({ gallery }) => { const isAutoAdd = gallery.autoAddBoardId === board_id; - const isProcessing = system.isProcessing; const autoAssignBoardOnClick = gallery.autoAssignBoardOnClick; - return { isAutoAdd, isProcessing, autoAssignBoardOnClick }; + return { isAutoAdd, autoAssignBoardOnClick }; }, defaultSelectorOptions ), [board_id] ); - const { isAutoAdd, isProcessing, autoAssignBoardOnClick } = - useAppSelector(selector); + const { isAutoAdd, autoAssignBoardOnClick } = useAppSelector(selector); const boardName = useBoardName(board_id); const handleSetAutoAdd = useCallback(() => { @@ -78,7 +76,7 @@ const BoardContextMenu = ({ } - isDisabled={isAutoAdd || isProcessing || autoAssignBoardOnClick} + isDisabled={isAutoAdd || autoAssignBoardOnClick} onClick={handleSetAutoAdd} > {t('boards.menuItemAutoAdd')} diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx index 78b633bd99..1bb6816bd9 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx @@ -16,6 +16,7 @@ import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAIDroppable from 'common/components/IAIDroppable'; import SelectionOverlay from 'common/components/SelectionOverlay'; +import { AddToBoardDropData } from 'features/dnd/types'; import { autoAddBoardIdChanged, boardIdSelected, @@ -31,7 +32,6 @@ import { useGetImageDTOQuery } from 'services/api/endpoints/images'; import { BoardDTO } from 'services/api/types'; import AutoAddIcon from '../AutoAddIcon'; import BoardContextMenu from '../BoardContextMenu'; -import { AddToBoardDropData } from 'features/dnd/types'; interface GalleryBoardProps { board: BoardDTO; @@ -49,16 +49,14 @@ const GalleryBoard = ({ () => createSelector( stateSelector, - ({ gallery, system }) => { + ({ gallery }) => { const isSelectedForAutoAdd = board.board_id === gallery.autoAddBoardId; const autoAssignBoardOnClick = gallery.autoAssignBoardOnClick; - const isProcessing = system.isProcessing; return { isSelectedForAutoAdd, autoAssignBoardOnClick, - isProcessing, }; }, defaultSelectorOptions @@ -66,7 +64,7 @@ const GalleryBoard = ({ [board.board_id] ); - const { isSelectedForAutoAdd, autoAssignBoardOnClick, isProcessing } = + const { isSelectedForAutoAdd, autoAssignBoardOnClick } = useAppSelector(selector); const [isHovered, setIsHovered] = useState(false); const handleMouseOver = useCallback(() => { @@ -96,10 +94,10 @@ const GalleryBoard = ({ const handleSelectBoard = useCallback(() => { dispatch(boardIdSelected(board_id)); - if (autoAssignBoardOnClick && !isProcessing) { + if (autoAssignBoardOnClick) { dispatch(autoAddBoardIdChanged(board_id)); } - }, [board_id, autoAssignBoardOnClick, isProcessing, dispatch]); + }, [board_id, autoAssignBoardOnClick, dispatch]); const [updateBoard, { isLoading: isUpdateBoardLoading }] = useUpdateBoardMutation(); diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx index da51a5fe39..55034decf0 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx @@ -22,25 +22,23 @@ interface Props { const selector = createSelector( stateSelector, - ({ gallery, system }) => { + ({ gallery }) => { const { autoAddBoardId, autoAssignBoardOnClick } = gallery; - const { isProcessing } = system; - return { autoAddBoardId, autoAssignBoardOnClick, isProcessing }; + return { autoAddBoardId, autoAssignBoardOnClick }; }, defaultSelectorOptions ); const NoBoardBoard = memo(({ isSelected }: Props) => { const dispatch = useAppDispatch(); - const { autoAddBoardId, autoAssignBoardOnClick, isProcessing } = - useAppSelector(selector); + const { autoAddBoardId, autoAssignBoardOnClick } = useAppSelector(selector); const boardName = useBoardName('none'); const handleSelectBoard = useCallback(() => { dispatch(boardIdSelected('none')); - if (autoAssignBoardOnClick && !isProcessing) { + if (autoAssignBoardOnClick) { dispatch(autoAddBoardIdChanged('none')); } - }, [dispatch, autoAssignBoardOnClick, isProcessing]); + }, [dispatch, autoAssignBoardOnClick]); const [isHovered, setIsHovered] = useState(false); const handleMouseOver = useCallback(() => { diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx index 2c54f06cec..f83c08c923 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx @@ -53,6 +53,7 @@ const DeleteBoardModal = (props: Props) => { isCanvasImage: some(allImageUsage, (i) => i.isCanvasImage), isNodesImage: some(allImageUsage, (i) => i.isNodesImage), isControlNetImage: some(allImageUsage, (i) => i.isControlNetImage), + isIPAdapterImage: some(allImageUsage, (i) => i.isIPAdapterImage), }; return { imageUsageSummary }; }), diff --git a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx index e5f0bc54f5..83b9466722 100644 --- a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx @@ -21,6 +21,7 @@ import { workflowLoadRequested } from 'features/nodes/store/actions'; import ParamUpscalePopover from 'features/parameters/components/Parameters/Upscale/ParamUpscaleSettings'; import { useRecallParameters } from 'features/parameters/hooks/useRecallParameters'; import { initialImageSelected } from 'features/parameters/store/actions'; +import { useIsQueueMutationInProgress } from 'features/queue/hooks/useIsQueueMutationInProgress'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { @@ -36,9 +37,8 @@ import { FaHourglassHalf, FaQuoteRight, FaSeedling, - FaShareAlt, } from 'react-icons/fa'; -import { MdDeviceHub } from 'react-icons/md'; +import { FaCircleNodes, FaEllipsis } from 'react-icons/fa6'; import { useGetImageDTOQuery, useGetImageMetadataFromFileQuery, @@ -50,8 +50,7 @@ import SingleSelectionMenuItems from '../ImageContextMenu/SingleSelectionMenuIte const currentImageButtonsSelector = createSelector( [stateSelector, activeTabNameSelector], ({ gallery, system, ui, config }, activeTabName) => { - const { isProcessing, isConnected, shouldConfirmOnDelete, progressImage } = - system; + const { isConnected, shouldConfirmOnDelete, denoiseProgress } = system; const { shouldShowImageDetails, @@ -64,11 +63,10 @@ const currentImageButtonsSelector = createSelector( const lastSelectedImage = gallery.selection[gallery.selection.length - 1]; return { - canDeleteImage: isConnected && !isProcessing, shouldConfirmOnDelete, - isProcessing, isConnected, - shouldDisableToolbarButtons: Boolean(progressImage) || !lastSelectedImage, + shouldDisableToolbarButtons: + Boolean(denoiseProgress?.progress_image) || !lastSelectedImage, shouldShowImageDetails, activeTabName, shouldHidePreview, @@ -89,7 +87,6 @@ type CurrentImageButtonsProps = FlexProps; const CurrentImageButtons = (props: CurrentImageButtonsProps) => { const dispatch = useAppDispatch(); const { - isProcessing, isConnected, shouldDisableToolbarButtons, shouldShowImageDetails, @@ -99,7 +96,7 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { } = useAppSelector(currentImageButtonsSelector); const isUpscalingEnabled = useFeatureStatus('upscaling').isFeatureEnabled; - + const isQueueMutationInProgress = useIsQueueMutationInProgress(); const toaster = useAppToaster(); const { t } = useTranslation(); @@ -202,19 +199,10 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { { enabled: () => Boolean( - isUpscalingEnabled && - !shouldDisableToolbarButtons && - isConnected && - !isProcessing + isUpscalingEnabled && !shouldDisableToolbarButtons && isConnected ), }, - [ - isUpscalingEnabled, - imageDTO, - shouldDisableToolbarButtons, - isConnected, - isProcessing, - ] + [isUpscalingEnabled, imageDTO, shouldDisableToolbarButtons, isConnected] ); const handleClickShowImageDetails = useCallback( @@ -266,10 +254,10 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { } + icon={} /> {imageDTO && } @@ -280,7 +268,7 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { } + icon={} tooltip={`${t('nodes.loadWorkflow')} (W)`} aria-label={`${t('nodes.loadWorkflow')} (W)`} isDisabled={!workflow} @@ -313,15 +301,12 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { {isUpscalingEnabled && ( - + {isUpscalingEnabled && } )} - + } tooltip={`${t('parameters.info')} (I)`} @@ -342,10 +327,7 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { - + diff --git a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx index b16820a38f..ac2e4a2bf8 100644 --- a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx @@ -29,12 +29,12 @@ export const imagesSelector = createSelector( shouldHidePreview, shouldShowProgressInViewer, } = ui; - const { progressImage, shouldAntialiasProgressImage } = system; + const { denoiseProgress, shouldAntialiasProgressImage } = system; return { shouldShowImageDetails, shouldHidePreview, imageName: lastSelectedImage?.image_name, - progressImage, + denoiseProgress, shouldShowProgressInViewer, shouldAntialiasProgressImage, }; @@ -50,7 +50,7 @@ const CurrentImagePreview = () => { const { shouldShowImageDetails, imageName, - progressImage, + denoiseProgress, shouldShowProgressInViewer, shouldAntialiasProgressImage, } = useAppSelector(imagesSelector); @@ -143,11 +143,11 @@ const CurrentImagePreview = () => { position: 'relative', }} > - {progressImage && shouldShowProgressInViewer ? ( + {denoiseProgress?.progress_image && shouldShowProgressInViewer ? ( { {t('parameters.downloadImage')} : } + icon={isLoading ? : } onClickCapture={handleLoadWorkflow} isDisabled={isLoading || !workflow} > diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx index 4f1bd39b8c..955e8a5a3a 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx @@ -103,7 +103,7 @@ const ImageMetadataActions = (props: Props) => { )} {metadata.negative_prompt && ( { {workflow ? ( ) : ( - + )} diff --git a/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx b/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx index 3432838ec0..951de86217 100644 --- a/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx +++ b/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx @@ -10,6 +10,7 @@ import { loraWeightChanged, loraWeightReset, } from '../store/loraSlice'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; type Props = { lora: LoRA; @@ -35,30 +36,32 @@ const ParamLora = (props: Props) => { }, [dispatch, lora.id]); return ( - - - } - colorScheme="error" - /> - + + + + } + colorScheme="error" + /> + + ); }; diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx index 4433adf4ab..9ab413a98f 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx @@ -96,7 +96,7 @@ const AddNodePopover = () => { (nodeType: AnyInvocationType) => { const invocation = buildInvocation(nodeType); if (!invocation) { - const errorMessage = t('nodes.unknownInvocation', { + const errorMessage = t('nodes.unknownNode', { nodeType: nodeType, }); toaster({ diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/CurrentImage/CurrentImageNode.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/CurrentImage/CurrentImageNode.tsx index e081ccf471..96ef7c56a3 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/CurrentImage/CurrentImageNode.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/CurrentImage/CurrentImageNode.tsx @@ -16,7 +16,7 @@ const selector = createSelector(stateSelector, ({ system, gallery }) => { return { imageDTO, - progressImage: system.progressImage, + progressImage: system.denoiseProgress?.progress_image, }; }); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx index 6542713942..447dfcbd97 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx @@ -27,7 +27,7 @@ const EmbedWorkflowCheckbox = ({ nodeId }: { nodeId: string }) => { return ( - Embed Workflow + Workflow { const inputConnectionFieldNames = useConnectionInputFieldNames(nodeId); const inputAnyOrDirectFieldNames = useAnyOrDirectInputFieldNames(nodeId); const outputFieldNames = useOutputFieldNames(nodeId); - const withFooter = useWithFooter(nodeId); return ( @@ -43,7 +41,7 @@ const InvocationNode = ({ nodeId, isOpen, label, type, selected }: Props) => { h: 'full', py: 2, gap: 1, - borderBottomRadius: withFooter ? 0 : 'base', + borderBottomRadius: 0, }} > @@ -76,7 +74,7 @@ const InvocationNode = ({ nodeId, isOpen, label, type, selected }: Props) => { ))} - {withFooter && } + )} diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx index 320b56b057..6f4b719f74 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx @@ -3,12 +3,15 @@ import { DRAG_HANDLE_CLASSNAME } from 'features/nodes/types/constants'; import { memo } from 'react'; import EmbedWorkflowCheckbox from './EmbedWorkflowCheckbox'; import SaveToGalleryCheckbox from './SaveToGalleryCheckbox'; +import UseCacheCheckbox from './UseCacheCheckbox'; +import { useHasImageOutput } from 'features/nodes/hooks/useHasImageOutput'; type Props = { nodeId: string; }; const InvocationNodeFooter = ({ nodeId }: Props) => { + const hasImageOutput = useHasImageOutput(nodeId); return ( { justifyContent: 'space-between', }} > - - + {hasImageOutput && } + + {hasImageOutput && } ); }; diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/UseCacheCheckbox.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/UseCacheCheckbox.tsx new file mode 100644 index 0000000000..72f3e72b11 --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/UseCacheCheckbox.tsx @@ -0,0 +1,35 @@ +import { Checkbox, Flex, FormControl, FormLabel } from '@chakra-ui/react'; +import { useAppDispatch } from 'app/store/storeHooks'; +import { useUseCache } from 'features/nodes/hooks/useUseCache'; +import { nodeUseCacheChanged } from 'features/nodes/store/nodesSlice'; +import { ChangeEvent, memo, useCallback } from 'react'; + +const UseCacheCheckbox = ({ nodeId }: { nodeId: string }) => { + const dispatch = useAppDispatch(); + const useCache = useUseCache(nodeId); + const handleChange = useCallback( + (e: ChangeEvent) => { + dispatch( + nodeUseCacheChanged({ + nodeId, + useCache: e.target.checked, + }) + ); + }, + [dispatch, nodeId] + ); + + return ( + + Use Cache + + + ); +}; + +export default memo(UseCacheCheckbox); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx index a73119347c..8e5c8f4e48 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx @@ -38,7 +38,7 @@ const EditableFieldTitle = forwardRef((props: Props, ref) => { const dispatch = useAppDispatch(); const [localTitle, setLocalTitle] = useState( - label || fieldTemplateTitle || t('nodes.unknownFeild') + label || fieldTemplateTitle || t('nodes.unknownField') ); const handleSubmit = useCallback( diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx index fa5c4533c2..10cde5bf49 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx @@ -15,6 +15,7 @@ import SDXLMainModelInputField from './inputs/SDXLMainModelInputField'; import SchedulerInputField from './inputs/SchedulerInputField'; import StringInputField from './inputs/StringInputField'; import VaeModelInputField from './inputs/VaeModelInputField'; +import IPAdapterModelInputField from './inputs/IPAdapterModelInputField'; type InputFieldProps = { nodeId: string; @@ -147,6 +148,19 @@ const InputFieldRenderer = ({ nodeId, fieldName }: InputFieldProps) => { ); } + if ( + field?.type === 'IPAdapterModelField' && + fieldTemplate?.type === 'IPAdapterModelField' + ) { + return ( + + ); + } + if (field?.type === 'ColorField' && fieldTemplate?.type === 'ColorField') { return ( +) => { + return null; +}; + +export default memo(IPAdapterInputFieldComponent); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterModelInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterModelInputField.tsx new file mode 100644 index 0000000000..637fa79f60 --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterModelInputField.tsx @@ -0,0 +1,100 @@ +import { SelectItem } from '@mantine/core'; +import { useAppDispatch } from 'app/store/storeHooks'; +import IAIMantineSelect from 'common/components/IAIMantineSelect'; +import { fieldIPAdapterModelValueChanged } from 'features/nodes/store/nodesSlice'; +import { + IPAdapterModelInputFieldTemplate, + IPAdapterModelInputFieldValue, + FieldComponentProps, +} from 'features/nodes/types/types'; +import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; +import { modelIdToIPAdapterModelParam } from 'features/parameters/util/modelIdToIPAdapterModelParams'; +import { forEach } from 'lodash-es'; +import { memo, useCallback, useMemo } from 'react'; +import { useGetIPAdapterModelsQuery } from 'services/api/endpoints/models'; + +const IPAdapterModelInputFieldComponent = ( + props: FieldComponentProps< + IPAdapterModelInputFieldValue, + IPAdapterModelInputFieldTemplate + > +) => { + const { nodeId, field } = props; + const ipAdapterModel = field.value; + const dispatch = useAppDispatch(); + + const { data: ipAdapterModels } = useGetIPAdapterModelsQuery(); + + // grab the full model entity from the RTK Query cache + const selectedModel = useMemo( + () => + ipAdapterModels?.entities[ + `${ipAdapterModel?.base_model}/ip_adapter/${ipAdapterModel?.model_name}` + ] ?? null, + [ + ipAdapterModel?.base_model, + ipAdapterModel?.model_name, + ipAdapterModels?.entities, + ] + ); + + const data = useMemo(() => { + if (!ipAdapterModels) { + return []; + } + + const data: SelectItem[] = []; + + forEach(ipAdapterModels.entities, (model, id) => { + if (!model) { + return; + } + + data.push({ + value: id, + label: model.model_name, + group: MODEL_TYPE_MAP[model.base_model], + }); + }); + + return data; + }, [ipAdapterModels]); + + const handleValueChanged = useCallback( + (v: string | null) => { + if (!v) { + return; + } + + const newIPAdapterModel = modelIdToIPAdapterModelParam(v); + + if (!newIPAdapterModel) { + return; + } + + dispatch( + fieldIPAdapterModelValueChanged({ + nodeId, + fieldName: field.name, + value: newIPAdapterModel, + }) + ); + }, + [dispatch, field.name, nodeId] + ); + + return ( + + ); +}; + +export default memo(IPAdapterModelInputFieldComponent); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx index d18abc1bf4..79de65760f 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeWrapper.tsx @@ -114,7 +114,7 @@ const NodeWrapper = (props: NodeWrapperProps) => { borderRadius: 'md', pointerEvents: 'none', transitionProperty: 'common', - transitionDuration: 'normal', + transitionDuration: '0.1s', opacity: 0.7, shadow: isInProgress ? inProgressShadow : undefined, zIndex: -1, diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopCenterPanel/WorkflowEditorControls.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopCenterPanel/WorkflowEditorControls.tsx deleted file mode 100644 index 3a72f52b0c..0000000000 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopCenterPanel/WorkflowEditorControls.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Flex } from '@chakra-ui/react'; -import CancelButton from 'features/parameters/components/ProcessButtons/CancelButton'; -import InvokeButton from 'features/parameters/components/ProcessButtons/InvokeButton'; -import { memo } from 'react'; - -const WorkflowEditorControls = () => { - return ( - - - - - ); -}; - -export default memo(WorkflowEditorControls); diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx index f40d5ddd80..4f9edfa0e2 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx @@ -1,5 +1,5 @@ import { Flex } from '@chakra-ui/react'; -import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; +import QueueControls from 'features/queue/components/QueueControls'; import ResizeHandle from 'features/ui/components/tabs/ResizeHandle'; import { usePanelStorage } from 'features/ui/hooks/usePanelStorage'; import { memo, useCallback, useRef, useState } from 'react'; @@ -11,6 +11,7 @@ import { import 'reactflow/dist/style.css'; import InspectorPanel from './inspector/InspectorPanel'; import WorkflowPanel from './workflow/WorkflowPanel'; +import ParamIterations from 'features/parameters/components/Parameters/Core/ParamIterations'; const NodeEditorPanelGroup = () => { const [isTopPanelCollapsed, setIsTopPanelCollapsed] = useState(false); @@ -26,7 +27,21 @@ const NodeEditorPanelGroup = () => { return ( - + + + + { +type Props = PropsWithChildren & { + maxHeight?: StyleProps['maxHeight']; +}; + +const ScrollableContent = ({ children, maxHeight }: Props) => { return ( @@ -35,7 +40,7 @@ const ScrollableContent = (props: PropsWithChildren) => { }, }} > - {props.children} + {children} diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx index b6a194051e..f4abc621b4 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx @@ -83,7 +83,7 @@ const InspectorOutputsTab = () => { /> )) ) : ( - + )} diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx index b5e358239a..caa01e5b67 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx @@ -38,7 +38,7 @@ const NodeTemplateInspector = () => { ); } - return ; + return ; }; export default memo(NodeTemplateInspector); diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts b/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts index 24982f591e..9af7099988 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts @@ -146,6 +146,7 @@ export const useBuildNodeData = () => { isIntermediate: true, inputs, outputs, + useCache: template.useCache, }, }; diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useUseCache.ts b/invokeai/frontend/web/src/features/nodes/hooks/useUseCache.ts new file mode 100644 index 0000000000..7416d7e66e --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/hooks/useUseCache.ts @@ -0,0 +1,29 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { useMemo } from 'react'; +import { isInvocationNode } from '../types/types'; + +export const useUseCache = (nodeId: string) => { + const selector = useMemo( + () => + createSelector( + stateSelector, + ({ nodes }) => { + const node = nodes.nodes.find((node) => node.id === nodeId); + if (!isInvocationNode(node)) { + return false; + } + // cast to boolean to support older workflows that didn't have useCache + // TODO: handle this better somehow + return node.data.useCache; + }, + defaultSelectorOptions + ), + [nodeId] + ); + + const useCache = useAppSelector(selector); + return useCache; +}; diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts b/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts index 8bde120005..57941eaec8 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts @@ -7,7 +7,7 @@ import { useMemo } from 'react'; import { FOOTER_FIELDS } from '../types/constants'; import { isInvocationNode } from '../types/types'; -export const useWithFooter = (nodeId: string) => { +export const useHasImageOutputs = (nodeId: string) => { const selector = useMemo( () => createSelector( diff --git a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts index 2ebed877ac..325ab1ff16 100644 --- a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts +++ b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts @@ -25,6 +25,7 @@ import { appSocketInvocationComplete, appSocketInvocationError, appSocketInvocationStarted, + appSocketQueueItemStatusChanged, } from 'services/events/actions'; import { v4 as uuidv4 } from 'uuid'; import { DRAG_HANDLE_CLASSNAME } from '../types/constants'; @@ -41,6 +42,7 @@ import { IntegerInputFieldValue, InvocationNodeData, InvocationTemplate, + IPAdapterModelInputFieldValue, isInvocationNode, isNotesNode, LoRAModelInputFieldValue, @@ -260,6 +262,20 @@ const nodesSlice = createSlice({ } node.data.embedWorkflow = embedWorkflow; }, + nodeUseCacheChanged: ( + state, + action: PayloadAction<{ nodeId: string; useCache: boolean }> + ) => { + const { nodeId, useCache } = action.payload; + const nodeIndex = state.nodes.findIndex((n) => n.id === nodeId); + + const node = state.nodes?.[nodeIndex]; + + if (!isInvocationNode(node)) { + return; + } + node.data.useCache = useCache; + }, nodeIsIntermediateChanged: ( state, action: PayloadAction<{ nodeId: string; isIntermediate: boolean }> @@ -520,6 +536,12 @@ const nodesSlice = createSlice({ ) => { fieldValueReducer(state, action); }, + fieldIPAdapterModelValueChanged: ( + state, + action: FieldValueAction + ) => { + fieldValueReducer(state, action); + }, fieldEnumModelValueChanged: ( state, action: FieldValueAction @@ -840,6 +862,19 @@ const nodesSlice = createSlice({ } }); }); + builder.addCase(appSocketQueueItemStatusChanged, (state, action) => { + if ( + ['completed', 'canceled', 'failed'].includes(action.payload.data.status) + ) { + forEach(state.nodeExecutionStates, (nes) => { + nes.status = NodeStatus.PENDING; + nes.error = null; + nes.progress = null; + nes.progressImage = null; + nes.outputs = []; + }); + } + }); }, }); @@ -866,6 +901,7 @@ export const { fieldLoRAModelValueChanged, fieldEnumModelValueChanged, fieldControlNetModelValueChanged, + fieldIPAdapterModelValueChanged, fieldRefinerModelValueChanged, fieldSchedulerValueChanged, nodeIsOpenChanged, @@ -904,6 +940,7 @@ export const { nodeIsIntermediateChanged, mouseOverNodeChanged, nodeExclusivelySelected, + nodeUseCacheChanged, } = nodesSlice.actions; export default nodesSlice.reducer; diff --git a/invokeai/frontend/web/src/features/nodes/types/constants.ts b/invokeai/frontend/web/src/features/nodes/types/constants.ts index 0ab10db159..34e494677f 100644 --- a/invokeai/frontend/web/src/features/nodes/types/constants.ts +++ b/invokeai/frontend/web/src/features/nodes/types/constants.ts @@ -41,6 +41,7 @@ export const POLYMORPHIC_TYPES = [ ]; export const MODEL_TYPES = [ + 'IPAdapterModelField', 'ControlNetModelField', 'LoRAModelField', 'MainModelField', @@ -236,6 +237,16 @@ export const FIELDS: Record = { description: t('nodes.integerPolymorphicDescription'), title: t('nodes.integerPolymorphic'), }, + IPAdapterField: { + color: 'green.300', + description: 'IP-Adapter info passed between nodes.', + title: 'IP-Adapter', + }, + IPAdapterModelField: { + color: 'teal.500', + description: 'IP-Adapter model', + title: 'IP-Adapter Model', + }, LatentsCollection: { color: 'pink.500', description: t('nodes.latentsCollectionDescription'), diff --git a/invokeai/frontend/web/src/features/nodes/types/types.ts b/invokeai/frontend/web/src/features/nodes/types/types.ts index c92a41391c..361de26ea5 100644 --- a/invokeai/frontend/web/src/features/nodes/types/types.ts +++ b/invokeai/frontend/web/src/features/nodes/types/types.ts @@ -1,3 +1,4 @@ +import { $store } from 'app/store/nanostores/store'; import { SchedulerParam, zBaseModel, @@ -7,7 +8,8 @@ import { zSDXLRefinerModel, zScheduler, } from 'features/parameters/types/parameterSchemas'; -import { keyBy } from 'lodash-es'; +import i18n from 'i18next'; +import { has, keyBy } from 'lodash-es'; import { OpenAPIV3 } from 'openapi-types'; import { RgbaColor } from 'react-colorful'; import { Node } from 'reactflow'; @@ -20,7 +22,6 @@ import { import { O } from 'ts-toolbelt'; import { JsonObject } from 'type-fest'; import { z } from 'zod'; -import i18n from 'i18next'; export type NonNullableGraph = O.Required; @@ -57,6 +58,10 @@ export type InvocationTemplate = { * The invocation's version. */ version?: string; + /** + * Whether or not this node should use the cache + */ + useCache: boolean; }; export type FieldUIConfig = { @@ -94,6 +99,8 @@ export const zFieldType = z.enum([ 'integer', 'IntegerCollection', 'IntegerPolymorphic', + 'IPAdapterField', + 'IPAdapterModelField', 'LatentsCollection', 'LatentsField', 'LatentsPolymorphic', @@ -389,6 +396,25 @@ export type ControlCollectionInputFieldValue = z.infer< typeof zControlCollectionInputFieldValue >; +export const zIPAdapterModel = zModelIdentifier; +export type IPAdapterModel = z.infer; + +export const zIPAdapterField = z.object({ + image: zImageField, + ip_adapter_model: zIPAdapterModel, + image_encoder_model: z.string().trim().min(1), + weight: z.number(), +}); +export type IPAdapterField = z.infer; + +export const zIPAdapterInputFieldValue = zInputFieldValueBase.extend({ + type: z.literal('IPAdapterField'), + value: zIPAdapterField.optional(), +}); +export type IPAdapterInputFieldValue = z.infer< + typeof zIPAdapterInputFieldValue +>; + export const zModelType = z.enum([ 'onnx', 'main', @@ -538,6 +564,17 @@ export type ControlNetModelInputFieldValue = z.infer< typeof zControlNetModelInputFieldValue >; +export const zIPAdapterModelField = zModelIdentifier; +export type IPAdapterModelField = z.infer; + +export const zIPAdapterModelInputFieldValue = zInputFieldValueBase.extend({ + type: z.literal('IPAdapterModelField'), + value: zIPAdapterModelField.optional(), +}); +export type IPAdapterModelInputFieldValue = z.infer< + typeof zIPAdapterModelInputFieldValue +>; + export const zCollectionInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('Collection'), value: z.array(z.any()).optional(), // TODO: should this field ever have a value? @@ -620,6 +657,8 @@ export const zInputFieldValue = z.discriminatedUnion('type', [ zIntegerCollectionInputFieldValue, zIntegerPolymorphicInputFieldValue, zIntegerInputFieldValue, + zIPAdapterInputFieldValue, + zIPAdapterModelInputFieldValue, zLatentsInputFieldValue, zLatentsCollectionInputFieldValue, zLatentsPolymorphicInputFieldValue, @@ -822,6 +861,11 @@ export type ControlPolymorphicInputFieldTemplate = Omit< type: 'ControlPolymorphic'; }; +export type IPAdapterInputFieldTemplate = InputFieldTemplateBase & { + default: undefined; + type: 'IPAdapterField'; +}; + export type EnumInputFieldTemplate = InputFieldTemplateBase & { default: string; type: 'enum'; @@ -859,6 +903,11 @@ export type ControlNetModelInputFieldTemplate = InputFieldTemplateBase & { type: 'ControlNetModelField'; }; +export type IPAdapterModelInputFieldTemplate = InputFieldTemplateBase & { + default: string; + type: 'IPAdapterModelField'; +}; + export type CollectionInputFieldTemplate = InputFieldTemplateBase & { default: []; type: 'Collection'; @@ -930,6 +979,8 @@ export type InputFieldTemplate = | IntegerCollectionInputFieldTemplate | IntegerPolymorphicInputFieldTemplate | IntegerInputFieldTemplate + | IPAdapterInputFieldTemplate + | IPAdapterModelInputFieldTemplate | LatentsInputFieldTemplate | LatentsCollectionInputFieldTemplate | LatentsPolymorphicInputFieldTemplate @@ -976,6 +1027,9 @@ export type InvocationSchemaExtra = { type: Omit & { default: AnyInvocationType; }; + use_cache: Omit & { + default: boolean; + }; }; }; @@ -1066,36 +1120,45 @@ export type LoRAMetadataItem = z.infer; export const zCoreMetadata = z .object({ - app_version: z.string().nullish(), - generation_mode: z.string().nullish(), - created_by: z.string().nullish(), - positive_prompt: z.string().nullish(), - negative_prompt: z.string().nullish(), - width: z.number().int().nullish(), - height: z.number().int().nullish(), - seed: z.number().int().nullish(), - rand_device: z.string().nullish(), - cfg_scale: z.number().nullish(), - steps: z.number().int().nullish(), - scheduler: z.string().nullish(), - clip_skip: z.number().int().nullish(), + app_version: z.string().nullish().catch(null), + generation_mode: z.string().nullish().catch(null), + created_by: z.string().nullish().catch(null), + positive_prompt: z.string().nullish().catch(null), + negative_prompt: z.string().nullish().catch(null), + width: z.number().int().nullish().catch(null), + height: z.number().int().nullish().catch(null), + seed: z.number().int().nullish().catch(null), + rand_device: z.string().nullish().catch(null), + cfg_scale: z.number().nullish().catch(null), + steps: z.number().int().nullish().catch(null), + scheduler: z.string().nullish().catch(null), + clip_skip: z.number().int().nullish().catch(null), model: z .union([zMainModel.deepPartial(), zOnnxModel.deepPartial()]) - .nullish(), - controlnets: z.array(zControlField.deepPartial()).nullish(), - loras: z.array(zLoRAMetadataItem).nullish(), - vae: zVaeModelField.nullish(), - strength: z.number().nullish(), - init_image: z.string().nullish(), - positive_style_prompt: z.string().nullish(), - negative_style_prompt: z.string().nullish(), - refiner_model: zSDXLRefinerModel.deepPartial().nullish(), - refiner_cfg_scale: z.number().nullish(), - refiner_steps: z.number().int().nullish(), - refiner_scheduler: z.string().nullish(), - refiner_positive_aesthetic_score: z.number().nullish(), - refiner_negative_aesthetic_score: z.number().nullish(), - refiner_start: z.number().nullish(), + .nullish() + .catch(null), + controlnets: z.array(zControlField.deepPartial()).nullish().catch(null), + loras: z + .array( + z.object({ + lora: zLoRAModelField.deepPartial(), + weight: z.number(), + }) + ) + .nullish() + .catch(null), + vae: zVaeModelField.nullish().catch(null), + strength: z.number().nullish().catch(null), + init_image: z.string().nullish().catch(null), + positive_style_prompt: z.string().nullish().catch(null), + negative_style_prompt: z.string().nullish().catch(null), + refiner_model: zSDXLRefinerModel.deepPartial().nullish().catch(null), + refiner_cfg_scale: z.number().nullish().catch(null), + refiner_steps: z.number().int().nullish().catch(null), + refiner_scheduler: z.string().nullish().catch(null), + refiner_positive_aesthetic_score: z.number().nullish().catch(null), + refiner_negative_aesthetic_score: z.number().nullish().catch(null), + refiner_start: z.number().nullish().catch(null), }) .passthrough(); @@ -1139,9 +1202,37 @@ export const zInvocationNodeData = z.object({ version: zSemVer.optional(), }); +export const zInvocationNodeDataV2 = z.preprocess( + (arg) => { + try { + const data = zInvocationNodeData.parse(arg); + if (!has(data, 'useCache')) { + const nodeTemplates = $store.get()?.getState().nodes.nodeTemplates as + | Record + | undefined; + + const template = nodeTemplates?.[data.type]; + + let useCache = true; + if (template) { + useCache = template.useCache; + } + + Object.assign(data, { useCache }); + } + return data; + } catch { + return arg; + } + }, + zInvocationNodeData.extend({ + useCache: z.boolean(), + }) +); + // Massage this to get better type safety while developing export type InvocationNodeData = Omit< - z.infer, + z.infer, 'type' > & { type: AnyInvocationType; @@ -1169,7 +1260,7 @@ const zDimension = z.number().gt(0).nullish(); export const zWorkflowInvocationNode = z.object({ id: z.string().trim().min(1), type: z.literal('invocation'), - data: zInvocationNodeData, + data: zInvocationNodeDataV2, width: zDimension, height: zDimension, position: zPosition, @@ -1231,6 +1322,8 @@ export type WorkflowWarning = { data: JsonObject; }; +const CURRENT_WORKFLOW_VERSION = '1.0.0'; + export const zWorkflow = z.object({ name: z.string().default(''), author: z.string().default(''), @@ -1246,7 +1339,7 @@ export const zWorkflow = z.object({ .object({ version: zSemVer, }) - .default({ version: '1.0.0' }), + .default({ version: CURRENT_WORKFLOW_VERSION }), }); export const zValidatedWorkflow = zWorkflow.transform((workflow) => { diff --git a/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts b/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts index c5e6be75c0..aaec058235 100644 --- a/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts +++ b/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts @@ -60,6 +60,8 @@ import { ImageField, LatentsField, ConditioningField, + IPAdapterInputFieldTemplate, + IPAdapterModelInputFieldTemplate, } from '../types/types'; import { ControlField } from 'services/api/types'; @@ -435,6 +437,19 @@ const buildControlNetModelInputFieldTemplate = ({ return template; }; +const buildIPAdapterModelInputFieldTemplate = ({ + schemaObject, + baseField, +}: BuildInputFieldArg): IPAdapterModelInputFieldTemplate => { + const template: IPAdapterModelInputFieldTemplate = { + ...baseField, + type: 'IPAdapterModelField', + default: schemaObject.default ?? undefined, + }; + + return template; +}; + const buildImageInputFieldTemplate = ({ schemaObject, baseField, @@ -648,6 +663,19 @@ const buildControlCollectionInputFieldTemplate = ({ return template; }; +const buildIPAdapterInputFieldTemplate = ({ + schemaObject, + baseField, +}: BuildInputFieldArg): IPAdapterInputFieldTemplate => { + const template: IPAdapterInputFieldTemplate = { + ...baseField, + type: 'IPAdapterField', + default: schemaObject.default ?? undefined, + }; + + return template; +}; + const buildEnumInputFieldTemplate = ({ schemaObject, baseField, @@ -851,6 +879,8 @@ const TEMPLATE_BUILDER_MAP = { integer: buildIntegerInputFieldTemplate, IntegerCollection: buildIntegerCollectionInputFieldTemplate, IntegerPolymorphic: buildIntegerPolymorphicInputFieldTemplate, + IPAdapterField: buildIPAdapterInputFieldTemplate, + IPAdapterModelField: buildIPAdapterModelInputFieldTemplate, LatentsCollection: buildLatentsCollectionInputFieldTemplate, LatentsField: buildLatentsInputFieldTemplate, LatentsPolymorphic: buildLatentsPolymorphicInputFieldTemplate, diff --git a/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts b/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts index 3052d4e230..c29aaf262f 100644 --- a/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts +++ b/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts @@ -28,6 +28,8 @@ const FIELD_VALUE_FALLBACK_MAP = { integer: 0, IntegerCollection: [], IntegerPolymorphic: 0, + IPAdapterField: undefined, + IPAdapterModelField: undefined, LatentsCollection: [], LatentsField: undefined, LatentsPolymorphic: undefined, diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addDynamicPromptsToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addDynamicPromptsToGraph.ts deleted file mode 100644 index acb091a06b..0000000000 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addDynamicPromptsToGraph.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { RootState } from 'app/store/store'; -import { NonNullableGraph } from 'features/nodes/types/types'; -import { unset } from 'lodash-es'; -import { - DynamicPromptInvocation, - IterateInvocation, - MetadataAccumulatorInvocation, - NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, -} from 'services/api/types'; -import { - DYNAMIC_PROMPT, - ITERATE, - METADATA_ACCUMULATOR, - NOISE, - POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, -} from './constants'; - -export const addDynamicPromptsToGraph = ( - state: RootState, - graph: NonNullableGraph -): void => { - const { positivePrompt, iterations, seed, shouldRandomizeSeed } = - state.generation; - - const { - combinatorial, - isEnabled: isDynamicPromptsEnabled, - maxPrompts, - } = state.dynamicPrompts; - - const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as - | MetadataAccumulatorInvocation - | undefined; - - if (isDynamicPromptsEnabled) { - // iteration is handled via dynamic prompts - unset(graph.nodes[POSITIVE_CONDITIONING], 'prompt'); - - const dynamicPromptNode: DynamicPromptInvocation = { - id: DYNAMIC_PROMPT, - type: 'dynamic_prompt', - is_intermediate: true, - max_prompts: combinatorial ? maxPrompts : iterations, - combinatorial, - prompt: positivePrompt, - }; - - const iterateNode: IterateInvocation = { - id: ITERATE, - type: 'iterate', - is_intermediate: true, - }; - - graph.nodes[DYNAMIC_PROMPT] = dynamicPromptNode; - graph.nodes[ITERATE] = iterateNode; - - // connect dynamic prompts to compel nodes - graph.edges.push( - { - source: { - node_id: DYNAMIC_PROMPT, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: POSITIVE_CONDITIONING, - field: 'prompt', - }, - } - ); - - // hook up positive prompt to metadata - if (metadataAccumulator) { - graph.edges.push({ - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: METADATA_ACCUMULATOR, - field: 'positive_prompt', - }, - }); - } - - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - is_intermediate: true, - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: NOISE, field: 'seed' }, - }); - - if (metadataAccumulator) { - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: METADATA_ACCUMULATOR, field: 'seed' }, - }); - } - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[NOISE] as NoiseInvocation).seed = seed; - - // hook up seed to metadata - if (metadataAccumulator) { - metadataAccumulator.seed = seed; - } - } - } else { - // no dynamic prompt - hook up positive prompt - if (metadataAccumulator) { - metadataAccumulator.positive_prompt = positivePrompt; - } - - const rangeOfSizeNode: RangeOfSizeInvocation = { - id: RANGE_OF_SIZE, - type: 'range_of_size', - is_intermediate: true, - size: iterations, - step: 1, - }; - - const iterateNode: IterateInvocation = { - id: ITERATE, - type: 'iterate', - is_intermediate: true, - }; - - graph.nodes[ITERATE] = iterateNode; - graph.nodes[RANGE_OF_SIZE] = rangeOfSizeNode; - - graph.edges.push({ - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }); - - graph.edges.push({ - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }); - - // hook up seed to metadata - if (metadataAccumulator) { - graph.edges.push({ - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: METADATA_ACCUMULATOR, - field: 'seed', - }, - }); - } - // handle seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - is_intermediate: true, - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - rangeOfSizeNode.start = seed; - } - } -}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addIPAdapterToLinearGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addIPAdapterToLinearGraph.ts new file mode 100644 index 0000000000..da67b1d34d --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addIPAdapterToLinearGraph.ts @@ -0,0 +1,59 @@ +import { RootState } from 'app/store/store'; +import { IPAdapterInvocation } from 'services/api/types'; +import { NonNullableGraph } from '../../types/types'; +import { IP_ADAPTER } from './constants'; + +export const addIPAdapterToLinearGraph = ( + state: RootState, + graph: NonNullableGraph, + baseNodeId: string +): void => { + const { isIPAdapterEnabled, ipAdapterInfo } = state.controlNet; + + // const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as + // | MetadataAccumulatorInvocation + // | undefined; + + if (isIPAdapterEnabled && ipAdapterInfo.model) { + const ipAdapterNode: IPAdapterInvocation = { + id: IP_ADAPTER, + type: 'ip_adapter', + is_intermediate: true, + weight: ipAdapterInfo.weight, + ip_adapter_model: { + base_model: ipAdapterInfo.model?.base_model, + model_name: ipAdapterInfo.model?.model_name, + }, + begin_step_percent: ipAdapterInfo.beginStepPct, + end_step_percent: ipAdapterInfo.endStepPct, + }; + + if (ipAdapterInfo.adapterImage) { + ipAdapterNode.image = { + image_name: ipAdapterInfo.adapterImage.image_name, + }; + } else { + return; + } + + graph.nodes[ipAdapterNode.id] = ipAdapterNode as IPAdapterInvocation; + + // if (metadataAccumulator?.ip_adapters) { + // // metadata accumulator only needs the ip_adapter field - not the whole node + // // extract what we need and add to the accumulator + // const ipAdapterField = omit(ipAdapterNode, [ + // 'id', + // 'type', + // ]) as IPAdapterField; + // metadataAccumulator.ip_adapters.push(ipAdapterField); + // } + + graph.edges.push({ + source: { node_id: ipAdapterNode.id, field: 'ip_adapter' }, + destination: { + node_id: baseNodeId, + field: 'ip_adapter', + }, + }); + } +}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts index 3291348d0a..94fddccc8f 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts @@ -1,46 +1,32 @@ import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { ImageNSFWBlurInvocation, LatentsToImageInvocation, - MetadataAccumulatorInvocation, } from 'services/api/types'; -import { - LATENTS_TO_IMAGE, - METADATA_ACCUMULATOR, - NSFW_CHECKER, -} from './constants'; +import { LATENTS_TO_IMAGE, NSFW_CHECKER } from './constants'; export const addNSFWCheckerToGraph = ( state: RootState, graph: NonNullableGraph, nodeIdToAddTo = LATENTS_TO_IMAGE ): void => { - const activeTabName = activeTabNameSelector(state); - - const is_intermediate = - activeTabName === 'unifiedCanvas' ? !state.canvas.shouldAutoSave : false; - const nodeToAddTo = graph.nodes[nodeIdToAddTo] as | LatentsToImageInvocation | undefined; - const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as - | MetadataAccumulatorInvocation - | undefined; - if (!nodeToAddTo) { // something has gone terribly awry return; } nodeToAddTo.is_intermediate = true; + nodeToAddTo.use_cache = true; const nsfwCheckerNode: ImageNSFWBlurInvocation = { id: NSFW_CHECKER, type: 'img_nsfw', - is_intermediate, + is_intermediate: true, }; graph.nodes[NSFW_CHECKER] = nsfwCheckerNode as ImageNSFWBlurInvocation; @@ -54,17 +40,4 @@ export const addNSFWCheckerToGraph = ( field: 'image', }, }); - - if (metadataAccumulator) { - graph.edges.push({ - source: { - node_id: METADATA_ACCUMULATOR, - field: 'metadata', - }, - destination: { - node_id: NSFW_CHECKER, - field: 'metadata', - }, - }); - } }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts index 0daca1f310..6bd44db197 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts @@ -25,7 +25,7 @@ import { SDXL_REFINER_POSITIVE_CONDITIONING, SDXL_REFINER_SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; export const addSDXLRefinerToGraph = ( state: RootState, @@ -78,8 +78,8 @@ export const addSDXLRefinerToGraph = ( : SDXL_MODEL_LOADER; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, true); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state, true); // Unplug SDXL Latents Generation To Latents To Image graph.edges = graph.edges.filter( @@ -100,13 +100,13 @@ export const addSDXLRefinerToGraph = ( graph.nodes[SDXL_REFINER_POSITIVE_CONDITIONING] = { type: 'sdxl_refiner_compel_prompt', id: SDXL_REFINER_POSITIVE_CONDITIONING, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, aesthetic_score: refinerPositiveAestheticScore, }; graph.nodes[SDXL_REFINER_NEGATIVE_CONDITIONING] = { type: 'sdxl_refiner_compel_prompt', id: SDXL_REFINER_NEGATIVE_CONDITIONING, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, aesthetic_score: refinerNegativeAestheticScore, }; graph.nodes[SDXL_REFINER_DENOISE_LATENTS] = { diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSaveImageNode.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSaveImageNode.ts new file mode 100644 index 0000000000..43d1a19f81 --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSaveImageNode.ts @@ -0,0 +1,92 @@ +import { NonNullableGraph } from 'features/nodes/types/types'; +import { + CANVAS_OUTPUT, + LATENTS_TO_IMAGE, + METADATA_ACCUMULATOR, + NSFW_CHECKER, + SAVE_IMAGE, + WATERMARKER, +} from './constants'; +import { + MetadataAccumulatorInvocation, + SaveImageInvocation, +} from 'services/api/types'; +import { RootState } from 'app/store/store'; +import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; + +/** + * Set the `use_cache` field on the linear/canvas graph's final image output node to False. + */ +export const addSaveImageNode = ( + state: RootState, + graph: NonNullableGraph +): void => { + const activeTabName = activeTabNameSelector(state); + const is_intermediate = + activeTabName === 'unifiedCanvas' ? !state.canvas.shouldAutoSave : false; + + const saveImageNode: SaveImageInvocation = { + id: SAVE_IMAGE, + type: 'save_image', + is_intermediate, + use_cache: false, + }; + + graph.nodes[SAVE_IMAGE] = saveImageNode; + + const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as + | MetadataAccumulatorInvocation + | undefined; + + if (metadataAccumulator) { + graph.edges.push({ + source: { + node_id: METADATA_ACCUMULATOR, + field: 'metadata', + }, + destination: { + node_id: SAVE_IMAGE, + field: 'metadata', + }, + }); + } + + const destination = { + node_id: SAVE_IMAGE, + field: 'image', + }; + + if (WATERMARKER in graph.nodes) { + graph.edges.push({ + source: { + node_id: WATERMARKER, + field: 'image', + }, + destination, + }); + } else if (NSFW_CHECKER in graph.nodes) { + graph.edges.push({ + source: { + node_id: NSFW_CHECKER, + field: 'image', + }, + destination, + }); + } else if (CANVAS_OUTPUT in graph.nodes) { + graph.edges.push({ + source: { + node_id: CANVAS_OUTPUT, + field: 'image', + }, + destination, + }); + } else if (LATENTS_TO_IMAGE in graph.nodes) { + graph.edges.push({ + source: { + node_id: LATENTS_TO_IMAGE, + field: 'image', + }, + destination, + }); + } +}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts index f2e8a0aeca..4e515906b6 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts @@ -51,6 +51,7 @@ export const addWatermarkerToGraph = ( // no matter the situation, we want the l2i node to be intermediate nodeToAddTo.is_intermediate = true; + nodeToAddTo.use_cache = true; if (nsfwCheckerNode) { // if we are using NSFW checker, we need to "disable" it output by marking it intermediate, diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts index 10e3ba5152..9c53227ead 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts @@ -1,7 +1,11 @@ import { NonNullableGraph } from 'features/nodes/types/types'; import { ESRGANModelName } from 'features/parameters/store/postprocessingSlice'; -import { Graph, ESRGANInvocation } from 'services/api/types'; -import { REALESRGAN as ESRGAN } from './constants'; +import { + Graph, + ESRGANInvocation, + SaveImageInvocation, +} from 'services/api/types'; +import { REALESRGAN as ESRGAN, SAVE_IMAGE } from './constants'; type Arg = { image_name: string; @@ -17,15 +21,33 @@ export const buildAdHocUpscaleGraph = ({ type: 'esrgan', image: { image_name }, model_name: esrganModelName, - is_intermediate: false, + is_intermediate: true, + }; + + const saveImageNode: SaveImageInvocation = { + id: SAVE_IMAGE, + type: 'save_image', + use_cache: false, }; const graph: NonNullableGraph = { id: `adhoc-esrgan-graph`, nodes: { [ESRGAN]: realesrganNode, + [SAVE_IMAGE]: saveImageNode, }, - edges: [], + edges: [ + { + source: { + node_id: ESRGAN, + field: 'image', + }, + destination: { + node_id: SAVE_IMAGE, + field: 'image', + }, + }, + ], }; return graph; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts index e750b40220..4dbbac9f96 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts @@ -1,12 +1,12 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageDTO, ImageToLatentsInvocation } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -40,12 +40,12 @@ export const buildCanvasImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, img2imgStrength: strength, vaePrecision, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -53,14 +53,10 @@ export const buildCanvasImageToImageGraph = ( // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -72,9 +68,7 @@ export const buildCanvasImageToImageGraph = ( let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the @@ -92,32 +86,33 @@ export const buildCanvasImageToImageGraph = ( [modelLoaderNodeId]: { type: 'main_model_loader', id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, use_cpu, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -128,12 +123,12 @@ export const buildCanvasImageToImageGraph = ( [IMAGE_TO_LATENTS]: { type: 'i2l', id: IMAGE_TO_LATENTS, - is_intermediate: true, + is_intermediate, }, [DENOISE_LATENTS]: { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -143,7 +138,7 @@ export const buildCanvasImageToImageGraph = ( [CANVAS_OUTPUT]: { type: 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, }, }, edges: [ @@ -238,7 +233,7 @@ export const buildCanvasImageToImageGraph = ( graph.nodes[IMG2IMG_RESIZE] = { id: IMG2IMG_RESIZE, type: 'img_resize', - is_intermediate: true, + is_intermediate, image: initialImage, width: scaledBoundingBoxDimensions.width, height: scaledBoundingBoxDimensions.height, @@ -246,13 +241,13 @@ export const buildCanvasImageToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -293,7 +288,7 @@ export const buildCanvasImageToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -322,10 +317,10 @@ export const buildCanvasImageToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -337,17 +332,6 @@ export const buildCanvasImageToImageGraph = ( init_image: initialImage.image_name, }; - graph.edges.push({ - source: { - node_id: METADATA_ACCUMULATOR, - field: 'metadata', - }, - destination: { - node_id: CANVAS_OUTPUT, - field: 'metadata', - }, - }); - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -360,12 +344,12 @@ export const buildCanvasImageToImageGraph = ( // optionally add custom VAE addVAEToGraph(state, graph, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -377,5 +361,7 @@ export const buildCanvasImageToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts index bfedc03de4..de7620bc7e 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts @@ -8,10 +8,9 @@ import { ImageToLatentsInvocation, MaskEdgeInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; @@ -31,7 +30,6 @@ import { INPAINT_IMAGE, INPAINT_IMAGE_RESIZE_DOWN, INPAINT_IMAGE_RESIZE_UP, - ITERATE, LATENTS_TO_IMAGE, MAIN_MODEL_LOADER, MASK_BLUR, @@ -40,10 +38,9 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SEAMLESS, } from './constants'; +import { addSaveImageNode } from './addSaveImageNode'; /** * Builds the Canvas tab's Inpaint graph. @@ -62,11 +59,8 @@ export const buildCanvasInpaintGraph = ( scheduler, steps, img2imgStrength: strength, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, maskBlurMethod, @@ -87,12 +81,8 @@ export const buildCanvasInpaintGraph = ( const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; - + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; + const is_intermediate = true; const fp32 = vaePrecision === 'fp32'; const isUsingScaledDimensions = ['auto', 'manual'].includes( @@ -101,9 +91,7 @@ export const buildCanvasInpaintGraph = ( let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const graph: NonNullableGraph = { id: CANVAS_INPAINT_GRAPH, @@ -111,56 +99,57 @@ export const buildCanvasInpaintGraph = ( [modelLoaderNodeId]: { type: 'main_model_loader', id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [MASK_BLUR]: { type: 'img_blur', id: MASK_BLUR, - is_intermediate: true, + is_intermediate, radius: maskBlur, blur_type: maskBlurMethod, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [DENOISE_LATENTS]: { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -169,20 +158,21 @@ export const buildCanvasInpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -192,29 +182,15 @@ export const buildCanvasInpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, reference: canvasInitImage, }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, - }, }, edges: [ // Connect Model Loader to CLIP Skip and UNet @@ -321,48 +297,7 @@ export const buildCanvasInpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -436,7 +371,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -444,7 +379,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasMaskImage, @@ -452,14 +387,14 @@ export const buildCanvasInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -597,7 +532,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -650,7 +585,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -701,26 +636,6 @@ export const buildCanvasInpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -736,6 +651,9 @@ export const buildCanvasInpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -747,5 +665,7 @@ export const buildCanvasInpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts index 71d3492bdc..8205e477ec 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts @@ -7,12 +7,12 @@ import { InfillPatchMatchInvocation, InfillTileInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -32,7 +32,6 @@ import { INPAINT_IMAGE_RESIZE_UP, INPAINT_INFILL, INPAINT_INFILL_RESIZE_DOWN, - ITERATE, LATENTS_TO_IMAGE, MAIN_MODEL_LOADER, MASK_COMBINE, @@ -42,8 +41,6 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SEAMLESS, } from './constants'; @@ -64,11 +61,8 @@ export const buildCanvasOutpaintGraph = ( scheduler, steps, img2imgStrength: strength, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, canvasCoherenceMode, @@ -91,23 +85,17 @@ export const buildCanvasOutpaintGraph = ( const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const graph: NonNullableGraph = { id: CANVAS_OUTPAINT_GRAPH, @@ -115,61 +103,62 @@ export const buildCanvasOutpaintGraph = ( [modelLoaderNodeId]: { type: 'main_model_loader', id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [MASK_FROM_ALPHA]: { type: 'tomask', id: MASK_FROM_ALPHA, - is_intermediate: true, + is_intermediate, image: canvasInitImage, }, [MASK_COMBINE]: { type: 'mask_combine', id: MASK_COMBINE, - is_intermediate: true, + is_intermediate, mask2: canvasMaskImage, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [DENOISE_LATENTS]: { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -178,20 +167,21 @@ export const buildCanvasOutpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -201,27 +191,13 @@ export const buildCanvasOutpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, - }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, + is_intermediate, }, }, edges: [ @@ -351,48 +327,7 @@ export const buildCanvasOutpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -472,7 +407,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_patchmatch', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, downscale: infillPatchmatchDownscaleSize, }; } @@ -481,7 +416,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_lama', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -489,7 +424,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_cv2', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -497,7 +432,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_tile', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, tile_size: infillTileSize, }; } @@ -511,7 +446,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -519,28 +454,28 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, }; graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[INPAINT_INFILL_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_INFILL_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -699,7 +634,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -746,7 +681,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -803,26 +738,6 @@ export const buildCanvasOutpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -838,6 +753,9 @@ export const buildCanvasOutpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -849,5 +767,7 @@ export const buildCanvasOutpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts index 2a677a8775..36fc66e559 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts @@ -1,13 +1,13 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageDTO, ImageToLatentsInvocation } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -26,7 +26,7 @@ import { SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Image to Image graph. @@ -42,11 +42,11 @@ export const buildCanvasSDXLImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, vaePrecision, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -55,20 +55,15 @@ export const buildCanvasSDXLImageToImageGraph = ( shouldUseSDXLRefiner, refinerStart, sdxlImg2ImgDenoisingStrength: strength, - shouldConcatSDXLStylePrompt, } = state.sdxl; // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -81,13 +76,11 @@ export const buildCanvasSDXLImageToImageGraph = ( // Model Loader ID let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the @@ -111,19 +104,20 @@ export const buildCanvasSDXLImageToImageGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, use_cpu, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -134,13 +128,13 @@ export const buildCanvasSDXLImageToImageGraph = ( [IMAGE_TO_LATENTS]: { type: 'i2l', id: IMAGE_TO_LATENTS, - is_intermediate: true, + is_intermediate, fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -251,7 +245,7 @@ export const buildCanvasSDXLImageToImageGraph = ( graph.nodes[IMG2IMG_RESIZE] = { id: IMG2IMG_RESIZE, type: 'img_resize', - is_intermediate: true, + is_intermediate, image: initialImage, width: scaledBoundingBoxDimensions.width, height: scaledBoundingBoxDimensions.height, @@ -259,13 +253,13 @@ export const buildCanvasSDXLImageToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -306,7 +300,7 @@ export const buildCanvasSDXLImageToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -335,10 +329,10 @@ export const buildCanvasSDXLImageToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -386,12 +380,12 @@ export const buildCanvasSDXLImageToImageGraph = ( // add LoRA support addSDXLLoRAsToGraph(state, graph, SDXL_DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -403,5 +397,7 @@ export const buildCanvasSDXLImageToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts index baa1c0155f..389d510ac7 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts @@ -8,13 +8,13 @@ import { ImageToLatentsInvocation, MaskEdgeInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -29,7 +29,6 @@ import { INPAINT_IMAGE, INPAINT_IMAGE_RESIZE_DOWN, INPAINT_IMAGE_RESIZE_UP, - ITERATE, LATENTS_TO_IMAGE, MASK_BLUR, MASK_RESIZE_DOWN, @@ -37,15 +36,13 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SDXL_CANVAS_INPAINT_GRAPH, SDXL_DENOISE_LATENTS, SDXL_MODEL_LOADER, SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Inpaint graph. @@ -63,11 +60,8 @@ export const buildCanvasSDXLInpaintGraph = ( cfgScale: cfg_scale, scheduler, steps, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, maskBlurMethod, @@ -82,7 +76,6 @@ export const buildCanvasSDXLInpaintGraph = ( sdxlImg2ImgDenoisingStrength: strength, shouldUseSDXLRefiner, refinerStart, - shouldConcatSDXLStylePrompt, } = state.sdxl; if (!model) { @@ -94,27 +87,21 @@ export const buildCanvasSDXLInpaintGraph = ( const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); const graph: NonNullableGraph = { id: SDXL_CANVAS_INPAINT_GRAPH, @@ -128,43 +115,44 @@ export const buildCanvasSDXLInpaintGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [MASK_BLUR]: { type: 'img_blur', id: MASK_BLUR, - is_intermediate: true, + is_intermediate, radius: maskBlur, blur_type: maskBlurMethod, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -175,20 +163,21 @@ export const buildCanvasSDXLInpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -198,29 +187,15 @@ export const buildCanvasSDXLInpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, reference: canvasInitImage, }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, - }, }, edges: [ // Connect Model Loader to UNet and CLIP @@ -336,48 +311,7 @@ export const buildCanvasSDXLInpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -451,7 +385,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -459,7 +393,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasMaskImage, @@ -467,14 +401,14 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -612,7 +546,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -665,7 +599,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -716,26 +650,6 @@ export const buildCanvasSDXLInpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -765,6 +679,9 @@ export const buildCanvasSDXLInpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -776,5 +693,7 @@ export const buildCanvasSDXLInpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts index 3f8fffb70a..c913492335 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts @@ -7,13 +7,13 @@ import { InfillPatchMatchInvocation, InfillTileInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -30,7 +30,6 @@ import { INPAINT_IMAGE_RESIZE_UP, INPAINT_INFILL, INPAINT_INFILL_RESIZE_DOWN, - ITERATE, LATENTS_TO_IMAGE, MASK_COMBINE, MASK_FROM_ALPHA, @@ -39,15 +38,13 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SDXL_CANVAS_OUTPAINT_GRAPH, SDXL_DENOISE_LATENTS, SDXL_MODEL_LOADER, SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Outpaint graph. @@ -65,11 +62,8 @@ export const buildCanvasSDXLOutpaintGraph = ( cfgScale: cfg_scale, scheduler, steps, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, canvasCoherenceMode, @@ -86,7 +80,6 @@ export const buildCanvasSDXLOutpaintGraph = ( sdxlImg2ImgDenoisingStrength: strength, shouldUseSDXLRefiner, refinerStart, - shouldConcatSDXLStylePrompt, } = state.sdxl; if (!model) { @@ -98,27 +91,21 @@ export const buildCanvasSDXLOutpaintGraph = ( const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); const graph: NonNullableGraph = { id: SDXL_CANVAS_OUTPAINT_GRAPH, @@ -132,48 +119,49 @@ export const buildCanvasSDXLOutpaintGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [MASK_FROM_ALPHA]: { type: 'tomask', id: MASK_FROM_ALPHA, - is_intermediate: true, + is_intermediate, image: canvasInitImage, }, [MASK_COMBINE]: { type: 'mask_combine', id: MASK_COMBINE, - is_intermediate: true, + is_intermediate, mask2: canvasMaskImage, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -184,20 +172,21 @@ export const buildCanvasSDXLOutpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -207,27 +196,13 @@ export const buildCanvasSDXLOutpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, - }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, + is_intermediate, }, }, edges: [ @@ -366,48 +341,7 @@ export const buildCanvasSDXLOutpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -487,7 +421,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_patchmatch', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, downscale: infillPatchmatchDownscaleSize, }; } @@ -496,7 +430,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_lama', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -504,7 +438,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_cv2', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -512,7 +446,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_tile', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, tile_size: infillTileSize, }; } @@ -526,7 +460,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -534,28 +468,28 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, }; graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[INPAINT_INFILL_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_INFILL_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -715,7 +649,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -762,7 +696,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -819,26 +753,6 @@ export const buildCanvasSDXLOutpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -868,6 +782,9 @@ export const buildCanvasSDXLOutpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -879,5 +796,7 @@ export const buildCanvasSDXLOutpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts index 6d787987ef..37245d7b6a 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts @@ -1,16 +1,16 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { DenoiseLatentsInvocation, ONNXTextToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -28,7 +28,7 @@ import { SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Text to Image graph. @@ -43,11 +43,11 @@ export const buildCanvasSDXLTextToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, vaePrecision, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -55,29 +55,22 @@ export const buildCanvasSDXLTextToImageGraph = ( // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); - const { shouldUseSDXLRefiner, refinerStart, shouldConcatSDXLStylePrompt } = - state.sdxl; + const { shouldUseSDXLRefiner, refinerStart } = state.sdxl; if (!model) { log.error('No model found in state'); throw new Error('No model found in state'); } - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const isUsingOnnxModel = model.model_type === 'onnx'; @@ -94,7 +87,7 @@ export const buildCanvasSDXLTextToImageGraph = ( ? { type: 't2l_onnx', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -102,7 +95,7 @@ export const buildCanvasSDXLTextToImageGraph = ( : { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -111,8 +104,8 @@ export const buildCanvasSDXLTextToImageGraph = ( }; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the @@ -131,27 +124,28 @@ export const buildCanvasSDXLTextToImageGraph = ( [modelLoaderNodeId]: { type: modelLoaderNodeType, id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [POSITIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -253,14 +247,14 @@ export const buildCanvasSDXLTextToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -291,7 +285,7 @@ export const buildCanvasSDXLTextToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -317,10 +311,10 @@ export const buildCanvasSDXLTextToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -366,12 +360,12 @@ export const buildCanvasSDXLTextToImageGraph = ( // optionally add custom VAE addVAEToGraph(state, graph, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -383,5 +377,7 @@ export const buildCanvasSDXLTextToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts index 094a7b02cc..2aa0b2b47d 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts @@ -1,15 +1,15 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { DenoiseLatentsInvocation, ONNXTextToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -41,11 +41,11 @@ export const buildCanvasTextToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, vaePrecision, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -53,14 +53,10 @@ export const buildCanvasTextToImageGraph = ( // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -70,9 +66,7 @@ export const buildCanvasTextToImageGraph = ( throw new Error('No model found in state'); } - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const isUsingOnnxModel = model.model_type === 'onnx'; @@ -89,7 +83,7 @@ export const buildCanvasTextToImageGraph = ( ? { type: 't2l_onnx', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -97,7 +91,7 @@ export const buildCanvasTextToImageGraph = ( : { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -122,31 +116,32 @@ export const buildCanvasTextToImageGraph = ( [modelLoaderNodeId]: { type: modelLoaderNodeType, id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -239,14 +234,14 @@ export const buildCanvasTextToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -277,7 +272,7 @@ export const buildCanvasTextToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -303,10 +298,10 @@ export const buildCanvasTextToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -339,12 +334,12 @@ export const buildCanvasTextToImageGraph = ( // add LoRA support addLoRAsToGraph(state, graph, DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -356,5 +351,7 @@ export const buildCanvasTextToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearBatchConfig.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearBatchConfig.ts new file mode 100644 index 0000000000..9c25ee3b8f --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearBatchConfig.ts @@ -0,0 +1,185 @@ +import { NUMPY_RAND_MAX } from 'app/constants'; +import { RootState } from 'app/store/store'; +import { generateSeeds } from 'common/util/generateSeeds'; +import { NonNullableGraph } from 'features/nodes/types/types'; +import { range, unset } from 'lodash-es'; +import { components } from 'services/api/schema'; +import { Batch, BatchConfig } from 'services/api/types'; +import { + CANVAS_COHERENCE_NOISE, + METADATA_ACCUMULATOR, + NOISE, + POSITIVE_CONDITIONING, +} from './constants'; + +export const prepareLinearUIBatch = ( + state: RootState, + graph: NonNullableGraph, + prepend: boolean +): BatchConfig => { + const { iterations, model, shouldRandomizeSeed, seed } = state.generation; + const { shouldConcatSDXLStylePrompt, positiveStylePrompt } = state.sdxl; + const { prompts, seedBehaviour } = state.dynamicPrompts; + + const data: Batch['data'] = []; + + if (prompts.length === 1) { + unset(graph.nodes[METADATA_ACCUMULATOR], 'seed'); + const seeds = generateSeeds({ + count: iterations, + start: shouldRandomizeSeed ? undefined : seed, + }); + + const zipped: components['schemas']['BatchDatum'][] = []; + + if (graph.nodes[NOISE]) { + zipped.push({ + node_path: NOISE, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + zipped.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[CANVAS_COHERENCE_NOISE]) { + zipped.push({ + node_path: CANVAS_COHERENCE_NOISE, + field_name: 'seed', + items: seeds.map((seed) => (seed + 1) % NUMPY_RAND_MAX), + }); + } + + data.push(zipped); + } else { + // prompts.length > 1 aka dynamic prompts + const firstBatchDatumList: components['schemas']['BatchDatum'][] = []; + const secondBatchDatumList: components['schemas']['BatchDatum'][] = []; + + // add seeds first to ensure the output order groups the prompts + if (seedBehaviour === 'PER_PROMPT') { + const seeds = generateSeeds({ + count: prompts.length * iterations, + start: shouldRandomizeSeed ? undefined : seed, + }); + + if (graph.nodes[NOISE]) { + firstBatchDatumList.push({ + node_path: NOISE, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + firstBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[CANVAS_COHERENCE_NOISE]) { + firstBatchDatumList.push({ + node_path: CANVAS_COHERENCE_NOISE, + field_name: 'seed', + items: seeds.map((seed) => (seed + 1) % NUMPY_RAND_MAX), + }); + } + } else { + // seedBehaviour = SeedBehaviour.PerRun + const seeds = generateSeeds({ + count: iterations, + start: shouldRandomizeSeed ? undefined : seed, + }); + + if (graph.nodes[NOISE]) { + secondBatchDatumList.push({ + node_path: NOISE, + field_name: 'seed', + items: seeds, + }); + } + if (graph.nodes[METADATA_ACCUMULATOR]) { + secondBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'seed', + items: seeds, + }); + } + if (graph.nodes[CANVAS_COHERENCE_NOISE]) { + secondBatchDatumList.push({ + node_path: CANVAS_COHERENCE_NOISE, + field_name: 'seed', + items: seeds.map((seed) => (seed + 1) % NUMPY_RAND_MAX), + }); + } + data.push(secondBatchDatumList); + } + + const extendedPrompts = + seedBehaviour === 'PER_PROMPT' + ? range(iterations).flatMap(() => prompts) + : prompts; + + // zipped batch of prompts + if (graph.nodes[POSITIVE_CONDITIONING]) { + firstBatchDatumList.push({ + node_path: POSITIVE_CONDITIONING, + field_name: 'prompt', + items: extendedPrompts, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + firstBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'positive_prompt', + items: extendedPrompts, + }); + } + + if (shouldConcatSDXLStylePrompt && model?.base_model === 'sdxl') { + unset(graph.nodes[METADATA_ACCUMULATOR], 'positive_style_prompt'); + + const stylePrompts = extendedPrompts.map((p) => + [p, positiveStylePrompt].join(' ') + ); + + if (graph.nodes[POSITIVE_CONDITIONING]) { + firstBatchDatumList.push({ + node_path: POSITIVE_CONDITIONING, + field_name: 'style', + items: stylePrompts, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + firstBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'positive_style_prompt', + items: stylePrompts, + }); + } + } + + data.push(firstBatchDatumList); + } + + const enqueueBatchArg: BatchConfig = { + prepend, + batch: { + graph, + runs: 1, + data, + }, + }; + + return enqueueBatchArg; +}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts index dc9a34c67e..bf8d9ea314 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts @@ -1,15 +1,15 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageResizeInvocation, ImageToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -41,6 +41,7 @@ export const buildLinearImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, initialImage, img2imgStrength: strength, @@ -49,22 +50,11 @@ export const buildLinearImageToImageGraph = ( height, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, } = state.generation; - // TODO: add batch functionality - // const { - // isEnabled: isBatchEnabled, - // imageNames: batchImageNames, - // asInitialImage, - // } = state.batch; - - // const shouldBatch = - // isBatchEnabled && batchImageNames.length > 0 && asInitialImage; - /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the * full graph here as a template. Then use the parameters from app state and set friendlier node @@ -85,12 +75,11 @@ export const buildLinearImageToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; + const is_intermediate = true; let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // copy-pasted graph from node editor, filled in with state values & friendly node ids const graph: NonNullableGraph = { @@ -100,31 +89,38 @@ export const buildLinearImageToImageGraph = ( type: 'main_model_loader', id: modelLoaderNodeId, model, + is_intermediate, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, skipped_layers: clipSkip, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, prompt: positivePrompt, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, + seed, + is_intermediate, }, [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, [DENOISE_LATENTS]: { type: 'denoise_latents', @@ -134,6 +130,7 @@ export const buildLinearImageToImageGraph = ( steps, denoising_start: 1 - strength, denoising_end: 1, + is_intermediate, }, [IMAGE_TO_LATENTS]: { type: 'i2l', @@ -143,6 +140,7 @@ export const buildLinearImageToImageGraph = ( // image_name: initialImage.image_name, // }, fp32, + is_intermediate, }, }, edges: [ @@ -320,10 +318,10 @@ export const buildLinearImageToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -358,12 +356,12 @@ export const buildLinearImageToImageGraph = ( // add LoRA support addLoRAsToGraph(state, graph, DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -375,5 +373,7 @@ export const buildLinearImageToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts index 757a3976bb..b10f4c5542 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts @@ -1,16 +1,16 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageResizeInvocation, ImageToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -28,7 +28,7 @@ import { SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Image to Image tab graph. @@ -43,6 +43,7 @@ export const buildLinearSDXLImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, initialImage, shouldFitToWidthHeight, @@ -50,7 +51,6 @@ export const buildLinearSDXLImageToImageGraph = ( height, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, @@ -59,7 +59,6 @@ export const buildLinearSDXLImageToImageGraph = ( const { positiveStylePrompt, negativeStylePrompt, - shouldConcatSDXLStylePrompt, shouldUseSDXLRefiner, refinerStart, sdxlImg2ImgDenoisingStrength: strength, @@ -85,17 +84,16 @@ export const buildLinearSDXLImageToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; + const is_intermediate = true; // Model Loader ID let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); // copy-pasted graph from node editor, filled in with state values & friendly node ids const graph: NonNullableGraph = { @@ -105,28 +103,34 @@ export const buildLinearSDXLImageToImageGraph = ( type: 'sdxl_model_loader', id: modelLoaderNodeId, model, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, + seed, + is_intermediate, }, [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -138,6 +142,7 @@ export const buildLinearSDXLImageToImageGraph = ( ? Math.min(refinerStart, 1 - strength) : 1 - strength, denoising_end: shouldUseSDXLRefiner ? refinerStart : 1, + is_intermediate, }, [IMAGE_TO_LATENTS]: { type: 'i2l', @@ -147,6 +152,7 @@ export const buildLinearSDXLImageToImageGraph = ( // image_name: initialImage.image_name, // }, fp32, + is_intermediate, }, }, edges: [ @@ -333,10 +339,10 @@ export const buildLinearSDXLImageToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -384,8 +390,8 @@ export const buildLinearSDXLImageToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { @@ -398,5 +404,7 @@ export const buildLinearSDXLImageToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts index 9590e77f89..73c831081d 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts @@ -1,12 +1,12 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -22,7 +22,7 @@ import { SDXL_TEXT_TO_IMAGE_GRAPH, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; export const buildLinearSDXLTextToImageGraph = ( state: RootState @@ -34,12 +34,12 @@ export const buildLinearSDXLTextToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, width, height, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, @@ -49,13 +49,10 @@ export const buildLinearSDXLTextToImageGraph = ( positiveStylePrompt, negativeStylePrompt, shouldUseSDXLRefiner, - shouldConcatSDXLStylePrompt, refinerStart, } = state.sdxl; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; if (!model) { log.error('No model found in state'); @@ -63,10 +60,11 @@ export const buildLinearSDXLTextToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; + const is_intermediate = true; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); // Model Loader ID let modelLoaderNodeId = SDXL_MODEL_LOADER; @@ -88,25 +86,30 @@ export const buildLinearSDXLTextToImageGraph = ( type: 'sdxl_model_loader', id: modelLoaderNodeId, model, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, + seed, width, height, use_cpu, + is_intermediate, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -116,11 +119,13 @@ export const buildLinearSDXLTextToImageGraph = ( steps, denoising_start: 0, denoising_end: shouldUseSDXLRefiner ? refinerStart : 1, + is_intermediate, }, [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, }, edges: [ @@ -228,10 +233,10 @@ export const buildLinearSDXLTextToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -277,8 +282,8 @@ export const buildLinearSDXLTextToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); + // add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { @@ -291,5 +296,7 @@ export const buildLinearSDXLTextToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts index 5c534fff21..d7af045803 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts @@ -1,15 +1,15 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { DenoiseLatentsInvocation, ONNXTextToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -42,15 +42,13 @@ export const buildLinearTextToImageGraph = ( height, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, + seed, } = state.generation; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; if (!model) { log.error('No model found in state'); @@ -58,7 +56,7 @@ export const buildLinearTextToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingOnnxModel = model.model_type === 'onnx'; let modelLoaderNodeId = isUsingOnnxModel @@ -74,7 +72,7 @@ export const buildLinearTextToImageGraph = ( ? { type: 't2l_onnx', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -82,7 +80,7 @@ export const buildLinearTextToImageGraph = ( : { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -108,40 +106,42 @@ export const buildLinearTextToImageGraph = ( [modelLoaderNodeId]: { type: modelLoaderNodeType, id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, skipped_layers: clipSkip, - is_intermediate: true, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - is_intermediate: true, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - is_intermediate: true, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, + seed, width, height, use_cpu, - is_intermediate: true, + is_intermediate, }, [t2lNode.id]: t2lNode, [LATENTS_TO_IMAGE]: { type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, }, edges: [ @@ -240,10 +240,10 @@ export const buildLinearTextToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -276,12 +276,12 @@ export const buildLinearTextToImageGraph = ( // add LoRA support addLoRAsToGraph(state, graph, DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -293,5 +293,7 @@ export const buildLinearTextToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts index 71f79dbab5..7be06ac110 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts @@ -55,6 +55,9 @@ export const buildNodesGraph = (nodesState: NodesState): Graph => { {} as Record, unknown> ); + // add reserved use_cache + transformedInputs['use_cache'] = node.data.useCache; + // Build this specific node const graphNode = { type, diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts index 70bd0c4058..32c46944c7 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts @@ -3,6 +3,7 @@ export const POSITIVE_CONDITIONING = 'positive_conditioning'; export const NEGATIVE_CONDITIONING = 'negative_conditioning'; export const DENOISE_LATENTS = 'denoise_latents'; export const LATENTS_TO_IMAGE = 'latents_to_image'; +export const SAVE_IMAGE = 'save_image'; export const NSFW_CHECKER = 'nsfw_checker'; export const WATERMARKER = 'invisible_watermark'; export const NOISE = 'noise'; @@ -45,6 +46,7 @@ export const MASK_RESIZE_DOWN = 'mask_resize_down'; export const COLOR_CORRECT = 'color_correct'; export const PASTE_IMAGE = 'img_paste'; export const CONTROL_NET_COLLECT = 'control_net_collect'; +export const IP_ADAPTER = 'ip_adapter'; export const DYNAMIC_PROMPT = 'dynamic_prompt'; export const IMAGE_COLLECTION = 'image_collection'; export const IMAGE_COLLECTION_ITERATE = 'image_collection_iterate'; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts index f46d5cc5dc..ac058abd82 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts @@ -1,28 +1,26 @@ import { RootState } from 'app/store/store'; -export const craftSDXLStylePrompt = ( +export const buildSDXLStylePrompts = ( state: RootState, - shouldConcatSDXLStylePrompt: boolean + overrideConcat?: boolean ) => { const { positivePrompt, negativePrompt } = state.generation; - const { positiveStylePrompt, negativeStylePrompt } = state.sdxl; + const { + positiveStylePrompt, + negativeStylePrompt, + shouldConcatSDXLStylePrompt, + } = state.sdxl; - let craftedPositiveStylePrompt = positiveStylePrompt; - let craftedNegativeStylePrompt = negativeStylePrompt; + // Construct Style Prompt + const joinedPositiveStylePrompt = + shouldConcatSDXLStylePrompt || overrideConcat + ? [positivePrompt, positiveStylePrompt].join(' ') + : positiveStylePrompt; - if (shouldConcatSDXLStylePrompt) { - if (positiveStylePrompt.length > 0) { - craftedPositiveStylePrompt = `${positivePrompt} ${positiveStylePrompt}`; - } else { - craftedPositiveStylePrompt = positivePrompt; - } + const joinedNegativeStylePrompt = + shouldConcatSDXLStylePrompt || overrideConcat + ? [negativePrompt, negativeStylePrompt].join(' ') + : negativeStylePrompt; - if (negativeStylePrompt.length > 0) { - craftedNegativeStylePrompt = `${negativePrompt} ${negativeStylePrompt}`; - } else { - craftedNegativeStylePrompt = negativePrompt; - } - } - - return { craftedPositiveStylePrompt, craftedNegativeStylePrompt }; + return { joinedPositiveStylePrompt, joinedNegativeStylePrompt }; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts b/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts index 8615a12c46..69d8d9dd4c 100644 --- a/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts +++ b/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts @@ -16,7 +16,7 @@ import { } from '../types/types'; import { buildInputFieldTemplate, getFieldType } from './fieldTemplateBuilders'; -const RESERVED_INPUT_FIELD_NAMES = ['id', 'type', 'metadata']; +const RESERVED_INPUT_FIELD_NAMES = ['id', 'type', 'metadata', 'use_cache']; const RESERVED_OUTPUT_FIELD_NAMES = ['type']; const RESERVED_FIELD_TYPES = [ 'WorkflowField', @@ -235,6 +235,8 @@ export const parseSchema = ( {} as Record ); + const useCache = schema.properties.use_cache.default; + const invocation: InvocationTemplate = { title, type, @@ -244,6 +246,7 @@ export const parseSchema = ( outputType, inputs, outputs, + useCache, }; Object.assign(invocationsAccumulator, { [type]: invocation }); diff --git a/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts b/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts index 14b90fc731..9e5cea13f6 100644 --- a/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts +++ b/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts @@ -73,7 +73,7 @@ export const validateWorkflow = ( !(edge.sourceHandle in sourceNode.data.outputs) ) { issues.push( - `${i18n.t('nodes.outputNodes')} "${edge.source}.${ + `${i18n.t('nodes.outputNode')} "${edge.source}.${ edge.sourceHandle }" ${i18n.t('nodes.doesNotExist')}` ); @@ -89,7 +89,7 @@ export const validateWorkflow = ( !(edge.targetHandle in targetNode.data.inputs) ) { issues.push( - `${i18n.t('nodes.inputFeilds')} "${edge.target}.${ + `${i18n.t('nodes.inputField')} "${edge.target}.${ edge.targetHandle }" ${i18n.t('nodes.doesNotExist')}` ); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx index 2d461f7bb4..dea4bb7b3d 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx @@ -1,37 +1,64 @@ -import { Flex } from '@chakra-ui/react'; +import { Divider, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { RootState, stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; -import ParamClipSkip from './ParamClipSkip'; +import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; +import { ParamCpuNoiseToggle } from '../Noise/ParamCpuNoise'; +import ParamSeamless from '../Seamless/ParamSeamless'; +import ParamClipSkip from './ParamClipSkip'; const selector = createSelector( stateSelector, (state: RootState) => { - const clipSkip = state.generation.clipSkip; - return { - activeLabel: clipSkip > 0 ? 'Clip Skip' : undefined, - }; + const { clipSkip, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise } = + state.generation; + + return { clipSkip, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise }; }, defaultSelectorOptions ); export default function ParamAdvancedCollapse() { - const { activeLabel } = useAppSelector(selector); - const shouldShowAdvancedOptions = useAppSelector( - (state: RootState) => state.generation.shouldShowAdvancedOptions - ); + const { clipSkip, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise } = + useAppSelector(selector); const { t } = useTranslation(); - if (!shouldShowAdvancedOptions) { - return null; - } + const activeLabel = useMemo(() => { + const activeLabel: string[] = []; + + if (shouldUseCpuNoise) { + activeLabel.push(t('parameters.cpuNoise')); + } else { + activeLabel.push(t('parameters.gpuNoise')); + } + + if (clipSkip > 0) { + activeLabel.push( + t('parameters.clipSkipWithLayerCount', { layerCount: clipSkip }) + ); + } + + if (seamlessXAxis && seamlessYAxis) { + activeLabel.push(t('parameters.seamlessX&Y')); + } else if (seamlessXAxis) { + activeLabel.push(t('parameters.seamlessX')); + } else if (seamlessYAxis) { + activeLabel.push(t('parameters.seamlessY')); + } + + return activeLabel.join(', '); + }, [clipSkip, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise, t]); return ( + + + + ); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx index f51e42b6a1..a7d3d3c655 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx @@ -1,5 +1,6 @@ import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setClipSkip } from 'features/parameters/store/generationSlice'; import { clipSkipMap } from 'features/parameters/types/constants'; @@ -42,19 +43,21 @@ export default function ParamClipSkip() { }, [model]); return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx index 1c1f60bc09..a3eb428526 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx @@ -18,6 +18,7 @@ import ParamAspectRatio, { } from '../../Core/ParamAspectRatio'; import ParamBoundingBoxHeight from './ParamBoundingBoxHeight'; import ParamBoundingBoxWidth from './ParamBoundingBoxWidth'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const sizeOptsSelector = createSelector( [generationSelector, canvasSelector], @@ -93,18 +94,20 @@ export default function ParamBoundingBoxSize() { }} > - - {t('parameters.aspectRatio')} - + + + {t('parameters.aspectRatio')} + + { }; return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx index 5482a7e1d9..f7de446737 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx @@ -1,5 +1,6 @@ import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setCanvasCoherenceSteps } from 'features/parameters/store/generationSlice'; import { memo } from 'react'; @@ -13,23 +14,25 @@ const ParamCanvasCoherenceSteps = () => { const { t } = useTranslation(); return ( - { - dispatch(setCanvasCoherenceSteps(v)); - }} - withInput - withSliderMarks - withReset - handleReset={() => { - dispatch(setCanvasCoherenceSteps(20)); - }} - /> + + { + dispatch(setCanvasCoherenceSteps(v)); + }} + withInput + withSliderMarks + withReset + handleReset={() => { + dispatch(setCanvasCoherenceSteps(20)); + }} + /> + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx index f478bd70fe..31b86cfd49 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx @@ -1,5 +1,6 @@ import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setCanvasCoherenceStrength } from 'features/parameters/store/generationSlice'; import { memo } from 'react'; @@ -13,23 +14,25 @@ const ParamCanvasCoherenceStrength = () => { const { t } = useTranslation(); return ( - { - dispatch(setCanvasCoherenceStrength(v)); - }} - withInput - withSliderMarks - withReset - handleReset={() => { - dispatch(setCanvasCoherenceStrength(0.3)); - }} - /> + + { + dispatch(setCanvasCoherenceStrength(v)); + }} + withInput + withSliderMarks + withReset + handleReset={() => { + dispatch(setCanvasCoherenceStrength(0.3)); + }} + /> + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx index 82b82228e2..da68f5ed3c 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx @@ -1,5 +1,6 @@ import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setMaskBlur } from 'features/parameters/store/generationSlice'; import { useTranslation } from 'react-i18next'; @@ -12,21 +13,23 @@ export default function ParamMaskBlur() { const { t } = useTranslation(); return ( - { - dispatch(setMaskBlur(v)); - }} - withInput - withSliderMarks - withReset - handleReset={() => { - dispatch(setMaskBlur(16)); - }} - /> + + { + dispatch(setMaskBlur(v)); + }} + withInput + withSliderMarks + withReset + handleReset={() => { + dispatch(setMaskBlur(16)); + }} + /> + ); } diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx index 62d0605640..12da7fd2fd 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx @@ -2,6 +2,7 @@ import { SelectItem } from '@mantine/core'; import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { setMaskBlurMethod } from 'features/parameters/store/generationSlice'; import { useTranslation } from 'react-i18next'; @@ -28,11 +29,13 @@ export default function ParamMaskBlurMethod() { }; return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/ParamCompositingSettingsCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/ParamCompositingSettingsCollapse.tsx index d0a0ff8f01..606d6d2dfc 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/ParamCompositingSettingsCollapse.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/ParamCompositingSettingsCollapse.tsx @@ -15,13 +15,19 @@ const ParamCompositingSettingsCollapse = () => { return ( - + - + diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx index 9ac0e3588f..7a4ac1601d 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { setInfillMethod } from 'features/parameters/store/generationSlice'; @@ -39,14 +40,16 @@ const ParamInfillMethod = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx index e00d56b639..a1c63d6ddb 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx @@ -1,6 +1,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAIMantineSearchableSelect from 'common/components/IAIMantineSearchableSelect'; import { canvasSelector } from 'features/canvas/store/canvasSelectors'; import { setBoundingBoxScaleMethod } from 'features/canvas/store/canvasSlice'; @@ -35,12 +36,14 @@ const ParamScaleBeforeProcessing = () => { }; return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx index 39ff5022d4..cd276713c3 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx @@ -6,6 +6,7 @@ import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; import IAIIconButton from 'common/components/IAIIconButton'; import ControlNet from 'features/controlNet/components/ControlNet'; +import IPAdapterPanel from 'features/controlNet/components/ipAdapter/IPAdapterPanel'; import ParamControlNetFeatureToggle from 'features/controlNet/components/parameters/ParamControlNetFeatureToggle'; import { controlNetAdded, @@ -14,25 +15,31 @@ import { import { getValidControlNets } from 'features/controlNet/util/getValidControlNets'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { map } from 'lodash-es'; -import { Fragment, memo, useCallback } from 'react'; +import { Fragment, memo, useCallback, useMemo } from 'react'; import { FaPlus } from 'react-icons/fa'; -import { - controlNetModelsAdapter, - useGetControlNetModelsQuery, -} from 'services/api/endpoints/models'; +import { useGetControlNetModelsQuery } from 'services/api/endpoints/models'; import { v4 as uuidv4 } from 'uuid'; const selector = createSelector( [stateSelector], ({ controlNet }) => { - const { controlNets, isEnabled } = controlNet; + const { controlNets, isEnabled, isIPAdapterEnabled } = controlNet; const validControlNets = getValidControlNets(controlNets); - const activeLabel = - isEnabled && validControlNets.length > 0 - ? `${validControlNets.length} Active` - : undefined; + let activeLabel = undefined; + + if (isEnabled && validControlNets.length > 0) { + activeLabel = `${validControlNets.length} ControlNet`; + } + + if (isIPAdapterEnabled) { + if (activeLabel) { + activeLabel = `${activeLabel}, IP Adapter`; + } else { + activeLabel = 'IP Adapter'; + } + } return { controlNetsArray: map(controlNets), activeLabel }; }, @@ -43,16 +50,22 @@ const ParamControlNetCollapse = () => { const { controlNetsArray, activeLabel } = useAppSelector(selector); const isControlNetDisabled = useFeatureStatus('controlNet').isFeatureDisabled; const dispatch = useAppDispatch(); - const { firstModel } = useGetControlNetModelsQuery(undefined, { - selectFromResult: (result) => { - const firstModel = result.data - ? controlNetModelsAdapter.getSelectors().selectAll(result.data)[0] - : undefined; - return { - firstModel, - }; - }, - }); + const { data: controlnetModels } = useGetControlNetModelsQuery(); + + const firstModel = useMemo(() => { + if (!controlnetModels || !Object.keys(controlnetModels.entities).length) { + return undefined; + } + const firstModelId = Object.keys(controlnetModels.entities)[0]; + + if (!firstModelId) { + return undefined; + } + + const firstModel = controlnetModels.entities[firstModelId]; + + return firstModel ? firstModel : undefined; + }, [controlnetModels]); const handleClickedAddControlNet = useCallback(() => { if (!firstModel) { @@ -101,6 +114,7 @@ const ParamControlNetCollapse = () => { ))} + ); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx index 54a7ccbe65..51d6edc2dc 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAINumberInput from 'common/components/IAINumberInput'; import IAISlider from 'common/components/IAISlider'; import { setCfgScale } from 'features/parameters/store/generationSlice'; @@ -53,31 +54,35 @@ const ParamCFGScale = () => { ); return shouldUseSliders ? ( - + + + ) : ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx index 1e203a1e45..f9df43d7ca 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAINumberInput from 'common/components/IAINumberInput'; import IAISlider from 'common/components/IAISlider'; import { setIterations } from 'features/parameters/store/generationSlice'; @@ -15,8 +16,6 @@ const selector = createSelector( state.config.sd.iterations; const { iterations } = state.generation; const { shouldUseSliders } = state.ui; - const isDisabled = - state.dynamicPrompts.isEnabled && state.dynamicPrompts.combinatorial; const step = state.hotkeys.shift ? fineStep : coarseStep; @@ -28,13 +27,16 @@ const selector = createSelector( inputMax, step, shouldUseSliders, - isDisabled, }; }, defaultSelectorOptions ); -const ParamIterations = () => { +type Props = { + asSlider?: boolean; +}; + +const ParamIterations = ({ asSlider }: Props) => { const { iterations, initial, @@ -43,7 +45,6 @@ const ParamIterations = () => { inputMax, step, shouldUseSliders, - isDisabled, } = useAppSelector(selector); const dispatch = useAppDispatch(); const { t } = useTranslation(); @@ -59,32 +60,34 @@ const ParamIterations = () => { dispatch(setIterations(initial)); }, [dispatch, initial]); - return shouldUseSliders ? ( - + return asSlider || shouldUseSliders ? ( + + + ) : ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx index 2aab013f4f..1154187eaf 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx @@ -9,6 +9,7 @@ import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; import { flushSync } from 'react-dom'; import { useTranslation } from 'react-i18next'; import { useFeatureStatus } from '../../../../system/hooks/useFeatureStatus'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const ParamNegativeConditioning = () => { const negativePrompt = useAppSelector( @@ -81,18 +82,20 @@ const ParamNegativeConditioning = () => { onClose={onClose} onSelect={handleSelectEmbedding} > - + + + {!isOpen && isEmbeddingEnabled && ( { + [stateSelector], + ({ generation }) => { return { prompt: generation.positivePrompt, - activeTabName, }; }, { @@ -41,8 +33,7 @@ const promptInputSelector = createSelector( */ const ParamPositiveConditioning = () => { const dispatch = useAppDispatch(); - const { prompt, activeTabName } = useAppSelector(promptInputSelector); - const isReady = useIsReadyToInvoke(); + const { prompt } = useAppSelector(promptInputSelector); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); const { t } = useTranslation(); @@ -104,23 +95,13 @@ const ParamPositiveConditioning = () => { const handleKeyDown = useCallback( (e: KeyboardEvent) => { - if (e.key === 'Enter' && e.shiftKey === false && isReady) { - e.preventDefault(); - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - } if (isEmbeddingEnabled && e.key === '<') { onOpen(); } }, - [isReady, dispatch, activeTabName, onOpen, isEmbeddingEnabled] + [onOpen, isEmbeddingEnabled] ); - // const handleSelect = (e: MouseEvent) => { - // const target = e.target as HTMLTextAreaElement; - // setCaret({ start: target.selectionStart, end: target.selectionEnd }); - // }; - return ( @@ -129,17 +110,19 @@ const ParamPositiveConditioning = () => { onClose={onClose} onSelect={handleSelectEmbedding} > - + + + {!isOpen && isEmbeddingEnabled && ( diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx index da1b359b37..3aadac0457 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx @@ -1,6 +1,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAIMantineSearchableSelect from 'common/components/IAIMantineSearchableSelect'; import { generationSelector } from 'features/parameters/store/generationSelectors'; import { setScheduler } from 'features/parameters/store/generationSlice'; @@ -51,12 +52,14 @@ const ParamScheduler = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx index 63700c4922..c7ddd59559 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx @@ -16,6 +16,8 @@ import { activeTabNameSelector } from '../../../../ui/store/uiSelectors'; import ParamAspectRatio, { mappedAspectRatios } from './ParamAspectRatio'; import ParamHeight from './ParamHeight'; import ParamWidth from './ParamWidth'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; const sizeOptsSelector = createSelector( [generationSelector, activeTabNameSelector], @@ -30,7 +32,8 @@ const sizeOptsSelector = createSelector( width, height, }; - } + }, + defaultSelectorOptions ); export default function ParamSize() { @@ -81,18 +84,20 @@ export default function ParamSize() { }} > - - {t('parameters.aspectRatio')} - + + + {t('parameters.aspectRatio')} + + { }, [dispatch]); return shouldUseSliders ? ( - + + + ) : ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx index 2a14ee634c..b22dff22e5 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx @@ -7,6 +7,7 @@ import { setImg2imgStrength } from 'features/parameters/store/generationSlice'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import SubParametersWrapper from '../SubParametersWrapper'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const selector = createSelector( [stateSelector], @@ -46,20 +47,22 @@ const ImageToImageStrength = () => { return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx index 05b5b6468a..9c957523bc 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx @@ -21,6 +21,7 @@ import { useGetOnnxModelsQuery, } from 'services/api/endpoints/models'; import { useFeatureStatus } from '../../../../system/hooks/useFeatureStatus'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const selector = createSelector( stateSelector, @@ -118,24 +119,28 @@ const ParamMainModelSelect = () => { data={[]} /> ) : ( - - 0 ? 'Select a model' : 'No models available'} - data={data} - error={data.length === 0} - disabled={data.length === 0} - onChange={handleChangeModel} - w="100%" - /> - {isSyncModelEnabled && ( - - - - )} - + + + 0 ? 'Select a model' : 'No models available' + } + data={data} + error={data.length === 0} + disabled={data.length === 0} + onChange={handleChangeModel} + w="100%" + /> + {isSyncModelEnabled && ( + + + + )} + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx index f10c3dd1a5..b3c8aea415 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx @@ -1,38 +1,31 @@ -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAISwitch from 'common/components/IAISwitch'; import { shouldUseCpuNoiseChanged } from 'features/parameters/store/generationSlice'; -import { ChangeEvent } from 'react'; +import { ChangeEvent, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -const selector = createSelector( - stateSelector, - (state) => { - const { shouldUseNoiseSettings, shouldUseCpuNoise } = state.generation; - return { - isDisabled: !shouldUseNoiseSettings, - shouldUseCpuNoise, - }; - }, - defaultSelectorOptions -); - export const ParamCpuNoiseToggle = () => { const dispatch = useAppDispatch(); - const { isDisabled, shouldUseCpuNoise } = useAppSelector(selector); + const shouldUseCpuNoise = useAppSelector( + (state) => state.generation.shouldUseCpuNoise + ); const { t } = useTranslation(); - const handleChange = (e: ChangeEvent) => - dispatch(shouldUseCpuNoiseChanged(e.target.checked)); + const handleChange = useCallback( + (e: ChangeEvent) => { + dispatch(shouldUseCpuNoiseChanged(e.target.checked)); + }, + [dispatch] + ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx deleted file mode 100644 index 0419ecc656..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; -import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import IAICollapse from 'common/components/IAICollapse'; -import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { ParamCpuNoiseToggle } from './ParamCpuNoise'; -import ParamNoiseThreshold from './ParamNoiseThreshold'; -import { ParamNoiseToggle } from './ParamNoiseToggle'; -import ParamPerlinNoise from './ParamPerlinNoise'; - -const selector = createSelector( - stateSelector, - (state) => { - const { shouldUseNoiseSettings } = state.generation; - return { - activeLabel: shouldUseNoiseSettings ? 'Enabled' : undefined, - }; - }, - defaultSelectorOptions -); - -const ParamNoiseCollapse = () => { - const { t } = useTranslation(); - - const isNoiseEnabled = useFeatureStatus('noise').isFeatureEnabled; - const isPerlinNoiseEnabled = useFeatureStatus('perlinNoise').isFeatureEnabled; - const isNoiseThresholdEnabled = - useFeatureStatus('noiseThreshold').isFeatureEnabled; - - const { activeLabel } = useAppSelector(selector); - - if (!isNoiseEnabled) { - return null; - } - - return ( - - - - - {isPerlinNoiseEnabled && } - {isNoiseThresholdEnabled && } - - - ); -}; - -export default memo(ParamNoiseCollapse); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx index 3abb7532b4..7244800c41 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx @@ -9,9 +9,8 @@ import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, (state) => { - const { shouldUseNoiseSettings, threshold } = state.generation; + const { threshold } = state.generation; return { - isDisabled: !shouldUseNoiseSettings, threshold, }; }, @@ -20,12 +19,11 @@ const selector = createSelector( export default function ParamNoiseThreshold() { const dispatch = useAppDispatch(); - const { threshold, isDisabled } = useAppSelector(selector); + const { threshold } = useAppSelector(selector); const { t } = useTranslation(); return ( { - const dispatch = useAppDispatch(); - const { t } = useTranslation(); - - const shouldUseNoiseSettings = useAppSelector( - (state: RootState) => state.generation.shouldUseNoiseSettings - ); - - const handleChange = (e: ChangeEvent) => - dispatch(setShouldUseNoiseSettings(e.target.checked)); - - return ( - - ); -}; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx index afd676223c..b5429dc292 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx @@ -9,9 +9,8 @@ import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, (state) => { - const { shouldUseNoiseSettings, perlin } = state.generation; + const { perlin } = state.generation; return { - isDisabled: !shouldUseNoiseSettings, perlin, }; }, @@ -20,12 +19,11 @@ const selector = createSelector( export default function ParamPerlinNoise() { const dispatch = useAppDispatch(); - const { perlin, isDisabled } = useAppSelector(selector); + const { perlin } = useAppSelector(selector); const { t } = useTranslation(); return ( { + const { t } = useTranslation(); + + const isSeamlessEnabled = useFeatureStatus('seamless').isFeatureEnabled; + + if (!isSeamlessEnabled) { + return null; + } + + return ( + + {t('parameters.seamlessTiling')}{' '} + + + + + + + + + + ); +}; + +export default memo(ParamSeamless); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse.tsx deleted file mode 100644 index 099090fe3f..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Box, Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import IAICollapse from 'common/components/IAICollapse'; -import { generationSelector } from 'features/parameters/store/generationSelectors'; -import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; -import ParamSeamlessXAxis from './ParamSeamlessXAxis'; -import ParamSeamlessYAxis from './ParamSeamlessYAxis'; - -const getActiveLabel = (seamlessXAxis: boolean, seamlessYAxis: boolean) => { - if (seamlessXAxis && seamlessYAxis) { - return 'X & Y'; - } - - if (seamlessXAxis) { - return 'X'; - } - - if (seamlessYAxis) { - return 'Y'; - } -}; - -const selector = createSelector( - generationSelector, - (generation) => { - const { seamlessXAxis, seamlessYAxis } = generation; - - const activeLabel = getActiveLabel(seamlessXAxis, seamlessYAxis); - return { activeLabel }; - }, - defaultSelectorOptions -); - -const ParamSeamlessCollapse = () => { - const { t } = useTranslation(); - const { activeLabel } = useAppSelector(selector); - - const isSeamlessEnabled = useFeatureStatus('seamless').isFeatureEnabled; - - if (!isSeamlessEnabled) { - return null; - } - - return ( - - - - - - - - - - - ); -}; - -export default memo(ParamSeamlessCollapse); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx index a1887ec896..8ddba1cbb2 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx @@ -3,14 +3,17 @@ import { memo } from 'react'; import ParamSeed from './ParamSeed'; import ParamSeedShuffle from './ParamSeedShuffle'; import ParamSeedRandomize from './ParamSeedRandomize'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const ParamSeedFull = () => { return ( - - - - - + + + + + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx index 96c78b1336..65b565e926 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx @@ -1,9 +1,11 @@ import { Flex, Text } from '@chakra-ui/react'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import { ReactNode, memo } from 'react'; type SubParameterWrapperProps = { children: ReactNode | ReactNode[]; label?: string; + headerInfoPopover?: string; }; const SubParametersWrapper = (props: SubParameterWrapperProps) => ( @@ -21,7 +23,18 @@ const SubParametersWrapper = (props: SubParameterWrapperProps) => ( }, }} > - {props.label && ( + {props.headerInfoPopover && props.label && ( + + + {props.label} + + + )} + {!props.headerInfoPopover && props.label && ( { const { imageDTO } = props; const dispatch = useAppDispatch(); - const isBusy = useAppSelector(selectIsBusy); + const inProgress = useIsQueueMutationInProgress(); const { t } = useTranslation(); const { isOpen, onOpen, onClose } = useDisclosure(); @@ -34,8 +34,9 @@ const ParamUpscalePopover = (props: Props) => { onClose={onClose} triggerComponent={ } + icon={} aria-label={t('parameters.upscale')} /> } @@ -49,7 +50,7 @@ const ParamUpscalePopover = (props: Props) => { {t('parameters.upscaleImage')} diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx index f82b02b5af..c551562962 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx @@ -15,6 +15,7 @@ import IAIMantineSelectItemWithTooltip from 'common/components/IAIMantineSelectI import { vaeSelected } from 'features/parameters/store/generationSlice'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; import { modelIdToVAEModelParam } from 'features/parameters/util/modelIdToVAEModelParam'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const selector = createSelector( stateSelector, @@ -93,17 +94,19 @@ const ParamVAEModelSelect = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx index c57cdc1132..5fa15c5fe3 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { vaePrecisionChanged } from 'features/parameters/store/generationSlice'; import { PrecisionParam } from 'features/parameters/types/parameterSchemas'; @@ -34,12 +35,14 @@ const ParamVAEModelSelect = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/CancelButton.tsx b/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/CancelButton.tsx deleted file mode 100644 index 6a80ccb52f..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/CancelButton.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import { - ButtonGroup, - ButtonProps, - ButtonSpinner, - Menu, - MenuButton, - MenuItemOption, - MenuList, - MenuOptionGroup, -} from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import IAIIconButton from 'common/components/IAIIconButton'; -import { systemSelector } from 'features/system/store/systemSelectors'; -import { - CancelStrategy, - SystemState, - cancelScheduled, - cancelTypeChanged, -} from 'features/system/store/systemSlice'; -import { isEqual } from 'lodash-es'; -import { memo, useCallback, useMemo } from 'react'; - -import { useHotkeys } from 'react-hotkeys-hook'; -import { useTranslation } from 'react-i18next'; -import { MdCancel, MdCancelScheduleSend } from 'react-icons/md'; - -import { ChevronDownIcon } from '@chakra-ui/icons'; -import { sessionCanceled } from 'services/api/thunks/session'; -import IAIButton from 'common/components/IAIButton'; - -const cancelButtonSelector = createSelector( - systemSelector, - (system: SystemState) => { - return { - isProcessing: system.isProcessing, - isConnected: system.isConnected, - isCancelable: system.isCancelable, - currentIteration: system.currentIteration, - totalIterations: system.totalIterations, - sessionId: system.sessionId, - cancelType: system.cancelType, - isCancelScheduled: system.isCancelScheduled, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: isEqual, - }, - } -); - -type Props = Omit & { - btnGroupWidth?: string | number; - asIconButton?: boolean; -}; - -const CancelButton = (props: Props) => { - const dispatch = useAppDispatch(); - const { btnGroupWidth = 'auto', asIconButton = false, ...rest } = props; - const { - isProcessing, - isConnected, - isCancelable, - cancelType, - isCancelScheduled, - sessionId, - } = useAppSelector(cancelButtonSelector); - - const handleClickCancel = useCallback(() => { - if (!sessionId) { - return; - } - - if (cancelType === 'scheduled') { - dispatch(cancelScheduled()); - return; - } - - dispatch(sessionCanceled({ session_id: sessionId })); - }, [dispatch, sessionId, cancelType]); - - const { t } = useTranslation(); - - const handleCancelTypeChanged = useCallback( - (value: string | string[]) => { - const newCancelType = Array.isArray(value) ? value[0] : value; - dispatch(cancelTypeChanged(newCancelType as CancelStrategy)); - }, - [dispatch] - ); - - useHotkeys( - 'shift+x', - () => { - if ((isConnected || isProcessing) && isCancelable) { - handleClickCancel(); - } - }, - [isConnected, isProcessing, isCancelable] - ); - - const cancelLabel = useMemo(() => { - if (isCancelScheduled) { - return t('parameters.cancel.isScheduled'); - } - if (cancelType === 'immediate') { - return t('parameters.cancel.immediate'); - } - - return t('parameters.cancel.schedule'); - }, [t, cancelType, isCancelScheduled]); - - const cancelIcon = useMemo(() => { - if (isCancelScheduled) { - return ; - } - if (cancelType === 'immediate') { - return ; - } - - return ; - }, [cancelType, isCancelScheduled]); - - return ( - - {asIconButton ? ( - - ) : ( - - {t('parameters.cancel.cancel')} - - )} - - } - paddingX={0} - paddingY={0} - colorScheme="error" - minWidth={5} - {...rest} - /> - - - - {t('parameters.cancel.immediate')} - - - {t('parameters.cancel.schedule')} - - - - - - ); -}; - -export default memo(CancelButton); diff --git a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/InvokeButton.tsx b/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/InvokeButton.tsx deleted file mode 100644 index 0b81fceed7..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/InvokeButton.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import { - Box, - Divider, - Flex, - ListItem, - Text, - UnorderedList, -} from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { userInvoked } from 'app/store/actions'; -import { stateSelector } from 'app/store/store'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import IAIButton, { IAIButtonProps } from 'common/components/IAIButton'; -import IAIIconButton, { - IAIIconButtonProps, -} from 'common/components/IAIIconButton'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; -import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; -import ProgressBar from 'features/system/components/ProgressBar'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; -import { memo, useCallback } from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { useTranslation } from 'react-i18next'; -import { FaPlay } from 'react-icons/fa'; -import { useBoardName } from 'services/api/hooks/useBoardName'; - -interface InvokeButton - extends Omit { - asIconButton?: boolean; -} - -export default function InvokeButton(props: InvokeButton) { - const { asIconButton = false, sx, ...rest } = props; - const dispatch = useAppDispatch(); - const { isReady, isProcessing } = useIsReadyToInvoke(); - const activeTabName = useAppSelector(activeTabNameSelector); - - const handleInvoke = useCallback(() => { - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - }, [dispatch, activeTabName]); - - const { t } = useTranslation(); - - useHotkeys( - ['ctrl+enter', 'meta+enter'], - handleInvoke, - { - enabled: () => isReady, - preventDefault: true, - enableOnFormTags: ['input', 'textarea', 'select'], - }, - [isReady, activeTabName] - ); - - return ( - - - {!isReady && ( - - - - )} - {asIconButton ? ( - } - isDisabled={!isReady} - onClick={handleInvoke} - tooltip={} - colorScheme="accent" - isLoading={isProcessing} - id="invoke-button" - data-progress={isProcessing} - sx={{ - w: 'full', - flexGrow: 1, - ...sx, - }} - {...rest} - /> - ) : ( - } - aria-label={t('parameters.invoke.invoke')} - type="submit" - data-progress={isProcessing} - isDisabled={!isReady} - onClick={handleInvoke} - colorScheme="accent" - id="invoke-button" - leftIcon={isProcessing ? undefined : } - isLoading={isProcessing} - loadingText={t('parameters.invoke.invoke')} - sx={{ - w: 'full', - flexGrow: 1, - fontWeight: 700, - ...sx, - }} - {...rest} - > - Invoke - - )} - - - ); -} - -const tooltipSelector = createSelector( - [stateSelector], - ({ gallery }) => { - const { autoAddBoardId } = gallery; - - return { - autoAddBoardId, - }; - }, - defaultSelectorOptions -); - -export const InvokeButtonTooltipContent = memo(() => { - const { isReady, reasons } = useIsReadyToInvoke(); - const { autoAddBoardId } = useAppSelector(tooltipSelector); - const autoAddBoardName = useBoardName(autoAddBoardId); - const { t } = useTranslation(); - - return ( - - - {isReady - ? t('parameters.invoke.readyToInvoke') - : t('parameters.invoke.unableToInvoke')} - - {reasons.length > 0 && ( - - {reasons.map((reason, i) => ( - - {reason} - - ))} - - )} - - - {t('parameters.invoke.addingImagesTo')}{' '} - - {autoAddBoardName || 'Uncategorized'} - - - - ); -}); - -InvokeButtonTooltipContent.displayName = 'InvokeButtonTooltipContent'; diff --git a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/ProcessButtons.tsx b/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/ProcessButtons.tsx deleted file mode 100644 index 41f1f3c918..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/ProcessButtons.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Flex } from '@chakra-ui/react'; -import { memo } from 'react'; -import CancelButton from './CancelButton'; -import InvokeButton from './InvokeButton'; - -/** - * Buttons to start and cancel image generation. - */ -const ProcessButtons = () => { - return ( - - - - - ); -}; - -export default memo(ProcessButtons); diff --git a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts index dc79281a06..ea6aaf28ca 100644 --- a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts +++ b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts @@ -46,7 +46,6 @@ export interface GenerationState { shouldFitToWidthHeight: boolean; shouldGenerateVariations: boolean; shouldRandomizeSeed: boolean; - shouldUseNoiseSettings: boolean; steps: StepsParam; threshold: number; infillTileSize: number; @@ -88,7 +87,6 @@ export const initialGenerationState: GenerationState = { shouldFitToWidthHeight: true, shouldGenerateVariations: false, shouldRandomizeSeed: true, - shouldUseNoiseSettings: false, steps: 50, threshold: 0, infillTileSize: 32, @@ -244,9 +242,6 @@ export const generationSlice = createSlice({ setVerticalSymmetrySteps: (state, action: PayloadAction) => { state.verticalSymmetrySteps = action.payload; }, - setShouldUseNoiseSettings: (state, action: PayloadAction) => { - state.shouldUseNoiseSettings = action.payload; - }, initialImageChanged: (state, action: PayloadAction) => { const { image_name, width, height } = action.payload; state.initialImage = { imageName: image_name, width, height }; @@ -278,12 +273,6 @@ export const generationSlice = createSlice({ shouldUseCpuNoiseChanged: (state, action: PayloadAction) => { state.shouldUseCpuNoise = action.payload; }, - setShouldShowAdvancedOptions: (state, action: PayloadAction) => { - state.shouldShowAdvancedOptions = action.payload; - if (!action.payload) { - state.clipSkip = 0; - } - }, setAspectRatio: (state, action: PayloadAction) => { const newAspectRatio = action.payload; state.aspectRatio = newAspectRatio; @@ -313,12 +302,6 @@ export const generationSlice = createSlice({ } } }); - builder.addCase(setShouldShowAdvancedOptions, (state, action) => { - const advancedOptionsStatus = action.payload; - if (!advancedOptionsStatus) { - state.clipSkip = 0; - } - }); }, }); @@ -359,12 +342,10 @@ export const { initialImageChanged, modelChanged, vaeSelected, - setShouldUseNoiseSettings, setSeamlessXAxis, setSeamlessYAxis, setClipSkip, shouldUseCpuNoiseChanged, - setShouldShowAdvancedOptions, setAspectRatio, setShouldLockAspectRatio, vaePrecisionChanged, diff --git a/invokeai/frontend/web/src/features/parameters/types/constants.ts b/invokeai/frontend/web/src/features/parameters/types/constants.ts index dd0e738eeb..4494d235af 100644 --- a/invokeai/frontend/web/src/features/parameters/types/constants.ts +++ b/invokeai/frontend/web/src/features/parameters/types/constants.ts @@ -1,6 +1,7 @@ import { components } from 'services/api/schema'; export const MODEL_TYPE_MAP = { + any: 'Any', 'sd-1': 'Stable Diffusion 1.x', 'sd-2': 'Stable Diffusion 2.x', sdxl: 'Stable Diffusion XL', @@ -8,6 +9,7 @@ export const MODEL_TYPE_MAP = { }; export const MODEL_TYPE_SHORT_MAP = { + any: 'Any', 'sd-1': 'SD1', 'sd-2': 'SD2', sdxl: 'SDXL', @@ -15,6 +17,10 @@ export const MODEL_TYPE_SHORT_MAP = { }; export const clipSkipMap = { + any: { + maxClip: 0, + markers: [], + }, 'sd-1': { maxClip: 12, markers: [0, 1, 2, 3, 4, 8, 12], diff --git a/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts b/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts index 5a77231739..1b29993712 100644 --- a/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts +++ b/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts @@ -210,7 +210,13 @@ export type HeightParam = z.infer; export const isValidHeight = (val: unknown): val is HeightParam => zHeight.safeParse(val).success; -export const zBaseModel = z.enum(['sd-1', 'sd-2', 'sdxl', 'sdxl-refiner']); +export const zBaseModel = z.enum([ + 'any', + 'sd-1', + 'sd-2', + 'sdxl', + 'sdxl-refiner', +]); export type BaseModelParam = z.infer; @@ -323,7 +329,17 @@ export type ControlNetModelParam = z.infer; export const isValidControlNetModel = ( val: unknown ): val is ControlNetModelParam => zControlNetModel.safeParse(val).success; - +/** + * Zod schema for IP-Adapter models + */ +export const zIPAdapterModel = z.object({ + model_name: z.string().min(1), + base_model: zBaseModel, +}); +/** + * Type alias for model parameter, inferred from its zod schema + */ +export type IPAdapterModelParam = z.infer; /** * Zod schema for l2l strength parameter */ diff --git a/invokeai/frontend/web/src/features/parameters/util/modelIdToIPAdapterModelParams.ts b/invokeai/frontend/web/src/features/parameters/util/modelIdToIPAdapterModelParams.ts new file mode 100644 index 0000000000..4d58046545 --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/util/modelIdToIPAdapterModelParams.ts @@ -0,0 +1,29 @@ +import { logger } from 'app/logging/logger'; +import { zIPAdapterModel } from 'features/parameters/types/parameterSchemas'; +import { IPAdapterModelField } from 'services/api/types'; + +export const modelIdToIPAdapterModelParam = ( + ipAdapterModelId: string +): IPAdapterModelField | undefined => { + const log = logger('models'); + const [base_model, _model_type, model_name] = ipAdapterModelId.split('/'); + + const result = zIPAdapterModel.safeParse({ + base_model, + model_name, + }); + + if (!result.success) { + log.error( + { + ipAdapterModelId, + errors: result.error.format(), + }, + 'Failed to parse IP-Adapter model id' + ); + + return; + } + + return result.data; +}; diff --git a/invokeai/frontend/web/src/features/parameters/util/useCoreParametersCollapseLabel.ts b/invokeai/frontend/web/src/features/parameters/util/useCoreParametersCollapseLabel.ts new file mode 100644 index 0000000000..3d17ae47ea --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/util/useCoreParametersCollapseLabel.ts @@ -0,0 +1,34 @@ +import { useAppSelector } from 'app/store/storeHooks'; +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; + +export const useCoreParametersCollapseLabel = () => { + const { t } = useTranslation(); + const shouldRandomizeSeed = useAppSelector( + (state) => state.generation.shouldRandomizeSeed + ); + const iterations = useAppSelector((state) => state.generation.iterations); + + const iterationsLabel = useMemo(() => { + if (iterations === 1) { + return t('parameters.iterationsWithCount_one', { count: 1 }); + } else { + return t('parameters.iterationsWithCount_other', { count: iterations }); + } + }, [iterations, t]); + + const seedLabel = useMemo(() => { + if (shouldRandomizeSeed) { + return t('parameters.randomSeed'); + } else { + return t('parameters.manualSeed'); + } + }, [shouldRandomizeSeed, t]); + + const iterationsAndSeedLabel = useMemo( + () => [iterationsLabel, seedLabel].join(', '), + [iterationsLabel, seedLabel] + ); + + return { iterationsAndSeedLabel, iterationsLabel, seedLabel }; +}; diff --git a/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemButton.tsx b/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemButton.tsx new file mode 100644 index 0000000000..b08f6e9e20 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemButton.tsx @@ -0,0 +1,33 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTimes } from 'react-icons/fa'; +import { useCancelCurrentQueueItem } from '../hooks/useCancelCurrentQueueItem'; +import QueueButton from './common/QueueButton'; +import { ChakraProps } from '@chakra-ui/react'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const CancelCurrentQueueItemButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { cancelQueueItem, isLoading, currentQueueItemId } = + useCancelCurrentQueueItem(); + + return ( + } + onClick={cancelQueueItem} + colorScheme="error" + sx={sx} + /> + ); +}; + +export default memo(CancelCurrentQueueItemButton); diff --git a/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx new file mode 100644 index 0000000000..8f727c3a8a --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx @@ -0,0 +1,43 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTrash } from 'react-icons/fa'; +import { useClearQueue } from '../hooks/useClearQueue'; +import QueueButton from './common/QueueButton'; +import { ChakraProps, Text } from '@chakra-ui/react'; +import IAIAlertDialog from 'common/components/IAIAlertDialog'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const ClearQueueButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { clearQueue, isLoading, queueStatus } = useClearQueue(); + + return ( + } + colorScheme="error" + sx={sx} + /> + } + > + {t('queue.clearQueueAlertDialog')} +
+ {t('queue.clearQueueAlertDialog2')} +
+ ); +}; + +export default memo(ClearQueueButton); diff --git a/invokeai/frontend/web/src/features/queue/components/CurrentQueueItemCard.tsx b/invokeai/frontend/web/src/features/queue/components/CurrentQueueItemCard.tsx new file mode 100644 index 0000000000..2f7fc6fd8b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/CurrentQueueItemCard.tsx @@ -0,0 +1,18 @@ +import { memo } from 'react'; +import QueueItemCard from './common/QueueItemCard'; +import { useGetCurrentQueueItemQuery } from 'services/api/endpoints/queue'; +import { useTranslation } from 'react-i18next'; + +const CurrentQueueItemCard = () => { + const { t } = useTranslation(); + const { data: currentQueueItemData } = useGetCurrentQueueItemQuery(); + + return ( + + ); +}; + +export default memo(CurrentQueueItemCard); diff --git a/invokeai/frontend/web/src/features/queue/components/NextQueueItemCard.tsx b/invokeai/frontend/web/src/features/queue/components/NextQueueItemCard.tsx new file mode 100644 index 0000000000..f9b9e874ab --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/NextQueueItemCard.tsx @@ -0,0 +1,18 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetNextQueueItemQuery } from 'services/api/endpoints/queue'; +import QueueItemCard from './common/QueueItemCard'; + +const NextQueueItemCard = () => { + const { t } = useTranslation(); + const { data: nextQueueItemData } = useGetNextQueueItemQuery(); + + return ( + + ); +}; + +export default memo(NextQueueItemCard); diff --git a/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx b/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx new file mode 100644 index 0000000000..6de357b11f --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx @@ -0,0 +1,29 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaPause } from 'react-icons/fa'; +import { usePauseProcessor } from '../hooks/usePauseProcessor'; +import QueueButton from './common/QueueButton'; + +type Props = { + asIconButton?: boolean; +}; + +const PauseProcessorButton = ({ asIconButton }: Props) => { + const { t } = useTranslation(); + const { pauseProcessor, isLoading, isStarted } = usePauseProcessor(); + + return ( + } + onClick={pauseProcessor} + colorScheme="gold" + /> + ); +}; + +export default memo(PauseProcessorButton); diff --git a/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx new file mode 100644 index 0000000000..5aded74b45 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx @@ -0,0 +1,29 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { BsStars } from 'react-icons/bs'; +import { usePruneQueue } from '../hooks/usePruneQueue'; +import QueueButton from './common/QueueButton'; + +type Props = { + asIconButton?: boolean; +}; + +const PruneQueueButton = ({ asIconButton }: Props) => { + const { t } = useTranslation(); + const { pruneQueue, isLoading, finishedCount } = usePruneQueue(); + + return ( + } + onClick={pruneQueue} + colorScheme="blue" + /> + ); +}; + +export default memo(PruneQueueButton); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueBackButton.tsx b/invokeai/frontend/web/src/features/queue/components/QueueBackButton.tsx new file mode 100644 index 0000000000..6e5c1b52a9 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueBackButton.tsx @@ -0,0 +1,30 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useQueueBack } from '../hooks/useQueueBack'; +import EnqueueButtonTooltip from './QueueButtonTooltip'; +import QueueButton from './common/QueueButton'; +import { ChakraProps } from '@chakra-ui/react'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const QueueBackButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { queueBack, isLoading, isDisabled } = useQueueBack(); + return ( + } + sx={sx} + /> + ); +}; + +export default memo(QueueBackButton); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueButtonTooltip.tsx b/invokeai/frontend/web/src/features/queue/components/QueueButtonTooltip.tsx new file mode 100644 index 0000000000..eccb2d4628 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueButtonTooltip.tsx @@ -0,0 +1,82 @@ +import { Divider, Flex, ListItem, Text, UnorderedList } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; +import { memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useEnqueueBatchMutation } from 'services/api/endpoints/queue'; +import { useBoardName } from 'services/api/hooks/useBoardName'; + +const tooltipSelector = createSelector( + [stateSelector], + ({ gallery }) => { + const { autoAddBoardId } = gallery; + return { + autoAddBoardId, + }; + }, + defaultSelectorOptions +); + +type Props = { + prepend?: boolean; +}; + +const QueueButtonTooltipContent = ({ prepend = false }: Props) => { + const { t } = useTranslation(); + const { isReady, reasons } = useIsReadyToEnqueue(); + const { autoAddBoardId } = useAppSelector(tooltipSelector); + const autoAddBoardName = useBoardName(autoAddBoardId); + const [_, { isLoading }] = useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + + const label = useMemo(() => { + if (isLoading) { + return t('queue.enqueueing'); + } + if (isReady) { + if (prepend) { + return t('queue.queueFront'); + } + return t('queue.queueBack'); + } + return t('queue.notReady'); + }, [isLoading, isReady, prepend, t]); + + return ( + + {label} + {reasons.length > 0 && ( + + {reasons.map((reason, i) => ( + + {reason} + + ))} + + )} + + + Adding images to{' '} + + {autoAddBoardName || 'Uncategorized'} + + + + ); +}; + +export default memo(QueueButtonTooltipContent); + +const StyledDivider = memo(() => ( + +)); + +StyledDivider.displayName = 'StyledDivider'; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueControls.tsx b/invokeai/frontend/web/src/features/queue/components/QueueControls.tsx new file mode 100644 index 0000000000..b19b2425b2 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueControls.tsx @@ -0,0 +1,100 @@ +import { Button, ButtonGroup, Flex, Spacer } from '@chakra-ui/react'; +import { useAppDispatch } from 'app/store/storeHooks'; +import CancelCurrentQueueItemButton from 'features/queue/components/CancelCurrentQueueItemButton'; +import ClearQueueButton from 'features/queue/components/ClearQueueButton'; +import PauseProcessorButton from 'features/queue/components/PauseProcessorButton'; +import QueueBackButton from 'features/queue/components/QueueBackButton'; +import QueueFrontButton from 'features/queue/components/QueueFrontButton'; +import ResumeProcessorButton from 'features/queue/components/ResumeProcessorButton'; +import ProgressBar from 'features/system/components/ProgressBar'; +import { setActiveTab } from 'features/ui/store/uiSlice'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; +import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; + +const QueueControls = () => { + const isPauseEnabled = useFeatureStatus('pauseQueue').isFeatureEnabled; + const isResumeEnabled = useFeatureStatus('resumeQueue').isFeatureEnabled; + const isPrependEnabled = useFeatureStatus('prependQueue').isFeatureEnabled; + return ( + + + + + {isPrependEnabled ? : <>} + + + + {isResumeEnabled ? : <>} + {isPauseEnabled ? : <>} + + + + + + + + + ); +}; + +export default memo(QueueControls); + +const QueueCounts = memo(() => { + const { t } = useTranslation(); + const dispatch = useAppDispatch(); + const { hasItems, pending } = useGetQueueStatusQuery(undefined, { + selectFromResult: ({ data }) => { + if (!data) { + return { + hasItems: false, + pending: 0, + }; + } + + const { pending, in_progress } = data.queue; + + return { + hasItems: pending + in_progress > 0, + pending, + }; + }, + }); + + const handleClick = useCallback(() => { + dispatch(setActiveTab('queue')); + }, [dispatch]); + + return ( + + + + + ); +}); + +QueueCounts.displayName = 'QueueCounts'; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx b/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx new file mode 100644 index 0000000000..09ddd47ac0 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx @@ -0,0 +1,32 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaBoltLightning } from 'react-icons/fa6'; +import { useQueueFront } from '../hooks/useQueueFront'; +import EnqueueButtonTooltip from './QueueButtonTooltip'; +import QueueButton from './common/QueueButton'; +import { ChakraProps } from '@chakra-ui/react'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const QueueFrontButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { queueFront, isLoading, isDisabled } = useQueueFront(); + return ( + } + icon={} + sx={sx} + /> + ); +}; + +export default memo(QueueFrontButton); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx new file mode 100644 index 0000000000..7f4fd9bc9b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx @@ -0,0 +1,157 @@ +import { + ButtonGroup, + ChakraProps, + Collapse, + Flex, + Text, +} from '@chakra-ui/react'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { useCancelQueueItem } from 'features/queue/hooks/useCancelQueueItem'; +import { getSecondsFromTimestamps } from 'features/queue/util/getSecondsFromTimestamps'; +import { MouseEvent, memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTimes } from 'react-icons/fa'; +import { SessionQueueItemDTO } from 'services/api/types'; +import QueueStatusBadge from '../common/QueueStatusBadge'; +import QueueItemDetail from './QueueItemDetail'; +import { COLUMN_WIDTHS } from './constants'; +import { ListContext } from './types'; + +const selectedStyles = { bg: 'base.300', _dark: { bg: 'base.750' } }; + +type InnerItemProps = { + index: number; + item: SessionQueueItemDTO; + context: ListContext; +}; + +const sx: ChakraProps['sx'] = { + _hover: selectedStyles, + "&[aria-selected='true']": selectedStyles, +}; + +const QueueItemComponent = ({ index, item, context }: InnerItemProps) => { + const { t } = useTranslation(); + const handleToggle = useCallback(() => { + context.toggleQueueItem(item.item_id); + }, [context, item.item_id]); + const { cancelQueueItem, isLoading } = useCancelQueueItem(item.item_id); + const handleCancelQueueItem = useCallback( + (e: MouseEvent) => { + e.stopPropagation(); + cancelQueueItem(); + }, + [cancelQueueItem] + ); + const isOpen = useMemo( + () => context.openQueueItems.includes(item.item_id), + [context.openQueueItems, item.item_id] + ); + + const executionTime = useMemo(() => { + if (!item.completed_at || !item.started_at) { + return; + } + const seconds = getSecondsFromTimestamps( + item.started_at, + item.completed_at + ); + return `${seconds}s`; + }, [item]); + + const isCanceled = useMemo( + () => ['canceled', 'completed', 'failed'].includes(item.status), + [item.status] + ); + + return ( + + + + {index + 1} + + + + + + {executionTime || '-'} + + + + {item.batch_id} + + + + {item.field_values && ( + + {item.field_values + .filter((v) => v.node_path !== 'metadata_accumulator') + .map(({ node_path, field_name, value }) => ( + + + {node_path}.{field_name} + + : {value} + + ))} + + )} + + + + } + /> + + + + + + + + + ); +}; + +export default memo(QueueItemComponent); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemDetail.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemDetail.tsx new file mode 100644 index 0000000000..7ce9733aae --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemDetail.tsx @@ -0,0 +1,162 @@ +import { ButtonGroup, Flex, Heading, Spinner, Text } from '@chakra-ui/react'; +import IAIButton from 'common/components/IAIButton'; +import DataViewer from 'features/gallery/components/ImageMetadataViewer/DataViewer'; +import ScrollableContent from 'features/nodes/components/sidePanel/ScrollableContent'; +import { useCancelBatch } from 'features/queue/hooks/useCancelBatch'; +import { useCancelQueueItem } from 'features/queue/hooks/useCancelQueueItem'; +import { getSecondsFromTimestamps } from 'features/queue/util/getSecondsFromTimestamps'; +import { ReactNode, memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTimes } from 'react-icons/fa'; +import { useGetQueueItemQuery } from 'services/api/endpoints/queue'; +import { SessionQueueItemDTO } from 'services/api/types'; + +type Props = { + queueItemDTO: SessionQueueItemDTO; +}; + +const QueueItemComponent = ({ queueItemDTO }: Props) => { + const { session_id, batch_id, item_id } = queueItemDTO; + const { t } = useTranslation(); + const { + cancelBatch, + isLoading: isLoadingCancelBatch, + isCanceled, + } = useCancelBatch(batch_id); + + const { cancelQueueItem, isLoading: isLoadingCancelQueueItem } = + useCancelQueueItem(item_id); + + const { data: queueItem } = useGetQueueItemQuery(item_id); + + const statusAndTiming = useMemo(() => { + if (!queueItem) { + return t('common.loading'); + } + if (!queueItem.completed_at || !queueItem.started_at) { + return t(`queue.${queueItem.status}`); + } + const seconds = getSecondsFromTimestamps( + queueItem.started_at, + queueItem.completed_at + ); + if (queueItem.status === 'completed') { + return `${t('queue.completedIn')} ${seconds}${seconds === 1 ? '' : 's'}`; + } + return `${seconds}s`; + }, [queueItem, t]); + + return ( + + + + + + + + } + colorScheme="error" + > + {t('queue.cancelItem')} + + } + colorScheme="error" + > + {t('queue.cancelBatch')} + + + + {queueItem?.error && ( + + + Error + +
{queueItem.error}
+
+ )} + + {queueItem ? ( + + + + ) : ( + + )} + +
+ ); +}; + +export default memo(QueueItemComponent); + +type QueueItemDataProps = { label: string; data: ReactNode }; + +const QueueItemData = ({ label, data }: QueueItemDataProps) => { + return ( + + + {label} + + + {data} + + + ); +}; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueList.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueList.tsx new file mode 100644 index 0000000000..dea1443489 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueList.tsx @@ -0,0 +1,162 @@ +import { Flex, Heading } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { + listCursorChanged, + listPriorityChanged, +} from 'features/queue/store/queueSlice'; +import { + UseOverlayScrollbarsParams, + useOverlayScrollbars, +} from 'overlayscrollbars-react'; +import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Components, ItemContent, Virtuoso } from 'react-virtuoso'; +import { + queueItemsAdapter, + useListQueueItemsQuery, +} from 'services/api/endpoints/queue'; +import { SessionQueueItemDTO } from 'services/api/types'; +import QueueItemComponent from './QueueItemComponent'; +import QueueListComponent from './QueueListComponent'; +import QueueListHeader from './QueueListHeader'; +import { ListContext } from './types'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type TableVirtuosoScrollerRef = (ref: HTMLElement | Window | null) => any; + +const overlayScrollbarsConfig: UseOverlayScrollbarsParams = { + defer: true, + options: { + scrollbars: { + visibility: 'auto', + autoHide: 'scroll', + autoHideDelay: 1300, + theme: 'os-theme-dark', + }, + overflow: { x: 'hidden' }, + }, +}; + +const selector = createSelector( + stateSelector, + ({ queue }) => { + const { listCursor, listPriority } = queue; + return { listCursor, listPriority }; + }, + defaultSelectorOptions +); + +const computeItemKey = (index: number, item: SessionQueueItemDTO): number => + item.item_id; + +const components: Components = { + List: QueueListComponent, +}; + +const itemContent: ItemContent = ( + index, + item, + context +) => ; + +const QueueList = () => { + const { listCursor, listPriority } = useAppSelector(selector); + const dispatch = useAppDispatch(); + const rootRef = useRef(null); + const [scroller, setScroller] = useState(null); + const [initialize, osInstance] = useOverlayScrollbars( + overlayScrollbarsConfig + ); + const { t } = useTranslation(); + + useEffect(() => { + const { current: root } = rootRef; + if (scroller && root) { + initialize({ + target: root, + elements: { + viewport: scroller, + }, + }); + } + return () => osInstance()?.destroy(); + }, [scroller, initialize, osInstance]); + + const { data: listQueueItemsData } = useListQueueItemsQuery({ + cursor: listCursor, + priority: listPriority, + }); + + const queueItems = useMemo(() => { + if (!listQueueItemsData) { + return []; + } + return queueItemsAdapter.getSelectors().selectAll(listQueueItemsData); + }, [listQueueItemsData]); + + const handleLoadMore = useCallback(() => { + if (!listQueueItemsData?.has_more) { + return; + } + const lastItem = queueItems[queueItems.length - 1]; + if (!lastItem) { + return; + } + dispatch(listCursorChanged(lastItem.item_id)); + dispatch(listPriorityChanged(lastItem.priority)); + }, [dispatch, listQueueItemsData?.has_more, queueItems]); + + const [openQueueItems, setOpenQueueItems] = useState([]); + + const toggleQueueItem = useCallback((item_id: number) => { + setOpenQueueItems((prev) => { + if (prev.includes(item_id)) { + return prev.filter((id) => id !== item_id); + } + return [...prev, item_id]; + }); + }, []); + + const context = useMemo( + () => ({ openQueueItems, toggleQueueItem }), + [openQueueItems, toggleQueueItem] + ); + + return ( + + {queueItems.length ? ( + <> + + + + data={queueItems} + endReached={handleLoadMore} + scrollerRef={setScroller as TableVirtuosoScrollerRef} + itemContent={itemContent} + computeItemKey={computeItemKey} + components={components} + context={context} + /> + + + ) : ( + + + {t('queue.queueEmpty')} + + + )} + + ); +}; + +export default memo(QueueList); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListComponent.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListComponent.tsx new file mode 100644 index 0000000000..ee123e2cd8 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListComponent.tsx @@ -0,0 +1,18 @@ +import { Flex, forwardRef } from '@chakra-ui/react'; +import { memo } from 'react'; +import { Components } from 'react-virtuoso'; +import { SessionQueueItemDTO } from 'services/api/types'; +import { ListContext } from './types'; + +const QueueListComponent: Components['List'] = + memo( + forwardRef((props, ref) => { + return ( + + {props.children} + + ); + }) + ); + +export default memo(QueueListComponent); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListHeader.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListHeader.tsx new file mode 100644 index 0000000000..6c54a72a79 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListHeader.tsx @@ -0,0 +1,40 @@ +import { Flex, Text } from '@chakra-ui/react'; +import { memo } from 'react'; +import { COLUMN_WIDTHS } from './constants'; + +const QueueListHeader = () => { + return ( + + + # + + + status + + + time + + + batch + + + batch field values + + + ); +}; + +export default memo(QueueListHeader); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/constants.ts b/invokeai/frontend/web/src/features/queue/components/QueueList/constants.ts new file mode 100644 index 0000000000..b44a1daf9c --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/constants.ts @@ -0,0 +1,9 @@ +export const COLUMN_WIDTHS = { + number: '3rem', + statusBadge: '5.7rem', + statusDot: 2, + time: '4rem', + batchId: '5rem', + fieldValues: 'auto', + actions: 'auto', +}; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/types.ts b/invokeai/frontend/web/src/features/queue/components/QueueList/types.ts new file mode 100644 index 0000000000..c9b317ac57 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/types.ts @@ -0,0 +1,4 @@ +export type ListContext = { + openQueueItems: number[]; + toggleQueueItem: (item_id: number) => void; +}; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueStatus.tsx b/invokeai/frontend/web/src/features/queue/components/QueueStatus.tsx new file mode 100644 index 0000000000..72dfdd77ad --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueStatus.tsx @@ -0,0 +1,39 @@ +import { Stat, StatGroup, StatLabel, StatNumber } from '@chakra-ui/react'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; + +const QueueStatus = () => { + const { data: queueStatus } = useGetQueueStatusQuery(); + const { t } = useTranslation(); + return ( + + + {t('queue.in_progress')} + {queueStatus?.queue.in_progress ?? 0} + + + {t('queue.pending')} + {queueStatus?.queue.pending ?? 0} + + + {t('queue.completed')} + {queueStatus?.queue.completed ?? 0} + + + {t('queue.failed')} + {queueStatus?.queue.failed ?? 0} + + + {t('queue.canceled')} + {queueStatus?.queue.canceled ?? 0} + + + {t('queue.total')} + {queueStatus?.queue.total} + + + ); +}; + +export default memo(QueueStatus); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueStatusCard.tsx b/invokeai/frontend/web/src/features/queue/components/QueueStatusCard.tsx new file mode 100644 index 0000000000..fb57500461 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueStatusCard.tsx @@ -0,0 +1,54 @@ +import { Flex, Heading, Text } from '@chakra-ui/react'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; + +const QueueStatusCard = () => { + const { t } = useTranslation(); + const { data: queueStatus } = useGetQueueStatusQuery(); + + return ( + + {t('queue.status')} + + + {t('queue.pending')}:{' '} + + {queueStatus?.queue.pending} + + + + {t('queue.in_progress')}:{' '} + + {queueStatus?.queue.in_progress} + + + + {t('queue.completed')}:{' '} + + {queueStatus?.queue.completed} + + + + {t('queue.failed')}:{' '} + + {queueStatus?.queue.failed} + + + + {t('queue.canceled')}:{' '} + + {queueStatus?.queue.canceled} + + + ); +}; + +export default memo(QueueStatusCard); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueTabContent.tsx b/invokeai/frontend/web/src/features/queue/components/QueueTabContent.tsx new file mode 100644 index 0000000000..254e34c453 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueTabContent.tsx @@ -0,0 +1,61 @@ +import { Box, ButtonGroup, Flex } from '@chakra-ui/react'; +import { memo } from 'react'; +import ClearQueueButton from './ClearQueueButton'; +import PauseProcessorButton from './PauseProcessorButton'; +import PruneQueueButton from './PruneQueueButton'; +import QueueList from './QueueList/QueueList'; +import QueueStatus from './QueueStatus'; +import ResumeProcessorButton from './ResumeProcessorButton'; +import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; + +const QueueTabContent = () => { + const isPauseEnabled = useFeatureStatus('pauseQueue').isFeatureEnabled; + const isResumeEnabled = useFeatureStatus('resumeQueue').isFeatureEnabled; + + return ( + + + + {isPauseEnabled || isResumeEnabled ? ( + + {isResumeEnabled ? : <>} + {isPauseEnabled ? : <>} + + ) : ( + <> + )} + + + + + + + + + {/* + + */} + + + + + + ); +}; + +export default memo(QueueTabContent); diff --git a/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx b/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx new file mode 100644 index 0000000000..c0be296260 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx @@ -0,0 +1,29 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaPlay } from 'react-icons/fa'; +import { useResumeProcessor } from '../hooks/useResumeProcessor'; +import QueueButton from './common/QueueButton'; + +type Props = { + asIconButton?: boolean; +}; + +const ResumeProcessorButton = ({ asIconButton }: Props) => { + const { t } = useTranslation(); + const { resumeProcessor, isLoading, isStarted } = useResumeProcessor(); + + return ( + } + onClick={resumeProcessor} + colorScheme="green" + /> + ); +}; + +export default memo(ResumeProcessorButton); diff --git a/invokeai/frontend/web/src/features/queue/components/VerticalQueueControls.tsx b/invokeai/frontend/web/src/features/queue/components/VerticalQueueControls.tsx new file mode 100644 index 0000000000..665eaf190a --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/VerticalQueueControls.tsx @@ -0,0 +1,27 @@ +import { ButtonGroup, ButtonGroupProps, Flex } from '@chakra-ui/react'; +import { memo } from 'react'; +import ClearQueueButton from './ClearQueueButton'; +import PauseProcessorButton from './PauseProcessorButton'; +import PruneQueueButton from './PruneQueueButton'; +import ResumeProcessorButton from './ResumeProcessorButton'; + +type Props = ButtonGroupProps & { + asIconButtons?: boolean; +}; + +const VerticalQueueControls = ({ asIconButtons, ...rest }: Props) => { + return ( + + + + + + + + + + + ); +}; + +export default memo(VerticalQueueControls); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx new file mode 100644 index 0000000000..f3ef09f44d --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx @@ -0,0 +1,64 @@ +import { ChakraProps, ThemeTypings } from '@chakra-ui/react'; +import IAIButton from 'common/components/IAIButton'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { ReactElement, ReactNode, memo } from 'react'; + +type Props = { + label: string; + tooltip: ReactNode; + icon?: ReactElement; + onClick?: () => void; + isDisabled?: boolean; + colorScheme: ThemeTypings['colorSchemes']; + asIconButton?: boolean; + isLoading?: boolean; + loadingText?: string; + sx?: ChakraProps['sx']; +}; + +const QueueButton = ({ + label, + tooltip, + icon, + onClick, + isDisabled, + colorScheme, + asIconButton, + isLoading, + loadingText, + sx, +}: Props) => { + if (asIconButton) { + return ( + + ); + } + + return ( + + {label} + + ); +}; + +export default memo(QueueButton); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueItemCard.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueItemCard.tsx new file mode 100644 index 0000000000..9cc991335e --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueItemCard.tsx @@ -0,0 +1,52 @@ +import { Flex, Heading, Text, Tooltip } from '@chakra-ui/react'; +import ScrollableContent from 'features/nodes/components/sidePanel/ScrollableContent'; +import { memo } from 'react'; +import { components } from 'services/api/schema'; + +const QueueItemCard = ({ + session_queue_item, + label, +}: { + session_queue_item?: components['schemas']['SessionQueueItem']; + label: string; +}) => { + return ( + + + {label} + {session_queue_item && ( + + {session_queue_item.batch_id} + + )} + + {session_queue_item && ( + + Batch Values: + {session_queue_item.field_values && + session_queue_item.field_values + .filter((v) => v.node_path !== 'metadata_accumulator') + .map(({ node_path, field_name, value }) => ( + + + {node_path}.{field_name} + + : {value} + + ))} + + )} + + ); +}; + +export default memo(QueueItemCard); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueStatusBadge.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusBadge.tsx new file mode 100644 index 0000000000..aba4b230bc --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusBadge.tsx @@ -0,0 +1,22 @@ +import { Badge } from '@chakra-ui/react'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { SessionQueueItemStatus } from 'services/api/endpoints/queue'; + +const STATUSES = { + pending: { colorScheme: 'cyan', translationKey: 'queue.pending' }, + in_progress: { colorScheme: 'yellow', translationKey: 'queue.in_progress' }, + completed: { colorScheme: 'green', translationKey: 'queue.completed' }, + failed: { colorScheme: 'red', translationKey: 'queue.failed' }, + canceled: { colorScheme: 'orange', translationKey: 'queue.canceled' }, +}; + +const StatusBadge = ({ status }: { status: SessionQueueItemStatus }) => { + const { t } = useTranslation(); + return ( + + {t(STATUSES[status].translationKey)} + + ); +}; +export default memo(StatusBadge); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueStatusDot.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusDot.tsx new file mode 100644 index 0000000000..6a500cada2 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusDot.tsx @@ -0,0 +1,28 @@ +import { Box } from '@chakra-ui/react'; +import { memo, useMemo } from 'react'; +import { SessionQueueItemStatus } from 'services/api/endpoints/queue'; + +const STATUSES = { + pending: { colorScheme: 'cyan', translationKey: 'queue.pending' }, + in_progress: { colorScheme: 'yellow', translationKey: 'queue.in_progress' }, + completed: { colorScheme: 'green', translationKey: 'queue.completed' }, + failed: { colorScheme: 'red', translationKey: 'queue.failed' }, + canceled: { colorScheme: 'orange', translationKey: 'queue.canceled' }, +}; + +const QueueStatusDot = ({ status }: { status: SessionQueueItemStatus }) => { + const sx = useMemo( + () => ({ + w: 2, + h: 2, + bg: `${STATUSES[status].colorScheme}.${500}`, + _dark: { + bg: `${STATUSES[status].colorScheme}.${400}`, + }, + borderRadius: '100%', + }), + [status] + ); + return ; +}; +export default memo(QueueStatusDot); diff --git a/invokeai/frontend/web/src/features/queue/hooks/useCancelBatch.ts b/invokeai/frontend/web/src/features/queue/hooks/useCancelBatch.ts new file mode 100644 index 0000000000..5281734357 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useCancelBatch.ts @@ -0,0 +1,53 @@ +import { useAppDispatch } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useCancelByBatchIdsMutation, + useGetBatchStatusQuery, +} from 'services/api/endpoints/queue'; + +export const useCancelBatch = (batch_id: string) => { + const { isCanceled } = useGetBatchStatusQuery( + { batch_id }, + { + selectFromResult: ({ data }) => { + if (!data) { + return { isCanceled: true }; + } + + return { + isCanceled: data?.in_progress === 0 && data?.pending === 0, + }; + }, + } + ); + const [trigger, { isLoading }] = useCancelByBatchIdsMutation({ + fixedCacheKey: 'cancelByBatchIds', + }); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const cancelBatch = useCallback(async () => { + if (isCanceled) { + return; + } + try { + await trigger({ batch_ids: [batch_id] }).unwrap(); + dispatch( + addToast({ + title: t('queue.cancelBatchSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.cancelBatchFailed'), + status: 'error', + }) + ); + } + }, [batch_id, dispatch, isCanceled, t, trigger]); + + return { cancelBatch, isLoading, isCanceled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useCancelCurrentQueueItem.ts b/invokeai/frontend/web/src/features/queue/hooks/useCancelCurrentQueueItem.ts new file mode 100644 index 0000000000..62f645fac9 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useCancelCurrentQueueItem.ts @@ -0,0 +1,42 @@ +import { useAppDispatch } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useCancelQueueItemMutation, + useGetQueueStatusQuery, +} from 'services/api/endpoints/queue'; + +export const useCancelCurrentQueueItem = () => { + const { data: queueStatus } = useGetQueueStatusQuery(); + const [trigger, { isLoading }] = useCancelQueueItemMutation(); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const currentQueueItemId = useMemo( + () => queueStatus?.queue.item_id, + [queueStatus?.queue.item_id] + ); + const cancelQueueItem = useCallback(async () => { + if (!currentQueueItemId) { + return; + } + try { + await trigger(currentQueueItemId).unwrap(); + dispatch( + addToast({ + title: t('queue.cancelSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.cancelFailed'), + status: 'error', + }) + ); + } + }, [currentQueueItemId, dispatch, t, trigger]); + + return { cancelQueueItem, isLoading, currentQueueItemId }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useCancelQueueItem.ts b/invokeai/frontend/web/src/features/queue/hooks/useCancelQueueItem.ts new file mode 100644 index 0000000000..82ce5765f6 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useCancelQueueItem.ts @@ -0,0 +1,31 @@ +import { useAppDispatch } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useCancelQueueItemMutation } from 'services/api/endpoints/queue'; + +export const useCancelQueueItem = (item_id: number) => { + const [trigger, { isLoading }] = useCancelQueueItemMutation(); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const cancelQueueItem = useCallback(async () => { + try { + await trigger(item_id).unwrap(); + dispatch( + addToast({ + title: t('queue.cancelSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.cancelFailed'), + status: 'error', + }) + ); + } + }, [dispatch, item_id, t, trigger]); + + return { cancelQueueItem, isLoading }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useClearQueue.ts b/invokeai/frontend/web/src/features/queue/hooks/useClearQueue.ts new file mode 100644 index 0000000000..e09650bc44 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useClearQueue.ts @@ -0,0 +1,47 @@ +import { useAppDispatch } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useClearQueueMutation, + useGetQueueStatusQuery, +} from 'services/api/endpoints/queue'; +import { listCursorChanged, listPriorityChanged } from '../store/queueSlice'; + +export const useClearQueue = () => { + const { t } = useTranslation(); + + const dispatch = useAppDispatch(); + const { data: queueStatus } = useGetQueueStatusQuery(); + + const [trigger, { isLoading }] = useClearQueueMutation({ + fixedCacheKey: 'clearQueue', + }); + + const clearQueue = useCallback(async () => { + if (!queueStatus?.queue.total) { + return; + } + + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.clearSucceeded'), + status: 'success', + }) + ); + dispatch(listCursorChanged(undefined)); + dispatch(listPriorityChanged(undefined)); + } catch { + dispatch( + addToast({ + title: t('queue.clearFailed'), + status: 'error', + }) + ); + } + }, [queueStatus?.queue.total, trigger, dispatch, t]); + + return { clearQueue, isLoading, queueStatus }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useIsQueueEmpty.ts b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueEmpty.ts new file mode 100644 index 0000000000..c0a32c1eb3 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueEmpty.ts @@ -0,0 +1,15 @@ +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; + +export const useIsQueueEmpty = () => { + const { isEmpty } = useGetQueueStatusQuery(undefined, { + selectFromResult: ({ data }) => { + if (!data) { + return { isEmpty: true }; + } + return { + isEmpty: data.queue.in_progress === 0 && data.queue.pending === 0, + }; + }, + }); + return isEmpty; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useIsQueueMutationInProgress.ts b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueMutationInProgress.ts new file mode 100644 index 0000000000..abb3967b92 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueMutationInProgress.ts @@ -0,0 +1,55 @@ +import { + useCancelQueueItemMutation, + // useCancelByBatchIdsMutation, + useClearQueueMutation, + useEnqueueBatchMutation, + useEnqueueGraphMutation, + usePruneQueueMutation, + useResumeProcessorMutation, + usePauseProcessorMutation, +} from 'services/api/endpoints/queue'; + +export const useIsQueueMutationInProgress = () => { + const [_triggerEnqueueBatch, { isLoading: isLoadingEnqueueBatch }] = + useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + const [_triggerEnqueueGraph, { isLoading: isLoadingEnqueueGraph }] = + useEnqueueGraphMutation({ + fixedCacheKey: 'enqueueGraph', + }); + const [_triggerResumeProcessor, { isLoading: isLoadingResumeProcessor }] = + useResumeProcessorMutation({ + fixedCacheKey: 'resumeProcessor', + }); + const [_triggerPauseProcessor, { isLoading: isLoadingPauseProcessor }] = + usePauseProcessorMutation({ + fixedCacheKey: 'pauseProcessor', + }); + const [_triggerCancelQueue, { isLoading: isLoadingCancelQueue }] = + useCancelQueueItemMutation({ + fixedCacheKey: 'cancelQueueItem', + }); + const [_triggerClearQueue, { isLoading: isLoadingClearQueue }] = + useClearQueueMutation({ + fixedCacheKey: 'clearQueue', + }); + const [_triggerPruneQueue, { isLoading: isLoadingPruneQueue }] = + usePruneQueueMutation({ + fixedCacheKey: 'pruneQueue', + }); + // const [_triggerCancelByBatchIds, { isLoading: isLoadingCancelByBatchIds }] = + // useCancelByBatchIdsMutation({ + // fixedCacheKey: 'cancelByBatchIds', + // }); + return ( + isLoadingEnqueueBatch || + isLoadingEnqueueGraph || + isLoadingResumeProcessor || + isLoadingPauseProcessor || + isLoadingCancelQueue || + isLoadingClearQueue || + isLoadingPruneQueue + // isLoadingCancelByBatchIds + ); +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/usePauseProcessor.ts b/invokeai/frontend/web/src/features/queue/hooks/usePauseProcessor.ts new file mode 100644 index 0000000000..c9b31dafa6 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/usePauseProcessor.ts @@ -0,0 +1,46 @@ +import { useAppDispatch } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useGetQueueStatusQuery, + usePauseProcessorMutation, +} from 'services/api/endpoints/queue'; + +export const usePauseProcessor = () => { + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const { data: queueStatus } = useGetQueueStatusQuery(); + const [trigger, { isLoading }] = usePauseProcessorMutation({ + fixedCacheKey: 'pauseProcessor', + }); + + const isStarted = useMemo( + () => Boolean(queueStatus?.processor.is_started), + [queueStatus?.processor.is_started] + ); + + const pauseProcessor = useCallback(async () => { + if (!isStarted) { + return; + } + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.pauseSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.pauseFailed'), + status: 'error', + }) + ); + } + }, [isStarted, trigger, dispatch, t]); + + return { pauseProcessor, isLoading, isStarted }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/usePruneQueue.ts b/invokeai/frontend/web/src/features/queue/hooks/usePruneQueue.ts new file mode 100644 index 0000000000..6d95a571e7 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/usePruneQueue.ts @@ -0,0 +1,55 @@ +import { useAppDispatch } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useGetQueueStatusQuery, + usePruneQueueMutation, +} from 'services/api/endpoints/queue'; +import { listCursorChanged, listPriorityChanged } from '../store/queueSlice'; + +export const usePruneQueue = () => { + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const [trigger, { isLoading }] = usePruneQueueMutation({ + fixedCacheKey: 'pruneQueue', + }); + const { finishedCount } = useGetQueueStatusQuery(undefined, { + selectFromResult: ({ data }) => { + if (!data) { + return { finishedCount: 0 }; + } + + return { + finishedCount: + data.queue.completed + data.queue.canceled + data.queue.failed, + }; + }, + }); + + const pruneQueue = useCallback(async () => { + if (!finishedCount) { + return; + } + try { + const data = await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.pruneSucceeded', { item_count: data.deleted }), + status: 'success', + }) + ); + dispatch(listCursorChanged(undefined)); + dispatch(listPriorityChanged(undefined)); + } catch { + dispatch( + addToast({ + title: t('queue.pruneFailed'), + status: 'error', + }) + ); + } + }, [finishedCount, trigger, dispatch, t]); + + return { pruneQueue, isLoading, finishedCount }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useQueueBack.ts b/invokeai/frontend/web/src/features/queue/hooks/useQueueBack.ts new file mode 100644 index 0000000000..0a2582f56b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useQueueBack.ts @@ -0,0 +1,26 @@ +import { enqueueRequested } from 'app/store/actions'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; +import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; +import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { useCallback, useMemo } from 'react'; +import { useEnqueueBatchMutation } from 'services/api/endpoints/queue'; + +export const useQueueBack = () => { + const dispatch = useAppDispatch(); + const tabName = useAppSelector(activeTabNameSelector); + const { isReady } = useIsReadyToEnqueue(); + const [_, { isLoading }] = useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + const isDisabled = useMemo(() => !isReady, [isReady]); + const queueBack = useCallback(() => { + if (isDisabled) { + return; + } + dispatch(clampSymmetrySteps()); + dispatch(enqueueRequested({ tabName, prepend: false })); + }, [dispatch, isDisabled, tabName]); + + return { queueBack, isLoading, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useQueueFront.ts b/invokeai/frontend/web/src/features/queue/hooks/useQueueFront.ts new file mode 100644 index 0000000000..e83dfa08ab --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useQueueFront.ts @@ -0,0 +1,32 @@ +import { enqueueRequested } from 'app/store/actions'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; +import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; +import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { useCallback, useMemo } from 'react'; +import { useEnqueueBatchMutation } from 'services/api/endpoints/queue'; +import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; + +export const useQueueFront = () => { + const dispatch = useAppDispatch(); + const tabName = useAppSelector(activeTabNameSelector); + const { isReady } = useIsReadyToEnqueue(); + const [_, { isLoading }] = useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + const prependEnabled = useFeatureStatus('prependQueue').isFeatureEnabled; + + const isDisabled = useMemo(() => { + return !isReady || !prependEnabled; + }, [isReady, prependEnabled]); + + const queueFront = useCallback(() => { + if (isDisabled) { + return; + } + dispatch(clampSymmetrySteps()); + dispatch(enqueueRequested({ tabName, prepend: true })); + }, [dispatch, isDisabled, tabName]); + + return { queueFront, isLoading, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useResumeProcessor.ts b/invokeai/frontend/web/src/features/queue/hooks/useResumeProcessor.ts new file mode 100644 index 0000000000..2097507b56 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useResumeProcessor.ts @@ -0,0 +1,46 @@ +import { useAppDispatch } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useGetQueueStatusQuery, + useResumeProcessorMutation, +} from 'services/api/endpoints/queue'; + +export const useResumeProcessor = () => { + const dispatch = useAppDispatch(); + const { data: queueStatus } = useGetQueueStatusQuery(); + const { t } = useTranslation(); + const [trigger, { isLoading }] = useResumeProcessorMutation({ + fixedCacheKey: 'resumeProcessor', + }); + + const isStarted = useMemo( + () => Boolean(queueStatus?.processor.is_started), + [queueStatus?.processor.is_started] + ); + + const resumeProcessor = useCallback(async () => { + if (isStarted) { + return; + } + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.resumeSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.resumeFailed'), + status: 'error', + }) + ); + } + }, [isStarted, trigger, dispatch, t]); + + return { resumeProcessor, isLoading, isStarted }; +}; diff --git a/invokeai/frontend/web/src/features/queue/store/nanoStores.ts b/invokeai/frontend/web/src/features/queue/store/nanoStores.ts new file mode 100644 index 0000000000..462cf69d0a --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/store/nanoStores.ts @@ -0,0 +1,5 @@ +import { atom } from 'nanostores'; + +export const DEFAULT_QUEUE_ID = 'default'; + +export const $queueId = atom(DEFAULT_QUEUE_ID); diff --git a/invokeai/frontend/web/src/features/queue/store/queueSlice.ts b/invokeai/frontend/web/src/features/queue/store/queueSlice.ts new file mode 100644 index 0000000000..ee1e8dfefb --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/store/queueSlice.ts @@ -0,0 +1,60 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit'; + +export interface QueueState { + listCursor: number | undefined; + listPriority: number | undefined; + selectedQueueItem: string | undefined; + resumeProcessorOnEnqueue: boolean; +} + +export const initialQueueState: QueueState = { + listCursor: undefined, + listPriority: undefined, + selectedQueueItem: undefined, + resumeProcessorOnEnqueue: true, +}; + +const initialState: QueueState = initialQueueState; + +export const queueSlice = createSlice({ + name: 'queue', + initialState, + reducers: { + listCursorChanged: (state, action: PayloadAction) => { + state.listCursor = action.payload; + }, + listPriorityChanged: (state, action: PayloadAction) => { + state.listPriority = action.payload; + }, + listParamsReset: (state) => { + state.listCursor = undefined; + state.listPriority = undefined; + }, + queueItemSelectionToggled: ( + state, + action: PayloadAction + ) => { + if (state.selectedQueueItem === action.payload) { + state.selectedQueueItem = undefined; + } else { + state.selectedQueueItem = action.payload; + } + }, + resumeProcessorOnEnqueueChanged: ( + state, + action: PayloadAction + ) => { + state.resumeProcessorOnEnqueue = action.payload; + }, + }, +}); + +export const { + listCursorChanged, + listPriorityChanged, + listParamsReset, + queueItemSelectionToggled, + resumeProcessorOnEnqueueChanged, +} = queueSlice.actions; + +export default queueSlice.reducer; diff --git a/invokeai/frontend/web/src/features/queue/util/formatNumberShort.ts b/invokeai/frontend/web/src/features/queue/util/formatNumberShort.ts new file mode 100644 index 0000000000..9cc300c960 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/util/formatNumberShort.ts @@ -0,0 +1,4 @@ +export const formatNumberShort = (num: number) => + Intl.NumberFormat('en-US', { + notation: 'standard', + }).format(num); diff --git a/invokeai/frontend/web/src/features/queue/util/getSecondsFromTimestamps.ts b/invokeai/frontend/web/src/features/queue/util/getSecondsFromTimestamps.ts new file mode 100644 index 0000000000..5ea9713152 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/util/getSecondsFromTimestamps.ts @@ -0,0 +1,2 @@ +export const getSecondsFromTimestamps = (start: string, end: string) => + Number(((Date.parse(end) - Date.parse(start)) / 1000).toFixed(2)); diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLImg2ImgDenoisingStrength.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLImg2ImgDenoisingStrength.tsx index 5433c77b4e..dc8ae775f9 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLImg2ImgDenoisingStrength.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLImg2ImgDenoisingStrength.tsx @@ -7,6 +7,7 @@ import SubParametersWrapper from 'features/parameters/components/Parameters/SubP import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { setSDXLImg2ImgDenoisingStrength } from '../store/sdxlSlice'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover'; const selector = createSelector( [stateSelector], @@ -36,19 +37,21 @@ const ParamSDXLImg2ImgDenoisingStrength = () => { return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx index b5ff691c23..7de413ad3a 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx @@ -1,34 +1,27 @@ import { Box, FormControl, useDisclosure } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; - -import { createSelector } from '@reduxjs/toolkit'; -import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; -import { useTranslation } from 'react-i18next'; - -import { userInvoked } from 'app/store/actions'; import IAITextarea from 'common/components/IAITextarea'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; import AddEmbeddingButton from 'features/embedding/components/AddEmbeddingButton'; import ParamEmbeddingPopover from 'features/embedding/components/ParamEmbeddingPopover'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { AnimatePresence } from 'framer-motion'; import { isEqual } from 'lodash-es'; +import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; import { flushSync } from 'react-dom'; +import { useTranslation } from 'react-i18next'; import { setNegativeStylePromptSDXL } from '../store/sdxlSlice'; import SDXLConcatLink from './SDXLConcatLink'; const promptInputSelector = createSelector( - [stateSelector, activeTabNameSelector], - ({ sdxl }, activeTabName) => { + [stateSelector], + ({ sdxl }) => { const { negativeStylePrompt, shouldConcatSDXLStylePrompt } = sdxl; return { prompt: negativeStylePrompt, shouldConcatSDXLStylePrompt, - activeTabName, }; }, { @@ -43,12 +36,11 @@ const promptInputSelector = createSelector( */ const ParamSDXLNegativeStyleConditioning = () => { const dispatch = useAppDispatch(); - const isReady = useIsReadyToInvoke(); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); const { t } = useTranslation(); - const { prompt, activeTabName, shouldConcatSDXLStylePrompt } = + const { prompt, shouldConcatSDXLStylePrompt } = useAppSelector(promptInputSelector); const handleChangePrompt = useCallback( @@ -101,23 +93,13 @@ const ParamSDXLNegativeStyleConditioning = () => { const handleKeyDown = useCallback( (e: KeyboardEvent) => { - if (e.key === 'Enter' && e.shiftKey === false && isReady) { - e.preventDefault(); - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - } if (isEmbeddingEnabled && e.key === '<') { onOpen(); } }, - [isReady, dispatch, activeTabName, onOpen, isEmbeddingEnabled] + [onOpen, isEmbeddingEnabled] ); - // const handleSelect = (e: MouseEvent) => { - // const target = e.target as HTMLTextAreaElement; - // setCaret({ start: target.selectionStart, end: target.selectionEnd }); - // }; - return ( diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx index b193e3adbd..9281d31588 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx @@ -1,34 +1,27 @@ import { Box, FormControl, useDisclosure } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; - -import { createSelector } from '@reduxjs/toolkit'; -import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; -import { useTranslation } from 'react-i18next'; - -import { userInvoked } from 'app/store/actions'; import IAITextarea from 'common/components/IAITextarea'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; import AddEmbeddingButton from 'features/embedding/components/AddEmbeddingButton'; import ParamEmbeddingPopover from 'features/embedding/components/ParamEmbeddingPopover'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { AnimatePresence } from 'framer-motion'; import { isEqual } from 'lodash-es'; +import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; import { flushSync } from 'react-dom'; +import { useTranslation } from 'react-i18next'; import { setPositiveStylePromptSDXL } from '../store/sdxlSlice'; import SDXLConcatLink from './SDXLConcatLink'; const promptInputSelector = createSelector( - [stateSelector, activeTabNameSelector], - ({ sdxl }, activeTabName) => { + [stateSelector], + ({ sdxl }) => { const { positiveStylePrompt, shouldConcatSDXLStylePrompt } = sdxl; return { prompt: positiveStylePrompt, shouldConcatSDXLStylePrompt, - activeTabName, }; }, { @@ -43,12 +36,11 @@ const promptInputSelector = createSelector( */ const ParamSDXLPositiveStyleConditioning = () => { const dispatch = useAppDispatch(); - const isReady = useIsReadyToInvoke(); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); const { t } = useTranslation(); - const { prompt, activeTabName, shouldConcatSDXLStylePrompt } = + const { prompt, shouldConcatSDXLStylePrompt } = useAppSelector(promptInputSelector); const handleChangePrompt = useCallback( @@ -101,23 +93,13 @@ const ParamSDXLPositiveStyleConditioning = () => { const handleKeyDown = useCallback( (e: KeyboardEvent) => { - if (e.key === 'Enter' && e.shiftKey === false && isReady) { - e.preventDefault(); - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - } if (isEmbeddingEnabled && e.key === '<') { onOpen(); } }, - [isReady, dispatch, activeTabName, onOpen, isEmbeddingEnabled] + [onOpen, isEmbeddingEnabled] ); - // const handleSelect = (e: MouseEvent) => { - // const target = e.target as HTMLTextAreaElement; - // setCaret({ start: target.selectionStart, end: target.selectionEnd }); - // }; - return ( diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx index 2b40eca382..5a0d7daf4e 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx @@ -1,8 +1,7 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse'; import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse'; +import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse'; import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse'; -import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; -import ParamSeamlessCollapse from 'features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse'; import { memo } from 'react'; import ParamSDXLPromptArea from './ParamSDXLPromptArea'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; @@ -17,8 +16,7 @@ const SDXLImageToImageTabParameters = () => { - - + ); }; diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx index ff47a42207..ab7e8c8a74 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLTextToImageTabParameters.tsx @@ -1,8 +1,7 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse'; import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse'; +import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse'; import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse'; -import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; -import ParamSeamlessCollapse from 'features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse'; import TextToImageTabCoreParameters from 'features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters'; import { memo } from 'react'; import ParamSDXLPromptArea from './ParamSDXLPromptArea'; @@ -17,8 +16,7 @@ const SDXLTextToImageTabParameters = () => { - - + ); }; diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx index 01236d8ec3..a9e94a9df0 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx @@ -1,10 +1,9 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse'; import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse'; +import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse'; import ParamCompositingSettingsCollapse from 'features/parameters/components/Parameters/Canvas/Compositing/ParamCompositingSettingsCollapse'; import ParamInfillAndScalingCollapse from 'features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillAndScalingCollapse'; import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse'; -import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; -import ParamSeamlessCollapse from 'features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse'; import ParamSDXLPromptArea from './ParamSDXLPromptArea'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; import SDXLUnifiedCanvasTabCoreParameters from './SDXLUnifiedCanvasTabCoreParameters'; @@ -18,10 +17,9 @@ export default function SDXLUnifiedCanvasTabParameters() { - - + ); } diff --git a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts index a020a453f7..73f5779a52 100644 --- a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts +++ b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts @@ -6,7 +6,7 @@ import { SchedulerParam, } from 'features/parameters/types/parameterSchemas'; -type SDXLInitialState = { +type SDXLState = { positiveStylePrompt: PositiveStylePromptSDXLParam; negativeStylePrompt: NegativeStylePromptSDXLParam; shouldConcatSDXLStylePrompt: boolean; @@ -21,7 +21,7 @@ type SDXLInitialState = { refinerStart: number; }; -const sdxlInitialState: SDXLInitialState = { +export const initialSDXLState: SDXLState = { positiveStylePrompt: '', negativeStylePrompt: '', shouldConcatSDXLStylePrompt: true, @@ -38,7 +38,7 @@ const sdxlInitialState: SDXLInitialState = { const sdxlSlice = createSlice({ name: 'sdxl', - initialState: sdxlInitialState, + initialState: initialSDXLState, reducers: { setPositiveStylePromptSDXL: (state, action: PayloadAction) => { state.positiveStylePrompt = action.payload; diff --git a/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx b/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx index 34bd394214..428ae47545 100644 --- a/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx +++ b/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx @@ -1,40 +1,38 @@ import { Progress } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { SystemState } from 'features/system/store/systemSlice'; -import { isEqual } from 'lodash-es'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { systemSelector } from '../store/systemSelectors'; - +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; const progressBarSelector = createSelector( - systemSelector, - (system: SystemState) => { + stateSelector, + ({ system }) => { return { - isProcessing: system.isProcessing, - currentStep: system.currentStep, - totalSteps: system.totalSteps, - currentStatusHasSteps: system.currentStatusHasSteps, + isConnected: system.isConnected, + hasSteps: Boolean(system.denoiseProgress), + value: (system.denoiseProgress?.percentage ?? 0) * 100, }; }, - { - memoizeOptions: { resultEqualityCheck: isEqual }, - } + defaultSelectorOptions ); const ProgressBar = () => { const { t } = useTranslation(); - const { isProcessing, currentStep, totalSteps, currentStatusHasSteps } = - useAppSelector(progressBarSelector); - - const value = currentStep ? Math.round((currentStep * 100) / totalSteps) : 0; + const { data: queueStatus } = useGetQueueStatusQuery(); + const { hasSteps, value, isConnected } = useAppSelector(progressBarSelector); return ( ); diff --git a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx index c1d02aed50..0a50f9ad7f 100644 --- a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx +++ b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx @@ -19,16 +19,17 @@ import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; -import { setShouldShowAdvancedOptions } from 'features/parameters/store/generationSlice'; import { consoleLogLevelChanged, setEnableImageDebugging, setShouldConfirmOnDelete, + setShouldDisableInformationalPopovers, shouldAntialiasProgressImageChanged, shouldLogToConsoleChanged, shouldUseNSFWCheckerChanged, shouldUseWatermarkerChanged, } from 'features/system/store/systemSlice'; +import { LANGUAGES } from 'features/system/store/types'; import { setShouldAutoChangeDimensions, setShouldShowProgressInViewer, @@ -48,7 +49,6 @@ import { useTranslation } from 'react-i18next'; import { LogLevelName } from 'roarr'; import { useGetAppConfigQuery } from 'services/api/endpoints/appInfo'; import { useFeatureStatus } from '../../hooks/useFeatureStatus'; -import { LANGUAGES } from '../../store/constants'; import { languageSelector } from '../../store/systemSelectors'; import { languageChanged } from '../../store/systemSlice'; import SettingSwitch from './SettingSwitch'; @@ -58,7 +58,7 @@ import StyledFlex from './StyledFlex'; const selector = createSelector( [stateSelector], - ({ system, ui, generation }) => { + ({ system, ui }) => { const { shouldConfirmOnDelete, enableImageDebugging, @@ -67,6 +67,7 @@ const selector = createSelector( shouldAntialiasProgressImage, shouldUseNSFWChecker, shouldUseWatermarker, + shouldDisableInformationalPopovers, } = system; const { @@ -75,8 +76,6 @@ const selector = createSelector( shouldAutoChangeDimensions, } = ui; - const { shouldShowAdvancedOptions } = generation; - return { shouldConfirmOnDelete, enableImageDebugging, @@ -85,10 +84,10 @@ const selector = createSelector( consoleLogLevel, shouldLogToConsole, shouldAntialiasProgressImage, - shouldShowAdvancedOptions, shouldUseNSFWChecker, shouldUseWatermarker, shouldAutoChangeDimensions, + shouldDisableInformationalPopovers, }; }, { @@ -118,8 +117,6 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { const shouldShowDeveloperSettings = config?.shouldShowDeveloperSettings ?? true; const shouldShowResetWebUiText = config?.shouldShowResetWebUiText ?? true; - const shouldShowAdvancedOptionsSettings = - config?.shouldShowAdvancedOptionsSettings ?? true; const shouldShowClearIntermediates = config?.shouldShowClearIntermediates ?? true; const shouldShowLocalizationToggle = @@ -161,10 +158,10 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { consoleLogLevel, shouldLogToConsole, shouldAntialiasProgressImage, - shouldShowAdvancedOptions, shouldUseNSFWChecker, shouldUseWatermarker, shouldAutoChangeDimensions, + shouldDisableInformationalPopovers, } = useAppSelector(selector); const handleClickResetWebUI = useCallback(() => { @@ -242,15 +239,6 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { dispatch(setShouldConfirmOnDelete(e.target.checked)) } /> - {shouldShowAdvancedOptionsSettings && ( - ) => - dispatch(setShouldShowAdvancedOptions(e.target.checked)) - } - /> - )} @@ -323,6 +311,15 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { onChange={handleLanguageChanged} /> )} + ) => + dispatch( + setShouldDisableInformationalPopovers(e.target.checked) + ) + } + /> {shouldShowDeveloperSettings && ( diff --git a/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx b/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx index 4a19ee7fa3..2f740bbe78 100644 --- a/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx +++ b/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx @@ -1,5 +1,6 @@ import { Flex, Icon, Text } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { AnimatePresence, motion } from 'framer-motion'; @@ -8,27 +9,17 @@ import { memo, useMemo, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { FaCircle } from 'react-icons/fa'; import { useHoverDirty } from 'react-use'; -import { systemSelector } from '../store/systemSelectors'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; +import { STATUS_TRANSLATION_KEYS } from '../store/types'; const statusIndicatorSelector = createSelector( - systemSelector, - (system) => { - const { - isConnected, - isProcessing, - statusTranslationKey, - currentIteration, - totalIterations, - currentStatusHasSteps, - } = system; + stateSelector, + ({ system }) => { + const { isConnected, status } = system; return { isConnected, - isProcessing, - currentIteration, - totalIterations, - statusTranslationKey, - currentStatusHasSteps, + statusTranslationKey: STATUS_TRANSLATION_KEYS[status], }; }, defaultSelectorOptions @@ -47,35 +38,24 @@ const LIGHT_COLOR_MAP = { }; const StatusIndicator = () => { - const { - isConnected, - isProcessing, - currentIteration, - totalIterations, - statusTranslationKey, - } = useAppSelector(statusIndicatorSelector); + const { isConnected, statusTranslationKey } = useAppSelector( + statusIndicatorSelector + ); const { t } = useTranslation(); const ref = useRef(null); + const { data: queueStatus } = useGetQueueStatusQuery(); - const statusString = useMemo(() => { - if (isProcessing) { + const statusColor = useMemo(() => { + if (!isConnected) { + return 'error'; + } + + if (queueStatus?.queue.in_progress) { return 'working'; } - if (isConnected) { - return 'ok'; - } - - return 'error'; - }, [isProcessing, isConnected]); - - const iterationsText = useMemo(() => { - if (!(currentIteration && totalIterations)) { - return; - } - - return ` (${currentIteration}/${totalIterations})`; - }, [currentIteration, totalIterations]); + return 'ok'; + }, [queueStatus?.queue.in_progress, isConnected]); const isHovered = useHoverDirty(ref); @@ -103,12 +83,11 @@ const StatusIndicator = () => { fontWeight: '600', pb: '1px', userSelect: 'none', - color: LIGHT_COLOR_MAP[statusString], - _dark: { color: DARK_COLOR_MAP[statusString] }, + color: LIGHT_COLOR_MAP[statusColor], + _dark: { color: DARK_COLOR_MAP[statusColor] }, }} > {t(statusTranslationKey as ResourceKey)} - {iterationsText}
)} @@ -117,8 +96,8 @@ const StatusIndicator = () => { as={FaCircle} sx={{ boxSize: '0.5rem', - color: LIGHT_COLOR_MAP[statusString], - _dark: { color: DARK_COLOR_MAP[statusString] }, + color: LIGHT_COLOR_MAP[statusColor], + _dark: { color: DARK_COLOR_MAP[statusColor] }, }} />
diff --git a/invokeai/frontend/web/src/features/system/store/configSlice.ts b/invokeai/frontend/web/src/features/system/store/configSlice.ts index 36a61be969..8a20b050ed 100644 --- a/invokeai/frontend/web/src/features/system/store/configSlice.ts +++ b/invokeai/frontend/web/src/features/system/store/configSlice.ts @@ -24,8 +24,8 @@ export const initialConfigState: AppConfig = { iterations: { initial: 1, min: 1, - sliderMax: 20, - inputMax: 9999, + sliderMax: 1000, + inputMax: 10000, fineStep: 1, coarseStep: 1, }, diff --git a/invokeai/frontend/web/src/features/system/store/constants.ts b/invokeai/frontend/web/src/features/system/store/constants.ts deleted file mode 100644 index 4e7dd0b9a8..0000000000 --- a/invokeai/frontend/web/src/features/system/store/constants.ts +++ /dev/null @@ -1,20 +0,0 @@ -import i18n from 'i18n'; - -export const LANGUAGES = { - ar: i18n.t('common.langArabic', { lng: 'ar' }), - nl: i18n.t('common.langDutch', { lng: 'nl' }), - en: i18n.t('common.langEnglish', { lng: 'en' }), - fr: i18n.t('common.langFrench', { lng: 'fr' }), - de: i18n.t('common.langGerman', { lng: 'de' }), - he: i18n.t('common.langHebrew', { lng: 'he' }), - it: i18n.t('common.langItalian', { lng: 'it' }), - ja: i18n.t('common.langJapanese', { lng: 'ja' }), - ko: i18n.t('common.langKorean', { lng: 'ko' }), - pl: i18n.t('common.langPolish', { lng: 'pl' }), - pt_BR: i18n.t('common.langBrPortuguese', { lng: 'pt_BR' }), - pt: i18n.t('common.langPortuguese', { lng: 'pt' }), - ru: i18n.t('common.langRussian', { lng: 'ru' }), - zh_CN: i18n.t('common.langSimplifiedChinese', { lng: 'zh_CN' }), - es: i18n.t('common.langSpanish', { lng: 'es' }), - uk: i18n.t('common.langUkranian', { lng: 'ua' }), -}; diff --git a/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts b/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts index b5376afc4f..df0d349d00 100644 --- a/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts +++ b/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts @@ -1,21 +1,7 @@ -import { SystemState } from './systemSlice'; +import { SystemState } from './types'; -/** - * System slice persist denylist - */ export const systemPersistDenylist: (keyof SystemState)[] = [ - 'currentIteration', - 'currentStep', - 'isCancelable', 'isConnected', - 'isESRGANAvailable', - 'isGFPGANAvailable', - 'isProcessing', - 'totalIterations', - 'totalSteps', - 'isCancelScheduled', - 'progressImage', - 'wereModelsReceived', - 'isPersisted', - 'isUploading', + 'denoiseProgress', + 'status', ]; diff --git a/invokeai/frontend/web/src/features/system/store/systemSelectors.ts b/invokeai/frontend/web/src/features/system/store/systemSelectors.ts index 900d8e0bd6..2e38f32283 100644 --- a/invokeai/frontend/web/src/features/system/store/systemSelectors.ts +++ b/invokeai/frontend/web/src/features/system/store/systemSelectors.ts @@ -1,21 +1,9 @@ import { createSelector } from '@reduxjs/toolkit'; -import { RootState } from 'app/store/store'; +import { stateSelector } from 'app/store/store'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -export const systemSelector = (state: RootState) => state.system; - -export const toastQueueSelector = (state: RootState) => state.system.toastQueue; - export const languageSelector = createSelector( - systemSelector, - (system) => system.language, + stateSelector, + ({ system }) => system.language, defaultSelectorOptions ); - -export const isProcessingSelector = (state: RootState) => - state.system.isProcessing; - -export const selectIsBusy = createSelector( - (state: RootState) => state, - (state) => state.system.isProcessing || !state.system.isConnected -); diff --git a/invokeai/frontend/web/src/features/system/store/systemSlice.ts b/invokeai/frontend/web/src/features/system/store/systemSlice.ts index 022762bc78..c74ab87dcf 100644 --- a/invokeai/frontend/web/src/features/system/store/systemSlice.ts +++ b/invokeai/frontend/web/src/features/system/store/systemSlice.ts @@ -1,14 +1,9 @@ import { UseToastOptions } from '@chakra-ui/react'; import { PayloadAction, createSlice, isAnyOf } from '@reduxjs/toolkit'; -import { InvokeLogLevel } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; import { t } from 'i18next'; import { get, startCase, truncate, upperFirst } from 'lodash-es'; import { LogLevelName } from 'roarr'; -import { - isAnySessionRejected, - sessionCanceled, -} from 'services/api/thunks/session'; +import { isAnySessionRejected } from 'services/api/thunks/session'; import { appSocketConnected, appSocketDisconnected, @@ -18,122 +13,39 @@ import { appSocketInvocationError, appSocketInvocationRetrievalError, appSocketInvocationStarted, + appSocketModelLoadCompleted, + appSocketModelLoadStarted, + appSocketQueueItemStatusChanged, appSocketSessionRetrievalError, - appSocketSubscribed, - appSocketUnsubscribed, } from 'services/events/actions'; -import { ProgressImage } from 'services/events/types'; +import { calculateStepPercentage } from '../util/calculateStepPercentage'; import { makeToast } from '../util/makeToast'; -import { LANGUAGES } from './constants'; +import { SystemState, LANGUAGES } from './types'; import { zPydanticValidationError } from './zodSchemas'; -export type CancelStrategy = 'immediate' | 'scheduled'; - -export interface SystemState { - isGFPGANAvailable: boolean; - isESRGANAvailable: boolean; - isConnected: boolean; - isProcessing: boolean; - shouldConfirmOnDelete: boolean; - currentStep: number; - totalSteps: number; - currentIteration: number; - totalIterations: number; - currentStatusHasSteps: boolean; - isCancelable: boolean; - enableImageDebugging: boolean; - toastQueue: UseToastOptions[]; - /** - * The current progress image - */ - progressImage: ProgressImage | null; - /** - * The current socket session id - */ - sessionId: string | null; - /** - * Cancel strategy - */ - cancelType: CancelStrategy; - /** - * Whether or not a scheduled cancelation is pending - */ - isCancelScheduled: boolean; - /** - * Array of node IDs that we want to handle when events received - */ - subscribedNodeIds: string[]; - /** - * Whether or not the available models were received - */ - wereModelsReceived: boolean; - /** - * The console output logging level - */ - consoleLogLevel: InvokeLogLevel; - shouldLogToConsole: boolean; - // TODO: probably better to not store keys here, should just be a string that maps to the translation key - statusTranslationKey: string; - /** - * When a session is canceled, its ID is stored here until a new session is created. - */ - canceledSession: string; - isPersisted: boolean; - shouldAntialiasProgressImage: boolean; - language: keyof typeof LANGUAGES; - isUploading: boolean; - shouldUseNSFWChecker: boolean; - shouldUseWatermarker: boolean; -} - export const initialSystemState: SystemState = { isConnected: false, - isProcessing: false, - isGFPGANAvailable: true, - isESRGANAvailable: true, shouldConfirmOnDelete: true, - currentStep: 0, - totalSteps: 0, - currentIteration: 0, - totalIterations: 0, - currentStatusHasSteps: false, - isCancelable: true, enableImageDebugging: false, toastQueue: [], - progressImage: null, + denoiseProgress: null, shouldAntialiasProgressImage: false, - sessionId: null, - cancelType: 'immediate', - isCancelScheduled: false, - subscribedNodeIds: [], - wereModelsReceived: false, consoleLogLevel: 'debug', shouldLogToConsole: true, - statusTranslationKey: 'common.statusDisconnected', - canceledSession: '', - isPersisted: false, language: 'en', - isUploading: false, shouldUseNSFWChecker: false, shouldUseWatermarker: false, + shouldDisableInformationalPopovers: false, + status: 'DISCONNECTED', }; export const systemSlice = createSlice({ name: 'system', initialState: initialSystemState, reducers: { - setIsProcessing: (state, action: PayloadAction) => { - state.isProcessing = action.payload; - }, - setCurrentStatus: (state, action: PayloadAction) => { - state.statusTranslationKey = action.payload; - }, setShouldConfirmOnDelete: (state, action: PayloadAction) => { state.shouldConfirmOnDelete = action.payload; }, - setIsCancelable: (state, action: PayloadAction) => { - state.isCancelable = action.payload; - }, setEnableImageDebugging: (state, action: PayloadAction) => { state.enableImageDebugging = action.payload; }, @@ -143,30 +55,6 @@ export const systemSlice = createSlice({ clearToastQueue: (state) => { state.toastQueue = []; }, - /** - * A cancel was scheduled - */ - cancelScheduled: (state) => { - state.isCancelScheduled = true; - }, - /** - * The scheduled cancel was aborted - */ - scheduledCancelAborted: (state) => { - state.isCancelScheduled = false; - }, - /** - * The cancel type was changed - */ - cancelTypeChanged: (state, action: PayloadAction) => { - state.cancelType = action.payload; - }, - /** - * The array of subscribed node ids was changed - */ - subscribedNodeIdsSet: (state, action: PayloadAction) => { - state.subscribedNodeIds = action.payload; - }, consoleLogLevelChanged: (state, action: PayloadAction) => { state.consoleLogLevel = action.payload; }, @@ -179,51 +67,30 @@ export const systemSlice = createSlice({ ) => { state.shouldAntialiasProgressImage = action.payload; }, - isPersistedChanged: (state, action: PayloadAction) => { - state.isPersisted = action.payload; - }, languageChanged: (state, action: PayloadAction) => { state.language = action.payload; }, - progressImageSet(state, action: PayloadAction) { - state.progressImage = action.payload; - }, shouldUseNSFWCheckerChanged(state, action: PayloadAction) { state.shouldUseNSFWChecker = action.payload; }, shouldUseWatermarkerChanged(state, action: PayloadAction) { state.shouldUseWatermarker = action.payload; }, + setShouldDisableInformationalPopovers( + state, + action: PayloadAction + ) { + state.shouldDisableInformationalPopovers = action.payload; + }, }, extraReducers(builder) { - /** - * Socket Subscribed - */ - builder.addCase(appSocketSubscribed, (state, action) => { - state.sessionId = action.payload.sessionId; - state.canceledSession = ''; - }); - - /** - * Socket Unsubscribed - */ - builder.addCase(appSocketUnsubscribed, (state) => { - state.sessionId = null; - }); - /** * Socket Connected */ builder.addCase(appSocketConnected, (state) => { state.isConnected = true; - state.isCancelable = true; - state.isProcessing = false; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - state.currentIteration = 0; - state.totalIterations = 0; - state.statusTranslationKey = 'common.statusConnected'; + state.denoiseProgress = null; + state.status = 'CONNECTED'; }); /** @@ -231,106 +98,75 @@ export const systemSlice = createSlice({ */ builder.addCase(appSocketDisconnected, (state) => { state.isConnected = false; - state.isProcessing = false; - state.isCancelable = true; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.statusTranslationKey = 'common.statusDisconnected'; + state.denoiseProgress = null; + state.status = 'DISCONNECTED'; }); /** * Invocation Started */ builder.addCase(appSocketInvocationStarted, (state) => { - state.isCancelable = true; - state.isProcessing = true; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.statusTranslationKey = 'common.statusGenerating'; + state.denoiseProgress = null; + state.status = 'PROCESSING'; }); /** * Generator Progress */ builder.addCase(appSocketGeneratorProgress, (state, action) => { - const { step, total_steps, progress_image } = action.payload.data; + const { + step, + total_steps, + order, + progress_image, + graph_execution_state_id: session_id, + queue_batch_id: batch_id, + } = action.payload.data; - state.isProcessing = true; - state.isCancelable = true; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.currentStatusHasSteps = true; - state.currentStep = step + 1; // TODO: step starts at -1, think this is a bug - state.totalSteps = total_steps; - state.progressImage = progress_image ?? null; - state.statusTranslationKey = 'common.statusGenerating'; + state.denoiseProgress = { + step, + total_steps, + order, + percentage: calculateStepPercentage(step, total_steps, order), + progress_image, + session_id, + batch_id, + }; + + state.status = 'PROCESSING'; }); /** * Invocation Complete */ - builder.addCase(appSocketInvocationComplete, (state, action) => { - const { data } = action.payload; - - // state.currentIteration = 0; - // state.totalIterations = 0; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusProcessingComplete'; - - if (state.canceledSession === data.graph_execution_state_id) { - state.isProcessing = false; - state.isCancelable = true; - } + builder.addCase(appSocketInvocationComplete, (state) => { + state.denoiseProgress = null; + state.status = 'CONNECTED'; }); /** * Graph Execution State Complete */ builder.addCase(appSocketGraphExecutionStateComplete, (state) => { - state.isProcessing = false; - state.isCancelable = false; - state.isCancelScheduled = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusConnected'; - state.progressImage = null; + state.denoiseProgress = null; + state.status = 'CONNECTED'; }); - /** - * User Invoked - */ - - builder.addCase(userInvoked, (state) => { - state.isProcessing = true; - state.isCancelable = true; - state.currentStatusHasSteps = false; - state.statusTranslationKey = 'common.statusPreparing'; + builder.addCase(appSocketModelLoadStarted, (state) => { + state.status = 'LOADING_MODEL'; }); - /** - * Session Canceled - FULFILLED - */ - builder.addCase(sessionCanceled.fulfilled, (state, action) => { - state.canceledSession = action.meta.arg.session_id; - state.isProcessing = false; - state.isCancelable = false; - state.isCancelScheduled = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusConnected'; - state.progressImage = null; + builder.addCase(appSocketModelLoadCompleted, (state) => { + state.status = 'CONNECTED'; + }); - state.toastQueue.push( - makeToast({ title: t('toast.canceled'), status: 'warning' }) - ); + builder.addCase(appSocketQueueItemStatusChanged, (state, action) => { + if ( + ['completed', 'canceled', 'failed'].includes(action.payload.data.status) + ) { + state.status = 'CONNECTED'; + state.denoiseProgress = null; + } }); // *** Matchers - must be after all cases *** @@ -340,14 +176,6 @@ export const systemSlice = createSlice({ * Session Created - REJECTED */ builder.addMatcher(isAnySessionRejected, (state, action) => { - state.isProcessing = false; - state.isCancelable = false; - state.isCancelScheduled = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusConnected'; - state.progressImage = null; - let errorDescription = undefined; const duration = 5000; @@ -391,16 +219,6 @@ export const systemSlice = createSlice({ * Any server error */ builder.addMatcher(isAnyServerError, (state, action) => { - state.isProcessing = false; - state.isCancelable = true; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusError'; - state.progressImage = null; - state.toastQueue.push( makeToast({ title: t('toast.serverError'), @@ -413,25 +231,17 @@ export const systemSlice = createSlice({ }); export const { - setIsProcessing, setShouldConfirmOnDelete, - setCurrentStatus, - setIsCancelable, setEnableImageDebugging, addToast, clearToastQueue, - cancelScheduled, - scheduledCancelAborted, - cancelTypeChanged, - subscribedNodeIdsSet, consoleLogLevelChanged, shouldLogToConsoleChanged, - isPersistedChanged, shouldAntialiasProgressImageChanged, languageChanged, - progressImageSet, shouldUseNSFWCheckerChanged, shouldUseWatermarkerChanged, + setShouldDisableInformationalPopovers, } = systemSlice.actions; export default systemSlice.reducer; diff --git a/invokeai/frontend/web/src/features/system/store/types.ts b/invokeai/frontend/web/src/features/system/store/types.ts new file mode 100644 index 0000000000..29bc836dae --- /dev/null +++ b/invokeai/frontend/web/src/features/system/store/types.ts @@ -0,0 +1,64 @@ +import { UseToastOptions } from '@chakra-ui/react'; +import { InvokeLogLevel } from 'app/logging/logger'; +import i18n from 'i18n'; +import { ProgressImage } from 'services/events/types'; + +export type SystemStatus = + | 'CONNECTED' + | 'DISCONNECTED' + | 'PROCESSING' + | 'ERROR' + | 'LOADING_MODEL'; + +export type DenoiseProgress = { + session_id: string; + batch_id: string; + progress_image: ProgressImage | null | undefined; + step: number; + total_steps: number; + order: number; + percentage: number; +}; + +export interface SystemState { + isConnected: boolean; + shouldConfirmOnDelete: boolean; + enableImageDebugging: boolean; + toastQueue: UseToastOptions[]; + denoiseProgress: DenoiseProgress | null; + consoleLogLevel: InvokeLogLevel; + shouldLogToConsole: boolean; + shouldAntialiasProgressImage: boolean; + language: keyof typeof LANGUAGES; + shouldUseNSFWChecker: boolean; + shouldUseWatermarker: boolean; + status: SystemStatus; + shouldDisableInformationalPopovers: boolean; +} + +export const LANGUAGES = { + ar: i18n.t('common.langArabic', { lng: 'ar' }), + nl: i18n.t('common.langDutch', { lng: 'nl' }), + en: i18n.t('common.langEnglish', { lng: 'en' }), + fr: i18n.t('common.langFrench', { lng: 'fr' }), + de: i18n.t('common.langGerman', { lng: 'de' }), + he: i18n.t('common.langHebrew', { lng: 'he' }), + it: i18n.t('common.langItalian', { lng: 'it' }), + ja: i18n.t('common.langJapanese', { lng: 'ja' }), + ko: i18n.t('common.langKorean', { lng: 'ko' }), + pl: i18n.t('common.langPolish', { lng: 'pl' }), + pt_BR: i18n.t('common.langBrPortuguese', { lng: 'pt_BR' }), + pt: i18n.t('common.langPortuguese', { lng: 'pt' }), + ru: i18n.t('common.langRussian', { lng: 'ru' }), + zh_CN: i18n.t('common.langSimplifiedChinese', { lng: 'zh_CN' }), + es: i18n.t('common.langSpanish', { lng: 'es' }), + uk: i18n.t('common.langUkranian', { lng: 'ua' }), +}; + +export const STATUS_TRANSLATION_KEYS: Record = { + CONNECTED: 'common.statusConnected', + DISCONNECTED: 'common.statusDisconnected', + PROCESSING: 'common.statusProcessing', + ERROR: 'common.statusError', + LOADING_MODEL: 'common.statusLoadingModel', +}; diff --git a/invokeai/frontend/web/src/features/system/util/calculateStepPercentage.ts b/invokeai/frontend/web/src/features/system/util/calculateStepPercentage.ts new file mode 100644 index 0000000000..080c7b1ee6 --- /dev/null +++ b/invokeai/frontend/web/src/features/system/util/calculateStepPercentage.ts @@ -0,0 +1,17 @@ +export const calculateStepPercentage = ( + step: number, + total_steps: number, + order: number +) => { + if (total_steps === 0) { + return 0; + } + + // we add one extra to step so that the progress bar will be full when denoise completes + + if (order === 2) { + return Math.floor((step + 1 + 1) / 2) / Math.floor((total_steps + 1) / 2); + } + + return (step + 1 + 1) / (total_steps + 1); +}; diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx index 7af1a4d674..b18a069cfa 100644 --- a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx +++ b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx @@ -37,16 +37,14 @@ const FloatingGalleryButton = ({ } sx={{ p: 0, px: 3, h: 48, - borderStartEndRadius: 0, - borderEndEndRadius: 0, - shadow: '2xl', + borderEndRadius: 0, }} />
diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx index aa24896591..da4d409943 100644 --- a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx +++ b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx @@ -1,7 +1,8 @@ -import { ChakraProps, Flex, Portal } from '@chakra-ui/react'; +import { ButtonGroup, ChakraProps, Flex, Portal } from '@chakra-ui/react'; import IAIIconButton from 'common/components/IAIIconButton'; -import CancelButton from 'features/parameters/components/ProcessButtons/CancelButton'; -import InvokeButton from 'features/parameters/components/ProcessButtons/InvokeButton'; +import CancelCurrentQueueItemButton from 'features/queue/components/CancelCurrentQueueItemButton'; +import ClearQueueButton from 'features/queue/components/ClearQueueButton'; +import QueueBackButton from 'features/queue/components/QueueBackButton'; import { RefObject, memo } from 'react'; import { useTranslation } from 'react-i18next'; @@ -9,9 +10,8 @@ import { FaSlidersH } from 'react-icons/fa'; import { ImperativePanelHandle } from 'react-resizable-panels'; const floatingButtonStyles: ChakraProps['sx'] = { - borderStartStartRadius: 0, - borderEndStartRadius: 0, - shadow: '2xl', + borderStartRadius: 0, + flexGrow: 1, }; type Props = { @@ -43,16 +43,23 @@ const FloatingSidePanelButtons = ({ insetInlineStart="5.13rem" direction="column" gap={2} + h={48} > - } - /> - - + + } + /> + + + + ); diff --git a/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx b/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx index 0f5a8d92ff..fb5756b121 100644 --- a/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx +++ b/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx @@ -10,7 +10,6 @@ import { VisuallyHidden, } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; -import AuxiliaryProgressIndicator from 'app/components/AuxiliaryProgressIndicator'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import ImageGalleryContent from 'features/gallery/components/ImageGalleryContent'; @@ -22,8 +21,9 @@ import { isEqual } from 'lodash-es'; import { MouseEvent, ReactNode, memo, useCallback, useMemo } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; -import { FaCube, FaFont, FaImage } from 'react-icons/fa'; -import { MdDeviceHub, MdGridOn } from 'react-icons/md'; +import { FaCube, FaFont, FaImage, FaStream } from 'react-icons/fa'; +import { FaCircleNodes } from 'react-icons/fa6'; +import { MdGridOn } from 'react-icons/md'; import { Panel, PanelGroup } from 'react-resizable-panels'; import { usePanel } from '../hooks/usePanel'; import { usePanelStorage } from '../hooks/usePanelStorage'; @@ -37,6 +37,7 @@ import ParametersPanel from './ParametersPanel'; import ImageTab from './tabs/ImageToImage/ImageToImageTab'; import ModelManagerTab from './tabs/ModelManager/ModelManagerTab'; import NodesTab from './tabs/Nodes/NodesTab'; +import QueueTab from './tabs/Queue/QueueTab'; import ResizeHandle from './tabs/ResizeHandle'; import TextToImageTab from './tabs/TextToImage/TextToImageTab'; import UnifiedCanvasTab from './tabs/UnifiedCanvas/UnifiedCanvasTab'; @@ -70,7 +71,9 @@ const tabs: InvokeTabInfo[] = [ { id: 'nodes', translationKey: 'common.nodes', - icon: , + icon: ( + + ), content: , }, { @@ -79,6 +82,12 @@ const tabs: InvokeTabInfo[] = [ icon: , content: , }, + { + id: 'queue', + translationKey: 'queue.queue', + icon: , + content: , + }, ]; const enabledTabsSelector = createSelector( @@ -97,8 +106,8 @@ const SIDE_PANEL_MIN_SIZE_PX = 448; const MAIN_PANEL_MIN_SIZE_PX = 448; const GALLERY_PANEL_MIN_SIZE_PX = 360; -export const NO_GALLERY_TABS: InvokeTabName[] = ['modelManager']; -export const NO_SIDE_PANEL_TABS: InvokeTabName[] = ['modelManager']; +export const NO_GALLERY_TABS: InvokeTabName[] = ['modelManager', 'queue']; +export const NO_SIDE_PANEL_TABS: InvokeTabName[] = ['modelManager', 'queue']; const InvokeTabs = () => { const activeTab = useAppSelector(activeTabIndexSelector); @@ -225,7 +234,6 @@ const InvokeTabs = () => { > {tabs} - { { <> { gap: 2, }} > - + { - const { shouldUseSliders } = ui; - const { shouldRandomizeSeed } = generation; - - const activeLabel = !shouldRandomizeSeed ? 'Manual Seed' : undefined; - - return { shouldUseSliders, activeLabel }; - }, - defaultSelectorOptions -); - const ImageToImageTabCoreParameters = () => { - const { shouldUseSliders, activeLabel } = useAppSelector(selector); + const shouldUseSliders = useAppSelector((state) => state.ui.shouldUseSliders); + const { iterationsAndSeedLabel } = useCoreParametersCollapseLabel(); return ( - + { - - ); diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx index fb1a5167a6..b2845f0e85 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx @@ -1,16 +1,14 @@ import { Flex } from '@chakra-ui/react'; -// import { addNewModel } from 'app/socketio/actions'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import { useTranslation } from 'react-i18next'; import { SelectItem } from '@mantine/core'; import { useForm } from '@mantine/form'; -import { makeToast } from 'features/system/util/makeToast'; -import { RootState } from 'app/store/store'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { addToast } from 'features/system/store/systemSlice'; +import { makeToast } from 'features/system/util/makeToast'; import { useImportMainModelsMutation } from 'services/api/endpoints/models'; const predictionSelectData: SelectItem[] = [ @@ -29,10 +27,6 @@ export default function SimpleAddModels() { const dispatch = useAppDispatch(); const { t } = useTranslation(); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); - const [importMainModel, { isLoading }] = useImportMainModelsMutation(); const addModelForm = useForm({ @@ -55,7 +49,7 @@ export default function SimpleAddModels() { dispatch( addToast( makeToast({ - title: t('toast.modelAddSimple'), + title: t('toast.modelAddedSimple'), status: 'success', }) ) @@ -64,7 +58,6 @@ export default function SimpleAddModels() { }) .catch((error) => { if (error) { - console.log(error); dispatch( addToast( makeToast({ @@ -95,11 +88,7 @@ export default function SimpleAddModels() { defaultValue="none" {...addModelForm.getInputProps('prediction_type')} /> - + {t('modelManager.addModel')} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx index 6c3ebf2530..f4943d3ce1 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx @@ -1,11 +1,10 @@ import { Badge, Divider, Flex, Text } from '@chakra-ui/react'; import { useForm } from '@mantine/form'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; import IAISimpleCheckbox from 'common/components/IAISimpleCheckbox'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { useCallback, useEffect, useState } from 'react'; @@ -26,8 +25,6 @@ type CheckpointModelEditProps = { }; export default function CheckpointModelEdit(props: CheckpointModelEditProps) { - const isBusy = useAppSelector(selectIsBusy); - const { model } = props; const [updateMainModel, { isLoading }] = useUpdateMainModelsMutation(); @@ -189,11 +186,7 @@ export default function CheckpointModelEdit(props: CheckpointModelEditProps) { /> - + {t('modelManager.updateModel')} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx index 39ba4bc4ce..67ec1f53db 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx @@ -1,12 +1,11 @@ import { Divider, Flex, Text } from '@chakra-ui/react'; import { useForm } from '@mantine/form'; -import { makeToast } from 'features/system/util/makeToast'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { addToast } from 'features/system/store/systemSlice'; +import { makeToast } from 'features/system/util/makeToast'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { @@ -22,8 +21,6 @@ type DiffusersModelEditProps = { }; export default function DiffusersModelEdit(props: DiffusersModelEditProps) { - const isBusy = useAppSelector(selectIsBusy); - const { model } = props; const [updateMainModel, { isLoading }] = useUpdateMainModelsMutation(); @@ -134,11 +131,7 @@ export default function DiffusersModelEdit(props: DiffusersModelEditProps) { label={t('modelManager.vaeLocation')} {...diffusersEditForm.getInputProps('vae')} /> - + {t('modelManager.updateModel')} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx index c87550c7d1..284ce95b3a 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx @@ -1,17 +1,16 @@ import { Divider, Flex, Text } from '@chakra-ui/react'; import { useForm } from '@mantine/form'; -import { makeToast } from 'features/system/util/makeToast'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; -import { addToast } from 'features/system/store/systemSlice'; -import { useCallback } from 'react'; -import { useTranslation } from 'react-i18next'; import { LORA_MODEL_FORMAT_MAP, MODEL_TYPE_MAP, } from 'features/parameters/types/constants'; +import { addToast } from 'features/system/store/systemSlice'; +import { makeToast } from 'features/system/util/makeToast'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { LoRAModelConfigEntity, useUpdateLoRAModelsMutation, @@ -24,8 +23,6 @@ type LoRAModelEditProps = { }; export default function LoRAModelEdit(props: LoRAModelEditProps) { - const isBusy = useAppSelector(selectIsBusy); - const { model } = props; const [updateLoRAModel, { isLoading }] = useUpdateLoRAModelsMutation(); @@ -123,11 +120,7 @@ export default function LoRAModelEdit(props: LoRAModelEditProps) { label={t('modelManager.modelLocation')} {...loraEditForm.getInputProps('path')} /> - + {t('modelManager.updateModel')} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx index 396ece2063..1e744e44ac 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx @@ -1,11 +1,10 @@ import { DeleteIcon } from '@chakra-ui/icons'; import { Badge, Flex, Text, Tooltip } from '@chakra-ui/react'; import { makeToast } from 'features/system/util/makeToast'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIAlertDialog from 'common/components/IAIAlertDialog'; import IAIButton from 'common/components/IAIButton'; import IAIIconButton from 'common/components/IAIIconButton'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { addToast } from 'features/system/store/systemSlice'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; @@ -25,7 +24,6 @@ type ModelListItemProps = { }; export default function ModelListItem(props: ModelListItemProps) { - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const dispatch = useAppDispatch(); const [deleteMainModel] = useDeleteMainModelsMutation(); @@ -129,7 +127,6 @@ export default function ModelListItem(props: ModelListItemProps) { } aria-label={t('modelManager.deleteConfig')} - isDisabled={isBusy} colorScheme="error" /> } diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/Queue/QueueTab.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/Queue/QueueTab.tsx new file mode 100644 index 0000000000..42dd5ee459 --- /dev/null +++ b/invokeai/frontend/web/src/features/ui/components/tabs/Queue/QueueTab.tsx @@ -0,0 +1,8 @@ +import QueueTabContent from 'features/queue/components/QueueTabContent'; +import { memo } from 'react'; + +const QueueTab = () => { + return ; +}; + +export default memo(QueueTab); diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx index 152efd3e17..ea6ef03e09 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx @@ -1,8 +1,5 @@ import { Box, Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; import ParamCFGScale from 'features/parameters/components/Parameters/Core/ParamCFGScale'; import ParamIterations from 'features/parameters/components/Parameters/Core/ParamIterations'; @@ -10,26 +7,19 @@ import ParamModelandVAEandScheduler from 'features/parameters/components/Paramet import ParamSize from 'features/parameters/components/Parameters/Core/ParamSize'; import ParamSteps from 'features/parameters/components/Parameters/Core/ParamSteps'; import ParamSeedFull from 'features/parameters/components/Parameters/Seed/ParamSeedFull'; +import { useCoreParametersCollapseLabel } from 'features/parameters/util/useCoreParametersCollapseLabel'; import { memo } from 'react'; -const selector = createSelector( - stateSelector, - ({ ui, generation }) => { - const { shouldUseSliders } = ui; - const { shouldRandomizeSeed } = generation; - - const activeLabel = !shouldRandomizeSeed ? 'Manual Seed' : undefined; - - return { shouldUseSliders, activeLabel }; - }, - defaultSelectorOptions -); - const TextToImageTabCoreParameters = () => { - const { shouldUseSliders, activeLabel } = useAppSelector(selector); + const shouldUseSliders = useAppSelector((state) => state.ui.shouldUseSliders); + const { iterationsAndSeedLabel } = useCoreParametersCollapseLabel(); return ( - + { - - ); diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx index a68794a930..a865bcd0de 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx @@ -1,9 +1,7 @@ -import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { canvasCopiedToClipboard } from 'features/canvas/store/actions'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; import { useCopyImageToClipboard } from 'features/ui/hooks/useCopyImageToClipboard'; import { useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; @@ -12,13 +10,8 @@ import { FaCopy } from 'react-icons/fa'; export default function UnifiedCanvasCopyToClipboard() { const isStaging = useAppSelector(isStagingSelector); - const canvasBaseLayer = getCanvasBaseLayer(); const { isClipboardAPIAvailable } = useCopyImageToClipboard(); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); - const dispatch = useAppDispatch(); const { t } = useTranslation(); @@ -31,7 +24,7 @@ export default function UnifiedCanvasCopyToClipboard() { enabled: () => !isStaging && isClipboardAPIAvailable, preventDefault: true, }, - [canvasBaseLayer, isProcessing, isClipboardAPIAvailable] + [isClipboardAPIAvailable] ); const handleCopyImageToClipboard = useCallback(() => { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx index e836766f1a..66c378e068 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx @@ -1,21 +1,14 @@ -import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { canvasMerged } from 'features/canvas/store/actions'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { FaLayerGroup } from 'react-icons/fa'; - export default function UnifiedCanvasMergeVisible() { const dispatch = useAppDispatch(); const { t } = useTranslation(); - const canvasBaseLayer = getCanvasBaseLayer(); const isStaging = useAppSelector(isStagingSelector); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); useHotkeys( ['shift+m'], @@ -26,7 +19,7 @@ export default function UnifiedCanvasMergeVisible() { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [] ); const handleMergeVisible = () => { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx index 78b57181e6..31617a4dbe 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx @@ -1,20 +1,13 @@ -import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { canvasSavedToGallery } from 'features/canvas/store/actions'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { FaSave } from 'react-icons/fa'; export default function UnifiedCanvasSaveToGallery() { const isStaging = useAppSelector(isStagingSelector); - const canvasBaseLayer = getCanvasBaseLayer(); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); - const dispatch = useAppDispatch(); const { t } = useTranslation(); @@ -27,7 +20,7 @@ export default function UnifiedCanvasSaveToGallery() { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [] ); const handleSaveToGallery = () => { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx index a11f40a257..59a0890960 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx @@ -1,19 +1,16 @@ import { ButtonGroup, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; -import { - canvasSelector, - isStagingSelector, -} from 'features/canvas/store/canvasSelectors'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; import { addEraseRect, addFillRect, setTool, } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { isEqual } from 'lodash-es'; -import { memo } from 'react'; +import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; @@ -26,15 +23,13 @@ import { } from 'react-icons/fa'; export const selector = createSelector( - [canvasSelector, isStagingSelector, systemSelector], - (canvas, isStaging, system) => { - const { isProcessing } = system; + [stateSelector, isStagingSelector], + ({ canvas }, isStaging) => { const { tool } = canvas; return { tool, isStaging, - isProcessing, }; }, { @@ -107,11 +102,23 @@ const UnifiedCanvasToolSelect = () => { } ); - const handleSelectBrushTool = () => dispatch(setTool('brush')); - const handleSelectEraserTool = () => dispatch(setTool('eraser')); - const handleSelectColorPickerTool = () => dispatch(setTool('colorPicker')); - const handleFillRect = () => dispatch(addFillRect()); - const handleEraseBoundingBox = () => dispatch(addEraseRect()); + const handleSelectBrushTool = useCallback( + () => dispatch(setTool('brush')), + [dispatch] + ); + const handleSelectEraserTool = useCallback( + () => dispatch(setTool('eraser')), + [dispatch] + ); + const handleSelectColorPickerTool = useCallback( + () => dispatch(setTool('colorPicker')), + [dispatch] + ); + const handleFillRect = useCallback(() => dispatch(addFillRect()), [dispatch]); + const handleEraseBoundingBox = useCallback( + () => dispatch(addEraseRect()), + [dispatch] + ); return ( diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx index 36f7ff7320..c57a68ed62 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx @@ -1,8 +1,5 @@ import { Box, Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; import ParamBoundingBoxSize from 'features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize'; import ParamCFGScale from 'features/parameters/components/Parameters/Core/ParamCFGScale'; @@ -11,26 +8,19 @@ import ParamModelandVAEandScheduler from 'features/parameters/components/Paramet import ParamSteps from 'features/parameters/components/Parameters/Core/ParamSteps'; import ImageToImageStrength from 'features/parameters/components/Parameters/ImageToImage/ImageToImageStrength'; import ParamSeedFull from 'features/parameters/components/Parameters/Seed/ParamSeedFull'; +import { useCoreParametersCollapseLabel } from 'features/parameters/util/useCoreParametersCollapseLabel'; import { memo } from 'react'; -const selector = createSelector( - stateSelector, - ({ ui, generation }) => { - const { shouldUseSliders } = ui; - const { shouldRandomizeSeed } = generation; - - const activeLabel = !shouldRandomizeSeed ? 'Manual Seed' : undefined; - - return { shouldUseSliders, activeLabel }; - }, - defaultSelectorOptions -); - const UnifiedCanvasCoreParameters = () => { - const { shouldUseSliders, activeLabel } = useAppSelector(selector); + const shouldUseSliders = useAppSelector((state) => state.ui.shouldUseSliders); + const { iterationsAndSeedLabel } = useCoreParametersCollapseLabel(); return ( - + { - ); diff --git a/invokeai/frontend/web/src/features/ui/store/tabMap.ts b/invokeai/frontend/web/src/features/ui/store/tabMap.ts index 0cae8eac43..f4abd17203 100644 --- a/invokeai/frontend/web/src/features/ui/store/tabMap.ts +++ b/invokeai/frontend/web/src/features/ui/store/tabMap.ts @@ -4,7 +4,7 @@ export const tabMap = [ 'unifiedCanvas', 'nodes', 'modelManager', - 'batch', + 'queue', ] as const; export type InvokeTabName = (typeof tabMap)[number]; diff --git a/invokeai/frontend/web/src/services/api/endpoints/boards.ts b/invokeai/frontend/web/src/services/api/endpoints/boards.ts index 82167dc7ba..53b3bfd59d 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/boards.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/boards.ts @@ -9,7 +9,7 @@ import { OffsetPaginatedResults_ImageDTO_, UpdateBoardArg, } from 'services/api/types'; -import { ApiFullTagDescription, LIST_TAG, api } from '..'; +import { ApiTagDescription, LIST_TAG, api } from '..'; import { getListImagesUrl } from '../util'; export const boardsApi = api.injectEndpoints({ @@ -21,7 +21,7 @@ export const boardsApi = api.injectEndpoints({ query: (arg) => ({ url: 'boards/', params: arg }), providesTags: (result) => { // any list of boards - const tags: ApiFullTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; + const tags: ApiTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; if (result) { // and individual tags for each board @@ -44,7 +44,7 @@ export const boardsApi = api.injectEndpoints({ }), providesTags: (result) => { // any list of boards - const tags: ApiFullTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; + const tags: ApiTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; if (result) { // and individual tags for each board diff --git a/invokeai/frontend/web/src/services/api/endpoints/images.ts b/invokeai/frontend/web/src/services/api/endpoints/images.ts index cb7a38c14f..e653a6ec3e 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/images.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/images.ts @@ -13,7 +13,7 @@ import { } from 'features/nodes/types/types'; import { getMetadataAndWorkflowFromImageBlob } from 'features/nodes/util/getMetadataAndWorkflowFromImageBlob'; import { keyBy } from 'lodash-es'; -import { ApiFullTagDescription, LIST_TAG, api } from '..'; +import { ApiTagDescription, LIST_TAG, api } from '..'; import { $authToken, $projectId } from '../client'; import { components, paths } from '../schema'; import { @@ -1310,7 +1310,7 @@ export const imagesApi = api.injectEndpoints({ }), invalidatesTags: (result, error, { imageDTOs }) => { const touchedBoardIds: string[] = []; - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'BoardImagesTotal', id: 'none' }, { type: 'BoardAssetsTotal', id: 'none' }, ]; diff --git a/invokeai/frontend/web/src/services/api/endpoints/models.ts b/invokeai/frontend/web/src/services/api/endpoints/models.ts index 9db7762344..41c0dee7fd 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/models.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/models.ts @@ -5,6 +5,7 @@ import { BaseModelType, CheckpointModelConfig, ControlNetModelConfig, + IPAdapterModelConfig, DiffusersModelConfig, ImportModelConfig, LoRAModelConfig, @@ -17,7 +18,7 @@ import { } from 'services/api/types'; import queryString from 'query-string'; -import { ApiFullTagDescription, LIST_TAG, api } from '..'; +import { ApiTagDescription, LIST_TAG, api } from '..'; import { operations, paths } from '../schema'; export type DiffusersModelConfigEntity = DiffusersModelConfig & { id: string }; @@ -36,6 +37,10 @@ export type ControlNetModelConfigEntity = ControlNetModelConfig & { id: string; }; +export type IPAdapterModelConfigEntity = IPAdapterModelConfig & { + id: string; +}; + export type TextualInversionModelConfigEntity = TextualInversionModelConfig & { id: string; }; @@ -47,6 +52,7 @@ type AnyModelConfigEntity = | OnnxModelConfigEntity | LoRAModelConfigEntity | ControlNetModelConfigEntity + | IPAdapterModelConfigEntity | TextualInversionModelConfigEntity | VaeModelConfigEntity; @@ -135,6 +141,10 @@ export const controlNetModelsAdapter = createEntityAdapter({ sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), }); +export const ipAdapterModelsAdapter = + createEntityAdapter({ + sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), + }); export const textualInversionModelsAdapter = createEntityAdapter({ sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), @@ -179,9 +189,7 @@ export const modelsApi = api.injectEndpoints({ return `models/?${query}`; }, providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'OnnxModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'OnnxModel', id: LIST_TAG }]; if (result) { tags.push( @@ -218,9 +226,7 @@ export const modelsApi = api.injectEndpoints({ return `models/?${query}`; }, providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'MainModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'MainModel', id: LIST_TAG }]; if (result) { tags.push( @@ -354,9 +360,7 @@ export const modelsApi = api.injectEndpoints({ getLoRAModels: build.query, void>({ query: () => ({ url: 'models/', params: { model_type: 'lora' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'LoRAModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'LoRAModel', id: LIST_TAG }]; if (result) { tags.push( @@ -410,7 +414,7 @@ export const modelsApi = api.injectEndpoints({ >({ query: () => ({ url: 'models/', params: { model_type: 'controlnet' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'ControlNetModel', id: LIST_TAG }, ]; @@ -435,12 +439,41 @@ export const modelsApi = api.injectEndpoints({ ); }, }), + getIPAdapterModels: build.query< + EntityState, + void + >({ + query: () => ({ url: 'models/', params: { model_type: 'ip_adapter' } }), + providesTags: (result) => { + const tags: ApiTagDescription[] = [ + { type: 'IPAdapterModel', id: LIST_TAG }, + ]; + + if (result) { + tags.push( + ...result.ids.map((id) => ({ + type: 'IPAdapterModel' as const, + id, + })) + ); + } + + return tags; + }, + transformResponse: (response: { models: IPAdapterModelConfig[] }) => { + const entities = createModelEntities( + response.models + ); + return ipAdapterModelsAdapter.setAll( + ipAdapterModelsAdapter.getInitialState(), + entities + ); + }, + }), getVaeModels: build.query, void>({ query: () => ({ url: 'models/', params: { model_type: 'vae' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'VaeModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'VaeModel', id: LIST_TAG }]; if (result) { tags.push( @@ -469,7 +502,7 @@ export const modelsApi = api.injectEndpoints({ >({ query: () => ({ url: 'models/', params: { model_type: 'embedding' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'TextualInversionModel', id: LIST_TAG }, ]; @@ -504,7 +537,7 @@ export const modelsApi = api.injectEndpoints({ }; }, providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'ScannedModels', id: LIST_TAG }, ]; @@ -533,6 +566,7 @@ export const { useGetMainModelsQuery, useGetOnnxModelsQuery, useGetControlNetModelsQuery, + useGetIPAdapterModelsQuery, useGetLoRAModelsQuery, useGetTextualInversionModelsQuery, useGetVaeModelsQuery, diff --git a/invokeai/frontend/web/src/services/api/endpoints/queue.ts b/invokeai/frontend/web/src/services/api/endpoints/queue.ts new file mode 100644 index 0000000000..6d436b231f --- /dev/null +++ b/invokeai/frontend/web/src/services/api/endpoints/queue.ts @@ -0,0 +1,382 @@ +import { + AnyAction, + EntityState, + ThunkDispatch, + createEntityAdapter, +} from '@reduxjs/toolkit'; +import { $queueId } from 'features/queue/store/nanoStores'; +import { listParamsReset } from 'features/queue/store/queueSlice'; +import queryString from 'query-string'; +import { ApiTagDescription, api } from '..'; +import { components, paths } from '../schema'; + +const getListQueueItemsUrl = ( + queryArgs?: paths['/api/v1/queue/{queue_id}/list']['get']['parameters']['query'] +) => { + const query = queryArgs + ? queryString.stringify(queryArgs, { + arrayFormat: 'none', + }) + : undefined; + + if (query) { + return `queue/${$queueId.get()}/list?${query}`; + } + + return `queue/${$queueId.get()}/list`; +}; + +export type SessionQueueItemStatus = NonNullable< + NonNullable< + paths['/api/v1/queue/{queue_id}/list']['get']['parameters']['query'] + >['status'] +>; + +export const queueItemsAdapter = createEntityAdapter< + components['schemas']['SessionQueueItemDTO'] +>({ + selectId: (queueItem) => queueItem.item_id, + sortComparer: (a, b) => { + // Sort by priority in descending order + if (a.priority > b.priority) { + return -1; + } + if (a.priority < b.priority) { + return 1; + } + + // If priority is the same, sort by id in ascending order + if (a.item_id < b.item_id) { + return -1; + } + if (a.item_id > b.item_id) { + return 1; + } + + return 0; + }, +}); + +export const queueApi = api.injectEndpoints({ + endpoints: (build) => ({ + enqueueBatch: build.mutation< + paths['/api/v1/queue/{queue_id}/enqueue_batch']['post']['responses']['201']['content']['application/json'], + paths['/api/v1/queue/{queue_id}/enqueue_batch']['post']['requestBody']['content']['application/json'] + >({ + query: (arg) => ({ + url: `queue/${$queueId.get()}/enqueue_batch`, + body: arg, + method: 'POST', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + enqueueGraph: build.mutation< + paths['/api/v1/queue/{queue_id}/enqueue_graph']['post']['responses']['201']['content']['application/json'], + paths['/api/v1/queue/{queue_id}/enqueue_graph']['post']['requestBody']['content']['application/json'] + >({ + query: (arg) => ({ + url: `queue/${$queueId.get()}/enqueue_graph`, + body: arg, + method: 'POST', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + resumeProcessor: build.mutation< + paths['/api/v1/queue/{queue_id}/processor/resume']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/processor/resume`, + method: 'PUT', + }), + invalidatesTags: ['CurrentSessionQueueItem', 'SessionQueueStatus'], + }), + pauseProcessor: build.mutation< + paths['/api/v1/queue/{queue_id}/processor/pause']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/processor/pause`, + method: 'PUT', + }), + invalidatesTags: ['CurrentSessionQueueItem', 'SessionQueueStatus'], + }), + pruneQueue: build.mutation< + paths['/api/v1/queue/{queue_id}/prune']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/prune`, + method: 'PUT', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'BatchStatus', + 'SessionQueueItem', + 'SessionQueueItemDTO', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + clearQueue: build.mutation< + paths['/api/v1/queue/{queue_id}/clear']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/clear`, + method: 'PUT', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'SessionProcessorStatus', + 'BatchStatus', + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + 'SessionQueueItem', + 'SessionQueueItemDTO', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + getCurrentQueueItem: build.query< + paths['/api/v1/queue/{queue_id}/current']['get']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/current`, + method: 'GET', + }), + providesTags: (result) => { + const tags: ApiTagDescription[] = ['CurrentSessionQueueItem']; + if (result) { + tags.push({ type: 'SessionQueueItem', id: result.item_id }); + } + return tags; + }, + }), + getNextQueueItem: build.query< + paths['/api/v1/queue/{queue_id}/next']['get']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/next`, + method: 'GET', + }), + providesTags: (result) => { + const tags: ApiTagDescription[] = ['NextSessionQueueItem']; + if (result) { + tags.push({ type: 'SessionQueueItem', id: result.item_id }); + } + return tags; + }, + }), + getQueueStatus: build.query< + paths['/api/v1/queue/{queue_id}/status']['get']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/status`, + method: 'GET', + }), + + providesTags: ['SessionQueueStatus'], + }), + getBatchStatus: build.query< + paths['/api/v1/queue/{queue_id}/b/{batch_id}/status']['get']['responses']['200']['content']['application/json'], + { batch_id: string } + >({ + query: ({ batch_id }) => ({ + url: `queue/${$queueId.get()}/b/${batch_id}/status`, + method: 'GET', + }), + providesTags: (result) => { + if (!result) { + return []; + } + return [{ type: 'BatchStatus', id: result.batch_id }]; + }, + }), + getQueueItem: build.query< + paths['/api/v1/queue/{queue_id}/i/{item_id}']['get']['responses']['200']['content']['application/json'], + number + >({ + query: (item_id) => ({ + url: `queue/${$queueId.get()}/i/${item_id}`, + method: 'GET', + }), + providesTags: (result) => { + if (!result) { + return []; + } + return [{ type: 'SessionQueueItem', id: result.item_id }]; + }, + }), + cancelQueueItem: build.mutation< + paths['/api/v1/queue/{queue_id}/i/{item_id}/cancel']['put']['responses']['200']['content']['application/json'], + number + >({ + query: (item_id) => ({ + url: `queue/${$queueId.get()}/i/${item_id}/cancel`, + method: 'PUT', + }), + onQueryStarted: async (item_id, { dispatch, queryFulfilled }) => { + try { + const { data } = await queryFulfilled; + dispatch( + queueApi.util.updateQueryData( + 'listQueueItems', + undefined, + (draft) => { + queueItemsAdapter.updateOne(draft, { + id: item_id, + changes: { status: data.status }, + }); + } + ) + ); + } catch { + // no-op + } + }, + invalidatesTags: (result) => { + if (!result) { + return []; + } + return [ + { type: 'SessionQueueItem', id: result.item_id }, + { type: 'SessionQueueItemDTO', id: result.item_id }, + { type: 'BatchStatus', id: result.batch_id }, + ]; + }, + }), + cancelByBatchIds: build.mutation< + paths['/api/v1/queue/{queue_id}/cancel_by_batch_ids']['put']['responses']['200']['content']['application/json'], + paths['/api/v1/queue/{queue_id}/cancel_by_batch_ids']['put']['requestBody']['content']['application/json'] + >({ + query: (body) => ({ + url: `queue/${$queueId.get()}/cancel_by_batch_ids`, + method: 'PUT', + body, + }), + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + invalidatesTags: [ + 'SessionQueueItem', + 'SessionQueueItemDTO', + 'BatchStatus', + ], + }), + listQueueItems: build.query< + EntityState & { + has_more: boolean; + }, + { cursor?: number; priority?: number } | undefined + >({ + query: (queryArgs) => ({ + url: getListQueueItemsUrl(queryArgs), + method: 'GET', + }), + serializeQueryArgs: () => { + return `queue/${$queueId.get()}/list`; + }, + transformResponse: ( + response: components['schemas']['CursorPaginatedResults_SessionQueueItemDTO_'] + ) => + queueItemsAdapter.addMany( + queueItemsAdapter.getInitialState({ + has_more: response.has_more, + }), + response.items + ), + merge: (cache, response) => { + queueItemsAdapter.addMany( + cache, + queueItemsAdapter.getSelectors().selectAll(response) + ); + cache.has_more = response.has_more; + }, + forceRefetch: ({ currentArg, previousArg }) => currentArg !== previousArg, + keepUnusedDataFor: 60 * 5, // 5 minutes + }), + }), +}); + +export const { + useCancelByBatchIdsMutation, + useEnqueueGraphMutation, + useEnqueueBatchMutation, + usePauseProcessorMutation, + useResumeProcessorMutation, + useClearQueueMutation, + usePruneQueueMutation, + useGetCurrentQueueItemQuery, + useGetQueueStatusQuery, + useGetQueueItemQuery, + useGetNextQueueItemQuery, + useListQueueItemsQuery, + useCancelQueueItemMutation, + useGetBatchStatusQuery, +} = queueApi; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const resetListQueryData = (dispatch: ThunkDispatch) => { + dispatch( + queueApi.util.updateQueryData('listQueueItems', undefined, (draft) => { + // remove all items from the list + queueItemsAdapter.removeAll(draft); + // reset the has_more flag + draft.has_more = false; + }) + ); + // set the list cursor and priority to undefined + dispatch(listParamsReset()); + // we have to manually kick off another query to get the first page and re-initialize the list + dispatch(queueApi.endpoints.listQueueItems.initiate(undefined)); +}; diff --git a/invokeai/frontend/web/src/services/api/endpoints/utilities.ts b/invokeai/frontend/web/src/services/api/endpoints/utilities.ts new file mode 100644 index 0000000000..4d2c77c188 --- /dev/null +++ b/invokeai/frontend/web/src/services/api/endpoints/utilities.ts @@ -0,0 +1,20 @@ +import { api } from '..'; +import { components } from '../schema'; + +export const utilitiesApi = api.injectEndpoints({ + endpoints: (build) => ({ + dynamicPrompts: build.query< + components['schemas']['DynamicPromptsResponse'], + { prompt: string; max_prompts: number } + >({ + query: (arg) => ({ + url: 'utilities/dynamicprompts', + body: arg, + method: 'POST', + }), + keepUnusedDataFor: 86400, // 24 hours + }), + }), +}); + +export const { useDynamicPromptsQuery } = utilitiesApi; diff --git a/invokeai/frontend/web/src/services/api/index.ts b/invokeai/frontend/web/src/services/api/index.ts index 325456901b..8b4f886bb0 100644 --- a/invokeai/frontend/web/src/services/api/index.ts +++ b/invokeai/frontend/web/src/services/api/index.ts @@ -1,4 +1,4 @@ -import { FullTagDescription } from '@reduxjs/toolkit/dist/query/endpointDefinitions'; +import { TagDescription } from '@reduxjs/toolkit/dist/query/endpointDefinitions'; import { BaseQueryFn, FetchArgs, @@ -18,10 +18,14 @@ export const tagTypes = [ 'ImageMetadata', 'ImageMetadataFromFile', 'Model', + 'SessionQueueItem', + 'SessionQueueItemDTO', + 'SessionQueueItemDTOList', + 'SessionQueueStatus', + 'SessionProcessorStatus', + 'BatchStatus', ]; -export type ApiFullTagDescription = FullTagDescription< - (typeof tagTypes)[number] ->; +export type ApiTagDescription = TagDescription<(typeof tagTypes)[number]>; export const LIST_TAG = 'LIST'; const dynamicBaseQuery: BaseQueryFn< diff --git a/invokeai/frontend/web/src/services/api/schema.d.ts b/invokeai/frontend/web/src/services/api/schema.d.ts index dfa292c643..26cb798594 100644 --- a/invokeai/frontend/web/src/services/api/schema.d.ts +++ b/invokeai/frontend/web/src/services/api/schema.d.ts @@ -8,11 +8,13 @@ export type paths = { "/api/v1/sessions/": { /** * List Sessions + * @deprecated * @description Gets a list of sessions, optionally searching */ get: operations["list_sessions"]; /** * Create Session + * @deprecated * @description Creates a new session, optionally initializing it with an invocation graph */ post: operations["create_session"]; @@ -20,6 +22,7 @@ export type paths = { "/api/v1/sessions/{session_id}": { /** * Get Session + * @deprecated * @description Gets a session */ get: operations["get_session"]; @@ -27,6 +30,7 @@ export type paths = { "/api/v1/sessions/{session_id}/nodes": { /** * Add Node + * @deprecated * @description Adds a node to the graph */ post: operations["add_node"]; @@ -34,11 +38,13 @@ export type paths = { "/api/v1/sessions/{session_id}/nodes/{node_path}": { /** * Update Node + * @deprecated * @description Updates a node in the graph and removes all linked edges */ put: operations["update_node"]; /** * Delete Node + * @deprecated * @description Deletes a node in the graph and removes all linked edges */ delete: operations["delete_node"]; @@ -46,6 +52,7 @@ export type paths = { "/api/v1/sessions/{session_id}/edges": { /** * Add Edge + * @deprecated * @description Adds an edge to the graph */ post: operations["add_edge"]; @@ -53,6 +60,7 @@ export type paths = { "/api/v1/sessions/{session_id}/edges/{from_node_id}/{from_field}/{to_node_id}/{to_field}": { /** * Delete Edge + * @deprecated * @description Deletes an edge from the graph */ delete: operations["delete_edge"]; @@ -60,15 +68,24 @@ export type paths = { "/api/v1/sessions/{session_id}/invoke": { /** * Invoke Session + * @deprecated * @description Invokes a session */ put: operations["invoke_session"]; /** * Cancel Session Invoke + * @deprecated * @description Invokes a session */ delete: operations["cancel_session_invoke"]; }; + "/api/v1/utilities/dynamicprompts": { + /** + * Parse Dynamicprompts + * @description Creates a batch process + */ + post: operations["parse_dynamicprompts"]; + }; "/api/v1/models/": { /** * List Models @@ -300,6 +317,104 @@ export type paths = { */ post: operations["set_log_level"]; }; + "/api/v1/queue/{queue_id}/enqueue_graph": { + /** + * Enqueue Graph + * @description Enqueues a graph for single execution. + */ + post: operations["enqueue_graph"]; + }; + "/api/v1/queue/{queue_id}/enqueue_batch": { + /** + * Enqueue Batch + * @description Processes a batch and enqueues the output graphs for execution. + */ + post: operations["enqueue_batch"]; + }; + "/api/v1/queue/{queue_id}/list": { + /** + * List Queue Items + * @description Gets all queue items (without graphs) + */ + get: operations["list_queue_items"]; + }; + "/api/v1/queue/{queue_id}/processor/resume": { + /** + * Resume + * @description Resumes session processor + */ + put: operations["resume"]; + }; + "/api/v1/queue/{queue_id}/processor/pause": { + /** + * Pause + * @description Pauses session processor + */ + put: operations["pause"]; + }; + "/api/v1/queue/{queue_id}/cancel_by_batch_ids": { + /** + * Cancel By Batch Ids + * @description Immediately cancels all queue items from the given batch ids + */ + put: operations["cancel_by_batch_ids"]; + }; + "/api/v1/queue/{queue_id}/clear": { + /** + * Clear + * @description Clears the queue entirely, immediately canceling the currently-executing session + */ + put: operations["clear"]; + }; + "/api/v1/queue/{queue_id}/prune": { + /** + * Prune + * @description Prunes all completed or errored queue items + */ + put: operations["prune"]; + }; + "/api/v1/queue/{queue_id}/current": { + /** + * Get Current Queue Item + * @description Gets the currently execution queue item + */ + get: operations["get_current_queue_item"]; + }; + "/api/v1/queue/{queue_id}/next": { + /** + * Get Next Queue Item + * @description Gets the next queue item, without executing it + */ + get: operations["get_next_queue_item"]; + }; + "/api/v1/queue/{queue_id}/status": { + /** + * Get Queue Status + * @description Gets the status of the session queue + */ + get: operations["get_queue_status"]; + }; + "/api/v1/queue/{queue_id}/b/{batch_id}/status": { + /** + * Get Batch Status + * @description Gets the status of the session queue + */ + get: operations["get_batch_status"]; + }; + "/api/v1/queue/{queue_id}/i/{item_id}": { + /** + * Get Queue Item + * @description Gets a queue item + */ + get: operations["get_queue_item"]; + }; + "/api/v1/queue/{queue_id}/i/{item_id}/cancel": { + /** + * Cancel Queue Item + * @description Deletes a queue item + */ + put: operations["cancel_queue_item"]; + }; }; export type webhooks = Record; @@ -340,6 +455,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -401,7 +522,92 @@ export type components = { * @description An enumeration. * @enum {string} */ - BaseModelType: "sd-1" | "sd-2" | "sdxl" | "sdxl-refiner"; + BaseModelType: "any" | "sd-1" | "sd-2" | "sdxl" | "sdxl-refiner"; + /** Batch */ + Batch: { + /** + * Batch Id + * @description The ID of the batch + */ + batch_id?: string; + /** + * Data + * @description The batch data collection. + */ + data?: components["schemas"]["BatchDatum"][][]; + /** + * Graph + * @description The graph to initialize the session with + */ + graph: components["schemas"]["Graph"]; + /** + * Runs + * @description Int stating how many times to iterate through all possible batch indices + * @default 1 + */ + runs: number; + }; + /** BatchDatum */ + BatchDatum: { + /** + * Node Path + * @description The node into which this batch data collection will be substituted. + */ + node_path: string; + /** + * Field Name + * @description The field into which this batch data collection will be substituted. + */ + field_name: string; + /** + * Items + * @description The list of items to substitute into the node/field. + */ + items?: (string | number)[]; + }; + /** BatchStatus */ + BatchStatus: { + /** + * Queue Id + * @description The ID of the queue + */ + queue_id: string; + /** + * Batch Id + * @description The ID of the batch + */ + batch_id: string; + /** + * Pending + * @description Number of queue items with status 'pending' + */ + pending: number; + /** + * In Progress + * @description Number of queue items with status 'in_progress' + */ + in_progress: number; + /** + * Completed + * @description Number of queue items with status 'complete' + */ + completed: number; + /** + * Failed + * @description Number of queue items with status 'error' + */ + failed: number; + /** + * Canceled + * @description Number of queue items with status 'canceled' + */ + canceled: number; + /** + * Total + * @description Total number of queue items + */ + total: number; + }; /** * Blank Image * @description Creates a blank image and forwards it to the pipeline @@ -423,6 +629,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Width * @description The width of the image @@ -481,6 +693,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents A * @description Latents tensor @@ -584,6 +802,14 @@ export type components = { */ image_names: string[]; }; + /** Body_cancel_by_batch_ids */ + Body_cancel_by_batch_ids: { + /** + * Batch Ids + * @description The list of batch_ids to cancel all queue items for + */ + batch_ids: string[]; + }; /** Body_delete_images_from_list */ Body_delete_images_from_list: { /** @@ -592,6 +818,34 @@ export type components = { */ image_names: string[]; }; + /** Body_enqueue_batch */ + Body_enqueue_batch: { + /** + * Batch + * @description Batch to process + */ + batch: components["schemas"]["Batch"]; + /** + * Prepend + * @description Whether or not to prepend this batch in the queue + * @default false + */ + prepend?: boolean; + }; + /** Body_enqueue_graph */ + Body_enqueue_graph: { + /** + * Graph + * @description The graph to enqueue + */ + graph: components["schemas"]["Graph"]; + /** + * Prepend + * @description Whether or not to prepend this batch in the queue + * @default false + */ + prepend?: boolean; + }; /** Body_import_model */ Body_import_model: { /** @@ -639,6 +893,26 @@ export type components = { */ merge_dest_directory?: string; }; + /** Body_parse_dynamicprompts */ + Body_parse_dynamicprompts: { + /** + * Prompt + * @description The prompt to parse with dynamicprompts + */ + prompt: string; + /** + * Max Prompts + * @description The max number of prompts to generate + * @default 1000 + */ + max_prompts?: number; + /** + * Combinatorial + * @description Whether to use the combinatorial generator + * @default true + */ + combinatorial?: boolean; + }; /** Body_remove_image_from_board */ Body_remove_image_from_board: { /** @@ -700,6 +974,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of boolean values @@ -750,6 +1030,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The boolean value @@ -780,6 +1066,37 @@ export type components = { */ type: "boolean_output"; }; + /** CLIPVisionModelDiffusersConfig */ + CLIPVisionModelDiffusersConfig: { + /** Model Name */ + model_name: string; + base_model: components["schemas"]["BaseModelType"]; + /** + * Model Type + * @enum {string} + */ + model_type: "clip_vision"; + /** Path */ + path: string; + /** Description */ + description?: string; + /** + * Model Format + * @enum {string} + */ + model_format: "diffusers"; + error?: components["schemas"]["ModelError"]; + }; + /** CLIPVisionModelField */ + CLIPVisionModelField: { + /** + * Model Name + * @description Name of the CLIP Vision image encoder model + */ + model_name: string; + /** @description Base model (usually 'Any') */ + base_model: components["schemas"]["BaseModelType"]; + }; /** * CV2 Infill * @description Infills transparent areas of an image using OpenCV Inpainting @@ -801,6 +1118,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -813,6 +1136,17 @@ export type components = { */ type: "infill_cv2"; }; + /** + * CancelByBatchIDsResult + * @description Result of canceling by list of batch ids + */ + CancelByBatchIDsResult: { + /** + * Canceled + * @description Number of queue items canceled + */ + canceled: number; + }; /** * Canny Processor * @description Canny edge detection for ControlNet @@ -834,6 +1168,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -858,6 +1198,17 @@ export type components = { */ high_threshold?: number; }; + /** + * ClearResult + * @description Result of clearing the session queue + */ + ClearResult: { + /** + * Deleted + * @description Number of queue items deleted + */ + deleted: number; + }; /** ClipField */ ClipField: { /** @@ -902,6 +1253,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * CLIP * @description CLIP (tokenizer, text encoder, LoRAs) and skipped layer count @@ -958,6 +1315,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection Item * @description The item to collect (all inputs must be of the same type) @@ -1033,6 +1396,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to color-correct @@ -1108,6 +1477,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Color * @description The color value @@ -1164,6 +1539,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Prompt * @description Prompt to be parsed by Compel to create a conditioning tensor @@ -1203,6 +1584,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of conditioning tensors @@ -1264,6 +1651,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Conditioning * @description Conditioning tensor @@ -1314,6 +1707,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -1422,6 +1821,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The control image @@ -1553,7 +1958,7 @@ export type components = { /** * App Version * @description The version of InvokeAI used to generate this image - * @default 3.1.1rc1 + * @default 3.1.1 */ app_version?: string; /** @@ -1713,6 +2118,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Vae * @description VAE @@ -1747,6 +2158,27 @@ export type components = { */ type: "create_denoise_mask"; }; + /** + * CursorPaginatedResults[SessionQueueItemDTO] + * @description Cursor-paginated results + */ + CursorPaginatedResults_SessionQueueItemDTO_: { + /** + * Limit + * @description Limit of items to get + */ + limit: number; + /** + * Has More + * @description Whether there are more items available + */ + has_more: boolean; + /** + * Items + * @description Items + */ + items: components["schemas"]["SessionQueueItemDTO"][]; + }; /** * OpenCV Inpaint * @description Simple inpaint using opencv. @@ -1768,6 +2200,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to inpaint @@ -1829,6 +2267,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Noise * @description Noise tensor @@ -1870,6 +2314,11 @@ export type components = { * @description ControlNet(s) to apply */ control?: components["schemas"]["ControlField"] | components["schemas"]["ControlField"][]; + /** + * IP-Adapter + * @description IP-Adapter to apply + */ + ip_adapter?: components["schemas"]["IPAdapterField"]; /** * Latents * @description Latents tensor @@ -1956,6 +2405,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -1996,6 +2451,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; /** * Prompt * @description The prompt to parse with dynamicprompts @@ -2020,6 +2481,13 @@ export type components = { */ type: "dynamic_prompt"; }; + /** DynamicPromptsResponse */ + DynamicPromptsResponse: { + /** Prompts */ + prompts: string[]; + /** Error */ + error?: string; + }; /** * Upscale (RealESRGAN) * @description Upscales an image using RealESRGAN. @@ -2041,6 +2509,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The input image @@ -2086,6 +2560,62 @@ export type components = { */ field: string; }; + /** EnqueueBatchResult */ + EnqueueBatchResult: { + /** + * Queue Id + * @description The ID of the queue + */ + queue_id: string; + /** + * Enqueued + * @description The total number of queue items enqueued + */ + enqueued: number; + /** + * Requested + * @description The total number of queue items requested to be enqueued + */ + requested: number; + /** + * Batch + * @description The batch that was enqueued + */ + batch: components["schemas"]["Batch"]; + /** + * Priority + * @description The priority of the enqueued batch + */ + priority: number; + }; + /** EnqueueGraphResult */ + EnqueueGraphResult: { + /** + * Enqueued + * @description The total number of queue items enqueued + */ + enqueued: number; + /** + * Requested + * @description The total number of queue items requested to be enqueued + */ + requested: number; + /** + * Batch + * @description The batch that was enqueued + */ + batch: components["schemas"]["Batch"]; + /** + * Priority + * @description The priority of the enqueued batch + */ + priority: number; + /** + * Queue Item + * @description The queue item that was enqueued + */ + queue_item: components["schemas"]["SessionQueueItemDTO"]; + }; /** * Float Collection Primitive * @description A collection of float primitive values @@ -2107,6 +2637,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of float values @@ -2157,6 +2693,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The float value @@ -2191,6 +2733,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Start * @description The first value of the range @@ -2237,6 +2785,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Operation * @description The operation to perform @@ -2301,6 +2855,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The value to round @@ -2339,7 +2899,7 @@ export type components = { * @description The nodes in this graph */ nodes?: { - [key: string]: components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"]; + [key: string]: components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | 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"]; }; /** * Edges @@ -2382,7 +2942,7 @@ export type components = { * @description The results of node executions */ results: { - [key: string]: components["schemas"]["BooleanOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["SDXLLoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["MetadataAccumulatorOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["ONNXModelLoaderOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]; + [key: string]: components["schemas"]["BooleanOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["SDXLLoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["MetadataAccumulatorOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["ONNXModelLoaderOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["String2Output"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]; }; /** * Errors @@ -2427,6 +2987,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Graph * @description The graph to run @@ -2479,6 +3045,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -2509,6 +3081,154 @@ export type components = { */ scribble?: boolean; }; + /** IPAdapterField */ + IPAdapterField: { + /** + * Image + * @description The IP-Adapter image prompt. + */ + image: components["schemas"]["ImageField"]; + /** + * Ip Adapter Model + * @description The IP-Adapter model to use. + */ + ip_adapter_model: components["schemas"]["IPAdapterModelField"]; + /** + * Image Encoder Model + * @description The name of the CLIP image encoder model. + */ + image_encoder_model: components["schemas"]["CLIPVisionModelField"]; + /** + * Weight + * @description The weight given to the ControlNet + * @default 1 + */ + weight?: number | number[]; + /** + * Begin Step Percent + * @description When the IP-Adapter is first applied (% of total steps) + * @default 0 + */ + begin_step_percent?: number; + /** + * End Step Percent + * @description When the IP-Adapter is last applied (% of total steps) + * @default 1 + */ + end_step_percent?: number; + }; + /** + * IP-Adapter + * @description Collects IP-Adapter info to pass to other nodes. + */ + IPAdapterInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Image + * @description The IP-Adapter image prompt. + */ + image?: components["schemas"]["ImageField"]; + /** + * IP-Adapter Model + * @description The IP-Adapter model. + */ + ip_adapter_model: components["schemas"]["IPAdapterModelField"]; + /** + * Weight + * @description The weight given to the IP-Adapter + * @default 1 + */ + weight?: number | number[]; + /** + * Begin Step Percent + * @description When the IP-Adapter is first applied (% of total steps) + * @default 0 + */ + begin_step_percent?: number; + /** + * End Step Percent + * @description When the IP-Adapter is last applied (% of total steps) + * @default 1 + */ + end_step_percent?: number; + /** + * Type + * @default ip_adapter + * @enum {string} + */ + type: "ip_adapter"; + }; + /** IPAdapterModelField */ + IPAdapterModelField: { + /** + * Model Name + * @description Name of the IP-Adapter model + */ + model_name: string; + /** @description Base model */ + base_model: components["schemas"]["BaseModelType"]; + }; + /** IPAdapterModelInvokeAIConfig */ + IPAdapterModelInvokeAIConfig: { + /** Model Name */ + model_name: string; + base_model: components["schemas"]["BaseModelType"]; + /** + * Model Type + * @enum {string} + */ + model_type: "ip_adapter"; + /** Path */ + path: string; + /** Description */ + description?: string; + /** + * Model Format + * @enum {string} + */ + model_format: "invokeai"; + error?: components["schemas"]["ModelError"]; + }; + /** + * IPAdapterOutput + * @description Base class for all invocation outputs. + * + * All invocation outputs must use the `@invocation_output` decorator to provide their unique type. + */ + IPAdapterOutput: { + /** + * IP-Adapter + * @description IP-Adapter to apply + */ + ip_adapter: components["schemas"]["IPAdapterField"]; + /** + * Type + * @default ip_adapter_output + * @enum {string} + */ + type: "ip_adapter_output"; + }; /** * Blur Image * @description Blurs an image @@ -2530,6 +3250,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to blur @@ -2588,6 +3314,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to get the channel from @@ -2628,6 +3360,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to adjust @@ -2679,6 +3417,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to adjust @@ -2724,6 +3468,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of image values @@ -2774,6 +3524,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to convert @@ -2814,6 +3570,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to crop @@ -2957,6 +3719,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to adjust @@ -2996,6 +3764,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to lerp @@ -3041,6 +3815,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to load @@ -3074,6 +3854,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to lerp @@ -3135,6 +3921,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image1 * @description The first image to multiply @@ -3173,6 +3965,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Metadata * @description Optional core metadata to be written to image @@ -3238,6 +4036,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Base Image * @description The base image @@ -3265,6 +4069,12 @@ export type components = { * @default 0 */ y?: number; + /** + * Crop + * @description Crop to base image dimensions + * @default false + */ + crop?: boolean; /** * Type * @default img_paste @@ -3293,6 +4103,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -3355,6 +4171,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to resize @@ -3412,6 +4234,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to scale @@ -3458,6 +4286,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to encode @@ -3529,6 +4363,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to check @@ -3581,6 +4421,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3625,6 +4471,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3671,6 +4523,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3715,6 +4573,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of integer values @@ -3765,6 +4629,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The integer value @@ -3799,6 +4669,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Operation * @description The operation to perform @@ -3863,6 +4739,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The list of items to iterate over @@ -3919,6 +4801,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3952,6 +4840,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of latents tensors @@ -4018,6 +4912,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description The latents tensor @@ -4078,6 +4978,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Tiled * @description Processing using overlapping tiles (reduce memory consumption) @@ -4133,6 +5039,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4196,6 +5108,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4241,6 +5159,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4369,6 +5293,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * LoRA * @description LoRA model to load @@ -4455,6 +5385,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description Main model (UNet, VAE, CLIP) to load @@ -4488,6 +5424,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Mask1 * @description The first mask to combine @@ -4526,6 +5468,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to apply the mask to @@ -4579,6 +5527,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to create the mask from @@ -4618,6 +5572,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4669,6 +5629,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Generation Mode * @description The generation mode that output this image @@ -4844,6 +5810,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4889,6 +5861,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4977,7 +5955,7 @@ export type components = { * @description An enumeration. * @enum {string} */ - ModelType: "onnx" | "main" | "vae" | "lora" | "controlnet" | "embedding"; + ModelType: "onnx" | "main" | "vae" | "lora" | "controlnet" | "embedding" | "ip_adapter" | "clip_vision"; /** * ModelVariantType * @description An enumeration. @@ -4987,7 +5965,7 @@ export type components = { /** ModelsList */ ModelsList: { /** Models */ - models: (components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"])[]; + models: (components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"])[]; }; /** * Multiply Integers @@ -5010,6 +5988,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -5029,6 +6013,24 @@ export type components = { */ type: "mul"; }; + /** NodeFieldValue */ + NodeFieldValue: { + /** + * Node Path + * @description The node into which this batch data item will be substituted. + */ + node_path: string; + /** + * Field Name + * @description The field into which this batch data item will be substituted. + */ + field_name: string; + /** + * Value + * @description The value to substitute into the node/field. + */ + value: string | number; + }; /** * Noise * @description Generates latent noise. @@ -5050,6 +6052,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Seed * @description Seed for random number generation @@ -5128,6 +6136,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -5173,6 +6187,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description Denoised latents tensor @@ -5251,6 +6271,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Prompt * @description Raw prompt text (no parsing) @@ -5337,6 +6363,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Positive Conditioning * @description Positive conditioning tensor @@ -5483,6 +6515,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description ONNX Main model (UNet, VAE, CLIP) to load @@ -5516,6 +6554,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -5598,6 +6642,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -5655,6 +6705,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * File Path * @description Path to prompt text file @@ -5689,6 +6745,17 @@ export type components = { */ type: "prompt_from_file"; }; + /** + * PruneResult + * @description Result of pruning the session queue + */ + PruneResult: { + /** + * Deleted + * @description Number of queue items deleted + */ + deleted: number; + }; /** * Random Integer * @description Outputs a single random integer. @@ -5710,6 +6777,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; /** * Low * @description The inclusive low value @@ -5750,6 +6823,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; /** * Low * @description The inclusive low value @@ -5801,6 +6880,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Start * @description The start of the range @@ -5828,7 +6913,7 @@ export type components = { }; /** * Integer Range of Size - * @description Creates a range from start to start + size with step + * @description Creates a range from start to start + (size * step) incremented by step */ RangeOfSizeInvocation: { /** @@ -5847,6 +6932,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Start * @description The start of the range @@ -5901,6 +6992,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description Latents tensor @@ -5967,6 +7064,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The float value @@ -6007,6 +7110,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Prompt * @description Prompt to be parsed by Compel to create a conditioning tensor @@ -6087,6 +7196,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * LoRA * @description LoRA model to load @@ -6168,6 +7283,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description SDXL Main model (UNet, VAE, CLIP1, CLIP2) to load @@ -6233,6 +7354,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Style * @description Prompt to be parsed by Compel to create a conditioning tensor @@ -6298,6 +7425,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description SDXL Refiner Main Modde (UNet, VAE, CLIP2) to load @@ -6337,6 +7470,50 @@ export type components = { */ type: "sdxl_refiner_model_loader_output"; }; + /** + * Save Image + * @description Saves an image. Unlike an image primitive, this invocation stores a copy of the image. + */ + SaveImageInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; + /** + * Image + * @description The image to load + */ + image?: components["schemas"]["ImageField"]; + /** + * Metadata + * @description Optional core metadata to be written to image + */ + metadata?: components["schemas"]["CoreMetadata"]; + /** + * Type + * @default save_image + * @enum {string} + */ + type: "save_image"; + }; /** * Scale Latents * @description Scales latents by a given factor. @@ -6358,6 +7535,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description Latents tensor @@ -6409,6 +7592,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Scheduler * @description Scheduler to use during inference @@ -6470,6 +7659,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * UNet * @description UNet (scheduler, LoRAs) @@ -6542,6 +7737,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -6554,6 +7755,223 @@ export type components = { */ type: "segment_anything_processor"; }; + /** SessionProcessorStatus */ + SessionProcessorStatus: { + /** + * Is Started + * @description Whether the session processor is started + */ + is_started: boolean; + /** + * Is Processing + * @description Whether a session is being processed + */ + is_processing: boolean; + }; + /** + * SessionQueueAndProcessorStatus + * @description The overall status of session queue and processor + */ + SessionQueueAndProcessorStatus: { + queue: components["schemas"]["SessionQueueStatus"]; + processor: components["schemas"]["SessionProcessorStatus"]; + }; + /** + * SessionQueueItem + * @description Session queue item without the full graph. Used for serialization. + */ + SessionQueueItem: { + /** + * Item Id + * @description The identifier of the session queue item + */ + item_id: number; + /** + * Status + * @description The status of this queue item + * @default pending + * @enum {string} + */ + status: "pending" | "in_progress" | "completed" | "failed" | "canceled"; + /** + * Priority + * @description The priority of this queue item + * @default 0 + */ + priority: number; + /** + * Batch Id + * @description The ID of the batch associated with this queue item + */ + batch_id: string; + /** + * Session Id + * @description The ID of the session associated with this queue item. The session doesn't exist in graph_executions until the queue item is executed. + */ + session_id: string; + /** + * Field Values + * @description The field values that were used for this queue item + */ + field_values?: components["schemas"]["NodeFieldValue"][]; + /** + * Queue Id + * @description The id of the queue with which this item is associated + */ + queue_id: string; + /** + * Error + * @description The error message if this queue item errored + */ + error?: string; + /** + * Created At + * @description When this queue item was created + */ + created_at: string; + /** + * Updated At + * @description When this queue item was updated + */ + updated_at: string; + /** + * Started At + * @description When this queue item was started + */ + started_at?: string; + /** + * Completed At + * @description When this queue item was completed + */ + completed_at?: string; + /** + * Session + * @description The fully-populated session to be executed + */ + session: components["schemas"]["GraphExecutionState"]; + }; + /** + * SessionQueueItemDTO + * @description Session queue item without the full graph. Used for serialization. + */ + SessionQueueItemDTO: { + /** + * Item Id + * @description The identifier of the session queue item + */ + item_id: number; + /** + * Status + * @description The status of this queue item + * @default pending + * @enum {string} + */ + status: "pending" | "in_progress" | "completed" | "failed" | "canceled"; + /** + * Priority + * @description The priority of this queue item + * @default 0 + */ + priority: number; + /** + * Batch Id + * @description The ID of the batch associated with this queue item + */ + batch_id: string; + /** + * Session Id + * @description The ID of the session associated with this queue item. The session doesn't exist in graph_executions until the queue item is executed. + */ + session_id: string; + /** + * Field Values + * @description The field values that were used for this queue item + */ + field_values?: components["schemas"]["NodeFieldValue"][]; + /** + * Queue Id + * @description The id of the queue with which this item is associated + */ + queue_id: string; + /** + * Error + * @description The error message if this queue item errored + */ + error?: string; + /** + * Created At + * @description When this queue item was created + */ + created_at: string; + /** + * Updated At + * @description When this queue item was updated + */ + updated_at: string; + /** + * Started At + * @description When this queue item was started + */ + started_at?: string; + /** + * Completed At + * @description When this queue item was completed + */ + completed_at?: string; + }; + /** SessionQueueStatus */ + SessionQueueStatus: { + /** + * Queue Id + * @description The ID of the queue + */ + queue_id: string; + /** + * Item Id + * @description The current queue item id + */ + item_id?: number; + /** + * Batch Id + * @description The current queue item's batch id + */ + batch_id?: string; + /** + * Session Id + * @description The current queue item's session id + */ + session_id?: string; + /** + * Pending + * @description Number of queue items with status 'pending' + */ + pending: number; + /** + * In Progress + * @description Number of queue items with status 'in_progress' + */ + in_progress: number; + /** + * Completed + * @description Number of queue items with status 'complete' + */ + completed: number; + /** + * Failed + * @description Number of queue items with status 'error' + */ + failed: number; + /** + * Canceled + * @description Number of queue items with status 'canceled' + */ + canceled: number; + /** + * Total + * @description Total number of queue items + */ + total: number; + }; /** * Show Image * @description Displays a provided image using the OS image viewer, and passes it forward in the pipeline. @@ -6575,6 +7993,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to show @@ -6758,6 +8182,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Easing * @description The easing function to use @@ -6824,6 +8254,28 @@ export type components = { */ type: "step_param_easing"; }; + /** + * String2Output + * @description Base class for invocations that output two strings + */ + String2Output: { + /** + * String 1 + * @description string 1 + */ + string_1: string; + /** + * String 2 + * @description string 2 + */ + string_2: string; + /** + * Type + * @default string_2_output + * @enum {string} + */ + type: "string_2_output"; + }; /** * String Collection Primitive * @description A collection of string primitive values @@ -6845,6 +8297,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of string values @@ -6895,6 +8353,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The string value @@ -6908,6 +8372,104 @@ export type components = { */ type: "string"; }; + /** + * String Join + * @description Joins string left to string right + */ + StringJoinInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String Left + * @description String Left + * @default + */ + string_left?: string; + /** + * String Right + * @description String Right + * @default + */ + string_right?: string; + /** + * Type + * @default string_join + * @enum {string} + */ + type: "string_join"; + }; + /** + * String Join Three + * @description Joins string left to string middle to string right + */ + StringJoinThreeInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String Left + * @description String Left + * @default + */ + string_left?: string; + /** + * String Middle + * @description String Middle + * @default + */ + string_middle?: string; + /** + * String Right + * @description String Right + * @default + */ + string_right?: string; + /** + * Type + * @default string_join_three + * @enum {string} + */ + type: "string_join_three"; + }; /** * StringOutput * @description Base class for nodes that output a single string @@ -6925,6 +8487,172 @@ export type components = { */ type: "string_output"; }; + /** + * StringPosNegOutput + * @description Base class for invocations that output a positive and negative string + */ + StringPosNegOutput: { + /** + * Positive String + * @description Positive string + */ + positive_string: string; + /** + * Negative String + * @description Negative string + */ + negative_string: string; + /** + * Type + * @default string_pos_neg_output + * @enum {string} + */ + type: "string_pos_neg_output"; + }; + /** + * String Replace + * @description Replaces the search string with the replace string + */ + StringReplaceInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String + * @description String to work on + * @default + */ + string?: string; + /** + * Search String + * @description String to search for + * @default + */ + search_string?: string; + /** + * Replace String + * @description String to replace the search + * @default + */ + replace_string?: string; + /** + * Use Regex + * @description Use search string as a regex expression (non regex is case insensitive) + * @default false + */ + use_regex?: boolean; + /** + * Type + * @default string_replace + * @enum {string} + */ + type: "string_replace"; + }; + /** + * String Split + * @description Splits string into two strings, based on the first occurance of the delimiter. The delimiter will be removed from the string + */ + StringSplitInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String + * @description String to split + * @default + */ + string?: string; + /** + * Delimiter + * @description Delimiter to spilt with. blank will split on the first whitespace + * @default + */ + delimiter?: string; + /** + * Type + * @default string_split + * @enum {string} + */ + type: "string_split"; + }; + /** + * String Split Negative + * @description Splits string into two strings, inside [] goes into negative string everthing else goes into positive string. Each [ and ] character is replaced with a space + */ + StringSplitNegInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String + * @description String to split + * @default + */ + string?: string; + /** + * Type + * @default string_split_neg + * @enum {string} + */ + type: "string_split_neg"; + }; /** * SubModelType * @description An enumeration. @@ -6952,6 +8680,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -7010,6 +8744,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -7111,6 +8851,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * VAE * @description VAE model to load @@ -7193,6 +8939,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -7247,7 +8999,7 @@ export type components = { * If a field should be provided a data type that does not exactly match the python type of the field, use this to provide the type that should be used instead. See the node development docs for detail on adding a new field type, which involves client-side changes. * @enum {string} */ - UIType: "boolean" | "ColorField" | "ConditioningField" | "ControlField" | "float" | "ImageField" | "integer" | "LatentsField" | "string" | "BooleanCollection" | "ColorCollection" | "ConditioningCollection" | "ControlCollection" | "FloatCollection" | "ImageCollection" | "IntegerCollection" | "LatentsCollection" | "StringCollection" | "BooleanPolymorphic" | "ColorPolymorphic" | "ConditioningPolymorphic" | "ControlPolymorphic" | "FloatPolymorphic" | "ImagePolymorphic" | "IntegerPolymorphic" | "LatentsPolymorphic" | "StringPolymorphic" | "MainModelField" | "SDXLMainModelField" | "SDXLRefinerModelField" | "ONNXModelField" | "VaeModelField" | "LoRAModelField" | "ControlNetModelField" | "UNetField" | "VaeField" | "ClipField" | "Collection" | "CollectionItem" | "enum" | "Scheduler" | "WorkflowField" | "IsIntermediate" | "MetadataField"; + UIType: "boolean" | "ColorField" | "ConditioningField" | "ControlField" | "float" | "ImageField" | "integer" | "LatentsField" | "string" | "BooleanCollection" | "ColorCollection" | "ConditioningCollection" | "ControlCollection" | "FloatCollection" | "ImageCollection" | "IntegerCollection" | "LatentsCollection" | "StringCollection" | "BooleanPolymorphic" | "ColorPolymorphic" | "ConditioningPolymorphic" | "ControlPolymorphic" | "FloatPolymorphic" | "ImagePolymorphic" | "IntegerPolymorphic" | "LatentsPolymorphic" | "StringPolymorphic" | "MainModelField" | "SDXLMainModelField" | "SDXLRefinerModelField" | "ONNXModelField" | "VaeModelField" | "LoRAModelField" | "ControlNetModelField" | "IPAdapterModelField" | "UNetField" | "VaeField" | "ClipField" | "Collection" | "CollectionItem" | "enum" | "Scheduler" | "WorkflowField" | "IsIntermediate" | "MetadataField"; /** * UIComponent * @description The type of UI component to use for a field, used to override the default components, which are inferred from the field type. @@ -7291,17 +9043,11 @@ export type components = { ui_order?: number; }; /** - * StableDiffusion1ModelFormat + * IPAdapterModelFormat * @description An enumeration. * @enum {string} */ - StableDiffusion1ModelFormat: "checkpoint" | "diffusers"; - /** - * StableDiffusionOnnxModelFormat - * @description An enumeration. - * @enum {string} - */ - StableDiffusionOnnxModelFormat: "olive" | "onnx"; + IPAdapterModelFormat: "invokeai"; /** * ControlNetModelFormat * @description An enumeration. @@ -7309,17 +9055,35 @@ export type components = { */ ControlNetModelFormat: "checkpoint" | "diffusers"; /** - * StableDiffusionXLModelFormat + * StableDiffusionOnnxModelFormat * @description An enumeration. * @enum {string} */ - StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; + StableDiffusionOnnxModelFormat: "olive" | "onnx"; /** * StableDiffusion2ModelFormat * @description An enumeration. * @enum {string} */ StableDiffusion2ModelFormat: "checkpoint" | "diffusers"; + /** + * StableDiffusion1ModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusion1ModelFormat: "checkpoint" | "diffusers"; + /** + * CLIPVisionModelFormat + * @description An enumeration. + * @enum {string} + */ + CLIPVisionModelFormat: "diffusers"; + /** + * StableDiffusionXLModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; }; responses: never; parameters: never; @@ -7336,6 +9100,7 @@ export type operations = { /** * List Sessions + * @deprecated * @description Gets a list of sessions, optionally searching */ list_sessions: { @@ -7366,9 +9131,16 @@ export type operations = { }; /** * Create Session + * @deprecated * @description Creates a new session, optionally initializing it with an invocation graph */ create_session: { + parameters: { + query?: { + /** @description The id of the queue to associate the session with */ + queue_id?: string; + }; + }; requestBody?: { content: { "application/json": components["schemas"]["Graph"]; @@ -7395,6 +9167,7 @@ export type operations = { }; /** * Get Session + * @deprecated * @description Gets a session */ get_session: { @@ -7425,6 +9198,7 @@ export type operations = { }; /** * Add Node + * @deprecated * @description Adds a node to the graph */ add_node: { @@ -7436,7 +9210,7 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"]; + "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | 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"]; }; }; responses: { @@ -7464,6 +9238,7 @@ export type operations = { }; /** * Update Node + * @deprecated * @description Updates a node in the graph and removes all linked edges */ update_node: { @@ -7477,7 +9252,7 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"]; + "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | 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"]; }; }; responses: { @@ -7505,6 +9280,7 @@ export type operations = { }; /** * Delete Node + * @deprecated * @description Deletes a node in the graph and removes all linked edges */ delete_node: { @@ -7541,6 +9317,7 @@ export type operations = { }; /** * Add Edge + * @deprecated * @description Adds an edge to the graph */ add_edge: { @@ -7580,6 +9357,7 @@ export type operations = { }; /** * Delete Edge + * @deprecated * @description Deletes an edge from the graph */ delete_edge: { @@ -7622,11 +9400,14 @@ export type operations = { }; /** * Invoke Session + * @deprecated * @description Invokes a session */ invoke_session: { parameters: { - query?: { + query: { + /** @description The id of the queue to associate the session with */ + queue_id: string; /** @description Whether or not to invoke all remaining invocations */ all?: boolean; }; @@ -7664,6 +9445,7 @@ export type operations = { }; /** * Cancel Session Invoke + * @deprecated * @description Invokes a session */ cancel_session_invoke: { @@ -7692,6 +9474,31 @@ export type operations = { }; }; }; + /** + * Parse Dynamicprompts + * @description Creates a batch process + */ + parse_dynamicprompts: { + requestBody: { + content: { + "application/json": components["schemas"]["Body_parse_dynamicprompts"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["DynamicPromptsResponse"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; /** * List Models * @description Gets a list of models @@ -7769,14 +9576,14 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; responses: { /** @description The model was updated successfully */ 200: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Bad request */ @@ -7813,7 +9620,7 @@ export type operations = { /** @description The model imported successfully */ 201: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description The model could not be found */ @@ -7847,14 +9654,14 @@ export type operations = { add_model: { requestBody: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; responses: { /** @description The model added successfully */ 201: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description The model could not be found */ @@ -7900,7 +9707,7 @@ export type operations = { /** @description Model converted successfully */ 200: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Bad request */ @@ -7995,7 +9802,7 @@ export type operations = { /** @description Model converted successfully */ 200: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Incompatible models */ @@ -8698,4 +10505,411 @@ export type operations = { }; }; }; + /** + * Enqueue Graph + * @description Enqueues a graph for single execution. + */ + enqueue_graph: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Body_enqueue_graph"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Created */ + 201: { + content: { + "application/json": components["schemas"]["EnqueueGraphResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Enqueue Batch + * @description Processes a batch and enqueues the output graphs for execution. + */ + enqueue_batch: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Body_enqueue_batch"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Created */ + 201: { + content: { + "application/json": components["schemas"]["EnqueueBatchResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * List Queue Items + * @description Gets all queue items (without graphs) + */ + list_queue_items: { + parameters: { + query?: { + /** @description The number of items to fetch */ + limit?: number; + /** @description The status of items to fetch */ + status?: "pending" | "in_progress" | "completed" | "failed" | "canceled"; + /** @description The pagination cursor */ + cursor?: number; + /** @description The pagination cursor priority */ + priority?: number; + }; + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["CursorPaginatedResults_SessionQueueItemDTO_"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Resume + * @description Resumes session processor + */ + resume: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionProcessorStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Pause + * @description Pauses session processor + */ + pause: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionProcessorStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Cancel By Batch Ids + * @description Immediately cancels all queue items from the given batch ids + */ + cancel_by_batch_ids: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Body_cancel_by_batch_ids"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["CancelByBatchIDsResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Clear + * @description Clears the queue entirely, immediately canceling the currently-executing session + */ + clear: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["ClearResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Prune + * @description Prunes all completed or errored queue items + */ + prune: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["PruneResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Current Queue Item + * @description Gets the currently execution queue item + */ + get_current_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Next Queue Item + * @description Gets the next queue item, without executing it + */ + get_next_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Queue Status + * @description Gets the status of the session queue + */ + get_queue_status: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueAndProcessorStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Batch Status + * @description Gets the status of the session queue + */ + get_batch_status: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + /** @description The batch to get the status of */ + batch_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["BatchStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Queue Item + * @description Gets a queue item + */ + get_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + /** @description The queue item to get */ + item_id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Cancel Queue Item + * @description Deletes a queue item + */ + cancel_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + /** @description The queue item to cancel */ + item_id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; }; diff --git a/invokeai/frontend/web/src/services/api/thunks/session.ts b/invokeai/frontend/web/src/services/api/thunks/session.ts index c3016be25f..2404329fac 100644 --- a/invokeai/frontend/web/src/services/api/thunks/session.ts +++ b/invokeai/frontend/web/src/services/api/thunks/session.ts @@ -1,4 +1,5 @@ import { createAsyncThunk, isAnyOf } from '@reduxjs/toolkit'; +import { $queueId } from 'features/queue/store/nanoStores'; import { isObject } from 'lodash-es'; import { $client } from 'services/api/client'; import { paths } from 'services/api/schema'; @@ -33,6 +34,7 @@ export const sessionCreated = createAsyncThunk< const { POST } = $client.get(); const { data, error, response } = await POST('/api/v1/sessions/', { body: graph, + params: { query: { queue_id: $queueId.get() } }, }); if (error) { @@ -76,7 +78,10 @@ export const sessionInvoked = createAsyncThunk< const { error, response } = await PUT( '/api/v1/sessions/{session_id}/invoke', { - params: { query: { all: true }, path: { session_id } }, + params: { + query: { queue_id: $queueId.get(), all: true }, + path: { session_id }, + }, } ); diff --git a/invokeai/frontend/web/src/services/api/types.ts b/invokeai/frontend/web/src/services/api/types.ts index bae60ff701..669d357527 100644 --- a/invokeai/frontend/web/src/services/api/types.ts +++ b/invokeai/frontend/web/src/services/api/types.ts @@ -22,6 +22,12 @@ export type UpdateBoardArg = changes: paths['/api/v1/boards/{board_id}']['patch']['requestBody']['content']['application/json']; }; +export type BatchConfig = + paths['/api/v1/queue/{queue_id}/enqueue_batch']['post']['requestBody']['content']['application/json']; + +export type EnqueueBatchResult = components['schemas']['EnqueueBatchResult']; +export type EnqueueGraphResult = components['schemas']['EnqueueGraphResult']; + /** * This is an unsafe type; the object inside is not guaranteed to be valid. */ @@ -60,8 +66,10 @@ export type OnnxModelField = s['OnnxModelField']; export type VAEModelField = s['VAEModelField']; export type LoRAModelField = s['LoRAModelField']; export type ControlNetModelField = s['ControlNetModelField']; +export type IPAdapterModelField = s['IPAdapterModelField']; export type ModelsList = s['ModelsList']; export type ControlField = s['ControlField']; +export type IPAdapterField = s['IPAdapterField']; // Model Configs export type LoRAModelConfig = s['LoRAModelConfig']; @@ -73,6 +81,8 @@ export type ControlNetModelDiffusersConfig = export type ControlNetModelConfig = | ControlNetModelCheckpointConfig | ControlNetModelDiffusersConfig; +export type IPAdapterModelInvokeAIConfig = s['IPAdapterModelInvokeAIConfig']; +export type IPAdapterModelConfig = IPAdapterModelInvokeAIConfig; export type TextualInversionModelConfig = s['TextualInversionModelConfig']; export type DiffusersModelConfig = | s['StableDiffusion1ModelDiffusersConfig'] @@ -88,6 +98,7 @@ export type AnyModelConfig = | LoRAModelConfig | VaeModelConfig | ControlNetModelConfig + | IPAdapterModelConfig | TextualInversionModelConfig | MainModelConfig | OnnxModelConfig; @@ -99,6 +110,9 @@ export type ImportModelConfig = s['Body_import_model']; export type Graph = s['Graph']; export type Edge = s['Edge']; export type GraphExecutionState = s['GraphExecutionState']; +export type Batch = s['Batch']; +export type SessionQueueItemDTO = s['SessionQueueItemDTO']; +export type SessionQueueItem = s['SessionQueueItem']; // General nodes export type CollectInvocation = s['CollectInvocation']; @@ -132,9 +146,11 @@ export type DivideInvocation = s['DivideInvocation']; export type ImageNSFWBlurInvocation = s['ImageNSFWBlurInvocation']; export type ImageWatermarkInvocation = s['ImageWatermarkInvocation']; export type SeamlessModeInvocation = s['SeamlessModeInvocation']; +export type SaveImageInvocation = s['SaveImageInvocation']; // ControlNet Nodes export type ControlNetInvocation = s['ControlNetInvocation']; +export type IPAdapterInvocation = s['IPAdapterInvocation']; export type CannyImageProcessorInvocation = s['CannyImageProcessorInvocation']; export type ContentShuffleImageProcessorInvocation = s['ContentShuffleImageProcessorInvocation']; @@ -173,6 +189,10 @@ export type ControlNetAction = { controlNetId: string; }; +export type IPAdapterAction = { + type: 'SET_IP_ADAPTER_IMAGE'; +}; + export type InitialImageAction = { type: 'SET_INITIAL_IMAGE'; }; @@ -198,6 +218,7 @@ export type AddToBatchAction = { export type PostUploadAction = | ControlNetAction + | IPAdapterAction | InitialImageAction | NodesAction | CanvasInitialImageAction diff --git a/invokeai/frontend/web/src/services/events/actions.ts b/invokeai/frontend/web/src/services/events/actions.ts index 35ebb725cb..d9f838bf70 100644 --- a/invokeai/frontend/web/src/services/events/actions.ts +++ b/invokeai/frontend/web/src/services/events/actions.ts @@ -8,6 +8,7 @@ import { InvocationStartedEvent, ModelLoadCompletedEvent, ModelLoadStartedEvent, + QueueItemStatusChangedEvent, SessionRetrievalErrorEvent, } from 'services/events/types'; @@ -41,35 +42,35 @@ export const appSocketDisconnected = createAction( ); /** - * Socket.IO Subscribed + * Socket.IO Subscribed Session * * Do not use. Only for use in middleware. */ -export const socketSubscribed = createAction<{ +export const socketSubscribedSession = createAction<{ sessionId: string; -}>('socket/socketSubscribed'); +}>('socket/socketSubscribedSession'); /** - * App-level Socket.IO Subscribed + * App-level Socket.IO Subscribed Session */ -export const appSocketSubscribed = createAction<{ +export const appSocketSubscribedSession = createAction<{ sessionId: string; -}>('socket/appSocketSubscribed'); +}>('socket/appSocketSubscribedSession'); /** - * Socket.IO Unsubscribed + * Socket.IO Unsubscribed Session * * Do not use. Only for use in middleware. */ -export const socketUnsubscribed = createAction<{ sessionId: string }>( - 'socket/socketUnsubscribed' +export const socketUnsubscribedSession = createAction<{ sessionId: string }>( + 'socket/socketUnsubscribedSession' ); /** - * App-level Socket.IO Unsubscribed + * App-level Socket.IO Unsubscribed Session */ -export const appSocketUnsubscribed = createAction<{ sessionId: string }>( - 'socket/appSocketUnsubscribed' +export const appSocketUnsubscribedSession = createAction<{ sessionId: string }>( + 'socket/appSocketUnsubscribedSession' ); /** @@ -215,3 +216,19 @@ export const socketInvocationRetrievalError = createAction<{ export const appSocketInvocationRetrievalError = createAction<{ data: InvocationRetrievalErrorEvent; }>('socket/appSocketInvocationRetrievalError'); + +/** + * Socket.IO Quueue Item Status Changed + * + * Do not use. Only for use in middleware. + */ +export const socketQueueItemStatusChanged = createAction<{ + data: QueueItemStatusChangedEvent; +}>('socket/socketQueueItemStatusChanged'); + +/** + * App-level Quueue Item Status Changed + */ +export const appSocketQueueItemStatusChanged = createAction<{ + data: QueueItemStatusChangedEvent; +}>('socket/appSocketQueueItemStatusChanged'); diff --git a/invokeai/frontend/web/src/services/events/middleware.ts b/invokeai/frontend/web/src/services/events/middleware.ts index 56992be672..ce35cf141e 100644 --- a/invokeai/frontend/web/src/services/events/middleware.ts +++ b/invokeai/frontend/web/src/services/events/middleware.ts @@ -1,14 +1,12 @@ import { Middleware, MiddlewareAPI } from '@reduxjs/toolkit'; import { AppThunkDispatch, RootState } from 'app/store/store'; import { $authToken, $baseUrl } from 'services/api/client'; -import { sessionCreated } from 'services/api/thunks/session'; import { ClientToServerEvents, ServerToClientEvents, } from 'services/events/types'; import { setEventListeners } from 'services/events/util/setEventListeners'; import { Socket, io } from 'socket.io-client'; -import { socketSubscribed, socketUnsubscribed } from './actions'; export const socketMiddleware = () => { let areListenersSet = false; @@ -48,8 +46,6 @@ export const socketMiddleware = () => { (storeApi: MiddlewareAPI) => (next) => (action) => { - const { dispatch, getState } = storeApi; - // Set listeners for `connect` and `disconnect` events once // Must happen in middleware to get access to `dispatch` if (!areListenersSet) { @@ -60,31 +56,6 @@ export const socketMiddleware = () => { socket.connect(); } - if (sessionCreated.fulfilled.match(action)) { - const sessionId = action.payload.id; - const oldSessionId = getState().system.sessionId; - - if (oldSessionId) { - socket.emit('unsubscribe', { - session: oldSessionId, - }); - - dispatch( - socketUnsubscribed({ - sessionId: oldSessionId, - }) - ); - } - - socket.emit('subscribe', { session: sessionId }); - - dispatch( - socketSubscribed({ - sessionId: sessionId, - }) - ); - } - next(action); }; diff --git a/invokeai/frontend/web/src/services/events/types.ts b/invokeai/frontend/web/src/services/events/types.ts index 37f5f24eac..47a3d83eba 100644 --- a/invokeai/frontend/web/src/services/events/types.ts +++ b/invokeai/frontend/web/src/services/events/types.ts @@ -1,3 +1,4 @@ +import { components } from 'services/api/schema'; import { O } from 'ts-toolbelt'; import { BaseModelType, @@ -32,6 +33,9 @@ export type BaseNode = { }; export type ModelLoadStartedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; model_name: string; base_model: BaseModelType; @@ -40,6 +44,9 @@ export type ModelLoadStartedEvent = { }; export type ModelLoadCompletedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; model_name: string; base_model: BaseModelType; @@ -56,11 +63,15 @@ export type ModelLoadCompletedEvent = { * @example socket.on('generator_progress', (data: GeneratorProgressEvent) => { ... } */ export type GeneratorProgressEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; - node: BaseNode; + node_id: string; source_node_id: string; progress_image?: ProgressImage; step: number; + order: number; total_steps: number; }; @@ -72,6 +83,9 @@ export type GeneratorProgressEvent = { * @example socket.on('invocation_complete', (data: InvocationCompleteEvent) => { ... } */ export type InvocationCompleteEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node: BaseNode; source_node_id: string; @@ -84,6 +98,9 @@ export type InvocationCompleteEvent = { * @example socket.on('invocation_error', (data: InvocationErrorEvent) => { ... } */ export type InvocationErrorEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node: BaseNode; source_node_id: string; @@ -97,6 +114,9 @@ export type InvocationErrorEvent = { * @example socket.on('invocation_started', (data: InvocationStartedEvent) => { ... } */ export type InvocationStartedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node: BaseNode; source_node_id: string; @@ -108,6 +128,9 @@ export type InvocationStartedEvent = { * @example socket.on('graph_execution_state_complete', (data: GraphExecutionStateCompleteEvent) => { ... } */ export type GraphExecutionStateCompleteEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; }; @@ -117,6 +140,9 @@ export type GraphExecutionStateCompleteEvent = { * @example socket.on('session_retrieval_error', (data: SessionRetrievalErrorEvent) => { ... } */ export type SessionRetrievalErrorEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; error_type: string; error: string; @@ -128,18 +154,40 @@ export type SessionRetrievalErrorEvent = { * @example socket.on('invocation_retrieval_error', (data: InvocationRetrievalErrorEvent) => { ... } */ export type InvocationRetrievalErrorEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node_id: string; error_type: string; error: string; }; -export type ClientEmitSubscribe = { - session: string; +/** + * A `queue_item_status_changed` socket.io event. + * + * @example socket.on('queue_item_status_changed', (data: QueueItemStatusChangedEvent) => { ... } + */ +export type QueueItemStatusChangedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; + session_id: string; + graph_execution_state_id: string; + status: components['schemas']['SessionQueueItemDTO']['status']; + error: string | undefined; + created_at: string; + updated_at: string; + started_at: string | undefined; + completed_at: string | undefined; }; -export type ClientEmitUnsubscribe = { - session: string; +export type ClientEmitSubscribeQueue = { + queue_id: string; +}; + +export type ClientEmitUnsubscribeQueue = { + queue_id: string; }; export type ServerToClientEvents = { @@ -154,11 +202,12 @@ export type ServerToClientEvents = { model_load_completed: (payload: ModelLoadCompletedEvent) => void; session_retrieval_error: (payload: SessionRetrievalErrorEvent) => void; invocation_retrieval_error: (payload: InvocationRetrievalErrorEvent) => void; + queue_item_status_changed: (payload: QueueItemStatusChangedEvent) => void; }; export type ClientToServerEvents = { connect: () => void; disconnect: () => void; - subscribe: (payload: ClientEmitSubscribe) => void; - unsubscribe: (payload: ClientEmitUnsubscribe) => void; + subscribe_queue: (payload: ClientEmitSubscribeQueue) => void; + unsubscribe_queue: (payload: ClientEmitUnsubscribeQueue) => void; }; diff --git a/invokeai/frontend/web/src/services/events/util/setEventListeners.ts b/invokeai/frontend/web/src/services/events/util/setEventListeners.ts index 9ebb7ffbff..0f4d21d2e1 100644 --- a/invokeai/frontend/web/src/services/events/util/setEventListeners.ts +++ b/invokeai/frontend/web/src/services/events/util/setEventListeners.ts @@ -1,6 +1,7 @@ import { MiddlewareAPI } from '@reduxjs/toolkit'; import { logger } from 'app/logging/logger'; import { AppDispatch, RootState } from 'app/store/store'; +import { $queueId } from 'features/queue/store/nanoStores'; import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { Socket } from 'socket.io-client'; @@ -15,8 +16,8 @@ import { socketInvocationStarted, socketModelLoadCompleted, socketModelLoadStarted, + socketQueueItemStatusChanged, socketSessionRetrievalError, - socketSubscribed, } from '../actions'; import { ClientToServerEvents, ServerToClientEvents } from '../types'; @@ -27,7 +28,7 @@ type SetEventListenersArg = { export const setEventListeners = (arg: SetEventListenersArg) => { const { socket, storeApi } = arg; - const { dispatch, getState } = storeApi; + const { dispatch } = storeApi; /** * Connect @@ -37,17 +38,8 @@ export const setEventListeners = (arg: SetEventListenersArg) => { log.debug('Connected'); dispatch(socketConnected()); - - const { sessionId } = getState().system; - - if (sessionId) { - socket.emit('subscribe', { session: sessionId }); - dispatch( - socketSubscribed({ - sessionId, - }) - ); - } + const queue_id = $queueId.get(); + socket.emit('subscribe_queue', { queue_id }); }); socket.on('connect_error', (error) => { @@ -162,4 +154,8 @@ export const setEventListeners = (arg: SetEventListenersArg) => { }) ); }); + + socket.on('queue_item_status_changed', (data) => { + dispatch(socketQueueItemStatusChanged({ data })); + }); }; diff --git a/invokeai/frontend/web/src/theme/colors/colors.ts b/invokeai/frontend/web/src/theme/colors/colors.ts index 99260ee071..6f1f1c2cc7 100644 --- a/invokeai/frontend/web/src/theme/colors/colors.ts +++ b/invokeai/frontend/web/src/theme/colors/colors.ts @@ -3,15 +3,11 @@ import { generateColorPalette } from 'theme/util/generateColorPalette'; const BASE = { H: 220, S: 16 }; const ACCENT = { H: 250, S: 42 }; -// const ACCENT = { H: 250, S: 52 }; const WORKING = { H: 47, S: 42 }; -// const WORKING = { H: 47, S: 50 }; +const GOLD = { H: 40, S: 70 }; const WARNING = { H: 28, S: 42 }; -// const WARNING = { H: 28, S: 50 }; const OK = { H: 113, S: 42 }; -// const OK = { H: 113, S: 50 }; const ERROR = { H: 0, S: 42 }; -// const ERROR = { H: 0, S: 50 }; export const InvokeAIColors: InvokeAIThemeColors = { base: generateColorPalette(BASE.H, BASE.S), @@ -20,6 +16,8 @@ export const InvokeAIColors: InvokeAIThemeColors = { accentAlpha: generateColorPalette(ACCENT.H, ACCENT.S, true), working: generateColorPalette(WORKING.H, WORKING.S), workingAlpha: generateColorPalette(WORKING.H, WORKING.S, true), + gold: generateColorPalette(GOLD.H, GOLD.S), + goldAlpha: generateColorPalette(GOLD.H, GOLD.S, true), warning: generateColorPalette(WARNING.H, WARNING.S), warningAlpha: generateColorPalette(WARNING.H, WARNING.S, true), ok: generateColorPalette(OK.H, OK.S), diff --git a/invokeai/frontend/web/src/theme/components/button.ts b/invokeai/frontend/web/src/theme/components/button.ts index 056f3c145d..fc6cde9cd0 100644 --- a/invokeai/frontend/web/src/theme/components/button.ts +++ b/invokeai/frontend/web/src/theme/components/button.ts @@ -10,7 +10,7 @@ const invokeAI = defineStyle((props) => { bg: mode('base.150', 'base.700')(props), color: mode('base.300', 'base.500')(props), svg: { - fill: mode('base.500', 'base.500')(props), + fill: mode('base.300', 'base.500')(props), }, opacity: 1, }; @@ -45,25 +45,14 @@ const invokeAI = defineStyle((props) => { } const _disabled = { - bg: mode(`${c}.250`, `${c}.700`)(props), - color: mode(`${c}.50`, `${c}.500`)(props), + bg: mode(`${c}.400`, `${c}.700`)(props), + color: mode(`${c}.600`, `${c}.500`)(props), svg: { - fill: mode(`${c}.50`, `${c}.500`)(props), - filter: 'unset', - }, - opacity: 1, - filter: mode(undefined, 'saturate(65%)')(props), - }; - - const data_progress = { - // bg: 'none', - color: mode(`${c}.50`, `${c}.500`)(props), - svg: { - fill: mode(`${c}.50`, `${c}.500`)(props), + fill: mode(`${c}.600`, `${c}.500`)(props), filter: 'unset', }, opacity: 0.7, - filter: mode(undefined, 'saturate(65%)')(props), + filter: 'saturate(65%)', }; return { @@ -82,7 +71,6 @@ const invokeAI = defineStyle((props) => { }, _disabled, }, - '&[data-progress="true"]': { ...data_progress, _hover: data_progress }, }; }); @@ -92,6 +80,13 @@ const invokeAIOutline = defineStyle((props) => { return { border: '1px solid', borderColor: c === 'gray' ? borderColor : 'currentColor', + _hover: { + bg: mode(`${c}.500`, `${c}.500`)(props), + color: mode('white', `base.50`)(props), + svg: { + fill: mode('white', `base.50`)(props), + }, + }, '.chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)': { marginEnd: '-1px', diff --git a/invokeai/frontend/web/src/theme/components/popover.ts b/invokeai/frontend/web/src/theme/components/popover.ts index a28e2bfbc4..55f69e9036 100644 --- a/invokeai/frontend/web/src/theme/components/popover.ts +++ b/invokeai/frontend/web/src/theme/components/popover.ts @@ -29,13 +29,34 @@ const invokeAIContent = defineStyle((props) => { }; }); +const informationalContent = defineStyle((props) => { + return { + [$arrowBg.variable]: mode('colors.base.100', 'colors.base.600')(props), + [$popperBg.variable]: mode('colors.base.100', 'colors.base.600')(props), + [$arrowShadowColor.variable]: mode( + 'colors.base.400', + 'colors.base.400' + )(props), + p: 0, + bg: mode('base.100', 'base.600')(props), + border: 'none', + shadow: 'dark-lg', + }; +}); + const invokeAI = definePartsStyle((props) => ({ content: invokeAIContent(props), })); +const informational = definePartsStyle((props) => ({ + content: informationalContent(props), + body: { padding: 0 }, +})); + export const popoverTheme = defineMultiStyleConfig({ variants: { invokeAI, + informational, }, defaultProps: { variant: 'invokeAI', diff --git a/invokeai/frontend/web/src/theme/components/table.ts b/invokeai/frontend/web/src/theme/components/table.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/invokeai/frontend/web/src/theme/themeTypes.d.ts b/invokeai/frontend/web/src/theme/themeTypes.d.ts index c85ebd33ce..f2fd1ea85d 100644 --- a/invokeai/frontend/web/src/theme/themeTypes.d.ts +++ b/invokeai/frontend/web/src/theme/themeTypes.d.ts @@ -3,6 +3,8 @@ export type InvokeAIThemeColors = { baseAlpha: Partial; accent: Partial; accentAlpha: Partial; + gold: Partial; + goldAlpha: Partial; working: Partial; workingAlpha: Partial; warning: Partial; diff --git a/tests/nodes/test_graph_execution_state.py b/tests/nodes/test_graph_execution_state.py index 603e0369be..e43075bd32 100644 --- a/tests/nodes/test_graph_execution_state.py +++ b/tests/nodes/test_graph_execution_state.py @@ -1,3 +1,6 @@ +import logging +import threading + import pytest # This import must happen before other invoke imports or test in other files(!!) break @@ -7,15 +10,19 @@ from .test_nodes import ( # isort: split TestEventService, TextToImageTestInvocation, ) +import sqlite3 from invokeai.app.invocations.baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationContext from invokeai.app.invocations.collections import RangeInvocation from invokeai.app.invocations.math import AddInvocation, MultiplyInvocation +from invokeai.app.services.config.invokeai_config import InvokeAIAppConfig from invokeai.app.services.graph import CollectInvocation, Graph, GraphExecutionState, IterateInvocation, LibraryGraph +from invokeai.app.services.invocation_cache.invocation_cache_memory import MemoryInvocationCache from invokeai.app.services.invocation_queue import MemoryInvocationQueue from invokeai.app.services.invocation_services import InvocationServices from invokeai.app.services.invocation_stats import InvocationStatsService from invokeai.app.services.processor import DefaultInvocationProcessor +from invokeai.app.services.session_queue.session_queue_common import DEFAULT_QUEUE_ID from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory from .test_invoker import create_edge @@ -35,24 +42,29 @@ def simple_graph(): # the test invocations. @pytest.fixture def mock_services() -> InvocationServices: + lock = threading.Lock() # NOTE: none of these are actually called by the test invocations + db_conn = sqlite3.connect(sqlite_memory, check_same_thread=False) graph_execution_manager = SqliteItemStorage[GraphExecutionState]( - filename=sqlite_memory, table_name="graph_executions" + conn=db_conn, table_name="graph_executions", lock=lock ) return InvocationServices( model_manager=None, # type: ignore events=TestEventService(), - logger=None, # type: ignore + logger=logging, # type: ignore images=None, # type: ignore latents=None, # type: ignore boards=None, # type: ignore board_images=None, # type: ignore queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph](filename=sqlite_memory, table_name="graphs"), + graph_library=SqliteItemStorage[LibraryGraph](conn=db_conn, table_name="graphs", lock=lock), graph_execution_manager=graph_execution_manager, performance_statistics=InvocationStatsService(graph_execution_manager), processor=DefaultInvocationProcessor(), - configuration=None, # type: ignore + configuration=InvokeAIAppConfig(node_cache_size=0), # type: ignore + session_queue=None, # type: ignore + session_processor=None, # type: ignore + invocation_cache=MemoryInvocationCache(), # type: ignore ) @@ -62,7 +74,15 @@ def invoke_next(g: GraphExecutionState, services: InvocationServices) -> tuple[B return (None, None) print(f"invoking {n.id}: {type(n)}") - o = n.invoke(InvocationContext(services, "1")) + o = n.invoke( + InvocationContext( + queue_batch_id="1", + queue_item_id=1, + queue_id=DEFAULT_QUEUE_ID, + services=services, + graph_execution_state_id="1", + ) + ) g.complete(n.id, o) return (n, o) diff --git a/tests/nodes/test_invoker.py b/tests/nodes/test_invoker.py index aa0e29598c..7c636c3eca 100644 --- a/tests/nodes/test_invoker.py +++ b/tests/nodes/test_invoker.py @@ -1,14 +1,13 @@ +import logging +import sqlite3 +import threading + import pytest -from invokeai.app.services.graph import Graph, GraphExecutionState, LibraryGraph -from invokeai.app.services.invocation_queue import MemoryInvocationQueue -from invokeai.app.services.invocation_services import InvocationServices -from invokeai.app.services.invocation_stats import InvocationStatsService -from invokeai.app.services.invoker import Invoker -from invokeai.app.services.processor import DefaultInvocationProcessor -from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory +from invokeai.app.services.config.invokeai_config import InvokeAIAppConfig -from .test_nodes import ( +# This import must happen before other invoke imports or test in other files(!!) break +from .test_nodes import ( # isort: split ErrorInvocation, PromptTestInvocation, TestEventService, @@ -17,6 +16,16 @@ from .test_nodes import ( wait_until, ) +from invokeai.app.services.graph import Graph, GraphExecutionState, GraphInvocation, LibraryGraph +from invokeai.app.services.invocation_cache.invocation_cache_memory import MemoryInvocationCache +from invokeai.app.services.invocation_queue import MemoryInvocationQueue +from invokeai.app.services.invocation_services import InvocationServices +from invokeai.app.services.invocation_stats import InvocationStatsService +from invokeai.app.services.invoker import Invoker +from invokeai.app.services.processor import DefaultInvocationProcessor +from invokeai.app.services.session_queue.session_queue_common import DEFAULT_QUEUE_ID +from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory + @pytest.fixture def simple_graph(): @@ -27,29 +36,45 @@ def simple_graph(): return g +@pytest.fixture +def graph_with_subgraph(): + sub_g = Graph() + sub_g.add_node(PromptTestInvocation(id="1", prompt="Banana sushi")) + sub_g.add_node(TextToImageTestInvocation(id="2")) + sub_g.add_edge(create_edge("1", "prompt", "2", "prompt")) + g = Graph() + g.add_node(GraphInvocation(id="1", graph=sub_g)) + return g + + # This must be defined here to avoid issues with the dynamic creation of the union of all invocation types # Defining it in a separate module will cause the union to be incomplete, and pydantic will not validate # the test invocations. @pytest.fixture def mock_services() -> InvocationServices: + lock = threading.Lock() # NOTE: none of these are actually called by the test invocations + db_conn = sqlite3.connect(sqlite_memory, check_same_thread=False) graph_execution_manager = SqliteItemStorage[GraphExecutionState]( - filename=sqlite_memory, table_name="graph_executions" + conn=db_conn, table_name="graph_executions", lock=lock ) return InvocationServices( model_manager=None, # type: ignore events=TestEventService(), - logger=None, # type: ignore + logger=logging, # type: ignore images=None, # type: ignore latents=None, # type: ignore boards=None, # type: ignore board_images=None, # type: ignore queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph](filename=sqlite_memory, table_name="graphs"), + graph_library=SqliteItemStorage[LibraryGraph](conn=db_conn, table_name="graphs", lock=lock), graph_execution_manager=graph_execution_manager, processor=DefaultInvocationProcessor(), performance_statistics=InvocationStatsService(graph_execution_manager), - configuration=None, # type: ignore + configuration=InvokeAIAppConfig(node_cache_size=0), # type: ignore + session_queue=None, # type: ignore + session_processor=None, # type: ignore + invocation_cache=MemoryInvocationCache(max_cache_size=0), ) @@ -78,7 +103,12 @@ def test_can_create_graph_state_from_graph(mock_invoker: Invoker, simple_graph): # @pytest.mark.xfail(reason = "Requires fixing following the model manager refactor") def test_can_invoke(mock_invoker: Invoker, simple_graph): g = mock_invoker.create_execution_state(graph=simple_graph) - invocation_id = mock_invoker.invoke(g) + invocation_id = mock_invoker.invoke( + session_queue_batch_id="1", + session_queue_item_id=1, + session_queue_id=DEFAULT_QUEUE_ID, + graph_execution_state=g, + ) assert invocation_id is not None def has_executed_any(g: GraphExecutionState): @@ -95,7 +125,13 @@ def test_can_invoke(mock_invoker: Invoker, simple_graph): # @pytest.mark.xfail(reason = "Requires fixing following the model manager refactor") def test_can_invoke_all(mock_invoker: Invoker, simple_graph): g = mock_invoker.create_execution_state(graph=simple_graph) - invocation_id = mock_invoker.invoke(g, invoke_all=True) + invocation_id = mock_invoker.invoke( + session_queue_batch_id="1", + session_queue_item_id=1, + session_queue_id=DEFAULT_QUEUE_ID, + graph_execution_state=g, + invoke_all=True, + ) assert invocation_id is not None def has_executed_all(g: GraphExecutionState): @@ -114,7 +150,13 @@ def test_handles_errors(mock_invoker: Invoker): g = mock_invoker.create_execution_state() g.graph.add_node(ErrorInvocation(id="1")) - mock_invoker.invoke(g, invoke_all=True) + mock_invoker.invoke( + session_queue_batch_id="1", + session_queue_item_id=1, + session_queue_id=DEFAULT_QUEUE_ID, + graph_execution_state=g, + invoke_all=True, + ) def has_executed_all(g: GraphExecutionState): g = mock_invoker.services.graph_execution_manager.get(g.id) diff --git a/tests/nodes/test_nodes.py b/tests/nodes/test_nodes.py index 1a07b59828..96a5040a38 100644 --- a/tests/nodes/test_nodes.py +++ b/tests/nodes/test_nodes.py @@ -53,6 +53,7 @@ class ImageTestInvocationOutput(BaseInvocationOutput): @invocation("test_text_to_image") class TextToImageTestInvocation(BaseInvocation): prompt: str = Field(default="") + prompt2: str = Field(default="") def invoke(self, context: InvocationContext) -> ImageTestInvocationOutput: return ImageTestInvocationOutput(image=ImageField(image_name=self.id)) diff --git a/tests/nodes/test_session_queue.py b/tests/nodes/test_session_queue.py new file mode 100644 index 0000000000..f28ec1ac54 --- /dev/null +++ b/tests/nodes/test_session_queue.py @@ -0,0 +1,255 @@ +import pytest +from pydantic import ValidationError, parse_raw_as + +from invokeai.app.services.graph import Graph, GraphExecutionState, GraphInvocation +from invokeai.app.services.session_queue.session_queue_common import ( + Batch, + BatchDataCollection, + BatchDatum, + NodeFieldValue, + calc_session_count, + create_session_nfv_tuples, + populate_graph, + prepare_values_to_insert, +) +from tests.nodes.test_nodes import PromptTestInvocation + + +@pytest.fixture +def batch_data_collection() -> BatchDataCollection: + return [ + [ + # zipped + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi", "Grape sushi"]), + BatchDatum(node_path="2", field_name="prompt", items=["Strawberry sushi", "Blueberry sushi"]), + ], + [ + BatchDatum(node_path="3", field_name="prompt", items=["Orange sushi", "Apple sushi"]), + ], + ] + + +@pytest.fixture +def batch_graph() -> Graph: + g = Graph() + g.add_node(PromptTestInvocation(id="1", prompt="Chevy")) + g.add_node(PromptTestInvocation(id="2", prompt="Toyota")) + g.add_node(PromptTestInvocation(id="3", prompt="Subaru")) + g.add_node(PromptTestInvocation(id="4", prompt="Nissan")) + return g + + +def test_populate_graph_with_subgraph(): + g1 = Graph() + g1.add_node(PromptTestInvocation(id="1", prompt="Banana sushi")) + g1.add_node(PromptTestInvocation(id="2", prompt="Banana sushi")) + n1 = PromptTestInvocation(id="1", prompt="Banana snake") + subgraph = Graph() + subgraph.add_node(n1) + g1.add_node(GraphInvocation(id="3", graph=subgraph)) + + nfvs = [ + NodeFieldValue(node_path="1", field_name="prompt", value="Strawberry sushi"), + NodeFieldValue(node_path="2", field_name="prompt", value="Strawberry sunday"), + NodeFieldValue(node_path="3.1", field_name="prompt", value="Strawberry snake"), + ] + + g2 = populate_graph(g1, nfvs) + + # do not mutate g1 + assert g1 is not g2 + assert g2.get_node("1").prompt == "Strawberry sushi" + assert g2.get_node("2").prompt == "Strawberry sunday" + assert g2.get_node("3.1").prompt == "Strawberry snake" + + +def test_create_sessions_from_batch_with_runs(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 2 list[BatchDatum] * length 2 * 2 runs = 8 + assert len(t) == 8 + + assert t[0][0].graph.get_node("1").prompt == "Banana sushi" + assert t[0][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[0][0].graph.get_node("3").prompt == "Orange sushi" + assert t[0][0].graph.get_node("4").prompt == "Nissan" + + assert t[1][0].graph.get_node("1").prompt == "Banana sushi" + assert t[1][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[1][0].graph.get_node("3").prompt == "Apple sushi" + assert t[1][0].graph.get_node("4").prompt == "Nissan" + + assert t[2][0].graph.get_node("1").prompt == "Grape sushi" + assert t[2][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[2][0].graph.get_node("3").prompt == "Orange sushi" + assert t[2][0].graph.get_node("4").prompt == "Nissan" + + assert t[3][0].graph.get_node("1").prompt == "Grape sushi" + assert t[3][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[3][0].graph.get_node("3").prompt == "Apple sushi" + assert t[3][0].graph.get_node("4").prompt == "Nissan" + + # repeat for second run + assert t[4][0].graph.get_node("1").prompt == "Banana sushi" + assert t[4][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[4][0].graph.get_node("3").prompt == "Orange sushi" + assert t[4][0].graph.get_node("4").prompt == "Nissan" + + assert t[5][0].graph.get_node("1").prompt == "Banana sushi" + assert t[5][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[5][0].graph.get_node("3").prompt == "Apple sushi" + assert t[5][0].graph.get_node("4").prompt == "Nissan" + + assert t[6][0].graph.get_node("1").prompt == "Grape sushi" + assert t[6][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[6][0].graph.get_node("3").prompt == "Orange sushi" + assert t[6][0].graph.get_node("4").prompt == "Nissan" + + assert t[7][0].graph.get_node("1").prompt == "Grape sushi" + assert t[7][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[7][0].graph.get_node("3").prompt == "Apple sushi" + assert t[7][0].graph.get_node("4").prompt == "Nissan" + + +def test_create_sessions_from_batch_without_runs(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 2 list[BatchDatum] * length 2 * 1 runs = 8 + assert len(t) == 4 + + +def test_create_sessions_from_batch_without_batch(batch_graph): + b = Batch(graph=batch_graph, runs=2) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 2 runs + assert len(t) == 2 + + +def test_create_sessions_from_batch_without_batch_or_runs(batch_graph): + b = Batch(graph=batch_graph) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 1 run + assert len(t) == 1 + + +def test_create_sessions_from_batch_with_runs_and_max(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + t = list(create_session_nfv_tuples(batch=b, maximum=5)) + # 2 list[BatchDatum] * length 2 * 2 runs = 8, but max is 5 + assert len(t) == 5 + + +def test_calc_session_count(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + # 2 list[BatchDatum] * length 2 * 2 runs = 8 + assert calc_session_count(batch=b) == 8 + + +def test_prepare_values_to_insert(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + values = prepare_values_to_insert(queue_id="default", batch=b, priority=0, max_new_queue_items=1000) + assert len(values) == 8 + + # graph should be serialized + ges = parse_raw_as(GraphExecutionState, values[0].session) + + # graph values should be populated + assert ges.graph.get_node("1").prompt == "Banana sushi" + assert ges.graph.get_node("2").prompt == "Strawberry sushi" + assert ges.graph.get_node("3").prompt == "Orange sushi" + assert ges.graph.get_node("4").prompt == "Nissan" + + # session ids should match deserialized graph + assert [v.session_id for v in values] == [parse_raw_as(GraphExecutionState, v.session).id for v in values] + + # should unique session ids + sids = [v.session_id for v in values] + assert len(sids) == len(set(sids)) + + # should have 3 node field values + assert type(values[0].field_values) is str + assert len(parse_raw_as(list[NodeFieldValue], values[0].field_values)) == 3 + + # should have batch id and priority + assert all(v.batch_id == b.batch_id for v in values) + assert all(v.priority == 0 for v in values) + + +def test_prepare_values_to_insert_with_priority(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + values = prepare_values_to_insert(queue_id="default", batch=b, priority=1, max_new_queue_items=1000) + assert all(v.priority == 1 for v in values) + + +def test_prepare_values_to_insert_with_max(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + values = prepare_values_to_insert(queue_id="default", batch=b, priority=1, max_new_queue_items=5) + assert len(values) == 5 + + +def test_cannot_create_bad_batch_items_length(batch_graph): + with pytest.raises(ValidationError, match="Zipped batch items must all have the same length"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi"]), # 1 item + BatchDatum(node_path="2", field_name="prompt", items=["Toyota", "Nissan"]), # 2 items + ], + ], + ) + + +def test_cannot_create_bad_batch_items_type(batch_graph): + with pytest.raises(ValidationError, match="All items in a batch must have the same type"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi", 123]), + ] + ], + ) + + +def test_cannot_create_bad_batch_unique_ids(batch_graph): + with pytest.raises(ValidationError, match="Each batch data must have unique node_id and field_name"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi"]), + ], + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi"]), + ], + ], + ) + + +def test_cannot_create_bad_batch_nodes_exist( + batch_graph, +): + with pytest.raises(ValidationError, match=r"Node .* not found in graph"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="batman", field_name="prompt", items=["Banana sushi"]), + ], + ], + ) + + +def test_cannot_create_bad_batch_fields_exist( + batch_graph, +): + with pytest.raises(ValidationError, match=r"Field .* not found in node"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="batman", items=["Banana sushi"]), + ], + ], + ) diff --git a/tests/nodes/test_sqlite.py b/tests/nodes/test_sqlite.py index 91e4bd0c58..002161e917 100644 --- a/tests/nodes/test_sqlite.py +++ b/tests/nodes/test_sqlite.py @@ -1,3 +1,7 @@ +import sqlite3 +import threading + +import pytest from pydantic import BaseModel, Field from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory @@ -8,14 +12,18 @@ class TestModel(BaseModel): name: str = Field(description="Name") -def test_sqlite_service_can_create_and_get(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +@pytest.fixture +def db() -> SqliteItemStorage[TestModel]: + db_conn = sqlite3.connect(sqlite_memory, check_same_thread=False) + return SqliteItemStorage[TestModel](db_conn, table_name="test", id_field="id", lock=threading.Lock()) + + +def test_sqlite_service_can_create_and_get(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) assert db.get("1") == TestModel(id="1", name="Test") -def test_sqlite_service_can_list(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_list(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -31,15 +39,13 @@ def test_sqlite_service_can_list(): ] -def test_sqlite_service_can_delete(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_delete(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.delete("1") assert db.get("1") is None -def test_sqlite_service_calls_set_callback(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_calls_set_callback(db: SqliteItemStorage[TestModel]): called = False def on_changed(item: TestModel): @@ -51,8 +57,7 @@ def test_sqlite_service_calls_set_callback(): assert called -def test_sqlite_service_calls_delete_callback(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_calls_delete_callback(db: SqliteItemStorage[TestModel]): called = False def on_deleted(item_id: str): @@ -65,8 +70,7 @@ def test_sqlite_service_calls_delete_callback(): assert called -def test_sqlite_service_can_list_with_pagination(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_list_with_pagination(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -78,8 +82,7 @@ def test_sqlite_service_can_list_with_pagination(): assert results.items == [TestModel(id="1", name="Test"), TestModel(id="2", name="Test")] -def test_sqlite_service_can_list_with_pagination_and_offset(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_list_with_pagination_and_offset(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -91,8 +94,7 @@ def test_sqlite_service_can_list_with_pagination_and_offset(): assert results.items == [TestModel(id="3", name="Test")] -def test_sqlite_service_can_search(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_search(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -108,8 +110,7 @@ def test_sqlite_service_can_search(): ] -def test_sqlite_service_can_search_with_pagination(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_search_with_pagination(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -121,8 +122,7 @@ def test_sqlite_service_can_search_with_pagination(): assert results.items == [TestModel(id="1", name="Test"), TestModel(id="2", name="Test")] -def test_sqlite_service_can_search_with_pagination_and_offset(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_search_with_pagination_and_offset(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test"))